<?xml version="1.0" encoding="UTF-8"?>
<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/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>KISS</title>
	<atom:link href="http://kiss.souagil.com.br/feed/" rel="self" type="application/rss+xml" />
	<link>http://kiss.souagil.com.br</link>
	<description>Keep it simple, stupid!</description>
	<lastBuildDate>Wed, 30 Dec 2009 19:02:51 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.1</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>JavaScript: buscar a posição de um elemento em uma matriz</title>
		<link>http://kiss.souagil.com.br/2009/12/javascript-buscar-a-posicao-de-um-elemento-em-uma-matriz/</link>
		<comments>http://kiss.souagil.com.br/2009/12/javascript-buscar-a-posicao-de-um-elemento-em-uma-matriz/#comments</comments>
		<pubDate>Wed, 30 Dec 2009 19:00:03 +0000</pubDate>
		<dc:creator><span property="dc:creator" resource="http://kiss.souagil.com.br/2009/12/javascript-buscar-a-posicao-de-um-elemento-em-uma-matriz/">Gabriel Gilini</span></dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://kiss.souagil.com.br/?p=710</guid>
		<description><![CDATA[Recebi uma pergunta curiosa no Aardvark há pouco, perguntando se eu não conhecia algum código JavaScript que buscasse a posição exata de um elemento dentro de um array multidimensional &#8212; matriz &#8212; qualquer.
Não é novidade pra ninguém que eu me divirto escrevendo código nessa linguagem, então resolvi bolar alguma coisa pra resolver o problema do [...]]]></description>
			<content:encoded><![CDATA[<div class="bzbutton" style="float:left;margin-right:10px;float:left;margin-right:10px;float: right; margin-left: 10px;"><a href="http://buzzvolume.com/compartilhar?url=http%3A%2F%2Fkiss.souagil.com.br%2F2009%2F12%2Fjavascript-buscar-a-posicao-de-um-elemento-em-uma-matriz%2F"><img src="http://buzzvolume.com/button.png?url=http%3A%2F%2Fkiss.souagil.com.br%2F2009%2F12%2Fjavascript-buscar-a-posicao-de-um-elemento-em-uma-matriz%2F" /></a></div><p>Recebi uma <a href="http://vark.com/t/e2207a">pergunta</a> curiosa no <a href="http://vark.com">Aardvark</a> há pouco, perguntando se eu não conhecia algum código JavaScript que buscasse a posição exata de um elemento dentro de um array multidimensional &mdash; matriz &mdash; qualquer.</p>
<p>Não é novidade pra ninguém que eu me divirto escrevendo código nessa linguagem, então resolvi bolar alguma coisa pra resolver o problema do rapaz em necessidade. Aí vai o código (gist):</p>
<p><script src="http://gist.github.com/266289.js"></script></p>
<p>Exemplo de uso:</p>
<p><script src="http://gist.github.com/266291.js"></script></p>
]]></content:encoded>
			<wfw:commentRss>http://kiss.souagil.com.br/2009/12/javascript-buscar-a-posicao-de-um-elemento-em-uma-matriz/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Gerando HTML 4.01 com o HTML Helper do CakePHP</title>
		<link>http://kiss.souagil.com.br/2009/12/gerando-html-4-01-com-o-html-helper-do-cakephp/</link>
		<comments>http://kiss.souagil.com.br/2009/12/gerando-html-4-01-com-o-html-helper-do-cakephp/#comments</comments>
		<pubDate>Tue, 15 Dec 2009 17:21:18 +0000</pubDate>
		<dc:creator><span property="dc:creator" resource="http://kiss.souagil.com.br/2009/12/gerando-html-4-01-com-o-html-helper-do-cakephp/">Fabrício Ferracioli</span></dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://kiss.souagil.com.br/?p=700</guid>
		<description><![CDATA[
Apesar das melhorias introduzidas no HTMLHelper do CakePHP 1.2, sempre achei ridículo ele gerar marcação apenas em XHTML. Sempre preferi HTML, e me via engessado pelo CakePHP nesse aspecto.


Acredito que muitos passam por essa dificuldade quando estão trabalhando com o HTMLHelper e FormHelper do CakePHP. Uma das principais consequências disso, é que o código gerado [...]]]></description>
			<content:encoded><![CDATA[<div class="bzbutton" style="float:left;margin-right:10px;float:left;margin-right:10px;float: right; margin-left: 10px;"><a href="http://buzzvolume.com/compartilhar?url=http%3A%2F%2Fkiss.souagil.com.br%2F2009%2F12%2Fgerando-html-4-01-com-o-html-helper-do-cakephp%2F"><img src="http://buzzvolume.com/button.png?url=http%3A%2F%2Fkiss.souagil.com.br%2F2009%2F12%2Fgerando-html-4-01-com-o-html-helper-do-cakephp%2F" /></a></div><p>
Apesar das melhorias introduzidas no <a href="http://book.cakephp.org/view/205/HTML">HTMLHelper</a> do CakePHP 1.2, sempre achei ridículo ele gerar marcação apenas em XHTML. Sempre preferi HTML, e me via engessado pelo CakePHP nesse aspecto.
</p>
<p>
Acredito que muitos passam por essa dificuldade quando estão trabalhando com o HTMLHelper e <a href="http://book.cakephp.org/view/182/Form">FormHelper</a> do CakePHP. Uma das principais consequências disso, é que o código gerado na maioria das vezes não é <a href="http://validator.w3.org/">válido</a>, pois mistura tags <a href="http://www.w3.org/TR/xhtml1/#diffs">HTML e XHTML</a>.
</p>
<p>
Mas sempre imaginei que deveria haver um meio de contornar isso. Certa vez verifiquei que existia um método chamado <a href="http://api.cakephp.org/class/html-helper#method-HtmlHelperdocType">docType</a> no HTMLHelper, e que era possível definir HTML 4.01 com ele. Mas minha alegria logo acabou quando percebi que ele não alterava o comportamento do Helper para gerar tags HTML.
</p>
<p>
Finalmente, hoje acabei me deparando com uma alternativa. Cansado de mensagens de código inválido fiz uma leitura mais cuidadosa do manual do CakePHP e encontrei a página que diz <a href="http://book.cakephp.org/view/862/Changing-the-tags-output-by-HtmlHelper">como gerar tags HTML 4.01</a>. A solução não é muito elegante, mas é uma alternativa presente no próprio framework.<br />
Espero que a solução sirva para vocês também!
</p>
<p><ins datetime="2009-12-15T18:39:04+00:00"><strong>Update 1</strong>:Para quem estiver com preguiça de fazer o arquivo do zero, fiz um <a href="http://github.com/fabricioferracioli/HTML-Tags-for-CakePHP-HTML-Helper">repositório no Github</a> com o arquivo e algumas tags. Conforme for sentindo necessidade vou aumentar o conteúdo dele. Quem quiser colaborar, está convidado!</ins></p>
<p>
<ins datetime="2009-12-18T20:06:00+00:00"><strong>Update 2</strong>: Apliquei as sugestões do Juan Basso, agora um Helper está disponível para manter as tags HTML 4.01. Vejam a discussão abaixo. O link do Github contínua o mesmo. Mantive o arquivo anterior para quem preferir o método da documentação do Cake.</ins></p>
]]></content:encoded>
			<wfw:commentRss>http://kiss.souagil.com.br/2009/12/gerando-html-4-01-com-o-html-helper-do-cakephp/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Criando thumbnails no shell do Linux de maneira simples</title>
		<link>http://kiss.souagil.com.br/2009/11/criando-thumbnails-no-shell-do-linux-de-maneira-simples/</link>
		<comments>http://kiss.souagil.com.br/2009/11/criando-thumbnails-no-shell-do-linux-de-maneira-simples/#comments</comments>
		<pubDate>Wed, 25 Nov 2009 22:59:08 +0000</pubDate>
		<dc:creator><span property="dc:creator" resource="http://kiss.souagil.com.br/2009/11/criando-thumbnails-no-shell-do-linux-de-maneira-simples/">Gabriel Gilini</span></dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://kiss.souagil.com.br/?p=680</guid>
		<description><![CDATA[Hello, peeps.
Hoje precisei converter um bocado de imagens para um tamanho reduzido, e como um bom linuxer, fui procurar como fazer isso no shell.
Uma pesquisadinha rápida no Google, e trombei com esse &#8220;how to&#8221;. Simples e direto, resolveu minha dúvida. Chequei se o ImageMagick já estava instalado, e estava. Mas esse script que o cara [...]]]></description>
			<content:encoded><![CDATA[<div class="bzbutton" style="float:left;margin-right:10px;float:left;margin-right:10px;float: right; margin-left: 10px;"><a href="http://buzzvolume.com/compartilhar?url=http%3A%2F%2Fkiss.souagil.com.br%2F2009%2F11%2Fcriando-thumbnails-no-shell-do-linux-de-maneira-simples%2F"><img src="http://buzzvolume.com/button.png?url=http%3A%2F%2Fkiss.souagil.com.br%2F2009%2F11%2Fcriando-thumbnails-no-shell-do-linux-de-maneira-simples%2F" /></a></div><p>Hello, peeps.</p>
<p>Hoje precisei converter um bocado de imagens para um tamanho reduzido, e como um bom linuxer, fui procurar como fazer isso no shell.</p>
<p>Uma pesquisadinha rápida no Google, e trombei com <a href="http://www.cyberciti.biz/tips/howto-linux-creating-a-image-thumbnails-from-shell-prompt.html" title="Howto: Linux Creating a Image Thumbnails from shell prompt">esse &#8220;how to&#8221;</a>. Simples e direto, resolveu minha dúvida. Chequei se o <a href="http://www.imagemagick.org/script/index.php" title="ImageMagick website">ImageMagick</a> já estava instalado, e estava. Mas esse script que o cara colocou no tutorial tá meio pobre, não dá pra passar nada por parâmetro. Cada vez que eu precisar disso vou ter que abrir o script e modificar? Ah, não.</p>
<p>Dez minutinhos de <abbr title="improved vi">vim</abbr> aberto depois, surge o <strong>thumbalizr</strong>:</p>
<p><img src="http://kiss.souagil.com.br/wp-content/uploads/2009/11/thumbalizr.png" alt="exemplo de uso do thumbalizr" title="exemplo de uso do thumbalizr" class="size-full wp-image-681" /></p>
<p>Você tem que passar width OU height (eu sei, tá errada a marcação dos parâmetros no exemplo de uso, se alguém souber o certo me fala), e pode passar uma string pra ser inserida antes do nome original da imagem. Caso contrário, as imagens serão substituídas.</p>
<p>UPDATE:<br />
Agora o script aceita a flag &#8220;-a string_pra_concatenar&#8221; que concatena uma string no final do nome do thumbnail. E também fiz algumas mudanças pra compatibilidade.</p>
<p>Para &#8220;thumbalizar&#8221; imagens em vários diretórios, faça algo como:</p>
<p><script src="http://gist.github.com/243142.js?file=gistfile1.sh"></script></p>
<p>Aí vai o código do script:<br />
<script src="http://gist.github.com/243081.js?file=thumbalizr"></script></p>
<p>Ou você pode baixar o script <a href="http://souagil.com.br/gabriel/thumbalizr" title="Download do thumbalizr">aqui</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://kiss.souagil.com.br/2009/11/criando-thumbnails-no-shell-do-linux-de-maneira-simples/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Programador, nem sempre é você que está errado!</title>
		<link>http://kiss.souagil.com.br/2009/11/programador-nem-sempre-e-voce-que-esta-errado/</link>
		<comments>http://kiss.souagil.com.br/2009/11/programador-nem-sempre-e-voce-que-esta-errado/#comments</comments>
		<pubDate>Thu, 19 Nov 2009 17:51:11 +0000</pubDate>
		<dc:creator><span property="dc:creator" resource="http://kiss.souagil.com.br/2009/11/programador-nem-sempre-e-voce-que-esta-errado/">Fabrício Ferracioli</span></dc:creator>
				<category><![CDATA[Programação]]></category>

		<guid isPermaLink="false">http://kiss.souagil.com.br/?p=662</guid>
		<description><![CDATA[Pois é amigos, quando estamos falando de programação nem sempre você é o cara errado da história.
Digo isso pois acabo de passar por uma situação em que estava certo, mas por não acreditar muito nisso acabei perdendo algum tempo procurando erros inexistentes.
Estava testando uma aplicação e apenas um caso de teste falhava.
Ao verificar o código [...]]]></description>
			<content:encoded><![CDATA[<div class="bzbutton" style="float:left;margin-right:10px;float:left;margin-right:10px;float: right; margin-left: 10px;"><a href="http://buzzvolume.com/compartilhar?url=http%3A%2F%2Fkiss.souagil.com.br%2F2009%2F11%2Fprogramador-nem-sempre-e-voce-que-esta-errado%2F"><img src="http://buzzvolume.com/button.png?url=http%3A%2F%2Fkiss.souagil.com.br%2F2009%2F11%2Fprogramador-nem-sempre-e-voce-que-esta-errado%2F" /></a></div><p>Pois é amigos, quando estamos falando de programação nem sempre você é o cara errado da história.</p>
<p>Digo isso pois acabo de passar por uma situação em que estava certo, mas por não acreditar muito nisso acabei perdendo algum tempo procurando erros inexistentes.</p>
<p>Estava testando uma aplicação e apenas um caso de teste falhava.<br />
Ao verificar o código aparentemente não havia nada errado, e poucos dias atrás o mesmo trecho não apresentava problemas. O que estaria acontecendo?</p>
<p><img src="http://kiss.souagil.com.br/wp-content/uploads/2009/11/test_fail.png" alt="Teste com 1 falha" title="Teste com 1 falha" width="667" height="245" class="size-full wp-image-664" /></p>
<p>
Fiquei um bom tempo tentando encontrar algum erro bobo de lógica em um código que eu havia acabado de inserir, mas não encontrava nada. Além disso, o trecho de código que falhava nos testes não tinha relação nenhuma com as alterações que havia feito.</p>
<p>Então pensei que poderia ser uma alteração do <a href="http://www.cakephp.org">CakePHP 1.2.5</a> que não havia passado para o meu código. Também procurei por isso em vão. Então percebi que o problema estava com uma função que utiliza <a href="http://en.wikipedia.org/wiki/Database_transaction">transações</a>, o que já foi uma fonte de problemas nesse projeto, ou seja, um problema recorrente.</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;">    <span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$init_transaction</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
        <span style="color: #000088;">$db</span> <span style="color: #339933;">=&amp;</span> ConnectionManager<span style="color: #339933;">::</span><span style="color: #004000;">getDataSource</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">useDbConfig</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        <span style="color: #000088;">$db</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">begin</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$this</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span>
    <span style="color: #b1b100;">foreach</span><span style="color: #009900;">&#40;</span> <span style="color: #000088;">$balloonContents</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'BalloonContent'</span><span style="color: #009900;">&#93;</span> <span style="color: #b1b100;">as</span> <span style="color: #000088;">$index</span> <span style="color: #339933;">=&gt;</span> <span style="color: #000088;">$content</span> <span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
        <span style="color: #000088;">$content</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'balloon_id'</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$balloon_id</span><span style="color: #339933;">;</span>
        <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">create</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$content</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        <span style="color: #000088;">$save</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">save</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        <span style="color: #000088;">$status</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$status</span> <span style="color: #339933;">&amp;&amp;</span> <span style="color: #000088;">$save</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span>
&nbsp;
    <span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span><span style="color: #339933;">!</span><span style="color: #000088;">$init_transaction</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
        <span style="color: #b1b100;">return</span> <span style="color: #000088;">$status</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span>
    <span style="color: #b1b100;">elseif</span> <span style="color: #009900;">&#40;</span><span style="color: #000088;">$status</span> <span style="color: #339933;">&amp;&amp;</span> <span style="color: #000088;">$db</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">commit</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$this</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
        <span style="color: #b1b100;">return</span> <span style="color: #009900; font-weight: bold;">true</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span>
    <span style="color: #b1b100;">else</span> <span style="color: #009900;">&#123;</span>
        <span style="color: #000088;">$db</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">rollback</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$this</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        <span style="color: #b1b100;">return</span> <span style="color: #009900; font-weight: bold;">false</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span></pre></div></div>

<p>É um código simples, e não existe nenhum problema com ele. Como eu acabei de instalar o <a href="http://en.opensuse.org">openSuse 11.2</a>, que agora está com o <a href="http://en.opensuse.org/MySQL-5.1">MySQL 5.1 nativo</a>, me lembrei que ele poderia não estar configurado corretamente para usar a storage engine <a href="http://dev.mysql.com/doc/refman/5.1/en/innodb.html">InnoDB</a>. E era exatamente isso! Como o <a href="http://dev.mysql.com/doc/refman/5.1/en/storage-engines.html">MyISAM</a> fica habilitado por padrão, e essa storage engine <a href="http://book.cakephp.org/view/75/Saving-Your-Data">não tem suporte total a transações</a>, se você deseja utilizar esse recurso deve dizer ao banco de dados.<br />
Ou seja, meu ambiente estava configurado de modo inconsistente com as necessidades da aplicação. Alterei o arquivo de configuração do MySQL, o <a href="http://dev.mysql.com/doc/refman/5.1/en/server-options.html#option_mysqld_default-storage-engine">my.cnf</a>, adicionando a seguinte opção:</P></p>

<div class="wp_syntax"><div class="code"><pre class="shell" style="font-family:monospace;">default-storage-engine=InnoDB</pre></div></div>

<p>Depois disso o teste passou e tudo voltou ao normal.</p>
<p><img src="http://kiss.souagil.com.br/wp-content/uploads/2009/11/test_passed.png" alt="Testes passando após trocar a storage engine" title="Todos os testes passando" width="665" height="107" class="size-full wp-image-671" /></p>
<p>
Portanto rapaziada, em alguns casos não adianta procurar pelos seus erros. Procure se lembrar que qualquer tarefa necessita de subsídios, e no caso de nós programadores, um ambiente bem configurado faz toda diferença.</p>
<p>Alguém já passou por situação semelhante?</p>
]]></content:encoded>
			<wfw:commentRss>http://kiss.souagil.com.br/2009/11/programador-nem-sempre-e-voce-que-esta-errado/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Lo dia mas importante del ano!</title>
		<link>http://kiss.souagil.com.br/2009/10/lo-dia-mas-importante-del-ano/</link>
		<comments>http://kiss.souagil.com.br/2009/10/lo-dia-mas-importante-del-ano/#comments</comments>
		<pubDate>Fri, 30 Oct 2009 11:18:49 +0000</pubDate>
		<dc:creator><span property="dc:creator" resource="http://kiss.souagil.com.br/2009/10/lo-dia-mas-importante-del-ano/">Fabrício Ferracioli</span></dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://kiss.souagil.com.br/?p=651</guid>
		<description><![CDATA[Hola pueblo! Ustedes estan bien?
Hoje es un dia muy gratificante para mi persona e mi pueblo, lo dia internacional de hablarse portuñol! Es una data muy querida, muchas fiestas en diversas naciones ocorren neste gracioso dia.
Para los mas desavisados, portuñol es un idioma famoso, tiene artigo en Wikipedia! E non és solamiente esto, és un [...]]]></description>
			<content:encoded><![CDATA[<div class="bzbutton" style="float:left;margin-right:10px;float:left;margin-right:10px;float: right; margin-left: 10px;"><a href="http://buzzvolume.com/compartilhar?url=http%3A%2F%2Fkiss.souagil.com.br%2F2009%2F10%2Flo-dia-mas-importante-del-ano%2F"><img src="http://buzzvolume.com/button.png?url=http%3A%2F%2Fkiss.souagil.com.br%2F2009%2F10%2Flo-dia-mas-importante-del-ano%2F" /></a></div><p>Hola pueblo! Ustedes estan bien?<br />
Hoje es un dia muy gratificante para mi persona e mi pueblo, <strong><a href="http://www.portunhol.art.br/wiki/Página_principal">lo dia internacional de hablarse portuñol</a></strong>! Es una data muy querida, muchas fiestas en diversas naciones ocorren neste gracioso dia.</p>
<p>Para los mas desavisados, portuñol es un idioma famoso, <a href="http://pt.wikipedia.org/wiki/Portunhol">tiene artigo en Wikipedia</a>! E non és solamiente esto, és un idioma <a href="http://www.labeurb.unicamp.br/elb/americanas/portunhol.html">estudiado por una grande universidad</a>.</p>
<p>
És una pena que en Brasil las comeraciones se limitem a lo mundo virtual. En grande part de los países latino americanos las comeraciones son regadas a mucha fiesta. Mariachis, tequila, castanholas e tudo mas que relembra nuestra richa cultura! Las muheres e chicas enton, ficam muy belas.
</p>
<p>
Estoy mui empolgado e esqueci-me que este blog es sobre progamacion. Nuestra cultura tiene grandes programadueres, grandes tecnicas de la programacion. Uno grande exiemplo desto és <a href="http://www.php.net/manual/en/control-structures.goto.php">lo comando goto</a>, recientemente adicionado en la linguagen PHP.<br />
Solamente una cosa me deja triste en PHP, el <q><a href="http://br.php.net/manual/en/language.oop5.paamayim-nekudotayim.php">Paamayim Nekudotayim</a></q>. No seria bein mehor lamado de <q>dos puentos</q>? Mas jo acredito que esta discussion lo ira lebar a nada!
</p>
<p>
Enton, dejo una contribuicion de uno grand programador que habla nuestra lingua! Es un <a href="http://www.portunhol.art.br/wiki/Python">programa que convierte lo idioma del Brasil para las bielas palabras de lo idioma Portuñol</a>! E non dejem de acessar las paginas oficialies de las comemoraciones!<br />
<a href="http://www.portunhol.art.br/"><img src="http://www.portunhol.art.br/images/a/a2/Bandeira_portunhol.gif" alt="13 de lo otubro, lo dia Internacional de Hablarse Portunhol" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://kiss.souagil.com.br/2009/10/lo-dia-mas-importante-del-ano/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Aumentando a semântica com RDFa</title>
		<link>http://kiss.souagil.com.br/2009/09/aumentando-a-semantica-com-rdfa/</link>
		<comments>http://kiss.souagil.com.br/2009/09/aumentando-a-semantica-com-rdfa/#comments</comments>
		<pubDate>Fri, 04 Sep 2009 18:18:54 +0000</pubDate>
		<dc:creator><span property="dc:creator" resource="http://kiss.souagil.com.br/2009/09/aumentando-a-semantica-com-rdfa/">Fabrício Ferracioli</span></dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://kiss.souagil.com.br/?p=621</guid>
		<description><![CDATA[Acredito que Web vem tomando um caminho interessante com decisões tomadas nos últimos meses, como a adoção do HTML 5 e o engavetamento do XHTML 2. Isso com apenas um padrão, a confusão será bem menor e a adoção poderá ser realizada de modo mais harmonioso. Mas, como a maioria das pessoas que trabalham com [...]]]></description>
			<content:encoded><![CDATA[<div class="bzbutton" style="float:left;margin-right:10px;float:left;margin-right:10px;float: right; margin-left: 10px;"><a href="http://buzzvolume.com/compartilhar?url=http%3A%2F%2Fkiss.souagil.com.br%2F2009%2F09%2Faumentando-a-semantica-com-rdfa%2F"><img src="http://buzzvolume.com/button.png?url=http%3A%2F%2Fkiss.souagil.com.br%2F2009%2F09%2Faumentando-a-semantica-com-rdfa%2F" /></a></div><p>Acredito que Web vem tomando um caminho interessante com decisões tomadas nos últimos meses, como a <a href="http://www.w3.org/News/2009#item119">adoção do <abbr title="HyperText Markup Language">HTML</abbr> 5 e o engavetamento do <abbr title="Extensible HyperText Markup Language">XHTML</abbr> 2</a>. Isso com apenas um padrão, a confusão será bem menor e a adoção poderá ser realizada de modo mais harmonioso. Mas, como a maioria das pessoas que trabalham com Web sabem, não basta que o padrão exista, ele deve ser suportado pelo mercado, senão acaba ficando somente &#8220;no papel&#8221;.<br />
Até algum tempo atrás, acreditava que isso aconteceria com o <abbr title="Resource Description Framework - in - attributes">RDFa</abbr>, uma recomendação do <abbr title="World Wide Web Consortium">W3C</abbr> que é conjunto de extensões do (X)HTML que permite aumentar a semântica de documentos (X)HTML. Atualmente, o padrão é suportado pelo <a href="http://developer.yahoo.net/blog/archives/2008/09/searchmonkey_support_for_rdfa_enabled.html">Yahoo!</a>, o pioneiro, e pelo <a href="http://www.google.com/support/webmasters/bin/answer.py?hl=en&#038;answer=146898">Google</a>.
</p>
<p>
E agora você me pergunta:
</p>
<blockquote><p>Em que isso vai me ajudar?</p></blockquote>
<p>
O RDFa basicamente adiciona semântica a seus documentos, fazendo com que eles sejam compreendidos mais facilmente por dispositivos, o que aumenta a capacidade de busca.<br />
Agora é só pensar um pouco, se o Yahoo e Google puderem compreender melhor seus documentos, eles serão mais facilmente encontrados e você ganha uma vantagem sobre quem não dá a mínima para semântica.<br />
Pra você que ainda não ficou convencido, aqui vou usar dois exemplos, que talvez você já tenha visto, mas não sabia o porque das informações adicionais. Primeiro a do Yahoo.<br />
<img src="http://kiss.souagil.com.br/wp-content/uploads/2009/09/busca_yahoo.png" alt="Resultado de busca do Yahoo com RDFa" /><br />
Agora a do Google.<br />
<img src="http://kiss.souagil.com.br/wp-content/uploads/2009/09/busca_google.png" alt="Resultado de busca do Google com RDFa" />
</p>
<p>
Em ambos os casos, as informações adicionais que estão associadas aos resultados fazem grande diferença nos resultados, pois adicionam muito mais ao que o usuário deseja saber, do que simplesmete o resultado da busca tradicional. Essa pequena diferença já é suficiente para deixar seu resultado a frente dos demais e possivelmente preferido pelo usuário.
</p>
<p>
Gostou, não é?<br />
E agora você me pergunta:
</p>
<blockquote><p>Mas como eu faço isso?!</p></blockquote>
<p>
Não faltam recursos na Web sobre RDFa, e como o objetivo desse post é alertar sobre as possibilidades dele, deixo alguns links para vocês aprenderem um pouco.
</p>
<ol>
<li><a href="http://www.w3.org/TR/xhtml-rdfa-primer/">Ótimo para quem não sabe nada, leitura obrigatória.</a></li>
<li><a href="http://www.alistapart.com/articles/introduction-to-rdfa/">Também é ótimo para quem está começando, dividido em duas partes.</a></li>
<li><a href="http://www.alistapart.com/articles/introduction-to-rdfa-ii/">Continuação do artigo anterior.</a></li>
<li><a href="http://www.w3.org/TR/rdfa-syntax/">Esse é um pouco mais avançado, leia depois de ler os anteriores</a></li>
</ol>
<p>
Lembrando que o <a href="http://www.w3.org/2001/sw/">W3C Semantic Web Activity</a> possui vários recursos para quem quer aprender, além de alguns casos de uso.<br />
E não tem desculpa para não utilizar, ele é compatível tanto com HTML quanto XHTML.</p>
]]></content:encoded>
			<wfw:commentRss>http://kiss.souagil.com.br/2009/09/aumentando-a-semantica-com-rdfa/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Apache 2.xx + mod_myvhost</title>
		<link>http://kiss.souagil.com.br/2009/08/apache-2-xx-mod_myvhost/</link>
		<comments>http://kiss.souagil.com.br/2009/08/apache-2-xx-mod_myvhost/#comments</comments>
		<pubDate>Tue, 04 Aug 2009 17:59:44 +0000</pubDate>
		<dc:creator><span property="dc:creator" resource="http://kiss.souagil.com.br/2009/08/apache-2-xx-mod_myvhost/">Marcus Vinicius</span></dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://kiss.souagil.com.br/?p=581</guid>
		<description><![CDATA[Desde muito tempo atraz, ficamos intrigados em ter que rebootar o apache a cada nova configuração de vhost. O Bodão inclusive descobriu um tal de mod_myvhost, mas que para nossa infelicidade funcionava somente no Apache 1.3.x. E assim como nós, os caras do slack-users, também acharam que compilar esse módulo para a versao 2.xx do [...]]]></description>
			<content:encoded><![CDATA[<div class="bzbutton" style="float:left;margin-right:10px;float:left;margin-right:10px;float: right; margin-left: 10px;"><a href="http://buzzvolume.com/compartilhar?url=http%3A%2F%2Fkiss.souagil.com.br%2F2009%2F08%2Fapache-2-xx-mod_myvhost%2F"><img src="http://buzzvolume.com/button.png?url=http%3A%2F%2Fkiss.souagil.com.br%2F2009%2F08%2Fapache-2-xx-mod_myvhost%2F" /></a></div><p>Desde muito tempo atraz, ficamos intrigados em ter que rebootar o apache a cada nova configuração de vhost. O <a title="Blog do Bodão" href="http://sirboderafael.wordpress.com" target="_blank">Bodão</a> inclusive descobriu um tal de <a title="mod_myvhost" href="http://code.google.com/p/mod-myvhost/" target="_blank">mod_myvhost</a>, mas que para nossa infelicidade funcionava somente no <a title="Apache" href="http://www.apache.org/" target="_blank">Apache</a> 1.3.x. E assim como nós, os caras do <a title="Slack-Users" href="http://groups.google.com/group/slack-users-br/" target="_blank">slack-users</a>, também acharam que <a title="Thread do slack-users" href="http://groups.google.com/group/slack-users-br/browse_thread/thread/e6e17ae86d2c3324/cc830f705486f742" target="_blank">compilar esse módulo para a versao 2.xx</a> do Apache não era possível.</p>
<p>Bom&#8230; A idéia foi abandonada, e a azia de reboot continuava causando com a galera! ¬¬&#8221;</p>
<p>Recentemente (mais precisamente na sexta passada), resolvi colocar a idéia do <a title="Posts do Mano" href="http://kiss.souagil.com.br/author/fabricio/" target="_blank">Mano</a> em prática: configurar um ambiente de desenvolvimento padronizado para a empresa!</p>
<p>Tá&#8230; legal&#8230; As idéias foram surgindo&#8230; Mas peraí! Pouts&#8230; &#8220;A gente podia dar um jeito de não ter que ficar dando restart no Apache neh?&#8221; É!</p>
<p>Bom&#8230; foi o suficiente pra que eu (teimoso como sempre) fritasse algumas horas e colocasse o mod_myvhost pra rodar!</p>
<p>OK! Chega de historinha e vamos instalar neh&#8230;<br />
<br/></p>
<h4>1 &#8211; Execute esse script aqui</h4>
<p>Ele baixa o source, corrige o Makefile e compila o módulo:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #666666; font-style: italic;">#!/bin/bash</span>
&nbsp;
<span style="color: #007800;">mysql_libs</span>=<span style="color: #000000; font-weight: bold;">`</span>mysql_config <span style="color: #660033;">--libs</span> <span style="color: #000000; font-weight: bold;">|</span> <span style="color: #c20cb9; font-weight: bold;">sed</span> <span style="color: #ff0000;">'s,-rdynamic ,,'</span><span style="color: #000000; font-weight: bold;">`</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">if</span> <span style="color: #7a0874; font-weight: bold;">&#91;</span> <span style="color: #007800;">$?</span> <span style="color: #660033;">-ne</span> <span style="color: #000000;">0</span> <span style="color: #7a0874; font-weight: bold;">&#93;</span>;
<span style="color: #000000; font-weight: bold;">then</span>
    <span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #660033;">-e</span> <span style="color: #ff0000;">&quot;<span style="color: #000099; font-weight: bold;">\n</span><span style="color: #000099; font-weight: bold;">\n</span>Voce precisa da <span style="color: #000099; font-weight: bold;">\&quot;</span>libmysqlclient-devel<span style="color: #000099; font-weight: bold;">\&quot;</span> para continuar a instalacao&quot;</span>
<span style="color: #000000; font-weight: bold;">fi</span>
&nbsp;
<span style="color: #007800;">APXS</span>=<span style="color: #000000; font-weight: bold;">`</span>apxs<span style="color: #000000; font-weight: bold;">`</span>
<span style="color: #000000; font-weight: bold;">if</span> <span style="color: #7a0874; font-weight: bold;">&#91;</span> <span style="color: #007800;">$?</span> <span style="color: #660033;">-ne</span> <span style="color: #000000;">0</span> <span style="color: #7a0874; font-weight: bold;">&#93;</span>;
<span style="color: #000000; font-weight: bold;">then</span>
        <span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #660033;">-e</span> <span style="color: #ff0000;">&quot;<span style="color: #000099; font-weight: bold;">\n</span><span style="color: #000099; font-weight: bold;">\n</span>Voce precisa de <span style="color: #000099; font-weight: bold;">\&quot;</span>apache2-devel<span style="color: #000099; font-weight: bold;">\&quot;</span> para continuar a instalacao&quot;</span>
<span style="color: #000000; font-weight: bold;">fi</span>
&nbsp;
<span style="color: #c20cb9; font-weight: bold;">svn</span> checkout https:<span style="color: #000000; font-weight: bold;">//</span>mod-myvhost.googlecode.com<span style="color: #000000; font-weight: bold;">/</span>svn<span style="color: #000000; font-weight: bold;">/</span>branches<span style="color: #000000; font-weight: bold;">/</span>2.xx mod-myvhost-read-only
<span style="color: #7a0874; font-weight: bold;">cd</span> .<span style="color: #000000; font-weight: bold;">/</span>mod-myvhost-read-only
&nbsp;
<span style="color: #c20cb9; font-weight: bold;">sed</span> <span style="color: #660033;">-i</span> <span style="color: #ff0000;">&quot;s,\<span style="color: #780078;">`mysql_config --libs\`</span>,<span style="color: #007800;">$mysql_libs</span>,&quot;</span> Makefile
&nbsp;
<span style="color: #c20cb9; font-weight: bold;">make</span> <span style="color: #660033;">-w</span> <span style="color: #660033;">-i</span> <span style="color: #660033;">--silent</span> <span style="color: #000000; font-weight: bold;">&amp;</span>amp;<span style="color: #000000; font-weight: bold;">&amp;</span>amp; <span style="color: #7a0874; font-weight: bold;">wait</span>
<span style="color: #c20cb9; font-weight: bold;">cp</span> .libs<span style="color: #000000; font-weight: bold;">/</span>mod_myvhost.so .<span style="color: #000000; font-weight: bold;">/</span></pre></div></div>

<h5>Depois do módulo compilado&#8230;</h5>
<p>coloque-o no diretório de módulos do seu Apache</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">cp</span> .<span style="color: #000000; font-weight: bold;">/</span>mod_myvhost.conf <span style="color: #000000; font-weight: bold;">/</span>usr<span style="color: #000000; font-weight: bold;">/</span>lib<span style="color: #000000; font-weight: bold;">/</span>httpd<span style="color: #000000; font-weight: bold;">/</span>modules<span style="color: #000000; font-weight: bold;">/</span></pre></div></div>

<p><br/></p>
<h4>2 &#8211; Configure o seu httpd.conf</h4>
<p>basta inserir as linhas que seguem no fim do arquivo. <strong>Lembre-se de comentar o include do arquivo onde estavam os antigos vhosts.</strong></p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">...
<span style="color: #666666; font-style: italic;">#Include /etc/httpd/extra/httpd-vhosts.conf</span>
...
&nbsp;
LoadModule myvhost_module lib<span style="color: #000000; font-weight: bold;">/</span>httpd<span style="color: #000000; font-weight: bold;">/</span>modules<span style="color: #000000; font-weight: bold;">/</span>mod_myvhost.so 
&nbsp;
<span style="color: #666666; font-style: italic;"># My Virtual Hosts Configuration</span>
Include <span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>httpd<span style="color: #000000; font-weight: bold;">/</span>extra<span style="color: #000000; font-weight: bold;">/</span>httpd-myvhosts.conf</pre></div></div>

<p><br/></p>
<h4>3 &#8211; Crie seu httpd-myvhosts.conf</h4>
<p>pra isso é só colocar as linhas seguintes em <strong>/etc/httpd/extra/httpd-myvhosts.conf</strong>, e alterar onde for necessário</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">NameVirtualHost <span style="color: #000000; font-weight: bold;">*</span>:<span style="color: #000000;">80</span>
&nbsp;
    MyVhostOn           on
    MyVhostDefaultHost  <span style="color: #ff0000;">&quot;localhost&quot;</span>
    MyVhostDefaultRoot  <span style="color: #ff0000;">&quot;/srv/www/htdocs/&quot;</span>
    MyVhostDbHost       <span style="color: #ff0000;">&quot;localhost&quot;</span>
    MyVhostDbSocket     <span style="color: #ff0000;">&quot;/var/run/mysql/mysql.sock&quot;</span>
    MyVhostDbUser       <span style="color: #ff0000;">&quot;usuario&quot;</span>
    MyVhostDbPass       <span style="color: #ff0000;">&quot;senha&quot;</span>
    MyVhostDbName       <span style="color: #ff0000;">&quot;hosting&quot;</span>
    MyVhostQuery        <span style="color: #ff0000;">&quot;SELECT <span style="color: #780078;">`rootdir`</span>,<span style="color: #780078;">`admin`</span>,<span style="color: #780078;">`extra_php_config`</span> FROM <span style="color: #780078;">`vhosts`</span>  WHERE (<span style="color: #780078;">`vhost`</span>='%s' OR <span style="color: #780078;">`valias`</span>='%s') AND <span style="color: #780078;">`enabled`</span>='yes'&quot;</span>
&nbsp;
        <span style="color: #666666; font-style: italic;"># Configuracoes Opcionais</span>
        Options Indexes FollowSymLinks
        RewriteEngine On
        AllowOverride All
        Order allow,deny
        Allow from all</pre></div></div>

<p><br/></p>
<h4>4 &#8211; Criando o banco de dados</h4>

<div class="wp_syntax"><div class="code"><pre class="sql" style="font-family:monospace;"><span style="color: #993333; font-weight: bold;">CREATE</span> <span style="color: #993333; font-weight: bold;">DATABASE</span> <span style="color: #ff0000;">`hosting`</span>;
<span style="color: #993333; font-weight: bold;">USE</span> <span style="color: #ff0000;">`hosting`</span>;
&nbsp;
<span style="color: #993333; font-weight: bold;">CREATE</span> <span style="color: #993333; font-weight: bold;">TABLE</span> <span style="color: #ff0000;">`vhosts`</span> <span style="color: #66cc66;">&#40;</span>
    <span style="color: #ff0000;">`vhost`</span> varchar<span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">255</span><span style="color: #66cc66;">&#41;</span> <span style="color: #993333; font-weight: bold;">NOT</span> <span style="color: #993333; font-weight: bold;">NULL</span> <span style="color: #993333; font-weight: bold;">DEFAULT</span> <span style="color: #ff0000;">''</span><span style="color: #66cc66;">,</span>
    <span style="color: #ff0000;">`valias`</span> varchar<span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">255</span><span style="color: #66cc66;">&#41;</span> <span style="color: #993333; font-weight: bold;">NOT</span> <span style="color: #993333; font-weight: bold;">NULL</span> <span style="color: #993333; font-weight: bold;">DEFAULT</span> <span style="color: #ff0000;">''</span><span style="color: #66cc66;">,</span>
    <span style="color: #ff0000;">`enabled`</span> enum<span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">'yes'</span><span style="color: #66cc66;">,</span><span style="color: #ff0000;">'no'</span><span style="color: #66cc66;">&#41;</span> <span style="color: #993333; font-weight: bold;">NOT</span> <span style="color: #993333; font-weight: bold;">NULL</span> <span style="color: #993333; font-weight: bold;">DEFAULT</span> <span style="color: #ff0000;">'no'</span><span style="color: #66cc66;">,</span>
    <span style="color: #ff0000;">`rootdir`</span> varchar<span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">255</span><span style="color: #66cc66;">&#41;</span> <span style="color: #993333; font-weight: bold;">NOT</span> <span style="color: #993333; font-weight: bold;">NULL</span> <span style="color: #993333; font-weight: bold;">DEFAULT</span> <span style="color: #ff0000;">''</span><span style="color: #66cc66;">,</span>
    <span style="color: #ff0000;">`admin`</span> varchar<span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">255</span><span style="color: #66cc66;">&#41;</span> <span style="color: #993333; font-weight: bold;">DEFAULT</span> <span style="color: #ff0000;">''</span><span style="color: #66cc66;">,</span>
    <span style="color: #ff0000;">`extra_php_config`</span> text<span style="color: #66cc66;">,</span>
    <span style="color: #993333; font-weight: bold;">UNIQUE</span> <span style="color: #993333; font-weight: bold;">KEY</span> <span style="color: #ff0000;">`vhostname`</span> <span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">`vhost`</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">,</span>
    <span style="color: #993333; font-weight: bold;">KEY</span> <span style="color: #ff0000;">`enabled`</span> <span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">`enabled`</span><span style="color: #66cc66;">&#41;</span>
<span style="color: #66cc66;">&#41;</span> TYPE<span style="color: #66cc66;">=</span>MyISAM COMMENT<span style="color: #66cc66;">=</span><span style="color: #ff0000;">'vhosts'</span>;</pre></div></div>

<p><br/></p>
<h4>5 &#8211; Concluindo</h4>
<p>Agora é só restartar o apache (PELA ULTIMA VEZ! haha), popular o banco e começar a utilizar!</p>
]]></content:encoded>
			<wfw:commentRss>http://kiss.souagil.com.br/2009/08/apache-2-xx-mod_myvhost/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Padrões de escrita de código em PHP</title>
		<link>http://kiss.souagil.com.br/2009/08/padroes-de-escrita-de-codigo-em-php/</link>
		<comments>http://kiss.souagil.com.br/2009/08/padroes-de-escrita-de-codigo-em-php/#comments</comments>
		<pubDate>Mon, 03 Aug 2009 14:11:58 +0000</pubDate>
		<dc:creator><span property="dc:creator" resource="http://kiss.souagil.com.br/2009/08/padroes-de-escrita-de-codigo-em-php/">Fabrício Ferracioli</span></dc:creator>
				<category><![CDATA[Programação]]></category>

		<guid isPermaLink="false">http://kiss.souagil.com.br/?p=574</guid>
		<description><![CDATA[Hoje aconteceu mais uma apresentação sobre temas relacionados a programação aqui para a equipe da souÁgil. Falamos sobre um tema que gera bastante polêmica entre uma equipe de programadores, por se tratar muitas vezes de uma preferência pessoal. Mas que tema é esse?
Padrões de escrita de código em PHP.
Especialmente no caso do PHP, a polêmica [...]]]></description>
			<content:encoded><![CDATA[<div class="bzbutton" style="float:left;margin-right:10px;float:left;margin-right:10px;float: right; margin-left: 10px;"><a href="http://buzzvolume.com/compartilhar?url=http%3A%2F%2Fkiss.souagil.com.br%2F2009%2F08%2Fpadroes-de-escrita-de-codigo-em-php%2F"><img src="http://buzzvolume.com/button.png?url=http%3A%2F%2Fkiss.souagil.com.br%2F2009%2F08%2Fpadroes-de-escrita-de-codigo-em-php%2F" /></a></div><p>Hoje aconteceu mais uma apresentação sobre temas relacionados a programação aqui para a equipe da souÁgil. Falamos sobre um tema que gera bastante polêmica entre uma equipe de programadores, por se tratar muitas vezes de uma preferência pessoal. Mas que tema é esse?<br />
<strong>Padrões de escrita de código em PHP</strong>.<br />
Especialmente no caso do PHP, a polêmica é ainda maior, uma vez que a linguagem não possui nenhum padrão estabelecido oficialmente.
</p>
<p>
Aqui vai a apresentação:<br />
<iframe src="http://docs.google.com/present/embed?id=dcc2zs7j_1d77dpvdq&#038;interval=60" frameborder="0" width="410" height="342"></iframe>
</p>
<p>
Acredito que em qualquer projeto essa prática é importante, e o objetivo dessa apresentação é mostrar alternativas existentes em PHP. Quem gostar de algum deles pode adotá-lo ou criar o seu, mas lembre-se que toda a equipe deve ter uma maneira fácil de conhecê-lo.<br />
É isso, espero que ajude a quem precisar.</p>
]]></content:encoded>
			<wfw:commentRss>http://kiss.souagil.com.br/2009/08/padroes-de-escrita-de-codigo-em-php/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>O IE6 é apenas mais um navegador</title>
		<link>http://kiss.souagil.com.br/2009/07/o-ie6-e-apenas-mais-um-navegador/</link>
		<comments>http://kiss.souagil.com.br/2009/07/o-ie6-e-apenas-mais-um-navegador/#comments</comments>
		<pubDate>Sun, 19 Jul 2009 19:06:54 +0000</pubDate>
		<dc:creator><span property="dc:creator" resource="http://kiss.souagil.com.br/2009/07/o-ie6-e-apenas-mais-um-navegador/">Gabriel Gilini</span></dc:creator>
				<category><![CDATA[Programação]]></category>

		<guid isPermaLink="false">http://kiss.souagil.com.br/?p=569</guid>
		<description><![CDATA[Em todo blog de desenvolvimento o assunto vem sendo o mesmo nos últimos dias: a morte do IE6. O Digg anunciou que não suporta mais o navegador, depois veio o Youtube, e tenho certeza que muitos outros estão seguindo a mesma estratégia dos gigantes.
Por todos os cantos da Internet se escutam exaltações de alegria: &#8220;hacks [...]]]></description>
			<content:encoded><![CDATA[<div class="bzbutton" style="float:left;margin-right:10px;float:left;margin-right:10px;float: right; margin-left: 10px;"><a href="http://buzzvolume.com/compartilhar?url=http%3A%2F%2Fkiss.souagil.com.br%2F2009%2F07%2Fo-ie6-e-apenas-mais-um-navegador%2F"><img src="http://buzzvolume.com/button.png?url=http%3A%2F%2Fkiss.souagil.com.br%2F2009%2F07%2Fo-ie6-e-apenas-mais-um-navegador%2F" /></a></div><p>Em todo blog de desenvolvimento o assunto vem sendo o mesmo nos últimos dias: a morte do IE6. O Digg anunciou que não suporta mais o navegador, depois veio o Youtube, e tenho certeza que muitos outros estão seguindo a mesma estratégia dos gigantes.</p>
<p>Por todos os cantos da Internet se escutam exaltações de alegria: &#8220;hacks para PNG não mais&#8221;, &#8220;seletores CSS3!&#8221;, &#8220;HTML5&#8243;, e etc. E a cada vez que leio algo nesse sentido, sinto uma pontada de pesar por saber que essas pessoas não entendem o que é desenvolver pra web, elas acreditam que dando suporte às funcionalidades conhecidas de um punhado de navegadores que aparecem nas estatísticas é o necessário para dar suporte cross-browser. Então me pergunto: o que adianta bradar aos quatro ventos que desenvolve nos padrões de acessibilidade, sendo que na hora de escrever um script não leva em conta que os navegadores utilizados por deficientes visuais, por exemplo, são praticamente desconhecidos para os desenvolvedores. Eu não sei qual punhado de funcionalidades um navegador desses suporta, mas é meu papel garantir que pelo menos uma experiência minimalista de uso seja viável em <strong>qualquer</strong> navegador.</p>
<p>Não me vejo no direito de excluir algumas pessoas de utilizarem minha interface porque elas não usam um navegador que eu conheça ou goste, mas parece-me que muita gente não se importa com esses &#8220;excluídos&#8221;. Ontem, depois de ler <a href="http://www.tableless.com.br/aonde-nos-leva-a-morte-do-internet-explorer-6">o milésimo post falando como o IE6 é(era) a praga da web</a>, resolvi dissertar brevemente sobre o assunto, e como gostei do que escrevi, vou reproduzir o texto do comentário aqui <em>ipsis litteris</em>.</p>
<blockquote><p>
Eu já cansei de falar isso, mas vamos lá.</p>
<p>Todo esse chororô dos desenvolvedores no que concerne ao IE6 é, no mínimo, “overrated”. Eu me sinto na obrigação de escrever código que funcione (mesmo que de maneira básica) em qualquer navegador. E sabem o que é mais interessante? Pra 99,9% dos projetos, não é nem um pouco difícil dar suporte ao IE6, o problema é que as pessoas desistiram de aprender JavaScript para usar cegamente essa aberração chamada jQuery, que até pouco tempo atrás abusou de user-agent sniffing, e que atualmente trocou pelos piores exemplos de feature testing que já vi na vida, se é que posso chamar aquilo de feature testing, tá mais pra object inference. Aí quando o cara testa no IE6 e vê as coisas dando errado, começa a meter a boca no navegador, mas mal sabe ele que o script que ele confia tão cegamente está fazendo tudo errado.<br />
O meu ponto é que não é tão dificil escrever código cross-browser quando os John Resigs da internet pintam a todo momento.</p>
<p>Quanto ao CSS, sim o IE6 tem um suporte bem fraco a CSS2.1, mas existem os comentários condicionais. É simples fazer uma versão ‘lo-fi’ do design para IE6 utilizando um stylesheet alternativo. E pra quem ainda não sabe, esses fixes de PNG introduzem vários crashes totalmente imprevisíveis. O que você prefere, utilizar PNG 8bit ou CRASHAR o navegador de seus usuários?</p>
<p>Por fim, gostaria de dizer que sim, o IE6 está deixando de ser utilizado pela maioria, mas sempre existem pessoas que não podem atualizar, ou pessoas que utilizam um browser que nem entra nas estatísticas, algum dos muitos ‘flavors’ do IE6 que saíram ao longo dos anos. Acho que dá pra entender como é pointless ficar malhando um navegador, certo? Boas práticas de desenvolvimento contornam todos esses problemas.<br />
O que falta na web são pessoas que realmente saibam o que estão fazendo e não navegadores com melhores capacidades.
</p></blockquote>
<p>E você, o que acha?</p>
]]></content:encoded>
			<wfw:commentRss>http://kiss.souagil.com.br/2009/07/o-ie6-e-apenas-mais-um-navegador/feed/</wfw:commentRss>
		<slash:comments>26</slash:comments>
		</item>
		<item>
		<title>Referências Circulares e Memory Leaks</title>
		<link>http://kiss.souagil.com.br/2009/07/referencias-circulares-e-memory-leaks/</link>
		<comments>http://kiss.souagil.com.br/2009/07/referencias-circulares-e-memory-leaks/#comments</comments>
		<pubDate>Wed, 15 Jul 2009 18:04:42 +0000</pubDate>
		<dc:creator><span property="dc:creator" resource="http://kiss.souagil.com.br/2009/07/referencias-circulares-e-memory-leaks/">Gabriel Gilini</span></dc:creator>
				<category><![CDATA[Programação]]></category>

		<guid isPermaLink="false">http://kiss.souagil.com.br/?p=562</guid>
		<description><![CDATA[Bom, o Lucas já me cobrou e eu nem tinha percebido que não postei a apresentação aqui hehe, mas aí vai! Uma breve apresentação sobre referências circulares no DOM e como elas podem vazar muita memória no IE 6 e anteriores.
No começo também falo sobre resolução de identificadores e como funciona o contexto de execução [...]]]></description>
			<content:encoded><![CDATA[<div class="bzbutton" style="float:left;margin-right:10px;float:left;margin-right:10px;float: right; margin-left: 10px;"><a href="http://buzzvolume.com/compartilhar?url=http%3A%2F%2Fkiss.souagil.com.br%2F2009%2F07%2Freferencias-circulares-e-memory-leaks%2F"><img src="http://buzzvolume.com/button.png?url=http%3A%2F%2Fkiss.souagil.com.br%2F2009%2F07%2Freferencias-circulares-e-memory-leaks%2F" /></a></div><p>Bom, o Lucas já me cobrou e eu nem tinha percebido que não postei a apresentação aqui hehe, mas aí vai! Uma breve apresentação sobre referências circulares no DOM e como elas podem vazar muita memória no IE 6 e anteriores.</p>
<p>No começo também falo sobre resolução de identificadores e como funciona o contexto de execução quando uma função é criada. Isso é necessário pro entendimento a fundo do que causa esses memory leaks, mas o mais importante para todos os desenvolvedores está nos últimos slides, onde mostro o que é uma <em>closure</em>, como as referências circulares más são formadas e como fazer para evitá-las.</p>
<p><iframe src='http://docs.google.com/present/embed?id=dct3gmjj_43fzgbq82s' frameborder='0' width='410' height='342'></iframe></p>
<p>Qualquer dúvida que tiverem, digam nos comentários e ficarei feliz em responder.</p>
<p>Aproveito também para convidar novamente todos que forem de Londrina a participar dessas apresentações, vamos tentar realizá-las a cada uma ou duas semanas.</p>
]]></content:encoded>
			<wfw:commentRss>http://kiss.souagil.com.br/2009/07/referencias-circulares-e-memory-leaks/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
	</channel>
</rss>
