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

<channel>
	<title>ScrapBook</title>
	<atom:link href="http://bruno.tuy.com.br/blog/?feed=rss2" rel="self" type="application/rss+xml" />
	<link>http://bruno.tuy.com.br/blog</link>
	<description></description>
	<lastBuildDate>Wed, 30 Jun 2010 21:46:26 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Google Translate Python no seu terminal</title>
		<link>http://bruno.tuy.com.br/blog/?p=155</link>
		<comments>http://bruno.tuy.com.br/blog/?p=155#comments</comments>
		<pubDate>Wed, 30 Jun 2010 21:43:29 +0000</pubDate>
		<dc:creator>BrunoTuy</dc:creator>
				<category><![CDATA[Programação]]></category>
		<category><![CDATA[GoogleTranslate]]></category>
		<category><![CDATA[htmlparser]]></category>
		<category><![CDATA[pycurl]]></category>
		<category><![CDATA[python]]></category>

		<guid isPermaLink="false">http://bruno.tuy.com.br/blog/?p=155</guid>
		<description><![CDATA[Meu interesse inicial era encontrar algum tradutor, inglês -&#62; português, que rode via terminal. Não encontrei nada que me agradasse então resolvi fazer algo aqui.
O script em python pega a palavra que for digitada submet ao google translate e te mostra o resultado. Pra fazer isso usei o curl pra fazer a requisição fingindo ser [...]]]></description>
			<content:encoded><![CDATA[<p>Meu interesse inicial era encontrar algum tradutor, inglês -&gt; português, que rode via terminal. Não encontrei nada que me agradasse então resolvi fazer algo aqui.</p>
<p>O script em python pega a palavra que for digitada submet ao google translate e te mostra o resultado. Pra fazer isso usei o curl pra fazer a requisição fingindo ser o mozilla. Depois fiz um parser procurando uma tag span que tem o atributo title com valor igual a palavra passada ao google.</p>
<p>Pronto, bem simples e funciona.<br />
A partir desse da pra fazer muita coisa&#8230;</p>
<p>esta disponível para todos <a href="http://bruno.tuy.com.br/desenv/translate.py">http://bruno.tuy.com.br/desenv/translate.py</a></p>
]]></content:encoded>
			<wfw:commentRss>http://bruno.tuy.com.br/blog/?feed=rss2&amp;p=155</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Girar Matriz com Python</title>
		<link>http://bruno.tuy.com.br/blog/?p=142</link>
		<comments>http://bruno.tuy.com.br/blog/?p=142#comments</comments>
		<pubDate>Fri, 11 Jun 2010 18:01:50 +0000</pubDate>
		<dc:creator>BrunoTuy</dc:creator>
				<category><![CDATA[Programação]]></category>
		<category><![CDATA[matriz]]></category>
		<category><![CDATA[python]]></category>
		<category><![CDATA[vector]]></category>

		<guid isPermaLink="false">http://bruno.tuy.com.br/blog/?p=142</guid>
		<description><![CDATA[Criar matriz:
&#62;&#62;&#62; mat = [['a', 'b', 'c'], ['d', 'e', 'f'], ['g', 'h', 'i']]
Mostra normal:
&#62;&#62;&#62; for lin in range(3):
&#160;&#160;&#160;&#160;text = &#8221;
&#160;&#160;&#160;&#160;for col in range(3):
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;text += &#8216; &#8216; + mat[lin][col]
&#160;&#160;&#160;&#160;print text
Mostrar girada em 90 graus:
&#62;&#62;&#62; for lin in range(3):
&#160;&#160;&#160;&#160;text = &#8221;
&#160;&#160;&#160;&#160;for col in range(3):
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;text += &#8216; &#8216; + mat[col][2 - lin]
&#160;&#160;&#160;&#160;print text
Mostrar girada em 180 graus:
&#62;&#62;&#62; for [...]]]></description>
			<content:encoded><![CDATA[<p>Criar matriz:</p>
<div class="term"><b>&gt;&gt;&gt; mat = [['a', 'b', 'c'], ['d', 'e', 'f'], ['g', 'h', 'i']]</b></div>
<p>Mostra normal:</p>
<div class="term"><b>&gt;&gt;&gt; for lin in range(3):<br />
&nbsp;&nbsp;&nbsp;&nbsp;text = &#8221;<br />
&nbsp;&nbsp;&nbsp;&nbsp;for col in range(3):<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;text += &#8216; &#8216; + mat[lin][col]<br />
&nbsp;&nbsp;&nbsp;&nbsp;print text</b></div>
<p>Mostrar girada em 90 graus:</p>
<div class="term"><b>&gt;&gt;&gt; for lin in range(3):<br />
&nbsp;&nbsp;&nbsp;&nbsp;text = &#8221;<br />
&nbsp;&nbsp;&nbsp;&nbsp;for col in range(3):<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;text += &#8216; &#8216; + mat[col][2 - lin]<br />
&nbsp;&nbsp;&nbsp;&nbsp;print text</b></div>
<p>Mostrar girada em 180 graus:</p>
<div class="term"><b>&gt;&gt;&gt; for lin in range(3):<br />
&nbsp;&nbsp;&nbsp;&nbsp;text = &#8221;<br />
&nbsp;&nbsp;&nbsp;&nbsp;for col in range(3):<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;text += &#8216; &#8216; + mat[2 - lin][2 - col]<br />
&nbsp;&nbsp;&nbsp;&nbsp;print text</b></div>
<p>Mostrar girada em 270 graus:</p>
<div class="term"><b>&gt;&gt;&gt; for lin in range(3):<br />
&nbsp;&nbsp;&nbsp;&nbsp;text = &#8221;<br />
&nbsp;&nbsp;&nbsp;&nbsp;for col in range(3):<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;text += &#8216; &#8216; + mat[2 - col][lin]<br />
&nbsp;&nbsp;&nbsp;&nbsp;print text</b></div>
]]></content:encoded>
			<wfw:commentRss>http://bruno.tuy.com.br/blog/?feed=rss2&amp;p=142</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Python conectando com Postgres</title>
		<link>http://bruno.tuy.com.br/blog/?p=125</link>
		<comments>http://bruno.tuy.com.br/blog/?p=125#comments</comments>
		<pubDate>Tue, 04 May 2010 14:40:46 +0000</pubDate>
		<dc:creator>BrunoTuy</dc:creator>
				<category><![CDATA[Programação]]></category>
		<category><![CDATA[postgres]]></category>
		<category><![CDATA[psycopg2]]></category>
		<category><![CDATA[python]]></category>

		<guid isPermaLink="false">http://bruno.tuy.com.br/blog/?p=125</guid>
		<description><![CDATA[Trecho de código para conectar python ao postgres usando psycopg2.]]></description>
			<content:encoded><![CDATA[<div class="term"><strong><strong>&gt;&gt;&gt; import psycopg2</strong><br />
<strong>&gt;&gt;&gt; </strong>conexao = psycopg2.connect(&#8220;dbname=&#8217;nome_base&#8217; user=&#8217;usuario_base&#8217; host=&#8217;endereco_da_base ou IP&#8217; password=&#8217;senha_da_base&#8217;&#8221;);<br />
<strong>&gt;&gt;&gt; </strong> cursor = conexao.cursor()<br />
<strong>&gt;&gt;&gt; </strong> cursor.execute(&#8220;SELECT * FROM tabela&#8221;)<br />
<strong>&gt;&gt;&gt; </strong> resposta = cursor.fetchall()<br />
<strong>&gt;&gt;&gt; </strong> print resposta</strong></p>
<p><strong><strong>&gt;&gt;&gt; </strong>for linha in resposta:<br />
<strong>&gt;&gt;&gt; </strong> &nbsp;&nbsp;&nbsp; print linha<br />
<strong>&gt;&gt;&gt; </strong> conexao.close()</strong></p>
</div>
]]></content:encoded>
			<wfw:commentRss>http://bruno.tuy.com.br/blog/?feed=rss2&amp;p=125</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Ubuntu 9.10 Leitor de Cartão da direita não funciona</title>
		<link>http://bruno.tuy.com.br/blog/?p=120</link>
		<comments>http://bruno.tuy.com.br/blog/?p=120#comments</comments>
		<pubDate>Fri, 05 Mar 2010 13:16:16 +0000</pubDate>
		<dc:creator>BrunoTuy</dc:creator>
				<category><![CDATA[Desktop]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[grub2]]></category>
		<category><![CDATA[sd leitor]]></category>
		<category><![CDATA[ubuntu]]></category>

		<guid isPermaLink="false">http://bruno.tuy.com.br/blog/?p=120</guid>
		<description><![CDATA[Como já é conhecido de todos no Acer Aspire One quando instalado o Ubuntu os leitores de cartão nem sempre funcionam direito. Aqui no meu o &#8220;Storage Expansion&#8221; que é o leitor da esquerda funciona tranquilo tranquilo. Mais já o da direita que fica próximo ao botão power só funciona quando eu inicio a maquina [...]]]></description>
			<content:encoded><![CDATA[<p>Como já é conhecido de todos no Acer Aspire One quando instalado o Ubuntu os leitores de cartão nem sempre funcionam direito. Aqui no meu o &#8220;Storage Expansion&#8221; que é o leitor da esquerda funciona tranquilo tranquilo. Mais já o da direita que fica próximo ao botão power só funciona quando eu inicio a maquina com um cartão já inserido no slot.</p>
<p>Para ele funcionar tenho que passar um parâmetro para a imagem do kernel no boot de maquina. pciehp.pciehp_force=1</p>
<p>Mais nessa versão do linux não vai ser simplemente editar o menu.lst do grub. No ubuntu agora esta vindo o grub2, que muda um pouco as coisas. O que você via no menu.lst agora esta no /boot/grub/grub.cfg e não aconselho editar ele não, essa configuração dele é toda feita automaticamente.</p>
<p>Para adicionar o parâmetro editei o arquivo /etc/default/grub<br />
Na linha: GRUB_CMDLINE_LINUX_DEFAULT<br />
Editei e ela ficou assim:<br />
GRUB_CMDLINE_LINUX_DEFAULT=&#8221;pciehp.pciehp_force=1 quiet splash&#8221;</p>
<p>Depois tu só faz executar a atualização do grub.cfg e tudo lindo.</p>
<div class="term">
$ update-grub
</div>
]]></content:encoded>
			<wfw:commentRss>http://bruno.tuy.com.br/blog/?feed=rss2&amp;p=120</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Porta paralela no Shell do Linux</title>
		<link>http://bruno.tuy.com.br/blog/?p=108</link>
		<comments>http://bruno.tuy.com.br/blog/?p=108#comments</comments>
		<pubDate>Wed, 24 Feb 2010 13:16:26 +0000</pubDate>
		<dc:creator>BrunoTuy</dc:creator>
				<category><![CDATA[Programação]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[hardware]]></category>
		<category><![CDATA[inb]]></category>
		<category><![CDATA[outb]]></category>
		<category><![CDATA[porta paralela]]></category>
		<category><![CDATA[roboticalivre.org]]></category>

		<guid isPermaLink="false">http://bruno.tuy.com.br/blog/?p=108</guid>
		<description><![CDATA[Bom no Slack que tava usando aqui na maquina já tinha dois comandos que me acostumei a usar, inb e outb. Como eles foram parar no slack e de onde vieram eu não tenho a menor ideia.
Formatei a maquina e instalei o Debian, fiz uma instalação bem limpa e não veio meu inb e outb, [...]]]></description>
			<content:encoded><![CDATA[<p>Bom no Slack que tava usando aqui na maquina já tinha dois comandos que me acostumei a usar, inb e outb. Como eles foram parar no slack e de onde vieram eu não tenho a menor ideia.</p>
<p>Formatei a maquina e instalei o Debian, fiz uma instalação bem limpa e não veio meu inb e outb, mais preciso deles. O que fazer? Andei pesquisando e não achei nada e com uma conversa com Danilo Cesar&lt;<a href="http://roboticalivre.org">roboticalivre.org</a>&gt; ele me falou que no histórico da lista do robótica livre tinha algo que ele postou em outubro de 2007.</p>
<p>Então vamos ao que interessa colocar os comandos de volta.<br />
** LEMBRANDO USAR root ***</p>
<p>Tem que baixar o binário do ioport&lt;<a href="http://www.tuy.com.br/download/ioport">http://www.tuy.com.br/download/ioport</a>&gt;.<br />
Salvar ele na pasta /bin</p>
<p>Depois criar links simbólicos para ele.</p>
<div class="term">$ cd /bin<br />
$ ln -s ioport outb<br />
$ ln -s ioport outl<br />
$ ln -s ioport outw<br />
$ ln -s ioport inb<br />
$ ln -s ioport inl<br />
$ ln -s ioport inw</div>
<p>Pronto agora pode botar fé que vai funcionar os outb e inb.</p>
<p>Créditos <a href="http://listas.softwarelivre.org/pipermail/roboticalivre/2007-October/000035.html">http://listas.softwarelivre.org/pipermail/roboticalivre/2007-October/000035.html</a></p>
]]></content:encoded>
			<wfw:commentRss>http://bruno.tuy.com.br/blog/?feed=rss2&amp;p=108</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Brinquedo novo</title>
		<link>http://bruno.tuy.com.br/blog/?p=97</link>
		<comments>http://bruno.tuy.com.br/blog/?p=97#comments</comments>
		<pubDate>Sat, 19 Dec 2009 15:44:31 +0000</pubDate>
		<dc:creator>BrunoTuy</dc:creator>
				<category><![CDATA[Programação]]></category>
		<category><![CDATA[arduino]]></category>
		<category><![CDATA[hardware]]></category>
		<category><![CDATA[protoboard]]></category>

		<guid isPermaLink="false">http://bruno.tuy.com.br/blog/?p=97</guid>
		<description><![CDATA[Até que fim chegou, um mês depois do pedido que fiz via internet chegou o meu arduino Duemilanove.


Funcionou beleza no ubuntu, só plugar e usar. No gentoo reconheceu depois de compilar o kernel com o ftdi, mais não consegui ainda instalar o gcc-avr no gentoo.
]]></description>
			<content:encoded><![CDATA[<p>Até que fim chegou, um mês depois do pedido que fiz via internet chegou o meu arduino Duemilanove.</p>
<p><img src="http://lh6.ggpht.com/_BoCKMqmIi1k/Syzz4AoxyeI/AAAAAAAAAJ4/HrPRXCXitR0/s640/DSC00027.JPG" alt="" /></p>
<p><img src="http://lh6.ggpht.com/_BoCKMqmIi1k/Syzz4gwvu6I/AAAAAAAAAJ8/qn4cOc7LQAE/s640/DSC00025.JPG" alt="" /></p>
<p>Funcionou beleza no ubuntu, só plugar e usar. No gentoo reconheceu depois de compilar o kernel com o ftdi, mais não consegui ainda instalar o gcc-avr no gentoo.</p>
]]></content:encoded>
			<wfw:commentRss>http://bruno.tuy.com.br/blog/?feed=rss2&amp;p=97</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Python + xml.dom &#8211; Editar um xml</title>
		<link>http://bruno.tuy.com.br/blog/?p=86</link>
		<comments>http://bruno.tuy.com.br/blog/?p=86#comments</comments>
		<pubDate>Tue, 15 Dec 2009 19:47:36 +0000</pubDate>
		<dc:creator>BrunoTuy</dc:creator>
				<category><![CDATA[Programação]]></category>
		<category><![CDATA[python]]></category>
		<category><![CDATA[xml]]></category>

		<guid isPermaLink="false">http://bruno.tuy.com.br/blog/?p=86</guid>
		<description><![CDATA[Ler e editar um xml Existente
Carregar o objeto.
&#62;&#62;&#62; xml0 = xml.dom.minidom.parse(&#8220;c:\\teste\\novo.xml&#8221;)
Imprima na tela para ver se foi carregado mesmo e verifique o conteudo
&#62;&#62;&#62; print xml0.toxml()
&#60;?xml version=&#8221;1.0&#8243; ?&#62;&#60;usuarios&#62;&#60;user id=&#8221;1&#8243; login=&#8221;bruno-tuy&#8221;&#62;Bruno Tuy&#60;/user&#62;&#60;user id=&#8221;2&#8243; login=&#8221;bruno.reis&#8221;&#62;Bruno Reis&#60;/user&#62;&#60;user id=&#8221;3&#8243; login=&#8221;lucas.mendes&#8221;&#62;Lucas Mendes&#60;/user&#62;&#60;user id=&#8221;4&#8243; login=&#8221;bruno&#8221;&#62;_Bruno_&#60;/user&#62;&#60;/usuarios&#62;
Aqui ele retornou desse jeito ai, sem quebra de linha e indentação, é a maneira ideal de salvar [...]]]></description>
			<content:encoded><![CDATA[<p>Ler e editar um xml Existente</p>
<p>Carregar o objeto.</p>
<div class="term"><strong>&gt;&gt;&gt; xml0 = xml.dom.minidom.parse(&#8220;c:\\teste\\novo.xml&#8221;)</strong></div>
<p>Imprima na tela para ver se foi carregado mesmo e verifique o conteudo</p>
<div class="term"><strong>&gt;&gt;&gt; print xml0.toxml()</strong><br />
&lt;?xml version=&#8221;1.0&#8243; ?&gt;&lt;usuarios&gt;&lt;user id=&#8221;1&#8243; login=&#8221;bruno-tuy&#8221;&gt;Bruno Tuy&lt;/user&gt;&lt;user id=&#8221;2&#8243; login=&#8221;bruno.reis&#8221;&gt;Bruno Reis&lt;/user&gt;&lt;user id=&#8221;3&#8243; login=&#8221;lucas.mendes&#8221;&gt;Lucas Mendes&lt;/user&gt;&lt;user id=&#8221;4&#8243; login=&#8221;bruno&#8221;&gt;_Bruno_&lt;/user&gt;&lt;/usuarios&gt;</div>
<p>Aqui ele retornou desse jeito ai, sem quebra de linha e indentação, é a maneira ideal de salvar o xml pois assim o programa trabalha com ele perfeitamente bem, se o seu retornou um xml com quebras de linhas e indentação vai acontecer o seguinte, o python vai entender que o enter(\n) são filhos também, ai você vai ter que tratar isso.</p>
<p>Agora vamos ler os atributos da primeira tag do xml.</p>
<div class="term"><strong>&gt;&gt;&gt; print &#8220;Id:    &#8221; + xml0.firstChild.childNodes[0].getAttribute(&#8220;id&#8221;)<br />
</strong>Id:    1<br />
<strong>&gt;&gt;&gt; print &#8220;Login: &#8221; + xml0.firstChild.childNodes[0].getAttribute(&#8220;login&#8221;)<br />
</strong>Login: bruno-tuy<br />
<strong>&gt;&gt;&gt; print &#8220;Nome:  &#8221; + xml0.firstChild.childNodes[0].firstChild.data<br />
</strong>Nome:  Bruno Tuy</div>
<p>Imprimir o atributo login da tag de id 2</p>
<div class="term"><strong>&gt;&gt;&gt; for filho in xml0.firstChild.getElementsByTagName(&#8220;user&#8221;):<br />
if (filho.getAttribute(&#8220;id&#8221;) == &#8220;2&#8243;):<br />
print filho.getAttribute(&#8220;login&#8221;)</strong></p>
<p>bruno.reis</p></div>
<p>&#8211; getElementsByTagName(&#8220;user&#8221;) pode ser substituido por childNodes</p>
<p>Apagar alguma tag</p>
<div class="term"><strong>&gt;&gt;&gt; xml0.firstChild.removeChild( xml0.firstChild.childNodes[2] )</strong><br />
&lt;DOM Element: user at 0&#215;23c16c0&gt;<br />
<strong>&gt;&gt;&gt; print xml0.toxml()<br />
</strong>&lt;?xml version=&#8221;1.0&#8243; ?&gt;&lt;usuarios&gt;&lt;user id=&#8221;1&#8243; login=&#8221;bruno-tuy&#8221;&gt;Bruno Tuy&lt;/user&gt;&lt;user id=&#8221;2&#8243; login=&#8221;bruno.reis&#8221;&gt;Bruno Reis&lt;/user&gt;&lt;user id=&#8221;4&#8243; login=&#8221;bruno&#8221;&gt;_Bruno_&lt;/user&gt;&lt;/usuarios&gt;</div>
<p>&#8211; Repare que o usuario com id 3 foi removido</p>
<p>Mudar atributos de uma tag</p>
<div class="term"><strong>&gt;&gt;&gt; xml0.firstChild.childNodes[0].setAttribute(&#8220;login&#8221;, &#8220;bruno.tuy&#8221;)<br />
&gt;&gt;&gt; print xml0.toxml()</strong></p>
<p>&lt;?xml version=&#8221;1.0&#8243; ?&gt;&lt;usuarios&gt;&lt;user id=&#8221;1&#8243; login=&#8221;bruno.tuy&#8221;&gt;Bruno Tuy&lt;/user&gt;&lt;user id=&#8221;2&#8243; login=&#8221;bruno.reis&#8221;&gt;Bruno Reis&lt;/user&gt;&lt;user id=&#8221;4&#8243; login=&#8221;bruno&#8221;&gt;_Bruno_&lt;/user&gt;&lt;/usuarios&gt;</p></div>
<p>&#8211; Veja que o atributo login da tag com id 1 foi alterado.</p>
<p>Mudar texto contido entre as tags</p>
<div class="term"><strong> &gt;&gt;&gt; xml0.firstChild.childNodes[2].firstChild.nodeValue = &#8220;Bruno&#8221;</strong><br />
<strong>&gt;&gt;&gt; print xml0.toxml()</strong><br />
&lt;?xml version=&#8221;1.0&#8243; ?&gt;&lt;usuarios&gt;&lt;user id=&#8221;1&#8243; login=&#8221;bruno.tuy&#8221;&gt;Bruno Tuy&lt;/user&gt;&lt;user id=&#8221;2&#8243; login=&#8221;bruno.reis&#8221;&gt;Bruno Reis&lt;/user&gt;&lt;user id=&#8221;4&#8243; login=&#8221;bruno&#8221;&gt;Bruno&lt;/user&gt;&lt;/usuarios&gt;</div>
<p>salvar tudo</p>
<div class="term"><strong> &gt;&gt;&gt; arq = file(&#8220;c:\\teste\\novo.xml&#8221;, &#8220;w&#8221;)<br />
&gt;&gt;&gt; xml0.writexml(arq)<br />
&gt;&gt;&gt; arq.close()</strong></div>
]]></content:encoded>
			<wfw:commentRss>http://bruno.tuy.com.br/blog/?feed=rss2&amp;p=86</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Criar xml com Python + xml.dom</title>
		<link>http://bruno.tuy.com.br/blog/?p=77</link>
		<comments>http://bruno.tuy.com.br/blog/?p=77#comments</comments>
		<pubDate>Mon, 14 Dec 2009 19:49:34 +0000</pubDate>
		<dc:creator>BrunoTuy</dc:creator>
				<category><![CDATA[Programação]]></category>
		<category><![CDATA[python]]></category>
		<category><![CDATA[xml]]></category>

		<guid isPermaLink="false">http://bruno.tuy.com.br/blog/?p=77</guid>
		<description><![CDATA[Post rapido para salvar algo que fiz hoje e preciso lembrar durante um bom tempo. Trabalhando com XML usando python.
Criando um XML.
&#62;&#62;&#62; NewXml = xml.dom.minidom.Document()
Criando o elementos root do XML(TAGS).
&#62;&#62;&#62; tag = NewXml.createElement(&#8220;lista&#8221;)
&#62;&#62;&#62; NewXml.appendChild(tag)
Criando elementos do XML(TAGS).
&#62;&#62;&#62; tag = NewXml.createElement(&#8220;usuario&#8221;)
Criando atributos
&#62;&#62;&#62; tag.setAttribute(&#8220;login&#8221;, &#8220;burno.tuy&#8221;)
&#62;&#62;&#62; tag.setAttribute(&#8220;senha&#8221;, &#8220;123456&#8243;)
Colocar um texto entre as tags.
&#62;&#62;&#62; texto = NewXml.createTextNode(&#8220;Bruno Tuy&#8221;)
&#62;&#62;&#62; tag.appendChild(texto)
Agora [...]]]></description>
			<content:encoded><![CDATA[<p>Post rapido para salvar algo que fiz hoje e preciso lembrar durante um bom tempo. Trabalhando com XML usando python.</p>
<p>Criando um XML.</p>
<div class="term"><strong>&gt;&gt;&gt; NewXml = xml.dom.minidom.Document()</strong></div>
<p>Criando o elementos root do XML(TAGS).</p>
<div class="term"><strong>&gt;&gt;&gt; tag = NewXml.createElement(&#8220;lista&#8221;)<br />
&gt;&gt;&gt; NewXml.appendChild(tag)</strong></div>
<p>Criando elementos do XML(TAGS).</p>
<div class="term"><strong>&gt;&gt;&gt; tag = NewXml.createElement(&#8220;usuario&#8221;)</strong></div>
<p>Criando atributos</p>
<div class="term"><strong>&gt;&gt;&gt; tag.setAttribute(&#8220;login&#8221;, &#8220;burno.tuy&#8221;)<br />
&gt;&gt;&gt; tag.setAttribute(&#8220;senha&#8221;, &#8220;123456&#8243;)</strong></div>
<p>Colocar um texto entre as tags.</p>
<div class="term"><strong>&gt;&gt;&gt; texto = NewXml.createTextNode(&#8220;Bruno Tuy&#8221;)<br />
&gt;&gt;&gt; tag.appendChild(texto)</strong></div>
<p>Agora colocar o elemento criado no XML</p>
<div class="term"><strong>&gt;&gt;&gt; NewXml.firstChild.appendChild(tag)</strong></div>
<p>Só pra confirmar é bom imprimir o xml</p>
<div class="term"><strong>&gt;&gt;&gt; print NewXml.toxml()</strong></div>
<p>Agora vamos salvar</p>
<div class="term"><strong>&gt;&gt;&gt; arq = file(&#8220;c:\\teste\\novo.xml&#8221;, &#8220;w&#8221;)<br />
&gt;&gt;&gt; NewXml.writexml(arq)<br />
&gt;&gt;&gt; arq.close()</strong></div>
<p>O arquivo já vai aparecer la salvo, mais meio complicado pra leitura, se quiser deixar ele mais legível pode usar alguns parâmetros no write. Exemplo:</p>
<div class="term"><strong>&gt;&gt;&gt; NewXml.writexml(arq, &#8221;  &#8220;, &#8221;  &#8220;, &#8220;\n&#8221;, &#8220;UTF-8&#8243;)</strong></div>
<p>- Primeiro argumento o arquivo<br />
- Segundo a indentação inicial.<br />
- Terceiro a indentação adicional.<br />
- Quarto argumento o que vai ser usado no final da tag.<br />
- Quinto a codificação</p>
]]></content:encoded>
			<wfw:commentRss>http://bruno.tuy.com.br/blog/?feed=rss2&amp;p=77</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Configurando MRTG para gerar grafico de uso de banda</title>
		<link>http://bruno.tuy.com.br/blog/?p=72</link>
		<comments>http://bruno.tuy.com.br/blog/?p=72#comments</comments>
		<pubDate>Wed, 02 Sep 2009 18:44:18 +0000</pubDate>
		<dc:creator>BrunoTuy</dc:creator>
				<category><![CDATA[Servidor]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[crond]]></category>
		<category><![CDATA[mrtg]]></category>
		<category><![CDATA[snmp]]></category>

		<guid isPermaLink="false">http://bruno.tuy.com.br/blog/?p=72</guid>
		<description><![CDATA[Somente um lembrete para os passos da configuração&#8230;
Vamos partir do ponto que sua maquina já esta com snmp configurando e funcionando.
Para gerar o arquivo de configuração do mrtg devemos usar:
$ cfgmaker –global ‘WorkDir: /var/www/mrtg’ –output /etc/mrtg/mrtg.cfg public@localhost
Onde:
- WorkDir é pasta que ficara salvo todos os arquivos referente aos gráficos.
- output o arquivo de configuração do [...]]]></description>
			<content:encoded><![CDATA[<p>Somente um lembrete para os passos da configuração&#8230;</p>
<p>Vamos partir do ponto que sua maquina já esta com snmp configurando e funcionando.</p>
<p>Para gerar o arquivo de configuração do mrtg devemos usar:</p>
<div class='term'>$ cfgmaker –global ‘WorkDir: /var/www/mrtg’ –output /etc/mrtg/mrtg.cfg public@localhost</div>
<p>Onde:<br />
- WorkDir é pasta que ficara salvo todos os arquivos referente aos gráficos.<br />
- output o arquivo de configuração do mrtg.<br />
- public@localhost é a comunidade @ maquina. Parâmetro configurado no snmp.</p>
<p>Esse comando vai gerar o arquivo de configuração com todas as interfaces de rede da maquina. Depois você pode ir nesse arquivo e editar, deixar somente o que interessa para você.</p>
<p>Agora vamos gerar o index.html da pasta:</p>
<div class='term'>$ indexmaker –output=/var/www/html/mrtg/index.html /etc/mrtg/mrtg.cfg</div>
<p>Agora verifique se existe um arquivo chamado mrtf.conf na pasta /etc/httpd/conf.d/ se existir apague.<br />
Entre na pasta /var/www/html e crie um link simbólico para a pasta do mrtg:</p>
<div class='term'>$ ln -s /var/www/mrtg /var/www/html/mrtg</div>
<p>Faça um agendamento no cron para que o gráfico seja atualizado de tempos em tempos:</p>
<div class='term'>$ contab -e</div>
<p>Na ultima linha adicione:<br />
*/15 * * * * env LANG=C /usr/bin/mrtg /etc/mrtg/mrtg.cfg</p>
<p>Essa linha agenda para a cada 15 minutos executar o mrtg<br />
Salve e pode da um restart no crond</p>
]]></content:encoded>
			<wfw:commentRss>http://bruno.tuy.com.br/blog/?feed=rss2&amp;p=72</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Gravando bootloader ARDUINO</title>
		<link>http://bruno.tuy.com.br/blog/?p=59</link>
		<comments>http://bruno.tuy.com.br/blog/?p=59#comments</comments>
		<pubDate>Tue, 25 Aug 2009 05:31:33 +0000</pubDate>
		<dc:creator>BrunoTuy</dc:creator>
				<category><![CDATA[linux]]></category>
		<category><![CDATA[arduino]]></category>
		<category><![CDATA[hardware]]></category>
		<category><![CDATA[protoboard]]></category>

		<guid isPermaLink="false">http://bruno.tuy.com.br/blog/?p=59</guid>
		<description><![CDATA[Minha primeira aventura com o arduino foi a gravação do boot dele, que pra variar comecou com problemas, inicialmente minha maquina não tinha a porta paralela, tive que descobrir o modulo responsavel por ela, depois da porta subir tento gravar e recebo esse erro de presente:
avrdude: AVR device not responding
avrdude: initialization failed, rc=-1
avrdude: Yikes!  [...]]]></description>
			<content:encoded><![CDATA[<p>Minha primeira aventura com o arduino foi a gravação do boot dele, que pra variar comecou com problemas, inicialmente minha maquina não tinha a porta paralela, tive que descobrir o modulo responsavel por ela, depois da porta subir tento gravar e recebo esse erro de presente:</p>
<p>avrdude: AVR device not responding<br />
avrdude: initialization failed, rc=-1<br />
avrdude: Yikes!  Invalid device signature.<br />
avrdude: Expected signature for ATMEGA168 is 1E 94 06<br />
avrdude: AVR device not responding<br />
 ***failed;<br />
 avrdude: verification error, first mismatch at byte 0&#215;0000<br />
          0&#215;00 != 0&#215;07<br />
avrdude: verification error; content mismatch</p>
<p>Lembrando, eu estou usando conexão icsp passada la pelo proprio site do arduino.</p>
<p>A solução para esse problema foi, retirar todos os resistores.<br />
Realmente meu atmega não respondia ao arduino, mais isso por que?<br />
A porta paralela de minha maquina por algum motivo esta trabalhando com voltagem abaixo do que deveria, o nivel alto dela segundo o meu multimetro esta em 3,45v. Essa voltagem já baixa com os resistores ficava direto em nivel logico 0 para o atmega então ele não recebia informação nenhuma =P</p>
]]></content:encoded>
			<wfw:commentRss>http://bruno.tuy.com.br/blog/?feed=rss2&amp;p=59</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
	</channel>
</rss>
