<?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>coisas lunix</title>
	<atom:link href="http://fiorix.wordpress.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://fiorix.wordpress.com</link>
	<description>oops! kernel panic!</description>
	<lastBuildDate>Tue, 17 Jan 2012 15:56:40 +0000</lastBuildDate>
	<language>pt-br</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<cloud domain='fiorix.wordpress.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://s2.wp.com/i/buttonw-com.png</url>
		<title>coisas lunix</title>
		<link>http://fiorix.wordpress.com</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://fiorix.wordpress.com/osd.xml" title="coisas lunix" />
	<atom:link rel='hub' href='http://fiorix.wordpress.com/?pushpress=hub'/>
		<item>
		<title>meta bigode nos outros: musta.sh</title>
		<link>http://fiorix.wordpress.com/2011/11/18/meta-bigode-nos-outros-musta-sh/</link>
		<comments>http://fiorix.wordpress.com/2011/11/18/meta-bigode-nos-outros-musta-sh/#comments</comments>
		<pubDate>Fri, 18 Nov 2011 04:15:14 +0000</pubDate>
		<dc:creator>alef</dc:creator>
				<category><![CDATA[programação]]></category>
		<category><![CDATA[python]]></category>
		<category><![CDATA[rede]]></category>
		<category><![CDATA[bigode]]></category>
		<category><![CDATA[cyclone]]></category>
		<category><![CDATA[reconhecimento de image]]></category>
		<category><![CDATA[rosto]]></category>
		<category><![CDATA[tornado]]></category>
		<category><![CDATA[web]]></category>

		<guid isPermaLink="false">http://fiorix.wordpress.com/?p=470</guid>
		<description><![CDATA[Só mesmo quem tem um bigode como esse poderia fazer um web service que identifica o rosto das pessoas em fotos e mete um bigode. Site: musta.sh Código fonte: GitHub Filed under: programação, python, rede Tagged: bigode, cyclone, python, reconhecimento de image, rosto, tornado, web<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=fiorix.wordpress.com&amp;blog=3184614&amp;post=470&amp;subd=fiorix&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><a href="http://fiorix.files.wordpress.com/2011/11/photo-on-2009-10-28-at-01-40-mini.jpg"><img class="size-full wp-image-471 alignleft" style="margin:0 10px 10px 0;" title="mustache" src="http://fiorix.files.wordpress.com/2011/11/photo-on-2009-10-28-at-01-40-mini.jpg?w=590" alt=""   /></a>Só mesmo quem tem um bigode como esse poderia fazer um web service que identifica o rosto das pessoas em fotos e mete um bigode.</p>
<p>Site: <a href="http://musta.sh">musta.sh</a><br />
Código fonte: <a href="http://github.com/fiorix/mustash">GitHub</a></p>
<br />Filed under: <a href='http://fiorix.wordpress.com/category/programacao/'>programação</a>, <a href='http://fiorix.wordpress.com/category/programacao/python-programacao-2/'>python</a>, <a href='http://fiorix.wordpress.com/category/rede/'>rede</a> Tagged: <a href='http://fiorix.wordpress.com/tag/bigode/'>bigode</a>, <a href='http://fiorix.wordpress.com/tag/cyclone/'>cyclone</a>, <a href='http://fiorix.wordpress.com/tag/python/'>python</a>, <a href='http://fiorix.wordpress.com/tag/reconhecimento-de-image/'>reconhecimento de image</a>, <a href='http://fiorix.wordpress.com/tag/rosto/'>rosto</a>, <a href='http://fiorix.wordpress.com/tag/tornado/'>tornado</a>, <a href='http://fiorix.wordpress.com/tag/web/'>web</a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/fiorix.wordpress.com/470/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/fiorix.wordpress.com/470/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/fiorix.wordpress.com/470/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/fiorix.wordpress.com/470/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/fiorix.wordpress.com/470/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/fiorix.wordpress.com/470/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/fiorix.wordpress.com/470/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/fiorix.wordpress.com/470/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/fiorix.wordpress.com/470/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/fiorix.wordpress.com/470/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/fiorix.wordpress.com/470/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/fiorix.wordpress.com/470/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/fiorix.wordpress.com/470/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/fiorix.wordpress.com/470/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=fiorix.wordpress.com&amp;blog=3184614&amp;post=470&amp;subd=fiorix&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://fiorix.wordpress.com/2011/11/18/meta-bigode-nos-outros-musta-sh/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="" medium="image">
			<media:title type="html">alef</media:title>
		</media:content>

		<media:content url="http://fiorix.files.wordpress.com/2011/11/photo-on-2009-10-28-at-01-40-mini.jpg" medium="image">
			<media:title type="html">mustache</media:title>
		</media:content>
	</item>
		<item>
		<title>cyclone ganha um site: cyclone.io</title>
		<link>http://fiorix.wordpress.com/2011/11/16/cyclone-ganha-um-site-cyclone-io/</link>
		<comments>http://fiorix.wordpress.com/2011/11/16/cyclone-ganha-um-site-cyclone-io/#comments</comments>
		<pubDate>Wed, 16 Nov 2011 06:58:10 +0000</pubDate>
		<dc:creator>alef</dc:creator>
				<category><![CDATA[programação]]></category>
		<category><![CDATA[python]]></category>
		<category><![CDATA[rede]]></category>

		<guid isPermaLink="false">http://fiorix.wordpress.com/?p=459</guid>
		<description><![CDATA[Há pouco mais de 2 anos atrás, o FriendFeed havia sido comprado pelo Facebook, e uma das coisas mais interessantes pra nós, na época, foi a publicação do web server que eles haviam desenvolvido para uso interno. Era Setembro de 2009. Sua descrição permanece a mesma até hoje: Tornado is an open source version of [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=fiorix.wordpress.com&amp;blog=3184614&amp;post=459&amp;subd=fiorix&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Há pouco mais de 2 anos atrás, o <a href="http://friendfeed.com/">FriendFeed</a> havia sido comprado pelo <a href="http://facebook.com">Facebook</a>, e uma das coisas mais interessantes pra nós, na época, foi a <a href="http://developers.facebook.com/blog/post/301/">publicação do web server</a> que eles haviam desenvolvido para uso interno. Era Setembro de 2009.<br />
Sua descrição permanece a mesma até hoje:</p>
<blockquote><p><em>Tornado is an open source version of the scalable, non-blocking web server and tools that power FriendFeed. The FriendFeed application is written using a web framework that looks a bit like web.py or Google&#8217;s webapp, but with additional tools and optimizations to take advantage of the underlying non-blocking infrastructure.</em></p></blockquote>
<p>Muita gente reclamou pelo fato do FriendFeed não ter procurado o pessoal do <a href="http://twistedmatrix.com/">Twisted</a>, pois desde os primórdios já era a lib padrão pra programar servidores assíncronos em <a href="http://python.org">Python</a>. Ao invés disso, os caras do FriendFeed postaram coisas reclamando do Twisted &#8211; que era lento, mal documentado, etc; tudo que ainda reclamam nos dias de hoje. <a href="http://bret.appspot.com/entry/tornado-web-server">Veja aqui o anúncio do lançamento do Tornado, por Bret Taylor</a>.</p>
<p>O fato é que o Tornado usava um IO loop próprio, e era bem mais rápido que a API nativa do Twisted pra web, <a href="http://twistedmatrix.com/trac/wiki/TwistedWeb">Twisted Web</a>. Além disso, o Tornado era baseado no framework que se chamava de anti-framework, <a href="http://webpy.org/">web.py</a>, por ser absurdamente simples. Mais ainda, o próprio Google havia publicado no mesmo ano o <a href="http://code.google.com/appengine/">App Engine</a>, que também era baseado no web.py. O resultado é que escrever um web service usando Tornado era muito mais interessante e obviamente mais simples que usar o Twisted Web.</p>
<p>Mas, como quase tudo, o Tornado tinha um grande problema: nenhum protocolo nativo do Python funcionava naquele IO loop. Nem mesmo coisas básicas como fazer uma query em DNS, ou acessar um PostgreSQL. O Twisted, já naquela época, tinha uma lista enorme de protocolos nativos, todos implementados pro IO loop do Twisted, e ainda mais protocolos que a própria lib padrão do Python. Protocolos como IRC, SSH, e suporte nativo pra qualquer database suportado pela <a href="http://www.python.org/dev/peps/pep-0249/">DB API do Python</a>, todos podiam ser mixados de maneira assíncrona no mesmo app, e coisas alucinantes podiam acontecer dentro de um web server.</p>
<p>Mas, justamente o protocolo HTTP era implementado pro Twisted Web, e o grupo de pessoas que cuidava disso havia criado o que seria um framework completo pra desenvolver aplicativos web, chamado <a href="http://divmod.org/">Divmod</a>. Por isso, eles não deram muita atenção pro Tornado, e pareciam focados nos componentes do Divmod que incluíam entre outros, até um sistema de banco de dados alternativo.</p>
<p>Dois dias depois do anúncio do Tornado, o glyph (cara que criou o Twisted) <a href="http://glyph.twistedmatrix.com/2009/09/what-i-wish-tornado-were.html">publicou um texto em seu blog dizendo o que ele gostaria que o Tornado fosse</a>. Esse texto fez com que várias pessoas ficassem reclamando e chorando na teia, <a href="http://teddziuba.com/2009/09/twisted-vs-tornado-youre-both.html">tipo esse post aqui</a>.</p>
<p>Naquela época, eu estava desenvolvendo algumas coisas com Twisted Web, e obviamente fui testar o Tornado. No #twisted da <a href="http://freenode.net/">freenode</a> havia mais gente como eu, e o que mais havia progredido com algo interessante era um cara chamado Dustin Sallings. Ao invés de ficar chorando, <a href="http://dustin.github.com/2009/09/12/tornado.html">ele havia portado o Tornado pra Twisted</a>. Era exatamente o que deveria ter sido desde o começo. Em algumas conversas, ele havia dito que &#8220;estava pronto&#8221;.</p>
<p>Então, <a href="https://github.com/fiorix/cyclone/commit/cd0e90901d24c642b2c2cbf71d7f2d429645cb38">nasceu o cyclone</a>. O motivo era simples: o Twisted Web era uma API pra criar web servers, e muito bagunçado pra criar web apps. O Tornado, era uma API muito decente, mas servia apenas pra criar web apps, sem suporte a nenhum outro protocolo além de HTTP. O cyclone, um mix dos dois: a API do Tornado pra criar web apps, mas que interagem com todos bancos de dados possíveis, e ainda todos protocolos do Twisted &#8211; incluindo os <a href="https://github.com/fiorix/eventsocket">protocolos que se comunicam com sub-sistemas de telefonia</a>.</p>
<p>Nos seus 2 anos de vida, o cyclone evoluiu muito. Muita gente contribuiu, mandou patch, arrumou bugs, adicionou coisas&#8230; e recebo alguns emails por semana de gente que usa e gosta, e agradece por ter algo como o cyclone disponível. Além de ser extremamente estável, passou a ter suporte nativo a <a href="http://www.sqlite.com/">sqlite</a>, <a href="http://redis.io/">redis</a>, <a href="http://www.mongodb.org/">mongodb</a>, e uma gigantesca lista de features &#8211; tem até uma API semelhante à do <a href="http://bottlepy.org/">bottle</a> como opção. Coisas muito interessantes como o <a href="http://nuswit.com/">Nuswit</a>, o <a href="http://restmq.com/">RestMQ</a> e o <a href="http://freegeoip.net/">FreeGeoIP</a> são baseados no cyclone.</p>
<p>Finalmente, peguei o domínio e o <a href="http://zenmachine.wordpress.com/">Gleicon</a> comandou no site: <a href="http://cyclone.io">cyclone.io</a></p>
<br />Filed under: <a href='http://fiorix.wordpress.com/category/programacao/'>programação</a>, <a href='http://fiorix.wordpress.com/category/programacao/python-programacao-2/'>python</a>, <a href='http://fiorix.wordpress.com/category/rede/'>rede</a>  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/fiorix.wordpress.com/459/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/fiorix.wordpress.com/459/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/fiorix.wordpress.com/459/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/fiorix.wordpress.com/459/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/fiorix.wordpress.com/459/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/fiorix.wordpress.com/459/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/fiorix.wordpress.com/459/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/fiorix.wordpress.com/459/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/fiorix.wordpress.com/459/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/fiorix.wordpress.com/459/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/fiorix.wordpress.com/459/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/fiorix.wordpress.com/459/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/fiorix.wordpress.com/459/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/fiorix.wordpress.com/459/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=fiorix.wordpress.com&amp;blog=3184614&amp;post=459&amp;subd=fiorix&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://fiorix.wordpress.com/2011/11/16/cyclone-ganha-um-site-cyclone-io/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
	
		<media:content url="" medium="image">
			<media:title type="html">alef</media:title>
		</media:content>
	</item>
		<item>
		<title></title>
		<link>http://fiorix.wordpress.com/2011/07/25/448/</link>
		<comments>http://fiorix.wordpress.com/2011/07/25/448/#comments</comments>
		<pubDate>Mon, 25 Jul 2011 04:25:45 +0000</pubDate>
		<dc:creator>alef</dc:creator>
				<category><![CDATA[misc]]></category>
		<category><![CDATA[programação]]></category>
		<category><![CDATA[brasileirão]]></category>
		<category><![CDATA[crawler]]></category>

		<guid isPermaLink="false">http://fiorix.wordpress.com/?p=448</guid>
		<description><![CDATA[Puts! Só de pensar que já fiz crawler pra classificação do brasileirão&#8230; e agora o globoesporte.com tem isso: classificacao.json Agora vou atrás do calendário compartilhado do Brasileirão 2011. Filed under: misc, programação Tagged: brasileirão, crawler<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=fiorix.wordpress.com&amp;blog=3184614&amp;post=448&amp;subd=fiorix&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Puts! Só de pensar que <a href="http://fiorix.wordpress.com/2008/06/12/crawler-com-beautiful-soup/">já fiz crawler</a> pra classificação do brasileirão&#8230; e agora o <a href="http://globoesporte.com">globoesporte.com</a> tem isso: <a href="http://globoesporte.globo.com/dynamo/futebol/campeonato/campeonato-brasileiro/brasileirao2011/classificacao.json">classificacao.json</a></p>
<p>Agora vou atrás do calendário compartilhado do Brasileirão 2011.</p>
<br />Filed under: <a href='http://fiorix.wordpress.com/category/misc/'>misc</a>, <a href='http://fiorix.wordpress.com/category/programacao/'>programação</a> Tagged: <a href='http://fiorix.wordpress.com/tag/brasileirao/'>brasileirão</a>, <a href='http://fiorix.wordpress.com/tag/crawler/'>crawler</a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/fiorix.wordpress.com/448/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/fiorix.wordpress.com/448/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/fiorix.wordpress.com/448/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/fiorix.wordpress.com/448/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/fiorix.wordpress.com/448/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/fiorix.wordpress.com/448/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/fiorix.wordpress.com/448/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/fiorix.wordpress.com/448/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/fiorix.wordpress.com/448/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/fiorix.wordpress.com/448/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/fiorix.wordpress.com/448/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/fiorix.wordpress.com/448/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/fiorix.wordpress.com/448/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/fiorix.wordpress.com/448/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=fiorix.wordpress.com&amp;blog=3184614&amp;post=448&amp;subd=fiorix&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://fiorix.wordpress.com/2011/07/25/448/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="" medium="image">
			<media:title type="html">alef</media:title>
		</media:content>
	</item>
		<item>
		<title>Spark Daemon no OSX</title>
		<link>http://fiorix.wordpress.com/2011/02/26/spark-daemon-no-osx/</link>
		<comments>http://fiorix.wordpress.com/2011/02/26/spark-daemon-no-osx/#comments</comments>
		<pubDate>Sat, 26 Feb 2011 16:09:02 +0000</pubDate>
		<dc:creator>alef</dc:creator>
				<category><![CDATA[mac os]]></category>
		<category><![CDATA[misc]]></category>
		<category><![CDATA[cmd+N]]></category>
		<category><![CDATA[maximize vertically]]></category>
		<category><![CDATA[safari tabs]]></category>
		<category><![CDATA[spark daemon]]></category>
		<category><![CDATA[tabs like firefox]]></category>
		<category><![CDATA[terminal tabs]]></category>
		<category><![CDATA[terminal.app]]></category>
		<category><![CDATA[vertical zoom]]></category>

		<guid isPermaLink="false">http://fiorix.wordpress.com/?p=425</guid>
		<description><![CDATA[Sem isso dai não rola usar nem o Safari nem o Terminal. Com o Spark Daemon, costumo criar uns atalhos (shortcuts) que executam código Apple Script, específico por aplicativo. No Safari, por exemplo, os shortcuts Cmd+1 até Cmd+9 servem pra mudar a aba (tab) do browser, usando este código: No Terminal, mesma coisa&#8230; E ainda, [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=fiorix.wordpress.com&amp;blog=3184614&amp;post=425&amp;subd=fiorix&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Sem isso dai não rola usar nem o Safari nem o Terminal.</p>
<p>Com o <a href="http://www.shadowlab.org/Software/spark">Spark Daemon</a>, costumo criar uns atalhos (shortcuts) que executam código Apple Script, específico por aplicativo.</p>
<p>No Safari, por exemplo, os shortcuts Cmd+1 até Cmd+9 servem pra mudar a aba (tab) do browser, usando este código:</p>
<p><pre class="brush: bash;">
tell front window of application &quot;Safari&quot; to set current tab to tab 1
</pre></p>
<p>No Terminal, mesma coisa&#8230;</p>
<p><pre class="brush: bash;">
tell front window of application &quot;Terminal&quot; to set selected tab to tab 1
</pre></p>
<p>E ainda, o shortcut Cmd+Shift+M pra maximizar apenas na vertical:</p>
<p><pre class="brush: bash;">
tell application &quot;Finder&quot;
	set _b to bounds of window of desktop
end tell

tell application &quot;Terminal&quot;
	tell front window
		set {_x, _y, _w, _h} to (get bounds)
		set _vz to item 4 of _b
		set bounds to {_x, 10, _w, _vz}
	end tell
end tell
</pre></p>
<br />Filed under: <a href='http://fiorix.wordpress.com/category/mac-os/'>mac os</a>, <a href='http://fiorix.wordpress.com/category/misc/'>misc</a> Tagged: <a href='http://fiorix.wordpress.com/tag/cmdn/'>cmd+N</a>, <a href='http://fiorix.wordpress.com/tag/maximize-vertically/'>maximize vertically</a>, <a href='http://fiorix.wordpress.com/tag/safari-tabs/'>safari tabs</a>, <a href='http://fiorix.wordpress.com/tag/spark-daemon/'>spark daemon</a>, <a href='http://fiorix.wordpress.com/tag/tabs-like-firefox/'>tabs like firefox</a>, <a href='http://fiorix.wordpress.com/tag/terminal-tabs/'>terminal tabs</a>, <a href='http://fiorix.wordpress.com/tag/terminalapp/'>terminal.app</a>, <a href='http://fiorix.wordpress.com/tag/vertical-zoom/'>vertical zoom</a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/fiorix.wordpress.com/425/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/fiorix.wordpress.com/425/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/fiorix.wordpress.com/425/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/fiorix.wordpress.com/425/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/fiorix.wordpress.com/425/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/fiorix.wordpress.com/425/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/fiorix.wordpress.com/425/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/fiorix.wordpress.com/425/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/fiorix.wordpress.com/425/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/fiorix.wordpress.com/425/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/fiorix.wordpress.com/425/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/fiorix.wordpress.com/425/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/fiorix.wordpress.com/425/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/fiorix.wordpress.com/425/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=fiorix.wordpress.com&amp;blog=3184614&amp;post=425&amp;subd=fiorix&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://fiorix.wordpress.com/2011/02/26/spark-daemon-no-osx/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="" medium="image">
			<media:title type="html">alef</media:title>
		</media:content>
	</item>
		<item>
		<title>como eu uso o git</title>
		<link>http://fiorix.wordpress.com/2010/09/01/como-eu-uso-o-git/</link>
		<comments>http://fiorix.wordpress.com/2010/09/01/como-eu-uso-o-git/#comments</comments>
		<pubDate>Wed, 01 Sep 2010 05:08:27 +0000</pubDate>
		<dc:creator>alef</dc:creator>
				<category><![CDATA[sistema]]></category>
		<category><![CDATA[unix toolbox]]></category>
		<category><![CDATA[git svn clearcase repositório]]></category>

		<guid isPermaLink="false">http://fiorix.wordpress.com/?p=409</guid>
		<description><![CDATA[Faz tempo que não escrevo aqui. Nesse meio tempo estive em 3 países diferentes, e muita aconteceu. Agora chegou a hora de um post simples e rápido sobre como tenho usado o git, que talvez ajude muita gente. Os projetos de código aberto ficam normalmente hospedados no github. Também mantenho uma cópia na minha máquina [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=fiorix.wordpress.com&amp;blog=3184614&amp;post=409&amp;subd=fiorix&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Faz tempo que não escrevo aqui. Nesse meio tempo estive em 3 países diferentes, e muita aconteceu. Agora chegou a hora de um post simples e rápido sobre como tenho usado o <a href="http://git-scm.com/">git</a>, que talvez ajude muita gente.</p>
<p>Os projetos de código aberto ficam normalmente hospedados no <a href="https://github.com/fiorix/">github</a>. Também mantenho uma cópia na minha máquina do slicehost, que vai pro backup. Já os projetos de código proprietário, mando apenas pra minha máquina do slicehost.</p>
<p>Nessa máquina do slicehost, uso <a href="http://github.com/res0nat0r/gitosis">gitosis</a> pra administrar o repositório. Ele é simples, prático, e funciona via <a href="http://en.wikipedia.org/wiki/Secure_Shell">ssh</a>, o que é bem conveniente. Melhor ainda, é fácil de instalar e gerenciar, e usa o próprio git pra configurar o repositório. No <a href="http://github.com/res0nat0r/gitosis/blob/master/README.rst">README</a> já tem toda a explicação sobre como instalar e gerenciar.</p>
<p>Se você está pensando em usar git também, e vem do svn, veja <a href="http://git.or.cz/course/svn.html">este link</a>. O que posso te adiantar sobre o git, em relação ao svn (ou mesmo <a href="http://www.nongnu.org/cvs/">cvs</a>, ou pior ainda, <a href="http://www-01.ibm.com/software/awdtools/clearcase/">clearcase</a>) é o seguinte: sistema de controle de versão offline é absurdamente mais produtivo. Especialmente no caso do git, criar e gerenciar diferentes <em>branches </em>é<em> </em>muito melhor, o <em>merge</em> entre diferentes <em>branches</em> ou até entre diferentes revisões (usando repositório remoto) é muito bom, e mesmo quando falha é bem simples de resolver. Tem todos os recursos que você já está acostumado, e os que precisa: tag, branch, archive.</p>
<p>Ainda é possível manter uma <em>working copy </em>local com git, e usar o repositório svn. Veja <a href="http://www.kernel.org/pub/software/scm/git/docs/git-svn.html">este manual</a>. Se precisar usar git com clearcase, tem <a href="http://stackoverflow.com/questions/2342131/how-to-bridge-git-to-clearcase">este</a> e <a href="http://www.turbodad.com/articles/24/12-revision">este</a> link.</p>
<p>O <a href="http://www.kernel.org/pub/software/scm/git/docs/user-manual.html">manual do usuário (do kernel.org)</a> é bem completo e cheio de exemplos. <a href="http://video.linuxfoundation.org/video/1324">Também tem o video</a> do Linus falando sobre o git no Tech Talk, no Google.</p>
<br />Filed under: <a href='http://fiorix.wordpress.com/category/sistema/'>sistema</a>, <a href='http://fiorix.wordpress.com/category/sistema/unix-toolbox/'>unix toolbox</a> Tagged: <a href='http://fiorix.wordpress.com/tag/git-svn-clearcase-repositorio/'>git svn clearcase repositório</a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/fiorix.wordpress.com/409/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/fiorix.wordpress.com/409/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/fiorix.wordpress.com/409/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/fiorix.wordpress.com/409/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/fiorix.wordpress.com/409/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/fiorix.wordpress.com/409/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/fiorix.wordpress.com/409/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/fiorix.wordpress.com/409/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/fiorix.wordpress.com/409/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/fiorix.wordpress.com/409/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/fiorix.wordpress.com/409/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/fiorix.wordpress.com/409/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/fiorix.wordpress.com/409/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/fiorix.wordpress.com/409/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=fiorix.wordpress.com&amp;blog=3184614&amp;post=409&amp;subd=fiorix&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://fiorix.wordpress.com/2010/09/01/como-eu-uso-o-git/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="" medium="image">
			<media:title type="html">alef</media:title>
		</media:content>
	</item>
		<item>
		<title>twisted adbapi: nomes de colunas em query</title>
		<link>http://fiorix.wordpress.com/2010/03/10/twisted-adbapi-nomes-de-colunas-em-query/</link>
		<comments>http://fiorix.wordpress.com/2010/03/10/twisted-adbapi-nomes-de-colunas-em-query/#comments</comments>
		<pubDate>Wed, 10 Mar 2010 17:10:27 +0000</pubDate>
		<dc:creator>alef</dc:creator>
				<category><![CDATA[programação]]></category>
		<category><![CDATA[python]]></category>
		<category><![CDATA[sql]]></category>
		<category><![CDATA[adbapi]]></category>
		<category><![CDATA[column names]]></category>
		<category><![CDATA[connectionPool]]></category>
		<category><![CDATA[enterprise]]></category>
		<category><![CDATA[mapping]]></category>
		<category><![CDATA[runQuery]]></category>
		<category><![CDATA[twisted]]></category>

		<guid isPermaLink="false">http://fiorix.wordpress.com/?p=405</guid>
		<description><![CDATA[Quem já usou o twisted.enterprise.adbapi deve ter notado a falta de uma funcionalidade muitas vezes necessária na execução de queries (SELECT) no banco, seja ele qual for: colocar o nome das colunas no resultado, de forma que cada linha seja um dicionário e não um simples set. Considerando que o adbapi é apenas um wrapper [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=fiorix.wordpress.com&amp;blog=3184614&amp;post=405&amp;subd=fiorix&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Quem já usou o <a href="http://twistedmatrix.com/documents/current/core/howto/rdbms.html">twisted.enterprise.adbapi</a> deve ter notado a falta de uma funcionalidade muitas vezes necessária na execução de <em>queries</em> (SELECT) no banco, seja ele qual for: colocar o nome das colunas no resultado, de forma que cada linha seja um dicionário e não um simples <em>set</em>.</p>
<p>Considerando que o adbapi é apenas um <em>wrapper</em> do <a href="http://www.python.org/dev/peps/pep-0249/">Python Database API v2.0 (PEP-249)</a>, obviamente existem motivos pra essa funcionalidade não estar lá (além da preguiça de alguns). No documento, o primeiro item do FAQ:</p>
<pre>Question: 

       How can I construct a dictionary out of the tuples returned by
       .fetch*():

    Answer:

       There are several existing tools available which provide
       helpers for this task. Most of them use the approach of using
       the column names defined in the cursor attribute .description
       as basis for the keys in the row dictionary.

       Note that the reason for not extending the DB API specification
       to also support dictionary return values for the .fetch*()
       methods is that this approach has several drawbacks:

       * Some databases don't support case-sensitive column names or
         auto-convert them to all lowercase or all uppercase
         characters.

       * Columns in the result set which are generated by the query
         (e.g.  using SQL functions) don't map to table column names
         and databases usually generate names for these columns in a
         very database specific way.

       As a result, accessing the columns through dictionary keys
       varies between databases and makes writing portable code
       impossible.</pre>
<p>Na busca por uma solução, até encontrei um <a href="http://twistedmatrix.com/trac/ticket/632">patch pro twisted</a>, que adiciona um método <em>runQueryMapped</em> e retorna uma lista de dicionários, como eu queria. Porém, aplicar patch no twisted é furada, pois o código só funcionaria nas máquinas cujo twisted tem o tal patch. Fora de cogitação.</p>
<p>A solução mais simples (e tosca) que encontrei foi a que funcionou melhor:</p>
<p><pre class="brush: python;">
# coding: utf-8
# hack for twisted.enterprise.adbapi.ConnectionPool class, providing
# a new method mapQuery (just like runQuery) whose return value
# is a list of dictionaries that map column names to values.

from twisted.enterprise import adbapi

class hackPool(adbapi.ConnectionPool):
    def _mapQuery(self, trans, *args, **kw):
        trans.execute(*args, **kw)
        rs, new_rs = trans.fetchall(), []
        names = [d[0] for d in trans.description]
        for values in rs:
            row = dict()
            for k, v in zip(names, values):
                row[k] = v
            new_rs.append(row)
        return new_rs

    def mapQuery(self, *args, **kw):
        return self.runInteraction(self._mapQuery, *args, **kw)
</pre></p>
<p>Dessa maneira, o <em>hack</em> fica no próprio código e não requer nenhum patch. Dá-lhe gambi.</p>
<br />Filed under: <a href='http://fiorix.wordpress.com/category/programacao/'>programação</a>, <a href='http://fiorix.wordpress.com/category/programacao/python-programacao-2/'>python</a>, <a href='http://fiorix.wordpress.com/category/programacao/sql/'>sql</a> Tagged: <a href='http://fiorix.wordpress.com/tag/adbapi/'>adbapi</a>, <a href='http://fiorix.wordpress.com/tag/column-names/'>column names</a>, <a href='http://fiorix.wordpress.com/tag/connectionpool/'>connectionPool</a>, <a href='http://fiorix.wordpress.com/tag/enterprise/'>enterprise</a>, <a href='http://fiorix.wordpress.com/tag/mapping/'>mapping</a>, <a href='http://fiorix.wordpress.com/tag/runquery/'>runQuery</a>, <a href='http://fiorix.wordpress.com/tag/twisted/'>twisted</a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/fiorix.wordpress.com/405/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/fiorix.wordpress.com/405/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/fiorix.wordpress.com/405/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/fiorix.wordpress.com/405/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/fiorix.wordpress.com/405/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/fiorix.wordpress.com/405/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/fiorix.wordpress.com/405/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/fiorix.wordpress.com/405/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/fiorix.wordpress.com/405/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/fiorix.wordpress.com/405/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/fiorix.wordpress.com/405/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/fiorix.wordpress.com/405/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/fiorix.wordpress.com/405/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/fiorix.wordpress.com/405/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=fiorix.wordpress.com&amp;blog=3184614&amp;post=405&amp;subd=fiorix&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://fiorix.wordpress.com/2010/03/10/twisted-adbapi-nomes-de-colunas-em-query/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="" medium="image">
			<media:title type="html">alef</media:title>
		</media:content>
	</item>
		<item>
		<title>yeah, tudo assíncrono!</title>
		<link>http://fiorix.wordpress.com/2010/01/20/yeah-tudo-assincrono/</link>
		<comments>http://fiorix.wordpress.com/2010/01/20/yeah-tudo-assincrono/#comments</comments>
		<pubDate>Wed, 20 Jan 2010 23:58:34 +0000</pubDate>
		<dc:creator>alef</dc:creator>
				<category><![CDATA[programação]]></category>
		<category><![CDATA[python]]></category>
		<category><![CDATA[rede]]></category>
		<category><![CDATA[sistema]]></category>
		<category><![CDATA[telecom]]></category>
		<category><![CDATA[asynchronous]]></category>
		<category><![CDATA[comet]]></category>
		<category><![CDATA[cyclone]]></category>
		<category><![CDATA[driver]]></category>
		<category><![CDATA[mongodb]]></category>
		<category><![CDATA[redis]]></category>
		<category><![CDATA[restmq]]></category>
		<category><![CDATA[streaming api]]></category>
		<category><![CDATA[tornado]]></category>
		<category><![CDATA[twisted]]></category>
		<category><![CDATA[twitter]]></category>
		<category><![CDATA[txredisapi]]></category>

		<guid isPermaLink="false">http://fiorix.wordpress.com/?p=397</guid>
		<description><![CDATA[Ultimamente tem sido tudo assim, assíncro. O Nuswit já vai fazer aniversário de 1 ano, e vale lembrar que está em produção contínua, sem dar nenhuma manutenção. Já estou mais que convencido que o caminho pros próximos anos dessa década não pode ser outro, ainda mais com o WebSocket no w3c. Para contribuir com a [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=fiorix.wordpress.com&amp;blog=3184614&amp;post=397&amp;subd=fiorix&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Ultimamente tem sido tudo assim, assíncro. O <a href="http://nuswit.com/">Nuswit</a> já vai fazer aniversário de 1 ano, e vale lembrar que está em produção contínua, sem dar nenhuma manutenção.</p>
<p>Já estou mais que convencido que o caminho pros próximos anos dessa década não pode ser outro, ainda mais com o <a href="http://dev.w3.org/html5/websockets/">WebSocket</a> no <a href="http://www.w3.org/">w3c</a>.</p>
<p>Para contribuir com a interwebs, tenho mantido os seguintes projetos:</p>
<p><a href="http://github.com/fiorix/cyclone">http://github.com/fiorix/cyclone</a><br />
Um clone do <a href="http://www.tornadoweb.org/">Tornado</a>, webserver assíncrono do <a href="http://friendfeed.com/">FriendFeed</a>, que desde o ano passado é do <a href="http://www.facebook.com/">Facebook</a>. Essa implementação, batizada de <em>Cyclone</em>, tem algumas diferenças:</p>
<ul>
<li>Core I/O baseado no <a href="http://twistedmatrix.com/">Twisted</a></li>
<li>Suporte nativo a <a href="http://www.xmlrpc.com/">XMLRPC</a></li>
<li>Suporte a localização baseada no <a href="http://www.gnu.org/software/gettext/">gettext</a> &#8211; ao invés do CSV, original do Tornado</li>
</ul>
<p>Com vários aplicativos de exemplos, todos os plug-ins do Tornado para autenticação no Google, Twitter, Facebook, OAuth, OpenID, etc&#8230;</p>
<p>O <a href="http://github.com/gleicon/restmq">RestMQ</a> (coisas do <a href="http://zenmachine.wordpress.com/">Gleicon</a>, que ajudei a implementar) é baseado nele. A nova versão do Nuswit também será.</p>
<p><a href="http://github.com/fiorix/twisted-twitter-stream">http://github.com/fiorix/twisted-twitter-stream</a><br />
Uma API bem simples para acessar a <a href="http://apiwiki.twitter.com/Streaming-API-Documentation#Introduction">Streaming API</a> do <a href="http://twitter.com/">Twitter</a>. Provê suporte a todos os <a href="http://apiwiki.twitter.com/Streaming-API-Documentation#Methods">métodos publicados </a>pela API.</p>
<p>Não depende do <a href="http://twistedmatrix.com/trac/wiki/TwistedWeb">TwistedWeb</a>, a implementação do<a href="http://www.w3.org/Protocols/rfc2616/rfc2616.html"> HTTP 1.1</a> está inteira no código &#8211; na verdade, apenas o lado do client com suporte a <a href="http://en.wikipedia.org/wiki/Comet_%28programming%29">Comet</a>.</p>
<p>Permite criar sistemas como <a href="http://www.band.com.br/twitter/">este</a>.</p>
<p><a href="http://github.com/fiorix/txredisapi">http://github.com/fiorix/txredisapi</a><br />
Um driver assíncrono pro <a href="http://code.google.com/p/redis/">Redis</a>, também baseado no Twisted. O protocolo de comunicação já existia, mas era carente de algumas coisas, que implementei:</p>
<ul>
<li>Métodos de conexão com Auto-Reconnect</li>
<li>Lazy Connections (para usar em web servers)</li>
<li><a href="http://en.wikipedia.org/wiki/Connection_pool">Connection Pools</a></li>
<li><a href="http://en.wikipedia.org/wiki/Shard_%28database_architecture%29">Sharding</a> baseado em <a href="http://en.wikipedia.org/wiki/Consistent_hashing">Consistent Hashing</a> (+Gleicon)</li>
<li>Sharding com Connection Pools</li>
</ul>
<p>Além de estável, é muito rápido! Também foi usado no RestMQ, e aparentemente, está se tornando popular. Hoje achei <a href="http://nosql.mypopescu.com/post/276069660/nosql-libraries">algumas referências </a>enquanto procurava no Google.</p>
<p><a href="http://github.com/fiorix/mongo-async-python-driver">http://github.com/fiorix/mongo-async-python-driver</a><br />
Outro driver de banco de dados, pro <a href="http://www.mongodb.org">MongoDB</a>. O <a href="http://github.com/mongodb/mongo-python-driver">driver original para Python</a> é síncrono, o que dificulta (embora não impossibilita) de usar em sistemas assíncronos, especialmente baseados no Twisted.</p>
<p>Boa parte da implementação é baseada no <em>pymongo</em> original, inclusive o codec de <a href="http://www.mongodb.org/display/DOCS/BSON">BSON</a> (em C), formato binário usado pelo Mongo, baseado em <a href="http://www.json.org/">JSON</a>.</p>
<p>Provavelmente se tornará o driver assíncrono oficial do Mongo para Python+Twisted, e está em vias de se tornar estável &#8211; isso devido às várias mudanças na API, e implementação de vários recursos incluindo <em>Lazy Connections</em>, e<a href="http://www.mongodb.org/display/DOCS/Updating+Data+in+Mongo"> <em>Document Reference</em></a>.</p>
<p>Também, já tem <a href="http://github.com/fiorix/mongo-async-python-driver/watchers">algumas pessoas</a> de olho no GitHub, acompanhando o desenvolvimento.</p>
<p>Entre os vários dbs nosql (couch, redis, etc) o Mongo é um dos mais completos, com uma <a href="http://www.mongodb.org/display/DOCS/Advanced+Queries">linguagem de query</a> muito decente, entre os vários outros recursos nativos. O fato de <a href="http://blog.mongodb.org/post/137788967/32-bit-limitations">usar mmap</a> para acessar os dados também faz com que ele seja <em>muito</em> rápido.</p>
<br />Publicado em programação, python, rede, sistema, telecom Tagged: asynchronous, comet, cyclone, driver, mongodb, python, redis, restmq, streaming api, tornado, twisted, twitter, txredisapi <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/fiorix.wordpress.com/397/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/fiorix.wordpress.com/397/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/fiorix.wordpress.com/397/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/fiorix.wordpress.com/397/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/fiorix.wordpress.com/397/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/fiorix.wordpress.com/397/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/fiorix.wordpress.com/397/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/fiorix.wordpress.com/397/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/fiorix.wordpress.com/397/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/fiorix.wordpress.com/397/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/fiorix.wordpress.com/397/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/fiorix.wordpress.com/397/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/fiorix.wordpress.com/397/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/fiorix.wordpress.com/397/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=fiorix.wordpress.com&amp;blog=3184614&amp;post=397&amp;subd=fiorix&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://fiorix.wordpress.com/2010/01/20/yeah-tudo-assincrono/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
	
		<media:content url="" medium="image">
			<media:title type="html">alef</media:title>
		</media:content>
	</item>
		<item>
		<title>imac, kernel panic!</title>
		<link>http://fiorix.wordpress.com/2009/12/01/imac-kernel-panic/</link>
		<comments>http://fiorix.wordpress.com/2009/12/01/imac-kernel-panic/#comments</comments>
		<pubDate>Wed, 02 Dec 2009 02:04:35 +0000</pubDate>
		<dc:creator>alef</dc:creator>
				<category><![CDATA[misc]]></category>

		<guid isPermaLink="false">http://fiorix.wordpress.com/?p=387</guid>
		<description><![CDATA[Jogando Urban Terror, as vezes trava. A foto amarela e sem foco é cortesia do iPhone. cash:~ lame$ uname -a Darwin cash.local 10.2.0 Darwin Kernel Version 10.2.0: Tue Nov  3 10:37:10 PST 2009; root:xnu-1486.2.11~1/RELEASE_I386 i386 cash:~ lame$ sudo sysctl machdep.cpu machdep.cpu.vendor: GenuineIntel machdep.cpu.brand_string: Intel(R) Core(TM)2 Duo CPU     E8335  @ 2.66GHz machdep.cpu.features:  FPU VME [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=fiorix.wordpress.com&amp;blog=3184614&amp;post=387&amp;subd=fiorix&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Jogando <a href="http://www.urbanterror.net/">Urban Terror</a>, as vezes trava.</p>
<p style="text-align:left;"><a href="http://fiorix.files.wordpress.com/2009/12/img_00951.jpg"><img class="aligncenter size-full wp-image-392" title="mac kernel panic 1" src="http://fiorix.files.wordpress.com/2009/12/img_00951.jpg?w=590" alt=""   /></a><a href="http://fiorix.files.wordpress.com/2009/12/img_00941.jpg"><img class="aligncenter size-full wp-image-393" title="mac kernel panic 2" src="http://fiorix.files.wordpress.com/2009/12/img_00941.jpg?w=590" alt=""   /></a></p>
<p style="text-align:left;">A foto amarela e sem foco é cortesia do iPhone.</p>
<p style="text-align:left;">
<div id="_mcePaste">cash:~ lame$ uname -a</div>
<div id="_mcePaste">Darwin cash.local 10.2.0 Darwin Kernel Version 10.2.0: Tue Nov  3 10:37:10 PST 2009; root:xnu-1486.2.11~1/RELEASE_I386 i386</div>
<p>cash:~ lame$ sudo sysctl machdep.cpu<br />
machdep.cpu.vendor: GenuineIntel<br />
machdep.cpu.brand_string: Intel(R) Core(TM)2 Duo CPU     E8335  @ 2.66GHz<br />
machdep.cpu.features:  FPU VME DE PSE TSC MSR PAE MCE CX8 APIC SEP MTRR PGE MCA CMOV PAT PSE36 CLFSH DS ACPI MMX FXSR SSE SSE2 SS HTT TM SSE3 MON DSCPL VMX EST TM2 SSSE3 CX16 TPR PDCM SSE4.1</p>
<br />Publicado em misc  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/fiorix.wordpress.com/387/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/fiorix.wordpress.com/387/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/fiorix.wordpress.com/387/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/fiorix.wordpress.com/387/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/fiorix.wordpress.com/387/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/fiorix.wordpress.com/387/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/fiorix.wordpress.com/387/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/fiorix.wordpress.com/387/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/fiorix.wordpress.com/387/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/fiorix.wordpress.com/387/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/fiorix.wordpress.com/387/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/fiorix.wordpress.com/387/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/fiorix.wordpress.com/387/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/fiorix.wordpress.com/387/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=fiorix.wordpress.com&amp;blog=3184614&amp;post=387&amp;subd=fiorix&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://fiorix.wordpress.com/2009/12/01/imac-kernel-panic/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
	
		<media:content url="" medium="image">
			<media:title type="html">alef</media:title>
		</media:content>

		<media:content url="http://fiorix.files.wordpress.com/2009/12/img_00951.jpg" medium="image">
			<media:title type="html">mac kernel panic 1</media:title>
		</media:content>

		<media:content url="http://fiorix.files.wordpress.com/2009/12/img_00941.jpg" medium="image">
			<media:title type="html">mac kernel panic 2</media:title>
		</media:content>
	</item>
		<item>
		<title>sobre o chrome os</title>
		<link>http://fiorix.wordpress.com/2009/11/24/sobre-o-chrome-os/</link>
		<comments>http://fiorix.wordpress.com/2009/11/24/sobre-o-chrome-os/#comments</comments>
		<pubDate>Tue, 24 Nov 2009 17:23:44 +0000</pubDate>
		<dc:creator>alef</dc:creator>
				<category><![CDATA[rede]]></category>
		<category><![CDATA[sistema]]></category>
		<category><![CDATA[chrome]]></category>
		<category><![CDATA[chromium]]></category>
		<category><![CDATA[console]]></category>
		<category><![CDATA[halt]]></category>
		<category><![CDATA[login]]></category>
		<category><![CDATA[operating system]]></category>
		<category><![CDATA[reboot]]></category>
		<category><![CDATA[reiniciar]]></category>
		<category><![CDATA[senha]]></category>
		<category><![CDATA[sistema operacional]]></category>
		<category><![CDATA[terminal]]></category>
		<category><![CDATA[usuário]]></category>

		<guid isPermaLink="false">http://fiorix.wordpress.com/?p=382</guid>
		<description><![CDATA[Depois de todo o alvoroço sobre o Chrome OS, finalmente baixei e pude conferir. Usando este link, tive que criar uma conta e após confirmar o cadastro pelo email, pude baixar uma imagem de VMware e criei a máquina virtual usando o Fusion. O boot é realmente rápido, e logo aparece a primeira tela: login. [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=fiorix.wordpress.com&amp;blog=3184614&amp;post=382&amp;subd=fiorix&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><a href="http://fiorix.files.wordpress.com/2009/11/google-chrome-logo.jpg"><img class="alignleft size-thumbnail wp-image-383" title="google-chrome-logo" src="http://fiorix.files.wordpress.com/2009/11/google-chrome-logo.jpg?w=150&#038;h=107" alt="" width="150" height="107" /></a>Depois de todo o alvoroço sobre o <a href="http://googleblog.blogspot.com/2009/07/introducing-google-chrome-os.html">Chrome OS,</a> finalmente baixei e pude conferir. Usando <a href="http://gdgt.com/google/chrome-os/download/">este link</a>, tive que criar uma conta e após confirmar o cadastro pelo email, pude baixar uma imagem de <a href="http://www.vmware.com/">VMware</a> e criei a máquina virtual usando o <a href="http://www.vmware.com/products/fusion/">Fusion</a>.</p>
<p>O boot é realmente rápido, e logo aparece a primeira tela: login. Procurei um pouco e descobri que o usuário e senha é o mesmo do <a href="https://www.google.com/accounts/">Google Accounts</a>. Porém, não funcionou pra mim, e tudo que consegui foi um erro informando: <em>Network not connected and offline login fail</em>.</p>
<p>Usando a rede da máquina virtual como NAT ou Bridge, não fez com que o login funcionasse. Procurando mais um pouco, encontrei a solução: usuário <em>chronos</em>, sem senha.</p>
<p>Usei um pouco, procurei algo sobre configuração de resolução, e nada. Também, não há botão algum para desligar ou reiniciar o sistema operacional. Logo, procurando um pouco mais, descobri como abrir um terminal: Ctrl-Alt-T. É um linux, bem simples e pequeno, com a interface baseada em GTK, e o <a href="http://code.google.com/chromium/">Chromium</a>.</p>
<p>Nada especial, mas essa simplicidade é bem interessante.</p>
<p><a href="http://fiorix.files.wordpress.com/2009/11/screen-shot-2009-11-24-at-3-14-07-pm.png"><img class="aligncenter size-medium wp-image-384" title="ChronOS main window" src="http://fiorix.files.wordpress.com/2009/11/screen-shot-2009-11-24-at-3-14-07-pm.png?w=300&#038;h=171" alt="" width="300" height="171" /></a></p>
<p>Para virar root, pode-se usar o sudo, e a senha é <em>chronos</em>. Não tem muito o que fazer no terminal, apenas um <em>sudo reboot</em> ou <em>sudo halt</em>.</p>
<p>Curti.</p>
<p>Pra quem ainda não baixou o <a href="http://www.chromium.org/">Chromium</a>, aqui tem todos <em>snapshots</em> para os sistemas operacionais suportados: <a href="http://build.chromium.org/buildbot/snapshots/">http://build.chromium.org/buildbot/snapshots/</a></p>
<br />Publicado em rede, sistema Tagged: chrome, chromium, console, halt, login, operating system, reboot, reiniciar, senha, sistema operacional, terminal, usuário <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/fiorix.wordpress.com/382/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/fiorix.wordpress.com/382/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/fiorix.wordpress.com/382/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/fiorix.wordpress.com/382/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/fiorix.wordpress.com/382/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/fiorix.wordpress.com/382/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/fiorix.wordpress.com/382/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/fiorix.wordpress.com/382/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/fiorix.wordpress.com/382/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/fiorix.wordpress.com/382/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/fiorix.wordpress.com/382/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/fiorix.wordpress.com/382/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/fiorix.wordpress.com/382/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/fiorix.wordpress.com/382/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=fiorix.wordpress.com&amp;blog=3184614&amp;post=382&amp;subd=fiorix&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://fiorix.wordpress.com/2009/11/24/sobre-o-chrome-os/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="" medium="image">
			<media:title type="html">alef</media:title>
		</media:content>

		<media:content url="http://fiorix.files.wordpress.com/2009/11/google-chrome-logo.jpg?w=150" medium="image">
			<media:title type="html">google-chrome-logo</media:title>
		</media:content>

		<media:content url="http://fiorix.files.wordpress.com/2009/11/screen-shot-2009-11-24-at-3-14-07-pm.png?w=300" medium="image">
			<media:title type="html">ChronOS main window</media:title>
		</media:content>
	</item>
		<item>
		<title>mongodb e twisted</title>
		<link>http://fiorix.wordpress.com/2009/09/26/mongodb-e-twisted/</link>
		<comments>http://fiorix.wordpress.com/2009/09/26/mongodb-e-twisted/#comments</comments>
		<pubDate>Sat, 26 Sep 2009 07:44:44 +0000</pubDate>
		<dc:creator>alef</dc:creator>
				<category><![CDATA[programação]]></category>
		<category><![CDATA[python]]></category>
		<category><![CDATA[sql]]></category>
		<category><![CDATA[mongo]]></category>
		<category><![CDATA[mongodb]]></category>
		<category><![CDATA[pymonga]]></category>
		<category><![CDATA[pymongo]]></category>
		<category><![CDATA[twisted]]></category>

		<guid isPermaLink="false">http://fiorix.wordpress.com/?p=377</guid>
		<description><![CDATA[Há algum tempo venho fazendo testes com o MongoDB pra casos específicos onde um RDBM tradicional como MySQL ou PostgreSQL não se encaixa muito bem. Um dos casos onde um banco de dados baseado em objetos como o MongoDB se encaixa perfeitamente, é em um dos meus sistemas comerciais de telefonia, o Nuswit. Lá, o [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=fiorix.wordpress.com&amp;blog=3184614&amp;post=377&amp;subd=fiorix&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><img class="alignleft" style="border-right:20px solid white;" title="Mongo Database" src="http://media.mongodb.org/logo-mongoDB.png" alt="" width="152" height="63" />Há algum tempo venho fazendo testes com o <a href="http://www.mongodb.org/">MongoDB</a> pra casos específicos onde um <a href="http://en.wikipedia.org/wiki/Relational_database_management_system">RDBM</a> tradicional como <a href="http://www.mysql.com/">MySQL</a> ou <a href="http://www.postgresql.org/">PostgreSQL</a> não se encaixa muito bem.</p>
<p>Um dos casos onde um banco de dados baseado em objetos como o MongoDB se encaixa perfeitamente, é em um dos meus sistemas comerciais de telefonia, o <a href="http://nuswit.com/">Nuswit</a>.</p>
<p>Lá, o usuário pode criar uma campanha de tele mensagem e colocar variáveis, que serão usadas para ligar para as pessoas e falar algumas coisas dinâmicas, <a href="http://www.loquendo.com/">sintetizando o texto em voz</a>. Hoje, cada vez que o usuário cria uma campanha, pode importar uma <a href="http://en.wikipedia.org/wiki/Microsoft_Excel_file_format#File_formats">planilha</a> ou arquivo <a href="http://en.wikipedia.org/wiki/Comma-separated_values">CSV</a>, e então o sistema uma cria nova tabela no <a href="http://www.sqlite.org/">Sqlite</a> com os campos que o usuário definiu na campanha, de acordo com essas tais variáveis.</p>
<p>Por isso, não é possível ter uma tabela estática, muito menos fazer relacionamentos pra usar a tabela no estilo chave=valor, pois essa mesma tabela é usada pros relatórios que o usuário baixa após o término da campanha.</p>
<p>Nesse caso, o MongoDB se encaixa perfeitamente. É muito mais simples criar uma <a href="http://www.mongodb.org/display/DOCS/Collections">coleção de dados</a> com o mesmo nome da campanha, e importar <a href="http://www.mongodb.org/display/DOCS/BSON">documentos tipo JSON</a> (nome=x, telefone=y, cpf=z) do que criar uma nova tabela com esses campos.</p>
<p>Além do mais, a <a href="http://github.com/mongodb/mongo-python-driver/blob/master/examples/simple_demo.py">API do pymongo</a> é muito mais decente do que qualquer coisa parecida com <a href="http://en.wikipedia.org/wiki/SQL">SQL</a>, pois os <em>databases</em> e <em>collections </em>são objetos do Python.</p>
<p>O único problema com o <a href="http://github.com/mongodb/mongo-python-driver">pymongo</a> é que ele foi feito pra controlar e manter um <em>pool</em> de conexões com o banco, totalmente síncrono. Pra usar o pymongo em servidores como os que tenho feito ultimamente, assíncronos, baseados em <a href="http://twistedmatrix.com/">Twisted</a>, é necessário mandar todas as chamadas do banco pra um thread (usando <a href="http://python.net/crew/mwh/apidocs/twisted.internet.base.ReactorBase.html#callInThread">callInThread</a> ou <a href="http://twistedmatrix.com/documents/8.1.0/api/twisted.internet.threads.deferToThread.html">deferToThread</a>).</p>
<p>Pra solucionar esse problema, passei a frequentar o <a href="http://freenode.net/">#mongodb na freenode</a>, e em contato com o <a href="http://github.com/mdirolf">autor do pymongo</a>, acabei criando uma versão assíncrona do driver, baseado em Twisted, que mantém o mesmo estilo da API original.</p>
<p>Agora, a integração entre Twisted e MongoDB está muito mais decente, usando <span style="font-size:x-large;"><a href="http://github.com/fiorix/mongo-async-python-driver">pymonga</a></span>.</p>
<br />Publicado em programação, python, sql Tagged: mongo, mongodb, pymonga, pymongo, python, twisted <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/fiorix.wordpress.com/377/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/fiorix.wordpress.com/377/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/fiorix.wordpress.com/377/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/fiorix.wordpress.com/377/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/fiorix.wordpress.com/377/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/fiorix.wordpress.com/377/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/fiorix.wordpress.com/377/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/fiorix.wordpress.com/377/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/fiorix.wordpress.com/377/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/fiorix.wordpress.com/377/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/fiorix.wordpress.com/377/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/fiorix.wordpress.com/377/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/fiorix.wordpress.com/377/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/fiorix.wordpress.com/377/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=fiorix.wordpress.com&amp;blog=3184614&amp;post=377&amp;subd=fiorix&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://fiorix.wordpress.com/2009/09/26/mongodb-e-twisted/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="" medium="image">
			<media:title type="html">alef</media:title>
		</media:content>

		<media:content url="http://media.mongodb.org/logo-mongoDB.png" medium="image">
			<media:title type="html">Mongo Database</media:title>
		</media:content>
	</item>
	</channel>
</rss>
