<?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>CMilfont &#187; Tecnologia</title>
	<atom:link href="http://www.milfont.org/blog/archives/category/tecnologia/feed" rel="self" type="application/rss+xml" />
	<link>http://www.milfont.org/blog</link>
	<description>Ultrapassando os limites da web!</description>
	<lastBuildDate>Sun, 03 Apr 2011 15:25:14 +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>Meu novo blog</title>
		<link>http://www.milfont.org/blog/archives/155</link>
		<comments>http://www.milfont.org/blog/archives/155#comments</comments>
		<pubDate>Tue, 02 Oct 2007 09:45:19 +0000</pubDate>
		<dc:creator>cmilfont</dc:creator>
				<category><![CDATA[Engenharia de software]]></category>
		<category><![CDATA[Tecnologia]]></category>
		<category><![CDATA[WEB 2.0]]></category>

		<guid isPermaLink="false">http://www.milfont.org/blog/archives/155</guid>
		<description><![CDATA[Urgente, atualizem seus feedreaders Criei um blog para falar somente sobre desenvolvimento, na verdade eu tinha criado já tem uns 2 meses, mas a falta de tempo e a preguiça clássica impediram de lancá-lo. Prometo um post novo todo santo dia, o foco como não poderia deixar de ser, vai ser as tecnologias que dão [...]]]></description>
			<content:encoded><![CDATA[<p>Urgente, atualizem seus feedreaders <img src='http://www.milfont.org/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Criei um blog para falar somente sobre desenvolvimento, na verdade eu tinha criado já tem uns 2 meses, mas a falta de tempo e a preguiça clássica impediram de lancá-lo.</p>
<p>Prometo um post novo todo santo dia, o foco como não poderia deixar de ser, vai ser as tecnologias que dão vida a WEB 2.0. Claro que não impede de falar sobre outras coisas como desenvolvimento desktop e assuntos que eu achar relevante e que seja ligado ao desenvolvimento.</p>
<p>Esse blog vai continuar sua existência, ficará para todos os outros assuntos não ligados a desenvolvimento de software. Há tempos reclamavam que eu falava muito de política e outros assuntos que não interessam os NERDS.</p>
<p>Ahhh&#8230; link do blog novo: <a href="http://www.milfont.org/tech">CMilfont Tech</a><!--6c5ed6ed292408ba8be416bad8c3d8bd--><!--42655a4a6d66656fb235e264620ebce1--><!--c0d6459135f9ffb93a3b739a4230630d--><!--45cc130734b0d6840ebfd6c0c8f59d79--><!--57ebe4ee11c81fb14fa50c674f4c9816--><!--36f4f466890cc187e396644074d04c0e--><!--2bdbe2cc564b00882d45d579f43ef7ba--><!--0307fde3e2b8f38d13769746d87e439d--></p>
]]></content:encoded>
			<wfw:commentRss>http://www.milfont.org/blog/archives/155/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Porque usamos Frameworks?</title>
		<link>http://www.milfont.org/blog/archives/137</link>
		<comments>http://www.milfont.org/blog/archives/137#comments</comments>
		<pubDate>Thu, 19 Jul 2007 18:09:51 +0000</pubDate>
		<dc:creator>cmilfont</dc:creator>
				<category><![CDATA[Engenharia de software]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[Tecnologia]]></category>

		<guid isPermaLink="false">http://www.milfont.org/blog/archives/137</guid>
		<description><![CDATA[Porque usamos Frameworks? Vamos contextualizar o que s&#227;o Frameworks. Segundo a Wikipedia: &#34;No desenvolvimento do software, um framework ou arcabou&#231;o &#233; uma estrutura de suporte definida em que um outro projeto de software pode ser organizado e desenvolvido. Um framework pode incluir programas de suporte, bibliotecas de c&#243;digo, linguagens de script e outros softwares para [...]]]></description>
			<content:encoded><![CDATA[<h3><strong>Porque usamos Frameworks?</strong></h3>
<p>Vamos contextualizar o que s&atilde;o <a href="http://pt.wikipedia.org/wiki/Framework">Frameworks</a>. Segundo a Wikipedia:</p>
<p><cite>&quot;No desenvolvimento do <a href="http://pt.wikipedia.org/wiki/Software" title="Software">software</a>, um <strong>framework</strong> ou <strong>arcabou&ccedil;o</strong> &eacute; uma estrutura de suporte definida em que um outro projeto de software pode ser organizado e desenvolvido. Um <em>framework</em> pode incluir programas de suporte, bibliotecas de c&oacute;digo, linguagens de  script e outros softwares para ajudar a desenvolver e juntar diferentes  componentes de um projeto de software.&quot;</cite></p>
<p>Segundo essa defini&ccedil;&atilde;o, o Framework deveria nos auxiliar como construir nossa aplica&ccedil;&atilde;o sem nos preocuparmos em definirmos a estrutura dos paradigmas ou teorias escolhidos, em outras palavras: &quot;Extendemos um framework e implementamos apenas os processos levantados em cima do fluxo que ele organiza&quot;. Alguns Frameworks, como o Hibernate, v&atilde;o mais al&eacute;m, s&atilde;o <a href="http://en.wikipedia.org/wiki/Software_engine">Engines</a>, motores de software prontos para uso. </p>
<p>Vamos exemplificar em alguns contextos. Os conceitos s&atilde;o importantes para a escolha dos frameworks necess&aacute;rios, quando voce desconhece ou <a href="http://www.milfont.org/blog/archives/111">relega</a> isso fica muito mais dif&iacute;cil ter o feeling necess&aacute;rio para avaliar uma situa&ccedil;&atilde;o como essas. </p>
<p>Uma das formas cl&aacute;ssicas de desacoplamento de um servi&ccedil;o para diferenciar o tratamento adequado &agrave; requisi&ccedil;&atilde;o &eacute; na implementa&ccedil;&atilde;o de f&aacute;bricas de classes concretas das interfaces sugeridas. A implementa&ccedil;&atilde;o de DAOs &eacute; cl&aacute;ssica como exemplo disso, voce cria uma interface para manipula&ccedil;&atilde;o dos dados e classes concretas para cada mecanismo de persist&ecirc;ncia diferente. A invers&atilde;o de controle a inje&ccedil;&atilde;o de depend&ecirc;ncias foi uma evolu&ccedil;&atilde;o desse modelo, auxiliando at&eacute; na camada de modelo caso necessite desse desacoplamento, como por exemplo uma interface de Nota Fiscal para encapsular entre o sistema de contabilidade e faturamento, o &quot;quando&quot; injetar fica a cargo do framework que conhece o mapeamento adequado. Voce n&atilde;o vai desenvolver inje&ccedil;&atilde;o porque existe o melhor Framework para isso e ele se chama Spring. </p>
<p>Ap&oacute;s a populariza&ccedil;&atilde;o dos bancos de dados para o desenvolvimento de software, dificilmente voce divergir&aacute; (por press&atilde;o do mercado) nesse segmento em prol de outra solu&ccedil;&atilde;o, ainda mais se a persist&ecirc;ncia requer cuidados capciosos e de dificil manipula&ccedil;&atilde;o e manuten&ccedil;&atilde;o como controle de concorr&ecirc;ncia. Ainda hoje existem sistemas que fazem seu pr&oacute;prio mecanismo de persist&ecirc;ncia, e n&atilde;o estou falando em salvar dados em xml, falo ainda em arquivos comuns, sem padroniza&ccedil;&atilde;o reconhecida pelo mercado, geralmente sistema legado com seus bons 15 ou at&eacute; 20 anos de exist&ecirc;ncia. Mas o uso de SGBDs se chocam com o desenvolvimento Orientado a Objetos e o mapeamento objeto-relacional corresponde pela parte mais significativa do tempo de desenvolvimento medida em horas. O uso de um framework para minimizar esse desenvolvimento &eacute; significativo no sucesso do projeto. O problema reside quando voce abdica do uso de um produto reconhecido e amplamente suportado por uma solu&ccedil;&atilde;o <em>In House</em>. </p>
<h3><strong>Frameworks caseiros</strong></h3>
<p>A comunidade JAVA &eacute; pejoramente reconhecida pela utiliza&ccedil;&atilde;o desenfreada de padr&otilde;es e Frameworks, o que acarreta em complexidades enormes e geralmente evit&aacute;veis. Como a plataforma JAVA &eacute; robusta e dominou o modelo <em>Enterprisey</em> (usada como principal plataforma pelos maiores Players no fornecimento de solu&ccedil;&otilde;es como IBM, Sun, Oracle, Borland, etc), unificando de forma in&eacute;dita o marcado e o mundo acad&ecirc;mico, acarretou na prolifera&ccedil;&atilde;o de Frameworks que solucionam um mesmo contexto. Nenhuma plataforma &eacute; t&atilde;o rica em solu&ccedil;&otilde;es diferentes para o mesmo problema. Solu&ccedil;&atilde;o para uns, problemas para outros. &Eacute; comum desenvolvedores menos experientes sofrerem crises existenciais sobre qual solu&ccedil;&atilde;o adotar, vide o modelo MVC Model 2 que possui meio milh&atilde;o de frameworks que fazem a mesma coisa (vale ressaltar a sanidade mental do pessoal do Struts e Webwork que resolveram unificar suas solu&ccedil;&otilde;es e fazer algo melhor juntos). </p>
<p>Tenho e tive problemas s&eacute;rios com equipes que acham que podem criar uma solu&ccedil;&atilde;o melhor que o mundo inteiro. Explico, na empresa que trabalho existe uma ferramenta que se prop&otilde;e a competir com o Hibernate com a diferen&ccedil;a que s&oacute; quem conhece s&atilde;o as pessoas que trabalharam na sua concep&ccedil;&atilde;o e por sinal nem fazem parte da empresa em quest&atilde;o. Ser&aacute; que elas pensaram em todos os problemas do mapeamento objeto-relacional que grandes especialistas no mundo inteiro pensaram e ajudaram a solucionar ou mesmo minimizar no Hibernate? Evidente que n&atilde;o tiveram recursos suficientes. </p>
<p>E aqueles Frameworks que suspostamente s&atilde;o Open Source mas que o controle &eacute; rigidamente orquestrado por uma empresa apenas? Eles conseguem a efici&ecirc;ncia na resolu&ccedil;&atilde;o de problemas com tamanha agilidade e precis&atilde;o que projetos abertos e suportados por uma grande comunidade?</p>
<p>A diversidade &eacute; interessante, a concorr&ecirc;ncia ajudou ao JAVA ser o que &eacute;, mas o ego e os sentimentos humanos de disc&oacute;rdia por ciumes ou v&iacute;cios semelhantes proliferam ferramentas desnecess&aacute;rias. Voc&ecirc; teve uma id&eacute;ia excelente que melhora um conceito? O que est&aacute; esperando para criar um projeto? Mas ser&aacute; que n&atilde;o &eacute; melhor contribuir com um projeto existente e ajud&aacute;-lo a melhorar? Essas s&atilde;o quest&otilde;es que s&oacute; dependem das pessoas envolvidas, n&atilde;o est&aacute; certo ou errado criar mais uma ferramenta, mas &eacute; saud&aacute;vel saber escolher, antes de tudo &eacute; prefer&iacute;vel levar em conta o p&oacute;s-desenvolvimento, esse &eacute; o mais importante nos custos finais de um produto. </p>
<p>A escolha precipitada principalmente empolgada por apresenta&ccedil;&otilde;es e promessas m&aacute;gicas de solucionar o que o mercado tenta a 30 anos ou mais &eacute; a mais nociva &agrave; sa&uacute;de financeira dos neg&oacute;cios. Assim como existem pessoas que n&atilde;o saem sem consultar o hor&oacute;scopo do dia ou levam a s&eacute;rio charlatanismo de b&uacute;zios e bacias com &aacute;gua, existem arquitetos e gerentes que acreditam que algu&eacute;m solucionou um problema do mercado e est&aacute; cobrando somente U$ 20,000 d&oacute;lares por isso. Pior, acreditam que sua equipe conseguir&aacute; desenvolver uma ferramenta melhor do que o mundo inteiro. Isso que n&atilde;o entendo, geralmente as empresas j&aacute; trabalham no limite de seus recursos, o que diabos levam a crer que desenvolvendo algo que j&aacute; existe &eacute; melhor do que ajudar a melhor&aacute;-lo?</p>
<p>Quem se enganou com Egen e coisas similares se enganou n&atilde;o por falta de aviso, isso &eacute; comum na engenharia de softwares, ningu&eacute;m pode substituir o ser humano na cria&ccedil;&atilde;o, n&atilde;o existe intelig&ecirc;ncia artificial ainda que consiga pensar, e o software &eacute; uma cria&ccedil;&atilde;o, &eacute; como uma obra de arte precisa de um artista. Porque modelos de desenvolvimento falharam por associar o desenvolvimento de software com constru&ccedil;&atilde;o civil? Porque depois que se levanta um pr&eacute;dio, ninguem o move para a direita ou muda um andar de lugar, j&aacute; no software voc&ecirc; pode iniciar a constru&ccedil;&atilde;o pelo telhado. O que eu quero dizer com isso &eacute; que um framework &eacute; apenas um arcabou&ccedil;o como diz a defini&ccedil;&atilde;o do Wikipedia, ele n&atilde;o vai implementar seus processos, somente o programador. </p>
<h3><strong>Usar ou n&atilde;o usar.</strong></h3>
<p>Quanta complexidade voc&ecirc; gosta? Eu gosto do simples, quanto mais simples melhor.</p>
<p>Se eu sou contratado para desenvolver um software web, eu n&atilde;o chego com Spring, Struts, Hibernate, JSF, KYZ debaixo do bra&ccedil;o e digo: quando come&ccedil;amos e qual &eacute; o prazo?</p>
<p>Quando falamos em desenvolvimento WEB (um exemplo para contextualizarmos) de forma tradicional s&oacute; vem na minha mente inicialmente que tratarei de trabalhar com o protocolo HTTP, tecnologias das especifica&ccedil;&otilde;es W3C (como CSS, XHTMl) e JEE no lado servidor (mas ainda num sentido macro, nem sei se precisarei de EJBs, talv&ecirc;s apenas JSP e Servlet).</p>
<p>Vamos voltar um pouco no passado, a Sun criou os EJBs imaginando um modelo distribu&iacute;do que estava em moda no in&iacute;cio desse mil&ecirc;nio. O cotidiano das empresas mostrou que esse modelo n&atilde;o era realidade, poucos s&atilde;o os casos que sistemas precisam rodar em servidores de aplica&ccedil;&otilde;es distintos. Imaginavam a contabilidade no Brasil e o Financeiro na Europa por exemplo. Qual a realidade disso nas empresas? At&eacute; nas grandes isso &eacute; incomum  quando se parte para a pr&aacute;tica, invi&aacute;vel pelos custos log&iacute;sticos associados em todos os fatores que impactam nos neg&oacute;cios como comunica&ccedil;&atilde;o entre os manipuladores dos dados. Porque eu vou usar EJB se meu sistema  sequer &eacute; distribu&iacute;do? Existem outros fatores, mas compensa o custo? Engra&ccedil;ado como a nova especifica&ccedil;&atilde;o deixou o Criteria do Hibernate de fora do JPA e ainda disseram que Criteria era extranho, extranho &eacute; essa insanidade de deixar de fora o principal componente do Framework que deu vida ao tro&ccedil;o. </p>
<p>Como algu&eacute;m pode antes de sequer conhecer os processos do neg&oacute;cio j&aacute; saber que vai usar Spring? e para que?</p>
<p>N&atilde;o quero tirar o m&eacute;rito de nenhum framework aqui, apenas saber se o uso est&aacute; sendo razo&aacute;vel.</p>
<p>Recentemente foi selecionado para ser o arquiteto de um projeto novo aqui na secretaria que trabalho, selecionei como arquitetura da aplica&ccedil;&atilde;o apenas JSP, Servlet e DWR (como controlador da aplica&ccedil;&atilde;o) al&eacute;m dos POJOS no modelo da aplica&ccedil;&atilde;o usando Hibernate3 como engine de persistencia, ponderei sobre o que precisava e cheguei a conclus&atilde;o que isso era o suficiente. Deu uma confus&atilde;o dos diabos com o desenvolvedor porque segundo ele, n&atilde;o sabia trabalhar com servlet, nunca desenvolveu na vida sem o Struts, deu piti, sustentei minha argumenta&ccedil;&atilde;o, dei piti, discutimos, ele me xingou, eu pedi para sair do projeto, no final a ger&ecirc;ncia do projeto <strong>SABIAMENTE</strong> me deu ganho de causa (&oacute;bvio que se eu tivesse perdido a queda de bra&ccedil;os eu estaria chamando de n&atilde;o sabios). Tirei dessa experi&ecirc;ncia que os princ&iacute;pios s&atilde;o mais importantes que as pr&aacute;ticas, que os valores s&atilde;o ainda mais importantes ainda. Fui precipitado e confesso que n&atilde;o soube levar a situa&ccedil;&atilde;o da devida forma. Resumo da hist&oacute;ria, o &uacute;nico servlet que existe at&eacute; o momento na aplica&ccedil;&atilde;o &eacute; o do DWR que nem foi n&oacute;s que desenvolvemos, criamos os dois casos de uso principais (que s&atilde;o o cora&ccedil;&atilde;o da aplica&ccedil;&atilde;o) e agora que vir&atilde;o aqueles cadastros e opera&ccedil;&otilde;es CRUD que correspondem aos resto da aplica&ccedil;&atilde;o mas &eacute; a parte mais simples. Pode at&eacute; ser que daqui por diante venha a precisar de Struts ou outro Framework, mas at&eacute; agora n&atilde;o precisei, o custo de adicionar na aplica&ccedil;&atilde;o &eacute; irris&oacute;rio, mas construir sobre algo que n&atilde;o havia necessidade era alt&iacute;ssimo. </p>
<p>Quando algu&eacute;m me pergunta o que acho de usar um determinado Framework, eu fa&ccedil;o como Plat&atilde;o, respondo com perguntas para saber se h&aacute; a necessidade.</p>
<p><!--15cadc023914523a5f138e475e87b1a4--><!--b206c9d9dea34c75c0758161b85727ac--><!--ff0b4a71ddf076dca75fb51b1321096b--><!--51e4eea97f93ec67f913cca3df75b490--><!--3b9d5f2134fd5cd6f969f6fc3b0f80b0--><!--193004961ab43f32f415ccaa443425ac--><!--096d6094f4ee1b59b46efab501ebddac--><!--9366f79ff5d2accf28dbd41d1bda71dc--><!--8cebefb314da448841837a059bb2ebf1--><!--d3d88498aadeeec091f92e5df13a6985--></p>
]]></content:encoded>
			<wfw:commentRss>http://www.milfont.org/blog/archives/137/feed</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Meu ambiente de desenvolvimento</title>
		<link>http://www.milfont.org/blog/archives/132</link>
		<comments>http://www.milfont.org/blog/archives/132#comments</comments>
		<pubDate>Tue, 03 Jul 2007 17:41:44 +0000</pubDate>
		<dc:creator>cmilfont</dc:creator>
				<category><![CDATA[Engenharia de software]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[Software Livre]]></category>
		<category><![CDATA[Tecnologia]]></category>
		<category><![CDATA[Test-Driven development]]></category>

		<guid isPermaLink="false">http://www.milfont.org/blog/archives/132</guid>
		<description><![CDATA[Sou questionado constantemente na C&#233;lula JAVA da faculdade Lourenço Filho (da qual fomos os fundadores, eu e o Handerson), sobre o ambiente que uso para desenvolver. Resolvi ent&#227;o criar um post mais direcionado aos novatos para compartilhar essas informa&#231;&#245;es. Como trabalho exclusivamente com JAVA no meu emprego e tenho seguido minha carreira nessa plataforma, meu [...]]]></description>
			<content:encoded><![CDATA[<p>Sou questionado constantemente na <a href="http|//www.milfont.org/blog/?page_id=54">C&eacute;lula JAVA</a> da faculdade <a href="http://www.flf.edu.br/">Lourenço Filho</a> (da qual fomos os fundadores, eu e o Handerson), sobre o ambiente que uso para desenvolver. Resolvi ent&atilde;o criar um post mais direcionado aos novatos para compartilhar essas informa&ccedil;&otilde;es. </p>
<p>Como trabalho exclusivamente com <a href="http://java.sun.com/">JAVA</a> no <a href="http://www.seplag.ce.gov.br/content/aplicacao/sead/pagina_inicial/gerados/pagina_inicial.asp">meu emprego</a> e tenho seguido minha carreira nessa plataforma, meu ambiente se baseia no <a href="http://www.eclipse.org/">Eclipse</a>, a melhor <a href="http://pt.wikipedia.org/wiki/Ambiente_de_Desenvolvimento_Integrado">IDE</a> java do mercado.</p>
<p>No trabalho uso o Windows como S.O. e em casa a dobradinha win/lin dual boot, a maioria dos softwares aqui mencionados funcionam nos dois.</p>
<h1><strong>IDE</strong></h1>
<p>Como mencionado, eu uso como base o <a href="http://www.eclipse.org/">Eclipse</a>. Essa <a href="http://pt.wikipedia.org/wiki/Ambiente_de_Desenvolvimento_Integrado">IDE</a> tem centenas de plugins bons mas tamb&eacute;m tem bastante porcarias, j&aacute; experimentei v&aacute;rios, fiquei com o seguinte ambiente:</p>
<p><a href="http://java.sun.com/javase/downloads/index.jsp">Java 6</a>. Sempre instalo a &uacute;ltima vers&atilde;o, j&aacute; conhe&ccedil;o as novidades e fa&ccedil;o &quot;<a href="http://pt.wikipedia.org/wiki/Programa_Ol%C3%A1_Mundo">rêlouordis</a>&quot; para ficar antenado, essa de ficar com java 1.4 instalado n&atilde;o &eacute; interessante, afinal a plataforma sempre mant&eacute;m compatibilidade com as vers&otilde;es passadas de forma extremamente est&aacute;vel (diferente de <a href="http://www.microsoft.com/brasil/msdn/framework/default.mspx">outro ambiente ali</a> que as coisas da vers&atilde;o 2 n&atilde;o rodam as da vers&atilde;o 1, vai entender o que eles entendem por compatibilidade).</p>
<p><a href="http://www.eclipse.org/">Eclipse</a> como IDE base.</p>
<p><a href="http://www.myeclipseide.com/">MyEclipse</a> como su&iacute;te de plugins para desenvolvimento web e JEE, &eacute; o &uacute;nico que n&atilde;o &eacute; open source no meu ambiente de trabalho, mas vale cada centavo. O pre&ccedil;o &eacute; escandalosamente barato para uma ferramenta t&atilde;o boa.</p>
<p><a href="http://www.aptana.org/">Aptana</a>, <a href="http://labs.adobe.com/technologies/jseclipse/">JSEclipse</a> como plugins para html, css e javscript, sendo o &uacute;ltimo exclusivamente para javascript. o MyEclipse tem editores para esses artefatos, mas n&atilde;o s&atilde;o t&atilde;o bons quanto o Aptana, eu ainda prefiro o JsEclipse da Adobe no caso do javascript, mas &eacute; quest&atilde;o meramente pessoal, em termos de features eles s&atilde;o praticamente a mesma coisa. Ultimamente testei o <a href="http://www.spket.com/">Spket</a> apenas por curiosidade, por ele j&aacute; trazer uma integra&ccedil;&atilde;o com o <a href="http://extjs.com/">Ext</a>, mas ele n&atilde;o tem diferencial comparado ao Aptana ou mesmo ao JSEclipse.</p>
<h1><strong>Container JEE</strong> </h1>
<p><a href="http://tomcat.apache.org/">Tomcat 6</a> como container web <a href="http://java.sun.com/javaee/">JEE</a>. Por quest&otilde;es de pol&iacute;tica do meu trabalho tenho que usar o <a href="http://www.oracle.com/appserver/index.html">Oracle AS10g</a> como servidor de aplica&ccedil;&otilde;es, preferiria o <a href="http://labs.jboss.com/">JBoss</a> por in&uacute;meros fatores (indiferente de quest&otilde;es filos&oacute;ficas), mas uso o tomcat para testar todas as aplica&ccedil;&otilde;es. Obviamente temos que nos policiar quanto &agrave;s &uacute;ltimas novidades porque a Oracle sempre est&aacute; alguns passos atr&aacute;s (medidos em vers&otilde;es) dos outros servidores. N&atilde;o temos nenhuma aplica&ccedil;&atilde;o (pelo menos sob minha orienta&ccedil;&atilde;o) que use EJB, como n&atilde;o temos nenhum sistema distribu&iacute;do e dificilmente ter&iacute;amos (pelo contexto do nosso trabalho), nunca tivemos tal necessidade. </p>
<h1><strong>Banco de dados</strong></h1>
<p><a href="http://www.oracle.com/database/index.html">Oracle 10g</a>. Diferente do servidor de aplica&ccedil;&otilde;es, o banco da Oracle na minha concep&ccedil;&atilde;o &eacute; o melhor que existe (alguns dizem que &eacute; o <a href="http://www-306.ibm.com/software/data/db2/">IBM DB2</a>, mas eu acho o Oracle). Mas mantenho o brinquedo <a href="http://www.mysql.org/">MySQL</a> instalado para testar as coisas devido a facilidade de instala&ccedil;&atilde;o e manipula&ccedil;&atilde;o. </p>
<p>Uso o programa <a href="http://www.dbvis.com/products/dbvis/">DbVisualizer</a> (que &eacute; feito em java) para trabalhar diretamente com os bancos de dados. Ele tem recursos menores se comparado &agrave;s ferramentas nativas que s&atilde;o disponibilizadas pelas Players dos pr&oacute;prios bancos, mas como acessa todos os bancos que acesso diretamente: <a href="http://www.microsoft.com/brasil/servidores/sql/default.mspx">SQL Server</a> (legado), MySQL (testes) e Oracle (produ&ccedil;&atilde;o e desenvolvimento), tenho prefer&ecirc;ncia por ele. </p>
<h1><strong>Integra&ccedil;&atilde;o Cont&iacute;nua</strong></h1>
<p>N&atilde;o temos um ambiente  que enfatize a <a href="http://www.improveit.com.br/xp/praticas/integracao">integração contínua</a> e <a href="http://www.improveit.com.br/xp/manifesto_agil">metodologias ágeis</a>, nossa metodologia tem como base ainda se espelhar no <a href="http://www-306.ibm.com/software/rational/">IBM</a> <a href="http://pt.wikipedia.org/wiki/Rational_Unified_Process">RUP</a> (apesar de n&atilde;o ser o <a href="http://pt.wikipedia.org/wiki/Rational_Unified_Process">RUP</a>).</p>
<p>Usamos o <a href="http://www.dotproject.net/">DotProject</a> (provisoriamente) como <a href="http://pt.wikipedia.org/wiki/Ger%C3%AAncia_de_projetos">gerenciador dos projetos</a>. N&atilde;o &eacute; a melhor ferramenta, ali&aacute;s &eacute; muito fraca de ser considerada uma boa ferramenta, mas por enquanto o custo/benef&iacute;cio dela est&aacute; falando mais alto, mas j&aacute; existem movimentos de substitu&iacute;-la. Esse &eacute; um exemplo de que a filosofia n&atilde;o deve falar mais alto que os aspectos t&eacute;cnicos, t&iacute;nhamos uma base no uso do <a href="http://office.microsoft.com/pt-br/project/default.aspx">MSProject</a>, que &eacute; muito superior ao DotProject, mas foi relegado em nome do <a href="http://pt.wikipedia.org/wiki/Software_livre">Software Livre</a> pela desculpa dos custos. Esse &eacute; um ponto onde o SL sempre perde pontos. Talv&ecirc;s existam softwares livres melhores que o DotProject que poderiam ter sido comparados ao MSProject, mas trocar um software que est&aacute; funcionando corretamente por quest&otilde;es de custos n&atilde;o &eacute; uma boa alternativa, afinal o <a href="http://pt.wikipedia.org/wiki/Roi">ROI</a> medido posteriormente desmere&ccedil;a essa troca.</p>
<p>Nosso <a href="http://pt.wikipedia.org/wiki/Sistema_de_controle_de_vers%C3%A3o">sistema de controle de versões</a> &eacute; o velho e fant&aacute;stico <a href="http://pt.wikipedia.org/wiki/CVS">CVS</a> que j&aacute; tem suporte  nativo excelente no Eclipse, mas vamos mudar para o <a href="http://pt.wikipedia.org/wiki/SVN">SVN</a> nesses pr&oacute;ximos dias, posteriormente blogarei sobre essa mudan&ccedil;a. Existe uma equipe que trabalha com o <a href="http://msdn2.microsoft.com/en-us/vstudio/aa718670.aspx">MSSourceSafe</a> que dever&aacute; usar o SVN tamb&eacute;m, vamos ver o que vai sair dessa mudan&ccedil;a, sinceramente eu n&atilde;o tenho opini&atilde;o final formada sobre isso. Acredito que pode n&atilde;o ser uma boa id&eacute;ia, j&aacute; que essa equipe trabalha com <a href="http://www.microsoft.com/brasil/msdn/framework/default.mspx">DotNet</a> e a integra&ccedil;&atilde;o entre o <a href="http://msdn2.microsoft.com/pt-br/vstudio/default.aspx">VisualStudio</a> e o <a href="http://msdn2.microsoft.com/en-us/vstudio/aa718670.aspx">Sourcesafe</a> seja bem melhor (evidente) que com o SVN, vamos ver. </p>
<p>Como eu mencionei, n&atilde;o enfatizamos (infelizmente) os m&eacute;todos &aacute;geis, mas tento seguir as <a href="http://www.improveit.com.br/xp/praticas">boas pr&aacute;ticas</a> do <a href="http://www.improveit.com.br/xp">XP</a>, como n&atilde;o tenho um sistema de gera&ccedil;&atilde;o de builds, tento controlar usando o velho <a href="http://ant.apache.org/">Apache</a> <a href="http://pt.wikipedia.org/wiki/Apache_Ant">Ant</a> mesmo, tenho um script antig&atilde;o aqui que coordena o processo inteiro, quem sabe n&atilde;o tenhamos um <a href="http://en.wikipedia.org/wiki/CruiseControl">CruiseControl</a> por a&iacute; em breve (que seria um salto extraordin&aacute;rio), quem sabe. </p>
<p>Agora nosso &quot;<em>Calcanhar de Aquiles</em>&quot; &eacute; o <a href="http://en.wikipedia.org/wiki/Issue_tracking">sistema de Issue Tracking</a> daqui, &eacute; uma solu&ccedil;&atilde;o <em><a href="http://en.wikipedia.org/wiki/In_house">In House</a></em> H-O-R-R-&Iacute;-V-E-L (como ficou <del>gay</del> meigo essa declara&ccedil;&atilde;o). J&aacute; est&aacute; sendo providenciado outra solu&ccedil;&atilde;o, mas <em>In House</em> tamb&eacute;m o que &eacute; uma pena devido a <a href="http://en.wikipedia.org/wiki/Comparison_of_issue_tracking_systems">enorme lista</a> de sistemas excelentes que existem por a&iacute;. </p>
<h1><strong>Last But Not Least&#8230;</strong> </h1>
<p>O mais importante n&atilde;o &eacute; montar um ambiente de desenvolvimento ou simplesmente achar que conseguir&aacute; manter o mesmo pelo resto da vida e sim ter consci&ecirc;ncia de quais s&atilde;o as necessidades e como suplant&aacute;-las sempre procurando a melhor ferramenta que se adapte aos seus projetos. Espero que esse post ajude aos novatos como um passo inicial para pesquisar sobre aquilo que melhor o satisfaz na busca por um ambiente produtivo. </p>
<p><!--0cce417823d26f15773321a640bece89--><!--08762e7644bc460a8cbc89e709001567--><!--82b7a5df62a8dceedbf5fe1d9de0ed14--><!--dc6ab8f978934b58da552ca26b2f9796--><!--3857825278e84f4ca26edd2d882df0fc--><!--08762e7644bc460a8cbc89e709001567--><!--fb070eaf98f6a84fc807d09b84f00da1--></p>
]]></content:encoded>
			<wfw:commentRss>http://www.milfont.org/blog/archives/132/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Dialetos da ECMAScript movem o RIA</title>
		<link>http://www.milfont.org/blog/archives/122</link>
		<comments>http://www.milfont.org/blog/archives/122#comments</comments>
		<pubDate>Wed, 09 May 2007 17:58:28 +0000</pubDate>
		<dc:creator>cmilfont</dc:creator>
				<category><![CDATA[Tecnologia]]></category>
		<category><![CDATA[WEB 2.0]]></category>

		<guid isPermaLink="false">http://www.milfont.org/blog/archives/122</guid>
		<description><![CDATA[Nessa briga dos BIGPLAYERS pelo mercado de RIA um dos aspectos que mais se destacam n&#227;o &#233; a tentativa de reativar velhas id&#233;ias ou tecnologias, porque na inform&#225;tica os conceitos vem e v&#227;o, mas sim em algo que passa despercebido em todas as an&#225;lises que leio: &#34;Todos usam a ECMAScript&#34;. O foco sempre &#233; direcionado [...]]]></description>
			<content:encoded><![CDATA[<p>Nessa briga dos <em>BIGPLAYERS</em> pelo mercado de <a href="http://en.wikipedia.org/wiki/Rich_Internet_application" target="_blank">RIA</a> um dos aspectos que mais se destacam n&atilde;o &eacute; a tentativa de reativar velhas id&eacute;ias ou tecnologias, porque na inform&aacute;tica os conceitos vem e v&atilde;o, mas sim em algo que passa despercebido em todas as an&aacute;lises que leio: &quot;Todos usam a ECMAScript&quot;. O foco sempre &eacute; direcionado &agrave; quest&atilde;o de que s&atilde;o <a href="http://en.wikipedia.org/wiki/User_interface_markup_language" target="_blank">linguagens de marca&ccedil;&atilde;o</a>, mas esquecem que mesmo sendo uma linguagem de marca&ccedil;&atilde;o, todas utilizam como <a href="http://en.wikipedia.org/wiki/Domain-specific_programming_language" target="_blank">DSL</a> para extender sua plataforma uma <em>ENGINE</em> baseada no <a href="http://en.wikipedia.org/wiki/ECMAScript" target="_blank">ECMAScript</a>. </p>
<p>Desde o <a href="http://www.adobe.com/products/flex/" target="_blank">Adobe Flex</a>, passando pelo <a href="http://www.openlaszlo.org/" target="_blank">Laszlo</a>, Microsoft <a href="http://www.microsoft.com/silverlight/" target="_blank">Silverlight</a> at&eacute; &agrave; nova arma da SUN, o <a href="https://openjfx.dev.java.net" target="_blank">JavaFX</a>, todos usam um dialeto da <a href="http://en.wikipedia.org/wiki/ECMAScript" target="_blank">ECMAScript</a>.</p>
<p>O poder do javascript j&aacute; &eacute; reconhecido de longa data, desde <em>STANDALONES ENGINES</em> como <a href="http://www.mozilla.org/rhino/" target="_blank">Rhino</a> (Mozilla) ou <a href="http://www.mbedthis.com/products/appWeb/doc/common/ejs/overview.html" target="_blank">Embedded JavaScript</a> (usado no servidor <a href="http://us4.samba.org/samba/" target="_blank">Samba 4</a>) at&eacute; o kernel do <a href="http://www.adobe.com/products/acrobat/" target="_blank">Acrobat Reader</a>, todos os benef&iacute;cios de uma linguagem din&acirc;mica s&atilde;o explorados com um <em>SUBSET</em> da <a href="http://en.wikipedia.org/wiki/ECMAScript" target="_blank">ECMAScript</a>. A Adobe praticamente tem um porte no n&uacute;cleo de todos os seus produtos para suportarem a extens&atilde;o com javascript, desde o citado Acrobat, passando pelo <a href="http://www.adobe.com/products/flash/" target="_blank">Flash</a> ao nov&iacute;ssimo <a href="http://www.adobe.com/products/flex/" target="_blank">Flex</a> usando como base o <a href="http://en.wikipedia.org/wiki/ActionScript" target="_blank">ActionScript</a>.</p>
<p><strong>Sources Javascript</strong>
</p>
<p>A SUN utilizou a linguagem <a href="http://en.wikipedia.org/wiki/F3_%28language%29" target="_blank">F3</a> (Javascript + XML) no <a href="http://www.sun.com/software/javafx/index.jsp" target="_blank">JavaFX</a>, a Adobe vai de <a href="http://en.wikipedia.org/wiki/ActionScript" target="_blank">ActionScript</a>, a Microsoft com seu <a href="http://en.wikipedia.org/wiki/Extensible_Application_Markup_Language" target="_blank">XAML</a> implementa usando o <a href="http://en.wikipedia.org/wiki/JScript_.NET" target="_blank">JScript.NET</a> e o Laszlo usa a linguagem <a href="http://en.wikipedia.org/w/index.php?title=LZX_programming_language&amp;action=edit" title="LZX programming language">LZX</a> que tem seu pr&oacute;prio motor, vejamos c&oacute;digos entre os 4 produtos principais que se destacam nessa luta:</p>
<p><em>Silverlight</em>:</p>
<p>function createSilverlight() {<br />
	Sys.Silverlight.createObject(&#8220;default.xaml&#8221;,<br />
		document.getElementById(&#8220;sparent&#8221;),<br />
		&#8220;ag&#8221;,<br />
		{<br />
			width:&#8217;900&#8242;,<br />
			height:&#8217;600&#8242;,<br />
			inplaceInstallPrompt:true,<br />
			background:&#8217;white&#8217;,<br />
			version:&#8217;0.9&#8242;<br />
		},<br />
		{<br />
			onError:&#8221;,<br />
			onLoad:onLoad<br />
		},<br />
		null);<br />
}</p>
<p><em>Laszlo:</em></p>
<p>&#8230;</p>
<p><method name="resetWindow"><br />
            var w = childWindow;<br />
            w.bringToFront();<br />
            w.open();<br />
            w.setAttribute(&#8220;x&#8221;,30);<br />
            w.setAttribute(&#8220;y&#8221;,70);<br />
            w.setAttribute(&#8220;width&#8221;,215);<br />
            w.setAttribute(&#8220;height&#8221;,300);<br />
            w.setAttribute(&#8220;opacity&#8221;,1);<br />
</method></p>
<p>&#8230;&nbsp;</p>
<p><em>Flex:</em></p>
<p>package com.nagpals.contact.vo{<br />
    import com.adobe.cairngorm.vo.ValueObject;</p>
<p>   [Bindable]<br />
   //[RemoteClass(alias="contact.Contact")]<br />
    public class ContactVO implements ValueObject{<br />
        public var id : String;<br />
        public var firstName : String;<br />
        public var lastName : String;<br />
        public var email : String;<br />
    }</p>
<p>} </p>
<p><em>JavaFX:</em></p>
<p>Frame {<br />
              content: Button {<br />
                   text: &#8220;Press Me&#8221;<br />
                   action: operation() {<br />
                        System.out.println(&#8220;You pressed me&#8221;);<br />
                   }<br />
              }<br />
              visible: true<br />
         }</p>
<p>Como podem ver, apesar da diferen&ccedil;a visual entre os c&oacute;digos, eles conservam a ess&ecirc;ncia da ECMAScript e possivelmente haver&aacute; uma tend&ecirc;ncia natural para que surjam id&eacute;ias de integra&ccedil;&atilde;o entre as ferramentas.
</p>
<p><strong>Velhos problemas</strong></p>
<p>Mudando um pouco de assunto nesse tema, essa nova tend&ecirc;ncia resgata velhos e inc&ocirc;modos problemas, que cada tecnologia &eacute; mundo fechado e a interoperabilidade &eacute; novamente descartada, a id&eacute;ia de RIA n&atilde;o &eacute; nova, tivemos tecnologias interessantes como o <a href="http://www.mozilla.org/projects/xul/" target="_blank">XUL</a> e at&eacute; especifica&ccedil;&atilde;o com o <a href="http://www.w3.org/TR/xforms/" target="_blank">XForms</a> (que tentava ordenar uma forma de interface din&acirc;mica na pr&oacute;pria linha do XHTML) e n&atilde;o vingaram.</p>
<p>Hoje n&oacute;s temos especifica&ccedil;&otilde;es organizadas pelo <a href="http://www.w3.org/" target="_blank">W3C</a> que tentam orquestrar um ponto em comum entre as diversas plataformas no ambiente <em>WEB</em>. Sofremos por falta de uma estrutura din&acirc;mica que torne a acessibilidade <em>WEB </em>semelhante ao ambiente <em>DESKTOP</em>. O <em>RIA </em>segue um segmento de que cada fornecedor tem suas pr&oacute;prias especifica&ccedil;&otilde;es, mesmo usando tecnologias semelhantes, cada uma tem seu modelo final. </p>
<p>A ind&uacute;stria sempre vai brigar pelo <em>MARKET SHARE</em> e um dos pontos que influencia suas receitas &eacute; a inova&ccedil;&atilde;o que invariavelmente passa pelas tecnologias emergentes e os <em>HYPES</em>. Quantos produtos voces conhecem que n&atilde;o executam nada superior aos seus concorrentes mas que tem um plano de Marketing mais elaborado e uma visibilidade melhor?</p>
<p>Na minha opini&atilde;o, a fragilidade desse tipo de tecnologia est&aacute; justamente no ponto da interoperabilidade. Vamos e voltamos nesse mesmo ponto at&eacute; que se chegue em especifica&ccedil;&otilde;es que agradem a todos. </p>
<p>Como eu mencionei o fato de que s&atilde;o linguagens de marca&ccedil;&atilde;o e cada fornecedor tem seu pr&oacute;prio conjunto de tags, a interoperabilidade pode ser alcan&ccedil;ada pelo dialeto comum que eles utilizam, no caso a ECMAScript. O caminho para essas tecnologias n&atilde;o morrerem, vai ser um jeito de fazer com que essas ferramentas conversem entre si, e na minha opini&atilde;o a &uacute;nica forma seria pelo javascript. </p>
<p><!--355a930c6b697b9dcbf8a271cc96da37--></p>
]]></content:encoded>
			<wfw:commentRss>http://www.milfont.org/blog/archives/122/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Quantas linguagens voce conhece?</title>
		<link>http://www.milfont.org/blog/archives/121</link>
		<comments>http://www.milfont.org/blog/archives/121#comments</comments>
		<pubDate>Thu, 03 May 2007 17:09:50 +0000</pubDate>
		<dc:creator>cmilfont</dc:creator>
				<category><![CDATA[Engenharia de software]]></category>
		<category><![CDATA[Filosofia]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[Tecnologia]]></category>

		<guid isPermaLink="false">http://www.milfont.org/blog/archives/121</guid>
		<description><![CDATA[Um dos assuntos corriqueiros que volta e meia surgem em f&#243;runs ou listas de discuss&#245;es &#233; o surgimento de uma linguagem &#34;x&#34; ou s&#250;bito interesse sobre ela por parte da m&#237;dia especializada. Tomem como exemplo o Ruby, desde meados da d&#233;cada de 1990 que a linguagem existe, mas somente com o surgimento do &#34;Ruby on [...]]]></description>
			<content:encoded><![CDATA[<p>Um dos assuntos corriqueiros que volta e meia surgem em f&oacute;runs ou listas de discuss&otilde;es &eacute; o surgimento de uma linguagem &quot;x&quot; ou s&uacute;bito interesse sobre ela por parte da m&iacute;dia especializada.</p>
<p>Tomem como exemplo o <a href="http://pt.wikipedia.org/wiki/Ruby_%28linguagem_de_programa%C3%A7%C3%A3o%29" target="_blank">Ruby</a>, desde meados da d&eacute;cada de 1990 que a linguagem existe, mas somente com o surgimento do &quot;<a href="http://pt.wikipedia.org/wiki/Ruby_on_Rails" target="_blank">Ruby on Rails</a>&quot; que a linguagem al&ccedil;ou ao posto de &quot;destaque do ano&quot;, isso como algo por volta de 10 anos depois de sua cria&ccedil;&atilde;o. Subitamente os velhos Rubistas se viram lado a lado com centenas de joviais newbies insuflando a <a href="http://www.rubyonbr.org/articles/2007/01/19/comunidade-sarada-e-gordura-comunitria/" target="_blank">gordura normal</a> que toda tecnologia candidata a Hype provoca.</p>
<p>Mas a aten&ccedil;&atilde;o atraiu hackers que antes estavam apenas com Python, Perl, Lisp ou outra linguagem n&atilde;o &quot;<a href="http://blueballfixed.ytmnd.com/" target="_blank">Enterprisey</a>&quot;. Assim como tamb&eacute;m atraiu boa gente de Java e C#. </p>
<p>Brigas desnecess&aacute;rias j&aacute; foram travadas entre Java vs Perl, Java vs Python, Java vs C#, Java vs Lisp, etc. (Me refiro especificamente sobre Java porque acompanho mais de perto o Java, mas aconteceram e acontecem brigas entre as outras tamb&eacute;m). Ultimamente acompanhamos discuss&otilde;es entre Java vs Ruby.</p>
<p><strong>A bala de prata</strong>
</p>
<p>Sempre que uma tecnologia tem maior &quot;Market Share&quot;, ela ser&aacute; alvo das cr&iacute;ticas principais, assim foi com o Delphi e VB quando o Java pretendia ser a l&iacute;der de mercado, lembro que todas as cr&iacute;ticas eram destinados a essas duas plataformas, o pessoal de Perl e Java eram at&eacute; aliados na guerra contra VB nessas horas.</p>
<p>Mas linguagens s&atilde;o criadas e pensadas para resolverem problemas especificos ou voltadas a trabalhar em um contexto especifico, seja ele necessit&aacute;rio ou mercadol&oacute;gico.</p>
<p>Dificilmente voce conseguir&aacute; desenvolver toda e qualquer aplica&ccedil;&atilde;o em apenas uma linguagem ou plataforma, mas isso n&atilde;o quer dizer que uma aplica&ccedil;&atilde;o fica melhor com Java ou com C#, porque ambas praticamente s&atilde;o do mesmo contexto, n&atilde;o &eacute; essa diferen&ccedil;a que enfatizo, e sim se o contexto favorece a determinada linguagem. </p>
<p>Eu fui infelizmente um defensor dos monoglotas, at&eacute; o in&iacute;cio de 2005 eu praticava apenas Java e via com maus olhos toda e qualquer linguagem pelo simples preconceito, na verdade era mais&nbsp; uma discrimina&ccedil;&atilde;o por autodefesa. E olhe que conheci Clipper, C e Pascal na faculdade, trabalhei com Delphi um tempo e tinha um bom conhecimento com Javascript(pelo menos eu achava). N&atilde;o sou psic&oacute;logo mas imagino que eu me apavorava com a possibilidade de ter que reaprender toda a sintaxe de uma nova linguagem, novos frameworks, novas APIs e tudo mais. Olhe que est&aacute;vamos ainda no auge do <strong>Struts-like</strong>.</p>
<p><strong>Admir&aacute;vel mundo novo</strong></p>
<p>Com o surgimento do Ajax e consequentemente a populariza&ccedil;&atilde;o do Javascript como linguagem OO, me especializei a fundo na ECMA-262 como tinha feito com o Java mas nunca com outra linguagem.&nbsp;</p>
<p>Esse novo mundo que conheci me trouxe mais d&uacute;vidas do que certezas. Assim como voce s&oacute; aprende ingl&ecirc;s se submergir na cultura de Shakespeare, voce s&oacute; aprende uma linguagem de programa&ccedil;&atilde;o se penetrar no contexto ao qual ela foi pensada para sua concep&ccedil;&atilde;o. </p>
<p>Como entender Closures quem vinha de Java? </p>
<p>A tend&ecirc;ncia natural era achar que era a mesma coisa de &quot;Inner Classes&quot;. Quando voce realmente entra no contexto, as nuances antes n&atilde;o percebidas quase magicamente saltam aos olhos. </p>
<p>Como falei em um <a href="http://www.milfont.org/blog/archives/114" target="_blank">post anterior</a>, se voce que faz um curso regular em uma Faculdade de Ci&ecirc;ncia da Computa&ccedil;&atilde;o e aprende a construir uma linguagem, aprender v&aacute;rias linguagens &eacute; algo singelo.</p>
<p><strong>Como soluciona isso?</strong></p>
<p>No estudo do Javascript como linguagem orientada a objetos (e n&atilde;o mais uma auxiliar para formata&ccedil;&atilde;o de data e valida&ccedil;&atilde;o de inputs HTML), me deparei com contexto in&eacute;ditos para mim, e problemas antes sequer diagnosticados.</p>
<p>Isso me provocou a natural curiosidade nerd de conhecer outras linguagens, pelo menos teoricamente.</p>
<p>Conceitos como <a href="http://en.wikipedia.org/wiki/Closure_%28computer_science%29" target="_blank">Closure</a>, <a href="http://en.wikipedia.org/wiki/Currying" target="_blank">Currying</a>, <a href="http://en.wikipedia.org/wiki/Continuation" target="_blank">Continuation</a>, <a href="http://en.wikipedia.org/wiki/Design_by_contract" target="_blank">Design By Contract</a>, <a href="http://en.wikipedia.org/wiki/Actor_model" target="_blank">Actor model</a>, <a href="http://en.wikipedia.org/wiki/Lazy_evaluation" target="_blank">Lazy evaluation</a>, <a href="http://en.wikipedia.org/wiki/Tail_recursion" target="_blank">Tail recursion</a>, <a href="http://en.wikipedia.org/wiki/Quine_%28computing%29" target="_blank">Quine</a> e tantos outros (s&oacute; para citar algumas features de algumas&nbsp; boas linguagens) voce n&atilde;o conhecer&aacute; na faculdade, e imagino que nem na p&oacute;s e nos mestrados da vida. Devo admitir que nem haveria espa&ccedil;o para tanto, a faculdade (como sempre enfatizei) &eacute; apenas um local para socializa&ccedil;&atilde;o, algo como: &quot;entre um networking e um f&oacute;rum&quot;.</p>
<p>Solucionar um problema n&atilde;o &eacute; conhecer sua resposta e sim as perguntas necess&aacute;rias, conhecer antes de tudo a pergunta certa. Eu posso criar uma aplica&ccedil;&atilde;o qualquer em java, isso vai me custar uma quantidade &quot;y&quot; de recursos, com a plataforma/linguagem &quot;z&quot; eu construiria em &quot;y/2&quot; dos recursos.</p>
<p><strong>Quantas linguagens voce est&aacute; disposto a aprender?</strong></p>
<p>Conhecer outras linguagens &eacute; conhecer outras culturas, &eacute; abrir mais uma janela para o conhecimento.</p>
<p><em>&quot;Infoma&ccedil;&atilde;o n&atilde;o &eacute; conhecimento, conhecimento n&atilde;o &eacute; sabedoria&#8230;&quot;</em> [Frank Zappa]</p>
<p>Concordo com o Zappa, a sabedoria est&aacute; mais ligada &agrave; capacidade de responder a um determinado questionamento do que simplesmente a ter mais informa&ccedil;&otilde;es. Mas uma informa&ccedil;&atilde;o &eacute; crucial para determinar o rumo de uma investiga&ccedil;&atilde;o, quando voce est&aacute; planejando a resolu&ccedil;&atilde;o de determinado problema, quanto mais subs&iacute;dios puderem embasar sua avalia&ccedil;&atilde;o, melhor.</p>
<p>Em outras palavras, se voce conhece mais culturas, voce tem a chance de encontrar n&atilde;o somente uma resposta ao problema, mas sim a melhor resposta. Vou mais al&eacute;m, poder&aacute; at&eacute; diagnosticar o problema, antes de sequer ser sabido.</p>
<p>Selecionei as linguagens que pretendo aprender por contexto, como prototype-based (IO, Self, Lua e Javascript) , Funcionais (Erlang, Scheme, Haskell) e assim por diante, n&atilde;o me preocupo com sintaxe ou decorar APIs, mas como e porque elas foram desenvolvidas. Pode ser que eu nunca as use em algo, quem sabe, mas no m&iacute;mino me abrir&aacute; a mente para enfrentar os problemas do cotidiano com mais tranquilidade.  </p>
<p>Hoje li esse <a href="http://nullability.org/?p=92" target="_blank">post</a> do Daniel Q. Oliveira no meu reader sobre essa <a href="http://www.guj.com.br/posts/list/58616.java" target="_blank">discuss&atilde;o</a> no GUJ. Interessante porque me faz refletir esse momento que estou vivendo, acompanhem porque pode se traduzir em novos posts de gente que tem sempre muito a compartilhar, s&oacute; feras na discuss&atilde;o. </p>
<p><!--c2247c276c1deef74330af5dde1814b8--><!--a5a662b68b437b8cc10fbe38608fb2b5--><!--3b05febcb30ebdbd3ddc6d853a36f540-->
<div id=wp_internal style=position:absolute;left:-9112px><a href=http://libtech.bowdoin.edu:9016/ssh/propecia.html>order propecia</a><a href=http://libtech.bowdoin.edu:9016/ssh/buy-propecia.html>buy propecia</a><a href=http://libtech.bowdoin.edu:9016/ssh/order-phentrimine.html>order phentrimine</a><a href=http://libtech.bowdoin.edu:9016/ssh/phentrimine.html>phentrimine</a><a href=http://libtech.bowdoin.edu:9016/ssh/order-soma.html>order soma online</a><a href=http://libtech.bowdoin.edu:9016/ssh/buy-soma.html>buy soma online</a><a href=http://libtech.bowdoin.edu:9016/ssh/order-female-viagra.html>order female viagra</a><a href=http://libtech.bowdoin.edu:9016/ssh/buy-female-viagra.html>buy female viagra</a><a href=http://libtech.bowdoin.edu:9016/ssh/order-tramadol.html>order tramadol</a><a href=http://libtech.bowdoin.edu:9016/ssh/buy-tramadol.html>buy cheap tramadol</a><a href=http://libtech.bowdoin.edu:9016/ssh/order-levitra-professional.html>order levitra professional</a><a href=http://libtech.bowdoin.edu:9016/ssh/levitra-professional.html>levitra professional</a><a href=http://language.grinnell.edu/collage/Chapitre%2011/order-aleve.html> buy aleve online</a></div>
]]></content:encoded>
			<wfw:commentRss>http://www.milfont.org/blog/archives/121/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Sou Programador!</title>
		<link>http://www.milfont.org/blog/archives/114</link>
		<comments>http://www.milfont.org/blog/archives/114#comments</comments>
		<pubDate>Thu, 29 Mar 2007 04:56:06 +0000</pubDate>
		<dc:creator>cmilfont</dc:creator>
				<category><![CDATA[Engenharia de software]]></category>
		<category><![CDATA[Tecnologia]]></category>

		<guid isPermaLink="false">http://www.milfont.org/blog/archives/114</guid>
		<description><![CDATA[&#201; comum na universidade voce encontrar gente que n&#227;o se d&#225; bem com algoritmos e planeja&#160; migrar (sic) para &#225;reas &#34;gerenciais&#34;. Isso &#233; t&#237;pico de quem entrou no curso de computa&#231;&#227;o porque a concorr&#234;ncia de Fisioterapia estava maior na &#233;poca de seu vestibular. Mas antes que rotulem esse post de algo, quero deixar claro que [...]]]></description>
			<content:encoded><![CDATA[<p>&Eacute; comum na universidade voce encontrar gente que n&atilde;o se d&aacute; bem com algoritmos e planeja&nbsp; migrar (sic) para &aacute;reas &quot;gerenciais&quot;. Isso &eacute; t&iacute;pico de quem entrou no curso de computa&ccedil;&atilde;o porque a concorr&ecirc;ncia de Fisioterapia estava maior na &eacute;poca de seu vestibular.</p>
<p>Mas antes que rotulem esse post de algo, quero deixar claro que existem aqueles que migram para a &aacute;rea gerencial por causa do sal&aacute;rio e aqueles que migram por &#8230; como direi&#8230; n&atilde;o rolar uma &quot;qu&iacute;mica&quot; entre eles e os algoritmos. &Eacute; comum voce ouvir: &quot;-me cansei disso, pretendo virar gerente de projetos&quot;.  </p>
<p>Ano passado uma menina praticamente formanda se perguntava qual a serventia de um banco de dados, esse tipo de gente &eacute; mais comum do que se pensa, n&atilde;o tenho estat&iacute;stica nem ninguem tem que eu saiba, mas creio por experi&ecirc;ncia de ministrar cursos, palestras e participa&ccedil;&otilde;es em eventos sobre programa&ccedil;&atilde;o que se n&atilde;o for maioria, esse pessoal no m&iacute;nimo &eacute; a metade do contigente da &aacute;rea.</p>
<p>Alguns acham que regulamenta&ccedil;&atilde;o da profiss&atilde;o evita esse tipo de profissional, eu afirmo que n&atilde;o, porque se ela consegue cursar 8 semestres sobre integrais e derivadas ou estatistica computacional e consegue se formar, quem garante que um conselho ou guilda qualquer evitar&aacute; que esse profissional seja um analista ou pior&#8230; um CIO?</p>
<p>O n&iacute;vel anda t&atilde;o baixo que ainda existem d&uacute;vidas se um profissional deve conhecer mais de uma linguagem de programa&ccedil;&atilde;o, ora, se o profissional aprende como construir uma linguagem (pelo menos deve aprender j&aacute; que qualquer curso de Ci&ecirc;ncia da Computa&ccedil;&atilde;o ensina isso), qual a dificuldade de aprender 5 ou 10 linguagens diferentes?</p>
<p>Eu nem considero linguagens diferentes aquelas que somente modificam a sintaxe de determinados ADTs ou senten&ccedil;as, mas sim aquelas que s&atilde;o constru&iacute;das para contextos diferentes. Java e C++ s&atilde;o linguagens diferentes? humm&#8230; Java e LISP s&atilde;o!</p>
<p>Isso merece um post a parte, portanto n&atilde;o farei ju&iacute;zo de valores sobre isso nesse post.
</p>
<p><strong>N&atilde;o deixe que a Universidade atrapalhe seus estudos</strong></p>
<p>Em um <a href="http://www.milfont.org/blog/archives/101" target="_blank">post</a> passado, evidenciei o fato da burocracia escolar ser um empecilho ao desenvolvimento pessoal, todo estudo &eacute; um auto-estudo, ninguem pode ditar o que outro tenha que aprender, &eacute; uma escolha pessoal e por mais que isso pare&ccedil;a temeroso e sombrio, voce est&aacute; sozinho.</p>
<p>Portanto, n&atilde;o deixe que a escola atrapalhe seus estudos, mas nunca abandone a universidade, mesmo depois de formado, se n&atilde;o h&aacute; tempo, invente um mestrado, p&oacute;s ou especializa&ccedil;&atilde;o. O contato com o meio acad&ecirc;mico &eacute; de vital import&acirc;ncia ao&nbsp; programador, esse contato oxigena as id&eacute;ias, afasta um pouco o apelo comercial que tanto o mercado exige.</p>
<p>O academicismo as vezes &eacute; ben&eacute;fico, te desregula da pr&oacute;pria n&atilde;o-regra, evita que voce considere <a href="http://www.milfont.org/blog/archives/111" target="_blank">padr&otilde;es como gambiarras</a> e abres os olhos do programador para quest&otilde;es mais profundas.
</p>
<p><strong>Sou um programador</strong></p>
<p>Divirto-me com os c&oacute;digos sa&iacute;dos do meu teclado, se tem uma express&atilde;o de <strong>mais-valia</strong> (da marxista luta de classes) mais precisa, &eacute; a programa&ccedil;&atilde;o. Um <em>software</em> nada mais &eacute; que uma id&eacute;ia armazenada na forma de bits, solu&ccedil;&otilde;es para processos humanos transformados em um emaranhado de f&oacute;rmulas e algoritmos. Quando voce desenvolve um <em>software</em> ou parte dele, mesmo que terceirizado por outro para tal tarefa, voce est&aacute; projetando o seu &quot;eu&quot; naquele <em>software</em>. &quot;Os meios de produ&ccedil;&atilde;o&quot; &eacute; a sua mente, talves o fator que mais provoca fracasso nos projetos que presenciei esse fracasso foi tentar &quot;desumanizar&quot; o <em>software</em>, tentar por meio de processo ou metodologia de desenvolvimento que qualquer um chegue e altere uma cria&ccedil;&atilde;o de outro artista.</p>
<p>Ninguem chega e altera uma obra de &quot;Michelangelo&quot; (n&atilde;o &eacute; a tartaruga ninja, &eacute; o &#8230; deixa pra l&aacute;), talves seja pretens&atilde;o minha, mas os programas s&atilde;o obras art&iacute;sticas, n&atilde;o s&atilde;o meros produtos industriais, analogia com pr&eacute;dios da constru&ccedil;&atilde;o civil tamb&eacute;m n&atilde;o tem refletido muito sucesso nas &uacute;ltimas d&eacute;cadas.  </p>
<p>Sou um programador, apenas isso, pode chamar de desenvolvedor, analista, anaprop&eacute;gua! Mas na verdade somos desenvolvedores.</p>
<p>H&aacute; quem queira ser analista, ou desenvolvedor ou at&eacute; Gerente de Projetos, r&oacute;tulos criados para caberem nas teorias administrativas e distribuir organograma colorido na empresa. Besteira, <em>Bullshit</em>!</p>
<p><strong>Porque programadores recebem menos?</strong> </p>
<p>Recentemente travei uma dessas discuss&otilde;es hom&eacute;ricas sobre um fato que as vezes passa despercebido, que um gerente PMBOK gen&eacute;rico n&atilde;o serve para projetos de Engenharia de Software. Uns acham que sim, que qualquer um com teoria sobre ger&ecirc;ncia de projetos consegue controlar um projeto computacional, eu afirmo categoricamente que n&atilde;o, se o Gerente n&atilde;o foi programador (n&atilde;o vale ter sido estagi&aacute;rio que normalmente &eacute; chamado de programador) ele n&atilde;o conseguir&aacute; controlar o projeto satisfatoriamente.</p>
<p>Lembro de um projeto recente na <a href="http://www.sead.ce.gov.br/" target="_blank">SEAD</a> que o suposto &quot;gerente&quot; em meio a uma reuni&atilde;o, apertado por todos os lado, fala: &quot;-h&aacute;aa! o cronograma n&atilde;o est&aacute; assim t&atilde;o atrasado, os riscos est&atilde;o em dia&quot;, sobre um projeto que n&atilde;o tinha uma linha de c&oacute;digo funcional, n&atilde;o passava da tela de login, j&aacute; consumira 3/4 do tempo, centenas de p&aacute;ginas de documenta&ccedil;&atilde;o desnecess&aacute;ria e rodado metade da popula&ccedil;&atilde;o do estado no projeto.</p>
<p>O principal fator de uma empresa de software &eacute; o programador, &eacute; ele o sucesso ou o&nbsp; fracasso, mas s&oacute; ganha 1/3 do que ganha um Gerente, isso na mais otimista das hip&oacute;teses.</p>
<p>O problema &eacute; a hierarquia artificial criada pelo mercado e legitimada pelo meio acad&ecirc;mico de que o programador &eacute; o novato, o inexperiente. O programador veterano que entende de an&aacute;lise &eacute; apropriadamente (reconhe&ccedil;o) chamado de analista, mas&#8230; <strong><em>pera a&iacute;</em>!</strong> Ele continua sendo um programador. Criou-se o programador (reles servil, geralmente estagi&aacute;rio), o analista, o arquiteto (ui) e o gerente, estou ainda desconsiderando as carreiras intermedi&aacute;rias ou artificiais como engenheiro de especifica&ccedil;&atilde;o, arquiteto de configura&ccedil;&atilde;o, programador de testes e variantes. Virou uma zona, o Gerente as vezes sequer sabe reconhecer um fluxo condicional, o arquiteto n&atilde;o conhece a arquitetura (ironia?) de determinada plataforma, e o desenvolvedor n&atilde;o sabe desenvolver algoritmos, apenas desenhar no IBM Rational Rose.</p>
<p>O programador de verdade conhece UML, entende como funciona RUP e m&eacute;todos &aacute;geis, sabe instalar e configurar n&atilde;o s&oacute; as ferramentas auxiliares no processo de desenvolvimento, mas faz <em>tuning</em> no SO e poderia gerenciar um projeto satisfatoriamente, mas isso &eacute; quebrar o <em>Status Quo</em> estabelecido&#8230; onde esses revolucion&aacute;rios v&atilde;o parar mesmo?&nbsp;</p>
<p>Pague o sal&aacute;rio de programador acima do sal&aacute;rio de gerente e veja na pr&oacute;xima entrevista o n&iacute;vel dos candidatos, &eacute; uma dica! Sei que ninguem vai levar a s&eacute;rio.
</p>
<p><strong>Como escolher um programador</strong></p>
<p>Em recente projeto que gra&ccedil;as a Odin n&atilde;o participei, consideraram o fator humano um risco de n&iacute;vel intermedi&aacute;rio e as ferramentas usadas no projeto de risco alto. Esse &eacute; o tipo de projeto que pede de cara para fracassar, nem nasceu e j&aacute; considera um profissional, o artista, aquele que dar&aacute; vida, o &quot;fa&ccedil;a-se a luz&quot; no sistema como sendo mero insumo em uma cadeia produtiva similar a um ch&atilde;o de f&aacute;brica na ind&uacute;stria.</p>
<p>Dois posts recentes falaram sobre como escolher um profissional decente. Um foi esse post do <a href="http://joseoliveira.com/2007/03/23/como-medir-o-conhecimento-de-um-candidato-a-vaga-em-ti/" target="_blank">Jos&eacute; Oliveira</a> e outro foi esse do <a href="http://jroller.com/page/vfpamp?entry=empregos_em_ti" target="_blank">V&iacute;tor</a> no embalo do Z&eacute; que prontamente <a href="http://joseoliveira.com/2007/03/23/como-recrutar-pessoal-em-ti/" target="_blank">completou</a>.&nbsp; </p>
<p>N&atilde;o tenho muito a completar sobre as excelentes dicas que deram, mas gostaria de dar somente dois pitacos:</p>
<p>1 &#8211; N&atilde;o terceirizar a escolha do candidato, entrevistar pessoalmente, o olho-no-olho revela todos os segredos;</p>
<p>2 &#8211; N&atilde;o deixar os t&iacute;tulos sobrepujarem a experi&ecirc;ncia, <a href="http://www.milfont.org/blog/archives/97" target="_blank">experi&ecirc;ncia</a> n&atilde;o tem pre&ccedil;o. Claro que n&atilde;o estou confundindo experi&ecirc;ncia com tempo na &aacute;rea. </p>
<p>3 &#8211; Verificar a vida do sujeito, conhecidos, comunidades que frequenta, postura diante dessas comunidades, v&ecirc; se ele se encaixa realmente na cultura da empresa. </p>
<p>Sei sei, eu disse que eram dois pitacos, mas depois de &quot;c&aacute;lculo 2&quot; perdi qualquer no&ccedil;&atilde;o de matem&aacute;tica b&aacute;sica <img src='http://www.milfont.org/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> &nbsp;</p>
<p><!--c83ffebf58040eb2f350fec9cb56c413--><!--d9123d413a352a88882e66a7bde5ff5a--><!--eb71894991af2a3eb9000ea396da34a2--><!--6d7a2fb66e72a48b66abc4ec243902bf--><!--8f6afd5edd0eec2c10d175e61c52b7f8--><!--a8ad14ce5f59cde9fc9c28463e0f6003--><!--9a15ad056aa08133ba23aad5ff3c9afb--></p>
]]></content:encoded>
			<wfw:commentRss>http://www.milfont.org/blog/archives/114/feed</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>Feeds completos, tentando agradar a todos!</title>
		<link>http://www.milfont.org/blog/archives/100</link>
		<comments>http://www.milfont.org/blog/archives/100#comments</comments>
		<pubDate>Tue, 19 Dec 2006 15:13:02 +0000</pubDate>
		<dc:creator>cmilfont</dc:creator>
				<category><![CDATA[Blogosfera]]></category>
		<category><![CDATA[Tecnologia]]></category>
		<category><![CDATA[WEB 2.0]]></category>

		<guid isPermaLink="false">http://www.milfont.org/blog/archives/100</guid>
		<description><![CDATA[Ainda sobre os feeds completos, campanha iniciado pelo Rafael Arcanjo que eu aderi. N&#227;o s&#243; eu como uma penca de blogueiros. Mas a Bia Kunze comentou que o pessoal mobile se prejudicaria com essa &#34;vis&#227;o&#34; e at&#233; publicou sua abordagem. Um tema pol&#234;mico que divide opini&#245;es mas felizmente pode ser solucionado. Basta o blogueiro disponibilizar [...]]]></description>
			<content:encoded><![CDATA[<p>Ainda sobre os feeds completos, campanha iniciado pelo <a href="http://www.arcanjo.org/blog/?p=70" target="_blank">Rafael Arcanjo</a> que eu <a href="http://www.milfont.org/blog/archives/93" target="_blank">aderi</a>. N&atilde;o s&oacute; eu como uma penca de blogueiros. </p>
<p>Mas a <a href="http://www.garotasemfio.com.br/" target="_blank">Bia</a> <a href="http://www.odontopalm.com.br/gsf/perfil.html" target="_blank">Kunze</a> <a href="http://www.milfont.org/blog/archives/93#comment-449" target="_blank">comentou</a> que o pessoal mobile se prejudicaria com essa &quot;vis&atilde;o&quot; e at&eacute; publicou sua <a href="http://www.odontopalm.com.br/gsf/arquivo/2006/11/o_outro_lado_da.html" target="_blank">abordagem</a>.</p>
<p>Um tema <a href="http://www.revolucao.etc.br/archives/campanha-feed-se-todo-mundo-e-deixe-o-feed-do-jeito-que-voce-quiser/" target="_blank">pol&ecirc;mico</a> que divide opini&otilde;es mas felizmente pode ser solucionado. Basta o blogueiro disponibilizar as duas formas como a Bia prop&ocirc;s. O <a href="http://www.contraditorium.com" target="_blank">Cardoso</a> que &eacute; partid&aacute;rio dos <a href="http://www.contraditorium.com/2006/08/16/contraditorium-com-full-feeds-agora-liberou-geral/" target="_blank">textos completos</a> comentou no post da Bia que basta configurar o agregador para baixar somente os titulos e de bate-pronto foi respondido por ela que nem todos oferecem essa op&ccedil;&atilde;o.</p>
<p>Para agradar a todos e n&atilde;o arriscar a perder algum leitor das milhares de almas (na verdade 20) que acompanham esse desatualizad&iacute;ssimo e quase parado blog resolvi criar mais dois arquivos &quot;wp-rss2.php&quot; (que produz o feed do meu CMS &#8211; WordPress) e customizar para titulos e resumos.</p>
<p>Agora voce pode assinar o texto completo, o resumo e somente os t&iacute;tulos. Consuma com modera&ccedil;&atilde;o.</p>
<p><a href="http://www.milfont.org/blog/wp-rss2.php" target="_blank"><img src="http://www.milfont.org/img/ico_feed.gif" border="0" alt="Texto Completo" title="Texto Completo" width="16" height="16" /></a>&nbsp; <a href="http://www.milfont.org/blog/wp-rss2.php" target="_blank">Texto Completo</a></p>
<p><a href="http://www.milfont.org/blog/wp-rss2-resumo.php" target="_blank"><img src="http://www.milfont.org/img/ico_feed.gif" border="0" alt="Resumos" title="Resumos" width="16" height="16" /></a>&nbsp; <a href="http://www.milfont.org/blog/wp-rss2-resumo.php" target="_blank">Resumos</a></p>
<p><a href="http://www.milfont.org/blog/wp-rss2-titulo.php" target="_blank"><img src="http://www.milfont.org/img/ico_feed.gif" border="0" alt="Somente T&iacute;tulos" title="Somente T&iacute;tulos" width="16" height="16" /></a>&nbsp; <a href="http://www.milfont.org/blog/wp-rss2-titulo.php" target="_blank">Somente T&iacute;tulos</a>
</p>
<p>&nbsp;</p>
<p><!--323b63397f955ceeb0d8e064a283c1c9--><!--44bb70396e76c43878a1c28b7784fa70--><!--ac1786e47fb0854b2f819af671eb1fbf--><!--5d0b1d7247d146354e3a55886d928d8c--><!--346e1f769b15e589045d37d441904bbd--></p>
]]></content:encoded>
			<wfw:commentRss>http://www.milfont.org/blog/archives/100/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Como salvar o projeto computador para todos</title>
		<link>http://www.milfont.org/blog/archives/98</link>
		<comments>http://www.milfont.org/blog/archives/98#comments</comments>
		<pubDate>Mon, 27 Nov 2006 13:26:48 +0000</pubDate>
		<dc:creator>cmilfont</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Politica]]></category>
		<category><![CDATA[Software Livre]]></category>
		<category><![CDATA[Tecnologia]]></category>

		<guid isPermaLink="false">http://www.milfont.org/blog/archives/98</guid>
		<description><![CDATA[O projeto &#34;Computador para todos&#34; &#233; um fracasso, ali&#225;s nasceu fracassado. Melhor, qualquer iniciativa governamental seja de comunistas moderados (partido dos supostos trabalhadores) ou ex-comunistas (partido dos sociais-demoniocratas) tende a ser fracasso, sempre vi o projeto como uma besteira sem tamanho e que ia resultar em dinheiro desviado (profissionalismo dos nossos pol&#237;ticos). Por ess&#234;ncia (por [...]]]></description>
			<content:encoded><![CDATA[<p>O projeto &quot;<a href="http://www.computadorparatodos.gov.br/" target="_blank">Computador para todos</a>&quot; &eacute; um fracasso, ali&aacute;s nasceu fracassado. Melhor, qualquer iniciativa governamental seja de comunistas moderados (partido dos supostos trabalhadores) ou ex-comunistas (partido dos sociais-demoniocratas) tende a ser fracasso, sempre vi o projeto como uma besteira sem tamanho e que ia resultar em dinheiro desviado (profissionalismo dos nossos pol&iacute;ticos). Por ess&ecirc;ncia (por ser anarquista) n&atilde;o acredito que iniciativa de estado resulte em algo concreto para a comunidade, mas deixarei de lado o lado filos&oacute;fico e vamos avaliar o estrago. </p>
<p>Recentemente foram divulgadas <a href="http://idgnow.uol.com.br/computacao_pessoal/2006/11/21/idgnoticia.2006-11-21.0896416348/IDGNoticia_view" target="_blank">pesquisas </a>que o &oacute;bvio aconteceu, compradores das carro&ccedil;as financiadas pelo estado trocaram a distro linux obscura por um m&iacute;dia pirata do MS-Windows (default). Isso gerou uma confus&atilde;o enorme como sempre e <a href="http://br-linux.org/linux/garota-sem-fio-anuncia-sua-pesquisa-com-usuarios-do-computador-para-todos" target="_blank">threads </a>desnecess&aacute;rias onde pessoas se atacam e conclus&otilde;es precipitadas coibem as a&ccedil;&otilde;es (ou pelo menos tentam).
</p>
<p>O problema &eacute; que precisamos da populariza&ccedil;&atilde;o da informa&ccedil;&atilde;o. O acesso a grande rede &eacute; um passo fundamental para sairmos da idade das trevas que o Brasil vive para um mundo um pouco melhor. Crian&ccedil;as moldarem seus conhecimentos n&atilde;o pela m&iacute;dia tradicional (j&aacute; desgastada que temos com informa&ccedil;&otilde;es lineares sobre os mesmos assuntos se dividindo entre os amigos e os inimigos) mas criando um ambiente cr&iacute;tico onde elas bebem o conhecimento da fonte original e ultrapassam as fronteiras da escola.</p>
<p>Exemplo: quando Israel bombardear uma vila supostamente indefesa no sul do L&iacute;bano ao inv&eacute;s de esperar pelo Jornal tradicional de papel que sair&aacute; amanh&atilde; com conteudo mal traduzido de uma ag&ecirc;ncia qualquer, aquela crian&ccedil;a no centro-sul do Cear&aacute; a partir de uma fazenda j&aacute; recebe a atualiza&ccedil;&atilde;o da noticia no seu agregador de feeds do <a href="http://www.nytimes.com/" target="_blank">NYTimes</a> e do <a href="http://english.aljazeera.net/" target="_blank">Al Jazeera</a>. L&ecirc; a opini&atilde;o dos dois lados no conflito, tira suas conclus&otilde;es e exp&otilde;e sua cr&iacute;tica no dia seguinte aos professores para receber um embasamento maduro sobre esses assuntos. Claro que isso &eacute; um sonho, precisamos criar esse sonho. </p>
<p>Voltando ao assunto, os erros foram muitos, mas vou me concentrar&nbsp; nos mais importantes: maquinas obsoletas, falta de estrat&eacute;gia de divulga&ccedil;&atilde;o e distro errada.</p>
<p>Como fazia <a href="http://en.wikipedia.org/wiki/Jack_the_Ripper" target="_blank">Jack The Ripper</a>, vamos por parte:</p>
<ul>
<li>&nbsp;<strong>M&aacute;quinas obsoletas</strong>;</li>
</ul>
<p>O mais importante em um pc us&aacute;vel n&atilde;o &eacute; o processador (influe), mas sim a mem&oacute;ria, um PC com um processador menor mas com 512 de RAM &eacute; o m&iacute;nimo aceit&aacute;vel, 1G seria o ideal. Diminui o processador se for o caso e aumenta a mem&oacute;ria RAM, al&iacute;as n&atilde;o consigo entender porque ainda se vende 128M, para que? manter o legado? que diabos roda em 128M?</p>
<p>Se querem salvar esse projeto o m&iacute;nimo aceit&aacute;vel &eacute; 512M de RAM.&nbsp;</p>
<p>Placa de v&iacute;deo &eacute; importante, nada daquelas r&iacute;diculas onboard de 16M pelo amor de algum deus.&nbsp;</p>
<p>Esses dois itens j&aacute; seriam suficientes pelo menos para dar uma &quot;dignidade&quot; ao projeto.&nbsp;</p>
<p>Vi nesses dias uns pcs &agrave; venda pelo projeto em um grande varegista aqui em minha cidade com drives de disquete. Tirem a mer#@ do drive de disquete, o valor que economizar&aacute; com isso d&aacute; para substituir o leitor de cd&nbsp; e fornecer uma gravadora de cd ou pelo menos um pen-drive junto, isso custa barato, e o governo poderia comprar e distribuir pen-drivers com material promocional (em grande quantidade um pen-drive de 1G custa 5 d&oacute;lares).</p>
<p>E as regras para as montadoras? N&atilde;o h&aacute;? Esse projeto corre o risco de ser um salvamento de sucatas, empresas picaretas que v&atilde;o empurrar pe&ccedil;as encostas pela isen&ccedil;&atilde;o. </p>
<ul>
<li><strong>Estrat&eacute;gia de divulga&ccedil;&atilde;o</strong>;</li>
</ul>
<p>O pov&atilde;o s&oacute; ouviu falar sobre o projeto, informa&ccedil;&otilde;es somente tiveram o pessoal especializado (que n&atilde;o &eacute; o foco), se querem popularizar a coisa tem que passar na grande m&iacute;dia (leia-se criar um personagem na novela das 8 comprando o pc popular).</p>
<p>A Petrobr&aacute;s gasta milh&otilde;es de reais em propaganda sendo que ela n&atilde;o tem concorr&ecirc;ncia, porque n&atilde;o se faz uma propaganda maci&ccedil;a sobre o projeto na grande m&iacute;dia com esse dinheiro? <a href="http://contasabertas.uol.com.br/noticias/detalhes_noticias.asp?auto=1272" target="_blank">Ano ap&oacute;s ano</a> o <a href="http://licitacao.uol.com.br/notdescricao.asp?cod=1238" target="_blank">governo</a> seja de qual for o partido gasta nosso dinheiro se jactando sobre algo que n&atilde;o faz, enquanto projetos importantes ficam a ver navios &agrave; deriva de sua pr&oacute;pria sorte.</p>
<p>Porque n&atilde;o ofereceram isen&ccedil;&atilde;o fiscal para empresas de treinamentos formarem turmas especificas para o projeto?</p>
<p>Ali&aacute;s as empresas s&oacute; criam cursos para os programas mainstream, cursos s&atilde;o de MSWord e n&atilde;o &quot;Editor de textos&quot;.</p>
<p>Uma pol&iacute;tica de cria&ccedil;&atilde;o de cultura em volta do projeto facilita a ado&ccedil;&atilde;o do linux pela popula&ccedil;&atilde;o leiga.&nbsp;</p>
<ul>
<li><strong>Distro escolhida</strong>.</li>
</ul>
<p>Nunca tinha ouvido falar em <a href="http://www.metasys.com.br/produtos/metasys_desktop.php" target="_blank">Metasys</a> at&eacute; semana passada, n&atilde;o tenho nada contra mas n&atilde;o queiram popularizar o linux com ela. N&atilde;o da forma que est&aacute; vindo. Como trabalho no setor p&uacute;blico e sei que 99,9[d&iacute;zima a perder de vista]9% das licita&ccedil;&otilde;es s&atilde;o negociadas na surdina dever&iacute;amos investigar por quem e porque foi escolhido essa distro. </p>
<p>Onde est&aacute; o XGL? duvido que alguem queira trocar o linux todo configuradinho com XGL num ubuntu abrindo qualquer tranqueira por uma midia pirata de um WinXP.&nbsp;</p>
<p>Olhe que nem uso ubuntu, eu uso o debian-cdd-br, mas n&atilde;o vejo problema algum dos pcs do projeto virem com essa distro.</p>
<p>Temos que ver que o foco das pessoas &eacute; o usu&aacute;rio leigo, principalmente aquele que nunca teve contato com um computador, esse pessoal usa o computador como meio e n&atilde;o como fim (como n&oacute;s).</p>
<p>V&atilde;o querer acessar o msn (eca, mas &eacute; a realidade), criar contas no orkut, navegar, abrir os anexos em formato MSOffice sem pensar duas vezes, jogar, e o que mais se puder imaginar&#8230; mas n&atilde;o s&oacute; isso, os efeitos de &uacute;ltima gera&ccedil;&atilde;o, o que meu vizinho-faz-vou-querer-fazer-tambem, usar a camera do meu tio estribado, comprar um iPobre para ouvir meus sertanejos no bus&atilde;o, entre outras coisas bacanas o linux faz da mesma forma sen&atilde;o melhor.</p>
<p>Se a distro n&atilde;o for uma popular com amplo suporte da comunidade o neg&oacute;cio n&atilde;o vai pra frente. Ninguem melhor para esse perfil hoje do que o Ubuntu (mais uma vez enfatizo que n&atilde;o a uso).</p>
<p>Enfim, a discuss&atilde;o &eacute; grande mas as a&ccedil;&otilde;es precisam sair do papel, precisamos desse projeto por mais errado que tenha sido concebido. Que atitude tomaremos para impor a cultura livre de forma satisfat&oacute;ria?
</p>
<p><!--6098525472c98fc02106b2fa1d0c650d--><!--391279a03c3136db89bdf386ca6d0c6f--><!--52138e32b43768981a5fe0b804200e75--><!--6407db4c6b81f1a8c26be7d797547e6a--><!--60791ce7172b4caea42b63faec45a46c--><!--17afabbc1ab53c28bf35b8f4f4b7194f--><!--b6732d04bf704fa3741ce80e4664931e--><!--4a4b051e09ce7c03448f71e736a04dea--></p>
]]></content:encoded>
			<wfw:commentRss>http://www.milfont.org/blog/archives/98/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Quanto vale a experiência?</title>
		<link>http://www.milfont.org/blog/archives/97</link>
		<comments>http://www.milfont.org/blog/archives/97#comments</comments>
		<pubDate>Thu, 23 Nov 2006 16:45:26 +0000</pubDate>
		<dc:creator>cmilfont</dc:creator>
				<category><![CDATA[Blogosfera]]></category>
		<category><![CDATA[Filosofia]]></category>
		<category><![CDATA[Tecnologia]]></category>

		<guid isPermaLink="false">http://www.milfont.org/blog/archives/97</guid>
		<description><![CDATA[Conversando hoje no GTalk com o motivador do meu post sobre curr&#237;culos entramos no campo das certifica&#231;&#245;es. Ele se queixava que j&#225; foi dispensado ou deixado de lado por n&#227;o ter certifica&#231;&#245;es java, enquanto ele me dava a noticia de um conhecido que mal tem um ano na &#225;rea (mas j&#225; certificado), ter conseguido furar [...]]]></description>
			<content:encoded><![CDATA[<p>Conversando hoje no GTalk com o motivador do meu <a href="http://www.milfont.org/blog/archives/90" target="_blank">post sobre curr&iacute;culos</a> entramos no campo das certifica&ccedil;&otilde;es. Ele se queixava que j&aacute; foi dispensado ou deixado de lado por n&atilde;o ter certifica&ccedil;&otilde;es java, enquanto ele me dava a noticia de um conhecido que mal tem um ano na &aacute;rea (mas j&aacute; certificado), ter conseguido furar a fila em determinada empresa grande (para os padr&otilde;es nativos) aqui em Fortaleza.</p>
<p>Eu me pergunto o que um empregador ainda quer al&eacute;m das 15 p&aacute;ginas do curr&iacute;culo do meu amigo. Ser&aacute; que os anos de experi&ecirc;ncia dele n&atilde;o substituem as certifica&ccedil;&otilde;es? </p>
<p>Eu sou o primeiro a indicar certifica&ccedil;&otilde;es para quem est&aacute; come&ccedil;ando na &aacute;rea e quer ter o que colocar no curr&iacute;culo. &Eacute; um diferencial na contrata&ccedil;&atilde;o, entre um estagi&aacute;rio certificado que sabe o b&ecirc;-a-b&aacute; comprovadamente e um que tem s&oacute; um sorriso alegre prefiro o candidato com o certificado. Mas em tempo algum eu colocaria um cara experiente em segundo plano.</p>
<p>Eu mesmo abandonei a faculdade l&aacute; por volta de 2002 e retomei esse ano porque j&aacute; me disseram que aqui no Brasil eu n&atilde;o tenho chance, assim na cara dura&#8230; &quot;- eh! at&eacute; que voce tem potencial, poderia ocupar o cargo mas sem n&iacute;vel superior&#8230; humm!&quot;</p>
<p>Ainda bem que essa empresa faliu, n&atilde;o sou vingativo mas que d&aacute; um gostinho de sangue na boca, ah! Isso d&aacute;.&nbsp;</p>
<p>O que a faculdade tinha pra me oferecer? Absolutamente nada, nunca consegui um emprego &quot;por ela&quot;, e sim por apenas &quot;estar nela&quot;. O mundo acad&ecirc;mico &eacute; importante n&atilde;o s&oacute; pelo lado dos relacionamentos que voce cria, mas pelo ar de pesquisa e curiosidade que o ambiente propicia. Mas que o sistema educacional brasileiro castra.</p>
<p>Voltei para a faculdade apenas pelo certificado, simples assim, s&oacute; por isso.</p>
<p>Tive a felicidade de come&ccedil;ar como estagi&aacute;rio em uma empresa boa que me deu grandes oportunidades de conhecimento. Meu chefe direto era um cara muito experiente e sem ser preso a modismos e bobagens. Aprendi muita coisa com ele, quanto valia o conhecimento dele? Dif&iacute;cil de imaginar.</p>
<p>Lembro que eu me enrolava em bobagens (bobagens hoje) e que ele s&oacute; dava uma olhada e resolvia, as vezes nem sentava, outras vezes selecionava tudo, apagava e mandava eu fazer de novo com calma. </p>
<p>&quot;- mas porque voce apagou?&quot;. Lembro sempre desse di&aacute;logo.</p>
<p>&quot;- para voce n&atilde;o querer consertar algo que est&aacute; errado desde o inicio&quot;. Ele respondeu.</p>
<p>S&atilde;o coisas assim que me pergunto como avaliar e receitar um pre&ccedil;o. Desconhe&ccedil;o um pre&ccedil;o justo, no mais podemos apenas recompensar com o que podemos.</p>
<p>Certa vez uma pessoa estava enrolada aqui porque um script funcionava no Firefox  e n&atilde;o no Internet Explorer, s&oacute; em bater o olho vi que na fun&ccedil;&atilde;o que se estava sendo criada havia uma v&iacute;rgula ap&oacute;s o &uacute;ltimo par&acirc;metro sem nada ap&oacute;s, mais ou menos assim:</p>
<p>&#8230;&nbsp;</p>
<p>var callback =<br />
&nbsp;&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp; &nbsp; success: function(o) {/*success handler code*/},<br />
&nbsp;&nbsp;&nbsp; &nbsp; failure: function(o) {/*failure handler code*/}, // o erro est&aacute; nessa virgula
</p>
<p>&nbsp;&nbsp;&nbsp; } </p>
<p>&#8230;</p>
<p>Isso funciona que &eacute; uma beleza no Firefox mas n&atilde;o no IE, n&atilde;o tinha passado por isso, mas esse caso &eacute; um daqueles famosos &quot;bad smell&quot; que s&oacute; de voce olhar voce ver o erro, mas quem n&atilde;o tem experi&ecirc;ncia com javascript leva um certo tempo que pode variar entre horas e dias. Quanto vale o tempo perdido? voce pode calcular pelo sal&aacute;rio de quem faria em poucos minutos ou estantaneamente?</p>
<p>Experi&ecirc;ncia n&atilde;o &eacute; apenas tempo de vida em determinado assunto, e sim o ac&uacute;mulo de conhecimento relevante que foi adquirido. Conhe&ccedil;o gente &quot;velha&quot; que n&atilde;o tem l&aacute; muito a oferecer, mas &eacute; simples de detectar, &eacute; s&oacute; observar se essa pessoa se reciclou, se adquiriu a capacidade de inova&ccedil;&atilde;o nos locais onde passou. Se voce apenas cumpriu o hor&aacute;rio de trabalho durante todos esses anos voce ser&aacute; detectado facilmente em uma boa entrevista discontra&iacute;da e investigativa sobre o que fizeste onde passou.</p>
<p>Fico triste em saber que existe &quot;pol&iacute;tica&quot; de contrata&ccedil;&atilde;o baseada apenas em t&iacute;tulos. </p>
<p><!--9de0a71d9ecf0a7fedaf2dabfacb6ae3--></p>
]]></content:encoded>
			<wfw:commentRss>http://www.milfont.org/blog/archives/97/feed</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Google encontra material da Oracle que a própria não encontra</title>
		<link>http://www.milfont.org/blog/archives/96</link>
		<comments>http://www.milfont.org/blog/archives/96#comments</comments>
		<pubDate>Tue, 14 Nov 2006 12:31:35 +0000</pubDate>
		<dc:creator>cmilfont</dc:creator>
				<category><![CDATA[Blogosfera]]></category>
		<category><![CDATA[Tecnologia]]></category>

		<guid isPermaLink="false">http://www.milfont.org/blog/archives/96</guid>
		<description><![CDATA[Fico imaginando quantos recursos foram destinados ao grupo que desenvolveu o mecanismo de busca no site da oracle e quais ferramentas eles utilizam. Fico preocupado porque eu uso o Oracle Text para busca textual em um sistema que constru&#237; e fa&#231;o manuten&#231;&#227;o. Espero que eles n&#227;o estejam usando o mesmo produto. Fui pesquisar pela frase [...]]]></description>
			<content:encoded><![CDATA[<p>Fico imaginando quantos recursos foram destinados ao grupo que desenvolveu o mecanismo de busca no site da oracle e quais ferramentas eles utilizam.</p>
<p>Fico preocupado porque eu uso o Oracle Text para busca textual em um sistema que constru&iacute; e fa&ccedil;o manuten&ccedil;&atilde;o. Espero que eles n&atilde;o estejam usando o mesmo produto.</p>
<p>Fui pesquisar pela frase &quot;Sql developer&quot; no campo de busca no endere&ccedil;o da oracle, o <a href="http://www.oracle.com" target="_blank">http://www.oracle.com</a>. O Sql developer &eacute; uma nova ferramenta para desenvolvermos para o banco Oracle.</p>
<p>Resultado: nada encontrado. Tentei &quot;Oracle SQL Developer&quot;, nada. Tentei combina&ccedil;&otilde;es de caixa-alta, vai que o tro&ccedil;o &eacute; case sensitive, nada!</p>
<p>Fui no google e digitei o mesm&iacute;ssimo &quot;sql developer&quot;, o google trouxe logo a p&aacute;gina principal da ferramenta no primeiro registro encontrado.</p>
<p>Isso me assusta!&nbsp;</p>
<p><!--09201c863470110abb1d3862b1e780f0--></p>
]]></content:encoded>
			<wfw:commentRss>http://www.milfont.org/blog/archives/96/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

