<?xml-stylesheet type="text/xsl" href="http://stoa.usp.br/calsaverini/rss/rssstyles.xsl"?>
<rss version='2.0'   xmlns:dc='http://purl.org/dc/elements/1.1/'>
    <channel xml:base='http://stoa.usp.br/calsaverini/'>
        <title><![CDATA[Rafael Sola de Paula de Angelo Calsaverini : Atividade]]></title>
        <description><![CDATA[Atividade de Rafael Sola de Paula de Angelo Calsaverini, no Stoa.]]></description>
        <generator>Elgg</generator>
        <link>http://stoa.usp.br/calsaverini/</link>        
        <item>
            <title><![CDATA[Apuração das eleições do DCE]]></title>
            <link>http://stoa.usp.br/calsaverini/weblog/68145.html</link>
            <guid isPermaLink="true">http://stoa.usp.br/calsaverini/weblog/68145.html</guid>
            <pubDate>Sat, 28 Nov 2009 02:36:32 GMT</pubDate>
		<dc:subject><![CDATA[eleições]]></dc:subject>
		<dc:subject><![CDATA[dce]]></dc:subject>
            <description><![CDATA[<p>Fiquem de olho, pessoal. Houve mais de 9 mil votos na eleição do DCE esse ano. Nunca houve um quórum tão grande. As chapas Reconquista, Nada Será Como Antes e Todo Carnaval tem Seu Fim são as favoritas. </p>
<p>Em alguns minutos deve começar a apuração na ECA, que pode ser acompanhada pelo twitter.</p>
<p>As duas chapas ligadas ao PSOL e ao PSTU parecem estar muito receosas de que a Reconquista de fato ganhe e estão tentando anular o processo eleitoral, segundo o que eu ouvi no twitter. </p>
<p>Se fizerem isso será um belo tiro no pé...</p>]]></description>
        </item>
                
        <item>
            <title><![CDATA[Eleições DCE]]></title>
            <link>http://stoa.usp.br/calsaverini/weblog/67856.html</link>
            <guid isPermaLink="true">http://stoa.usp.br/calsaverini/weblog/67856.html</guid>
            <pubDate>Tue, 24 Nov 2009 11:36:30 GMT</pubDate>
		<dc:subject><![CDATA[eleições DCE]]></dc:subject>
		<dc:subject><![CDATA[reconquista]]></dc:subject>
		<dc:subject><![CDATA[DCE]]></dc:subject>
            <description><![CDATA[<div class="im">Pessoal, <br />hoje, amanhã e depois serão realizadas as
eleições para o DCE. Eu sei a imagem que a maioria de nós associa ao
DCE e a essas eleições: a mesma palhaçada de sempre, 200 chapas iguais,
defendendo ideologias anacrônicas, greve e etc.<br />

<br />Esse ano entretanto um pessoal resolveu fazer uma chapa de
contraponto a essa palhaçada. Quem sabe seja possível eleger uma chapa
que consiga dar ao DCE alguma utilidade e quem sabe esse pessoal
consiga fazer alguma representação discente minimamente decente.<br />

<br />Eu também sou muito cético com relação a isso e também, ao longo do
tempo, acumulei evidências para concluir que no fundo DCE's e centros
acadêmicos não servem para nada e o melhor mesmo é deixar os malucos de
ultra-esquerda com a sua ilusão de controle sobre alguma coisa. Mas
quem sabe não dá para usar o DCE para alguma coisa útil, nem que seja
só um pouquinho. </div>
<div class="im"><br /></div>
<div class="im">Por isso eu peço que vocês leiam o programa da chapa Reconquista - <a href="http://reconquista2010.com.br/"  target="_blank">http://reconquista2010.com.br</a>
- e pensem se vale a pena votar e tentar ver se é possível alguma coisa
mudar.Os pontos principais do programa são: fim da influência de
partidos, fim dos piquetes, respeito ao patrimônio da USP e negociações
decentes com a reitoria em assuntos de interesse dos estudantes sem o
grevismo de sempre.</div>
<p>

<strong><em><br />A votação é nos dias 24, 25 e 26 de novembro. As urnas devem
estar nos centros academicos. Se for votar verifique se há 8 chapas na
cédula, dois carimbos no verso (um do DCE e outro do centro academico)
e duas assinaturas.<br />
</em></strong><br /><em><strong>Votam <span style="text-decoration: underline;">todos</span> os graduandos (cédula branca) e
pós-graduandos (cédula amarela) regularmente matriculados em qualquer
curso da USP, portando a carteirinha USP. Se você não vota, por favor,
passe essa mensagem a pessoas que você sabe que votam.<br />
</strong></em></p>]]></description>
        </item>
                
        <item>
            <title><![CDATA[A Manada e o indivíduo]]></title>
            <link>http://stoa.usp.br/calsaverini/weblog/66634.html</link>
            <guid isPermaLink="true">http://stoa.usp.br/calsaverini/weblog/66634.html</guid>
            <pubDate>Sat, 07 Nov 2009 23:00:31 GMT</pubDate>
		<dc:subject><![CDATA[absurdo]]></dc:subject>
		<dc:subject><![CDATA[unitaleban]]></dc:subject>
		<dc:subject><![CDATA[uniban]]></dc:subject>
		<dc:subject><![CDATA[irracionalidade]]></dc:subject>
		<dc:subject><![CDATA[manada]]></dc:subject>
		<dc:subject><![CDATA[comportamento animal]]></dc:subject>
            <description><![CDATA[<p>Eu achei que não fosse querer escrever nada sobre o episódio da garota que foi molestada por uma turba na Uniban porque estava usando um vestido curto, e achei que as pessoas tinham mais ou menos um consenso estabelecido sobre o fenômeno que aconteceu e o julgamento médio das pessoas - excetuando algumas anomalias bizarras - era o mesmo.</p>
<p>Mas lendo hoje o meu twitter fico sabendo da coisa mais inesperada e ridícula:</p>
<blockquote>A Universidade Bandeirante informou em anúncio publicado em jornais
paulistas neste domingo, 8, que decidiu expulsar a aluna Geisy Arruda
de seu quadro discente. A estudante do curso de Turismo sofreu assédio
coletivo no último dia 22 de outubro por ir ao campus de São Bernardo
do Campo da faculdade com um vestido curto. </blockquote>
<blockquote>No anúncio publicitário, entitulado <em>'A educação se faz com atitude e
não com complacência'</em> a universidade diz que tomou a decisão após uma
sindicância interna constatar que a aluna teve uma postura incompatível
com o ambiente da universidade, frequentando as dependências da unidade
em trajes inadequados. <em>Para a Uniban, Geisy <span style="text-decoration: underline;">provocou os colegas ao fazer um
percurso maior que o habitual</span>, desrespeitando <span style="text-decoration: underline;">princípios éticos, a
dignidade acadêmica e a moralidade</span></em>.</blockquote>
<blockquote>
<p>A universidade afirma ainda que foi constatado que <em>"a atitude
provocativa da aluna resultou numa reação coletiva de <span style="text-decoration: underline;">defesa do
ambiente escolar</span></em><em>".</em></p>
<p><em><a href="http://www.estadao.com.br/noticias/vidae,uniban-expulsa-aluna-assediada-por-usar-vestido-curto-na-aula,462814,0.htm">http://www.estadao.com.br/noticias/vidae,uniban-expulsa-aluna-ass</a><br /></em></p>
</blockquote>
<p>Meus grifos. Fiquei pasmo por alguns segundos quando li isso. Continuo não sabendo o que escrever sobre isso. É daquelas (raríssimas) coisas que ultrapassam a minha capacidade de me manter calmo e tentar entender as razões do outro(i). Me dá vontade de abandonar a racionalidade e mandar todo mundo ''tomar nos seus respectivos cus'' como dizia um antigo amigo meu da faculdade. <span style="color:#c0c0c0;">(não venham reclamar do palavrão, ''não estou aqui para fazer amigos'', como diz outro amigo meu)</span></p>
<p>E é justamente aí é que a gente percebe o poder da manada. São essas as notas que a Manada tange em nossas mentes, as notas escuras que todo mundo tem lá no fundo. A Manada ultrapassa nosso raciocínio e os nossos freios morais. O ''custo psicológico'' de ofender meus freios morais e atentar contra a estabilidade do meu ambiente social é grandemente reduzido quando estamos em grupo. E é aí que essa mesma vontade que eu tive de abandonar a razão vence(ii). A Manada é o super-organismo imbecil a quem rendemos nossa individualidade quando em grupo. Para alguns deve ser quase um transe místico(iii).</p>
<p>Claro que isso não exime ninguém da imputabilidade pelos atos que realiza sob influência da Manada. O indivíduo ainda é racional e ainda escolhe submeter-se ou não a esse ''espírito coletivo'' destrutivo.</p>
<p>Note que não uso aqui a palavra espírito num sentido místico - estou falando de um comportamento emergente, de uma reação coletiva. Como o meu orientador costuma dizer, parece que nós sempre gostamos de personalizar reações emergentes: damos nomes em maiúsculas, usamos artigos definidos e pronomes pessoais. Assim chamamos Cosmo à ordem coletiva do universo e à aparente causalidade coletiva dos fatos, chamamos Natureza à fenomenologia ecológica, às cadeias alimentares, à evolução por seleção natural e à ordem biológica, e chamamos Mente aos fenômenos coletivos produzidos por uma infinidade de células nervosas no nosso Sistema Nervoso Central</p>
<p>Esses fenômenos coletivos em nada diferem, na minha percepção, dos fenômenos coletivos que observamos em outras instâncias mais físicas, menos pessoais e com menos implicações humanas - sendo a emergência do ferromagnetismo a partir da interação de uma infinidade de ''pequenos magnetos'' o mais célebre. </p>
<p>A Manada também é um fenômeno coletivo. Possui a assinatura evidente - quase a definição - de um fenômeno coletivo: não é possível explicar seu comportamento baseando-se apenas no comportamento de cada indivíduo separadamente, mas é necessário entender a interação entre eles.</p>
<p><br />O inadmissível nesse fato, o espantoso e o inesperado, não é a reação da turba que molestou a garota. Isso é uma coisa até compreensível  (o que não a torna menos absurda). O que me espanta é a reação, supostamente individual e raciocinada, da diretoria da Uni(tale)ban. Expulsar a garota e defender os agressores. Culpar a vítima e proteger os que deveriam ser investigados e expulsos. Atacar o comportamento individual e abraçar a irracionalidade coletiva.</p>
<p>Não estou dizendo que a garota é a heroína da liberdade individual também. É provável que o vestido da garota fosse inadequado. É provavel que ela tenha provocado as pessoas. É provavel que eu nunca me aproximasse dela e se a conhecesse julgasse uma pessoa inadequada, vulgar e ela provavelmente não faria parte do meu círculo social se estudasse na mesma escola que eu. Mas isso não importa. </p>
<p>Nada do que se enquadra na categoria ''comportamento individual dentro da lei, que não incomoda a saúde, a dignidade e o livre-arbítrio de outrem'' deve ser reprimido com essa violência, ainda mais reprimido por uma turba. E, como disse um <a href="http://veja.abril.com.br/blog/reinaldo/geral/de-homens-e-chimpanzes/">jornalista(<span style="color:#888888;"></span></a><span style="color:#000000;"><a href="http://veja.abril.com.br/blog/reinaldo/geral/de-homens-e-chimpanzes/">iv</a></span><a href="http://veja.abril.com.br/blog/reinaldo/geral/de-homens-e-chimpanzes/">) bem odiado por aqui</a>, mesmo que ela estivesse ofendendo uma lei, ela tem o direito de ser reprimida por um agente da lei e não ser moralmente linchada pela Manada. </p>
<p>Espero mesmo que essa não seja a última vez que ouvimos falar desse caso e que haja autoridade capaz de investigar e punir aquela turba de chimpanzés que chegou a ameaçar a garota de estupro. Sobre a expulsão, bem... a Uniban é uma instituição privada e tem o direito de recusar um aluno se quiser - até onde eu sei (advogados por favor me iluminem quanto a isso se eu estiver errado). Mas aquela turba precisa de punição.</p>
<p> </p>
<p><strong>Notas</strong></p>
<p>(i)  Outra dessas coisas é o judiciário ter que praticamente implorar para que uma decisão judicial seja respeitada. Coisas incompreensíveis... mas isso é outra estória.</p>
<p>(ii) Vontade que eu me esforcei para controlar para escrever aqui algo relativamente civilizado aqui. Talvez se eu estivesse na minha Manada...</p>
<p>(iii) A <a href="http://twitter.com/elenavolpato">@elenavolpato</a> no twitter recomendou que eu lesse sobre os conceitos junguianos de Sombra e Persona. Deve ser semelhante ao que eu entendo por Manada e indivíduo. Enfim... preciso ler.</p>
<p>(iv) Antes de falar ''mimimi, não leio a Veja, mimimi, não gosto do
Reinaldo Azevedo, mimimi, blog de direitista'', apenas leia o que ele
escreveu. Ignore a fonte e interprete o conteúdo - é mais inteligente
agir assim. Eu também não sou o maior fã dele e frequentemente discordo
dele. Mas frequentemente eu também concordo com ele. Acontece, pombas.</p>]]></description>
        </item>
                
        <item>
            <title><![CDATA[Como chegar na USP?]]></title>
            <link>http://stoa.usp.br/calsaverini/weblog/66565.html</link>
            <guid isPermaLink="true">http://stoa.usp.br/calsaverini/weblog/66565.html</guid>
            <pubDate>Fri, 06 Nov 2009 14:03:20 GMT</pubDate>
		<dc:subject><![CDATA[ônibus]]></dc:subject>
		<dc:subject><![CDATA[metrô]]></dc:subject>
		<dc:subject><![CDATA[informações úteis sobre a Usp e seus seviços]]></dc:subject>
		<dc:subject><![CDATA[USP]]></dc:subject>
		<dc:subject><![CDATA[como chegar]]></dc:subject>
            <description><![CDATA[<p>É tão frequente por aí na internet que pessoas de fora da cidade de São Paulo perguntem como se chega na Cidade Universitária  que eu acho estranho não ter nenhuma informação no próprio site da USP. Eu já passei pela experiência de chegar aqui e precisar ir na USP sem conhecer nada da cidade, é realmente horrível. A cidade inspira terror.</p>
<p>Mas é realmente fácil chegar na USP. Há várias opções. Aqui eu vou colocar as quatro opções que na minha opinião são as melhores para quem está vindo de ônibus para a cidade e precisa chegar na Cidade Universitária ou no campus da USP Leste (EACH). </p>
<p>A primeira coisa para se ter em mente, que muitas pessoas não sabem antes de vir a São Paulo, é que a Cidade Universitária é ENORME. É uma grande região da cidade, fechada por muros. O ônibus entra dentro do campus e roda quase meia hora lá dentro, então tenha paciência. </p>
<p>É importante que você saiba direitinho em que prédio quer ir, porque dentro do campus há dezenas e dezenas de prédios. Tenha o cuidado de conseguir direitinho essa informação porque nem sempre as pessoas sabem onde fica o serviço que você quer. É sempre bom saber em que unidade fica o prédio. Os cobradores e motoristas nem sempre conhecem onde ficam as coisas no campus. Pergunte para as pessoas que estão no ônibus. O melhor mesmo é ver no mapa do Google Maps antes de fazer qualquer coisa. Note que o Google Maps tem uma base de dados bem acurada de todas as opções de transporte público em São Paulo. Basta clicar na opção ''Como Chegar'', dar os dois endereços (ou marcar no mapa) e clicar em ''Transporte Público''. Ele te dará duas ou três opções de ônibus/metrô/trem para chegar onde deseja. </p>
<h4>Campus Butantã - Cidade Universitária</h4>
<h5>Partindo do Terminal Rodoviário do Tietê</h5>
<p>Quem está descendo no Tietê tem a opção de pegar o ônibus Cidade Universitária na Av. Cruzeiro do Sul. Mas sinceramente eu acho essa uma péssima opção. Se você tem hora marcada, pode esquecer. Esse ônibus demora pelo menos 2 horas e meia para chegar na USP, mesmo em uma dia sem trânsito. A melhor opção é cortar caminho pelo metrô, que fica dentro da rodoviária.</p>
<p>Tome o metrô no sentido Jabaquara, desça na estação Paraíso ou na estação Ana Rosa (tanto faz, eu prefiro usar a Ana Rosa porque tem bem menos movimento). Agora tome o metrô da <strong>linha verde</strong> sentido <strong>Vila Madalena</strong>.</p>
<p>A partir daí existem cinco opções. Qual é a melhor opção depende de onde você vai no campus, porque nem todos os ônibus fazem o mesmo caminho uma vez lá dentro. Verifique no Google Maps ou no site da <a href="http://www.sptrans.com.br/">SPTrans</a> o caminho do ônibus e veja se ele passa onde você quer. </p>
<p>As opções são:</p>
<p>1) Descer na estação Consolação, sair da estação e andar na Rua Augusta sentido Jardins até o primeiro ponto de ônibus. Alí passam dois ônibus Cidade Universitária, um azulzinho e um laranja, linhas 107T e 7181.<br /><br />2) Descer na estação Consolação, andar até o cruzamento da Avenida Paulista e a Rua da Consolação. No cruzamento há dois pontos de ônibus: sentido centro e sentido bairro. O que interessa é o ponto de ônibus sentido bairro. Daí pega o Butantã-USP, linhas 702U e 7411.<br /><br />3) Descer na estação Clínicas, sair pela Av. Dr. Arnaldo. Lá você deve atravessar a avenida para o outro lado e andar um pouquinho para a sua direita para achar um ponto de ônibus na frente do cemitério. Lá você deve pegar o Butantã-USP, linhas 701U, 177H, 177P e 724A.<br /><br />4) Descer na estação Vila Madalena, sair da estação pela saída principal. Descendo a escadinha logo depois da porta há um pequeno terminal de ônibus. No finalzinho do terminal de ônibus, no último ponto que fica na mesma calçada da saída da estação, você pega o ônibus Rio Pequeno, linha 7725.</p>
<p>Todos esses ônibus também servem para voltar e eles passam perto sempre das estações de metrô onde você desceu para pegá-los. Para pegar a volta basta esperar o ônibus no outro lado da rua onde você desceu.</p>
<p>Há outras opções: ponte orca, pegar trem da CPTM, usar outras linhas de ônibus, mas sinceramente eu não recomendo. Ou vai demorar muito, ou você vai ter que andar um trecho chato a pé, ou você vai ter que pegar ônibus em uma região da cidade que eu não recomendo se você não sabe andar por lá. Esses são os caminhos mais fáceis, em locais bem tranqüilos de se andar, relativamente rápidos.</p>
<p> </p>
<h5 style="font-size: 0.83em; ">Partindo do Terminal Rodoviário da Barra Funda</h5>
<p>Descendo no terminal Barra Funda eu só conheço uma opção: </p>
<p>1) Pegar o <strong>metrô</strong> (metrô, não CPTM, ambos ficam dentro da rodoviária) para a Sé (sentido Corinthians-Itaquera). Descendo na Sé você deve fazer baldeação para a linha azul, sentido Jabaquara e descer nas estações Paraíso ou Ana Rosa. Daí você toma o metrô da linha verde no sentido Vila Madalena e segue uma das quatro opções acima. </p>
<p>Se alguém souber de caminhos melhores do que esse (pensando nos critérios: rapidez, segurança, andando pouco e se expondo pouco) me dá um toque que eu coloco aqui.</p>
<h4>Campus USP Leste - EACH</h4>
<div>É bem mais fácil chegar na USP Leste do que na Cidade Universitária. </div>
<h5>Partindo do Terminal Rodoviário Tietê</h5>
<p>Partindo do Tietê você deve pegar o metrô, sentido Jabaquara. Desça na estação Sé e tome o metrô da linha vermelha, sentido Corinthians-Itaquera e desça na estação Brás. </p>
<p>Na estação Brás tome o trem da CPTM, na linha 12 Safira, sentido Calmon Viana. Depois de mais ou menos meia hora você deve chegar na estação USP Leste. Desça nessa estação. Uma das saídas da estação cai dentro do campus da USP Leste. </p>
<p>Outra opção é descer na estação Tatuapé da linha vermelha do metrô (ao invés de descer no Brás) e então pegar o CPTM (mesmo linha acima). A desvantagem é que para tomar o CPTM daí você tem que pagar a passagem de novo pois não há integração (e provavelmente não vai conseguir ir sentado no trem).</p>
<p>A única observação é na volta. Se você voltar por volta das 18 horas tome cuidado na hora de descer no Brás. Nesse horário a estação estará LOTADA. Quando eu digo lotada eu quero dizer que na estação vai ter mais gente do que na sua cidade natal. E toda essa gente quer entrar no trem ao mesmo tempo que você quer sair, então se proteja com os braços e empurre, senão você não sai do trem. Saia pela primeira porta de cada vagão - quando está muito lotado os funcionários da estação reservam a primeira porta de cada vagão apenas para desembarque, o que ajuda pra caramba. Mas isso não é sempre, então esteja pronto para a maior muvuca do universo. </p>
<h5>Partindo do Terminal Barra Funda</h5>
<p>Partindo da Barra Funda, tome o metrô sentido Corinthians-Itaquera e desça no Brás ou no Tatuapé e siga as mesmas instruções acima. </p>
<div><span style="font-weight: bold;">Circular</span></div>
<div><br /></div>
<div>Na Cidade Universitária (campus Butantã) há duas linhas de ônibus circular gratuito para quem circula no campus. Elas rodam praticamente todo o campus. </div>
<div><br /></div>
<div>Entretanto eu não sei o itinerário que o circular faz e o <strong>site da USP é UM LIXO</strong> e não tem informação nenhuma sobre isso. Aliás, obter informação sobre qualquer coisa da USP na internet é praticamente impossível, então se você quiser usar o circular é melhor ligar lá e perguntar o itinerário ou mandar um e-mail e rezar pela resposta.</div>
<div><br /></div>
<div>(0xx11)3091-4974<br />circular@usp.br</div>
<p>
<div><br /></div>
</p>]]></description>
        </item>
                
        <item>
            <title><![CDATA[Recuperando notícias da Web com um script Python]]></title>
            <link>http://stoa.usp.br/calsaverini/weblog/66448.html</link>
            <guid isPermaLink="true">http://stoa.usp.br/calsaverini/weblog/66448.html</guid>
            <pubDate>Thu, 05 Nov 2009 03:17:41 GMT</pubDate>
		<dc:subject><![CDATA[python]]></dc:subject>
		<dc:subject><![CDATA[parsing]]></dc:subject>
		<dc:subject><![CDATA[notícias]]></dc:subject>
		<dc:subject><![CDATA[html]]></dc:subject>
		<dc:subject><![CDATA[feed]]></dc:subject>
		<dc:subject><![CDATA[código]]></dc:subject>
		<dc:subject><![CDATA[code]]></dc:subject>
		<dc:subject><![CDATA[acesso]]></dc:subject>
		<dc:subject><![CDATA[BeautifulSoup]]></dc:subject>
		<dc:subject><![CDATA[RSS]]></dc:subject>
            <description><![CDATA[<p> </p>
<p>Eu estava planejando estudar um pouco de <a href="http://en.wikipedia.org/wiki/Natural_language_processing"  target="_blank">natural language processing</a>, <a href="http://en.wikipedia.org/wiki/Information_retrieval">information retrieval</a> e <a href="http://en.wikipedia.org/wiki/Computational_linguistics">lingüística computacional</a>, um assunto que eu sempre achei muito promissor e interessante. Há um pacote para Python chamado <a href="http://www.nltk.org/">Natural Language Toolkit</a>, com várias ferramentas supimpas e até alguns corpora de texto em português. Mas como eu sou um cara chato eu quero montar o meu próprio corpus de texto me baseando talvez em buscas específicas e poder ver como os resultados dos algoritmos variam mudando as fontes e os assuntos. </p>
<p>A minha primeira tentativa bem sucedida foi tentar baixar em grande quantidade artigos da Folha de São Paulo para o meu computador. Isso me serviu para aprender a usar algumas boas bibliotecas Python que eu não conhecia: o <a href="http://www.crummy.com/software/BeautifulSoup/">BeautifulSoup</a>, o <a href="http://www.feedparser.org/">feedparser</a> e o pacote de expressões regulares.</p>
<p>Neste post eu queria descrever um pouco dessas bibliotecas e um pouco dos problemas de se conseguir informação desse tipo na internet - informação que a princípio está lá, é "acessível" e "pode ser usada". </p>
<p>O primeiro problema é legal: eu provavelmente não posso usar esse corpus de notícias que eu baixei. Sinceramente estou pouco ligando - na minha cabeça se um texto está na web é como se estivesse jogado no meio da rua, eu posso pegar e usá-lo para o que eu quiser desde que eu não tente ganhar dinheiro vendendo o texto (posso vender o livro que contém o texto se eu quiser) sem autorização do autor.</p>
<p>Superado esse problema vamos aos problemas técnicos de acessar o texto:</p>
<ul>
<li>A forma mais fácil de obter uma seqüencia de textos de notícia é usar um RSS, entretanto é praxe dos RSS de jornais e revistas não colocar o texto todo no feed mas apenas um sumário. Então a utilidade do RSS é apenas fornecer o link para  a notícia e eu tenho que baixar a notícia no site mesmo. Além disso o feed apenas contém as 10 ou 15 últimas entradas e não um registro histórico completo então preciso de alguma forma de acessar uma lista dos feeds dos últimos anos. </li>
<li>Os sites de jornal são bonitos, cheios de barras, colunas, tabelas e propaganda. Isso é muito legal, mas quando você quer pegar apenas o texto da notícia é um saco. Seria muito fácil se os programadores que fizeram o site fossem muuuuito legais e marcassem direitinho o html, mas não é assim.</li>
</ul>
<p> </p>
<p>Então o roadmap é: (1) aprender a parsear um feed RSS usando um script, (2) fazer um programa que olhe um html e consiga extrair a notícia e (3) encontrar um histórico do RSS que eu quero baixar. Após muita navegação na web eu consegui resolver os três problemas usando ferramentas muito legais e simples de usar.</p>
<p>O problema (1) é resolvido usando o <a href="http://www.feedparser.org/">Universal Feedparser</a>, uma biblioteca para parsear RSS automágicamente. A interface é beeeem intuitiva. Vamos a um exemplo simples com o feed da Folha.</p>
<p>Posso então fazer:</p>
<p><pre class="normal"></p>
<p><span class="py-keyword1">import</span> feedparser
url_feed = <span class="py-quote">&quot;http%3A//feeds.folha.uol.com.br/folha/emcimadahora/rss091.xml&quot;</span></p>
<p>feed = feedparser.parse(url_feed)
<span class="py-keyword1">for</span> post <span class="py-keyword1">in</span> feed.entries:
&nbsp;&nbsp; &nbsp;<span class="py-keyword1">print</span> post.title, post.link</p>
<p></pre></p>
<p>Esse código vai imprimir os títulos e links de todas as notícia. O que está acontecendo é que a função feedparser.parse simplesmente olha para o XML e retorna o seu conteúdo em um objeto do tipo dict:</p>
<p><pre class="normal"></p>
<p>&gt;&gt;&gt; <span class="py-keyword1">print</span> feed.keys()
[<span class="py-quote">'feed'</span>, <span class="py-quote">'status'</span>, <span class="py-quote">'updated'</span>, <span class="py-quote">'version'</span>, <span class="py-quote">'encoding'</span>, <span class="py-quote">'bozo'</span>, <span class="py-quote">'headers'</span>, <span class="py-quote">'etag'</span>, <span class="py-quote">'href'</span>, <span class="py-quote">'namespaces'</span>, <span class="py-quote">'entries'</span>]</p>
<p></pre></p>
<p>O problema número (3) (já volto para o 2) acabou sendo resolvido depois de hoooooras de busca na web. Eu sabia que devia haver solução, uma vez que o google reader é capaz de mostrar feeds antigos. Encontrei, finalmente, esse <a href="http://googlesystem.blogspot.com/2007/06/reconstruct-feeds-history-using-google.html">post</a> no blog de dicas sobre o Google. O Google Reader não apenas é um leitor de RSS, mas ele também salva o histórico de todo feed que alguém já leu e esse histórico pode ser acessado em um feed no endereço:</p>
<p><a href="http://www.google.com/reader/atom/feed/FEED_URL?r=n&amp;n=NUMBER_OF_ITEMS">http://www.google.com/reader/atom/feed/FEED_URL?r=n&amp;n=NUM</a></p>
<p>Onde FEED_URL deve ser substituido pela (dã) URL do feed que te interessa e NUMBER_OF_ITEMS é o número de itens que você quer recuperar. </p>
<p>As duas limitações são: o número máximo de itens é 5000 (eu gostaria de ter muito mais, mas por enquanto é o que dá pra fazer) e você deve estar logado no sistema de login do Google para conseguir fazer isso. </p>
<p>Isso é um saco... eu não sabia logar no Google através de um script e estava quase desistindo quando achei <a href="http://stackoverflow.com/questions/52880/google-reader-api-unread-count">essa pergunta</a> no StackOverflow (o MELHOR site para resolver dúvidas de programação de qualquer espécie).</p>
<p>A solução é simular um cookie na hora de acessar a página do Google Reader. A biblioteca urllib2 (que está na biblioteca padrão do Python) consegue fazer isso. Aí embaixo vai uma função para produzir um cookie para acessar qualquer página do Google:</p>
<p><pre class="normal">
<span class="py-keyword1">import</span> urllib
<span class="py-keyword1">import</span> urllib2</p>
<p><span class="py-keyword1">def</span> getGoogleSID(user,passwd):
&nbsp;&nbsp; &nbsp;<span class="py-comment"># Authenticate to obtain SID</span>
&nbsp;&nbsp; &nbsp;auth_url = <span class="py-quote">'https%3A//www.google.com/accounts/ClientLogin'</span></p>
<p>&nbsp;&nbsp; &nbsp;auth_req_data = urllib.urlencode({<span class="py-quote">'Email'</span>: user, <span class="py-quote">'Passwd'</span>: passwd})
&nbsp;&nbsp; &nbsp;auth_req = urllib2.Request(auth_url, data=auth_req_data)
&nbsp;&nbsp; &nbsp;auth_resp = urllib2.urlopen(auth_req)
&nbsp;&nbsp; &nbsp;auth_resp_content = auth_resp.read()
&nbsp;&nbsp; &nbsp;auth_resp_dict = <span class="py-keyword2">dict</span>(x.split(<span class="py-quote">'='</span>) <span class="py-keyword1">for</span> x <span class="py-keyword1">in</span> auth_resp_content.split(<span class="py-quote">'n'</span>) <span class="py-keyword1">if</span> x)
&nbsp;&nbsp; &nbsp;SID = auth_resp_dict[<span class="py-quote">&quot;SID&quot;</span>]
&nbsp;&nbsp; &nbsp;header = {}
&nbsp;&nbsp; &nbsp;header[<span class="py-quote">'Cookie'</span>] = <span class="py-quote">'Name=SID;SID=%s;Domain=.google.com;Path=/;Expires=160000000000'</span> % SID &nbsp; &nbsp;</p>
<p>&nbsp;&nbsp; &nbsp;<span class="py-keyword1">return</span> header</p>
<p><span class="py-keyword1">def</span> retrieveGooglePage(user,passwd, url):
&nbsp;&nbsp; &nbsp;header = getGoogleSID(user,passwd)
&nbsp;&nbsp; &nbsp;request = urllib2.Request(url, <span class="py-keyword3">None</span>, header)
&nbsp;&nbsp; &nbsp;openurl= urllib2.urlopen(reader_req)
&nbsp;&nbsp; &nbsp;text = reader_resp.read()
&nbsp;&nbsp; &nbsp;<span class="py-keyword1">return</span> text</p>
<p></pre></p>
<p>A função getGoogleSID gera o cookie adequado que é depois usado na função retrieveGooglePage, que retorna todo o conteúdo de uma página do google com com um certo url como se você estivesse logado como o usuário fornecido. Essa função pode ser usada para obter o feed que eu me referi acima.</p>
<p>Então o que pode ser feito é: obtém-se o feed das últimas 5000 notícias e desse feed se obtem os links para as notícias no site da Folha. Agora é necessário parsear o html do site para obter o texto. Aí é que entra a biblioteca BeautifulSoup. Essa biblioteca é um parser de html muito bem feito e fácil de usar.</p>
<p>Uma página em html parseada no BeautifulSoup vira uma estrutura de dados (uma árvore) adequada para extrair conteúdo facilmente. Para dar um exemplo vou colocar abaixo uma  função que extrai a data da notícia. </p>
<p>Por sorte o programador da página foi suficientemente bonzinho para marcar no html onde está a data da notícia. Aí vai um trecho do html de uma notícia:</p>
<p><pre class="normal"></p>
<p><span class="html-tag">&lt;div</span><span class="html-tagin"> id=</span><span class="html-quote">&quot;articleDate&quot;</span><span class="html-tag">&gt;</span>
&nbsp;&nbsp; &nbsp; <span class="html-comment">&lt;!--DATA--&gt;</span>04/11/2009<span class="html-comment">&lt;!--/DATA--&gt;</span>
&nbsp;&nbsp; &nbsp; -
&nbsp;&nbsp; &nbsp; <span class="html-comment">&lt;!--HORA--&gt;</span>19h56<span class="html-comment">&lt;!--/HORA--&gt;</span>
<span class="html-tag">&lt;/div&gt;</span></p>
<p><span class="html-tag">&lt;h1&gt;</span>
<span class="html-comment">&lt;!--TITULO--&gt;</span>STF retoma julgamento de Azeredo ap&oacute;s relator propor a&ccedil;&atilde;o penal por peculato<span class="html-comment">&lt;!--/TITULO--&gt;</span>
<span class="html-tag">&lt;/h1&gt;</span></p>
<p></pre></p>
<p>Note a id "articleDate" na tag &lt;div&gt;. O BeautifulSoup é capaz de obter uma lista com o conteúdo de todas as tags &lt;div&gt; com uma certa id.</p>
<p><pre class="normal">
<span class="py-keyword1">from</span> BeautifulSoup <span class="py-keyword1">import</span> *&nbsp;
<span class="py-keyword1">import</span> urllib2</p>
<p><span class="py-comment">#obtendo o html da p&aacute;gina com urllib2</span>
url = <span class="py-quote">&quot;http%3A//www1.folha.uol.com.br/folha/dinheiro/ult91u647489.shtml&quot;</span>
entry = urllib2.urlopen(url)
raw_html = &nbsp;entry.read() &nbsp;

<span class="py-comment">#criando um soup</span>
soup = BeautifulSoup(raw_html)

<span class="py-comment">#extraindo uma list com o conte&uacute;do de todas as tags &lt;div id=&quot;articleDate&quot;&gt;</span>
lista = soup.findAll(<span class="py-keyword2">id</span>=<span class="py-quote">&quot;articleDate&quot;</span>)</p>
<p></pre></p>
<p> </p>
<p>O conteúdo da variável lista é uma lista com um elemento que é um soup que contém o html:</p>
<p>&lt;div id="articleDate"&gt;<br /> &lt;!--DATA--&gt;04/11/2009&lt;!--/DATA--&gt;  <br />  -<br /> &lt;!--HORA--&gt;19h56&lt;!--/HORA--&gt;<br />&lt;/div&gt;</p>
<p>Agora é trivial obter a data e a hora da notícia a partir desse string fazendo:</p>
<p><pre class="normal">
data = lista[<span class="py-number">0</span>].contents[<span class="py-number">2</span>]
hora = lista[<span class="py-number">0</span>].contents[<span class="py-number">6</span>]
</pre></p>
<p>Isso foi fácil. Agora o difícil: obter o texto. Infelizmente o programador do site da Folha não foi tão bonzinho assim. Não há nada marcando o texto. Além disso há um monte de lixo no meio do texto: links, vídeos e propaganda. Antes de obter o texto é preciso limpar o lixo. </p>
<p>Para dar um exemplo de como limpar texto com o BeautifulSoup, vamos arrancar todos os links, ou seja, todas as tags &lt;a&gt;, do nosso documento:</p>
<p><pre class="normal">
<span class="py-comment">#partindo da soup obtida acima</span>
<span class="py-keyword1">for</span> tree <span class="py-keyword1">in</span> soup(<span class="py-quote">'a'</span>):
&nbsp;&nbsp; &nbsp;tree.extract()
</pre></p>
<p>É SÓ ISSO! Todos os links &lt;a href=...&gt; BLABLABLA &lt;/a&gt; foram removidos do soup. Poderiamos fazer isso de forma mais compacta usando list comprehension:<br /><br /><pre class="normal">
[tree.extract() <span class="py-keyword1">for</span> tree <span class="py-keyword1">in</span> soup(<span class="py-quote">'a'</span>)]
</pre></p>
<p>Outra coisa que podemos fazer é remover numa tacada só todos os scripts, noscripts e o css:</p>
<p><pre class="normal">
<span class="py-comment">#usando list comprehension</p></span>
<p>[ [ tree.extract() &nbsp;<span class="py-keyword1">for</span> tree <span class="py-keyword1">in</span> soup(elem)] &nbsp;<span class="py-keyword1">for</span> elem <span class="py-keyword1">in</span> [<span class="py-quote">'script'</span>, <span class="py-quote">'noscript'</span>, <span class="py-quote">'style'</span>] ]</p>
<p><span class="py-comment">#usando dois loops for aninhados:</p></span>
<p><span class="py-keyword1">for</span> elem <span class="py-keyword1">in</span> [<span class="py-quote">'script'</span>, <span class="py-quote">'noscript'</span>, <span class="py-quote">'style'</span>]:
&nbsp;&nbsp; &nbsp;<span class="py-keyword1">for</span> tree <span class="py-keyword1">in</span> soup(elem):
&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;tree.extract()
</pre></p>
<p>Finalmente, para fechar o padrão, podemos remover tudo o que está em um &lt;div&gt; com id "bookmarklets", que no caso do site da Folha é usado para marcar links para notícias relacionadas:</p>
<p><pre class="normal">
[tree.extract() <span class="py-keyword1">for</span> tree <span class="py-keyword1">in</span> soup.findAll(<span class="py-keyword2">id</span>=<span class="py-quote">&quot;bookmarklets&quot;</span>)]
</pre></p>
<p>Enfim... é tão trivial retirar algo do html como é encontrar. Depois de retirar tudo o que está atrapalhando, pode-se remover as tags html fazendo um:</p>
<p><pre class="normal">
texto = soup.findAll(text=<span class="py-keyword3">True</span>)&nbsp;
</pre></p>
<p>Nada mais fácil! Com 10 linhas eu consegui parsear toda a página da Folha e extrair as notícias. Agora vou montar meu banco de dados e logo postarei sobre o Natural Language Toolkit!!</p>
<p><span style="color:#888888;"><em>(meu vício de emacs me fez apertar C-X C-S umas 30 vezes durante a edição desse post)</em></span></p>
<div><br /></div>
<p> </p>]]></description>
        </item>
                
        <item>
            <title><![CDATA[Linguagens de programação, ou tudo tem um preço.]]></title>
            <link>http://stoa.usp.br/calsaverini/weblog/63753.html</link>
            <guid isPermaLink="true">http://stoa.usp.br/calsaverini/weblog/63753.html</guid>
            <pubDate>Sun, 04 Oct 2009 17:06:03 GMT</pubDate>
		<dc:subject><![CDATA[Haskell]]></dc:subject>
		<dc:subject><![CDATA[programação]]></dc:subject>
		<dc:subject><![CDATA[joke]]></dc:subject>
		<dc:subject><![CDATA[Python]]></dc:subject>
		<dc:subject><![CDATA[PERL]]></dc:subject>
		<dc:subject><![CDATA[C]]></dc:subject>
            <description><![CDATA[<p> </p>
<p>Imaginem o sujeito que vai escrever um programa de computador que retorna resultados para sua pesquisa e precisa decidir a linguagem que vai usar. O programa é de porte médio, nada muito difícil do ponto de vista lógico nem muito pesado.</p>
<p><strong>Ciclo básico de desenvolvimento em C <br /></strong><em>(pode ser facilmente traduzido para C++ ou Fortran)</em><strong><br /></strong></p>
<div class="para">Dia 1.<br /><br />1) Definir o problema.<br />2) Dividir o problema em subrotinas/estruturas e fazer um rascunho delas.<br /><br />Dia 2.</div>
<div class="para"><br /></div>
<div class="para">3) Pesquisar bibliotecas prontas algumas das rotinas que você quer.<br />4) Implementar das rotinas que não estão prontas.</div>
<div class="para"><br /></div>
<div class="para">(...) Dia 5.<br /><br />5) Compilação de teste.<br />6) Correção dos infinitos erros de sintaxe.</div>
<div class="para">7) Primeira execução. Segmentation Fault. </div>
<div class="para">8) Abre o gdb, encontra e corrige todas as derreferências de ponteiros nulos. </div>
<div class="para">9) Fique pasmo que depois de tanto tempo você ainda cometa esses erros. <br /></div>
<div class="para"><br /></div>
<div class="para">Dia 6.<br /></div>
<div class="para"><br /></div>
<div class="para">10) Compila e roda pela primeira vez sem erros de compilação ou execução. <br />11) Identificação de 350 bugs. </div>
<div class="para">12) Corrigir rotinas.<br />13) Mais bugs.</div>
<div class="para"><br /></div>
<div class="para">(...) Dia 15<br /></div>
<div class="para"><br /></div>
<div class="para">
<div class="para">511) Ok. Testei o programa. Bug free! </div>
<div class="para">512) Roda o programa.</div>
<div class="para"><br /></div>
<div class="para">(...) Dia 17<br /></div>
<div class="para"><br /></div>
<div class="para">513) Programa terminou de rodar e você tem os resultados. Você começa a fazer as dezenas de gráficos necessários para a sua pesquisa.<br /></div>
<div class="para">514) Percebe que os resultados estão totalmente errados.</div>
<div class="para">515) Volta ao passo 12.</div>
</div>
<div class="para"><br /></div>
<div class="para">(...) Dia 20.</div>
<div class="para"><br />938) Mais bugs. Volta ao passo 12.</div>
<div class="para"><br /></div>
<div class="para">(...) Dia 22</div>
<div class="para"><br /></div>
<div class="para">1130) Mais bugs. Really nasty ones. Volta ao passo 12.<br /></div>
<div class="para"><br /></div>
<div class="para">(...) Dia 27.</div>
<div class="para"><br /></div>
<div class="para">1250) Percebe que sua rotina é extremamente ineficiente e volta ao passo 2.</div>
<div class="para">1260) Curiosamente o programa baixou de 5 mil linhas para apenas 1200 e a frequencia de bugs caiu vertiginosamente.<br /></div>
<div class="para">1261) Mais bugs. Foi só impressão sua.</div>
<div class="para"><br /></div>
<div class="para">(...) Dia 30.</div>
<div class="para"><br /></div>
<div class="para">1290) Mais bugs. Volta ao passo 12.<br /></div>
<div class="para">1300) UFA! Tá pronto. Quer dizer... cansei de bugs. Já funciona bem o suficiente. <br />1301) Roda o programa em poucas horas e obtém excelentes resultados. </div>
<div class="para"><br /><br /><strong>Ciclo básico de desenvolvimento em Python ou PERL:</strong><br /><br />Primeiras duas horas:</div>
<div class="para"><br />1) Passos 1 e 2 como descritos acima.<br />2) Pesquisar bibliotecas que já tenham todas as rotinas/classes qeu você precisa.<br />3) Escrever as poucas conexões necessárias entre todas as rotinas/classes prontas. (tá, em PERL isso leva um pouco mais de tempo)<br />4) Rodar o programa<br /></div>
<div class="para">5) Vai tomar um suco. </div>
<div class="para"><br /></div>
<div class="para">(...) Dia 10.</div>
<div class="para"><br /></div>
<div class="para">6) Churrasco na casa do seu amigo. </div>
<div class="para">(PERL: na verdade é um campeonato de PERL obfuscation e PERL poetry)<br /></div>
<div class="para"><br /></div>
<div class="para">(...) Dia 15.</div>
<div class="para"><br /></div>
<div class="para">7) Acabou a energia elétrica do seu prédio poucas horas antes do fim da execução do programa. Põe pra rodar de novo.</div>
<div class="para"><br /></div>
<div class="para">(...) Dia 20<br /></div>
<div class="para"><br /></div>
<div class="para">8) Show da sua banda favorita.  </div>
<div class="para">(PERL: você nota que a letra da música é um programa válido em PERL!!! Corre para casa e compila.)<br /></div>
<div class="para"><br /></div>
<div class="para">(...) Dia 30.<br /></div>
<div class="para"><br /></div>
<div class="para">9) Finalmente o programa terminou de rodar e você obteve excelentes resultados.<br /><br /><br /><strong>Ciclo básico de desenvolvimento Haskell:</strong><br /><br />Dia 1.</div>
<div class="para"><br />1) Definir o problema<br />2) Separar o problema em funções...<br />- Putz! Como faz isso? Como faz... </div>
<div class="para">3) Algumas horas pensando e conversando no canal #Haskell do Freenode e interagindo com o lambdabot:</div>
<div class="para">- CLARO! Como não pensei nisso antes?<br /></div>
<div class="para"><br /></div>
<div class="para">Dia 2.</div>
<div class="para"><br />3) Procurar bibliotecas prontas no Hackage.</div>
<div class="para">4) Passar algumas horas tentando entender o que aquele código do módulo Obscure.Misterious.Cryptic faz.</div>
<div class="para">5) - CLARO!!! Como eu não pensei nisso antes? Olha o tipo dessa função: é óbvio.<br /></div>
<div class="para"><br />Dia 3.</div>
<div class="para"><br />4) Começa a implementação. Olhos esbugalhados diante do monitor, uma folha em branco e uma cara de espanto. O cursor pisca insidiosamente na tela em branco do editor de texto, convidando você a escrever qualquer coisa. Você resiste.<br /></div>
<div class="para">5) - Carácoles, como faz isso?</div>
<div class="para"><br />(...) Dia 10.</div>
<div class="para">6) - Carácoles, como faz isso?</div>
<div class="para"><br /></div>
<div class="para">(...) Dia 12.</div>
<div class="para">7) Você se rende ao cursor e escreve alguma coisa no editor de texto e tenta compilar. Imediatamente é assaltado por uma mensagem de erro absolutamente incompreensível que nem os ops do canal #Haskell sabem o que significa.<br /></div>
<div class="para"><br /></div>
<div class="para">(...) Dia 15.</div>
<div class="para">8) Seu cérebro está fritando faz dias. Você tem dor de cabeça de tanto pensar, mas parece estar sempre perto da solução.</div>
<div class="para"><br /></div>
<div class="para">(...) Dia 20.</div>
<div class="para">9) Você sonha com um anjo que lhe entrega duas tábuas de pedra com o código que quer implementar, mas esquece quando acorda.<br /></div>
<div class="para"><br /></div>
<div class="para">(...) Dia 30.<br />10) AAAHH!!!! CLARO!!! É tão óbvio, como eu não pensei nisso antes???<br />11) Implementa em 5 minutos e 3 linhas o código mais elegante que você já produziu na vida. </div>
<div class="para">12) Roda o programa em poucas horas e obtém excelentes resultados.<br />13)
Escreve um artigo para o Functional Pearls sobre o seu código e vai
correndo no canal #haskell contar o que fez. Só para descobrir que
alguém tem uma solução muito mais elegante e muito mais eficiente usando um
teorema em Teoria de Categorias e um monad bizarro.
</div>
<div class="para"><br /></div>
<div class="para"><br /></div>
<div class="para">No fim todas as alternativas levam o mesmo tempo para dar resultado. Mas pouca gente suporta o stress que a primeira alternativa te dá e poucas tem disposição para encarar a terceira. </div>
<div class="para"><br /></div>
<div class="para">Mas que a terceira é a mais divertida, aaaah isso é.<br /></div>]]></description>
        </item>
                
        <item>
            <title><![CDATA[Moça engajada, socialista, burra como uma porta. Um amor.]]></title>
            <link>http://stoa.usp.br/calsaverini/weblog/54387.html</link>
            <guid isPermaLink="true">http://stoa.usp.br/calsaverini/weblog/54387.html</guid>
            <pubDate>Fri, 17 Jul 2009 04:01:47 GMT</pubDate>
		<dc:subject><![CDATA[rima tonta]]></dc:subject>
		<dc:subject><![CDATA[whatever]]></dc:subject>
		<dc:subject><![CDATA[poetaria]]></dc:subject>
            <description><![CDATA[<h3 style="font-weight: normal; text-align: justify"  class="smller">
</h3><div style="text-align: justify">
</div><div class="para"  style="text-align: justify">
Outro dia deparei com uma guria:<br />Orgulhosa, bata de algodão cru,<br />Saia e o cabelo sebento em parceria<br />Com um buço escuro de gabiru.<br /><br />Ela falava algo sobre mais-valia<br />E a labuta do proletariado sofrido,<br />O latifundio que explora e a sangria<br />Do homem do campo, e do gemido<br />Da mulher oprimida pela hierarquia<br />Machista, escrava e serva do marido.<br /><br />Ouvi toda a irritada homilia de perto,<br />Impressionado da eloquência da moça,<br />Quando achei, por ironia, um excerto<br />Do panfleto que ela carregava na bolsa.<br /><br />Ele falava algo sobre a mais-valia<br />E a labuta do proletariado sofrido,<br />O latifundio que explora e a sangria<br />Do homem do... assinado: o partido.<br /><br />A guria só papagueava o que lia!!<br />Boquiaberto de espanto e imóvel<br />Fiquei ao ver que a moça desvalia<br />O dinheiro mas tinha um automóvel<br />Importado e muita outra regalia.<br /><br />Filha de um chefe da tesouraria<br />De banco com escritório na cidade.<br />Mimada com sapatos e pedraria,<br />Rebelde na pracinha da faculdade.
</div><div class="para"  style="text-align: justify"> </div>]]></description>
        </item>
                
        <item>
            <title><![CDATA[Casa de horrores sim!]]></title>
            <link>http://stoa.usp.br/calsaverini/weblog/53966.html</link>
            <guid isPermaLink="true">http://stoa.usp.br/calsaverini/weblog/53966.html</guid>
            <pubDate>Sun, 12 Jul 2009 05:42:20 GMT</pubDate>
		<dc:subject><![CDATA[#forasarney]]></dc:subject>
		<dc:subject><![CDATA[escandalos]]></dc:subject>
		<dc:subject><![CDATA[Sarney]]></dc:subject>
		<dc:subject><![CDATA[Senado]]></dc:subject>
		<dc:subject><![CDATA[Casa de Horrores]]></dc:subject>
            <description><![CDATA[<p style="text-align: justify">Essa semana saiu uma <a href="http://www.economist.com/world/americas/displaystory.cfm?story_id=13998624">excelente matéria</a> na revista <a href="http://www.economist.com">The Economist</a> a respeito dos escandalos que eu e você conhecemos já muito bem a respeito da nossa casa legislativa maior, o Senado brasileiro. A matéria irritou alguns parlamentares que mandaram os jornalistas cuidarem dos escândalos do legislativo britânico - no maior estilo ''mas manhêêê o pedrinho também fez''.  </p><p style="text-align: justify">O senador Heráclito Fortes do DEM disse que a matéria é preconceituosa e elitista, e o senador Arthur Virgílio do PSDB relembrou escândalos recentes na Câmara dos Comuns. É interessante ver a oposição se defendendo da matéria quando ela é uma crítica clara aos governistas. Isso mostra claramente uma coisa muito triste - e óbvia - não tem santo no Senado Federal. Todos os senadores - TODOS ELES - se beneficiaram de esquemas irregulares e imorais de financiamento de suas atividades pessoais com verba pública e todos eles estão na defensiva por isso. </p><p style="text-align: justify">Já que os senadores iniciaram o jogo de comparações, vamos fazer comparações. Garanto a vocês que será divertido. </p><p style="text-align: justify">Ao referenciar escandalos recentes na Casa dos Comuns, o senador Virgílio se refere ao que aconteceu com o congressista Michael Martin do Labour Party, ex-presidente da casa que renunciou esse ano por escandalos envolvendo dinheiro público. Ele foi acusado de usar algumas dezenas de milhares de libras para pagar advogados em causa própria e para usar serviços de táxi, entre outras coisas. Além disso ele foi criticado por gastar muito com viagens, gastar alguns milhões na reforma da residencia oficial do Speaker of the House (que no fim das contas é patrimônio público e não fica para ele), além de ter ganho uma aposentadoria milionária de forma - como dizem por aqui - legal porém imoral. </p><p style="text-align: justify">Há um detalhe interessante: Martin foi o primeiro Speaker of the House of the Commons a ser forçado a renunciar ao cargo por acusações de corrupção<span style="font-weight: bold; font-style: italic"> em 300 anos</span>. Nosso senado teve 3 renúncias em 8 anos - Renan Calheiros, Jáder Barbalho e Antônio Carlos Magalhães (turminha do barulho, não?) e nossa Câmara de Deputados teve o recente caso do Severino Cavalcanti (em 2005).</p><p style="text-align: justify">Outro caso interessante a se ter em mente a respeito de como a corrupção funciona em instituições de respeito por aí pelo mundo é lembrar do caso do ex-presidente do Banco Mundial Paul Wolfowitz, que foi obrigado a deixar a instituição depois que alguém descobriu que sua namorada teve um aumento de salário equivalente a aproximadamente 50 mil dólares por ano quando ele chegou à presidência.</p><p style="text-align: justify">50 mil dólares, 20 mil libras...</p><p style="text-align: justify">50 mil dólares por ano é o que ganhava o neto de José Sarney como secretário no Senado, nomeado por ato secreto de Agaciel Maia, diretor da casa, que era por sinal compadre de Sarney: o senador foi padrinho de casamento de sua filha. Quatro senadores, incluindo Sarney, recebiam irregularmente auxílio moradia totalizando pouco mais de 80 mil dólares por ano. </p><p style="text-align: justify">Entretanto, julga o presidente Lula, isso não é suficiente para que o presidente Sarney renuncie e o Senado é desmoralizado quando o chefe do Executivo  manda e desmanda nas decisões. </p><p style="text-align: justify">No Brasil para que um escandalo derrube alguém tem que ser muito maior do que o que foi o suficiente para o Speaker Martin e para o president Wolfowitz. </p><p style="text-align: justify">E eu nem quero começar a falar sobre a farra das passagens, sobre as outras diversas nomeações, sobre a não publicação de atos públicos de nomeação - o que chega a ser pior que tomar dinheiro público, sobre os 10 mil funcionários que o Senado sustenta com uma média salárial de 100 mil dólares por ano e sobre todos os outros múltiplos escandalos, de implicação profunda em todos os setores do Senado, que tivemos só durante o primeiro semestre de 2009. E nem quero comentar sobre o fato de que <span style="font-weight: bold; font-style: italic">ninguém foi punido até agora </span>e de que Agaciel Maia ainda é funcionário público.  </p><p style="text-align: justify">Sim, o Senado brasileiro é uma casa de horrores e a Câmara dos Deputados é só um pouco melhor. Comparados aos nossos os escandalos da Casa dos Comuns - e da maioria das casas legislativas dos países organizados onde impera a lei - parecem coisa de amador.</p>]]></description>
        </item>
                
        <item>
            <title><![CDATA[E não é que temos fascistas na USP?]]></title>
            <link>http://stoa.usp.br/calsaverini/weblog/52854.html</link>
            <guid isPermaLink="true">http://stoa.usp.br/calsaverini/weblog/52854.html</guid>
            <pubDate>Tue, 23 Jun 2009 16:02:44 GMT</pubDate>
		<dc:subject><![CDATA[greve]]></dc:subject>
		<dc:subject><![CDATA[flash mob]]></dc:subject>
		<dc:subject><![CDATA[fascista]]></dc:subject>
		<dc:subject><![CDATA[Folha de São Paulo]]></dc:subject>
            <description><![CDATA[<p style="text-align: justify">Hoje eu vi <a href="http://www1.folha.uol.com.br/folha/educacao/ult305u584972.shtml">essa matéria da Folha de São Paulo</a> falando sobre o evento da próxima quinta-feira na frente da FEA. Nessa matéria dois grupos foram descritos. Uma de um grupo chamado CDIE, que a um tempo vem recolhendo um abaixo assinado em oposição às decisões tomadas nas assembléias do DCE, que o grupo considera não ter representatividade dado o baixo quórum freqüente nas reuniões. </p><p style="text-align: justify">A outra é um grupo infantil que se autodenominou FlacUSP - Forças Libertárias Anti-Comunistinhas da USP - e quem fala em seu nome é um tal de Leandro, que é tão infantil que não identifica seu nome completo. Eu vi esse grupinho surgir na comunidade da USP no Orkut e eu alertei desde o primeiro post deles que eu achava uma idéia ruim, perigosa e infantil. E tinha certeza que ia acabar atraindo esse tipo de babaca como esse Leandro, que diz a entrevista:</p><div style="text-align: justify"><blockquote><p><em>Leandro classifica os atos do movimento grevista como &quot;balbúrdia&quot; e diz
preferir a ditadura. &quot;A ditadura impõe a ordem, não deixa essa zona
acontecer.&quot; 
</em></p></blockquote></div><p style="text-align: justify">Isso sim é um fascista, viram? Não me espanta nem um pouco que exista esse tipo de imbecil na USP. Dada a quantidade de imbecis de todos os tipos que eu já conheci por aqui, esse é só mais um maluco. Maluco perigoso, mas conheço outros malucos perigosos também de outro tipo. </p><p style="text-align: justify">O que me espanta mesmo é esse cara ser entrevistado como um dos organizadores do evento de quinta-feira - que está sendo chamado de flash mob mas na verdade não é, uma vez que vai ter uma organização mais centralizada e uma divulgação prévia mais organizada. Garanto a vocês: <strong>não é</strong>. Eu conheço as pessoas que estão organizando, a maioria delas pessoalmente. Nenhuma delas concorda com a barbaridade que esse Leandro, se é que o nome dele é esse, falou para a jornalista.  </p><p style="text-align: justify">Se ele estava lá no flash mob do dia 19, eu não sei quem ele é (não conheço as 300 pessoas que foram espontaneamente no evento), mas idéias e ações desse tipo não serão toleradas pela organização, tenho certeza. E eu garanto que se forem, eu me recuso a ir no evento e saio de lá imediatamente.</p><p style="text-align: justify">Razoabilidade tem que acontecer dos dois lados e quem está aqui querendo fazer um negócio pacífico e dialogar com o pessoal que aderiu a greve para tentar atingir uma convivência decente não vai tolerar que radicais imbecis falem por eles. </p><p style="text-align: justify">Estou mandando esse texto para a jornalista que escreveu a matéria, espero que ela esclaresça na matéria que esse cara não tem nada a ver com a organização do evento.  </p>]]></description>
        </item>
                
        <item>
            <title><![CDATA[Afinal, quais são as razões de quem não adere à greve?]]></title>
            <link>http://stoa.usp.br/calsaverini/weblog/52705.html</link>
            <guid isPermaLink="true">http://stoa.usp.br/calsaverini/weblog/52705.html</guid>
            <pubDate>Sun, 21 Jun 2009 22:18:31 GMT</pubDate>
		<dc:subject><![CDATA[contra a greve]]></dc:subject>
		<dc:subject><![CDATA[perplexidade]]></dc:subject>
		<dc:subject><![CDATA[greve 2009]]></dc:subject>
		<dc:subject><![CDATA[greve]]></dc:subject>
            <description><![CDATA[<p style="text-align: justify">Hoje eu estava passando o olho pelo grupo de e-mails do DCE hoje, por curiosidade, e me deparei com uma pergunta legítima de uma garota: afinal de contas, o que esse pessoal contra a greve pensa? Como eles se justificam?</p><p style="text-align: justify"> Eu parei para pensar e notei que enquanto os que defendem a greve centralizam bastante seu movimento e tem pautas de reivindicações bem claras, nós realmente não nos preocupamos em dizer o que pensamos a respeito da greve e nos contentamos em manifestar a decisão final contra ela. Por sentir que a dúvida da garota era de fato genuína eu resolvi escrever algo sumarizando o que eu penso sobre o assunto. Não cabe aqui no blog. Sinto muito, ficou meio grande. Como tudo que eu escrevo eu escrevi muito mais para mim mesmo, para solidificar meus raciocínios internos sobre o assunto, do que para ser lido por outras pessoas. Mas vou colocar aqui.</p><p style="text-align: justify"> É um pdf com 8 páginas. Mas o espaçamento é duplo e a largura do texto é a padrão de 60 caracteres, de forma que nem é tanto texto assim. Me custou umas duas horas para escrever e pode ser lido em uns 15 minutos. Vou colocar apenas o parágrafo inicial aqui e o resto fica linkado no pdf abaixo. </p><blockquote><p><span style="font-style: italic">Aos que se interessam,</span></p><div style="text-align: justify"><span style="font-style: italic">tendo percebido que há uma certa incompreensão por parte de alguns estudantes aderentes à greve a respeito das razões pelas quais outros estudantes não aderiram à greve, em parte por nossa culpa de não expor essas razões de maneira clara e objetiva, resolvi escrever essa carta. Fui motivado particularmente por uma discussão que li na lista do grupo de e-mails do DCE, que me mostrou que muitas pessoas querem de fato entender as razões e têm genuína dúvida a respeito disso.</span></div><p>&nbsp;</p><p>Para continuar lendo <a href="http://stoa.usp.br/calsaverini/files/-1/9006/main.pdf">clique aqui</a>. </p></blockquote>]]></description>
        </item>
        
        <item>
            <title><![CDATA[]]></title>
            <link>http://stoa.usp.br/calsaverini/files/-1/9006/main.pdf</link>
            <enclosure url="http://stoa.usp.br/calsaverini/files/-1/9006/main.pdf" length="187244" type="application/pdf" />
            <pubDate>Mon, 22 Jun 2009 01:27:01 GMT</pubDate>
            <description><![CDATA[]]></description>
        </item>
        <item>
            <title><![CDATA[manifesto_Letras]]></title>
            <link>http://stoa.usp.br/calsaverini/files/-1/8942/Manifesto+dos+alunos+em+rep%C3%BAdio+ao+incidente+na+Letras+em+09.06.2009.pdf</link>
            <enclosure url="http://stoa.usp.br/calsaverini/files/-1/8942/Manifesto+dos+alunos+em+rep%C3%BAdio+ao+incidente+na+Letras+em+09.06.2009.pdf" length="21600" type="application/pdf" />
            <pubDate>Thu, 11 Jun 2009 19:34:59 GMT</pubDate>
            <description><![CDATA[]]></description>
        </item>
        <item>
            <title><![CDATA[]]></title>
            <link>http://stoa.usp.br/calsaverini/files/1610/8939/foto3.jpg</link>
            <enclosure url="http://stoa.usp.br/calsaverini/files/1610/8939/foto3.jpg" length="126856" type="image/jpeg" />
            <pubDate>Thu, 11 Jun 2009 13:15:45 GMT</pubDate>
            <description><![CDATA[]]></description>
        </item>
        <item>
            <title><![CDATA[]]></title>
            <link>http://stoa.usp.br/calsaverini/files/1610/8940/foto4.jpg</link>
            <enclosure url="http://stoa.usp.br/calsaverini/files/1610/8940/foto4.jpg" length="119904" type="image/jpeg" />
            <pubDate>Thu, 11 Jun 2009 13:15:45 GMT</pubDate>
            <description><![CDATA[]]></description>
        </item>
        <item>
            <title><![CDATA[]]></title>
            <link>http://stoa.usp.br/calsaverini/files/1610/8937/foto1.jpg</link>
            <enclosure url="http://stoa.usp.br/calsaverini/files/1610/8937/foto1.jpg" length="89080" type="image/jpeg" />
            <pubDate>Thu, 11 Jun 2009 13:15:44 GMT</pubDate>
            <description><![CDATA[]]></description>
        </item>
        <item>
            <title><![CDATA[]]></title>
            <link>http://stoa.usp.br/calsaverini/files/1610/8938/foto2.jpg</link>
            <enclosure url="http://stoa.usp.br/calsaverini/files/1610/8938/foto2.jpg" length="90886" type="image/jpeg" />
            <pubDate>Thu, 11 Jun 2009 13:15:44 GMT</pubDate>
            <description><![CDATA[]]></description>
        </item>
        <item>
            <title><![CDATA[]]></title>
            <link>http://stoa.usp.br/calsaverini/files/-1/8380/site1.png</link>
            <enclosure url="http://stoa.usp.br/calsaverini/files/-1/8380/site1.png" length="324570" type="image/png" />
            <pubDate>Mon, 13 Apr 2009 02:01:21 GMT</pubDate>
            <description><![CDATA[]]></description>
        </item>
        <item>
            <title><![CDATA[Vaca]]></title>
            <link>http://stoa.usp.br/calsaverini/files/-1/3160/SPS_TShirt_Back.gif</link>
            <enclosure url="http://stoa.usp.br/calsaverini/files/-1/3160/SPS_TShirt_Back.gif" length="28446" type="image/gif" />
            <pubDate>Wed, 09 Apr 2008 02:10:17 GMT</pubDate>
            <description><![CDATA[]]></description>
        </item>
        <item>
            <title><![CDATA[]]></title>
            <link>http://stoa.usp.br/calsaverini/files/-1/1821/ClariFFT.jpg</link>
            <enclosure url="http://stoa.usp.br/calsaverini/files/-1/1821/ClariFFT.jpg" length="35856" type="image/jpeg" />
            <pubDate>Sun, 21 Oct 2007 02:20:50 GMT</pubDate>
            <description><![CDATA[]]></description>
        </item>
        <item>
            <title><![CDATA[]]></title>
            <link>http://stoa.usp.br/calsaverini/files/-1/1822/violao.jpg</link>
            <enclosure url="http://stoa.usp.br/calsaverini/files/-1/1822/violao.jpg" length="25972" type="image/jpeg" />
            <pubDate>Sun, 21 Oct 2007 02:20:50 GMT</pubDate>
            <description><![CDATA[]]></description>
        </item>
    </channel>
</rss>