Oct 3

Olá!

De Maio (último post) pra cá MUITAS coisas boas aconteceram, e dariam bons posts. FISL 10, duas palestras no Ensol 3, projeto Marmota (http://marmota.mobi) sendo apresentado no Software Freedom Day em Campina Grande e etc.

Ao invés de fazer posts grandes (e cansativos de serem escritos, principalmente quando não estou inspirado) eu tenho atualizado diariamente meu twitter, não só com coisas profissionais, eventos, estudos, c, python, linux, sistemas embarcados, arduino e etc.

Então se você caiu nesse blog graças ao Google ou costumava vir por aqui de vez enquando e gostou de algo que escrevi ou até mesmo se interessa pelas mesmas coisas que eu, eu recomendo que você me siga no twitter!

Pra seguir clica aí:

Por enquanto é isso :)

Mar 23
FISL 10, vamos?!
Posted by Flávio Ribeiro in Eventos, Linux, Tecnologia on 03 23rd, 2009| icon31 Comment »

Mal passou o Bossa Conference e já venho falar novamente sobre eventos aqui no blog. É que dessa vez não vou falar de um simples evento, vou falar do FISL!

Tive a grata oportunidade de ir na 9ª edição ano passado, e lembra aquela lista dos congressos imperdívels? Pois é, o FISL lidera. No ano passado participei da Arena de Programação e pude programar e conhecer pessoas que nunca tinha visto na vida. Lá precisávamos desenvolver aplicações pra os dispositivos da Nokia, e quem estava organizando era o pessoal do INdT. Foi uma excelente experiência, mas como a Arena leva praticamente todos os dias do Congresso ainda não sei se vou participar nesse ano.

Apesar de ainda faltar aproximadamente 3 meses, a organização do evento já está investindo em divulgação e já lancou o programa de Páginas Amigas, sucesso na edição passada. Além disso, estão enviando e-mails pra os participantes anteriores e postando notícias em busca de reunir 10 mil nerds\programadores\entusiastas de tecnologia e software livre. A nossa caravana já conta com ~12 integrantes, quase 100% maior que a do ano passado.

Há rumores também que o mestre jedi Linus Torvalds vai aparecer lá. Pelo menos já chamaram!

Então, se você gostou do que leu aqui, já visitou o site enquanto lia e se empolgou ainda mais, pegue esses próximos 3 meses que faltam e programe sua viagem, compre sua passagem (erhm.. ainda tem promoções na tam..) e junte-se a nós! :-)

Dec 18
PyMedia no Ubuntu 8.10
Posted by Flávio Ribeiro in Linux, Python on 12 18th, 2008| icon3No Comments »

Enquanto não tenho tempo de escrever o que prometi no post passado (e é pq eu ia escrever tudo aquilo antes de terminar o ano.. triste engano :( ) vou colocando dicas para soluções de problemas que encontro no dia-a-dia.

O de hoje foi instalar o pymedia no Ubuntu. Só pra deixar claro, instalei isso em um Ubuntu 8.10, com Python 2.5.2 e PyMedia 1.3.7.3.

Primeiro instale os pacotes necessários (assumindo que você já tem gcc, g++, build-essential e etc):

sudo aptitude install python-dev libogg-dev libvorbis-dev libmp3lame-dev libfaad-dev libasound2-dev

Depois disso, o certo seria basicamente descompactar o pymedia, fazer o build e instalar;

python setup.py build

python setup.py install

Mas foi ai aonde enfrentei um problema:

building ‘pymedia.audio.acodec’ extension
creating build/temp.linux-i686-2.5/audio
creating build/temp.linux-i686-2.5/audio/acodec
creating build/temp.linux-i686-2.5/audio/libavcodec
creating build/temp.linux-i686-2.5/audio/libavcodec/liba52
gcc -pthread -fno-strict-aliasing -DNDEBUG -g -fwrapv -O2 -Wall -Wstrict-prototypes -DBUILD_NUM=1862 -DPATH_DEV_DSP=”/dev/dsp” -DPATH_DEV_MIXER=”/dev/mixer” -D_FILE_OFFSET_BITS=64 -DACCEL_DETECT=1 -DHAVE_MMX=1 -DHAVE_LINUX_DVD_STRUCT=1 -DDVD_STRUCT_IN_LINUX_CDROM_H=1 -DCONFIG_VORBIS -DCONFIG_VORBIS -DCONFIG_FAAD -DCONFIG_MP3LAME -DCONFIG_VORBIS -DCONFIG_ALSA -DHAVE_AV_CONFIG_H -DUDF_CACHE=1 -INone -INone -INone -I/usr/include/lame -INone -INone -I/home/flavio/downloads/pymedia-1.3.7.3 -Iaudio/ -I/usr/include/python2.5 -c audio/acodec/acodec.c -o build/temp.linux-i686-2.5/audio/acodec/acodec.o
In file included from audio/acodec/acodec.c:31:
audio/libavcodec/dsputil.h:484: error: static declaration of ‘lrintf’ follows non-static declaration
audio/acodec/acodec.c:249: warning: initialization from incompatible pointer type
audio/acodec/acodec.c: In function ‘ACodec_Encode’:
audio/acodec/acodec.c:668: warning: pointer targets in passing argument 2 of ‘avcodec_encode_audio’ differ in signedness
error: command ‘gcc’ failed with exit status 1

Para “solucionar” esse problema, comentei essa parte de código em [Diretório do pymedia extraído]/audio/libavcodec/dsputil.h :

#ifndef HAVE_LRINTF
/* XXX: add ISOC specific test to avoid specific BSD testing. */
/* better than nothing implementation. */
/* btw, rintf() is existing on fbsd too — alex */
static inline long int lrintf(float x)
{
#ifdef CONFIG_WIN32
/* XXX: incorrect, but make it compile */
return (int)(x);
#else
return (int)(rint(x));
#endif
}
#endif

Estranhei o cast pra int no retorno de uma função declarada como long, mas enfim. Não sei que consequências isso vai causar, mas que o import rolou bonitinho, rolou.

Python 2.5.2 (r252:60911, Oct  5 2008, 19:24:49)
[GCC 4.3.2] on linux2
Type “help”, “copyright”, “credits” or “license” for more information.
>>> import pymedia
>>> dir(pymedia)
['Player', '__all__', '__builtins__', '__doc__', '__file__', '__name__', '__path__', '__version__', 'audio', 'getMetaData', 'meta', 'muxer', 'player', 'removable', 'video']
>>>

E pra mim, que não tenho muito tempo livre agora, isso bastou. :)

Nov 4
Alterando o MOTD do Ubuntu Server
Posted by Flávio Ribeiro in Linux on 11 4th, 2008| icon31 Comment »

Pra quem não sabe o que é, o MOTD (Message of the day) é aquela mensagenzinha que aparece sempre que você se loga no SSH ou faz login no modo texto. É algo mais ou menos assim:

flavio@localhost’s password:
Linux doritos 2.6.24-21-generic #1 SMP Tue Oct 21 23:43:45 UTC 2008 i686

The programs included with the Ubuntu system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.

Ubuntu comes with ABSOLUTELY NO WARRANTY, to the extent permitted by
applicable law.

To access official Ubuntu documentation, please visit:
http://help.ubuntu.com/
Last login: Tue Nov  4 16:05:15 2008 from localhost
flavio@doritos:~$

Para alterar esses textos, não basta editar o /etc/motd (isso no Ubuntu Server). Fiz algumas mudanças nele e essas alterações foram resetadas ao reiniciar o servidor. Foi ai que vi que o /etc/motd é apenas um link para /var/run/motd. Então, para alterar de verdade o MOTD no Ubuntu Server você precisa editar é o /var/run/motd.

Mas se você quiser tirar a linha Last Login, já é nas configurações do ssh:

flavio@doritos:/var/www$ cat /etc/ssh/sshd_config | grep PrintLastLog
PrintLastLog yes
flavio@doritos:/var/www$

Pronto, trocou nessa linha yes por no e a linha Last Login ao logar por SSH não vai aparecer mais, apesar de eu recomendar deixar ela sempre aparente.

Recomendo também um ASCII Generator pra você fazer firulas no MOTD: http://www.network-science.de/ascii/

Aug 28
Programação Avançada em Linux
Posted by Flávio Ribeiro in Linux, Livros, Programação on 08 28th, 2008| icon32 Comments »

Desde que comecei o curso aqui em João Pessoa, venho seguindo uma dica de um professor de Eletrônica Analógica; ‘Vá comprando livros, montando sua biblioteca, seu acervo de consulta, e vá lendo e enrriquecendo seu conhecimento gradativamente em companhia do curso’.

Enfim, comprando os livros eu estou, já lendo…

Tive a idéia de criar uma categoria nesse blog chamada Livros, onde vou me responsabilizar por publicar comentários sobre os livros que já comprei e que ainda planejo comprar. Isso vai servir pra me incentivar a ler periodicamente, além de possivelmente ajudar os leitores do meu blog a comprar (ou não) o livro :-)

Vou inaugurar a sessão então “avaliando” e detalhando algumas coisas que aprendi ou achei interessante do livro Programação Avançada em Linux da Novatec.

Essas estrelinhas debaixo do livro sempre vão representar o que eu achei dele. Esse por exemplo, me impressionou BASTANTE e por isso quase ganhou 5 estrelas. Confesso que não esperava que ele fosse tão bom.

O livro é relativamente fino, tem 203 páginas mas é pequeno, tornando a leitura agradável, dá pra ler deitado tranquilo (ao contrário de um Deitel da vida). Os capítulos também são bem sucintos e aí você pode ler um ou dois capítulos por noite (costuma ler antes de dormir também?! :) ) sem se cansar.

O primeiro capítulo chamado Características do Linux dá uma introdução do funcionamento do sistema operacional e já deixa o leitor a par de alguns conceitos que serão mais explorados nos próximos capítulos. O segundo, Programação em linguagem C, faz uma revisão dos laços e condições básicas de C, e o terceiro Programação em Assembly introduz a linguagem e mostra exemplos (como o famoso hello world). O quarto capítulo, Programando as portas seriais e paralela envolve conceitos de eletrônica e faz até 2 projetos interessantes usando algoritmos pra acender e apagar LED’s (o livro também dá o esquema do hardware a ser feito pra acender as luzinhas). O 5º, Módulos do Kernel, mostra a diferença entre a compilação de modulos entre os kernels 2.4 e 2.6 e também recheia o livro com exemplos bem interessantes como por exemplo um hello world em módulo do kernel com saida no dmesg (ou syslog). Controlando dispositivos com IOCTL é o nome do sexto capítulo, e passa pro leitor como é abstraido o conceito de dispositivos pro kernel (open, read, write). Existem ainda mais seis capítulos que não vou resumir, mas que tratam desde o controlador de video, passando por programação em cima de tcp\ip (distribuida), etc.

E aí você se pergunta, por que então não foi 5 estrelas na classificação? Eu respondo: Existem váários exemplos de códigos no decorrer do livro. Alguns que tomam até 2 páginas (frente e verso), e seria muito melhor se o livro acompanhasse um cd ou que pelo menos houvesse um repositório online desses códigos como fez o Jürgen Scheible no livro Mobile Python: Rapid Prototyping of Applications on the Mobile Platform (livro esse que pretendo comprar mais na frente).