computação

make-photo-pages (mpp.py) 1.0

Cerca de quatro meses depois do primeiro anúncio público, estou lançando oficialmente o mpp.py 1.0.

Não há grandes novidades (“features”), mas o programa agora está bem mais usável e estável, com cara de v1.0. Não tenho planos de fazer grandes mudanças no mpp.py. Melhorias devem aparecer de maneira orgânica, através de necessidades vindas de ademar.org/fotos ou contribuições. A principal possibilidade de melhorias é a adição de novos modelos, mas como sou um péssimo webdesigner, não me atrevo a ir além do basicão.

Mais detalhes na página oficial:

download | documentation | examples

Linux: configurando destino dos arquivos core

Há algum tempo atrás, ainda em Manaus, lembro-me do Thiago perguntando “Existe algo como uma variável de ambiente COREDUMP_DIR?” Após alguma discussão sobre a viabilidade e uma rápida pesquisa, ele mesmo descobriu que não só é possível especificar um diretório, mas também onde e com que nome o kernel 2.6 deve guardar os arquivos de core-dump.

Para isso basta gravar uma máscara em /proc/sys/kernel/core_pattern de até 64 caracteres usando as seguintes variáveis:

  %%  o caracter '%'
  %p  PID do processo
  %u  UID real do processo
  %g  GID real do processo
  %s  número do sinal que causou o dump
  %t  hora do dump (em segundos desde 00:00h de 1970-jan-01)
  %h  nome do host
  %e  nome do arquivo executável do processo

Já o arquivo /proc/sys/kernel/core_uses_pid, bem mais antigo e mantido por questões de compatibilidade, controla se os arquivos de core devem ter ou não anexados a seu nome o PID do processo, sendo ignorado caso %p seja usado no core_pattern.

Por exemplo, para ter a máscara /var/tmp/corefiles/%e-%t-sig%s.core, sem PID, basta executar:

echo /var/tmp/corefiles/%e-%t-sig%s.core > /proc/sys/kernel/core_pattern
echo 0 > /proc/sys/kernel/core_uses_pid

Ou melhor ainda, adicionar a /etc/sysctl.conf:

kernel.core_pattern=/var/tmp/corefiles/%e-%t-sig%s.core
kernel.core_uses_pid=0

Se seu ambiente é multiusuário ou você espera gerar cores de um mesmo nome de processo com uma frequência maior do que de uma vez por segundo, recomendo a máscara /var/tmp/corefiles/%e-%t-%p-sig%s.core.

Algumas dicas:

  • Lembre-se de deixar o diretório destino com stick-bit (chmod 1777) para que multiplos usuários possam ter seus cores guardados de maneira segura;
  • Se seus programas não estão gerando core, verifique seu ulimit (comando ulimit -c e configuração em /etc/security/limits.conf);
  • Pra testar, você pode usar um script bash contendo o comando kill -s SIGSEGV $$.

Mais informações em linux/Documentation/sysctl/kernel.txt

Banda-larga de verdade, até que enfim!

Tenho até que respirar fundo pra escrever isso depois de tanto tempo no sufoco da linha discada: estou conectado à Internet a 2Mbps. É um marco na história desse blog que nasceu e cresceu em meio a reclamações da péssima qualidade do acesso à Internet em Manaus, e é uma pena que só consegui resolver o problema após mudar de cidade.

Optei por um plano combo da NET, que está com uma estratégia de triple-play: TV, telefone e Internet, tudo através do mesmo cabo. A instalação foi feita ontem e até o momento estou bastante satisfeito. Há um filtro que limita a velocidade pra alguns protocolos P2P (bittorrent, por exemplo), mas o uso de criptografia parece aliviar o problema.

Ainda há muita coisa da mudança pra arrumar, mas logo logo terei um pouco mais de tempo pra voltar a utilizar o micro com mais frequência e tirar o atraso da época dos 33kbps. :-)

make-photo-pages (mpp.py)

Depois de anos gerenciando minhas fotos utilizando uma versão ultra-hackeada do makethumbs.sh, finalmente tirei um tempo pra implementar meu próprio programa pra gerenciar os álbuns de fotos que disponibilizo em minha página (não, eu não gosto de usar o flickr). :-)

Creio que o principal diferencial do mpp.py é o suporte à geração de álbums a partir do XML exportado pelo Picasa(TM) do Google, mas segue uma lista de suas principais características:

  • Páginas 100% estáticas (sem sql, php ou cgi)
  • Baseado em modelos (templates)
  • Importa fotos via XML do Google Picasa(TM)
  • Importa fotos de um diretório local
  • Suporte a múltiplos idiomas (i18n)
  • Suporte a captions (texto sob cada imagem)
  • Suporte a texto/html arbitrário nos albums
  • Suporte a EXIF
  • Open Source
  • Simples, rápido, html limpo, CSS, etc…

Se você já tem o layout de sua página pronta e quer simplesmente adicionar as fotos nesse layout, o suporte a templates vem bem a calhar. E se você utiliza o Picasa(TM), a importação do XML é uma mão na roda. Se você não usa nada disso, deve gostar mesmo assim, pois de tantos milhões de programas pra gerar álbums na web, esse é sem dúvida o melhor de todos. ;-)

Testes em cenários diferentes são muito bem vindos.

Ah, a propósito, eu gerencio minhas fotos no Picasa(TM) e meu site é mantido num repositório SVN, então o que faço é exportar (XML) o álbum no picasa, rodar o mpp.py e subir os arquivos com o svn (svn commit, up, etc). Ficou bem prático, agora não tenho mais desculpas pra demorar tanto pra disponibilizar as fotos no site. :-)

Modelo de build-system usando autotools

Além do previamente mencionado CODING, a equipe da Mandriva Conectiva em Manaus também desenvolveu um modelo de build-system baseado em autotools (autoconf, automake, libtool) que acredito ser muito útil. Ele também estava destinado ao esquecimento, mas resolvi ressuscitá-lo e disponibilizá-lo sob a GNU-GPL.

Pra quem o conhece, a parte principal continua a mesma. Eu adicionei algumas funcionalidades (como a geração de bibliotecas, plugins, suporte a pthread) e um pouco de documentação.

Algumas características desse modelo:

  • Recursos modernos do autoconf, automake e libtool;
  • Modular, limpo e facilmente extensível;
  • Suporte a unit-tests em C usando o check;
  • Suporte a code-coverage dos unit-tests com lcov;
  • Suporte a pkgconfig;
  • Modo debug, flags de warnings do gcc, electric-fence, pthreads;
  • make distcheck limpo e funcional;
  • Integrado com doxygen;

Escrevi um pequeno README sobre o uso do modelo que deve ser suficiente para quem já tem os conhecimentos básicos e encontrei um extenso tutorial que deve ser útil até para quem já é experiente. De qualquer modo, vale o bom e velho conselho: “Use the source, Luke”, ele é relativamente intuitivo.

O código está disponível em meu repositório SVN git: http://git.ademar.org/, e deve ser atualizado conforme as necessidades ou contribuições sejam feitas.

BTW, o grosso do trabalho inicial foi feito ainda em 2005 e paradoxalmente, o autor original é o Leonardo Boiko (paradoxalmente porque quem conhece autotools e o leoboiko sabe que o primeiro é conhecido pelo número de gambiarras/xunxos e o segundo pelo às vezes absurdo perfeccionismo). Acho que quando ele ver esse modelo vai querer me matar pelas novas “gambiarras” que adicionei… :-)

Correções e contribuições, como sempre, são muito bem vindas.

CODING: guia simples de boas práticas de programação

Durante o desenvolvimento do projeto XMPM pela Mandriva aqui em Manaus (2004-2006), criamos um documento de boas práticas que era conhecido como “CODING”. O documento é voltado para desenvolvedores C, mas contém um conjunto de práticas que creio serem úteis a qualquer time, independentemente da linguagem ou tecnologia.

Da equipe original só sobrou esse que vos escreve (entenda o porquê), então antes que o CODING se perdesse, achei que valeria a pena disponibilizá-lo para uma audiência maior, sob a GNU/FDL. Espero que ele seja útil para outras equipes e em particular, a projetos open-source.

O documento (que sempre foi em ascii, mantido com o nome de CODING na raiz do repositório) está disponível em minha página. Sugestões, correções e discussões são muito bem vindas.

Aproveitando a deixa, o CODING anda lado a lado com o bom e velho “The Joel Test: 12 Steps to Better Code” e com práticas de desenvolvimento ágil, mas isso é assunto pra outra hora…

update 2006-11-27: removed the verbatim copy from this post. From now on it’s available only at its official page: https://www.ademar.org/texts/coding.html

Softwares de edição de imagens

Hoje gastei um tempo estudando softwares para tratamento de fotos no PC. É uma área onde nunca havia me aventurado. Gosto muito de fotografar, mas tratar as imagens nunca foi meu forte.

Mas isso está para acabar ;-), hoje evolui bastante e acho que estou encontrando o caminho das pedras. Cheguei a instalar (pela primeira vez) os softwares que acompanham a câmera e resolvi conferir o que encontrei após algumas pesquisas na web, tanto em Linux como Windows. Segue uma pequena avaliação:

  • Gimp: Eu odeio a interface do Gimp. Como só tenho um monitor por enquanto, tenho muita dificuldade com aquele monte de janelas abertas ao mesmo tempo. É uma ferramenta muito poderosa, mas dada sua complexidade, ainda vou levar muito tempo pra ter uma boa produtividade. Fiz alguns testes com layers e li alguns tutoriais. O resultado é excelente.
  • GimpShop: Como alguém que não se dá bem com a interface do Gimp, resolvi testar o GimpShop, na esperança de resolver meu problema. Como nunca usei PhotoShop, só esperava encontrar uma interface MDI, mas para minha decepção, o plugin que permite isso só está disponível pra MS Windows e mesmo assim o resultado é pouco satisfatório. No Linux não tive ganho algum, então voltei pro Gimp original.
  • Picasa: Embora simples, gostei muito da ferramenta de edição de imagens do Google. Seguindo o princípio de Pareto, é a ferramenta ideal para quem quer fazer ajustes e efeitos simples, em fotos do dia-a-dia, sem muito trabalho. É pra Windows, mas há esperança. :-)
  • Hugin: O hugin, um frontend pra diversos programas que facilitam o processo de montagem de imagens panorâmicas e compostas em geral, eu já acompanho há bastante tempo. É um pouco complexo, mas produz bons resultados.
  • Ferramentas que acompanham a Canon EOS Digital Rebel XT: Achei todos os programas medíocres, com excessão do que monta imagens panorâmicas, que é razoável (simples, mas muito fácil de usar).
  • Há ainda muitos outros programas que tenho usado com frequência para pequenas tarefas, como gqview, metacam, dcraw e os utilitários do ImageMagick.

Encontrei também um software para gerenciamento de fotos (armazenagem) que me deixou satisfeito a princípio: o Photo Organizer. Mas isso é assunto pra outro post. :-)

Estatísticas de acesso

Ontem minha página principal alcançou 1GB de transferência nesse mês, um recorde! (ooohhh!!!!) :-)

E em comemoração (se é que isso é motivo pra comemorar) eu resolvi postar algumas curiosidades sobre as estatísticas de acesso desse mês, levando em consideração que podem haver erros na captura de alguns dados:

  • Guerra dos browsers: 86% IE, 7.6% Firefox
  • 91% dos acessos são feitos por usuários Windows
  • A página mais acessada é a do meu discurso de formatura em homenagem aos pais (ainda vou acabar ouvindo algo parecido com meu discurso em alguma formatura por aí) :-)
  • A procura no google que mais me rende visitas é por “fotos de manaus”
  • Geralmente o horário de pico é por volta das 14:00hs
  • O googlebot baixou 16MB de páginas nesse mês
  • bla bla bla bla