<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="http://feeds.feedburner.com/~d/styles/rss2enclosuresfull.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><!-- generator="wordpress/2.3.1" --><rss 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/" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">

<channel>
	<title>fechaTag</title>
	<link>http://blog.elcio.com.br</link>
	<description>XML, XHTML, CSS, Tableless, Desenvolvimento Web, Python, Linux</description>
	<pubDate>Tue, 25 Nov 2008 19:54:48 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.3.1</generator>
	<language>en</language>
			<geo:lat>-23.65985</geo:lat><geo:long>-46.64035</geo:long><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" href="http://feeds.feedburner.com/Fechatag" type="application/rss+xml" /><feedburner:browserFriendly>This is an XML content feed. It is intended to be viewed in a newsreader or syndicated to another site, subject to copyright and fair use.</feedburner:browserFriendly><item>
		<title>Eu vou ao 1º Encontro de TI da Arteccom</title>
		<link>http://feeds.feedburner.com/~r/Fechatag/~3/465390311/</link>
		<comments>http://blog.elcio.com.br/eu-vou-ao-1%c2%ba-encontro-de-ti-da-arteccom/#comments</comments>
		<pubDate>Tue, 25 Nov 2008 19:54:48 +0000</pubDate>
		<dc:creator>Elcio</dc:creator>
		
		<category><![CDATA[Blogosfera]]></category>

		<category><![CDATA[Eventos]]></category>

		<category><![CDATA[Mercado]]></category>

		<guid isPermaLink="false">http://blog.elcio.com.br/eu-vou-ao-1%c2%ba-encontro-de-ti-da-arteccom/</guid>
		<description><![CDATA[A Editora Arteccom está organizando o I ETI. Eu vou estar lá, e recomendo, parece que vai ser muito interessante. Recebi deles o seguinte release:
É tempo de interatividade  e o 1º Encontro de TI faz tudo o que o público deseja!
A editora Arteccom promove novo evento que promete agitar o mercado  dos desenvolvedores [...]]]></description>
			<content:encoded><![CDATA[<p>A Editora Arteccom está organizando o I ETI. Eu vou estar lá, e recomendo, parece que vai ser muito interessante. Recebi deles o seguinte release:</p>
<blockquote><p><font><strong>É tempo de interatividade  e o 1º Encontro de TI faz tudo o que o público deseja!</strong><br />
A editora Arteccom promove novo evento que promete agitar o mercado  dos desenvolvedores web.</font></p>
<p><font>Sabe aquele evento que você  sempre sonhou? Com as palestras que você sempre quis assistir? Virou  realidade! A Arteccom fez uma pesquisa com desenvolvedores web para  que fossem sugeridos temas e palestrantes para o evento. 512 profissionais  da área de TI responderam a pesquisa e, mais tarde, com expressiva  participação do público no site</font><font color="#1f497d"> </font><a href="http://www.encontrodeti.com.br/" target="_blank"><font color="#0000ff"><u>www.encontrodeti.com.br</u></font></a><font color="#1f497d">, </font><font>foi  desenhado o <strong>1º Encontro de Tecnologia da Informação</strong>.</font></p>
<p><font>Os temas mais votados e escolhidos para as palestras foram “</font><font color="#c00000">Linguagens – quais  são as mais requisitadas pelas grandes empresas e o valor das formações/certificações</font><font>”, “</font><font color="#c00000">CMS  livres: Drupal x Joomla! x WordPress</font><font>”,  “</font><font color="#c00000">Ferramenta  Google Analytics: como analisar acessos e gerar melhores resultados</font><font>” e “</font><font color="#c00000">Padrões  W3C – Como tornar seu site mais leve e mais acessível</font><font>”. </font><font color="#1f497d">E </font><font>ocorrerão ainda, simultaneamente,  algumas oficinas que vão discutir os assuntos mais atuais da área,  como </font><font color="#c00000">Ruby  On Rails</font><font>, </font><font color="#c00000">SEO</font><font>, </font><font color="#c00000">Interoperabilidade</font><font> e </font><font color="#c00000">Scrum</font><font>.</font></p>
<p><font>Mas a interação não pára  por aí. Depois de escolhidos os temas, os mediadores das palestrantes  e oficinas propõem um debate no site do<strong> ETI</strong> para decidir qual  especialidade dentro do assunto principal será abordada para as palestras  (</font><a href="http://www.encontrodeti.com.br/site/?p=558" target="_blank"><font color="#0000ff"><u>http://www.encontrodeti.com.<wbr></wbr>br/site/?p=558</u></font></a><font>). Ou seja, todas as decisões são  feitas através de pesquisas com o público.</font></p>
<p><font>Vai ter até café da manhã, espaço imprensa digital, e, para completar,  eu te faço mais uma perguntinha: Já pensou em um evento com as palestras  e oficinas que você sempre sonhou, e no final ainda curtir um <strong><em> Happy Hour</em></strong>? Não está acreditando não é? É isso aí! Você  não pode perder! No final deste mês, dia 27/11, quinta-feira, na Amcham  Brasil, em São Paulo, e dia 29/11, sábado, no Centro de Convenções  SulAmérica, no Rio de Janeiro.</font></p>
<p><font>Para ter um gostinho do que  vai rolar no evento, confira os quatro chats sobre os temas das palestras,  que tiveram ótima repercussão com cerca de 50 participantes em cada  sala: </font><a href="http://www.encontrodeti.com.br/site/?page_id=319" target="_blank"><font color="#0000ff"><u>http://www.encontrodeti.com.<wbr></wbr>br/site/?page_id=319</u></font></a><font>.</font></p>
<p><font>O Encontro de Tecnologia da  Informação é uma realização da Arteccom, com os patrocínios de  PagSeguro UOL, UOL Host, Tecla e Hostnet.</font></p>
<p><font><strong>Veja a programação do  evento:</strong></font></p>
<p><font color="#c00000"><strong>08:30</strong></font><font> – Credenciamento<br />
</font><font color="#c00000"><strong>09:00</strong></font><font> – Café da manhã (networking e  visita aos estandes)<br />
</font><font color="#c00000"><strong>10:00</strong></font><font> – Abertura<br />
</font><font color="#c00000"><strong>10:15</strong></font><font> – <strong>Palestra</strong>: <strong>“Linguagens:  quais são as mais requisitadas pelas grandes empresas e o valor das  formações/certificações”</strong><br />
Palestrante SP e RJ: Guilherme Chapiewski (Globo.com)<br />
</font><font color="#c00000"><strong>11:15</strong></font><font> – <strong>Debate</strong> <strong>CMS livres:</strong><br />
- WordPress: SP: José Murilo (Minc) | RJ: Guilherme Aguiar (Minc)<br />
- Joomla!: Ricardo Accioly (Noix)<br />
- Drupal: Paulino Michelazzo (Fábrica Livre)<br />
</font><font color="#c00000"><strong>13:00</strong></font><font> – Intervalo para almoço<br />
</font><font color="#c00000"><strong>14:30</strong></font><font> – <strong>Palestra</strong>: <strong>“Google  Analytics: como analisar acessos e gerar melhores resultados”</strong><br />
Palestrante SP: Ruy Carneiro (WA Consulting)<br />
Palestrante RJ: Gustavo Loureiro (Infnet)<br />
</font><font color="#c00000"><strong>15:30</strong></font><font> – Intervalo para visita aos estandes<br />
</font><font color="#c00000"><strong>16:00</strong></font><font> – <strong>Palestra:  “Padrões W3C: torne seu site mais leve e mais acessível”</strong><br />
Palestrante SP: Vagner Diniz (W3C)<br />
Palestrante RJ: Everaldo Bechara (iLearn)<br />
</font><font color="#c00000"><strong>17:00</strong></font><font> – Happy hour<br />
</font><font color="#c00000"><strong>18:00</strong></font><font> – Encerramento</font></p>
<p><font><strong>Oficinas (vagas limitadas):</strong></font></p>
<p><font color="#c00000"><strong>10:15  às 11:15h</strong></font><font> (palestra  principal: Linguagens e certificações)<br />
Ruby on Rails – SP Fábio Akita (Locaweb)<br />
Ruby on Rails – RJ Sylvestre Mergulhão (Hostnet)</font></p>
<p><font color="#c00000"><strong>11:15  às 12:15</strong></font><font> (palestra  principal: CMS livres)<br />
SEO – SP Fábio Ricotta (MestreSEO)<br />
SEO – RJ Paulo Teixeira (Marketing de Busca)</font></p>
<p><font color="#c00000"><strong>14:30  às 15:30</strong></font><font> (palestra  principal: Google Analytics)<br />
Interoperabilidade – SP Fábio Hara (Microsoft)<br />
Interoperabilidade – RJ Gilson Banin (Microsoft)</font></p>
<p><font color="#c00000"><strong>16:00  às 17:00</strong></font><font> (palestra  principal: Padrões W3C)<br />
Scrum – SP Guilherme Chapiewski (Globo.com)<br />
Scrum – RJ Guilherme Chapiewski (Globo.com)<br />
<strong><br />
Locais:</strong></font></p>
<p><font><strong>São Paulo<br />
</strong>Data: 27 de novembro de 2008<br />
Local: Amcham Brasil<br />
Rua da Paz, 1.431 – Chácara Santo Antônio – São Paulo – SP<br />
Telefone: (11) 5180-3728</font></p>
<p><font><strong>Rio de Janeiro</strong><br />
Data: 29 de novembro de 2008<br />
Local: Centro de Convenções SulAmérica<br />
Av. Paulo de Frontin, 1 – Cidade Nova – RJ<br />
Telefone: (21) 3293-6700</font></p>
<p><font>Inscrições: </font><a href="http://www.encontrodeti.com.br/" target="_blank"><font color="#0000ff"><u>www.encontrodeti.com.br</u></font></a><font color="#1f497d"><br />
</font><font>Mais informações: (21)  2253.0596</font></p>
<p><font>Texto de Flávia Freire</font><a href="mailto:Flavia.freire@arteccom.com.br" target="_blank"><font color="#0000ff"><u><br />
Flavia.freire@arteccom.com.br</u></font></a></p></blockquote>
<p>Recomendo. Vejo você lá.</p>

<p><a href="http://feeds.feedburner.com/~a/Fechatag?a=7ccFNw"><img src="http://feeds.feedburner.com/~a/Fechatag?i=7ccFNw" border="0"></img></a></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~f/Fechatag?a=XXlfN"><img src="http://feeds.feedburner.com/~f/Fechatag?i=XXlfN" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/Fechatag?a=WGsHn"><img src="http://feeds.feedburner.com/~f/Fechatag?i=WGsHn" border="0"></img></a>
</div>]]></content:encoded>
			<wfw:commentRss>http://blog.elcio.com.br/eu-vou-ao-1%c2%ba-encontro-de-ti-da-arteccom/feed/</wfw:commentRss>
		<feedburner:origLink>http://blog.elcio.com.br/eu-vou-ao-1%c2%ba-encontro-de-ti-da-arteccom/</feedburner:origLink></item>
		<item>
		<title>Fuja da complexidade</title>
		<link>http://feeds.feedburner.com/~r/Fechatag/~3/440524936/</link>
		<comments>http://blog.elcio.com.br/fuja-da-complexidade/#comments</comments>
		<pubDate>Mon, 03 Nov 2008 02:47:31 +0000</pubDate>
		<dc:creator>Elcio</dc:creator>
		
		<category><![CDATA[Linux]]></category>

		<category><![CDATA[Lógica]]></category>

		<category><![CDATA[Programação]]></category>

		<category><![CDATA[Python]]></category>

		<guid isPermaLink="false">http://blog.elcio.com.br/fuja-da-complexidade/</guid>
		<description><![CDATA[Abri o OpenOffice Writer, mandei gravar uma macro, escrevi &#034;teste&#034;, selecionei e pintei de vermelho. Olha o código gerado:
sub Main
rem ----------------------------------------------------------------------
rem define variables
dim document   as object
dim dispatcher as object
rem ----------------------------------------------------------------------
rem get access to the document
document   = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
rem ----------------------------------------------------------------------
dim args1(0) as new com.sun.star.beans.PropertyValue
args1(0).Name = "Text"
args1(0).Value = "teste"
dispatcher.executeDispatch(document, ".uno:InsertText", "", 0, [...]]]></description>
			<content:encoded><![CDATA[<p>Abri o OpenOffice Writer, mandei gravar uma macro, escrevi &#034;teste&#034;, selecionei e pintei de vermelho. Olha o código gerado:</p>
<p><code class="prettyprint">sub Main<br />
rem ----------------------------------------------------------------------<br />
rem define variables<br />
dim document   as object<br />
dim dispatcher as object<br />
rem ----------------------------------------------------------------------<br />
rem get access to the document<br />
document   = ThisComponent.CurrentController.Frame<br />
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")<br />
rem ----------------------------------------------------------------------<br />
dim args1(0) as new com.sun.star.beans.PropertyValue<br />
args1(0).Name = "Text"<br />
args1(0).Value = "teste"<br />
dispatcher.executeDispatch(document, ".uno:InsertText", "", 0, args1())<br />
rem ----------------------------------------------------------------------<br />
dispatcher.executeDispatch(document, ".uno:SelectAll", "", 0, Array())<br />
rem ----------------------------------------------------------------------<br />
dim args3(0) as new com.sun.star.beans.PropertyValue<br />
args3(0).Name = "FontColor"<br />
args3(0).Value = 16711680<br />
dispatcher.executeDispatch(document, ".uno:FontColor", "", 0, args3())<br />
end sub</code></p>
<p>Há muito código complexo por aí. Nesse caso, para invocar os métodos dos objetos do OpenOffice, é preciso usar um objeto dispatcher, chamando executeDispatcher, e passando o objeto, o nome do método e um array de argumentos. Que espécie de sadismo leva alguém a projetar uma solução como essa? Vale lembrar o que diz o Zen do Python:</p>
<blockquote><p>Se uma implementação é difícil de explicar, é uma idéia ruim.</p></blockquote>
<p>Outro exemplo interessantíssimo é o protocolo SOAP. Se você precisar construir um serviço SOAP do zero, dê uma investigada na <a href="http://www.w3.org/TR/soap/">documentação que você vai ter que ler</a>. Compare com a documentação do protocolo <a href="http://www.xmlrpc.com/spec">XML-RPC</a>, para ter uma idéia.</p>
<p>Meninos, o tio vai ensinar um segredo a vocês, a complexidade se reproduz assexuadamente. Há muito código complexo demais por aí. Se você encontrar indícios de complexidade hoje, corte antes que ela se reproduza, porque ela tende a fugir do controle. Cada vez que você deixa uma implementação complexa num componente de um sistema, você está complicando um pouquinho todos os pontos do sistema que usam aquele. Os resultados ruins são exponenciais. Por mais talentoso que você seja, se deixar a complexidade se enraizar e crescer, vai chegar um momento em que a lógica vai &#034;jogar a toalha&#034; e você vai começar a programar na base da tentativa e erro.</p>
<p>Lembre-se, então, partes simples, conectadas por interfaces simples. Complicado é errado, feio e mau, faz você entregar atrasado e com bugs. E, se precisar de inspiração, abra o Python e digite: </p>
<p><code class="prettyprint">import this</code></p>

<p><a href="http://feeds.feedburner.com/~a/Fechatag?a=HuUrAQ"><img src="http://feeds.feedburner.com/~a/Fechatag?i=HuUrAQ" border="0"></img></a></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~f/Fechatag?a=32n1N"><img src="http://feeds.feedburner.com/~f/Fechatag?i=32n1N" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/Fechatag?a=F6MYn"><img src="http://feeds.feedburner.com/~f/Fechatag?i=F6MYn" border="0"></img></a>
</div>]]></content:encoded>
			<wfw:commentRss>http://blog.elcio.com.br/fuja-da-complexidade/feed/</wfw:commentRss>
		<feedburner:origLink>http://blog.elcio.com.br/fuja-da-complexidade/</feedburner:origLink></item>
		<item>
		<title>Flash 10 no Linux</title>
		<link>http://feeds.feedburner.com/~r/Fechatag/~3/423791579/</link>
		<comments>http://blog.elcio.com.br/flash-10-no-linux/#comments</comments>
		<pubDate>Fri, 17 Oct 2008 15:07:17 +0000</pubDate>
		<dc:creator>Elcio</dc:creator>
		
		<category><![CDATA[Linux]]></category>

		<guid isPermaLink="false">http://blog.elcio.com.br/flash-10-no-linux/</guid>
		<description><![CDATA[Ao contrário do Luis Eduardo Fernando, tenho sido nos últimos anos um feliz usuário de Linux. Funcionava tudo, ou quase. Tenho um LG R405. Funciona o controle de bateria, de velocidade do cooler, brilho da tela, tenho volumes independentes para o microfone e caixa de som embutidos, e microfone e caixa de som externos. Funciona [...]]]></description>
			<content:encoded><![CDATA[<p>Ao contrário do <a href="http://meiobit.pop.com.br/meio-bit/linux/teched-2008-linux-marcando-presenca">Luis Eduardo Fernando</a>, tenho sido nos últimos anos um feliz usuário de Linux. Funcionava tudo, ou quase. Tenho um <a href="http://boo-box.com/link/bid:3018/lang:pt-BR/tags:notebook+LG+R405/format:box" class="bbli">LG R405<img src="http://boo-box.com/bbli" alt="[bb]" class="bbic" /></a>. Funciona o controle de bateria, de velocidade do cooler, brilho da tela, tenho volumes independentes para o microfone e caixa de som embutidos, e microfone e caixa de som externos. Funciona rede com e sem fio, o modo de hibernação, mouse externo, pen-drive, o modem da <a href="http://boo-box.com/link/bid:3018/lang:pt-BR/tags:internet+3g+Claro/format:box" class="bbli">Claro<img src="http://boo-box.com/bbli" alt="[bb]" class="bbic" /></a>,  impressora, e tudo mais que precisei.</p>
<p>O Ubuntu é tão simples de configurar e usar na interface gráfica, sem precisar abrir o terminal, que o pessoal aqui faz uma piada chamando-o de &#034;Microsoft Ubuntu&#034;. Mas faltava uma coisa. A versão 9 do Flash Player que a Macromedia disponibiliza tem alguns problemas no Linux. Os dois principais são a falta do window mode transparent, o que faz com que aqueles sites que tem um &#034;layer&#034; Flash sobre o conteúdo fiquem bem estranhos, às vezes impossíveis de usar, e a falta de suporte a v4l2. A v4l2 (Video 4 Linux 2) é a biblioteca que faz funcionar a maioria das webcams. Ou seja, minha webcam funcionava em todos os programas, menos no Flash Player. Isso me impedia de, por exemplo, fazer streammings no <a href="http://www.ustream.tv/">UStream</a>.</p>
<p>O problema foi resolvido. Você pode <a href="http://www.adobe.com/shockwave/download/download.cgi?P1_Prod_Version=ShockwaveFlash">baixar a versão 10 do Flash Player</a> direto do site da Adobe. Com ela temos window mode transparent, e minha webcam está funcionando que é uma beleza.</p>
<p>E, para aqueles que têm medo de terminal, a instalação é extremamente simples. Baixe o &#034;.deb&#034; para Ubuntu, salve no Desktop (ou onde você preferir) e dê um duplo clique. Vai aparecer o instalador de pacotes, com as informações do pacote e um único botâo, &#034;Instalar Pacote&#034;. Clique nele, coloque sua senha de administração, espere a instalação terminar e reinicie o Firefox.</p>

<p><a href="http://feeds.feedburner.com/~a/Fechatag?a=xVsKXT"><img src="http://feeds.feedburner.com/~a/Fechatag?i=xVsKXT" border="0"></img></a></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~f/Fechatag?a=UzrtM"><img src="http://feeds.feedburner.com/~f/Fechatag?i=UzrtM" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/Fechatag?a=rOZNm"><img src="http://feeds.feedburner.com/~f/Fechatag?i=rOZNm" border="0"></img></a>
</div>]]></content:encoded>
			<wfw:commentRss>http://blog.elcio.com.br/flash-10-no-linux/feed/</wfw:commentRss>
		<feedburner:origLink>http://blog.elcio.com.br/flash-10-no-linux/</feedburner:origLink></item>
		<item>
		<title>Information Overload</title>
		<link>http://feeds.feedburner.com/~r/Fechatag/~3/419492250/</link>
		<comments>http://blog.elcio.com.br/information-overload/#comments</comments>
		<pubDate>Mon, 13 Oct 2008 12:57:38 +0000</pubDate>
		<dc:creator>Elcio</dc:creator>
		
		<category><![CDATA[Geral]]></category>

		<category><![CDATA[Pessoal]]></category>

		<category><![CDATA[information overload]]></category>

		<guid isPermaLink="false">http://blog.elcio.com.br/information-overload/</guid>
		<description><![CDATA[Reduzi o número de feeds que eu assino de mais de 200 para menos de 40, em seguida cliquei no &#034;marcar tudo como lido&#034;. Saí de todas as listas de discussão. Coloquei a TwitterFox e a Gmail Manager para pegar novas mensagens a cada 30 minutos. E fechei o PidGin.
O objetivo é me tornar mais [...]]]></description>
			<content:encoded><![CDATA[<p>Reduzi o número de feeds que eu assino de mais de 200 para menos de 40, em seguida cliquei no &#034;marcar tudo como lido&#034;. Saí de todas as listas de discussão. Coloquei a <a href="https://addons.mozilla.org/en-US/firefox/addon/5081">TwitterFox</a> e a <a href="https://addons.mozilla.org/en-US/firefox/addon/1320">Gmail Manager</a> para pegar novas mensagens a cada 30 minutos. E fechei o <a href="http://www.pidgin.im/">PidGin</a>.</p>
<p>O objetivo é me tornar mais produtivo. Vou passar uma semana assim. Será que vou sobreviver? No final da semana eu conto a vocês como foi.</p>

<p><a href="http://feeds.feedburner.com/~a/Fechatag?a=78J5HP"><img src="http://feeds.feedburner.com/~a/Fechatag?i=78J5HP" border="0"></img></a></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~f/Fechatag?a=u5cGM"><img src="http://feeds.feedburner.com/~f/Fechatag?i=u5cGM" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/Fechatag?a=SGYem"><img src="http://feeds.feedburner.com/~f/Fechatag?i=SGYem" border="0"></img></a>
</div>]]></content:encoded>
			<wfw:commentRss>http://blog.elcio.com.br/information-overload/feed/</wfw:commentRss>
		<feedburner:origLink>http://blog.elcio.com.br/information-overload/</feedburner:origLink></item>
		<item>
		<title>Data errada no Javascript? Bug?</title>
		<link>http://feeds.feedburner.com/~r/Fechatag/~3/389713949/</link>
		<comments>http://blog.elcio.com.br/data-errada-no-javascript-bug/#comments</comments>
		<pubDate>Thu, 11 Sep 2008 14:49:17 +0000</pubDate>
		<dc:creator>Elcio</dc:creator>
		
		<category><![CDATA[Javascript]]></category>

		<category><![CDATA[Lógica]]></category>

		<category><![CDATA[Programação]]></category>

		<guid isPermaLink="false">http://blog.elcio.com.br/data-errada-no-javascript-bug/</guid>
		<description><![CDATA[Um amigo me escreveu agora para mostrar algo muito curioso. Abra sua Firebug, ou qualquer outro lugar onde você roda Javascript, e teste:
new Date(2008,8,11)
Você deve ter como retorno um objeto de data, que se impresso mostra:
Thu Sep 11 2008 00:00:00 GMT-0300 (BRT)
Porque setembro e não agosto, você pode se perguntar. É porque em Javascript, assim [...]]]></description>
			<content:encoded><![CDATA[<p>Um amigo me escreveu agora para mostrar algo muito curioso. Abra sua Firebug, ou qualquer outro lugar onde você roda Javascript, e teste:</p>
<p><code class="prettyprint">new Date(2008,8,11)</code></p>
<p>Você deve ter como retorno um objeto de data, que se impresso mostra:</p>
<p><code class="prettyprint">Thu Sep 11 2008 00:00:00 GMT-0300 (BRT)</code></p>
<p>Porque setembro e não agosto, você pode se perguntar. É porque em Javascript, assim com na maioria das linguagens de programação, arrays começam com zero, então faz sentido que contadores também comecem com zero. Assim, janeiro é o mês zero, e se você precisar construir um array com os nomes dos meses, janeiro será o primeiro do array. Faz todo o sentido.</p>
<p>Agora, o que não faz sentido. Tente:</p>
<p><code class="prettyprint">new Date(2008,9,12)</code></p>
<p>Aqui no meu sistema eu obtive:</p>
<p><code class="prettyprint">Sat Oct 11 2008 23:00:00 GMT-0300 (BRT)</code></p>
<p>Ou seja, uma hora mais cedo. O que será isso? Correção para o horário de verão? Se é, em que regra se baseia? Os horários de verão no Brasil mudam todo ano, e dependem de em que estado você está.</p>
<p>Alguém tem alguma dica?</p>

<p><a href="http://feeds.feedburner.com/~a/Fechatag?a=kFnU9i"><img src="http://feeds.feedburner.com/~a/Fechatag?i=kFnU9i" border="0"></img></a></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~f/Fechatag?a=2lWyL"><img src="http://feeds.feedburner.com/~f/Fechatag?i=2lWyL" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/Fechatag?a=pfTtl"><img src="http://feeds.feedburner.com/~f/Fechatag?i=pfTtl" border="0"></img></a>
</div>]]></content:encoded>
			<wfw:commentRss>http://blog.elcio.com.br/data-errada-no-javascript-bug/feed/</wfw:commentRss>
		<feedburner:origLink>http://blog.elcio.com.br/data-errada-no-javascript-bug/</feedburner:origLink></item>
		<item>
		<title>Resolvendo equações do segundo grau com Python</title>
		<link>http://feeds.feedburner.com/~r/Fechatag/~3/365001531/</link>
		<comments>http://blog.elcio.com.br/resolvendo-equacoes-do-segundo-grau-com-python/#comments</comments>
		<pubDate>Thu, 14 Aug 2008 18:30:12 +0000</pubDate>
		<dc:creator>Elcio</dc:creator>
		
		<category><![CDATA[Pessoal]]></category>

		<category><![CDATA[Programação]]></category>

		<category><![CDATA[Python]]></category>

		<category><![CDATA[ajuda]]></category>

		<category><![CDATA[docstring]]></category>

		<category><![CDATA[doctest]]></category>

		<category><![CDATA[matematica]]></category>

		<category><![CDATA[testes automaticos]]></category>

		<guid isPermaLink="false">http://blog.elcio.com.br/resolvendo-equacoes-do-segundo-grau-com-python/</guid>
		<description><![CDATA[Meu amigo Vicente Marçal me escreveu:
Bem, sei que és professor de Python, além de amante da linguagem e, por isso, acabei fazendo pesquisas sobre ela e estou estudando por conta, mais por hobby do que por qualquer outra coisa. Então, num tempinho livre que vc tiver, avalie esse meu pequeno script o qual disponibilizei na [...]]]></description>
			<content:encoded><![CDATA[<p>Meu amigo Vicente Marçal me escreveu:</p>
<blockquote><p>Bem, sei que és professor de Python, além de amante da linguagem e, por isso, acabei fazendo pesquisas sobre ela e estou estudando por conta, mais por hobby do que por qualquer outra coisa. Então, num tempinho livre que vc tiver, avalie esse meu pequeno script o qual disponibilizei na comunidade Viva o Linux:<br />
<a href="http://www.vivaolinux.com.br/script/Raizes-de-Funcao-Quadratica">http://www.vivaolinux.com.br/script/Raizes-de-Funcao-Quadratica</a>, ele é bem simples, mas gostaria muito de sua opinião a respeito.</p></blockquote>
<p>Eu respondi, e pedi a ele autorização para publicar minha resposta aqui. Como ele autorizou, lá vai. Vamos começar pelo arquivo, baskara.py:</p>
<pre>
# -*- encoding: utf-8 -*-
'''
Funções matemáticas para equações do segundo grau.
'''
from math import sqrt
&nbsp;
def baskara(a,b,c):
  '''
  Função que fornece as raízes de uma equação do segundo grau.
  No caso de não haver raízes, retorna uma tupla vazia.
  Exemplos:
  >>> baskara(1,5,4)
  (-1.0, -4.0)
  >>> baskara(1,4,4)
  (-2.0,)
  >>> baskara(4,4,4)
  ()
  >>> baskara(0,4,2) # se a é zero, temos uma equação do primeiro grau
  (-0.5,)
  '''
  a,b,c=float(a),float(b),float(c)
  if(a==0):return (-c/b,)
  delta=b**2-4*a*c
  if delta<0:return ()
  if delta==0:return (-b/(2*a),)
  return ((-b+sqrt(delta))/(2*a),(-b-sqrt(delta))/(2*a))
&nbsp;
if __name__=="__main__":
  # Se rodou o arquivo diretamente, sem importar, roda os testes.
  import doctest
  doctest.testmod()
</pre>
<p>&nbsp;</p>
<p>E meus comentários:</p>
<p>Cara, para que tanto underline? O underline no python indica que algo é especial. Underlines no começo indicam algo privado, em que você não deve mexer. No começo e no fim, indicam um nome especial, criado pela linguagem. No caso de sua função, não há necessidade de underline em nada, nem no nome da função, nem nos parâmetros.</p>
<p>Segue anexa minha implementação. Os pontos a notar:</p>
<p>1. Docstring. Aquele formato de comentários que eu estou usando serve para que o Python entenda que eles são documentação. Coloque meu arquivo em algum lugar em sua máquina, rode o Python e execute:</p>
<p><code class="prettyprint"><br />
import baskara<br />
help(baskara)<br />
</code></p>
<p>Você vai entender.</p>
<p>2. Doctest. Se você reparar, na docstring da função há um trecho de exemplo que parece uma sessão do shell interativo. Está lá assim de propósito. Esperimente quebrar a função. Por exemplo, modifique a linha que calcula o delta, trocando o número 2 por 3. Em seguida execute:</p>
<p><code class="prettyprint">python baskara.py</code></p>
<p>Ele vai rodar os testes automáticos. Você deve ver três erros.</p>
<p>E é isso aí, boa sorte com o Python, é uma linguagem que vale a pena estudar.</p>

<p><a href="http://feeds.feedburner.com/~a/Fechatag?a=swIXdt"><img src="http://feeds.feedburner.com/~a/Fechatag?i=swIXdt" border="0"></img></a></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~f/Fechatag?a=CG9E6K"><img src="http://feeds.feedburner.com/~f/Fechatag?i=CG9E6K" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/Fechatag?a=eK9r4k"><img src="http://feeds.feedburner.com/~f/Fechatag?i=eK9r4k" border="0"></img></a>
</div>]]></content:encoded>
			<wfw:commentRss>http://blog.elcio.com.br/resolvendo-equacoes-do-segundo-grau-com-python/feed/</wfw:commentRss>
		<feedburner:origLink>http://blog.elcio.com.br/resolvendo-equacoes-do-segundo-grau-com-python/</feedburner:origLink></item>
		<item>
		<title>Integrando o Vim com ferramentas externas</title>
		<link>http://feeds.feedburner.com/~r/Fechatag/~3/329982179/</link>
		<comments>http://blog.elcio.com.br/integrando-o-vim-com-ferramentas-externas/#comments</comments>
		<pubDate>Tue, 08 Jul 2008 17:12:06 +0000</pubDate>
		<dc:creator>Elcio</dc:creator>
		
		<category><![CDATA[Bash]]></category>

		<category><![CDATA[Eventos]]></category>

		<category><![CDATA[Linux]]></category>

		<category><![CDATA[Pessoal]]></category>

		<category><![CDATA[Programação]]></category>

		<category><![CDATA[Vim]]></category>

		<guid isPermaLink="false">http://blog.elcio.com.br/integrando-o-vim-com-ferramentas-externas/</guid>
		<description><![CDATA[Depois que comecei a usar o Vim nas palestras em que eu escrevo código, muita gente começou a me escrever com dúvidas sobre o editorzinho. Apesar de eu dizer nas palestras que Vim é complicado, parece que o pessoal não tem medo. E a dúvida mais freqüente é sobre a integração entre o Vim e [...]]]></description>
			<content:encoded><![CDATA[<p>Depois que comecei a usar o <a href="http://www.vim.org/">Vim</a> nas palestras em que eu escrevo código, muita gente começou a me escrever com dúvidas sobre o editorzinho. Apesar de eu dizer nas palestras que Vim é complicado, parece que o pessoal não tem medo. E a dúvida mais freqüente é sobre a integração entre o Vim e ferramentas externas, principalmente o <a href="http://txt2tags.sourceforge.net/pt/">txt2tags</a>.</p>
<p>Faz parte da filosofia Unix que um programa seja facilmente integrado a outros através de interfaces de texto, e o Vim implementa isso muito bem. Para começar, abra o Vim e execute:</p>
<p><code class="prettyprint">:!ls</code></p>
<p>Você vai ver que o Vim vai executar o comando ls. Então guarde isso, o sinal de exclamação (!) executa comandos externos. Há duas maneiras de fazer o Vim falar com esses comandos. A primeira é mandar o Vim ler a entrada do comando. Digite:</p>
<p>:r!ls</p>
<p>Você vai notar que o Vim vai executar o comando ls e colocar o conteúdo no buffer de edição. A outra maneira de fazer o Vim falar com os programas externos é selecionar texto. Aperte i para ir para o modo de edição e digite:</p>
<p><code class="prettyprint">zebra<br />
tesoura<br />
banana<br />
macaco<br />
felicidade<br />
abacate</code></p>
<p>Ao terminar de digitar, pressione ESC para voltar ao modo de comando, em seguida SHIFT+V para ir para o modo de seleção de linha e selecione todo o bloco. Com o bloco selecionado, digite:</p>
<p><code class="prettyprint">:!sort</code></p>
<p>O vim vai colocar, antes do comando, os sinais de seleção &#039;<,'>. Não se preocupe, apenas digite o comando e aperte ENTER. Você vai ver que o Vim vai executar o comando sort do sistema operacional, passando como entrada o texto selecionado, e vai substituir esse texto pela saída do comando. Isso, ao final, vai te dar a lista ordenada, assim:</p>
<p><code class="prettyprint">abacate<br />
banana<br />
felicidade<br />
macaco<br />
tesoura<br />
zebra</code></p>
<p>Usando essa interface simples você pode fazer o Vim falar com qualquer programa Unix.</p>
<h3>txt2tags</h3>
<p>O programa que eu tenho usado durante as palestras e mais tem deixado as pessoas curiosas é o <a href="http://txt2tags.sourceforge.net/pt/">txt2tags</a>, desenvolvido pelo <a href="http://aurelio.net/">Aurélio Marinho</a>. O programa está nos repositórios do Debian, então se você usa Debian ou Ubuntu, pode instalá-lo com o comando:</p>
<p><code class="prettyprint">sudo apt-get install txt2tags</code></p>
<p>O txt2tags lê as primeiras linhas de texto que recebe como títulos do documento. Além disso, precisaremos de várias opções de linha de comando, o que não é conveniente de se digitar. Então vamos criar um shell script para guardar essas opções e fornecer ao txt2tags linhas de cabeçalho de mentirinha. Eu criei um arquivo chamado tags dentro do diretório /usr/local/bin, com permissão de execução (chmod +x) e o seguinte conteúdo:</p>
<p><code class="prettyprint">#!/bin/bash<br />
(echo "<br />
&nbsp;<br />
&nbsp;<br />
&nbsp;<br />
&nbsp;<br />
&nbsp;<br />
" &#038;&#038; cat ) | txt2tags -t xhtml --infile=- --no-headers</code></p>
<p>Em seguida, basta abrir o Vim e digitar, por exemplo:</p>
<p><code class="prettyprint">= Aprenda Online =<br />
A [Visie http://visie.com.br/] oferece cursos de Ajax, Javascript e Tableless.</code></p>
<p>Em seguida selecione essas duas linhas e execute:</p>
<p><code class="prettyprint">:!tags</code></p>
<p>Pronto, HTML instantâneo.</p>

<p><a href="http://feeds.feedburner.com/~a/Fechatag?a=l2UD9O"><img src="http://feeds.feedburner.com/~a/Fechatag?i=l2UD9O" border="0"></img></a></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~f/Fechatag?a=gQefQJ"><img src="http://feeds.feedburner.com/~f/Fechatag?i=gQefQJ" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/Fechatag?a=uxCmLj"><img src="http://feeds.feedburner.com/~f/Fechatag?i=uxCmLj" border="0"></img></a>
</div>]]></content:encoded>
			<wfw:commentRss>http://blog.elcio.com.br/integrando-o-vim-com-ferramentas-externas/feed/</wfw:commentRss>
		<feedburner:origLink>http://blog.elcio.com.br/integrando-o-vim-com-ferramentas-externas/</feedburner:origLink></item>
		<item>
		<title>Coquetel de lançamento do livro: Internet - O Encontro de Dois Mundos</title>
		<link>http://feeds.feedburner.com/~r/Fechatag/~3/302626043/</link>
		<comments>http://blog.elcio.com.br/coquetel-de-lancamento-do-livro-internet-o-encontro-de-dois-mundos/#comments</comments>
		<pubDate>Mon, 02 Jun 2008 00:42:31 +0000</pubDate>
		<dc:creator>Elcio</dc:creator>
		
		<category><![CDATA[Blogosfera]]></category>

		<category><![CDATA[Eventos]]></category>

		<category><![CDATA[Mercado]]></category>

		<guid isPermaLink="false">http://blog.elcio.com.br/coquetel-de-lancamento-do-livro-internet-o-encontro-de-dois-mundos/</guid>
		<description><![CDATA[ Nesta quarta-feira, 4 de junho, às 19h na FNAC da Paulista, haverá o coquetel de lançamento do livro Internet - O Encontro de Dois Mundos, que conta com uma crônica deste seu humilde blogueiro.
O coquetel é gratuito, e contará ainda com uma palestra de Gil Giardelli. Vai por mim, só a palestra já valeria [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://elcio.com.br/livros/9788574523705"><img src='http://blog.elcio.com.br/wp-content/internet-o-encontro-de-dois-mundos.jpg' alt='Internet o encontro de dois mundos' style='float:left' /></a> Nesta quarta-feira, 4 de junho, às 19h na <a href="http://maps.google.com.br/maps?q=av+paulista,+901,+sao+paulo">FNAC da Paulista</a>, haverá o <a href="http://imasters.uol.com.br/livro/">coquetel de lançamento</a> do livro <a href="http://elcio.com.br/livros/9788574523705">Internet - O Encontro de Dois Mundos</a>, que conta com uma crônica deste seu humilde blogueiro.</p>
<p>O coquetel é gratuito, e contará ainda com uma palestra de <a href="http://gilgiardelli.wordpress.com/">Gil Giardelli</a>. Vai por mim, só a palestra já valeria sua ida até lá.</p>
<p>O livro também é algo muito especial. Nada de XHTML, Rails, PHP, Flash e coisas do gênero, é um livro para te fazer pensar.</p>

<p><a href="http://feeds.feedburner.com/~a/Fechatag?a=IHGMdP"><img src="http://feeds.feedburner.com/~a/Fechatag?i=IHGMdP" border="0"></img></a></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~f/Fechatag?a=jkAkCI"><img src="http://feeds.feedburner.com/~f/Fechatag?i=jkAkCI" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/Fechatag?a=us0S9i"><img src="http://feeds.feedburner.com/~f/Fechatag?i=us0S9i" border="0"></img></a>
</div>]]></content:encoded>
			<wfw:commentRss>http://blog.elcio.com.br/coquetel-de-lancamento-do-livro-internet-o-encontro-de-dois-mundos/feed/</wfw:commentRss>
		<feedburner:origLink>http://blog.elcio.com.br/coquetel-de-lancamento-do-livro-internet-o-encontro-de-dois-mundos/</feedburner:origLink></item>
		<item>
		<title>Palestra: construa seu validador de formulários</title>
		<link>http://feeds.feedburner.com/~r/Fechatag/~3/298509409/</link>
		<comments>http://blog.elcio.com.br/palestra-construa-seu-validador-de-formularios/#comments</comments>
		<pubDate>Mon, 26 May 2008 17:19:07 +0000</pubDate>
		<dc:creator>Elcio</dc:creator>
		
		<category><![CDATA[CSS]]></category>

		<category><![CDATA[Eventos]]></category>

		<category><![CDATA[Javascript]]></category>

		<category><![CDATA[Programação]]></category>

		<category><![CDATA[Tableless.com.br]]></category>

		<guid isPermaLink="false">http://blog.elcio.com.br/palestra-construa-seu-validador-de-formularios/</guid>
		<description><![CDATA[Algumas pessoas têm me escrito perguntando como extender o validador de formulários universal que publiquei há algum tempo. O manual do programador é um excelente recurso para isso.
Mas você que é de São Paulo, tem a oportunidade de ver tudo funcionando ao vivo. Nessa quinta-feira, na palestra &#034;Formulários Definitivos&#034;, vou construir um validador igualzinho a [...]]]></description>
			<content:encoded><![CDATA[<p>Algumas pessoas têm me escrito perguntando como extender o <a href="http://elcio.com.br/reusable/jquery/diretrizes.pt">validador de formulários universal</a> que publiquei há algum tempo. O <a href="http://elcio.com.br/reusable/jquery/desenvolvedor.pt">manual do programador</a> é um excelente recurso para isso.</p>
<p>Mas você que é de São Paulo, tem a oportunidade de ver tudo funcionando ao vivo. Nessa quinta-feira, na palestra &#034;<a href="http://visie.com.br/treinamento/formularios-semanticos/">Formulários Definitivos</a>&#034;, vou construir um validador igualzinho a esse do zero, explicando cada conceito e o porquê de cada decisão no projeto.</p>
<p>Isso, entre outras coisas. Você também pode <a href="http://www.tableless.com.br/formularios-definitivos-e-problema-de-logica">conferir o programa da palestra, e até quem sabe ganhar um ingresso grátis</a>.</p>

<p><a href="http://feeds.feedburner.com/~a/Fechatag?a=m8PVcW"><img src="http://feeds.feedburner.com/~a/Fechatag?i=m8PVcW" border="0"></img></a></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~f/Fechatag?a=uMiKUH"><img src="http://feeds.feedburner.com/~f/Fechatag?i=uMiKUH" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/Fechatag?a=sRc9Eh"><img src="http://feeds.feedburner.com/~f/Fechatag?i=sRc9Eh" border="0"></img></a>
</div>]]></content:encoded>
			<wfw:commentRss>http://blog.elcio.com.br/palestra-construa-seu-validador-de-formularios/feed/</wfw:commentRss>
		<feedburner:origLink>http://blog.elcio.com.br/palestra-construa-seu-validador-de-formularios/</feedburner:origLink></item>
		<item>
		<title>Aconteceu comigo: eu faço parte da revolução</title>
		<link>http://feeds.feedburner.com/~r/Fechatag/~3/297978066/</link>
		<comments>http://blog.elcio.com.br/aconteceu-comigo-eu-faco-parte-da-revolucao/#comments</comments>
		<pubDate>Sun, 25 May 2008 22:19:06 +0000</pubDate>
		<dc:creator>Elcio</dc:creator>
		
		<category><![CDATA[Blogosfera]]></category>

		<category><![CDATA[Eventos]]></category>

		<category><![CDATA[Geral]]></category>

		<category><![CDATA[Mercado]]></category>

		<category><![CDATA[Pessoal]]></category>

		<category><![CDATA[Web 2.0]]></category>

		<guid isPermaLink="false">http://blog.elcio.com.br/aconteceu-comigo-eu-faco-parte-da-revolucao/</guid>
		<description><![CDATA[Na última quinta-feira preparamos uma edição especial do Workshop de Produtividade apenas para convidados. Acontece que, por &#034;motivo de força maior&#034;, um bom grupo de convidados não pode vir. Tínhamos então o dilema de fazer o evento com poucas pessoas.
Naquela manhã o Diego ficou sabendo, no twitter, que o Marco Gomes estava transmitindo o pessoal [...]]]></description>
			<content:encoded><![CDATA[<p>Na última quinta-feira preparamos uma edição especial do <a href="http://visie.com.br/treinamento/produtividade-e-web-20/">Workshop de Produtividade</a> apenas para convidados. Acontece que, por &#034;motivo de força maior&#034;, um bom grupo de convidados não pode vir. Tínhamos então o dilema de fazer o evento com poucas pessoas.</p>
<p>Naquela manhã o <a href="http://diegoeis.com">Diego</a> ficou sabendo, no <a href="http://twitter.com">twitter</a>, que o <a href="http://marcogomes.com">Marco Gomes</a> estava transmitindo o pessoal da <a href="http://boo-box.com">boo-box</a> jogando Wii. Logo ele teve a idéia de transmitir o evento.</p>
<p>O resultado me surpreendeu. Embora fosse de graça, era um evento em horário comercial, não teve nenhuma divulgação e foi anunciado na hora do evento. Achei que ninguém ia conseguir se agendar para assistir, mas tivemos uma média de 30 participantes, com alguns períodos com mais de 50. Os <a href="http://www.ustream.tv/diegoeis">vídeos estão disponíveis</a> para quem quiser conferir.</p>
<p>A cada dia mais me convenço de que <a href="http://marcogomes.com/blog/2008/eu-faco-parte-da-revolucao/">isso tudo é uma revolução</a>. Não estamos apenas fazendo melhor as mesmas coisas de antes, estamos fazendo coisas que antes não eram possíveis. Ouse, se arrisque, não tenha medo. Você corre o risco de as coisas darem certo.</p>

<p><a href="http://feeds.feedburner.com/~a/Fechatag?a=JASwJI"><img src="http://feeds.feedburner.com/~a/Fechatag?i=JASwJI" border="0"></img></a></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~f/Fechatag?a=7BMQMH"><img src="http://feeds.feedburner.com/~f/Fechatag?i=7BMQMH" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/Fechatag?a=Wu6n4h"><img src="http://feeds.feedburner.com/~f/Fechatag?i=Wu6n4h" border="0"></img></a>
</div>]]></content:encoded>
			<wfw:commentRss>http://blog.elcio.com.br/aconteceu-comigo-eu-faco-parte-da-revolucao/feed/</wfw:commentRss>
		<feedburner:origLink>http://blog.elcio.com.br/aconteceu-comigo-eu-faco-parte-da-revolucao/</feedburner:origLink></item>
	</channel>
</rss>
