Category Archives: Linux

Codificação de arquivos em Linux (trabalhando no console)

Ótimo tutorial sobre como descobrir qual a codificação de um arquivo em Linux, ou para mudar o tipo de codificação: http://mindspill.net/computing/linux-notes/determine-and-change-file-character-encoding.html

Por exemplo, recentemente necessitei alterar milhares de arquivos em ASCII para UTF-8, e consegui isso de uma tacada só usando o seguinte comando: recode -f UTF-8 *.xml. Note que nesse caso eu estava trabalhando com arquivos em XML. Mas deve funcionar com qualquer tipo de arquivo de texto.

Share

GEdit Plugin to Export/Import Tools and Plugins

Download

Anyone who uses GEdit, the default text editor for Gnome, most at once lost customized tools and plugins collected along the way. In my case, i lost them several times when deleting the .gnome2 folder to return the default Gnome settings, or even when formating my computer. Concerned to formating operations, i have fixed this problem by putting /home in a separated partition. However, i still keeping deleting .gnome2 folder and loosing my tools and plugins (i always forget it :P).

Based on such problem, today i developed a specific GEdit Plugin to save the GEdit profile concerned to External-Tools and Plugins that the user have configured. This plugin, that a named ProfilePlugin, makes easy to backup such data (tools and plugins), by exporting and importing the profile to a tar.gz file. The Export and Import options were placed at Tools menu, as the bellow figure shows.


It does not only makes backup easy, but it is also useful to share you external-tools and plugins with a friend, for example. Anyway, i hope it can be useful for you, as it is being to me ;). The plugin was developed using Python and can be downloaded here.

To install the plugin extract it from the tar.gz file in /home//.gnome2/gedit/plugins/. If you have any doubt look at the links bellow, and i’ll appreciate very much if you report any problems to yguarata at gmail dot com.

Useful links:

Share

Ubuntu Gutsy à primeira vista

Aproveitando para tirar a poeira daqui… hoje comecei a utilizar o sistema Ubuntu Gutsy, depois de passar 3-4 meses aproximadamente com o Debian Etch. Posso dizer que, apesar de alguns contra tempos, fiquei muito satisfeito com as melhoras.

Primeiro, a galera resolveu facilitar a mudança nas preferências do gnome, como tamanho de fonte e temas. Antes era preciso enfrentar a interface simplificada do gconf-editor para tal tarefa. Como eu sempre mudo o tamanho das fontes, para menor, dos ícones do desktop, título da barra de janela e lista de janelas, isso foi uma mão na roda. Aliás, essas fontes já deveriam vir menor por padrão no Gnome pois, como muitos já devem ter percebido, o tamanho atual dá a impressão de que o “linux” ocupa mais espaço na tela do que outros sistemas.

Segundo, parece-me que a implementação do Java 1.5 versão GNU ficou mais eficiente que a versão 1.4. Antes a versão Java 1.4 GNU parecia uma carroça, ficando nítida a diferença entre a implementação da Sun, que por sua vez era bem mais eficiente, e a versão GNU. Tudo bem que isso não diz respeito simplesmente ao Ubuntu, mas pelo menos o mesmo já trás a versão GNU mais nova.

Agora os contra-tempos…

Primeiro, o Ubuntu Gutsy trás agora um indexador de arquivos para facilitar a busca. E o problema com isso é que o mesmo tenta indexar todos os arquivos do computador, o que leva muito tempo e consome muito processamento. Muitas vezes isso deixa o usuário sem saber qual é o motivo de tanto processamento e do super-aquecimento, no caso de notebooks. Eu desabilitei essa funcionalidade, já que nunca fiz buscas por meus arquivos.

Segundo, a checagem de discos para partições Fat32 vem habilitada por padrão, fazendo com que as partições desse tipo sejam checadas a cada boot. Ou seja, o boot demora pra caramba, sempre. E como as opções de boot quite e tela de splash também vêm habilitadas por padrão no fstab para essas partições, um usuário desavisado pode, mais uma vez, ficar sem entender o que se passa com o sistema.

Agora é continuar utilizando para ver o que mais me surpreende e o que mais desaponta. Por enquanto o jogo está 2×2. :p

Share

Lista de compatibilidade Linux

Eu quero um desses prêmios aí!! :p

Ajude a divulgar a lista brasileira de equipamentos e serviços compatíveis com Linux
…e concorra a MP4 e MP3 players, mochilas Targus, períodos de VoIP grátis e até a ventiladores USB – além de contribuir automaticamente para doações para a Wikipedia e o WordPress! O BR-Linux coletou mais de 12.000 registros de compatibilidade de equipamentos e serviços (webcams, scanners, notebooks, …) na sua Pesquisa Nacional de Compatibilidade 2007, e agora convida a comunidade a ajudar a divulgar o resultado. Veja as regras da promoção no BR-Linux e ajude a divulgar – quanto mais divulgação, maior será a doação do BR-Linux à Wikipedia e ao WordPress.

Share

Ubuntu 64 e Youtube – dica

A relação entre distribuições Linux 64 bits e os vídeos de sites youtube like ainda não é a melhor possível. E os principais motivos parecem ser a indisposição dos codecs win32 para linux 64 e a falta do plugin flash para a mesma plataforma. Contanto, há uma possibilidade de assistir esses vídeos em distribuições Linux 64 bits. Basta utilizar algum programa que faz download de vídeos de sites youtube like(como o downtube) e convertê-los para avi utilizando ffmpeg: ffmpeg -i entrada.wmv saida.avi.

No caso do site Youtube, poderíamos baixar e converter o vídeo utilizando o downtube da seguinte forma:

…:~$ downtube -U yguarata -P senha url-do-video-no-youtube
…:~$ ffmpeg -i entrada.flv saida.avi

O downtube também possui opção de converter o vídeo, porém ele também faz uso do ffmpeg. Então é melhor utilizar o ffmpeg direto e diminuir o acoplamento. :D

Share

Configurando Touchpad no Linux

Sabe aquele touchpad presente na maioria dos notebooks, que serve como um mouse? Aquele que quando vamos arrastar o mouse acabamos clicando, de maneira indesejada, em alguma coisa. Pois bem, saiba que existe uma ferramenta(linha de comando), chamada synclient, que permite fazer a configuração do touchpad de seu notebook no Linux. Para saber como utilizar basta digitar na linha de comando man synclient.

Note que provavelmente aparecerá uma mensagem como a seguinte: “Can’t access shared memory area. SHMConfig disabled?”. Se esse for o seu caso, não se desespere, basta editar o arquivo /etc/X11/xorg.conf: procure as linhas que contêm as definição do Synaptics Touchpad e adicione a linha Option SHMConfig “on”, como mostrado abaixo, e reinicie o xorg.

Section “InputDevice”
Identifier “Synaptics Touchpad”
Driver “synaptics”
Option “SendCoreEvents” “true”
Option “Device” “/dev/psaux”
Option “Protocol” “auto-dev”
Option “HorizScrollDelta” “0”
Option “SHMConfig” “on”
EndSection

Para desabilitar o tap button, que é o pivô da chateação mencionada no primeiro parágrafo, basta chamar na linha de comando synclient TapButton1=0. Outras configurações também podem ser feitas, e para isso basta digitar synclient -l para ver a lista com as opções e seus respectivos valores. Só lembrando que 0 desabilita e 1 habilita. A figura abaixo, retirada de um wiki sobre Gentoo Linux, pode ajudar nas configurações.

Touchpad map

Até agora não encontrei nenhuma interface de usuário para esse programa. Seria bom construir uma decente para tornar as coisas mais amigáveis.

ATUALIZAÇÃO: segue alguns dos parâmetros que tenho utilizado na configuração do meu touchpad:

TapButton1=0 (para desabilitar o tap button localizado no meio do touchpad)
VertScrollDelta=120 (para diminuir a quantidade de linhas roladas pelo scroll vertical do touchpad. Quanto maior o valor menos linhas são roladas.)
RTCornerButton=0 (desabilita o tap button superior direito)
RBCornerButton=0 (desabilita o tap button inferior direito)
RightEdge=5500 (configura a largura do scroll vertical do touchpad. Quanto maior o valor menor a largura do scroll.)

Share

Experiência com Ubuntu Edgy 64 Bits

Para o pessoal que deseja instalar um SO 64 bits aqui vai uma dica. Sábado, 20 de Janeiro de 2007, instalei o Ubuntu Edgy 64 bits. Até agora as coisas estão muito transparentes, já que todos os softwares que precisei até o momento o apt-get instalou sem problemas, ou seja, sem mensagens dizendo que não existe versão 64 bits do software desejado, ou algo parecido. O único detalhe a comentar seria a instalação do flash player, pois até agora a Adobe não lançou uma versão de seu player para 64 bits. Porém, é possível instalar um flash player alternativo, free e OpenSource: o Gnash.

O Gnash roda filmes em Flash tranqüilamente, o único problema que tive até agora foi na interação com os mesmos. E com relação ao desempenho entre 32 bits e 64 bits, posso dizer que até agora só vi diferença ao rodar algum vídeo, DVD ou compilar algum software. A inicialização do sistema também está mais rápida. Meu computador é um Notebook Acer 5100 Turion 64 bits 2.0Ghz com 512 de memória. Com essa configuração os softwares básicos possuem praticamente o mesmo desempenho tanto rodando em 64 bits quanto em 32 bits. Outra coisa a comentar é que o Ubuntu detectou praticamente todos os dispositivos do Notebook, só não tive tempo ainda de testar Bluetooth e leitor de cartão de memória.

Até agora está valendo muito a pena utilizar um SO 64 bits. Vale ressaltar que não usei nenhum software específico para fazer o benchmark, foi tudo no “olhômetro”.

Para quem quiser dar uma olhada no Desktop aqui está um screenshot: http://www.yguarata.org/images/desktop.png

Share

Nautilus Extension Para Criar Arquivos Facilmente

Nautlius Extensions é uma maneira mais aprimorada de prover novas funcionalidades para o gerenciador de arquivos Nautilus usando linguagens de script. Com esse tipo de extensão, ao contrário do Nautilus Scripts, é possível inserir novos itens nos menus do gerenciador, fazendo com que as extensões tenham uma maior usabilidade e funcionalidade.

Foi com base nesses argumentos que meu amigo Pretto fez uma modificação no script que desenvolvi anteriormente, o qual facilita a criação de arquivos no Nautilus (ver Script Python Para Criar Arquivos no Nautilus). Seu aprimoramento consistiu em transpor o script da categoria Nautilus Scripts para Nautlius Extensions com alguns pequenos ajustes, fazendo com que o script agora seja acessado pelo menu Editar, ou com o click do botão direito sem precisar acessar o subitem Scripts. Para ver o resultado e baixar o novo script visite o post onde é descrita a implementação em detalhes.

menu.png

Share

Script Python Para Criar Arquivos no Nautilus

Uma das características mais importantes que uma aplicação pode ter, principalmente para programadores, é uma boa capacidade de evolução ou personalização através de plugins, scripts, componentes e etc. E o navegador de arquivos Nautilus é uma das aplicações que se destacam por essa capacidade. Mais especificamente, pode-se criar scripts Python (outras linguagens também são suportadas) para estender suas funcionalidades. Ver Linux: scripts Python para Nautilu e G-Scripts para maiores detalhes.

Dada essa importante característica do Nautilus e algumas necessidades pessoais, resolvi desenvolver um script (clique para donwload) Python para o mesmo que trás à tona a possibilidade de criar vários arquivos em diferentes diretórios sem precisar ter que acessar cada um deles e seguir o procedimento mais comum: acessa a pasta desejada, clicar com o botão direito, seleciona a opção “criar novo documento”, renomear o arquivo com um novo nome e extensão desejados, abrir as propriedades do arquivos para mudar as permissões e por fim, abrir o arquivo e inserir o conteúdo. Sem contar que muitas vezes queremos apenas criar vários arquivos inicialmente sem conteúdo, como é caso dos arquivos __init__.py, os quais devem ser criados em cada diretório dentro dos pacotes de uma aplicação Python. A figura abaixo mostra a interface do script.

Create_new_files

As aplicações desse script são infinitas. Ajuda desde desenvolvedores de aplicações que precisam criar vários arquivos ao mesmo tempo (como por exemplo no MVC, onde sempre é preciso criar um arquivo controlador, um modelo e um visualizador) até escritores de livros, os quais organizam seus capítulos em diretórios e quase sempre precisam criar arquivos de introdução, desenvolvimento e conclusão para cada capítulo. Se essas pessoas fossem criar esses arquivos de maneira convencional, como descrito no segundo parágrafo, levaria muito mais tempo e esforço.

Outro uso bastante interessante desse pequeno aplicativo é quando você precisa escrever um simples arquivo para anotar lembretes, links ou qualquer outra coisa. Usando o script você economiza mais tempo, pois não precisa abrir um editor de texto mais aprimorado que consumiria mais memória do seu computador.

O uso desse script é bastante simples, pois o usuário precisa apenas lidar como uma interface gráfica simplificada onde informará o nome, as permissões e o conteúdo inicial do arquivo. As duas últimas informações são opcionais. Ainda é possível escolher se deseja que a criação dos arquivos se dê recursivamente nos subdiretórios dos diretórios selecionados(TODO).

Uso: na área de trabalho, ou no Nautilus, selecione as pastas nas quais os arquivos serão inseridos clique direito do mouse para selecionar o script. Se não quiser inserir os novos arquivos em múltiplos diretórios, basta clicar com o botão direito do mouse sem selecionar nenhum diretório.

Share

Falta de Padronização em Projetos OpenSource

Por esses dias estive a procura de algum projeto OpenSource hospedado no sourceforge.net, mais especificamente escrito em Python, o qual me despertasse interesse em participar e fiquei triste com a falta de padronização e até desconhecimento da linguagem que predomina em alguns desses projetos. Não vou citar os nomes dos projetos aqui mas preciso escrever para alertar as pessoas que pretendem fazer algum projeto opensource ou participar.

Baixei um projeto de caráter simples mas bastante interessante e me deparei com um absurdo no uso de Python: o programador estava declarando atributos estáticos em uma classe e depois acessando-os como se fossem atributos de instância. Talvez o erro nem seja tão absurdo assim, pois um programador Python inexperiente pode facilmente se confundir nesse aspecto da linguagem. Na figura abaixo tem-se um exemplo desse erro.

E com relação à padronização, as falhas mais comuns estão na falta de uma regra para nomenclatura (Python code conventions) de arquivos, classes, métodos e variáveis, falta de refatoração (Martin Fowler) no código, ou seja, muitas vezes se vê métodos realizando coisas que não seriam de sua responsabilidade, e assim por diante. Um mínimo de padronização deve ser seguido até para facilitar a participação de novos desenvolvedores no projeto. Por exemplo, se os desenvolvedores do projeto optam por usar Orientação a Objetos então deve-se usar todas as técnicas sugeridas na Engenharia de Software para uma boa padronização e eficiência do mesmo. E se o projeto for para desktop um bom começo é seguir o post sobre Python, PyGTK e Glade.

Sofri esse problema na pele quando baixei um projeto em Python do sourceforge.net e tentei refazer uma parte do código usando threads. O código estava tão amarrado e desarrumado que precisei reestruturá-lo para poder seguir com minha idéia. A minha sorte foi que o projeto não tem muitas linhas de código. :D
PS: em se falando de participação em projetos OpenSource, o Osvaldo Santana escreveu um post bastante legal, dizendo que os brasileiros precisam se dedicar em participar mais na parte de codificação do projeto e não só fazer traduções do mesmo. Traduzir é importante mas codificar, e bem, é essencial para um bom funcionamento do software.

Share