<?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; Java</title>
	<atom:link href="http://www.milfont.org/blog/archives/category/java/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>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>Café com tapioca &#8211; Julho de 2007</title>
		<link>http://www.milfont.org/blog/archives/133</link>
		<comments>http://www.milfont.org/blog/archives/133#comments</comments>
		<pubDate>Wed, 04 Jul 2007 13:01:25 +0000</pubDate>
		<dc:creator>cmilfont</dc:creator>
				<category><![CDATA[Ajax]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[WEB 2.0]]></category>

		<guid isPermaLink="false">http://www.milfont.org/blog/archives/133</guid>
		<description><![CDATA[Fui selecionado para ministrar uma palestra no pr&#243;ximo &#34;Caf&#233; com Tapioca&#34;, evento realizado pelo CEJUG (Grupo de Discuss&#245;es Java do Cear&#225;) . O an&#250;ncio foi divulgado nesse endere&#231;o do CEJUG, portanto l&#225; voce tem mais informa&#231;&#245;es sobre o evento. A palestra ser&#225; sobre Ajax e como implementar um modelo MVC nessa tecnologia. Voces est&#227;o todos [...]]]></description>
			<content:encoded><![CDATA[<p>Fui selecionado para ministrar uma palestra no pr&oacute;ximo &quot;Caf&eacute; com Tapioca&quot;, evento realizado pelo <a href="http://www.cejug.org">CEJUG</a> (Grupo de Discuss&otilde;es Java do Cear&aacute;) .</p>
<p>O <a href="http://www.cejug.org/pages/viewpage.action?pageId=6258754">an&uacute;ncio</a> foi divulgado nesse endere&ccedil;o  do CEJUG, portanto <a href="http://www.cejug.org/display/cejug/Implementando+MVC+com+AJAX">l&aacute;</a> voce tem mais <a href="http://www.cejug.org/display/cejug/Implementando+MVC+com+AJAX">informa&ccedil;&otilde;es</a> sobre o evento. A palestra ser&aacute; sobre Ajax e como implementar um modelo MVC nessa tecnologia. </p>
<p>Voces est&atilde;o todos convocados para irem na Fortes no dia 12, n&atilde;o aceitarei a aus&ecirc;ncia em hip&oacute;tese alguma.</p>
<p><!--b22b585d4e291f4588cff682c75eeb07--><!--8009767095a7fb4d01c70d4a138cd658--><!--d7a9e85bfbe996d461259ca092459b18--></p>
]]></content:encoded>
			<wfw:commentRss>http://www.milfont.org/blog/archives/133/feed</wfw:commentRss>
		<slash:comments>1</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>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>Curso Ajax Avançado</title>
		<link>http://www.milfont.org/blog/archives/117</link>
		<comments>http://www.milfont.org/blog/archives/117#comments</comments>
		<pubDate>Tue, 24 Apr 2007 12:49:15 +0000</pubDate>
		<dc:creator>cmilfont</dc:creator>
				<category><![CDATA[Ajax]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[WEB 2.0]]></category>
		<category><![CDATA[YUI]]></category>

		<guid isPermaLink="false">http://www.milfont.org/blog/archives/117</guid>
		<description><![CDATA[CURSO AJAX AVAN&#199;ADO Dos conceitos avan&#231;ados no desenvolvimento de aplica&#231;&#245;es WEB com AJAX at&#233; o dom&#237;nio dos frameworks UI mais produtivos, o curso explicar&#225; em detalhes as principais t&#233;cnicas utilizadas pelas empresas de WEB2, de maneira que o aluno seja capacitado a criar aplica&#231;&#245;es personalizadas e arrasadoras. Foco nos frameworks UI (DWR, YUI e Ext),&#160; [...]]]></description>
			<content:encoded><![CDATA[<p><span style="font-weight: bold">CURSO AJAX AVAN&Ccedil;ADO<br />
</span><br />
Dos conceitos avan&ccedil;ados no desenvolvimento de aplica&ccedil;&otilde;es WEB com AJAX at&eacute; o dom&iacute;nio dos frameworks UI mais produtivos, o curso explicar&aacute; em detalhes as principais t&eacute;cnicas utilizadas pelas empresas de WEB2, de maneira que o aluno seja capacitado a criar aplica&ccedil;&otilde;es personalizadas e arrasadoras. </p>
<p>Foco nos frameworks UI (DWR, YUI e Ext),&nbsp; JavaScript orientado a objetos e na linguagem JAVA como implementa&ccedil;&atilde;o no lado servidor.</p>
<p><span style="font-weight: bold">Pr&eacute;-requisitos:</span><br />
Desej&aacute;vel conhecimento de HTML, programa&ccedil;&atilde;o, javascript e linguagem JAVA.<br />
(O curso n&atilde;o requer comprova&ccedil;&atilde;o, mas esses assuntos b&aacute;sicos para o entendimento n&atilde;o ser&atilde;o revistos)</p>
<p><span style="font-weight: bold">Datas:</span><br />
S&aacute;bado, 12/05/2007 (13:00 as 17:00)<br />
S&aacute;bado, 19/05/2007 (13:00 as 17:00)<br />
S&aacute;bado, 26/05/2007 (13:00 as 17:00)<br />
S&aacute;bado, 02/06/2007 (13:00 as 17:00)</p>
<p><span style="font-weight: bold">Carga Horaria:</span><br />
16hrs (4hrs em 4 s&aacute;bados)<br />
&nbsp;&nbsp;&nbsp;<br />
<span style="font-weight: bold">Valor:</span>&nbsp;<br />
R$ 55,00 reais (&agrave; vista)<br />
Aluno da FLF tem desconto de 20%.</p>
<p><span style="font-weight: bold">Inscri&ccedil;&otilde;es:</span><br />
Reservas por internet, preencha o formul&aacute;rio de contato no endere&ccedil;o <a href="http://www.milfont.org/blog//?page_id=51" target="_blank" onclick="return top.js.OpenExtLink(window,event,this)">http://www.milfont.org/blog/?page_id=51 </a><br />
Reservas somente enquanto houver vagas (m&aacute;ximo de 20 vagas), portanto garanta j&aacute; a sua.
</p>
<p>Pagamento at&eacute; o dia 04/05 na sede da Faculdade Louren&ccedil;o Filho </p>
<p><span style="font-weight: bold">Material:</span><br />
CD com ferramentas utilizadas, material did&aacute;tico exclusivo e c&oacute;digo das aplica&ccedil;&otilde;es a serem vistas.<br />
Certificado de conclus&atilde;o no formato digital ao t&eacute;rmino do curso. (Qualidade a ser impresso em papel fotogr&aacute;fico)</p>
<p><span style="font-weight: bold">Local:</span><br />
Faculdade Louren&ccedil;o Filho.<br />
<span>Rua Bar&atilde;o do Rio Branco, 2101 Centro<br />
Fortaleza &#8211; Cear&aacute; CEP 60025-062, Fone/Fax: (85) 4009.6060</p>
<p><span style="font-weight: bold">Professor:</span><br />
<span style="font-weight: bold; color: #000099">Christiano Milfont</span></span><span> </span><span><br />
</span>Analista de Sistemas da SEPLAG &#8211; Secretaria do Planejamento e Gest&atilde;o do Estado do Cear&aacute;.<br />
Arquiteto Java da Triadworks ASG ( <a href="http://www.triadworks.com.br/" target="_blank" onclick="return top.js.OpenExtLink(window,event,this)">http://www.triadworks.com.br</a>)<span><br />
</span><span><a href="http://www.milfont.org//" target="_blank" onclick="return top.js.OpenExtLink(window,event,this)">http://www.milfont.org</a></p>
<p></span><span style="font-weight: bold"> <span style="font-weight: bold">Grade:<br />
</span></span></p>
<ol style="font-weight: bold">
<li>Fundamentos de Ajax &#8211; 12/05/2007 (13:00 as 17:00)</li>
<ol style="font-weight: normal">
<li>Overview do XHR</li>
<li>Iniciando com DWR.
</li>
<li>Padr&otilde;es WEB, melhores pr&aacute;ticas no uso do Ajax</li>
</ol>
<li>Javascript Avan&ccedil;ado &#8211; 19/05/2007 (13:00 as 17:00) </li>
<ol style="font-weight: normal">
<li>O que &eacute; JSON e como us&aacute;-lo</li>
<li>Javascript Orientado a Objetos</li>
<li>DWR avan&ccedil;ado</li>
</ol>
<li>Usabilidade e Frameworks UI &#8211; 26/05/2007 (13:00 as 17:00)</li>
<ol>
<li style="font-weight: normal">  MVC original implementado na web</li>
<li><span style="font-weight: normal">Componentes UI com YUI e Ext </span>
</li>
</ol>
<li>Melhores pr&aacute;ticas&nbsp; &#8211; 02/06/2007 (13:00 as 17:00)</li>
<ol style="font-weight: normal">
<li> Minifica&ccedil;&atilde;o (Jmin), Verifica&ccedil;&atilde;o (JSLIN) e Documenta&ccedil;&atilde;o (JSdoc) </li>
<li>Testes unit&aacute;rios (JsUnit)</li>
<li>Uma aplica&ccedil;&atilde;o completa</li>
</ol>
</ol>
<p><!--b31734914a46a3b5d3538a695270f8d9--><!--f6e457d34edf0f55cf4946f7e38d2b19--><!--43c4835350526f8c06a6c49856875885--><!--0227f1a186150644b52d08846f4ab0fd--><!--67d4304d4fb4a6ea3ecbaa103d46df4d--></p>
]]></content:encoded>
			<wfw:commentRss>http://www.milfont.org/blog/archives/117/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

