Antonio Terceiro


Validate the RSS feed

Seu Blog

É preciso logar para criar ou gerenciar seu blog.

  • Todos os posts:

debconf8: eu vou!

(01 Aug 2008 - 13:25)

I'm going to DebConf8, edition 2008 of the annual Debian developers meeting

atrasado, correndo, mas é isso aí.

(mas pelo menos eu vou!)

uhu! smile

cronômetro em shell script

(01 Jul 2008 - 15:45)

Pra quem não usa relógio, é mais prático do que tirar o celular do bolso e futucar os menus até conseguir iniciar o cronômetro. E é ridiculamente simples também:

time read

ENTER inicia, ENTER para. smile

twiki.softwarelivre.org de volta e atualizado

(26 Jun 2008 - 20:46)

Depois de alguns dias com problemas, o twiki.softwarelivre.org está de volta. Além de uma nova máquina, temos também uma nova versão do TWiki (4.2), que tem várias melhorias inclusive de desempenho.

O único problema visível até agora é o layout da web Blogs ... Amadeu? wink

update (Seg Jun 30 20:41:48 BRT 2008): tivemos alguns problemas com a nova máquina mas já estamos de volta. Continuamos, no entanto, rodando a versão mais recente do TWiki.

extraindo o tamanho em linhas de código de um projeto, e só

(13 May 2008 - 16:11)

o sloccount é bem legal, mas a saída dele é muito detalhada pro que eu preciso no momento. Por hora eu preciso ter apenas um número que indica o tamanho de um projeto de software em termos de linhas de código.

Um hack rápido resolve o caso:

terceiro@morere:/tmp/inkscape-0.46$ sloccount . | grep 'Total.*SLOC' | cut -d = -f 2 | sed -e 's/,//; s/\s//'
369021
terceiro@morere:/tmp/inkscape-0.46$ cd ../libmocha-ruby-0.5.6/
terceiro@morere:/tmp/libmocha-ruby-0.5.6$ sloccount . | grep 'Total.*SLOC' | cut -d = -f 2 | sed -e 's/,//; s/\s//'
4924

primeira reunião do Coding Dojo Salvador

(13 May 2008 - 15:40)

Quando eu descobri o conceito de Coding Dojo, me deu uma vontade monstra de fazer algo do tipo em Salvador.

Depois do fisl9.0 foi difícil conter essa vontade. Daí que a idéia saiu do papel, afinal. Ontem aconteceu a primeira reunião do Coding Dojo Salvador. Apeser de ter pouca gente, foi muito legal. No começo eu fiz uma pequena apresentação sobre o que é, como acontece, e depois partimos pra resolver o problema.

Segunda que vem tem mais. Aparentemente vai ter mais gente. wink

métricas para Ruby

(10 May 2008 - 16:55)

tomando nota ...

  • saikuro: ferramenta que calcula complexidade ciclomática para código Ruby
  • flog: ferramenta que calcula uma métrica de complexidade, digamos, interessante para código Ruby.
  • rcov, ferramenta que calcula cobertura do código pelos testes
  • metric-fu, plugin para Rails usa as ferramentas pra gerar relatórios de métricas para projetos Rails

conversa pra boi dormir

(06 May 2008 - 13:12)

Raramente eu vejo uma "reportagem" tão vazia quanto essa. Tudo é festa, não se divulga nenhuma informação concreta sobre o acordo, só discurso vazio ...

O vídeo termina com o governador:

Eu venho trabalhando muito pra ampliar as oportunidades de inclusão da nossa juventude na questão digital, estamos construindo 326 novos centros de inclusão digital, e achei essa porta aberta com a Microsoft, que seguramente ampliará essa possibilidade de treinamento. Tudo que puder contribuir para superar a dificuldade, principalmente da juventude, nós estamos dispostos a somar.

Pra quem não conseguir assistir no site oficial, que só funciona com software proprietário, eu futuquei a página e baixei o vídeo flv: wagner-e-a-microsoft.flv

Wagner, diga não às drogas!

(30 Apr 2008 - 22:55)

O governador está mal assessorado, coitado. Como é que pode fazer um protocolo de intenções onde se coloca a estrutura pública de educação a serviço de uma empresa privada, multinacional, pra formar usuários de seus produtos?

Em reação a isso, o PSL-BA, através de vários de seus militantes, fez uma visita nessa terça-feira à Assembléia Legislativa do Estado da Bahia e consegui aprovar na Comissão de Educação, Ciência e Tecnologia, Cultura e Serviço Pública uma audiência pública para tratar do tema.

Estamos de olho!

case insensitive matching em bancos relacionais livres

(29 Apr 2008 - 23:00)

Umas das coisas legais de usar Rails é que você pode com relativamente pouco esforço testar sua aplicação com diferentes bancos de dados. Se você estiver usando construções portáveis (i.e. usando ActiveRecord em vez de SQL na mão), muito provavelmente sua aplicação vai funcionar igual em qualquer banco. Dessa forma na Colivre por exemplo a maioria de nós desenvolve usando SQLite, mas fazemos deploy das aplicações usando PostgreSQL. O único overhead que isso adiciona é, antes de lançar uma nova versão, rodar a suíte de testes contra o PostgreSQL pra garantir que nenhum código não-portável com relação a banco de dados foi incluído.

Dessa vez não deu certo: enquanto SQLite e MySQL são case insensitive ao processar uma cláusula LIKE, por exemplo, enquanto o PostgreSQL é case-sensitive. Graças a São Ignúcios a gente tem uma suíte de testes bem sólida e eu tinha incluído testes de case sensitiviness antes de ver a aplicação explodindo na cara dos usuários. smile

post obrigatório sobre o fisl9.0

(24 Apr 2008 - 02:57)

Aff, demorou mas saiu.

Bom, o fisl9.0 foi diferente de todos os outros. Não estar mais na organização me fez ver um outro evento muito diferente: nada de milhões de coisinhas que dão errado, correria pra todo lado, fulaninho reclama aqui, ciclaninha reclama ali ... tudo isso é coisa do passado. Esse ano foi só curtição: assisti todas as palestras que quis, e as que eu perdi foi porquê conversar com alguém num estande ou simplesmente ficar hackeando um pouquinho tava bom.

O estande do Debian estava muito bom, as coisas vendendo que nem água. Eu quero dar efusivos parabéns ao pessoal que organizou o estande: até onde eu percebi foi o faw, a Carol e o Frolic; se teve mais alguém foi mal aí a omissão. A assinature de chaves esse ano foi bem legal: estou com um backlog de várias chaves pra assinar, prometo que faço assim que der. stick out tongue

Fiz duas palestras:

No mais, foi maravilhoso rever amigos e poder trocar idéias.

mirror sob demanda com nginx

(01 Apr 2008 - 04:58)

Eu estou testando a geração de imagens de CD do BrDesktop mas não tenho disco pra manter um mirror local. Tentei usar apt-proxy, apt-cacher-ng, mas todos fizerem o simple-cdd dar pau porquê pra construir o CD são necessários subdiretórios no mirror (doc, tools, etc) que essas ferramentas não suportam.

Decidi então procurar uma solução pra fazer algo parecido com o que o apt-proxy e o apt-cacher-ng fazem, mas pra todo o mirror e não só pro pool/ e dists/. Procurando no scroogle achei esse post sobre um mirror sob demanda usando o nginx. nginx é mais um desses servidores web light que prometem pouco uso de memória e bom desempenho.

Resolvi tentar, e não é que depois de futucar um pouco e dar uma mexida na configuração do cara, deu certo? A configuração do nginx ficou assim:

server {
   listen 80;
   server_name localhost;

   access_log /var/log/nginx/localhost.access.log;

   location /debian {
      root /home/terceiro/mirror;
      error_page 404 403 = /fetch$uri$args;
   }

   location /fetch {
      proxy_pass http://ftp.br.debian.org;
      proxy_store on;
      proxy_store_access user:rw group:rw all:rw;
      proxy_temp_path /home/terceiro/mirror;
      alias /home/terceiro/mirror;
   }

}

Tem uma limitação que é: de vez em quando eu preciso apagar os arquivos Release e Packages* pra pegar as atualizações do repositório, e fiz um script clean.sh que fica na raiz do mirror pra fazer isso:

#!/bin/sh

find . -name Release\* -exec rm -f '{}' ';'
find . -name Packages\* -exec rm -f '{}' ';'

Daí uso http://localhost/debian como meu mirror Debian, e o simple-cdd se entende com ele que é uma beleza a imagem é gerada. Ela ainda não instala, mas vamos chegar lá. smile

monitorando a bateria na tora

(06 Mar 2008 - 16:34)

Bom, o plugin monitor de bateria pro XFCE não está funcionando com o Linux 2.26.4, de forma que eu precisei dar um jeito de monitorar a bateria.

Eu tinha visto em algum lugar que o Jeito Certo e portável de se monitorar (e usar) hardware era usando HAL, então decidi fazer um hack pra resolver meu problema por hora. Dei uma futucada nos comandos disponíveis e saiu isso:

#!/bin/sh

##################################################
# CUSTOMIZE HERE AS YOU WISH
##################################################

power_supply_alert(){
 aplay /usr/share/orage/sounds/Spo.wav
}

##################################################
# YOU SHOULDN'T NEED TO CHANGE ANYTHING BELOW HERE
##################################################

# battery
BATTERY_DEVICE=$(hal-find-by-property --key info.category --string battery | head -n 1)
BATTERY_PERCENT=$(hal-get-property --udi ${BATTERY_DEVICE} --key battery.charge_level.percentage)

# AC Adapter
AC_DEVICE=$(hal-find-by-property --key info.category --string ac_adapter | head -n 1)
AC_STATUS=$(hal-get-property --udi ${AC_DEVICE} --key ac_adapter.present | sed -e 's/true/on-line/; s/false/off-line/')

if [[ ${BATTERY_PERCENT} -lt 10 ]] && [[ ${AC_STATUS} == 'off-line' ]]; then
  power_supply_alert
fi

echo "AC: ${AC_STATUS} BAT: ${BATTERY_PERCENT}%"

Daí estou usando esse script com o "monitor genérico" do XFCE, que você configura com um comando e uma periodicidade, e ele mostra no painel a saída padrão do comando.

/pub/Blogs/BlogPostAntonioTerceiro20080306161112/monitorando-bateria.png

Coding Dojos

(05 Mar 2008 - 12:36)

Um Coding Dojo é um grupo de pessoas que se reune periodicamente pra resolver problemas de programação, normalmente usando Desenvolvimento Dirigido por Testes e Programação em Pares. Aparentemente parece que existem 3 dojos ativos no Brasil:

Seria uma boa fazer um troço desses em Salvador ... mas no meu estado atual de carga de trabalho seria fatal tentar organizar. Alguém aí a fim?

Universal access, pero no mucho

(28 Feb 2008 - 12:20)

Sometimes we face the contradiction ...

[...] The Contest is not open to residents of Cuba, Iran, Syria, North Korea, Sudan, Myanmar (Burma), or to other individuals restricted by U.S. export controls and sanctions, and is void in any other nation, state, or province where prohibited or restricted by U.S. or local law. [...]

from the GNOME Outreach Program: Accessibility rules.

US government sucks.

GNOME Foundation is in the US, but it doesn't suck. It is constrained by the crush-the-losers policy of the US government.

em casa de ferreiro, o espeto é de pau

(21 Feb 2008 - 15:21)

Na ACM Digital Library, procurar por (A) and (B) and (C) dá resultados diferentes de procurar por ((A) and (B)) and (C),que dá resultados diferentes de procurar por (((A)) and (B)) and (C).

Genial. Eu ainda estou tentando entendar a lógica doentia por trás dessa joça.

FSF member #6259

(16 Jan 2008 - 15:19)

[FSF Associate Member]

Colabore você também.

(os links acima irão levar a informação de que você se registrou por indicação minha e vão me dar pontos que eventualmente eu posso usar pra ganhar brindes da FSF. Se você não quiser isso siga esse link aqui)

manipulando pipes com Ruby

(13 Jan 2008 - 03:16)

Muito bom. smile

$ irb
>> pipe = IO.popen('sed -e "s/a/b/g"', 'w+')
=> #<IO:0xb7c54b8c>
>> pipe.puts('aaa')
=> nil
>> pipe.puts('antonio terceiro')
=> nil
>> pipe.close_write
=> nil
>> pipe.read
=> "bbb\nbntonio terceiro\n"

Eu cheguei a me bater com isso antes de descobrir que tem que chamar um close_write antes de tentar ler do pipe ... ainda não descobri se dá pra ler do pipe antes de terminar de escrever (pra poder por exemplo controlar outro programa interativamente).

Wikis vão para a impressão

(15 Dec 2007 - 13:23)

Acabei de ler a notícia no site da Wikimedia Foundation. A PediaPress, uma empresa startup da Alemanha desenvolveu uma biblioteca livre chamada mwlib pra fazer parsing de conteúdo do MediaWiki e gerar arquivos para impressão. A Wikimedia Foundation fez uma parceria com a Open Society Institute e a Commonwealth of Learning, que vão financiar o desenvolvimento pela PediaPress.

Aparentemente a mwlib "só" interpresa o conteúdo do MediaWiki, eu não consegui achar o código que eles estão usando pra gerar PDF (demo no site WikiEducator), mas os resultados são só razoáveis. Acho que os resultados poderiam ser melhores se eles estivassem usando LaTeX pra gerar o PDF, mas pelo que eu vi no código da mwlib LaTeX parece estar sendo usado só pra gerar figuras para fórmulas matemáticas.

Outro projeto relacionado interessante é o kiwix, desenvolvido para se distribuir versões offline da Wikipedia, desenvolvido para o Wikipedia on DVD.

atualizando o Planeta PSL-BA

(04 Dec 2007 - 13:19)

Acabei de instalar o novo feed de Aurium. Além disso consertei o template do index.html pra gerar corretamente a URL dos feeds ali na barra que lista os blogs todos.

Queria com esse post convidar todos a ajudar na manutenção do planeta. A configuração dele fica num repositório subversion em https://svn.softwarelivre.org/svn/psl-ba/planeta/trunk

Quem quiser fazer alguma mudança de endereço de feed, alterar templates, fazer um design novo, qualquer coisa, usa esse repositório e me manda um patch.

Dica: enquanto a configuração do planeta estiver usando tecnologia obsoleta, vocês podem fazer modificações com commits locais antes de me mandar usando svk ou git-svn. Eles estão disponíveis nos melhores sistemas operacionais, basta digitar apti<Tab> inst<Tab> svk git-svn . wink

bit invertido

(01 Dec 2007 - 20:29)

Sempre me disseram que era possível que um bit se invertesse do nada num banco de memória ou num disco rígido, mas eu nunca tinha visto acontecer. Hoje eu vi.

Eu estava trabalhando no noosfero quando de repente, não mais que de repente, ao rodar um teste de integração o Ruby começou a dar um erro de sintaxe num arquivo do Rails:

terceiro@sede:~/src/noosfero$ rake test:integration
(in /home/terceiro/src/noosfero)
rake aborted!
/home/terceiro/src/noosfero/config/../vendor/rails/actionmailer/lib/action_mailer/vendor/text/format.rb:1456: syntax error, unexpected ',', expecting '\n' or ';'
          def hyphenate_to8word, size, formatter)
                                ^
/home/terceiro/src/noosfero/config/../vendor/rails/actionmailer/lib/action_mailer/vendor/text/format.rb:1456: syntax error, unexpected ')', expecting '='
          def hyphenate_to8word, size, formatter)
                                                 ^
/home/terceiro/src/noosfero/config/../vendor/rails/actionmailer/lib/action_mailer/vendor/text/format.rb:1466: syntax error, unexpected kEND, expecting $end

(See full trace by running task with --trace)

Aquele 8 deveria ser um parêntese, ok, mas o Rails não teria saído com um erro de sintaxe ridículo desse. Fui lá no arquivo e o 8 realmente estava lá, mas não tava dando erro antes, e eu não tinha mudado nada que pudesse disparar a inclusão de um arquivo que não estivesse sendo usado ainda. Fui no repositório subversion e lá o arquivo estava ok.

Diabos, o que é que tinha acontecido? O subversion não reportava o arquivo como alterado, e a última alteração foi exatamente a inclusão do rails no repositório:

terceiro@sede:~/src/noosfero$ svn log /home/terceiro/src/noosfero/config/../vendor/rails/actionmailer/lib/action_mailer/vendor/text/format.rb
------------------------------------------------------------------------
r11 | AntonioTerceiro | 2007-07-02 13:00:11 -0300 (Seg, 02 Jul 2007) | 3 lines

adding Rails version 1.2.3 to the repository

"Ah, preciso ir em frente", eu pensei. Apaguei o arquivo e dei um svn update. Olhei o arquivo e agora o parêntese estava lá de volta. Não podia ser um bug no subversion. Daí eu me lembrei da história da inversão de bit e fui conferir:

terceiro@sede:~/src/noosfero$ irb
>> x = '8('
=> "8("
>> x[0]
=> 56
>> x[1]
=> 40
>> 32 + 16 + 2
=> 50
>> 32 + 16 + *
?> 32 + 16 + 8
SyntaxError: compile error
(irb):5: syntax error, unexpected tSTAR
        from (irb):6
        from :0
>> 32 + 16 + 8
=> 56
>> 32 + 8
=> 40
>> 

o caracter "8" é 56 = 8 + 16 + 32, ou em binário:

00011100

Já o "(" é 40 = 8 + 32, ou em binário:

00010100.

Ou seja: por algum motivo aquele quinto bit inverteu no disco! Tomara que isso não indique que o disco vai abrir o bico ... :-/