UOL XMLify: Um plugin do wordpress para propagandas do UOL XML
(Para os preguiçosos, o plugin está aqui: UOL XMLify )
Quando criei um novo blog com conteúdo que feria a licença de uso do google ad-sense (i.e. tinha mulépelada), fiquei sem opção de propagandas para colocar nos feeds. No blog em si não tinha muito problema, pois vários programas de afiliados aceitam esse tipo de conteúdo e são facilmente embutíveis em blogs, mas os feeds são outra estória. A maioria dos programas de afiliados usa javascript ou flash de uma forma ou de outra, inviabilizando o uso dos banners em leitores de feed (leia-se: não funciona no google reader).
Por sorte o UOL tinha uma modalidade nova no seu programa de afiliados: UOL XML. Esta modalidade consiste em uma API XML padrão onde eu poderia acessar a lista de produtos oferecidos, ofertas, etc, e processar e formatar da forma como bem entendesse. Primeiro pensei em fazer uma “gambiarra” como tinha feito pra embutir os anuncios do submarino (que são apenas imagens com um link padronizado), mas a coisa ficava mais complexa pois era preciso acessar o UOL e baixar os XMLs, processá-los e só então embutir no feed.
Optei pelo caminho mais difícil: desenvolvi um plugin. Ele está ainda em processo de aprovação pelo pessoal do wordpress para ser hospedado por lá, mas já coloquei a primeira versão aqui: UOL XMLify: Um plugin do wordpress para propagandas do UOL XML
Testem, usem e comentem!
Um milhão, um mil e um ou um milhão mil e um?
Para os preguiçosos:
O projeto de que trato aqui é um conversor de números para sua representação “por extenso”. Se você chegou aqui e não quer ter o trabalho de ler, apenas achar o código, siga este link: código (ou acesso o projeto no google code). Se, por outro lado, estiver em busca de explicações para fazer o seu próprio conversor ou curioso sobre como este conversor aí em cima funciona, leia o resto deste post.
Para os curiosos:
O título é esquisito, mas a dúvida era essa. O problema surgiu quando, num dos relatórios do sistema, o cliente exigiu que os valores fossem escritos de forma numérica (fácil, o NumberFormat dá conta que é uma beleza) seguidos do valor por extenso. Pensei com meu botões: não tem problema, TODO MUNDO já precisou disso um dia, deve ter DÚZIAS de conversores para números por extenso vagando pelo labirinto de Falken. Basta escolher o mais bonitim e boas!
Na verdade a tarefa nem era minha. Caiu pra mim quando surgiu o primeiro bug. A classe que tinham usado funcionava bem, contanto que o número fosse redondo ou pequeno. “Um milhão de reais” ele disse quando pedi pra converter 1.000.000,00. Mas logo depois me cospe “Um milhão e três de reais” pra 1.000.003,00. Hein? Mas peraí, isso eu conserto, vá… Só que o próximo número piorou: “Um milhão e seiscentos e cinquenta mil e novecentos e dez reais”. Pera lá! Tem E demais aí!.
A primeira coisa que pensei foi em achar outro conversor. Doce ilusão. Existir até existem. Vários (ou melhor, várias cópias do mesmo, já que parecem ser todos baseados no mesmo código original). Mas nenhum funciona.
Quer dizer, funcionam… Se você usar os números de teste que o autor usou! (Quem gosta disso pode fazer disto um “caso” para test-driven design, ou o que valha). Saindo um pouco do que o autor tinha em mente, a coisa desanda.
Nesse ponto eu não tinha mais escolha: teria de implementar o meu próprio conversor. Bom, que os outros estavam errados eu sabia, mas e qual a forma correta de se escrever por extenso? Depois de muita discussão e nenhum acordo, decidimos: Vamos consultar uma gramática!
Na biblioteca, pegamos logo 3 gramáticas. Nenhuma, claro, concordava com a quantidade de “e” que o sujeito usou. Alias, nenhuma delas concordava entre si. Uma, a mais antiga, pregava o uso de vírgulas a torto e a direito:
um bilhão, cento e vinte milhões, duzentos e três mil, cento e quarenta e sete.
A outra era categórica: depois de mil não! Só depois dos “ãos” é que tem vírgula:
um bilhão, cento e vinte milhões, duzentos e três mil cento e quarenta e sete.
E por último, uma que se dizia de acordo com o novo acordo ortográfico (que não tratou nem de números nem de vírgulas, mas que de alguma forma afetava a opinião do autor a respeito) abominava vírgulas:
um bilhão cento e vinte milhões duzentos e três mil cento e quarenta e sete.
Assim fica difícil, né? Em nosso auxílio veio uma ótima e hiper didática revisora de texto que passava pelo local:
Vírgulas servem para separar os elementos numa lista. No caso dos números, use para separar cada grupo de unidade, milhar, milhão, etc. (nesse ponto a gente, das exatas, anota: uma vírgula a cada potência de 1000). Mas elas não são absolutas, e podem ser omitidas se for para aumentar a clareza. Pense na clareza do texto e escolha a forma que melhor lhe convém. Depois de escolhido o melhor jeito, procure uma gramática que concorde com você e use ela como bibliografia!
Pra mim, esse conselho foi genial. E de certa forma resolveu nosso problema: bastava escolher o mais fácil de implementar e depois procurar uma gramática que nos apoiasse.
Acabei me guiando por 8 regrinhas, que definiram como implementar meu conversor:
- números abaixo de 20 tem nome próprio;
- de 21 a 99 os números são formados por DEZENA “e” UNIDADE (exemplo: “trinta e cinco”);
- dezenas redondas não tem nada depois (20 -> “vinte”, e não “vinte e zero”);
- 100 tem nome próprio: cem;
- números maiores que 100 são compostos por CENTENA “e” DEZENA ["e" UNIDADE];
- acima de 1000 agrupa-se os números em blocos de 3 dígitos (potências de 1000), que são representados como se fossem números menores do que 1000 acrescidos do sufixo representando a potência de mil apropriada (mil, milhão, etc);
- os grupos são concatenados por vírgula;
- A ultima concatenação é feita por “e” (“um milhão e 200 mil”);
- A ultima concatenação é omitida (ou substituída por vírgula) caso o ultimo grupo seja maior que 100 e não seja múltiplo e 100 (“mil[,] duzentos e cinquenta”)
- o “um” em frente ao descritor de grupo “mil” é opcional e deve ser parametrizável (“mil e um” e “um mil e um” são igualmente aceitáveis);
- Ao acrescentar a unidade (por exemplo “reais”) usa-se o prefixo “de” antes da unidade caso o último sufixo seja de milhão ou maior (“dez milhões de reais”, mas “dez mil reais”).
Com essas regras a implementação foi quase direta. Primeiro criei uma função para as unidades:
String unidades(int n) {
return UNIDADES[n];
}
Em seguida as dezenas:
String dezenas(int n) {
if (n < UNIDADES.length) return unidades(n);
int unidade = n % 10;
n = n / 10;
return DEZENAS[n] + " e " + unidades(unidade);
}
depois tratei a exceção da regra 3:
String dezenas(int n) {
. . .
String unidadeStr = "";
if (unidade != 0) {
unidadeStr = " e " + unidades(unidade);
}
return DEZENAS[n] + unidadeStr;
}
E seguindo as regras uma a uma cheguei no resultado final, que pode ser visto no google code. Ainda não está perfeito, e ainda quero brincar bastante com esse conversor, então deixem suas sugestões,seja aqui, seja como “bug” no google code, que eu implemento, caso dê tempo (e ânimo).
Em Roma, coma os romanos!
O Ricbit me sugeriu blogar sobre Roma antiga (o fato dele estar por lá deve ter influenciado a decisão, não?) E depois de pensar sobre vários assuntos blogáveis, como comparar Júlio César com Al-Capone (depois de ler Paul Veyne falando que a constituição romana é semelhante à da máfia, que também daria um bom post mas precisaria de váaaaaarios dias pra pesquisar sobre a máfia antes de escrever), lembrei desse próverbio inglês:
When in Rome, do as the Romans do.
Que em bom português é normalmente traduzido por:
Em Roma, como os Romanos.
E resolvi blogar sobre a sua origem. Pra variar, vou mandar ver logo duas hipóteses, a girinada e a verdadeira (ou pelo menos mais provável, por falta de fonte realmente fiável sobre o assunto provérbios populares).
Primeira versão (a versão religiosa):
A primeira versão é religiosa. E começa assim: No início do cristianismo, a hierarquia entre os bispos da igreja católica ainda não estava totalmente definida, e essa coisa que temos hoje de One Pope to rule them all não existia ainda. Cada bispo era basicamente autônomo na sua cidade. Foi nessa época que Santo Agostinho, recém chegado de Roma questionou Santo Ambrósio (uma deliciosa cerveja canadense, por sinal) sobre as diferenças de costume. O que mais chocava o coitado do santo era o diabo do jejum:
Em Roma jejuamos na sexta feira, disse Agostinho.
Pois em Milão, não! Replicou Ambrósio.
Mas se eu venho de Roma, e sigo a igreja de lá, devo jejuar?
Olha, meu amigo, deixa eu te dar um conselho: Em Roma, coma os romanos! Em Milão, coma bife à milanesa!
Era, claro, um trocadilho infame quanto aos jejuns (jejuns, coma bifes, etc, entendeu???). E ao que parece, o chefe da guarda pretoriana, uma espécie de Protógenes Queiroz da época, tinha escutas apropriadamente colocadas nos principais gabinetes de autoridades (a pedido do imperador Teodósio Lula da Silva, que nega saber de qualquer coisa), escutou a hilária conversa e divulgou aos panfleteiros de plantão (que faziam o papel de divulgação de fofocas de forma impressa, algo mais ou menos semelhante às revistas semanais hoje em dia).
O resultado foi um rebuliço só: Bife a milanesa virou prato nacional, a ser comido nas sextas feiras, e o provérbio “Em Roma, coma os romanos” tomou o império de tal forma que Teodósio proibiu seu uso em locais públicos, mas de nada adiantou. A coisa só cedeu em meados do século XIX, na inglaterra vitoriana que se considerava o novo Império Romano e admirava de tal forma a sua antiguidade que ressuscitou e recriou tudo que por lá havia. Inclusive os provérbios. Mas o puritanismo dos vitorianos ainda sobrepujava sua admiração por Roma. Quando republicou e traduziu as cartas de agostinho, Robert Burton preferiu poupar a sociedade da época de tamanha devassidão, e deu a ela a nova tradução, que é a que conhecemos até hoje:
When in Rome, do as the Romans do.
Segunda versão (a versão laica).
É muito fácil atribuir provérbios romanos a religião, afinal Jesus mesmo, na bíblia, já diz: A César o que é de César. E foi mesmo César (um dos) quem protagoniza a nossa segunda versão. César, o Júlio, foi famoso por vir, ver e vencer. Augusto por pagar suas dívidas nas calendas gregas. Nero, coitado, por por fogo em Roma, e Cláudio por ser retardado e aleijado1.
Pois foi esse mesmo Cláudio, que hora é retardado, hora um grande estudioso2, quem recebeu o embaixador da Trácia, no ano de 43 DC3. E benzadeus, ele como bom romano que nunca tinha saído da itália e passava as férias de verão em Ariminum, achou o costume de arrotar depois da refeição simplesmente uma porcaria completa! Indignado, não só expulsou o embaixador de sua presença como mandou uma legião inteira para conquistar a Trácia (sim, a dinastia júlio-claudiana era meio temperamental: o Tio-avô dele, Júlio, contratou uma frota naval para perseguir e capturar os piratas que o haviam seqüestrado e depois os crucificou, isso tudo para cumprir uma promessa que ele fez pros próprios piratas, dá procê?).
Por fim, ele foi pessoalmente à capital da Trácia onde exigiu vassalagem ao Sátrapa4 com um discurso sobre boas maneiras à moda romana. Pra terminar, o sair do palácio ainda indignado, soltou:
E de agora em diante, quando for a Roma, faça como os romanos!
- Na verdade não dá pra saber muito bem o que ele era, porque os antigos misturam muito isso de ser aleijado, retardado ou simplesmente sem noção. Uma dessas três coisas ele com certeza era.
- Olha só como as fontes sobre história romana são controversas…
- Depois de cristo, nada a ver com a editora de quadrinhos
- Que é tipo um sacripanta, só que manda mais.
Tomtom
Filed under: animais, esquisitices, girinadas, nerdices, news
Nasceu neste domingo 12/04/2009, às 4:16h da madrugada o tomtom. Como bom filho de nerd, já nasceu com um LOLCat próprio (baseado em idéia do kentaro).
Obrigado a todos que ligaram, escreveram, twittaram e orkutaram, não necessáriamente nessa mesma ordem… Ou não…
eeebuntu, ubuntu-eee, crunchee e eeexubuntu: Impressões de uma semana depois de comprar um cartão SD de 8Gb
Semana passada eu disse que tinha comprado um cartão de memória de 8Gb pra rodar outros OSs no meu eeepc 701. Essa semana eu conto o que achei, tendo experimentado um pouco de tudo.
O primeiro que eu instalei foi o ubunutu-eee. Achei bacana, mas o tempo de boot era pobrinho. Pedi sugestões e esses foram os que me indicaram:
- ubuntu-eee
- eeebuntu (thanks xuruder)
- cruncheee (thanks Ricardo Duarte)
- eeexubuntu (thanks google).
A comparação que eu fiz é muito mais intuitiva do que qualquer outra coisa, por isso a percepção de outras pessoas pode ser completamente diferente da minha. Vou dividir as impressões de acordo com o que eu encontrei de diferenças relevantes entre os sistemas, seja porque me agradou, seja porque desagradou.
Pros apressados, uma tabela:
| eeebuntu | Ubuntu-eee | cruncheee | eeexubuntu | xandros (pre instalado) | |
| Tempo de boot | ~2 min | ~2 min | ~2 min | ~1min 20 sec | 20 sec (+20 sec para conectar na rede wi-fi) |
| Interface com o usuário | Excelente | Excelente (mas mais feio) | Ruim | Péssima | Razoável |
| Programas pré instalados | Ruim | Muito bom | Bom | Ruim | Razoável |
| Configurações especificas para o modelo | Bom | Ruim | Excelente | Ruim | Pré-configurado |
Pros menos apressados… Read more
twilight, ubuntu-eee e clotilde!
Primeiro, graças a Lila, que alguns aqui conhecem, consegui o “O destino se chama Clotilde“. Chegou ontem, e eu já comecei a ler. Eu lembrava de muita coisa, mas o que mata são realmente os detalhes: hilários, sempre! Valeu mesmo a pena “caçar” de novo o livro depois de tantos anos. Se tiver paciência, posto uma resenha depois de (re)ler.
Segundo, comprei um cartão SDHC de 8Gb pra instalar outros SO’s no meu eee pc. Tentei agora o ubuntu-eee. Legal, mas dois detalhes fodem com tudo: Ele exige muito mais processamento do eee (o micro fica quente enquanto eu uso, o que nao acontece no xandros) e o tempo de boot é ABSURDAMENTE maior. Pelas minhas contas, 6 vezes maior já que de 20 segundos pula pra 2 minutos. Vou experimentar apenas “hibernar” pra ver como fica.
Alguém tem outra dica de SO pra rodar no bichinho? (Sempre no cartão de memória, porque não vou matar o xandros nativo dele enquanto não tiver algo que boote em menos de 30 segundos). Será que rola recompilar o kernel “no braço” tirando tudo que eu não for usar? Outra coisa que me incomoda é o pulseaudio! Rola desabilitar/desinstalar?

Zé Topete e Dentucinha
E por ultimo, vi o filme mais emo da historia da humanidade: Twilight! Minha esposa1 leu os livros e resolveu ver o filme. Enrolamos ainda um pouco, e hoje estávamos sem o que fazer, resolvemos ver. Segundo a Anita, o Edward é bonito, mas o filme é um lixo! É arrastado, lento, com péssimas atuações e um elenco EMO, um roteiro EMO e uma filmagem EMO que parece que mesmo quando o casal tá no mór love, tá todo mundo triste, prestes a chorar. A ÚNICA cena onde o povo abre um sorriso é quando o Edward apresenta a dentucinha pra família dele (Confesso que a dentucinha também valeria a pena ver num filme de vampiros “de verdade” onde rolasse um pouco mais de putaria, apesar de ter pouca carne!). Enfim, entendi porque a miguxada adorou o filme: é emo até a alma, e emo tá na moda. O vampiro é bonitão e tem cabelinho com um topete meio emo, meio da moda. E a censura é livre, afinal ninguém come ninguém. Aconselho quem for pedófilo a levar sua namorada de 14 anos, ela deve adorar!
Pensando bem, acho que o ambiente “emo” tem mais a ver com os atores serem todos totalmente inexpressivos do que com a intenção de ser emo. É que o filme é tão ruim, que sem querer fizeram algo que agradasse o público aborrecente e irritasse o resto do mundo. E a coitada da dentucinha desperdiçou a carreira dela com esse filme. Se não filmarem as continuações, ela nunca mais vai conseguir um papel decente (e ela era a melhor atriz do filme todo, tirando talvez o índio de cadeiras de rodas que aparece em duas cenas).








