<?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>JulioGreff.net &#187; filosofia</title>
	<atom:link href="http://juliogreff.net/tag/filosofia/feed/" rel="self" type="application/rss+xml" />
	<link>http://juliogreff.net</link>
	<description>A mesma web, um novo estilo de desenvolvimento</description>
	<lastBuildDate>Sat, 07 May 2011 17:07:10 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>CodeCast #5 &#8211; Frameworks</title>
		<link>http://juliogreff.net/codecast-5-frameworks/</link>
		<comments>http://juliogreff.net/codecast-5-frameworks/#comments</comments>
		<pubDate>Sun, 15 Jun 2008 21:11:34 +0000</pubDate>
		<dc:creator>Julio Greff</dc:creator>
				<category><![CDATA[CodeCast]]></category>
		<category><![CDATA[filosofia]]></category>
		<category><![CDATA[frameworks]]></category>
		<category><![CDATA[podcast]]></category>
		<category><![CDATA[Server-Side]]></category>

		<guid isPermaLink="false">http://juliogreff.blog.br/?p=160</guid>
		<description><![CDATA[Depois de uma longa espera, cá estamos nós novamente com mais uma edição do CodeCast! Dessa vez o assunto é Frameworks. Com a presença do Jader Rubini, falamos de tudo um pouco sobre PHP, Ruby, Python e JavaScript, e seus respectivos CakePHP, Rails, Django, jQuery e Mootools. Um bate papo bem interessante pra quem ainda [...]

<h3>Posts Relacionados</h3><ul><li><a href='http://juliogreff.net/codecast-4-adobe-flash/' rel='bookmark' title='Permanent Link: CodeCast #4 &#8211; Adobe Flash'>CodeCast #4 &#8211; Adobe Flash</a></li>
<li><a href='http://juliogreff.net/codecast-impressoes-sobre-inicio-de-carreira/' rel='bookmark' title='Permanent Link: CodeCast #1 &#8211; Impressões sobre Início de Carreira'>CodeCast #1 &#8211; Impressões sobre Início de Carreira</a></li>
<li><a href='http://juliogreff.net/frameworks-por-um-php-menos-ruim/' rel='bookmark' title='Permanent Link: Frameworks: Por um PHP Menos Ruim'>Frameworks: Por um PHP Menos Ruim</a></li>
<li><a href='http://juliogreff.net/codecast-2-xhtml-2-e-html-5/' rel='bookmark' title='Permanent Link: CodeCast #2 &#8211; XHTML 2 e HTML 5'>CodeCast #2 &#8211; XHTML 2 e HTML 5</a></li>
<li><a href='http://juliogreff.net/codecast-3-semantica-microformatos/' rel='bookmark' title='Permanent Link: CodeCast #3 &#8211; Semântica e Microformatos'>CodeCast #3 &#8211; Semântica e Microformatos</a></li>
</ul>]]></description>
			<content:encoded><![CDATA[<p class="center">
<a href="http://codecast.rafaelmarin.net"><img src="http://juliogreff.net/wp-uploads/codecast-5-frameworks.gif" title="CodeCast #5 - Frameworks" alt="CodeCast #5 - Frameworks" /></a>
</p>
<p>Depois de uma longa espera, cá estamos nós novamente com <a href="http://codecast.rafaelmarin.net/" title="CodeCast #5" rel="external">mais uma edição do CodeCast</a>! Dessa vez o assunto é Frameworks. Com a presença do <a href="http://jaderubini.wordpress.com" title="Jader Rubini" rel="external friend">Jader Rubini</a>, falamos de tudo um pouco sobre PHP, Ruby, Python e JavaScript, e seus respectivos CakePHP, Rails, Django, jQuery e Mootools. Um bate papo bem interessante pra quem ainda não adotou alguma dessas ferramentas ou semelhantes.</p>
<p>Pesando 39MB, ultrapassando a marca dos 55 minutos, esperamos que gostem, enviem feedback, sigam nossas dicas, enfim. Também gostaria de agradecer muito ao Jader por aceitar nosso convite, que além de tudo rendeu um bate papo muito legal, do chimarrão ao pão de queijo, de Mootools a Django.</p>
<p>Até mais!</p>


<h3>Posts Relacionados</h3><ul><li><a href='http://juliogreff.net/codecast-4-adobe-flash/' rel='bookmark' title='Permanent Link: CodeCast #4 &#8211; Adobe Flash'>CodeCast #4 &#8211; Adobe Flash</a></li>
<li><a href='http://juliogreff.net/codecast-impressoes-sobre-inicio-de-carreira/' rel='bookmark' title='Permanent Link: CodeCast #1 &#8211; Impressões sobre Início de Carreira'>CodeCast #1 &#8211; Impressões sobre Início de Carreira</a></li>
<li><a href='http://juliogreff.net/frameworks-por-um-php-menos-ruim/' rel='bookmark' title='Permanent Link: Frameworks: Por um PHP Menos Ruim'>Frameworks: Por um PHP Menos Ruim</a></li>
<li><a href='http://juliogreff.net/codecast-2-xhtml-2-e-html-5/' rel='bookmark' title='Permanent Link: CodeCast #2 &#8211; XHTML 2 e HTML 5'>CodeCast #2 &#8211; XHTML 2 e HTML 5</a></li>
<li><a href='http://juliogreff.net/codecast-3-semantica-microformatos/' rel='bookmark' title='Permanent Link: CodeCast #3 &#8211; Semântica e Microformatos'>CodeCast #3 &#8211; Semântica e Microformatos</a></li>
</ul>]]></content:encoded>
			<wfw:commentRss>http://juliogreff.net/codecast-5-frameworks/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Backup: Um Salvador de Vidas</title>
		<link>http://juliogreff.net/backup-um-salvador-de-vidas/</link>
		<comments>http://juliogreff.net/backup-um-salvador-de-vidas/#comments</comments>
		<pubDate>Wed, 11 Jun 2008 07:41:44 +0000</pubDate>
		<dc:creator>Julio Greff</dc:creator>
				<category><![CDATA[Diversos]]></category>
		<category><![CDATA[backup]]></category>
		<category><![CDATA[boas práticas]]></category>
		<category><![CDATA[filosofia]]></category>

		<guid isPermaLink="false">http://juliogreff.blog.br/?p=154</guid>
		<description><![CDATA[Quanto tempo você leva desenvolvendo algum projeto, trabalhando em um freelance, mantendo um blog? Não muito pouco, creio eu. E quanto tempo você pode levar para perder tudo isso? Uma &#8220;catástrofe&#8221; pode acontecer a qualquer momento, levando todo seu trabalho embora. Não teria sido muito mais fácil manter um backup? Ninguém está livre de um [...]

<h3>Posts Relacionados</h3><ul><li><a href='http://juliogreff.net/pc-formatado-e-agora/' rel='bookmark' title='Permanent Link: PC formatado, e agora?'>PC formatado, e agora?</a></li>
<li><a href='http://juliogreff.net/tragedia/' rel='bookmark' title='Permanent Link: Tragédia'>Tragédia</a></li>
<li><a href='http://juliogreff.net/a-aplicacao-ajax-perfeita/' rel='bookmark' title='Permanent Link: A Aplicação Ajax Perfeita'>A Aplicação Ajax Perfeita</a></li>
<li><a href='http://juliogreff.net/comodismo-vs-inovacao/' rel='bookmark' title='Permanent Link: Comodismo vs. Inovação'>Comodismo vs. Inovação</a></li>
<li><a href='http://juliogreff.net/coisas-que-desenvolvedores-web-deveriam-saber/' rel='bookmark' title='Permanent Link: 7 coisas que todo desenvolvedor web deveria saber'>7 coisas que todo desenvolvedor web deveria saber</a></li>
</ul>]]></description>
			<content:encoded><![CDATA[<p>Quanto tempo você leva desenvolvendo algum projeto, trabalhando em um freelance, mantendo um blog? Não muito pouco, creio eu. E quanto tempo você pode levar para perder tudo isso? Uma &#8220;catástrofe&#8221; pode acontecer a qualquer momento, levando todo seu trabalho embora. Não teria sido muito mais fácil manter um backup?</p>
<p>Ninguém está livre de um desastre. A qualquer momento seu HD pode queimar, seus arquivos podem ser infectados por algum vírus, algum raio pode cair em cima de seu computador, ou até mesmo o <a href="http://juliogreff.net/servidor-fora-do-ar/" title="Servidor Fora do Ar">seu servidor de hospedagem pode explodir</a> (pergunta, vai!). Esse é o tipo de coisa que ninguém espera, e não há como dizer &#8220;hoje vou perder todos meus arquivos, é bom fazer uma cópia&#8221;. O destino é cruel e impiedoso, principalmente com os descuidados.</p>
<p>A maneira mais eficaz, e também mais sensata, é sempre manter um backup de seus dados importantes. É bom sempre fazer isso com uma certa regularidade. Backups diários podem ser custosos e até impraticáveis em certos casos, então realizá-lo uma vez por semana já parece suficiente. Por pior que seja a catástrofe, você sempre terá para onde correr.</p>
<p>Mantendo cópias regulares, com certeza em pouco tempo você terá uma quantidade enorme de dados armazenados. Aí o jeito é organizar! Manter uma lista dos arquivos copiados, data de gravação, enfim. Não adianta TER os dados e não saber onde encontrá-los. Pode acreditar, essa sensação é ainda pior.</p>
<p>Por que esse texto estilo sermão? Eu explico. Semana retrasada, uma explosão no data center H1 do The Planet derrubou uma montanha de servidores (e três paredes, segundo me consta), e <a href="http://juliogreff.net/servidor-fora-do-ar/" title="Servidor Fora do Ar">eu estava em um deles</a>. Antes que eu ficasse sabendo de mais informações, se abateu o pânico: eu não tinha um backup. Por sorte não houve perda de dados, mas já foi o suficiente para abrir o olho, e ser um pouco mais cauteloso. Nem mesmo armazenados remotamente nossos dados estão seguros.</p>
<p>Um pequeno esforço que pode salvar muito retrabalho, e até sua vida, dependendo de quão dependente ela seja de seu trabalho. E você, <strong>mantém um backup</strong>? Nem que seja mensal, apenas de trabalhos correntes, ou o que quer que seja importante para você guardar?</p>


<h3>Posts Relacionados</h3><ul><li><a href='http://juliogreff.net/pc-formatado-e-agora/' rel='bookmark' title='Permanent Link: PC formatado, e agora?'>PC formatado, e agora?</a></li>
<li><a href='http://juliogreff.net/tragedia/' rel='bookmark' title='Permanent Link: Tragédia'>Tragédia</a></li>
<li><a href='http://juliogreff.net/a-aplicacao-ajax-perfeita/' rel='bookmark' title='Permanent Link: A Aplicação Ajax Perfeita'>A Aplicação Ajax Perfeita</a></li>
<li><a href='http://juliogreff.net/comodismo-vs-inovacao/' rel='bookmark' title='Permanent Link: Comodismo vs. Inovação'>Comodismo vs. Inovação</a></li>
<li><a href='http://juliogreff.net/coisas-que-desenvolvedores-web-deveriam-saber/' rel='bookmark' title='Permanent Link: 7 coisas que todo desenvolvedor web deveria saber'>7 coisas que todo desenvolvedor web deveria saber</a></li>
</ul>]]></content:encoded>
			<wfw:commentRss>http://juliogreff.net/backup-um-salvador-de-vidas/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>Comodismo vs. Inovação</title>
		<link>http://juliogreff.net/comodismo-vs-inovacao/</link>
		<comments>http://juliogreff.net/comodismo-vs-inovacao/#comments</comments>
		<pubDate>Thu, 29 May 2008 15:08:01 +0000</pubDate>
		<dc:creator>Julio Greff</dc:creator>
				<category><![CDATA[Destaques]]></category>
		<category><![CDATA[Diversos]]></category>
		<category><![CDATA[carreira]]></category>
		<category><![CDATA[filosofia]]></category>
		<category><![CDATA[tecnologias]]></category>

		<guid isPermaLink="false">http://juliogreff.blog.br/?p=150</guid>
		<description><![CDATA[Linguagens de programação e frameworks de desenvolvimento surgem aos montes no ambiente web. De uma maneira ou outra, nossas velhas ferramentas acabam se tornando obsoletas. Por mais que tenhamos domínio sobre elas, o rendimento não se equipara a novas ferramentas, seja em produtividade, desempenho, facilidade de uso ou qualquer outro fator. Será que é hora [...]

<h3>Posts Relacionados</h3><ul><li><a href='http://juliogreff.net/coisas-que-desenvolvedores-web-deveriam-saber/' rel='bookmark' title='Permanent Link: 7 coisas que todo desenvolvedor web deveria saber'>7 coisas que todo desenvolvedor web deveria saber</a></li>
<li><a href='http://juliogreff.net/caindo-na-real/' rel='bookmark' title='Permanent Link: Caindo na Real'>Caindo na Real</a></li>
<li><a href='http://juliogreff.net/vale-a-pena-arriscar-em-novas-tecnologias/' rel='bookmark' title='Permanent Link: Vale a pena arriscar em novas tecnologias?'>Vale a pena arriscar em novas tecnologias?</a></li>
<li><a href='http://juliogreff.net/digg-pra-que/' rel='bookmark' title='Permanent Link: Digg pra quê?'>Digg pra quê?</a></li>
<li><a href='http://juliogreff.net/fim-ou-recomeco/' rel='bookmark' title='Permanent Link: Fim ou Recomeço?'>Fim ou Recomeço?</a></li>
</ul>]]></description>
			<content:encoded><![CDATA[<p class="left">
<img src="http://juliogreff.net/wp-uploads/inovar.jpg" title="Parar ou Inovar?" alt="Parar ou Inovar?" />
</p>
<p>Linguagens de programação e frameworks de desenvolvimento surgem aos montes no ambiente web. De uma maneira ou outra, nossas velhas ferramentas acabam se tornando obsoletas. Por mais que tenhamos domínio sobre elas, o rendimento não se equipara a novas ferramentas, seja em produtividade, desempenho, facilidade de uso ou qualquer outro fator. Será que é hora de abandonar nossa velha forma de desenvolver para dar lugar a novas ferramentas?</p>
<p>As ferramentas com as quais estamos acostumados, como o PHP, por exemplo, foram criadas para resolver os problemas que tínhamos à época em que foram criadas, baseando-se nos métodos dessa época. Elas têm nos servido muito bem, e provavelmente ainda poderão servir por algum tempo mais. Mas a web muda, e as exigências quanto ao desenvolvimento nesse ambiente também. Não basta mais resolver um problema, esse problema deve ser resolvido de forma rápida e eficiente. Com a correria de hoje em dia, só PHP não basta mais.</p>
<p>Com o tempo, além de recriamos soluções para velhos problemas, novos problemas vão surgindo. A web não é mais um ambiente minúsculo como era há alguns anos atrás. Ela cresceu. Cresceu muito. A demanda por serviços, e por serviços cada vez mais rápidos é muito maior do que antes. Criamos novos problemas e precisamos de soluções para eles. Nossas antigas ferramentas não estão preparadas para tanto.</p>
<p>De uma forma ou outra, precisamos ser ágeis. Os frameworks estão aí para ficar. Como o capitalismo nos obriga a produzir em velocidade insalubre, somente uma boa linguagem de programação também não basta. Precisamos ser rápidos, muito, muito rápidos. Mesmo para linguagens não tão recentes, já existem soluções ótimas. Há vida além do Rails e Django!</p>
<p>Embora essas novas tecnologias sejam fascinantes, há um pequeno problema. Uma nova ferramenta leva a uma curva de aprendizado. Isso toma tempo, &#8220;tempo de processamento&#8221;, enfim, nos tirar de nossa zona de conforto. A questão é: devo eu partir pra outra? A minha resposta é: depende.</p>
<p>Tudo é relativo, e não há uma resposta pronta para esse tipo de pergunta. Você pode se sentir realmente confortável com certa linguagem, e conseguir ser extremamente produtivo com ela, ao passo que, mesmo conhecendo bem outras ferramentas, não consegue manter o mesmo ritmo. Nesse caso, sempre existem os frameworks. Não é necessário &#8220;reaprender a programar&#8221;, e ganha-se o benefício de um desenvolvimento mais rápido. Nesse caso, mudar de ares não é algo sensato a se fazer, principalmente se você tem um tempo escasso.</p>
<p>Já se você consegue ser produtivo em várias linguagens, opte por aquela mais moderna e robusta, ou continue buscando algo novo. Assim tem-se o benefício da versatilidade: não importa a ferramenta, importa saber fazer.</p>
<p>Meu caso é um pouco diferente. Apesar de trabalhar diariamente com PHP, nunca gostei da linguagem. Parece-me mais uma biblioteca de funções do que uma linguagem bem estruturada. Quando fui apresentado ao Ruby, me rendi. Apesar de não ter me aventurado muito ainda, é o que pretendo seguir. Não tanto por produtividade, nem tanto por &#8220;moda&#8221;, mas por gosto. Não deixa de ser um motivo válido&#8230;</p>
<p>Tenho certeza que esse assunto dá uma boa discussão. <strong>Qual sua opinião? Fixar-se em uma ferramenta e especializar-se nela, ou procurar algo diferente que melhore sua forma de trabalhar?</strong></p>


<h3>Posts Relacionados</h3><ul><li><a href='http://juliogreff.net/coisas-que-desenvolvedores-web-deveriam-saber/' rel='bookmark' title='Permanent Link: 7 coisas que todo desenvolvedor web deveria saber'>7 coisas que todo desenvolvedor web deveria saber</a></li>
<li><a href='http://juliogreff.net/caindo-na-real/' rel='bookmark' title='Permanent Link: Caindo na Real'>Caindo na Real</a></li>
<li><a href='http://juliogreff.net/vale-a-pena-arriscar-em-novas-tecnologias/' rel='bookmark' title='Permanent Link: Vale a pena arriscar em novas tecnologias?'>Vale a pena arriscar em novas tecnologias?</a></li>
<li><a href='http://juliogreff.net/digg-pra-que/' rel='bookmark' title='Permanent Link: Digg pra quê?'>Digg pra quê?</a></li>
<li><a href='http://juliogreff.net/fim-ou-recomeco/' rel='bookmark' title='Permanent Link: Fim ou Recomeço?'>Fim ou Recomeço?</a></li>
</ul>]]></content:encoded>
			<wfw:commentRss>http://juliogreff.net/comodismo-vs-inovacao/feed/</wfw:commentRss>
		<slash:comments>17</slash:comments>
		</item>
		<item>
		<title>Digg pra quê?</title>
		<link>http://juliogreff.net/digg-pra-que/</link>
		<comments>http://juliogreff.net/digg-pra-que/#comments</comments>
		<pubDate>Sun, 17 Jun 2007 16:36:16 +0000</pubDate>
		<dc:creator>Julio Greff</dc:creator>
				<category><![CDATA[Diversos]]></category>
		<category><![CDATA[filosofia]]></category>

		<guid isPermaLink="false">http://www.juliogreff.blog.br/digg-pra-que/</guid>
		<description><![CDATA[Todo blogueiro que escreve em português sabe que seu blog dificilmente será lido por uma pessoa que não fale português. Não interessa quão bom seu post seja, em português ele nunca chegará muito longe no Digg. Temos brasileiros no Digg, mas isso não chega a ajudar muita coisa. O Digg é muito útil se você [...]

<h3>Posts Relacionados</h3><ul><li><a href='http://juliogreff.net/pra-quem-voce-escreve/' rel='bookmark' title='Permanent Link: Pra quem você escreve?'>Pra quem você escreve?</a></li>
<li><a href='http://juliogreff.net/qual-curso-devo-fazer-pra-me-tornar-um-desenvolvedor-web/' rel='bookmark' title='Permanent Link: Qual curso devo fazer pra me tornar um desenvolvedor web?'>Qual curso devo fazer pra me tornar um desenvolvedor web?</a></li>
<li><a href='http://juliogreff.net/caindo-na-real/' rel='bookmark' title='Permanent Link: Caindo na Real'>Caindo na Real</a></li>
<li><a href='http://juliogreff.net/comodismo-vs-inovacao/' rel='bookmark' title='Permanent Link: Comodismo vs. Inovação'>Comodismo vs. Inovação</a></li>
<li><a href='http://juliogreff.net/vale-a-pena-arriscar-em-novas-tecnologias/' rel='bookmark' title='Permanent Link: Vale a pena arriscar em novas tecnologias?'>Vale a pena arriscar em novas tecnologias?</a></li>
</ul>]]></description>
			<content:encoded><![CDATA[<p class="left"><img src="http://juliogreff.net/wp-uploads/digg-pra-que.jpg" alt="Digg pra quê?" title="Digg pra quê?" /></p>
<p>Todo blogueiro que escreve em português sabe que seu blog dificilmente será lido por uma pessoa que não fale português. Não interessa quão bom seu post seja, em português ele nunca chegará muito longe no <a href="http://www.digg.com" rel="external" title="Digg">Digg</a>.</p>
<p>Temos brasileiros no Digg, mas isso não chega a ajudar muita coisa. O Digg é muito útil se você quiser <strong>encontrar</strong> alguma coisa (em inglês, lógico, na maioria das vezes), mas não para <strong>mostrar</strong> o que você escreveu. Aliás, achar alguma coisa não, <strong>muita</strong> coisa, das quais você nem imaginava que existisse. Por exemplo, digite &#8220;javascript&#8221; na busca e veja tudo o que aparece.</p>
<p>Me cadastrei há pouco tempo no Digg (agora o tempo não anda tão apertado, e posso procurar alguma coisa nova), e indiquei dois posts. No dia seguinte, surgiu a idéia desse post filosófico, ajudado por outros posts que li ontem (eram vários, e não lembro nem de onde). Vi que não ia ter sucesso&#8230;</p>
<p>Temos alguns serviços muito bons no Brasil, e passarei a usa-los. Tá certo que alguns fazem algumas sacanagens com o usuário de vez em quando (leia-se <a href="http://www.rec6.com.br" rel="external" title="Rec6">Rec6</a>), mas nada que seja muito prejudicial ao serviço.</p>
<p>A partir de agora, para indicar meus posts, estarei usando os seguintes serviços: <a href="http://www.rec6.com.br" rel="external" title="Rec6">Rec6</a>, <a href="http://www.eucurti.com.br" rel="external" title="Eu Curti">Eu Curti</a> e <a href="http://www.linkk.com.br" rel="external" title="Linkk">Linkk</a>. Estarei colocando os botões pra eles também assim que fizer o próximo remendo no tema.</p>
<p>Já estou cadastrado, e dei uma olhada nos serviços. Gostei, mas vi que não há muito conteúdo tão interessante quanto o Digg (não em quantidade, mas a qualidade é boa, brasileiro manda bem!). Minhas buscas continuarão sendo via escavação mesmo. Ahh, também recomendo aos blogueiros pequenos usarem os serviços também, pode atrair tráfego se o conteúdo for bom&#8230; E eu fico por aqui, até!</p>


<h3>Posts Relacionados</h3><ul><li><a href='http://juliogreff.net/pra-quem-voce-escreve/' rel='bookmark' title='Permanent Link: Pra quem você escreve?'>Pra quem você escreve?</a></li>
<li><a href='http://juliogreff.net/qual-curso-devo-fazer-pra-me-tornar-um-desenvolvedor-web/' rel='bookmark' title='Permanent Link: Qual curso devo fazer pra me tornar um desenvolvedor web?'>Qual curso devo fazer pra me tornar um desenvolvedor web?</a></li>
<li><a href='http://juliogreff.net/caindo-na-real/' rel='bookmark' title='Permanent Link: Caindo na Real'>Caindo na Real</a></li>
<li><a href='http://juliogreff.net/comodismo-vs-inovacao/' rel='bookmark' title='Permanent Link: Comodismo vs. Inovação'>Comodismo vs. Inovação</a></li>
<li><a href='http://juliogreff.net/vale-a-pena-arriscar-em-novas-tecnologias/' rel='bookmark' title='Permanent Link: Vale a pena arriscar em novas tecnologias?'>Vale a pena arriscar em novas tecnologias?</a></li>
</ul>]]></content:encoded>
			<wfw:commentRss>http://juliogreff.net/digg-pra-que/feed/</wfw:commentRss>
		<slash:comments>11</slash:comments>
		</item>
		<item>
		<title>A Aplicação Ajax Perfeita</title>
		<link>http://juliogreff.net/a-aplicacao-ajax-perfeita/</link>
		<comments>http://juliogreff.net/a-aplicacao-ajax-perfeita/#comments</comments>
		<pubDate>Thu, 07 Jun 2007 16:39:00 +0000</pubDate>
		<dc:creator>Julio Greff</dc:creator>
				<category><![CDATA[Ajax]]></category>
		<category><![CDATA[acessibilidade]]></category>
		<category><![CDATA[boas práticas]]></category>
		<category><![CDATA[cross browser]]></category>
		<category><![CDATA[filosofia]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[usabilidade]]></category>

		<guid isPermaLink="false">http://www.juliogreff.blog.br/a-aplicacao-ajax-perfeita/</guid>
		<description><![CDATA[Tempos atrás andei pensando sobre uma aplicação Ajax. O que ela deveria ser, como deveria funcionar, tudo o que precisaria ter. Incrementei a idéia, pensando na acessibilidade, usabilidade, unobstrusividade, essas coisas. Cheguei a conclusão que não existem muitas dessas por aí. Não que essa idéia fosse &#8220;a aplicação ajax perfeita&#8221;, mas sim a ideal. Demoraria [...]

<h3>Posts Relacionados</h3><ul><li><a href='http://juliogreff.net/hijax-ajax-acessivel/' rel='bookmark' title='Permanent Link: Hijax: Ajax Acessível'>Hijax: Ajax Acessível</a></li>
<li><a href='http://juliogreff.net/ajax-vs-acessibilidade/' rel='bookmark' title='Permanent Link: Ajax vs. Acessibilidade'>Ajax vs. Acessibilidade</a></li>
<li><a href='http://juliogreff.net/fila-de-requisicoes-em-ajax/' rel='bookmark' title='Permanent Link: Fila de Requisições em Ajax'>Fila de Requisições em Ajax</a></li>
<li><a href='http://juliogreff.net/ajax-vs-moda-vs-performance/' rel='bookmark' title='Permanent Link: Ajax vs. Moda vs. Performance'>Ajax vs. Moda vs. Performance</a></li>
<li><a href='http://juliogreff.net/ajax-requisicoes-head/' rel='bookmark' title='Permanent Link: Ajax: Requisições HEAD'>Ajax: Requisições HEAD</a></li>
</ul>]]></description>
			<content:encoded><![CDATA[<p>Tempos atrás andei pensando sobre uma aplicação Ajax. O que ela deveria ser, como deveria funcionar, tudo o que precisaria ter. Incrementei a idéia, pensando na <a href="http://juliogreff.net/ajax-vs-acessibilidade/">acessibilidade</a>, usabilidade, unobstrusividade, essas coisas. Cheguei a conclusão que não existem muitas dessas por aí.</p>
<p>Não que essa idéia fosse &#8220;a aplicação ajax perfeita&#8221;, mas sim a ideal. Demoraria muito a ser feita, mas eu consideraria uma obra de arte.</p>
<h3>Padronização</h3>
<p>Essa parte é a parte fácil, que todo mundo <strong>sempre</strong> deveria se dar ao trabalho de fazer: manter seu trabalho dentro dos web standards.</p>
<p>Validar sua marcação, seus CSSs, isso todo mundo faz (ou deveria). Mas às vezes um certo item é deixado de lado: seus XMLs, que não causariam muito problema, a não ser um XML em especial: os feeds. Ou seja, valide tudo que possa ser validado.</p>
<h3>Manutenção</h3>
<p>Código bom é código comentado. Disso ninguém discorda. Sempre comente seus códigos, tanto para seu uso em futuras manutenções e atualizaçãoes, quanto para seus visitantes que querem descobrir o segredo daquela técnica inovadora que você implementou. JavaScript ninguém esconde, e uma técnica nova deveria poder chegar a todos que quisessem, mesmo que seja investigando seu código. Melhor ainda se ele estiver comentado, mesmo que seja somente em partes mais obscuras.</p>
<p>E o tamanho do código não aumentaria? Sim, mas você só precisará comentar partes essenciais, aquelas mais complicadas que você sabe que irá esquecer com o tempo. Além do mais, se você esquecer de seu código, perderá muito tempo até lembrar o que cada parte faz.</p>
<h3>Compatibilidade</h3>
<p>Outra parte facílima, mas indispensável. Se tudo for seguido, nem tanto, mas ainda assim se torna muito mais agradável usar uma aplicação que funcione como deveria funcionar.</p>
<p>Com todas as opções de browsers existentes hoje, sempre haverá aquele que terá problemas (geralmente o azulzinho que todo mundo já conhece). Mas existem maneiras de amenizar o problema. Isso não só com Ajax, mas qualquer &#8220;defeito&#8221; de JavaScript e CSS que possa atrapalhar a experiência do usuário.</p>
<p>Essa parte pode, sem problemas, ser deixada para os frameworks já existentes, que fazem seu trabalho muito bem. A compatibilidade vem sendo muito focada por essas bibliotecas, facilitando, e muito, seu trabalho.</p>
<h3>Controle de readyStates</h3>
<p>Agora começa a parte divertida. Tudo que está logo acima qualquer um faz. Vamos começar adicionando nossos diferenciais.</p>
<p>Geralmente, costuma-se cuidar de apenas dois readyStates: 1 e 4 (aberto e carregado), que resultam no clássico &#8220;Carregando&#8230;&#8221; e a requisição completa. Não que seja necessário, mas um controle completo de estados poderia ser bom.</p>
<p>O usuário saber que sua requisição está sendo processada ajuda, já que não pensaria que a requisição travou (isso acontece bastante quando a requisição demora demais).</p>
<p>Coloquei os readyStates, o que significam e uma sugestão para o texto de carregamento. Os readyStates 0 e 4 não precisam disso, já que 0 não tem muito uso, e 4 terá sua própria função.</p>
<ul>
<li><strong>Não Inicializado (0)</strong></li>
<li><strong>Aberto (1)</strong>: &#8220;Abrindo Requisição&#8221; ou &#8220;Iniciando Requisição&#8221;</li>
<li><strong>Enviado (2)</strong>: &#8220;Enviando Dados&#8221;</li>
<li><strong>Recebendo (3)</strong>: &#8220;Carregando&#8221; ou &#8220;Recebendo Dados&#8221;</li>
<li><strong>Completo (4)</strong></li>
</ul>
<p>Não que seja necessário, mas também seria válido cuidar dos status da requisição também, pelo menos 200 (OK), 404, 500, e os outros erros mais comuns.</p>
<h3>Histórico</h3>
<p>Esse é o maior problema das aplicações Ajax. Já faz tempo que <a title="Ativando o Botão Voltar" href="http://juliogreff.net/ativando-o-botao-voltar/">as primeiras soluções para histórico apareceram</a>, e <a title="Histórico para Navegação via JavaScript" href="http://juliogreff.net/historico-para-navegacao-via-javascript/">outras melhoradas</a>, e ainda há centenas de aplicações que não se dão ao trabalho de implementar qualquer das soluções.</p>
<p>O histórico <strong>sempre</strong> deve ser implementado, mesmo que sua aplicação não queira dominar o mundo.</p>
<h3>Cache</h3>
<p>O cache, considerado uma praga por muitos, pode ser de uma grande ajuda para sua aplicação. Sempre que se faz uma requisição estática (que não muda em pouco tempo), deve-se usar o cache, pois quando refizermos essa requisição, ela terminará mais rápido.</p>
<p>Além do mais, usando o histórico, podemos guardar requisições &#8220;cacheadas&#8221; no próprio JavaScript. Assim, mais rápido ainda.</p>
<p>É claro que, em requisições dinâmicas, não devemos usar essa técnica. Ela pode prejudicar o usuário, pois não há maneira de atualizar a página através do F5.</p>
<h3>Filas de Requisição</h3>
<p>Todos sabem que se quando uma requisição estiver em andamento, e outra for iniciada, a primeira será cancelada.</p>
<p>Assim como o histórico, já existem milhares de soluções diferentes para <a title="Fila de Requisições em Ajax" href="http://juliogreff.net/fila-de-requisicoes-em-ajax/">fila de requisições</a>. Esse recurso deve também ser usado sempre que possível (ou seja, sempre). Isso pode evitar aborrecimentos ao usuário.</p>
<h3>Inobstrusividade</h3>
<p>Essa é a questão mais polêmica. Sua aplicação não deve usar JavaScript obstrusivo (ou usar o menos possível), fazendo-a de maneira que funcione corretamente em qualquer browser.</p>
<p>E o Ajax sem JavaScript, como fica? Também tive idéias mirabolantes quanto a isso. Você deve usar o mesmo script server-side tanto para requisições assíncronas (Ajax) quanto para as síncronas (me refiro àquelas via browser). Para isso, usamos aquele header <code>X-Requested-With</code>, que seu server-side deve identificar.</p>
<p>Dessa maneira, não &#8220;trancamos&#8221; o conteúdo nem ao usuário nem aos buscadores e afins. Benefícios ao usuário e a você (e ao seu bolso, se for o caso).</p>
<p>Lembre-se de tornar o conteúdo Ajax-less atrativo aos olhos do usuário também, usando o mesmo layout do resto da aplicação (ou a mesma estrutura, caso seja XML).</p>
<h3>Desempenho</h3>
<p>O desempenho é outra característica muito essencial. Em tráfego de dados muito grande, devemos tomar cuidado com o JavaScript. Muito <a title="responseXML" href="http://juliogreff.net/responsexml/">XML</a> gera muitas chamadas ao DOM, e isso leva tempo. Aí o <a title="JavaScript Object Notation" href="http://juliogreff.net/javascript-object-notation/">JSON</a> entra em cena.</p>
<p>O Profiler do Firebug pode ser muito útil, já que ele monitora o tempo de execução da sua aplicação e das requisições que ela faz.</p>
<p>Bem, é isso. Quem sabe um dia veremos uma aplicação destas. Estou trabalhando em uma função que faça boa parte disso, espero que consiga terminar. Fui!</p>


<h3>Posts Relacionados</h3><ul><li><a href='http://juliogreff.net/hijax-ajax-acessivel/' rel='bookmark' title='Permanent Link: Hijax: Ajax Acessível'>Hijax: Ajax Acessível</a></li>
<li><a href='http://juliogreff.net/ajax-vs-acessibilidade/' rel='bookmark' title='Permanent Link: Ajax vs. Acessibilidade'>Ajax vs. Acessibilidade</a></li>
<li><a href='http://juliogreff.net/fila-de-requisicoes-em-ajax/' rel='bookmark' title='Permanent Link: Fila de Requisições em Ajax'>Fila de Requisições em Ajax</a></li>
<li><a href='http://juliogreff.net/ajax-vs-moda-vs-performance/' rel='bookmark' title='Permanent Link: Ajax vs. Moda vs. Performance'>Ajax vs. Moda vs. Performance</a></li>
<li><a href='http://juliogreff.net/ajax-requisicoes-head/' rel='bookmark' title='Permanent Link: Ajax: Requisições HEAD'>Ajax: Requisições HEAD</a></li>
</ul>]]></content:encoded>
			<wfw:commentRss>http://juliogreff.net/a-aplicacao-ajax-perfeita/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Desenvolver com Rails não tem graça&#8230;</title>
		<link>http://juliogreff.net/desenvolver-com-rails-nao-tem-graca/</link>
		<comments>http://juliogreff.net/desenvolver-com-rails-nao-tem-graca/#comments</comments>
		<pubDate>Mon, 28 May 2007 22:09:08 +0000</pubDate>
		<dc:creator>Julio Greff</dc:creator>
				<category><![CDATA[Server-Side]]></category>
		<category><![CDATA[filosofia]]></category>
		<category><![CDATA[rails]]></category>
		<category><![CDATA[ruby]]></category>

		<guid isPermaLink="false">http://www.juliogreff.blog.br/desenvolver-com-rails-nao-tem-graca/</guid>
		<description><![CDATA[Ontem, depois de uma longa luta para fazer a instalação, comecei a brincar no Rails. Comecei lendo o tutorial &#8220;Rails para Sua Diversão e Lucro&#8220;, de Ronaldo Melo Ferraz (desculpem, perdi o linklink arrumado, valeu Rafael). Lê aqui, codifica um pouco ali, exclui lá, modifica sei lá onde&#8230; Tudo, menei lá onde&#8230; Tudo, menos um [...]

<h3>Posts Relacionados</h3><ul><li><a href='http://juliogreff.net/nao-validou-e-agora/' rel='bookmark' title='Permanent Link: Não validou. E agora?'>Não validou. E agora?</a></li>
<li><a href='http://juliogreff.net/diz-que-ate-nao-e-um-mau-blog/' rel='bookmark' title='Permanent Link: Diz que até não é … um mau blog'>Diz que até não é … um mau blog</a></li>
<li><a href='http://juliogreff.net/backup-um-salvador-de-vidas/' rel='bookmark' title='Permanent Link: Backup: Um Salvador de Vidas'>Backup: Um Salvador de Vidas</a></li>
<li><a href='http://juliogreff.net/comodismo-vs-inovacao/' rel='bookmark' title='Permanent Link: Comodismo vs. Inovação'>Comodismo vs. Inovação</a></li>
<li><a href='http://juliogreff.net/codecast-5-frameworks/' rel='bookmark' title='Permanent Link: CodeCast #5 &#8211; Frameworks'>CodeCast #5 &#8211; Frameworks</a></li>
</ul>]]></description>
			<content:encoded><![CDATA[<p>Ontem, depois de uma longa luta para fazer a instalação, comecei a brincar no <a href="http://www.rubyonrails.org" rel="external" title="Ruby on Rails">Rails</a>. Comecei lendo o tutorial &#8220;<a href="http://kb.reflectivesurface.com/br/tutoriais/railsDiversaoLucro/" rel="external" title="Rails para Sua Diversão e Lucro">Rails para Sua Diversão e Lucro</a>&#8220;, de Ronaldo Melo Ferraz (<del datetime="2007-05-30T22:21:55+00:00">desculpem, perdi o link</del>link arrumado, valeu Rafael). Lê aqui, codifica um pouco ali, exclui lá, modifica sei lá onde&#8230; Tudo, menei lá onde&#8230; Tudo, menos um simples processo: criar arquivos. Pelo menos foi só esse que notei.</p>
<p>Avançando um pouco mais no tutorial, resolvi começar uma aplicação de teste, seguindo aquilo que eu já havia aprendido. A coisa mais sem graça que poderia existir, acreditem. Por quê? Não tem aquela emoção, sabe&#8230;</p>
<p>Você não precisa criar arquivos (o Rails faz boa parte do trabalho a partir dos geradores), até o momento não vi uma única linha de SQL (é possível usar, segundo o tutorial, mas ainda não vi necessidade), todas as operações no banco de dados são extremamente simples, não precisei nem especificar URLs para os arquivos. Por isso não tem graça, o Rails faz tudo sozinho! Eu quase nem programei!</p>
<p>Agora, falando sério. Gostei do Rails, gostei mesmo. Um framework muito bem pensado e bem feito, tudo automatizado, pouca configuração. Até a programação quase não existe pra fazer coisas mais simples (como minha <acronym title="Aplicação de Testes">apliteste</acronym>). Feito para Ruby, o Rails permite a você se concentrar na parte criativa da programação, e cuida do trabalho pesado. Com apenas algumas horas de trabalho já tenho uma aplicação quase pronta (pra testes, claro), incluindo o layout, que pode ser desenvolvido ao mesmo tempo que a programação sem problemas, pelo menos para mim.</p>
<p>Amigos programadores, recomendo uma olhada no Rails. Dê uma chance a ele, e você vai dizer &#8220;Como não experimentei isso antes?&#8221;. Palavra de alguém que nunca pensou em abandonar o PHP, até porque pra abandonar uma coisa você tem que se aplicar nela, o que não foi o meu caso.</p>
<p><strong>Observação:</strong> tenho um conhecimento mínimo de Rails, e resolvi compartilhar minhas primeiras impressões. Se falei alguma bobagem, me desculpem, e se possível avise nos comentários.</p>


<h3>Posts Relacionados</h3><ul><li><a href='http://juliogreff.net/nao-validou-e-agora/' rel='bookmark' title='Permanent Link: Não validou. E agora?'>Não validou. E agora?</a></li>
<li><a href='http://juliogreff.net/diz-que-ate-nao-e-um-mau-blog/' rel='bookmark' title='Permanent Link: Diz que até não é … um mau blog'>Diz que até não é … um mau blog</a></li>
<li><a href='http://juliogreff.net/backup-um-salvador-de-vidas/' rel='bookmark' title='Permanent Link: Backup: Um Salvador de Vidas'>Backup: Um Salvador de Vidas</a></li>
<li><a href='http://juliogreff.net/comodismo-vs-inovacao/' rel='bookmark' title='Permanent Link: Comodismo vs. Inovação'>Comodismo vs. Inovação</a></li>
<li><a href='http://juliogreff.net/codecast-5-frameworks/' rel='bookmark' title='Permanent Link: CodeCast #5 &#8211; Frameworks'>CodeCast #5 &#8211; Frameworks</a></li>
</ul>]]></content:encoded>
			<wfw:commentRss>http://juliogreff.net/desenvolver-com-rails-nao-tem-graca/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>Vale a pena arriscar em novas tecnologias?</title>
		<link>http://juliogreff.net/vale-a-pena-arriscar-em-novas-tecnologias/</link>
		<comments>http://juliogreff.net/vale-a-pena-arriscar-em-novas-tecnologias/#comments</comments>
		<pubDate>Thu, 24 May 2007 22:18:07 +0000</pubDate>
		<dc:creator>Julio Greff</dc:creator>
				<category><![CDATA[Diversos]]></category>
		<category><![CDATA[filosofia]]></category>

		<guid isPermaLink="false">http://www.juliogreff.blog.br/vale-a-pena-arriscar-em-novas-tecnologias/</guid>
		<description><![CDATA[Programar para o lado cliente é uma tarefa realmente divertida. Nunca gostei muito de programação compilada, como C, nem de scripts server-side, como PHP, apesar de ter simpatizado com Ruby. Mas nem tudo são rosas, e existem várias diferenças entre os browsers. Aliás, entre os browsers e o IE. Existe muita coisa interessante na área [...]

<h3>Posts Relacionados</h3><ul><li><a href='http://juliogreff.net/comodismo-vs-inovacao/' rel='bookmark' title='Permanent Link: Comodismo vs. Inovação'>Comodismo vs. Inovação</a></li>
<li><a href='http://juliogreff.net/e-a-tal-da-web-20/' rel='bookmark' title='Permanent Link: E a tal da Web 2.0?'>E a tal da Web 2.0?</a></li>
<li><a href='http://juliogreff.net/ajax-online-inovando-de-novo/' rel='bookmark' title='Permanent Link: Ajax Online Inovando de Novo'>Ajax Online Inovando de Novo</a></li>
<li><a href='http://juliogreff.net/caindo-na-real/' rel='bookmark' title='Permanent Link: Caindo na Real'>Caindo na Real</a></li>
<li><a href='http://juliogreff.net/digg-pra-que/' rel='bookmark' title='Permanent Link: Digg pra quê?'>Digg pra quê?</a></li>
</ul>]]></description>
			<content:encoded><![CDATA[<p>Programar para o lado cliente é uma tarefa realmente divertida. Nunca gostei muito de programação compilada, como C, nem de scripts server-side, como PHP, apesar de ter simpatizado com Ruby. Mas nem tudo são rosas, e existem várias diferenças entre os browsers. Aliás, entre os browsers e o IE.</p>
<p>Existe muita coisa interessante na área de client-side pra se aprender hoje em dia. O problema é que algumas tecnologias só funcionam em softwares específicos, o que nos faz pensar se realmente vale a pena.</p>
<p>E aí? Avançar, e aprender alguma coisa diferente, ou estagnar, e se especializar no que já se domina? Isso é uma questão de gosto, e também de filosofia.</p>
<p>Na minha opinião, baseada na vida inteira que tenho pela frente, aprender novas tecnologias, mas que caminham para um certo padrão, como <abbr title="Scalable Vector Graphics">SVG</abbr>, que já consta no W3C, pode ser muito útil, e trazer resultados no mínimo interessantes.</p>
<p>Mas também sou um entusiasta, e tenho admiração por muita coisa presente no Firefox (e algumas coisas do Opera): <abbr title="XML User Interface Language">XUL</abbr>, <abbr title="ECMA Script for XML">E4X</abbr>, Canvas&#8230; Tecnologias pouco difundidas, relativamente recentes e, sem dúvida, muito poderosas para seus objetivos.</p>
<p>O problema é que algumas dessas tecnologias são quase-específicas, e aprendê-las restringe um pouco nosso campo de trabalho (em partes, já que será teremos um item a mais no currículo). Não acredita? Experimente morar em uma cidade atrasada, em que o pessoal pensa que Ajax é uma nova tecnologia da Macromedia (acreditem, ouvi essa pérola de um &#8220;desenvolvedor&#8221; Flash daqui). Isso quem já ouviu falar de Ajax, que é um número muito reduzido. Ninguém acredita em seu trabalho porque pra eles isso não existe. Novas tecnologias, principalmente as mais desconhecidas por quem compra nossos serviços, podem acarretar esse tipo de problema. A menos que você trabalhe com quem entende do assunto, e entende que você domina uma tecnologia com enorme potencial.</p>
<p>A solução que encontrei pra mim, que tenho um tempo livre considerável, é conciliar as duas coisas: especializar-se no que já existe e é conhecido (JavaScript e Ajax, no meu caso) na maior parte do tempo, e sempre que possível dar uma espiadinha em coisas novas. Não estou dizendo para virar um especialista em XUL, nem um guru em E4X, mas saber no mínimo o basicão, e com o tempo ir aumentando o conhecimento. Esse tipo de tecnologia é bastante promissor, embora talvez demore muito pra estourar. Já vi exemplos impressionantes usando JavaScript + XUL + SVG + Ajax, mas aí caímos na limitação do software.</p>
<p>Uma coisa que você deve ter em mente: isso se aplica apenas as linguagens client-side, que são interpretadas, e podem ter comportamentos diferentes (ou mesmo nem ter comportamento em alguns casos) em cada software. Em outros lados a coisa funciona de maneira um pouco diferente.</p>
<p>Tudo é uma questão de saber definir as prioridades, e dosar o novo e o velho. Adicionar alguns diferenciais em seu currículo nunca será ruim. E você, mantém-se atualizado, ou só especializa-se no que já conhece?</p>
<p class="post-see">Voltei a falar sobre novas técnicas, sob uma óptica diferente, em <a href="http://juliogreff.net/comodismo-vs-inovacao/" title="Comodismo vs. Inovação">Comodismo vs. Inovação</a>.</p>


<h3>Posts Relacionados</h3><ul><li><a href='http://juliogreff.net/comodismo-vs-inovacao/' rel='bookmark' title='Permanent Link: Comodismo vs. Inovação'>Comodismo vs. Inovação</a></li>
<li><a href='http://juliogreff.net/e-a-tal-da-web-20/' rel='bookmark' title='Permanent Link: E a tal da Web 2.0?'>E a tal da Web 2.0?</a></li>
<li><a href='http://juliogreff.net/ajax-online-inovando-de-novo/' rel='bookmark' title='Permanent Link: Ajax Online Inovando de Novo'>Ajax Online Inovando de Novo</a></li>
<li><a href='http://juliogreff.net/caindo-na-real/' rel='bookmark' title='Permanent Link: Caindo na Real'>Caindo na Real</a></li>
<li><a href='http://juliogreff.net/digg-pra-que/' rel='bookmark' title='Permanent Link: Digg pra quê?'>Digg pra quê?</a></li>
</ul>]]></content:encoded>
			<wfw:commentRss>http://juliogreff.net/vale-a-pena-arriscar-em-novas-tecnologias/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>POO na Vida Real</title>
		<link>http://juliogreff.net/poo-na-vida-real/</link>
		<comments>http://juliogreff.net/poo-na-vida-real/#comments</comments>
		<pubDate>Wed, 23 May 2007 22:10:15 +0000</pubDate>
		<dc:creator>Julio Greff</dc:creator>
				<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[filosofia]]></category>
		<category><![CDATA[poo]]></category>

		<guid isPermaLink="false">http://www.juliogreff.blog.br/poo-na-vida-real/</guid>
		<description><![CDATA[A Orientação a Objetos na programação client-side é um poderoso recurso, tornando tudo mais fácil, rápido e compacto, economizando preciosos bytes. A programação orientada a objetos é uma arte, e saber quando e como usar tornam você um artista. Aceita o desafio de aprender uma nova técnica? Então vamos lá. Vou falar do pouco que [...]

<h3>Posts Relacionados</h3><ul><li><a href='http://juliogreff.net/controle-de-erros-em-js/' rel='bookmark' title='Permanent Link: Controle de Erros em JS'>Controle de Erros em JS</a></li>
<li><a href='http://juliogreff.net/caindo-na-real/' rel='bookmark' title='Permanent Link: Caindo na Real'>Caindo na Real</a></li>
<li><a href='http://juliogreff.net/estendendo-objetos-dom/' rel='bookmark' title='Permanent Link: Estendendo Objetos DOM'>Estendendo Objetos DOM</a></li>
<li><a href='http://juliogreff.net/lancada-a-mootools-12/' rel='bookmark' title='Permanent Link: Lançada a Mootools 1.2'>Lançada a Mootools 1.2</a></li>
<li><a href='http://juliogreff.net/fila-de-requisicoes-em-ajax/' rel='bookmark' title='Permanent Link: Fila de Requisições em Ajax'>Fila de Requisições em Ajax</a></li>
</ul>]]></description>
			<content:encoded><![CDATA[<p>A <a href="http://juliogreff.net/javascript-orientado-a-objetos-parte-1/" title="JavaScript Orientado a Objetos - Parte 1">Orientação a Objetos na programação client-side</a> é um poderoso recurso, tornando tudo mais fácil, rápido e compacto, economizando preciosos bytes. A programação orientada a objetos é uma arte, e saber quando e como usar tornam você um artista. Aceita o desafio de aprender uma nova técnica? Então vamos lá.</p>
<p>Vou falar do pouco que sei sobre a aplicação real da<br />
<abbr title="Programação Orientada a Objeto">POO</abbr>. O melhor lugar pra se implementar a <abbr title="Programação Orientada a Objeto">POO</abbr> são os objetos DOM, pois eles já tem uma classe criada, e o <a href="http://juliogreff.net/estendendo-objetos-dom/" title="Estendendo Objetos DOM">JavaScript nos permite extendê-la</a>.<br />
Vamos ao primeiro exemplo: um menu expansível. Normalmente, usamos algo próximo disso:</p>
<pre><code>menu.onclick = function() { toggle($("menu"); }</code></pre>
<p>Descontando a parte obstrusiva, nada parece errado, e na verdade não está. Toda vez que clicamos no menu, ele executa a função <code>toggle</code>, que executaria outra função para saber se o menu estava expandido ou não (geralmente uma verificação na classe CSS). Mas podemos melhorar.</p>
<p>Consideremos tudo como um objeto. Nesse caso, o menu seria um objeto. Portanto, ele precisa de uma função construtora para podermos cria-lo. Precisaremos dos seguintes atributos e métodos:</p>
<ul>
<li><code>element</code>: o elemento DOM que representa o menu.</li>
<li><code>contracted</code>: atributo booleano, indica se o menu está contraído ou não.</li>
<li><code>toggle()</code>: nossa querida função que irá contrair e expandir o menu.</li>
</ul>
<p>Poderíamos adicionar <code>expand()</code> e <code>contract()</code>, mas vamos resumir. Vejamos a função construtora:</p>
<pre><code>function Menu(element) {
  this.element = element;
  this.element.onclick = function() { this.toggle(); }; // obstrusivo, dá um desconto né?
  this.element.className = "contract-menu"; // já escondemos o menu
  this.contracted = true; // e indicamos que ele está escondido
  this.toggle = function() {
    if(this.contracted === true) {
	  this.element.className = "expand-menu";
	  this.contracted = false;
	}
    else {
	  this.element.className = "contract-menu";
	  this.contracted = true;
	}
  }
}
</code></pre>
<p>Peraí, não aumentamos o tamanho de código? Sim, mas a maravilha é exatamente essa. Você precisará desse código apenas uma vez, e alguns caracteres criam vários e vários menus com as mesmas propriedades. Um <code>var menu = new Menu($("elemento"))</code> resolve tudo. E também poderíamos reutilizar o código fazendo sub-menus, ou adicionando novos métodos em tempo de execução, caso sejam necessários. Interessante, não?</p>
<p>A implementação em objetos DOM é extremamente simples. Tudo que utilizar um estado (variáveis de instância) pode partir pra orientação a objeto. Agora vamos para algo menos visível.</p>
<p>Uma requisição em Ajax tem variáveis de instância. Também muito simples depois que se pega a essência da coisa. Vejamos a função construtora:</p>
<pre><code>function Ajax(url /*, options*/) { // simples, sem opções por agora
  this.url = url;
  var requestResponses = reqAjax(this.url); // variável privada
  // a função acima já usa POO, não vamos nos preocupar com ela dessa vez
  // ela retorna { responseText, responseXML, errors }
  this.getResponseText = function() {
    if(typeof requestResponses.errors != "undefined") this.throw(requestResponses.errors);
    else return requestResponses.responseText;
  }
  this.getResponseXML = function() {
    if(typeof requestResponses.errors != "undefined") this.throw(requestResponses.errors);
    else return requestResponses.responseXML;
  }
  this.throw = function(errors) {
    if(typeof errors == "undefined") return requestResponses.errors;
	else throw("Requisição retornou erros: " + errors);
  }
}
</code></pre>
<p>Só uma função extremamente simplória e não muito útil. Só pra fazer uma demonstração (estava tentando pensar em algo mais elaborado, mas fugiu da mente). Realmente deseja um desafio? Tente <strong>criar</strong> a função <code>reqAjax</code> com tudo que ela tem direito. Um quebra-cabeça, literalmente.</p>
<p>Quer mais? Bom, então recomendo ler um pouco sobre Ruby. Sim, é server-side, não tem nada a ver, mas a orientação a objeto é realmente interessante. Extremamente recomendado.</p>
<p>Eu até queria postar mais alguns exemplos, mas só vieram a mente coisas muito grandes, e não ando com tempo pra isso. Podem deixar sugestões nos comentários, aí eu volto e edito o post. Fui!</p>


<h3>Posts Relacionados</h3><ul><li><a href='http://juliogreff.net/controle-de-erros-em-js/' rel='bookmark' title='Permanent Link: Controle de Erros em JS'>Controle de Erros em JS</a></li>
<li><a href='http://juliogreff.net/caindo-na-real/' rel='bookmark' title='Permanent Link: Caindo na Real'>Caindo na Real</a></li>
<li><a href='http://juliogreff.net/estendendo-objetos-dom/' rel='bookmark' title='Permanent Link: Estendendo Objetos DOM'>Estendendo Objetos DOM</a></li>
<li><a href='http://juliogreff.net/lancada-a-mootools-12/' rel='bookmark' title='Permanent Link: Lançada a Mootools 1.2'>Lançada a Mootools 1.2</a></li>
<li><a href='http://juliogreff.net/fila-de-requisicoes-em-ajax/' rel='bookmark' title='Permanent Link: Fila de Requisições em Ajax'>Fila de Requisições em Ajax</a></li>
</ul>]]></content:encoded>
			<wfw:commentRss>http://juliogreff.net/poo-na-vida-real/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Caindo na Real</title>
		<link>http://juliogreff.net/caindo-na-real/</link>
		<comments>http://juliogreff.net/caindo-na-real/#comments</comments>
		<pubDate>Sat, 17 Feb 2007 17:26:32 +0000</pubDate>
		<dc:creator>Julio Greff</dc:creator>
				<category><![CDATA[Diversos]]></category>
		<category><![CDATA[filosofia]]></category>

		<guid isPermaLink="false">http://www.juliogreff.blog.br/?p=64</guid>
		<description><![CDATA[Esse tal de post agendado é uma mão na roda. Apesar de ter deixado pra postar tudo no feriado de carnaval (não, não havia pensado nisso antes, pobre dos agregadores), a idéia está sendo ótima. Também já tinha um post agendado pra hoje, mas vou pula-lo pro dia seguinte. Creio que essa postagem deve ser [...]

<h3>Posts Relacionados</h3><ul><li><a href='http://juliogreff.net/poo-na-vida-real/' rel='bookmark' title='Permanent Link: POO na Vida Real'>POO na Vida Real</a></li>
<li><a href='http://juliogreff.net/vale-a-pena-arriscar-em-novas-tecnologias/' rel='bookmark' title='Permanent Link: Vale a pena arriscar em novas tecnologias?'>Vale a pena arriscar em novas tecnologias?</a></li>
<li><a href='http://juliogreff.net/digg-pra-que/' rel='bookmark' title='Permanent Link: Digg pra quê?'>Digg pra quê?</a></li>
<li><a href='http://juliogreff.net/comodismo-vs-inovacao/' rel='bookmark' title='Permanent Link: Comodismo vs. Inovação'>Comodismo vs. Inovação</a></li>
<li><a href='http://juliogreff.net/yoomp-primeiras-impressoes/' rel='bookmark' title='Permanent Link: Yoomp &#8211; Primeiras Impressões'>Yoomp &#8211; Primeiras Impressões</a></li>
</ul>]]></description>
			<content:encoded><![CDATA[<p>Esse tal de post agendado é uma mão na roda. Apesar de ter deixado pra postar tudo no feriado de carnaval (não, não havia pensado nisso antes, pobre dos agregadores), a idéia está sendo ótima. Também já tinha um post agendado pra hoje, mas vou pula-lo pro dia seguinte. Creio que essa postagem deve ser mais &#8220;urgente&#8221;.<br />
Gosto de ler. É, eu gosto muito de ler. Não lembro onde, mas achei um link para o livro <a href="http://gettingreal.37signals.com" rel="external" title="Getting Real">Getting Real</a>, da <a href="http://www.37signals.com" rel="external" title="37 Signals">37 Signals</a>. O melhor não é isso, ele é todo em <a href="http://gettingreal.37signals.com/GR_por.php" title="Getting Real em Português - Cainda na Real" rel="external">português</a>. Creio que não li a versão inteira (pela nota que tinha no final), mas o que li era muito bom. É uma ótima leitura, muito recomendada. Você pode melhorar muito seu estilo de desenvolvimento se tiver a mente aberta.<br />
Concordo com o primeiro parágrafo do livro:</p>
<blockquote><p>Quer construir uma aplicação web de sucesso? Então é hora de Cair na Real. Caindo na Real é o menor, mais rápido e melhor caminho para construir software.</p></blockquote>
<p>Mudei meu jeito de pensar. A coisa faz sentido, apesar da consciência pesar pro outro lado (acho que faz parte do instinto). A primeira coisa que será mudada será o FrameWorX.<br />
Há muito a ser repensado. A primeira coisa que fiz foi a visão:</p>
<blockquote><p>Mais funcional, menos adicional</p></blockquote>
<p>Explicação: sempre achei os frameworks existentes grandes demais. Não que seja tudo supérfluo, mas grande parte deles não se adaptam a nossa realidade (sim, o JavaScript no Brasil está atrasado comparando-se com lá fora). Veja o <a href="http://dojotoolkit.org" rel="external" title="Dojo">Dojo</a>, é um framework gigantesco, tão grande que pode ser usado até fora do browser (isso deve ser legal!). Achei que precisava de alguma coisa que pudesse ser 100% usada. Não encontrei, tudo que achei era pequeno demais (só DOM, só Ajax, só isso, só aquilo).  Ou faltava ou sobrava.<br />
Quando comecei o FrameWorX, tinha isso em mente. Mas confesso: a vontade de ser maior que a concorrência (que concorrência? Mas queria ser maior) se apoderou do meu ser. Não faz mal, esse sentimento às vezes ajuda a gente a aprender mais. Aí o objetivo inicial foi por água abaixo. Até que li o GR. Mudei o escopo, mudei o estilo, enfim.<br />
O projeto está paralisado por uns dois ou três dias, até que eu decida o que fica e o que sai, o que entra e o que não vai entrar. Aí passarei às próximas etapas.<br />
Caí na real. Desenvolver menos e melhor. Menos é mais. Convido você a <a href="http://gettingreal.37signals.com/GR_por.php" rel="external" title="Caindo na Real">cair na real</a> também. Vale a pena, e será muito bom. Até!</p>


<h3>Posts Relacionados</h3><ul><li><a href='http://juliogreff.net/poo-na-vida-real/' rel='bookmark' title='Permanent Link: POO na Vida Real'>POO na Vida Real</a></li>
<li><a href='http://juliogreff.net/vale-a-pena-arriscar-em-novas-tecnologias/' rel='bookmark' title='Permanent Link: Vale a pena arriscar em novas tecnologias?'>Vale a pena arriscar em novas tecnologias?</a></li>
<li><a href='http://juliogreff.net/digg-pra-que/' rel='bookmark' title='Permanent Link: Digg pra quê?'>Digg pra quê?</a></li>
<li><a href='http://juliogreff.net/comodismo-vs-inovacao/' rel='bookmark' title='Permanent Link: Comodismo vs. Inovação'>Comodismo vs. Inovação</a></li>
<li><a href='http://juliogreff.net/yoomp-primeiras-impressoes/' rel='bookmark' title='Permanent Link: Yoomp &#8211; Primeiras Impressões'>Yoomp &#8211; Primeiras Impressões</a></li>
</ul>]]></content:encoded>
			<wfw:commentRss>http://juliogreff.net/caindo-na-real/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Cliente x Seu Ego</title>
		<link>http://juliogreff.net/cliente-x-seu-ego/</link>
		<comments>http://juliogreff.net/cliente-x-seu-ego/#comments</comments>
		<pubDate>Mon, 11 Dec 2006 22:31:11 +0000</pubDate>
		<dc:creator>Julio Greff</dc:creator>
				<category><![CDATA[WebStandards]]></category>
		<category><![CDATA[Diversos]]></category>
		<category><![CDATA[filosofia]]></category>
		<category><![CDATA[validação]]></category>
		<category><![CDATA[web standards]]></category>

		<guid isPermaLink="false">http://www.juliogreff.blog.br/?p=45</guid>
		<description><![CDATA[Hoje volto naquela polêmica de &#8220;Validar x Não Validar&#8221;, polêmica que foi &#8220;ressucitada&#8221; pelo Meio Bit, em Webstandards da W3C são apenas uma lista de desejos?. Continuo defendendo aquele meu velho ponto de vista, mas desta vez vou ampliar um pouco minha &#8220;visão da coisa&#8221;. Impor o Firefox como browser a ser escolhido pelo seu [...]

<h3>Posts Relacionados</h3><ul><li><a href='http://juliogreff.net/clientside-mostre-seu-codigo/' rel='bookmark' title='Permanent Link: ClientSide: Mostre seu Código!'>ClientSide: Mostre seu Código!</a></li>
<li><a href='http://juliogreff.net/nao-validou-e-agora/' rel='bookmark' title='Permanent Link: Não validou. E agora?'>Não validou. E agora?</a></li>
<li><a href='http://juliogreff.net/vale-a-pena-arriscar-em-novas-tecnologias/' rel='bookmark' title='Permanent Link: Vale a pena arriscar em novas tecnologias?'>Vale a pena arriscar em novas tecnologias?</a></li>
<li><a href='http://juliogreff.net/divless/' rel='bookmark' title='Permanent Link: DIVless'>DIVless</a></li>
<li><a href='http://juliogreff.net/caindo-na-real/' rel='bookmark' title='Permanent Link: Caindo na Real'>Caindo na Real</a></li>
</ul>]]></description>
			<content:encoded><![CDATA[<p>Hoje volto naquela polêmica de <a href="http://juliogreff.net/nao-validou-e-agora/" title="Não Validou. E Agora?">&#8220;Validar x Não Validar&#8221;</a>, polêmica que foi &#8220;ressucitada&#8221; pelo <a href="http://www.meiobit.com" rel="external" title="Meio Bit">Meio Bit</a>, em <a href="http://www.meiobit.com/forum/geral/webstandards_da_w3c_sao_apenas_uma_lista_de_desejos" rel="external" title="Webstandards da W3C são apenas uma lista de desejos?">Webstandards da W3C são apenas uma lista de desejos?</a>.</p>
<p>Continuo defendendo aquele meu velho ponto de vista, mas desta vez vou ampliar um pouco minha &#8220;visão da coisa&#8221;.</p>
<p>Impor o Firefox como browser a ser escolhido pelo seu cliente é suicídio. Nem tente. No máximo uma sugestão. Mas aí surge um problema: se 80% dos internautas usam Internet Explorer, vale a pena usar os padrões? Já voltamos aí.</p>
<p>Por mais que seu ego diga &#8220;Valida logo!&#8221;, seu cliente diz &#8220;Termina Logo!&#8221;. No caso, IE, gambiarra, hack, defeito, dor de cabeça&#8230; Se você desenvolve primeiro no Firefox, há uma grande possibilidade de tudo estar validadinho. Se você desenvolve primeiro no IE, nem vou falar.</p>
<p>E aí, já decidiu? Crie tudo <strong>primeiro</strong> para o Firefox. Quando tudo estiver direitinho, faça as alterações, gambiarras, hacks, comentários condicionais&#8230; Vai tudo estar pronto antes (por mais que não pareça), e você satisfez seu ego (isso é bom, né?) e seu cliente (que vai estar feliz por funcionar 100% no IE e por você ter entregue na hora). Além disso, sua impressora fica livre de ter que imprimir alguns currículos&#8230;</p>
<p>E a pergunta de sempre: Validar ou não? Sim, sempre que possível (nem sempre há tempo). Não perca seu emprego por um bug do seu código ou do W3C, siga feliz!</p>


<h3>Posts Relacionados</h3><ul><li><a href='http://juliogreff.net/clientside-mostre-seu-codigo/' rel='bookmark' title='Permanent Link: ClientSide: Mostre seu Código!'>ClientSide: Mostre seu Código!</a></li>
<li><a href='http://juliogreff.net/nao-validou-e-agora/' rel='bookmark' title='Permanent Link: Não validou. E agora?'>Não validou. E agora?</a></li>
<li><a href='http://juliogreff.net/vale-a-pena-arriscar-em-novas-tecnologias/' rel='bookmark' title='Permanent Link: Vale a pena arriscar em novas tecnologias?'>Vale a pena arriscar em novas tecnologias?</a></li>
<li><a href='http://juliogreff.net/divless/' rel='bookmark' title='Permanent Link: DIVless'>DIVless</a></li>
<li><a href='http://juliogreff.net/caindo-na-real/' rel='bookmark' title='Permanent Link: Caindo na Real'>Caindo na Real</a></li>
</ul>]]></content:encoded>
			<wfw:commentRss>http://juliogreff.net/cliente-x-seu-ego/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

