debconf8: eu vou!
(01 Aug 2008 - 13:25)
atrasado, correndo, mas é isso aí.
(mas pelo menos eu vou!)
uhu!
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.
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?
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.
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.
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.
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á.
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)
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.
$ 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 .
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 ... :-/