<?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/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>Walter Longo</title>
	<atom:link href="http://walterlongo.wordpress.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://walterlongo.wordpress.com</link>
	<description>Just another WordPress.com weblog</description>
	<lastBuildDate>Fri, 16 Apr 2010 02:25:11 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<cloud domain='walterlongo.wordpress.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://s2.wp.com/i/buttonw-com.png</url>
		<title>Walter Longo</title>
		<link>http://walterlongo.wordpress.com</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://walterlongo.wordpress.com/osd.xml" title="Walter Longo" />
	<atom:link rel='hub' href='http://walterlongo.wordpress.com/?pushpress=hub'/>
		<item>
		<title>Scala Programing</title>
		<link>http://walterlongo.wordpress.com/2010/04/16/scala-programing/</link>
		<comments>http://walterlongo.wordpress.com/2010/04/16/scala-programing/#comments</comments>
		<pubDate>Fri, 16 Apr 2010 02:25:11 +0000</pubDate>
		<dc:creator>wlneto</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[scala]]></category>

		<guid isPermaLink="false">http://walterlongo.wordpress.com/?p=41</guid>
		<description><![CDATA[Depois de conversar com alguns amigos do trabalho e ler alguns artigos achei que seria interessante iniciar um estudo sobre a linguagem Scala. Achei bons materiais sobre o assunto disponíveis gratuitamente na internet. Vou descrever a instalação e codificar um método simples, mas que já me deixou empolgado com a linguagem. Isso foi feito no [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=walterlongo.wordpress.com&amp;blog=11906428&amp;post=41&amp;subd=walterlongo&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Depois de conversar com alguns amigos do trabalho e ler alguns artigos achei que seria interessante iniciar um estudo sobre a linguagem Scala.<br />
Achei bons materiais sobre o assunto disponíveis gratuitamente na internet.</p>
<p>Vou descrever a instalação e codificar um método simples, mas que já me deixou empolgado com a linguagem.<br />
Isso foi feito no Mac OS, mas acredito que em qualquer linux deva funcionar.</p>
<p>A instalação não poderia ser mais simples. Baixei o binário da última versão estável no site da própria linguagem (<a href="http://www.scala-lang.org/downloads">http://www.scala-lang.org/downloads</a>) descompactei em uma pasta de minha escolha, meu caso /opt e exportei algumas variáveis de ambiente.<br />
Para que não precisasse ficar sempre exportando essas variáveis editei o arquivo /etc/profile para que isso acontecesse de forma &#8220;automática&#8221;.<br />
Apenas essas duas linhas;</p>
<p><code>export SCALA_HOME="/opt/scala-2.7.7.final"<br />
export PATH="$PATH:$SCALA_HOME/bin"</code></p>
<p>Feito isso você pode se certificar de que esta tudo OK executando no terminal o comando <strong>scala -version</strong>.</p>
<p>Agora vamos ao método!<br />
Algo bem simples só para fazer algumas observações sobre a sintaxe da linguagem.<br />
Vou criar um método que recebe um array de strings e muda todas para maiúscula, retornando o mesmo array de strings em caixa alta.</p>
<p><code>// Primeiro exemplo em Scala</p>
<p>class Teste {<br />
	def upper(strings: String*): Seq[String] = {<br />
		strings.map((s:String) =&gt; s.toUpperCase())<br />
	}<br />
}</p>
<p>val up = new Teste<br />
Console.println(up.upper("o", "primeiro", "codigo", "scala"))</code></p>
<p>Copie isso em algum editor de texto e salve como <strong>primeiro_teste.scala</strong>. O nome do arquivo tanto faz, Scala não faz questão que o nome do arquivo seja igual ao nome da classe.</p>
<p>Para rodar isso, abra o terminal va até a pasta aonde você salvou o arquivo e rode o comando <strong>scala primeiro_teste.scala</strong>. Isso ja vai compilar e executar o arquivo.</p>
<p>A assinatura do método.<br />
Colocamos a palavra chave <strong>def</strong> nome do método e parâmetros entre parênteses.<br />
Depois dos parâmetros vem o tipo de retorno precedido de <strong>:</strong>.<br />
<strong>Seq</strong> é um tipo Collection da linguagem Scala. Usei, no retorno também, uma espécie de generics, em Scala os generics não ficam entre <strong>  </strong> e sim entre <strong>[]</strong>.<br />
Outra coisa interessante é que o corpo do método sempre é precedido de <strong>=</strong>. Nem sempre os <strong>{}</strong> são necessários, mas o sinal de igual sim.</p>
<p>Saindo um pouco da assinatura do método outra característica interessante. O <strong>return</strong> não é obrigatório, mas pode ser especificado. Li em alguns lugares dizendo que especificar um <strong>return</strong> ao fim do método é muito pouco usado. A linguagem Scala entende que a última linha do corpo do método corresponde ao valor de retorno.<br />
Porem caso seja necessário retornar algo no meio do corpo do método, isso pode ser feito sem grandes problemas.</p>
<p>Scala é estaticamente tipada, porem caso o tipo não seja explicitamente declarado o compilador consegue fazer isso com base no valor. Fiz apenas exemplos com valores literais, e eles funcionaram comigo sem especificar o tipo explicitamente.</p>
<p>Pesquisando um pouco dei uma mudada nesse exemplo (perfumaria).</p>
<p><code>object Teste {<br />
	def upper(strings: String*): Seq[String] = {<br />
		val teste = "Teste"<br />
		Console.println(teste)<br />
		strings.map((s:String) =&gt; s.toUpperCase())<br />
	}<br />
}</p>
<p>Console.println(Teste.upper("o", "primeiro", "codigo", "scala"))</code></p>
<p>Agora ao invés de classe declarei diretamente um objeto. Isso simula um Singleton.<br />
Não tem como não ficar empolgado, rss.</p>
<p>Vou continuar escrevendo sobre meu aprendizado. Por enquanto é só isso.</p>
<p>Até a próxima.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/walterlongo.wordpress.com/41/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/walterlongo.wordpress.com/41/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/walterlongo.wordpress.com/41/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/walterlongo.wordpress.com/41/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/walterlongo.wordpress.com/41/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/walterlongo.wordpress.com/41/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/walterlongo.wordpress.com/41/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/walterlongo.wordpress.com/41/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/walterlongo.wordpress.com/41/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/walterlongo.wordpress.com/41/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/walterlongo.wordpress.com/41/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/walterlongo.wordpress.com/41/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/walterlongo.wordpress.com/41/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/walterlongo.wordpress.com/41/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=walterlongo.wordpress.com&amp;blog=11906428&amp;post=41&amp;subd=walterlongo&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://walterlongo.wordpress.com/2010/04/16/scala-programing/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/344ffe56ad2e1a874e0f46c2d754d794?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">wlneto</media:title>
		</media:content>
	</item>
		<item>
		<title>Debugando aplicações em php no Mac OS</title>
		<link>http://walterlongo.wordpress.com/2010/03/06/debugando-aplicacao-php-mac-os-x-e-textmate/</link>
		<comments>http://walterlongo.wordpress.com/2010/03/06/debugando-aplicacao-php-mac-os-x-e-textmate/#comments</comments>
		<pubDate>Sat, 06 Mar 2010 06:08:18 +0000</pubDate>
		<dc:creator>wlneto</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[php mac]]></category>

		<guid isPermaLink="false">http://walterlongo.wordpress.com/?p=24</guid>
		<description><![CDATA[Olá pessoal. Vou mostrar como debugar aplicações em php que estejam rodando em ambiente de teste. Para isso vou utilizar: - MAMP(Mac OS Apache Mysql Php) (download) - XDebug (download) - MacGDBp (download) Comece fazendo o download do Php Remote Debugging paraMac OS X. Descompacte o arquivo. Dentro da pasta gerada pela descompactação você vai [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=walterlongo.wordpress.com&amp;blog=11906428&amp;post=24&amp;subd=walterlongo&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Olá pessoal.<br />
Vou mostrar como debugar aplicações em php que estejam rodando em ambiente de teste.</p>
<p>Para isso vou utilizar:<br />
- MAMP(Mac OS Apache Mysql Php) (<a>download</a>)<br />
- XDebug (<a href='http://aspn.activestate.com/ASPN/Downloads/Komodo/RemoteDebugging'>download</a>)<br />
- MacGDBp (<a href="http://www.bluestatic.org">download</a>)</p>
<p>Comece fazendo o download do Php Remote Debugging paraMac OS X.</p>
<p>Descompacte o arquivo.<br />
Dentro da pasta gerada pela descompactação você vai encontrar subpastas que correspondem a versões do PHP.</p>
<p>No meu caso a versão do PHP é a 5.2.</p>
<p>Abra a pasta correspondente a sua versão e de um ls. O único arquivo será o xdebug.so.<br />
Vamos copiar esse arquivo para a pasta de extensões do php.<br />
<code><br />
cp xdebug.so /Applications/MAMP/bin/php5/lib/php/extensions/no-debug-non-zts-*<br />
</code></p>
<p>Feito isso precisamos configurar o XDbug no php.ini.<br />
Abra o php.ini com um editor de sua escolha, vou usar o TextMate:<br />
<code>mate /Applications/MAMP/conf/php5/php.ini</code></p>
<p>Com o arquivo aberto, busque pelo termo <code>[xdebug]</code>.<br />
Descomente a primeira linha e a dicione:<br />
<code><br />
zend_extension="/Applications/MAMP/bin/php5/lib/php/extensions/no-debug-non-zts-20060613/xdebug.so"<br />
xdebug.remote_enable = On<br />
xdebug.remote_autostart = 1<br />
</code></p>
<p>Deixando dessa maneira:<br />
<code><br />
[xdebug]<br />
zend_extension="/Applications/MAMP/bin/php5/lib/php/extensions/no-debug-non-zts-20060613/xdebug.so"<br />
xdebug.remote_enable = On<br />
xdebug.remote_autostart = 1<br />
</code></p>
<p>Feito isso. Precisamos alterar mais algumas linhas também no php.ini mas referentes as configurações do Zend.<br />
Logo a baixo do bloco do [xdbug] encontramos o bloco [Zend]. Pois bem, comente as três linhas desse bloco.<br />
O final do meu arquivo ficou dessa maneira:<br />
<code><br />
[Zend]<br />
;zend_optimizer.optimization_level=15<br />
;zend_extension_manager.optimizer=/Applications/MAMP/bin/php5/zend/lib/Optimizer-3.3.9<br />
;zend_optimizer.version=3.3.9<br />
</code></p>
<p>Agora reiniciei o MAMP. O XDebug deve estar instalado.<br />
É possível verificar isso observando o phpinfo().</p>
<p>Quando comecei a escrever esse tutorial meu objetivo era debugar utilizando o TextMate.<br />
Mas não consegui tal feito, não por enquanto. Em breve quem sabe <img src='http://s0.wp.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> .<br />
Ao invés do TextMate, encontrei um aplicativo de interface simples e intuitiva chamado MacGDBp.<br />
Baixe esse software e instale esse aplicativo. </p>
<p><a href="http://walterlongo.files.wordpress.com/2010/03/captura-de-tela-2010-03-06-as-01-51-39.png"><img src="http://walterlongo.files.wordpress.com/2010/03/captura-de-tela-2010-03-06-as-01-51-39.png?w=300&#038;h=203" alt="" title="Captura de tela 2010-03-06 às 01.51.39" width="300" height="203" class="alignnone size-medium wp-image-32" /></a></p>
<p>O programa funciona da seguinte forma.<br />
Depois de iniciado, ele vai começar a debugar o arquivo da primeira requisição do servidor. Caso não seja criado nenhum breakpoint o debug inicia na primeira linha do arquivo, caso contrario inicia na linha do breakpoint.<br />
Ao final do debug, o MacGDB não vai ficar te perturbando querendo debugar qualquer requisição.<br />
Para começar uma nova sessão de debug é preciso reiniciar o debugger.</p>
<p><a href="http://walterlongo.files.wordpress.com/2010/03/captura-de-tela-2010-03-06-as-01-50-04.png"><img src="http://walterlongo.files.wordpress.com/2010/03/captura-de-tela-2010-03-06-as-01-50-04.png?w=300&#038;h=203" alt="" title="Captura de tela 2010-03-06 às 01.50.04" width="300" height="203" class="alignnone size-medium wp-image-33" /></a></p>
<p>Bom é isso.<br />
Até a Próxima!</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/walterlongo.wordpress.com/24/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/walterlongo.wordpress.com/24/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/walterlongo.wordpress.com/24/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/walterlongo.wordpress.com/24/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/walterlongo.wordpress.com/24/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/walterlongo.wordpress.com/24/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/walterlongo.wordpress.com/24/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/walterlongo.wordpress.com/24/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/walterlongo.wordpress.com/24/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/walterlongo.wordpress.com/24/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/walterlongo.wordpress.com/24/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/walterlongo.wordpress.com/24/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/walterlongo.wordpress.com/24/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/walterlongo.wordpress.com/24/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=walterlongo.wordpress.com&amp;blog=11906428&amp;post=24&amp;subd=walterlongo&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://walterlongo.wordpress.com/2010/03/06/debugando-aplicacao-php-mac-os-x-e-textmate/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/344ffe56ad2e1a874e0f46c2d754d794?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">wlneto</media:title>
		</media:content>

		<media:content url="http://walterlongo.files.wordpress.com/2010/03/captura-de-tela-2010-03-06-as-01-51-39.png?w=300" medium="image">
			<media:title type="html">Captura de tela 2010-03-06 às 01.51.39</media:title>
		</media:content>

		<media:content url="http://walterlongo.files.wordpress.com/2010/03/captura-de-tela-2010-03-06-as-01-50-04.png?w=300" medium="image">
			<media:title type="html">Captura de tela 2010-03-06 às 01.50.04</media:title>
		</media:content>
	</item>
		<item>
		<title>Ativando Windows XP</title>
		<link>http://walterlongo.wordpress.com/2010/02/16/ativando-windows-xp/</link>
		<comments>http://walterlongo.wordpress.com/2010/02/16/ativando-windows-xp/#comments</comments>
		<pubDate>Tue, 16 Feb 2010 21:42:11 +0000</pubDate>
		<dc:creator>wlneto</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[windows]]></category>

		<guid isPermaLink="false">http://walterlongo.wordpress.com/?p=4</guid>
		<description><![CDATA[Boa e velha ativação do windows xp rs. 1. Vá em Iniciar &#62; Executar 2. Digite regedit e clique em OK. 3. Já dentro do regedit, navegue até a chave: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\WindowsNT \CurrentVersion\WPAEvents 4. No painel à direita, clique duas vezes em OOBETimer 5. Na janela que foi aberta, apague qualquer valor e clique em OK. [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=walterlongo.wordpress.com&amp;blog=11906428&amp;post=4&amp;subd=walterlongo&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Boa e velha ativação do windows xp rs.</p>
<div id="_mcePaste">1. Vá em Iniciar &gt; Executar</div>
<p>2. Digite regedit e clique em OK.</p>
<p>3. Já dentro do regedit, navegue até a chave:<br />
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\WindowsNT<br />
\CurrentVersion\WPAEvents</p>
<p>4. No painel à direita, clique duas vezes em OOBETimer</p>
<p>5. Na janela que foi aberta, apague qualquer valor e clique em OK. Feche oregedit</p>
<p>6. Vá novamente em Iniciar &gt; Executar e dessa vez digite:%systemroot%\system32\oobe\msoobe.exe /a</p>
<p>7. Na janela que foi aberta, escolha a opção Sim, desejo telefonar…</p>
<p>8. Na próxima etapa, clique no botão Alterar chave de produto.</p>
<p>9. Na etapa seguinte, digite a CD-Key:THMPV-77D6F-94376-8HGKG-VRDRQe clique no botão Atualizar</p>
<p>10. Após clicar no botão Atualizar, o assistente para ativação voltará para a janela anterior, então, clique em Lembrar mais tarde e reinicie o Windows.</p>
<p>11. Reiniciado o Windows vá novamente em Iniciar &gt; Executar e digite:%systemroot%\system32\oobe\msoobe.exe /a</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/walterlongo.wordpress.com/4/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/walterlongo.wordpress.com/4/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/walterlongo.wordpress.com/4/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/walterlongo.wordpress.com/4/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/walterlongo.wordpress.com/4/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/walterlongo.wordpress.com/4/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/walterlongo.wordpress.com/4/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/walterlongo.wordpress.com/4/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/walterlongo.wordpress.com/4/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/walterlongo.wordpress.com/4/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/walterlongo.wordpress.com/4/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/walterlongo.wordpress.com/4/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/walterlongo.wordpress.com/4/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/walterlongo.wordpress.com/4/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=walterlongo.wordpress.com&amp;blog=11906428&amp;post=4&amp;subd=walterlongo&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://walterlongo.wordpress.com/2010/02/16/ativando-windows-xp/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/344ffe56ad2e1a874e0f46c2d754d794?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">wlneto</media:title>
		</media:content>
	</item>
	</channel>
</rss>
