<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-6987733211537734100</id><updated>2011-11-05T06:52:51.342-07:00</updated><category term='Nerdices'/><category term='Programação'/><category term='o que ando ouvindo e o que escuto andando'/><category term='My Apps'/><category term='Wheel Reinventions'/><category term='Toy Languages'/><title type='text'>voidbrainvoid</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://voidbrainvoid.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6987733211537734100/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://voidbrainvoid.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>/dev/null</name><uri>http://www.blogger.com/profile/09701218265443888880</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>9</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-6987733211537734100.post-5719294165327452261</id><published>2011-11-05T06:07:00.001-07:00</published><updated>2011-11-05T06:52:51.384-07:00</updated><title type='text'>Tulip - tablaturas à partir da boa e velha cifra numérica</title><content type='html'>&lt;div style="text-align: justify;"&gt;Criei esse programa há uns 6/7 anos atrás por uma necessidade... precisava passar umas músicas que tinha anotadas em cifra numérica para tablatura, pois o negócio aqui estava feio, tinha acumulado muitos papéis com anotações de músicas que fui tirando ao longo dos anos.&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;Originalmente fiz ele no Linux mas depois portei uma versão para Windows também.&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;Hoje em dia muita gente que começa não aprende essa notação, uma pena porque ela é bem prática, mas passá-la para tablatura é muito cansativo e chato.&lt;br /&gt;&lt;br /&gt;Pois bem, cifra numérica é isso aqui (a boa e velha escala cromática):&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;60-61-62-63-64-&lt;br /&gt;50-51-52-53-54-&lt;br /&gt;40-41-42-43-44-&lt;br /&gt;30-31-32-33-34-&lt;br /&gt;20-21-22-23-24-&lt;br /&gt;10-11-12-13-14-|&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;O que o tulip faz é pegar uma música expressa nesses moldes e gerar a tablatura.&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;Chega de conversa, aproveitando o mês das bruxas vai aí o riff de "Burn The Witch" do "QoTSA" em linguagem "Tulip".&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;Vamos criar uma arquivo "burn_the_witch.tlp" em "C:\tulip"&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;ol class="codeblock"&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;_brainbox=&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;  CUT_TAB_TO_SAVE=yes;&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;;_brainbox&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;&lt;/code&gt;&lt;br /&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;_headbox=&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;Burn The Witch Riff (QoTSA)&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;Tunning C drop&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;&lt;/code&gt;&lt;br /&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;;_headbox&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;&lt;/code&gt;&lt;br /&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;_bodybox=&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;  .quote{"\n\nIntro\n\n"}&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;  .chord{64-56-46}-.chord{64-56-46}.repeat{3}-;&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;  .quote{"\n\nMain riff\n\n"}&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;  .chord{64-56-46}-.chord{64-56-46}-|-34-46-44-|-&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;  .chord{64-56-46}-.chord{64-56-46}-|-44-56-54-67-;&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;;_bodybox&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;&lt;/code&gt;&lt;br /&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;_tailbox=&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;&lt;/code&gt;&lt;br /&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;  That's all folks!&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;;_tailbox&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;&lt;/code&gt;&lt;br /&gt;&lt;/li&gt;&lt;br /&gt;&lt;/ol&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;&lt;div style="text-align: justify;"&gt;Pronto, com a música codificada tudo que precisamos é entregar ao tulip o arquivo para que ele gere o arquivo ".txt" com a tablatura. O tulip estando instalado em "C:\Tulip", no prompt de comando digite:&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;tulip burn_the_witch.tlp burn_the_witch.txt&lt;br /&gt;&lt;br /&gt;Pressione ENTER, ele vai compilar seu código se tudo estiver ok, como você forneceu um segundo nome de arquivo, ele cria a tab com esse nome. Então "burn_the_wicth.txt" contém&lt;br /&gt;a notação em tablatura de um riff foda! :)&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;Se você colocar "C:\Tulip" na variável de ambiente "PATH" poderá chamá-lo dentro do prompt de comando à partir de qualquer pasta.&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;Esse software me foi bem útil na época e confesso que ainda hoje é ele que uso para passar minhas transcrições para o PC.&lt;br /&gt;&lt;br /&gt;O maior desafio e diversão foi criar algo que pudesse expressar  computacionalmente a cifra numérica, como na época estava usando muito o  LaTeX, aquelas macros TeX acabaram sendo uma inspiração.&lt;br /&gt;&lt;br /&gt;No exemplo passado não deu para mostrar, mas o Tulip possui um aspecto recurssivo em sua sintaxe o que permite a combinação de tags para expressar combinações de técnicas, imagine um palm mute do acorde E na 7ª casa da guitarra:&lt;br /&gt;&lt;br /&gt;&lt;ol class="codeblock"&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;.mute{&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;    .chord{57-49-39-29}-&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;    .chord{57-49-39-29}-&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;    .chord{57-49-39-29}&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;}&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;/ol&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;Como desenvolvedor pude finalmente usar recurssividade para um problema mais prático, foi legal a ver a utilidade do conceito indo além daqueles fatoriais idiotas que todo mundo um dia já precisou fazer. Já parou para pensar como a recurssividade está em tudo na computação? E até fora dela... mas enfim deixa isso para outra hora...&lt;br /&gt;&lt;br /&gt;Teve um outro recurso que depois coloquei, foi o de filtrar as infos básicas de um MIDI gerando o código Tulip e dele a tablatura. A experiência que tirei ao codificar esse recurso no aplicativo foi que parsear MIDIs é um blues, não há padrão é tudo bagunçado tira sua sanidade fácil, fácil.&lt;br /&gt;&lt;br /&gt;Amigo desenvolver se precisar parsear MIDIs boa sorte!!&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6987733211537734100-5719294165327452261?l=voidbrainvoid.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6987733211537734100/posts/default/5719294165327452261'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6987733211537734100/posts/default/5719294165327452261'/><link rel='alternate' type='text/html' href='http://voidbrainvoid.blogspot.com/2011/11/tulip-tablaturas-partir-da-boa-e-velha.html' title='Tulip - tablaturas à partir da boa e velha cifra numérica'/><author><name>/dev/null</name><uri>http://www.blogger.com/profile/09701218265443888880</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-6987733211537734100.post-1133247234753302405</id><published>2011-08-28T06:29:00.000-07:00</published><updated>2011-08-28T07:19:47.246-07:00</updated><title type='text'>Ain't It Funky Now! Vol. 1</title><content type='html'>Um dos meus discos favoritos de um dos meus guitarristas de Jazz favoritos!&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/-ZPWC3KpOI14/TlpHn2a5_QI/AAAAAAAAABQ/CmDMMtTVqQM/s1600/green_funky.jpg"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 320px; height: 318px;" src="http://1.bp.blogspot.com/-ZPWC3KpOI14/TlpHn2a5_QI/AAAAAAAAABQ/CmDMMtTVqQM/s320/green_funky.jpg" alt="" id="BLOGGER_PHOTO_ID_5645903832811175170" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;Grant Green é um guitarrista com um fraseado inconfundível, depois da primeira audição, qualquer coisa que você ouvir por aí dele e mesmo não sabendo que é dele, vai suspeitar ser dele :) Uma das primeiras músicas que curti está num álbum chamado "The Final Comedown", se trata da música "Slight Fear and Terror".&lt;br /&gt;&lt;br /&gt;Apesar de ser um guitarrista de Jazz, Grant Green também curtia Funky (veja funky, ok? em tempos estes é melhor usar o "y")... "Ain't It Funky Now!" (você deve saber a quem remete essa música/disco e o que torna o termo "funky", neste contexto até um pleonasmo...) traz esse lado mais funky, embora outros discos também tragam e este disco não ser considerado tão bom pelos críticos (embora não aconselhe consumir coisas com base em críticas, pois você pode perder certas preciosidades incompreendidas ao paladar da maioria)...&lt;br /&gt;&lt;br /&gt;Na verdade não é um álbum que talvez possa entrar na discografia oficial, pois se trata mais de uma compilação. Sim, Grant Green era um guitarrista de Jazz funky que vez isso magistralmente ao longo de sua carreira.&lt;br /&gt;&lt;br /&gt;"Ain't It Funky Now!" traz uma música que baixei na época em que estava conhecendo o som do cara e que estava incompleta... Sei que acabei gravando isso em um CD e perdi o arquivo MP3. Pronto,  acabou que tinha gravada uma música que curtia mas não sabia o nome e ainda estava incompleta (não sei o porquê de não ter baixado ela de novo na época), o CD-R vagaba ainda descascou e perdi definitivamente qualquer referência a música, enfim, depois de muito ouvir e pesquisar acabei tendo a agradável surpresa de topar com ela nesse álbum, isso anos depois... :)&lt;br /&gt;&lt;br /&gt;O nome da música? Bem fácil de guardar e sugerir, na verdade eram duas: "I don't want nobody to give me nothing (open up the door I'll get it myself)" e "Cold sweat".&lt;br /&gt;&lt;br /&gt;Pois bem, te faço um desafio: ouça este album procurando não marcar o ritmo das músicas com as mãos, pés, cabeça... E nem cantarolar os grooves/temas ao longo do dia após tê-lo ouvido.&lt;br /&gt;&lt;br /&gt;E sabe mais o que tenho para te dizer?&lt;br /&gt;&lt;br /&gt;"You're" gonna groove!&lt;br /&gt;&lt;br /&gt;;)&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6987733211537734100-1133247234753302405?l=voidbrainvoid.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6987733211537734100/posts/default/1133247234753302405'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6987733211537734100/posts/default/1133247234753302405'/><link rel='alternate' type='text/html' href='http://voidbrainvoid.blogspot.com/2011/08/aint-it-funky-now-vol-1.html' title='Ain&apos;t It Funky Now! Vol. 1'/><author><name>/dev/null</name><uri>http://www.blogger.com/profile/09701218265443888880</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/-ZPWC3KpOI14/TlpHn2a5_QI/AAAAAAAAABQ/CmDMMtTVqQM/s72-c/green_funky.jpg' height='72' width='72'/></entry><entry><id>tag:blogger.com,1999:blog-6987733211537734100.post-1537013193039647823</id><published>2011-07-16T19:25:00.000-07:00</published><updated>2011-07-17T06:42:58.131-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Programação'/><category scheme='http://www.blogger.com/atom/ns#' term='My Apps'/><category scheme='http://www.blogger.com/atom/ns#' term='Toy Languages'/><category scheme='http://www.blogger.com/atom/ns#' term='Nerdices'/><category scheme='http://www.blogger.com/atom/ns#' term='Wheel Reinventions'/><title type='text'>Uma linguagem para parseamento de buffers...</title><content type='html'>Eu sei "regex", "awk", mas é mal de cientista da computação... Queria meu próprio "Bufferstein".&lt;br /&gt;&lt;br /&gt;Há 3 anos atrás pude proferir "It's alive, it's alive" com minha própria linguagem para parsing de buffers.&lt;br /&gt;&lt;br /&gt;Não regulo muito e resolvi criar algo orientado à instruções, imagine um ASSEMBLY só que para buffers... Mas esse pseudo-ASSEMBLY é realmente alienígena!&lt;br /&gt;&lt;br /&gt;É a BPL (Buffer Parsing Language), confesso que já fui mais criativo em acrônimos, e realmente é uma sigla bem genérica, hehe.&lt;br /&gt;&lt;br /&gt;As instruções BPL (bem atômicas até certo ponto) são:&lt;br /&gt;&lt;center&gt;&lt;table border="0"&gt;&lt;br /&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;b&gt;INSTRUÇÃO&lt;/b&gt;&lt;/td&gt;&lt;td&gt;&lt;b&gt;AÇÃO&lt;/b&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;aux&lt;/td&gt;&lt;td&gt;Cria um registrador auxiliar&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;set&lt;/td&gt;&lt;td&gt;Seta todo conteúdo de um buffer&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;wlk&lt;/td&gt;&lt;td&gt;Incrementa/decrementa ponteiro de deslocamento do buffer&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;ldb&lt;/td&gt;&lt;td&gt;Põe um byte no offset atual de um buffer&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;bob&lt;/td&gt;&lt;td&gt;"Ela é do tempo do bob!" :) Checa por início de buffer&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;eob&lt;/td&gt;&lt;td&gt;"This is the end..." @:D Checa pelo final do buffer&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;jmp&lt;/td&gt;&lt;td&gt;Salto condicional&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;lbl&lt;/td&gt;&lt;td&gt;Adiciona marcação de label no código, usado nos jumps&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;add&lt;/td&gt;&lt;td&gt;Incrementa valor contido na posição de memória atual do buffer&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;sub&lt;/td&gt;&lt;td&gt;Similar a add mas em termos de decremento&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;mul&lt;/td&gt;&lt;td&gt;Similar a sub mas em termos de multiplicação&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;div&lt;/td&gt;&lt;td&gt;Similar a mul mas em termos de divisão&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;alu&lt;/td&gt;&lt;td&gt;Resolve uma expressão lógica&lt;/td&gt;&lt;/tr&gt;   &lt;tr&gt;&lt;td&gt;var&lt;/td&gt;&lt;td&gt;Cria uma variável, ok, me chame de Herege ASSEMBLY people&lt;/td&gt;&lt;/tr&gt;&lt;br /&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;/center&gt;&lt;br /&gt;&lt;br /&gt;Cada instrução informada tem suas particularidades quanto à passagem de parâmetros, caso queira saber mais, encontre os detalhes na documentação informada no final desse post.&lt;br /&gt;&lt;br /&gt;Que tal exemplos:&lt;br /&gt;&lt;br /&gt;&lt;ol class="codeblock"&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;# Rot13 em C-Strings&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;var byte %byte 0x0&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;lbl ___DO_ROT13&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;  ldb %byte BUF&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;  jmp eq BUF 0x00 ___WALK_ON ___CONTINUE&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;  lbl ___CONTINUE&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;  sub %byte 13&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;  ldb BUF %byte&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;  lbl ___WALK_ON&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;      wlk &amp;gt; BUF&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;      eob %byte BUF&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;      jmp ne %byte 1 ___DO_ROT13 ___END_ROT13&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;lbl ___END_ROT13&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;/ol&gt;&lt;br /&gt;Um maior, que atesta minha loucura :P&lt;br /&gt;&lt;br /&gt;&lt;ol class="codeblock"&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;#&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;# ``urldecoding.bpl'' ( Thu 08 May 2008 10:10:42 AM UTC )&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;#&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;# URL decoding sem suporte para Utf-8&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;#&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;var byte %result_flag 0&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;aux %nibble_l 1&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;aux %nibble_h 1&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;aux %buf 8192&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;lbl ___NEXT_HEX_BYTE&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt; eob %result_flag BUF&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt; jmp eq %result_flag 1 ___DECODING_END ___DO_NEXT_HEX_BYTE&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;lbl ___DO_NEXT_HEX_BYTE&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt; jmp eq BUF "%" ___HEX_2_CHAR_BYTE ___NEXT_HEX_BYTE_CONTINUE&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;lbl ___NEXT_HEX_BYTE_CONTINUE&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt; jmp eq BUF "+" ___PLUS_2_SPACE ___SIMPLE_ASSIGMENT&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;lbl ___PLUS_2_SPACE&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt; ldb %buf " "&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt; jmp eq %buf " " ___POINTER_AHEAD ___POINTER_AHEAD # goto ;)&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;lbl ___SIMPLE_ASSIGMENT&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt; ldb %buf BUF&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;lbl ___POINTER_AHEAD&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt; wlk &amp;gt; %buf&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt; wlk &amp;gt; BUF&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt; jmp eq 1 1 ___NEXT_HEX_BYTE ___NEXT_HEX_BYTE&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;lbl ___HEX_2_CHAR_BYTE&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt; wlk &amp;gt; BUF #[%]XX -&amp;gt; %[X]X&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt; ldb %nibble_h BUF&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt; jmp ge %nibble_h "0" ___IS_NUMBER_H ___NOT_NUMBER_H&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;lbl ___IS_NUMBER_H&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt; jmp le %nibble_h "9" ___NUMBER_2_DEC_H ___NOT_NUMBER_H&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;lbl ___NOT_NUMBER_H&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt; jmp ge %nibble_h "a" ___IS_LWR_ALPHA_H ___NOT_LWR_ALPHA_H&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;lbl ___IS_LWR_ALPHA_H&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt; jmp le %nibble_h "f" ___LWR_ALPHA_2_DEC_H ___NOT_LWR_ALPHA_H&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;lbl ___NOT_LWR_ALPHA_H&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt; jmp ge %nibble_h "A" ___IS_UPR_ALPHA_H ___NOT_UPR_ALPHA_H&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;lbl ___IS_UPR_ALPHA_H&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt; jmp le %nibble_h "F" ___UPR_ALPHA_2_DEC_H ___NOT_UPR_ALPHA_H&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;lbl ___NOT_UPR_ALPHA_H&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt; ldb %buf BUF&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt; wlk &amp;gt; BUF&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt; wlk &amp;gt; %buf&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt; jmp eq 1 1 ___NEXT_HEX_BYTE ___NEXT_HEX_BYTE&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;lbl ___NUMBER_2_DEC_H&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt; sub %nibble_h 48&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt; jmp eq 1 1 ___NEXT_NIBBLE ___NEXT_NIBBLE&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;lbl ___LWR_ALPHA_2_DEC_H&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt; sub %nibble_h 87&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt; jmp eq 1 1 ___NEXT_NIBBLE ___NEXT_NIBBLE&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;lbl ___UPR_ALPHA_2_DEC_H&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt; sub %nibble_h 55&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;lbl ___NEXT_NIBBLE&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt; mul %nibble_h 16&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt; wlk &amp;gt; BUF #%[X]X -&amp;gt; %X[X]&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt; ldb %nibble_l BUF&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt; jmp ge %nibble_l "0" ___IS_NUMBER_L ___NOT_NUMBER_L&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;lbl ___IS_NUMBER_L&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt; jmp le %nibble_l "9" ___NUMBER_2_DEC_L ___NOT_NUMBER_L&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;lbl ___NOT_NUMBER_L&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt; jmp ge %nibble_l "a" ___IS_LWR_ALPHA_L ___NOT_LWR_ALPHA_L&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;lbl ___IS_LWR_ALPHA_L&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt; jmp le %nibble_l "f" ___LWR_ALPHA_2_DEC_L ___NOT_LWR_ALPHA_L&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;lbl ___NOT_LWR_ALPHA_L&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt; jmp ge %nibble_l "A" ___IS_UPR_ALPHA_L ___NOT_UPR_ALPHA_L&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;lbl ___IS_UPR_ALPHA_L&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt; jmp le %nibble_l "F" ___UPR_ALPHA_2_DEC_L ___NOT_UPR_ALPHA_L&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;lbl ___NOT_UPR_ALPHA_L&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt; ldb %buf BUF&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt; wlk &amp;gt; BUF&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt; wlk &amp;gt; %buf&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt; jmp eq 1 1 ___NEXT_HEX_BYTE ___NEXT_HEX_BYTE&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;lbl ___NUMBER_2_DEC_L&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt; sub %nibble_l 48&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt; jmp eq 1 1 ___ADJUST_L ___ADJUST_L&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;lbl ___LWR_ALPHA_2_DEC_L&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt; sub %nibble_l 87&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt; jmp eq 1 1 ___ADJUST_L ___ADJUST_L&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;lbl ___UPR_ALPHA_2_DEC_L&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt; sub %nibble_l 55&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt; jmp eq 1 1 ___ADJUST_L ___ADJUST_L&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;lbl ___ADJUST_L&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt; add %nibble_h %nibble_l&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt; ldb %buf %nibble_h&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt; wlk &amp;gt; %buf&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt; wlk &amp;gt; BUF&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt; jmp eq 1 1 ___NEXT_HEX_BYTE ___NEXT_HEX_BYTE&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;lbl ___DECODING_END&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt; set BUF "\0x00"&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;lbl ___GET_BUF_REG_BEGIN&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt; wlk &amp;lt; %buf&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt; bob %result_flag %buf&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt; jmp ne %result_flag 1 ___GET_BUF_REG_BEGIN ___OVERWRITE_INPUT&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;lbl ___OVERWRITE_INPUT&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt; ldb BUF %buf&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt; wlk &amp;gt; %buf&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt; wlk &amp;gt; BUF&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt; eob %result_flag %buf&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt; jmp eq %result_flag 1 ___DONE ___OVERWRITE_INPUT&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;lbl ___DONE&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;/ol&gt;&lt;br /&gt;É, criei um monstro.&lt;br /&gt;&lt;br /&gt;&lt;center&gt;&lt;br /&gt;"Inquirrível funquiciona. Está vivo, está vivo! MuAhhauahuahauh."&lt;br /&gt;-- Dr. Bufferstein.&lt;br /&gt;&lt;/center&gt;&lt;br /&gt;&lt;br /&gt;Pensei em criar a BPL enquanto desenvolvia um sniffer e esbarrei no problema de filtrar de forma geral dados vindos de protocolos layer7.&lt;br /&gt;&lt;br /&gt;Meu sniffer no caso trabalha com uma linguagem bem específica que permite acesso aos campos dos protocolos de camada de rede e transporte, mas é impossível criar todos os campos para protocolos layer7 visto que à cada hora surge um novo (eita exagero)...&lt;br /&gt;&lt;br /&gt;Nisso a BPL resolvia meu problema, entregando ao usuário a responsabilidade de criar seus próprios filtros para extração da informação layer7 desejada.&lt;br /&gt;&lt;br /&gt;Fora que os usuários do sniffer podem criar seus próprios parsers e distribuir isso como funções de biblioteca.&lt;br /&gt;&lt;br /&gt;Mas esse sniffer é outro post.&lt;br /&gt;&lt;br /&gt;Documentação e compilador/interpretador em: &lt;a href="http://www.4shared.com/file/qEtdZkKI/BPL_pack.html" target="_vblank"&gt;BPL_pack&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Igor para Dr. Bufferstein:&lt;br /&gt;&lt;br /&gt;&lt;center&gt;&lt;br /&gt;"- Qual é o próximo plano mestre??"&lt;br /&gt;"- Parsearemos o Mundo..."&lt;br /&gt;"- Bom!"&lt;br /&gt;&lt;/center&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/-AGSr9Hs-OZI/TiJI_12Ly8I/AAAAAAAAABI/GboSDqdc-PQ/s1600/Young%2BFrankenstein%2Bsaid%2Ba%2Bgive.jpg"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 288px; height: 214px;" src="http://3.bp.blogspot.com/-AGSr9Hs-OZI/TiJI_12Ly8I/AAAAAAAAABI/GboSDqdc-PQ/s320/Young%2BFrankenstein%2Bsaid%2Ba%2Bgive.jpg" alt="" id="BLOGGER_PHOTO_ID_5630142745789844418" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6987733211537734100-1537013193039647823?l=voidbrainvoid.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6987733211537734100/posts/default/1537013193039647823'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6987733211537734100/posts/default/1537013193039647823'/><link rel='alternate' type='text/html' href='http://voidbrainvoid.blogspot.com/2011/07/uma-linguagem-para-parseamento-de.html' title='Uma linguagem para parseamento de buffers...'/><author><name>/dev/null</name><uri>http://www.blogger.com/profile/09701218265443888880</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/-AGSr9Hs-OZI/TiJI_12Ly8I/AAAAAAAAABI/GboSDqdc-PQ/s72-c/Young%2BFrankenstein%2Bsaid%2Ba%2Bgive.jpg' height='72' width='72'/></entry><entry><id>tag:blogger.com,1999:blog-6987733211537734100.post-1000035847477515583</id><published>2011-07-16T19:19:00.000-07:00</published><updated>2011-07-16T19:22:52.734-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Programação'/><category scheme='http://www.blogger.com/atom/ns#' term='Nerdices'/><title type='text'>Python impressions</title><content type='html'>Na linha do "me dê uma alavanca e um ponto de apoio que moverei o mundo"... "me dê um interpretador e um editor de textos que resolverei tudo" é o que um programador python deve sentir.&lt;br /&gt;&lt;br /&gt;Não tinha tido muito contato com essa linguagem ainda, mas no trabalho tenho sido forçado usá-la e confesso que tinha uma idéia errada dela...&lt;br /&gt;&lt;br /&gt;Certas coisas são muito fáceis, intuitivas e claras, contudo, a endentação é uma coisa que não ajuda muito. Não pelo fato de se endentar errado, mas a visualização do código principalmente se você não largar umas linhas em branco, contribui produzir uma maçaroca de código que franzirá tua testa ao ler de primeira algo escrito na linguagem.&lt;br /&gt;&lt;br /&gt;Mandracarias bem escrotinhas diga-se de passagem. Falo principalmente de __init__.py... "Whatta fuck porra is that?!", tem tanta coisa que é assumida, será que não dá para se esforçar um pouco e deduzir/assumir isso também?&lt;br /&gt;&lt;br /&gt;A interface de sockets é mais ou menos. Mexeram em certas coisas. Mexer na API clássica de sockets é a mesma coisa que mudar o formato de uma Strato, de uma Les Paul.... Enfim, eu sei lá.&lt;br /&gt;&lt;br /&gt;O módulo de threads segue a "filosofia" Java de se lidar com a coisa: você não pode pausar, resumir ou cancelar um thread. Tisss... E aí?&lt;br /&gt;&lt;br /&gt;Unicode blues.&lt;br /&gt;&lt;br /&gt;Vantagens: coisas bem na cara... Se você já conhece C, as funções da libc que você encontra até em caixas de sapato... POSIX te diz algo? (bom, mas isso é outra história...) Se conhecer isso a introdução básica no site do python já vai ser bem informativa.&lt;br /&gt;&lt;br /&gt;Outra fonte que indico é "dive into python", se trata de um livro com alguns extratos on-line e free.&lt;br /&gt;&lt;br /&gt;Taí dois bons pontos de partida que me são bem úteis.&lt;br /&gt;&lt;br /&gt;Minha impressão até o momento: Python é bom para resolver coisas que não posso ou não quero gastar tempo em cima. Em resumo bem prática, uma boa linguagem de apoio.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6987733211537734100-1000035847477515583?l=voidbrainvoid.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6987733211537734100/posts/default/1000035847477515583'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6987733211537734100/posts/default/1000035847477515583'/><link rel='alternate' type='text/html' href='http://voidbrainvoid.blogspot.com/2011/07/python-impressions.html' title='Python impressions'/><author><name>/dev/null</name><uri>http://www.blogger.com/profile/09701218265443888880</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-6987733211537734100.post-3171243921158012559</id><published>2011-06-18T16:37:00.000-07:00</published><updated>2011-07-15T18:09:31.435-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='o que ando ouvindo e o que escuto andando'/><title type='text'>Led Zeppelin ao vivo</title><content type='html'>Recentemente fiquei ouvindo feito louco dois albums ótimos do Led Zeppelin:&lt;br /&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/-4oq1qvnUox8/Tf04JaFoiBI/AAAAAAAAAA4/ZhRj0rNTq_U/s1600/31LedZeppelinHowTheWestWasWoncover.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 167px; height: 167px;" src="http://1.bp.blogspot.com/-4oq1qvnUox8/Tf04JaFoiBI/AAAAAAAAAA4/ZhRj0rNTq_U/s320/31LedZeppelinHowTheWestWasWoncover.jpg" alt="" id="BLOGGER_PHOTO_ID_5619709644301174802" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;"How The West Was Won"&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/-c3r-qZYKNNM/Tf04mRoqJsI/AAAAAAAAABA/lKJWyxD6vsY/s1600/Led_Zeppelin-The_Soundtrack_From_The_Film_The_Song_Remains_The_Same-Frontal.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 150px; height: 150px;" src="http://3.bp.blogspot.com/-c3r-qZYKNNM/Tf04mRoqJsI/AAAAAAAAABA/lKJWyxD6vsY/s320/Led_Zeppelin-The_Soundtrack_From_The_Film_The_Song_Remains_The_Same-Frontal.jpg" alt="" id="BLOGGER_PHOTO_ID_5619710140248368834" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;"The Songs Remains the Same - The Soundtrack"&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;/div&gt;Foi a redescoberta do ouro, me senti com meus 13 anos de novo. Recaí de amores pelos dois, não parei de escutá-los. Me lembrei de como o Led Zeppelin é uma banda imbatível ao vivo (e impecável em estúdio).&lt;br /&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;Acho que nem os Beatles foram tão impecáveis na carreira como essa Banda (e olha que adoro os Beatles), por isso que à cada anúncio de reunião dos remanescentes, fico torcendo para que não gravem nada inédito e corram o risco de sujar uma carreira tão imaculada :P&lt;br /&gt;&lt;br /&gt;"How The West Was Won" é formado por registros ao vivo encontrados pelo Jimmy Page enquanto procurava material para um DVD ao vivo da Banda, se não me engano aquele que tem um deserto na capa, que esqueci o nome agora.&lt;br /&gt;&lt;br /&gt;No primeiro dos 3 CDs tem uma versão de "Over The Hills and Far Away" até melhor do que em "The Songs Remains the Same - The Soundtrack".&lt;br /&gt;&lt;br /&gt;Mas no "Songs Remains" tem a música mais linda dos caras que é "The Rain Song" e uau que versão foda.&lt;br /&gt;&lt;br /&gt;"How The West" dá a impressão de uma banda mais solta sem a responsabilidade de gravar um registro ao vivo definitivo, já no "Songs" dá para sentir um cuidado maior, mas que não engessa, pois estamos falando de uma banda que tocava ao vivo igual se estivesse apenas respirando.&lt;br /&gt;&lt;br /&gt;Todos os dois albuns tem a mão do Eddie Krammer na gravação, não precisa dizer mais nada, né?&lt;br /&gt;&lt;br /&gt;Se nunca ouviu esses CDs e se julga fã de rock, você deve, e deve feio... ouví-los!&lt;br /&gt;&lt;br /&gt;:D&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6987733211537734100-3171243921158012559?l=voidbrainvoid.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6987733211537734100/posts/default/3171243921158012559'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6987733211537734100/posts/default/3171243921158012559'/><link rel='alternate' type='text/html' href='http://voidbrainvoid.blogspot.com/2011/06/led-zeppelin-ao-vivo.html' title='Led Zeppelin ao vivo'/><author><name>/dev/null</name><uri>http://www.blogger.com/profile/09701218265443888880</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/-4oq1qvnUox8/Tf04JaFoiBI/AAAAAAAAAA4/ZhRj0rNTq_U/s72-c/31LedZeppelinHowTheWestWasWoncover.jpg' height='72' width='72'/></entry><entry><id>tag:blogger.com,1999:blog-6987733211537734100.post-370730703988737346</id><published>2010-02-03T03:16:00.000-08:00</published><updated>2011-07-17T06:43:27.497-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Programação'/><category scheme='http://www.blogger.com/atom/ns#' term='My Apps'/><category scheme='http://www.blogger.com/atom/ns#' term='Nerdices'/><title type='text'>Teste qui-quadrado</title><content type='html'>&lt;div style="text-align: justify;"&gt;Às vezes precisei utilizar aplicações do teste qui-quadrado em coisas que andei fazendo, mas sempre achei muito chato ter que ficar preenchendo aquelas planilhas em excel.&lt;br /&gt;&lt;br /&gt;Acabei escrevendo um aplicativo para isso, no qual podia num único processamento realizar quantos testes qui quisesse e fora isso testar a homogeineidade das amostras, me gerando um log estatístico que julgo completo ou saídas "oráculo" do tipo "era o eu pensava", "não era o que eu pensava"&lt;br /&gt;&lt;br /&gt;(In)felizmente nunca tive necessidade de usar isso no Windows então nunca migrei para ele o aplicativo. No link à seguir o download para o binário em Linux.&lt;br /&gt;&lt;br /&gt;&lt;center&gt;&lt;br /&gt;&lt;a href="http://www.4shared.com/file/ooPDMVAV/chimera_packtar.html" target="_vblank"&gt;Chimera_pack.tar.gz&lt;/a&gt;.&lt;br /&gt;&lt;/center&gt;&lt;br /&gt;&lt;br /&gt;Eu sou um fã confesso de compiladores e acho que não existe interface melhor com um computardor senão uma linguagem bem enxuta e específica para abordar o problema (óbvio, não vai existir um usuário final que se interessará aprender isso, 0.00001% talvez). Mas o importante é criar interfaces que mastiguem isso para o usuário, penso que isso cria boas bases, dando ao aplicativo maiores possibilidades de funcionamento. Pensar num aplicativo somente como uma tela com punhados de edits e botões é muito simplório e não acho que isso seja programar computadores, talvez programar "interfaces de usuário".&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;Filosofias à parte, esse aplicativo não é diferente do que penso, via uma linguagem expresso o teste Qui para a situação, vejamos uma clássica, o da moeda viciada:&lt;br /&gt;&lt;br /&gt;"Uma moeda foi jogada n vezes e se conseguiu x vezes caras e y vezes coroas, testar se a moeda é viciada ou não"&lt;br /&gt;&lt;/div&gt;&lt;code&gt;&lt;br /&gt;&lt;code&gt;&lt;/code&gt;&lt;/code&gt;&lt;ol class="codeblock"&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;li&gt;&lt;code&gt;test "moeda_viciada" mode simple&lt;/code&gt;&lt;/li&gt;&lt;/span&gt;&lt;code&gt;&lt;code&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;alfa 5% answer statistical&lt;/span&gt;&lt;/code&gt;&lt;br /&gt;&lt;/code&gt;&lt;code&gt;&lt;code&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;li&gt;&lt;code&gt;&lt;/code&gt;&lt;br /&gt;&lt;/li&gt;&lt;/span&gt;&lt;/code&gt;&lt;/code&gt;&lt;code&gt;&lt;code&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;{&lt;/span&gt;&lt;/code&gt;&lt;/code&gt;&lt;code&gt;&lt;code&gt;&lt;/code&gt;&lt;/code&gt;&lt;code&gt;&lt;code&gt;&lt;br /&gt;&lt;/code&gt;&lt;code style="color: rgb(0, 0, 0);"&gt; &lt;/code&gt;&lt;code style="color: rgb(0, 0, 0);"&gt; &lt;/code&gt;&lt;code style="color: rgb(0, 0, 0);"&gt;&lt;/code&gt;&lt;/code&gt;&lt;code&gt;&lt;code&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;li&gt;&lt;code&gt;&lt;/code&gt;&lt;br /&gt;&lt;/li&gt;&lt;/span&gt;&lt;/code&gt;&lt;/code&gt;&lt;code&gt;&lt;code style="color: rgb(0, 0, 0);"&gt;  q = "A moeda é viciada?";&lt;/code&gt;&lt;/code&gt;&lt;code&gt;&lt;code&gt;&lt;/code&gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&lt;code&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;li&gt;&lt;code&gt;&lt;/code&gt;&lt;br /&gt;&lt;/li&gt;&lt;/span&gt;&lt;/code&gt;&lt;/code&gt;&lt;code&gt;&lt;code style="color: rgb(0, 0, 0);"&gt;  p = 0.5;&lt;/code&gt;&lt;/code&gt;&lt;code&gt;&lt;code&gt;&lt;/code&gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&lt;code&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;li&gt;&lt;code&gt;&lt;/code&gt;&lt;br /&gt;&lt;/li&gt;&lt;/span&gt;&lt;/code&gt;&lt;/code&gt;&lt;code&gt;&lt;code style="color: rgb(0, 0, 0);"&gt;  H0 = "A moeda não é viciada.";&lt;/code&gt;&lt;/code&gt;&lt;code&gt;&lt;code&gt;&lt;/code&gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&lt;code&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;li&gt;&lt;code&gt;&lt;/code&gt;&lt;br /&gt;&lt;/li&gt;&lt;/span&gt;&lt;/code&gt;&lt;/code&gt;&lt;code&gt;&lt;code style="color: rgb(0, 0, 0);"&gt;  H1 = "A moeda é viciada.";&lt;/code&gt;&lt;/code&gt;&lt;code&gt;&lt;code&gt;&lt;/code&gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&lt;code&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;li&gt;&lt;code&gt;&lt;/code&gt;&lt;br /&gt;&lt;/li&gt;&lt;/span&gt;&lt;/code&gt;&lt;/code&gt;&lt;code&gt;&lt;code style="color: rgb(0, 0, 0);"&gt;  o[] = {{"caras",60},{"coroas",40}};&lt;/code&gt;&lt;/code&gt;&lt;code&gt;&lt;code&gt;&lt;/code&gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&lt;code&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;li&gt;&lt;code&gt;&lt;/code&gt;&lt;br /&gt;&lt;/li&gt;&lt;/span&gt;&lt;/code&gt;&lt;/code&gt;&lt;code&gt;&lt;code style="color: rgb(0, 0, 0);"&gt;}&lt;/code&gt;&lt;/code&gt;&lt;code&gt;&lt;code&gt;&lt;/code&gt;&lt;/code&gt;&lt;div style="text-align: justify;"&gt;&lt;/div&gt;&lt;/ol&gt;&lt;br /&gt;O nome das variáveis, procurei manter bem descritivas para quem entende do teste.&lt;br /&gt;Para rodar o aplicativo é:&lt;small&gt; ./chimera arquivo_com_o_teste.qui moeda_viciada&lt;/small&gt;&lt;br /&gt;Caso queira uma saída html:&lt;small&gt;./chimera arquivo_com_o_teste.qui moeda_viciada --html&lt;/small&gt;&lt;br /&gt;&lt;br /&gt;Esse exemplo que mostrei é o teste simples, mas o aplicativo ainda aplica o Qui-2 com tabelas de contingência (geralmente gente da área de saúde usa muito esse tipo de qui-2), mas para isso caso se interesse baixe o aplicativo e leia o manual para saber como é.&lt;br /&gt;&lt;br /&gt;Você que manja de estatística deve estar pensando mas não consigo aplicar correções?!&lt;br /&gt;&lt;code&gt;&lt;br /&gt;&lt;/code&gt;&lt;ol class="codeblock"&gt;&lt;code&gt;&lt;br /&gt;&lt;/code&gt;&lt;li&gt;&lt;code&gt;test "moeda_viciada" mode simple&lt;br /&gt;&lt;/code&gt;&lt;/li&gt;&lt;li&gt;&lt;code&gt;   alfa 5% answer statistical correction yates&lt;/code&gt;&lt;br /&gt;&lt;/li&gt;&lt;code&gt;&lt;code&gt;&lt;/code&gt;&lt;/code&gt;&lt;li&gt;&lt;code&gt;&lt;/code&gt;&lt;code&gt;&lt;code&gt;{&lt;/code&gt;&lt;/code&gt;&lt;code&gt;&lt;code&gt;&lt;/code&gt;&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;code&gt;&lt;code&gt;&lt;/code&gt;&lt;/code&gt;&lt;li&gt;&lt;code&gt;&lt;/code&gt;&lt;code&gt;&lt;code&gt; q = "A moeda é viciada?";&lt;/code&gt;&lt;/code&gt;&lt;code&gt;&lt;code&gt;&lt;/code&gt;&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;code&gt;&lt;code&gt;&lt;/code&gt;&lt;/code&gt;&lt;li&gt;&lt;code&gt;&lt;/code&gt;&lt;code&gt;&lt;code&gt;  p = 0.5;&lt;/code&gt;&lt;/code&gt;&lt;code&gt;&lt;code&gt;&lt;/code&gt;&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;code&gt;&lt;code&gt;&lt;/code&gt;&lt;/code&gt;&lt;li&gt;&lt;code&gt;&lt;/code&gt;&lt;code&gt;&lt;code&gt;  H0 = "A moeda não é viciada.";&lt;/code&gt;&lt;/code&gt;&lt;code&gt;&lt;code&gt;&lt;/code&gt;&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;code&gt;&lt;code&gt;&lt;/code&gt;&lt;/code&gt;&lt;li&gt;&lt;code&gt;&lt;/code&gt;&lt;code&gt;&lt;code&gt;  H1 = "A moeda é viciada.";&lt;/code&gt;&lt;/code&gt;&lt;code&gt;&lt;code&gt;&lt;/code&gt;&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;code&gt;&lt;code&gt;&lt;/code&gt;&lt;/code&gt;&lt;li&gt;&lt;code&gt;&lt;/code&gt;&lt;code&gt;&lt;code&gt;  o[] = {{"caras",60},{"coroas",40}};&lt;/code&gt;&lt;/code&gt;&lt;code&gt;&lt;code&gt;&lt;/code&gt;&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;code&gt;&lt;code&gt;&lt;/code&gt;&lt;/code&gt;&lt;li&gt;&lt;code&gt;&lt;/code&gt;&lt;code&gt;&lt;code&gt;}&lt;/code&gt;&lt;/code&gt;&lt;code&gt;&lt;code&gt;&lt;/code&gt;&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;/ol&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;Eu só implementei a correção de yates, realmente eu fiz isso para uma necessidade muito específica então nem me preocupei... Vou ver se disponibilizo os fontes, é um aplicativo mínimo e o parser ficou muito simples e fácil de aplicar extensões. Acho que qualquer pessoa interessada estende para o que quiser isso.&lt;span style="font-family:courier new;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;img src="file:///C:/DOCUME%7E1/netluser/CONFIG%7E1/Temp/moz-screenshot.png" alt="" /&gt;&lt;img src="file:///C:/DOCUME%7E1/netluser/CONFIG%7E1/Temp/moz-screenshot-1.png" alt="" /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6987733211537734100-370730703988737346?l=voidbrainvoid.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6987733211537734100/posts/default/370730703988737346'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6987733211537734100/posts/default/370730703988737346'/><link rel='alternate' type='text/html' href='http://voidbrainvoid.blogspot.com/2010/02/teste-qui-quadrado.html' title='Teste qui-quadrado'/><author><name>/dev/null</name><uri>http://www.blogger.com/profile/09701218265443888880</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-6987733211537734100.post-7557948131266839059</id><published>2010-02-01T05:24:00.000-08:00</published><updated>2011-07-17T06:33:30.069-07:00</updated><title type='text'></title><content type='html'>O link do aplicativo do post anterior se encontra aqui agora: &lt;a href="http://www.easy-share.com/1909163124/cherrry_pack.zip" target=" _vblank"&gt; &lt;/a&gt;&lt;a href="http://www.4shared.com/file/YvevMMyF/cherrry_pack.html" _target="_vblank"&gt;&lt;/a&gt;&lt;a href="http://www.4shared.com/file/YvevMMyF/cherrry_pack.html" target="_vblank"&gt;Cherrry_pack&lt;/a&gt;.&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6987733211537734100-7557948131266839059?l=voidbrainvoid.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6987733211537734100/posts/default/7557948131266839059'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6987733211537734100/posts/default/7557948131266839059'/><link rel='alternate' type='text/html' href='http://voidbrainvoid.blogspot.com/2010/02/o-link-do-aplicativo-do-post-anterior.html' title=''/><author><name>/dev/null</name><uri>http://www.blogger.com/profile/09701218265443888880</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-6987733211537734100.post-7743311639998890900</id><published>2010-01-31T10:25:00.000-08:00</published><updated>2011-07-17T06:43:48.838-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Programação'/><category scheme='http://www.blogger.com/atom/ns#' term='My Apps'/><category scheme='http://www.blogger.com/atom/ns#' term='Nerdices'/><title type='text'>Webchats por você mesmo...</title><content type='html'>&lt;div style="text-align: justify;"&gt;Esse blog é única e exclusivamente para publicar meus aplicativos e rodas reinventadas, então vamos dar um pouco de utilidade para ele...&lt;br /&gt;&lt;br /&gt;Andei longe desse lance de desenvolver software e distribuir pela internet por um período, nos áureos tempos em que usava VB e criei o super útil "bufômetro" tive mais de 80.000&lt;br /&gt;usuários!! :-P&lt;br /&gt;&lt;br /&gt;Ahm... Resolvi começar por esse software de nome meio "blasé" que se presta a criar salas de Webchat. Aqueles chats que faziam o maior sucesso nos idos de 1995-99 e que tirou muita gente do IRC que era tão bacana.&lt;br /&gt;&lt;br /&gt;Se você possui uma rede local ou mesmo quer servir uma sala de webchat no seu PC para juntar seus amigos pode usar o ... (que nome escroto e infame) "cherrry".&lt;br /&gt;&lt;br /&gt;"RRR" assim mesmo.&lt;br /&gt;&lt;br /&gt;O pacote para download acompanha os binários (leia-se arquivos executáveis) tanto para Windows quanto para o Linux e sim tem o RTFM (Read the fuck manual) "mau hescrito".&lt;br /&gt;&lt;br /&gt;Uma imagem vale mais do que mil chavões então, o "cherrry" em ação seria isso aqui:&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_rfefZ0di11A/S2XRLrP4sFI/AAAAAAAAAAM/ifZhQrP2f7g/s1600-h/cherrry_fooblar.JPG"&gt;&lt;img style="cursor: pointer; width: 298px; height: 226px;" src="http://2.bp.blogspot.com/_rfefZ0di11A/S2XRLrP4sFI/AAAAAAAAAAM/ifZhQrP2f7g/s320/cherrry_fooblar.JPG" alt="" id="BLOGGER_PHOTO_ID_5432978524010491986" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;O pacote está para download no adrive&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a href="http://www.adrive.com/public/2bfac3790d5c4e7c36b14038c41957af2afce29879f96a5e313236d47200d799.html" target="_vblank"&gt;Cherrry pack&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;Preciso mover isso para um server melhor pois já,  já o link "espirra"!...&lt;br /&gt;&lt;br /&gt;Uau! Sabia que adoro Haikais?&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:Courier;"&gt; &lt;span style="font-family:courier new;"&gt;Segmentation Fault&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6987733211537734100-7743311639998890900?l=voidbrainvoid.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6987733211537734100/posts/default/7743311639998890900'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6987733211537734100/posts/default/7743311639998890900'/><link rel='alternate' type='text/html' href='http://voidbrainvoid.blogspot.com/2010/01/webchats-por-voce-mesmo.html' title='Webchats por você mesmo...'/><author><name>/dev/null</name><uri>http://www.blogger.com/profile/09701218265443888880</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_rfefZ0di11A/S2XRLrP4sFI/AAAAAAAAAAM/ifZhQrP2f7g/s72-c/cherrry_fooblar.JPG' height='72' width='72'/></entry><entry><id>tag:blogger.com,1999:blog-6987733211537734100.post-8115461289443685661</id><published>2010-01-30T10:26:00.001-08:00</published><updated>2010-01-30T10:26:24.179-08:00</updated><title type='text'></title><content type='html'>foobar!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6987733211537734100-8115461289443685661?l=voidbrainvoid.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6987733211537734100/posts/default/8115461289443685661'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6987733211537734100/posts/default/8115461289443685661'/><link rel='alternate' type='text/html' href='http://voidbrainvoid.blogspot.com/2010/01/foobar.html' title=''/><author><name>/dev/null</name><uri>http://www.blogger.com/profile/09701218265443888880</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry></feed>
