<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Blog do Robson Dantas &#187; Desenvolvimento de software</title>
	<atom:link href="http://blogdodantas.dxs.com.br/category/tecnologia_informatica/desenvolvimento-de-software/feed/" rel="self" type="application/rss+xml" />
	<link>http://blogdodantas.dxs.com.br</link>
	<description>Tecnologia, segurança, cotidiano, pesca esportiva e inutilidades</description>
	<lastBuildDate>Tue, 31 Jan 2012 02:31:46 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.3</generator>
		<item>
		<title>Javascript tutorial: o que são closures ?</title>
		<link>http://blogdodantas.dxs.com.br/2011/09/07/javascript-tutorial-o-que-sao-closures/</link>
		<comments>http://blogdodantas.dxs.com.br/2011/09/07/javascript-tutorial-o-que-sao-closures/#comments</comments>
		<pubDate>Thu, 08 Sep 2011 01:54:50 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Desenvolvimento de software]]></category>
		<category><![CDATA[Javascript]]></category>
		<category><![CDATA[closure]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[tutorial javascript]]></category>

		<guid isPermaLink="false">http://blogdodantas.dxs.com.br/?p=582</guid>
		<description><![CDATA[Post de hoje é rápido e apenas para compartilhar um excelente guia/tutorial de javascript que recebi na lista de html5. Achei fantástico pela didática aplicada, incluindo um faça você mesmo, integrado ao jslint. Se você tem dificuldades com closures, callbacks, funções como argumentos, deve dar uma passadinha por lá. http://nathansjslessons.appspot.com/ Espero que gostem. Robson Bookmarks]]></description>
			<content:encoded><![CDATA[<p>Post de hoje é rápido e apenas para compartilhar um excelente guia/tutorial de javascript que recebi na lista de html5. Achei fantástico pela didática aplicada, incluindo um faça você mesmo, integrado ao jslint.</p>
<p>Se você tem dificuldades com closures, callbacks, funções como argumentos, deve dar uma passadinha por lá.</p>
<p><a href="http://nathansjslessons.appspot.com/" onclick="javascript:pageTracker._trackPageview('out/nathansjslessons.appspot.com');">http://nathansjslessons.appspot.com/</a></p>
<p>Espero que gostem.</p>
<p>Robson</p>
<p class="bookmark-me">Bookmarks<a title="technorati.com" href="http://www.technorati.com/faves?add=http%3A%2F%2Fblogdodantas.dxs.com.br%2F2011%2F09%2F07%2Fjavascript-tutorial-o-que-sao-closures%2F" onclick="javascript:pageTracker._trackPageview('out/www.technorati.com');" target="_blank" rel="nofollow"><img src="http://www.dxs.com.br/wordpress/wp-content/plugins/bookmark-me/images/technorati.png" style="margin:0;border:0;padding:0" alt="bookmark"/></a> <a title="del.icio.us" href="http://del.icio.us/post?url=http%3A%2F%2Fblogdodantas.dxs.com.br%2F2011%2F09%2F07%2Fjavascript-tutorial-o-que-sao-closures%2F&amp;title=Javascript+tutorial%3A+o+que+s%C3%A3o+closures+%3F" onclick="javascript:pageTracker._trackPageview('out/del.icio.us');" target="_blank" rel="nofollow"><img src="http://www.dxs.com.br/wordpress/wp-content/plugins/bookmark-me/images/delicious.png" style="margin:0;border:0;padding:0" alt="bookmark"/></a> <a title="digg.com" href="http://digg.com/submit?url=http%3A%2F%2Fblogdodantas.dxs.com.br%2F2011%2F09%2F07%2Fjavascript-tutorial-o-que-sao-closures%2F&amp;title=Javascript+tutorial%3A+o+que+s%C3%A3o+closures+%3F" onclick="javascript:pageTracker._trackPageview('out/digg.com');" target="_blank" rel="nofollow"><img src="http://www.dxs.com.br/wordpress/wp-content/plugins/bookmark-me/images/digg.png" style="margin:0;border:0;padding:0" alt="bookmark"/></a> <a title="www.facebook.com" href="http://www.facebook.com/share.php?u=http%3A%2F%2Fblogdodantas.dxs.com.br%2F2011%2F09%2F07%2Fjavascript-tutorial-o-que-sao-closures%2F&amp;t=Javascript+tutorial%3A+o+que+s%C3%A3o+closures+%3F" onclick="javascript:pageTracker._trackPageview('out/www.facebook.com');" target="_blank" rel="nofollow"><img src="http://www.dxs.com.br/wordpress/wp-content/plugins/bookmark-me/images/facebook.png" style="margin:0;border:0;padding:0" alt="bookmark"/></a> <a title="bookmarks.yahoo.com" href="http://bookmarks.yahoo.com/toolbar/savebm?opener=tb&amp;u=http%3A%2F%2Fblogdodantas.dxs.com.br%2F2011%2F09%2F07%2Fjavascript-tutorial-o-que-sao-closures%2F" onclick="javascript:pageTracker._trackPageview('out/bookmarks.yahoo.com');" target="_blank" rel="nofollow"><img src="http://www.dxs.com.br/wordpress/wp-content/plugins/bookmark-me/images/yahoo.png" style="margin:0;border:0;padding:0" alt="bookmark"/></a> <a title="www.google.com" href="http://www.google.com/bookmarks/mark?op=edit&amp;output=popup&amp;bkmk=http%3A%2F%2Fblogdodantas.dxs.com.br%2F2011%2F09%2F07%2Fjavascript-tutorial-o-que-sao-closures%2F&amp;title=Javascript+tutorial%3A+o+que+s%C3%A3o+closures+%3F" onclick="javascript:pageTracker._trackPageview('out/www.google.com');" target="_blank" rel="nofollow"><img src="http://www.dxs.com.br/wordpress/wp-content/plugins/bookmark-me/images/google.png" style="margin:0;border:0;padding:0" alt="bookmark"/></a> </p><p><script type="text/javascript"><!--
google_ad_client = "pub-3400408440819022";
/* 468x60, criado 02/11/10 */
google_ad_slot = "1718761682";
google_ad_width = 468;
google_ad_height = 60;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script></p>]]></content:encoded>
			<wfw:commentRss>http://blogdodantas.dxs.com.br/2011/09/07/javascript-tutorial-o-que-sao-closures/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>AppEngine Python &#8211; Webservices através de ProtoRPC</title>
		<link>http://blogdodantas.dxs.com.br/2011/04/20/appengine-python-webservices-atraves-de-protorpc/</link>
		<comments>http://blogdodantas.dxs.com.br/2011/04/20/appengine-python-webservices-atraves-de-protorpc/#comments</comments>
		<pubDate>Wed, 20 Apr 2011 19:56:41 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Desenvolvimento de software]]></category>
		<category><![CDATA[Google AppEngine]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[ajax]]></category>
		<category><![CDATA[appengine]]></category>
		<category><![CDATA[webservices]]></category>

		<guid isPermaLink="false">http://blogdodantas.dxs.com.br/?p=530</guid>
		<description><![CDATA[Consegui dar uma parada para dar uma lida nos feeds e algo interessante chamou a atenção no blog do Google AppEngine: lançamento de uma api para webservices, chamada ProtoRPC . Havia dado alguns passos usando o django-nonrel e um projeto para expor funcionalidades via REST, porém, esse esquema facilita e muito as coisas, principalmente ao [...]]]></description>
			<content:encoded><![CDATA[<p>Consegui dar uma parada para dar uma lida nos feeds e algo interessante chamou a atenção no blog do<a href="http://googleappengine.blogspot.com/" onclick="javascript:pageTracker._trackPageview('out/googleappengine.blogspot.com');" target="_blank"> Google AppEngine</a>: lançamento de uma api para webservices, chamada <a href="http://googleappengine.blogspot.com/2011/04/introducing-protorpc-for-writing-app.html" onclick="javascript:pageTracker._trackPageview('out/googleappengine.blogspot.com');" target="_blank">ProtoRPC</a> .</p>
<p>Havia dado alguns passos usando o<a href="http://www.allbuttonspressed.com/projects/django-nonrel" onclick="javascript:pageTracker._trackPageview('out/www.allbuttonspressed.com');" target="_blank"> django-nonrel</a> e um projeto para expor funcionalidades via <a href="http://pt.wikipedia.org/wiki/REST" onclick="javascript:pageTracker._trackPageview('out/pt.wikipedia.org');" target="_blank">REST</a>, porém, esse esquema facilita e muito as coisas, principalmente ao expor simples serviços, como chamadas ajax, por exemplo.</p>
<p>Basicamente, você tem 3 passos:</p>
<ul>
<li>Uma classe de request, que deriva de messages.Message;</li>
<li>Uma classe de respose, que também deriva de messages.Message;</li>
<li>Uma classe de serviço, que deriva de remote.Service, e que expõe os métodos;</li>
</ul>
<p>Feito isso, só mapear sua aplicação para uma URL apontando a classe de serviço, e chamar o método. O <a href="https://docs.google.com/document/d/1QJBVWnbtYoiTFHIyqcBdnv5u4C1zYvDzFFGBIun35Ro/edit?hl=pt_BR&amp;ndplr=1#" onclick="javascript:pageTracker._trackPageview('out/docs.google.com');" target="_blank">exemplo completo pode ser visto aqui</a>.</p>
<p>Nota: Por enquanto disponível somente para Python, mas em breve a versão Java será liberada.</p>
<p>Boa, Google!</p>
<p class="bookmark-me">Bookmarks<a title="technorati.com" href="http://www.technorati.com/faves?add=http%3A%2F%2Fblogdodantas.dxs.com.br%2F2011%2F04%2F20%2Fappengine-python-webservices-atraves-de-protorpc%2F" onclick="javascript:pageTracker._trackPageview('out/www.technorati.com');" target="_blank" rel="nofollow"><img src="http://www.dxs.com.br/wordpress/wp-content/plugins/bookmark-me/images/technorati.png" style="margin:0;border:0;padding:0" alt="bookmark"/></a> <a title="del.icio.us" href="http://del.icio.us/post?url=http%3A%2F%2Fblogdodantas.dxs.com.br%2F2011%2F04%2F20%2Fappengine-python-webservices-atraves-de-protorpc%2F&amp;title=AppEngine+Python+%26%238211%3B+Webservices+atrav%C3%A9s+de+ProtoRPC" onclick="javascript:pageTracker._trackPageview('out/del.icio.us');" target="_blank" rel="nofollow"><img src="http://www.dxs.com.br/wordpress/wp-content/plugins/bookmark-me/images/delicious.png" style="margin:0;border:0;padding:0" alt="bookmark"/></a> <a title="digg.com" href="http://digg.com/submit?url=http%3A%2F%2Fblogdodantas.dxs.com.br%2F2011%2F04%2F20%2Fappengine-python-webservices-atraves-de-protorpc%2F&amp;title=AppEngine+Python+%26%238211%3B+Webservices+atrav%C3%A9s+de+ProtoRPC" onclick="javascript:pageTracker._trackPageview('out/digg.com');" target="_blank" rel="nofollow"><img src="http://www.dxs.com.br/wordpress/wp-content/plugins/bookmark-me/images/digg.png" style="margin:0;border:0;padding:0" alt="bookmark"/></a> <a title="www.facebook.com" href="http://www.facebook.com/share.php?u=http%3A%2F%2Fblogdodantas.dxs.com.br%2F2011%2F04%2F20%2Fappengine-python-webservices-atraves-de-protorpc%2F&amp;t=AppEngine+Python+%26%238211%3B+Webservices+atrav%C3%A9s+de+ProtoRPC" onclick="javascript:pageTracker._trackPageview('out/www.facebook.com');" target="_blank" rel="nofollow"><img src="http://www.dxs.com.br/wordpress/wp-content/plugins/bookmark-me/images/facebook.png" style="margin:0;border:0;padding:0" alt="bookmark"/></a> <a title="bookmarks.yahoo.com" href="http://bookmarks.yahoo.com/toolbar/savebm?opener=tb&amp;u=http%3A%2F%2Fblogdodantas.dxs.com.br%2F2011%2F04%2F20%2Fappengine-python-webservices-atraves-de-protorpc%2F" onclick="javascript:pageTracker._trackPageview('out/bookmarks.yahoo.com');" target="_blank" rel="nofollow"><img src="http://www.dxs.com.br/wordpress/wp-content/plugins/bookmark-me/images/yahoo.png" style="margin:0;border:0;padding:0" alt="bookmark"/></a> <a title="www.google.com" href="http://www.google.com/bookmarks/mark?op=edit&amp;output=popup&amp;bkmk=http%3A%2F%2Fblogdodantas.dxs.com.br%2F2011%2F04%2F20%2Fappengine-python-webservices-atraves-de-protorpc%2F&amp;title=AppEngine+Python+%26%238211%3B+Webservices+atrav%C3%A9s+de+ProtoRPC" onclick="javascript:pageTracker._trackPageview('out/www.google.com');" target="_blank" rel="nofollow"><img src="http://www.dxs.com.br/wordpress/wp-content/plugins/bookmark-me/images/google.png" style="margin:0;border:0;padding:0" alt="bookmark"/></a> </p>]]></content:encoded>
			<wfw:commentRss>http://blogdodantas.dxs.com.br/2011/04/20/appengine-python-webservices-atraves-de-protorpc/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Como modificar a data da criação de uma foto usando a data que a fotografia foi tirada</title>
		<link>http://blogdodantas.dxs.com.br/2011/04/04/como-modificar-a-data-da-criacao-de-uma-foto-usando-a-data-que-a-fotografia-foi-tirada/</link>
		<comments>http://blogdodantas.dxs.com.br/2011/04/04/como-modificar-a-data-da-criacao-de-uma-foto-usando-a-data-que-a-fotografia-foi-tirada/#comments</comments>
		<pubDate>Mon, 04 Apr 2011 19:21:39 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[.NET]]></category>
		<category><![CDATA[Desenvolvimento de software]]></category>
		<category><![CDATA[Gambiarras]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[alterar data de foto]]></category>
		<category><![CDATA[exif]]></category>
		<category><![CDATA[exif .net]]></category>
		<category><![CDATA[exif python]]></category>

		<guid isPermaLink="false">http://blogdodantas.dxs.com.br/?p=516</guid>
		<description><![CDATA[O título parece meio confuso, mas vou tentar explicar uma situação: Imagine que você tirou várias fotos, e que as mesmas estavam na sua máquina fotográfica. Você decide, então, mover para um computador e mais para frente, fazer uma simples montagem em um programa estilo Sony Vegas, Adobe Premiere, etc. Ao jogar as suas fotos [...]]]></description>
			<content:encoded><![CDATA[<p>O título parece meio confuso, mas vou tentar explicar uma situação: Imagine que você tirou várias fotos, e que as mesmas estavam na sua máquina fotográfica. Você decide, então, mover para um computador e mais para frente, fazer uma simples montagem em um programa estilo <a href="http://www.sonycreativesoftware.com/vegassoftware" onclick="javascript:pageTracker._trackPageview('out/www.sonycreativesoftware.com');" target="_blank">Sony Vegas</a>, <a href="http://www.adobe.com/br/products/premiere/" onclick="javascript:pageTracker._trackPageview('out/www.adobe.com');" target="_blank">Adobe Premiere</a>, etc.</p>
<p>Ao jogar as suas fotos na timeline, pode ser que a ordem em que as mesmas foram tiradas (e que você gostaria de manter), estejam lá. Mas pode ser, que por algum motivo você andou movendo suas fotos para um backup externo, depois movendo para o PC de volta e assim por diante. O que vai acontecer nesse caso ? Sim, a data da criação do arquivo não irá refletir a data em que necessariamente foi tirada, e você pode perder a ordem das mesmas. Além disso, você pode misturar fotos de diversos diretórios e aí a bagunça fica sem tamanho.</p>
<p>Há alguns softwares no mercado que tomam conta de todo seu acervo digital, porém, decidi pensar em uma forma de acertar as datas de criação das fotos de forma automática, até que modifiquei um simples código python, que implementa o seguinte fluxo:</p>
<ul>
<li>Dado um diretório, listar todos os arquivos .jpg;</li>
<li>Para cada arquivo .jpg, extrair as informações <a href="http://pt.wikipedia.org/wiki/Exif" onclick="javascript:pageTracker._trackPageview('out/pt.wikipedia.org');" target="_blank">EXIF</a>, e localizar a entrada em que a fotografia foi tirada (DateTimeDigitized);</li>
<li>Alterar a data de criação do arquivo;</li>
<li>Fim do fluxo;</li>
</ul>
<p>Para fazer isso em Python, você precisará da biblioteca <a href="http://www.pythonware.com/products/pil/" onclick="javascript:pageTracker._trackPageview('out/www.pythonware.com');" target="_blank">PIL </a>(Python Imaging Library), e de outras libs nativas, como a &#8216;os&#8217; para modificar a data.</p>
<p>O script final, utilizei com base em <a href="http://www.litster.org/blog/2010/05/30/python-and-exif-metadata-theres-more-than-one-way-to-do-it/" onclick="javascript:pageTracker._trackPageview('out/www.litster.org');" target="_blank">outro que estava na internet</a>, bugado, o qual corrigi e estou publicando aqui para download. Também encaminhei o patch ao autor.</p>
<p><a href="http://www.dxs.com.br/wordpress/wp-content/uploads/2011/04/filedate.zip"  target="_blank">Faça download aqui da versão Python.</a></p>
<p>Também fiz uma versão em .NET usando uma biblioteca chamada <a href="http://www.codeproject.com/KB/graphics/exiftagcol.aspx" onclick="javascript:pageTracker._trackPageview('out/www.codeproject.com');" target="_blank">ExifTagCollection</a>, disponível no CodeProject. Falta finalizar algumas coisas antes de publicar, mas abaixo um pequeno pedaço que código que mostra como alterar a data de um arquivo:</p>
<pre>                        string folder=@"path_to_folder";
                        ExifTagCollection exif = new ExifTagCollection(folder);
			System.Collections.Hashtable h = new System.Collections.Hashtable();

			foreach(ExifTag t in exif)
				h[t.FieldName] = t.Value;

			if( h.ContainsKey("DateTimeDigitized") ) {
				System.IO.FileInfo f =new System.IO.FileInfo(folder);
				f.CreationTime = DateTime.Parse(h["DateTimeDigitized"]);
			}</pre>
<p>Espero que seja útil!</p>
<p>Um abraço</p>
<p>Robson</p>
<p class="bookmark-me">Bookmarks<a title="technorati.com" href="http://www.technorati.com/faves?add=http%3A%2F%2Fblogdodantas.dxs.com.br%2F2011%2F04%2F04%2Fcomo-modificar-a-data-da-criacao-de-uma-foto-usando-a-data-que-a-fotografia-foi-tirada%2F" onclick="javascript:pageTracker._trackPageview('out/www.technorati.com');" target="_blank" rel="nofollow"><img src="http://www.dxs.com.br/wordpress/wp-content/plugins/bookmark-me/images/technorati.png" style="margin:0;border:0;padding:0" alt="bookmark"/></a> <a title="del.icio.us" href="http://del.icio.us/post?url=http%3A%2F%2Fblogdodantas.dxs.com.br%2F2011%2F04%2F04%2Fcomo-modificar-a-data-da-criacao-de-uma-foto-usando-a-data-que-a-fotografia-foi-tirada%2F&amp;title=Como+modificar+a+data+da+cria%C3%A7%C3%A3o+de+uma+foto+usando+a+data+que+a+fotografia+foi+tirada" onclick="javascript:pageTracker._trackPageview('out/del.icio.us');" target="_blank" rel="nofollow"><img src="http://www.dxs.com.br/wordpress/wp-content/plugins/bookmark-me/images/delicious.png" style="margin:0;border:0;padding:0" alt="bookmark"/></a> <a title="digg.com" href="http://digg.com/submit?url=http%3A%2F%2Fblogdodantas.dxs.com.br%2F2011%2F04%2F04%2Fcomo-modificar-a-data-da-criacao-de-uma-foto-usando-a-data-que-a-fotografia-foi-tirada%2F&amp;title=Como+modificar+a+data+da+cria%C3%A7%C3%A3o+de+uma+foto+usando+a+data+que+a+fotografia+foi+tirada" onclick="javascript:pageTracker._trackPageview('out/digg.com');" target="_blank" rel="nofollow"><img src="http://www.dxs.com.br/wordpress/wp-content/plugins/bookmark-me/images/digg.png" style="margin:0;border:0;padding:0" alt="bookmark"/></a> <a title="www.facebook.com" href="http://www.facebook.com/share.php?u=http%3A%2F%2Fblogdodantas.dxs.com.br%2F2011%2F04%2F04%2Fcomo-modificar-a-data-da-criacao-de-uma-foto-usando-a-data-que-a-fotografia-foi-tirada%2F&amp;t=Como+modificar+a+data+da+cria%C3%A7%C3%A3o+de+uma+foto+usando+a+data+que+a+fotografia+foi+tirada" onclick="javascript:pageTracker._trackPageview('out/www.facebook.com');" target="_blank" rel="nofollow"><img src="http://www.dxs.com.br/wordpress/wp-content/plugins/bookmark-me/images/facebook.png" style="margin:0;border:0;padding:0" alt="bookmark"/></a> <a title="bookmarks.yahoo.com" href="http://bookmarks.yahoo.com/toolbar/savebm?opener=tb&amp;u=http%3A%2F%2Fblogdodantas.dxs.com.br%2F2011%2F04%2F04%2Fcomo-modificar-a-data-da-criacao-de-uma-foto-usando-a-data-que-a-fotografia-foi-tirada%2F" onclick="javascript:pageTracker._trackPageview('out/bookmarks.yahoo.com');" target="_blank" rel="nofollow"><img src="http://www.dxs.com.br/wordpress/wp-content/plugins/bookmark-me/images/yahoo.png" style="margin:0;border:0;padding:0" alt="bookmark"/></a> <a title="www.google.com" href="http://www.google.com/bookmarks/mark?op=edit&amp;output=popup&amp;bkmk=http%3A%2F%2Fblogdodantas.dxs.com.br%2F2011%2F04%2F04%2Fcomo-modificar-a-data-da-criacao-de-uma-foto-usando-a-data-que-a-fotografia-foi-tirada%2F&amp;title=Como+modificar+a+data+da+cria%C3%A7%C3%A3o+de+uma+foto+usando+a+data+que+a+fotografia+foi+tirada" onclick="javascript:pageTracker._trackPageview('out/www.google.com');" target="_blank" rel="nofollow"><img src="http://www.dxs.com.br/wordpress/wp-content/plugins/bookmark-me/images/google.png" style="margin:0;border:0;padding:0" alt="bookmark"/></a> </p>]]></content:encoded>
			<wfw:commentRss>http://blogdodantas.dxs.com.br/2011/04/04/como-modificar-a-data-da-criacao-de-uma-foto-usando-a-data-que-a-fotografia-foi-tirada/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Instalando node.js no Windows</title>
		<link>http://blogdodantas.dxs.com.br/2011/01/13/instalando-node-js-no-windows/</link>
		<comments>http://blogdodantas.dxs.com.br/2011/01/13/instalando-node-js-no-windows/#comments</comments>
		<pubDate>Thu, 13 Jan 2011 15:24:28 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Javascript]]></category>
		<category><![CDATA[Tecnologia e informática]]></category>
		<category><![CDATA[cygwin]]></category>
		<category><![CDATA[jquery]]></category>
		<category><![CDATA[node.js]]></category>

		<guid isPermaLink="false">http://blogdodantas.dxs.com.br/?p=494</guid>
		<description><![CDATA[Você conhece o Node.js ? Se a resposta for não, sugiro dar uma olhada. É algo muito poderoso, e muito simples ao mesmo tempo. Usando sintaxe javascript, é possível codificar coisas de forma bem rápida, como por exemplo esse webserver abaixo: var net = require('net'); var dataToSend; var socketServer; net.createServer(function (socket) { socketServer = socket; [...]]]></description>
			<content:encoded><![CDATA[<p>Você conhece o<a href="http://nodejs.org" onclick="javascript:pageTracker._trackPageview('out/nodejs.org');" target="_blank"> Node.js</a> ? Se a resposta for não, sugiro dar uma olhada.</p>
<p>É algo muito poderoso, e muito simples ao mesmo tempo. Usando sintaxe javascript, é possível codificar coisas de forma bem rápida, como por exemplo esse webserver abaixo:</p>
<pre>var net = require('net');
var dataToSend;
var socketServer; 

net.createServer(function (socket)
{
  socketServer = socket;
  socket.write("Server Initialized.");
  setInterval ( writeToSocketServer, 33 );
  socket.on("data,:" function (data)
  {
    dataToSend = data
  });

}).listen(8124, "127.0.0.1");

function writeToSocketServer()
{
  if (dataToSend) socketServer.write(dataToSend);
}</pre>
<p>Além desse simples exemplo, tem uma biblioteca em desenvolvimento, com um monte de coisas prontas. <a href="http://nodejs.org/docs/v0.3.4/api/" onclick="javascript:pageTracker._trackPageview('out/nodejs.org');" target="_blank">Veja aqui</a>.</p>
<p>Para instalar no Windows, você precisa basicamente:</p>
<ul>
<li>Instalar o cygwin (&#8216;emulador&#8217; do linux)</li>
<li>Baixar os fontes</li>
<li>Compilar</li>
<li>Instalar</li>
<li>Rodar</li>
</ul>
<p>Cygwin:</p>
<ul>
<li>Baixe o <a href="http://cygwin.com/setup.exe" onclick="javascript:pageTracker._trackPageview('out/cygwin.com');" target="_blank">setup</a>;</li>
<li> No momento da instalação, procure os pacotes:
<ul>
<li>devel → gcc-g++</li>
<li>devel → git</li>
<li>devel → make</li>
<li>devel → openssl</li>
<li>libs → openssl-devel</li>
<li>devel → pkg-config</li>
<li>devel → zlib-devel</li>
<li>python → python</li>
</ul>
</li>
<li>É legal adicionar também editores: vim e mc</li>
<li>Depois de instalado, vamos baixar o fonte, compilar e instalar</li>
</ul>
<p>Baixando:</p>
<p>1) Fazer <a href="http://nodejs.org/#download" onclick="javascript:pageTracker._trackPageview('out/nodejs.org');" target="_blank">download </a>do node.js</p>
<p>2) Supondo que você instalou o cygwin em c:\cygwin, abra esse diretório via windows explorer, procure a pasta home e abra o único diretório que está lá. Mova o download do node.js para essa pasta.</p>
<p>3) Pelo menu iniciar, abra o Cygwin Bash Shell e digite:</p>
<p>$ cd ~<br />
$ ./configure<br />
$ make<br />
$ make install</p>
<p>Rode o exemplo que passei acima, e pronto! Node.js rodando.</p>
<p>Não deixe de ler as documentações, há muita coisa feita e rodando. Estou brincando com esse <a href="https://groups.google.com/forum/#!topic/nodejs/4CYZ7H0gjSg" onclick="javascript:pageTracker._trackPageview('out/groups.google.com');" target="_blank">jQuery</a> para ele, muito funcional.</p>
<p>Dúvidas ? Sugestões ? Utilize o campo de comentários.</p>
<p class="bookmark-me">Bookmarks<a title="technorati.com" href="http://www.technorati.com/faves?add=http%3A%2F%2Fblogdodantas.dxs.com.br%2F2011%2F01%2F13%2Finstalando-node-js-no-windows%2F" onclick="javascript:pageTracker._trackPageview('out/www.technorati.com');" target="_blank" rel="nofollow"><img src="http://www.dxs.com.br/wordpress/wp-content/plugins/bookmark-me/images/technorati.png" style="margin:0;border:0;padding:0" alt="bookmark"/></a> <a title="del.icio.us" href="http://del.icio.us/post?url=http%3A%2F%2Fblogdodantas.dxs.com.br%2F2011%2F01%2F13%2Finstalando-node-js-no-windows%2F&amp;title=Instalando+node.js+no+Windows" onclick="javascript:pageTracker._trackPageview('out/del.icio.us');" target="_blank" rel="nofollow"><img src="http://www.dxs.com.br/wordpress/wp-content/plugins/bookmark-me/images/delicious.png" style="margin:0;border:0;padding:0" alt="bookmark"/></a> <a title="digg.com" href="http://digg.com/submit?url=http%3A%2F%2Fblogdodantas.dxs.com.br%2F2011%2F01%2F13%2Finstalando-node-js-no-windows%2F&amp;title=Instalando+node.js+no+Windows" onclick="javascript:pageTracker._trackPageview('out/digg.com');" target="_blank" rel="nofollow"><img src="http://www.dxs.com.br/wordpress/wp-content/plugins/bookmark-me/images/digg.png" style="margin:0;border:0;padding:0" alt="bookmark"/></a> <a title="www.facebook.com" href="http://www.facebook.com/share.php?u=http%3A%2F%2Fblogdodantas.dxs.com.br%2F2011%2F01%2F13%2Finstalando-node-js-no-windows%2F&amp;t=Instalando+node.js+no+Windows" onclick="javascript:pageTracker._trackPageview('out/www.facebook.com');" target="_blank" rel="nofollow"><img src="http://www.dxs.com.br/wordpress/wp-content/plugins/bookmark-me/images/facebook.png" style="margin:0;border:0;padding:0" alt="bookmark"/></a> <a title="bookmarks.yahoo.com" href="http://bookmarks.yahoo.com/toolbar/savebm?opener=tb&amp;u=http%3A%2F%2Fblogdodantas.dxs.com.br%2F2011%2F01%2F13%2Finstalando-node-js-no-windows%2F" onclick="javascript:pageTracker._trackPageview('out/bookmarks.yahoo.com');" target="_blank" rel="nofollow"><img src="http://www.dxs.com.br/wordpress/wp-content/plugins/bookmark-me/images/yahoo.png" style="margin:0;border:0;padding:0" alt="bookmark"/></a> <a title="www.google.com" href="http://www.google.com/bookmarks/mark?op=edit&amp;output=popup&amp;bkmk=http%3A%2F%2Fblogdodantas.dxs.com.br%2F2011%2F01%2F13%2Finstalando-node-js-no-windows%2F&amp;title=Instalando+node.js+no+Windows" onclick="javascript:pageTracker._trackPageview('out/www.google.com');" target="_blank" rel="nofollow"><img src="http://www.dxs.com.br/wordpress/wp-content/plugins/bookmark-me/images/google.png" style="margin:0;border:0;padding:0" alt="bookmark"/></a> </p>]]></content:encoded>
			<wfw:commentRss>http://blogdodantas.dxs.com.br/2011/01/13/instalando-node-js-no-windows/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
		<item>
		<title>Baixar vídeo flv e mp3 do Youtube</title>
		<link>http://blogdodantas.dxs.com.br/2010/12/20/baixar-video-flv-e-mp3-do-youtube/</link>
		<comments>http://blogdodantas.dxs.com.br/2010/12/20/baixar-video-flv-e-mp3-do-youtube/#comments</comments>
		<pubDate>Mon, 20 Dec 2010 18:51:18 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[.NET]]></category>
		<category><![CDATA[Desenvolvimento de software]]></category>
		<category><![CDATA[hacking]]></category>
		<category><![CDATA[download youtube]]></category>
		<category><![CDATA[flv youtube]]></category>
		<category><![CDATA[mp3 youtube]]></category>
		<category><![CDATA[yotube]]></category>

		<guid isPermaLink="false">http://blogdodantas.dxs.com.br/?p=488</guid>
		<description><![CDATA[Veja o hack anterior, feito em PHP, que retira o FLV somente. Por algumas vezes, precisei baixar os vídeos do Youtube para usar offline &#8211; realizar apresentações, assistir podcast, ou até mesmo motivado falta de conectividade. Além disso, sempre aparece alguma necessidade para extrair o mp3 do vídeo para escutar somente o áudio &#8211; música, [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://blogdodantas.dxs.com.br/2010/08/01/como-extrair-flv-do-youtube-com-php/"  target="_blank">Veja o hack anterior, feito em PHP, que retira o FLV somente</a>.</p>
<p>Por algumas vezes, precisei baixar os vídeos do <a href="http://www.youtube.com" onclick="javascript:pageTracker._trackPageview('out/www.youtube.com');" target="_blank">Youtube</a> para usar offline &#8211; realizar apresentações, assistir <a href="http://en.wikipedia.org/wiki/Podcast" onclick="javascript:pageTracker._trackPageview('out/en.wikipedia.org');" target="_blank">podcast</a>, ou até mesmo motivado falta de conectividade. Além disso, sempre aparece alguma necessidade para extrair o mp3 do vídeo para escutar somente o áudio &#8211; música, ou coisas do gênero. A questão é que nunca achei algum software legal que conseguisse fazer isso, ou até mesmo um plugin do firefox/chrome &#8211; os que testei não funcionavam.</p>
<p>Minha vida de hacks ensinou algumas lições, e a principal delas é entender os detalhes e funcionamento das coisas, para poder modificar.  Obviamente que existem diversas exceções para a afirmação, mas isso não vem ao caso <img src='http://www.dxs.com.br/wordpress/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p><strong>Objetivos do projeto:</strong></p>
<ul>
<li>Entender como o flv é passado ao player;</li>
<li>Fazer download da página do Youtube, aplicar expressão regular para tirar a url do flv;</li>
<li>Fazer download do flv;</li>
<li>Extrair áudio;</li>
</ul>
<p>Tendo isso em mente, o ponto mais complexo seria entender como o FLV é passado ao player do Youtube.  A tarefa até que não foi complexa: abri o firebug, vi as requisições de rede do tipo flash, e depois de alguns minutos brincando, escrevi uma expressão regular para retirar o que precisava usando Python.</p>
<p>Mas mesmo fazendo uma aplicação console, achei que precisava melhorar mais. Resolvi então criar uma aplicação Windows Forms (C#) para deixar esse hack com uma cara apresentável . Usei o <a href="http://www.icsharpcode.net/opensource/sd/" onclick="javascript:pageTracker._trackPageview('out/www.icsharpcode.net');" target="_blank">Shardevelop</a>, que é uma IDE free, e no final, o que era pra ser algo bem rudimentar, ficou até bacana.</p>
<p>Achei um port do <a href="http://ffmpeg.arrozcru.org/autobuilds/" onclick="javascript:pageTracker._trackPageview('out/ffmpeg.arrozcru.org');" target="_blank">ffmpeg para windows</a>, e com mais algumas linhas de código, consegui fazer com que o mp3 fosse extraído do FLV rapidamente.</p>
<p>Com alguns dias de uso, alguns colegas viram o programa rodando e pediram para compartilhar. Mas achei que poderia ser usado por mais pessoas, e resolvi disponibilizar para download. Por enquanto, só tem os executáveis, mas vou fazer upload dos fontes para meu repositório de projetos no code.google, e assim, você pode hackear a vontade, também.</p>
<p>Faça DOWNLOAD aqui.</p>
<p><strong>Requisitos:</strong></p>
<ul>
<li>Microsoft Windows 2000 ou superior;</li>
<li>.NET framework 2.0 ou superior;</li>
<li>Conectividade com a internet;</li>
</ul>
<p><strong>Issues conhecidos (vai dar pau na aplicação):</strong></p>
<ul>
<li>Conexão por proxy;</li>
<li>Youtube bloqueado;</li>
<li>Continuar download se cair a conexão;</li>
</ul>
<p>Como disse, é um hack estruturado, mas a medida que tiver tempo sobrando, vou melhorando o projeto.</p>
<p>Comentários ? Sugestões ?</p>
<p>Robson Dantas @robsondantas</p>
<p class="bookmark-me">Bookmarks<a title="technorati.com" href="http://www.technorati.com/faves?add=http%3A%2F%2Fblogdodantas.dxs.com.br%2F2010%2F12%2F20%2Fbaixar-video-flv-e-mp3-do-youtube%2F" onclick="javascript:pageTracker._trackPageview('out/www.technorati.com');" target="_blank" rel="nofollow"><img src="http://www.dxs.com.br/wordpress/wp-content/plugins/bookmark-me/images/technorati.png" style="margin:0;border:0;padding:0" alt="bookmark"/></a> <a title="del.icio.us" href="http://del.icio.us/post?url=http%3A%2F%2Fblogdodantas.dxs.com.br%2F2010%2F12%2F20%2Fbaixar-video-flv-e-mp3-do-youtube%2F&amp;title=Baixar+v%C3%ADdeo+flv+e+mp3+do+Youtube" onclick="javascript:pageTracker._trackPageview('out/del.icio.us');" target="_blank" rel="nofollow"><img src="http://www.dxs.com.br/wordpress/wp-content/plugins/bookmark-me/images/delicious.png" style="margin:0;border:0;padding:0" alt="bookmark"/></a> <a title="digg.com" href="http://digg.com/submit?url=http%3A%2F%2Fblogdodantas.dxs.com.br%2F2010%2F12%2F20%2Fbaixar-video-flv-e-mp3-do-youtube%2F&amp;title=Baixar+v%C3%ADdeo+flv+e+mp3+do+Youtube" onclick="javascript:pageTracker._trackPageview('out/digg.com');" target="_blank" rel="nofollow"><img src="http://www.dxs.com.br/wordpress/wp-content/plugins/bookmark-me/images/digg.png" style="margin:0;border:0;padding:0" alt="bookmark"/></a> <a title="www.facebook.com" href="http://www.facebook.com/share.php?u=http%3A%2F%2Fblogdodantas.dxs.com.br%2F2010%2F12%2F20%2Fbaixar-video-flv-e-mp3-do-youtube%2F&amp;t=Baixar+v%C3%ADdeo+flv+e+mp3+do+Youtube" onclick="javascript:pageTracker._trackPageview('out/www.facebook.com');" target="_blank" rel="nofollow"><img src="http://www.dxs.com.br/wordpress/wp-content/plugins/bookmark-me/images/facebook.png" style="margin:0;border:0;padding:0" alt="bookmark"/></a> <a title="bookmarks.yahoo.com" href="http://bookmarks.yahoo.com/toolbar/savebm?opener=tb&amp;u=http%3A%2F%2Fblogdodantas.dxs.com.br%2F2010%2F12%2F20%2Fbaixar-video-flv-e-mp3-do-youtube%2F" onclick="javascript:pageTracker._trackPageview('out/bookmarks.yahoo.com');" target="_blank" rel="nofollow"><img src="http://www.dxs.com.br/wordpress/wp-content/plugins/bookmark-me/images/yahoo.png" style="margin:0;border:0;padding:0" alt="bookmark"/></a> <a title="www.google.com" href="http://www.google.com/bookmarks/mark?op=edit&amp;output=popup&amp;bkmk=http%3A%2F%2Fblogdodantas.dxs.com.br%2F2010%2F12%2F20%2Fbaixar-video-flv-e-mp3-do-youtube%2F&amp;title=Baixar+v%C3%ADdeo+flv+e+mp3+do+Youtube" onclick="javascript:pageTracker._trackPageview('out/www.google.com');" target="_blank" rel="nofollow"><img src="http://www.dxs.com.br/wordpress/wp-content/plugins/bookmark-me/images/google.png" style="margin:0;border:0;padding:0" alt="bookmark"/></a> </p>]]></content:encoded>
			<wfw:commentRss>http://blogdodantas.dxs.com.br/2010/12/20/baixar-video-flv-e-mp3-do-youtube/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>PyQuery &#8211; jQuery like library para Python</title>
		<link>http://blogdodantas.dxs.com.br/2010/12/07/pyquery-jquery-like-library-para-python/</link>
		<comments>http://blogdodantas.dxs.com.br/2010/12/07/pyquery-jquery-like-library-para-python/#comments</comments>
		<pubDate>Tue, 07 Dec 2010 18:51:34 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Python]]></category>
		<category><![CDATA[hacking]]></category>
		<category><![CDATA[pyquery]]></category>
		<category><![CDATA[python bot]]></category>
		<category><![CDATA[scrapping]]></category>

		<guid isPermaLink="false">http://blogdodantas.dxs.com.br/?p=472</guid>
		<description><![CDATA[Se há algo que eu gosto de fazer, é criar robôs para extrair dados de sites e recarregá-los em um formato simples. Há alguns dias atrás, postei aqui no blog sobre um scrapper que eu fiz usando PHP e phpQuery para monitorar as vagas que o Google abre no Brasil. Eu gosto do PHP por [...]]]></description>
			<content:encoded><![CDATA[<p>Se há algo que eu gosto de fazer, é criar robôs para extrair dados de sites e recarregá-los em um formato simples. Há alguns dias atrás, postei aqui no blog sobre um scrapper que eu fiz usando PHP e phpQuery para <a href="http://blogdodantas.dxs.com.br/2010/11/29/quer-trabalhar-no-google-confira-as-vagas/"  target="_blank">monitorar as vagas que o Google abre no Brasil</a>.</p>
<p>Eu gosto do PHP por causa da facilidade em criar coisas rápidas, mas ultimamente tenho gostado mais de Python. E como um profundo admirador, usuário e colaborador de tecnologias opensource, resolvi pesquisar algo que fosse tão poderoso quanto o phpQuery, mas para Python.</p>
<p>Em um passado não muito distante, usei um framework Python chamado <a href="http://www.python.org.br/wiki/BeautifulSoup" onclick="javascript:pageTracker._trackPageview('out/www.python.org.br');" target="_blank">BeautifulSoup</a> que fazia o trabalho de uma forma decente, mas não era algo que fosse intuitivo igual a sintaxe do jQuery &#8211; também usada pelo phpQuery.</p>
<p>Ontem achei o <a href="http://packages.python.org/pyquery/" onclick="javascript:pageTracker._trackPageview('out/packages.python.org');" target="_blank">pyQuery</a>, e fiquei feliz com o resultado. Além de ser um pacote que está incorporado ao packages.python, escrevi uma rotina que tenho usado bastante, com 45 linhas de código.</p>
<p><strong>Dicionário offline de phrasal verbs</strong></p>
<p>O uso do inglês é constante em uma multinacional, e depois de um certo nível de fluência, você começa a querer melhorar alguns detalhes &#8211; no meu especificamente os <a href="http://en.wikipedia.org/wiki/Phrasal_verb" onclick="javascript:pageTracker._trackPageview('out/en.wikipedia.org');" target="_blank">phrasal verbs</a>.</p>
<p>Não vou entrar muito no mérito, mas phrasal verbs podem ter um significado muito diferente do que você imagina, dentro de uma frase ou de uma situação &#8211; um site que eu sempre uso para aprender novas palavras é o <a href="http://www.usingenglish.com/reference/phrasal-verbs/" onclick="javascript:pageTracker._trackPageview('out/www.usingenglish.com');" target="_blank">Using English</a>, que possui um dicionário online bem rico. Mas nem sempre consigo estar conectado, e ficar navegando entre palavras consome um tempo desnecessário.</p>
<p>Aproveitei essa possibilidade para colocar em prática um bot que consolida todas as palavras e todos os significados em uma única página, offline, onde posso usar CTRL+F a vontade. Não vou disponibilizar o arquivo para download, mas vou colocar o código fonte python em breve para você fazer uso a seu critério. Abaixo um print do resultado:</p>
<div id="attachment_473" class="wp-caption alignnone" style="width: 607px"><a href="http://www.dxs.com.br/wordpress/wp-content/uploads/2010/12/scrapping-phrasal.png" ><img class="size-full wp-image-473" title="Phrasal Verbs - offline" src="http://www.dxs.com.br/wordpress/wp-content/uploads/2010/12/scrapping-phrasal.png" alt="Phrasal Verbs - offline" width="597" height="439" /></a><p class="wp-caption-text">Phrasal Verbs - offline</p></div>
<p class="bookmark-me">Bookmarks<a title="technorati.com" href="http://www.technorati.com/faves?add=http%3A%2F%2Fblogdodantas.dxs.com.br%2F2010%2F12%2F07%2Fpyquery-jquery-like-library-para-python%2F" onclick="javascript:pageTracker._trackPageview('out/www.technorati.com');" target="_blank" rel="nofollow"><img src="http://www.dxs.com.br/wordpress/wp-content/plugins/bookmark-me/images/technorati.png" style="margin:0;border:0;padding:0" alt="bookmark"/></a> <a title="del.icio.us" href="http://del.icio.us/post?url=http%3A%2F%2Fblogdodantas.dxs.com.br%2F2010%2F12%2F07%2Fpyquery-jquery-like-library-para-python%2F&amp;title=PyQuery+%26%238211%3B+jQuery+like+library+para+Python" onclick="javascript:pageTracker._trackPageview('out/del.icio.us');" target="_blank" rel="nofollow"><img src="http://www.dxs.com.br/wordpress/wp-content/plugins/bookmark-me/images/delicious.png" style="margin:0;border:0;padding:0" alt="bookmark"/></a> <a title="digg.com" href="http://digg.com/submit?url=http%3A%2F%2Fblogdodantas.dxs.com.br%2F2010%2F12%2F07%2Fpyquery-jquery-like-library-para-python%2F&amp;title=PyQuery+%26%238211%3B+jQuery+like+library+para+Python" onclick="javascript:pageTracker._trackPageview('out/digg.com');" target="_blank" rel="nofollow"><img src="http://www.dxs.com.br/wordpress/wp-content/plugins/bookmark-me/images/digg.png" style="margin:0;border:0;padding:0" alt="bookmark"/></a> <a title="www.facebook.com" href="http://www.facebook.com/share.php?u=http%3A%2F%2Fblogdodantas.dxs.com.br%2F2010%2F12%2F07%2Fpyquery-jquery-like-library-para-python%2F&amp;t=PyQuery+%26%238211%3B+jQuery+like+library+para+Python" onclick="javascript:pageTracker._trackPageview('out/www.facebook.com');" target="_blank" rel="nofollow"><img src="http://www.dxs.com.br/wordpress/wp-content/plugins/bookmark-me/images/facebook.png" style="margin:0;border:0;padding:0" alt="bookmark"/></a> <a title="bookmarks.yahoo.com" href="http://bookmarks.yahoo.com/toolbar/savebm?opener=tb&amp;u=http%3A%2F%2Fblogdodantas.dxs.com.br%2F2010%2F12%2F07%2Fpyquery-jquery-like-library-para-python%2F" onclick="javascript:pageTracker._trackPageview('out/bookmarks.yahoo.com');" target="_blank" rel="nofollow"><img src="http://www.dxs.com.br/wordpress/wp-content/plugins/bookmark-me/images/yahoo.png" style="margin:0;border:0;padding:0" alt="bookmark"/></a> <a title="www.google.com" href="http://www.google.com/bookmarks/mark?op=edit&amp;output=popup&amp;bkmk=http%3A%2F%2Fblogdodantas.dxs.com.br%2F2010%2F12%2F07%2Fpyquery-jquery-like-library-para-python%2F&amp;title=PyQuery+%26%238211%3B+jQuery+like+library+para+Python" onclick="javascript:pageTracker._trackPageview('out/www.google.com');" target="_blank" rel="nofollow"><img src="http://www.dxs.com.br/wordpress/wp-content/plugins/bookmark-me/images/google.png" style="margin:0;border:0;padding:0" alt="bookmark"/></a> </p>]]></content:encoded>
			<wfw:commentRss>http://blogdodantas.dxs.com.br/2010/12/07/pyquery-jquery-like-library-para-python/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Quer trabalhar no Google ? Confira as vagas</title>
		<link>http://blogdodantas.dxs.com.br/2010/11/29/quer-trabalhar-no-google-confira-as-vagas/</link>
		<comments>http://blogdodantas.dxs.com.br/2010/11/29/quer-trabalhar-no-google-confira-as-vagas/#comments</comments>
		<pubDate>Mon, 29 Nov 2010 13:30:51 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[google]]></category>
		<category><![CDATA[hacking]]></category>
		<category><![CDATA[php scrapper]]></category>
		<category><![CDATA[sp-gtug]]></category>

		<guid isPermaLink="false">http://blogdodantas.dxs.com.br/?p=447</guid>
		<description><![CDATA[Trabalhar no Google é o sonho de milhares de pessoas, e muitas vezes, não é impossível. Eu mesmo já fiz o processo de seleção &#8211; diga-se de passagem bem longo &#8211; mas acabei não entrando. Muita gente acaba não aplicando para as vagas, achando que só os alpha-geeks entram lá &#8211; pode até ser verdade [...]]]></description>
			<content:encoded><![CDATA[<p>Trabalhar no Google é o sonho de milhares de pessoas, e muitas vezes, não é impossível. Eu mesmo já fiz o processo de seleção &#8211; diga-se de passagem bem longo &#8211; mas acabei não entrando.</p>
<p>Muita gente acaba não aplicando para as vagas, achando que só os alpha-geeks entram lá &#8211; pode até ser verdade em alguns aspectos, mas no Brasil a maioria das vagas <em>não </em>são relacionadas a engenharia.</p>
<p>Recentemente, <a href="http://www.twitter.com/dondogde" onclick="javascript:pageTracker._trackPageview('out/www.twitter.com');" target="_blank">Don Dodge</a> (developer advocate no Google), postou duas notícias em seu site, onde fala que o <a href="http://dondodge.typepad.com/the_next_big_thing/2010/11/google-is-hiring-2000-people-how-to-get-a-job-at-google.html" onclick="javascript:pageTracker._trackPageview('out/dondodge.typepad.com');" target="_blank">Google abrirá 2000 posições em breve</a>. Além disso, tem um post bem interessante, <a href="http://dondodge.typepad.com/the_next_big_thing/2010/09/how-to-get-a-job-at-google-interview-questions-hiring-process.html" onclick="javascript:pageTracker._trackPageview('out/dondodge.typepad.com');" target="_blank">falando do processo de seleção</a>.</p>
<p>Ultimamente, andei brincando com uma biblioteca php chamada <a href="http://code.google.com/p/phpquery/" onclick="javascript:pageTracker._trackPageview('out/code.google.com');" target="_blank">phpQuery</a> que permite que você extraia pedaços de html, com a mesma sintaxe do <a href="http://www.jquery.com" onclick="javascript:pageTracker._trackPageview('out/www.jquery.com');" target="_blank">jQuery </a>- muito útil para quem gosta de programar spiders e extrair informações de websites.</p>
<p>Para exercitar um pouco o uso da biblioteca, escrevi um programa que lista as vagas disponíveis no <a title="Vagas no google são paulo" href="http://www.dxs.com.br/out/index.php"  target="_blank">Google em São Paulo</a> e em <a title="vagas no google belo horizonte" href="http://www.dxs.com.br/out/index-belo.php"  target="_blank">Belo Horizonte</a>, de uma forma bem limpa e objetiva em apenas 60 linhas de código.</p>
<p>Além disso, o conteúdo que aparece está codificado em base64 para evitar que filtros dos proxies das empresas leiam diretamente o que você está acessando.</p>
<p>Para finalizar, e aproveitar o assunto Google, gostaria de convidá-lo para fazer parte do <a title="sp-gtug" href="http://www.sp-gtug.org" onclick="javascript:pageTracker._trackPageview('out/www.sp-gtug.org');" target="_blank">SP-GTUG &#8211; Grupo de usuários das tecnologias Google (Sao Paulo)</a>. Temos uma <a href="http://groups.google.com/group/sp-gtug" onclick="javascript:pageTracker._trackPageview('out/groups.google.com');" target="_blank">lista de discussão movimentada</a>, e encontros presenciais que acontecem uma ou duas vezes por mês. Dia 3/12, por exemplo, <a href="http://groups.google.com/group/sp-gtug/browse_thread/thread/56614a856cc512da" onclick="javascript:pageTracker._trackPageview('out/groups.google.com');" target="_blank">faremos um encontro no escritório do Google em São Paulo</a>.</p>
<p>Comentários ? Sugestões ? Utilize o formulário abaixo.</p>
<p class="bookmark-me">Bookmarks<a title="technorati.com" href="http://www.technorati.com/faves?add=http%3A%2F%2Fblogdodantas.dxs.com.br%2F2010%2F11%2F29%2Fquer-trabalhar-no-google-confira-as-vagas%2F" onclick="javascript:pageTracker._trackPageview('out/www.technorati.com');" target="_blank" rel="nofollow"><img src="http://www.dxs.com.br/wordpress/wp-content/plugins/bookmark-me/images/technorati.png" style="margin:0;border:0;padding:0" alt="bookmark"/></a> <a title="del.icio.us" href="http://del.icio.us/post?url=http%3A%2F%2Fblogdodantas.dxs.com.br%2F2010%2F11%2F29%2Fquer-trabalhar-no-google-confira-as-vagas%2F&amp;title=Quer+trabalhar+no+Google+%3F+Confira+as+vagas" onclick="javascript:pageTracker._trackPageview('out/del.icio.us');" target="_blank" rel="nofollow"><img src="http://www.dxs.com.br/wordpress/wp-content/plugins/bookmark-me/images/delicious.png" style="margin:0;border:0;padding:0" alt="bookmark"/></a> <a title="digg.com" href="http://digg.com/submit?url=http%3A%2F%2Fblogdodantas.dxs.com.br%2F2010%2F11%2F29%2Fquer-trabalhar-no-google-confira-as-vagas%2F&amp;title=Quer+trabalhar+no+Google+%3F+Confira+as+vagas" onclick="javascript:pageTracker._trackPageview('out/digg.com');" target="_blank" rel="nofollow"><img src="http://www.dxs.com.br/wordpress/wp-content/plugins/bookmark-me/images/digg.png" style="margin:0;border:0;padding:0" alt="bookmark"/></a> <a title="www.facebook.com" href="http://www.facebook.com/share.php?u=http%3A%2F%2Fblogdodantas.dxs.com.br%2F2010%2F11%2F29%2Fquer-trabalhar-no-google-confira-as-vagas%2F&amp;t=Quer+trabalhar+no+Google+%3F+Confira+as+vagas" onclick="javascript:pageTracker._trackPageview('out/www.facebook.com');" target="_blank" rel="nofollow"><img src="http://www.dxs.com.br/wordpress/wp-content/plugins/bookmark-me/images/facebook.png" style="margin:0;border:0;padding:0" alt="bookmark"/></a> <a title="bookmarks.yahoo.com" href="http://bookmarks.yahoo.com/toolbar/savebm?opener=tb&amp;u=http%3A%2F%2Fblogdodantas.dxs.com.br%2F2010%2F11%2F29%2Fquer-trabalhar-no-google-confira-as-vagas%2F" onclick="javascript:pageTracker._trackPageview('out/bookmarks.yahoo.com');" target="_blank" rel="nofollow"><img src="http://www.dxs.com.br/wordpress/wp-content/plugins/bookmark-me/images/yahoo.png" style="margin:0;border:0;padding:0" alt="bookmark"/></a> <a title="www.google.com" href="http://www.google.com/bookmarks/mark?op=edit&amp;output=popup&amp;bkmk=http%3A%2F%2Fblogdodantas.dxs.com.br%2F2010%2F11%2F29%2Fquer-trabalhar-no-google-confira-as-vagas%2F&amp;title=Quer+trabalhar+no+Google+%3F+Confira+as+vagas" onclick="javascript:pageTracker._trackPageview('out/www.google.com');" target="_blank" rel="nofollow"><img src="http://www.dxs.com.br/wordpress/wp-content/plugins/bookmark-me/images/google.png" style="margin:0;border:0;padding:0" alt="bookmark"/></a> </p>]]></content:encoded>
			<wfw:commentRss>http://blogdodantas.dxs.com.br/2010/11/29/quer-trabalhar-no-google-confira-as-vagas/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Como extrair FLV do Youtube com PHP</title>
		<link>http://blogdodantas.dxs.com.br/2010/08/01/como-extrair-flv-do-youtube-com-php/</link>
		<comments>http://blogdodantas.dxs.com.br/2010/08/01/como-extrair-flv-do-youtube-com-php/#comments</comments>
		<pubDate>Sun, 01 Aug 2010 23:50:32 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Gambiarras]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[download flv youtube]]></category>
		<category><![CDATA[youtube flv]]></category>
		<category><![CDATA[youtube php]]></category>

		<guid isPermaLink="false">http://blogdodantas.dxs.com.br/?p=428</guid>
		<description><![CDATA[Um dia desses estava precisando fazer um teste para extrair mp3 a partir de um vídeo de Youtube, mas como passo inicial, precisava baixar o flv automaticamente. Usando o firebug, consegui identificar o padrão que o Youtube passa como flashvars, para identifcar o vídeo. Com base nisso, criei um script em php, muito simples. Basicamente [...]]]></description>
			<content:encoded><![CDATA[<p>Um dia desses estava precisando fazer um teste para extrair mp3 a partir de um vídeo de Youtube, mas como passo inicial, precisava baixar o flv automaticamente. Usando o firebug, consegui identificar o padrão que o Youtube passa como flashvars, para identifcar o vídeo.</p>
<p>Com base nisso, criei um script em php, muito simples. Basicamente você precisa obter a chave fmt_stream_map do flashvars e fazer download.</p>
<p>Preciso melhorar o código, mas para o propósito que eu tinha em mente, funcionou muito bem. Veja abaixo o código:</p>
<pre>// recebe pela linha de comando a url de vídeo do Youtube
if(count($argv)&gt;=2)
  $url = $argv[1];
else
  die("Usage: php youtube.php url");

// passo 1, baixar o html para fazer parse.
// estou usando file_get_contents por ser mais simples
// mas curl é o recomendado
echo "Baixando $url\r\n";
$f = file_get_contents($argv[1]);

// executa um parse, que converte em array string no formato
// de dados de post: a=1&amp;b=2&amp;c=3, vira array['a']=1 ..
echo "Executando parse na str\r\n";
parse_str($f, $output);

// recebe a chave fmt_stream_map e remove a string concatenada no começo
// Ex: 35|url
$flv = $output["fmt_stream_map"];
$flv = explode("|",$flv);

// chama wget para baixar o flv. Grava no disco com o nome 'video.flv'
$r = `wget -O video.flv "$flv[1]"`;

//fim
</pre>
<p>.</p>
<p>Tem dúvida ? Não deixe de comentar.</p>
<p>Robson Dantas</p>
<p class="bookmark-me">Bookmarks<a title="technorati.com" href="http://www.technorati.com/faves?add=http%3A%2F%2Fblogdodantas.dxs.com.br%2F2010%2F08%2F01%2Fcomo-extrair-flv-do-youtube-com-php%2F" onclick="javascript:pageTracker._trackPageview('out/www.technorati.com');" target="_blank" rel="nofollow"><img src="http://www.dxs.com.br/wordpress/wp-content/plugins/bookmark-me/images/technorati.png" style="margin:0;border:0;padding:0" alt="bookmark"/></a> <a title="del.icio.us" href="http://del.icio.us/post?url=http%3A%2F%2Fblogdodantas.dxs.com.br%2F2010%2F08%2F01%2Fcomo-extrair-flv-do-youtube-com-php%2F&amp;title=Como+extrair+FLV+do+Youtube+com+PHP" onclick="javascript:pageTracker._trackPageview('out/del.icio.us');" target="_blank" rel="nofollow"><img src="http://www.dxs.com.br/wordpress/wp-content/plugins/bookmark-me/images/delicious.png" style="margin:0;border:0;padding:0" alt="bookmark"/></a> <a title="digg.com" href="http://digg.com/submit?url=http%3A%2F%2Fblogdodantas.dxs.com.br%2F2010%2F08%2F01%2Fcomo-extrair-flv-do-youtube-com-php%2F&amp;title=Como+extrair+FLV+do+Youtube+com+PHP" onclick="javascript:pageTracker._trackPageview('out/digg.com');" target="_blank" rel="nofollow"><img src="http://www.dxs.com.br/wordpress/wp-content/plugins/bookmark-me/images/digg.png" style="margin:0;border:0;padding:0" alt="bookmark"/></a> <a title="www.facebook.com" href="http://www.facebook.com/share.php?u=http%3A%2F%2Fblogdodantas.dxs.com.br%2F2010%2F08%2F01%2Fcomo-extrair-flv-do-youtube-com-php%2F&amp;t=Como+extrair+FLV+do+Youtube+com+PHP" onclick="javascript:pageTracker._trackPageview('out/www.facebook.com');" target="_blank" rel="nofollow"><img src="http://www.dxs.com.br/wordpress/wp-content/plugins/bookmark-me/images/facebook.png" style="margin:0;border:0;padding:0" alt="bookmark"/></a> <a title="bookmarks.yahoo.com" href="http://bookmarks.yahoo.com/toolbar/savebm?opener=tb&amp;u=http%3A%2F%2Fblogdodantas.dxs.com.br%2F2010%2F08%2F01%2Fcomo-extrair-flv-do-youtube-com-php%2F" onclick="javascript:pageTracker._trackPageview('out/bookmarks.yahoo.com');" target="_blank" rel="nofollow"><img src="http://www.dxs.com.br/wordpress/wp-content/plugins/bookmark-me/images/yahoo.png" style="margin:0;border:0;padding:0" alt="bookmark"/></a> <a title="www.google.com" href="http://www.google.com/bookmarks/mark?op=edit&amp;output=popup&amp;bkmk=http%3A%2F%2Fblogdodantas.dxs.com.br%2F2010%2F08%2F01%2Fcomo-extrair-flv-do-youtube-com-php%2F&amp;title=Como+extrair+FLV+do+Youtube+com+PHP" onclick="javascript:pageTracker._trackPageview('out/www.google.com');" target="_blank" rel="nofollow"><img src="http://www.dxs.com.br/wordpress/wp-content/plugins/bookmark-me/images/google.png" style="margin:0;border:0;padding:0" alt="bookmark"/></a> </p>]]></content:encoded>
			<wfw:commentRss>http://blogdodantas.dxs.com.br/2010/08/01/como-extrair-flv-do-youtube-com-php/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>IDE para desenvolvimento .NET no Linux</title>
		<link>http://blogdodantas.dxs.com.br/2010/08/01/ide-para-desenvolvimento-net-no-linux/</link>
		<comments>http://blogdodantas.dxs.com.br/2010/08/01/ide-para-desenvolvimento-net-no-linux/#comments</comments>
		<pubDate>Sun, 01 Aug 2010 23:21:14 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[.NET]]></category>
		<category><![CDATA[Desenvolvimento de software]]></category>
		<category><![CDATA[.net linux]]></category>
		<category><![CDATA[mono]]></category>
		<category><![CDATA[monodevelop]]></category>

		<guid isPermaLink="false">http://blogdodantas.dxs.com.br/?p=423</guid>
		<description><![CDATA[Sim, é totalmente possível desenvolver aplicações .NET e rodá-las no Linux ( e no Mac também ). Tudo isso deve-se ao projeto Mono, que é bem antigo e bem ativo. Em poucas palavras e de uma forma bem macro, a idéia do projeto é implementar a máquina virtual para outros sistemas operacionais, tornando o desenvolvimento [...]]]></description>
			<content:encoded><![CDATA[<p>Sim, é totalmente possível desenvolver aplicações .NET e rodá-las no Linux ( e no Mac também ). Tudo isso deve-se ao projeto <a title="Mono C#" href="http://www.mono-project.com" onclick="javascript:pageTracker._trackPageview('out/www.mono-project.com');" target="_blank">Mono</a>, que é bem antigo e bem ativo. Em poucas palavras e de uma forma bem macro, a idéia do projeto é implementar a máquina virtual para outros sistemas operacionais, tornando o desenvolvimento compatível.</p>
<p><a title="implementação do framework" href="http://go-mono.com/status/" onclick="javascript:pageTracker._trackPageview('out/go-mono.com');" target="_blank">Clique aqui</a> para conferir o status da implementação das classes de cada framework.</p>
<p>Se você gostou da idéia e quer começar a desenvolver suas aplicações no linux, não deixe de conferir o <a title="monodevelop c# ide" href="http://monodevelop.com/" onclick="javascript:pageTracker._trackPageview('out/monodevelop.com');" target="_blank">Mono Develop</a>, que é uma IDE bem leve e funcional &#8211; possui code complete, compilação integrada e outras funcionalidades &#8230;</p>
<div id="attachment_424" class="wp-caption alignnone" style="width: 560px"><a href="http://www.dxs.com.br/wordpress/wp-content/uploads/2010/08/monodevelop.jpg" ><img class="size-full wp-image-424" title="Mono Develop - Linux" src="http://www.dxs.com.br/wordpress/wp-content/uploads/2010/08/monodevelop.jpg" alt="Mono Develop - Linux" width="550" height="302" /></a><p class="wp-caption-text">Mono Develop - Linux</p></div>
<p>Usuários de Ubuntu e outras distribuições baseadas no Debian, basta abrir um terminal e executar: apt-get install monodevelop</p>
<p>Dúvidas ? Poste seu comentário.</p>
<p>abs</p>
<p>Robson Dantas</p>
<p class="bookmark-me">Bookmarks<a title="technorati.com" href="http://www.technorati.com/faves?add=http%3A%2F%2Fblogdodantas.dxs.com.br%2F2010%2F08%2F01%2Fide-para-desenvolvimento-net-no-linux%2F" onclick="javascript:pageTracker._trackPageview('out/www.technorati.com');" target="_blank" rel="nofollow"><img src="http://www.dxs.com.br/wordpress/wp-content/plugins/bookmark-me/images/technorati.png" style="margin:0;border:0;padding:0" alt="bookmark"/></a> <a title="del.icio.us" href="http://del.icio.us/post?url=http%3A%2F%2Fblogdodantas.dxs.com.br%2F2010%2F08%2F01%2Fide-para-desenvolvimento-net-no-linux%2F&amp;title=IDE+para+desenvolvimento+.NET+no+Linux" onclick="javascript:pageTracker._trackPageview('out/del.icio.us');" target="_blank" rel="nofollow"><img src="http://www.dxs.com.br/wordpress/wp-content/plugins/bookmark-me/images/delicious.png" style="margin:0;border:0;padding:0" alt="bookmark"/></a> <a title="digg.com" href="http://digg.com/submit?url=http%3A%2F%2Fblogdodantas.dxs.com.br%2F2010%2F08%2F01%2Fide-para-desenvolvimento-net-no-linux%2F&amp;title=IDE+para+desenvolvimento+.NET+no+Linux" onclick="javascript:pageTracker._trackPageview('out/digg.com');" target="_blank" rel="nofollow"><img src="http://www.dxs.com.br/wordpress/wp-content/plugins/bookmark-me/images/digg.png" style="margin:0;border:0;padding:0" alt="bookmark"/></a> <a title="www.facebook.com" href="http://www.facebook.com/share.php?u=http%3A%2F%2Fblogdodantas.dxs.com.br%2F2010%2F08%2F01%2Fide-para-desenvolvimento-net-no-linux%2F&amp;t=IDE+para+desenvolvimento+.NET+no+Linux" onclick="javascript:pageTracker._trackPageview('out/www.facebook.com');" target="_blank" rel="nofollow"><img src="http://www.dxs.com.br/wordpress/wp-content/plugins/bookmark-me/images/facebook.png" style="margin:0;border:0;padding:0" alt="bookmark"/></a> <a title="bookmarks.yahoo.com" href="http://bookmarks.yahoo.com/toolbar/savebm?opener=tb&amp;u=http%3A%2F%2Fblogdodantas.dxs.com.br%2F2010%2F08%2F01%2Fide-para-desenvolvimento-net-no-linux%2F" onclick="javascript:pageTracker._trackPageview('out/bookmarks.yahoo.com');" target="_blank" rel="nofollow"><img src="http://www.dxs.com.br/wordpress/wp-content/plugins/bookmark-me/images/yahoo.png" style="margin:0;border:0;padding:0" alt="bookmark"/></a> <a title="www.google.com" href="http://www.google.com/bookmarks/mark?op=edit&amp;output=popup&amp;bkmk=http%3A%2F%2Fblogdodantas.dxs.com.br%2F2010%2F08%2F01%2Fide-para-desenvolvimento-net-no-linux%2F&amp;title=IDE+para+desenvolvimento+.NET+no+Linux" onclick="javascript:pageTracker._trackPageview('out/www.google.com');" target="_blank" rel="nofollow"><img src="http://www.dxs.com.br/wordpress/wp-content/plugins/bookmark-me/images/google.png" style="margin:0;border:0;padding:0" alt="bookmark"/></a> </p>]]></content:encoded>
			<wfw:commentRss>http://blogdodantas.dxs.com.br/2010/08/01/ide-para-desenvolvimento-net-no-linux/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Biblioteca para acesso ao orkut em PHP &#8211; orkut os client php 3legged</title>
		<link>http://blogdodantas.dxs.com.br/2010/06/18/biblioteca-para-acesso-ao-orkut-em-php-orkut-os-client-php-3legged/</link>
		<comments>http://blogdodantas.dxs.com.br/2010/06/18/biblioteca-para-acesso-ao-orkut-em-php-orkut-os-client-php-3legged/#comments</comments>
		<pubDate>Fri, 18 Jun 2010 20:50:19 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Desenvolvimento de software]]></category>
		<category><![CDATA[Opensocial]]></category>
		<category><![CDATA[Opensocial com PHP]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[client orkut php]]></category>
		<category><![CDATA[cliente orkut php]]></category>
		<category><![CDATA[orkut 3legged php]]></category>
		<category><![CDATA[orkut client]]></category>
		<category><![CDATA[orkut-os-client]]></category>

		<guid isPermaLink="false">http://blogdodantas.dxs.com.br/?p=413</guid>
		<description><![CDATA[Ufa, faz um bom tempo que não escrevo no blog. A vida no trabalho não está fácil! Hoje, gostaria de anunciar que consegui dedicar uma parte das minhas madrugadas desenvolvendo e ajudando um projeto opensource, que consegue se conectar ao Orkut. Para quem já conhece Opensocial, sabe que é possível desenvolver aplicativos para redes sociais [...]]]></description>
			<content:encoded><![CDATA[<p>Ufa, faz um bom tempo que não escrevo no blog. A vida no trabalho não está fácil!</p>
<p>Hoje, gostaria de anunciar que consegui dedicar uma parte das minhas madrugadas desenvolvendo e ajudando um projeto opensource, que consegue se conectar ao Orkut. Para quem já conhece <a href="http://wiki.opensocial.org" onclick="javascript:pageTracker._trackPageview('out/wiki.opensocial.org');" target="_blank">Opensocial</a>, sabe que é possível desenvolver aplicativos para redes sociais e fazê-los rodar lá dentro. Mas e caso você queira fazer uso da rede social para promover seu aplicativo/site, sem ter necessariamente que produzir um aplicativo Opensocial ?</p>
<p>O Facebook, por exemplo, permite tal interação através do <a title="facebook api" href="http://developers.facebook.com/docs/" onclick="javascript:pageTracker._trackPageview('out/developers.facebook.com');" target="_blank">Facebook Connect</a>, que é basicamente um conjunto de APIs para interagir com a rede, ex: mudar mensagem de status, postar mensagens no mural, buscar amigos, etc &#8230;</p>
<p>Até pouco tempo atrás, a única forma de interagir com o Orkut sem estar necessariamente logado dentro da rede, era usando o <a href="http://sites.google.com/site/oauthgoog/2leggedoauth/2opensocialrestapi" onclick="javascript:pageTracker._trackPageview('out/sites.google.com');" target="_blank">2-legged OAuth</a> que foi disponibilizado a partir da versão 0.8 do Opensocial via REST ou RPC - em poucas palavras, para ter acesso às informações do usuário por fora da rede social, o usuário deve ter um aplicativo seu escrito em Opensocial instalado no perfil. Como parte dos inúmeros processos de melhoria, o time do Orkut desenvolveu um projeto, chamado <a title="orkut os client" href="http://code.google.com/p/orkut-os-client" onclick="javascript:pageTracker._trackPageview('out/code.google.com');" target="_blank">Orkut-os-client</a> &#8211; baseado em 3legged OAuth, e que permite fazer acesso as informações dos usuários dentro do Orkut sem precisar de nenhum aplicativo instalado no perfil.</p>
<p>Mas nem tudo é uma maravilha: A API foi desenvolvida em Java, sendo que a grande maioria das pessoas usam PHP para o desenvolvimento. Depois de um certo tempo lendo usuários solicitando a API em outras linguagens, decidi migrar parte do código para a linguagem PHP, e pesquisando, consegui fazer algo simples e rápido.</p>
<p>A pergunta que você pode estar fazendo é &#8220;como simples e rápido&#8221; ? Bom, primeiro dei uma lida geral no código fonte da API em Java e descobri que todo o processo é um RPC Wrapper, e que as chamadas dos métodos da rede social são exatamente as mesmas usadas no Opensocial, ex: &#8220;messages.get&#8221; .</p>
<p>Com base nisso, fiz download da API já existente &#8211; desenvolvida pelos caras da Google, chamada <a href="http://code.google.com/p/opensocial-php-client/" onclick="javascript:pageTracker._trackPageview('out/code.google.com');" target="_blank">opensocial-php-client </a>-  que possui implementação de 2-legged e 3-legged para uma grande parte das redes sociais.</p>
<p>Apliquei um patch, modificando as url&#8217;s de access token, além de alterar as chamadas JSON que são feitas ao servidor de RPC, e funcionou muito bem. Já há uma versão rodando que permite ler e gravar SCRAPS, além de pegar informações dos seus amigos.</p>
<p>Continuo trabalhando para dar suporte às outras funcionalidades: Álbum, activities, e outros.</p>
<p>O projeto foi disponibilizado no GoogleCode, e criei uma lista de discussão para os interessados no desenvolvimento. Caso queira participar, sua contribuição é bem vinda.</p>
<p>Site do projeto, no Google Code: <a href="http://code.google.com/p/orkut-os-client-php/" onclick="javascript:pageTracker._trackPageview('out/code.google.com');" target="_blank">Orkut-os-client-php</a></p>
<p><a href="http://groups.google.com/group/orkut-php-client/" onclick="javascript:pageTracker._trackPageview('out/groups.google.com');" target="_blank">Grupo de discussão sobre a biblioteca</a></p>
<p>Enjoy!</p>
<p>Robson Dantas</p>
<p class="bookmark-me">Bookmarks<a title="technorati.com" href="http://www.technorati.com/faves?add=http%3A%2F%2Fblogdodantas.dxs.com.br%2F2010%2F06%2F18%2Fbiblioteca-para-acesso-ao-orkut-em-php-orkut-os-client-php-3legged%2F" onclick="javascript:pageTracker._trackPageview('out/www.technorati.com');" target="_blank" rel="nofollow"><img src="http://www.dxs.com.br/wordpress/wp-content/plugins/bookmark-me/images/technorati.png" style="margin:0;border:0;padding:0" alt="bookmark"/></a> <a title="del.icio.us" href="http://del.icio.us/post?url=http%3A%2F%2Fblogdodantas.dxs.com.br%2F2010%2F06%2F18%2Fbiblioteca-para-acesso-ao-orkut-em-php-orkut-os-client-php-3legged%2F&amp;title=Biblioteca+para+acesso+ao+orkut+em+PHP+%26%238211%3B+orkut+os+client+php+3legged" onclick="javascript:pageTracker._trackPageview('out/del.icio.us');" target="_blank" rel="nofollow"><img src="http://www.dxs.com.br/wordpress/wp-content/plugins/bookmark-me/images/delicious.png" style="margin:0;border:0;padding:0" alt="bookmark"/></a> <a title="digg.com" href="http://digg.com/submit?url=http%3A%2F%2Fblogdodantas.dxs.com.br%2F2010%2F06%2F18%2Fbiblioteca-para-acesso-ao-orkut-em-php-orkut-os-client-php-3legged%2F&amp;title=Biblioteca+para+acesso+ao+orkut+em+PHP+%26%238211%3B+orkut+os+client+php+3legged" onclick="javascript:pageTracker._trackPageview('out/digg.com');" target="_blank" rel="nofollow"><img src="http://www.dxs.com.br/wordpress/wp-content/plugins/bookmark-me/images/digg.png" style="margin:0;border:0;padding:0" alt="bookmark"/></a> <a title="www.facebook.com" href="http://www.facebook.com/share.php?u=http%3A%2F%2Fblogdodantas.dxs.com.br%2F2010%2F06%2F18%2Fbiblioteca-para-acesso-ao-orkut-em-php-orkut-os-client-php-3legged%2F&amp;t=Biblioteca+para+acesso+ao+orkut+em+PHP+%26%238211%3B+orkut+os+client+php+3legged" onclick="javascript:pageTracker._trackPageview('out/www.facebook.com');" target="_blank" rel="nofollow"><img src="http://www.dxs.com.br/wordpress/wp-content/plugins/bookmark-me/images/facebook.png" style="margin:0;border:0;padding:0" alt="bookmark"/></a> <a title="bookmarks.yahoo.com" href="http://bookmarks.yahoo.com/toolbar/savebm?opener=tb&amp;u=http%3A%2F%2Fblogdodantas.dxs.com.br%2F2010%2F06%2F18%2Fbiblioteca-para-acesso-ao-orkut-em-php-orkut-os-client-php-3legged%2F" onclick="javascript:pageTracker._trackPageview('out/bookmarks.yahoo.com');" target="_blank" rel="nofollow"><img src="http://www.dxs.com.br/wordpress/wp-content/plugins/bookmark-me/images/yahoo.png" style="margin:0;border:0;padding:0" alt="bookmark"/></a> <a title="www.google.com" href="http://www.google.com/bookmarks/mark?op=edit&amp;output=popup&amp;bkmk=http%3A%2F%2Fblogdodantas.dxs.com.br%2F2010%2F06%2F18%2Fbiblioteca-para-acesso-ao-orkut-em-php-orkut-os-client-php-3legged%2F&amp;title=Biblioteca+para+acesso+ao+orkut+em+PHP+%26%238211%3B+orkut+os+client+php+3legged" onclick="javascript:pageTracker._trackPageview('out/www.google.com');" target="_blank" rel="nofollow"><img src="http://www.dxs.com.br/wordpress/wp-content/plugins/bookmark-me/images/google.png" style="margin:0;border:0;padding:0" alt="bookmark"/></a> </p>]]></content:encoded>
			<wfw:commentRss>http://blogdodantas.dxs.com.br/2010/06/18/biblioteca-para-acesso-ao-orkut-em-php-orkut-os-client-php-3legged/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
	</channel>
</rss>

