<?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>Blog de desenvolvimento da Milfont Consulting, Client e Server-side &#187; Software Livre</title>
	<atom:link href="http://www.milfont.org/tech/category/software-livre/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.milfont.org/tech</link>
	<description>Blog da Comunidade Milfont Consulting, uma empresa especializada em desenvolvimento Web, principalmente Javascript, node.js e muito Javascript.</description>
	<lastBuildDate>Thu, 26 Jan 2012 11:30:28 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3</generator>
		<item>
		<title>Meu ambiente de desenvolvimento em 7 items</title>
		<link>http://www.milfont.org/tech/2010/12/29/meu-ambiente-de-desenvolvimento-em-7-items/</link>
		<comments>http://www.milfont.org/tech/2010/12/29/meu-ambiente-de-desenvolvimento-em-7-items/#comments</comments>
		<pubDate>Wed, 29 Dec 2010 23:40:13 +0000</pubDate>
		<dc:creator>cmilfont</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Sistemas Operacionais]]></category>
		<category><![CDATA[Software Livre]]></category>
		<category><![CDATA[Web Development]]></category>
		<category><![CDATA[ambiente]]></category>

		<guid isPermaLink="false">http://www.milfont.org/tech/?p=1142</guid>
		<description><![CDATA[Recebi o convite do brother Abstractj para entrar na brincadeira, aí vai: Máquina/Sistema Operacional Minha máquina tanto de trabalho quanto de casa já há algum tempo é o meu mazelado Vostro 1000 que já se pagou com gosto. Comprei um MacPro 15&#8243; que deve tá chegando por aí. Em casa uso um monitor de 24&#8243; [...]]]></description>
			<content:encoded><![CDATA[<div class="socialize-in-content" style="float:left;"><div class="socialize-in-button socialize-in-button-vertical"><script type="text/javascript">
			<!-- 
				tweetmeme_url = "http://www.milfont.org/tech/2010/12/29/meu-ambiente-de-desenvolvimento-em-7-items/";
				tweetmeme_source = "tweetmeme";
				tweetmeme_style = "";
				
			//-->
			</script>
                        <script type="text/javascript" src="http://tweetmeme.com/i/scripts/button.js"></script></div></div><p>Recebi o <a href="http://twitter.com/#!/abstractj/status/20179766694912000">convite</a> do brother Abstractj para <a href="http://abstractj.com/2010/12/29/meu-ambiente-de-desenvolvimento-em-7-items/">entrar na brincadeira</a>, aí vai:</p>
<h2>Máquina/Sistema Operacional</h2>
<p>Minha máquina tanto de trabalho quanto de casa já há algum tempo é o meu mazelado <a href="http://www.dell.com/us/en/bpi/notebooks/vostronb_1000/pd.aspx?refid=vostronb_1000&amp;s=bpi">Vostro 1000</a> que já se pagou com gosto. Comprei um MacPro 15&#8243; que deve tá chegando por aí. Em casa uso um monitor de 24&#8243; e no trabalho um apenas de 19&#8243;.</p>
<p><a href="http://www.milfont.org/tech/wp-content/uploads/2010/12/98203130.jpg"><img class="aligncenter size-medium wp-image-1148" title="98203130" src="http://www.milfont.org/tech/wp-content/uploads/2010/12/98203130-300x225.jpg" alt="" width="300" height="225" /></a></p>
<p>Uso linux já há alguns anos e ultimamente nos últimos 3 ou 4 exclusivamente Ubuntu, no momento estou com o 10.10. Próxima semana provavelmente começarei a xingar o MacOSX no twitter.</p>
<h2>Editor e IDE</h2>
<p>Bem, eu notei agora que estou ficando velho, quando comecei a trabalhar com Java lá em 1999 eu usava o <a href="http://en.wikipedia.org/wiki/Visual_J%2B%2B">Visual J++</a> que era muito superior a tudo que existia, depois usamos o <a href="http://en.wikipedia.org/wiki/Visual_Caf%C3%A9">Visual Café</a> por pouco tempo até que descobrimos o <a href="http://en.wikipedia.org/wiki/IBM_VisualAge">Visual Age</a> que de longe tinha o Editor ideal para a época, ou pelo menos é do que me lembro. Desde essa época do Visual Age que minha IDE para Java sempre foi Eclipse, tentei algumas vezes Netbeans, mas para Java não dá, só Eclipse mesmo. Meu Eclipse por muito tempo sempre foi o <a href="http://myeclipseide.com/">MyEclipse</a>, acho que desde 2005, não sei como conseguem desenvolver em Java sem ele.</p>
<p>Para web em geral o <a href="http://www.aptana.com/">Aptana</a> é uma boa pedida, as vezes uso também.</p>
<p>Para Ruby eu uso quando posso o <a href="http://www.jetbrains.com/ruby/">RubyMine</a> (tenho uma licença) até quando falta a paciência dele consumir toda a memória do meu velho Vostro, de resto vai de Gedit ou Emacs. Quando chegar meu méqui eu vou usar só RubyMine.</p>
<h2>Terminal</h2>
<p style="text-align: left;">Uso sempre o Bash com algumas <a href="https://github.com/cmilfont/scripts-shell/blob/master/git_milfont_bash.sh">modificações</a>.<a href="http://www.milfont.org/tech/wp-content/uploads/2010/12/console.jpg"><img class="aligncenter size-full wp-image-1145" title="console" src="http://www.milfont.org/tech/wp-content/uploads/2010/12/console.jpg" alt="" width="600" height="390" /></a></p>
<h2>Browser</h2>
<p>Para navegar eu tenho usado o Chrome, mas para desenvolver é sempre com Firefox e os plugins <a href="http://getfirebug.com/">Firebug</a> (e seus complementos <a href="http://developer.yahoo.com/yslow/">YSlow</a>, <a href="http://robertnyman.com/firefinder/">Firefinder</a> e o fantástico <a href="http://www.illumination-for-developers.com/">Illumination</a> que encontrei há pouco tempo),  <a href="https://addons.mozilla.org/en-US/firefox/addon/10869/">JSONView</a> e <a href="http://www.delicious.com/help/installff">Delicious Bookmarks</a> (para consultar as fontes).</p>
<h2>Software</h2>
<p>Basicamente skype, OpenOffice e utilitários de video/musica comuns em qualquer Debian-like.</p>
<h2>Source Code</h2>
<p>Conta <a href="https://github.com/cmilfont">pública</a> e privada no Github. Alguns repositórios internos em clientes no CVS, SVN e GIT. Temos uma meta de substituir tudo pelo Git em todos os clientes, <a href="http://www.milfont.org/tech/2010/06/29/sem-tempo-suficiente/">até de graça</a>.</p>
<h2>Música</h2>
<p>No cliente atual tentamos fazer sempre Pair Programming o tempo todo, então basicamente não dá para ouvir música nessas condições, quando estou sozinho é com o meu N95 + 3g Vivo no <a href="http://www.lastfm.com.br/user/cmilfont">Last.FM em algumas rádio que gosto</a> usando o <a href="http://code.google.com/p/mobbler/">Mobbler</a>.</p>
<p>Vou repassar a brincadeira agora para o <a href="http://twitter.com/#!/rponte">@rponte</a>, <a href="http://twitter.com/#!/rodrigodealer">@rodrigodealer</a> e o <a href="http://twitter.com/#!/mauriciojr">@mauriciojr</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.milfont.org/tech/2010/12/29/meu-ambiente-de-desenvolvimento-em-7-items/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Exploit que redireciona para Bablo me uk</title>
		<link>http://www.milfont.org/tech/2010/08/19/exploit-que-redireciona-para-bablo-me-uk/</link>
		<comments>http://www.milfont.org/tech/2010/08/19/exploit-que-redireciona-para-bablo-me-uk/#comments</comments>
		<pubDate>Fri, 20 Aug 2010 00:09:55 +0000</pubDate>
		<dc:creator>cmilfont</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[seguranca]]></category>
		<category><![CDATA[Software Livre]]></category>
		<category><![CDATA[exploit]]></category>
		<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">http://www.milfont.org/tech/?p=1043</guid>
		<description><![CDATA[Dica rápida para não caírem feito um pato como eu caí.  Hoje fui pesquisar um link do meu próprio blog pelo google e descobri que meu site &#8220;/tech&#8221; inteiro havia sido removido. Pior, o cache do google apontava para um lance estranho. Conferi na ferramenta para webmaster do google e verifiquei que o Googlebot era [...]]]></description>
			<content:encoded><![CDATA[<p>Dica rápida para não caírem feito um pato como eu caí.  Hoje fui pesquisar um link do meu próprio blog pelo google e descobri que meu site &#8220;/tech&#8221; inteiro havia sido removido. Pior, o cache do google apontava para um lance estranho.</p>
<p>Conferi na ferramenta para <a href="https://www.google.com/webmasters/tools/">webmaster do google</a> e verifiquei que o Googlebot era redirecionado para um endereço &#8220;bablo .me .uk&#8221; e as vezes esse endereço se camuflava em outros.</p>
<p>Usando  &#8221;curl -v -A Googlebot http://www.milfont.org/tech&#8221; eu recebia a mensagem:<br />
<code><br />
...<br />
* HTTP 1.0, assume close after body<br />
&lt; HTTP/1.0 301 Moved Permanently<br />
&lt; Date: Thu, 19 Aug 2010 23:55:13 GMT<br />
&lt; Server: Apache<br />
&lt; Location: http://bablo .me .uk/#....<br />
...<br />
</code></p>
<p>Só depois de muita surra procurando nos .htaccess e .php da vida que encontrei <a href="http://blog.unmaskparasites.com/2009/01/19/exploit-redirects-googlebot-to-malware-sites-bablo-me-uk/">nesse link</a> o comentário <a href="http://blog.unmaskparasites.com/2009/01/19/exploit-redirects-googlebot-to-malware-sites-bablo-me-uk/#comment-129">que me salvou</a>.</p>
<p>Procurando com find -name &#8220;*.php&#8221; | xargs grep -E &#8220;eval&#8221; eu encontrei escondido no wp-config.php, pior, estava com muitos espaços para a direita dificultando a visualização:</p>
<p><code><br />
./wp-config.php:                                                eval(base64_decode('ZXJ....<br />
</code></p>
<p>Sei lá quanto tempo procurando essa desgraça, fica a dica se passarem pelo menos tormento. Revisei todas as permissões e atualizei o wordpress, coisa que deveria ter feito há tempos, mas o preguiçoso trabalha mais do que o esperto.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.milfont.org/tech/2010/08/19/exploit-que-redireciona-para-bablo-me-uk/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Frameworks Caseiros 2: A missão</title>
		<link>http://www.milfont.org/tech/2009/06/06/frameworks-caseiros-2-a-missao/</link>
		<comments>http://www.milfont.org/tech/2009/06/06/frameworks-caseiros-2-a-missao/#comments</comments>
		<pubDate>Sat, 06 Jun 2009 19:09:26 +0000</pubDate>
		<dc:creator>cmilfont</dc:creator>
				<category><![CDATA[Design Patterns]]></category>
		<category><![CDATA[Engenharia de Software]]></category>
		<category><![CDATA[Frameworks]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[Melhores práticas]]></category>
		<category><![CDATA[Software Livre]]></category>
		<category><![CDATA[CRUD]]></category>
		<category><![CDATA[framework caseiros]]></category>
		<category><![CDATA[framework proprietário]]></category>
		<category><![CDATA[Otimização]]></category>

		<guid isPermaLink="false">http://www.milfont.org/tech/?p=507</guid>
		<description><![CDATA[Eu participei como desenvolvedor de 4 projetos em Java nos últimos 12 meses, 3 deles tinham algo em comum: tinham uma arquitetura de referência, mais de 4 anos, baseados no struts 1.x, framework caseiro desenvolvido em cima do struts, modicações caseiras em APIs conhecidas sem contribuição com o projeto original [fork antigo ainda por cima], [...]]]></description>
			<content:encoded><![CDATA[<p>Eu participei como desenvolvedor de 4 projetos em Java nos últimos 12 meses, 3 deles tinham algo em comum: tinham uma arquitetura de referência, mais de 4 anos, baseados no struts 1.x, <a href="http://www.milfont.org/tech/2008/01/20/frameworkstools-caseiros-ou-fechados/">framework caseiro</a> desenvolvido em cima do struts, modicações caseiras em APIs conhecidas sem contribuição com o projeto original [fork antigo ainda por cima], código altamente <a href="http://c2.com/cgi/wiki?CouplingAndCohesion">acoplado e sem coesão</a>, arquitetura baseada em <a href="http://www.slideshare.net/peas/justjava-2007-arquitetura-java-ee-paulo-silveira-phillip-calado">BOLOVO</a> e <a href="http://blog.fragmental.com.br/2007/10/31/programadores-profissionais-escrevem-testes-ponto-final/">principalmente sem testes</a> [o último até que estava com uma tentativa de testes de aceitação com o <a href="http://seleniumhq.org/">Selenium</a> mas com grandes dificuldades por conta de todos os problemas].</p>
<p>Em projetos antigos é comum encontrarmos esse tipo de situação, eu mesmo já criei meu framework caseiro em coisa por volta de 6 anos atrás, mas hoje em dia isso não só é algo abominável como um desrespeito pelos profissionais, ainda mais após tanta evolução nos últimos 10 anos.</p>
<p>Conversando com um amigo que trabalha em uma grande empresa de planos de saúde, ele me falou que o &#8220;arquiteto java&#8221; dessa empresa [conhecido por sua fama de criador de "Framearras"] convenceu a diretoria sobre um projeto recente que se baseia no desenvolvimento de um framework específico para a empresa [eles já possuem um framework caseiro que é um terror e bem conhecido por grande parte dos desenvolvedores locais].</p>
<p>É impressionante como não acaba essa tara de desenvolvimento de frameworks caseiros, qual a necessidade de uma empresa que tem TI como meio [e não como fim] de desenvolver um framework para desenvolvimento de software?</p>
<p>Olha que não é de <a href="http://www.milfont.org/blog/archives/137">hoje que eu falo</a> sobre os perigos de frameworks caseiros, mas parece que os defensores desse tipo de abominação se reproduzem como coelhos.</p>
<p>Engraçado que no último projeto que participei eu recebi um treinamento de um dos criadores do framework caseiro que deveríamos usar na construção, alias na continuação de um sistema que está há 5 anos em desenvolvimento sem sinal de algo ir para a produção.</p>
<p>Os argumentos que ele usou foram os seguintes [anotei a frase para não esquecer]:</p>
<blockquote><p>&#8220;Amigos, é importante um framework criado pela propria empresa para padronizarmos o desenvolvimento, diminuindo a curva de aprendizado e ganharmos na produtividade, utilizando padrões consagrados, obtendo reuso nos componentes de negócio e garantindo a manutenibilidade pela fácil criação de código, principalmente CRUD.&#8221;</p></blockquote>
<h2>Segredo do fracasso</h2>
<p>Vou expor algumas considerações sobre essa frase dele:</p>
<h3>Curva de aprendizado</h3>
<p>Se algo é complexo de entender por quem conhece os padrões daquilo que se deseja desenvolver, é porque não serve mesmo. Não há como comparar um software opensource consagrado no mercado onde centenas de milhares de desenvolvedores já aperfeiçoaram com algo feito em casa.</p>
<h3>Ganho na produtividade</h3>
<p>A desculpa número um de todo framework caseiro é a famosa produtividade, sendo que voce sempre perde produtividade porque insere algo fora da normalidade no cotidiano do desenvolvedor. Além do que é insano voce ter uma produtividade no inicio &#8211; se fosse o caso, já que não é &#8211; comprometendo todo o ciclo de vida restante da aplicação por conta disso.</p>
<p>Porque é isso que acontece, todos esses frameworks caseiros são pensados e desenvolvidos para facilitarem a construção de CRUDs no inicio da aplicação e você tem que sacrificar todo o resto para satisfazer esse capricho que pode ser automatizado facilmente com tecnologias atuais.</p>
<h3>Utilização de padrões</h3>
<p>Ninguem pode saber que padrão utilizar antes de saber qual o problema, isso é impossível. Ou vai usar um martelo para furar uma parede ou uma furadeira para pregar um prego.</p>
<h3>Reuso de componentes</h3>
<p>Não existe reuso de objetos de negócios, nenhum processo é semelhante nem que seja na mesma organização ainda mais tentando reusar código por meio ide interface gráfica comum em projetos com dificuldade incial até de separação de pacotes.</p>
<p>Uma alternativa geralmente usada é se comunicar via API ou uma estrutura de serviço como WS, JMS, whatever e não aproveitando uma tela em um sistema distinto.</p>
<h3>Aumento da manutenibilidade</h3>
<p>Sistema como Frameworks caseiros sempre são dificeis de manutenção por que falta documentação, gente que conheça realmente [além dos próprios criadores], código sempre acoplado, falta de testes, maturidade, e principalmente propósito real [como não haver um existente no mesmo segmento].</p>
<p>Em todos os frameworks caseiros que trabalhei e não foram poucos, a manutenção é algo punitivo porque temos que satisfazer o framework e não o negócio.</p>
<h3>Garantia da qualidade</h3>
<p>Não há qualidade alguma em frameworks caseiros, pelo contrário, pelo conjunto de más práticas já expostas, o que acontece na realidade é que os sitemas desenvolvidos com esse tipo de ferramenta apresentam uma qualidade baixíssima.</p>
<h3>Fork em frameworks do mercado</h3>
<p>Problema em fazer um merge no futuro, voce não terá tempo e recurso suficiente para isso. Melhor solução seria submeter patch e codigo para o framework original e acompanhar o desenvolvimento deste. Deixa o desenvolvimento preso a versões antigas.</p>
<h3>Associado a cascata.</h3>
<p>Quase impossível você encontrar um framework caseiro em uma equipe ágeil, até porque isso fere vários dos valores e princípios.</p>
<h3>Menos codificação</h3>
<p>Na verdade duplica a codificação para satisfazer o framework.</p>
<h3>Extensão de classes genericas</h3>
<p>Acoplamento, referencia cíclica, etc&#8230; dá até preguiça de escrever.</p>
<h3>CRUD Driven Design</h3>
<p>Quebra o principio do XP que é fazer o mais importante e crucial primeiro, CRUD nunca é o mais importante. Se voce faz o CRUD primeiro, cria a regra de negócio e refaz todo o CRUD depois.</p>
<p>Geração de codigo sempre reescreve as informações, merge manual.</p>
<p>Frameworks caseiros são #ESFM. Vão complementando com as más práticas&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.milfont.org/tech/2009/06/06/frameworks-caseiros-2-a-missao/feed/</wfw:commentRss>
		<slash:comments>14</slash:comments>
		</item>
		<item>
		<title>Richard Stallman, o coerente!</title>
		<link>http://www.milfont.org/tech/2009/03/24/richard-stallman-o-coerente/</link>
		<comments>http://www.milfont.org/tech/2009/03/24/richard-stallman-o-coerente/#comments</comments>
		<pubDate>Tue, 24 Mar 2009 11:23:12 +0000</pubDate>
		<dc:creator>cmilfont</dc:creator>
				<category><![CDATA[Cloud Computing]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Software Livre]]></category>
		<category><![CDATA[opensource]]></category>
		<category><![CDATA[Richard Stallman]]></category>

		<guid isPermaLink="false">http://www.milfont.org/tech/?p=583</guid>
		<description><![CDATA[Agora que o Java é totalmente livre [antes era apenas open source] o &#8220;judeu&#8221; da vez é o javascript. O texto do Stallman parece ter sido escrito por alguém que não entende nada de serviços, nuvem e principalmente javascript. O que me deixa intrigado é a referência ao John Resig [criador do Jquery] Os novos [...]]]></description>
			<content:encoded><![CDATA[<p>Agora que o <a href="http://www.gnu.org/philosophy/java-trap.html">Java é totalmente livre</a> [antes era apenas open source] o &#8220;judeu&#8221; da vez é o <a href="http://br-linux.org/2009/richard-stallman-anuncia-novo-alvo-a-armadilha-javascript/">javascript</a>.</p>
<p>O texto do Stallman parece ter sido escrito por alguém que não entende nada de serviços, nuvem e principalmente javascript. O que me deixa intrigado é a referência ao <a href="http://ejohn.org/">John Resig</a> [criador do <a href="http://jquery.com/">Jquery]</a></p>
<p>Os novos modelos tem problemas?</p>
<p>O problema é que os problemas reais não foram abordados e o texto não passa de um grande FUD com sugestões tão imbecis quanto impraticáveis. Javascript [no que se refere a Browser] é a tecnologia mais dificil de fechar e o código transportado são informações [no caso de JSON] e não software em si.</p>
<p>Hoje temos problemas sérios na questão de processamento e carregamento que precisam serem resolvidos, além de depreciação de navegadores antigos que ainda teimam em sobreviver.</p>
<p>Mas não vou perder tempo de responder ao lunático, prefiro atacar nos mesmos moldes, sobre sua coerência. Engraçado, RMS quer que derivem meus softwares, mas o <a href="http://www.gnu.org/philosophy/javascript-trap.html">texto dele não pode</a>:</p>
<blockquote><p>Copyright © 2009 Richard Stallman</p>
<p>This work is licensed under the Creative Commons Attribution-No Derivative Works 3.0 United States License.</p></blockquote>
]]></content:encoded>
			<wfw:commentRss>http://www.milfont.org/tech/2009/03/24/richard-stallman-o-coerente/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Slides do evento Primeiro Dia Livre</title>
		<link>http://www.milfont.org/tech/2009/03/21/slides-do-evento-primeiro-dia-livre/</link>
		<comments>http://www.milfont.org/tech/2009/03/21/slides-do-evento-primeiro-dia-livre/#comments</comments>
		<pubDate>Sat, 21 Mar 2009 18:12:20 +0000</pubDate>
		<dc:creator>cmilfont</dc:creator>
				<category><![CDATA[palestras]]></category>
		<category><![CDATA[Redes sociais]]></category>
		<category><![CDATA[Software Livre]]></category>
		<category><![CDATA[Tuangr]]></category>
		<category><![CDATA[web2.0]]></category>
		<category><![CDATA[debian-ce]]></category>
		<category><![CDATA[Open Social]]></category>
		<category><![CDATA[OpenSocial]]></category>
		<category><![CDATA[opensource]]></category>
		<category><![CDATA[orkut]]></category>
		<category><![CDATA[palestra]]></category>
		<category><![CDATA[Social Network]]></category>
		<category><![CDATA[Social Networking]]></category>
		<category><![CDATA[tuang]]></category>
		<category><![CDATA[web 2.0]]></category>
		<category><![CDATA[WEB2]]></category>

		<guid isPermaLink="false">http://www.milfont.org/tech/?p=579</guid>
		<description><![CDATA[Primeiro Dia Livre Opensocial View more presentations from Christiano Milfont.]]></description>
			<content:encoded><![CDATA[<div id="__ss_1178206" style="width: 425px; text-align: left;"><a style="font:14px Helvetica,Arial,Sans-serif;display:block;margin:12px 0 3px 0;text-decoration:underline;" title="Primeiro Dia Livre Opensocial" href="http://www.slideshare.net/cmilfont/primeiro-dia-livre-opensocial?type=powerpoint">Primeiro Dia Livre Opensocial</a><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="425" height="355" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="allowFullScreen" value="true" /><param name="allowScriptAccess" value="always" /><param name="src" value="http://static.slideshare.net/swf/ssplayer2.swf?doc=primeirodialivre-opensocial-090321124741-phpapp02&amp;stripped_title=primeiro-dia-livre-opensocial" /><embed type="application/x-shockwave-flash" width="425" height="355" src="http://static.slideshare.net/swf/ssplayer2.swf?doc=primeirodialivre-opensocial-090321124741-phpapp02&amp;stripped_title=primeiro-dia-livre-opensocial" allowscriptaccess="always" allowfullscreen="true"></embed></object></p>
<div style="font-size: 11px; font-family: tahoma,arial; height: 26px; padding-top: 2px;">View more <a style="text-decoration:underline;" href="http://www.slideshare.net/">presentations</a> from <a style="text-decoration:underline;" href="http://www.slideshare.net/cmilfont">Christiano Milfont</a>.</div>
</div>
]]></content:encoded>
			<wfw:commentRss>http://www.milfont.org/tech/2009/03/21/slides-do-evento-primeiro-dia-livre/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Primeiro Dia Livre 2009</title>
		<link>http://www.milfont.org/tech/2009/03/18/primeiro-dia-livre-2009/</link>
		<comments>http://www.milfont.org/tech/2009/03/18/primeiro-dia-livre-2009/#comments</comments>
		<pubDate>Wed, 18 Mar 2009 17:56:54 +0000</pubDate>
		<dc:creator>cmilfont</dc:creator>
				<category><![CDATA[palestras]]></category>
		<category><![CDATA[Redes sociais]]></category>
		<category><![CDATA[Software Livre]]></category>
		<category><![CDATA[web2.0]]></category>
		<category><![CDATA[debian-ce]]></category>
		<category><![CDATA[palestra]]></category>

		<guid isPermaLink="false">http://www.milfont.org/tech/?p=565</guid>
		<description><![CDATA[Neste sábado, 21 de março, ocorrerá o Primeiro Dia Livre na Faculdade Lourenço Filho. Nesta primeira edição, contaremos com três palestras envolvendo temas como comunidade, aplicações para web e redes sociais. Programação 09:00 &#8211; Como participar das comunidades de software livre? &#8211; Comunidades 10:00 &#8211; Desenvolvimento de aplicações sociais com a OpenSocial &#8211; Christiano Milfont [...]]]></description>
			<content:encoded><![CDATA[<p>Neste sábado, 21 de março, ocorrerá o <a href="http://www.debian-ce.org/node/28">Primeiro Dia Livre</a> na <a href="http://www.flf.edu.br/">Faculdade Lourenço Filho.</a> Nesta primeira edição, contaremos com três palestras envolvendo temas como comunidade, aplicações para web e redes sociais.</p>
<p><strong>Programação</strong></p>
<ul>
<li>09:00 &#8211; Como participar das comunidades de software livre? &#8211; Comunidades</li>
<li>10:00 &#8211; Desenvolvimento de aplicações sociais com a OpenSocial &#8211; Christiano Milfont</li>
<li>11:00 &#8211; Desenvolvimento de aplicações web com Ruby on Rails &#8211; <a href="http://www.mondriantecnologia.com/site/" target="_blank">Coutinho Costa</a></li>
</ul>
<p>Data: 21 de Março de 2009<br />
Local: Faculdade Lourenço Filho &#8211; Rua Barão do Rio Branco, 2101 Centro</p>
<p>Para saber mais: <a href="http://www.debian-ce.org/node/28">Debian-ce</a></p>
<p>Nota no <a href="http://br-linux.org/2009/primeiro-dia-livre-em-fortaleza/">BR-Linux</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.milfont.org/tech/2009/03/18/primeiro-dia-livre-2009/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
		<item>
		<title>Especificação ou implementação?</title>
		<link>http://www.milfont.org/tech/2008/10/27/especificacao-ou-implementacao/</link>
		<comments>http://www.milfont.org/tech/2008/10/27/especificacao-ou-implementacao/#comments</comments>
		<pubDate>Mon, 27 Oct 2008 14:39:44 +0000</pubDate>
		<dc:creator>cmilfont</dc:creator>
				<category><![CDATA[Engenharia de Software]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[JEE]]></category>
		<category><![CDATA[Linguagens]]></category>
		<category><![CDATA[Melhores práticas]]></category>
		<category><![CDATA[Orientação a Objetos]]></category>
		<category><![CDATA[Software Livre]]></category>
		<category><![CDATA[Hibernate]]></category>
		<category><![CDATA[JPA]]></category>
		<category><![CDATA[JSR]]></category>
		<category><![CDATA[Spring]]></category>

		<guid isPermaLink="false">http://www.milfont.org/tech/?p=339</guid>
		<description><![CDATA[A primeira recomendação em qualquer ramo é sempre seguir a especificação, isso é válido para não cairmos em um dos piores anti-patterns que existe, o &#8220;Vendor Lock-in&#8220;. Na indústria do Software passamos por isso frequentemente e a estratégia de Embrace-Extend-Extinguish esteve bastante presente na história dos bancos de dados como exemplo disso. Features proprietárias são sedutoras, [...]]]></description>
			<content:encoded><![CDATA[<p>A primeira recomendação em qualquer ramo é sempre seguir a especificação, isso é válido para não cairmos em um dos piores anti-patterns que existe, o &#8220;<a href="http://www.antipatterns.com/vendorlockin.htm">Vendor Lock-in</a>&#8220;. Na indústria do Software passamos por isso frequentemente e a estratégia de <a href="http://en.wikipedia.org/wiki/Embrace,_extend,_and_extinguish">Embrace-Extend-Extinguish</a> esteve bastante presente na <a href="http://en.wikipedia.org/wiki/Vendor_lock-in#Avoiding_vendor_lock-in_for_computer_software">história dos bancos de dados</a> como exemplo disso.</p>
<p>Features proprietárias são sedutoras, antigamente usávamos grids com paginação no HTML com a propriedade datasrc na tag table, podíamos ler inclusive de arquivos XML. Isso muito antes de Ajax ou até do Firefox. Evidente que só funcionava no IE.</p>

<div class="wp_syntax"><div class="code"><pre class="xml" style="font-family:monospace;"><span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;XML</span> <span style="color: #000066;">ID</span>=<span style="color: #ff0000;">&quot;users&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;?xml</span> <span style="color: #000066;">version</span>=<span style="color: #ff0000;">&quot;1.0&quot;</span> <span style="color: #000000; font-weight: bold;">?&gt;</span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;users<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
	<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;user</span> <span style="color: #000066;">id</span>=<span style="color: #ff0000;">&quot;1&quot;</span> <span style="color: #000066;">name</span>=<span style="color: #ff0000;">&quot;Christiano Milfont&quot;</span><span style="color: #000000; font-weight: bold;">/&gt;</span></span>
	<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;user</span> <span style="color: #000066;">id</span>=<span style="color: #ff0000;">&quot;2&quot;</span> <span style="color: #000066;">name</span>=<span style="color: #ff0000;">&quot;Rafael Ponte&quot;</span><span style="color: #000000; font-weight: bold;">/&gt;</span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/users<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/XML<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
&nbsp;
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;TABLE</span> <span style="color: #000066;">DATASRC</span>=<span style="color: #ff0000;">&quot;#users&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;TR<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;TD<span style="color: #000000; font-weight: bold;">&gt;</span></span><span style="color: #000000; font-weight: bold;">&lt;DIV</span> <span style="color: #000066;">DATAFLD</span>=<span style="color: #ff0000;">&quot;id&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span><span style="color: #000000; font-weight: bold;">&lt;/DIV<span style="color: #000000; font-weight: bold;">&gt;</span></span><span style="color: #000000; font-weight: bold;">&lt;/TD<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;TD<span style="color: #000000; font-weight: bold;">&gt;</span></span><span style="color: #000000; font-weight: bold;">&lt;DIV</span> <span style="color: #000066;">DATAFLD</span>=<span style="color: #ff0000;">&quot;name&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span><span style="color: #000000; font-weight: bold;">&lt;/DIV<span style="color: #000000; font-weight: bold;">&gt;</span></span><span style="color: #000000; font-weight: bold;">&lt;/TD<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/TR<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/TABLE<span style="color: #000000; font-weight: bold;">&gt;</span></span></span></pre></div></div>

<p>Com a popularização do Firefox e a necessidade das aplicações serem CrossBrowser, tivemos que nos adaptar às specs da W3C. Praticamente todas as aplicações WEB precisaram serem reescritas -algumas até hoje ainda só &#8220;rodam&#8221; no IE.</p>
<p>Usar uma Feature proprietária facilita, mas no final você pagará o preço da não interoperabilidade. Agora precisamos usar um Framework Ajax para fazermos coisas que antes era nativo. No IE <a href="http://msdn.microsoft.com/en-us/library/ms535861(VS.85).aspx">tínhamos  até DnD</a>.</p>
<p>Especificação muito mais frágil do que as implementações nos força a criar uma &#8220;Isolation Layer&#8221; como solução de refactoring sem comprometer o sistema. Podemos então usar as features nos beneficiando do que a implementação tem a oferecer sem comprometermos o resultado final, o uso <a href="http://www.milfont.org/tech/2007/10/05/bridge-para-encapsular-o-cross-browser/">fica encapsulado na solução</a>.</p>
<h2>Especificação mal feita</h2>
<p>O problema é quando a definição de uma especificação fica frágil o suficiente &#8211; por problemas políticos &#8211; para forçar um refactoring profundo na mudança entre implementações.</p>
<p>No CEJUG, ocorreu uma <a href="https://cejug.dev.java.net/servlets/BrowseList?list=discussao&amp;by=thread&amp;from=1370683">thread sobre problema com data</a> na JPA, onde eu recomendei retirar a anotação @Temporal &#8211; que já tinha me dado trabalho anteriormente &#8211; e por &#8220;feeling&#8221; eu sabia que o problema era nessa anotação, mas nunca tinha pesquisado para saber o real porquê. Como quem ganhou dinheiro com Feeling no Brasil foi apenas <a href="http://www.youtube.com/watch?v=PfRrJyMLc-s">Morris Albert</a> &#8211; by <a href="http://www.contraditorium.com/2007/03/20/o-grande-crash-de-2007/">Cardoso</a> &#8211; eu dei uma pesquisada sobre isso e descobri que [como escrevei no email]:</p>
<blockquote><p>From	CMilfont<br />
to	discussao@cejug.dev.java.net<br />
date	Mon, Oct 27, 2008 at 9:54 AM<br />
subject	Re: [cejug-discussao] problema com data</p>
<p>Dei uma pesquisada e a conclusão que cheguei é:<br />
A spec determina que propriedades do tipo Date e Calendar [util java] devem ter a anotação @Temporal.<br />
TopLink obriga, se não tiver lança uma exceção ValidationException [pelo menos foi o que vi na documentação dele, não cheguei a testar].<br />
Hibernate é opcional, mas se você colocar ele devolve uma instância de Calendar, porque entende que a data é completa [como Timestamp] mesmo dizendo que o tipo é Date &#8211; aqui entendo como uma falha e vi que as issues sobre isso no projeto já foram fechadas, os últimos builds devem ter consertado, ou não.<br />
A spec não diz que deve lançar exception mesmo dizendo &#8220;must be&#8221; então o Oracle TopLink assumiu essa responsabilidade.<br />
Claro que essas funcionalidades devem também mudar de build para build então podem ter diferenças nas versões de builds entre os próprios implementadores, como Hibernate e TopLink mudarem da versão x.x.1 para x.x.3 por exemplo.<br />
Coisas de spec mal escrita, JPA tem que ser urgente revista, os capítulos ficam muito ambiguos, tem trechos que você fica bastante confuso, diferente de specs como da JSE que é bastante clara.</p></blockquote>
<p>O problema disso é que não dá para encapsular a diferença entre as implementações porque o uso dessa anotação é incompatível entre dois desses implementadores.</p>
<p>Outro problema da JPA é a falta de elementos básicos que um ORM deve implementar &#8211; como a Criteria &#8211; impossibilitando a troca de implementações com um simples refactoring. Tudo bem que em um Domain Model você tem como &#8211; e deve &#8211; isolar essa diferença entre Engines ORM mas em termos de Refactoring da aplicação no geral, ter que reescrever todas as buscas de uma aplicação porque a Engine não suporta Criteria pode não afetar o modelo mais trará um prejuízo enorme.</p>
<p>Como o Hibernate é OpenSource, maduro e anos-luz à frente até <a href="http://jcp.org/en/jsr/detail?id=317">da nova especificação de JPA 2.0</a>, a escolha dele pelos profissionais experientes é a mais adequada. Spring, é outra solução ao JEE sem EJB que permanece como indicação desde <a href="http://www.amazon.com/Expert-One-One-Development-without/dp/0764558315">o livro do Rod Johson de 2004</a> que era ainda sobre EJB2, recomendava o uso de JEE sem EJB e apresentou o Spring oficialmente ao mundo. Apesar de que Spring e EJB3 estarem bem nivelados hoje em dia, Spring <a href="https://cejug.dev.java.net/files/documents/859/93077/file_93077.dat/Os%20melhores%20do%20mundo,%20um%20comparativo%20entre%20Spring%20e%20EJB%203.0.pdf">ainda leva uma certa vantagem</a>, ainda mais pela maturidade e semrpe estar nos trilhos corretos, coisa que o EJB está se ajustando aos trancos e barrancos.</p>
<p>Em regra eu sempre recomendo o uso de especificações, mas em determinados pontos a especificação é desaconselhada e o uso direto da implementação tem suporte mais adequado. Não temos o poder de sempre escolhermos as ferramentas mais adequadas, muitas vezes a política impera &#8211; como nos órgãos públicos que são obrigados a usarem Oracle ou IBM por imposição governamental feita em um escritório na Casa Civil.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.milfont.org/tech/2008/10/27/especificacao-ou-implementacao/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Firefox 3 &#8211; Download Day 2008</title>
		<link>http://www.milfont.org/tech/2008/05/30/firefox-3-download-day-2008/</link>
		<comments>http://www.milfont.org/tech/2008/05/30/firefox-3-download-day-2008/#comments</comments>
		<pubDate>Fri, 30 May 2008 11:23:56 +0000</pubDate>
		<dc:creator>cmilfont</dc:creator>
				<category><![CDATA[Software Livre]]></category>
		<category><![CDATA[FIrefox]]></category>

		<guid isPermaLink="false">http://www.milfont.org/tech/2008/05/30/firefox-3-download-day-2008/</guid>
		<description><![CDATA[]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.spreadfirefox.com/pt-BR/worldrecord" ><img border="0" alt="Download Day 2008" title="Download Day 2008" src="http://www.spreadfirefox.com/sites/all/themes/spreadfirefox_RCS/images/download-day/buttons/pt-BR/dday_badge_fox.png" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.milfont.org/tech/2008/05/30/firefox-3-download-day-2008/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Windows ainda é mais melhor do que Linux</title>
		<link>http://www.milfont.org/tech/2008/05/26/windows-ainda-e-mais-melhor-do-que-linux/</link>
		<comments>http://www.milfont.org/tech/2008/05/26/windows-ainda-e-mais-melhor-do-que-linux/#comments</comments>
		<pubDate>Mon, 26 May 2008 18:44:07 +0000</pubDate>
		<dc:creator>cmilfont</dc:creator>
				<category><![CDATA[blogosfera]]></category>
		<category><![CDATA[crowds]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Sistemas Operacionais]]></category>
		<category><![CDATA[Software Livre]]></category>
		<category><![CDATA[Freetards]]></category>

		<guid isPermaLink="false">http://www.milfont.org/tech/2008/05/26/windows-ainda-e-mais-melhor-do-que-linux/</guid>
		<description><![CDATA[Linux tem uma curva alta de aprendizagem, Linux não tem suporte oficial, com Linux você não acessa velhos arquivos ou não pode compartilhar novos arquivos com outros,  Windows tem melhores softwares do que Linux, Linux não é seguro, os Softwares para Linux tem baixa qualidade, os Softwares para Linux estão sempre atrasados aos do Windows, [...]]]></description>
			<content:encoded><![CDATA[<p>Linux tem uma curva alta de aprendizagem, Linux não tem suporte oficial, com Linux você não acessa velhos arquivos ou não pode compartilhar novos arquivos com outros,  Windows tem melhores softwares do que Linux, Linux não é seguro, os Softwares para Linux tem baixa qualidade, os Softwares para Linux estão sempre atrasados aos do Windows, com Linux você não tem garantia, a microsoft irá processá-lo por uso de patentes e por último o custo total de propriedade do Linux é mais alto do que do Windows.</p>
<p>Retratei no primeiro parágrafo <a href="http://linuxfud.wordpress.com/2008/01/15/top-10-linux-fud-patterns-part-1/">10 FUDs célebres</a>. O título foi provocativo e chamativo para comprovar um experimento.</p>
<p>Eu não estou afirmando que o Windows é melhor do que Linux, quero deixar bem claro. Mas esse tipo de manchete é cotidiana em todos os meios de comunicações, é comum trazer na chamada algo que o artigo irá combater por exemplo, além do que a polêmica vende mais.</p>
<p>Porque fiz isso?</p>
<p>Após iniciar a leitura do &#8220;<a href="http://www.shelfari.com/books/62036/Extraordinary-Popular-Delusions-and-the-Madness-of-Crowds">Extraordinary Popular Delusions &amp; the Madness of Crowds</a>&#8221; de <a href="http://en.wikipedia.org/wiki/Charles_Mackay">Charles Mackay</a>, venho imaginando como a internet massifica tanto a sabedoria quanto a loucura das massas. Basta um pequeno conjunto de fatores para os manipuladores criarem uma verdadeira bomba atômica.</p>
<p>Tenho observado que a teoria do <a href="http://linuxfud.wordpress.com/2008/01/15/top-10-linux-fud-patterns-part-1/">Cardoso é verdadeira</a>, de que maioria não lê um artigo inteiro, apenas o título e no máximo o primeiro parágrafo, já indo direto para os comentários caso o título desagrade sua forma de ver o mundo.</p>
<p>Dentro dessa realidade observei que muitos <a href="http://www.urbandictionary.com/define.php?term=Freetard">Freetards</a> que supostamente defendem a liberdade são intolerantes e desejam a censura de tudo aquilo que não concordam. Não é de estranhar que me chamem de analfabeto por causa do título desse artigo. Portanto imaginei um formato para atacar esse nicho.</p>
<p>Como base nessas observações eu imaginei o formato desse Post para comprovar que:</p>
<ol>
<li>Poucos irão ler o artigo inteiro e chegar até aqui;</li>
<li>Pessoas consideradas cultas (pelo menos por elas mesmas) podem se enquadrar no rol das salsinhas;</li>
<li>Com prática você pode criar um modelo de manipulação das massas;</li>
<li>Com um modelo você pode manipular facilmente a maioria e obter o que quiser com isso.</li>
</ol>
<p>Vou ver se indexo esse post em algumas comunidades de Freetards e ver o que acontece.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.milfont.org/tech/2008/05/26/windows-ainda-e-mais-melhor-do-que-linux/feed/</wfw:commentRss>
		<slash:comments>12</slash:comments>
		</item>
		<item>
		<title>FLISOL 2008</title>
		<link>http://www.milfont.org/tech/2008/04/23/flisol-2008/</link>
		<comments>http://www.milfont.org/tech/2008/04/23/flisol-2008/#comments</comments>
		<pubDate>Wed, 23 Apr 2008 13:32:50 +0000</pubDate>
		<dc:creator>cmilfont</dc:creator>
				<category><![CDATA[palestras]]></category>
		<category><![CDATA[Software Livre]]></category>
		<category><![CDATA[FLISOL]]></category>
		<category><![CDATA[Open Social]]></category>

		<guid isPermaLink="false">http://www.milfont.org/tech/2008/04/23/flisol-2008/</guid>
		<description><![CDATA[O FLISOL 2008 em Fortaleza acontecerá no próximo dia 26/04 na Faculdade Evolução. Vou palestrar sobre OpenSocial, a mesma palestra do último CCT. Mais detalhes do evento nesse post do David, um dos organizadores do evento. Grade do evento.]]></description>
			<content:encoded><![CDATA[<p>O FLISOL 2008 em Fortaleza acontecerá no próximo dia 26/04 na <a href="http://www.evolucao.com.br">Faculdade Evolução</a>.</p>
<p>Vou palestrar sobre OpenSocial, a mesma palestra do <a href="http://www.milfont.org/tech/2008/04/14/material-cct-de-abril-2008/">último CCT</a>.</p>
<p>Mais detalhes do evento nesse post do <a href="http://davidferreira-fz.blogspot.com/2008/04/flisol2008-fortaleza.html">David</a>, um dos organizadores do evento.</p>
<p><a href="http://flisol-ce.890m.com/flisol2008_grade.pdf">Grade do evento</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.milfont.org/tech/2008/04/23/flisol-2008/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

