Month: April 2008

Contando linhas de codigo fonte

Contar a quantidade de linhas de codigos de um programa nao e’ uma tarefa tao simples como em principio possa parecer. Espacos vazios (linhas em brancos), comentarios e outras “tranqueiras” devem ser desconsideradas.

Felizmente alguem ja passou por este problema e resolveu criar a solucao, chama-se SLOCCount (Source Lines of Code Counter). Este programa serve para contar a quantidade de linhas de codigo em programas escritos em linguagens como Ada, Assembly, C, C++, Cobol, C#, Java, Python e varias outras.

So’ faltou contar as linhas de codigo da linguagem whitespace 😉

Mais info:

http://www.dwheeler.com/sloccount/

Quem usa Debian e derivados pode simplesmente executar:

apt-get install sloccount

Implementando estatistica de trafego no Linux

Infelizmente estou limitado a baixar 2GB de dados por mes, concordo que deve haver um limite, mas este valor parece piada de mau gosto. So hoje baixando o codigo fonte do E17 consumi mais de 200MB (puxa vida, nao sabia que o “trem” era tao grande assim, tudo bem que grande parte disso sao arquivos de imagem, mas mesmo assim). Isto significa que so hoje gastei mais de 10% da minha cota, e o que eu consumir a mais pagarei R$ 0,16 por MB.

O pior de tudo isso e’ que a Claro nao fornece nenhuma informacao online do meu consumo ate’ o momento.

Entao procurei na internet e achei uma dica interessante de como criar um script para gerar estatisticas:

http://ubuntuforums.org/showthread.php?t=381138

A ideia de colocar um pre-down em /etc/network/interfaces como o comando para salvar a quantidade de bytes enviados e recebidos nao funcionou. Entao comecei a investigar outras possibilidades. Em /etc/ppp/ip-down.d posso colocar os scripts que serao executados quando a interface for desconectada. Colocar o comando da dica do forum nao funciona porque a interface ja’ foi desativada quando os scripts neste diretorio sao chamados.

Entao fazendo testes com o pppd vi que ele joga para o syslog (/var/log/messages), no momento que a conexao termina, a quantidade de bytes enviados e recebidos:

Apr 20 22:51:05 linux pppd[3450]: local IP address 189.94.20.138
Apr 20 22:51:05 linux pppd[3450]: remote IP address 10.64.64.64
Apr 20 22:51:05 linux pppd[3450]: primary DNS address 10.11.12.13
Apr 20 22:51:05 linux pppd[3450]: secondary DNS address 10.11.12.14
Apr 20 22:52:21 linux pppd[3450]: Terminating on signal 15
Apr 20 22:52:21 linux pppd[3450]: Connect time 1.3 minutes.
Apr 20 22:52:21 linux pppd[3450]: Sent 7830 bytes, received 5107 bytes.
Apr 20 22:52:21 linux pppd[3450]: Connection terminated.

Entao resolvi criar um script em /etc/ppp/ip-down.d para pegar estes valores e adicionar num arquivo de log. O script ficou assim:

#!/bin/sh
tail /var/log/messages | grep “Sent ” | cut -d’ ‘ -f7,10 >> /var/traf/volume.log

E o script que soma e retorna a quantidade de dados trafegados ficou o mesmo da dica do forum, apenas modifiquei para funcionar com o sh ao inves do bash (nao quis usar o let):

#!/bin/sh
total=0
for part in `cat /var/traf/volume.log`; do total=$(($part+$total)) ; done
total=$(($total/1048576))
echo “Quantidade de dados trafegado conforme volume.log = $total MB”

===ATUALIZADO===
Para evitar o problema de outros processos enviarem mensagens de log para /var/log/messages e atrapalharem o funcionamento do script, resolvi enviar as mensagens de log do pppd para um arquivo separado. Para isto apenas adicionei no /etc/syslog.conf:

!ppp
*.* /var/log/ppp.log

Precisei criar um arquivo /var/log/ppp.log vazio antes de “restartar” o syslog, do contrario nao funcionaria.
Depois disso apenas modifiquei o script para usar ppp.log ao inves de messages:

tail /var/log/ppp.log | grep “Sent ” | cut -d’ ‘ -f7,10 >> /var/traf/volume.log

Descobrindo o mundo do E17

Estou descobrindo novos aplicativos interessantes para usar no E17 que, em geral, foram desenvolvidos nativamente para ele e por isso sao mais rapidos:

Entrance – gerenciador de login, voce nao quer o GDM comento memoria feito um louco quer? Mesmo tendo 2GB quanto mais eu economizar melhor;

Evidence – navegador para o sistema de arquivos, possui recursos interessantes como editar tags de MP3 diretamente;

Entice – visualizador de imagem, possui recursos como zoom e slides show;

Engage – e’ um taskbar, app launcher e system tray icon;

Equate – calculadora, suporta varios temas;

Eclair – tocador de musica equivalente ao XMMS;

Desnecessario dizer quer o E17 funciona bem tanto com aplicativos GTK quanto QT.

Outro repositorio E17 para Ubuntu

Encontrei outro repositorio para o E17 com mais pacotes que o anterior, porem para ele funcionar voce precisara’ mudar seu source.list para unstable: mude a palavra gusty para hardy.

O repositorio eh este:

deb http://debian.alphagemini.org/ unstable main

Apos instalar voce vera’ que ele possui muito mais plugins, incluindo a barra de tarefas com lista de janela que o outro nao tinha.

Erro usando Entrance

Estava recebendo as seguintes mensagens de erro:
Error type: EVAS_LOAD_ERROR_GENERIC
EDJE: Error loading image collection “images/318” from file
“/usr/local/stow/entrance/share/entrance/themes/default.edj”. Missing
EET Evas loader module?

Este erro estava acontecendo porque quando eu instalo o E17 ele nao instala o eet loader para evas.
A solucao e’ instala-lo manualmente:

sudo apt-get install libevas-loader-eet

UPDATE: mesmo após instalar esta lib o problema continuou, terei que debugar

Enlightenment DR17

O Enlightenment DR17 e’ um desktop fantastico, nao e’ atoa que e’ considerado o desktop mais rapido e indicado para ser usado em computadores antigos com poucos recurso.

Encontrei no site do guiadohardware o link para um repositorio, mas infelizmente o repositorio estava offline, provavelmente estao atualizando o servidor. Felizmente achei outro repositorio:

## E17 Repository “e17.dunnewind.net”
deb http://e17.dunnewind.net/ubuntu gutsy e17
deb-src http://e17.dunnewind.net/ubuntu gutsy e17

Depois de adicionar estas linhas no /etc/source.list e executar apt-get update voce pode instalar o E17 com o comando:

apt-get install e17

Em pouco tempo voce vera’ que o E17 faz ate chover. Sao mais de 7 anos de desenvolvimento, mas com certeza este desktop fara’ (esta’ fazendo) a diferenca.

Nao tem pra KDE, Gnome, XFCE, Fluxbox, ou any *box, o E17 detona.

Quando voce usar o Enlightenment E17 vai entender por que o pessoal do OpenMoko trocou a lib GTK pela EFL, a lib do E17.

Disk On Chip no Linux

Prestei uma consultoria para fazer o Linux funcionar com o DOC (Disk On Chip) MD2202-D16. O cliente estava usando a distribuicão para thin client chamada ThinStation e estava com problemas em fazer funcionar no ThinClient Visara 1783. O sistema até inicializava, mas ao tentar iniciar o cliente rdp, para se conectar no servidor, o computador travava (congelava).

Eu já havia trabalhado com MTD (Memory Technology Device), mas apenas nas placas embarcadas com o uClinux e usando diretamente a memória Flash da placa, então seria uma ótima oportunidade de aprender como os DOCs funcionam.

Para minha surpresa existiam 4 drivers no kernel do ThinStation 2.2.1 (kernel 2.6.15) para os chips DOC2000 e Millenium, mas só selecionei o driver disponível em NAND Devices, pois os demais são DEPRECATED. Também tive que selecionar NFTL (NAND Flash Transaction Layer) conforme descrito no howto do tldp.

O kernel detectou o DOC como /dev/nftla e a particão como /dev/nftla1.

Então tudo pronto?

Nada disso, infelizmente o problema de inicializacão do rdp não foi resolvido após iniciar diretamente do DOC. Depois de vários testes descubro que o problema era causado pelo framebuffer do kernel, removendo o parâmetro “vga=788” da linha de comando do kernel (passado através do syslinux) o problema desapareceu.