<?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>Mosaico Livre &#187; python</title>
	<atom:link href="http://claudiotorcato.wordpress.com/category/python/feed/" rel="self" type="application/rss+xml" />
	<link>http://claudiotorcato.wordpress.com</link>
	<description>Blog guiado pelo meu temperamento, meus hobbies e o que me atrai no momento</description>
	<lastBuildDate>Tue, 29 Sep 2009 19:03:40 +0000</lastBuildDate>
	<generator>http://wordpress.com/</generator>
	<language>pt-br</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<cloud domain='claudiotorcato.wordpress.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://www.gravatar.com/blavatar/8742bd922d9e420a05f54a97cf68aaf4?s=96&#038;d=http://s.wordpress.com/i/buttonw-com.png</url>
		<title>Mosaico Livre &#187; python</title>
		<link>http://claudiotorcato.wordpress.com</link>
	</image>
			<item>
		<title>DiceDnd 1.1</title>
		<link>http://claudiotorcato.wordpress.com/2009/09/29/dicednd-1-1/</link>
		<comments>http://claudiotorcato.wordpress.com/2009/09/29/dicednd-1-1/#comments</comments>
		<pubDate>Tue, 29 Sep 2009 19:02:05 +0000</pubDate>
		<dc:creator>claudiotorcato</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[desenvolvimento]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[mobile]]></category>
		<category><![CDATA[open source]]></category>
		<category><![CDATA[python]]></category>

		<guid isPermaLink="false">http://claudiotorcato.wordpress.com/?p=324</guid>
		<description><![CDATA[Depois de um final de semana complicado e acamado, voltei a escrever na segunda-feira os melhoramentos do DiceDnd. Pretendia melhorar o visual, habilitar o modo fullscreen e ainda fazer um pacote debian para distribuir o programa. Devido às dificuldades encontradas, fiquei somente no melhoramento visual. Pois bem, tirei umas fotos do aplicativo funcionando (não descobri [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=claudiotorcato.wordpress.com&blog=257944&post=324&subd=claudiotorcato&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>Depois de um final de semana complicado e acamado, voltei a escrever na segunda-feira os melhoramentos do DiceDnd. Pretendia melhorar o visual, habilitar o modo <em>fullscreen</em> e ainda fazer um pacote debian para distribuir o programa. Devido às dificuldades encontradas, fiquei somente no melhoramento visual. Pois bem, tirei umas fotos do aplicativo funcionando (não descobri uma função <em>print screen</em> no N800) e ainda estou disponibilizando uma nova versão abaixo.</p>
<p>Vou ficar devendo o <em>fullscreen</em> e o pacote.</p>
<div id="attachment_325" class="wp-caption aligncenter" style="width: 310px"><img class="size-medium wp-image-325" title="DiceDnd no Nokia N800" src="http://claudiotorcato.files.wordpress.com/2009/09/29092009_001.jpg?w=300&#038;h=225" alt="DiceDnd no Nokia N800" width="300" height="225" /><p class="wp-caption-text">DiceDnd no Nokia N800</p></div>
<div id="attachment_326" class="wp-caption aligncenter" style="width: 310px"><img class="size-medium wp-image-326" title="DiceDnD com o resultado da jogada de dados" src="http://claudiotorcato.files.wordpress.com/2009/09/29092009_002.jpg?w=300&#038;h=225" alt="DiceDnD com o resultado da jogada de dados" width="300" height="225" /><p class="wp-caption-text">DiceDnD com o resultado da jogada de dados</p></div>
<p>fonte do dicednd.py (atualizado)</p>
<pre>
#!/usr/bin/python2.5

import osso
import gtk
import hildon

def labela(texto):
    fonte = '<span>%s</span>'
    etiqueta = gtk.Label(fonte % texto)
    etiqueta.set_use_markup(True)
    return etiqueta

def string_jogada(vezes, dado, soma):
    if soma &gt; 0:
        sinal = '+'
    elif soma == 0:
        sinal = ''
    else:
        sinal = '-'
    return '%dd%d%s%s' % (vezes, dado, sinal, abs(soma) or '')

class DiceDnD(hildon.Program):
    def __init__(self):
        self.dado_atual = 0
        self.vezes = 0
        self.soma = 0
        hildon.Program.__init__(self)
        self.window = hildon.Window()
        self.window.set_title('DiceDnd')
        self.window.set_border_width(40)
        self.window.connect("destroy", self.quit)
        self.add_window(self.window)

        tabela = gtk.Table(5,4,False)
        self.window.add(tabela)        

        self.dado4 = gtk.Button()
        self.dado4.add(labela('4'))
        self.dado6 = gtk.Button()
        self.dado6.add(labela('6'))
        self.dado8 = gtk.Button()
        self.dado8.add(labela('8'))
        self.dado10 = gtk.Button()
        self.dado10.add(labela('10'))
        self.dado12 = gtk.Button()
        self.dado12.add(labela('12'))
        self.dado20 = gtk.Button()
        self.dado20.add(labela('20'))
        self.botaoMais = gtk.Button()
        self.botaoMais.add(labela('+'))
        self.botaoMenos = gtk.Button()
        self.botaoMenos.add(labela('-'))
        self.botaoJogar = gtk.Button()
        self.botaoJogar.add(labela('Jogar'))
        self.frame = gtk.Frame()
        self.montagem = gtk.Label('Jogada')
        self.frame.add(self.montagem)

        tabela.attach(self.dado4,0,1,0,1)
        tabela.attach(self.dado6,1,2,0,1)
        tabela.attach(self.dado8,2,3,0,1)
        tabela.attach(self.dado10,0,1,1,2)
        tabela.attach(self.dado12,1,2,1,2)
        tabela.attach(self.dado20,2,3,1,2)
        tabela.attach(self.botaoMais,0,1,2,3)
        tabela.attach(self.botaoJogar,1,2,2,3)
        tabela.attach(self.botaoMenos,2,3,2,3)
        tabela.attach(self.frame,0, 3, 3, 4)

        self.dado4.connect('clicked',self.preparar,4)
        self.dado6.connect('clicked',self.preparar,6)
        self.dado8.connect('clicked',self.preparar,8)
        self.dado10.connect('clicked',self.preparar,10)
        self.dado12.connect('clicked',self.preparar,12)
        self.dado20.connect('clicked',self.preparar,20)
        self.botaoMais.connect('clicked',self.incrementar,1)
        self.botaoMenos.connect('clicked',self.incrementar,-1)
        self.botaoJogar.connect('clicked',self.mostrar)

        self.window.show_all()

    def mostrar(self, button):
        if self.dado_atual == 0:
            return
        import random
        total = 0
        for i in range(self.vezes):
            total += random.randint(1,self.dado_atual)
        total = total + self.soma
        jogada = string_jogada(self.vezes, self.dado_atual, self.soma)
        self.show_message('%s' % total)

    def preparar(self, button,valor):
        if valor  self.dado_atual:
            self.dado_atual = valor
            self.vezes = 1
            self.soma = 0
        else:
            self.vezes += 1
        self.montagem.set_text(string_jogada(self.vezes, self.dado_atual, self.soma))

    def incrementar(self, button,valor):
        self.soma = self.soma + valor
        self.montagem.set_text(string_jogada(self.vezes, self.dado_atual, self.soma))

    def show_message(self, message):
        dlg = hildon.Note('information', (self.window, message))
        dlg.run()
        dlg.destroy()
        #pango_markup = '<b>%s</b>\n%s' % ('DiceDnD', message)
        #hildon.hildon_banner_show_information_with_markup(gtk.Label(''), None, pango_markup)

    def quit(self, evt):
        gtk.main_quit()

    def run(self):
        gtk.main()

def main():
    prog = DiceDnD()
    prog.run()

if __name__ == "__main__":
    main()
</pre>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/claudiotorcato.wordpress.com/324/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/claudiotorcato.wordpress.com/324/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/claudiotorcato.wordpress.com/324/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/claudiotorcato.wordpress.com/324/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/claudiotorcato.wordpress.com/324/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/claudiotorcato.wordpress.com/324/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/claudiotorcato.wordpress.com/324/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/claudiotorcato.wordpress.com/324/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/claudiotorcato.wordpress.com/324/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/claudiotorcato.wordpress.com/324/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=claudiotorcato.wordpress.com&blog=257944&post=324&subd=claudiotorcato&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://claudiotorcato.wordpress.com/2009/09/29/dicednd-1-1/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/971d46498eb40a5c3ff29fa11d316ec4?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">claudiotorcato</media:title>
		</media:content>

		<media:content url="http://claudiotorcato.files.wordpress.com/2009/09/29092009_001.jpg?w=300" medium="image">
			<media:title type="html">DiceDnd no Nokia N800</media:title>
		</media:content>

		<media:content url="http://claudiotorcato.files.wordpress.com/2009/09/29092009_002.jpg?w=300" medium="image">
			<media:title type="html">DiceDnD com o resultado da jogada de dados</media:title>
		</media:content>
	</item>
		<item>
		<title>DiceDnd</title>
		<link>http://claudiotorcato.wordpress.com/2009/09/26/dicednd/</link>
		<comments>http://claudiotorcato.wordpress.com/2009/09/26/dicednd/#comments</comments>
		<pubDate>Sat, 26 Sep 2009 04:08:29 +0000</pubDate>
		<dc:creator>claudiotorcato</dc:creator>
				<category><![CDATA[desenvolvimento]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[mobile]]></category>
		<category><![CDATA[python]]></category>

		<guid isPermaLink="false">http://claudiotorcato.wordpress.com/?p=316</guid>
		<description><![CDATA[A minha idéia exploratória de criar um aplicativo para gerar jogada de dados no meu N800  ocupou umas horas da noite de sexta e início de madrugada do sábado.
O objetivo da aplicação é bem simples. Eu vou voltar a mestrar campanhas de RPG. Comprei o recente D&#38;D 4ª Edição em português mais uma aventura para [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=claudiotorcato.wordpress.com&blog=257944&post=316&subd=claudiotorcato&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><div class="wp-caption alignleft" style="width: 210px"><a href="http://upload.wikimedia.org/wikipedia/commons/b/bb/PICT0247.JPG"><img title="Conjunto de Dados" src="http://upload.wikimedia.org/wikipedia/commons/b/bb/PICT0247.JPG" alt="Os dados usados no RPG D&amp;D" width="200" height="150" /></a><p class="wp-caption-text">Os dados usados no RPG D&amp;D</p></div>
<p>A minha idéia exploratória de criar um aplicativo para gerar jogada de dados no meu N800  ocupou umas horas da noite de sexta e início de madrugada do sábado.</p>
<p>O objetivo da aplicação é bem simples. Eu vou voltar a mestrar campanhas de RPG. Comprei o recente D&amp;D 4ª Edição em português mais uma aventura para personagens iniciantes. Não tenho todos os tipos de dados necessários. São 6 tipos, por quantidade de faces: 4, 6, 8, 10, 12 e 20. Assim, queria simular a parada de dados pelo meu N800, um internet tablet da Nokia.</p>
<p>Uma das principais linguagens para programar nesses dispositivos é Python. Apesar de não conhecer muito a biblioteca Gtk (biblioteca gráfica), conheço a linguagem razoavelmente bem, por isso acreditava que conseguiria implementar o aplicativo no final de semana.</p>
<p>A primeira providência foi procurar documentação. A idéia do projeto já estava toda na minha cabeça mas não sabia por onde começar. Depois de um tempo, encontrei algumas coisas. Foram importantes os seguintes documentos:</p>
<ul>
<li>http://www.pygtk.org/pygtktutorial/</li>
<li>http://pymaemo.garage.maemo.org/documentation.html</li>
<li>http://gpodder.org/ (seu código-fonte)</li>
</ul>
<p>A versão do sistema operacional é o OS 2008 (Diablo). O Python 2.5 já estava instalado. De fato, não precisei instalar outra coisa. Algumas documentações diziam que eu tinha de instalar o interpretador da linguagem. Talvez eu tenha feito isso algum tempo atrás.</p>
<p>Outra coisa que ajudou bastante, para ir escrevendo e testando rapidamente, foi acessar via SSH o dispositivo pelo Nautilus (num notebook com Ubuntu). Criei o arquivo da aplicação no cartão do N800 e depois abrir com o editor TextFlow. Daí era só escrever, salvar e ir no PDA executar a aplicação.</p>
<p>O cliente e servidor do SSH não vem instalado por default no N800. Nem o terminal. Por ele é que eu rodava o Python. Pelo notebook, eu usava também um terminal para acessar o N800 via ssh. Era útil para testar algumas coisas no interpretador interativo do Python.</p>
<p>As próximas tarefas envolvem melhorar o aspecto visual da aplicação e preparar um instalador para ficar mais fácil de dispobilizar. O código-fonte encontra-se abaixo:</p>
<pre>#!/usr/bin/python2.5

import osso
import gtk
import hildon

def string_jogada(vezes, dado, soma):
    if soma &gt; 0:
        sinal = '+'
    elif soma == 0:
        sinal = ''
    else:
        sinal = '-'
    return '%dd%d%s%s' % (vezes, dado, sinal, abs(soma) or '')

class DiceDnD(hildon.Program):
    def __init__(self):
        self.dado_atual = 0
        self.vezes = 0
        self.soma = 0
        hildon.Program.__init__(self)
        self.window = hildon.Window()
        self.window.set_title('DiceDnd')
        self.window.connect("destroy", self.quit)
        self.add_window(self.window)

        tabela = gtk.Table(5,4,True)
        self.window.add(tabela)

        self.dado4 = gtk.Button('4')
        self.dado6 = gtk.Button('6')
        self.dado8 = gtk.Button('8')
        self.dado10 = gtk.Button('10')
        self.dado12 = gtk.Button('12')
        self.dado20 = gtk.Button('20')
        self.botaoMais = gtk.Button('+')
        self.botaoMenos = gtk.Button('-')
        self.botaoJogar = gtk.Button('Jogar')
        self.frame = gtk.Frame()
        self.montagem = gtk.Label('Jogada')
        self.frame.add(self.montagem)

        tabela.attach(self.dado4,0,1,0,1)
        tabela.attach(self.dado6,1,2,0,1)
        tabela.attach(self.dado8,2,3,0,1)
        tabela.attach(self.dado10,0,1,1,2)
        tabela.attach(self.dado12,1,2,1,2)
        tabela.attach(self.dado20,2,3,1,2)
        tabela.attach(self.botaoMais,0,1,2,3)
        tabela.attach(self.botaoJogar,1,2,2,3)
        tabela.attach(self.botaoMenos,2,3,2,3)
        tabela.attach(self.frame,0, 3, 3, 4)

        self.dado4.connect('clicked',self.preparar,4)
        self.dado6.connect('clicked',self.preparar,6)
        self.dado8.connect('clicked',self.preparar,8)
        self.dado10.connect('clicked',self.preparar,10)
        self.dado12.connect('clicked',self.preparar,12)
        self.dado20.connect('clicked',self.preparar,20)
        self.botaoMais.connect('clicked',self.incrementar,1)
        self.botaoMenos.connect('clicked',self.incrementar,-1)
        self.botaoJogar.connect('clicked',self.mostrar)

        self.window.show_all()

    def mostrar(self, button):
        if self.dado_atual == 0:
            return
        import random
        total = 0
        for i in range(self.vezes):
            total += random.randint(1,self.dado_atual)
        total = total + self.soma
        jogada = string_jogada(self.vezes, self.dado_atual, self.soma)
        self.show_message('%s' % total)

    def preparar(self, button,valor):
        if valor  self.dado_atual:
            self.dado_atual = valor
            self.vezes = 1
            self.soma = 0
        else:
            self.vezes += 1
        self.montagem.set_text(string_jogada(self.vezes, self.dado_atual, self.soma))

    def incrementar(self, button,valor):
        self.soma = self.soma + valor
        self.montagem.set_text(string_jogada(self.vezes, self.dado_atual, self.soma))

    def show_message(self, message):
        dlg = hildon.Note('information', (self.window, message))
        dlg.run()
        dlg.destroy()
        #pango_markup = '<strong>%s</strong>\n%s' % ('DiceDnD', message)
        #hildon.hildon_banner_show_information_with_markup(gtk.Label(''), None, pango_markup)

    def quit(self, evt):
        gtk.main_quit()

    def run(self):
        gtk.main()

def main():
    prog = DiceDnD()
    prog.run()

if __name__ == "__main__":
    main()</pre>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/claudiotorcato.wordpress.com/316/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/claudiotorcato.wordpress.com/316/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/claudiotorcato.wordpress.com/316/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/claudiotorcato.wordpress.com/316/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/claudiotorcato.wordpress.com/316/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/claudiotorcato.wordpress.com/316/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/claudiotorcato.wordpress.com/316/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/claudiotorcato.wordpress.com/316/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/claudiotorcato.wordpress.com/316/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/claudiotorcato.wordpress.com/316/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=claudiotorcato.wordpress.com&blog=257944&post=316&subd=claudiotorcato&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://claudiotorcato.wordpress.com/2009/09/26/dicednd/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/971d46498eb40a5c3ff29fa11d316ec4?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">claudiotorcato</media:title>
		</media:content>

		<media:content url="http://upload.wikimedia.org/wikipedia/commons/b/bb/PICT0247.JPG" medium="image">
			<media:title type="html">Conjunto de Dados</media:title>
		</media:content>
	</item>
		<item>
		<title>Idéia exploratória</title>
		<link>http://claudiotorcato.wordpress.com/2009/09/24/ideia-exploratoria/</link>
		<comments>http://claudiotorcato.wordpress.com/2009/09/24/ideia-exploratoria/#comments</comments>
		<pubDate>Fri, 25 Sep 2009 00:53:02 +0000</pubDate>
		<dc:creator>claudiotorcato</dc:creator>
				<category><![CDATA[desenvolvimento]]></category>
		<category><![CDATA[mobile]]></category>
		<category><![CDATA[python]]></category>

		<guid isPermaLink="false">http://claudiotorcato.wordpress.com/?p=314</guid>
		<description><![CDATA[Uma boa idéia me surgiu agora, útil para o momento e ótima pedida para iniciar a exploração no mundo da programação de dispositivos Nokia que usam o sistema operacional Maemo: um rolador de dados.
Bobo, né? Inclusive, acho que já existe um. Mas é diferente do que eu estou pensando.
Gostaria que a tela do aplicativo mostrasse [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=claudiotorcato.wordpress.com&blog=257944&post=314&subd=claudiotorcato&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>Uma boa idéia me surgiu agora, útil para o momento e ótima pedida para iniciar a exploração no mundo da programação de dispositivos Nokia que usam o sistema operacional Maemo: um rolador de dados.</p>
<p>Bobo, né? Inclusive, acho que já existe um. Mas é diferente do que eu estou pensando.</p>
<p>Gostaria que a tela do aplicativo mostrasse um quadrado com todos os tipos de dados usados no RPG D&amp;D ou seja, os de 4, 6, 8, 10, 12 e 20 faces. E mais três botões: para o sinal de mais, o de menos e o de igual.</p>
<p>Ao apertar um dos dados ele saberá que quero jogar com ele. Ele esperará eu apertar no sinal de igual para a operação randômica executar. Os sinais servem para aumentar ou diminuir o que resultar do dado. Cada vez que eu apertar num deles incrementa-se ou descrementa-se em um.</p>
<p>Logicamente vou escrever esse aplicativo em Python. Vamos ver se tenho a sorte e produtividade de terminá-lo ainda neste final de semana. Quando concluir, posto por aqui.</p>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/claudiotorcato.wordpress.com/314/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/claudiotorcato.wordpress.com/314/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/claudiotorcato.wordpress.com/314/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/claudiotorcato.wordpress.com/314/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/claudiotorcato.wordpress.com/314/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/claudiotorcato.wordpress.com/314/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/claudiotorcato.wordpress.com/314/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/claudiotorcato.wordpress.com/314/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/claudiotorcato.wordpress.com/314/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/claudiotorcato.wordpress.com/314/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=claudiotorcato.wordpress.com&blog=257944&post=314&subd=claudiotorcato&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://claudiotorcato.wordpress.com/2009/09/24/ideia-exploratoria/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/971d46498eb40a5c3ff29fa11d316ec4?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">claudiotorcato</media:title>
		</media:content>
	</item>
		<item>
		<title>Python for Unix and Linux System Administration</title>
		<link>http://claudiotorcato.wordpress.com/2008/12/02/python-for-unix-and-linux-system-administration/</link>
		<comments>http://claudiotorcato.wordpress.com/2008/12/02/python-for-unix-and-linux-system-administration/#comments</comments>
		<pubDate>Tue, 02 Dec 2008 03:43:15 +0000</pubDate>
		<dc:creator>claudiotorcato</dc:creator>
				<category><![CDATA[linguagens]]></category>
		<category><![CDATA[open source]]></category>
		<category><![CDATA[python]]></category>

		<guid isPermaLink="false">http://claudiotorcato.wordpress.com/2008/12/02/python-for-unix-and-linux-system-administration/</guid>
		<description><![CDATA[Estou lendo o livro Python for Unix and Linux System Administration e estou gostando muito, por isso estou aqui escrevendo sobre ele.
Este livro da editora O&#8217;Reilly, escrito por Noah Gift e Jeremy M. Jones é uma coleção de problemas-solução em Python. Nele você encontra de quase tudo. Seu lançamento recente (Agosto de 2008) contempla as [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=claudiotorcato.wordpress.com&blog=257944&post=271&subd=claudiotorcato&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>Estou lendo o livro <b>Python for Unix and Linux System Administration</b> e estou gostando muito, por isso estou aqui escrevendo sobre ele.</p>
<p>Este livro da editora O&#8217;Reilly, escrito por Noah Gift e Jeremy M. Jones é uma coleção de problemas-solução em Python. Nele você encontra de quase tudo. Seu lançamento recente (Agosto de 2008) contempla as novidades do Python 2.5, apesar de já estamos com Python 2.6 pronto para instalarmos em nossas máquinas.</p>
<p>Ele está voltado para administradores de sistemas que precisam resolver problemas recorrentes e repetitivos e necessitam de uma ferramente ágil e completa. Python pareceu ser a escolha adequada, apesar dos autores confessarem que a escolha ter sido bem subjetiva.</p>
<p>Ao ler suas páginas fica claro que&nbsp; o material contido nele serve para todos os programadores. É uma forma maravilhosa de conhecer bibliotecas e funções nunca antes utilizadas por nós, ou descobrirmos novas formas de fazer as coisas com as que já conhecíamos (eu descobri).</p>
<p>Logicamente, tem coisas que são quase exclusivamente para administradores de redes e nos deleitamos como tarefas complexas podem ser resolvidas em poucas linhas de código. Sinaliza também o fato de que a vida de um administrador de redes já é dura e não precisa ficar pior. Desenvolver suas próprias ferramentas em Python é algo prazeroso.</p>
<p>Há um maravilhoso capítulo chamado <b>Package Management</b> explanando coisas como Setuptools e os Python Eggs, os ovos de cobra, os conhecidos arquivos de distribuição. Só por este capítulo eu compraria o livro.</p>
<p>E tem mais. Sobre persistência de dados, temos o simples <b>shelve</b>, o <b>ZODB</b>, <b>SQLite</b>, <b>Storm ORM</b> e <b>SQLAlchemy</b>. É uma aula de atualidades do mundo Python.</p>
<p>Há coisas que já li a respeito mas não me aprofundei, como, por exemplo, <b>Buildout</b>, <b>Twisted</b>, <b>Scapy</b>, entre outros.</p>
<p>Vou continuar lendo. Leitura recomendada.</p>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/claudiotorcato.wordpress.com/271/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/claudiotorcato.wordpress.com/271/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/claudiotorcato.wordpress.com/271/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/claudiotorcato.wordpress.com/271/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/claudiotorcato.wordpress.com/271/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/claudiotorcato.wordpress.com/271/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/claudiotorcato.wordpress.com/271/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/claudiotorcato.wordpress.com/271/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/claudiotorcato.wordpress.com/271/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/claudiotorcato.wordpress.com/271/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=claudiotorcato.wordpress.com&blog=257944&post=271&subd=claudiotorcato&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://claudiotorcato.wordpress.com/2008/12/02/python-for-unix-and-linux-system-administration/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/971d46498eb40a5c3ff29fa11d316ec4?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">claudiotorcato</media:title>
		</media:content>
	</item>
		<item>
		<title>Comunidade de Jogadores e Desportistas</title>
		<link>http://claudiotorcato.wordpress.com/2008/09/05/comunidade-de-jogadores-e-desportistas/</link>
		<comments>http://claudiotorcato.wordpress.com/2008/09/05/comunidade-de-jogadores-e-desportistas/#comments</comments>
		<pubDate>Fri, 05 Sep 2008 14:04:54 +0000</pubDate>
		<dc:creator>claudiotorcato</dc:creator>
				<category><![CDATA[desenvolvimento]]></category>
		<category><![CDATA[python]]></category>

		<guid isPermaLink="false">http://claudiotorcato.wordpress.com/2008/09/05/comunidade-de-jogadores-e-desportistas/</guid>
		<description><![CDATA[O Mosaico Livre é essencialmente um blog sobre programação, engenharia de software, software livre. Ultimamente venho negligenciando esta essência. É como se tivesse perdido o rumo.
O barco, no entanto, deve seguir seu rumo correto.
Já há algum tempo, por curiosidade, li alguns tutoriais e assistir alguns vídeos sobre o Google App Engine, uma plataforma para desenvolver [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=claudiotorcato.wordpress.com&blog=257944&post=261&subd=claudiotorcato&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>O <b>Mosaico Livre</b> é essencialmente um blog sobre programação, engenharia de software, software livre. Ultimamente venho negligenciando esta essência. É como se tivesse perdido o rumo.</p>
<p>O barco, no entanto, deve seguir seu rumo correto.</p>
<p>Já há algum tempo, por curiosidade, li alguns tutoriais e assistir alguns vídeos sobre o <a href="http://code.google.com/appengine/">Google App Engine</a>, uma plataforma para desenvolver aplicações web que podem usar a infraestrutura do Google. Ou seja, podemos hospedar nossas aplicações nos servidores do Google.</p>
<p>O Google App Engine é implementado em <a href="http://www.python.org">Python</a>. Um fator importante para que eu rapidamente pudesse desenvolver alguma coisa. Logo será possível usar outras linguagens. Até lá o interesse em aprender Python continuará.</p>
<p>E como Python cresceu desde 1999, o ano em que comecei a programar nesta linguagem! Ela já está entre as linguagens modernas mais comentadas. A falta de uma empresa forte que a utilizasse ou pelo menos incentivasse seu uso era um dos motivos para as pessoas não quererem conhecê-la. O Google mudou isso.</p>
<p>Atualmente desenvolvo uma aplicação para Google App Engine. Na verdade, é um portal para concentrar informações sobre esportes e jogos em geral, seja amador ou profissional. Um local onde o pessoal possa conhecer outros praticantes. Por exemplo, sinto necessidade de conhecer pessoas na minha cidade que joguem Go, um jogo de tabuleiro difundido no oriente, mas pouco por aqui. No site, posso informar os jogos que pratico. Quem tiver interessado em jogar comigo, pode enviar um e-mail. Depois, podemos informar no site o local onde jogaremos para que outras pessoas possam comparecer para apreciar a partida.</p>
<p>É raro encontrar algum portal da imprensa que dedique um espaço a esportes com poucos praticantes. A minha idéia é preencher esta lacuna.</p>
<p>Assim que eu tiver terminado, passo o endereço para vocês.</p>
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/claudiotorcato.wordpress.com/261/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/claudiotorcato.wordpress.com/261/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/claudiotorcato.wordpress.com/261/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/claudiotorcato.wordpress.com/261/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/claudiotorcato.wordpress.com/261/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/claudiotorcato.wordpress.com/261/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/claudiotorcato.wordpress.com/261/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/claudiotorcato.wordpress.com/261/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/claudiotorcato.wordpress.com/261/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/claudiotorcato.wordpress.com/261/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/claudiotorcato.wordpress.com/261/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/claudiotorcato.wordpress.com/261/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=claudiotorcato.wordpress.com&blog=257944&post=261&subd=claudiotorcato&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://claudiotorcato.wordpress.com/2008/09/05/comunidade-de-jogadores-e-desportistas/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/971d46498eb40a5c3ff29fa11d316ec4?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">claudiotorcato</media:title>
		</media:content>
	</item>
		<item>
		<title>TurboGears 2: solução de problemas durante a instalação</title>
		<link>http://claudiotorcato.wordpress.com/2008/05/30/turbogears-2-solucao-de-problemas-durante-a-instalacao/</link>
		<comments>http://claudiotorcato.wordpress.com/2008/05/30/turbogears-2-solucao-de-problemas-durante-a-instalacao/#comments</comments>
		<pubDate>Fri, 30 May 2008 21:06:26 +0000</pubDate>
		<dc:creator>claudiotorcato</dc:creator>
				<category><![CDATA[linux]]></category>
		<category><![CDATA[open source]]></category>
		<category><![CDATA[python]]></category>
		<category><![CDATA[turbogears]]></category>

		<guid isPermaLink="false">http://claudiotorcato.wordpress.com/?p=221</guid>
		<description><![CDATA[Pediram-me para documentar a instalação do TurboGears 2. Vocês podem encontrar os passos para a instalação aqui.
O restante deste post é sobre como solucionar certos problemas. Então, se você seguiu a documentação oficial e não teve problemas não precisa mais ler este post.
É bom salientar que fiz a instalação no Ubuntu Linux.
Installing TurboGears 2 from [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=claudiotorcato.wordpress.com&blog=257944&post=221&subd=claudiotorcato&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>Pediram-me para documentar a instalação do TurboGears 2. Vocês podem encontrar os passos para a instalação <a href="http://docs.turbogears.org/2.0/DownloadInstall">aqui</a>.</p>
<p>O restante deste post é sobre como solucionar certos problemas. Então, se você seguiu a documentação oficial e não teve problemas não precisa mais ler este post.</p>
<p>É bom salientar que fiz a instalação no Ubuntu Linux.</p>
<p><strong>Installing TurboGears 2 from Source</strong></p>
<p>Nesse ponto, quando vocês forem instalar o tg2 com <strong>python setup.py develop</strong>, vocês não encontrarão o arquivo setup.py. Ocorre que agora o tg2 usa o paver como instalador. Ou seja, documentação desatualizada. Na raiz de tg2 execute <strong>sudo paver develop</strong>.</p>
<p>Pode ser que durante o download das dependências do tgdev, não seja encontrado a versão 0.8.7dev do ToscaWidgets. Se este for o caso, é melhor você esperar um tempo para eles disponibilizarem-na e então sincronize a cópia de trabalho com <strong>svn update</strong>. Depois, execute novamente <strong>sudo python setup.py develop</strong>.</p>
<p>Concluídas as demandas, você já pode brincar com o TurboGears 2. Comece pelo <a href="http://docs.turbogears.org/2.0/Wiki20/All">Wiki em 20 minutos</a>.</p>
<p>Estou querendo instalar o TG2 no Windows, então os problemas que possa encontrar vou colocar como comentário aqui.</p>
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/claudiotorcato.wordpress.com/221/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/claudiotorcato.wordpress.com/221/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/claudiotorcato.wordpress.com/221/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/claudiotorcato.wordpress.com/221/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/claudiotorcato.wordpress.com/221/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/claudiotorcato.wordpress.com/221/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/claudiotorcato.wordpress.com/221/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/claudiotorcato.wordpress.com/221/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/claudiotorcato.wordpress.com/221/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/claudiotorcato.wordpress.com/221/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/claudiotorcato.wordpress.com/221/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/claudiotorcato.wordpress.com/221/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=claudiotorcato.wordpress.com&blog=257944&post=221&subd=claudiotorcato&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://claudiotorcato.wordpress.com/2008/05/30/turbogears-2-solucao-de-problemas-durante-a-instalacao/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/971d46498eb40a5c3ff29fa11d316ec4?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">claudiotorcato</media:title>
		</media:content>
	</item>
		<item>
		<title>Primeiro contato com TurboGears 2</title>
		<link>http://claudiotorcato.wordpress.com/2008/05/28/primeiro-contato-com-turbogears-2/</link>
		<comments>http://claudiotorcato.wordpress.com/2008/05/28/primeiro-contato-com-turbogears-2/#comments</comments>
		<pubDate>Wed, 28 May 2008 23:09:36 +0000</pubDate>
		<dc:creator>claudiotorcato</dc:creator>
				<category><![CDATA[desenvolvimento]]></category>
		<category><![CDATA[open source]]></category>
		<category><![CDATA[python]]></category>
		<category><![CDATA[turbogears]]></category>

		<guid isPermaLink="false">http://claudiotorcato.wordpress.com/?p=219</guid>
		<description><![CDATA[Como o Twitter não está muito bem, vai ser por aqui mesmo que informo aos amigos e colegas pythonistas que tive pela primeira vez contato com o TurboGears 2 hoje. Acabei de fazer o exemplo da Wiki.
Aos poucos, devo começar a me aprofundar no uso dele, uma vez que estamos pensando em adotar o framework [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=claudiotorcato.wordpress.com&blog=257944&post=219&subd=claudiotorcato&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>Como o Twitter não está muito bem, vai ser por aqui mesmo que informo aos amigos e colegas pythonistas que tive pela primeira vez contato com o TurboGears 2 hoje. Acabei de fazer o exemplo da Wiki.</p>
<p>Aos poucos, devo começar a me aprofundar no uso dele, uma vez que estamos pensando em adotar o framework para o desenvolvimento de um projeto. Queremos que nossa aplicação acompanhe o desenvolvimento do TurboGears, mesmo que isso seja arriscado.</p>
<p>Tive um razoável trabalho para instalá-lo na minha máquina. O trabalho não se deveu ao fato de tê-lo de obter via Subversion, mas sim porque alguns pacotes não estavam sendo encontrados pelo easy_install. Também precisei usar o Paver para baixar umas dependências. Isso a documentação de instalação não explicou. Devo fazer a instalação também no notebook do Stênio. Não anotei nada, espero conseguir.</p>
<p>Apesar dele manter a API bastante semelhante ao TurboGears 1, há componentes novos. A curiosidade foi aguçada por conta disso. Estava tão por fora, que somente agora fiquei sabendo sobre o Paver, criado pelo próprio Kevin Dangoor. Parece-me um melhoramento sobre o processo de instalação/distribuição/empacotamento.</p>
<p>Deixemos para outros posts demais conclusões sobre o TG2.</p>
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/claudiotorcato.wordpress.com/219/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/claudiotorcato.wordpress.com/219/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/claudiotorcato.wordpress.com/219/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/claudiotorcato.wordpress.com/219/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/claudiotorcato.wordpress.com/219/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/claudiotorcato.wordpress.com/219/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/claudiotorcato.wordpress.com/219/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/claudiotorcato.wordpress.com/219/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/claudiotorcato.wordpress.com/219/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/claudiotorcato.wordpress.com/219/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/claudiotorcato.wordpress.com/219/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/claudiotorcato.wordpress.com/219/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=claudiotorcato.wordpress.com&blog=257944&post=219&subd=claudiotorcato&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://claudiotorcato.wordpress.com/2008/05/28/primeiro-contato-com-turbogears-2/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/971d46498eb40a5c3ff29fa11d316ec4?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">claudiotorcato</media:title>
		</media:content>
	</item>
		<item>
		<title>Sistemas de Controle de Versão em Python</title>
		<link>http://claudiotorcato.wordpress.com/2008/04/29/sistemas-de-controle-de-versao-em-python/</link>
		<comments>http://claudiotorcato.wordpress.com/2008/04/29/sistemas-de-controle-de-versao-em-python/#comments</comments>
		<pubDate>Tue, 29 Apr 2008 11:42:05 +0000</pubDate>
		<dc:creator>claudiotorcato</dc:creator>
				<category><![CDATA[desenvolvimento]]></category>
		<category><![CDATA[python]]></category>

		<guid isPermaLink="false">http://claudiotorcato.wordpress.com/2008/04/29/sistemas-de-controle-de-versao-em-python/</guid>
		<description><![CDATA[Um amigo, Stênio, e eu conversávamos sobre um projeto secreto (o Google não pode saber) que ele tem em mente. Pretendemos implementá-lo em Python. Coube a idéia da escolha do controle de versões ao Stênio e ele disse que gostaria de experimentar o Mercurial. Isso por ele ser descentralizado e ter uma grande variedade de [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=claudiotorcato.wordpress.com&blog=257944&post=202&subd=claudiotorcato&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>Um amigo, Stênio, e eu conversávamos sobre um projeto secreto (o Google não pode saber) que ele tem em mente. Pretendemos implementá-lo em <a href="http://www.python.org">Python</a>. Coube a idéia da escolha do controle de versões ao Stênio e ele disse que gostaria de experimentar o <a href="http://www.selenic.com/mercurial/wiki/">Mercurial</a>. Isso por ele ser descentralizado e ter uma grande variedade de ferramentas. A referida característica faz parte dos sistemas de controle de versões chamados distribuídos, tais como o <a href="http://www.monotone.ca/">Monotone</a> e o <a href="http://git.or.cz/">Git</a>. Aliás, segundo li, o Mercurial e o Git seguem as idéias do Monotone.</p>
<p>Um fato importante a citar: o Git foi inicialmente desenvolvido pelo próprio Linus Torvalds para substituir uma solução proprietária, o <a href="http://www.bitkeeper.com/">BitKeeper</a>, na tarefa de ser o repositório da árvore do kernel Linux.</p>
<p>O Mercurial e o <a href="http://bazaar-vcs.org/">Bazaar</a> são exemplos recentes de controles de versões distribuídos desenvolvidos em Python. O Bazaar é utilizado pela <a href="http://www.canonical.com/">Canonical</a>, a empresa responsável pela distribuição <a href="http://www.ubuntu-br.org/">Ubuntu</a>, que aliás, sou um dos usuários satisfeitos. Pensei até em adotar o Bazaar em nosso projeto, mas em consideração ao amigo, ficamos mesmo com o Mercurial.</p>
<p>Aqui no trabalho, usamos o <a href="http://subversion.tigris.org/">Subversion</a>, o já tradicional controle de versões que veio a substituir o <a href="http://pt.wikipedia.org/wiki/CVS">CVS</a> na importante tarefa de versionar e centralizar o acesso ao código-fonte dos projetos.</p>
<p>Gostaria que esse post servisse também para os leitores-programadores a considerarem o uso de um sistema de controle de versões, mesmo para seus projetos caseiros. Aos programadores Python, considerem o uso do Bazaar e Mercurial, em especial.</p>
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/claudiotorcato.wordpress.com/202/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/claudiotorcato.wordpress.com/202/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/claudiotorcato.wordpress.com/202/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/claudiotorcato.wordpress.com/202/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/claudiotorcato.wordpress.com/202/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/claudiotorcato.wordpress.com/202/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/claudiotorcato.wordpress.com/202/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/claudiotorcato.wordpress.com/202/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/claudiotorcato.wordpress.com/202/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/claudiotorcato.wordpress.com/202/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/claudiotorcato.wordpress.com/202/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/claudiotorcato.wordpress.com/202/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=claudiotorcato.wordpress.com&blog=257944&post=202&subd=claudiotorcato&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://claudiotorcato.wordpress.com/2008/04/29/sistemas-de-controle-de-versao-em-python/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/971d46498eb40a5c3ff29fa11d316ec4?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">claudiotorcato</media:title>
		</media:content>
	</item>
		<item>
		<title>Python: como aprender</title>
		<link>http://claudiotorcato.wordpress.com/2008/02/15/python-como-aprender/</link>
		<comments>http://claudiotorcato.wordpress.com/2008/02/15/python-como-aprender/#comments</comments>
		<pubDate>Fri, 15 Feb 2008 13:01:52 +0000</pubDate>
		<dc:creator>claudiotorcato</dc:creator>
				<category><![CDATA[python]]></category>

		<guid isPermaLink="false">http://claudiotorcato.wordpress.com/2008/02/15/python-como-aprender/</guid>
		<description><![CDATA[Muitas vezes percebo dificuldade entre colegas no aprendizado mais rápido da linguagem de programação Python. Isto é mais visível entre os inexperientes.
Com base nessa preocupação resolvi listar aqui algumas formas de ter uma melhor experiência com a linguagem. Creio que servirá para outras linguagens, por ser algo bem geral.

Leia um tutorial. Leia do início ao [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=claudiotorcato.wordpress.com&blog=257944&post=163&subd=claudiotorcato&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p><img src="http://www.python.org/community/logos/python-powered-w-140x56.png" align="left" height="56" width="140" />Muitas vezes percebo dificuldade entre colegas no aprendizado mais rápido da linguagem de programação Python. Isto é mais visível entre os inexperientes.</p>
<p>Com base nessa preocupação resolvi listar aqui algumas formas de ter uma melhor experiência com a linguagem. Creio que servirá para outras linguagens, por ser algo bem geral.</p>
<ul>
<li><b>Leia um tutorial.</b> Leia do início ao fim aqueles tutoriais introdutórios sobre a linguagem. Não tente ir além disso no começo. Não entre nas áreas complexas rapidamente. Recomendo a leitura do <a href="http://docs.python.org/tut/tut.html">tutorial</a> que se encontra em <a href="http://www.python.org">www.python.org</a>. No <a href="http://www.pythonbrasil.com.br/moin.cgi/DocumentacaoPython">PythonBrasil</a> há uma série de referências a tutoriais em português e inglês. Escolha um e comece a leitura.</li>
<li><b>Pesquise mais e pergunte menos.</b> Priorizar o exercício auto-didata é muito importante. Quando resolvi conhecer outra linguagem orientada a objetos diferente da que era ensinada na graduação (Java), não tive muito a quem recorrer. Era pesquisar e ler bastante. Isso me permitiu conhecer muito mais os recursos disponíveis na biblioteca padrão. Quando a pesquisa não for suficiente para as perguntas. Nesse ponto você terá um embassamento maior do problema e facilitará no momento de tirar as dúvidas. Normalmente, perguntas sobre problemas bem básicos que poderiam ser resolvido com simples consultas na Internet chateiam as pessoas. Isso leva a entender que você quer moleza.</li>
<li><b>Tendo um problema, solucione em Python.</b> A melhor maneira de conhecer os recursos da linguagem é quando temos um objetivo a cumprir. Seja um simples script para concatenar arquivos de texto num só ou uma consulta a banco de dados. Dessa forma podemos pesquisar com clareza o que queremos. Assim aprendemos cada vez mais sobre a linguagem. Comece primeiro pela <a href="http://docs.python.org/lib/lib.html">documentação de referência da biblioteca padrão</a>. Depois procure em outros lugares da internet. A biblioteca padrão é riquíssima. Você irá se divertir muito com ela.</li>
</ul>
<p>Basicamente, este é o caminho a se seguir. Verá que é uma forma simples, mas que precisa sempre ser lembrada o tempo todo até virá um hábito.</p>
<p class="poweredbyperformancing">Powered by <a href="http://scribefire.com/">ScribeFire</a>.</p>
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/claudiotorcato.wordpress.com/163/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/claudiotorcato.wordpress.com/163/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/claudiotorcato.wordpress.com/163/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/claudiotorcato.wordpress.com/163/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/claudiotorcato.wordpress.com/163/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/claudiotorcato.wordpress.com/163/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/claudiotorcato.wordpress.com/163/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/claudiotorcato.wordpress.com/163/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/claudiotorcato.wordpress.com/163/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/claudiotorcato.wordpress.com/163/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/claudiotorcato.wordpress.com/163/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/claudiotorcato.wordpress.com/163/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=claudiotorcato.wordpress.com&blog=257944&post=163&subd=claudiotorcato&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://claudiotorcato.wordpress.com/2008/02/15/python-como-aprender/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/971d46498eb40a5c3ff29fa11d316ec4?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">claudiotorcato</media:title>
		</media:content>

		<media:content url="http://www.python.org/community/logos/python-powered-w-140x56.png" medium="image" />
	</item>
		<item>
		<title>TurboGears: a espera</title>
		<link>http://claudiotorcato.wordpress.com/2008/01/21/turbogears-a-espera/</link>
		<comments>http://claudiotorcato.wordpress.com/2008/01/21/turbogears-a-espera/#comments</comments>
		<pubDate>Mon, 21 Jan 2008 11:51:25 +0000</pubDate>
		<dc:creator>claudiotorcato</dc:creator>
				<category><![CDATA[colaboração]]></category>
		<category><![CDATA[desenvolvimento]]></category>
		<category><![CDATA[open source]]></category>
		<category><![CDATA[python]]></category>
		<category><![CDATA[turbogears]]></category>

		<guid isPermaLink="false">http://claudiotorcato.wordpress.com/2008/01/21/turbogears-a-espera/</guid>
		<description><![CDATA[Devido a existência do projeto de desenvolvimento do Turbogears 2, decidi fazer uma pausa nos estudos e casos de uso sobre esta framework. O Turbogears 2 é um reprojeto visando adotar o WSGI como base para a componentização e reusabilidade na arquitetura.
WSGI é um padrão já adotado largamente na comunidade Python. Ele facilita bastante o [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=claudiotorcato.wordpress.com&blog=257944&post=154&subd=claudiotorcato&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p><img src="http://trac.turbogears.org/chrome/common/turbogears_trac_header_sm.png" align="left" height="45" width="299" />Devido a existência do projeto de desenvolvimento do <b>Turbogears 2</b>, decidi fazer uma pausa nos estudos e casos de uso sobre esta framework. O <a href="http://trac.turbogears.org/milestone/2.0">Turbogears 2</a> é um reprojeto visando adotar o <a href="http://wsgi.org/">WSGI</a> como base para a componentização e reusabilidade na arquitetura.</p>
<p>WSGI é um padrão já adotado largamente na comunidade Python. Ele facilita bastante o reuso de código em aplicações web, principalmente. A equipe de desenvolvimento resolveu adotar o núcleo do <a href="http://pylonshq.com/">Pylons 1.0</a> para pular etapas, uma vez que este já adotava o WSGI, inclusive adotava o <a href="http://pythonpaste.org/">Paste</a> para facilitar a configuração. Vale ressaltar que eu fico maravilhado com a tríplice <b><a href="http://peak.telecommunity.com/DevCenter/setuptools">setuptools</a> + wsgi + paste</b>.</p>
<p>Essa mudança é um ponto positivo mas que me levou a parar um tempo de escrever sobre a framework aqui no blog. A sensação é que ela está no limbo e o <a href="http://www.djangoproject.com/">Django</a> continua ganhando novos adeptos. Verdade que este limbo é bem produtivo e tenho a sensação de um retorno ao mercado ainda este ano.</p>
<p>Então, quando tivermos lançamentos oficiais e documentação sobre o Turbogears 2, estarei novamente estudando e escrevendo aplicações de exemplo e divulgando minhas experiências por aqui.</p>
<p><i>Um pouco do meu tempo para todo mundo.</i></p>
<p class="poweredbyperformancing">Powered by <a href="http://scribefire.com/">ScribeFire</a>.</p>
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/claudiotorcato.wordpress.com/154/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/claudiotorcato.wordpress.com/154/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/claudiotorcato.wordpress.com/154/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/claudiotorcato.wordpress.com/154/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/claudiotorcato.wordpress.com/154/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/claudiotorcato.wordpress.com/154/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/claudiotorcato.wordpress.com/154/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/claudiotorcato.wordpress.com/154/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/claudiotorcato.wordpress.com/154/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/claudiotorcato.wordpress.com/154/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/claudiotorcato.wordpress.com/154/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/claudiotorcato.wordpress.com/154/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=claudiotorcato.wordpress.com&blog=257944&post=154&subd=claudiotorcato&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://claudiotorcato.wordpress.com/2008/01/21/turbogears-a-espera/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/971d46498eb40a5c3ff29fa11d316ec4?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">claudiotorcato</media:title>
		</media:content>

		<media:content url="http://trac.turbogears.org/chrome/common/turbogears_trac_header_sm.png" medium="image" />
	</item>
	</channel>
</rss>