<?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>Core Code</title>
	<atom:link href="http://corecode.wordpress.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://corecode.wordpress.com</link>
	<description></description>
	<lastBuildDate>Thu, 03 Dec 2009 23:46:53 +0000</lastBuildDate>
	<generator>http://wordpress.com/</generator>
	<language>pt-br</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<cloud domain='corecode.wordpress.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://www.gravatar.com/blavatar/501714ae3b790583f2bb3786bef3c5cb?s=96&#038;d=http://s.wordpress.com/i/buttonw-com.png</url>
		<title>Core Code</title>
		<link>http://corecode.wordpress.com</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://corecode.wordpress.com/osd.xml" title="Core Code" />
		<item>
		<title>Um simples reloginho de segundos em Python + Thread</title>
		<link>http://corecode.wordpress.com/2009/12/03/um-simples-reloginho-de-segundos-em-python-thread/</link>
		<comments>http://corecode.wordpress.com/2009/12/03/um-simples-reloginho-de-segundos-em-python-thread/#comments</comments>
		<pubDate>Thu, 03 Dec 2009 23:46:53 +0000</pubDate>
		<dc:creator>leonidaskirotawa</dc:creator>
				<category><![CDATA[Python]]></category>

		<guid isPermaLink="false">http://corecode.wordpress.com/?p=236</guid>
		<description><![CDATA[Programando um joguinho em  PyGame veio a necessidade de criar um relógio de segundos, eu pensei em por um for e pronto, mas isso inviabilizaria do jogo continuar seguindo em paralelo, então veio a ideia de fazer um simples relogio usando Thread.  Muito provavelmente deve haver uma ideia mais inteligente que essa por aê, mas [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=corecode.wordpress.com&blog=3748115&post=236&subd=corecode&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p style="text-align:justify;">Programando um joguinho em  PyGame veio a necessidade de criar um relógio de segundos, eu pensei em por um for e pronto, mas isso inviabilizaria do jogo continuar seguindo em paralelo, então veio a ideia de fazer um simples relogio usando Thread.  Muito provavelmente deve haver uma ideia mais inteligente que essa por aê, mas essa funciona legalzinho, então vamos ao código.</p>
<p><strong><br />
</strong></p>
<p><strong>CODE</strong></p>
<pre style="text-align:justify;">
<pre class="brush: python;">
#!/usr/bin/env python
# -*- coding: UTF-8

from threading import Thread
from time import sleep

class Clock(Thread):
       def __init__(self, time):
              Thread.__init__(self)
              self.time = time

       def run(self):
             for i in range(1,self.time):
                    print i
                    sleep(1)#dorme 1 segundo.
c = Clock(30)
c.start()
</pre>
</pre>
<p style="text-align:justify;">Tae, bem simples. É só pegar essa classe instanciar e usá-la no seu joguinho da  forma como você achar melhor. Até a próxima =).</p>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/corecode.wordpress.com/236/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/corecode.wordpress.com/236/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/corecode.wordpress.com/236/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/corecode.wordpress.com/236/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/corecode.wordpress.com/236/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/corecode.wordpress.com/236/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/corecode.wordpress.com/236/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/corecode.wordpress.com/236/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/corecode.wordpress.com/236/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/corecode.wordpress.com/236/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=corecode.wordpress.com&blog=3748115&post=236&subd=corecode&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://corecode.wordpress.com/2009/12/03/um-simples-reloginho-de-segundos-em-python-thread/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/968c524e1d4a4b2b4b22e35672b5be8a?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">kirotawa</media:title>
		</media:content>
	</item>
		<item>
		<title>O problema do reboot</title>
		<link>http://corecode.wordpress.com/2009/11/05/o-problema-do-reboot/</link>
		<comments>http://corecode.wordpress.com/2009/11/05/o-problema-do-reboot/#comments</comments>
		<pubDate>Thu, 05 Nov 2009 02:18:50 +0000</pubDate>
		<dc:creator>leonidaskirotawa</dc:creator>
				<category><![CDATA[informativos]]></category>

		<guid isPermaLink="false">http://corecode.wordpress.com/?p=225</guid>
		<description><![CDATA[Lembram deste problema http://corecode.wordpress.com/2009/06/11/reboot-and-select-propoer-boot-device-or-insert-boot-media-in-selected-boot-device-and-press-a-key/, investigando esses dias parece que tudo se tratava de uma memória com defeito, parece.  Ainda não tive tempo para investigar, pois o pc que era meu e acontecia isso é de minha irmã agora, então eu quase nunca o vejo.  Mas irei investigar e em breve postarei algo sobre este problema.  [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=corecode.wordpress.com&blog=3748115&post=225&subd=corecode&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p style="text-align:justify;">Lembram deste problema<a href="http://corecode.wordpress.com/2009/06/11/reboot-and-select-propoer-boot-device-or-insert-boot-media-in-selected-boot-device-and-press-a-key/"> http://corecode.wordpress.com/2009/06/11/reboot-and-select-propoer-boot-device-or-insert-boot-media-in-selected-boot-device-and-press-a-key/</a>, investigando esses dias parece que tudo se tratava de uma memória com defeito, parece.  Ainda não tive tempo para investigar, pois o pc que era meu e acontecia isso é de minha irmã agora, então eu quase nunca o vejo.  Mas irei investigar e em breve postarei algo sobre este problema.  No mais, quem tiver o mesmo problema é bom que verifique suas memórias, ou faça como já havia sugerido teste o HD em outra máquina e um outro HD em sua máquina para ter uma ideia se o problema é no HD ou na sua máquina, no caso no barramento.</p>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/corecode.wordpress.com/225/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/corecode.wordpress.com/225/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/corecode.wordpress.com/225/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/corecode.wordpress.com/225/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/corecode.wordpress.com/225/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/corecode.wordpress.com/225/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/corecode.wordpress.com/225/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/corecode.wordpress.com/225/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/corecode.wordpress.com/225/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/corecode.wordpress.com/225/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=corecode.wordpress.com&blog=3748115&post=225&subd=corecode&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://corecode.wordpress.com/2009/11/05/o-problema-do-reboot/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/968c524e1d4a4b2b4b22e35672b5be8a?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">kirotawa</media:title>
		</media:content>
	</item>
		<item>
		<title>Nem eclipse nem NetBeans macho que é macho usa VIM!!</title>
		<link>http://corecode.wordpress.com/2009/10/31/nem-eclipse-nem-netbeans-macho-que-e-macho-usa-vim/</link>
		<comments>http://corecode.wordpress.com/2009/10/31/nem-eclipse-nem-netbeans-macho-que-e-macho-usa-vim/#comments</comments>
		<pubDate>Sat, 31 Oct 2009 05:08:17 +0000</pubDate>
		<dc:creator>leonidaskirotawa</dc:creator>
				<category><![CDATA[informativos]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[vim]]></category>

		<guid isPermaLink="false">http://corecode.wordpress.com/?p=186</guid>
		<description><![CDATA[Volte e meia encontro nas listas de discussões  o assunto: &#8220;Qual editor usar para programar em Python?&#8221;.  A discussão sempre termina com uns 70 e-mails, e nenhum acordo no final.  Isso acontece porque é bem particular de cada programador achar IDE x ou y melhor para codar.   Eu por exemplo já usei o SPE, [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=corecode.wordpress.com&blog=3748115&post=186&subd=corecode&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p style="text-align:justify;">Volte e meia encontro nas listas de discussões  o assunto: &#8220;Qual editor usar para programar em Python?&#8221;.  A discussão sempre termina com uns 70 e-mails, e nenhum acordo no final.  Isso acontece porque é bem particular de cada programador achar IDE x ou y melhor para codar.   Eu por exemplo já usei o SPE, mas quando ele resolve bugar não tem quem o aguente. Então fiz esse post para brincar um pouco e mostrar que programador bom mesmo programa é no VIM.  Mas por que usar o VIM, que é em modo texto se eu posso usar uma  IDE bonitinha?  Como eu disse, macho que é macho programa é no VIM!!</p>
<p style="text-align:justify;">Brincadeiras a parte o VIM é tão poderoso quanto essas IDE&#8217;s javistas espalhadas por ai, e o melhor de tudo você pode personalizar ele todinho do jeito que você quiser.  Até mesmo programar algo para ele.  Eu vou  falar apenas do basicão.  Mas para maiores informações vejam as referências para materiais sobre o VIM.</p>
<p style="text-align:justify;">VIM o basicão:</p>
<p style="text-align:justify;">1) Abrir arquivos ou cria-los : vim nome_do_arquivo</p>
<p style="text-align:justify;">2)Abrir arquivo de dentro do vim: ESC : Vex. ou ESC: e .                                     (o ponto no final existe  e faz parte do comando)</p>
<p style="text-align:justify;">3)Dividindo a tela em duas horizontalmente: ESC : split ou sp ou  CTRL+w+s</p>
<p style="text-align:justify;">4)Dividindo a tela em duas verticalmente: ESC: vsplit ou vs ou CTRL+w+v</p>
<p style="text-align:justify;">5) Mudando de janelas:</p>
<p style="text-align:justify;">CTRL + w + w	Alterna entre janelas (salta de uma para outra)<br />
CTRL + w + j   desce uma janela <strong>j</strong><br />
CTTL + w + k   sobe  uma janela <strong>k</strong><br />
CTRL + w + r   Rotaciona janelas na tela</p>
<p style="text-align:justify;">6)Colocando o python pra ser chamado dentro do VIM</p>
<p style="text-align:justify;">Dentro do vimrc adicione a linha: map &lt;F3&gt; &lt;esc&gt;:!python %&lt;cr&gt;</p>
<p style="text-align:justify;">Depois que essa linha for adicionada ao vimrc, quando você estiver dentro do vim com um arquivo .py e quiser rodá-lo basta digitar ESC: !python arquivo.py.</p>
<p style="text-align:justify;">Abaixo uma imagem só para vocês terem uma ideia de como ele fica bonito para você codar. (=</p>
<p style="text-align:justify;"><img class="aligncenter size-medium wp-image-218" title="vim" src="http://corecode.files.wordpress.com/2009/10/vim.png?w=300&#038;h=187" alt="vim" width="300" height="187" /></p>
<p style="text-align:justify;"><strong><br />
</strong></p>
<p style="text-align:justify;"><strong>Referências:</strong></p>
<p style="text-align:justify;"><a href="http://pt.wikibooks.org/wiki/Vim/Dividindo_a_janela">http://pt.wikibooks.org/wiki/Vim/Dividindo_a_janela</a></p>
<p style="text-align:justify;"><a href="http://ivan.tubert.org/doc/vimbook.pdf">tutorial book</a></p>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/corecode.wordpress.com/186/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/corecode.wordpress.com/186/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/corecode.wordpress.com/186/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/corecode.wordpress.com/186/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/corecode.wordpress.com/186/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/corecode.wordpress.com/186/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/corecode.wordpress.com/186/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/corecode.wordpress.com/186/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/corecode.wordpress.com/186/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/corecode.wordpress.com/186/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=corecode.wordpress.com&blog=3748115&post=186&subd=corecode&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://corecode.wordpress.com/2009/10/31/nem-eclipse-nem-netbeans-macho-que-e-macho-usa-vim/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/968c524e1d4a4b2b4b22e35672b5be8a?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">kirotawa</media:title>
		</media:content>

		<media:content url="http://corecode.files.wordpress.com/2009/10/vim.png?w=300" medium="image">
			<media:title type="html">vim</media:title>
		</media:content>
	</item>
		<item>
		<title>Linguagem para criação de Grafos: Dot Language</title>
		<link>http://corecode.wordpress.com/2009/10/26/linguagem-para-criacao-de-grafos-dot-language/</link>
		<comments>http://corecode.wordpress.com/2009/10/26/linguagem-para-criacao-de-grafos-dot-language/#comments</comments>
		<pubDate>Mon, 26 Oct 2009 23:59:29 +0000</pubDate>
		<dc:creator>leonidaskirotawa</dc:creator>
				<category><![CDATA[Dot]]></category>
		<category><![CDATA[informativos]]></category>

		<guid isPermaLink="false">http://corecode.wordpress.com/?p=201</guid>
		<description><![CDATA[Dot é uma linguagem bem simples usada para criar grafos [1], isso mesmo, mas no caso em desenhos, em vários formatos de saída (ps, jpeg, png, etc).  O que eu pude ver com essa linguagem é que o leque de coisas que você pode fazer com ela é bem grande.  Um exemplo, criar um programa [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=corecode.wordpress.com&blog=3748115&post=201&subd=corecode&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p style="text-align:justify;">Dot é uma linguagem bem simples usada para criar grafos<a href="http://en.wikipedia.org/wiki/DOT_language"> [1]</a>, isso mesmo, mas no caso em desenhos, em vários formatos de saída (ps, jpeg, png, etc).  O que eu pude ver com essa linguagem é que o leque de coisas que você pode fazer com ela é bem grande.  Um exemplo, criar um programa que codifique um grafo e depois plota-lo com a linguagem Dot.  O legal é a simplicidade em criar os gráficos e a variedade de formatos em que você pode ter a saída.  Para ter uma ideia da facilidade em criar grafos em Dot veja alguns exemplos abaixo.</p>
<p><strong>CODE</strong></p>
<pre class="brush: cpp;">
digraph NomedoGrafo {
     a -&gt; b -&gt; c;
     b -&gt; d;
     d -&gt; a;
 }
</pre>
<p style="text-align:justify;">Este simples código quer dizer : digraph (um grafo direcionado), NomedoGrafo não preciso dizer o que é né, os pontos a, b, c e d são os nós do grafo e as setas são as direções. Para rodar este código você deve ter Dot instalado, eu uso o Ubuntu e nem precisei instalar já tinha ele aqui, mas na pagina do Dot <a href="http://www.graphviz.org/Download..php">[2]</a> você pode encontrar para download.</p>
<p style="text-align:justify;">Como disse antes você pode fazer a saída ser de vários tipos, para ter uma ideia dos tipos de saida que estão disponíveis, dá uma olhada no site em formatos de saída <a href="http://www.graphviz.org/doc/info/output.html">[3]</a>.  E por fim para você produzir a saída no meu caso aqui vou mandar gerar uma imagem, é só digitar como abaixo:</p>
<p><span style="color:#008000;">Fulano@Fulano:~$</span> dot -Tjpeg arquivo.dot -o saida.jpeg</p>
<p>Como resultado será obtido esta imagem:</p>
<p><img class="aligncenter size-full wp-image-211" title="teste" src="http://corecode.files.wordpress.com/2009/10/teste.jpeg?w=179&#038;h=251" alt="teste" width="179" height="251" /></p>
<p>&nbsp;</p>
<p style="text-align:justify;">Viu que bonito. No guia do dot você tem uma ideia dos grafos mais loucos que você pode criar com esta ferramenta.  Então é isso, use sua criatividade e se divirta.</p>
<p>&nbsp;</p>
<p><strong>Referências:</strong></p>
<p>[1] <a href="http://en.wikipedia.org/wiki/DOT_language">wikipedia/dot</a></p>
<p>[2] <a href="http://www.graphviz.org/Documentation.php">http://www.graphviz.org/Documentation.php</a></p>
<p>[3] <a href="http://www.graphviz.org/doc/info/output.html">http://www.graphviz.org/doc/info/output.html</a></p>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/corecode.wordpress.com/201/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/corecode.wordpress.com/201/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/corecode.wordpress.com/201/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/corecode.wordpress.com/201/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/corecode.wordpress.com/201/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/corecode.wordpress.com/201/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/corecode.wordpress.com/201/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/corecode.wordpress.com/201/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/corecode.wordpress.com/201/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/corecode.wordpress.com/201/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=corecode.wordpress.com&blog=3748115&post=201&subd=corecode&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://corecode.wordpress.com/2009/10/26/linguagem-para-criacao-de-grafos-dot-language/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/968c524e1d4a4b2b4b22e35672b5be8a?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">kirotawa</media:title>
		</media:content>

		<media:content url="http://corecode.files.wordpress.com/2009/10/teste.jpeg" medium="image">
			<media:title type="html">teste</media:title>
		</media:content>
	</item>
		<item>
		<title>Elvis parte1</title>
		<link>http://corecode.wordpress.com/2009/10/23/elvis-parte1/</link>
		<comments>http://corecode.wordpress.com/2009/10/23/elvis-parte1/#comments</comments>
		<pubDate>Fri, 23 Oct 2009 03:01:32 +0000</pubDate>
		<dc:creator>leonidaskirotawa</dc:creator>
				<category><![CDATA[Python]]></category>
		<category><![CDATA[Qt]]></category>
		<category><![CDATA[informativos]]></category>

		<guid isPermaLink="false">http://corecode.wordpress.com/?p=198</guid>
		<description><![CDATA[Sabe como é faculdade e sofrimento são duas coisas que caminham juntos.  Esses dias eu tive que me virar, parar de dormir de comer, usar o grande G com força nas pesquisas e pude ver que o PyOpenGL me deixou na mão por não conseguir implementar um simples select picking [1].  E o mais triste [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=corecode.wordpress.com&blog=3748115&post=198&subd=corecode&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p style="text-align:justify;">Sabe como é faculdade e sofrimento são duas coisas que caminham juntos.  Esses dias eu tive que me virar, parar de dormir de comer, usar o grande G com força nas pesquisas e pude ver que o PyOpenGL me deixou na mão por não conseguir implementar um simples select picking [1].  E o mais triste ninguém em lugar nenhum havia feito isso em PyOpenGL.  Confesso  que quando isso acontece é um tanto decepicionante, mas fazer o que, o que importa é que eu usei o poder da GAMBI vinda do mais poderoso paradigma de programação POG.</p>
<p style="text-align:justify;">Como ia dizendo tive ralar esses dias e a culpa dessa vez foi de um trabalho de computação gráfica denoninado de Elvis.  O trabalho era implementar um programa tipo Xfig [2], com um conjunto de especificações &#8220;básicas&#8221;.   A linguagem de implementação ficava a cargo de cada dupla, no meu caso fiz sozinho.  Alguns fizeram em C, outros em C++, em Ruby e eu claro em Python.</p>
<p style="text-align:justify;">O que eu tirei deste trabalho: aprendi muitas coisinhas úteis e vi claro a inutilidade de se implementar um treco desses pra uma disciplina de computação gráfica.  Por que digo isso? Digo isso, pois apesar de alguns técnicas de computação gráfica serem utilizadas no trabalho este foi por demais enfadonho, cansativo e por que não dizer foi um trabalho longo e chato impossível de ser feito no tempo que foi dado e só para deixar os alunos loucos. Eu mesmo não consegui atender a todas as implementações, muita coisa o OpenGL resolvia complicar, o Qt ajudou até onde pode e o Python como sempre foi o mão santa da vez.  Até hoje me pergunto o que passa na cabeça de alguns professores. Se o objetivo é nos fazer aprender técnicas dadas em sala de aula e por a mão na massa, por que não fazer isso de forma mais concisa, afinal alunos são humanos, cansam e também tem o que fazer.</p>
<p style="text-align:justify;">Em alguns dias eu pretendo postar aqui o que eu consegui fazer junto com a especificação do trabalho, e no futuro (férias) terminar todo o trabalho e otimiza-lo.  Farei isso para deixar disponível aos colegas sofredores as soluções para os seus futuros problemas.</p>
<p style="text-align:justify;">
<p style="text-align:justify;">[1] <a href="http://gpwiki.org/index.php/OpenGL:Tutorials:Picking">http://gpwiki.org/index.php/OpenGL:Tutorials:Picking</a></p>
<p style="text-align:justify;">[2] <a href="http://www.xfig.org/">http://www.xfig.org/</a></p>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/corecode.wordpress.com/198/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/corecode.wordpress.com/198/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/corecode.wordpress.com/198/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/corecode.wordpress.com/198/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/corecode.wordpress.com/198/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/corecode.wordpress.com/198/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/corecode.wordpress.com/198/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/corecode.wordpress.com/198/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/corecode.wordpress.com/198/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/corecode.wordpress.com/198/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=corecode.wordpress.com&blog=3748115&post=198&subd=corecode&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://corecode.wordpress.com/2009/10/23/elvis-parte1/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/968c524e1d4a4b2b4b22e35672b5be8a?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">kirotawa</media:title>
		</media:content>
	</item>
		<item>
		<title>Criando Agentes com SpySe</title>
		<link>http://corecode.wordpress.com/2009/10/09/criando-agentes-com-spyse/</link>
		<comments>http://corecode.wordpress.com/2009/10/09/criando-agentes-com-spyse/#comments</comments>
		<pubDate>Fri, 09 Oct 2009 01:06:27 +0000</pubDate>
		<dc:creator>leonidaskirotawa</dc:creator>
				<category><![CDATA[Sistemas multiagentes]]></category>
		<category><![CDATA[spyse]]></category>

		<guid isPermaLink="false">http://corecode.wordpress.com/?p=188</guid>
		<description><![CDATA[Antes de mostrar como criar agentes com  o SpySe. Vamos instalar o SpySe.  Para isso basta ir no SVN e baixar tudo pelo link  GNU tarball. Baixado o .tar, descompacte ele no seu local de preferência e dentro da pasta spyse dê um sudo python setup.py install (para quem usa ubuntu).  Feito isso o seu [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=corecode.wordpress.com&blog=3748115&post=188&subd=corecode&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p style="text-align:justify;">Antes de mostrar como criar agentes com  o SpySe. Vamos instalar o SpySe.  Para isso basta ir no SVN e baixar tudo pelo link <a href="http://spyse.svn.sourceforge.net/viewvc/spyse.tar.gz?view=tar&amp;pathrev=272"> GNU tarball</a>. Baixado o .tar, descompacte ele no seu local de preferência e dentro da pasta spyse dê um sudo python setup.py install (para quem usa ubuntu).  Feito isso o seu spyse já está instalado e para testar é só abrir o shell do python e testar com : import spyse, se tudo der certo nenhuma mensagem será mostrada, mas se der errado vá na pasta do spyse que você deszipou e copia o arquivo __init__.py, dessa forma:  sudo cp __init__.py /usr/local/lib/python2.6/dist-packages/spyse/.  Depois de feito isso, vai no shell do python e testa novamente com: import spyse, se tudo deu certo vamos começar o trabalho.</p>
<p style="text-align:justify;">Vamos criar um agente que diz &#8220;hello world&#8221; (mais clichê que isso impossível).  Para tal precisamos que nossa classe agente (HelloWorldAgent) herde da classe agente que é importada como mostra o código abaixo.  Feito isso o seu agente deve ter um método setup para inicializar os seus possíveis parâmetros.  Pronto você já tem um agente prontinho para rodar.  Basta agora criar a classe aplicação e chamar o seu agente, ou seus agentes.  Veja o código abaixo:</p>
<p style="text-align:justify;">
<p style="text-align:justify;"><strong>CODE</strong></p>
<pre class="brush: python;">
#!/usr/bin/env python
# -*- coding: latin-1 -*-

from spyse.core.agents.agent import Agent
from spyse.app.app import App

class HelloWorldAgent(Agent):

    def setup(self):
        print &quot;Hello world!!&quot;

class MyApp(App):
    def run(self,args):
        self.start_agent(HelloWorldAgent,&quot;Agent&quot;)

if __name__==&quot;__main__&quot;:
    MyApp()
</pre>
<p style="text-align:justify;">A sintaxe do spyse é muito similar ao do JADE, então se você já conhece a do JADE fica bem mais fácil manusear com o spyse.  Em breve pretendo postar aqui o trabalho que eu fiz, com mais exemplos de código e mais completo.  O legal de agente é que eles podem ser utilizados para um número muito grande de problemas.  Minha ideia é que no ano que vem eu acaba utilizando eles na criação de um jogo usando spyse e PyGame.  Então é isso até a próxima.</p>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/corecode.wordpress.com/188/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/corecode.wordpress.com/188/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/corecode.wordpress.com/188/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/corecode.wordpress.com/188/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/corecode.wordpress.com/188/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/corecode.wordpress.com/188/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/corecode.wordpress.com/188/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/corecode.wordpress.com/188/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/corecode.wordpress.com/188/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/corecode.wordpress.com/188/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=corecode.wordpress.com&blog=3748115&post=188&subd=corecode&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://corecode.wordpress.com/2009/10/09/criando-agentes-com-spyse/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/968c524e1d4a4b2b4b22e35672b5be8a?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">kirotawa</media:title>
		</media:content>
	</item>
		<item>
		<title>SpySe uma alternativa Python ao JADE</title>
		<link>http://corecode.wordpress.com/2009/07/24/spyse-uma-alternativa-python-ao-jade/</link>
		<comments>http://corecode.wordpress.com/2009/07/24/spyse-uma-alternativa-python-ao-jade/#comments</comments>
		<pubDate>Fri, 24 Jul 2009 04:10:31 +0000</pubDate>
		<dc:creator>leonidaskirotawa</dc:creator>
				<category><![CDATA[Python]]></category>
		<category><![CDATA[informativos]]></category>

		<guid isPermaLink="false">http://corecode.wordpress.com/?p=178</guid>
		<description><![CDATA[Nos ultimos dias em mais uma das minhas batalhas a ser travadas no mestrado tive e estou tendo que criar um sistema multiagente com o JADE, porém tenho aversão a JAVA e sempre que posso procuro meios de fazer em outra linguagem, geralmente em Python.  Vasculhando na Web por alternativas a tão odiada linguagem JAVA [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=corecode.wordpress.com&blog=3748115&post=178&subd=corecode&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p style="text-align:justify;">Nos ultimos dias em mais uma das minhas batalhas a ser travadas no mestrado tive e estou tendo que criar um sistema multiagente com o JADE, porém tenho aversão a JAVA e sempre que posso procuro meios de fazer em outra linguagem, geralmente em Python.  Vasculhando na Web por alternativas a tão odiada linguagem JAVA (que somente não gosto, mas sim eu sei programar nisso =] ) achei o SpySe [1] um projeto até antigo do André Mayer, mas que implementa tudo que o JADE faz, ao menos até agora tudo que eu preciso.</p>
<p style="text-align:justify;">O JADE  para quem não conhece é um framework que segue os padrões da FIPA [2] para implementação de agentes. O SpySe como é de se advinhar faz o mesmo, só que em Python, e convenhamos bem mais bonito.  Quem quiser baixar, por os demos que tem lá pra rodar é só baixar a versão do svn [3], pelo que vi é a mais instável e melhor.  Para mais informações consultem as referências.</p>
<p style="text-align:justify;">Nos próximos post pretendo postar aqui qual foi meu trabalho, o artigo que irei escrever e claro os códigos do sistema que irei criar.  Por enquanto fiquem com esse post informando da existência do  SpySe.</p>
<p style="text-align:justify;"><strong>Referências:</strong></p>
<p style="text-align:justify;">[1] <a href="http://www.spyse.net/">SpySE site</a></p>
<p style="text-align:justify;">[2] <a href="http://www.fipa.org/specs/fipa00023/index.html">FIPA</a></p>
<p style="text-align:justify;">[3] <a href="http://spyse.svn.sourceforge.net/viewvc/spyse/?pathrev=272">Download SpySe via svn</a></p>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/corecode.wordpress.com/178/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/corecode.wordpress.com/178/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/corecode.wordpress.com/178/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/corecode.wordpress.com/178/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/corecode.wordpress.com/178/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/corecode.wordpress.com/178/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/corecode.wordpress.com/178/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/corecode.wordpress.com/178/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/corecode.wordpress.com/178/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/corecode.wordpress.com/178/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=corecode.wordpress.com&blog=3748115&post=178&subd=corecode&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://corecode.wordpress.com/2009/07/24/spyse-uma-alternativa-python-ao-jade/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/968c524e1d4a4b2b4b22e35672b5be8a?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">kirotawa</media:title>
		</media:content>
	</item>
		<item>
		<title>Blender day</title>
		<link>http://corecode.wordpress.com/2009/07/19/blender-day/</link>
		<comments>http://corecode.wordpress.com/2009/07/19/blender-day/#comments</comments>
		<pubDate>Sun, 19 Jul 2009 04:27:47 +0000</pubDate>
		<dc:creator>leonidaskirotawa</dc:creator>
				<category><![CDATA[Animação 3D]]></category>
		<category><![CDATA[informativos]]></category>

		<guid isPermaLink="false">http://corecode.wordpress.com/?p=174</guid>
		<description><![CDATA[Aconte no dia 1 de agosto em fortaleza um dos eventos do Blender Day.  O Blender Day é um evento que irá acontecer nacionalmente em várias cidades do pais, uma delas fortaleza.  Nestas cidades serão ministradas palestras e oficinas com o Blender.  Eventos como este trazem a oportunidade de se divulgar bons trabalhos e aprender [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=corecode.wordpress.com&blog=3748115&post=174&subd=corecode&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p style="text-align:justify;">Aconte no dia 1 de agosto em fortaleza um dos eventos do Blender Day.  O Blender Day é um evento que irá acontecer nacionalmente em várias cidades do pais, uma delas fortaleza.  Nestas cidades serão ministradas palestras e oficinas com o Blender.  Eventos como este trazem a oportunidade de se divulgar bons trabalhos e aprender um pouco mais sobre essa ferramente livre e extremamente.  Para maiores informações consulte as referências no final deste post.</p>
<p><strong>Referências:</strong></p>
<p><a href="http://www.blender.pro.br/index.php?option=com_content&amp;task=view&amp;id=84&amp;Itemid=140">Blender Day</a></p>
<p><a href="http://www.blenderday-ce.tk/">Blender Day em Fortaleza</a></p>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/corecode.wordpress.com/174/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/corecode.wordpress.com/174/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/corecode.wordpress.com/174/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/corecode.wordpress.com/174/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/corecode.wordpress.com/174/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/corecode.wordpress.com/174/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/corecode.wordpress.com/174/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/corecode.wordpress.com/174/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/corecode.wordpress.com/174/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/corecode.wordpress.com/174/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=corecode.wordpress.com&blog=3748115&post=174&subd=corecode&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://corecode.wordpress.com/2009/07/19/blender-day/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/968c524e1d4a4b2b4b22e35672b5be8a?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">kirotawa</media:title>
		</media:content>
	</item>
		<item>
		<title>Criando plugins  para o Rhythmbox</title>
		<link>http://corecode.wordpress.com/2009/07/11/criando-plugins-para-o-rhythmbox/</link>
		<comments>http://corecode.wordpress.com/2009/07/11/criando-plugins-para-o-rhythmbox/#comments</comments>
		<pubDate>Sat, 11 Jul 2009 16:24:05 +0000</pubDate>
		<dc:creator>leonidaskirotawa</dc:creator>
				<category><![CDATA[Python]]></category>
		<category><![CDATA[Rhythmbox]]></category>
		<category><![CDATA[ubuntu]]></category>

		<guid isPermaLink="false">http://corecode.wordpress.com/?p=154</guid>
		<description><![CDATA[Opa,
Você sabe o que são plugins?  Não sabe?
Um plugin é um programa que você instala em algum outro programa e executa uma determinada tarefa especifica, por exemplo o plugin Arte de Capa do player de musica do Ubuntu, Rhythmbox. Esse plugin busca a capa do album do qual a musica que está sendo tocada pertence [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=corecode.wordpress.com&blog=3748115&post=154&subd=corecode&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p style="text-align:justify;">Opa,</p>
<p style="text-align:justify;">Você sabe o que são plugins?  Não sabe?</p>
<p style="text-align:justify;">Um plugin é um programa que você instala em algum outro programa e executa uma determinada tarefa especifica, por exemplo o plugin Arte de Capa do player de musica do <strong>Ubuntu, Rhythmbox</strong>. Esse plugin busca a capa do album do qual a musica que está sendo tocada pertence e o mostra do lado esquerdo no player.</p>
<p style="text-align:justify;">Esse post tem duas funções.  A primeira é destrinchar códigos de algum plugin que já foi criado para esse player, e ensinar com isso como fazer um plugin para o <strong>Rhythmbox</strong>, mostrando assim a API do <strong>rb </strong>e do <strong>rhythmdb</strong> (bibliotecas para criar os tais plugins para o Rhythmbox).  A segunda é fazer um plugin parte a parte testar e por pra funfar (funcionar).</p>
<p style="text-align:justify;">Para a primeira parte deste post, o destrinchamento de um plugin, peguei o <a href="http://svn.codecheck.in/platform/rhythmbox/twitter-plugin/">twitter_plugin</a> do <strong>Ryuzo Yamamoto</strong>.  Vou explicar apenas a classe <strong><em>TwitterPlugin</em></strong>.  Então vamos ao código:</p>
<p style="text-align:justify;"><strong>CODE</strong></p>
<pre class="brush: python;">
import rhythmdb, rb #a parte que realmente nos interessa, por hora, a lib do rhythmbox
import gobject
import gtk, gtk.glade
import gconf, gnomevfs, gnome
import twitter
import os

gconf_keys = {	'username': '/apps/rhythmbox/plugins/twitter-plugin/username',
		'password': '/apps/rhythmbox/plugins/twitter-plugin/password'
		}

class TwitterPlugin(rb.Plugin):

	def __init__(self):
		rb.Plugin.__init__(self)

	def activate(self, shell):
		self.shell = shell
		player = shell.get_player()

		self.psc_id = player.connect ('playing-song-changed', self.song_change)
		self.lastStatus = &quot;&quot;
		if player.get_playing_entry():
			self.song_change (player, player.get_playing_entry())
		self.db = None

	def deactivate(self, shell):
		self.shell.get_player().disconnect (self.psc_id)
		del self.psc_id
		if self.db:
			del self.db
		del self.shell
		del self.lastStatus

	def get_twitter_api(self):
		username = gconf.client_get_default().get_string(gconf_keys['username'])
		password = gconf.client_get_default().get_string(gconf_keys['password'])

		api = twitter.Api(username, password);
		api.SetSource('rhythmboxtwitterplugin')
		api.SetXTwitterHeaders('Rhythmbox twitter-plugin', 'http://trac.codecheck.in/share/browser/platform/rhythmbox/twitter-plugin', '0.1')
		return api

	def song_change(self, player, entry):
		artist = None
		album = None
		title = None
		if entry:
			artist = self.get_song_info(entry)[0]
			album = self.get_song_info(entry)[1]
			title = self.get_song_info(entry)[2]
		response = &quot;&quot;
		if artist != None:
			response = artist
		if album != None:
			if response:
				response += &quot; - &quot; + album
			else:
				response = album
 		elif title != None:
 			if response:
 				response += &quot; - &quot; + title
 			else:
 				response = title
		newStatus = 'Listening to '+response
		if response and newStatus != self.lastStatus:
			self.get_twitter_api().PostUpdate(newStatus)
			self.lastStatus = newStatus

	def get_song_info(self, entry):
		self.db = self.shell.get_property('db')
		artist = self.db.entry_get (entry, rhythmdb.PROP_ARTIST) or None
		album = self.db.entry_get (entry, rhythmdb.PROP_ALBUM) or None
		title = self.db.entry_get(entry,rhythmdb.PROP_TITLE) or None
		return (artist,album,title)

	def create_configure_dialog(self, dialog=None):
		if not dialog:
			glade_file = self.find_file(&quot;twitter-plugin-prefes.glade&quot;)
			dialog = TwitterConfigureDialog (glade_file).get_dialog()
		dialog.present()
		return dialog
</pre>
<p style="text-align:justify;">
<p style="text-align:justify;">Depois dessa porrada de código, vamos as explicações:</p>
<p style="text-align:justify;">O primeiro e mais importante é importar os módulos necessários, no nosso caso vamos prender a atenção apenas nos módulos <strong>rb</strong> e<strong> rhythmdb</strong>.  Estes dois modulos nos dão a <strong>API</strong> para manusear o <strong>Rhythmbox</strong>.  Na definição da classe temos <em>TwitterPlugin</em>(<strong>rb.Plugin</strong>), assim nossa classe herda de <strong>rb.Plugin</strong> tudo que nós precisamos.  E no contrutor dessa classe,<em>__init__(self):</em>,  é chamado o construdor da classe herdada <em>rb.Plugin.__init__(self):</em>.</p>
<p style="text-align:justify;">Antes de entrar em detalhes no código é preciso esclarecer algumas pontos importantes sobre a criação de plugins no <strong>Rhythmbox</strong>.</p>
<p style="text-align:justify;">Todo plugin do RBOX tem sempre os dois métodos <em><strong>activate </strong></em>e <em><strong>deactivate</strong></em>.   O método <em><strong>activate</strong></em> é  o método que define o que o plugin faz quando ele for ativado.  Já o <em><strong>deactivate</strong></em> é o método que é executado quando o plugin é desativado.  Além disso a janela que você vê no RBOX é chamada de <strong>shell</strong>, e sempre que um  plugin é iniciado com a classe <strong>rb.Plugin</strong>, ele cria uma instância para <strong>shell.</strong> Em shell é encontrado tudo que você precisa para manipular o <strong>RBOX</strong> e fazer o seu plugin, desde manipular se uma musica toca ou não, ou manipular alguma coisa da interface gráfica.  É por isso que quando criamos o método <strong>activate</strong> o <strong>shell</strong> é passado junto como parametro, afinal ele é a peça mais importante da API. O <strong>shell</strong> é como um mural onde agente vai colar tudo que o player tem e faz.</p>
<p style="text-align:justify;"><strong>Método activate</strong></p>
<p style="text-align:justify;">Quando fazemos <em>shell.get_player()</em>, capturamos o player e seus métodos,  Logo depois  em <em>self.psc_id = player.connect(&#8217;signal&#8217;, função)</em>, conectamos ao player a função <em>song_change</em>, que será chamada quando houver mudança de faixa. Há nove tipos de sinais que podem ser passados, para mais detalhes consulte: <a href="http://library.gnome.org/devel/rhythmbox/unstable/RBShellPlayer.html">RBShellPlayer</a>. Em seguida é checado com o <em>player.playing_get_entry()</em> se tem alguma musica sendo tocada ou pausada. Esse método retorna um objeto <a href="http://library.gnome.org/devel/rhythmbox/unstable/RhythmDB.html#RhythmDBEntry"><strong>RhythmbDBEntry</strong></a> em caso positivo e None em caso negativo. Com o objeto RhythmDBEntry é possível usar o metodo <em>get_playback_uri()</em> e recuperar a uri da faixa que está sendo tocada. Muito bem, no if ele verifica se alguma musica está sendo tocada, se sim ele chama a função <em>song_change()</em> passando o player e o objeto <strong>RhythmDBEntry</strong> para ser manipulado mais à frente.  Antes de encerrar sobre o método activate, repare que temos duas variaveis uma é <em>lasStatus</em> e a outra é <em>db</em>, mas a frente será explicado para que elas servem, mas a essa altura do campeonato já deve dá para perceber o que esse plugin faz, né?</p>
<p style="text-align:justify;"><strong>Método deactivate</strong></p>
<p style="text-align:justify;">Como foi falado antes esse método é acionado quando o plugin é desativado, logo ele é o responsável pela &#8216;limpeza&#8217;, ou seja, ele disconecta o que tiver sido conectado, no nosso caso <span> <em><span>self</span><span>.shell.get_player().disconnect (</span><span>self</span></em><span><em>.psc_id), </em>e deleta os objetos que não serão mais usados.</span></span></p>
<p style="text-align:justify;">
<p style="text-align:justify;">Por enquanto eu vou dar uma pausa, e nos próximos posts irei explicar os outros métodos e falar um pouco mais da API.  Quem quiser se divertir com o RBOX pode usar o Python Console no próprio player, Ferramentas &gt; Python Console. Com isso você pode usar  o <strong>dir()</strong> e conhecer por si só a API e vê como ele funciona.  Se você quiser ler a documentação checa abaixo as referências.  Então é isso, até o próximo post.</p>
<p><strong>continua&#8230;</strong></p>
<p><strong>Referências:</strong></p>
<p><a href="http://live.gnome.org/RhythmboxPlugins/WritingGuide">Rhythmbox Plugins/Escrevendo</a></p>
<p><a href="http://library.gnome.org/devel/rhythmbox/unstable/">Rhythmbox Development Reference Manual</a></p>
<p style="text-align:justify;">
<p style="text-align:justify;">
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/corecode.wordpress.com/154/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/corecode.wordpress.com/154/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/corecode.wordpress.com/154/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/corecode.wordpress.com/154/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/corecode.wordpress.com/154/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/corecode.wordpress.com/154/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/corecode.wordpress.com/154/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/corecode.wordpress.com/154/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/corecode.wordpress.com/154/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/corecode.wordpress.com/154/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=corecode.wordpress.com&blog=3748115&post=154&subd=corecode&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://corecode.wordpress.com/2009/07/11/criando-plugins-para-o-rhythmbox/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/968c524e1d4a4b2b4b22e35672b5be8a?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">kirotawa</media:title>
		</media:content>
	</item>
		<item>
		<title>Reboot and select  proper boot device or insert boot media in selected boot device and press a ke</title>
		<link>http://corecode.wordpress.com/2009/06/11/reboot-and-select-propoer-boot-device-or-insert-boot-media-in-selected-boot-device-and-press-a-key/</link>
		<comments>http://corecode.wordpress.com/2009/06/11/reboot-and-select-propoer-boot-device-or-insert-boot-media-in-selected-boot-device-and-press-a-key/#comments</comments>
		<pubDate>Thu, 11 Jun 2009 16:40:39 +0000</pubDate>
		<dc:creator>leonidaskirotawa</dc:creator>
				<category><![CDATA[Manutenção do Pc]]></category>

		<guid isPermaLink="false">http://corecode.wordpress.com/?p=144</guid>
		<description><![CDATA[Se essa linda mensagem apareceu no seu pc  depois de você ter ido dar um roler e ter deixado ele desligado, calma!! Não xinque o papa por isso.
Depois de rodar na net e não achar muita coisa em que eu tivesse fé, pois que os caras estavam dizendo que era hardware e eu culpei o [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=corecode.wordpress.com&blog=3748115&post=144&subd=corecode&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p style="text-align:justify;">Se essa linda mensagem apareceu no seu pc  depois de você ter ido dar um roler e ter deixado ele desligado, calma!! Não xinque o papa por isso.</p>
<p style="text-align:justify;">Depois de rodar na net e não achar muita coisa em que eu tivesse fé, pois que os caras estavam dizendo que era hardware e eu culpei o software, até  buli no grub pra ver se funfava e nada.  Pois bem a solução pra esse problema aqui, foi mudar a porta do hd ¬¬. Sim, mudei da IDE0 pra IDE1 no lugar do cDrom que aqui por enquanto não está mais funfando ¬¬. E então tudo voltou a funfar.  Sabe aquela piada, que dizem da diferença entre hardware e software, pois é, eu chutei meu pc sim!</p>
<p style="text-align:justify;">No mais é só isso. Já sabem né, se essa coisa das trevas ocorrer com você faça isso aê que eu fiz. Mas eu no seu lugar faria um backup de tudo também, vai saber se isso não é um sinal de que o seu PC tá pra morrer.</p>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/corecode.wordpress.com/144/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/corecode.wordpress.com/144/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/corecode.wordpress.com/144/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/corecode.wordpress.com/144/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/corecode.wordpress.com/144/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/corecode.wordpress.com/144/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/corecode.wordpress.com/144/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/corecode.wordpress.com/144/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/corecode.wordpress.com/144/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/corecode.wordpress.com/144/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=corecode.wordpress.com&blog=3748115&post=144&subd=corecode&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://corecode.wordpress.com/2009/06/11/reboot-and-select-propoer-boot-device-or-insert-boot-media-in-selected-boot-device-and-press-a-key/feed/</wfw:commentRss>
		<slash:comments>11</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/968c524e1d4a4b2b4b22e35672b5be8a?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">kirotawa</media:title>
		</media:content>
	</item>
	</channel>
</rss>