<?xml version="1.0" encoding="ISO-8859-1" ?><rss version="2.0" 
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
>

<channel>
	<title>Ciro Feitosa</title>
	<link>http://cirofeitosa.com.br/</link>
	<description>Desenvolvimento, Web Standards, Acessibilidade e outros assuntos.</description>
	<language>pt-br</language>
	<copyright>Ciro Feitosa</copyright>
	<image>
		<title>Ciro Feitosa</title>
		<url>http://cirofeitosa.com.br/img/logo-rss.gif</url>
		<link>http://cirofeitosa.com.br/</link>
	</image>
	<item>
		<title>Aniversário do Profissão Web</title>
		<link>http://cirofeitosa.com.br/post/aniversario-profissao-web</link>
		<comments>http://cirofeitosa.com.br/post/aniversario-profissao-web#comentario</comments>
		<pubDate>Mon, 31 Mar 2008 18:16:40</pubDate>
		<dc:creator>Ciro Feitosa</dc:creator>
		<guid>http://cirofeitosa.com.br/post/aniversario-profissao-web</guid>
		<description><![CDATA[O blog Profissão Web está completando 1 ano. Foi criado um concurso para presentar os blogueiros.]]></description>
		<content:encoded><![CDATA[<p>O blog <a href="http://www.profissaoweb.com/" rel="external">Profissão Web</a>, do Thiago Melo, esta completando 1 ano.</p>

<p>Como forma de presentar os leitores (incluindo eu), foi criada uma espécie de <a href="http://www.profissaoweb.com/2008/03/07/profissao-web-faz-1-ano-e-quer-presentear-voce/" rel="external">concurso</a>, que presenteia os blogueiros que indicarem melhorias para o site.</p>

<p>Acho o visual do site bem criativo e harmônico, estrutura de seções organizada, código HTML semântico, que fica até difícil sugerir melhorias. Mas listo algumas (pequenos detalhes, às vezes):</p>

<ul>
	<li>Que tal escrever uma série de artigos sobre os ramos de profissionais na Web? O dia-a-dia na profissão de um designer, desenvolvedor, arquiteto de informação, etc.</li>
	<li>Ao final de cada artigo, os links do trecho "Procure por..." se confudem com os links do post. É proposital? :-)</li>
	<li>Redução no número de publicidade numa mesma página. Na última visita, tinha identificado Adsense, Americanas.com, Dreamhost e Dell. Sei que isso gera renda para o site, mas talvez uma distribuição menos agressiva possa gerar melhores resultados</li>
	<li>No link <em>Agências de Web</em>, separar os resultados por Estados e Cidades</li>
	<li>No link <em>Arquivo</em>, informar os meses em Português</li>
</ul>

<p>Sucesso e parabéns ao <strong>Profissão Web</strong>!</p>]]></content:encoded>
	</item>
	<item>
		<title>Bloqueando execução de scripts com .htaccess</title>
		<link>http://cirofeitosa.com.br/post/bloqueando-execucao-scripts-htaccess</link>
		<comments>http://cirofeitosa.com.br/post/bloqueando-execucao-scripts-htaccess#comentario</comments>
		<pubDate>Tue, 19 Feb 2008 06:31:12</pubDate>
		<dc:creator>Ciro Feitosa</dc:creator>
		<guid>http://cirofeitosa.com.br/post/bloqueando-execucao-scripts-htaccess</guid>
		<description><![CDATA[Dica onde você pode bloquear execução de scripts em determinado diretório utilizando .htaccess. Simples assim.]]></description>
		<content:encoded><![CDATA[<p>Dica rápida!</p>

<p>Você pode bloquear execução de qualquer tipo de scripts (PHP, ShellScript, Perl, etc.) ou páginas específicas, utilizando seu arquivo <strong>.htaccess</strong> do Apache (veja também: <a href="/post/urls-mod-rewrite">URLs amigáveis com mod_rewrite</a>).</p>

<p>Esse recurso pode ser utilizado em diretórios de <em>uploads</em> abertos a usuários. Assim, você terá a certeza de que não será possível a execução de scripts maliciosos no diretório.</p>

<h2>Exemplo</h2>

<p>Salve o trecho abaixo num arquivo <code>.htaccess</code> e copie para o diretório desejado. Lembrando que os diretórios filhos herdam as regras do diretório pai.</p>

<pre>
RewriteEngine on
RewriteRule .(\.php|\.php3|\.php4|\.php5|\.phtml|\.sh|\.pl)$ erro.htm
</pre>

<p>Entendendo: a regra acima redireciona qualquer extensão <code>.php</code>, <code>.php3</code>, <code>.php4</code>, <code>.php5</code>, <code>.phtml</code>, <code>.sh</code> e <code>.pl</code> para o arquivo <code>erro.htm</code>.</p>

<p>Simples assim ;-)</p>]]></content:encoded>
	</item>
	<item>
		<title>jQuery = Produtividade</title>
		<link>http://cirofeitosa.com.br/post/jquery</link>
		<comments>http://cirofeitosa.com.br/post/jquery#comentario</comments>
		<pubDate>Sun, 17 Feb 2008 03:21:34</pubDate>
		<dc:creator>Ciro Feitosa</dc:creator>
		<guid>http://cirofeitosa.com.br/post/jquery</guid>
		<description><![CDATA[<p>Neste artigo exponho o ganho de produtividade que venho tendo utilizando esta biblioteca JavaScript.</p>]]></description>
		<content:encoded><![CDATA[<p>Aproveitando o recém-lançamento da versão <a href="http://docs.jquery.com/Release:jQuery_1.2.3" rel="external">1.2.3</a> do <a href="http://jquery.com/" rel="external">jQuery</a>, resolvi escrever este artigo (que já estava no forno há um bom tempo) baseado no ganho de produtividade que venho tendo utilizando esta biblioteca JavaScript.</p>

<p>Diga-se de passagem, já utilizei outras bibliotecas, como o <a href="http://www.prototypejs.org/" rel="external">Prototype</a>. A mudança veio depois de comparar o desempenho e até mesmo o tamanho da biblioteca incluída nos projetos, sendo 29KB do jQuery 1.2.3 (versão comprimida) contra 123KB do Prototype 1.6.0.2. Escrevi rapidamente, aqui no Blog, <a href="/post/bibliotecas-javascript-1">sobre o Prototype e outras bibliotecas</a>.</p>

<h2>O que é jQuery?</h2>

<p>Para os paraquedistas no assunto, jQuery é uma biblioteca JavaScript, criada por <a href="http://ejohn.org/" rel="external">John Resig</a> e equipe, que facilita o manuseio do JavaScript em se tratando de manipulação de atributos, eventos, efeitos, interações Ajax, etc. </p>

<p>Na maioria das vezes, você conseguirá produzir uma experiência de interface com o usuário melhor e, ao mesmo tempo, escrevendo códigos de forma mais rápida pelo fato do jQuery possuir métodos e atributos prontos para uso.</p>

<p>Se você quer começar a praticar, recomendo o tutorial <a href="http://docs.jquery.com/Tutorials:Getting_Started_with_jQuery" rel="external">Getting Started with jQuery</a> do <a href="http://bassistance.de/">Jörn Zaefferer</a> ou a <a href="http://i18n.2kminterativa.com.br/jquery/jquery-getting-started-pt_br.html" rel="external">versão traduzida</a> por Carlos Pires. Além deste ponta-pé inicial, visite também a <a href="http://jquerybrasil.com/" rel="external">comunidade jQuery Brasil</a> com conteúdo selecionado e seu <a href="http://jquerybrasil.com/forum/index.php" rel="external">fórum de discussão</a>.</p>

<p>Por falar em tutorial, o projeto conta com uma documentação bem estruturada, além de outros sites que a complementam. Veja:

citar documentacao
tutoriais
http://visualjquery.com/1.1.2.html

<h2>Acelerando o desenvolvimento</h2>

<p>Em vez de escrever <code>document.getElementById('id')</code>, escreva <code>$('#id')</code>. Quer mostrar ou ocultar uma camada: Utilize os métodos <code>show()</code> e <code>hide()</code>, ex.: <code>$('#id').show()</code>. </p>

<p>São métodos prontos para serem utilizados em se tratando de Efeitos, CSS, Seletores, Ajax, etc. Veja a <a href="http://docs.jquery.com/" rel="external">documentação do jQuery</a> para guia e exemplos.</p> 

<h2>Extendendo o uso com Plugins</h2>

<p>Diversos plugins são desenvolvidos baseados no jQuery. Um deles, largamente utilizado, é o <strong>Thickbox</strong>.</p>

<p>O <a href="http://jquery.com/demo/thickbox/" rel="external">Thickbox</a> possibilita a você abrir janelas dinâmicas ou estáticas internas ao seu site, com efeito de abertura, sombra ao redor do conteúdo. É possível abrir qualquer documento e ainda criar galerias de imagens.</p>

<p>Além deste, você pode encontrar centenas de <a href="http://plugins.jquery.com/" rel="external">plugins separados por categoria</a>.</p>

<h2>Mão na massa</h2>

<p>Sem muito prolongar no assunto, selecionei alguns exemplos práticos e auto-explicativos sobre várias situações encontradas no dia-a-dia de muito desenvolvedor:</p>

<ul>
	<li><a href="http://docs.jquery.com/Effects/toggle" rel="external">Mostrando ou ocultando uma camada</a></li>
	<li><a href="http://docs.jquery.com/CSS/css#namevalue" rel="external">Alterando propriedades CSS via JavaScript</a></li>
	<li><a href="http://jquery.com/demo/thickbox/#examples" rel="external">Usando ThickBox para criar janelas suspensas</a></li>
</ul>

<h2>O que falam por aí...</h2>

<p>Selecionei links com conteúdo relevante sobre o assunto. São dicas e tutoriais interessantes com problemas encontrados no dia-a-dia. Ao redor do mundo existem fiéis pregadores desta bibliotecas.</p>

<p>Boa produtividade a todos!</p>

<p>Links em português:</p>

<ul>
	<li><a href="http://simplesideias.com.br/lidando-com-checkbox-no-jquery/" rel="external">Lidando com checkbox no JQuery</a></li>
	<li><a href="http://blog.klaus.pro.br/ler/javascript/2007/javascript-e-com-jquery/21/index.html" rel="external">Javascript é com jQuery</a></li>
	<li><a href="http://felipediesel.net/blog/jquery-modulo-ajax/" rel="external">Módulo Ajax do jQuery</a></li>
	<li><a href="http://rafaelcunha.com/2007/05/10/populando-combobox-com-jquery-ajax/" rel="external">Populando combobox com jQuery (Ajax)</a></li>
	<li><a href="http://www.tuliofaria.net/jquery-marcandodesmarcando-todos-os-checkbox-checkuncheck-checkboxes/" rel="external">Marcando/desmarcando todos os checkbox</a></li>
</ul>

<p>Links em inglês:</p>

<ul>
	<li><a href="http://15daysofjquery.com/" rel="external">15 Days of jQuery</a></li>
	<li><a href="http://stilbuero.de/2006/05/13/accessible-unobtrusive-javascript-tabs-with-jquery/" rel="external">Accessible, unobtrusive JavaScript tabs with jQuery</a></li>
</ul>
]]></content:encoded>
	</item>
	<item>
		<title>Meus feeds favoritos</title>
		<link>http://cirofeitosa.com.br/post/feeds-favoritos</link>
		<comments>http://cirofeitosa.com.br/post/feeds-favoritos#comentario</comments>
		<pubDate>Thu, 13 Sep 2007 12:37:41</pubDate>
		<dc:creator>Ciro Feitosa</dc:creator>
		<guid>http://cirofeitosa.com.br/post/feeds-favoritos</guid>
		<description><![CDATA[Mais um meme na blogosfera, agora seguindo a indicação do Flávio (Japs). Listo alguns feeds (todos ligado à Web).]]></description>
		<content:encoded><![CDATA[<p>Mais um meme na blogosfera, agora seguindo a indicação do <a href="http://www.japs.eti.br/" rel="external">Flávio</a> (Japs). Abaixo listo alguns feeds (todos ligado à Web) que acompanho sempre que disponho de tempo (algo escasso nos últimos meses). Em ordem alfabética:</p>

<ul>
	<li><a href="http://www.cssbeauty.com/" rel="external">CSS Beauty</a>: Novidades sobre assuntos ligados à interface. CSS, JavaScript, curiosidades, lançamentos de novas ferramentas, etc.</li>
	<li><a href="http://fatorw.com/" rel="external">Fator W</a>: Blog do Walmar Andrade, escreve sobre textos sobre Internet, Usabilidade, Acessibilidade, etc. Recomendo.</li>
	<li><a href="http://s1mone.net/" rel="external">Pixeladas Aleatórias</a>: Blog da Simone, escreve sobre novidades e análises de situações encontradas na Web.</li>
	<li><a href="http://project47.viscountbox.com/" rel="external">Project.47</a>: Blog do Carlos Souza, escreve sobre Padrões, WordPress, dicas CSS, etc.</li>
	<li><a href="http://simplesideias.com.br/" rel="external">Simples Idéias</a>: Blog do Nando Vieira, escreve sobre assuntos ligados à desenvolvimento Web.</li>
</ul>

<p>Repassando o meme para o <a href="http://brunotorres.net/" rel="external">Bruno</a>,  <a href="http://fe.eti.br/" rel="external">Fernando</a>, <a href="http://revolucao.etc.br/" rel="external">Henrique</a>, <a href="http://leonardofaria.net/" rel="external">Leonardo</a> e o <a href="http://novo-mundo.org/" rel="external">Rafael</a>.</p>

<p>Boas indicações!</p>]]></content:encoded>
	</item>
	<item>
		<title>Cursos para deficientes visuais</title>
		<link>http://cirofeitosa.com.br/post/cursos-deficientes-visuais</link>
		<comments>http://cirofeitosa.com.br/post/cursos-deficientes-visuais#comentario</comments>
		<pubDate>Thu, 19 Jul 2007 15:38:12</pubDate>
		<dc:creator>Ciro Feitosa</dc:creator>
		<guid>http://cirofeitosa.com.br/post/cursos-deficientes-visuais</guid>
		<description><![CDATA[O projeto oferece cursos online para deficientes visuais gratuitamente compatível com o DOSVOX.]]></description>
		<content:encoded><![CDATA[<p>O <a href="http://www.iped.com.br/site/iped/2219/" rel="external">Grupo iPED</a>, em mais uma ação de expandir inclusão social e digital, lança o projeto <strong>Eficiente</strong>.</p>

<p>O projeto visa oferecer mais de 50 cursos online para deficientes visuais, <strong>100% gratuitos</strong>. O sistema de ensino é compatível com o leitor de tela <a href="http://intervox.nce.ufrj.br/dosvox/" rel="external">DOSVOX</a> (programa gratuito para deficientes visuais utilizarem o computador, sobretudo a Internet).</p>

<p>Para começar o curso, basta acessar o site <a href="http://www.iped.com.br/?cod=2219" rel="external">www.iped.com.br</a> através do leitor de telas.</p>

<p>Divulgue esta iniciativa!</p>]]></content:encoded>
	</item>
	<item>
		<title>Cursos online para crianças</title>
		<link>http://cirofeitosa.com.br/post/cursos-online-criancas</link>
		<comments>http://cirofeitosa.com.br/post/cursos-online-criancas#comentario</comments>
		<pubDate>Mon, 28 May 2007 16:34:00</pubDate>
		<dc:creator>Ciro Feitosa</dc:creator>
		<guid>http://cirofeitosa.com.br/post/cursos-online-criancas</guid>
		<description><![CDATA[Cursos gratuitos para o público infantil. Agora os pais ficam tranquilos enquanto seus filhos navegam na Internet.]]></description>
		<content:encoded><![CDATA[<p>O <a href="http://www.iped.com.br/?cod=2219" rel="external" title="Cursos">Grupo iPED</a>, com o intuito de difundir a educação também entre o público infantil, lançou o projeto <a href="http://www.iped.com.br/kids/" title="Cursos infantis" rel="external">iPED Kids</a>.</p>

<p>O diferencial é oferecer cursos focado no público de crianças e, como meio de tornar o estudo produtivo e divertido, fez-se o uso de animações interativas com "amiguinhos virtuais" que são personagens com falas reais. Além disso, os alunos poderão trocar mensagens entre si por meio de um sistema próprio, incluindo fotos pessoais.</p>

<p>Inicialmente serão fornecidos cursos de <a href="http://www.iped.com.br/kids/curso/matematica-infantil/&cod=2219" title="Curso de Matemática para crianças" rel="external">Matemática</a>, <a href="http://www.iped.com.br/kids/curso/portugues-infantil/&cod=2219" rel="external" title="Curso de Português para crianças">Português</a>, <a href="http://www.iped.com.br/kids/curso/ciencias-infantil/&cod=2219" title="Curso de Ciências para crianças" rel="external">Ciências</a>, <a href="http://www.iped.com.br/kids/curso/historia-infantil/&cod=2219" title="Curso de História para crianças" rel="external">História</a>, <a href="http://www.iped.com.br/kids/curso/geografia-infantil/&cod=2219" title="Curso de Geografia para crianças" rel="external">Geografia</a> e <a href="http://www.iped.com.br/kids/curso/ingles-infantil/&cod=2219" title="Curso de Inglês para crianças" rel="external">Inglês</a>.</p>

<h2>Passo-a-passo</h2>

<p>O funcionamento é bem simples:</p>

<ol>
	<li>O responsável (pai ou mãe) se cadastra;</li>
	<li>A seguir cadastra seu(s) filho(s);</li>
	<li>Efetua o pagamento, e seus filhos conseguirão acessar os cursos.</li>
</ol>

<p>Veja abaixo algumas funcionalidades que o aluno e o responsável possuem, nos seus respectivos ambientes privativos. Para conhecer mais sobre o projeto, visite: <a href="http://www.iped.com.br/kids/&cod=2219" title="Cursos infantis" rel="external">iPED Kids</a>.</p>

<h3>Ambiente do Aluno</h3>

<ul>
	<li>Realiza os cursos gratuitamente;</li>
	<li>Animações interativas com "amiguinhos virtuais" durante todos os cursos, com exercícios e dicas de como aproveitar melhor;</li>
	<li>Envio e recebimento de mensagens entre colegas <em>online</em>.</li>
</ul>

<h3>Ambiente do Responsável</h3>

<ul>
	<li>Cadastro de filhos (com fotos pessoais);</li>
	<li>Acompanhamento do filho no curso por meio de relatórios detalhados;</li>
	<li>Recebimento por e-mail de acompanhamento pedagógico (opcional);</li>
	<li>Acompanhamento das mensagens enviadas e recebidas pelo filho.</li>
</ul>

<hr size="1" />

<h2>Cursos com apostilas</h2>

<p>Novidade <strong>apenas</strong> para os alunos do iPED Educação:</p>
<blockquote>Além de fazer os cursos, os alunos do <a href="http://www.iped.com.br/&parceiro=2219" rel="external" title="Cursos">iPED Educação</a> também poderão solicitar apostilas impressas, como forma de melhorar o aprendizado e acompanhamento geral. Para mais detalhes, visite o site de <a href="http://www.iped.com.br/cursos/online/" title="Cursos com apostilas" rel="external"><em>cursos online</em></a> e clique no curso desejado.</blockquote>

<hr size="1" />
]]></content:encoded>
	</item>
	<item>
		<title>URLs amigáveis com mod_rewrite</title>
		<link>http://cirofeitosa.com.br/post/urls-mod-rewrite</link>
		<comments>http://cirofeitosa.com.br/post/urls-mod-rewrite#comentario</comments>
		<pubDate>Thu, 26 Apr 2007 15:33:59</pubDate>
		<dc:creator>Ciro Feitosa</dc:creator>
		<guid>http://cirofeitosa.com.br/post/urls-mod-rewrite</guid>
		<description><![CDATA[Mais uma dica rápida da série <em>dia-a-dia de um desenvolvedor Web</em>. Agora se tratando de um módulo do Apache, <em>mod_rewrite</em>, para reescrita de URLs.]]></description>
		<content:encoded><![CDATA[<p>Mais uma dica rápida da série <em>dia-a-dia de um desenvolvedor Web</em>. Agora se tratando de um módulo do Apache: <em><a href="http://httpd.apache.org/docs/1.3/mod/mod_rewrite.html" rel="external">mod_rewrite</a></em>.</p>

<p>A idéia da dica, é fornecer uma regra simples sem níveis de seção na URL.</p>

<h2>O que é mod_rewrite?</h2>

<p>É um módulo escrito para o <a href="http://httpd.apache.org/" rel="external">servidor Apache</a>, responsável pela reescrita de URLs em páginas Web.</p>

<p>Hoje em dia, com a popularização de assuntos como <acronym title="Search Engine Optimization">SEO</acronym>, usabilidade e acessibilidade, esta prática se tornou comum e está cada vez mais sendo utilizada por grande portais.</p>

<p>Antes de mais nada, para que o módulo <em>mod_rewrite</em> funcione, obviamente você deve ter configurado e ativado no seu servidor Apache.</p>

<h2>Criando o .htaccess</h2>

<p>Crie um arquivo com o nome ".htaccess" (exatamente desta forma), e mova para a pasta raiz do seu domínio (ou onde queira implantar a reescrita). Em seguida, insira o código abaixo:</p>

<pre>
RewriteEngine On
RewriteCond %{SCRIPT_FILENAME} !-f
RewriteCond %{SCRIPT_FILENAME} !-d
RewriteRule ^(.*)$ index.php?cod=$1
</pre>

<p>Entendendo o código:</p>

<dl>
	<dt>RewriteEngine On</dt>
	<dd>Ativa o suporte à reescrita</dd>
	<dt>RewriteCond %{SCRIPT_FILENAME} !-f</dt>
	<dd>Não aplica a condição para arquivos</dd>
	<dt>RewriteCond %{SCRIPT_FILENAME} !-d</dt>
	<dd>Não aplica a condição para diretórios</dd>
	<dt>RewriteRule ^(.*)$ index.php?cod=$1</dt>
	<dd>Regra de reescrita onde qualquer string (.*) após a pasta, onde estiver o .htaccess, será interpretado por <em>index.php</em> passado na variável <em>cod</em></dd>
</dl>

<p>Na prática, se você tem uma URL do tipo <strong>www.url.com.br/secao/subsecao/</strong>, será interpretada por <strong>www.url.com.br/index.php?cod=secao/subsecao/</strong>. E mais, você não terá limite de níveis para utilizar com as /.</p>

<h2>Interpretando com PHP</h2>

<p>Com seu arquivo de reescrita criado, você já pode criar uma lógica no seu arquivo PHP para que interprete e leia as URLs passadas.</p>

<p>Veja um exemplo auto-explicativo:</p>

<pre>
&lt;?php
/*
 * separa a URL por "/" e insere num vetor (<em>array</em>)
 */
$url = explode('/', $_GET['cod']);


/*
 * imprime a string passada após a primeira /
 * no exemplo acima, seria: <strong>secao</strong>
 */
echo $url[0];

/*
 * imprime a string passada após a segunda /
 * no exemplo acima, seria: <strong>subsecao</strong>
 */
echo $url[1];
?&gt;
</pre>

<p>Desta forma, você pode utilizar <em>includes</em> para suas seções, ou qualquer outro tipo de inclusão, uma vez que você já tem suas seções separadas.</p>

<p>Para quem quer ler mais sobre o assunto, recomendo a <a href="http://httpd.apache.org/docs/1.3/mod/mod_rewrite.html" rel="external">documentação do <em>mod_rewrite</em></a>. O Bruno também escreveu mais detalhadamente <a href="http://brunotorres.net/urls" rel="external">aqui</a> e <a href="http://brunotorres.net/urls-again" rel="external">aqui</a>.</em></p>

<p>Até a próxima dica da série <strong>dia-a-dia de um desenvolvedor Web</strong>...</p>]]></content:encoded>
	</item>
	<item>
		<title>Novo portal de scripts</title>
		<link>http://cirofeitosa.com.br/post/novo-portal-de-scripts</link>
		<comments>http://cirofeitosa.com.br/post/novo-portal-de-scripts#comentario</comments>
		<pubDate>Thu, 26 Apr 2007 14:12:12</pubDate>
		<dc:creator>Ciro Feitosa</dc:creator>
		<guid>http://cirofeitosa.com.br/post/novo-portal-de-scripts</guid>
		<description><![CDATA[Foi lançado o novo portal da <a href="http://www.scriptbrasil.com.br/" rel="external">Script Brasil</a>. Um post informativo sobre a novidade.]]></description>
		<content:encoded><![CDATA[<p>Foi lançado o novo portal da <a href="http://www.scriptbrasil.com.br/" rel="external">Script Brasil</a>. Totalmente reformulado (código novo, URLs amigáveis, arquitetura facilitada), o site reafirma sua liderança no segmento de fornecer códigos gratuitos no Brasil.</p>

<p>Uma nova seção, entitulada de "Novidades nos blogs", agora conta com uma integração com alguns blogs conhecidos, como o <a href="http://brunodulcetti.com/blog/" rel="external">Bruno Dulcetti</a>, <a href="http://brunotorres.net" rel="external">Bruno Torres ponto net</a>, <a href="http://revolucao.etc.br" rel="external">Revolução Etc</a>, dentre outros. O objetivo é prover cada vez mais informações relacionadas ao público do portal.</p>

<p>Além disso, os membros que enviarem scripts (e estes forem aprovados), recebem pontuações e poderão trocar por <a href="http://www.iped.com.br/cursos/online/">cursos</a>.</p>

<h2>Créditos</h2>

<p>O processo de criação e desenvolvimento foi realizado num período de tempo curtíssimo (4 dias). Portanto, qualquer "errinho" no código (xHTML ou CSS), você poderá reportar aqui ou no <a href="http://scriptbrasil.com.br/forum/index.php?showtopic=100798" rel="external">fórum</a>.</p>

<ul>
	<li>Coordenação: <a href="mailto:binho@scriptbrasil.com">Fábio Neves</a></li>
	<li>Layout Site: <a href="http://www.pixelx.com.br/" rel="external">Robson Marquesin</a></li>
	<li>Layout Fórum: <a href="http://www.invisionhelp.com.br/" rel="external">Matheus</a></li>
	<li>Desenvolvimento: <a href="/projetos/">Ciro Feitosa</a></li>
</ul>
]]></content:encoded>
	</item>
	<item>
		<title>Manipulador de eventos no JavaScript</title>
		<link>http://cirofeitosa.com.br/post/manipulador-de-eventos-javascript</link>
		<comments>http://cirofeitosa.com.br/post/manipulador-de-eventos-javascript#comentario</comments>
		<pubDate>Thu, 12 Apr 2007 18:36:27</pubDate>
		<dc:creator>Ciro Feitosa</dc:creator>
		<guid>http://cirofeitosa.com.br/post/manipulador-de-eventos-javascript</guid>
		<description><![CDATA[Dia-a-dia de um desenvolvedor Web: conheça os manipuladores de eventos e deixe seu código mais flexível e organizado.]]></description>
		<content:encoded><![CDATA[<p>Recentemente tenho desenvolvido alguns formulários mais elaborados e não poderia de deixar registrado aqui esta dica. Pretendo escrever uma série de artigos relacionados com o dia-a-dia de um desenvolvedor Web.</p>

<p>Para quem vive trabalhando com formulários e suas validações, o uso de manipuladores de eventos com <em>JavaScript</em> pode ajudar na produtividade geral e trazer alguns benefícios diretos.</p>

<p>Se você já sabe do que se trata eventos, pule para a seção <a href="#eventos">Eventos na prática</a>. Caso contrário recomendo ler "<a href="#definicao">O que são eventos?</a>".</p>

<h2 id="definicao">O que são eventos?</h2>

<p>Eventos ou <em>events</em> são comportamentos de ações dos visitantes sobre um determinado elemento de uma página. Quando um usuário visita uma página e interage (clicando, digitando, movendo, etc.), está produzindo eventos.</p>

<p>Existem diversos eventos definidos para uso com <em>JavaScript</em>. Alguns são para uso restrito com algum elemento <acronym title="eXtensible Hypertext Markup Language">xHTML</acronym>, como o caso do <em>onSubmit</em> que é usado somente com o elemento <em>form</em>. Abaixo listo alguns eventos principais (<a href="http://www.w3schools.com/jsref/jsref_events.asp" rel="external">veja uma lista mais extensa</a>):</p>

<table>
	<tr>
		<th><strong>Evento</strong></th>
		<th><strong>Executado quando...</strong></th>
	</tr>
	<tr>
		<td>onBlur</td>
		<td>...o elemento perde o foco</td>
	</tr>
	<tr>
		<td>onChange</td>
		<td>...o elemento muda de valor</td>
	</tr>
	<tr>
		<td>onClick</td>
		<td>...o usuário clica sobre o elemento</td>
	</tr>
	<tr>
		<td>onFocus</td>
		<td>...o elemento é focado</td>
	</tr>
	<tr>
		<td>onKeyPress</td>
		<td>...o usuário pressiona alguma tecla sobre o elemento</td>
	</tr>
	<tr>
		<td>onLoad</td>
		<td>...o elemento é carregado por inteiro</td>
	</tr>
	<tr>
		<td>onMouseOver</td>
		<td>...o usuário move o ponteiro do mouse sobre o elemento</td>
	</tr>
	<tr>
		<td>onMouseOut</td>
		<td>...o usuário retira o ponteiro do mouse do elemento</td>
	</tr>
	<tr>
		<td>onSubmit</td>
		<td>...o elemento (formulário) é submetido</td>
	</tr>
</table>

<h2 id="eventos">Eventos na prática</h2>

<p>Os eventos podem ser usados de forma <em>inline</em>, ou de forma externa, com o uso de algum manipulador de eventos.</p> 

<h3>Eventos <em> inline</em></h3>

<p>Na primeira forma, você define tudo diretamente na <em>tag</em> do elemento. Veja um exemplo:</p>

<pre>
&lt;form onsubmit="javascript:alert(this.a.value);return false;"&gt;
	&lt;input type="text" name="a" onkeyup="javascript:this.value=this.value.toUpperCase();" /&gt;
	&lt;input type="submit" /&gt;
&lt;/form&gt;
</pre>

<p>No exemplo acima foram definidos 2 eventos: <em>onSubmit</em> para o formulário e o <em>onKeyUp</em> para um campo do formulário. Se você precisa alterar depois alguma propriedade deste evento, deverá editar diretamente no código do seu formulário.</p>

<h3>Utilizando manipulador de eventos</h3>

<p>Uma outra maneira prática é com uso de manipuladores, criados afim de tornar o código mais flexível e organizado.</p>

<p>Neste exemplo uso o <a href="http://jsfromhell.com/geral/event-listener" rel="external"><em>event listener</em></a> criado por <a href="http://jsfromhell.com/" rel="external">Carlos R. L. Rodrigues</a>, que adiciona ou remove um evento sobre qualquer elemento. São disponibilizadas 2 funções:</p>

<dl>
	<dt><strong><small>addEvent(object: Object, event: String, handler: Function(e: Event): Boolean, [scope: Object = object]): Boolean</small></strong></dt>
	<dd><small>Adiciona uma função que será disparada quando ocorrer determinado evento no objeto.</small></dd>
	<dt><strong><small>removeEvent(object: Object, event: String, handler: function(e: Event): Boolean, [scope: Object = object]): Boolean</small></strong></dt>
	<dd><small>Remove um listener previamente adicionado em um objeto e retorna true em caso de sucesso.</small></dd>
</dl>

<p>Veja a seguir um exemplo com uso da função <em>addEvent</em>:</p>

<pre>
&lt;script type="text/javascript" src="<a href="http://jsfromhell.com/geral/event-listener/download" rel="external">/path/to/event-listener.js</a>"&gt;&lt;/script&gt;

&lt;form&gt;
	&lt;input type="text" name="a" /&gt;
	&lt;input type="submit" /&gt;
&lt;/form&gt;

&lt;script type="text/javascript"&gt;
var f = document.forms[0];
addEvent(f, "submit", function( e ) { alert(f.a.value);return false; });
addEvent(f.a, "keyup", function( e ) { f.a.value=f.a.value.toUpperCase(); });
&lt;/script&gt;
</pre>

<p>Toda a validação fica externa ao formulário. Desta forma, você também pode inserir tal validação num arquivo <em>JavaScript</em> externo. Neste caso, devo atentar que você precisará carregar o arquivo externo depois do elemento a ser modificado ou, caso deseje incluir no <em>head</em> da página, declare a execução apenas quando a página carregar completamente (com uso do evento <em>onLoad</em>), caso contrário o objeto não será encontrado.</p>

<p>Você ainda pode definir uma função e passar como parâmetro no <em>addEvent</em> (no exemplo acima foi criado uma função <em>inline</em> para demonstração).</p>

<p>Da mesma forma que adicionei os eventos à um formulário, poderia também adicionar numa janela (<em>window</em>), num documento (<em>document</em>), etc.</p>

<h2>Flexibilidade e organização</h2>

<p>Como afirmado, um dos grandes benefícios com o uso do <em>event listener</em> é a flexibilidade nas alterações posteriores e a organização do código <acronym title="eXtensible Hypertext Markup Language">xHTML</acronym>.</p>

<p>Até a próxima dica da série <strong>dia-a-dia de um desenvolvedor Web</strong>!</p>]]></content:encoded>
	</item>
	<item>
		<title>O tempo corre depressa</title>
		<link>http://cirofeitosa.com.br/post/o-tempo-corre-depressa</link>
		<comments>http://cirofeitosa.com.br/post/o-tempo-corre-depressa#comentario</comments>
		<pubDate>Thu, 08 Mar 2007 16:03:44</pubDate>
		<dc:creator>Ciro Feitosa</dc:creator>
		<guid>http://cirofeitosa.com.br/post/o-tempo-corre-depressa</guid>
		<description><![CDATA[Um post relatando o término do meu curso na Universidade, minha mudança para São Paulo e divulgação do plano de parceria do iPED.]]></description>
		<content:encoded><![CDATA[<p>Faz alguns meses que não produzo conteúdo por aqui. Algumas mudanças ocorreram, principalmente nos últimos meses com a obtenção do título de Bacharel e minha mudança para a cidade de São Paulo (acredite, tive que sair da Bahia - terra maravilhosa).</p>

<p>O curso de <em>Ciência da Computação</em> foi proveitoso. Foram mais de 4 anos na <a href="http://www.uesc.br" rel="external">universidade</a> e morando num <a href="http://www.bahia.com.br" rel="external">estado maravilhoso</a>. Tive ótimos professores, colegas mais que amigos e amizades incomparáveis que nem o tempo se arrisca de apagar da memória.</p>

<p>Agora é uma nova fase cheia de perspectivas, descobertas e crescimento.</p>

<p>Juntamente com uma nova cidade à vista, vieram <a href="/projetos/" title="Página de Projetos">diversos freelas</a> (breve muitas novidades) e um emprego fixo. Isso tudo gera um fator: escassez de tempo.</p>

<p>A tarefa de cuidar do <em>blog</em> e fazer produzir conteúdo num período de tempo curto, está cada vez mais difícil. No entanto, não estou abrindo mão desta poderosa ferramenta de compartilhamento de informação e interação, afinal foi esta uma das responsáveis pela minha projeção ao redor do mundo.</p>

<p>Um fato interessante é o aumento considerável de leitores via Feeds, mesmo sem novas atualizações constantes.</p>

<p>Agora, em terras paulistanas, confirmo: o tempo corre depressa!</p>

<h2>Divulgando...</h2>

<p>Quero aproveitar e divulgar uma melhoria em se tratando de Programa de Afiliados.</p>

<p>O <a href="http://www.iped.com.br/?cod=2219">iPED</a> ampliou o <a href="http://www.sie.com.br/">plano de parceria</a> e agora paga 20% de comissão sobre o valor total pago pelos alunos. O valor mínimo para receber é de R$ 150,00.</p>

<p>Entendendo: <a href="http://www.sie.com.br/">cadastrando-se como parceiro</a>, você ganha um link próprio de cursos. Toda pessoa que acessar este link, e efetuar pagamento por algum pacote de <a href="http://www.iped.com.br/cursos/online/">cursos</a>, você recebe 20% do total. O acompanhamento financeiro é feito através de um painel próprio.</p>

<p>São diversas opções de cursos. Entre os de <a href="http://www.iped.com.br/cursos/online/programacao/" title="Cursos de Programação">programação</a>, estão os cursos de <a href="http://www.iped.com.br/cursos/online/programacao/php-mysql/" title="Curso de PHP e MySQL">PHP</a>, <a href="http://www.iped.com.br/cursos/online/programacao/java/" title="Curso de Java">Java</a>, <a href="http://www.iped.com.br/cursos/online/programacao/asp/" title="Curso de ASP">ASP</a>, <a href="http://www.iped.com.br/cursos/online/programacao/vb-net/" title="Curso de VB.Net">VB .Net</a>, etc. Além disso existem cursos nas áreas de <a href="http://www.iped.com.br/cursos/online/informatica/"  title="Cursos de Informática">informática</a>, <a href="http://www.iped.com.br/cursos/online/animacoes-e-design/" title="Cursos de Animação e Design">animação e design</a>, <a href="http://www.iped.com.br/cursos/online/profissionalizante/" title="Cursos Profissionalizante">profissionalizante</a> e <a href="http://www.iped.com.br/cursos/online/lingua-estrangeira/" title="Cursos de Língua Estrangeira">língua estrangeira</a>.</p> ]]></content:encoded>
	</item>
</channel>
</rss>
