<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/atom10portuguesefull.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><feed xmlns="http://www.w3.org/2005/Atom" xmlns:thr="http://purl.org/syndication/thread/1.0" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" xml:lang="en" xml:base="http://juliogreff.net/wp-atom.php">
	<title type="text">JulioGreff.net</title>
	<subtitle type="html">A mesma web, um novo estilo de desenvolvimento</subtitle>

	<updated>2009-07-06T11:20:24Z</updated>
	<generator uri="http://wordpress.org/" version="2.8">WordPress</generator>

	<link rel="alternate" type="text/html" href="http://juliogreff.net" />
	<id>http://juliogreff.net/feed/atom/</id>
	

			<logo>http://juliogreff.net/wp-uploads/juliogreff-144-60.gif</logo><link rel="self" href="http://feeds.feedburner.com/JulioGreff" type="application/atom+xml" /><feedburner:emailServiceId>JulioGreff</feedburner:emailServiceId><feedburner:feedburnerHostname>http://feedburner.google.com</feedburner:feedburnerHostname><feedburner:feedFlare href="http://add.my.yahoo.com/rss?url=http%3A%2F%2Ffeeds.feedburner.com%2FJulioGreff" src="http://us.i1.yimg.com/us.yimg.com/i/us/my/addtomyyahoo4.gif">Subscribe with My Yahoo!</feedburner:feedFlare><feedburner:feedFlare href="http://www.newsgator.com/ngs/subscriber/subext.aspx?url=http%3A%2F%2Ffeeds.feedburner.com%2FJulioGreff" src="http://www.newsgator.com/images/ngsub1.gif">Subscribe with NewsGator</feedburner:feedFlare><feedburner:feedFlare href="http://feeds.my.aol.com/add.jsp?url=http%3A%2F%2Ffeeds.feedburner.com%2FJulioGreff" src="http://o.aolcdn.com/favorites.my.aol.com/webmaster/ffclient/webroot/locale/en-US/images/myAOLButtonSmall.gif">Subscribe with My AOL</feedburner:feedFlare><feedburner:feedFlare href="http://www.bloglines.com/sub/http://feeds.feedburner.com/JulioGreff" src="http://www.bloglines.com/images/sub_modern11.gif">Subscribe with Bloglines</feedburner:feedFlare><feedburner:feedFlare href="http://www.netvibes.com/subscribe.php?url=http%3A%2F%2Ffeeds.feedburner.com%2FJulioGreff" src="http://www.netvibes.com/img/add2netvibes.gif">Subscribe with Netvibes</feedburner:feedFlare><feedburner:feedFlare href="http://fusion.google.com/add?feedurl=http%3A%2F%2Ffeeds.feedburner.com%2FJulioGreff" src="http://buttons.googlesyndication.com/fusion/add.gif">Subscribe with Google</feedburner:feedFlare><feedburner:feedFlare href="http://www.pageflakes.com/subscribe.aspx?url=http%3A%2F%2Ffeeds.feedburner.com%2FJulioGreff" src="http://www.pageflakes.com/ImageFile.ashx?instanceId=Static_4&amp;fileName=ATP_blu_91x17.gif">Subscribe with Pageflakes</feedburner:feedFlare><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com" /><entry>
		<author>
			<name>Julio Greff</name>
						<uri>http://juliogreff.net</uri>
					</author>
		<title type="html"><![CDATA[O Internet Explorer 6 é culpa nossa!]]></title>
		<link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/JulioGreff/~3/zE4G2mjjND8/" />
		<id>http://juliogreff.net/?p=368</id>
		<updated>2009-07-06T11:20:24Z</updated>
		<published>2009-07-06T11:20:24Z</published>
		<category scheme="http://juliogreff.net" term="Destaques" /><category scheme="http://juliogreff.net" term="Usabilidade/Acessibilidade" /><category scheme="http://juliogreff.net" term="ie6" />		<summary type="html"><![CDATA[Não há nada que um desenvolvedor web odeie mais do que o Internet Explorer 6. Por mais que desejemos, parece que ele não vai embora. Entretanto, e por incrível que pareça, a permanência do Internet Explorer 6 no mercado é culpa nossa!

Logo que o IE7 foi lançado em 2006, parecia algo lógico manter a compatibilidade [...]]]></summary>
		<content type="html" xml:base="http://juliogreff.net/o-internet-explorer-6-e-culpa-nossa/">&lt;p&gt;Não há nada que um desenvolvedor web odeie mais do que o Internet Explorer 6. Por mais que desejemos, parece que ele não vai embora. Entretanto, e por incrível que pareça, a permanência do Internet Explorer 6 no mercado é culpa nossa!&lt;/p&gt;
&lt;p class="center"&gt;&lt;img src="http://juliogreff.net/wp-uploads/ie6.jpg" alt="O Internet Explorer 6 precisa morrer!" title="O Internet Explorer 6 precisa morrer!" /&gt;&lt;/p&gt;
&lt;p&gt;Logo que o IE7 foi lançado em 2006, parecia algo lógico manter a compatibilidade com o IE6 por algum tempo, por mais doloroso que isso fosse. &lt;a href="http://www.wisdump.com/web-experience/people-dont-know-web-browser-ie-firefox-opera-updates/" title="People don’t know what a web browser is" rel="external"&gt;Usuários comuns mal sabem diferenciar entre um browser e o Google&lt;/a&gt;, atualizar para o IE7 nos primeiros dias seria pedir demais. O estranho é que, até hoje, quase &lt;strong&gt;3 anos&lt;/strong&gt; depois, muitos de nós continuam a dar suporte ao browser. Perdemos tempo, paciência e alguns anos de vida corrigindo bugs e assegurando que tudo funcione relativamente bem. Isso significa que nivelamos nosso desenvolvimento por baixo, deixando de usar coisas como PNGs transparentes, muitos seletores CSS e scripts mais eficientes, só para começar a listar alguns. Algo está errado aí, você não acha?&lt;/p&gt;
&lt;p&gt;Mas se o browser é usado pelo usuário, como isso pode ser culpa nossa? Simples: enquanto tudo funcionar, o usuário não fará o menor esforço para atualizar seu software. &lt;strong&gt;O usuário é acomodado&lt;/strong&gt; (pra não dizer ignorante). É preciso tomar atitudes para que ele se atente que seu software está muito ultrapassado, e essa atitude cabe a nós. Por pressão dos clientes e dos nossos superiores, o máximo que conseguimos foram &lt;a href="http://imasters.uol.com.br/crossbrowser/pt-br/" rel="external" title="Atualize seu navegador - Campanha para eliminar browsers antigos do mercado"&gt;barrinhas sutis no topo da página&lt;/a&gt; que, convenhamos, não servem para nada mais do que decoração e alívo de consciência. Será preciso muito mais que isso.&lt;/p&gt;
&lt;p class="center"&gt;&lt;img src="http://juliogreff.net/wp-uploads/ie6-dinosaur.png" alt="Sweet! IE6! After this, maybe you can go chat on AOL, you fucking dinosaur!" title="Sweet! IE6! After this, maybe you can go chat on AOL, you fucking dinosaur!" /&gt;&lt;/p&gt;
&lt;p&gt;Até que as coisas deixem de funcionar, o usuário não fará nada. Fato. Em um mundo ideal, os sites de maior tráfego não dariam mais suporte a browsers legados, e a evolução começaria a acontecer. Como não vivemos em um mundo ideal, precisamos dar o nosso jeito. Educar o cliente, os parentes, os amigos, pode até parecer legal, mas é numa escala muito pequena. Em meus projetos pessoais, coisas como a singela tela acima começarão a aparecer. Como freelancer, o suporte ao IE6 terá seu preço (e as telas de aviso serão um pouco mais educadas). Na agência onde trabalho ainda enfrento alguns problemas, mas na maioria dos projetos o IE6 é completamente ignorado, e simpáticas telas explicando como atualizar o browser estão sendo implementadas.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Não existe mais motivo algum para a existência do IE6&lt;/strong&gt;. Não deveriam mais existir motivos para mantermos a compatibilidade. Eu seria um profissional muito mais feliz se, em 2010, eu nunca mais ouça falar em Internet Explorer 6. Acredito que esse seja o desejo de muitos, e espero que ele consiga ser realizado dessa vez. Vamos fazer nossa parte e acabar com o monstro que criamos?&lt;/p&gt;
&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/JulioGreff?a=zE4G2mjjND8:DtR7mTmw_Yo:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JulioGreff?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/JulioGreff?a=zE4G2mjjND8:DtR7mTmw_Yo:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JulioGreff?i=zE4G2mjjND8:DtR7mTmw_Yo:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/JulioGreff?a=zE4G2mjjND8:DtR7mTmw_Yo:I9og5sOYxJI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JulioGreff?d=I9og5sOYxJI" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/JulioGreff/~4/zE4G2mjjND8" height="1" width="1"/&gt;</content>
		<link rel="replies" type="text/html" href="http://juliogreff.net/o-internet-explorer-6-e-culpa-nossa/#comments" thr:count="16" />
		<link rel="replies" type="application/atom+xml" href="http://juliogreff.net/o-internet-explorer-6-e-culpa-nossa/feed/atom/" thr:count="16" />
		<thr:total>16</thr:total>
	<feedburner:origLink>http://juliogreff.net/o-internet-explorer-6-e-culpa-nossa/</feedburner:origLink></entry>
		<entry>
		<author>
			<name>Julio Greff</name>
						<uri>http://juliogreff.net</uri>
					</author>
		<title type="html"><![CDATA[Novatec &#8211; 20% de desconto!]]></title>
		<link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/JulioGreff/~3/oODplHgNHAU/" />
		<id>http://juliogreff.net/?p=362</id>
		<updated>2009-04-15T12:01:02Z</updated>
		<published>2009-04-15T11:59:52Z</published>
		<category scheme="http://juliogreff.net" term="Diversos" /><category scheme="http://juliogreff.net" term="Usabilidade/Acessibilidade" /><category scheme="http://juliogreff.net" term="desconto" /><category scheme="http://juliogreff.net" term="jabá" /><category scheme="http://juliogreff.net" term="livros" />		<summary type="html"><![CDATA[Recentemente fui contatado pela Editora Novatec para participar do programa de afiliados deles. Tenho certeza que vou demorar um bom tempo pra receber qualquer coisa que seja, mas há um lado bom: eles me ofereceram um código promocional, com 20% de desconto.
O esquema funciona assim: você compra qualquer livro do catálogo da Novatec e, na [...]]]></summary>
		<content type="html" xml:base="http://juliogreff.net/desconto-na-novatec/">&lt;p&gt;Recentemente fui contatado pela &lt;a href="http://novatec.com.br/?idA=149" rel="external" title="Editora Novatec"&gt;Editora Novatec&lt;/a&gt; para participar do programa de afiliados deles. Tenho certeza que vou demorar um bom tempo pra receber qualquer coisa que seja, mas há um lado bom: eles me ofereceram um código promocional, com 20% de desconto.&lt;/p&gt;
&lt;p&gt;O esquema funciona assim: você compra qualquer livro do &lt;a href="http://www.novatec.com.br/catalogo.php?idA=149" title="Editora Novatec - Catálogo" rel="external"&gt;catálogo&lt;/a&gt; da Novatec e, na hora de fechar o pedido, entra com o código promocional &lt;strong&gt;JULIOGREFF&lt;/strong&gt;. Você ganha um bom desconto, e eu uns trocados.&lt;/p&gt;
&lt;p&gt;Caso você queira comprar algum livro, mas ainda não tem idéia do que, aí vão alguns que podem valer a compra:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://www.novatec.com.br/livros/expreg2/?idA=149" rel="external" title="Novatec - Expressões Regulares - Uma Abordagem Divertida"&gt;Expressões Regulares &amp;#8211; Uma Abordagem Divertida (2a Edição)&lt;/a&gt;, do &lt;a href="http://aurelio.wordpress.com" rel="external" title="Aurélio"&gt;Aurélio&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.novatec.com.br/livros/extreme/?idA=149" rel="external" title="Novatec - Extreme Programming"&gt;Extreme Programming&lt;/a&gt;, do Vinícius Manhães Teles&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.novatec.com.br/livros/jquery/?idA=149" rel="external" title="Novatec - jQuery - A Biblioteca do Programador JavaScript"&gt;jQuery &amp;#8211; A Biblioteca do Programador JavaScript&lt;/a&gt;, do &lt;a href="http://maujor.com/" rel="external" title="Maujor"&gt;Maujor&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.novatec.com.br/livros/rubyonrails/?idA=149" rel="external" title="Novatec - Ruby on Rails"&gt;Ruby on Rails&lt;/a&gt;, do Rodrigo Urubatan&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Se você precisava de (mais algum) incentivo pra comprar um livro, esse é um. Tá esperando o que?&lt;/p&gt;
&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/JulioGreff?a=oODplHgNHAU:d_gBVq0Vpy0:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JulioGreff?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/JulioGreff?a=oODplHgNHAU:d_gBVq0Vpy0:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JulioGreff?i=oODplHgNHAU:d_gBVq0Vpy0:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/JulioGreff?a=oODplHgNHAU:d_gBVq0Vpy0:I9og5sOYxJI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JulioGreff?d=I9og5sOYxJI" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/JulioGreff/~4/oODplHgNHAU" height="1" width="1"/&gt;</content>
		<link rel="replies" type="text/html" href="http://juliogreff.net/desconto-na-novatec/#comments" thr:count="2" />
		<link rel="replies" type="application/atom+xml" href="http://juliogreff.net/desconto-na-novatec/feed/atom/" thr:count="2" />
		<thr:total>2</thr:total>
	<feedburner:origLink>http://juliogreff.net/desconto-na-novatec/</feedburner:origLink></entry>
		<entry>
		<author>
			<name>Julio Greff</name>
						<uri>http://juliogreff.net</uri>
					</author>
		<title type="html"><![CDATA[Fórum do Spaghetti*]]></title>
		<link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/JulioGreff/~3/2AE9A3ILPRk/" />
		<id>http://juliogreff.net/?p=360</id>
		<updated>2009-04-30T15:04:03Z</updated>
		<published>2009-03-22T20:46:38Z</published>
		<category scheme="http://juliogreff.net" term="Spaghetti*" />		<summary type="html"><![CDATA[O Spaghetti*, desde o dia de seu lançamento, precisava de um fórum. Muita gente pediu, implorou, alguns até mandaram cartas ameaçando a nós, nossa família e nossos repositórios por aí. Só que o que nem todos sabiam é que estávamos construindo uma solução há um bom tempo, mas por motivos diversos ela demorou muito mais [...]]]></summary>
		<content type="html" xml:base="http://juliogreff.net/forum-do-spaghetti/">&lt;p&gt;O Spaghetti*, desde o dia de seu lançamento, precisava de um fórum. Muita gente pediu, implorou, alguns até mandaram cartas ameaçando a nós, nossa família e nossos repositórios por aí. Só que o que nem todos sabiam é que estávamos construindo uma solução há um bom tempo, mas por motivos diversos ela demorou muito mais do que esperávamos. Mas, como somos pessoas muito legais, resolvemos terminar isso de uma vez, e foi lançado o &lt;a href="http://forum.spaghettiphp.org/"&gt;Fórum do Spaghetti*&lt;/a&gt;, finalmente.&lt;/p&gt;
&lt;p&gt;Como &lt;a href="http://blog.spaghettiphp.org/post/88195325/spaghetti-framework-agora-com-f-rum"&gt;dito no nosso blog&lt;/a&gt;, queríamos algo que compartilhasse da filosofia do framework: simplicidade e descomplicação. Por isso, descartamos &lt;a href="http://www.invisionpower.com/community/board/index.html"&gt;IPB&lt;/a&gt;, &lt;a href="http://www.simplemachines.org/"&gt;SMF&lt;/a&gt;, &lt;a href="http://www.phpbb.com/"&gt;phpBB&lt;/a&gt;, entre outras sugestões, e construímos nosso próprio sistema. Como qualquer um pode notar, ele ainda não está completo, mas aos poucos estamos trabalhando nisso. Queremos um produto de qualidade!&lt;/p&gt;
&lt;p&gt;Esperamos que o fórum ajude a tirar as principais dúvidas do Spaghetti*, e a alavancar o crescimento da comunidade, conectando desenvolvedores e se tornando uma boa fonte de informações para os que estiverem chegando. E você, já se &lt;a href="http://forum.spaghettiphp.org/register"&gt;cadastrou&lt;/a&gt; lá? Esperamos você!&lt;/p&gt;
&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/JulioGreff?a=2AE9A3ILPRk:SUEOZ4ktpnw:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JulioGreff?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/JulioGreff?a=2AE9A3ILPRk:SUEOZ4ktpnw:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JulioGreff?i=2AE9A3ILPRk:SUEOZ4ktpnw:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/JulioGreff?a=2AE9A3ILPRk:SUEOZ4ktpnw:I9og5sOYxJI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JulioGreff?d=I9og5sOYxJI" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/JulioGreff/~4/2AE9A3ILPRk" height="1" width="1"/&gt;</content>
		<link rel="replies" type="text/html" href="http://juliogreff.net/forum-do-spaghetti/#comments" thr:count="2" />
		<link rel="replies" type="application/atom+xml" href="http://juliogreff.net/forum-do-spaghetti/feed/atom/" thr:count="2" />
		<thr:total>2</thr:total>
	<feedburner:origLink>http://juliogreff.net/forum-do-spaghetti/</feedburner:origLink></entry>
		<entry>
		<author>
			<name>Julio Greff</name>
						<uri>http://juliogreff.net</uri>
					</author>
		<title type="html"><![CDATA[Spaghetti* Framework Lançado!]]></title>
		<link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/JulioGreff/~3/V_Bf_ANrLg4/" />
		<id>http://juliogreff.net/?p=351</id>
		<updated>2009-01-03T16:06:16Z</updated>
		<published>2009-01-03T16:06:16Z</published>
		<category scheme="http://juliogreff.net" term="Server-Side" /><category scheme="http://juliogreff.net" term="Spaghetti*" /><category scheme="http://juliogreff.net" term="frameworks" /><category scheme="http://juliogreff.net" term="mvc" />		<summary type="html"><![CDATA[
O ano de 2009 chegou, e com ele trouxemos junto o Spaghetti* Framework 0.1, a primeira versão do nosso framework para PHP. Exatamente na virada do ano, o site do Spaghetti* foi liberado, assim como downloads, documentação, screencasts e tutoriais. E você, já deu uma passada por lá?
Recepção
Antes de tudo, gostaria de agradecer muito a [...]]]></summary>
		<content type="html" xml:base="http://juliogreff.net/spaghetti-framework-lancado/">&lt;p class="center"&gt;&lt;img src="http://juliogreff.net/wp-uploads/spaghettilogo.gif" alt="Spaghetti* Framework" title="Spaghetti* Framework"/&gt;&lt;/p&gt;
&lt;p&gt;O ano de 2009 chegou, e com ele trouxemos junto o &lt;strong&gt;Spaghetti* Framework 0.1&lt;/strong&gt;, a primeira versão do nosso framework para PHP. Exatamente na virada do ano, o &lt;a href="http://spaghettiphp.org" rel="external" title="Spaghetti* Framework"&gt;site do Spaghetti*&lt;/a&gt; foi liberado, assim como &lt;a href="http://spaghettiphp.org/download" rel="external" title="Download do Spaghetti*"&gt;downloads&lt;/a&gt;, &lt;a href="http://spaghettiphp.org/docs" rel="external" title="Documentação do Spaghetti*"&gt;documentação&lt;/a&gt;, &lt;a href="http://spaghettiphp.org/screencasts" rel="external" title="Screencasts do Spaghetti*"&gt;screencasts&lt;/a&gt; e &lt;a href="http://spaghettiphp.org/tutorials" rel="external" title="Tutoriais do Spaghetti*"&gt;tutoriais&lt;/a&gt;. E você, já deu uma passada por lá?&lt;/p&gt;
&lt;h3&gt;Recepção&lt;/h3&gt;
&lt;p&gt;Antes de tudo, gostaria de agradecer muito a recepção que o Spaghetti* já vem tendo. Em apenas 3 dias de vida, já recebemos vários elogios, agradecimentos, twittadas e sugestões (críticas são muito bem aceitas, estamos esperando elas também!). Vários downloads foram feitos, os screencasts estão gastando uma banda considerável, e pelo jeito o pessoal anda gostando. Se você também gostou (ou não gostou), nos deixe saber! É só entrar em &lt;a href="http://spaghettiphp.org/contact" rel="external" title="Entre em contato com a equipe do Spaghetti*"&gt;contato&lt;/a&gt; direto com a gente.&lt;/p&gt;
&lt;h3&gt;Documentação&lt;/h3&gt;
&lt;p&gt;Pelo menos para mim, uma documentação razoável é um dos fatores chave para a adoção de uma nova ferramenta. Por isso, trabalhamos bastante em cima dessa parte, e o resultado é uma documentação que cobre boa parte do que o Spaghetti* faz. Gostamos tanto do resultado que até fizemos um &lt;a href="http://downloads.spaghettiphp.org/books/spaghettiphp.pdf" rel="external" title="Documentação do Spaghetti* em PDF"&gt;PDF para download&lt;/a&gt;. Quem me segue no &lt;a href="http://twitter.com/juliogreff" rel="external" title="JulioGreff no Twitter"&gt;Twitter&lt;/a&gt; deve ter notado o quanto falamos dessa documentação.&lt;/p&gt;
&lt;p&gt;Além da própria documentação, fomos um pouco mais longe, e também já temos alguns screencasts e tutoriais, especialmente para o pessoal que já quer ver alguma coisa funcionando antes de colocar a mão na massa. Já estou devendo um screencast meu, abordando outros aspectos do framework, deve sair em breve. Ou pelo menos assim espero.&lt;/p&gt;
&lt;h3&gt;O que já está por aí&lt;/h3&gt;
&lt;p&gt;O Spaghetti* não foi criado em um laboratório fechado, baseado em hipóteses e teorias. Construímos ele em aplicações já em produção. Já existem vários projetos prontos, funcionando, com versões alfa e beta do Spaghetti*. Além disso, o &lt;a href="http://rafaelmarin.net/" rel="external friend" title="RafaelMarin.net"&gt;Rafael&lt;/a&gt; também criou uma aplicação super legal, uma &lt;a href="http://apps.spaghettiphp.org/tasklist/" rel="external" title="Task List com Spaghetti*"&gt;lista de tarefas&lt;/a&gt;. Toda a aplicação feita em menos de duas horas de trabalho. Divirta-se!&lt;/p&gt;
&lt;h3&gt;E o que vem por aí&lt;/h3&gt;
&lt;p&gt;Não estamos parados, e já estamos trabalhando para a próxima versão, programada para primeiro de maio, se tudo der certo. Fomos amadurecendo ainda mais a idéia, e vimos que muito ainda falta no Spaghetti*. Você deve ter sentido falta de suporte a vários bancos de dados, validação, além de vários outros detalhes no próprio core, helpers e componentes. Você pode nos acompanhar pelo &lt;a href="http://trac.spaghettiphp.org" rel="external" title="Trac - Spaghetti*"&gt;Trac&lt;/a&gt;, ou então pelo nosso &lt;a href="http://twitter.com/spaghettiphp" rel="external" title="Twitter - Spaghetti*"&gt;Twitter&lt;/a&gt;. Sinta-se livre para se cadastrar no Trac, submeter tickets, anexar sugestões de código, e nos ajudar a melhorar nosso framework.&lt;/p&gt;
&lt;p&gt;Espero que o nosso trabalho possa tornar o seu mais fácil e mais divertido. Também espero que você possa usar o Spaghetti* em seus projetos, e adoraria ouvir qualquer coisa sobre a experiência. Assim que alguém já estiver usando o framework em algum projeto internet afora, farei questão de dizer isso aqui ou mesmo no site do Spaghetti*. Até mais!&lt;/p&gt;
&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/JulioGreff?a=V_Bf_ANrLg4:gkkrOjrvxVc:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JulioGreff?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/JulioGreff?a=V_Bf_ANrLg4:gkkrOjrvxVc:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JulioGreff?i=V_Bf_ANrLg4:gkkrOjrvxVc:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/JulioGreff?a=V_Bf_ANrLg4:gkkrOjrvxVc:I9og5sOYxJI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JulioGreff?d=I9og5sOYxJI" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/JulioGreff/~4/V_Bf_ANrLg4" height="1" width="1"/&gt;</content>
		<link rel="replies" type="text/html" href="http://juliogreff.net/spaghetti-framework-lancado/#comments" thr:count="15" />
		<link rel="replies" type="application/atom+xml" href="http://juliogreff.net/spaghetti-framework-lancado/feed/atom/" thr:count="15" />
		<thr:total>15</thr:total>
	<feedburner:origLink>http://juliogreff.net/spaghetti-framework-lancado/</feedburner:origLink></entry>
		<entry>
		<author>
			<name>Julio Greff</name>
						<uri>http://juliogreff.net</uri>
					</author>
		<title type="html"><![CDATA[7 coisas que todo desenvolvedor web deveria saber]]></title>
		<link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/JulioGreff/~3/3NzoFMScc_0/" />
		<id>http://juliogreff.net/?p=307</id>
		<updated>2008-12-06T00:24:04Z</updated>
		<published>2008-11-06T17:22:13Z</published>
		<category scheme="http://juliogreff.net" term="Destaques" /><category scheme="http://juliogreff.net" term="Diversos" /><category scheme="http://juliogreff.net" term="carreira" /><category scheme="http://juliogreff.net" term="JavaScript" /><category scheme="http://juliogreff.net" term="mvc" /><category scheme="http://juliogreff.net" term="regex" /><category scheme="http://juliogreff.net" term="sql" /><category scheme="http://juliogreff.net" term="svn" /><category scheme="http://juliogreff.net" term="tdd" /><category scheme="http://juliogreff.net" term="tecnologias" /><category scheme="http://juliogreff.net" term="web standards" />		<summary type="html"><![CDATA[Desenvolvimento Web é coisa séria, e evoluiu muito em termos de maturidade e complexidade. Para fazer frente ao crescente níveis de exigência, nós, desenvolvedores, devemos estar aprendendo a todo instante. Não importa qual campo você deseja seguir, seja ele no lado cliente ou servidor. Mas acredito que existam coisas que todo desenvolvedor web de verdade [...]]]></summary>
		<content type="html" xml:base="http://juliogreff.net/coisas-que-desenvolvedores-web-deveriam-saber/">&lt;p&gt;Desenvolvimento Web é coisa séria, e evoluiu muito em termos de maturidade e complexidade. Para fazer frente ao crescente níveis de exigência, nós, desenvolvedores, devemos estar aprendendo a todo instante. Não importa qual campo você deseja seguir, seja ele no lado cliente ou servidor. Mas acredito que existam coisas que todo desenvolvedor web de verdade deveria saber.&lt;/p&gt;
&lt;h3&gt;Web Standards&lt;/h3&gt;
&lt;p&gt;Hoje em dia, o mínimo que se espera de um bom desenvolvedor web é o conhecimento dos &lt;strong&gt;Web Standards&lt;/strong&gt;, XHTML e CSS. Eles contribuem para a criação de documentos mais consistentes entre si, mais compatíveis e de manutenção extremamente mais simples. Aliás, o conhecimento dos padrões não é mais um diferencial como era há alguns anos atrás, mas sim um requisito básico. Se hoje sonhamos com a web semântica, os padrões web são o primeiro passo. Com documentos mais semânticos, temos mais acessibilidade e também mais relevância, principalmente no que diz respeito a motores de busca.&lt;/p&gt;
&lt;p&gt;Mesmo depois de muita evangelização, ainda temos desenvolvedores que acabam de descobrir as maravilhas do mundo validado. Também temos aqueles que não fazem a mínima idéia do que isso signifique, ou que não tem o mínimo interesse em aprender. Se você é um desses, hora de rever seus conceitos&amp;#8230;&lt;/p&gt;
&lt;h3&gt;JavaScript&lt;/h3&gt;
&lt;p&gt;O &lt;strong&gt;JavaScript&lt;/strong&gt;, apesar de ter sido muito injustiçado no passado, é uma linguagem onipresente, e de extrema importância. Qualquer usuário tem pelo menos um interpretador instalado em seu computador. Além do mais, ela é a &lt;strong&gt;única linguagem client-side&lt;/strong&gt; disponível, e permanecerá assim por um bom tempo.&lt;/p&gt;
&lt;p&gt;JavaScript vai ser a &lt;a title="5 razões pelas quais JavaScript pode ser a próxima grande linguagem" rel="external" href="http://logbr.reflectivesurface.com/2007/10/30/5-razoes-pelas-quais-javascript-pode-ser-a-proxima-grande-linguagem/"&gt;próxima grande linguagem&lt;/a&gt;. Apesar de ainda estarmos longe de resultados surpreendentes, caminhamos rápido nesse sentido. Muita coisa que antigamente só era possível com Flash hoje é feita com JavaScript.&lt;/p&gt;
&lt;p&gt;Além da própria linguagem, aprenda a usar alguma biblioteca, como &lt;a title="Mootools" rel="external" href="http://mootools.net/"&gt;Mootools&lt;/a&gt;, &lt;a title="jQuery" rel="external" href="http://jquery.com/"&gt;jQuery&lt;/a&gt; ou &lt;a title="Prototype" rel="external" href="http://prototypejs.org/"&gt;Prototype&lt;/a&gt;. Aliado a essas ferramentas, você poderá criar aplicações muito mais interessantes em muito menos tempo. Mas atenção: não aprenda somente a biblioteca, sem aprender antes JavaScript puro. Afinal, &lt;a title="jQuery é bom para designers" rel="external" href="http://www.tableless.com.br/jquery-e-bom-para-designers"&gt;saber só jQuery é coisa de designer&lt;/a&gt;.&lt;/p&gt;
&lt;h3&gt;Expressões Regulares&lt;/h3&gt;
&lt;p&gt;Um simples replace nem sempre é suficiente quando trabalhamos com manipulação de textos. Aí entram as &lt;strong&gt;Expressões Regulares&lt;/strong&gt;, poderosa ferramenta que todos conhecem, alguns usam, e poucos realmente sabem. Seja em PHP, Ruby, Python ou mesmo JavaScript, algum dia você precisará delas.&lt;/p&gt;
&lt;p&gt;Se você leva desenvolvimento a sério, dedique um tempo a aprender expressões regulares (&lt;a title="Expressões Regulares - Uma Abordagem Divertida" rel="external" href="http://www.piazinho.com.br/"&gt;Expressões Regulares &amp;#8211; Uma Abordagem Divertida&lt;/a&gt; é um bom começo!). Além de uma ferramenta de desenvolvimento, elas podem se tornar ferramentas de produtividade. Se você usa IDEs com suporte a busca e substituição com expressões regulares, pode se beneficiar muito disso.&lt;/p&gt;
&lt;h3&gt;Controle de Versão&lt;/h3&gt;
&lt;p&gt;Para alguns, o &lt;strong&gt;Controle de Versão&lt;/strong&gt; mudou completamente, e para a melhor, a forma de trabalhar. Para outros, parece simplesmente inútil, principalmente para quem trabalha sozinho. Seja CVS, SVN, GIT, Mercurial ou qualquer outro, o controle de versão, aliado a ferramentas como o &lt;a title="The Trac Project" rel="external" href="http://trac.edgewall.org/"&gt;Trac&lt;/a&gt;, pode fazer maravilhas. Além de manter controle de suas alterações, podendo sempre voltar atrás caso alguma modificação dê errado ou mesmo quando o cliente não aprova, você pode manter um controle de sua produtividade, analisando quantos &lt;em&gt;commits&lt;/em&gt; foram feitos em quanto tempo, quantos tickets foram fechados, quantos ainda permanecem pendentes.&lt;/p&gt;
&lt;p&gt;Desde que passei a utilizar SVN em alguns projetos, como no próprio Spaghetti, notei uma grande melhora no controle sobre o código. Nunca mais pensei duas vezes em apagar grandes blocos de código pensando que eles poderiam ser úteis outra vez (e geralmente nunca seriam realmente necessários). Uma excelente forma de analisar seu progresso, uma excelente forma de backup, uma excelente forma de manter seu código sincronizado. Esqueça aquele colega que tem uma versão ultrapassada de seu código e sobrescreve partes importantes. Quando passei a utilizar ferramentas de tracking, bugs não eram esquecidos, idéias estavam sempre à mão. Digo, como muitos por aí: isso &lt;strong&gt;realmente&lt;/strong&gt; mudou a minha maneira de desenvolver.&lt;/p&gt;
&lt;h3&gt;MVC&lt;/h3&gt;
&lt;p&gt;O &lt;strong&gt;Model-View-Controller&lt;/strong&gt;, ou &lt;strong&gt;MVC&lt;/strong&gt; para os íntimos, nunca fez tanto sentido quanto na web. Depois do &lt;a title="Ruby on Rails" rel="external" href="http://rubyonrails.org/"&gt;Ruby on Rails&lt;/a&gt;, virou quase um requisito básico para o desenvolvimento de bons projetos. E desde então, &lt;a title="Desenvolver com Rails não tem graça" href="http://juliogreff.net/desenvolver-com-rails-nao-tem-graca/"&gt;desenvolver não tem mais graça&lt;/a&gt;. Além disso, a separação de aplicações nessas 3 camadas torna o desenvolvimento e manutenção muito mais simples.&lt;/p&gt;
&lt;p&gt;Se você não quer ficar para trás, &lt;strong&gt;adote seu framework&lt;/strong&gt;. O &lt;em&gt;pattern&lt;/em&gt; é usado na maioria deles, e de brinde você ganha muita produtividade. &lt;a title="Frameworks: Por um PHP Menos Ruim" href="http://juliogreff.net/frameworks-por-um-php-menos-ruim/"&gt;Frameworks tornam as linguagens menos ruins&lt;/a&gt;. Se você usa PHP, eu sugeriria o &lt;a title="Spaghetti* Framework" rel="external" href="http://trac.spaghettiphp.org/"&gt;Spaghetti&lt;/a&gt;. Se você usa Ruby ou Python, e é seu primeiro contato com frameworks, siga a tendência e adote Rails ou &lt;a title="Django" rel="external" href="http://djangoproject.com/"&gt;Django&lt;/a&gt;. Se você é corajoso, faça como fizemos na minha agência: crie seu próprio framework. Usando algum framework ou não, o que importa é pegar o espírito da coisa.&lt;/p&gt;
&lt;h3&gt;SQL&lt;/h3&gt;
&lt;p&gt;Mesmo com toda a flexibilidade e abstração da camada de dados que os frameworks MVC nos oferecem, &lt;strong&gt;SQL&lt;/strong&gt; ainda é necessário. Apesar de você não vê-lo, ele ainda está lá. Consultas complexas ou mais específicas nem sempre são disponibilizadas pelos frameworks, e sempre pode haver a necessidade de uma incursão via terminal, para tarefas de manutenção, por exemplo.&lt;/p&gt;
&lt;p&gt;Talvez você não acredite no retorno que isso pode trazer. Até ter nas mãos uma aplicação gigante e extremamente dependente de banco de dados, onde as consultas devem ser otimizadas ao máximo para minimizar a carga do servidor. Você não quer sua aplicação baleiando por você não saber SQL, quer?&lt;/p&gt;
&lt;h3&gt;Desenvolvimento Guiado a Testes&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Test Driven Development&lt;/strong&gt;, ou simplesmente &lt;strong&gt;TDD&lt;/strong&gt;, é, na minha opinião, a melhor maneira de manter seu código livre de bugs. Fazer o desenvolvimento guiado a testes significa desenvolver o teste antes da funcionalidade. A cada iteração, os testes são rodados novamente, de maneira automática, e você sempre saberá se alguma modificação quebrou o restante do código.&lt;/p&gt;
&lt;p&gt;Sem testes automatizados, aplicações nunca são testadas como deveriam. São tarefas repetitivas e cansativas. Com o auxílio de ferramentas de testes, eles podem ser rodados várias vezes, certificando de que tudo está correndo bem. Se um novo bug é descoberto, um novo teste é criado, as modificações são feitas, e você terá a certeza de que o problema foi resolvido para todo o sempre, sem quebrar o restante da aplicação. E convenhamos, não há nada pior do que bugs&amp;#8230;&lt;/p&gt;
&lt;p&gt;Não é obrigatório que um desenvolvedor saiba tudo isso, embora eu considere extremamente importante, mesmo alguns não sendo necessários todos os dias, todos podem melhorar nossa maneira de trabalhar. Ainda não domino todos os itens citados, mas tenho um bom conhecimento em todos eles. O que importa mesmo é buscar isso, e &lt;strong&gt;sempre continuar aprendendo&lt;/strong&gt;. Mexa-se! Você não quer ficar para trás, quer?&lt;/p&gt;
&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/JulioGreff?a=3NzoFMScc_0:QlnYE9JGTHY:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JulioGreff?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/JulioGreff?a=3NzoFMScc_0:QlnYE9JGTHY:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JulioGreff?i=3NzoFMScc_0:QlnYE9JGTHY:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/JulioGreff?a=3NzoFMScc_0:QlnYE9JGTHY:I9og5sOYxJI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JulioGreff?d=I9og5sOYxJI" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/JulioGreff/~4/3NzoFMScc_0" height="1" width="1"/&gt;</content>
		<link rel="replies" type="text/html" href="http://juliogreff.net/coisas-que-desenvolvedores-web-deveriam-saber/#comments" thr:count="10" />
		<link rel="replies" type="application/atom+xml" href="http://juliogreff.net/coisas-que-desenvolvedores-web-deveriam-saber/feed/atom/" thr:count="10" />
		<thr:total>10</thr:total>
	<feedburner:origLink>http://juliogreff.net/coisas-que-desenvolvedores-web-deveriam-saber/</feedburner:origLink></entry>
		<entry>
		<author>
			<name>Julio Greff</name>
						<uri>http://juliogreff.net</uri>
					</author>
		<title type="html"><![CDATA[Hello, Good to be Back!]]></title>
		<link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/JulioGreff/~3/roDoY7Uu2ew/" />
		<id>http://juliogreff.net/?p=299</id>
		<updated>2008-11-06T17:22:37Z</updated>
		<published>2008-11-01T14:35:37Z</published>
		<category scheme="http://juliogreff.net" term="Diversos" />		<summary type="html"><![CDATA[Dois meses, e nada de postagens. Sou um blogueiro um tanto relapso, admito. Cuidar do trabalho, escola, vestibular e ainda manter a sanidade mental não é uma tarefa fácil, e certas coisas acabam ficando para trás por um tempo. O blog, infelizmente, foi uma delas. Felizmente, trago algumas novidades.
O blog está em novo domínio: JulioGreff.net. [...]]]></summary>
		<content type="html" xml:base="http://juliogreff.net/hello-good-to-be-back/">&lt;p&gt;Dois meses, e nada de postagens. Sou um blogueiro um tanto relapso, admito. Cuidar do trabalho, escola, vestibular e ainda manter a sanidade mental não é uma tarefa fácil, e certas coisas acabam ficando para trás por um tempo. O blog, infelizmente, foi uma delas. Felizmente, trago algumas novidades.&lt;/p&gt;
&lt;p&gt;O blog está em novo domínio: &lt;a href="http://juliogreff.net/" title="JulioGreff.net"&gt;JulioGreff.net&lt;/a&gt;. Se você está lendo esse post pelo feed, tudo já está transferido, graças ao &lt;a href="http://feedburner.com/" title="FeedBurner" rel="external"&gt;FeedBurner&lt;/a&gt;. O novo domínio agora é hospedado na &lt;a href="http://dreamhost.com/" title="DreamHost" rel="external"&gt;DreamHost&lt;/a&gt;. Ou seja: adeus problemas com banda e disco excedentes. Isso significa que mais novidades estão por vir. Sabem que eu adoro screencasts? Aproveitando a mudança, também fiz algumas pequenas modificações no tema do WordPress, agora um pouco mais limpo do que antes.&lt;/p&gt;
&lt;p&gt;Nesse tempo que fiquei fora, dediquei bastante tempo a outro projeto com o &lt;a href="http://rafaelmarin.net/" title="Rafael Marin" rel="external friend"&gt;Rafael Marin&lt;/a&gt;, na &lt;a href="http://codebrasil.com.br/" title="CodeBrasil" rel="external"&gt;CodeBrasil&lt;/a&gt;: o &lt;a href="http://trac.spaghettiphp.org/" title="Spaghetti Framework" rel="external"&gt;Spaghetti&lt;/a&gt;. O Spaghetti é um framework MVC para pequenas e médias aplicações, ainda está em desenvolvimento e beirando o lançamento, programado para no máximo 30 de dezembro. Esse projeto diminuiu um pouco &lt;a href="http://juliogreff.net/frameworks-por-um-php-menos-ruim/" title="Frameworks - Por um PHP Menos Ruim"&gt;meus desentendimentos com o PHP&lt;/a&gt;, e estou tomando mais um pouco de gosto pela linguagem. Caso deseje, você pode fazer o checkout do Spaghetti através do &lt;a href="http://spaghettiphp.org/subversion/trunk" title="Spaghetti Framework - Repositório SVN" rel="external"&gt;SVN&lt;/a&gt;. Sinta-se a vontade para testá-lo, submeter bugs e sugestões, e nos ajudar no desenvolvimento.&lt;/p&gt;
&lt;p&gt;Também estou participando do &lt;a href="http://www.dailyblogtips.com/blogging-idol-2-show-time/" title="Blogging Idol 2 - Show Time" rel="external"&gt;Blogging Idol 2&lt;/a&gt;, do &lt;a href="http://dailyblogtips.com/" rel="external" title="Daily Blog Tips"&gt;Daily Blog Tips&lt;/a&gt;. Isso significa que estarei mais dedicado ao blog pelo menos até 30 de novembro. Tenho metas grandes (embora ganhar não seja uma delas), e acredito que será proveitoso tanto para mim quanto para você, leitor. Se você ainda não assina o feed principal e gostaria de me ajudar, &lt;a href="http://feeds.feedburner.com/JulioGreff" title="JulioGreff.net - Feed Principal" rel="external"&gt;assine agora&lt;/a&gt;! Se você já é assinante, convide seus conhecidos desenvolvedores a conhecerem o blog. Eu agradeço, e você também ganha com conteúdo de qualidade.&lt;/p&gt;
&lt;p&gt;Agradeço a todos que me contataram nesse afastamento, com dúvidas, agradecimentos e pedidos de postagens, e que aguardaram minha resposta (sim, demorou&amp;#8230;). Também agradeço a todos que assinam o feed ou lêem o blog, nunca imaginei que chegaria a quase 300 pessoas. Meu sincero &lt;strong&gt;muito obrigado&lt;/strong&gt;. Espero poder satisfazer as expectativas, e postar mais regularmente. Até breve, pessoal!&lt;/p&gt;
&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/JulioGreff?a=roDoY7Uu2ew:sHBtgsIlY3c:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JulioGreff?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/JulioGreff?a=roDoY7Uu2ew:sHBtgsIlY3c:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JulioGreff?i=roDoY7Uu2ew:sHBtgsIlY3c:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/JulioGreff?a=roDoY7Uu2ew:sHBtgsIlY3c:I9og5sOYxJI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JulioGreff?d=I9og5sOYxJI" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/JulioGreff/~4/roDoY7Uu2ew" height="1" width="1"/&gt;</content>
		<link rel="replies" type="text/html" href="http://juliogreff.net/hello-good-to-be-back/#comments" thr:count="3" />
		<link rel="replies" type="application/atom+xml" href="http://juliogreff.net/hello-good-to-be-back/feed/atom/" thr:count="3" />
		<thr:total>3</thr:total>
	<feedburner:origLink>http://juliogreff.net/hello-good-to-be-back/</feedburner:origLink></entry>
		<entry>
		<author>
			<name>Julio Greff</name>
						<uri>http://juliogreff.net</uri>
					</author>
		<title type="html"><![CDATA[Interfaces de Usuário com JavaScript]]></title>
		<link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/JulioGreff/~3/7b4vGXJQQMg/" />
		<id>http://juliogreff.blog.br/?p=185</id>
		<updated>2008-11-24T20:14:32Z</updated>
		<published>2008-08-25T11:00:42Z</published>
		<category scheme="http://juliogreff.net" term="Destaques" /><category scheme="http://juliogreff.net" term="JavaScript" /><category scheme="http://juliogreff.net" term="bibliotecas" /><category scheme="http://juliogreff.net" term="dojo" /><category scheme="http://juliogreff.net" term="ext" /><category scheme="http://juliogreff.net" term="jquery" /><category scheme="http://juliogreff.net" term="mootools" /><category scheme="http://juliogreff.net" term="prototype" /><category scheme="http://juliogreff.net" term="ui" /><category scheme="http://juliogreff.net" term="yui" />		<summary type="html"><![CDATA[A web vai se tornando uma plataforma cada vez mais próximas das aplicações desktop que temos. Temos várias aplicações por aí para provar isso. Mas aos olhos do usuário, uma aplicação só com XHTML+CSS às vezes pode não ser tão interessante. De uns tempos pra cá, entretanto, várias bibliotecas surgiram para acabar com esse problema, [...]]]></summary>
		<content type="html" xml:base="http://juliogreff.net/interfaces-de-usuario-com-javascript/">&lt;p&gt;A web vai se tornando uma plataforma cada vez mais próximas das aplicações desktop que temos. Temos várias aplicações por aí para provar isso. Mas aos olhos do usuário, uma aplicação só com XHTML+CSS às vezes pode não ser tão interessante. De uns tempos pra cá, entretanto, várias bibliotecas surgiram para acabar com esse problema, e trazer interfaces de usuários realmente interessantes. Preparado para algo fora de série?&lt;/p&gt;
&lt;p&gt;O número dessas bibliotecas é incontável, algumas mais simples, outras mais complexas, outras mais famosas, algumas nem tanto. Fiz uma breve pesquisa, e trouxe as mais conhecidas (e algumas nem tanto) para quem ainda não teve a oportunidade de conhecer. Só para lembrar, hoje não vou tratar sobre o uso dessas bibliotecas, isso fica pra uma próxima oportunidade, já que a idéia é um pouco extensa.&lt;/p&gt;
&lt;h3&gt;ExtJS&lt;/h3&gt;
&lt;p&gt;A &lt;a href="http://extjs.com/" title="ExtJS" rel="external"&gt;ExtJS&lt;/a&gt; é de longe a biblioteca mais conhecida. Provavelmente você já deve ter pelo menos ouvido falar sobre, a menos que você viva na Sibéria. Também acredito que deva ser uma das mais antigas, e por isso uma das mais completas também.&lt;/p&gt;
&lt;p class="center"&gt;&lt;img src="http://juliogreff.net/wp-uploads/extjs.png" alt="ExtJS" title="ExtJS" /&gt;&lt;/p&gt;
&lt;p&gt;Seu &lt;a href="http://extjs.com/deploy/dev/examples/samples.html" title="ExtJS - Demos and Samples" rel="external"&gt;visual é espetacular&lt;/a&gt;, mas tem seu preço: ela é muito lenta. Todos os efeitos de transparência, os drag &amp;#8216;n&amp;#8217; drops, tudo isso exige muito do pobre navegador. Pense bem antes de escolher onde usá-la, faça somente se for necessário, nunca para simples &amp;#8220;enfeites&amp;#8221;. Lenta, mas uma obra de arte.&lt;/p&gt;
&lt;p&gt;E os desenvolvedores &lt;abbr title="Adobe Integrated Runtime"&gt;AIR&lt;/abbr&gt; não precisam ficar tristes: há até um &lt;a href="http://extjs.com/blog/2008/02/24/tasks2/" title="Simple Tasks - AIR Application" rel="external"&gt;demo&lt;/a&gt; do bichinho em funcionamento. Ainda não tive muito tempo com o AIR, mas acredito que a questão da velocidade não seja tão crítica quanto em um navegador, quem puder falar sobre, agradeço.&lt;/p&gt;
&lt;h3&gt;Yahoo User Interface&lt;/h3&gt;
&lt;p class="left"&gt;&lt;img src="http://juliogreff.net/wp-uploads/yui.png" alt="Yahoo User Interface" title="Yahoo User Interface" /&gt;&lt;/p&gt;
&lt;p&gt;A &lt;a href="http://developer.yahoo.com/yui/" title="Yahoo User Interface" rel="external"&gt;Yahoo User Interface&lt;/a&gt;, ou YUI, deve ser a primeira user interface a se popularizar. Foi a base do nascimento da ExtJS. Tem lá seus defeitos, como o prefixo YUI para todos os métodos, mas tem um poder imenso. Me parece ser bem mais leve que a Ext, e usa gráficos bem mais simples também.&lt;/p&gt;
&lt;p&gt;A documentação é um dos pontos fortes. Mantida pela comunidade de desenvolvedores do Yahoo, você nunca estará sozinho. Apesar disso, achei o site um pouco confuso para encontrar alguma coisa, principalmente os demos. Mas o material está lá, e há muito&amp;#8230;&lt;/p&gt;
&lt;h3&gt;MochaUI&lt;/h3&gt;
&lt;p&gt;Ainda beta, a &lt;a href="http://mochaui.com/" rel="external" title="MochaUI"&gt;MochaUI&lt;/a&gt; seria a minha preferida. Adivinhem por quê? Sim, baseada na &lt;a href="http://mootools.net/" title="Mootools Library" rel="external"&gt;Mootools&lt;/a&gt;&amp;#8230; A &lt;a href="http://mochaui.com/demo/" title="MochaUI - Demo" rel="external"&gt;demonstração&lt;/a&gt; realmente me deixou impressionado, talvez tenha sido o relógio.&lt;/p&gt;
&lt;p class="center"&gt;&lt;img src="http://juliogreff.net/wp-uploads/mochaui.png" title="MochaUI" alt="MochaUI" /&gt;&lt;/p&gt;
&lt;p&gt;Aparenta ser bem leve, tanto que na demonstração você pode modificar propriedades das janelas sem travar o navegador. Usa gráficos simples, mas não menos atraentes. De longe, seria a primeira que eu escolheria para trabalhar (sim, opinião extremamente parcial). Mal posso esperar pela versão 1.0!&lt;/p&gt;
&lt;h3&gt;Dijit&lt;/h3&gt;
&lt;p&gt;Falando em &lt;a href="http://dojotoolkit.org/" title="Dojo Toolkit" rel="external"&gt;Dojo&lt;/a&gt;, nem é preciso dizer muito. O framework mais abrangente que conheço também conta com sua interface de usuário, o &lt;a href="http://dojotoolkit.org/projects/dijit" title="Dijit" rel="external"&gt;Dijit&lt;/a&gt;. Não consegui encontrar demonstrações no site, mas as imagens mostram algo realmente promissor.&lt;/p&gt;
&lt;p class="center"&gt;&lt;img src="http://juliogreff.net/wp-uploads/dijit.gif" alt="Dijit" title="Dijit" /&gt;&lt;/p&gt;
&lt;p&gt;Lendo a descrição do projeto, você verá que o Dijit não é &lt;em&gt;apenas&lt;/em&gt; uma simples interface de usuário. É extremamente customizável, extensível, acessível e localizável. O que isso significa? Bem, dê asas à imaginação, o céu é o limite&amp;#8230;&lt;/p&gt;
&lt;h3&gt;jQuery UI&lt;/h3&gt;
&lt;p&gt;O &lt;a href="http://ui.jquery.com/" title="jQuery UI" rel="external"&gt;jQuery UI&lt;/a&gt;, bem jovem ainda, também é espetacular. Baseado na brilhante &lt;a href="http://jquery.com/" rel="external" title="jQuery"&gt;jQuery&lt;/a&gt;, tem tudo para deixar qualquer um de boca aberta. A &lt;a href="http://ui.jquery.com/repository/real-world/effects/" title="jQuery UI Effects" rel="external"&gt;demonstração de efeitos&lt;/a&gt;, por exemplo, me impressionou muito. A própria tela de demonstrações é uma obra de arte.&lt;/p&gt;
&lt;p class="center"&gt;&lt;img src="http://juliogreff.net/wp-uploads/jqueryui.png" title="jQuery UI" alt="jQuery UI" /&gt;&lt;/p&gt;
&lt;p&gt;Apesar de baseada no jQuery, achei a biblioteca ligeiramente lenta. Talvez tenha sido impressão, mas não esperava isso de jQuery. Entretanto, pela sua idade, é muito madura, muito poderosa. Se jQuery não havia &lt;a href="http://juliogreff.net/jquery-segundas-impressões/" title="jQuery - Segundas Impressões"&gt;me chamado atenção&lt;/a&gt; ainda&amp;#8230;&lt;/p&gt;
&lt;h3&gt;Prototype UI&lt;/h3&gt;
&lt;p class="center"&gt;&lt;img src="http://juliogreff.net/wp-uploads/prototypeui.png" title="Prototype UI" alt="Prototype UI" /&gt;&lt;/p&gt;
&lt;p&gt;Até então desconhecido pra mim, o release candidate &lt;a href="http://www.prototype-ui.com/" title="Prototype UI" rel="external"&gt;Prototype UI&lt;/a&gt; não conseguiu me chamar a atenção. Não por ser baseado em &lt;a href="http://www.prototypejs.org/" title="Prototype" rel="external"&gt;Prototype&lt;/a&gt; e &lt;a href="http://script.aculo.us/" title="Scriptaculous" rel="external"&gt;Scriptaculous&lt;/a&gt; (o que já considero um ponto contra), nem por usar um tema do Mac, mas por parecer muito prematura. Os demos apresentados são bonitinhos, mas um tanto &amp;#8220;crus&amp;#8221;. Prefiro não dar minha opinião, vai que o negócio vire um Ext-killer?&lt;/p&gt;
&lt;h3&gt;SproutCore&lt;/h3&gt;
&lt;p class="center"&gt;&lt;img src="http://juliogreff.net/wp-uploads/sproutcore.png" title="SproutCore" alt="SproutCore" /&gt;&lt;/p&gt;
&lt;p&gt;O &lt;a href="http://www.sproutcore.com/" title="SproutCore" rel="external"&gt;SproutCore&lt;/a&gt;, iniciativa da Apple, tem uma proposta um tanto &amp;#8220;utópica&amp;#8221;, pelo que entendi é trazer o Cocoa para a web. As demonstrações são interessantes, mas o pobre navegador sofreu as conseqüências. Esse negócio consegue ser mais pesado que a própria Ext! Além disso, vi mais opiniões &lt;a href="http://www.pixelbox.net/2008/06/17/sprout-core/" title="SproutCore (Pixelbox)" rel="external"&gt;negativas&lt;/a&gt; do que positivas&amp;#8230;&lt;/p&gt;
&lt;h3&gt;UIZE&lt;/h3&gt;
&lt;p class="center"&gt;&lt;img src="http://juliogreff.net/wp-uploads/uize.png" title="UIZE" alt="UIZE" /&gt;&lt;/p&gt;
&lt;p&gt;O &lt;a href="http://www.uize.com/" title="UIZE" rel="external"&gt;UIZE&lt;/a&gt; (pronuncia-se &amp;#8220;you eyes&amp;#8221;) é outro que nunca havia sido apresentado a mim. Concordo com o pessoal do &lt;a href="http://ajaxian.com/archives/uize-javascript-ui-toolkit" title="UIZE: JavaScript UI Toolkit" rel="external"&gt;Ajaxian&lt;/a&gt;: são os efeitos mais legais que já vi. Apesar disso, a biblioteca ainda necessita muito mais trabalho, já que tem poucos recursos (poucos, mas legais).&lt;/p&gt;
&lt;p&gt;Não tive a oportunidade de trabalhar por algum tempo com nenhuma dessas bibliotecas, e nem falar muito sobre as quais tenho mais experiência. Somente uma breve opinião sobre cada uma. Caso tenha esquecido de alguma, por favor, cite-a nos comentários, terei prazer em falar um pouquinho. Só uma precaução: cuidado onde você irá usar tudo isso&amp;#8230; Existem aplicações e aplicações. Até mais!&lt;/p&gt;
&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/JulioGreff?a=7b4vGXJQQMg:u3QpWinjNmI:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JulioGreff?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/JulioGreff?a=7b4vGXJQQMg:u3QpWinjNmI:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JulioGreff?i=7b4vGXJQQMg:u3QpWinjNmI:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/JulioGreff?a=7b4vGXJQQMg:u3QpWinjNmI:I9og5sOYxJI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JulioGreff?d=I9og5sOYxJI" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/JulioGreff/~4/7b4vGXJQQMg" height="1" width="1"/&gt;</content>
		<link rel="replies" type="text/html" href="http://juliogreff.net/interfaces-de-usuario-com-javascript/#comments" thr:count="4" />
		<link rel="replies" type="application/atom+xml" href="http://juliogreff.net/interfaces-de-usuario-com-javascript/feed/atom/" thr:count="4" />
		<thr:total>4</thr:total>
	<feedburner:origLink>http://juliogreff.net/interfaces-de-usuario-com-javascript/</feedburner:origLink></entry>
		<entry>
		<author>
			<name>Julio Greff</name>
						<uri>http://juliogreff.net</uri>
					</author>
		<title type="html"><![CDATA[Mootools vs. jQuery]]></title>
		<link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/JulioGreff/~3/GfJ3QUcl8uQ/" />
		<id>http://juliogreff.blog.br/?p=176</id>
		<updated>2008-10-28T19:30:12Z</updated>
		<published>2008-08-18T11:00:27Z</published>
		<category scheme="http://juliogreff.net" term="JavaScript" /><category scheme="http://juliogreff.net" term="bibliotecas" /><category scheme="http://juliogreff.net" term="jquery" /><category scheme="http://juliogreff.net" term="mootools" />		<summary type="html"><![CDATA[A batalha final: Mootools versus jQuery. Quem será o vencedor dessa sangrenta batalha? Tudo bem, sem violência então. Como mais novo usuário de jQuery e ainda usuário de Mootools, tive a idéia de fazer apenas uma breve comparação com as duas bibliotecas, nada de luta&#8230;
Antes de tudo, nem pensem os usuários de Mootools que sou [...]]]></summary>
		<content type="html" xml:base="http://juliogreff.net/mootools-vs-jquery/">&lt;p&gt;A batalha final: &lt;a href="http://mootools.net/" title="Mootools Library" rel="external"&gt;Mootools&lt;/a&gt; versus &lt;a href="http://jquery.com/" title="jQuery - Write Less, Do More" rel="external"&gt;jQuery&lt;/a&gt;. Quem será o vencedor dessa sangrenta batalha? Tudo bem, sem violência então. Como &lt;a href="http://juliogreff.net/jquery-segundas-impressoes/" title="jQuery - Segundas Impressões"&gt;mais novo usuário de jQuery&lt;/a&gt; e ainda usuário de Mootools, tive a idéia de fazer apenas uma breve comparação com as duas bibliotecas, nada de luta&amp;#8230;&lt;/p&gt;
&lt;p&gt;Antes de tudo, nem pensem os usuários de Mootools que sou um traidor, um subversor, nem os usuários de jQuery achem que sou um &lt;a href="http://jquerybrasil.com/" title="Comunidade jQuery Brasil" rel="external"&gt;&amp;#8220;fiel convertido&amp;#8221;&lt;/a&gt; e abandonarei a Mootools para todo o sempre. Ambos dois lados de acordo e em paz, vamos à comparação.&lt;/p&gt;
&lt;h3&gt;Propósito&lt;/h3&gt;
&lt;p&gt;A primeira coisa que me fez dar uma segunda chance ao jQuery foi minha maturidade adquirida de uns tempos pra cá. Pude perceber que jQuery e Mootools têm propósitos diferentes. Pode-se usá-las para a mesma coisa, mas mais código terá que ser escrito.&lt;/p&gt;
&lt;p&gt;A Mootools é uma biblioteca bem mais complexa e mais completa. Seu escopo é bem maior, e permite muito mais coisas. Algumas dessas coisas são a criação de classes, vários métodos para os tipos nativos da linguagem (funções para Strings, Números, Arrays), JSON, cookies, e tudo o mais que você puder imaginar através de plugins. É bem mais voltada a &amp;#8220;programação de verdade&amp;#8221;, ou seja, trabalhar mais com a linguagem e processamento do que seu resultado no documento.&lt;/p&gt;
&lt;p&gt;A jQuery tem um escopo muito mais fechado: &lt;abbr title="Document Object Model"&gt;DOM&lt;/abbr&gt;. Criação e edição de objetos, seletores muito poderosos e simples, baseados em CSS e XPath e manipulação de eventos. Tudo isso integrado dentro de uma mesma função. Indo um pouco mais além, a biblioteca também inclui a criação de efeitos básicos e requisições Ajax. Ainda dentro do cifrão bombado.&lt;/p&gt;
&lt;h3&gt;DOM&lt;/h3&gt;
&lt;p&gt;Tanto Mootools quanto jQuery lutam nesse campo: DOM. Ambas também possuem a mesma função $, que vem me confundindo muito quando trabalho com uma ou outra biblioteca. Na Mootools, somente IDs. no jQuery, qualquer seletor CSS3 ou XPath. Não que a Mootools não tenha todos os seletores que jQuery, mas em uma função diferente: $$. Particularmente gostei separação, mas a versatilidade da jQuery absolutamente não me incomoda. Nessa parte, pra mim é um empate.&lt;/p&gt;
&lt;p&gt;Ainda não tive a oportunidade de inspecionar o código da jQuery, mas posso dizer que o John Resig é um gênio: além de recuperar elementos do documento, o $ ainda os cria. E não através da criação manual de elementos e nós de texto. Você digita o HTML, e a função os cria sozinha. Adeus innerHTML&amp;#8230; Na Mootools? Bem, acho melhor pular essa parte, vocês já devem ter percebido&amp;#8230; jQuery na cabeça.&lt;/p&gt;
&lt;p&gt;Quanto às outras funções, como definição e recuperação de atributos, ambas bibliotecas não deixam a desejar. A jQuery, entretanto, tem o diferencial de usar a mesma função para definição de uma ou várias propriedades, além de recuperá-las. Na Mootools, temos o &lt;code&gt;get&lt;/code&gt; e &lt;code&gt;set&lt;/code&gt;. Pra mim não faz diferença alguma em termos de desenvolvimento, ambas são intuitivas. Empate novamente.&lt;/p&gt;
&lt;p&gt;No final das contas, jQuery é excepcional em tarefas de DOM, e supera, e muito, a Mootools, até por ser seu &amp;#8220;habitat natural&amp;#8221;.&lt;/p&gt;
&lt;h3&gt;Ajax&lt;/h3&gt;
&lt;p&gt;Ajax é outra frente de batalha em que as duas bibliotecas se enfrentam. jQuery conta com métodos extremamente simples para a tarefa, muito bons para requisições simples em aplicações pouco exigentes em relação a requisições assíncronas. Já a Mootools conta com uma classe bem mais trabalhada, mais extensa e mais flexível, principalmente para eventos.&lt;/p&gt;
&lt;p&gt;Mesmo trabalhando com, as duas bibliotecas não o fazem para o mesmo propósito na minha opinião. A jQuery me parece melhor para requisições simples: enviar a requisição e fazer alguma coisa com a resposta. Já a Mootools trabalha com os aspectos mais &amp;#8220;sórdidos&amp;#8221;, como as mudanças de estado, headers, enfim. Até prefiro não falar muito sobre jQuery aqui pois não tive muito tempo com Ajax, posso ainda não ter visto algumas funcionalidades.&lt;/p&gt;
&lt;h3&gt;Efeitos&lt;/h3&gt;
&lt;p&gt;Existe algo que deixe uma aplicação mais interessante do que coisas se mexendo? Eu acho que não, mas esse não é o caso. Na jQuery, temos poucos efeitos built-in, mas me parece ser bem extensível. Já a Mootools tem uma gama enorme de transições, e podemos escolher qualquer propriedade do CSS para animar, e o melhor: ainda contamos com uma maneira muito fácil de criar novas transições. Mas a Mootools, principalmente nessa nova versão, peca em manter esses efeitos fáceis de aplicar. No jQuery, só um &lt;code&gt;fadeIn&lt;/code&gt; ou &lt;code&gt;fadeOut&lt;/code&gt; e presto, temos um efeito. No entanto, por mais chato que seja, ainda fico com a Mootools&amp;#8230;&lt;/p&gt;
&lt;h3&gt;Plugins&lt;/h3&gt;
&lt;p&gt;Quando só a biblioteca sozinha não dá conta, hora de chamar os plugins. Ambas bibliotecas são extremamente extensíveis, cada uma a sua maneira. Na Mootools através da extensão das classes, no jQuery através de um &amp;#8220;mecanismo&amp;#8221; muito interessante, que &amp;#8220;gruda&amp;#8221; suas funções na função jQuery.&lt;/p&gt;
&lt;p&gt;Mesmo sendo um fã da &lt;a href="http://juliogreff.net/javascript-orientado-a-objetos-parte-1/" title="JavaScript Orientado a Objetos - Parte 1"&gt;programação orientada a objetos&lt;/a&gt; e da maneira como a Mootools o usa, gostei muito mais da maneira como o jQuery faz a inclusão de plugins. Eles realmente passam a fazer parte da biblioteca. Vitória do jQuery, embora no final das contas não faça diferença alguma&amp;#8230;&lt;/p&gt;
&lt;h3&gt;Facilidade de Uso&lt;/h3&gt;
&lt;p&gt;Nenhuma das bibliotecas tem um uso complicado. Além disso, ambas tem um foco diferente.&lt;/p&gt;
&lt;p&gt;Talvez você já tenha notado, mas a maioria dos designers e programadores JavaScript menos experientes preferem jQuery. Não é à toa, ela é extremamente simples de ser usada. Nunca ouviu dizer que &lt;a href="http://www.tableless.com.br/jquery-e-bom-para-designers" title="jQuery é bom para designers" rel="external"&gt;jQuery é para designers&lt;/a&gt;? Isso também não significa que usuários mais experientes ou &lt;a href="http://clientside.com.br/eu-me-rendo-jquery-e-legal-para-caramba-mesmo/" title="Eu me rendo: jQuery é legal pra caramba mesmo" rel="external"&gt;experts na linguagem&lt;/a&gt; não irão gostar ou conseguir trabalhar.&lt;/p&gt;
&lt;p&gt;Já a Mootools, como diz o &lt;a href="http://mootools.net/" title="Mootools Library" rel="external"&gt;próprio site&lt;/a&gt;, é direcionada a usuários intermediários ou avançados. À primeira vista ela é realmente mais complicada, sem dúvida. Talvez por isso não chame tanto a atenção quanto jQuery.&lt;/p&gt;
&lt;h3&gt;E o vencedor é&amp;#8230;&lt;/h3&gt;
&lt;p&gt;Como disse logo no início do texto, jQuery e Mootools são bibliotecas diferentes, servindo para propósitos diferentes. Não é possível compará-las em sua totalidade, por isso não falei sobre muitos recursos que a Mootools oferece e jQuery não tem (built-in, é claro). jQuery é para DOM, Mootools é para facilitar sua programação. Já imaginou &lt;a href="http://juliogreff.net/lancada-a-mootools-12/#comment-17351"&gt;ambas bibliotecas juntas&lt;/a&gt;? Enfim, tenha bom senso e saiba utilizar as bibliotecas onde elas se dão bem, e não seja cabeça-dura como eu era tentando usar a Mootools em qualquer situação&amp;#8230;&lt;/p&gt;
&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/JulioGreff?a=GfJ3QUcl8uQ:zGsnisXFG6M:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JulioGreff?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/JulioGreff?a=GfJ3QUcl8uQ:zGsnisXFG6M:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JulioGreff?i=GfJ3QUcl8uQ:zGsnisXFG6M:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/JulioGreff?a=GfJ3QUcl8uQ:zGsnisXFG6M:I9og5sOYxJI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JulioGreff?d=I9og5sOYxJI" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/JulioGreff/~4/GfJ3QUcl8uQ" height="1" width="1"/&gt;</content>
		<link rel="replies" type="text/html" href="http://juliogreff.net/mootools-vs-jquery/#comments" thr:count="11" />
		<link rel="replies" type="application/atom+xml" href="http://juliogreff.net/mootools-vs-jquery/feed/atom/" thr:count="11" />
		<thr:total>11</thr:total>
	<feedburner:origLink>http://juliogreff.net/mootools-vs-jquery/</feedburner:origLink></entry>
		<entry>
		<author>
			<name>Julio Greff</name>
						<uri>http://juliogreff.net</uri>
					</author>
		<title type="html"><![CDATA[jQuery &#8211; Segundas Impressões]]></title>
		<link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/JulioGreff/~3/ghr651HHAyc/" />
		<id>http://juliogreff.blog.br/?p=171</id>
		<updated>2008-10-28T19:29:44Z</updated>
		<published>2008-08-11T11:00:10Z</published>
		<category scheme="http://juliogreff.net" term="JavaScript" /><category scheme="http://juliogreff.net" term="bibliotecas" /><category scheme="http://juliogreff.net" term="jquery" />		<summary type="html"><![CDATA[
Por algum motivo de natureza desconhecida, nunca gostei muito de jQuery. Talvez eu não tenha gostado muito do $ pau-pra-toda-obra, ou então da excessiva facilidade que a biblioteca propõe. Por alguma outra razão também desconhecida, há alguns dias atrás resolvi dar uma segunda olhada na biblioteca-prodígio. Se tem tanta gente usando, algo de bom deve [...]]]></summary>
		<content type="html" xml:base="http://juliogreff.net/jquery-segundas-impressoes/">&lt;p class="left"&gt;&lt;img src="http://juliogreff.net/wp-uploads/jquery.png" alt="jQuery - Write Less, Do More" title="jQuery - Write Less, Do More" /&gt;&lt;/p&gt;
&lt;p&gt;Por algum motivo de natureza desconhecida, nunca gostei muito de &lt;a href="http://jquery.com" title="jQuery - Write Less, Do More" rel="external"&gt;jQuery&lt;/a&gt;. Talvez eu não tenha gostado muito do $ pau-pra-toda-obra, ou então da excessiva facilidade que a biblioteca propõe. Por alguma outra razão também desconhecida, há alguns dias atrás resolvi dar uma segunda olhada na biblioteca-prodígio. Se tem tanta gente usando, algo de bom deve ter.&lt;/p&gt;
&lt;h3&gt;Durante os Testes&lt;/h3&gt;
&lt;p&gt;Depois alguns minutos testando a biblioteca direto no Firebug, tive a mesma impressão do que na última vez em que a usei: cada função, cada método faz no mínimo umas três coisas diferentes. Definir um atributo, recuperar seu valor, definir vários atributos ao mesmo tempo e ainda pode servir um cafezinho. Talvez esse tenha sido um dos motivos para me afastar da biblioteca. A diferença é que de uns tempos pra cá venho aumentando bastante minha maturidade na programação, e vi que esse conceito pode servir muito bem. Ponto pro jQuery.&lt;/p&gt;
&lt;p&gt;Outra característica que não me agradou muito na primeira experiência com jQuery é o retorno da função &lt;code&gt;$&lt;/code&gt;: ela sempre retorna um objeto jQuery, e não o objeto DOM que eu escolhi. Isso, na época, me incomodou muito. E se, na pressa, eu quiser jogar um &lt;code&gt;innerHTML&lt;/code&gt; e não quiser me preocupar com criar e injetar nós? Mais uma estupidez minha, o método &lt;code&gt;html&lt;/code&gt; cuida de tudo isso, e nunca mais vou precisar me preocupar em criar nós&amp;#8230; Além do mais, acabei descobrindo que não estender objetos nativos é bem melhor em questões de performance. Mais um ponto pro cifrão polivalente.&lt;/p&gt;
&lt;h3&gt;Durante a Produção&lt;/h3&gt;
&lt;p&gt;Hora de passar para a prática. Como qualquer outra nova ferramenta, é complicado usar jQuery quando se está acostumado à &lt;a href="http://mootools.net/" title="Mootools Library" rel="external"&gt;Mootools&lt;/a&gt;. Estou me atrapalhando bastante, principalmente na hora de usar os seletores. Já cansei de usar &lt;code&gt;$$&lt;/code&gt;, esquecer o # antes de IDs, trocar nomes de métodos, enfim. Tudo normal, eu pego o jeito&amp;#8230;&lt;/p&gt;
&lt;p&gt;Esquecendo a questão da produtividade em período de adaptação, fiquei bastante satisfeito com a biblioteca. No que ela se propõe a fazer, é simplesmente fenomenal, algo fora de série. Versátil, simples e poderosa. Gostei muito dos métodos relacionados a Ajax que, para qualquer requisição simples, são úteis e otimizados ao extremo em termos de código.&lt;/p&gt;
&lt;h3&gt;E a escolha?&lt;/h3&gt;
&lt;p&gt;Gostei de jQuery, muito. Acredite, se você nunca usou, não sabe o que está perdendo, e se já usou e não gostou antes de testar mais aprofundadamente, não seja cabeça-dura como eu e dê outra chance. &lt;a href="http://ejohn.org/" title="John Resig" rel="external"&gt;John Resig&lt;/a&gt;, o criador da jQuery, com certeza sabia o que estava fazendo, até porque ele é o cara!&lt;/p&gt;
&lt;p&gt;Mas e a Mootools, onde fica nessa história? Não vou abandoná-la, ainda é minha biblioteca preferida. Ela é imbatível em características que o jQuery não tem. Ambos servem para propósitos diferentes. Não vou &amp;#8220;escolher&amp;#8221; alguma das duas, o ideal é unir o potencial de ambas, não sou xiita.&lt;/p&gt;
&lt;p&gt;Essa experiência serviu para me mostrar que uma ferramenta não pode resolver &lt;strong&gt;todos&lt;/strong&gt; os seus problemas de maneira eficiente, mas podemos unir várias ferramentas para resolver vários problemas da melhor maneira possível. Aguardem os próximos capítulos dessa história&amp;#8230;&lt;/p&gt;
&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/JulioGreff?a=ghr651HHAyc:g5uM42JINIU:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JulioGreff?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/JulioGreff?a=ghr651HHAyc:g5uM42JINIU:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JulioGreff?i=ghr651HHAyc:g5uM42JINIU:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/JulioGreff?a=ghr651HHAyc:g5uM42JINIU:I9og5sOYxJI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JulioGreff?d=I9og5sOYxJI" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/JulioGreff/~4/ghr651HHAyc" height="1" width="1"/&gt;</content>
		<link rel="replies" type="text/html" href="http://juliogreff.net/jquery-segundas-impressoes/#comments" thr:count="15" />
		<link rel="replies" type="application/atom+xml" href="http://juliogreff.net/jquery-segundas-impressoes/feed/atom/" thr:count="15" />
		<thr:total>15</thr:total>
	<feedburner:origLink>http://juliogreff.net/jquery-segundas-impressoes/</feedburner:origLink></entry>
		<entry>
		<author>
			<name>Julio Greff</name>
						<uri>http://juliogreff.net</uri>
					</author>
		<title type="html"><![CDATA[Scroller Made in Mootools]]></title>
		<link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/JulioGreff/~3/OSbmrKsXGRU/" />
		<id>http://juliogreff.blog.br/?p=164</id>
		<updated>2008-10-31T19:23:08Z</updated>
		<published>2008-08-04T09:00:17Z</published>
		<category scheme="http://juliogreff.net" term="JavaScript" /><category scheme="http://juliogreff.net" term="WebStandards" /><category scheme="http://juliogreff.net" term="bibliotecas" /><category scheme="http://juliogreff.net" term="mootools" /><category scheme="http://juliogreff.net" term="scripts" />		<summary type="html"><![CDATA[Mesmo a Mootools sendo a biblioteca perfeita (pra mim, pelo menos), algumas vezes é preciso de uma pequena ajudinha externa. Exemplo de hoje: scrollers! Nada mais fácil do que fazer um deles exclusivamente com Mootools, mas é meio chato ter que criar os controladores (ou setinhas) e saber quem é o anterior ou o próximo.
Como [...]]]></summary>
		<content type="html" xml:base="http://juliogreff.net/scroller-made-in-mootools/">&lt;p&gt;Mesmo a Mootools sendo a biblioteca perfeita (pra mim, pelo menos), algumas vezes é preciso de uma pequena ajudinha externa. Exemplo de hoje: &lt;strong&gt;scrollers&lt;/strong&gt;! Nada mais fácil do que fazer um deles exclusivamente com Mootools, mas é meio chato ter que criar os controladores (ou setinhas) e saber quem é o anterior ou o próximo.&lt;/p&gt;
&lt;p&gt;Como acabei precisando de um scroller assim, aproveitei e criei uma classe que poderei reutilizar em algum outro projeto em que ela se faça necessária. Já que gostei do resultado, vou aproveitar e deixar o script pra vocês. O resultado será algo parecido com &lt;a title="Scroller Made in Mootools" href="http://juliogreff.net/scripts/mootools-scroller/"&gt;esse exemplo&lt;/a&gt;. Prontos? Então vamos lá!&lt;/p&gt;
&lt;h3&gt;O Código&lt;/h3&gt;
&lt;p class="left"&gt;&lt;a title="Scroller Made in Mootools" href="http://juliogreff.net/scripts/mootools-scroller/"&gt;&lt;img title="Scroller Made in Mootools" src="http://juliogreff.net/wp-uploads/download-script.png" alt="Scroller Made in Mootools" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;O script não poderia ser mais simples, em torno de umas 50 linhas de código (você precisaria de &lt;strong&gt;centenas&lt;/strong&gt; se não fosse a Mootools, ou alguma outra biblioteca que faça o serviço sujo). Você pode fazer o download dele &lt;a title="Scroller Made in Mootools" href="http://juliogreff.net/scripts/mootools-scroller/"&gt;aqui&lt;/a&gt;. Para &amp;#8220;instalá-lo&amp;#8221;, basta incluí-lo em seu documento, assim como a &lt;a title="Mootools - Download" rel="external" href="http://mootools.net/download/"&gt;Mootools&lt;/a&gt;. Além disso, você também vai precisar do plugin &lt;strong&gt;Fx.Scroll&lt;/strong&gt;, que pode ser conseguido no &lt;a title="Mootools - More Builder" rel="external" href="http://mootools.net/more"&gt;More Builder da Mootools&lt;/a&gt;, e incluí-lo no seu documento também.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Update:&lt;/strong&gt; logo que precisei usar a classe novamente, vi que cometi um erro grotesco. Código atualizado, com erro corrigido e uma nova funcionalidade, explicada logo abaixo. Valendo uma mariola pra quem descobrir minha estupidez, os dois códigos estão disponíveis para download.&lt;/p&gt;
&lt;h3&gt;O HTML&lt;/h3&gt;
&lt;p&gt;O HTML necessário é a parte que eu considero a mais complicada, chata e sem graça. Sem o HTML criado direitinho, o scroller não vai funcionar. A lógica é a seguinte: precisamos de um &lt;strong&gt;container&lt;/strong&gt; (geralmente uma div) de uma largura (ou altura) fixa. Esse container é quem vai esconder os itens que não serão mostrados no scroller. Dentro desse container, vamos precisar de mais um container (geralmente mais uma div, ou então uma lista), também de altura/largura fixa, mas que seja igual a toda a extensão dos itens. Ou seja, o container de dentro será maior do que o container de fora.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&amp;lt;div id="container"&amp;gt;
    &amp;lt;div&amp;gt;&amp;lt;/div&amp;gt;
&amp;lt;/div&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Acredite, é mais complicado do que parece. Agora sim, podemos colocar nossos itens dentro do container que está dentro de outro container (hein?). Fora isso, precisamos apenas de mais dois elementos (podem ser links) para serem os handlers de anterior e próximo e pronto, aí está o HTML. Só precisamos do CSS que vai ajudar na mágica do script.&lt;/p&gt;
&lt;h3&gt;O CSS&lt;/h3&gt;
&lt;p&gt;Como o nosso container externo precisa esconder o que há no container interno (que é maior), ele precisará de um &lt;code&gt;overflow: hidden&lt;/code&gt;. Sem isso, tudo o que há no container interno ficará exposto, e aí o scroller perde a graça. Também não podemos nos esquecer de definir as alturas/larguras dos containers e itens. Vamos fazer primeiro um scroller vertical, ligeiramente mais fácil:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;* {
  margin: 0;
  padding: 0;
}
#container {
  height: 20px;
  overflow: hidden;
  width: 100px;
}
#container div {
  /* Não é necessário definir a altura, o elemento irá "crescer" sozinho */
  width: 100px;
}
#container p {
  /* A mesma altura de #container, mas isso pode variar com o gosto do freguês */
  height: 20px;
}&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;O Script&lt;/h3&gt;
&lt;p&gt;Agora sim, vamos colocar a mão na massa. Minha classe, quando instanciada, leva apenas dois parâmetros: o container exterior (o container interior é deduzível&amp;#8230;) e as opções. Dentre elas, temos à disposição todas as &lt;a title="Mootools - Documentação da classe Fx" rel="external" href="http://docs.mootools.net/Fx/Fx"&gt;opções da classe Fx&lt;/a&gt;, e também &lt;code&gt;previousButton&lt;/code&gt; e &lt;code&gt;nextButton&lt;/code&gt;, que são os handlers para o elemento anterior e posterior do scroller.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;var myScroller = new Fx.Scroller("container", { previousButton: "previous", nextButton: "next" })&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Aproveitando a atualização da classe, também criei vergonha na cara e adicionei os eventos &lt;code&gt;onNext&lt;/code&gt; e &lt;code&gt;onPrevious&lt;/code&gt;, executados quando o scroller vai para frente ou para trás, respectivamente.&lt;/p&gt;
&lt;p&gt;Pronto! Você escreveu apenas uma linha de script e seu scroller já está funcional, passando de um elemento para outro com apenas um clique!&lt;/p&gt;
&lt;h3&gt;Scrollers Horizontais&lt;/h3&gt;
&lt;p&gt;A termos de script, um scroller horizontal é idêntico. A mágica se esconde toda no CSS para este caso. Primeiro precisamos colocar os elementos um ao lado do outro dentro do container interior, certo? Certo. Para isso, usamos a propriedade &lt;code&gt;float&lt;/code&gt;, sinta-se à vontade para escolher a qual lado flutuar.&lt;/p&gt;
&lt;p&gt;Passando ao segundo passo, devemos definir a &lt;strong&gt;largura&lt;/strong&gt;. A fórmula é a seguinte: número de elementos vezes a largura de qualquer um deles. Se você usar &lt;code&gt;margins&lt;/code&gt; ou &lt;code&gt;paddings&lt;/code&gt;, não esqueça de levá-los em consideração também.&lt;/p&gt;
&lt;p&gt;Usando a técnica de scrollers horizontais, também podemos criar scrollers &amp;#8220;mistos&amp;#8221;. Nesse caso, há várias linhas e várias colunas de itens ao mesmo tempo. O efeito, se bem usado, pode ficar muito interessante. Quem teve a oportunidade de observar os demos da versão 1.1 da Mootools deve saber do que estou falando.&lt;/p&gt;
&lt;h3&gt;Dicas para Ir Além&lt;/h3&gt;
&lt;p&gt;Bem, só fazer itens se mexerem pode não ter tanta graça assim pra você. Como eu disse, minha classe usa todas as opções da classe Fx, ou seja, eventos, transições, offsets, enfim. Agora é sua vez de brincar! Use o offset para mudar a posição dos itens, eventos para mudar sua opacidade, criatividade! Também sinta-se livre para usar os métodos da classe também: &lt;code&gt;next&lt;/code&gt;, &lt;code&gt;previous&lt;/code&gt;, &lt;code&gt;scrollTo&lt;/code&gt;, &lt;code&gt;enable&lt;/code&gt; e &lt;code&gt;disable&lt;/code&gt; (para ativar ou desativar os botões).&lt;/p&gt;
&lt;p&gt;Espero que isso sirva pra alguma coisa! E também espero postar em um intervalo um pouco menor&amp;#8230; O pessoal deve ter pensado que eu fugi do país depois de uma &lt;a title="Frameworks: Por um PHP Menos Ruim" href="http://juliogreff.net/frameworks-por-um-php-menos-ruim/"&gt;certa polêmica&lt;/a&gt;. Mas não, só estive ocupado mesmo&amp;#8230; Até mais!&lt;/p&gt;
&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/JulioGreff?a=OSbmrKsXGRU:S6br2tfiHLA:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JulioGreff?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/JulioGreff?a=OSbmrKsXGRU:S6br2tfiHLA:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JulioGreff?i=OSbmrKsXGRU:S6br2tfiHLA:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/JulioGreff?a=OSbmrKsXGRU:S6br2tfiHLA:I9og5sOYxJI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JulioGreff?d=I9og5sOYxJI" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/JulioGreff/~4/OSbmrKsXGRU" height="1" width="1"/&gt;</content>
		<link rel="replies" type="text/html" href="http://juliogreff.net/scroller-made-in-mootools/#comments" thr:count="4" />
		<link rel="replies" type="application/atom+xml" href="http://juliogreff.net/scroller-made-in-mootools/feed/atom/" thr:count="4" />
		<thr:total>4</thr:total>
	<feedburner:origLink>http://juliogreff.net/scroller-made-in-mootools/</feedburner:origLink></entry>
	</feed>
