<?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-396083382034174439</id><updated>2012-01-06T10:25:35.513-02:00</updated><category term='mobile'/><category term='neuropsychology'/><category term='clojure'/><category term='rsync'/><category term='web'/><category term='books'/><category term='uva'/><category term='hop'/><category term='boo'/><category term='teamware'/><category term='ipython'/><category term='fotos'/><category term='brainfuck'/><category term='pycon'/><category term='presentation'/><category term='framps'/><category term='pythonrio'/><category term='bazaar'/><category term='firefox'/><category term='awk'/><category term='dosvox'/><category term='fluxo'/><category term='labase'/><category term='rss'/><category term='rails'/><category term='grep'/><category term='turbogears'/><category term='video'/><category term='scp'/><category term='xp'/><category term='humor'/><category term='scheme'/><category term='cefet'/><category term='java'/><category term='scale-free networks'/><category term='designpattern'/><category term='bzr'/><category term='dica'/><category term='globo.com'/><category term='brain'/><category term='language'/><category term='memory'/><category term='ted'/><category term='django'/><category term='bash'/><category term='ideas'/><category term='semi-supervisionado'/><category term='dojo'/><category term='android'/><category term='mej'/><category term='planeta-globo.com'/><category term='software'/><category term='portugal'/><category term='delicious'/><category term='mac'/><category term='templating'/><category term='framework'/><category term='ubuntu'/><category term='aula'/><category term='svn'/><category term='google'/><category term='ruby'/><category term='devinrio'/><category term='wysisyg'/><category term='education'/><category term='tts'/><category term='planet'/><category term='javascript'/><category term='cybernetics'/><category term='apple'/><category term='perl'/><category term='intelie'/><category term='skype'/><category term='github'/><category term='evento'/><category term='common lisp'/><category term='tor'/><category term='ufrj'/><category term='fnac'/><category term='acessibility'/><category term='agile'/><category term='opensource'/><category term='shell'/><category term='python'/><category term='computer'/><category term='chat'/><category term='pydelicious'/><category term='windows'/><category term='tdd'/><category term='invention'/><category term='complex networks'/><category term='science'/><category term='paper'/><category term='apache'/><category term='linux'/><category term='puc'/><category term='dreamweaver'/><category term='internet explorer'/><category term='pierre lévy'/><category term='howto'/><category term='programming'/><category term='deployment'/><category term='ssh'/><category term='lisp'/><category term='we2py'/><category term='racket'/><category term='aprendizado'/><category term='readline'/><category term='google chrome'/><category term='matlab'/><category term='du'/><category term='gerenciador de feeds'/><category term='scrum'/><category term='smallacts'/><category term='trick'/><category term='unix'/><category term='twitter'/><category term='netbook'/><category term='inteligência computacional'/><category term='esej'/><category term='texttospeech'/><category term='pythoncampus'/><category term='google reader'/><category term='mozilla'/><category term='slideshare'/><category term='machine learning'/><category term='webapp'/><category term='capistrano'/><category term='health'/><category term='multitouch'/><category term='gmail'/><title type='text'>RodolfoCarvalho.net</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://blog.rodolfocarvalho.net/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/396083382034174439/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://blog.rodolfocarvalho.net/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/396083382034174439/posts/default?start-index=101&amp;max-results=100'/><author><name>Rodolfo</name><uri>http://www.blogger.com/profile/13115401885842551697</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_vI4PxbAv6pM/SJ-dzrhNvyI/AAAAAAAAAAc/dOyhjpNbx58/s1600-R/Rodolfo_safari.png'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>136</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-396083382034174439.post-6983101390745548916</id><published>2012-01-06T10:20:00.000-02:00</published><updated>2012-01-06T10:25:35.518-02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='common lisp'/><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><category scheme='http://www.blogger.com/atom/ns#' term='scheme'/><category scheme='http://www.blogger.com/atom/ns#' term='computer'/><title type='text'>Some Computer Science Terminology</title><content type='html'>&lt;i style="background-color: rgba(255, 255, 255, 0.917969); color: #999999; font-family: arial, sans-serif; font-size: 13px;"&gt;[Este post é em inglês. Se não entender, use um tradutor. Os links para a Wikipedia podem ser consultados em suas versões em português, portanto você ainda pode tirar algo proveito daqui.]&lt;/i&gt;&lt;br /&gt;&lt;div style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;I wrote this as an email to someone special, but then I thought it could be shared here.&lt;/div&gt;&lt;div style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;It is simply a few links and comments for topics we were talking about one night... you might get interested as well -- and feel free to join the conversation.&lt;/div&gt;&lt;div style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;--&lt;/div&gt;&lt;div style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;Hello &lt;i&gt;dear reader&lt;/i&gt;!&lt;/div&gt;&lt;div style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;Words in&amp;nbsp;&lt;b&gt;bold&lt;/b&gt;&amp;nbsp;are terms that are interesting to be familiarized with,&amp;nbsp;&lt;b&gt;IMHO&lt;/b&gt;.&lt;/div&gt;&lt;div style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;b style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;Context&lt;/b&gt;&lt;br /&gt;&lt;div style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;a href="http://en.wikipedia.org/wiki/Context_(computing)" style="color: #1155cc;" target="_blank"&gt;http://en.wikipedia.org/wiki/&lt;wbr&gt;&lt;/wbr&gt;Context_(computing)&lt;/a&gt;&lt;/div&gt;&lt;div style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;(Additional term linked above:&amp;nbsp;&lt;b&gt;State&lt;/b&gt;&amp;nbsp;&lt;a href="http://en.wikipedia.org/wiki/State_(computer_science)" style="color: #1155cc;" target="_blank"&gt;http://en.wikipedia.org/&lt;wbr&gt;&lt;/wbr&gt;wiki/State_(computer_science)&lt;/a&gt;)&lt;/div&gt;&lt;div style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;b&gt;Environment&lt;/b&gt;&lt;/div&gt;&lt;div style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;Note that in Scheme an environment is a&amp;nbsp;&lt;b&gt;first-class object&lt;/b&gt;, which means it can be assigned to a variable, it can be passed as argument, it can be used just like a number or string, etc etc.&lt;/div&gt;&lt;div style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;Note also how Common Lisp and Scheme (and most other programming languages that I am familiar with and that I can think about now) differ in number of environments. CL is said to be a Lisp-2, while Scheme is Lisp-1. It means that Scheme has only one lexical environment containing all functions and variables, while CL has two distinct environments, one only for functions and another, independent one, for variables.&lt;/div&gt;&lt;span style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;You can also think of the terms&lt;/span&gt;&lt;span style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;&amp;nbsp;&lt;/span&gt;&lt;b style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;scope&lt;/b&gt;&lt;b style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;&amp;nbsp;&lt;/b&gt;&lt;span style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;and&lt;/span&gt;&lt;span style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;&amp;nbsp;&lt;/span&gt;&lt;b style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;namespace&lt;/b&gt;&lt;span style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;, which can appear to play a similar role in several languages.&lt;/span&gt;&lt;br /&gt;&lt;div style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;a href="http://www.gnu.org/software/mit-scheme/documentation/mit-scheme-ref/Environment-Operations.html" style="color: #1155cc;" target="_blank"&gt;http://www.gnu.org/software/&lt;wbr&gt;&lt;/wbr&gt;mit-scheme/documentation/mit-&lt;wbr&gt;&lt;/wbr&gt;scheme-ref/Environment-&lt;wbr&gt;&lt;/wbr&gt;Operations.html&lt;/a&gt;&lt;/div&gt;&lt;div style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;a href="http://en.wikipedia.org/wiki/Scope_(programming)"&gt;http://en.wikipedia.org/wiki/Scope_(programming)&lt;/a&gt;&lt;/div&gt;&lt;div style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;a href="http://en.wikipedia.org/wiki/Namespace_(programming)"&gt;http://en.wikipedia.org/wiki/Namespace_(programming)&lt;/a&gt;&lt;/div&gt;&lt;div style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;b&gt;Turing Machine&lt;/b&gt;&lt;/div&gt;&lt;div style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;Have in mind how little you need to have a computing machine (and think of what does it mean to "compute," by the way). Have in mind that the Turing Machine is not practical as a real computer, but is of fundamental&amp;nbsp;theoretical&amp;nbsp;importance.&lt;br /&gt;&lt;div&gt;&lt;a href="http://en.wikipedia.org/wiki/Turing_machine" style="color: #1155cc;" target="_blank"&gt;http://en.wikipedia.org/wiki/&lt;wbr&gt;&lt;/wbr&gt;Turing_machine&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;a href="http://en.wikipedia.org/wiki/Alan_Turing" style="color: #1155cc;" target="_blank"&gt;http://en.wikipedia.org/wiki/&lt;wbr&gt;&lt;/wbr&gt;Alan_Turing&lt;/a&gt;&lt;/div&gt;&lt;div style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;b&gt;(John) von Neumann&lt;/b&gt;&lt;/div&gt;&lt;div style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;a href="http://en.wikipedia.org/wiki/John_von_Neumann" style="color: #1155cc;" target="_blank"&gt;http://en.wikipedia.org/wiki/&lt;wbr&gt;&lt;/wbr&gt;John_von_Neumann&lt;/a&gt;&lt;/div&gt;&lt;div style="background-color: rgba(255, 255, 255, 0.917969); color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;a href="http://en.wikipedia.org/wiki/Von_Neumann_architecture" style="color: #1155cc;" target="_blank"&gt;http://en.wikipedia.org/wiki/&lt;wbr&gt;&lt;/wbr&gt;Von_Neumann_architecture&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/396083382034174439-6983101390745548916?l=blog.rodolfocarvalho.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.rodolfocarvalho.net/feeds/6983101390745548916/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=396083382034174439&amp;postID=6983101390745548916' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/396083382034174439/posts/default/6983101390745548916'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/396083382034174439/posts/default/6983101390745548916'/><link rel='alternate' type='text/html' href='http://blog.rodolfocarvalho.net/2012/01/some-computer-science-terminology.html' title='Some Computer Science Terminology'/><author><name>Rodolfo</name><uri>http://www.blogger.com/profile/13115401885842551697</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_vI4PxbAv6pM/SJ-dzrhNvyI/AAAAAAAAAAc/dOyhjpNbx58/s1600-R/Rodolfo_safari.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-396083382034174439.post-3923288718215585340</id><published>2011-12-06T23:41:00.001-02:00</published><updated>2011-12-06T23:44:02.998-02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='ssh'/><category scheme='http://www.blogger.com/atom/ns#' term='scp'/><category scheme='http://www.blogger.com/atom/ns#' term='rsync'/><title type='text'>Como continuar um upload / download usando scp e rsync</title><content type='html'>Para minha referência futura e talvez ajudar mais alguém...&lt;br /&gt;&lt;br /&gt;rsync -P --rsh=ssh nome-arquivo.tar.gz usuario@host:~/caminho/destinho/&lt;br /&gt;&lt;br /&gt;Com este comando é possível continuar um upload ou download iniciado por scp, mas que por alguma razão foi interrompido.&lt;br /&gt;&lt;br /&gt;O -P é equivalente a --partial (continuar transferências parciais) e --progress (exibe uma barra de progresso) e --rsh=ssh faz com que o rsync use o ssh (assim como o scp) para fazer a transferência de forma segura.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/396083382034174439-3923288718215585340?l=blog.rodolfocarvalho.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.rodolfocarvalho.net/feeds/3923288718215585340/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=396083382034174439&amp;postID=3923288718215585340' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/396083382034174439/posts/default/3923288718215585340'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/396083382034174439/posts/default/3923288718215585340'/><link rel='alternate' type='text/html' href='http://blog.rodolfocarvalho.net/2011/12/como-continuar-um-upload-download.html' title='Como continuar um upload / download usando scp e rsync'/><author><name>Rodolfo</name><uri>http://www.blogger.com/profile/13115401885842551697</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_vI4PxbAv6pM/SJ-dzrhNvyI/AAAAAAAAAAc/dOyhjpNbx58/s1600-R/Rodolfo_safari.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-396083382034174439.post-5811269762147630487</id><published>2011-11-20T23:19:00.001-02:00</published><updated>2011-11-20T23:27:48.597-02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><category scheme='http://www.blogger.com/atom/ns#' term='perl'/><title type='text'>Eu sou um dos autores do Perl 5</title><content type='html'>Depois de mais de 1 mês de espera pra ter &lt;a href="http://perl5.git.perl.org/perl.git/commit/6cded92d7d4904d86344c30013375fd476a883a7"&gt;meu patch no parser do Perl&lt;/a&gt; aceito, hoje eu entrei pra &lt;a href="http://perl5.git.perl.org/perl.git/blobdiff/6cded92d7d4904d86344c30013375fd476a883a7..75dcb4fc63cd34de1327827601b8cabf0e7a562e:/AUTHORS"&gt;lista de autores&lt;/a&gt;! Fantástico!&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-BdHw9rkkBis/TsmnZ7khT5I/AAAAAAAAEbU/max7Ey_6aP4/s1600/rodolfo-perl-author.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="249" src="http://2.bp.blogspot.com/-BdHw9rkkBis/TsmnZ7khT5I/AAAAAAAAEbU/max7Ey_6aP4/s320/rodolfo-perl-author.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Encontrei um bug com mais de 5 anos, que passou despercebido aos olhos de muitos programadores do core do Perl 5.&lt;br /&gt;Acho que é uma virtude minha detectar erros em texto... eu poderia virar revisor de livro ou equivalente. Leio com atenção, presto atenção nos detalhes, detecto padrões e anomalias.&lt;br /&gt;&lt;br /&gt;Quer contribuir você também para o Perl? Comece por &lt;a href="http://dev.perl.org/perl5/docs/perlrepository.html"&gt;aqui&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/396083382034174439-5811269762147630487?l=blog.rodolfocarvalho.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.rodolfocarvalho.net/feeds/5811269762147630487/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=396083382034174439&amp;postID=5811269762147630487' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/396083382034174439/posts/default/5811269762147630487'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/396083382034174439/posts/default/5811269762147630487'/><link rel='alternate' type='text/html' href='http://blog.rodolfocarvalho.net/2011/11/eu-sou-um-dos-autores-do-perl-5.html' title='Eu sou um dos autores do Perl 5'/><author><name>Rodolfo</name><uri>http://www.blogger.com/profile/13115401885842551697</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_vI4PxbAv6pM/SJ-dzrhNvyI/AAAAAAAAAAc/dOyhjpNbx58/s1600-R/Rodolfo_safari.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/-BdHw9rkkBis/TsmnZ7khT5I/AAAAAAAAEbU/max7Ey_6aP4/s72-c/rodolfo-perl-author.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-396083382034174439.post-5106291012648180140</id><published>2011-11-04T20:45:00.003-02:00</published><updated>2011-11-04T20:50:03.674-02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='perl'/><category scheme='http://www.blogger.com/atom/ns#' term='dojo'/><title type='text'>Perl no Dojo Rio</title><content type='html'>Wordle usando como base o código-fonte dos nossos dojos em Perl:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.wordle.net/show/wrdl/4356126/Perl_tests_from_Dojo_Rio" title="Wordle: Perl tests from Dojo Rio"&gt;&lt;img alt="Wordle: Perl tests from Dojo Rio" src="http://www.wordle.net/thumb/wrdl/4356126/Perl_tests_from_Dojo_Rio" style="border: 1px solid #ddd; padding: 4px;" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/396083382034174439-5106291012648180140?l=blog.rodolfocarvalho.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.rodolfocarvalho.net/feeds/5106291012648180140/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=396083382034174439&amp;postID=5106291012648180140' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/396083382034174439/posts/default/5106291012648180140'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/396083382034174439/posts/default/5106291012648180140'/><link rel='alternate' type='text/html' href='http://blog.rodolfocarvalho.net/2011/11/perl-no-dojo-rio.html' title='Perl no Dojo Rio'/><author><name>Rodolfo</name><uri>http://www.blogger.com/profile/13115401885842551697</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_vI4PxbAv6pM/SJ-dzrhNvyI/AAAAAAAAAAc/dOyhjpNbx58/s1600-R/Rodolfo_safari.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-396083382034174439.post-1520719942429985069</id><published>2011-10-25T17:39:00.001-02:00</published><updated>2011-10-25T17:39:31.779-02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='video'/><category scheme='http://www.blogger.com/atom/ns#' term='agile'/><category scheme='http://www.blogger.com/atom/ns#' term='designpattern'/><category scheme='http://www.blogger.com/atom/ns#' term='tdd'/><category scheme='http://www.blogger.com/atom/ns#' term='xp'/><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><title type='text'>Responsible Design</title><content type='html'>Meus amigos deveriam ver isto:&lt;a href="http://www.infoq.com/presentations/responsive-design#.TqcQJCH7P_Y.blogger"&gt;InfoQ: Responsive Design (Kent Beck)&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;(infelizmente, sem tempo para escrever a respeito...)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/396083382034174439-1520719942429985069?l=blog.rodolfocarvalho.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.rodolfocarvalho.net/feeds/1520719942429985069/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=396083382034174439&amp;postID=1520719942429985069' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/396083382034174439/posts/default/1520719942429985069'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/396083382034174439/posts/default/1520719942429985069'/><link rel='alternate' type='text/html' href='http://blog.rodolfocarvalho.net/2011/10/responsible-design.html' title='Responsible Design'/><author><name>Rodolfo</name><uri>http://www.blogger.com/profile/13115401885842551697</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_vI4PxbAv6pM/SJ-dzrhNvyI/AAAAAAAAAAc/dOyhjpNbx58/s1600-R/Rodolfo_safari.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-396083382034174439.post-4050999464811663514</id><published>2011-10-04T23:00:00.000-03:00</published><updated>2011-10-04T23:14:26.581-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><category scheme='http://www.blogger.com/atom/ns#' term='dojo'/><category scheme='http://www.blogger.com/atom/ns#' term='aprendizado'/><title type='text'>O que é Coding Dojo?</title><content type='html'>&lt;br /&gt;&lt;div style="background-color: transparent;"&gt;&lt;h1 dir="ltr" id="internal-source-marker_0.22165784426033497"&gt;&lt;span style="background-color: transparent; color: black; font-family: Arial; font-size: 24pt; font-style: normal; font-variant: normal; font-weight: bold; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt;O que é Coding Dojo?&lt;/span&gt;&lt;/h1&gt;&lt;span style="background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt;Um Coding Dojo é um encontro no qual pessoas se juntam para trabalhar em um desafio de programação. O objetivo é a prática deliberada de programação como forma de melhorar habilidades pessoais e se divertir em grupo.&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: white; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt;Premissa: o aprendizado é um processo contínuo e requer prática. Prática coletiva traz novos desafios e potencializa o aprendizado e a disseminação de conhecimento.&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: white; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: white; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt;Características: o ambiente é colaborativo e divertido, adequado para testar novas ideias. Participantes com qualquer nível de conhecimento são bem-vindos.&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: white; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: white; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt;Requisitos técnicos/físicos: sala com um computador e um projetor. Quadro branco ou flip-chart, post-its e comida são itens que ajudam ao longo do encontro.&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: white; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: white; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt;O Coding Dojo é &lt;/span&gt;&lt;span style="background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt;um espaço semanal na agenda para treinar boas práticas de programação, como Test-Driven Development (TDD), programação em par, código coletivo, passos de bebê, design incremental, entre outras práticas ligadas ao desenvolvimento Ágil de software.&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt;A maioria das boas práticas do Dojo são derivadas da metodologia de desenvolvimento Ágil Extreme Programming. Mas o Dojo vai muito além quando consideramos os aspectos sociais, que envolvem convívio social, apresentação de ideias em voz alta para um público e trabalho em grupo para atingir um objetivo comum.&lt;/span&gt;&lt;br /&gt;&lt;h1 dir="ltr"&gt;&lt;span style="background-color: transparent; color: black; font-family: Arial; font-size: 24pt; font-style: normal; font-variant: normal; font-weight: bold; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt;E o Coding Dojo Rio?&lt;/span&gt;&lt;/h1&gt;&lt;span style="background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt;O Coding Dojo Rio iniciou seus encontros semanais em dezembro de 2008. Tudo começou em setembro daquele ano no encontro da comunidade brasileira de Python, o PyCon Brasil 2008, realizado no Rio de Janeiro.&lt;/span&gt;&lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt;&lt;span style="background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt;Achei o conceito o Coding Dojo uma excelente maneira de promover boas práticas de programação na comunidade carioca. Juntei algumas pessoas, conseguimos um espaço físico e começamos.&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt;Desde então mais de 500 desenvolvedores se cadastraram na lista de discussão associada ao evento, e, destes, boa parte participa de sessões que ocorrem em diversos locais no estado do Rio de Janeiro. Temos também pessoas de outros estados que participam do grupo, inclusive se engajando em algumas discussões. Começamos com um pequeno grupo, e hoje já atingimos boa parte do estado e até mesmo o país e o mundo.&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt;Mas nada disso aconteceria se não fosse a sinergia da comunidade, dos que estão lá toda semana batalhando para se tornar um melhor desenvolvedor, colaborar com o conhecimento alheio, discutir e trocar informações.&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt;Muitos eventos de tecnologia incluem um dojo em sua programação, assim como muitas pessoas, incluindo os cariocas do Dojo Rio, dão palestras introdutórias sobre o tema.&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt;O Coding Dojo pode, a médio e longo prazo, ajudar a melhorar a qualidade do código que você escreve, consequentemente aumentando a qualidade do software produzido pelos indivíduos e empresas.&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt;Alguns dos desafios a serem encarados:&lt;/span&gt;&lt;ul&gt;&lt;li style="background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; list-style-type: disc; text-decoration: none; vertical-align: baseline;"&gt;&lt;span style="background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt;programar na frente de todos&lt;/span&gt;&lt;/li&gt;&lt;li style="background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; list-style-type: disc; text-decoration: none; vertical-align: baseline;"&gt;&lt;span style="background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt;pensar num problema e exprimir seu entendimento através de casos de teste&lt;/span&gt;&lt;/li&gt;&lt;li style="background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; list-style-type: disc; text-decoration: none; vertical-align: baseline;"&gt;&lt;span style="background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt;descrever publicamente suas intenções ao escrever linhas de código&lt;/span&gt;&lt;/li&gt;&lt;li style="background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; list-style-type: disc; text-decoration: none; vertical-align: baseline;"&gt;&lt;span style="background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt;usar um &lt;/span&gt;&lt;span style="background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: italic; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt;framework&lt;/span&gt;&lt;span style="background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt; de testes unitários&lt;/span&gt;&lt;/li&gt;&lt;li style="background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; list-style-type: disc; text-decoration: none; vertical-align: baseline;"&gt;&lt;span style="background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt;trabalhar em pares/equipe&lt;/span&gt;&lt;/li&gt;&lt;li style="background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; list-style-type: disc; text-decoration: none; vertical-align: baseline;"&gt;&lt;span style="background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt;resolver problemas de forma incremental&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;h1 dir="ltr"&gt;&lt;span style="background-color: transparent; color: black; font-family: Arial; font-size: 24pt; font-style: normal; font-variant: normal; font-weight: bold; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt;Online&lt;/span&gt;&lt;/h1&gt;&lt;span style="background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt;Site/blog: &lt;/span&gt;&lt;a href="http://dojorio.org/"&gt;&lt;span style="background-color: transparent; color: #000099; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap;"&gt;http://dojorio.org&lt;/span&gt;&lt;/a&gt;&lt;span style="background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt;Grupo de discussões: &lt;/span&gt;&lt;a href="http://groups.google.com/group/dojo-rio"&gt;&lt;span style="background-color: transparent; color: #000099; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap;"&gt;http://groups.google.com/group/dojo-rio&lt;/span&gt;&lt;/a&gt;&lt;span style="background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt;Facebook: &lt;/span&gt;&lt;a href="https://www.facebook.com/dojorio"&gt;&lt;span style="background-color: transparent; color: #000099; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap;"&gt;https://www.facebook.com/dojorio&lt;/span&gt;&lt;/a&gt;&lt;span style="background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt;Repositório de códigos: &lt;/span&gt;&lt;a href="http://code.google.com/p/dojo-rio/"&gt;&lt;span style="background-color: transparent; color: #000099; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap;"&gt;http://code.google.com/p/dojo-rio/&lt;/span&gt;&lt;/a&gt;&lt;span style="background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;h1 dir="ltr"&gt;&lt;span style="background-color: transparent; color: black; font-family: Arial; font-size: 24pt; font-style: normal; font-variant: normal; font-weight: bold; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt;Repercussão&lt;/span&gt;&lt;/h1&gt;&lt;span style="background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt;Listo aqui algumas coisas que me chamaram a atenção ao longo dos anos. Não conhecemos todos os efeitos decorrentes do Coding Dojo Rio.&lt;/span&gt;&lt;br /&gt;&lt;h2 dir="ltr"&gt;&lt;span style="background-color: transparent; color: black; font-family: Arial; font-size: 18pt; font-style: normal; font-variant: normal; font-weight: bold; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt;1. Coding Dojo Piauí&lt;/span&gt;&lt;/h2&gt;&lt;span style="background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt;Um dia estava navegando no Slideshare, quando no fim de uma apresentação cliquei nesta aqui:&lt;/span&gt;&lt;br /&gt;&lt;a href="http://www.slideshare.net/regispires/coding-dojo-1923746"&gt;&lt;span style="background-color: transparent; color: #000099; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap;"&gt;http://www.slideshare.net/regispires/coding-dojo-1923746&lt;/span&gt;&lt;/a&gt;&lt;span style="background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt;É uma palestra introdutória sobre Coding Dojo feita no Piauí! Os slides citam meu nome, e eu nem sabia da existência deles. Muito legal ver a multiplicação dos coding dojos Brasil a fora. Não foi só em Piauí, já ouvimos histórias de outras cidades que se inspiraram na comunidade carioca para criar seus coding dojos.&lt;/span&gt;&lt;br /&gt;&lt;h2 dir="ltr"&gt;&lt;span style="background-color: transparent; color: black; font-family: Arial; font-size: 18pt; font-style: normal; font-variant: normal; font-weight: bold; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt;2. Bangalore, Índia&lt;/span&gt;&lt;/h2&gt;&lt;span style="background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt;O Henrique Bastos, grande impulsionador da comunidade de tecnologia do Rio de Janeiro, palestrante em vários cantos do Brasil e em eventos internacionais, sempre divulga o Coding Dojo Rio como uma das partes fortes da comunidade carioca.&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt;Em 30 de setembro de 2010 ele falou na lista de emails do Dojo Rio:&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: italic; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt;“Hj acordei com a notícia simplesmente EMOCIONANTE: Estão começando um Dojo em Bangalore na India *diretamente* inspirado nas dinâmicas do Dojorio e no Small Acts Manifesto.”&lt;/span&gt;&lt;br /&gt;&lt;div dir="ltr" style="margin-bottom: 0pt; margin-top: 0pt; text-align: right;"&gt;&lt;span style="background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt;Henrique Bastos&lt;/span&gt;&lt;span style="background-color: white; color: black; font-family: Arial; font-size: 10pt; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;a href="http://svaksha.com/post/2010/weekly-python-dojo-meetups-in-bangalore"&gt;&lt;span style="background-color: transparent; color: #000099; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap;"&gt;http://svaksha.com/post/2010/weekly-python-dojo-meetups-in-bangalore&lt;/span&gt;&lt;/a&gt;&lt;span style="background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;h2 dir="ltr"&gt;&lt;span style="background-color: transparent; color: black; font-family: Arial; font-size: 18pt; font-style: normal; font-variant: normal; font-weight: bold; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt;3. Vídeo com famosos&lt;/span&gt;&lt;/h2&gt;&lt;span style="background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt;Mais uma vez o Henrique Bastos por trás de um vídeo que reúne muita gente boa para falar do Coding Dojo.&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: italic; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt;Dojorio: muito além do código!&lt;/span&gt;&lt;br /&gt;&lt;a href="http://vimeo.com/20473572"&gt;&lt;span style="background-color: transparent; color: #000099; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap;"&gt;http://vimeo.com/20473572&lt;/span&gt;&lt;/a&gt;&lt;span style="background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: italic; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt;Neste vídeo, grandes profissionais da área de tecnologia falam da importância do Coding Dojo em suas vidas e carreiras.&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: italic; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt;Você está esperando o que? Participe hoje!&lt;/span&gt;&lt;span style="background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;h2 dir="ltr"&gt;&lt;span style="background-color: transparent; color: black; font-family: Arial; font-size: 18pt; font-style: normal; font-variant: normal; font-weight: bold; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt;4. Dojo com calouros na UFF&lt;/span&gt;&lt;/h2&gt;&lt;span style="background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt;O pessoal de Niterói levou o dojo para os calouros, substituindo antigas formas de “trote” por um divertido contato inicial com o mundo da programação.&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt;O Vinicius Teles, autor do primeiro livro em português sobre Extreme Programming, fez um apelo em seu blog que causou boa repercussão:&lt;/span&gt;&lt;br /&gt;&lt;a href="http://blog.improveit.com.br/articles/2010/05/28/apelo-parem-de-ensinar-comp-i-nas-faculdades"&gt;&lt;span style="background-color: transparent; color: #000099; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap;"&gt;http://blog.improveit.com.br/articles/2010/05/28/apelo-parem-de-ensinar-comp-i-nas-faculdades&lt;/span&gt;&lt;/a&gt;&lt;span style="background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt;Ele conta um pouco da história do Coding Dojo em Niterói e discute a efetividade do Dojo como forma de transmissão de conhecimento.&lt;/span&gt;&lt;br /&gt;&lt;h1 dir="ltr"&gt;&lt;span style="background-color: transparent; color: black; font-family: Arial; font-size: 24pt; font-style: normal; font-variant: normal; font-weight: bold; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt;Agradecimentos&lt;/span&gt;&lt;/h1&gt;&lt;span style="background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt;Vale lembrar que o Coding Dojo Rio é uma comunidade e evento de muitas mãos. Para não cometer injustiças, prefiro não citar nomes e inevitavelmente esquecer de outros. Gostaria de agradecer a todos aqueles que contribuem, seja dedicando seu tempo, palestrando e divulgando o dojo, ou ainda o mais importante, participando semanalmente dos encontros, trocando experiências, praticando, ensinando. Vocês estão de parabéns!&lt;/span&gt;&lt;br /&gt;&lt;h1 dir="ltr"&gt;&lt;span style="background-color: transparent; color: black; font-family: Arial; font-size: 24pt; font-style: normal; font-variant: normal; font-weight: bold; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt;Sobre o autor&lt;/span&gt;&lt;/h1&gt;&lt;span style="background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt;Rodolfo Carvalho é graduando da Universidade Federal do Rio de Janeiro em Engenharia de Computação e Informação, iniciou e participa desde 2008 do Coding Dojo Rio, gosta de estudar e conversar sobre metodologias, algoritmos, paradigmas e linguagens de programação e línguas faladas. Estudou por um ano no Instituto Superior Técnico em Lisboa, Portugal. Atualmente desenvolve seu projeto de graduação com base no Dosvox, um software livre que permite que cegos utilizem soberanamente o computador.&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt;Seus interesses incluem polonês, programação funcional (Lisp, Scheme, Racket), fotografia, inteligência artificial, aprendizado de máquina, neurociência, educação.&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/396083382034174439-4050999464811663514?l=blog.rodolfocarvalho.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.rodolfocarvalho.net/feeds/4050999464811663514/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=396083382034174439&amp;postID=4050999464811663514' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/396083382034174439/posts/default/4050999464811663514'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/396083382034174439/posts/default/4050999464811663514'/><link rel='alternate' type='text/html' href='http://blog.rodolfocarvalho.net/2011/10/o-que-e-coding-dojo.html' title='O que é Coding Dojo?'/><author><name>Rodolfo</name><uri>http://www.blogger.com/profile/13115401885842551697</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_vI4PxbAv6pM/SJ-dzrhNvyI/AAAAAAAAAAc/dOyhjpNbx58/s1600-R/Rodolfo_safari.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-396083382034174439.post-8635558326168379486</id><published>2011-09-21T01:54:00.000-03:00</published><updated>2011-09-27T22:19:57.206-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ufrj'/><category scheme='http://www.blogger.com/atom/ns#' term='brain'/><category scheme='http://www.blogger.com/atom/ns#' term='science'/><title type='text'>Somos nossos conectomas</title><content type='html'>&lt;b&gt;Resumo dos vídeos “&lt;a href="http://www.ted.com/talks/sebastian_seung.html"&gt;Sebastian Seung, I am my connectome, TED Talk, 2010&lt;/a&gt;” e “&lt;a href="http://www.numenta.com/htm-overview/education/mit150.php"&gt;Jeff Hawkins, MIT150 Symposium Brains, Minds and Machines, 2011&lt;/a&gt;”&lt;/b&gt;&lt;br /&gt;&lt;multicol cols="2" dir="LTR" gutter="23" id="Section1"&gt;	&lt;/multicol&gt;&lt;br /&gt;&lt;h2 class="western"&gt;&lt;span style="color: black;"&gt;Introdução&lt;/span&gt;&lt;/h2&gt;&lt;div align="JUSTIFY" style="font-style: normal;"&gt;&lt;span style="color: black;"&gt;&lt;span style="font-family: 'Times New Roman';"&gt;Um	conectoma é um mapa detalhado das conexões neurais do cérebro. O	termo é inspirado no termo “genoma”, e refere-se aos esforços	científicos para capturar, mapear e entender a organização das	relações neurais no cérebro.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="JUSTIFY" style="font-style: normal;"&gt;&lt;span style="color: black;"&gt;&lt;span style="font-family: 'Times New Roman';"&gt;O	conectoma humano tem um milhão de vezes mais conexões que a	quantidade de letras do seu genoma. Não se sabe ao certo quais	informações podemos obter desses dados, mas especula-se que nossas	memórias possam estar codificadas nas conexões de nossos	neurônios. Outros aspectos como personalidade, intelecto, podem	estar lá codificados.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="JUSTIFY" style="font-style: normal;"&gt;&lt;span style="color: black;"&gt;&lt;span style="font-family: 'Times New Roman';"&gt;Sebastian	Seung fez uma apresentação de divulgação científica, explicando	alguns conceitos, citando estudos passados e atuais, e tentando	mostrar a importância e relevância do tema. No fim ele chega	discutir a viabilidade de se estender a vida através da criogenia.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="JUSTIFY" style="font-style: normal;"&gt;&lt;span style="color: black;"&gt;&lt;span style="font-family: 'Times New Roman';"&gt;Seung	reforça a ideia de auto-percepção do ser. Ele sustenta que “Eu	sou mais que meus genes”, e que “Eu sou meu conectoma”. As	interações neurais viriam a explicar o que os nossos genes não	são capazes de explicar.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="JUSTIFY" style="font-style: normal;"&gt;&lt;span style="color: black;"&gt;&lt;span style="font-family: 'Times New Roman';"&gt;Um	fato que achei particularmente interessante é que, similar ao	estudo de genomas, existem muitos desafios científicos envolvidos.	Encontrar conectomas implica resolver outros problemas, incluindo	obtenção e processamento de imagens, como colorir um grafo	gigante, escaneamento em três dimensões, habilidade de fazer &lt;i&gt;zoom	in/out&lt;/i&gt; em objetos 3d de alta resolução, processamento de	enorme quantidade de dados, etc.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="JUSTIFY" style="font-style: normal;"&gt;&lt;span style="color: black;"&gt;&lt;span style="font-family: 'Times New Roman';"&gt;Pensando	em redes complexas, considerar os genes isoladamente seria como	olhar e entender cada nó da rede em sua individualidade. Mas já	vimos que as redes codificam nas ligações entre os nós	informações e características que não podem ser explicadas	tomando como base as características individuais dos nós.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;h2 class="western"&gt;&lt;span style="color: black;"&gt;&lt;a name='more'&gt;&lt;/a&gt;Por que estudar conectomas&lt;/span&gt;&lt;/h2&gt;&lt;div align="JUSTIFY" style="font-style: normal;"&gt;&lt;span style="color: black;"&gt;&lt;span style="font-family: 'Times New Roman';"&gt;Segundo	evidências, a atividade neural codifica nossos pensamentos,	sentimentos, percepções, experiências mentais. Existem evidências	também de que a atividade neural faz com que as conexões entre	neurônios mude. Estes dois fatos juntos levam a concluir que nossas	experiências podem mudar o nosso conectoma. Por isso cada conectoma	é único, mesmo o de gêmeos geneticamente idênticos.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="JUSTIFY" style="font-style: normal;"&gt;&lt;span style="color: black;"&gt;&lt;span style="font-family: 'Times New Roman';"&gt;Seung	usa como metáfora um córrego para explicar a relação entre	atividade neural e conectividade. O leito é como a rede de	neurônios, que determina por onde a água, a atividade neural,	passa. Mais que isso, assim como num córrego a água é capaz de	mudar o curso e alterar o leito, a atividade neural pode remodelar a	conexão cerebral, o conectoma.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;h2 class="western"&gt;&lt;span style="color: black;"&gt;Aplicação do estudo do	cérebro&lt;/span&gt;&lt;/h2&gt;&lt;div align="JUSTIFY" style="font-style: normal;"&gt;&lt;span style="color: black;"&gt;&lt;span style="font-family: 'Times New Roman';"&gt;Jeff	Hawkins tem uma abordagem mais pragmática em relação ao tema. Ele	tem em mãos um grande motivador, que é aliar sucesso comercial à	pesquisa.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="JUSTIFY" style="font-style: normal;"&gt;&lt;span style="color: black;"&gt;&lt;span style="font-family: 'Times New Roman';"&gt;Antes	de prosseguir é bom contextualizar quem ele é. Hawkins formou-se	engenheiro elétrico em 1979, e depois de uma década dedicada a	outros trabalhos e estudos, fundou a empresa Palm, onde criou o Palm	Pilot, e a Handspring, onde criou o portátil Treo. Seu interesse em	computação móvel deu lugar a interesses antigos na área	neurobiológica.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="JUSTIFY" style="font-style: normal;"&gt;&lt;span style="color: black;"&gt;&lt;span style="font-family: 'Times New Roman';"&gt;Em	2005, Hawkins escreveu o livro “On Intelligence” e fundou a	Numenta, uma empresa voltada à criação de teoria do funcionamento	do cérebro, e ao desenvolvimento de algoritmos computacionais que	implementem os resultados teóricos.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="JUSTIFY" style="font-style: normal;"&gt;&lt;span style="color: black;"&gt;&lt;span style="font-family: 'Times New Roman';"&gt;Sua	apresentação no simpósio é curta, mas serve como base para	motivar sua área de pesquisa e produtos relacionados e contar sobre	os resultados que já obteve.  Em dez minutos ele levanta perguntas	e dá  respostas.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;blockquote style="text-align: left;"&gt;&lt;span style="color: black;"&gt;Já é	hora de tentar novamente entender o cérebro e o funcionamento da	mente? Sim.&lt;/span&gt;&lt;/blockquote&gt;&lt;blockquote style="text-align: left;"&gt;&lt;span style="color: black;"&gt;Por que?	Porque é a pesquisa mais importante para a humanidade, com	implicações na sobrevivência de nossa espécie.&lt;/span&gt;&lt;/blockquote&gt;&lt;blockquote style="text-align: left;"&gt;&lt;span style="color: black;"&gt;Por que	agora? Porque já temos poder computacional, temos muitos dados	neurocientíficos para serem tratados, não faz sentido ficar	esperando. Nós não entendemos as coisas até construí-las.&lt;/span&gt;&lt;/blockquote&gt;&lt;blockquote style="text-align: left;"&gt;&lt;span style="color: black;"&gt;Como	acelerar o progresso? Neurocientistas devem estudar mais a teoria,	devem basear sua pesquisa em &lt;i&gt;frameworks&lt;/i&gt; teóricos para	neurociência. Por outro lado, especialistas em aprendizado de	máquina devem estudar mais biologia. Além disso, sucesso	comercial.&lt;/span&gt;&lt;/blockquote&gt;&lt;div align="JUSTIFY" style="font-style: normal;"&gt;&lt;span style="color: black;"&gt;&lt;span style="font-family: 'Times New Roman';"&gt;Notamos	um relacionamento com a fala de Seung quando Hawkins diz que “Somos	espécies definidas pelo nosso cérebro, tudo que fizemos até hoje	é produto dos nossos cérebros”.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="JUSTIFY" style="font-style: normal;"&gt;&lt;span style="color: black;"&gt;&lt;span style="font-family: 'Times New Roman';"&gt;A	partir de novas descobertas da neurociência, ele mostra como o	modelo que ele criou, o &lt;i&gt;Numenta neuron model,&lt;/i&gt; é	essencialmente mais detalhado que o modelo computacional simples de	neurônio existente há algumas décadas. Seu modelo é	particularmente apropriado para detectar padrões de representações	esparsas distribuídas.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="JUSTIFY" style="font-style: normal;"&gt;&lt;span style="color: black;"&gt;&lt;span style="font-family: 'Times New Roman';"&gt;Um	de seus objetivos com o sucesso comercial é em acelerar o progresso	da pesquisa, pois, quando um produto chama a atenção, mais pessoas	passam a estudar o tema.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;h2 class="western"&gt;&lt;span style="color: black;"&gt;Conclusão&lt;/span&gt;&lt;/h2&gt;&lt;div align="JUSTIFY"&gt;&lt;span style="color: black;"&gt;Tanto Seung quanto Hawkins	estão interessados no estudo das conexões neurais, e entendem que	isto é um tema de grande relevância para o futuro da humanidade.	Entretanto, os meios que eles empregam são diferentes.&lt;/span&gt;&lt;/div&gt;&lt;div align="JUSTIFY"&gt;&lt;span style="color: black;"&gt;O viés comercial de Hawkins	potencialmente impõe um ritmo mais a acelerado às suas pesquisas,	especialmente no quesito &lt;i&gt;time to market&lt;/i&gt;. Ganhamos com isso em	pelo menos dois aspectos.&lt;/span&gt;&lt;/div&gt;&lt;div align="JUSTIFY"&gt;&lt;span style="color: black;"&gt;O primeiro em relação aos	clientes que contratam produtos (com tecnologia) da Numental, que	podem experimentar tecnologia de ponta para seus usos. Por exemplo,	existe a Vitamin D, uma empresa que utiliza da tecnologia Numental	para detectar pessoas e objetos em movimento em vídeo, oferecendo	um sistema profissional de monitoramento de ambientes.&lt;/span&gt;&lt;/div&gt;&lt;div align="JUSTIFY"&gt;&lt;span style="color: black;"&gt;O segundo diz respeito aos	novos resultados teóricos que são publicados, e que motivam mais	estudos.&lt;/span&gt;&lt;/div&gt;&lt;div align="JUSTIFY"&gt;&lt;span style="color: black;"&gt;A pesquisa de Seung, por sua	vez, pode ficar por décadas nos laboratórios até que de fato	venha a impactar o nosso cotidiano. Não que isto diminua a sua	importância.&lt;/span&gt;&lt;/div&gt;&lt;div align="JUSTIFY"&gt;&lt;span style="color: black;"&gt;Enquanto Seung busca entender	os conectomas para que possamos entender melhor o ser humano,	Hawkins está mais interessado em como aplicar o conhecimento dos	mecanismos cerebrais para a construção de máquinas inteligentes.&lt;/span&gt;&lt;/div&gt;&lt;h2 class="western"&gt;&lt;/h2&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/396083382034174439-8635558326168379486?l=blog.rodolfocarvalho.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.rodolfocarvalho.net/feeds/8635558326168379486/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=396083382034174439&amp;postID=8635558326168379486' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/396083382034174439/posts/default/8635558326168379486'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/396083382034174439/posts/default/8635558326168379486'/><link rel='alternate' type='text/html' href='http://blog.rodolfocarvalho.net/2011/09/somos-nossos-conectomas.html' title='Somos nossos conectomas'/><author><name>Rodolfo</name><uri>http://www.blogger.com/profile/13115401885842551697</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_vI4PxbAv6pM/SJ-dzrhNvyI/AAAAAAAAAAc/dOyhjpNbx58/s1600-R/Rodolfo_safari.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-396083382034174439.post-5675930558530446206</id><published>2011-09-15T23:33:00.000-03:00</published><updated>2011-09-15T23:33:32.908-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ruby'/><category scheme='http://www.blogger.com/atom/ns#' term='racket'/><category scheme='http://www.blogger.com/atom/ns#' term='python'/><category scheme='http://www.blogger.com/atom/ns#' term='perl'/><title type='text'>Perl, Ruby, Python &amp; Racket: time matters</title><content type='html'>Estava aqui pensando em duas coisas:&lt;br /&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Qual o comportamento de diversas linguagens de programação quando fazemos um "import" ou "require", e o que acontece se um mesmo arquivo for requirido várias vezes na árvore de dependências.&lt;/li&gt;&lt;li&gt;Qual o tempo que leva para executar um script mínimo.&lt;/li&gt;&lt;/ol&gt;&lt;div&gt;A motivação vem da diferença que dá usar #lang racket x #lang racket/base em Racket. Quando usamos a linguagem completa, temos todas as baterias em nossas mãos, e como penalização carregamos um monte de código pra memória sem que este seja efetivamente necessário. A segunda opção é mais leve, tem apenas definido elementos mais centrais da linguagem, ideal para usar quando estamos criando nossas bibliotecas.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Há uns anos atrás já havia feito experimentos similares (provavelmente não documentados) com Python. Agora fiz pequenos scripts em Python, Racket, Ruby e Perl para comparar. &lt;b&gt;Atenção não leve em consideração os números deste post como "benchmarks" ou classificadores/qualificadores de uma ou outra linguagem&lt;/b&gt;.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: large;"&gt;O procedimento experimental&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Para reproduzir este experimento, crie 4 diretórios:&lt;/div&gt;&lt;blockquote&gt;mkdir t{python,ruby,racket,perl}&lt;/blockquote&gt;&lt;div&gt;(Não entendeu a linha acima? Veja meu post sobre &lt;a href="http://blog.rodolfocarvalho.net/2011/08/auto-completar-bash-usando-chaves.html"&gt;o uso de chaves no Bash&lt;/a&gt;)&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Em cada um, crie 3 arquivos, "a", "b" e "c", com a extensão da respectiva linguagem.&lt;/div&gt;&lt;div&gt;O resultado final fica assim:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;blockquote&gt;&lt;blockquote&gt;./tperl&lt;/blockquote&gt;&lt;blockquote&gt;├── a.pl&lt;/blockquote&gt;&lt;blockquote&gt;├── b.pl&lt;/blockquote&gt;&lt;blockquote&gt;└── c.pl&lt;/blockquote&gt;&lt;blockquote&gt;./tracket&lt;/blockquote&gt;&lt;blockquote&gt;├── a.rkt&lt;/blockquote&gt;&lt;blockquote&gt;├── b.rkt&lt;/blockquote&gt;&lt;blockquote&gt;└── c.rkt&lt;/blockquote&gt;&lt;blockquote&gt;./truby&lt;/blockquote&gt;&lt;blockquote&gt;├── a.rb&lt;/blockquote&gt;&lt;blockquote&gt;├── b.rb&lt;/blockquote&gt;&lt;blockquote&gt;└── c.rb&lt;/blockquote&gt;&lt;blockquote&gt;./tpython&lt;/blockquote&gt;&lt;blockquote&gt;├── a.py&lt;/blockquote&gt;&lt;blockquote&gt;├── b.py&lt;/blockquote&gt;&lt;blockquote&gt;└── c.py&lt;/blockquote&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;/blockquote&gt;&lt;div&gt;Cada arquivo contém:&lt;/div&gt;&lt;blockquote&gt;tpython/a.py&lt;br /&gt;::::::::::::::&lt;br /&gt;print "a"&lt;br /&gt;&lt;br /&gt;tpython/b.py&lt;br /&gt;::::::::::::::&lt;br /&gt;import a&lt;br /&gt;print "b"&lt;br /&gt;&lt;br /&gt;tpython/c.py&lt;br /&gt;::::::::::::::&lt;br /&gt;import a, b&lt;br /&gt;print "c"&lt;/blockquote&gt;&lt;div&gt;&lt;br /&gt;Para as outras linguagens é similar, veja:&lt;br /&gt;&lt;br /&gt;&lt;b&gt;c.pl (Perl)&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;require "a.pl";&lt;br /&gt;require "b.pl";&lt;br /&gt;print "c\n";&lt;/blockquote&gt;&lt;b&gt;c.rkt (Racket)&lt;/b&gt;&lt;br /&gt;&lt;blockquote&gt;#lang racket/base&lt;br /&gt;(require "a.rkt" "b.rkt")&lt;br /&gt;(displayln "c")&lt;/blockquote&gt;&lt;b&gt;c.rb (Ruby)&lt;/b&gt;&lt;br /&gt;&lt;blockquote&gt;require 'a.rb'&lt;br /&gt;require 'b.rb'&lt;br /&gt;puts 'c'&lt;/blockquote&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: large;"&gt;Resultado 1&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Todas as 4 linguagens parecem ser consistentes em:&lt;/div&gt;&lt;div&gt;&lt;ol&gt;&lt;li&gt;executar todo o código do corpo de um arquivo importado (incluindo efeitos-colaterais)&lt;/li&gt;&lt;li&gt;não re-executar código já importado anteriormente (mesmo que por dependência indireta)&lt;/li&gt;&lt;/ol&gt;&lt;/div&gt;&lt;div&gt;Ou seja, o resultado visual da execução de todos os exemplos é:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;a&lt;br /&gt;b&lt;br /&gt;c&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: large;"&gt;Resultado 2&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Entretanto, o tempo de execução é bem diferente. Usando o time, os melhores resultados encontrados após muitas execuções num Core2Duo 2.2GHz com Ubuntu 10.10 64bits:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;time perl c.pl&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;real&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;	&lt;/span&gt;0m&lt;b&gt;0.007s&lt;/b&gt;&lt;/div&gt;&lt;div&gt;user&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;	&lt;/span&gt;0m0.000s&lt;/div&gt;&lt;div&gt;sys&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;	&lt;/span&gt;0m0.000s&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;time ruby c.rb&lt;/div&gt;&lt;div&gt;&lt;div&gt;real&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;	&lt;/span&gt;0m&lt;b&gt;0.010s&lt;/b&gt;&lt;/div&gt;&lt;div&gt;user&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;	&lt;/span&gt;0m0.000s&lt;/div&gt;&lt;div&gt;sys&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;	&lt;/span&gt;0m0.000s&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;time python c.py&lt;/div&gt;&lt;div&gt;&lt;div&gt;real&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;	&lt;/span&gt;0m&lt;b&gt;0.015s&lt;/b&gt;&lt;/div&gt;&lt;div&gt;user&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;	&lt;/span&gt;0m0.010s&lt;/div&gt;&lt;div&gt;sys&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;	&lt;/span&gt;0m0.000s&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;time racket c.rkt&lt;/div&gt;&lt;div&gt;&lt;div&gt;real&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;	&lt;/span&gt;0m&lt;b&gt;0.084s&lt;/b&gt;&lt;/div&gt;&lt;div&gt;user&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;	&lt;/span&gt;0m0.060s&lt;/div&gt;&lt;div&gt;sys&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;	&lt;/span&gt;0m0.020s&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Se compilarmos o código Racket usando o "raco make", temos:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;raco make c.rkt&lt;/div&gt;&lt;div&gt;time racket c.rkt&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;real&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;	&lt;/span&gt;0m&lt;b&gt;0.053s&lt;/b&gt;&lt;br /&gt;user&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;	&lt;/span&gt;0m0.030s&lt;br /&gt;sys&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;	&lt;/span&gt;0m0.020s&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: large;"&gt;Conclusão&lt;/span&gt;&lt;br /&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;Racket e Python permitem fazer importação de vários módulos num único comando, enquanto que Ruby e Perl não. (Sim, existe o gem require_all pro Ruby, e certamente existe algo similar pro Perl no milagroso CPAN -- mas pelo que sei não existe solução "built-in" na linguagem)&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;ul&gt;&lt;li&gt;Meus amigos Perl Monges devem ficar felizes porque Perl despontou como o mais rápido, né&amp;nbsp;&amp;nbsp;Breno, Diogo, Samir, Ronald, e cia?&lt;/li&gt;&lt;li&gt;Meus amigos adeptos do Ruby vão ficar felizes e dizer que Ruby é mais rápido do que Python :P&lt;/li&gt;&lt;li&gt;Meus amigos Pythonistas, pé no chão, vão concordar que Python é rápido o suficiente e é mais divertido que Ruby (e que a conclusão acima, dos rubistas, não pode ser considerada já que meus resultados não provam nada...)&lt;/li&gt;&lt;li&gt;Meus amigos que ainda estão conhecendo Racket podem fazer caretas, normal... não tô nem aí :)&lt;br /&gt;Não me importo em "pagar o preço" para programar numa linguagem mais poderosa e bonita.&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;Obs: como as diferentes linguagens usam diferentes terminologias, perdoem o uso nem sempre preciso de "módulo", "arquivo", "importar", "requerer", etc. Espero não causar ambiguidade para o leitor.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/396083382034174439-5675930558530446206?l=blog.rodolfocarvalho.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.rodolfocarvalho.net/feeds/5675930558530446206/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=396083382034174439&amp;postID=5675930558530446206' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/396083382034174439/posts/default/5675930558530446206'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/396083382034174439/posts/default/5675930558530446206'/><link rel='alternate' type='text/html' href='http://blog.rodolfocarvalho.net/2011/09/perl-ruby-python-racket-time-matters.html' title='Perl, Ruby, Python &amp; Racket: time matters'/><author><name>Rodolfo</name><uri>http://www.blogger.com/profile/13115401885842551697</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_vI4PxbAv6pM/SJ-dzrhNvyI/AAAAAAAAAAc/dOyhjpNbx58/s1600-R/Rodolfo_safari.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-396083382034174439.post-5195212934333400635</id><published>2011-09-15T00:29:00.000-03:00</published><updated>2011-09-15T01:15:41.647-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='grep'/><category scheme='http://www.blogger.com/atom/ns#' term='unix'/><category scheme='http://www.blogger.com/atom/ns#' term='trick'/><title type='text'>Grep e Less com cores!</title><content type='html'>Esta é uma nota mental.&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;span class="Apple-style-span" style="font-size: large;"&gt;egrep -r --include="*.rkt" "[a-z-]+#" . &lt;span class="Apple-style-span" style="color: #0b5394;"&gt;--color=always&lt;/span&gt; | less &lt;span class="Apple-style-span" style="color: #0b5394;"&gt;-R&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;Para usar o Grep com cores, geralmente temos um &lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;alias grep='grep --color=auto'&lt;/span&gt; no nosso &lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;~/.bashrc&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;Mas acontece que muitas das vezes o resultado é grande é fazemos um pipe pro &lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;less&lt;/span&gt;. Como triste consequência perdemos as cores...&lt;br /&gt;Para forçar o grep (egrep, fgrep, ...) a exibir cores use o &lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;--color=always&lt;/span&gt;, assim ele manda o &lt;i&gt;output&lt;/i&gt; pro &lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;less&lt;/span&gt; com cores.&lt;br /&gt;A opção -R do less faz com que ele interprete os caracteres de escape de cores do terminal.&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;span class="Apple-style-span" style="font-size: large;"&gt;grep "alguma coisa" /caminho/da/busca &lt;span class="Apple-style-span" style="color: #0b5394;"&gt;--color=always&lt;/span&gt; | less &lt;span class="Apple-style-span" style="color: #0b5394;"&gt;-R&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;Nota: pode ser usado também com o &lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;more&lt;/span&gt;:&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;span class="Apple-style-span" style="font-size: large;"&gt;grep "alguma coisa" /caminho/da/busca &lt;span class="Apple-style-span" style="color: #0b5394;"&gt;--color=always&lt;/span&gt; | more&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;[Update]&lt;br /&gt;Como meu amigo Breno Oliveira sugeriu, uma alternativa interessante ao &lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;grep&lt;/span&gt; é o &lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;ack&lt;/span&gt;.&lt;br /&gt;&lt;a href="http://betterthangrep.com/"&gt;http://betterthangrep.com/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Usando o &lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;ack&lt;/span&gt; o comando fica:&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;span class="Apple-style-span" style="font-size: large;"&gt;ack "regexp perl" [caminho] &lt;span class="Apple-style-span" style="color: #0b5394;"&gt;--color&lt;/span&gt; | less &lt;span class="Apple-style-span" style="color: #0b5394;"&gt;-R&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/396083382034174439-5195212934333400635?l=blog.rodolfocarvalho.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.rodolfocarvalho.net/feeds/5195212934333400635/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=396083382034174439&amp;postID=5195212934333400635' title='2 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/396083382034174439/posts/default/5195212934333400635'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/396083382034174439/posts/default/5195212934333400635'/><link rel='alternate' type='text/html' href='http://blog.rodolfocarvalho.net/2011/09/grep-e-less-com-cores.html' title='Grep e Less com cores!'/><author><name>Rodolfo</name><uri>http://www.blogger.com/profile/13115401885842551697</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_vI4PxbAv6pM/SJ-dzrhNvyI/AAAAAAAAAAc/dOyhjpNbx58/s1600-R/Rodolfo_safari.png'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-396083382034174439.post-2445716070299938294</id><published>2011-09-05T19:10:00.001-03:00</published><updated>2011-09-11T01:56:11.270-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='bash'/><category scheme='http://www.blogger.com/atom/ns#' term='trick'/><title type='text'>Lista de números com o Bash</title><content type='html'>Quer executar um comando várias vezes no Bash?&lt;br /&gt;&lt;br /&gt;Use o &lt;b&gt;&lt;i&gt;for&lt;/i&gt;&lt;/b&gt;! E como gerar números sequenciais?&lt;br /&gt;&lt;br /&gt;Voltamos ao &lt;i&gt;&lt;a href="http://www.gnu.org/s/bash/manual/bash.html#Brace-Expansion"&gt;brace expansion&lt;/a&gt;&lt;/i&gt; que citei &lt;a href="http://blog.rodolfocarvalho.net/2011/08/auto-completar-bash-usando-chaves.html"&gt;noutro post&lt;/a&gt;. Você pode usar chaves para gerar strings arbitrárias, e também sequência de números.&lt;br /&gt;&lt;br /&gt;Veja:&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;rodolfo@lisa:/tmp/bash-tricks$ echo {1..10}&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;1 2 3 4 5 6 7 8 9 10&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;rodolfo@lisa:/tmp/bash-tricks$ echo {5..0}&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;5 4 3 2 1 0&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;rodolfo@lisa:/tmp/bash-tricks$ echo {7..21..2}&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;7 9 11 13 15 17 19 21&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;rodolfo@lisa:/tmp/bash-tricks$ echo {30..-40..-5}&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;30 25 20 15 10 5 0 -5 -10 -15 -20 -25 -30 -35 -40&lt;/span&gt;&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;A sintaxe é {inicial..final..incremento}, e o incremento é opcional. Se inicial &amp;lt; final, o incremento é 1 por padrão, caso contrário é -1.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Com o &lt;b&gt;for&lt;/b&gt;:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;rodolfo@lisa:/tmp/bash-tricks$ for x in {1..3}; do echo "Hello $x"; done&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;Hello 1&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;Hello 2&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;Hello 3&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/396083382034174439-2445716070299938294?l=blog.rodolfocarvalho.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.rodolfocarvalho.net/feeds/2445716070299938294/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=396083382034174439&amp;postID=2445716070299938294' title='1 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/396083382034174439/posts/default/2445716070299938294'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/396083382034174439/posts/default/2445716070299938294'/><link rel='alternate' type='text/html' href='http://blog.rodolfocarvalho.net/2011/09/lista-de-numeros-com-o-bash.html' title='Lista de números com o Bash'/><author><name>Rodolfo</name><uri>http://www.blogger.com/profile/13115401885842551697</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_vI4PxbAv6pM/SJ-dzrhNvyI/AAAAAAAAAAc/dOyhjpNbx58/s1600-R/Rodolfo_safari.png'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-396083382034174439.post-8836339763841224249</id><published>2011-09-01T00:44:00.000-03:00</published><updated>2011-09-01T01:07:08.896-03:00</updated><title type='text'>Entrevista com r0ml na OSCON 2011</title><content type='html'>O David Mertz gravou uma conversa com o &lt;a href="http://r0ml.net/blog/"&gt;Robert Lefkowitz&lt;/a&gt;, também conhecido como r0ml, e está no YouTube. Eles falam sobre os pensamentos de Lefkowitz sobre Computer Programming Literacy.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;object class="BLOGGER-youtube-video" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0" data-thumbnail-src="http://2.gvt0.com/vi/Ggcf2XsvLXI/0.jpg" height="266" width="320"&gt;&lt;param name="movie" value="http://www.youtube.com/v/Ggcf2XsvLXI&amp;fs=1&amp;source=uds" /&gt;&lt;param name="bgcolor" value="#FFFFFF" /&gt;&lt;embed width="320" height="266"  src="http://www.youtube.com/v/Ggcf2XsvLXI&amp;fs=1&amp;source=uds" type="application/x-shockwave-flash"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;object class="BLOGGER-youtube-video" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0" data-thumbnail-src="http://2.gvt0.com/vi/9pxhLI6KMWI/0.jpg" height="266" width="320"&gt;&lt;param name="movie" value="http://www.youtube.com/v/9pxhLI6KMWI&amp;fs=1&amp;source=uds" /&gt;&lt;param name="bgcolor" value="#FFFFFF" /&gt;&lt;embed width="320" height="266"  src="http://www.youtube.com/v/9pxhLI6KMWI&amp;fs=1&amp;source=uds" type="application/x-shockwave-flash"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Pena que os vídeos estão muito editados/cortados, em algumas partes a conversa se torna pouco natural. Mas de qualquer forma é um papo bem bacana.&lt;br /&gt;&lt;br /&gt;E os meus amigos &lt;a href="http://caikesouza.com/"&gt;Caike Souza&lt;/a&gt; e &lt;a href="http://henriquebastos.net/"&gt;Henrique Bastos&lt;/a&gt; tiraram uma foto com o Robert na OSCON em minha homenagem! Muito obrigado!&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a href="http://twitpic.com/5wzlti" title="@201 this is for you, my friend! #oscon /cc @caike @r0ml  on Twitpic"&gt;&lt;img alt="@201 this is for you, my friend! #oscon /cc @caike @r0ml  on Twitpic" height="238" src="http://d2.proxy05.twitpic.com/photos/large/357739830.jpg" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/396083382034174439-8836339763841224249?l=blog.rodolfocarvalho.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.rodolfocarvalho.net/feeds/8836339763841224249/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=396083382034174439&amp;postID=8836339763841224249' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/396083382034174439/posts/default/8836339763841224249'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/396083382034174439/posts/default/8836339763841224249'/><link rel='alternate' type='text/html' href='http://blog.rodolfocarvalho.net/2011/09/entrevista-com-r0ml-na-oscon-2011.html' title='Entrevista com r0ml na OSCON 2011'/><author><name>Rodolfo</name><uri>http://www.blogger.com/profile/13115401885842551697</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_vI4PxbAv6pM/SJ-dzrhNvyI/AAAAAAAAAAc/dOyhjpNbx58/s1600-R/Rodolfo_safari.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-396083382034174439.post-1478367086311526810</id><published>2011-08-31T22:25:00.000-03:00</published><updated>2011-08-31T22:27:11.984-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ufrj'/><category scheme='http://www.blogger.com/atom/ns#' term='complex networks'/><title type='text'>Dark Networks</title><content type='html'>&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;Resumo do artigo “&lt;span lang="en-US"&gt;TheTopology of Dark Networks&lt;/span&gt;”&lt;/span&gt;&lt;br /&gt;&lt;div align="LEFT" lang="en-US" style="font-style: normal;"&gt;&lt;span class="Apple-style-span" style="background-color: white;"&gt;Jennifer Xu, Hsinchun Chen,&amp;nbsp;&lt;a href="http://m.cacm.acm.org/magazines/2008/10/512-the-topology-of-dark-networks/abstract"&gt;The topology of Dark Networks&lt;/a&gt;. Communications of the ACM, Vol. 51, 2008.&lt;/span&gt;&lt;/div&gt;&lt;h2 class="western"&gt;Introdução&lt;/h2&gt;&lt;div align="LEFT"&gt;&lt;span style="color: black;"&gt;&lt;span style="font-family: 'Times New Roman';"&gt;&lt;span lang="en-US"&gt;&lt;i&gt;DarksNetworks&lt;/i&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color: black;"&gt;&lt;span style="font-family: 'Times New Roman';"&gt;&lt;span style="font-style: normal;"&gt;são as redes de organizações terroristas, tráfico de drogas,tráfico de armas, gangues, etc.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="LEFT" style="font-style: normal;"&gt;&lt;span style="color: black;"&gt;&lt;span style="font-family: 'Times New Roman';"&gt;Umarede complexa de grande porte pode ser classificada em três tipos:aleatória, mundo pequeno, e livre de escala. A categorização éfeita com base na topologia da rede, e esta é estudada através deestatísticas como comprimento médio de caminhos, coeficiente declusterização médio, e distribuição de graus.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="LEFT" style="font-style: normal;"&gt;&lt;span style="color: black;"&gt;&lt;span style="font-family: 'Times New Roman';"&gt;Oartigo faz referência aos trabalhos de Réka Albert e Albert-LászlóBarabási quando afirma que a maioria dos sistemas complexos não sãoaleatórios, e apresentam propriedades de redes de mundo pequeno elivres de escala. Em seguida, quatro “redes do mal” sãoestudadas a fim de discutir que propriedades elas apresentam,tentando justificar cada uma delas. São elas: GSJ (rede deterroristas, alguns da Al Qaeda), Meth World (traficantes demetanfetaminas), Gang Network (criminosos de gangues de Tucson, EUA),Dark Web (rede de sites de grupos terroristas).&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;h2 class="western"&gt;&lt;a name='more'&gt;&lt;/a&gt;Análise das redes&lt;/h2&gt;&lt;div align="LEFT" style="font-style: normal;"&gt;&lt;span style="color: black;"&gt;&lt;span style="font-family: 'Times New Roman';"&gt;Infelizmenteos dados disponíveis para o estudo possuíam uma série delimitações, boa parte delas devido à dificuldade de se obter deforma completa, consistente e correta informação sobre nós eligações. Visto este problema, os autores fizeram simulaçõesalterando a rede para tirar conclusões sobre os efeitos que os dadosruins iniciais teriam nos resultados encontrados.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="LEFT" style="font-style: normal;"&gt;&lt;span style="color: black;"&gt;&lt;span style="font-family: 'Times New Roman';"&gt;Todasas redes estudadas apresentam diversos componentes conexos, masapenas um único componente gigante. As análises topológicas feitasutilizaram os componentes gigantes das quatro redes.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="LEFT"&gt;&lt;span style="color: black;"&gt;&lt;span style="font-family: 'Times New Roman';"&gt;Duasdas redes, GSJ e Dark Web, têm nós tão populares (grau alto) quepossuem ligações com mais de 10% da rede. Existe um conceito de“ordenamento” (&lt;i&gt;assortativity&lt;/i&gt;) tal que nós tendem a terconexões com outros de popularidade similar. A tendência deconexões entre nós de popularidade diferente equivale a umcoeficiente de ordenamento negativo, ou desordenamento(&lt;i&gt;disassortativity&lt;/i&gt;).&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="LEFT" style="font-style: normal;"&gt;&lt;span style="color: black;"&gt;&lt;span style="font-family: 'Times New Roman';"&gt;Asredes GSJ e Gang Network apresentaram coeficiente de ordenamentopositivo, o que quer dizer que membros populares tendem a se conectarcom outros igualmente populares. Meth World e Dark Web apresentamdesordenamento, explicado pelo fato de, segundo estudos de terceiros,organizações de tráfico de drogas serem comandadas por poucosindivíduos que se conectam a muitos revendedores de drogas, e porquesites populares  geralmente são linkados por muitos sites poucopopulares.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="LEFT" style="font-style: normal;"&gt;&lt;span style="color: black;"&gt;&lt;span style="font-family: 'Times New Roman';"&gt;Asredes apresentam propriedades de mundo pequeno, ou seja, criminosospodem se comunicar com qualquer outro membro da rede através depoucos mediadores. Caminhos curtos e links esparsos ajudam a reduziro risco de detecção e aumentam a eficiência da comunicação.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;h2 class="western"&gt;Quais os mecanismos explicam as propriedadesencontradas&lt;/h2&gt;&lt;div align="LEFT" style="font-style: normal;"&gt;&lt;span style="color: black;"&gt;&lt;span style="font-family: 'Times New Roman';"&gt;Oartigo estuda também a possibilidade de se regerar as quatro redesutilizado-se de mecanismos conhecidos, para tentar entender quaisdestes tem papel importante na produção das propriedades observadasnas Dark Networks.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="LEFT" style="font-style: normal;"&gt;&lt;span style="color: black;"&gt;&lt;span style="font-family: 'Times New Roman';"&gt;Assimulações realizadas foram baseadas em três mecanismosevolucionários: crescimento, ligação preferencial e novos linksentre nós já existentes. Os resultados mostraram que a distribuiçãode lei de potência e seu comportamento foram regeradossatisfatoriamente a partir desses mecanismos, entretanto, ocoeficiente de clusterização das redes simuladas ficou sempre muitoabaixo dos encontrados nas redes prospectadas.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="LEFT" style="font-style: normal;"&gt;&lt;span style="color: black;"&gt;&lt;span style="font-family: 'Times New Roman';"&gt;Acredita-seque outros mecanismos tenham contribuição substancial para os altoscoeficientes de clusterização observados, tais como recrutamento.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;h2 class="western"&gt;Ataques&lt;/h2&gt;&lt;div align="LEFT" style="font-style: normal;"&gt;&lt;span style="color: black;"&gt;&lt;span style="font-family: 'Times New Roman';"&gt;Xue Chen discutiram o efeito de ataques a &lt;i&gt;hubs&lt;/i&gt;, nós com muitoslinks, e &lt;i&gt;bridges&lt;/i&gt;, nós pelos quais passam muitos caminhos maiscurtos, usando duas estratégias distintas: remoção simultânea eremoção progressiva com atualização de estatísticas a cadaremoção.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="LEFT" style="font-style: normal;"&gt;&lt;span style="color: black;"&gt;&lt;span style="font-family: 'Times New Roman';"&gt;Aconclusão foi de que ataques progressivos são mais devastadores queataques simultâneos, e que os primeiros são similares a “falhassucessivas” na Internet, em que uma falha inicial acarreta outras por causa do redirecionamento de grande volume de tráfego.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="LEFT" style="font-style: normal;"&gt;&lt;span style="color: black;"&gt;&lt;span style="font-family: 'Times New Roman';"&gt;Algumasredes terroristas são mais sensíveis a ataques contra &lt;i&gt;bridges&lt;/i&gt;que &lt;i&gt;hubs&lt;/i&gt;, e outras são igualmente sensíveis a ataques contra&lt;i&gt;hubs&lt;/i&gt; ou &lt;i&gt;bridges&lt;/i&gt;.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;h2 class="western"&gt;Questionamentos&lt;/h2&gt;&lt;div align="LEFT" style="font-style: normal;"&gt;Oque podemos fazer efetivamente se conhecermos bem a topologia de umarede? Podemos alterar o comportamento de nós? Criar ou removerlinks? Prever o surgimento de links?&lt;/div&gt;&lt;div align="LEFT" style="font-style: normal;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div align="LEFT" style="font-style: normal;"&gt;Como terroristas podem se valer de conhecimento de técnicas de detecção de redes para se manterem ocultos?&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Leia também:&lt;br /&gt;&lt;span class="Apple-style-span" style="background-color: white;"&gt;Valdis Krebs,&amp;nbsp;&lt;a href="http://firstmonday.org/htbin/cgiwrap/bin/ojs/index.php/fm/article/viewArticle/941"&gt;Uncloaking Terrorist Networks&lt;/a&gt;. First Monday, Volume 7 Number 4 - 1 April 2002.&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/396083382034174439-1478367086311526810?l=blog.rodolfocarvalho.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.rodolfocarvalho.net/feeds/1478367086311526810/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=396083382034174439&amp;postID=1478367086311526810' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/396083382034174439/posts/default/1478367086311526810'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/396083382034174439/posts/default/1478367086311526810'/><link rel='alternate' type='text/html' href='http://blog.rodolfocarvalho.net/2011/08/dark-networks.html' title='Dark Networks'/><author><name>Rodolfo</name><uri>http://www.blogger.com/profile/13115401885842551697</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_vI4PxbAv6pM/SJ-dzrhNvyI/AAAAAAAAAAc/dOyhjpNbx58/s1600-R/Rodolfo_safari.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-396083382034174439.post-6081659424671073510</id><published>2011-08-31T00:04:00.001-03:00</published><updated>2011-08-31T17:05:44.791-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='bash'/><category scheme='http://www.blogger.com/atom/ns#' term='trick'/><title type='text'>Auto-completar Bash usando chaves { }</title><content type='html'>Bem, se você usa o terminal mesmo que pouco deve saber que a tecla TAB é usada para auto-completar nomes de arquivos e alguns comandos.&lt;br /&gt;&lt;br /&gt;Mas o que você não deve saber é do uso das &lt;b&gt;chaves&lt;/b&gt; como forma de &lt;b&gt;construir strings arbitrárias&lt;/b&gt;. E mais, se você é como o meu amigo &lt;a href="http://flavioamieiro.com/"&gt;Flávio Amieiro&lt;/a&gt; e já sabia disso, aposto que você não sabia que pode usar &lt;b&gt;auto-completar&lt;/b&gt; e as chaves {} {} {} {}!!!!&lt;br /&gt;&lt;br /&gt;Digamos que estou num diretório assim:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;rodolfo@lisa:/tmp/bash-tricks$ ls&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;foo_ball.egg &amp;nbsp;foobaz &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; foo_spam2.egg &amp;nbsp;foo_spam.egg &amp;nbsp;hello.c&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;foo-bar &amp;nbsp; &amp;nbsp; &amp;nbsp; foo_spam1.egg &amp;nbsp;foo_spam3.egg &amp;nbsp;foo.txt&lt;/span&gt;&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Podemos auto-completar nomes com TAB. Por exemplo, digitar "h" seguido de TAB vai resultar em "hello.c".&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Digamos que quero fazer um diff entre&amp;nbsp;foo_spam2.egg e&amp;nbsp;foo_spam3.egg. Uma forma de fazer isso seria digitar o comando completo:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;diff&amp;nbsp;foo_spam2.egg foo_spam3.egg&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;Depois de ler isto aqui, espero que sua forma de fazer seja assim:&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;diff foo_spam{2,3}.egg&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;O Bash expande automaticamente tudo que estiver dentro das chaves. Itens são separados por vírgula, sem espaços. Se quiser colocar um espaço ou vírgula na string gerada, escape com uma contra-barra \.&lt;br /&gt;&lt;br /&gt;Exemplo:&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;rodolfo@lisa:/tmp/bash-tricks$ echo O Bash é {legal\,,muito\ poderoso,e\ divertido.}&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;O Bash é legal, muito poderoso e divertido.&lt;/span&gt;&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Agora a cereja no topo do bolo! Como gerar uma string como a do exemplo acima a partir dos arquivos num diretório?&lt;br /&gt;&lt;br /&gt;Digamos que queremos remover todos os arquivos que começam com "foo".&lt;br /&gt;Começamos digitando:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;rodolfo@lisa:/tmp/bash-tricks$ rm f&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;Agora tecle&amp;nbsp;&lt;b&gt;alt + {&lt;/b&gt;&amp;nbsp;e você verá o Bash auto-completar usando a notação de {}:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;rodolfo@lisa:/tmp/bash-tricks$ rm foo{-bar,.txt,_{ball.egg,spam{.egg,1.egg,2.egg,3.egg}},baz}&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Fantástico não? Note que você pode apontar para outros diretórios, e fazer combinações arbitrariamente complexas.&lt;/div&gt;&lt;div&gt;Não sei em que parte da documentação isto está, descobri por acaso!&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Quer aprender mais? &lt;b&gt;&lt;a href="http://www.gnu.org/s/bash/manual/bash.html#Brace-Expansion"&gt;man bash&lt;/a&gt;&lt;/b&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/396083382034174439-6081659424671073510?l=blog.rodolfocarvalho.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.rodolfocarvalho.net/feeds/6081659424671073510/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=396083382034174439&amp;postID=6081659424671073510' title='6 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/396083382034174439/posts/default/6081659424671073510'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/396083382034174439/posts/default/6081659424671073510'/><link rel='alternate' type='text/html' href='http://blog.rodolfocarvalho.net/2011/08/auto-completar-bash-usando-chaves.html' title='Auto-completar Bash usando chaves { }'/><author><name>Rodolfo</name><uri>http://www.blogger.com/profile/13115401885842551697</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_vI4PxbAv6pM/SJ-dzrhNvyI/AAAAAAAAAAc/dOyhjpNbx58/s1600-R/Rodolfo_safari.png'/></author><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-396083382034174439.post-3723834245721207643</id><published>2011-08-30T23:28:00.000-03:00</published><updated>2011-08-31T21:50:25.158-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ufrj'/><category scheme='http://www.blogger.com/atom/ns#' term='complex networks'/><title type='text'>Decaimento exponencial e lei de potência</title><content type='html'>Numa aula de &lt;a href="http://www.land.ufrj.br/~daniel/rc/"&gt;Redes Complexas&lt;/a&gt; estávamos observando numericamente o que quer dizer que uma função (no caso, uma função densidade de probabilidade) decai exponencialmente ou segundo uma lei de potência.&lt;br /&gt;&lt;br /&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style="padding-right: 4em;"&gt;No caso exponencial temos:&lt;/td&gt; &lt;td&gt;E lei de potência:&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;P(x) ~ e&lt;sup&gt;-x&lt;/sup&gt;&lt;/td&gt; &lt;td&gt;P(x) ~ x&lt;sup&gt;-γ&lt;/sup&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;Fiz uns gráficos de algumas funções que ajudam a entender um pouco do que está acontecendo. Compare as funções azul e vermelha com a violeta. As duas primeiras são leis de potência com expoente 2,5 e 1,4, respectivamente, que poderiam representar a distribuição de graus de nós em &lt;a href="http://blog.rodolfocarvalho.net/2011/08/rede-livre-de-escala.html"&gt;redes livres de escala&lt;/a&gt;. A última é uma curva gaussiana, que poderia representar&amp;nbsp;a distribuição de graus de nós em&amp;nbsp;uma &lt;a href="http://blog.rodolfocarvalho.net/2011/08/rede-livre-de-escala.html"&gt;rede aleatória&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Num artigo de Barabási e&amp;nbsp;&lt;span class="Apple-style-span" style="background-color: white;"&gt;Bonabeau,&amp;nbsp;&lt;/span&gt;&lt;span class="Apple-style-span" style="background-color: white;"&gt;&lt;a href="http://www.nd.edu/~networks/Publication%20Categories/01%20Review%20Articles/ScaleFree_Scientific%20Ameri%20288,%2060-69%20(2003).pdf"&gt;Scale-free networks&lt;/a&gt;, eles dizem que o&amp;nbsp;&lt;/span&gt;&lt;span class="Apple-style-span" style="background-color: white;"&gt;γ&lt;/span&gt;&lt;span class="Apple-style-span" style="background-color: white;"&gt;&amp;nbsp;das redes livres de escala está geralmente entre 2 e 3. Já&amp;nbsp;&lt;/span&gt;&lt;span class="Apple-style-span" style="background-color: white;"&gt;Xu e Chen em&amp;nbsp;&lt;a href="http://m.cacm.acm.org/magazines/2008/10/512-the-topology-of-dark-networks/abstract"&gt;The topology of Dark Networks&lt;/a&gt;&amp;nbsp;encontram redes com&amp;nbsp;&lt;/span&gt;&lt;span class="Apple-style-span" style="background-color: white;"&gt;γ&lt;/span&gt;&lt;span class="Apple-style-span" style="background-color: white;"&gt;&amp;nbsp;entre 1 e 2.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="background-color: white;"&gt;Se olharmos para as funções 1, 2, 3 e 4,&lt;strike&gt; notamos que a lei de potência com γ = 5.9 decai mais rápido que a exponencial 4, para as constantes envolvidas&lt;/strike&gt;. Isto traz à tona o sentimento de que o efeito da &lt;a href="http://pt.wikipedia.org/wiki/Cauda_Longa"&gt;cauda longa&lt;/a&gt;, ou &lt;a href="http://chestofbooks.com/health/natural-cure/The-Hygienic-System-Fasting-and-Sun-Bathing/images/Page-76.jpg"&gt;cauda pesada&lt;/a&gt;, fica melhor caracterizado quando&amp;nbsp;&lt;/span&gt;&lt;span class="Apple-style-span" style="background-color: white;"&gt;γ é pequeno.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-_NG6R-FVTxU/Tl2SZzB9YcI/AAAAAAAAEac/55BWRGTPoj8/s1600/graph_20110830_204407.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="200" src="http://3.bp.blogspot.com/-_NG6R-FVTxU/Tl2SZzB9YcI/AAAAAAAAEac/55BWRGTPoj8/s400/graph_20110830_204407.png" width="400" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;&lt;a href="http://graphsketch.com/?eqn1_color=1&amp;amp;eqn1_eqn=300*x%5E-2.5&amp;amp;eqn2_color=2&amp;amp;eqn2_eqn=300*x%5E-1.4&amp;amp;eqn3_color=3&amp;amp;eqn3_eqn=300*x%5E-5.9&amp;amp;eqn4_color=4&amp;amp;eqn4_eqn=300*e%5E-x&amp;amp;eqn5_color=5&amp;amp;eqn5_eqn=300*e%5E-(x%2F4)%5E2&amp;amp;eqn6_color=6&amp;amp;eqn6_eqn=&amp;amp;x_min=0&amp;amp;x_max=100&amp;amp;y_min=0&amp;amp;y_max=50&amp;amp;x_tick=5&amp;amp;y_tick=5&amp;amp;x_label_freq=10&amp;amp;y_label_freq=10&amp;amp;do_grid=0&amp;amp;do_grid=1&amp;amp;bold_labeled_lines=0&amp;amp;line_width=2&amp;amp;image_w=800&amp;amp;image_h=400"&gt;Permalink para o gráfico&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;span class="Apple-style-span" style="background-color: white;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="background-color: white;"&gt;Update [31/08/2011]&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="background-color: white;"&gt;Cometi um erro absurdo acima. A exponencial decai mais rápido. É claro! Se olharmos com um zoom de 10000x no eixo vertical, veremos que as curvas se cruzam e a exponencial se aproxima de zero muito mais rápido que a lei de potência.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-yFRL3hIngn8/Tl7UYlACqHI/AAAAAAAAEag/vawfQGnW7hE/s1600/graph_20110831_193334.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="200" src="http://1.bp.blogspot.com/-yFRL3hIngn8/Tl7UYlACqHI/AAAAAAAAEag/vawfQGnW7hE/s400/graph_20110831_193334.png" width="400" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;&lt;a href="http://graphsketch.com/?eqn1_color=1&amp;amp;eqn1_eqn=&amp;amp;eqn2_color=2&amp;amp;eqn2_eqn=&amp;amp;eqn3_color=3&amp;amp;eqn3_eqn=300*x^-5.9&amp;amp;eqn4_color=4&amp;amp;eqn4_eqn=300*e^-x&amp;amp;eqn5_color=5&amp;amp;eqn5_eqn=&amp;amp;eqn6_color=6&amp;amp;eqn6_eqn=&amp;amp;x_min=0&amp;amp;x_max=100&amp;amp;y_min=0&amp;amp;y_max=0.0001&amp;amp;x_tick=5&amp;amp;y_tick=5&amp;amp;x_label_freq=10&amp;amp;y_label_freq=10&amp;amp;do_grid=0&amp;amp;do_grid=1&amp;amp;bold_labeled_lines=0&amp;amp;line_width=2&amp;amp;image_w=800&amp;amp;image_h=400"&gt;Permalink para o gráfico&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;div&gt;Apesar do deslize, o sentimento é o mesmo. Ter&amp;nbsp;&lt;span class="Apple-style-span" style="background-color: white;"&gt;γ grande implica numa menor probabilidade de coisas "fora do normal" acontecerem, e o fato é que nas redes livres de escala as coisas acontecem.&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/396083382034174439-3723834245721207643?l=blog.rodolfocarvalho.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.rodolfocarvalho.net/feeds/3723834245721207643/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=396083382034174439&amp;postID=3723834245721207643' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/396083382034174439/posts/default/3723834245721207643'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/396083382034174439/posts/default/3723834245721207643'/><link rel='alternate' type='text/html' href='http://blog.rodolfocarvalho.net/2011/08/decaimento-exponencial-e-lei-de.html' title='Decaimento exponencial e lei de potência'/><author><name>Rodolfo</name><uri>http://www.blogger.com/profile/13115401885842551697</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_vI4PxbAv6pM/SJ-dzrhNvyI/AAAAAAAAAAc/dOyhjpNbx58/s1600-R/Rodolfo_safari.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/-_NG6R-FVTxU/Tl2SZzB9YcI/AAAAAAAAEac/55BWRGTPoj8/s72-c/graph_20110830_204407.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-396083382034174439.post-8878931209597833316</id><published>2011-08-16T17:59:00.006-03:00</published><updated>2011-08-24T23:41:44.581-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='scale-free networks'/><category scheme='http://www.blogger.com/atom/ns#' term='ufrj'/><category scheme='http://www.blogger.com/atom/ns#' term='complex networks'/><title type='text'>Rede livre de escala</title><content type='html'>&lt;span class="Apple-style-span" style="font-size: large;"&gt;O desafio&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Imagine-se como o &lt;b&gt;imperador de um planeta&lt;/b&gt; de outra galáxia.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://images.halloweencostumes.net/kids-alien-costume-1.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="320" src="http://images.halloweencostumes.net/kids-alien-costume-1.jpg" width="216" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Conseguiu visualizar? Agora, sendo um imperador de um lugar tecnologicamente avançado, você tem uma tarefa pela frente: &lt;b&gt;implantar uma rede de rotas de voo de naves espaciais no espaço aéreo de seu planeta&lt;/b&gt;.&lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;Aqui está uma representação das cidades do seu planeta que o Departamento de Defesa Aérea (DDA) disponibilizou:&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-MkbcBEpArW8/TkdtZJjZdfI/AAAAAAAAEaU/I0c6b-a7VDk/s1600/empty-cities.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="264" src="http://3.bp.blogspot.com/-MkbcBEpArW8/TkdtZJjZdfI/AAAAAAAAEaU/I0c6b-a7VDk/s320/empty-cities.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Para simplificar, vamos assumir que todas as rotas serão bidirecionais, ou seja, se existe uma rota de A para B, então naves podem trafegar tanto de A para B quando de B para A.&lt;br /&gt;&lt;br /&gt;Parece difícil? Não sabe por onde começar? Não se preocupe, você não está sozinho. Para te ajudar, apresento-lhe seu conselheiro:&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://images.halloweencostumes.net/adult-alien-costume.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="320" src="http://images.halloweencostumes.net/adult-alien-costume.jpg" width="195" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Seu conselheiro é muito sábio, leia o que ele tem a dizer sobre como realizar a implantação das rotas:&lt;br /&gt;&lt;blockquote&gt;“Caro imperador,&amp;nbsp;&lt;/blockquote&gt;&lt;blockquote&gt;Precisamos interligar nossas 42 cidades da melhor forma possível. Uma cidade não pode ter muitas rotas, ou ela será sobrecarregada causando grande congestionamento. Para otimizar o tráfego aéreo, podemos colocar em torno de 5 rotas em cada cidade saindo para outras cidades próximas, assim será fácil ir de um ponto a outro e evitamos caos aéreo.”&lt;/blockquote&gt;&lt;span class="Apple-style-span" style="font-size: large;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-size: large;"&gt;Primeira solução&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Se você seguir as orientações de seu conselheiro, você pode construir uma rede parecida com esta:&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-3tH8ADg6oKE/TkdgM2sfVRI/AAAAAAAAEZ4/6U1RyTZG8Dg/s1600/random-cities.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="264" src="http://4.bp.blogspot.com/-3tH8ADg6oKE/TkdgM2sfVRI/AAAAAAAAEZ4/6U1RyTZG8Dg/s320/random-cities.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;O que você construiu foi uma &lt;b&gt;&lt;a href="http://pt.wikipedia.org/wiki/Rede_complexa#Rede_Aleat.C3.B3ria"&gt;rede aleatória&lt;/a&gt;&lt;/b&gt;. Numa rede aleatória, a probabilidade de um nó (cidade) estar ligado a outros k nós (rotas aéreas) obedece a uma &lt;b&gt;&lt;a href="http://pt.wikipedia.org/wiki/Distribui%C3%A7%C3%A3o_de_Poisson"&gt;distribuição de Poisson&lt;/a&gt;&lt;/b&gt;.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://upload.wikimedia.org/wikipedia/commons/4/40/Fisher_iris_versicolor_sepalwidth.svg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="220" src="http://upload.wikimedia.org/wikipedia/commons/4/40/Fisher_iris_versicolor_sepalwidth.svg" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Isto quer dizer que em geral as cidades terão de 4 a 6 conexões, e serão &lt;b&gt;raros os casos que se afastam muito da média&lt;/b&gt;.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-size: large;"&gt;Novo modelo&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Acontece que a solução proposta foge da realidade. Não pelo fato de estarmos tratando de extraterrestres, mas sim porque o mais comum de acontecer é que &lt;b&gt;1)&amp;nbsp;não conhecemos a priori todas as cidades e 2) elas tem diferentes graus de importância&lt;/b&gt;.&lt;br /&gt;&lt;br /&gt;Seu planeta começa com poucas cidades, e, ao longo do tempo, novas cidades surgem e com elas a necessidade de criar novas rotas aéreas. Estas novas rotas conectarão as novas cidades&amp;nbsp;preferencialmente&amp;nbsp;àquelas mais importantes do seu planeta.&lt;br /&gt;&lt;br /&gt;Neste novo cenário, vamos fazer uma breve simulação do surgimento de novas cidades e rotas. Para economizar recursos, seu conselheiro diz-lhe para construir apenas 1 rota para cada nova cidade, e que esta rota conecte a nova cidade a uma cidade importante.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-rONWOJYjrDs/TkdwjNPViZI/AAAAAAAAEaY/JsgiS4eBC2E/s1600/scale-free-cities-0.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="264" src="http://2.bp.blogspot.com/-rONWOJYjrDs/TkdwjNPViZI/AAAAAAAAEaY/JsgiS4eBC2E/s320/scale-free-cities-0.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Tempo 0&lt;/b&gt;: mapa das 6 cidades&amp;nbsp;inicialmente&amp;nbsp;existentes no planeta, segundo o DDA.&amp;nbsp;Os círculos na cor cinza representam cidades ainda inexistentes.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-VEFb_E4yFKs/Tkdm3mUC6gI/AAAAAAAAEZ8/24kktCehPIM/s1600/scale-free-cities-1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="264" src="http://2.bp.blogspot.com/-VEFb_E4yFKs/Tkdm3mUC6gI/AAAAAAAAEZ8/24kktCehPIM/s320/scale-free-cities-1.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;b&gt;Tempo 1&lt;/b&gt;: primeira implantação de rede de rotas aéreas conectando todas as cidades entre si.&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-sIxmCa6MjMc/Tkdm4ME6GVI/AAAAAAAAEaA/ohmJyRdAhic/s1600/scale-free-cities-2.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="264" src="http://1.bp.blogspot.com/-sIxmCa6MjMc/Tkdm4ME6GVI/AAAAAAAAEaA/ohmJyRdAhic/s320/scale-free-cities-2.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;b&gt;Tempo 2&lt;/b&gt;: surgem novas cidades, e seguindo a sugestão do conselheiro são criadas novas rotas, uma para cada nova cidade.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-BhPKc4L8Tuc/Tkdm4T6kBVI/AAAAAAAAEaE/z9nwqtxuC44/s1600/scale-free-cities-3.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="264" src="http://4.bp.blogspot.com/-BhPKc4L8Tuc/Tkdm4T6kBVI/AAAAAAAAEaE/z9nwqtxuC44/s320/scale-free-cities-3.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;b&gt;Tempo 3&lt;/b&gt;: o surgimento de mais cidades marca o aparecimento de &lt;i&gt;hubs&lt;/i&gt;, cidades com um grande número de rotas.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-kTrl5fef7Yw/Tkdm47wu3GI/AAAAAAAAEaI/KD5ZT7AvGkY/s1600/scale-free-cities-4.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="264" src="http://1.bp.blogspot.com/-kTrl5fef7Yw/Tkdm47wu3GI/AAAAAAAAEaI/KD5ZT7AvGkY/s320/scale-free-cities-4.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;b&gt;Tempo 4&lt;/b&gt;: novas cidades conectam-se preferencialmente a cidades-&lt;i&gt;hub&lt;/i&gt;.&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-OsJvOik1Gck/Tkdm5HnKFaI/AAAAAAAAEaM/qCCnICZrgEg/s1600/scale-free-cities-5.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="264" src="http://1.bp.blogspot.com/-OsJvOik1Gck/Tkdm5HnKFaI/AAAAAAAAEaM/qCCnICZrgEg/s320/scale-free-cities-5.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;b&gt;Tempo 5&lt;/b&gt;: as cidades com grande número de rotas tendem a agregar cada vez mais novas rotas.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-l_hIklgUzzE/Tkdm5sF7vII/AAAAAAAAEaQ/brhWd_3dHfU/s1600/scale-free-cities-6.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="264" src="http://1.bp.blogspot.com/-l_hIklgUzzE/Tkdm5sF7vII/AAAAAAAAEaQ/brhWd_3dHfU/s320/scale-free-cities-6.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;b&gt;Tempo 6&lt;/b&gt;: todas as cidades estão conectadas, sendo possível ir de uma cidade para qualquer outra passando por poucas rotas.&lt;br /&gt;&lt;br /&gt;Chegamos a uma rede diferente da rede aleatória. Note que esta nova rede tem 47 rotas, contra 104 da primeira. Apesar de possuir um número muito menor de rotas, as cidades estão altamente interligadas.&lt;br /&gt;&lt;br /&gt;Para ir de qualquer cidade para qualquer outra, precisamos usar no máximo 3 rotas. Na rede aleatória era preciso até 7 rotas para ir de uma cidade a outra.&lt;br /&gt;&lt;br /&gt;Parece que temos uma estrutura interessante em mãos. Temos uma &lt;b&gt;&lt;a href="http://pt.wikipedia.org/wiki/Rede_complexa#Rede_Livre_de_Escala"&gt;rede livre de escala&lt;/a&gt;&lt;/b&gt;. Nestas redes a probabilidade de um nó (cidade) ter k ligações (rotas) decai quando k aumenta, segundo uma &lt;b&gt;&lt;a href="http://pt.wikipedia.org/wiki/Lei_de_pot%C3%AAncia"&gt;Lei de Potência&lt;/a&gt;&lt;/b&gt;.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://upload.wikimedia.org/wikipedia/commons/8/8a/Long_tail.svg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="166" src="http://upload.wikimedia.org/wikipedia/commons/8/8a/Long_tail.svg" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;P(k) ~ k&lt;sup&gt;-γ&lt;/sup&gt;&lt;/div&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-size: large;"&gt;Fatos interessantes&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Redes não servem apenas para modelar rotas aéreas alienígenas. Elas estão presentes no nosso cérebro, células, sociedade, cadeia alimentar, ecossistemas, Internet, transmissão de energia, linguagens, etc.&lt;br /&gt;Apesar da importância das redes, pouco entendemos hoje de suas &lt;b&gt;estruturas&lt;/b&gt; e &lt;b&gt;propriedades&lt;/b&gt;.&lt;br /&gt;&lt;br /&gt;Redes livres de escala são dominadas por um número relativamente pequeno de nós (os&amp;nbsp;&lt;i&gt;hubs&lt;/i&gt;) que estão conectados a muitos outros. Estas redes são&lt;b&gt; resistentes a falhas acidentais&lt;/b&gt; / aleatórias, porém extremamente&lt;b&gt; vulneráveis a ataques coordenados&lt;/b&gt;.&lt;br /&gt;&lt;br /&gt;Caso caiam tempestades aleatórias no planeta, é pouco provável que uma das cidades atingidas seja um &lt;i&gt;hub&lt;/i&gt;. Sendo assim, o estrago causado, o número de rotas interrompidas, é pequeno.&lt;br /&gt;&lt;br /&gt;Por outro lado, se inimigos de outro planeta tiverem acesso aos servidores do DDA e descobrirem quais são as cidades-&lt;i&gt;hub&lt;/i&gt;, bastaria um pequeno ataque que bloqueasse algumas destas cidades para criar um enorme prejuízo.&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-size: large;"&gt;Slides&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Este post é inspirado na leitura de um&amp;nbsp;&lt;a href="http://www.nd.edu/~networks/Publication%20Categories/01%20Review%20Articles/ScaleFree_Scientific%20Ameri%20288,%2060-69%20(2003).pdf"&gt;artigo de divulgação científica de Barabási e Bonabeau entitulado "Scale-free Networks", &amp;nbsp;divulgado na revista Cientific American em maio de 2003&lt;/a&gt;.&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;Farei uma breve apresentação sobre o tema amanhã,&amp;nbsp;em uma aula&amp;nbsp;na UFRJ. Os &lt;a href="http://www.slideshare.net/rhcarvalho/scale-freenetworks"&gt;slides sobre Redes Livres de Escala&lt;/a&gt; já estão disponíveis.&lt;br /&gt;&lt;br /&gt;[Update 22/08/2011] A apresentação foi hoje. Fiz upload da apresentação atualizada. Confira aqui os &lt;a href="http://www.slideshare.net/rhcarvalho/redes-livres-de-escala"&gt;slides sobre Redes Livres de Escala atualizados&lt;/a&gt;:&lt;br /&gt;&lt;br /&gt;&lt;div id="__ss_8966577" style="width: 425px;"&gt;&lt;strong style="display: block; margin: 12px 0 4px;"&gt;&lt;a href="http://www.slideshare.net/rhcarvalho/redes-livres-de-escala" target="_blank" title="Redes livres de escala"&gt;Redes livres de escala&lt;/a&gt;&lt;/strong&gt; &lt;iframe frameborder="0" height="355" marginheight="0" marginwidth="0" scrolling="no" src="http://www.slideshare.net/slideshow/embed_code/8966577" width="425"&gt;&lt;/iframe&gt; &lt;br /&gt;&lt;div style="padding: 5px 0 12px;"&gt;View more &lt;a href="http://www.slideshare.net/" target="_blank"&gt;presentations&lt;/a&gt; from &lt;a href="http://www.slideshare.net/rhcarvalho" target="_blank"&gt;rhcarvalho&lt;/a&gt; &lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-size: large;"&gt;Imagens&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Alienígenas: halloweencostumes.net&lt;/li&gt;&lt;li&gt;Célula: unm.edu/~mpachman&lt;/li&gt;&lt;li&gt;Inception: sensesofcinema.com&lt;/li&gt;&lt;li&gt;Nave espacial: adultswimuk.wordpress.com&lt;/li&gt;&lt;li&gt;Poisson e Lei de Potência: wikipedia.org&lt;/li&gt;&lt;li&gt;Vacina: flickr.com/mccord&lt;/li&gt;&lt;li&gt;Redes: autoria própria&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/396083382034174439-8878931209597833316?l=blog.rodolfocarvalho.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.rodolfocarvalho.net/feeds/8878931209597833316/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=396083382034174439&amp;postID=8878931209597833316' title='5 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/396083382034174439/posts/default/8878931209597833316'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/396083382034174439/posts/default/8878931209597833316'/><link rel='alternate' type='text/html' href='http://blog.rodolfocarvalho.net/2011/08/rede-livre-de-escala.html' title='Rede livre de escala'/><author><name>Rodolfo</name><uri>http://www.blogger.com/profile/13115401885842551697</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_vI4PxbAv6pM/SJ-dzrhNvyI/AAAAAAAAAAc/dOyhjpNbx58/s1600-R/Rodolfo_safari.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/-MkbcBEpArW8/TkdtZJjZdfI/AAAAAAAAEaU/I0c6b-a7VDk/s72-c/empty-cities.png' height='72' width='72'/><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-396083382034174439.post-8583850291139859985</id><published>2011-08-01T18:37:00.001-03:00</published><updated>2011-08-01T18:45:05.615-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='racket'/><category scheme='http://www.blogger.com/atom/ns#' term='readline'/><category scheme='http://www.blogger.com/atom/ns#' term='ipython'/><category scheme='http://www.blogger.com/atom/ns#' term='python'/><title type='text'>Racket com readline</title><content type='html'>&lt;span class="Apple-style-span" style="font-family: arial; font-size: x-small;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;div&gt;Para quem estava acostumado ao IPython, usar o interpretador do Racket no terminal pode ser um bocado decepcionante.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Isto porque por padrão o REPL é bem rudimentar, sem suporte a auto-completar, sem histórico, sem nada...&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;O que existe entretanto é um problema com licenças. O readline é distribuído em GPL, e o Racket em LGPL, e para não haver conflitos o suporte a readline vem desativado por padrão. Mas ele está lá.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;A documentação em inglês dá os detalhes completos:&amp;nbsp;&lt;a href="http://docs.racket-lang.org/readline/"&gt;Readline: Terminal Interaction&lt;/a&gt;.&lt;/div&gt;&lt;div&gt;Este módulo vai tornar sua experiência no REPL muito mais agradável, naqueles momentos em que você está no terminal e não quer abrir o DrRacket ou o Emacs.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Para usar basta iniciar o racket assim:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: serif;"&gt;&lt;span class="hspace" style="font-family: monospace;"&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span class="stt" style="font-family: monospace;"&gt;racket -il readline&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;E se você não quiser ter que fazer isto toda vez, basta instalar permanentemente o suporte ao readline chamando uma função :D&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: serif;"&gt;&lt;span class="RktPn" style="color: #843c24; font-family: monospace;"&gt;(&lt;/span&gt;&lt;a href="http://www.blogger.com/post-edit.g?blogID=396083382034174439&amp;amp;postID=8583850291139859985" name="(dep._((lib._readline/main..rkt)._install-readline!))"&gt;&lt;/a&gt;&lt;a href="http://www.blogger.com/post-edit.g?blogID=396083382034174439&amp;amp;postID=8583850291139859985" name="(def._((lib._readline/main..rkt)._install-readline!))"&gt;&lt;/a&gt;&lt;span title="Provided from: readline, readline/rep-start"&gt;&lt;span class="RktSym" style="color: #262680; font-family: monospace;"&gt;&lt;a class="RktValLink" href="http://docs.racket-lang.org/readline/#(def._((lib._readline/main..rkt)._install-readline!))" pltdoc="x" style="color: blue; text-decoration: none;"&gt;install-readline!&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="RktPn" style="color: #843c24; font-family: monospace;"&gt;&lt;/span&gt;&lt;span class="RktPn" style="color: #843c24; font-family: monospace;"&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: serif;"&gt;&lt;span class="RktPn" style="color: #843c24; font-family: monospace;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;Pronto. Agora toda vez que executar &lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;racket&lt;/span&gt; você entratá num REPL com histórico (que lembra inclusive as sessões anteriores), auto-completar usando tab, seta pra cima e pra baixo pra navegar nos comandos, etc.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Para ficar melhor ainda, adicione uma linha no arquivo&amp;nbsp;~/.inputrc:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;blockquote&gt;set blink-matching-paren on&lt;/blockquote&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Esta &lt;a href="http://arclanguage.org/item?id=12692"&gt;sugestão do Eli Barzilay&lt;/a&gt; faz com que seu terminal indique qual "(" está relacionado com qual ")" quando você digita, e funciona tanto dentro do racket quanto em qualquer outro canto, inclusive no IPython. Também funciona com [] e {}.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;E não pára por aí... o REPL vai ficar melhor ainda com o &lt;a href="http://pre.racket-lang.org/docs/html/xrepl/index.html"&gt;XREPL&lt;/a&gt; que vem aí na próxima release.&lt;br /&gt;Com ele será possível fazer coisas já corriqueiras no IPython, agora em Racket.&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Happy hacking!&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/396083382034174439-8583850291139859985?l=blog.rodolfocarvalho.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.rodolfocarvalho.net/feeds/8583850291139859985/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=396083382034174439&amp;postID=8583850291139859985' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/396083382034174439/posts/default/8583850291139859985'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/396083382034174439/posts/default/8583850291139859985'/><link rel='alternate' type='text/html' href='http://blog.rodolfocarvalho.net/2011/08/racket-com-readline.html' title='Racket com readline'/><author><name>Rodolfo</name><uri>http://www.blogger.com/profile/13115401885842551697</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_vI4PxbAv6pM/SJ-dzrhNvyI/AAAAAAAAAAc/dOyhjpNbx58/s1600-R/Rodolfo_safari.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-396083382034174439.post-1185717507249263892</id><published>2011-07-28T22:46:00.000-03:00</published><updated>2011-07-28T22:46:28.705-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='dojo'/><title type='text'>Estatísticas do Dojo Rio em 2011</title><content type='html'>Resolvi fazer uns gráficos para mostrar as linguagens que usamos nos &lt;a href="http://dojorio.wordpress.com/"&gt;dojos&lt;/a&gt;, mais como curiosidade que outra coisa.&lt;br /&gt;&lt;br /&gt;Para conseguir gerar os dados tive que &lt;a href="http://code.google.com/p/dojo-rio/source/detail?r=158"&gt;renomear alguns diretórios de dojos antigos que estavam sem a descrição de problema e linguagem&lt;/a&gt;. Depois, atualizei meu &lt;a href="http://code.google.com/p/dojo-rio/source/browse/trunk/stats.py"&gt;script para gerar as estatísticas&lt;/a&gt;.&lt;br /&gt;&lt;h2&gt;Os gráficos&lt;/h2&gt;Este ano:&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-jnndng9vBCY/TjIP7m0rQII/AAAAAAAAEZE/b2czH9Am9tk/s1600/dojo-linguagens-2011.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="276" src="http://1.bp.blogspot.com/-jnndng9vBCY/TjIP7m0rQII/AAAAAAAAEZE/b2czH9Am9tk/s400/dojo-linguagens-2011.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Todos os dados disponíveis:&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-J0CEeteeTD8/TjIQE-zeKLI/AAAAAAAAEZI/ebPrOQMPzc0/s1600/dojo-linguagens-2008-2011.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="276" src="http://1.bp.blogspot.com/-J0CEeteeTD8/TjIQE-zeKLI/AAAAAAAAEZI/ebPrOQMPzc0/s400/dojo-linguagens-2008-2011.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Portanto as linguagens mais utilizadas neste ano, assim como em todos os tempos, são Python, Ruby e Javascript.&lt;br /&gt;&lt;br /&gt;Alguma sugestão de gráfico que você gostaria de ver?&lt;br /&gt;&lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;&lt;h2&gt;Os dados brutos&lt;/h2&gt;Este ano:&lt;br /&gt;&lt;pre&gt;-- python (7) --------------------&lt;br /&gt;20110316: fizzbuzz&lt;br /&gt;20110413: wordwrap&lt;br /&gt;20110420: cheque por extenso&lt;br /&gt;20110427: boliche&lt;br /&gt;20110504: boliche&lt;br /&gt;20110622: anagramas&lt;br /&gt;20110720: contaletras&lt;br /&gt;&lt;br /&gt;-- ruby (6) ----------------------&lt;br /&gt;20110105: espiral&lt;br /&gt;20110119: erdos&lt;br /&gt;20110223: letras dos numeros&lt;br /&gt;20110323: pedra papel tesoura&lt;br /&gt;20110615: url&lt;br /&gt;20110629: mijoes&lt;br /&gt;&lt;br /&gt;-- javascript (5) ----------------&lt;br /&gt;20110209: anagrama&lt;br /&gt;20110216: telefone&lt;br /&gt;20110302: intervalos&lt;br /&gt;20110713: romanos&lt;br /&gt;20110727: telefone&lt;br /&gt;&lt;br /&gt;-- csharp (2) --------------------&lt;br /&gt;20110112: telefone&lt;br /&gt;20110608: wordwrap&lt;br /&gt;&lt;br /&gt;-- racket (2) --------------------&lt;br /&gt;20110518: raizes&lt;br /&gt;20110601: caixa eletronico&lt;br /&gt;&lt;br /&gt;-- boo (1) -----------------------&lt;br /&gt;20110525: caixa eletronico&lt;br /&gt;&lt;br /&gt;-- perl (1) ----------------------&lt;br /&gt;20110511: fizzbuzz&lt;br /&gt;&lt;br /&gt;-- smalltalk (1) -----------------&lt;br /&gt;20110706: fizzbuzz&lt;/pre&gt;Todos os dados disponíveis,&amp;nbsp;contabilizando os 113 dojos para os quais guardamos o código no repositório:&lt;br /&gt;&lt;pre&gt;-- python (50) --------------------&lt;br /&gt;20081203: amigo oculto&lt;br /&gt;20081210: dama&lt;br /&gt;20090114: areas sobrepostas&lt;br /&gt;20090128: adicao reversa e saldo&lt;br /&gt;20090211: bank ocr&lt;br /&gt;20090218: minesweeper&lt;br /&gt;20090304: bank ocr&lt;br /&gt;20090311: romanos&lt;br /&gt;20090401: totem&lt;br /&gt;20090408: ocr&lt;br /&gt;20090415: miner&lt;br /&gt;20090422: miner&lt;br /&gt;20090429: vai um&lt;br /&gt;20090506: estacionamento&lt;br /&gt;20090513: katapotter&lt;br /&gt;20090520: diamond&lt;br /&gt;20090610: agenda&lt;br /&gt;20090617: wow&lt;br /&gt;20090722: piratas&lt;br /&gt;20090729: gerador de relatorios&lt;br /&gt;20090812: game of life&lt;br /&gt;20090923: expressao aritimetica&lt;br /&gt;20091015: display de 7 seg&lt;br /&gt;20091104: poker&lt;br /&gt;20091118: mesa de jantar&lt;br /&gt;20091202: vigenere cipher&lt;br /&gt;20091209: musical score&lt;br /&gt;20100106: sql&lt;br /&gt;20100203: tennis&lt;br /&gt;20100224: metadojo&lt;br /&gt;20100324: jogo da velha&lt;br /&gt;20100428: reversi&lt;br /&gt;20100512: automato&lt;br /&gt;20100623: roleta romana&lt;br /&gt;20100804: ascii&lt;br /&gt;20100825: datas&lt;br /&gt;20100929: espiral&lt;br /&gt;20101006: espiral&lt;br /&gt;20101013: fizzbuzz&lt;br /&gt;20101027: espiral&lt;br /&gt;20101103: forca&lt;br /&gt;20101117: forca&lt;br /&gt;20101201: espiral&lt;br /&gt;20110316: fizzbuzz&lt;br /&gt;20110413: wordwrap&lt;br /&gt;20110420: cheque por extenso&lt;br /&gt;20110427: boliche&lt;br /&gt;20110504: boliche&lt;br /&gt;20110622: anagramas&lt;br /&gt;20110720: contaletras&lt;br /&gt;&lt;br /&gt;-- ruby (24) ----------------------&lt;br /&gt;20090701: jogador&lt;br /&gt;20090708: compilador&lt;br /&gt;20090805: catraca&lt;br /&gt;20090819: bowling&lt;br /&gt;20090908: numeric maze&lt;br /&gt;20090916: impedimeto&lt;br /&gt;20091021: torre de hanoi&lt;br /&gt;20091111: grid&lt;br /&gt;20100113: gols&lt;br /&gt;20100127: abastecimento dagua&lt;br /&gt;20100303: detetive&lt;br /&gt;20100414: HomeRange&lt;br /&gt;20100526: saving time&lt;br /&gt;20100609: cheque o xeque&lt;br /&gt;20100616: jokenpo&lt;br /&gt;20100630: validador&lt;br /&gt;20100915: encaixotar&lt;br /&gt;20101020: Espiral&lt;br /&gt;20110105: espiral&lt;br /&gt;20110119: erdos&lt;br /&gt;20110223: letras dos numeros&lt;br /&gt;20110323: pedra papel tesoura&lt;br /&gt;20110615: url&lt;br /&gt;20110629: mijoes&lt;br /&gt;&lt;br /&gt;-- javascript (20) ----------------&lt;br /&gt;20090527: atirei o pau no gato&lt;br /&gt;20090603: poker&lt;br /&gt;20090715: piratas&lt;br /&gt;20090826: tenis&lt;br /&gt;20091007: relacionamentos&lt;br /&gt;20091124: saving time&lt;br /&gt;20091223: mictorio&lt;br /&gt;20100210: proxima vitima&lt;br /&gt;20100505: romanos&lt;br /&gt;20100519: pedra papel tesoura&lt;br /&gt;20100602: caminho&lt;br /&gt;20100707: reais por extenso&lt;br /&gt;20100721: 3n+1&lt;br /&gt;20100818: url rewrite&lt;br /&gt;20101222: pedra papel tesoura&lt;br /&gt;20110209: anagrama&lt;br /&gt;20110216: telefone&lt;br /&gt;20110302: intervalos&lt;br /&gt;20110713: romanos&lt;br /&gt;20110727: telefone&lt;br /&gt;&lt;br /&gt;-- php (6) -----------------------&lt;br /&gt;20090902: mao inglesa&lt;br /&gt;20091230: kombat&lt;br /&gt;20100714: espiral&lt;br /&gt;20100728: palindromos&lt;br /&gt;20100811: game of life&lt;br /&gt;20100908: cheque o xeque&lt;br /&gt;&lt;br /&gt;-- perl (4) ----------------------&lt;br /&gt;20101124: inteiros para romanos&lt;br /&gt;20101208: espiral&lt;br /&gt;20101215: inteiros para romanos&lt;br /&gt;20110511: fizzbuzz&lt;br /&gt;&lt;br /&gt;-- csharp (2) --------------------&lt;br /&gt;20110112: telefone&lt;br /&gt;20110608: wordwrap&lt;br /&gt;&lt;br /&gt;-- racket (2) --------------------&lt;br /&gt;20110518: raizes&lt;br /&gt;20110601: caixa eletronico&lt;br /&gt;&lt;br /&gt;-- shell (2) ---------------------&lt;br /&gt;20100901: fizzbuzz&lt;br /&gt;20100922: url&lt;br /&gt;&lt;br /&gt;-- boo (1) -----------------------&lt;br /&gt;20110525: caixa eletronico&lt;br /&gt;&lt;br /&gt;-- java (1) ----------------------&lt;br /&gt;20090121: romanos&lt;br /&gt;&lt;br /&gt;-- smalltalk (1) -----------------&lt;br /&gt;20110706: fizzbuzz&lt;/pre&gt;Consistentemente aparecem as mesmas linguagens nas&amp;nbsp;três primeiras posições: Python, Ruby e Javascript.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/396083382034174439-1185717507249263892?l=blog.rodolfocarvalho.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.rodolfocarvalho.net/feeds/1185717507249263892/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=396083382034174439&amp;postID=1185717507249263892' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/396083382034174439/posts/default/1185717507249263892'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/396083382034174439/posts/default/1185717507249263892'/><link rel='alternate' type='text/html' href='http://blog.rodolfocarvalho.net/2011/07/estatisticas-do-dojo-rio-em-2011.html' title='Estatísticas do Dojo Rio em 2011'/><author><name>Rodolfo</name><uri>http://www.blogger.com/profile/13115401885842551697</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_vI4PxbAv6pM/SJ-dzrhNvyI/AAAAAAAAAAc/dOyhjpNbx58/s1600-R/Rodolfo_safari.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/-jnndng9vBCY/TjIP7m0rQII/AAAAAAAAEZE/b2czH9Am9tk/s72-c/dojo-linguagens-2011.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-396083382034174439.post-5825516291957440305</id><published>2011-07-19T15:34:00.001-03:00</published><updated>2011-07-19T15:45:23.702-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='racket'/><category scheme='http://www.blogger.com/atom/ns#' term='python'/><category scheme='http://www.blogger.com/atom/ns#' term='common lisp'/><category scheme='http://www.blogger.com/atom/ns#' term='clojure'/><category scheme='http://www.blogger.com/atom/ns#' term='scheme'/><title type='text'>Escolhendo um Lisp: do Clojure ao Racket</title><content type='html'>&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;Graças a um email de um amigo, o&amp;nbsp;&lt;a href="http://lucasteixeira.com/"&gt;Lucas Teixeira&lt;/a&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;, finalmente escrevi algumas coisas que já vinha comentando com algumas pessoas, geralmente nos pós-dojos.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Era pra ser um email pro Lucas, mas acabei expressando coisas que poderiam ficar públicas.&lt;br /&gt;&lt;br /&gt;Bem, ele começou dizendo no email:&lt;br /&gt;&lt;blockquote&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse; font-family: inherit;"&gt;&lt;i&gt;Então... sempre quis aprender programação funcional. Já tentei Haskell, LISP, Scheme, mas nunca pegou de verdade.&lt;br /&gt;&lt;br /&gt;Tô tentando aprender Clojure agora. Baixei o Clojure Box e uns tutoriais da Internet. Tô resolvendo uns problemas do Project Euler e o clojure-koans.&lt;br /&gt;&lt;br /&gt;Tem alguma dica de material?&lt;br /&gt;&lt;br /&gt;Que tipo de coisa você tá / tava fazendo com Clojure?&lt;/i&gt;&lt;/span&gt;&lt;/blockquote&gt;Cara, foi muito surpreendente seu email.&lt;br /&gt;&lt;br /&gt;Vamos a um apanhado de impressões sobre algumas linguagens da família lisp, começando com &lt;a href="http://clojure.org/"&gt;Clojure&lt;/a&gt;, passando por &lt;a href="http://en.wikipedia.org/wiki/Common_Lisp"&gt;Common Lisp&lt;/a&gt;, &lt;a href="http://en.wikipedia.org/wiki/Scheme_(programming_language)"&gt;Scheme&lt;/a&gt; e chegando em &lt;a href="http://racket-lang.org/"&gt;Racket&lt;/a&gt;.&lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-size: large;"&gt;Clojure&lt;/span&gt;&lt;br /&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;Semana passada o &lt;a href="http://changingbit.blogspot.com/"&gt;Ronald Kaiser&lt;/a&gt;&amp;nbsp;me chamou pra montar propostas pra mandarmos pra&amp;nbsp;&lt;a href="http://clojure-conj.org/" target="_blank"&gt;Clojure/conj&lt;/a&gt;.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;Bem, pra falar de &lt;a href="http://clojure.org/"&gt;Clojure&lt;/a&gt; tenho que relembrar a época em que trabalhei na &lt;a href="http://intelie.com.br/"&gt;Intelie&lt;/a&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;Lá na Intelie ajudei no desenvolvimento do &lt;a href="http://intelie.com.br/products"&gt;Intelie Event Manager&lt;/a&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;,&amp;nbsp;"um sistema de monitoração em tempo real capaz de analisar milhares de eventos por segundo e identificar tendências e situações de risco para TI e o negócio". O IEM tinha na época parte do seu backend escrito em Clojure.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;A experiência, no segundo semestre de 2010, foi muito divertida, e, falando especificamente do Clojure, de certa forma a questão do ambiente de desenvolvimento era uma coisa chata que não me dava muito gosto de começar coisas particulares usando a linguagem.&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;Tentei por um tempo montar um ambiente redondo com o &lt;a href="http://www.gnu.org/software/emacs/"&gt;Emacs&lt;/a&gt;, inclusive usando &lt;a href="http://clojure.bighugh.com/"&gt;Clojure Box&lt;/a&gt; entre outras opções.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Lá na Intelie eu usava o IntelliJ IDEA com o plugin La Clojure, mas essa combinação consumia muitos recursos do sistema, e não funcionava tão bem quando Emacs com &lt;a href="http://common-lisp.net/project/slime/"&gt;SLIME&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;Mas, na boa, a curva do Emacs é bem inclinada, e mesmo gostando muito dele e sabendo usar o básico, eu queria algo mais simples, mais gedit-like, que eu pudesse levar pra todo lado, mostrar pra qualquer um, sem ter que carregar meu &lt;i&gt;.emacs&lt;/i&gt; debaixo do braço e sem ter que assustar muito as pessoas, por exemplo no &lt;a href="http://dojorio.wordpress.com/"&gt;Dojo&lt;/a&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;Particularmente gostei de usar a &lt;a href="http://clojure.org/refs"&gt;STM do Clojure&lt;/a&gt;, e sentia prazer em poder expressar de forma tão bonita certas coisas que implementamos. Também era conveniente ter a &lt;a href="http://clojure.org/data_structures"&gt;rica gama de estruturas de dados&lt;/a&gt; que a linguagem oferece, suportados por uma sintaxe simples e compatível com as s-expressions.&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;Como material, eu li o&amp;nbsp;&lt;a href="http://www.apress.com/9781430272311"&gt;Practical Clojure&lt;/a&gt;, mas também tem o &lt;a href="http://www.manning.com/rathore/"&gt;Clojure In Action&lt;/a&gt;, &lt;a href="http://pragprog.com/book/shcloj/programming-clojure"&gt;Programming Clojure&lt;/a&gt; e &lt;a href="http://joyofclojure.com/"&gt;The Joy of Clojure&lt;/a&gt;.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-size: large;"&gt;Common Lisp&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;Depois da Intelie eu fiquei por um tempo namorando o &lt;a href="http://en.wikipedia.org/wiki/Common_Lisp"&gt;Common Lisp&lt;/a&gt;, que foi o primeiro lisp com o qual tive contato. Li parcialmente o &lt;a href="http://landoflisp.com/"&gt;Land of Lisp&lt;/a&gt;, excelente livro, muito divertido e recomendado, entre outras fontes (&lt;a href="http://www.paulgraham.com/onlisp.html"&gt;On Lisp&lt;/a&gt; e &lt;a href="http://www.gigamonkeys.com/book/"&gt;Practical Common Lisp&lt;/a&gt; vem em mente). Mas de novo o Emacs de um lado, e a "velhice" da linguagem do outro lado, me fizeram continuar minha jornada, buscando novas opções.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;O CL é legal por ser &lt;a href="http://webstore.ansi.org/RecordDetail.aspx?sku=ANSI+INCITS+226-1994+(R2004)"&gt;um padrão ANSI&lt;/a&gt;. Por esse mesma razão ele é uma "merda". Por que esse padrão é antigo e não evolui. Não tem nenhuma empresa ou indivíduo ou grupo por traz de novas revisões, atualizações, não tem nenhuma "implementação padrão".&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;Veja Python: a linguagem é mais que CPython, existe uma especificação, mas CPython é a referência, a implementação viva, que evolui, 2.x, 3.x, etc. E lá vão &lt;a href="http://pypy.org/"&gt;PyPy&lt;/a&gt;, &lt;a href="http://ironpython.net/"&gt;IronPython&lt;/a&gt;, &lt;a href="http://www.activestate.com/activepython"&gt;ActivePython&lt;/a&gt;, etc...&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;O CL tem &lt;a href="http://lisp-br.void.cc/index.php?n=CL.Implementacoes"&gt;várias implementações&lt;/a&gt;, algumas mantidas, outras abandonadas. Uma vez eu queria fazer um script que consumisse parâmetros da linha de comando. Pra minha surpresa, o tal padrão ANSI não fala nada a respeito, e ficava a cargo de cada implementação prover um jeito de fazer isso. E claro, cada uma escolheu um jeito mais esquisito e mais incompativel com as outras possível.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: inherit; font-size: large;"&gt;Scheme&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;Com &lt;a href="http://en.wikipedia.org/wiki/Scheme_(programming_language)"&gt;Scheme&lt;/a&gt; eu também tive algum contato em Portugal, no &lt;a href="http://www.ist.utl.pt/"&gt;IST&lt;/a&gt;. Pouco, mas suficiente para me deixar interessado. Vi código, mas não escrevi nada significativo.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;Scheme também tem várias implementações e nenhuma "canônica". Mas tem um grande diferencial em relação ao CL, que a torna uma linguagem viva: um sistema de revisões. Antes era o R5RS, hoje é o R6RS e amanhã sairá o R7RS.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;Ah, lembro bem quando o &lt;a href="https://fenix.ist.utl.pt/homepage/ist13451"&gt;prof. António Leitão&lt;/a&gt; falou da pureza de conceitos, e do exemplo clássico do "define".&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;&lt;i&gt;Como definir uma variável? Define. Como definir uma função? Define. Como definir qualquer coisa? Define.&lt;/i&gt; E ele comparou com Python, que tem um número "absurdo" de sintaxes para fazer "a mesma coisa", definir: =, def, class, etc.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;Apesar de a linguagem vir de uma linhagem minimalista, acaba que é mais provavel ver coisas mudando pra melhor em Scheme do que em CL, e neste caso qualquer mudança é melhor do que ficar parado no tempo.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;O R6RS por exemplo adicionou um monte de coisas no padrão da linguagem, e muitos puristas não gostaram da ideia.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;Existem várias implementações aparentemente muito legais, como &lt;a href="http://www.call-cc.org/"&gt;Chicken&lt;/a&gt;, &lt;a href="http://dynamo.iro.umontreal.ca/~gambit/wiki/index.php/Main_Page"&gt;Gambit&lt;/a&gt;, e &lt;a href="http://lisp-br.void.cc/index.php?n=Scheme.Implementacoes"&gt;outras&lt;/a&gt;.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;Algumas compilam pra C, outras pra bytecode, outras só&amp;nbsp;interpretam... tem de tudo.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;E nessa de escolher um Scheme, o PLT Scheme era mais um implementação. Engraçado que já tinha me deparado com ela uma vez e simplesmente "ignorei" no momento e fui lá paquerar o Common Lisp.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Mas acabei voltando uma noite qualquer, e caindo no site do Racket e dando uma chance pra ele. Me encantei.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: inherit; font-size: large;"&gt;Racket&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;&lt;a href="http://racket-lang.org/people.html"&gt;A equipe PLT&lt;/a&gt; tem o &lt;a href="http://www.programbydesign.org/"&gt;diferencial&lt;/a&gt; &lt;a href="http://www.bootstrapworld.org/"&gt;educacional&lt;/a&gt;. O &lt;a href="http://racket-lang.org/"&gt;Racket&lt;/a&gt; tem muitos &lt;a href="http://picturingprograms.com/"&gt;diferenciais&lt;/a&gt;. Ele não é só um Scheme. Você pode programar em Scheme R5RS ou R6RS, mas a linguagem Racket é muito mais rica, é uma "linguagem para escrever linguagens", e o pacote vem com coisas muito interessantes.&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;Lembra do Python com baterias incluídas? Pois é, o Racket tem baterias incluídas, um conjuto de baterias diferente dos de Python. Algumas são tão legais, mais legais até que as que tem no Python...&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;Por exemplo, hoje pra mim a melhor ferramenta pra fazer apresentações de slides é o Slideshow do Racket.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;Poder colocar imagens dentro dos arquivos, fantástico. Tudo programável...&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;Para aprender mais sobre Racket, existem &lt;a href="http://racket-lang.org/learning.html"&gt;livros, tutoriais, papers&lt;/a&gt;, &lt;a href="http://lists.racket-lang.org/users/"&gt;lista de discussão&lt;/a&gt;, &lt;a href="http://racket-lang.org/irc-chat.html"&gt;IRC&lt;/a&gt;, entre outros recursos.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;Bem, listar com mais detalhe cada coisa que me faz gostar de Racket é para outros posts. Alguns eu já escrevi, veja:&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://blog.rodolfocarvalho.net/2011/07/descrevendo-objetos-com-racket.html%22"&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;Descrevendo objetos com Racket&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://blog.rodolfocarvalho.net/2011/06/brainfuck-com-racket.html"&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;Brainfuck com Racket&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://blog.rodolfocarvalho.net/2011/05/programando-para-android-com-racket.html"&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;Programando para Android com Racket&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://blog.rodolfocarvalho.net/2011/05/introducao-ao-racket-no-coding-dojo-rio.html"&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;Introdução ao Racket no Coding Dojo Rio&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;Para todos os outros posts sobre Racket no meu blog:&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;a href="http://blog.rodolfocarvalho.net/search/label/racket"&gt;&lt;/a&gt;&lt;a href="http://blog.rodolfocarvalho.net/search/label/racket"&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;http://blog.rodolfocarvalho.net/search/label/racket&lt;/span&gt;&lt;/a&gt; &lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/396083382034174439-5825516291957440305?l=blog.rodolfocarvalho.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.rodolfocarvalho.net/feeds/5825516291957440305/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=396083382034174439&amp;postID=5825516291957440305' title='2 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/396083382034174439/posts/default/5825516291957440305'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/396083382034174439/posts/default/5825516291957440305'/><link rel='alternate' type='text/html' href='http://blog.rodolfocarvalho.net/2011/07/escolhendo-um-lisp-do-clojure-ao-racket.html' title='Escolhendo um Lisp: do Clojure ao Racket'/><author><name>Rodolfo</name><uri>http://www.blogger.com/profile/13115401885842551697</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_vI4PxbAv6pM/SJ-dzrhNvyI/AAAAAAAAAAc/dOyhjpNbx58/s1600-R/Rodolfo_safari.png'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-396083382034174439.post-113945283221597441</id><published>2011-07-19T14:45:00.002-03:00</published><updated>2011-07-19T14:49:11.341-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='planet'/><category scheme='http://www.blogger.com/atom/ns#' term='racket'/><title type='text'>Descrevendo objetos com Racket</title><content type='html'>O &lt;a href="http://racket-lang.org/"&gt;Racket&lt;/a&gt; é muito esperto, e com o auxílio de um módulo disponível no &lt;a href="http://planet.racket-lang.org/"&gt;PLaneT&lt;/a&gt; é possível fazer coisas bem divertidas, como fazer contas:&lt;br /&gt;&lt;span class="Apple-style-span" style="-webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;pre style="background-attachment: initial; background-clip: initial; background-color: #f6f8ff; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial; color: #000020;"&gt;#lang racket&lt;br /&gt;&lt;span style="color: #308080;"&gt;(&lt;/span&gt;&lt;span style="color: #200080; font-weight: bold;"&gt;require&lt;/span&gt; &lt;span style="color: #308080;"&gt;(&lt;/span&gt;&lt;span style="color: #200080; font-weight: bold;"&gt;planet&lt;/span&gt; williams&lt;span style="color: #308080;"&gt;/&lt;/span&gt;describe&lt;span style="color: #308080;"&gt;/&lt;/span&gt;describe&lt;span style="color: #308080;"&gt;)&lt;/span&gt;&lt;span style="color: #308080;"&gt;)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: #308080;"&gt;(&lt;/span&gt;&lt;span style="color: #200080; font-weight: bold;"&gt;displayln&lt;/span&gt;&lt;br /&gt; &lt;span style="color: #308080;"&gt;(&lt;/span&gt;&lt;span style="color: #200080; font-weight: bold;"&gt;string-join&lt;/span&gt;&lt;br /&gt;  &lt;span style="color: #308080;"&gt;(&lt;/span&gt;&lt;span style="color: #200080; font-weight: bold;"&gt;map&lt;/span&gt; &lt;span style="color: #308080;"&gt;(&lt;/span&gt;&lt;span style="color: #200080; font-weight: bold;"&gt;λ&lt;/span&gt; &lt;span style="color: #308080;"&gt;(&lt;/span&gt;&lt;span style="color: #200080; font-weight: bold;"&gt;t&lt;/span&gt;&lt;span style="color: #308080;"&gt;)&lt;/span&gt; &lt;span style="color: #308080;"&gt;(&lt;/span&gt;&lt;span style="color: #308080;"&gt;(&lt;/span&gt;&lt;span style="color: #200080; font-weight: bold;"&gt;if&lt;/span&gt; &lt;span style="color: #308080;"&gt;(&lt;/span&gt;&lt;span style="color: #200080; font-weight: bold;"&gt;exact-integer?&lt;/span&gt; &lt;span style="color: #7d0045;"&gt;t&lt;/span&gt;&lt;span style="color: #308080;"&gt;)&lt;/span&gt;&lt;br /&gt;                   integer-&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;string&lt;br /&gt;                   &lt;span style="color: #308080;"&gt;(&lt;/span&gt;&lt;span style="color: #200080; font-weight: bold;"&gt;curry&lt;/span&gt; format &lt;span style="color: #1060b6;"&gt;"~a"&lt;/span&gt;&lt;span style="color: #308080;"&gt;)&lt;/span&gt;&lt;span style="color: #308080;"&gt;)&lt;/span&gt; &lt;span style="color: #7d0045;"&gt;t&lt;/span&gt;&lt;span style="color: #308080;"&gt;)&lt;/span&gt;&lt;span style="color: #308080;"&gt;)&lt;/span&gt;&lt;br /&gt;       `&lt;span style="color: #308080;"&gt;(&lt;/span&gt;&lt;span style="color: #200080; font-weight: bold;"&gt;I&lt;/span&gt; will show you how Racket knows how to count&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #0066ee;"&gt;,&lt;/span&gt;&lt;span style="color: #1060b6;"&gt;"\n"&lt;/span&gt;&lt;br /&gt;           Racket knows that &lt;span style="color: #008c00;"&gt;3&lt;/span&gt; &lt;span style="color: #308080;"&gt;+&lt;/span&gt; &lt;span style="color: #008c00;"&gt;4&lt;/span&gt; is &lt;span style="color: #0066ee;"&gt;,&lt;/span&gt;&lt;span style="color: #308080;"&gt;(&lt;/span&gt;&lt;span style="color: #200080; font-weight: bold;"&gt;+&lt;/span&gt; &lt;span style="color: #008c00;"&gt;3&lt;/span&gt; &lt;span style="color: #008c00;"&gt;4&lt;/span&gt;&lt;span style="color: #308080;"&gt;)&lt;/span&gt;&lt;span style="color: #0066ee;"&gt;,&lt;/span&gt;&lt;span style="color: #1060b6;"&gt;"\n"&lt;/span&gt;&lt;br /&gt;           Racket knows that &lt;span style="color: #008c00;"&gt;5&lt;/span&gt; * &lt;span style="color: #008c00;"&gt;9&lt;/span&gt; is &lt;span style="color: #0066ee;"&gt;,&lt;/span&gt;&lt;span style="color: #308080;"&gt;(&lt;/span&gt;&lt;span style="color: #200080; font-weight: bold;"&gt;*&lt;/span&gt; &lt;span style="color: #008c00;"&gt;5&lt;/span&gt; &lt;span style="color: #008c00;"&gt;9&lt;/span&gt;&lt;span style="color: #308080;"&gt;)&lt;/span&gt;&lt;span style="color: #0066ee;"&gt;,&lt;/span&gt;&lt;span style="color: #1060b6;"&gt;"\n"&lt;/span&gt;&lt;br /&gt;           and that &lt;span style="color: #008c00;"&gt;5&lt;/span&gt; &lt;span style="color: #308080;"&gt;/&lt;/span&gt; &lt;span style="color: #008c00;"&gt;4&lt;/span&gt; is &lt;span style="color: #0066ee;"&gt;,&lt;/span&gt;&lt;span style="color: #308080;"&gt;(&lt;/span&gt;&lt;span style="color: #200080; font-weight: bold;"&gt;/&lt;/span&gt; &lt;span style="color: #008c00;"&gt;5&lt;/span&gt; &lt;span style="color: #008c00;"&gt;4&lt;/span&gt;&lt;span style="color: #308080;"&gt;)&lt;/span&gt;&lt;span style="color: #0066ee;"&gt;,&lt;/span&gt;&lt;span style="color: #1060b6;"&gt;"\n"&lt;/span&gt;&lt;br /&gt;           and &lt;span style="color: #008c00;"&gt;2&lt;/span&gt; &lt;span style="color: #308080;"&gt;^&lt;/span&gt; &lt;span style="color: #008c00;"&gt;10&lt;/span&gt; is &lt;span style="color: #0066ee;"&gt;,&lt;/span&gt;&lt;span style="color: #308080;"&gt;(&lt;/span&gt;&lt;span style="color: #200080; font-weight: bold;"&gt;expt&lt;/span&gt; &lt;span style="color: #008c00;"&gt;2&lt;/span&gt; &lt;span style="color: #008c00;"&gt;10&lt;/span&gt;&lt;span style="color: #308080;"&gt;)&lt;/span&gt;&lt;span style="color: #0066ee;"&gt;,&lt;/span&gt;&lt;span style="color: #1060b6;"&gt;"\n"&lt;/span&gt;&lt;br /&gt;           and much more&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;)&lt;/span&gt;&lt;span style="color: #308080;"&gt;)&lt;/span&gt;&lt;br /&gt;  &lt;span style="color: #1060b6;"&gt;" "&lt;/span&gt;&lt;span style="color: #308080;"&gt;)&lt;/span&gt;&lt;span style="color: #308080;"&gt;)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: #308080;"&gt;(&lt;/span&gt;&lt;span style="color: #200080; font-weight: bold;"&gt;define&lt;/span&gt; &lt;span style="color: #308080;"&gt;(&lt;/span&gt;&lt;span style="color: #200080; font-weight: bold;"&gt;!&lt;/span&gt; n&lt;span style="color: #308080;"&gt;)&lt;/span&gt;&lt;br /&gt;    &lt;span style="color: #308080;"&gt;(&lt;/span&gt;&lt;span style="color: #200080; font-weight: bold;"&gt;if&lt;/span&gt; &lt;span style="color: #308080;"&gt;(&lt;/span&gt;&lt;span style="color: #200080; font-weight: bold;"&gt;=&lt;/span&gt; n &lt;span style="color: #008c00;"&gt;0&lt;/span&gt;&lt;span style="color: #308080;"&gt;)&lt;/span&gt;&lt;br /&gt;        &lt;span style="color: #008c00;"&gt;1&lt;/span&gt;&lt;br /&gt;        &lt;span style="color: #308080;"&gt;(&lt;/span&gt;&lt;span style="color: #200080; font-weight: bold;"&gt;*&lt;/span&gt; n &lt;span style="color: #308080;"&gt;(&lt;/span&gt;&lt;span style="color: #200080; font-weight: bold;"&gt;!&lt;/span&gt; &lt;span style="color: #308080;"&gt;(&lt;/span&gt;&lt;span style="color: #200080; font-weight: bold;"&gt;sub1&lt;/span&gt; n&lt;span style="color: #308080;"&gt;)&lt;/span&gt;&lt;span style="color: #308080;"&gt;)&lt;/span&gt;&lt;span style="color: #308080;"&gt;)&lt;/span&gt;&lt;span style="color: #308080;"&gt;)&lt;/span&gt;&lt;span style="color: #308080;"&gt;)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #308080;"&gt;(&lt;/span&gt;&lt;span style="color: #200080; font-weight: bold;"&gt;describe&lt;/span&gt; &lt;span style="color: #308080;"&gt;(&lt;/span&gt;&lt;span style="color: #200080; font-weight: bold;"&gt;-&lt;/span&gt; &lt;span style="color: #308080;"&gt;(&lt;/span&gt;&lt;span style="color: #200080; font-weight: bold;"&gt;!&lt;/span&gt; &lt;span style="color: #008c00;"&gt;40&lt;/span&gt;&lt;span style="color: #308080;"&gt;)&lt;/span&gt; &lt;span style="color: #308080;"&gt;(&lt;/span&gt;&lt;span style="color: #200080; font-weight: bold;"&gt;!&lt;/span&gt; &lt;span style="color: #008c00;"&gt;41&lt;/span&gt;&lt;span style="color: #308080;"&gt;)&lt;/span&gt;&lt;span style="color: #308080;"&gt;)&lt;/span&gt;&lt;span style="color: #308080;"&gt;)&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;Tão esperando que pra &lt;a href="http://blog.rodolfocarvalho.net/2011/05/como-instalar-o-racket.html"&gt;instalar o Racket&lt;/a&gt; e ver o output?&lt;br /&gt;(Alias, que tal implementarmos um "describe" no &lt;a href="http://dojorio.wordpress.com/"&gt;dojo&lt;/a&gt;?)&lt;br /&gt;&lt;br /&gt;Veja a &lt;a href="http://planet.racket-lang.org/package-source/williams/describe.plt/1/3/planet-docs/describe/index.html"&gt;documentação do describe&lt;/a&gt; pra ver o que mais ele pode fazer...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/396083382034174439-113945283221597441?l=blog.rodolfocarvalho.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.rodolfocarvalho.net/feeds/113945283221597441/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=396083382034174439&amp;postID=113945283221597441' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/396083382034174439/posts/default/113945283221597441'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/396083382034174439/posts/default/113945283221597441'/><link rel='alternate' type='text/html' href='http://blog.rodolfocarvalho.net/2011/07/descrevendo-objetos-com-racket.html' title='Descrevendo objetos com Racket'/><author><name>Rodolfo</name><uri>http://www.blogger.com/profile/13115401885842551697</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_vI4PxbAv6pM/SJ-dzrhNvyI/AAAAAAAAAAc/dOyhjpNbx58/s1600-R/Rodolfo_safari.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-396083382034174439.post-3737396853747031457</id><published>2011-06-10T20:37:00.001-03:00</published><updated>2011-06-10T20:37:47.889-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='racket'/><category scheme='http://www.blogger.com/atom/ns#' term='brainfuck'/><title type='text'>Brainfuck com Racket</title><content type='html'>Esta é uma novidade fresquinha. O &lt;a href="https://github.com/dyoo"&gt;Danny Yoo&lt;/a&gt; está desenvolvendo uma versão de &lt;a href="http://pt.wikipedia.org/wiki/Brainfuck"&gt;Brainfuck&lt;/a&gt; que roda na infraestrutura do &lt;a href="http://racket-lang.org/"&gt;Racket&lt;/a&gt;, para mostrar que é possível ter linguagens com sintaxe totalmente diferente de Lisp. Ele chamou a linguagem de &lt;a href="https://github.com/dyoo/brainfudge"&gt;Brainfudge&lt;/a&gt;, e o código está disponível no github.&lt;br /&gt;&lt;br /&gt;Como podemos ver, o Racket é uma linguagem para escrever linguagens.&lt;br /&gt;&lt;br /&gt;Para os curiosos de plantão, aqui vai um &lt;i&gt;&lt;a href="https://github.com/dyoo/brainfudge/blob/master/examples/hello-world.rkt"&gt;Hello World&lt;/a&gt;&lt;/i&gt;:&lt;br /&gt;&lt;br /&gt;&lt;pre style="background: #f6f8ff; color: #000020;"&gt;#lang planet dyoo&lt;span style="color: #308080;"&gt;/&lt;/span&gt;brainfudge&lt;br /&gt;&lt;br /&gt;&lt;span style="color: #308080;"&gt;++&lt;/span&gt;&lt;span style="color: #308080;"&gt;++&lt;/span&gt;&lt;span style="color: #308080;"&gt;+&lt;/span&gt; &lt;span style="color: #308080;"&gt;++&lt;/span&gt;&lt;span style="color: #308080;"&gt;++&lt;/span&gt;&lt;span style="color: #308080;"&gt;+&lt;/span&gt;             initialize counter &lt;span style="color: #308080;"&gt;(&lt;/span&gt;cell #&lt;span style="color: #008c00;"&gt;0&lt;/span&gt;&lt;span style="color: #308080;"&gt;)&lt;/span&gt; to &lt;span style="color: #008c00;"&gt;10&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #308080;"&gt;[&lt;/span&gt;                       use loop to set the next four cells to &lt;span style="color: #008c00;"&gt;70&lt;/span&gt;&lt;span style="color: #308080;"&gt;/&lt;/span&gt;&lt;span style="color: #008c00;"&gt;100&lt;/span&gt;&lt;span style="color: #308080;"&gt;/&lt;/span&gt;&lt;span style="color: #008c00;"&gt;30&lt;/span&gt;&lt;span style="color: #308080;"&gt;/&lt;/span&gt;&lt;span style="color: #008c00;"&gt;10&lt;/span&gt;&lt;br /&gt;    &lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt; &lt;span style="color: #308080;"&gt;++&lt;/span&gt;&lt;span style="color: #308080;"&gt;++&lt;/span&gt;&lt;span style="color: #308080;"&gt;+&lt;/span&gt; &lt;span style="color: #308080;"&gt;++&lt;/span&gt;              add  &lt;span style="color: #008c00;"&gt;7&lt;/span&gt; to cell #&lt;span style="color: #008c00;"&gt;1&lt;/span&gt;&lt;br /&gt;    &lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt; &lt;span style="color: #308080;"&gt;++&lt;/span&gt;&lt;span style="color: #308080;"&gt;++&lt;/span&gt;&lt;span style="color: #308080;"&gt;+&lt;/span&gt; &lt;span style="color: #308080;"&gt;++&lt;/span&gt;&lt;span style="color: #308080;"&gt;++&lt;/span&gt;&lt;span style="color: #308080;"&gt;+&lt;/span&gt;           add &lt;span style="color: #008c00;"&gt;10&lt;/span&gt; to cell #&lt;span style="color: #008c00;"&gt;2&lt;/span&gt; &lt;br /&gt;    &lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt; &lt;span style="color: #308080;"&gt;++&lt;/span&gt;&lt;span style="color: #308080;"&gt;+&lt;/span&gt;                   add  &lt;span style="color: #008c00;"&gt;3&lt;/span&gt; to cell #&lt;span style="color: #008c00;"&gt;3&lt;/span&gt;&lt;br /&gt;    &lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt; &lt;span style="color: #308080;"&gt;+&lt;/span&gt;                     add  &lt;span style="color: #008c00;"&gt;1&lt;/span&gt; to cell #&lt;span style="color: #008c00;"&gt;4&lt;/span&gt;&lt;br /&gt;    &lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span style="color: #308080;"&gt;-&lt;/span&gt;                  decrement counter &lt;span style="color: #308080;"&gt;(&lt;/span&gt;cell #&lt;span style="color: #008c00;"&gt;0&lt;/span&gt;&lt;span style="color: #308080;"&gt;)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #308080;"&gt;]&lt;/span&gt;                   &lt;br /&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt; &lt;span style="color: #308080;"&gt;++&lt;/span&gt; &lt;span style="color: #308080;"&gt;.&lt;/span&gt;                  print &lt;span style="color: #1060b6;"&gt;'H'&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt; &lt;span style="color: #308080;"&gt;+&lt;/span&gt; &lt;span style="color: #308080;"&gt;.&lt;/span&gt;                   print &lt;span style="color: #1060b6;"&gt;'e'&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #308080;"&gt;++&lt;/span&gt;&lt;span style="color: #308080;"&gt;++&lt;/span&gt;&lt;span style="color: #308080;"&gt;+&lt;/span&gt; &lt;span style="color: #308080;"&gt;++&lt;/span&gt; &lt;span style="color: #308080;"&gt;.&lt;/span&gt;              print &lt;span style="color: #1060b6;"&gt;'l'&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;                       print &lt;span style="color: #1060b6;"&gt;'l'&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #308080;"&gt;++&lt;/span&gt;&lt;span style="color: #308080;"&gt;+&lt;/span&gt; &lt;span style="color: #308080;"&gt;.&lt;/span&gt;                   print &lt;span style="color: #1060b6;"&gt;'o'&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt; &lt;span style="color: #308080;"&gt;++&lt;/span&gt; &lt;span style="color: #308080;"&gt;.&lt;/span&gt;                  print &lt;span style="color: #1060b6;"&gt;' '&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span style="color: #308080;"&gt;++&lt;/span&gt;&lt;span style="color: #308080;"&gt;++&lt;/span&gt;&lt;span style="color: #308080;"&gt;+&lt;/span&gt; &lt;span style="color: #308080;"&gt;++&lt;/span&gt;&lt;span style="color: #308080;"&gt;++&lt;/span&gt;&lt;span style="color: #308080;"&gt;+&lt;/span&gt; &lt;span style="color: #308080;"&gt;++&lt;/span&gt;&lt;span style="color: #308080;"&gt;++&lt;/span&gt;&lt;span style="color: #308080;"&gt;+&lt;/span&gt; &lt;span style="color: #308080;"&gt;.&lt;/span&gt;  print &lt;span style="color: #1060b6;"&gt;'W'&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt; &lt;span style="color: #308080;"&gt;.&lt;/span&gt;                     print &lt;span style="color: #1060b6;"&gt;'o'&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #308080;"&gt;++&lt;/span&gt;&lt;span style="color: #308080;"&gt;+&lt;/span&gt; &lt;span style="color: #308080;"&gt;.&lt;/span&gt;                   print &lt;span style="color: #1060b6;"&gt;'r'&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #308080;"&gt;--&lt;/span&gt;&lt;span style="color: #308080;"&gt;--&lt;/span&gt;&lt;span style="color: #308080;"&gt;-&lt;/span&gt; &lt;span style="color: #308080;"&gt;-&lt;/span&gt; &lt;span style="color: #308080;"&gt;.&lt;/span&gt;               print &lt;span style="color: #1060b6;"&gt;'l'&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #308080;"&gt;--&lt;/span&gt;&lt;span style="color: #308080;"&gt;--&lt;/span&gt;&lt;span style="color: #308080;"&gt;-&lt;/span&gt; &lt;span style="color: #308080;"&gt;--&lt;/span&gt;&lt;span style="color: #308080;"&gt;-&lt;/span&gt; &lt;span style="color: #308080;"&gt;.&lt;/span&gt;             print &lt;span style="color: #1060b6;"&gt;'d'&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt; &lt;span style="color: #308080;"&gt;+&lt;/span&gt; &lt;span style="color: #308080;"&gt;.&lt;/span&gt;                   print &lt;span style="color: #1060b6;"&gt;'!'&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt; &lt;span style="color: #308080;"&gt;.&lt;/span&gt;                     print &lt;span style="color: #1060b6;"&gt;'&lt;/span&gt;&lt;span style="color: #0f69ff;"&gt;\n&lt;/span&gt;&lt;span style="color: #1060b6;"&gt;'&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Como de costume, não é preciso instalar nada manualmente nem mesmo salvar o arquivo! Vejam:&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-KP9bNQZzcyc/TfKiFHBJxeI/AAAAAAAAD8g/XOTE2cc9ggA/s1600/brainfudge.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="264" src="http://2.bp.blogspot.com/-KP9bNQZzcyc/TfKiFHBJxeI/AAAAAAAAD8g/XOTE2cc9ggA/s320/brainfudge.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt;Rodei também um exemplo da Wikipedia que transforma letras minúsculas em maiúsculas:&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-e2_alVal_BY/TfKjxWD61MI/AAAAAAAAD8k/MejbJ-mswyw/s1600/brainfudge2.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="264" src="http://3.bp.blogspot.com/-e2_alVal_BY/TfKjxWD61MI/AAAAAAAAD8k/MejbJ-mswyw/s320/brainfudge2.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;E funcionou muito bem, de novo sem salvar arquivo ou nenhum configuração ou etapa extra :D&lt;br /&gt;&lt;br /&gt;E pra terminar, o mais engraçado! O &lt;a href="http://99-bottles-of-beer.net/language-brainfuck-2542.html"&gt;99 bottles of beer, versão de Michal Wojciech Tarnowski&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;pre style="background: #f6f8ff; color: #000020;"&gt;#lang planet dyoo&lt;span style="color: #308080;"&gt;/&lt;/span&gt;brainfudge&lt;br /&gt;&lt;br /&gt;# &lt;span style="color: #008c00;"&gt;99&lt;/span&gt; Bottles of Beer&lt;br /&gt;# Brainfuck version&lt;br /&gt;# by Michal Wojciech Tarnowski&lt;br /&gt;&lt;br /&gt;                &lt;span style="color: #308080;"&gt;+&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;++&lt;/span&gt;&lt;span style="color: #308080;"&gt;++&lt;/span&gt;&lt;span style="color: #308080;"&gt;++&lt;/span&gt;&lt;span style="color: #308080;"&gt;+&lt;/span&gt;&lt;span style="color: #308080;"&gt;[&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&amp;gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;++&lt;/span&gt;&lt;span style="color: #308080;"&gt;+&lt;/span&gt;&lt;br /&gt;                 &lt;span style="color: #308080;"&gt;++&lt;/span&gt;&lt;span style="color: #308080;"&gt;++&lt;/span&gt;&lt;span style="color: #308080;"&gt;+&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;++&lt;/span&gt;&lt;span style="color: #308080;"&gt;++&lt;/span&gt;&lt;span style="color: #308080;"&gt;+&lt;/span&gt;&lt;br /&gt;               &lt;span style="color: #308080;"&gt;++&lt;/span&gt;&lt;span style="color: #308080;"&gt;+&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;-&lt;/span&gt;&lt;span style="color: #308080;"&gt;]&lt;/span&gt;&lt;span style="color: #308080;"&gt;++&lt;/span&gt;&lt;span style="color: #308080;"&gt;++&lt;/span&gt;&lt;span style="color: #308080;"&gt;++&lt;/span&gt;&lt;span style="color: #308080;"&gt;++&lt;/span&gt;&lt;span style="color: #308080;"&gt;+&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&amp;gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;                &lt;span style="color: #308080;"&gt;+&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;++&lt;/span&gt;&lt;span style="color: #308080;"&gt;++&lt;/span&gt;&lt;span style="color: #308080;"&gt;++&lt;/span&gt;&lt;span style="color: #308080;"&gt;++&lt;/span&gt;&lt;span style="color: #308080;"&gt;++&lt;/span&gt;&lt;span style="color: #308080;"&gt;[&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;+&lt;/span&gt;&lt;br /&gt;                 &lt;span style="color: #308080;"&gt;++&lt;/span&gt;&lt;span style="color: #308080;"&gt;++&lt;/span&gt;&lt;span style="color: #308080;"&gt;++&lt;/span&gt;&lt;span style="color: #308080;"&gt;++&lt;/span&gt;&lt;span style="color: #308080;"&gt;+&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;-&lt;/span&gt;&lt;span style="color: #308080;"&gt;]&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;[&lt;/span&gt;&lt;br /&gt;                 &lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;+&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;+&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;+&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;+&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;+&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;+&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;                 &lt;span style="color: #308080;"&gt;+&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;+&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;+&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;+&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;+&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;+&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;                 &lt;span style="color: #308080;"&gt;+&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;+&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;+&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;+&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;+&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;+&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;                 &lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;+&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;+&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;+&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;+&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&amp;gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;+&lt;/span&gt;&lt;br /&gt;                 &lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;+&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;+&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;+&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;+&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;+&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;+&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;                 &lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;+&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;+&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;+&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;+&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;+&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;+&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;                &lt;span style="color: #308080;"&gt;+&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;+&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;+&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;+&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;+&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;+&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;+&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;                &lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;+&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;+&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;+&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;+&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;+&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;+&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&amp;gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;                &lt;span style="color: #308080;"&gt;+&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;+&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;+&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;+&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;+&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;+&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;br /&gt;                &lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;br /&gt;               &lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;br /&gt;               &lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;br /&gt;               &lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;br /&gt;               &lt;span style="color: #308080;"&gt;-&lt;/span&gt;&lt;span style="color: #308080;"&gt;]&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;++&lt;/span&gt;&lt;span style="color: #308080;"&gt;++&lt;/span&gt;&lt;span style="color: #308080;"&gt;[&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;++&lt;/span&gt;&lt;span style="color: #308080;"&gt;++&lt;/span&gt;&lt;span style="color: #308080;"&gt;++&lt;/span&gt;&lt;span style="color: #308080;"&gt;++&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&lt;/span&gt;&lt;br /&gt;               &lt;span style="color: #308080;"&gt;-&lt;/span&gt;&lt;span style="color: #308080;"&gt;]&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;[&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;+&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&amp;gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&amp;gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;+&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&amp;gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;               &lt;span style="color: #308080;"&gt;+&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&amp;gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;+&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&amp;gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;+&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&amp;gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;+&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;              &lt;span style="color: #308080;"&gt;&amp;gt;&amp;gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;+&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;+&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;+&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&amp;gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;+&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&amp;gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;+&lt;/span&gt;&lt;br /&gt;              &lt;span style="color: #308080;"&gt;&amp;gt;&amp;gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;+&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&amp;gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;+&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&amp;gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;+&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&amp;gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;              &lt;span style="color: #308080;"&gt;+&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&amp;gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&amp;gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;+&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;+&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;+&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&amp;gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;+&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&amp;gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;              &lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;+&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&lt;/span&gt;&lt;br /&gt;              &lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;br /&gt;             &lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;br /&gt;            &lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;-&lt;/span&gt;&lt;span style="color: #308080;"&gt;]&lt;/span&gt;&lt;span style="color: #308080;"&gt;++&lt;/span&gt;&lt;span style="color: #308080;"&gt;++&lt;/span&gt;&lt;span style="color: #308080;"&gt;+&lt;/span&gt;&lt;span style="color: #308080;"&gt;[&lt;/span&gt;&lt;br /&gt;           &lt;span style="color: #308080;"&gt;&amp;gt;&amp;gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;++&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;++&lt;/span&gt;&lt;span style="color: #308080;"&gt;+&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;++&lt;/span&gt;&lt;span style="color: #308080;"&gt;+&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;++&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;++&lt;/span&gt;&lt;span style="color: #308080;"&gt;+&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;++&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;          &lt;span style="color: #308080;"&gt;&amp;gt;&amp;gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;++&lt;/span&gt;&lt;span style="color: #308080;"&gt;+&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;++&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;++&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;++&lt;/span&gt;&lt;span style="color: #308080;"&gt;+&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;+&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&amp;gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;++&lt;/span&gt;&lt;span style="color: #308080;"&gt;+&lt;/span&gt;&lt;br /&gt;        &lt;span style="color: #308080;"&gt;+&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;-&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;++&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;++&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;++&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;++&lt;/span&gt;&lt;span style="color: #308080;"&gt;+&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;++&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;--&lt;/span&gt;&lt;span style="color: #308080;"&gt;-&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;-&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;+&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&amp;gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;+&lt;/span&gt;&lt;br /&gt;       &lt;span style="color: #308080;"&gt;+&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;++&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&amp;gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;++&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;++&lt;/span&gt;&lt;span style="color: #308080;"&gt;++&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;++&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;-&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;++&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&amp;gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;++&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;-&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;++&lt;/span&gt;&lt;br /&gt;     &lt;span style="color: #308080;"&gt;+&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;++&lt;/span&gt;&lt;span style="color: #308080;"&gt;+&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;+&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;++&lt;/span&gt;&lt;span style="color: #308080;"&gt;+&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&amp;gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;++&lt;/span&gt;&lt;span style="color: #308080;"&gt;+&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;++&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;++&lt;/span&gt;&lt;span style="color: #308080;"&gt;+&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;++&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&amp;gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;++&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;++&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;    &lt;span style="color: #308080;"&gt;++&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;++&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;++&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;++&lt;/span&gt;&lt;span style="color: #308080;"&gt;+&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&lt;/span&gt;&lt;br /&gt;   &lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;br /&gt;  &lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;-&lt;/span&gt;&lt;span style="color: #308080;"&gt;]&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;--&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;+&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;+&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;+&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;--&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;+&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&amp;gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;+&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;++&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;--&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;+&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;+&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;-&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;+&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&amp;gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;  &lt;span style="color: #308080;"&gt;+&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;-&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;+&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;-&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;++&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;--&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;--&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;++&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;-&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&amp;gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;-&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;++&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;++&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;+&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;+&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;+&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&amp;gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;+&lt;/span&gt;&lt;br /&gt; &lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;-&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&amp;gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;++&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&amp;gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;++&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;++&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&amp;gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;+&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;++&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;-&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;+&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;++&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&amp;gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;++&lt;/span&gt;&lt;span style="color: #308080;"&gt;+&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&amp;gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;+&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt; &lt;span style="color: #308080;"&gt;-&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;+&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;-&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;+&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;[&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&amp;gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;++&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #308080;"&gt;++&lt;/span&gt;&lt;span style="color: #308080;"&gt;++&lt;/span&gt;&lt;span style="color: #308080;"&gt;++&lt;/span&gt;&lt;span style="color: #308080;"&gt;++&lt;/span&gt;&lt;span style="color: #308080;"&gt;[&lt;/span&gt;&lt;span style="color: #308080;"&gt;-&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;[&lt;/span&gt;&lt;span style="color: #308080;"&gt;-&lt;/span&gt;&lt;span style="color: #308080;"&gt;]&lt;/span&gt;&lt;span style="color: #308080;"&gt;+&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;[&lt;/span&gt;&lt;span style="color: #308080;"&gt;-&lt;/span&gt;&lt;span style="color: #308080;"&gt;]&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;[&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&amp;gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&amp;gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&amp;gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&amp;gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&amp;gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&amp;gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&amp;gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&amp;gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&amp;gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;-&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&amp;gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;-&lt;/span&gt;&lt;span style="color: #308080;"&gt;]&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;[&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;-&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;[&lt;/span&gt;&lt;span style="color: #308080;"&gt;-&lt;/span&gt;&lt;span style="color: #308080;"&gt;]&lt;/span&gt;&lt;span style="color: #308080;"&gt;+&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;[&lt;/span&gt;&lt;span style="color: #308080;"&gt;-&lt;/span&gt;&lt;span style="color: #308080;"&gt;]&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;[&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&amp;gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&amp;gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&amp;gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&amp;gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&amp;gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&amp;gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&amp;gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&amp;gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&amp;gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;-&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&amp;gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;++&lt;/span&gt;&lt;span style="color: #308080;"&gt;++&lt;/span&gt;&lt;span style="color: #308080;"&gt;++&lt;/span&gt;&lt;span style="color: #308080;"&gt;++&lt;/span&gt;&lt;span style="color: #308080;"&gt;+&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&amp;gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;-&lt;/span&gt;&lt;span style="color: #308080;"&gt;]&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;[&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&amp;gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&amp;gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&amp;gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&amp;gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&amp;gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&amp;gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&amp;gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&amp;gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&amp;gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;++&lt;/span&gt;&lt;span style="color: #308080;"&gt;++&lt;/span&gt;&lt;span style="color: #308080;"&gt;++&lt;/span&gt;&lt;span style="color: #308080;"&gt;++&lt;/span&gt;&lt;span style="color: #308080;"&gt;+&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&amp;gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;-&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;]&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;+&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&amp;gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;-&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;]&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;]&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #308080;"&gt;-&lt;/span&gt;&lt;span style="color: #308080;"&gt;]&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&amp;gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;++&lt;/span&gt;&lt;span style="color: #308080;"&gt;++&lt;/span&gt;&lt;span style="color: #308080;"&gt;++&lt;/span&gt;&lt;span style="color: #308080;"&gt;++&lt;/span&gt;&lt;span style="color: #308080;"&gt;[&lt;/span&gt;&lt;span style="color: #308080;"&gt;-&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;[&lt;/span&gt;&lt;span style="color: #308080;"&gt;-&lt;/span&gt;&lt;span style="color: #308080;"&gt;]&lt;/span&gt;&lt;span style="color: #308080;"&gt;+&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;[&lt;/span&gt;&lt;span style="color: #308080;"&gt;-&lt;/span&gt;&lt;span style="color: #308080;"&gt;]&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;[&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&amp;gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&amp;gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&amp;gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&amp;gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&amp;gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&amp;gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&amp;gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;-&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&amp;gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;-&lt;/span&gt;&lt;span style="color: #308080;"&gt;]&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;[&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&amp;gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&amp;gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&amp;gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&amp;gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&amp;gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&amp;gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;-&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&amp;gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;-&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;]&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;]&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&amp;gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&amp;gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&amp;gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&amp;gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&amp;gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&amp;gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&amp;gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;br /&gt; &lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;No DrRacket:&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-w_32HfvdYuE/TfKmUy-dXjI/AAAAAAAAD8o/TYjm_qR_JvA/s1600/brainfudge-99-bottles-of-beer.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="264" src="http://1.bp.blogspot.com/-w_32HfvdYuE/TfKmUy-dXjI/AAAAAAAAD8o/TYjm_qR_JvA/s320/brainfudge-99-bottles-of-beer.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/396083382034174439-3737396853747031457?l=blog.rodolfocarvalho.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.rodolfocarvalho.net/feeds/3737396853747031457/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=396083382034174439&amp;postID=3737396853747031457' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/396083382034174439/posts/default/3737396853747031457'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/396083382034174439/posts/default/3737396853747031457'/><link rel='alternate' type='text/html' href='http://blog.rodolfocarvalho.net/2011/06/brainfuck-com-racket.html' title='Brainfuck com Racket'/><author><name>Rodolfo</name><uri>http://www.blogger.com/profile/13115401885842551697</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_vI4PxbAv6pM/SJ-dzrhNvyI/AAAAAAAAAAc/dOyhjpNbx58/s1600-R/Rodolfo_safari.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/-KP9bNQZzcyc/TfKiFHBJxeI/AAAAAAAAD8g/XOTE2cc9ggA/s72-c/brainfudge.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-396083382034174439.post-7083101391322608714</id><published>2011-06-03T17:36:00.000-03:00</published><updated>2011-06-03T17:36:35.667-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='racket'/><title type='text'>Comunidade Racket em português</title><content type='html'>O &lt;a href="http://racket-lang.org/"&gt;Racket&lt;/a&gt; tem uma &lt;a href="http://racket-lang.org/community.html"&gt;comunidade bastante ativa e receptiva&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Para abrir espaço para aqueles a fim de aprender um pouco mais sobre Racket, mas que tem dificuldades de se comunicar em inglês, criei o grupo &lt;a href="http://groups.google.com/group/racket-br"&gt;Racket Brasil&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Apesar do nome, fica o convite e apelo à participação dos nossos amigos portugueses e demais falantes da nossa língua.&lt;br /&gt;&lt;br /&gt;É a oportunidade de nos conhecermos melhor e trocar informações.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/396083382034174439-7083101391322608714?l=blog.rodolfocarvalho.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.rodolfocarvalho.net/feeds/7083101391322608714/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=396083382034174439&amp;postID=7083101391322608714' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/396083382034174439/posts/default/7083101391322608714'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/396083382034174439/posts/default/7083101391322608714'/><link rel='alternate' type='text/html' href='http://blog.rodolfocarvalho.net/2011/06/comunidade-racket-em-portugues.html' title='Comunidade Racket em português'/><author><name>Rodolfo</name><uri>http://www.blogger.com/profile/13115401885842551697</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_vI4PxbAv6pM/SJ-dzrhNvyI/AAAAAAAAAAc/dOyhjpNbx58/s1600-R/Rodolfo_safari.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-396083382034174439.post-7766186818270964427</id><published>2011-05-29T22:31:00.007-03:00</published><updated>2011-05-30T19:48:04.650-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='javascript'/><category scheme='http://www.blogger.com/atom/ns#' term='racket'/><category scheme='http://www.blogger.com/atom/ns#' term='mobile'/><category scheme='http://www.blogger.com/atom/ns#' term='android'/><title type='text'>Programando para Android com Racket</title><content type='html'>Numa possível "série" de posts que acaba de começar agora, vou mostrar as várias possibilidades de uso de &lt;a href="http://racket-lang.org/"&gt;Racket&lt;/a&gt;, a linguagem para criar linguagens.&lt;br /&gt;&lt;br /&gt;Uma das coisas fantásticas de Racket é a &lt;a href="http://docs.racket-lang.org/"&gt;documentação&lt;/a&gt;. Esta pode ser consultada &lt;a href="http://docs.racket-lang.org/"&gt;online&lt;/a&gt; ou offline quando você instala o ambiente na sua máquina (existem instaladores para Windows, Linux e Mac OS X).&lt;br /&gt;&lt;br /&gt;A instalação é fácil&amp;nbsp;&lt;a href="http://blog.rodolfocarvalho.net/2011/05/como-instalar-o-racket.html"&gt;veja meu post para mais detalhes&lt;/a&gt;. Para escrever nosso programa para Android ou browser vamos usar o &lt;a href="http://planet.racket-lang.org/display.ss?package=moby.plt&amp;amp;owner=dyoo"&gt;Moby&lt;/a&gt;, um compilador da linguagem Advanced Student Language (uma das linguagens do Racket) para Javascript/mobile.&lt;br /&gt;&lt;br /&gt;Não precisa se preocupar com a instalação do Moby. Ele está disponível no &lt;a href="http://planet.racket-lang.org/"&gt;PLaneT&lt;/a&gt;, o sistema de distribuição de pacotes do Racket. Isto quer dizer que o DrRacket (uma IDE que vem incluída) vai instalar o Moby pra você no primeiro uso e deixar tudo prontinho...&lt;br /&gt;&lt;br /&gt;Ok, então você instalou o Racket, abriu o DrRacket, e agora?&lt;br /&gt;Como sempre, muito fácil.&lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;Para começar, vamos verificar que seu ambiente está funcionando corretamente.&lt;br /&gt;Cole o código abaixo na área de definições:&lt;br /&gt;&lt;br /&gt;&lt;table cellspacing="0" class="RktBlk"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style="padding-left: 0px; padding-right: 0px; vertical-align: baseline;"&gt;&lt;span class="hspace" style="font-family: monospace;"&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;a class="RktModLink" href="http://planet.racket-lang.org/servlets/doc-search.rkt?tag=KCgyKSAwICgpIDAgKCkgKCkgKGMgcGFydCBjIChjICh1IC4gKGxpYiBzY3JpYmJsaW5ncy9n%0D%0AdWlkZS9ndWlkZS5zY3JibCkpIGMgaGFzaC1sYW5nKSkp%0D%0A" pltdoc="x" style="color: blue; text-decoration: none;"&gt;&lt;span class="RktMod" style="color: black; font-family: monospace;"&gt;#lang&lt;/span&gt;&lt;/a&gt;&lt;span class="hspace" style="font-family: monospace;"&gt;&amp;nbsp;&lt;/span&gt;&lt;a class="RktModLink" href="http://planet.racket-lang.org/servlets/doc-search.rkt?tag=KCgyKSAwICgpIDAgKCkgKCkgKGMgbW9kLXBhdGggYyAodSAuIHBsYW5ldCkpKQ%3D%3D%0D%0A" pltdoc="x" style="color: blue; text-decoration: none;"&gt;&lt;span class="RktSym" style="color: #262680; font-family: monospace;"&gt;planet&lt;/span&gt;&lt;/a&gt;&lt;span class="hspace" style="font-family: monospace;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="RktSym" style="color: #262680; font-family: monospace;"&gt;dyoo/moby:3:10&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="padding-left: 0px; padding-right: 0px; vertical-align: baseline;"&gt;&lt;span class="RktPlain"&gt;&lt;span class="hspace" style="font-family: monospace;"&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span class="RktVal" style="color: forestgreen; font-family: monospace;"&gt;"hello world"&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="padding-left: 0px; padding-right: 0px; vertical-align: baseline;"&gt;&lt;span class="RktPlain"&gt;&lt;span class="hspace" style="font-family: monospace;"&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span class="RktSym" style="color: #262680; font-family: monospace;"&gt;true&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="padding-left: 0px; padding-right: 0px; vertical-align: baseline;"&gt;&lt;span class="RktPlain"&gt;&lt;span class="hspace" style="font-family: monospace;"&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span class="RktPn" style="color: #843c24; font-family: monospace;"&gt;(&lt;/span&gt;&lt;span class="RktSym" style="color: #262680; font-family: monospace;"&gt;define&lt;/span&gt;&lt;span class="hspace" style="font-family: monospace;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="RktPn" style="color: #843c24; font-family: monospace;"&gt;(&lt;/span&gt;&lt;span class="RktSym" style="color: #262680; font-family: monospace;"&gt;f&lt;/span&gt;&lt;span class="hspace" style="font-family: monospace;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="RktSym" style="color: #262680; font-family: monospace;"&gt;x&lt;/span&gt;&lt;span class="RktPn" style="color: #843c24; font-family: monospace;"&gt;)&lt;/span&gt;&lt;span class="hspace" style="font-family: monospace;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="RktPn" style="color: #843c24; font-family: monospace;"&gt;(&lt;/span&gt;&lt;span class="RktSym" style="color: #262680; font-family: monospace;"&gt;*&lt;/span&gt;&lt;span class="hspace" style="font-family: monospace;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="RktSym" style="color: #262680; font-family: monospace;"&gt;x&lt;/span&gt;&lt;span class="hspace" style="font-family: monospace;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="RktSym" style="color: #262680; font-family: monospace;"&gt;x&lt;/span&gt;&lt;span class="RktPn" style="color: #843c24; font-family: monospace;"&gt;)&lt;/span&gt;&lt;span class="RktPn" style="color: #843c24; font-family: monospace;"&gt;)&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="padding-left: 0px; padding-right: 0px; vertical-align: baseline;"&gt;&lt;span class="RktPlain"&gt;&lt;span class="hspace" style="font-family: monospace;"&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="padding-left: 0px; padding-right: 0px; vertical-align: baseline;"&gt;&lt;span class="RktPlain"&gt;&lt;span class="hspace" style="font-family: monospace;"&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span class="RktPn" style="color: #843c24; font-family: monospace;"&gt;(&lt;/span&gt;&lt;span class="RktSym" style="color: #262680; font-family: monospace;"&gt;check-expect&lt;/span&gt;&lt;span class="hspace" style="font-family: monospace;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="RktPn" style="color: #843c24; font-family: monospace;"&gt;(&lt;/span&gt;&lt;span class="RktSym" style="color: #262680; font-family: monospace;"&gt;f&lt;/span&gt;&lt;span class="hspace" style="font-family: monospace;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="RktVal" style="color: forestgreen; font-family: monospace;"&gt;42&lt;/span&gt;&lt;span class="RktPn" style="color: #843c24; font-family: monospace;"&gt;)&lt;/span&gt;&lt;span class="hspace" style="font-family: monospace;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="RktVal" style="color: forestgreen; font-family: monospace;"&gt;1764&lt;/span&gt;&lt;span class="RktPn" style="color: #843c24; font-family: monospace;"&gt;)&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="padding-left: 0px; padding-right: 0px; vertical-align: baseline;"&gt;&lt;span class="RktPlain"&gt;&lt;span class="hspace" style="font-family: monospace;"&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="padding-left: 0px; padding-right: 0px; vertical-align: baseline;"&gt;&lt;span class="RktPlain"&gt;&lt;span class="hspace" style="font-family: monospace;"&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span class="RktPn" style="color: #843c24; font-family: monospace;"&gt;(&lt;/span&gt;&lt;span class="RktSym" style="color: #262680; font-family: monospace;"&gt;check-expect&lt;/span&gt;&lt;span class="hspace" style="font-family: monospace;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="RktPn" style="color: #843c24; font-family: monospace;"&gt;(&lt;/span&gt;&lt;span class="RktSym" style="color: #262680; font-family: monospace;"&gt;map&lt;/span&gt;&lt;span class="hspace" style="font-family: monospace;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="RktSym" style="color: #262680; font-family: monospace;"&gt;f&lt;/span&gt;&lt;span class="hspace" style="font-family: monospace;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="RktVal" style="color: forestgreen; font-family: monospace;"&gt;'&lt;/span&gt;&lt;span class="RktVal" style="color: forestgreen; font-family: monospace;"&gt;(&lt;/span&gt;&lt;span class="RktVal" style="color: forestgreen; font-family: monospace;"&gt;1&lt;/span&gt;&lt;span class="hspace" style="font-family: monospace;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="RktVal" style="color: forestgreen; font-family: monospace;"&gt;2&lt;/span&gt;&lt;span class="hspace" style="font-family: monospace;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="RktVal" style="color: forestgreen; font-family: monospace;"&gt;3&lt;/span&gt;&lt;span class="hspace" style="font-family: monospace;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="RktVal" style="color: forestgreen; font-family: monospace;"&gt;4&lt;/span&gt;&lt;span class="hspace" style="font-family: monospace;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="RktVal" style="color: forestgreen; font-family: monospace;"&gt;5&lt;/span&gt;&lt;span class="RktVal" style="color: forestgreen; font-family: monospace;"&gt;)&lt;/span&gt;&lt;span class="RktPn" style="color: #843c24; font-family: monospace;"&gt;)&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="padding-left: 0px; padding-right: 0px; vertical-align: baseline;"&gt;&lt;span class="RktPlain"&gt;&lt;span class="hspace" style="font-family: monospace;"&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span class="hspace" style="font-family: monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span class="RktPn" style="color: #843c24; font-family: monospace;"&gt;(&lt;/span&gt;&lt;span class="RktSym" style="color: #262680; font-family: monospace;"&gt;list&lt;/span&gt;&lt;span class="hspace" style="font-family: monospace;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="RktVal" style="color: forestgreen; font-family: monospace;"&gt;1&lt;/span&gt;&lt;span class="hspace" style="font-family: monospace;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="RktVal" style="color: forestgreen; font-family: monospace;"&gt;4&lt;/span&gt;&lt;span class="hspace" style="font-family: monospace;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="RktVal" style="color: forestgreen; font-family: monospace;"&gt;9&lt;/span&gt;&lt;span class="hspace" style="font-family: monospace;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="RktVal" style="color: forestgreen; font-family: monospace;"&gt;16&lt;/span&gt;&lt;span class="hspace" style="font-family: monospace;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="RktVal" style="color: forestgreen; font-family: monospace;"&gt;25&lt;/span&gt;&lt;span class="RktPn" style="color: #843c24; font-family: monospace;"&gt;)&lt;/span&gt;&lt;span class="RktPn" style="color: #843c24; font-family: monospace;"&gt;)&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;Clique em "Run" (ou use o atalho CTRL+T) e veja o resultado:&lt;br /&gt;&lt;pre style="background-color: #f6f8ff; color: #000020;"&gt;Welcome to DrRacket&lt;span style="color: #0066ee;"&gt;,&lt;/span&gt; version &lt;span style="color: green;"&gt;5.1&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #008c00;"&gt;1&lt;/span&gt; &lt;span style="color: #308080;"&gt;[&lt;/span&gt;3m&lt;span style="color: #308080;"&gt;]&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;br /&gt;Language&lt;span style="color: #400000;"&gt;:&lt;/span&gt; planet dyoo&lt;span style="color: #308080;"&gt;/&lt;/span&gt;moby&lt;span style="color: #400000;"&gt;:3&lt;/span&gt;&lt;span style="color: #400000;"&gt;:9&lt;/span&gt;&lt;span style="color: #595979;"&gt;; memory limit: 256 MB.&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #1060b6;"&gt;"hello world"&lt;/span&gt;&lt;br /&gt;#&lt;span style="color: #7d0045;"&gt;t&lt;/span&gt;&lt;br /&gt;Running tests&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;br /&gt;Both tests passed&lt;span style="color: #308080;"&gt;!&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #308080;"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;A primeira vez pode ser um pouco mais lenta pois o DrRacket vai baixar e instalar o Moby. As outras execuções não precisam de Internet e serão rápidas.&lt;br /&gt;&lt;br /&gt;Agora vamos criar dois arquivos:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;counter.rkt&lt;/li&gt;&lt;/ul&gt;&lt;table cellspacing="0" class="RktBlk"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style="padding-left: 0px; padding-right: 0px; vertical-align: baseline;"&gt;&lt;span class="hspace" style="font-family: monospace;"&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;a class="RktModLink" href="http://planet.racket-lang.org/servlets/doc-search.rkt?tag=KCgyKSAwICgpIDAgKCkgKCkgKGMgcGFydCBjIChjICh1IC4gKGxpYiBzY3JpYmJsaW5ncy9n%0D%0AdWlkZS9ndWlkZS5zY3JibCkpIGMgaGFzaC1sYW5nKSkp%0D%0A" pltdoc="x" style="color: blue; text-decoration: none;"&gt;&lt;span class="RktMod" style="color: black; font-family: monospace;"&gt;#lang&lt;/span&gt;&lt;/a&gt;&lt;span class="hspace" style="font-family: monospace;"&gt;&amp;nbsp;&lt;/span&gt;&lt;a class="RktModLink" href="http://planet.racket-lang.org/servlets/doc-search.rkt?tag=KCgyKSAwICgpIDAgKCkgKCkgKGMgbW9kLXBhdGggYyAodSAuIHBsYW5ldCkpKQ%3D%3D%0D%0A" pltdoc="x" style="color: blue; text-decoration: none;"&gt;&lt;span class="RktSym" style="color: #262680; font-family: monospace;"&gt;planet&lt;/span&gt;&lt;/a&gt;&lt;span class="hspace" style="font-family: monospace;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="RktSym" style="color: #262680; font-family: monospace;"&gt;dyoo/moby:3:10&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="padding-left: 0px; padding-right: 0px; vertical-align: baseline;"&gt;&lt;span class="RktPlain"&gt;&lt;span class="hspace" style="font-family: monospace;"&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span class="RktPn" style="color: #843c24; font-family: monospace;"&gt;(&lt;/span&gt;&lt;span class="RktSym" style="color: #262680; font-family: monospace;"&gt;define&lt;/span&gt;&lt;span class="hspace" style="font-family: monospace;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="RktSym" style="color: #262680; font-family: monospace;"&gt;initial-world&lt;/span&gt;&lt;span class="hspace" style="font-family: monospace;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="RktVal" style="color: forestgreen; font-family: monospace;"&gt;0&lt;/span&gt;&lt;span class="RktPn" style="color: #843c24; font-family: monospace;"&gt;)&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="padding-left: 0px; padding-right: 0px; vertical-align: baseline;"&gt;&lt;span class="RktPlain"&gt;&lt;span class="hspace" style="font-family: monospace;"&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span class="RktPn" style="color: #843c24; font-family: monospace;"&gt;(&lt;/span&gt;&lt;span class="RktSym" style="color: #262680; font-family: monospace;"&gt;big-bang&lt;/span&gt;&lt;span class="hspace" style="font-family: monospace;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="RktSym" style="color: #262680; font-family: monospace;"&gt;initial-world&lt;/span&gt;&lt;span class="hspace" style="font-family: monospace;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="RktPn" style="color: #843c24; font-family: monospace;"&gt;(&lt;/span&gt;&lt;span class="RktSym" style="color: #262680; font-family: monospace;"&gt;on-tick&lt;/span&gt;&lt;span class="hspace" style="font-family: monospace;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="RktSym" style="color: #262680; font-family: monospace;"&gt;add1&lt;/span&gt;&lt;span class="RktPn" style="color: #843c24; font-family: monospace;"&gt;)&lt;/span&gt;&lt;span class="RktPn" style="color: #843c24; font-family: monospace;"&gt;)&lt;br /&gt;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;run-counter.rkt&lt;/li&gt;&lt;/ul&gt;&lt;table cellspacing="0" class="RktBlk"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style="padding-left: 0px; padding-right: 0px; vertical-align: baseline;"&gt;&lt;span class="hspace" style="font-family: monospace;"&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;a class="RktModLink" href="http://planet.racket-lang.org/servlets/doc-search.rkt?tag=KCgyKSAwICgpIDAgKCkgKCkgKGMgcGFydCBjIChjICh1IC4gKGxpYiBzY3JpYmJsaW5ncy9n%0D%0AdWlkZS9ndWlkZS5zY3JibCkpIGMgaGFzaC1sYW5nKSkp%0D%0A" pltdoc="x" style="color: blue; text-decoration: none;"&gt;&lt;span class="RktMod" style="color: black; font-family: monospace;"&gt;#lang&lt;/span&gt;&lt;/a&gt;&lt;span class="hspace" style="font-family: monospace;"&gt;&amp;nbsp;&lt;/span&gt;&lt;a class="RktModLink" href="http://planet.racket-lang.org/servlets/doc-search.rkt?tag=KCgyKSAwICgpIDAgKCkgKCkgKGMgbW9kLXBhdGggYyAodSAuIHJhY2tldCkpKQ%3D%3D%0D%0A" pltdoc="x" style="color: blue; text-decoration: none;"&gt;&lt;span class="RktSym" style="color: #262680; font-family: monospace;"&gt;racket&lt;/span&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="padding-left: 0px; padding-right: 0px; vertical-align: baseline;"&gt;&lt;span class="RktPlain"&gt;&lt;span class="hspace" style="font-family: monospace;"&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span class="RktPn" style="color: #843c24; font-family: monospace;"&gt;(&lt;/span&gt;&lt;span class="RktSym" style="color: #262680; font-family: monospace;"&gt;require&lt;/span&gt;&lt;span class="hspace" style="font-family: monospace;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="RktPn" style="color: #843c24; font-family: monospace;"&gt;(&lt;/span&gt;&lt;span class="RktSym" style="color: #262680; font-family: monospace;"&gt;&lt;a class="RktStxLink" href="http://planet.racket-lang.org/servlets/doc-search.rkt?tag=KCgyKSAwICgpIDAgKCkgKCkgKGMgZm9ybSBjIChjIChjIGxpYiBjICh1IC4gcmFja2V0L3By%0D%0AaXZhdGUvYmFzZS5ya3QpKSBjIHBsYW5ldCkpKQ%3D%3D%0D%0A" pltdoc="x" style="color: black; font-weight: bold; text-decoration: none;"&gt;planet&lt;/a&gt;&lt;/span&gt;&lt;span class="hspace" style="font-family: monospace;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="RktSym" style="color: #262680; font-family: monospace;"&gt;dyoo/moby:3:10&lt;/span&gt;&lt;span class="RktPn" style="color: #843c24; font-family: monospace;"&gt;)&lt;/span&gt;&lt;span class="RktPn" style="color: #843c24; font-family: monospace;"&gt;)&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="padding-left: 0px; padding-right: 0px; vertical-align: baseline;"&gt;&lt;span class="RktPlain"&gt;&lt;span class="hspace" style="font-family: monospace;"&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span class="RktPn" style="color: #843c24; font-family: monospace;"&gt;(&lt;/span&gt;&lt;span class="RktSym" style="color: #262680; font-family: monospace;"&gt;&lt;a class="RktValLink" href="http://planet.racket-lang.org/#%28def._%28%28planet._main..rkt._%28dyoo._moby..plt._3._9%29%29._run-in-browser%29%29" pltdoc="x" style="color: blue; text-decoration: none;"&gt;run-in-browser&lt;/a&gt;&lt;/span&gt;&lt;span class="hspace" style="font-family: monospace;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="RktVal" style="color: forestgreen; font-family: monospace;"&gt;"counter.rkt"&lt;/span&gt;&lt;span class="RktPn" style="color: #843c24; font-family: monospace;"&gt;)&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;Agora basta executar o run-counter.rkt clicando no botão "Run".&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-KmVgJAxTUxU/TeLDN2roxqI/AAAAAAAAD64/7KprQU8S-no/s1600/racket-moby-counter-1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="227" src="http://2.bp.blogspot.com/-KmVgJAxTUxU/TeLDN2roxqI/AAAAAAAAD64/7KprQU8S-no/s320/racket-moby-counter-1.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Pronto, sua primeira aplicação está criada.&lt;br /&gt;Veja como ficou:&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-m_9esvGK2NU/TeLkhdV1G0I/AAAAAAAAD7U/SNkahrpAVSw/s1600/racket-moby-browser.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="138" src="http://3.bp.blogspot.com/-m_9esvGK2NU/TeLkhdV1G0I/AAAAAAAAD7U/SNkahrpAVSw/s320/racket-moby-browser.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Ela é bem simples, só um contador. Mas que funciona no browser e.... e no seu Android!! Se você não tiver um, funciona no do seu amigo...&lt;br /&gt;&lt;br /&gt;Para instalar a aplicacão no Android precisamos gerar um pacote. Para isto criamos um outro arquivo, o "build-counter.rkt", com o seguinte conteúdo:&lt;br /&gt;&lt;br /&gt;&lt;pre style="background-color: #f6f8ff; color: #000020;"&gt;#lang racket&lt;br /&gt;&lt;span style="color: #308080;"&gt;(&lt;/span&gt;&lt;span style="color: #200080; font-weight: bold;"&gt;require&lt;/span&gt; &lt;span style="color: #308080;"&gt;(&lt;/span&gt;&lt;span style="color: #200080; font-weight: bold;"&gt;planet&lt;/span&gt; dyoo&lt;span style="color: #308080;"&gt;/&lt;/span&gt;moby&lt;span style="color: #400000;"&gt;:3&lt;/span&gt;&lt;span style="color: #400000;"&gt;:10&lt;/span&gt;&lt;span style="color: #308080;"&gt;)&lt;/span&gt;&lt;span style="color: #308080;"&gt;)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #308080;"&gt;(&lt;/span&gt;&lt;span style="color: #200080; font-weight: bold;"&gt;create-android-phone-package&lt;/span&gt; &lt;span style="color: #1060b6;"&gt;"counter.rkt"&lt;/span&gt; &lt;span style="color: #1060b6;"&gt;"counter.apk"&lt;/span&gt;&lt;span style="color: #308080;"&gt;)&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;Este programa vai transformar nosso "counter.rkt" em um pacote para Android "counter.apk".&lt;br /&gt;Pronto!&lt;br /&gt;&lt;br /&gt;Sim, pronto! Instale a aplicação no seu Android e divirta-se!&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-size: large;"&gt;Como ficou no Android?&lt;/span&gt;&lt;br /&gt;Como eu não tenho um telefone com Android, baixei a SDK com um emulador e criei um dispositivo virtual para testar.&lt;br /&gt;&lt;br /&gt;Baixei o &lt;a href="http://dl.google.com/android/android-sdk_r11-linux_x86.tgz"&gt;Android SDK pra Linux&lt;/a&gt;&amp;nbsp;e extraí num diretório qualquer.&lt;br /&gt;Basta executar o utilitário em tools/android para criar um AVD (dispositivo a ser emulado). Para criar um&lt;br /&gt;AVD é preciso instalar alguma versão da API, na área "Avaiable Packages" eu escolhi "SDK Platform Android 3.1, API 12, revision 2".&lt;br /&gt;&lt;br /&gt;Em resumo:&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-KJO91sHfTfQ/TeLh3eOiB-I/AAAAAAAAD7A/rOm6h8QwDW8/s1600/android-emulator-config.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="190" src="http://4.bp.blogspot.com/-KJO91sHfTfQ/TeLh3eOiB-I/AAAAAAAAD7A/rOm6h8QwDW8/s320/android-emulator-config.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Inicie o dispositivo clicando em "Start".&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-AoQcosWPPHA/TeLjRbG0gYI/AAAAAAAAD7E/eP0F6jXhJl0/s1600/android-emulator-1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="228" src="http://1.bp.blogspot.com/-AoQcosWPPHA/TeLjRbG0gYI/AAAAAAAAD7E/eP0F6jXhJl0/s320/android-emulator-1.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Para desbloquer a tela use "Page Up" do seu teclado.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-WhM0EGHc7HY/TeLjSpMoYsI/AAAAAAAAD7I/dUeNlrCQFXo/s1600/android-emulator-2.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="228" src="http://4.bp.blogspot.com/-WhM0EGHc7HY/TeLjSpMoYsI/AAAAAAAAD7I/dUeNlrCQFXo/s320/android-emulator-2.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Para instalar o nosso aplicativo "counter" no Android, execute este comando num terminal:&lt;br /&gt;&lt;br /&gt;&lt;pre style="background: none repeat scroll 0% 0% rgb(246, 248, 255); color: #000020; overflow: auto;"&gt;rodolfo@lisa:~/Downloads/android-sdk-linux_x86/platform-tools$ &lt;b&gt;./adb install ~/projects/racket-for-smartphones/counter.apk&lt;/b&gt;&lt;br /&gt;1348 KB/s (203114 bytes in 0.147s)&lt;br /&gt; pkg: /data/local/tmp/counter.apk&lt;br /&gt;Success&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Instalado! Clique no menu de aplicações, aquele ícone com vários quadradinhos entre o globo e o fone.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-cgkiEemBeG8/TeLjTHv6MLI/AAAAAAAAD7M/et9Qn2RrlcY/s1600/android-emulator-3.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="228" src="http://3.bp.blogspot.com/-cgkiEemBeG8/TeLjTHv6MLI/AAAAAAAAD7M/et9Qn2RrlcY/s320/android-emulator-3.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;E lá está nossa aplicação counter!!! Clique no ícone para executar.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-nLvh6bVNxMY/TeLjTRDnWzI/AAAAAAAAD7Q/5GZH2KB6E9c/s1600/android-emulator-4.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="228" src="http://2.bp.blogspot.com/-nLvh6bVNxMY/TeLjTRDnWzI/AAAAAAAAD7Q/5GZH2KB6E9c/s320/android-emulator-4.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Minha conclusão é que este procedimento é mais fácil do que o Hello World em Java proposto pelo Android SDK... e já temos algo melhor que um Hello World.&lt;br /&gt;&lt;br /&gt;Você tem um Android aí na sua mão? Quer testar? Baixe&amp;nbsp;e instale&amp;nbsp;o pacote &lt;a href="http://s.rodolfocarvalho.net/counter.apk"&gt;counter.apk&lt;/a&gt;&amp;nbsp;(200 kB) e me mande uma foto!&lt;br /&gt;&lt;br /&gt;[editado 2011/05/30 12:11]&lt;br /&gt;O meu amigo &lt;a href="http://juanlopes.net/"&gt;Juan Lopes&lt;/a&gt; testou num Android, vejam:&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-L_Bd9ywfSSc/TeQMku04NHI/AAAAAAAAD7c/w72VAk-Qv8c/s1600/310105972.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="320" src="http://3.bp.blogspot.com/-L_Bd9ywfSSc/TeQMku04NHI/AAAAAAAAD7c/w72VAk-Qv8c/s320/310105972.png" width="179" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Se você acha que um contador não é tão legal, então pode tentar outros exemplos, e pode também criar sua própria aplicação. O Moby dá acesso a GPS, sensor de movimento, acelerômetro, Internet, e tudo que não tiver lá pode ser estendido.&lt;br /&gt;&lt;br /&gt;Para mais informações, veja a&lt;a href="http://planet.racket-lang.org/package-source/dyoo/moby.plt/3/9/planet-docs/manual/index.html"&gt; documentação oficial do Moby&lt;/a&gt; e a &lt;a href="http://www.cs.brown.edu/%7Esk/Publications/Talks/Moby-Bootstrap/"&gt;página do projeto com slides, material em áudio e vídeo&lt;/a&gt;&amp;nbsp;(em inglês).&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-size: large;"&gt;Futuro&lt;/span&gt;&lt;br /&gt;O &lt;a href="https://twitter.com/#%21/dyoo1979"&gt;Danny Yoo&lt;/a&gt; está trabalhando em um &lt;a href="https://github.com/dyoo/whalesong"&gt;compilador de Racket para Javascript, o Whalesong&lt;/a&gt;, que deve ser integrado ao Moby, substituindo a camada atual de compilação. Feito isto, ele pretende focar novamente em melhorar o Moby.&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-size: large;"&gt;Agradecimentos&lt;/span&gt;&lt;br /&gt;Obrigado ao Danny por ter atualizado o Moby para funcionar corretamente com a versão mais recente do Racket (5.1.1), à &lt;a href="http://racket-lang.org/people.html"&gt;equipe PLT&lt;/a&gt; por criar o Racket, e à &lt;a href="http://racket-lang.org/community.html"&gt;comunidade&lt;/a&gt; pelo entusiasmo e prestatividade.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/396083382034174439-7766186818270964427?l=blog.rodolfocarvalho.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.rodolfocarvalho.net/feeds/7766186818270964427/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=396083382034174439&amp;postID=7766186818270964427' title='2 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/396083382034174439/posts/default/7766186818270964427'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/396083382034174439/posts/default/7766186818270964427'/><link rel='alternate' type='text/html' href='http://blog.rodolfocarvalho.net/2011/05/programando-para-android-com-racket.html' title='Programando para Android com Racket'/><author><name>Rodolfo</name><uri>http://www.blogger.com/profile/13115401885842551697</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_vI4PxbAv6pM/SJ-dzrhNvyI/AAAAAAAAAAc/dOyhjpNbx58/s1600-R/Rodolfo_safari.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/-KmVgJAxTUxU/TeLDN2roxqI/AAAAAAAAD64/7KprQU8S-no/s72-c/racket-moby-counter-1.png' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-396083382034174439.post-6684104574101573353</id><published>2011-05-29T22:20:00.002-03:00</published><updated>2011-05-30T19:50:05.767-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='racket'/><title type='text'>Como instalar o Racket</title><content type='html'>Neste post explico como instalar o &lt;a href="http://racket-lang.org/"&gt;Racket&lt;/a&gt;, incluindo os programas e utilitários de linha de comando e a IDE DrRacket.&lt;br /&gt;&lt;br /&gt;Para começar, acesse a página de &lt;a href="http://racket-lang.org/download/"&gt;download do Racket&lt;/a&gt;, escolha sua plataforma, e clique no botão de download.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-AzbcW7YMFbI/TeFOD08WmzI/AAAAAAAAD6k/9fSAI8fBDGI/s1600/racket_download.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="138" src="http://1.bp.blogspot.com/-AzbcW7YMFbI/TeFOD08WmzI/AAAAAAAAD6k/9fSAI8fBDGI/s320/racket_download.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-size: large;"&gt;Escolha da plataforma&lt;/span&gt;&lt;br /&gt;O Racket fornece pacotes binários / instaladores para as seguintes plataformas: Windows x86, Macintosh OS X (Intel i386), Macintosh OS X (PPC), Macintosh Darwin (PPC), Linux i386 (Fedora 12), Linux i386 (Ubuntu jaunty) e Linux x86_64 (Fedora 14).&lt;br /&gt;&lt;br /&gt;Usar os instaladores é a forma mais rápida de preparar o ambiente e começar a programar.&lt;br /&gt;&lt;br /&gt;Para outras combinações de sistema operacional e arquitetura, existem opções de download do código-fonte para Windows,&amp;nbsp;Macintosh, e Unix.&lt;br /&gt;&lt;br /&gt;Se você usa algum Linux, recomendo instalar a partir do código-fonte para ter uma instalação otimizada para sua plataforma.&lt;br /&gt;&lt;br /&gt;Se você usa alguma outra plataforma e tiver dificuldades, peça ajuda na &lt;a href="http://lists.racket-lang.org/users/"&gt;lista de emails oficial&lt;/a&gt; ou no &lt;a href="http://racket-lang.org/irc-chat.html"&gt;canal do IRC oficial&lt;/a&gt; (ambos em inglês), ou ainda na lista &lt;a href="http://groups.google.com/group/lisp-br/"&gt;Lisp-br&lt;/a&gt; (em português).&lt;br /&gt;&lt;br /&gt;Abaixo retrato mais detalhes da instalação em Windows e Linux.&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-size: large;"&gt;Windows&lt;/span&gt;&lt;br /&gt;Baixe o instalador binário, na opção "Windows x86", que vai servir&amp;nbsp;se o seu sistema for tanto&amp;nbsp;32&amp;nbsp;quanto 64 bits. Se o seu sistema for de 64 bits, note que o Racket e DrRacket irão rodar no modo de compatibilidade, em 32 bits. Isto em geral não representa problema algum. Se você tiver alguma boa razão para rodar de fato em 64 bits, então instale a partir do código-fonte, e se tiver problemas procure um dos canais que citei acima.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-ugc8DtP6lKU/TeHUY2NCX4I/AAAAAAAAD6o/8-HwdruCbio/s1600/racket-windows-1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="74" src="http://4.bp.blogspot.com/-ugc8DtP6lKU/TeHUY2NCX4I/AAAAAAAAD6o/8-HwdruCbio/s320/racket-windows-1.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Localize o arquivo baixado e execute o instalador.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-dh-8kFxkYvM/TeHUZSvYhII/AAAAAAAAD6s/KOuiyRYzRXA/s1600/racket-windows-2.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="246" src="http://1.bp.blogspot.com/-dh-8kFxkYvM/TeHUZSvYhII/AAAAAAAAD6s/KOuiyRYzRXA/s320/racket-windows-2.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;A instalação é como a maioria das outras em Windows. Basta clicar "next" até terminar a instalação.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-KOAlrLpIbJE/TeHUZ_2OnWI/AAAAAAAAD6w/Ez_OeLZUyPQ/s1600/racket-windows-3.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="320" src="http://2.bp.blogspot.com/-KOAlrLpIbJE/TeHUZ_2OnWI/AAAAAAAAD6w/Ez_OeLZUyPQ/s320/racket-windows-3.png" width="244" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Para abrir o DrRacket e começar a programar localize-o no Menu Iniciar.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-VvOOvcgI56M/TeHUaAjEWRI/AAAAAAAAD60/Oa__pbH5FfQ/s1600/racket-windows-4.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="179" src="http://1.bp.blogspot.com/-VvOOvcgI56M/TeHUaAjEWRI/AAAAAAAAD60/Oa__pbH5FfQ/s320/racket-windows-4.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Pronto, você instalou o Racket e já pode se divertir pra valer!&lt;br /&gt;&lt;br /&gt;Se não souber por onde começar, veja &lt;a href="http://bazaar.launchpad.net/~rhcarvalho/+junk/racket/files/head:/demo/racket-lang.org/"&gt;alguns exemplos de código Racket aqui&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-size: large;"&gt;Linux (Ubuntu)&lt;/span&gt;&lt;br /&gt;Apesar de poder instalar usando o instalador automático, eu recomendo instalalar a partir do código-fonte. O instalador para o Ubuntu é compilado para a versão 9.04 Jaunty Jackalope. A atual é 11.04 Natty Narwhal.&lt;br /&gt;&lt;br /&gt;Já usei com sucesso a versão compilada para Ubuntu com a versão 10.10 Maverick Meerkat, entretanto alguns módulos específicos podem não funcionar - em particular tive problemas em executar uma aplicação daquelas de exemplo na página inicial do Racket.&lt;br /&gt;&lt;br /&gt;Baixe o arquivo racket-5.1.1-src-unix.tgz, e para compilar faça:&lt;br /&gt;&lt;br /&gt;&lt;pre style="background: #f6f8ff; color: #000020; overflow:auto;"&gt;rodolfo@lisa:~/Downloads$ &lt;b&gt;tar xaf racket-5.1.1-src-unix.tgz&lt;/b&gt; &lt;br /&gt;rodolfo@lisa:~/Downloads$ &lt;b&gt;cd racket-5.1.1/src&lt;/b&gt;&lt;br /&gt;rodolfo@lisa:~/Downloads/racket-5.1.1/src$ &lt;b&gt;mkdir build&lt;/b&gt;&lt;br /&gt;rodolfo@lisa:~/Downloads/racket-5.1.1/src$ &lt;b&gt;cd build&lt;/b&gt;&lt;br /&gt;rodolfo@lisa:~/Downloads/racket-5.1.1/src/build$ &lt;b&gt;../configure&lt;/b&gt;&lt;br /&gt;...&lt;br /&gt;rodolfo@lisa:~/Downloads/racket-5.1.1/src/build$ &lt;b&gt;make&lt;/b&gt;&lt;br /&gt;...&lt;br /&gt;rodolfo@lisa:~/Downloads/racket-5.1.1/src/build$ &lt;b&gt;make install&lt;/b&gt;&lt;br /&gt;...&lt;br /&gt;&lt;span style="color: #406080;"&gt;## Opcionalmente, mova o diretório para qualquer outro lugar&lt;/span&gt;&lt;br /&gt;rodolfo@lisa:~/Downloads/racket-5.1.1/src/build$ &lt;b&gt;cd ../../../&lt;/b&gt;&lt;br /&gt;rodolfo@lisa:~/Downloads/racket-5.1.1/src/build$ &lt;b&gt;sudo mv racket-5.1.1/ /opt/racket/&lt;/b&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Adicione o Racket ao seu PATH, adicionando estas linhas ao seu arquivo ~/.bash_rc:&lt;br /&gt;&lt;pre style="background: #f6f8ff; color: #000020;"&gt;# Add Racket to PATH&lt;br /&gt;PATH=$PATH:/opt/racket/bin&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Pronto! Você deve querer criar alguns atalhos. Use o Alacarte, clicando com o botão direito no menu Aplicações &amp;gt; Editar Menu.&lt;br /&gt;&lt;br /&gt;Adicione atalhos para /opt/racket/bin/drracket, /opt/racket/bin/plt-games e /opt/racket/bin/slideshow. Você pode usar ícones de /opt/racket/collects/icons.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-P6QcycXLzRM/TeLwpLyEQ_I/AAAAAAAAD7Y/P_KwzMZ5xxs/s1600/racket-linux-menus.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="265" src="http://1.bp.blogspot.com/-P6QcycXLzRM/TeLwpLyEQ_I/AAAAAAAAD7Y/P_KwzMZ5xxs/s320/racket-linux-menus.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Pronto, você instalou o Racket e já pode se divertir pra valer!&lt;br /&gt;&lt;br /&gt;Se não souber por onde começar, veja &lt;a href="http://bazaar.launchpad.net/~rhcarvalho/+junk/racket/files/head:/demo/racket-lang.org/"&gt;alguns exemplos de código Racket aqui&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/396083382034174439-6684104574101573353?l=blog.rodolfocarvalho.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.rodolfocarvalho.net/feeds/6684104574101573353/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=396083382034174439&amp;postID=6684104574101573353' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/396083382034174439/posts/default/6684104574101573353'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/396083382034174439/posts/default/6684104574101573353'/><link rel='alternate' type='text/html' href='http://blog.rodolfocarvalho.net/2011/05/como-instalar-o-racket.html' title='Como instalar o Racket'/><author><name>Rodolfo</name><uri>http://www.blogger.com/profile/13115401885842551697</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_vI4PxbAv6pM/SJ-dzrhNvyI/AAAAAAAAAAc/dOyhjpNbx58/s1600-R/Rodolfo_safari.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/-AzbcW7YMFbI/TeFOD08WmzI/AAAAAAAAD6k/9fSAI8fBDGI/s72-c/racket_download.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-396083382034174439.post-1602252175092835718</id><published>2011-05-27T11:52:00.000-03:00</published><updated>2011-05-27T11:52:56.183-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ruby'/><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='ideas'/><category scheme='http://www.blogger.com/atom/ns#' term='boo'/><category scheme='http://www.blogger.com/atom/ns#' term='python'/><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><category scheme='http://www.blogger.com/atom/ns#' term='language'/><category scheme='http://www.blogger.com/atom/ns#' term='aprendizado'/><title type='text'>Sobre escolhas no projeto de linguagens de programação</title><content type='html'>Este tópico muito me atrái, e por vezes levanto esta discussão nos nossos encontros semanais do &lt;a href="http://dojorio.wordpress.com/"&gt;Dojo Rio&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Ontem fiz &lt;a href="http://blog.rodolfocarvalho.net/2011/05/boo-nao-e-python.html"&gt;um post tentando esclarer que num mar de similaridades sintáticas podem existir muitas diferenças semânticas&lt;/a&gt;. O caso prático foi uma comparação envolvendo &lt;a href="http://boo.codehaus.org/"&gt;Boo&lt;/a&gt;, &lt;a href="http://python.org/"&gt;Python&lt;/a&gt; e &lt;a href="http://www.ruby-lang.org/"&gt;Ruby&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://groups.google.com/group/dojo-rio/browse_thread/thread/c2ce432494570eae"&gt;A discussão seguiu na lista do Dojo&lt;/a&gt;, e um outro aspecto que marca a diferença entre escolhas feitas no projeto da linguagem Python e escolhas feitas no projeto da linguagem Boo surgiu num &lt;a href="http://groups.google.com/group/dojo-rio/msg/df0283315eb62824"&gt;comentário do Juan&lt;/a&gt;. Este post é uma reflexão sobre este aspecto.&lt;br /&gt;&lt;br /&gt;O &lt;a href="http://juanlopes.net/"&gt;Juan&lt;/a&gt; disse:&lt;br /&gt;&lt;blockquote&gt;De qualquer forma, a coisa que mais me faz gostar de boo é não escrever "__init__", e sim "constructor".&lt;/blockquote&gt;&lt;br /&gt;Taí, gosto é um negócio bem abstrato e indiscutível muitas das vezes.&lt;br /&gt;&lt;br /&gt;Seguindo a linha de papos que temos às vezes sobre as escolhas feitas no projeto de linguagens e as consequências que estas escolhas acarretam, ser "__init__" ou "constructor" é mais uma questão de escolha, na qual cabe-nos apenas declarar nosso gosto se o tivermos, e observar consequências.&lt;br /&gt;&lt;br /&gt;Talvez por estar acostumado com a filosofia Python, o &lt;a href="http://www.python.org/dev/peps/pep-0020/"&gt;Zen of Python&lt;/a&gt; se quiserem, eu gosto da &lt;a href="http://groups.google.com/group/dojo-rio/msg/e8f3547a60e1e77b"&gt;consistência ortogonal do "__whatever__" como disse o Berrondo&lt;/a&gt;.&lt;br /&gt;E falar sobre gosto pára por aqui.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;Mas e as consequências das escolhas?&lt;a name='more'&gt;&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;1&lt;/b&gt;)&lt;span style="color: #808030;"&gt; &lt;/span&gt;Uma delas já está embutida na fala do &lt;a href="https://twitter.com/claudioberrondo"&gt;Berrondo&lt;/a&gt;, a questão da consistência.&lt;br /&gt;Neste ponto, uma das algumas vantagens que observo é a facilidade de identificação visual do papel de um método em uma classe:&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Se ao bater o olho, numa fração de segundos, em um bloco de código e ver "&lt;span style="color: maroon; font-weight: bold;"&gt;def&lt;/span&gt; __algumacoisa__&lt;span style="color: #808030;"&gt;(&lt;/span&gt;self&lt;span style="color: #808030;"&gt;,&lt;/span&gt; &lt;span style="color: #808030;"&gt;...&lt;/span&gt;&lt;span style="color: #808030;"&gt;)&lt;/span&gt;&lt;span style="color: #808030;"&gt;:&lt;/span&gt;", então trata-se de alguma coisa especial.&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;b&gt;2&lt;/b&gt;) De certa forma também evita as colisões de nome (&lt;i&gt;name clashes&lt;/i&gt;):&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Convenhamos que é mais natural num código de "usuário" (da linguagem) escrevermos "&lt;span style="color: maroon; font-weight: bold;"&gt;def&lt;/span&gt; meumetodo&lt;span style="color: #808030;"&gt;(&lt;/span&gt;self&lt;span style="color: #808030;"&gt;,&lt;/span&gt; &lt;span style="color: #808030;"&gt;.&lt;/span&gt;&lt;span style="color: #808030;"&gt;.&lt;/span&gt;&lt;span style="color: #808030;"&gt;.&lt;/span&gt;&lt;span style="color: #808030;"&gt;)&lt;/span&gt;&lt;span style="color: #808030;"&gt;:&lt;/span&gt;" do que "&lt;span style="color: maroon; font-weight: bold;"&gt;def&lt;/span&gt; __meumetodo__&lt;span style="color: #808030;"&gt;(&lt;/span&gt;self&lt;span style="color: #808030;"&gt;,&lt;/span&gt; &lt;span style="color: #808030;"&gt;.&lt;/span&gt;&lt;span style="color: #808030;"&gt;.&lt;/span&gt;&lt;span style="color: #808030;"&gt;.&lt;/span&gt;&lt;span style="color: #808030;"&gt;)&lt;/span&gt;&lt;span style="color: #808030;"&gt;:&lt;/span&gt;". Ou seja, "__" foi escolhido de forma a ser um prefixo que em condições normais não seria utilizado (não é como "&lt;i&gt;get&lt;/i&gt;" ou "&lt;i&gt;set&lt;/i&gt;"). Como se não bastasse, além do prefixo também tem o sufixo "__".&lt;/li&gt;&lt;li&gt;Convenhamos ser mais provável inadvertidamente escrevermos "GetHashCode" do que "__hash__" em um método que não tem nada a ver com o papel destes métodos na linguagem.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;Podemos argumentar a favor de Boo dizendo que a tipagem estática e o processo de compilação podem detetar inconsistências, mas na prática aparentemente nada impede que sobrescrevamos o método padrão "op_Add" por um nosso que não atenda as espeficicações originais — um erro de semântica quase nunca é detetado de forma automatizada.&lt;br /&gt;&lt;br /&gt;Não tenho Boo aqui pra testar. Chutando pelo comportamento de Java, se existir um método herdado "op_Add" e um outro declarado e implementado na classe em questão, e os dois tiverem assinaturas diferentes, o método a ser usado é definido pelos tipos de argumentos recebidos na chamada.&lt;br /&gt;&lt;br /&gt;Isto é:&lt;br /&gt;&lt;pre style="-moz-background-clip: -moz-initial; -moz-background-inline-policy: -moz-initial; -moz-background-origin: -moz-initial; background: rgb(255, 255, 255) none repeat scroll 0% 0%; color: black;"&gt;&lt;span style="color: maroon; font-weight: bold;"&gt;public&lt;/span&gt; &lt;span style="color: maroon; font-weight: bold;"&gt;class&lt;/span&gt; Falante &lt;span style="color: purple;"&gt;{&lt;/span&gt;  &lt;br /&gt;  &lt;span style="color: maroon; font-weight: bold;"&gt;public&lt;/span&gt; &lt;span style="color: #bb7977; font-weight: bold;"&gt;String&lt;/span&gt; toString&lt;span style="color: #808030;"&gt;(&lt;/span&gt;&lt;span style="color: #808030;"&gt;)&lt;/span&gt; &lt;span style="color: purple;"&gt;{&lt;/span&gt;  &lt;br /&gt;    &lt;span style="color: maroon; font-weight: bold;"&gt;return&lt;/span&gt; &lt;span style="color: #0000e6;"&gt;"Sou um objeto da classe Falante"&lt;/span&gt;&lt;span style="color: purple;"&gt;;&lt;/span&gt;&lt;br /&gt;  &lt;span style="color: purple;"&gt;}&lt;/span&gt;&lt;br /&gt;  &lt;span style="color: maroon; font-weight: bold;"&gt;public&lt;/span&gt; &lt;span style="color: #bb7977; font-weight: bold;"&gt;String&lt;/span&gt; toString&lt;span style="color: #808030;"&gt;(&lt;/span&gt;&lt;span style="color: #bb7977; font-weight: bold;"&gt;String&lt;/span&gt; nome&lt;span style="color: #808030;"&gt;)&lt;/span&gt; &lt;span style="color: purple;"&gt;{&lt;/span&gt;  &lt;br /&gt;    &lt;span style="color: maroon; font-weight: bold;"&gt;return&lt;/span&gt; &lt;span style="color: #0000e6;"&gt;"Olá "&lt;/span&gt; &lt;span style="color: #808030;"&gt;+&lt;/span&gt; nome &lt;span style="color: #808030;"&gt;+&lt;/span&gt; &lt;span style="color: #0000e6;"&gt;", tudo bem hoje?"&lt;/span&gt;&lt;span style="color: purple;"&gt;;&lt;/span&gt;&lt;br /&gt;  &lt;span style="color: purple;"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;span style="color: purple;"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;...&lt;br /&gt;&lt;br /&gt;Falante f = new Falante()&lt;span style="color: #808030;"&gt;;&lt;/span&gt;&lt;br /&gt;f.toString() &lt;span style="color: dimgrey;"&gt;/*  Sou um objeto da classe Falante  */&lt;/span&gt; &lt;br /&gt;f.toString("Túlio") &lt;span style="color: dimgrey;"&gt;/*  Olá Túlio, tudo bem hoje?  */&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;b&gt;3&lt;/b&gt;) A terceira consequência que me vem em mente é a questão da extensibilidade. O Berrondo citou que "__whatever__" remetem a &lt;a href="http://docs.python.org/reference/datamodel.html#basic-customization"&gt;protocolos em Python&lt;/a&gt;, coisa que se assemelha vagamente ao papel de interfaces em Java (&lt;a href="http://dirtsimple.org/2004/12/python-interfaces-are-not-java.html"&gt;cuidado, não é a mesma coisa!&lt;/a&gt;). A sintaxe da forma que é tem uma vantagem de extensibilidade:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Você pode criar seu próprio protocolo! E de fato eles existem. Para diversas coisas, como serialização de dados, mocks, e qualquer coisa que você puder imaginar. Uma biblioteca ou framework pode adicionar novos protocolos, os quais você usa para interagir com essa ou esse.&lt;/li&gt;&lt;li&gt;É um "duck typing" institucionalizado.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;A escolha de Boo já não tem esta vantagem, e não sei qual seria o equivalente dos protocolos. Criam-se classes abstratas, interfaces, o que?! Não sei.&lt;br /&gt;&lt;br /&gt;Ah, claro, é preciso deixar claro que não é o fato de você poder criar "seu próprio protocolo" que é excitante, mas sim que o seu protocolo é tão bom quanto os que já vem na linguagem, e inclusive tem a mesma aparência sintática (se você assim dedidir, afinal ao invés de chamar de &lt;i&gt;__meumetodo__&lt;/i&gt; poderia sem sombra de dúvida ter sido chamado de &lt;i&gt;meumetodo&lt;/i&gt;).&lt;br /&gt;&lt;br /&gt;A grande beleza está na manutenção da consistência ao se expandir a linguagem para atender à sua necessidade.&lt;br /&gt;&lt;br /&gt;(Ah, e neste ponto Lisp, na minha opinião, domina. Fique ligado nos meus posts sobre &lt;a href="http://blog.rodolfocarvalho.net/search/label/lisp"&gt;Lisp&lt;/a&gt;/&lt;a href="http://blog.rodolfocarvalho.net/search/label/scheme"&gt;Scheme&lt;/a&gt;/&lt;a href="http://blog.rodolfocarvalho.net/search/label/racket"&gt;Racket&lt;/a&gt;)&lt;br /&gt;&lt;br /&gt;&lt;hr /&gt;Listei 3 consequências, e aposto que existem outras... você é capaz de citar mais alguma?&lt;br /&gt;&lt;br /&gt;Não tenho conhecimento de Boo além do que fizemos na última quarta no dojo, portanto podem haver deslizes - se detetar algum me avise :D&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/396083382034174439-1602252175092835718?l=blog.rodolfocarvalho.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.rodolfocarvalho.net/feeds/1602252175092835718/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=396083382034174439&amp;postID=1602252175092835718' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/396083382034174439/posts/default/1602252175092835718'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/396083382034174439/posts/default/1602252175092835718'/><link rel='alternate' type='text/html' href='http://blog.rodolfocarvalho.net/2011/05/sobre-escolhas-no-projeto-de-linguagens.html' title='Sobre escolhas no projeto de linguagens de programação'/><author><name>Rodolfo</name><uri>http://www.blogger.com/profile/13115401885842551697</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_vI4PxbAv6pM/SJ-dzrhNvyI/AAAAAAAAAAc/dOyhjpNbx58/s1600-R/Rodolfo_safari.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-396083382034174439.post-5339539539514399893</id><published>2011-05-26T23:13:00.000-03:00</published><updated>2011-05-26T23:13:13.443-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='racket'/><category scheme='http://www.blogger.com/atom/ns#' term='python'/><title type='text'>Mergulhando no Racket</title><content type='html'>Se tudo der certo vou escrever ainda muitos posts sobre &lt;a href="http://racket-lang.org/"&gt;Racket&lt;/a&gt; aqui no blog.&lt;br /&gt;Simplesmente porque se eu achava &lt;a href="http://python.org/"&gt;Python&lt;/a&gt; muito legal, hoje Racket parece ser o novo Python na minha vida.&lt;br /&gt;&lt;br /&gt;Continuo achando Python muito legal, mas acho que o problema é que muitos outros também, e isto tem tornado Python "a linguagem da vez" em algumas situações (muitas vezes acompanhados de Django), com trágicas consequências.&lt;br /&gt;&lt;br /&gt;Talvez seja exagero meu, mas meu ouvido já doeu bastante ao ouvir alguns escrevendo "php em Python", pessoas que não entendem nem de PHP, nem de Python, nem de Web e nem de programação em níveis mais básicos.&lt;br /&gt;&lt;br /&gt;Não estou aqui para reclamar disto, mas sim para fazer uma breve introdução à mudança - ou ao acréscimo de mais uma linguagem legal ao repertório.&lt;br /&gt;&lt;br /&gt;Ah, os posts começaram quando falei sobre minha &lt;a href="http://blog.rodolfocarvalho.net/2011/05/introducao-ao-racket-no-coding-dojo-rio.html"&gt;Introdução ao Racket&lt;/a&gt; no &lt;a href="http://dojorio.wordpress.com/"&gt;Coding Dojo Rio&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;E dentro de alguns minutos terá mais um...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/396083382034174439-5339539539514399893?l=blog.rodolfocarvalho.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.rodolfocarvalho.net/feeds/5339539539514399893/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=396083382034174439&amp;postID=5339539539514399893' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/396083382034174439/posts/default/5339539539514399893'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/396083382034174439/posts/default/5339539539514399893'/><link rel='alternate' type='text/html' href='http://blog.rodolfocarvalho.net/2011/05/mergulhando-no-racket.html' title='Mergulhando no Racket'/><author><name>Rodolfo</name><uri>http://www.blogger.com/profile/13115401885842551697</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_vI4PxbAv6pM/SJ-dzrhNvyI/AAAAAAAAAAc/dOyhjpNbx58/s1600-R/Rodolfo_safari.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-396083382034174439.post-2515931970223149586</id><published>2011-05-26T19:18:00.006-03:00</published><updated>2011-05-30T18:59:46.480-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ruby'/><category scheme='http://www.blogger.com/atom/ns#' term='boo'/><category scheme='http://www.blogger.com/atom/ns#' term='python'/><category scheme='http://www.blogger.com/atom/ns#' term='dojo'/><title type='text'>Boo não é Python</title><content type='html'>Ontem no &lt;a href="http://dojorio.org/"&gt;Coding Dojo Rio&lt;/a&gt; no Centro do Rio de Janeiro tivemos uma nova linguagem para experimentar. Em linhas gerais o dojo foi sensacional, e não só os minutos que estávamos lá programando mas também as discussões que rolaram até tarde. Cheguei a casa já eram 2:40!&lt;br /&gt;&lt;br /&gt;O problema que abordamos foi o do &lt;a href="http://dojopuzzles.com/problemas/exibe/caixa-eletronico/"&gt;Caixa Eletrônico&lt;/a&gt;. Graças ao &lt;a href="http://juanlopes.net/"&gt;Juan Lopes&lt;/a&gt; nós usamos &lt;a href="http://boo.codehaus.org/"&gt;Boo&lt;/a&gt; e um &lt;a href="http://github.com/juanplopes/dojotimer"&gt;super dojo timer&lt;/a&gt; novinho em folha. A idéia deste post é apenas discutir brevemente um aspecto da linguagem que me chamou a atenção.&lt;br /&gt;&lt;br /&gt;Portanto, que fique claro que, apesar da maior parte da sintaxe ser parecida, as linguagens não são as mesmas, e algumas escolhas semânticas e gramaticais deixam isto claro. Também não se trata do que é melhor e o que é pior.&lt;br /&gt;&lt;br /&gt;Ontem fiquei curioso pois numa parte obscura do nosso código tínhamos uma função mais ou menos assim:&lt;br /&gt;&lt;br /&gt;&lt;pre style="background-color: #f6f8ff; color: #000020; overflow:auto;"&gt;&lt;span style="color: #200080; font-weight: bold;"&gt;def&lt;/span&gt; sacar&lt;span style="color: #308080;"&gt;(&lt;/span&gt;valor&lt;span style="color: #308080;"&gt;)&lt;/span&gt;&lt;span style="color: #308080;"&gt;:&lt;/span&gt;&lt;br /&gt;    &lt;span style="color: #200080; font-weight: bold;"&gt;return&lt;/span&gt; &lt;span style="color: #308080;"&gt;(&lt;/span&gt;valor&lt;span style="color: #308080;"&gt;,&lt;/span&gt;&lt;span style="color: #308080;"&gt;)&lt;/span&gt; &lt;span style="color: #200080; font-weight: bold;"&gt;if&lt;/span&gt; valor &lt;span style="color: #200080; font-weight: bold;"&gt;in&lt;/span&gt; &lt;span style="color: #308080;"&gt;(&lt;/span&gt;&lt;span style="color: #008c00;"&gt;2&lt;/span&gt;&lt;span style="color: #308080;"&gt;,&lt;/span&gt; &lt;span style="color: #008c00;"&gt;5&lt;/span&gt;&lt;span style="color: #308080;"&gt;,&lt;/span&gt; &lt;span style="color: #008c00;"&gt;10&lt;/span&gt;&lt;span style="color: #308080;"&gt;,&lt;/span&gt; &lt;span style="color: #008c00;"&gt;20&lt;/span&gt;&lt;span style="color: #308080;"&gt;,&lt;/span&gt; &lt;span style="color: #008c00;"&gt;50&lt;/span&gt;&lt;span style="color: #308080;"&gt;,&lt;/span&gt; &lt;span style="color: #008c00;"&gt;100&lt;/span&gt;&lt;span style="color: #308080;"&gt;)&lt;/span&gt;&lt;br /&gt;    &lt;br /&gt;    &lt;span style="color: #200080; font-weight: bold;"&gt;raise&lt;/span&gt; EntradaInconsistente&lt;span style="color: #308080;"&gt;(&lt;/span&gt;&lt;span style="color: #308080;"&gt;)&lt;/span&gt; &lt;span style="color: #200080; font-weight: bold;"&gt;if&lt;/span&gt; valor &lt;span style="color: #308080;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;=&lt;/span&gt; &lt;span style="color: #008c00;"&gt;0&lt;/span&gt;&lt;br /&gt;    &lt;br /&gt;    &lt;span style="color: #200080; font-weight: bold;"&gt;return&lt;/span&gt; &lt;span style="color: #308080;"&gt;(&lt;/span&gt;&lt;span style="color: #008c00;"&gt;20&lt;/span&gt;&lt;span style="color: #308080;"&gt;,&lt;/span&gt; &lt;span style="color: #008c00;"&gt;20&lt;/span&gt;&lt;span style="color: #308080;"&gt;)&lt;/span&gt; &lt;span style="color: #200080; font-weight: bold;"&gt;if&lt;/span&gt; valor &lt;span style="color: #308080;"&gt;=&lt;/span&gt;&lt;span style="color: #308080;"&gt;=&lt;/span&gt; &lt;span style="color: #008c00;"&gt;40&lt;/span&gt;&lt;br /&gt;    &lt;br /&gt;    &lt;span style="color: #200080; font-weight: bold;"&gt;return&lt;/span&gt; &lt;span style="color: #308080;"&gt;(&lt;/span&gt;&lt;span style="color: #008c00;"&gt;2&lt;/span&gt;&lt;span style="color: #308080;"&gt;,&lt;/span&gt;&lt;span style="color: #308080;"&gt;)&lt;/span&gt; &lt;span style="color: #308080;"&gt;+&lt;/span&gt; sacar&lt;span style="color: #308080;"&gt;(&lt;/span&gt;valor &lt;span style="color: #308080;"&gt;-&lt;/span&gt; &lt;span style="color: #008c00;"&gt;2&lt;/span&gt;&lt;span style="color: #308080;"&gt;)&lt;/span&gt; &lt;span style="color: #200080; font-weight: bold;"&gt;if&lt;/span&gt; &lt;span style="color: #308080;"&gt;(&lt;/span&gt;valor &lt;span style="color: #308080;"&gt;-&lt;/span&gt; &lt;span style="color: #008c00;"&gt;2&lt;/span&gt;&lt;span style="color: #308080;"&gt;)&lt;/span&gt; &lt;span style="color: #200080; font-weight: bold;"&gt;in&lt;/span&gt; &lt;span style="color: #308080;"&gt;(&lt;/span&gt;&lt;span style="color: #008c00;"&gt;2&lt;/span&gt;&lt;span style="color: #308080;"&gt;,&lt;/span&gt; &lt;span style="color: #008c00;"&gt;5&lt;/span&gt;&lt;span style="color: #308080;"&gt;,&lt;/span&gt; &lt;span style="color: #008c00;"&gt;10&lt;/span&gt;&lt;span style="color: #308080;"&gt;,&lt;/span&gt; &lt;span style="color: #008c00;"&gt;20&lt;/span&gt;&lt;span style="color: #308080;"&gt;,&lt;/span&gt; &lt;span style="color: #008c00;"&gt;50&lt;/span&gt;&lt;span style="color: #308080;"&gt;,&lt;/span&gt; &lt;span style="color: #008c00;"&gt;100&lt;/span&gt;&lt;span style="color: #308080;"&gt;)&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;Possívelmente não era exatamente isto, mas era algo muito parecido e equivalente. Tínhamos 4 linhas que eram &lt;i&gt;raise&lt;/i&gt; ou &lt;i&gt;return&lt;/i&gt;, seguido de um valor de retorno, seguido de um &lt;i&gt;if&lt;/i&gt; e uma condição.&lt;br /&gt;&lt;br /&gt;Não demorou para percebermos que a legibilidade estava ruim, pois para saber o que cada linha fazia era preciso ler a linha inteira. Se os &lt;i&gt;if&lt;/i&gt;'s estiverem em suas próprias linhas, fica mais fácil ler a condição e "ignorar" o bloco de código (mesmo que uma expressão curta...) que se segue.&lt;br /&gt;&lt;br /&gt;&lt;pre style="background-color: #f6f8ff; color: #000020;"&gt;&lt;span style="color: #200080; font-weight: bold;"&gt;    if&lt;/span&gt; valor &lt;span style="color: #200080; font-weight: bold;"&gt;in&lt;/span&gt; &lt;span style="color: #308080;"&gt;(&lt;/span&gt;&lt;span style="color: #008c00;"&gt;2&lt;/span&gt;&lt;span style="color: #308080;"&gt;,&lt;/span&gt; &lt;span style="color: #008c00;"&gt;5&lt;/span&gt;&lt;span style="color: #308080;"&gt;,&lt;/span&gt; &lt;span style="color: #008c00;"&gt;10&lt;/span&gt;&lt;span style="color: #308080;"&gt;,&lt;/span&gt; &lt;span style="color: #008c00;"&gt;20&lt;/span&gt;&lt;span style="color: #308080;"&gt;,&lt;/span&gt; &lt;span style="color: #008c00;"&gt;50&lt;/span&gt;&lt;span style="color: #308080;"&gt;,&lt;/span&gt; &lt;span style="color: #008c00;"&gt;100&lt;/span&gt;&lt;span style="color: #308080;"&gt;)&lt;/span&gt;&lt;span style="color: #308080;"&gt;:&lt;/span&gt;&lt;br /&gt;        &lt;span style="color: #200080; font-weight: bold;"&gt;return&lt;/span&gt; &lt;span style="color: #308080;"&gt;(&lt;/span&gt;valor&lt;span style="color: #308080;"&gt;,&lt;/span&gt;&lt;span style="color: #308080;"&gt;)&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;Mas isto pode ser considerada apenas uma questão estilistica...&lt;br /&gt;&lt;br /&gt;O ponto é que eu jurava que "&lt;span class="Apple-style-span" style="color: #000020; font-family: monospace; white-space: pre;"&gt;&lt;span style="color: #200080; font-weight: bold;"&gt;return&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="color: #000020; font-family: monospace; white-space: pre;"&gt; &lt;/span&gt;&lt;span class="Apple-style-span" style="color: #000020; font-family: monospace; white-space: pre;"&gt;&lt;span style="color: #308080;"&gt;(&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="color: #000020; font-family: monospace; white-space: pre;"&gt;&lt;span style="color: #008c00;"&gt;20&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="color: #000020; font-family: monospace; white-space: pre;"&gt;&lt;span style="color: #308080;"&gt;,&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="color: #000020; font-family: monospace; white-space: pre;"&gt; &lt;/span&gt;&lt;span class="Apple-style-span" style="color: #000020; font-family: monospace; white-space: pre;"&gt;&lt;span style="color: #008c00;"&gt;20&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="color: #000020; font-family: monospace; white-space: pre;"&gt;&lt;span style="color: #308080;"&gt;)&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="color: #000020; font-family: monospace; white-space: pre;"&gt; &lt;/span&gt;&lt;span class="Apple-style-span" style="color: #000020; font-family: monospace; white-space: pre;"&gt;&lt;span style="color: #200080; font-weight: bold;"&gt;if&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="color: #000020; font-family: monospace; white-space: pre;"&gt; valor &lt;/span&gt;&lt;span class="Apple-style-span" style="color: #000020; font-family: monospace; white-space: pre;"&gt;&lt;span style="color: #308080;"&gt;=&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="color: #000020; font-family: monospace; white-space: pre;"&gt;&lt;span style="color: #308080;"&gt;=&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="color: #000020; font-family: monospace; white-space: pre;"&gt; &lt;/span&gt;&lt;span class="Apple-style-span" style="color: #000020; font-family: monospace; white-space: pre;"&gt;&lt;span style="color: #008c00;"&gt;40&lt;/span&gt;&lt;/span&gt;" não é uma linha válida de &lt;a href="http://python.org/"&gt;Python&lt;/a&gt;! Sim, de Python... mas estávamos programando em Boo.&lt;br /&gt;&lt;br /&gt;Acabou que nós não testamos lá, e ficou o suspense. Em &lt;a href="http://www.ruby-lang.org/"&gt;Ruby&lt;/a&gt; reza a lenda que isto funciona e é super normal, mas em Python... em Python a história é outra.&lt;br /&gt;Eu fui testar agora no ipython:&lt;br /&gt;&lt;br /&gt;&lt;pre style="background-color: #f6f8ff; color: #000020; overflow:auto;"&gt;In &lt;span style="color: #308080;"&gt;[&lt;/span&gt;&lt;span style="color: #008c00;"&gt;1&lt;/span&gt;&lt;span style="color: #308080;"&gt;]&lt;/span&gt;&lt;span style="color: #308080;"&gt;:&lt;/span&gt; &lt;span style="color: #200080; font-weight: bold;"&gt;def&lt;/span&gt; foo&lt;span style="color: #308080;"&gt;(&lt;/span&gt;x&lt;span style="color: #308080;"&gt;,&lt;/span&gt; y&lt;span style="color: #308080;"&gt;)&lt;/span&gt;&lt;span style="color: #308080;"&gt;:&lt;/span&gt;&lt;br /&gt;   &lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;:&lt;/span&gt;     &lt;span style="color: #200080; font-weight: bold;"&gt;return&lt;/span&gt; &lt;span style="color: #1060b6;"&gt;"x par"&lt;/span&gt; &lt;span style="color: #200080; font-weight: bold;"&gt;if&lt;/span&gt; x&lt;span style="color: #308080;"&gt;%&lt;/span&gt;&lt;span style="color: #008c00;"&gt;2&lt;/span&gt;&lt;span style="color: #308080;"&gt;=&lt;/span&gt;&lt;span style="color: #308080;"&gt;=&lt;/span&gt;&lt;span style="color: #008c00;"&gt;0&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #308080;"&gt;-&lt;/span&gt;&lt;span style="color: #308080;"&gt;-&lt;/span&gt;&lt;span style="color: #308080;"&gt;-&lt;/span&gt;&lt;span style="color: #308080;"&gt;-&lt;/span&gt;&lt;span style="color: #308080;"&gt;-&lt;/span&gt;&lt;span style="color: #308080;"&gt;-&lt;/span&gt;&lt;span style="color: #308080;"&gt;-&lt;/span&gt;&lt;span style="color: #308080;"&gt;-&lt;/span&gt;&lt;span style="color: #308080;"&gt;-&lt;/span&gt;&lt;span style="color: #308080;"&gt;-&lt;/span&gt;&lt;span style="color: #308080;"&gt;-&lt;/span&gt;&lt;span style="color: #308080;"&gt;-&lt;/span&gt;&lt;span style="color: #308080;"&gt;-&lt;/span&gt;&lt;span style="color: #308080;"&gt;-&lt;/span&gt;&lt;span style="color: #308080;"&gt;-&lt;/span&gt;&lt;span style="color: #308080;"&gt;-&lt;/span&gt;&lt;span style="color: #308080;"&gt;-&lt;/span&gt;&lt;span style="color: #308080;"&gt;-&lt;/span&gt;&lt;span style="color: #308080;"&gt;-&lt;/span&gt;&lt;span style="color: #308080;"&gt;-&lt;/span&gt;&lt;span style="color: #308080;"&gt;-&lt;/span&gt;&lt;span style="color: #308080;"&gt;-&lt;/span&gt;&lt;span style="color: #308080;"&gt;-&lt;/span&gt;&lt;span style="color: #308080;"&gt;-&lt;/span&gt;&lt;span style="color: #308080;"&gt;-&lt;/span&gt;&lt;span style="color: #308080;"&gt;-&lt;/span&gt;&lt;span style="color: #308080;"&gt;-&lt;/span&gt;&lt;span style="color: #308080;"&gt;-&lt;/span&gt;&lt;span style="color: #308080;"&gt;-&lt;/span&gt;&lt;span style="color: #308080;"&gt;-&lt;/span&gt;&lt;span style="color: #308080;"&gt;-&lt;/span&gt;&lt;span style="color: #308080;"&gt;-&lt;/span&gt;&lt;span style="color: #308080;"&gt;-&lt;/span&gt;&lt;span style="color: #308080;"&gt;-&lt;/span&gt;&lt;span style="color: #308080;"&gt;-&lt;/span&gt;&lt;span style="color: #308080;"&gt;-&lt;/span&gt;&lt;span style="color: #308080;"&gt;-&lt;/span&gt;&lt;span style="color: #308080;"&gt;-&lt;/span&gt;&lt;span style="color: #308080;"&gt;-&lt;/span&gt;&lt;span style="color: #308080;"&gt;-&lt;/span&gt;&lt;span style="color: #308080;"&gt;-&lt;/span&gt;&lt;span style="color: #308080;"&gt;-&lt;/span&gt;&lt;span style="color: #308080;"&gt;-&lt;/span&gt;&lt;span style="color: #308080;"&gt;-&lt;/span&gt;&lt;span style="color: #308080;"&gt;-&lt;/span&gt;&lt;span style="color: #308080;"&gt;-&lt;/span&gt;&lt;span style="color: #308080;"&gt;-&lt;/span&gt;&lt;span style="color: #308080;"&gt;-&lt;/span&gt;&lt;span style="color: #308080;"&gt;-&lt;/span&gt;&lt;span style="color: #308080;"&gt;-&lt;/span&gt;&lt;span style="color: #308080;"&gt;-&lt;/span&gt;&lt;span style="color: #308080;"&gt;-&lt;/span&gt;&lt;span style="color: #308080;"&gt;-&lt;/span&gt;&lt;span style="color: #308080;"&gt;-&lt;/span&gt;&lt;span style="color: #308080;"&gt;-&lt;/span&gt;&lt;span style="color: #308080;"&gt;-&lt;/span&gt;&lt;span style="color: #308080;"&gt;-&lt;/span&gt;&lt;span style="color: #308080;"&gt;-&lt;/span&gt;&lt;span style="color: #308080;"&gt;-&lt;/span&gt;&lt;span style="color: #308080;"&gt;-&lt;/span&gt;&lt;br /&gt;   File &lt;span style="color: #1060b6;"&gt;"&lt;ipython console=""&gt;"&lt;/ipython&gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;,&lt;/span&gt; line &lt;span style="color: #008c00;"&gt;2&lt;/span&gt;&lt;br /&gt;     &lt;span style="color: #200080; font-weight: bold;"&gt;return&lt;/span&gt; &lt;span style="color: #1060b6;"&gt;"x par"&lt;/span&gt; &lt;span style="color: #200080; font-weight: bold;"&gt;if&lt;/span&gt; x&lt;span style="color: #308080;"&gt;%&lt;/span&gt;&lt;span style="color: #008c00;"&gt;2&lt;/span&gt;&lt;span style="color: #308080;"&gt;=&lt;/span&gt;&lt;span style="color: #308080;"&gt;=&lt;/span&gt;&lt;span style="color: #008c00;"&gt;0&lt;/span&gt;&lt;br /&gt;                             &lt;span style="color: #308080;"&gt;^&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #e34adc;"&gt;SyntaxError&lt;/span&gt;&lt;span style="color: #308080;"&gt;:&lt;/span&gt; invalid syntax&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;In &lt;span style="color: #308080;"&gt;[&lt;/span&gt;&lt;span style="color: #008c00;"&gt;3&lt;/span&gt;&lt;span style="color: #308080;"&gt;]&lt;/span&gt;&lt;span style="color: #308080;"&gt;:&lt;/span&gt; &lt;span style="color: #200080; font-weight: bold;"&gt;def&lt;/span&gt; foo&lt;span style="color: #308080;"&gt;(&lt;/span&gt;x&lt;span style="color: #308080;"&gt;,&lt;/span&gt; y&lt;span style="color: #308080;"&gt;)&lt;/span&gt;&lt;span style="color: #308080;"&gt;:&lt;/span&gt;&lt;br /&gt;    &lt;span style="color: #200080; font-weight: bold;"&gt;return&lt;/span&gt; &lt;span style="color: #1060b6;"&gt;"x par"&lt;/span&gt; &lt;span style="color: #200080; font-weight: bold;"&gt;if&lt;/span&gt; &lt;span style="color: #308080;"&gt;(&lt;/span&gt;x&lt;span style="color: #308080;"&gt;%&lt;/span&gt;&lt;span style="color: #008c00;"&gt;2&lt;/span&gt;&lt;span style="color: #308080;"&gt;=&lt;/span&gt;&lt;span style="color: #308080;"&gt;=&lt;/span&gt;&lt;span style="color: #008c00;"&gt;0&lt;/span&gt;&lt;span style="color: #308080;"&gt;)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #308080;"&gt;-&lt;/span&gt;&lt;span style="color: #308080;"&gt;-&lt;/span&gt;&lt;span style="color: #308080;"&gt;-&lt;/span&gt;&lt;span style="color: #308080;"&gt;-&lt;/span&gt;&lt;span style="color: #308080;"&gt;-&lt;/span&gt;&lt;span style="color: #308080;"&gt;-&lt;/span&gt;&lt;span style="color: #308080;"&gt;-&lt;/span&gt;&lt;span style="color: #308080;"&gt;-&lt;/span&gt;&lt;span style="color: #308080;"&gt;-&lt;/span&gt;&lt;span style="color: #308080;"&gt;-&lt;/span&gt;&lt;span style="color: #308080;"&gt;-&lt;/span&gt;&lt;span style="color: #308080;"&gt;-&lt;/span&gt;&lt;span style="color: #308080;"&gt;-&lt;/span&gt;&lt;span style="color: #308080;"&gt;-&lt;/span&gt;&lt;span style="color: #308080;"&gt;-&lt;/span&gt;&lt;span style="color: #308080;"&gt;-&lt;/span&gt;&lt;span style="color: #308080;"&gt;-&lt;/span&gt;&lt;span style="color: #308080;"&gt;-&lt;/span&gt;&lt;span style="color: #308080;"&gt;-&lt;/span&gt;&lt;span style="color: #308080;"&gt;-&lt;/span&gt;&lt;span style="color: #308080;"&gt;-&lt;/span&gt;&lt;span style="color: #308080;"&gt;-&lt;/span&gt;&lt;span style="color: #308080;"&gt;-&lt;/span&gt;&lt;span style="color: #308080;"&gt;-&lt;/span&gt;&lt;span style="color: #308080;"&gt;-&lt;/span&gt;&lt;span style="color: #308080;"&gt;-&lt;/span&gt;&lt;span style="color: #308080;"&gt;-&lt;/span&gt;&lt;span style="color: #308080;"&gt;-&lt;/span&gt;&lt;span style="color: #308080;"&gt;-&lt;/span&gt;&lt;span style="color: #308080;"&gt;-&lt;/span&gt;&lt;span style="color: #308080;"&gt;-&lt;/span&gt;&lt;span style="color: #308080;"&gt;-&lt;/span&gt;&lt;span style="color: #308080;"&gt;-&lt;/span&gt;&lt;span style="color: #308080;"&gt;-&lt;/span&gt;&lt;span style="color: #308080;"&gt;-&lt;/span&gt;&lt;span style="color: #308080;"&gt;-&lt;/span&gt;&lt;span style="color: #308080;"&gt;-&lt;/span&gt;&lt;span style="color: #308080;"&gt;-&lt;/span&gt;&lt;span style="color: #308080;"&gt;-&lt;/span&gt;&lt;span style="color: #308080;"&gt;-&lt;/span&gt;&lt;span style="color: #308080;"&gt;-&lt;/span&gt;&lt;span style="color: #308080;"&gt;-&lt;/span&gt;&lt;span style="color: #308080;"&gt;-&lt;/span&gt;&lt;span style="color: #308080;"&gt;-&lt;/span&gt;&lt;span style="color: #308080;"&gt;-&lt;/span&gt;&lt;span style="color: #308080;"&gt;-&lt;/span&gt;&lt;span style="color: #308080;"&gt;-&lt;/span&gt;&lt;span style="color: #308080;"&gt;-&lt;/span&gt;&lt;span style="color: #308080;"&gt;-&lt;/span&gt;&lt;span style="color: #308080;"&gt;-&lt;/span&gt;&lt;span style="color: #308080;"&gt;-&lt;/span&gt;&lt;span style="color: #308080;"&gt;-&lt;/span&gt;&lt;span style="color: #308080;"&gt;-&lt;/span&gt;&lt;span style="color: #308080;"&gt;-&lt;/span&gt;&lt;span style="color: #308080;"&gt;-&lt;/span&gt;&lt;span style="color: #308080;"&gt;-&lt;/span&gt;&lt;span style="color: #308080;"&gt;-&lt;/span&gt;&lt;span style="color: #308080;"&gt;-&lt;/span&gt;&lt;span style="color: #308080;"&gt;-&lt;/span&gt;&lt;span style="color: #308080;"&gt;-&lt;/span&gt;&lt;br /&gt;   File &lt;span style="color: #1060b6;"&gt;"&lt;ipython console=""&gt;"&lt;/ipython&gt;&lt;/span&gt;&lt;span style="color: #308080;"&gt;,&lt;/span&gt; line &lt;span style="color: #008c00;"&gt;2&lt;/span&gt;&lt;br /&gt;     &lt;span style="color: #200080; font-weight: bold;"&gt;return&lt;/span&gt; &lt;span style="color: #1060b6;"&gt;"x par"&lt;/span&gt; &lt;span style="color: #200080; font-weight: bold;"&gt;if&lt;/span&gt; &lt;span style="color: #308080;"&gt;(&lt;/span&gt;x&lt;span style="color: #308080;"&gt;%&lt;/span&gt;&lt;span style="color: #008c00;"&gt;2&lt;/span&gt;&lt;span style="color: #308080;"&gt;=&lt;/span&gt;&lt;span style="color: #308080;"&gt;=&lt;/span&gt;&lt;span style="color: #008c00;"&gt;0&lt;/span&gt;&lt;span style="color: #308080;"&gt;)&lt;/span&gt;&lt;br /&gt;                               &lt;span style="color: #308080;"&gt;^&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #e34adc;"&gt;SyntaxError&lt;/span&gt;&lt;span style="color: #308080;"&gt;:&lt;/span&gt; invalid syntax&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;In &lt;span style="color: #308080;"&gt;[&lt;/span&gt;&lt;span style="color: #008c00;"&gt;5&lt;/span&gt;&lt;span style="color: #308080;"&gt;]&lt;/span&gt;&lt;span style="color: #308080;"&gt;:&lt;/span&gt; &lt;span style="color: #200080; font-weight: bold;"&gt;def&lt;/span&gt; foo&lt;span style="color: #308080;"&gt;(&lt;/span&gt;x&lt;span style="color: #308080;"&gt;,&lt;/span&gt; y&lt;span style="color: #308080;"&gt;)&lt;/span&gt;&lt;span style="color: #308080;"&gt;:&lt;/span&gt;&lt;br /&gt;    &lt;span style="color: #200080; font-weight: bold;"&gt;return&lt;/span&gt; &lt;span style="color: #1060b6;"&gt;"x par"&lt;/span&gt; &lt;span style="color: #200080; font-weight: bold;"&gt;if&lt;/span&gt; &lt;span style="color: #308080;"&gt;(&lt;/span&gt;x&lt;span style="color: #308080;"&gt;%&lt;/span&gt;&lt;span style="color: #008c00;"&gt;2&lt;/span&gt;&lt;span style="color: #308080;"&gt;=&lt;/span&gt;&lt;span style="color: #308080;"&gt;=&lt;/span&gt;&lt;span style="color: #008c00;"&gt;0&lt;/span&gt;&lt;span style="color: #308080;"&gt;)&lt;/span&gt; &lt;span style="color: #200080; font-weight: bold;"&gt;else&lt;/span&gt; &lt;span style="color: #008c00;"&gt;0&lt;/span&gt;&lt;br /&gt;   &lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;.&lt;/span&gt;&lt;span style="color: #308080;"&gt;:&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;E foram confirmadas minhas expectativas de que isso não funciona em Python :D&lt;br /&gt;&lt;br /&gt;Tanto &lt;i&gt;return&lt;/i&gt; quanto &lt;i&gt;raise&lt;/i&gt;&amp;nbsp;são palavras-chave que formam gramaticalmente uma declaração (&lt;i&gt;statement&lt;/i&gt;) em Python. E a declaração é "&lt;span class="Apple-style-span" style="-webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px; color: #000020; font-family: monospace; white-space: pre;"&gt;&lt;span style="color: #200080; font-weight: bold;"&gt;return&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="-webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px; color: #000020; font-family: monospace; white-space: pre;"&gt; truthy_value &lt;/span&gt;&lt;span class="Apple-style-span" style="-webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px; color: #000020; font-family: monospace; white-space: pre;"&gt;&lt;span style="color: #200080; font-weight: bold;"&gt;if&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="-webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px; color: #000020; font-family: monospace; white-space: pre;"&gt; condition &lt;/span&gt;&lt;span class="Apple-style-span" style="-webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px; color: #000020; font-family: monospace; white-space: pre;"&gt;&lt;span style="color: #200080; font-weight: bold;"&gt;else&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="-webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px; color: #000020; font-family: monospace; white-space: pre;"&gt; falsy_value&lt;/span&gt;", como &lt;a href="http://docs.python.org/reference/grammar.html"&gt;pode ser visto na gramática&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;A semântica quando se começa uma linha por &lt;i&gt;return&lt;/i&gt; é que a função vai retornar o que quer que seja o valor avaliado para o que vem depois da palavra-chave (a não ser claro que antes disso ocorrer uma exceção seja lançada).&lt;br /&gt;&lt;br /&gt;E é só isso...&lt;br /&gt;&lt;br /&gt;Nota: não encontrei a gramática do Boo para linkar...&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #999999;"&gt;Nota mental: espero fazer mais desses posts ao invés de mandar emails longos :D&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;hr /&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif; font-size: x-small;"&gt;[update 26/05/2011 20:08]&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;a href="http://groups.google.com/group/dojo-rio/msg/df0283315eb62824"&gt;O Juan acrescentou na lista do Dojo&lt;/a&gt; sobre a &lt;a href="http://www.cse.buffalo.edu/~regan/cse305/RubyBNF.pdf"&gt;gramática de Ruby&lt;/a&gt;:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;STMT : STMT if EXPR&lt;br /&gt;STMT : EXPR&lt;br /&gt;EXPR : ARG&lt;br /&gt;ARG : PRIMARY&lt;br /&gt;PRIMARY : return&amp;nbsp;&lt;span style="font-family: monospace; font-size: small; white-space: pre-wrap;"&gt;[`(' [CALL_ARGS] `)']&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;E então, comparando com Python (já que eu tinha só linkado antes):&lt;br /&gt;&lt;br /&gt;&lt;pre style="background-color: #eeffcc; border-bottom-color: rgb(170, 204, 153); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: initial; border-left-style: none; border-left-width: initial; border-right-color: initial; border-right-style: none; border-right-width: initial; border-top-color: rgb(170, 204, 153); border-top-style: solid; border-top-width: 1px; color: #333333; line-height: 15px; overflow-x: auto; overflow-y: hidden; padding-bottom: 5px; padding-left: 5px; padding-right: 5px; padding-top: 5px;"&gt;return_stmt: 'return' [testlist]&lt;br /&gt;testlist: test (',' test)* [',']&lt;br /&gt;test: or_test ['if' or_test 'else' test] | lambdef&lt;/pre&gt;&lt;br /&gt;Agora só fica faltando formalizar a gramática do Boo. Fiz uma busca de novo no Google e no &lt;a href="http://boo.codehaus.org/"&gt;site oficial do Boo&lt;/a&gt;, mas não achei! Será que você tem mais sorte?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/396083382034174439-2515931970223149586?l=blog.rodolfocarvalho.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.rodolfocarvalho.net/feeds/2515931970223149586/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=396083382034174439&amp;postID=2515931970223149586' title='1 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/396083382034174439/posts/default/2515931970223149586'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/396083382034174439/posts/default/2515931970223149586'/><link rel='alternate' type='text/html' href='http://blog.rodolfocarvalho.net/2011/05/boo-nao-e-python.html' title='Boo não é Python'/><author><name>Rodolfo</name><uri>http://www.blogger.com/profile/13115401885842551697</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_vI4PxbAv6pM/SJ-dzrhNvyI/AAAAAAAAAAc/dOyhjpNbx58/s1600-R/Rodolfo_safari.png'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-396083382034174439.post-1545566495314319841</id><published>2011-05-18T16:33:00.001-03:00</published><updated>2011-05-18T18:02:22.315-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='racket'/><category scheme='http://www.blogger.com/atom/ns#' term='dojo'/><title type='text'>Introdução ao Racket no Coding Dojo Rio</title><content type='html'>Hoje no &lt;a href="http://dojorio.wordpress.com/onde/"&gt;Dojo Rio no Centro&lt;/a&gt; farei uma apresentação de introdução à linguagem &lt;a href="http://racket-lang.org/"&gt;Racket&lt;/a&gt;.&lt;br /&gt;&lt;div style="text-align: right;"&gt;&lt;/div&gt;&lt;div&gt;&lt;a href="http://upload.wikimedia.org/wikipedia/commons/e/e5/Racket_logo.png" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"&gt;&lt;img border="0" src="http://upload.wikimedia.org/wikipedia/commons/e/e5/Racket_logo.png" /&gt;&lt;/a&gt;Fiz um &lt;a href="http://dojorio.wordpress.com/2011/05/18/introducao-ao-racket/"&gt;post no blog do Dojo Rio&lt;/a&gt; e replico ele aqui:&lt;span class="Apple-style-span" style="color: #333333; font-family: Verdana; font-size: 12px; line-height: 16px;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-size: large;"&gt;O que é “Racket”?&lt;/span&gt;&lt;br /&gt;É uma linguagem relativamente nova, antes chamada PLT Scheme, que mostra sua origem em &lt;a href="http://en.wikipedia.org/wiki/Scheme_%28programming_language%29"&gt;Scheme&lt;/a&gt;, um dos dois mais conhecidos dialetos de &lt;a href="http://en.wikipedia.org/wiki/Lisp_%28programming_language%29"&gt;Lisp&lt;/a&gt; (o outro sendo &lt;a href="http://en.wikipedia.org/wiki/Common_Lisp"&gt;Common Lisp&lt;/a&gt;).&lt;br /&gt;&lt;br /&gt;Racket pode ser considerado também como uma família de linguagens, já que existem diversas sublinguagens para fazer as mais diversas coisas, como escrever documentação, apresentação de slides, ensinar programação, programação em lógica, etc.&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-size: large;"&gt;Por que esta apresentação?&lt;/span&gt;&lt;br /&gt;Já faz um tempo que queria compartilhar meu entusiasmo com programação funcional e Lisp, e por vezes pensei em levar lá pro Dojo o Common Lisp. Entretanto, a forma mais legal de trabalhar com CL seria usando o editor &lt;a href="http://en.wikipedia.org/wiki/Emacs"&gt;Emacs&lt;/a&gt; e o &lt;a href="http://en.wikipedia.org/wiki/SLIME"&gt;SLIME&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Acontece que configurar tudo isso e esperar que as pessoas consigam usar numa boa é complicado — principalmente esta segunda parte. Já basta a resistência com a sintaxe diferente e com ideias e formas de programar diferentes, ainda ter que lidar com um ambiente “hostil” certamente traria desânimo, revolta e incompreensão.&lt;br /&gt;&lt;br /&gt;Se você já está habituado a usar o Emacs, programar em qualquer dialeto de Lisp certamente vai ser “mamão-com-açúcar”!&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-size: large;"&gt;Por que Racket?&lt;/span&gt;&lt;br /&gt;Então, por que Racket? O Racket além de funcionar bem em Linux, Mac OS e Windows, vem com um ambiente de desenvolvimento, o&lt;a href="http://linguisticlogic.files.wordpress.com/2010/06/drracket.png"&gt;DrRacket&lt;/a&gt;, que torna a experiência de programar divertida e produtiva (&lt;a href="http://en.wiktionary.org/wiki/your_mileage_may_vary"&gt;ymmv&lt;/a&gt;). E mais, a documentação é muito boa, e a &lt;a href="http://racket-lang.org/community.html"&gt;comunidade&lt;/a&gt; muito receptiva (você sempre pode tirar dúvidas via &lt;a href="http://racket-lang.org/irc-chat.html"&gt;IRC&lt;/a&gt; ou &lt;a href="http://lists.racket-lang.org/"&gt;lista de emails&lt;/a&gt;).&lt;br /&gt;&lt;div class="wp-caption aligncenter" style="background-color: #f3f3f3; border: 1px solid rgb(221, 221, 221); display: block; margin: 10px auto; padding-top: 4px; text-align: center; width: 378px;"&gt;&lt;a href="http://linguisticlogic.files.wordpress.com/2010/06/drracket.png" style="color: #0066cc; text-decoration: none;"&gt;&lt;img alt="Screenshot do DrRacket" height="277" src="http://linguisticlogic.files.wordpress.com/2010/06/drracket.png?w=368&amp;amp;h=277" style="border-style: none; border-width: 0px; margin: 0px; padding: 0px;" title="DrRacket" width="368" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div class="wp-caption-text" style="font-size: 11px; line-height: 17px; margin: 0px; padding: 0px 4px 5px;"&gt;Screenshot do DrRacket&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;Racket não é só uma linguagem educacional! Também é possível fazer aplicações reais, em diversas áreas, e elas existem. Abaixo uma lista de alguns usos de Lisp/Scheme/Racket:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://lists.racket-lang.org/users/archive/2010-March/038598.html"&gt;Sources for “real-world” web applications running on plt-web-server — Reginaldo J. S. Filho&lt;/a&gt; (brasileiro!)&amp;nbsp;&lt;/li&gt;&lt;li&gt;&lt;a href="http://wiki.alu.org/Industry%20Application"&gt;Companies using Lisp or Scheme for industrial applications&lt;/a&gt; &lt;/li&gt;&lt;li&gt;&lt;a href="http://www.littlewingpinball.com/doc/en/index.html"&gt;Little Wing Pinball&lt;/a&gt; &lt;/li&gt;&lt;li&gt;&lt;a href="http://www.gameenginebook.com/gdc09-statescripting-uncharted2.pdf"&gt;State-Based Scripting in Uncharted 2 – GDC09 presentation from Naughty Dog (bonus: Scheme!)&lt;/a&gt; (&lt;a href="http://www.reddit.com/r/gamedev/comments/flbzg/statebased_scripting_in_uncharted_2_gdc09/"&gt;no Reddit&lt;/a&gt;)&amp;nbsp;&lt;/li&gt;&lt;li&gt;&lt;a href="http://gamerizon.com/games/quantz/"&gt;Quantz (game)&lt;/a&gt; &lt;/li&gt;&lt;li&gt;&lt;a href="http://hop.inria.fr/"&gt;HOP&lt;/a&gt; (&lt;a href="http://www.youtube.com/watch?v=i7bc6yiJQ0I"&gt;GoogleTechTalk “HOP: A Language for Programming the Web 2.0″&lt;/a&gt;)&amp;nbsp;&lt;/li&gt;&lt;li&gt;&lt;a href="http://smallbusiness.yahoo.com/ecommerce/"&gt;Yahoo Store&lt;/a&gt; (early version) done by &lt;a href="http://www.paulgraham.com/"&gt;Paul Graham&lt;/a&gt;;&amp;nbsp;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.reddit.com/"&gt;Reddit&lt;/a&gt; (written in PLT Scheme and then rewritten in Python);&amp;nbsp;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.ycombinator.com/"&gt;Y Combinator&lt;/a&gt; (Arc over PLT Scheme);&amp;nbsp;&lt;/li&gt;&lt;li&gt;&lt;a href="http://itunes.apple.com/app/reverso/id334979538?mt=8"&gt;Reverso&lt;/a&gt; (&lt;a href="http://blog.bastost.com/post/256927012/reverso-um-jogo-pra-iphone-feito-em-scheme"&gt;aplicação para iPhone em Scheme feita&lt;/a&gt; &lt;a href="http://www.dunasystems.com/reverso/"&gt;por um brasileiro&lt;/a&gt;!)&amp;nbsp;&lt;/li&gt;&lt;li&gt;&lt;a href="http://continue.cs.brown.edu/"&gt;Continue Conference Management&lt;/a&gt; &lt;/li&gt;&lt;li&gt;&lt;a href="http://cufp.org/"&gt;Commercial Users of Functional Programming&lt;/a&gt; &lt;/li&gt;&lt;li&gt;&lt;a href="http://getkahu.com/"&gt;Kahu&lt;/a&gt; &lt;/li&gt;&lt;li&gt;&lt;a href="http://lists.racket-lang.org/users/archive/2010-March/038469.html"&gt;Examples of Scheme (or Lisp) in real-world&lt;/a&gt; &lt;/li&gt;&lt;li&gt;…&amp;nbsp;&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/396083382034174439-1545566495314319841?l=blog.rodolfocarvalho.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.rodolfocarvalho.net/feeds/1545566495314319841/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=396083382034174439&amp;postID=1545566495314319841' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/396083382034174439/posts/default/1545566495314319841'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/396083382034174439/posts/default/1545566495314319841'/><link rel='alternate' type='text/html' href='http://blog.rodolfocarvalho.net/2011/05/introducao-ao-racket-no-coding-dojo-rio.html' title='Introdução ao Racket no Coding Dojo Rio'/><author><name>Rodolfo</name><uri>http://www.blogger.com/profile/13115401885842551697</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_vI4PxbAv6pM/SJ-dzrhNvyI/AAAAAAAAAAc/dOyhjpNbx58/s1600-R/Rodolfo_safari.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-396083382034174439.post-7271947083582776841</id><published>2011-05-03T01:03:00.000-03:00</published><updated>2011-05-03T01:03:04.536-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='dica'/><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='bash'/><category scheme='http://www.blogger.com/atom/ns#' term='ssh'/><title type='text'>Dica: como terminar uma sessão de SSH congelada</title><content type='html'>Algumas vezes por algum problema na rede ou qualquer outra coisa ficamos com o nosso terminal bloqueado por conta de uma conexão SSH morta.&lt;br /&gt;O que podemos fazer é matar o processo com um "kill" ou simplesmente fechar a janela do console (exemplo: gnome-terminal).&lt;br /&gt;&lt;br /&gt;Mas existe uma forma melhor de terminar esta sessão mal-sucedida. Basta digitar &lt;span style="background-color: #f1c232; font-style: italic;"&gt;ENTER&lt;/span&gt;, seguido de &lt;span class="Apple-style-span" style="background-color: #f1c232;"&gt;~.&lt;/span&gt;.&lt;br /&gt;Pode parecer bizarro à primeira vista, mas funciona. Você vai encerrar o SSH e voltar para o seu bash.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-qmMq5Qj_mPY/Tb9-VtWz11I/AAAAAAAAD6c/shnUAvcph8Y/s1600/screenshot-ssh.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="227" src="http://3.bp.blogspot.com/-qmMq5Qj_mPY/Tb9-VtWz11I/AAAAAAAAD6c/shnUAvcph8Y/s320/screenshot-ssh.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/396083382034174439-7271947083582776841?l=blog.rodolfocarvalho.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.rodolfocarvalho.net/feeds/7271947083582776841/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=396083382034174439&amp;postID=7271947083582776841' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/396083382034174439/posts/default/7271947083582776841'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/396083382034174439/posts/default/7271947083582776841'/><link rel='alternate' type='text/html' href='http://blog.rodolfocarvalho.net/2011/05/dica-como-terminar-uma-sessao-de-ssh.html' title='Dica: como terminar uma sessão de SSH congelada'/><author><name>Rodolfo</name><uri>http://www.blogger.com/profile/13115401885842551697</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_vI4PxbAv6pM/SJ-dzrhNvyI/AAAAAAAAAAc/dOyhjpNbx58/s1600-R/Rodolfo_safari.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/-qmMq5Qj_mPY/Tb9-VtWz11I/AAAAAAAAD6c/shnUAvcph8Y/s72-c/screenshot-ssh.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-396083382034174439.post-7417603025933440067</id><published>2011-04-21T13:57:00.000-03:00</published><updated>2011-04-21T13:57:20.047-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><category scheme='http://www.blogger.com/atom/ns#' term='hop'/><category scheme='http://www.blogger.com/atom/ns#' term='web'/><category scheme='http://www.blogger.com/atom/ns#' term='language'/><title type='text'>Lisp e o futuro da Web</title><content type='html'>&lt;div&gt;Ultimamente tenho "namorado" desenvolvimento web com &lt;a href="http://en.wikipedia.org/wiki/Common_Lisp"&gt;Common Lisp&lt;/a&gt;. Já usei &lt;a href="http://clojure.org/"&gt;Clojure&lt;/a&gt; lá na &lt;a href="http://www.intelie.com.br/"&gt;Intelie&lt;/a&gt; e foi uma experiência excelente.&lt;/div&gt;&lt;div&gt;Eis que estava assistindo a uma &lt;a href="http://www.youtube.com/watch?v=VeAdryYZ7ak"&gt;Google Tech Talk com Peter Seibel&lt;/a&gt;, o autor do &lt;a href="http://www.gigamonkeys.com/book/"&gt;Practical Common Lisp&lt;/a&gt; (&lt;a href="http://lisp-br.void.cc/index.php?n=CL.Videos"&gt;video linkado no Lisp-br&lt;/a&gt;), quando me deparei com uma outra &lt;a href="http://www.youtube.com/watch?v=i7bc6yiJQ0I"&gt;Tech Talk sobre HOP, a linguagem de programação da Web 2.0, da "Web difusa"&lt;/a&gt;.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;O Google antecipa, o futuro é Lisp-based :D&lt;br /&gt;Será?&lt;br /&gt;&lt;br /&gt;&lt;a href="http://hop.inria.fr/"&gt;http://hop.inria.fr/&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;Nota: o botão de "back" do browser não funciona no site do HOP... :|&lt;br /&gt;&lt;br /&gt;[]'s&lt;br /&gt;&lt;br /&gt;Rodolfo Carvalho&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/396083382034174439-7417603025933440067?l=blog.rodolfocarvalho.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.rodolfocarvalho.net/feeds/7417603025933440067/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=396083382034174439&amp;postID=7417603025933440067' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/396083382034174439/posts/default/7417603025933440067'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/396083382034174439/posts/default/7417603025933440067'/><link rel='alternate' type='text/html' href='http://blog.rodolfocarvalho.net/2011/04/lisp-e-o-futuro-da-web.html' title='Lisp e o futuro da Web'/><author><name>Rodolfo</name><uri>http://www.blogger.com/profile/13115401885842551697</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_vI4PxbAv6pM/SJ-dzrhNvyI/AAAAAAAAAAc/dOyhjpNbx58/s1600-R/Rodolfo_safari.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-396083382034174439.post-7199427559653240542</id><published>2011-04-19T14:43:00.002-03:00</published><updated>2011-04-19T14:48:48.329-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='smallacts'/><title type='text'>Small Acts Manifesto</title><content type='html'>Vou fazer um pequeno ato agora. Espero ajudar a divulgar o &lt;a href="http://smallactsmanifesto.org/"&gt;Small Acts Manifesto&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Participe e divulgue você também:&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-tbFeWc2R8nM/Ta3Jla2-2mI/AAAAAAAAD6U/bag7fWTY320/s1600/automotivator.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="400" src="http://4.bp.blogspot.com/-tbFeWc2R8nM/Ta3Jla2-2mI/AAAAAAAAD6U/bag7fWTY320/s400/automotivator.jpg" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;span class="Apple-style-span" style="color: #666666; font-size: x-small;"&gt;&lt;i&gt;Via:&amp;nbsp;&lt;a href="http://wigflip.com/automotivator/"&gt;http://wigflip.com/automotivator/&lt;/a&gt;&lt;/i&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/396083382034174439-7199427559653240542?l=blog.rodolfocarvalho.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.rodolfocarvalho.net/feeds/7199427559653240542/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=396083382034174439&amp;postID=7199427559653240542' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/396083382034174439/posts/default/7199427559653240542'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/396083382034174439/posts/default/7199427559653240542'/><link rel='alternate' type='text/html' href='http://blog.rodolfocarvalho.net/2011/04/small-acts-manifesto.html' title='Small Acts Manifesto'/><author><name>Rodolfo</name><uri>http://www.blogger.com/profile/13115401885842551697</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_vI4PxbAv6pM/SJ-dzrhNvyI/AAAAAAAAAAc/dOyhjpNbx58/s1600-R/Rodolfo_safari.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/-tbFeWc2R8nM/Ta3Jla2-2mI/AAAAAAAAD6U/bag7fWTY320/s72-c/automotivator.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-396083382034174439.post-2527176889368424652</id><published>2011-03-19T16:57:00.000-03:00</published><updated>2011-03-19T16:57:26.756-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ubuntu'/><title type='text'>Como desligar o monitor do seu notebook com Ubuntu</title><content type='html'>Se você quer desligar o monitor sem ter que suspender ou desligar ou fechar a tampa do seu notebook, aqui está a solução:&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse; font-family: Tahoma, Sans, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 18px;"&gt;$ sleep 1 &amp;amp;&amp;amp; xset dpms force off&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse; font-family: Tahoma, Sans, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 18px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: Tahoma, Sans, Arial, Helvetica, sans-serif; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse; line-height: 18px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: Tahoma, Sans, Arial, Helvetica, sans-serif; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse; line-height: 18px;"&gt;O monitor será desligado. Para religar, basta mover o mouse ou apertar qualquer tecla.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: Tahoma, Sans, Arial, Helvetica, sans-serif; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse; line-height: 18px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: Tahoma, Sans, Arial, Helvetica, sans-serif; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse; line-height: 18px;"&gt;Funcionou pra mim, espero que seja útil pra você também!&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/396083382034174439-2527176889368424652?l=blog.rodolfocarvalho.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.rodolfocarvalho.net/feeds/2527176889368424652/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=396083382034174439&amp;postID=2527176889368424652' title='2 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/396083382034174439/posts/default/2527176889368424652'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/396083382034174439/posts/default/2527176889368424652'/><link rel='alternate' type='text/html' href='http://blog.rodolfocarvalho.net/2011/03/como-desligar-o-monitor-do-seu-notebook.html' title='Como desligar o monitor do seu notebook com Ubuntu'/><author><name>Rodolfo</name><uri>http://www.blogger.com/profile/13115401885842551697</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_vI4PxbAv6pM/SJ-dzrhNvyI/AAAAAAAAAAc/dOyhjpNbx58/s1600-R/Rodolfo_safari.png'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-396083382034174439.post-6820072955646382394</id><published>2010-12-11T18:10:00.000-02:00</published><updated>2010-12-11T18:10:52.996-02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ufrj'/><category scheme='http://www.blogger.com/atom/ns#' term='tor'/><title type='text'>Tor Project e Sistemas de Anonimato</title><content type='html'>Fiz um trabalho sobre o &lt;a href="http://www.rodolfocarvalho.net/tor"&gt;Tor Project e Sistemas de Anonimato&lt;/a&gt; para o curso de Redes na UFRJ.&lt;br /&gt;Apresentei o trabalho no dia 1 de dezembro, com uma boa sessão &lt;i&gt;hands on&lt;/i&gt;.&lt;br /&gt;Depois da solicitação de um amigo, me dei o "trabalho" de colocar aqui no meu site.&lt;br /&gt;&lt;br /&gt;Eu deveria compartilhar mais conteúdo que eu produzi nestes anos de universidade...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/396083382034174439-6820072955646382394?l=blog.rodolfocarvalho.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.rodolfocarvalho.net/feeds/6820072955646382394/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=396083382034174439&amp;postID=6820072955646382394' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/396083382034174439/posts/default/6820072955646382394'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/396083382034174439/posts/default/6820072955646382394'/><link rel='alternate' type='text/html' href='http://blog.rodolfocarvalho.net/2010/12/tor-project-e-sistemas-de-anonimato.html' title='Tor Project e Sistemas de Anonimato'/><author><name>Rodolfo</name><uri>http://www.blogger.com/profile/13115401885842551697</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_vI4PxbAv6pM/SJ-dzrhNvyI/AAAAAAAAAAc/dOyhjpNbx58/s1600-R/Rodolfo_safari.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-396083382034174439.post-7116260503271956159</id><published>2010-12-02T02:06:00.000-02:00</published><updated>2010-12-02T02:06:26.377-02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ufrj'/><title type='text'>Reciclagem de monitor CRT</title><content type='html'>Visto nesta quarta no Grêmio da COPPE, restaurante na UFRJ.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_vI4PxbAv6pM/TPca4O0Qj1I/AAAAAAAAD38/ttVTCz3YgOA/s1600/Telefon%2528429%2529.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="640" src="http://1.bp.blogspot.com/_vI4PxbAv6pM/TPca4O0Qj1I/AAAAAAAAD38/ttVTCz3YgOA/s640/Telefon%2528429%2529.jpg" width="480" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;E tinham mais 2 ou &amp;nbsp;3 desses.... O que será que vão fazer com monitores LCD?&lt;br /&gt;E o que será que fizeram com os tubos de raios catódicos? Será um novo mega acelerador de partículas?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/396083382034174439-7116260503271956159?l=blog.rodolfocarvalho.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.rodolfocarvalho.net/feeds/7116260503271956159/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=396083382034174439&amp;postID=7116260503271956159' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/396083382034174439/posts/default/7116260503271956159'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/396083382034174439/posts/default/7116260503271956159'/><link rel='alternate' type='text/html' href='http://blog.rodolfocarvalho.net/2010/12/reciclagem-de-monitor-crt.html' title='Reciclagem de monitor CRT'/><author><name>Rodolfo</name><uri>http://www.blogger.com/profile/13115401885842551697</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_vI4PxbAv6pM/SJ-dzrhNvyI/AAAAAAAAAAc/dOyhjpNbx58/s1600-R/Rodolfo_safari.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_vI4PxbAv6pM/TPca4O0Qj1I/AAAAAAAAD38/ttVTCz3YgOA/s72-c/Telefon%2528429%2529.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-396083382034174439.post-2685559257865334490</id><published>2010-11-27T16:59:00.001-02:00</published><updated>2011-09-02T19:01:11.316-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='clojure'/><title type='text'>Paralelismo em Clojure: Threadpool produtor - consumidor</title><content type='html'>Ontem fiz uma pequena implementação rascunho de uma fila consumida por threads de processamento em &lt;a href="http://clojure.org/"&gt;Clojure&lt;/a&gt;.&lt;br /&gt;Eu havia feito algo similar em Python para &lt;a href="http://blog.rodolfocarvalho.net/2010/11/criando-uma-conta-no-twitter.html"&gt;encontrar nomes de usuário disponíveis no Twitter&lt;/a&gt;.&lt;br /&gt;Tive dificuldade em encontrar uma forma canônica de fazer isso, sem querer me meter muito no mundo Java.&lt;br /&gt;&lt;br /&gt;Por fim deixo o código aqui como lembrança do meu feito.&lt;br /&gt;&lt;br /&gt;(def *mul* 1)&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &lt;br /&gt;(defn slow-task [v] (Thread/sleep (* @#'*mul* v)) v)&lt;br /&gt;&lt;br /&gt;(def history (ref []))&lt;br /&gt;&lt;br /&gt;(defn init-items [stream]&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;(let [items-stream (ref stream)]&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;(fn get-item []&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;(dosync&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;(let [f (first @items-stream)]&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;(alter history conj [(count @items-stream) f])&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;(alter items-stream rest)&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;f)))))&lt;br /&gt;&lt;br /&gt;(defn worker []&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;(doall&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;(for [x (repeatedly get-item) :while x]&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;(try&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;(slow-task x)&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;(catch Exception _ :put-item-back-to-queue)))))&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &lt;br /&gt;(defn process-all [n-workers]&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;(doall&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;(for [x (range n-workers)]&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;(future (worker)))))&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &lt;br /&gt;(defn main [n-tasks n-workers time-mult]&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;; set multiplier for sleep&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;(def *mul* time-mult)&lt;br /&gt;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;; clear history&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;(dosync (alter history empty))&lt;br /&gt;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;; set number of tasks to process&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;(def get-item (init-items (take n-tasks (cycle [1 7 2 3]))))&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;(sort-by (fn [[k v]] k) (doall (into [] (map (fn [T] [(reduce + T) T]) (time (doall (map deref (process-all n-workers)))))))))&lt;br /&gt;&lt;br /&gt;(main 100 20 100)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;;------ alternativa ainda não explorada --------&lt;br /&gt;(def producer (seque 1 (cycle (range 10))))&lt;br /&gt;&lt;br /&gt;(doseq [o (take 10 producer)]&lt;br /&gt;&amp;nbsp;&amp;nbsp;(println "consumer:" o)&lt;br /&gt;&amp;nbsp;&amp;nbsp;(Thread/sleep 1000))&lt;br /&gt;&lt;br /&gt;O código acima foi fruto de uma experimentação no REPL. Acabei usando a ideia depois num de nossos projetos na &lt;a href="http://www.intelie.com.br/"&gt;Intelie&lt;/a&gt;.&lt;br /&gt;Agradeço ao pessoal que postou nesta &lt;a href="http://groups.google.com/group/clojure/browse_thread/thread/51cea7e25fdfe653/82115100420cda1c#82115100420cda1c"&gt;thread do grupo de usuários de Clojure&lt;/a&gt;&amp;nbsp;e este &lt;a href="http://www.guj.com.br/posts/list/137674.java"&gt;post no guj&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/396083382034174439-2685559257865334490?l=blog.rodolfocarvalho.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.rodolfocarvalho.net/feeds/2685559257865334490/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=396083382034174439&amp;postID=2685559257865334490' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/396083382034174439/posts/default/2685559257865334490'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/396083382034174439/posts/default/2685559257865334490'/><link rel='alternate' type='text/html' href='http://blog.rodolfocarvalho.net/2010/11/paralelismo-em-clojure-threadpool.html' title='Paralelismo em Clojure: Threadpool produtor - consumidor'/><author><name>Rodolfo</name><uri>http://www.blogger.com/profile/13115401885842551697</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_vI4PxbAv6pM/SJ-dzrhNvyI/AAAAAAAAAAc/dOyhjpNbx58/s1600-R/Rodolfo_safari.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-396083382034174439.post-4809285877735198858</id><published>2010-11-26T16:24:00.000-02:00</published><updated>2010-11-26T16:24:35.123-02:00</updated><title type='text'>Linguagens usadas no DojoRio</title><content type='html'>Fiz uma pequena lista das linguagens que usamos em cada dojo de 2010.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;-- javascript (8) ------------------------------------------------------------&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;20100210: proxima vitima&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;20100505: romanos&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;20100519: pedra papel tesoura&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;20100602: caminho&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;20100707: reais por extenso&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;20100721: 3n+1&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;20100804: ascii&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;20100818: url rewrite&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;-- perl (1) ------------------------------------------------------------------&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;20101124: inteiros para romanos&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;-- php (4) -------------------------------------------------------------------&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;20100714: espiral&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;20100728: palindromos&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;20100811: game of life&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;20100908: cheque o xeque&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;-- python (14) ----------------------------------------------------------------&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;20100106: sql&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;20100203: tennis&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;20100224: metadojo&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;20100324: jogo da velha&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;20100428: reversi&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;20100512: automato&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;20100623: roleta romana&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;20100825: datas&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;20100929: espiral&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;20101006: espiral&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;20101013: fizzbuzz&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;20101027: espiral&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;20101103: forca&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;20101117: forca&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;-- ruby (10) ------------------------------------------------------------------&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;20100113: gols&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;20100127: abastecimento dagua&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;20100303: detetive&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;20100414: HomeRange&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;20100526: saving time&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;20100609: cheque o xeque&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;20100616: jokenpo&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;20100630: validador&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;20100915: encaixotar&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;20101020: Espiral&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;-- shell (2) -----------------------------------------------------------------&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;20100901: fizzbuzz&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;20100922: url&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;O script usado está em&amp;nbsp;&lt;a href="http://code.google.com/p/dojo-rio/source/browse/trunk/stats.py"&gt;http://code.google.com/p/dojo-rio/source/browse/trunk/stats.py&lt;/a&gt;&lt;/div&gt;&lt;div&gt;E aí, o que acham?&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/396083382034174439-4809285877735198858?l=blog.rodolfocarvalho.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.rodolfocarvalho.net/feeds/4809285877735198858/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=396083382034174439&amp;postID=4809285877735198858' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/396083382034174439/posts/default/4809285877735198858'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/396083382034174439/posts/default/4809285877735198858'/><link rel='alternate' type='text/html' href='http://blog.rodolfocarvalho.net/2010/11/linguagens-usadas-no-dojorio.html' title='Linguagens usadas no DojoRio'/><author><name>Rodolfo</name><uri>http://www.blogger.com/profile/13115401885842551697</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_vI4PxbAv6pM/SJ-dzrhNvyI/AAAAAAAAAAc/dOyhjpNbx58/s1600-R/Rodolfo_safari.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-396083382034174439.post-5310598292887824382</id><published>2010-11-26T16:10:00.002-02:00</published><updated>2010-11-26T16:13:34.973-02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='perl'/><category scheme='http://www.blogger.com/atom/ns#' term='dojo'/><title type='text'>Estou no rumo certo do TDD e Baby Steps?</title><content type='html'>Costumamos falar destes termos toda semana no &lt;a href="http://dojorio.org/"&gt;DojoRio&lt;/a&gt;, mas imagino que nem todos de fato compreendem os termos para além das traduções pro português e mais alguma idéia superficial ou distorcida do que seja.&lt;br /&gt;&lt;br /&gt;Isto não é um ataque, e sim um convite a reflexão para que cada um faça um "self-check"...&lt;br /&gt;&lt;br /&gt;E aí, será que posso melhorar a qualidade do meu código? Será que faço TDD de verdade, ou só estou enrolando ou me enganando? Esses tais passos de bebê são úteis pra mim? Estou fazendo a coisa certa?&lt;br /&gt;&lt;br /&gt;Graças ao link que o &lt;a href="http://twitter.com/claudioberrondo"&gt;Berrondo&lt;/a&gt; mandou pra lista de emails recentemente (numa retrospectiva do que rolou na última quarta), vi que o &lt;a href="http://www.aniche.com.br/"&gt;Aniche&lt;/a&gt; fez boas considerações sobre este ponto:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.aniche.com.br/2010/11/cuidado-com-seus-baby-steps/"&gt;http://www.aniche.com.br/2010/11/cuidado-com-seus-baby-steps/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Na quarta, depois do nosso randori normal de toda quarta, tivemos um kata do &lt;a href="http://www.teamware.com.br/"&gt;Juan Bernabó&lt;/a&gt; mostrando como ele ataca o problema de transformar números arábicos em romanos sem pensar! Isso mesmo, sem pensar. Sem parar de fazer o simples processo de escrever testes, identificar padrões e refatorar.&lt;br /&gt;&lt;br /&gt;Confira o resultado do kata:&lt;br /&gt;&lt;a href="http://code.google.com/p/dojo-rio/source/browse/#svn/trunk/2010/20101124 - inteiros para romanos - perl"&gt;http://code.google.com/p/dojo-rio/source/browse/#svn/trunk/2010/20101124 - inteiros para romanos - perl&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/396083382034174439-5310598292887824382?l=blog.rodolfocarvalho.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.rodolfocarvalho.net/feeds/5310598292887824382/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=396083382034174439&amp;postID=5310598292887824382' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/396083382034174439/posts/default/5310598292887824382'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/396083382034174439/posts/default/5310598292887824382'/><link rel='alternate' type='text/html' href='http://blog.rodolfocarvalho.net/2010/11/estou-no-rumo-certo-do-tdd-e-baby-steps.html' title='Estou no rumo certo do TDD e Baby Steps?'/><author><name>Rodolfo</name><uri>http://www.blogger.com/profile/13115401885842551697</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_vI4PxbAv6pM/SJ-dzrhNvyI/AAAAAAAAAAc/dOyhjpNbx58/s1600-R/Rodolfo_safari.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-396083382034174439.post-7129454072058537328</id><published>2010-11-25T13:42:00.005-02:00</published><updated>2010-12-08T19:06:11.715-02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='netbook'/><title type='text'>Vendo netbook HP Mini 210-1000EW</title><content type='html'>&lt;div style="text-align: center;"&gt;&lt;span class="Apple-style-span" style="font-size: x-large;"&gt;&lt;a href="http://netbook.rodolfocarvalho.net/"&gt;Clique aqui para dar sua oferta&amp;nbsp;netbook.rodolfocarvalho.net!&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;Pessoal,&lt;br /&gt;&lt;br /&gt;No meado de dezembro viajo para a Europa para tirar umas longas férias. Vou visitar minha namorada (que conheci no &lt;a href="http://lisboa.rodolfocarvalho.net/"&gt;intercâmbio que fiz em Lisboa&lt;/a&gt; no último ano), e aproveitar para visitar o máximo de cidades que for possível. Será Strasbourg, Frankfurt, Cracóvia, Dortmund, Bratislavia, Olomouc, etc.&lt;br /&gt;&lt;br /&gt;Vou precisar investir uma grana nessa empreitada. Com isso, meu netbook &lt;a href="http://h10025.www1.hp.com/ewfrf/wc/document?docname=c02105115&amp;amp;tmp_task=prodinfoCategory&amp;amp;lc=en&amp;amp;dlc=en&amp;amp;cc=us&amp;amp;site=null&amp;amp;key=null&amp;amp;product=4189364"&gt;HP Mini 210-1000EW&lt;/a&gt; terá pouca utilidade (largar ele aqui em casa na poeira?!). Não tenho uma &lt;a href="http://viniciusteles.com.br/"&gt;lojinha que nem o Vinícius&lt;/a&gt;, mas também quero passar pra frente esse netbook que tem menos de 3 meses de muito pouco uso.&lt;br /&gt;&lt;br /&gt;Ele é um pouco melhor do que os modelos HP Mini encontrados aqui no Brasil. Tem HD de 250 GB, 1 GB DDR2 (facilmente pode virar 2GB), bastante compacto com tela de 10.1" e resolução 1024x600, bluetooth, wifi, leitor de cartões 5x1, câmera, e o melhor é a bateria de 6 células que dura de verdade entre 5 e 6 horas.&lt;br /&gt;O teclado é US (não tem ç), e é com as teclas espaçadas como nos Macs. Tem também um leitor de SIM card que permite usar para conectar à Internet com 3G.&lt;br /&gt;&lt;br /&gt;Além de ser pequeno e fácil de carregar, sua autonomia permite até que você saia de casa e não leve o carregador! Mas se quiser levar, ele também é bem pequeno e leve.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://www.ipjornal.com/wp-content/uploads/2010/01/hp-mini-atom-netbooks-450.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://www.ipjornal.com/wp-content/uploads/2010/01/hp-mini-atom-netbooks-450.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://farm3.static.flickr.com/2737/4237030529_0d83cffa26.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="272" src="http://farm3.static.flickr.com/2737/4237030529_0d83cffa26.jpg" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;br /&gt;Este netbook tem um mini sistema operacional chamado HP Quick  Web que boota em poucos segundos e permite ouvir músicas, ver fotos,  navegar na internet, ler email, tudo sem esperar o boot do Windows ou outro sistema  operacional.&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://www.tecnodrop.com/wp-content/uploads/2008/10/hp_mini_1000_com_linux_mie.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="230" src="http://www.tecnodrop.com/wp-content/uploads/2008/10/hp_mini_1000_com_linux_mie.jpg" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="position: relative; text-align: center;"&gt;Veja as fotos do HP Mini que pode ser seu&lt;/div&gt;&lt;table style="margin: auto; width: 194px;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td align="center" style="background: url(http://picasaweb.google.com/s/c/transparent_album_background.gif) no-repeat left; height: 194px;"&gt;&lt;a href="http://picasaweb.google.com/rhcarvalho/HPMini2101000EW?authkey=Gv1sRgCNjdhJrA55T_5QE&amp;amp;feat=embedwebsite"&gt;&lt;img height="160" src="http://lh4.ggpht.com/_vI4PxbAv6pM/TO59pNZ2RmE/AAAAAAAAD2Y/4h2YtiYf48E/s160-c/HPMini2101000EW.jpg" style="margin: 1px 0 0 4px;" width="160" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="font-family: arial,sans-serif; font-size: 11px; text-align: center;"&gt;&lt;a href="http://picasaweb.google.com/rhcarvalho/HPMini2101000EW?authkey=Gv1sRgCNjdhJrA55T_5QE&amp;amp;feat=embedwebsite" style="color: #4d4d4d; font-weight: bold; text-decoration: none;"&gt;HP Mini 210-1000EW&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-size: x-large;"&gt;Dê sua oferta em &lt;a href="http://netbook.rodolfocarvalho.net/"&gt;netbook.rodolfocarvalho.net&lt;/a&gt;.&lt;/span&gt;&lt;br /&gt;Para qualquer dúvida, envie um email para &lt;b&gt;netbook-arroba-rodolfocarvalho.net&lt;/b&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/396083382034174439-7129454072058537328?l=blog.rodolfocarvalho.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.rodolfocarvalho.net/feeds/7129454072058537328/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=396083382034174439&amp;postID=7129454072058537328' title='1 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/396083382034174439/posts/default/7129454072058537328'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/396083382034174439/posts/default/7129454072058537328'/><link rel='alternate' type='text/html' href='http://blog.rodolfocarvalho.net/2010/11/vendo-netbook-hp-mini-210-1000ew.html' title='Vendo netbook HP Mini 210-1000EW'/><author><name>Rodolfo</name><uri>http://www.blogger.com/profile/13115401885842551697</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_vI4PxbAv6pM/SJ-dzrhNvyI/AAAAAAAAAAc/dOyhjpNbx58/s1600-R/Rodolfo_safari.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://farm3.static.flickr.com/2737/4237030529_0d83cffa26_t.jpg' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-396083382034174439.post-5550430033239972252</id><published>2010-11-21T03:06:00.000-02:00</published><updated>2010-11-21T03:06:35.609-02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='books'/><title type='text'>Leituras</title><content type='html'>Estou lendo:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;&lt;a href="http://apress.com/book/view/1430272317"&gt;Practical Clojure&lt;/a&gt; (parei um pouco além da metade)&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.cs.utexas.edu/users/EWD/transcriptions/EWD10xx/EWD1036.html"&gt;On the cruelty of really teaching computing science&lt;/a&gt;&amp;nbsp;(há um bom tempo pra começar, mas agora com PDF no celular fica mais fácil...)&lt;/li&gt;&lt;li&gt;&lt;a href="http://crushitbook.com/"&gt;Crush it&lt;/a&gt; (obrigado &lt;a href="http://twitter.com/israelt"&gt;@Israel&lt;/a&gt;!)&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.paulgraham.com/onlisp.html"&gt;On Lisp&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://landoflisp.com/"&gt;Land of Lisp&lt;/a&gt;&amp;nbsp;(excelente)&lt;/li&gt;&lt;li&gt;&lt;a href="http://mitpress.mit.edu/sicp/"&gt;Structure and Interpretation of Computer Programs&lt;/a&gt; (leitura obrigatória... estou començando agora, depois de muito tempo que ficou na fila... mais uma vez, leitura no celular!)&lt;/li&gt;&lt;li&gt;&lt;a href="http://en.wikipedia.org/wiki/The_Moon_Is_a_Harsh_Mistress"&gt;The Moon Is a Harsh Mistress&lt;/a&gt; (ainda pra começar... desisti de ouvir o audiobook)&lt;/li&gt;&lt;/ol&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Tem mais coisa que vai surgindo... mas esta foi a listinha que enviei num email outro dia :D&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/396083382034174439-5550430033239972252?l=blog.rodolfocarvalho.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.rodolfocarvalho.net/feeds/5550430033239972252/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=396083382034174439&amp;postID=5550430033239972252' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/396083382034174439/posts/default/5550430033239972252'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/396083382034174439/posts/default/5550430033239972252'/><link rel='alternate' type='text/html' href='http://blog.rodolfocarvalho.net/2010/11/leituras.html' title='Leituras'/><author><name>Rodolfo</name><uri>http://www.blogger.com/profile/13115401885842551697</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_vI4PxbAv6pM/SJ-dzrhNvyI/AAAAAAAAAAc/dOyhjpNbx58/s1600-R/Rodolfo_safari.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-396083382034174439.post-1060402201244038251</id><published>2010-11-21T02:32:00.000-02:00</published><updated>2010-11-21T02:32:07.752-02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='python'/><category scheme='http://www.blogger.com/atom/ns#' term='twitter'/><title type='text'>Criando uma conta no Twitter</title><content type='html'>Tem sido difícil tirar um tempinho para blogar. Estes dias estou lendo &lt;a href="http://crushitbook.com/"&gt;um livro&lt;/a&gt; que o &lt;a href="http://mudadeideia.com.br/"&gt;Israel&lt;/a&gt; me emprestou, e finalmente de alguma forma me convenci a criar uma conta no &lt;a href="http://twitter.com/"&gt;Twitter&lt;/a&gt;. Não para ficar perdendo meu tempo falando onde estou, ou que a pizza chegou atrasada, ou que isso ou aquilo. O interesse é apenas "educacional", já que a plataforma é de fato interessante.&lt;br /&gt;&lt;br /&gt;É claro, entrar no jogo nesta altura do campeonato não é nada fácil... Opções como "rhcarvalho" ou "rodolfocarvalho" já foram tomadas meses ou anos atrás. E já que iria ficar com um nome de usuário pouco significativo, resolvi que este nome deveria ser curto.&lt;br /&gt;&lt;br /&gt;Foi fácil perceber que todos os nomes com apenas 1 caracter já existiam. Com exceção do "i", mas mesmo assim não consegui criar um conta com o nome de usuário "i".&lt;br /&gt;&lt;br /&gt;Ontem acabei desistindo de criar a tal conta. E hoje, sábado, escrevi um pequeno script em &lt;a href="http://python.org/"&gt;python&lt;/a&gt; para verificar todos os nomes possíveis com 2 ou 3 letras que ainda estivessem disponíveis.&lt;br /&gt;&lt;br /&gt;Descobri que nada seria possível com 2 letras, e existiam 3112 opções com 3 letras. Destas, 1 era composta apenas por dígitos, e 5 eram compostas apenas por letras.&lt;br /&gt;As contas compostas apenas por letras eram:&amp;nbsp;['xjv', 'txp', 'dzz', 'qfw', 'hqc']&lt;br /&gt;Destas, nenhuma me interessa...&lt;br /&gt;&lt;br /&gt;Mas o número... o número com 3 dígitos é a minha nova conta no Twitter! &lt;a href="http://twitter.com/201"&gt;@201&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://en.wikipedia.org/wiki/201_(number)"&gt;201 é um número bacana&lt;/a&gt;!&lt;br /&gt;&lt;br /&gt;Quanto ao script, usei meu &lt;a href="https://code.launchpad.net/~rhcarvalho/+junk/eskahits"&gt;conhecimento adquirido com web crawling multithread&lt;/a&gt;&amp;nbsp;para viabilizar um "ataque de força bruta" a API do Twitter usada na verificação de disponibilidades de nomes.&lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;Basicamente fiz um GET para cada permutação possível com letras, números e o "_" e verifiquei a resposta da requisição (em json).&lt;br /&gt;&lt;br /&gt;Tudo usando as baterias inclusas do Python....&lt;br /&gt;&lt;br /&gt;O código não está nem um pouco polido, mas pode ser útil como referência para outras aplicações.&lt;br /&gt;Se tiver interessado em ver a última versão do código, entre em contato.&lt;br /&gt;&lt;br /&gt;&lt;script src="http://pastebin.com/embed_js.php?i=YDVQScfh"&gt;&lt;/script&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/396083382034174439-1060402201244038251?l=blog.rodolfocarvalho.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.rodolfocarvalho.net/feeds/1060402201244038251/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=396083382034174439&amp;postID=1060402201244038251' title='1 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/396083382034174439/posts/default/1060402201244038251'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/396083382034174439/posts/default/1060402201244038251'/><link rel='alternate' type='text/html' href='http://blog.rodolfocarvalho.net/2010/11/criando-uma-conta-no-twitter.html' title='Criando uma conta no Twitter'/><author><name>Rodolfo</name><uri>http://www.blogger.com/profile/13115401885842551697</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_vI4PxbAv6pM/SJ-dzrhNvyI/AAAAAAAAAAc/dOyhjpNbx58/s1600-R/Rodolfo_safari.png'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-396083382034174439.post-6045607152392338321</id><published>2010-10-17T03:59:00.000-02:00</published><updated>2010-10-17T03:59:25.114-02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='inteligência computacional'/><category scheme='http://www.blogger.com/atom/ns#' term='machine learning'/><title type='text'>Aprendizado de máquina</title><content type='html'>Curso da Faculdade de Engenharia de Standford sobre Aprendizado de Máquina:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://see.stanford.edu/see/lecturelist.aspx?coll=348ca38a-3a6d-4052-937d-cb017338d7b1"&gt;http://see.stanford.edu/see/lecturelist.aspx?coll=348ca38a-3a6d-4052-937d-cb017338d7b1&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/396083382034174439-6045607152392338321?l=blog.rodolfocarvalho.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.rodolfocarvalho.net/feeds/6045607152392338321/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=396083382034174439&amp;postID=6045607152392338321' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/396083382034174439/posts/default/6045607152392338321'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/396083382034174439/posts/default/6045607152392338321'/><link rel='alternate' type='text/html' href='http://blog.rodolfocarvalho.net/2010/10/aprendizado-de-maquina.html' title='Aprendizado de máquina'/><author><name>Rodolfo</name><uri>http://www.blogger.com/profile/13115401885842551697</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_vI4PxbAv6pM/SJ-dzrhNvyI/AAAAAAAAAAc/dOyhjpNbx58/s1600-R/Rodolfo_safari.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-396083382034174439.post-8879256693764278418</id><published>2010-10-17T03:00:00.000-02:00</published><updated>2010-10-17T03:00:05.016-02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='video'/><category scheme='http://www.blogger.com/atom/ns#' term='inteligência computacional'/><category scheme='http://www.blogger.com/atom/ns#' term='semi-supervisionado'/><category scheme='http://www.blogger.com/atom/ns#' term='aula'/><category scheme='http://www.blogger.com/atom/ns#' term='aprendizado'/><title type='text'>É possível aprender com os dados?</title><content type='html'>Tudo começou com a leitura de um post num blog, sobre Online Learning [1], sugestão de um amigo do estágio.&lt;br /&gt;Nos comentários tinha um link para um site com vídeo aulas [2].&lt;br /&gt;Chegando lá, já no primeiro link no topo da página [3] me interessei e comecei a assistir uma aula de uma hora sobre aprendizado semi-supervisionado.&lt;br /&gt;&lt;br /&gt;Existem métodos de inferir/formular modelos a partir de um conjunto de dados no qual temos como entrada pares de entrada+saída. São os chamados métodos supervisionados.&lt;br /&gt;Por exemplo, podemos ter como entrada 1000 emails e saber se cada um deles é um spam ou não.&lt;br /&gt;&lt;br /&gt;Seria interessante agora inferir coisas a partir dos dados não classificados, classificação não-supervisionada.&lt;br /&gt;Este é o caso quando queremos por exemplo encontrar grupos através de uma função de similaridade.&lt;br /&gt;&lt;br /&gt;O aprendizado semi-supervisionado é quando temos alguns dados classificados, e outros não classificados. Ou seja, temos 1000 emails que sabemos distinguir entre spam e não-spam, mais digamos 9000 emails que não sabemos a classificação.&lt;br /&gt;&lt;br /&gt;Esses 9000 emails podem ajudar substancialmente a desenvolver um modelo que dado um novo email ele seja classificado corretamente como spam ou não-spam.&lt;br /&gt;Na aula são mostradas duas categorias de problemas, e que tipo de conjunto de dados funcionam bem usando as técnicas apresentadas.&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Expectation Maximization (EM) [4]&lt;/li&gt;&lt;li&gt;Co-training [5]&lt;/li&gt;&lt;/ul&gt;Essas técnicas me deram uma idéia de como posso classificar &lt;i&gt;tweets &lt;/i&gt;como positivos ou negativos a respeito de algum candidato nas eleições 2010 [6], bastando ter algumas amostras de mensagens classificadas positivamente e outras classificadas negativamente.&lt;br /&gt;&lt;br /&gt;Fica a sugestão a todos para visitar o &lt;a href="http://videolectures.net/"&gt;videolectures.net&lt;/a&gt; e passar algumas horas assistindo a aulas muito interessantes.&lt;br /&gt;&lt;br /&gt;&lt;hr /&gt;[1] &lt;a href="http://mark.reid.name/sap/online-learning-in-clojure.html"&gt;http://mark.reid.name/sap/online-learning-in-clojure.html&lt;/a&gt;&lt;br /&gt;[2] &lt;a href="http://videolectures.net/"&gt;http://videolectures.net&lt;/a&gt;&lt;br /&gt;[3] &lt;a href="http://videolectures.net/mlas06_mitchell_sla/"&gt;http://videolectures.net/mlas06_mitchell_sla/&lt;/a&gt;&lt;br /&gt;[4] &lt;a href="http://en.wikipedia.org/wiki/Expectation-maximization_algorithm"&gt;http://en.wikipedia.org/wiki/Expectation-maximization_algorithm&lt;/a&gt;&lt;br /&gt;[5]&amp;nbsp;&lt;a href="http://en.wikipedia.org/wiki/Co-training"&gt;http://en.wikipedia.org/wiki/Co-training&lt;/a&gt;&lt;br /&gt;[6]&amp;nbsp;&lt;a href="http://www.eleitorando.com.br/"&gt;http://www.eleitorando.com.br&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/396083382034174439-8879256693764278418?l=blog.rodolfocarvalho.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.rodolfocarvalho.net/feeds/8879256693764278418/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=396083382034174439&amp;postID=8879256693764278418' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/396083382034174439/posts/default/8879256693764278418'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/396083382034174439/posts/default/8879256693764278418'/><link rel='alternate' type='text/html' href='http://blog.rodolfocarvalho.net/2010/10/e-possivel-aprender-com-os-dados.html' title='É possível aprender com os dados?'/><author><name>Rodolfo</name><uri>http://www.blogger.com/profile/13115401885842551697</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_vI4PxbAv6pM/SJ-dzrhNvyI/AAAAAAAAAAc/dOyhjpNbx58/s1600-R/Rodolfo_safari.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-396083382034174439.post-4263672074196164605</id><published>2010-10-08T13:45:00.002-03:00</published><updated>2010-10-08T18:47:54.564-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='python'/><title type='text'>Dicionários recursivos</title><content type='html'>&lt;span class="Apple-style-span" style="border-collapse: collapse; font-family: arial,sans-serif; font-size: 13px;"&gt;Só por curiosidade, alguém além de mim já fez isso aqui?&lt;/span&gt;&lt;br /&gt;&lt;div style="border-collapse: collapse; font-family: arial,sans-serif; font-size: 13px;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="border-collapse: collapse; font-family: arial,sans-serif; font-size: 13px;"&gt;Digite no seu interpretador de Python:&lt;/div&gt;&lt;div style="border-collapse: collapse; font-family: arial,sans-serif; font-size: 13px;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="border-collapse: collapse; font-family: arial,sans-serif; font-size: 13px;"&gt;&lt;div&gt;d = dict()&lt;/div&gt;&lt;div&gt;d['d'] = d&lt;/div&gt;&lt;div&gt;d&lt;/div&gt;&lt;div&gt;d['d']&lt;/div&gt;&lt;div&gt;d['d']['d']&lt;/div&gt;&lt;div&gt;d = dict()&lt;/div&gt;&lt;div&gt;e = dict()&lt;/div&gt;&lt;div&gt;d['e'] = e&lt;/div&gt;&lt;div&gt;d&lt;/div&gt;&lt;div&gt;e['d'] = d&lt;/div&gt;&lt;div&gt;e&lt;/div&gt;&lt;div&gt;d&lt;/div&gt;&lt;div&gt;d['e']['e']&lt;/div&gt;&lt;div&gt;d['e']['d']&lt;/div&gt;&lt;/div&gt;&lt;div style="border-collapse: collapse; font-family: arial,sans-serif; font-size: 13px;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="border-collapse: collapse; font-family: arial,sans-serif; font-size: 13px;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="border-collapse: collapse; font-family: arial,sans-serif; font-size: 13px;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="border-collapse: collapse; font-family: arial,sans-serif; font-size: 13px;"&gt;É bem interessante ver:&lt;/div&gt;&lt;div style="border-collapse: collapse; font-family: arial,sans-serif; font-size: 13px;"&gt;&lt;div&gt;In [17]: d['e']['d']&lt;/div&gt;&lt;div&gt;Out[17]: {'e': {'d': &amp;lt;Recursion on dict with id=4321969824&amp;gt;}&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/396083382034174439-4263672074196164605?l=blog.rodolfocarvalho.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.rodolfocarvalho.net/feeds/4263672074196164605/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=396083382034174439&amp;postID=4263672074196164605' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/396083382034174439/posts/default/4263672074196164605'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/396083382034174439/posts/default/4263672074196164605'/><link rel='alternate' type='text/html' href='http://blog.rodolfocarvalho.net/2010/10/dicionarios-recursivos.html' title='Dicionários recursivos'/><author><name>Rodolfo</name><uri>http://www.blogger.com/profile/13115401885842551697</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_vI4PxbAv6pM/SJ-dzrhNvyI/AAAAAAAAAAc/dOyhjpNbx58/s1600-R/Rodolfo_safari.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-396083382034174439.post-3981241565599058890</id><published>2010-09-21T11:57:00.000-03:00</published><updated>2010-09-21T11:57:29.322-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='intelie'/><category scheme='http://www.blogger.com/atom/ns#' term='ufrj'/><category scheme='http://www.blogger.com/atom/ns#' term='portugal'/><category scheme='http://www.blogger.com/atom/ns#' term='dojo'/><title type='text'>De volta ao Brasil, e de volta a ativa...</title><content type='html'>Depois de &lt;a href="http://blog.rodolfocarvalho.net/2009/09/novo-blog-com-historias-e-relatos-da.html"&gt;11 meses&lt;/a&gt; &lt;a href="http://blog.rodolfocarvalho.net/2009/09/lisboa-portugal.html"&gt;em Portugal&lt;/a&gt; e 1,5 no Brasil como guia turístico, estou de volta.&lt;br /&gt;Ontem comecei a trabalhar na &lt;a href="http://www.intelie.com.br/"&gt;Intelie&lt;/a&gt;, que certamente será fonte de grande aprendizado e diversão.&lt;br /&gt;&lt;br /&gt;Na universidade (&lt;a href="http://www.ufrj.br/"&gt;UFRJ&lt;/a&gt;) estou fazendo disciplinas interessantes, e pretendo fazer alguns posts sobre elas.&lt;br /&gt;&lt;br /&gt;Também estou de volta ao &lt;a href="http://dojorio.org/"&gt;DojoRio&lt;/a&gt;, evento que dei início e participei sempre até minha ida para o exterior.&lt;br /&gt;E o dojo me trouxe muita satisfação. Ele cresceu para além de minhas expectativas, vários amigos estão fazendo palestras sobre o mesmo, e outras pessoas tem nos seguido e iniciado outros dojos pelo Brasil (e também pelo Rio, onde tivemos uma grande multiplicação).&lt;br /&gt;&lt;br /&gt;Amanhã estarei lá na Lapa para mais um! O endereço é&amp;nbsp;&lt;a href="http://maps.google.com.br/maps/ms?ie=UTF8&amp;amp;hl=pt-BR&amp;amp;msa=0&amp;amp;msid=102956728189295659712.00046e4a44bf38fcd912c&amp;amp;ll=-22.914197,-43.177621&amp;amp;spn=0.007787,0.013733&amp;amp;z=17"&gt;Rua Teotônio Regadas 26 sala 603 - Lapa&lt;/a&gt;, ao lado da Sala Cecília Meireles, próximo ao Metrô.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/396083382034174439-3981241565599058890?l=blog.rodolfocarvalho.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.rodolfocarvalho.net/feeds/3981241565599058890/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=396083382034174439&amp;postID=3981241565599058890' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/396083382034174439/posts/default/3981241565599058890'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/396083382034174439/posts/default/3981241565599058890'/><link rel='alternate' type='text/html' href='http://blog.rodolfocarvalho.net/2010/09/de-volta-ao-brasil-e-de-volta-ativa.html' title='De volta ao Brasil, e de volta a ativa...'/><author><name>Rodolfo</name><uri>http://www.blogger.com/profile/13115401885842551697</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_vI4PxbAv6pM/SJ-dzrhNvyI/AAAAAAAAAAc/dOyhjpNbx58/s1600-R/Rodolfo_safari.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-396083382034174439.post-3098969307618171149</id><published>2010-06-28T14:22:00.002-03:00</published><updated>2010-06-28T15:03:26.013-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='du'/><category scheme='http://www.blogger.com/atom/ns#' term='awk'/><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='bash'/><category scheme='http://www.blogger.com/atom/ns#' term='shell'/><category scheme='http://www.blogger.com/atom/ns#' term='trick'/><title type='text'>Utilização do disco usando du e awk</title><content type='html'>Hoje escrevi algumas linhas no shell para me ajudar a identificar onde estavam as coisas mais pesadas na hierarquia...&lt;br /&gt;&lt;br /&gt;Fica aqui como possível referência futura:&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Listar/calcular tamanho para 2 níveis de diretórios&amp;nbsp; &lt;/li&gt;&lt;/ul&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;du -k -d2 . | awk '{printf "%-40s %4.1f MB\n", $2, $1/1024}' | sort&lt;/div&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Ver os 15 maiores diretórios&lt;/li&gt;&lt;/ul&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;du -k * | sort -nr | head -n 15&lt;/div&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Ver apenas diretórios com mais de 1 MB&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;du -k -d3 main | awk '{ if ($1 &amp;gt;= 1024) printf "%-40s %4.1f MB\n", $2, $1/1024}' | sort&amp;nbsp;&lt;/span&gt; &lt;br /&gt;&lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;Explicações básicas:&lt;br /&gt;&lt;b&gt;du&lt;/b&gt;: mostra o espaço em disco ocupado por um arquivo/diretório.&lt;br /&gt;-k mostrar valores em KB&lt;br /&gt;-d N processar árvore de diretório N níveis&lt;br /&gt;&lt;br /&gt;&lt;b&gt;awk&lt;/b&gt;: permite fazer a magia negra. Para cada linha do input, imprimimos o nome do diretório (em $2) com uma largura de 40 caractéres (completados com espaços em branco) e o tamanho (em $1) dividido por 1024 (conversão para MB).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/396083382034174439-3098969307618171149?l=blog.rodolfocarvalho.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.rodolfocarvalho.net/feeds/3098969307618171149/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=396083382034174439&amp;postID=3098969307618171149' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/396083382034174439/posts/default/3098969307618171149'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/396083382034174439/posts/default/3098969307618171149'/><link rel='alternate' type='text/html' href='http://blog.rodolfocarvalho.net/2010/06/utilizacao-do-disco-usando-du-e-awk.html' title='Utilização do disco usando du e awk'/><author><name>Rodolfo</name><uri>http://www.blogger.com/profile/13115401885842551697</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_vI4PxbAv6pM/SJ-dzrhNvyI/AAAAAAAAAAc/dOyhjpNbx58/s1600-R/Rodolfo_safari.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-396083382034174439.post-3579830432068810</id><published>2010-06-26T20:58:00.000-03:00</published><updated>2010-06-26T20:58:25.334-03:00</updated><title type='text'>Novo layout</title><content type='html'>Sei que o blog anda abandonado... os tempos aqui em Lisboa não são convidativos a bloggar muito :D&lt;br /&gt;Infelizmente meu tempo aqui está chegando ao fim. Já não tenho mais aulas.&lt;br /&gt;&lt;br /&gt;Hoje resolvi fazer uma limpeza no visual do blog. Espero ter mais alguma novidade em breve.&lt;br /&gt;O antes e o depois:&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_vI4PxbAv6pM/TCaSItBslbI/AAAAAAAADyQ/EBmNPTja1do/s1600/Screen+shot+2010-06-27+at+12.00.26+AM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="231" src="http://3.bp.blogspot.com/_vI4PxbAv6pM/TCaSItBslbI/AAAAAAAADyQ/EBmNPTja1do/s400/Screen+shot+2010-06-27+at+12.00.26+AM.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_vI4PxbAv6pM/TCaSZCfmhtI/AAAAAAAADyY/s6eMDCQLRT0/s1600/Screen+shot+2010-06-27+at+12.50.26+AM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="232" src="http://3.bp.blogspot.com/_vI4PxbAv6pM/TCaSZCfmhtI/AAAAAAAADyY/s6eMDCQLRT0/s400/Screen+shot+2010-06-27+at+12.50.26+AM.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Optei por usar um modelo com menos cores, alarguei o espaço para as postagens, rearrumei os widgets, renomeei títulos que sugeriam o nome antigo do blog, "LifeAtMyMind". E então, estou no caminho certo?&lt;br /&gt;Gostei de ver "novidades" (que possivelmente já são bem antigas) no Blogger, como possibilidade de criar páginas fixas e mostrar só o início da postagem com um link "ler mais". Também usei o novo editor de modelo e gostei, apesar de visualmente ele ser totalmente diferente da interface padrão do Blogger.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/396083382034174439-3579830432068810?l=blog.rodolfocarvalho.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.rodolfocarvalho.net/feeds/3579830432068810/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=396083382034174439&amp;postID=3579830432068810' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/396083382034174439/posts/default/3579830432068810'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/396083382034174439/posts/default/3579830432068810'/><link rel='alternate' type='text/html' href='http://blog.rodolfocarvalho.net/2010/06/novo-layout.html' title='Novo layout'/><author><name>Rodolfo</name><uri>http://www.blogger.com/profile/13115401885842551697</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_vI4PxbAv6pM/SJ-dzrhNvyI/AAAAAAAAAAc/dOyhjpNbx58/s1600-R/Rodolfo_safari.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_vI4PxbAv6pM/TCaSItBslbI/AAAAAAAADyQ/EBmNPTja1do/s72-c/Screen+shot+2010-06-27+at+12.00.26+AM.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-396083382034174439.post-4618200349867191837</id><published>2010-04-19T11:35:00.000-03:00</published><updated>2010-04-19T11:35:22.192-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='dica'/><category scheme='http://www.blogger.com/atom/ns#' term='unix'/><title type='text'>Como encontrar arquivos usando o GNU find e ignorando alguns diretórios</title><content type='html'>&lt;div style="color: #666666;"&gt;&lt;i&gt;Esta dica foi tirada de um comentário anônimo em http://www.linux.com/archive/feed/49304.&lt;/i&gt;&lt;/div&gt;&lt;i&gt;&lt;span style="color: #666666;"&gt;Fica aqui para referência futura...&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;Algumas vezes queremos usar o GNU find para procurar por arquivos recursivamente. O problema é quando queremos excluir alguns diretórios da busca. O jeito é usar mais de uma condição. Por exemplo:&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;i&gt;find / -path '/proc'  -prune -o -path '/dev' -prune -o -name foo.txt&lt;/i&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Este comando procura por arquivos chamados "foo.txt" na raiz de sistema, ignorando tudo em /proc e /dev. O '-o' é um "ou" e o '-prune' faz com que o find ignore o caminho encontrado.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Original em inglês: &lt;br /&gt;Sometimes you may want to exclude parts of the directory tree.  It took  me a while to figure out how to do this because it isn't very intuitive.&lt;br /&gt;If  you wanted to search for foo.txt but don't want to descend  into &lt;i&gt;/proc&lt;/i&gt; or &lt;i&gt;/dev&lt;/i&gt; you can do this&lt;br /&gt;&lt;i&gt;find / -path '/proc'  -prune -o -path '/dev' -prune -o -name foo.txt&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;The '-o' means  'or', so there in this case there are three conditions, separated by  'or', which will cause find to take action. The first two is when the  path is '/proc' or '/dev' the action find will take is to prune them  from the search path.  The third condition is when the name is foo.txt.   In this case find will print, since no other action is specified.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/396083382034174439-4618200349867191837?l=blog.rodolfocarvalho.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.rodolfocarvalho.net/feeds/4618200349867191837/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=396083382034174439&amp;postID=4618200349867191837' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/396083382034174439/posts/default/4618200349867191837'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/396083382034174439/posts/default/4618200349867191837'/><link rel='alternate' type='text/html' href='http://blog.rodolfocarvalho.net/2010/04/como-encontrar-arquivos-usando-o-gnu.html' title='Como encontrar arquivos usando o GNU find e ignorando alguns diretórios'/><author><name>Rodolfo</name><uri>http://www.blogger.com/profile/13115401885842551697</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_vI4PxbAv6pM/SJ-dzrhNvyI/AAAAAAAAAAc/dOyhjpNbx58/s1600-R/Rodolfo_safari.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-396083382034174439.post-3129720853104936753</id><published>2010-01-21T19:22:00.000-02:00</published><updated>2010-01-21T19:22:17.802-02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='github'/><category scheme='http://www.blogger.com/atom/ns#' term='python'/><category scheme='http://www.blogger.com/atom/ns#' term='windows'/><category scheme='http://www.blogger.com/atom/ns#' term='mac'/><category scheme='http://www.blogger.com/atom/ns#' term='dojo'/><category scheme='http://www.blogger.com/atom/ns#' term='opensource'/><category scheme='http://www.blogger.com/atom/ns#' term='ubuntu'/><title type='text'>Sons, muitos sons! Com Python :D</title><content type='html'>Pois é, tive um dia de domingo agradável, programando!&lt;br /&gt;A turma do &lt;a href="http://dojorio.org/"&gt;Dojo Rio&lt;/a&gt; está tocando o &lt;a href="http://github.com/flavioamieiro/dojotools"&gt;projeto opensource Dojotools&lt;/a&gt; para reunir ferramentas para facilitar nossas vidas durante as sessões de &lt;a href="http://codingdojo.org/"&gt;coding dojo&lt;/a&gt;.&lt;br /&gt;&lt;strike&gt;Para dar minha pequena contribuição &lt;/strike&gt;para minha diversão, e prejuízo de meus ouvidos, passei a tarde arrumando o &lt;a href="http://github.com/rhcarvalho/sound_alarm"&gt;sound_alarm&lt;/a&gt;. Este script surgiu de diversas brincadeiras que já havia feito para reproduzir som com &lt;a href="http://www.python.org/"&gt;Python&lt;/a&gt; no Windows e no Ubuntu.&lt;br /&gt;Juntei coisas que eu já tinha, refatorei, produzi algumas "melodias" para perturbar quem se aproxima de mim, e taquei no &lt;a href="http://github.com/"&gt;github&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Ontem testei o script no Mac e não funciona. Pelo menos aqui no Macbook Pro não tem /dev/audio, e não descobri como tocar sons em diferentes frequências como consigo no Linux e Windows.&lt;br /&gt;&lt;br /&gt;Eis que se alguém tiver uma solução pro Mac OSX ela é apreciada :D&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/396083382034174439-3129720853104936753?l=blog.rodolfocarvalho.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.rodolfocarvalho.net/feeds/3129720853104936753/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=396083382034174439&amp;postID=3129720853104936753' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/396083382034174439/posts/default/3129720853104936753'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/396083382034174439/posts/default/3129720853104936753'/><link rel='alternate' type='text/html' href='http://blog.rodolfocarvalho.net/2010/01/sons-muitos-sons-com-python-d.html' title='Sons, muitos sons! Com Python :D'/><author><name>Rodolfo</name><uri>http://www.blogger.com/profile/13115401885842551697</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_vI4PxbAv6pM/SJ-dzrhNvyI/AAAAAAAAAAc/dOyhjpNbx58/s1600-R/Rodolfo_safari.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-396083382034174439.post-5225564876985580001</id><published>2009-12-10T15:53:00.000-02:00</published><updated>2009-12-10T15:53:49.475-02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='lisp'/><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='python'/><category scheme='http://www.blogger.com/atom/ns#' term='portugal'/><category scheme='http://www.blogger.com/atom/ns#' term='matlab'/><title type='text'>Novas línguas do semestre</title><content type='html'>Neste segundo semestre de 2009 inicei meu contato com diversas novas línguas e linguagens.&lt;br /&gt;Para começar, estou agora morando em Portugal, o que me deixa em contato com um português um bocado diferente do que estava acostumado no Brasil.&lt;br /&gt;&lt;br /&gt;Depois, por ter contato com amigos de diversas partes do globo, o inglês é certamente a língua que mais tenho utilizado no dia-a-dia. Para completar, tem o Polonês e o Turco, que podem parecer exóticos mas tem feito parte do meu cotidiano no momento.&lt;br /&gt;&lt;br /&gt;Mas, o que tenho feito de novo aqui em Lisboa? Só vida boa? Não, não.&lt;br /&gt;Os trabalhos da faculdade me fizeram desviar da jornada estritamente pythônica para olhar outras linguagens.&lt;br /&gt;&lt;br /&gt;No Brasil meus amigos continuam arrasando com as &lt;a href="http://dojorio.org/"&gt;super comunidades&lt;/a&gt;, &lt;a href="http://horaextra.org/"&gt;mega encontros&lt;/a&gt;, e muita agitação todos os dias da semana. Aqui, encarei um projeto de Inteligência Artificial usando LISP.&lt;br /&gt;O objetivo era resolver automaticamente instâncias do jogo &lt;a href="http://www.hidato.com/"&gt;Hidato&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Inicialmente o contato com LISP não foi muito amigável, porém com o tempo fui pegando o gosto e vi muito espaço para aprendizado com esta linguagem. Implementei meu projeto para o ambiente &lt;a href="http://www.clisp.org/"&gt;CLISP&lt;/a&gt;, e fiquei muito satisfeito pela boa velocidade com que resolvia grandes instâncias do jogo.&lt;br /&gt;&lt;br /&gt;Os pontos que me deixaram curiosos no LISP e que ainda não tive a oportunidade de brincar foi o processamento de texto, acesso a dados via Internet, e outros detalhes que não me vêm à cabeça neste momento...&lt;br /&gt;&lt;br /&gt;O lado negro foi ter que cursar Programação com Objectos usando Java, linguagem extremamente burocrática, e que nenhum conhecimento interessante me traz. É impressionante a distância entre uma idéia pra solucionar um problema e uma solução implementada em Java. Talvez os mais experientes hackers da terra do cafezinho vão discordar desse meu desabafo sem código, mas aqui o objetivo é só relatar meu descontentamento mesmo :P&lt;br /&gt;&lt;br /&gt;Por fim, Matlab. É um ambiente proprietário, de sintaxe muitas vezes esquisita, e que estou utilizando nas aulas de Processamento de Imagens. Não vi ainda vantagens em relação a usar Python + Numpy + Matplotlib... ainda assim, é uma linguagem interpretada e lá temos console e um manual muito bem elaborado.&lt;br /&gt;&lt;br /&gt;Acho que as linguagens compiladas tem um ponto a menos nas minhas avaliações por conta da velocidade do "escrever código". Legibilidade e fluxo de desenvolvimento acabam valendo mais que tempo de execução.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/396083382034174439-5225564876985580001?l=blog.rodolfocarvalho.net' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.rodolfocarvalho.net/feeds/5225564876985580001/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=396083382034174439&amp;postID=5225564876985580001' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/396083382034174439/posts/default/5225564876985580001'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/396083382034174439/posts/default/5225564876985580001'/><link rel='alternate' type='text/html' href='http://blog.rodolfocarvalho.net/2009/12/novas-linguas-do-semestre.html' title='Novas línguas do semestre'/><author><name>Rodolfo</name><uri>http://www.blogger.com/profile/13115401885842551697</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_vI4PxbAv6pM/SJ-dzrhNvyI/AAAAAAAAAAc/dOyhjpNbx58/s1600-R/Rodolfo_safari.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-396083382034174439.post-5633668190137152630</id><published>2009-09-21T13:35:00.001-03:00</published><updated>2009-09-21T13:35:28.171-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='portugal'/><title type='text'>Novo blog com histórias e relatos da minha viagem para Portugal</title><content type='html'>Hoje finalmente comecei o blog para relatar minha viagem, o um ano de intercâmbio em Lisboa.&lt;br /&gt;&lt;br /&gt;Aos que quiserem acompanhar a jornada, apon
