Trinta anos do projeto GNU

No ano de 2013 comemoramos os trinta anos de existência do projeto GNU.

Qual a importância disso? Onipresença!

Deixando de lado o ativismo, que hoje é a principal característica do movimento e se focando apenas no lado técnico, podemos dizer que praticamente tudo relacionado a tecnologia da informação hoje em dia usa direta ou indiretamente alguma ferramenta ou conceito desenvolvido pelo projeto GNU.

Embora sistemas operacionais para desktops sejam dominados pela Microsoft, estes nada são sem acesso a internet, e no backend da web, o software livre domina. De servidores web, ftp, dns e e-mail até a febre das redes sociais e conteúdo gerado pelo usuário, o domínio do software livre é total. Exemplos? Apenas três: Google, Facebook e WordPress.

Google e Facebook embora tenham uma postura totalmente inversa aos ideais GPL, são duas das empresas que melhor tiraram proveito das ferramentas livres, utilizando e modificando versões do Apache, Php, Python e todo o tipo de software Linux em seus negócios. Consegue imaginar a Web sem estas duas empresas? Que outra empresa hoje desenvolve ferramentas web tão inovadoras e em tamanha quantidade quanto o Google? Que empresa concentra e processa tamanha base de dados em milionéisimos de segundos como o Facebook? Em que pé estas duas estariam se tivessem que desenvolver todas as suas ferramentas do zero ou baseadas em soluções de empresas de software proprietário?

E quanto ao Linux, o principal nome do software livre mundial? Linus utilizou boa parte da Gnu Toolchain para desenvolver seu kernel e provavelmente não teria conseguido sem ela.

Também não podemos deixar de citar os milhões de dispositivos embarcados que utilizam alguma versão do Linux, dos mais simples roteadores até smartphones Android.

A lista poderia continuar por muito tempo, mas vocês já tiveram uma ideia, certo? O fato é que o acesso ao código fonte e o desenvolvimento colaborativo impós uma agilidade fora do comum ao desenvolvimento de software, em uma escala que nem mesmo empresas gigantes do porte de IBM e Microsoft poderiam manter.

Trata-se do mais importante e influente projeto de software já criado.

Conceitos e ferramentas criados pelo projeto GNU:
https://pt.wikipedia.org/wiki/Projeto_GNU

Site da Free Software Foundation:
http://www.fsf.org/

Depoimento de Stephen Fry:
https://www.gnu.org/fry/

Complexidade é diferente de qualidade

Um conceito que tem se difundido hoje em dia é de que o programador profissional é aquele que adota uma série de aparatos, entre os quais libs, frameworks, controladores de versão, bugtrackers, IDEs, builders, enfim… a lista é infinita. E para estes desenvolvedores, todos aqueles que não usam estes recursos são, por definição, programadores amadores.

Reconheço a importância de todas estas ferramentas, como também reconheço que cada uma tem o seu uso específico e que dificilmente um projeto de software fara uso de todas elas. Entretanto estas ferramentas exercem um certo fascínio sobre alguns programadores, de modo que eles não conseguem separar o que realmente é necessidade e o que é apenas um recurso legal (que um dia pode ser usado ou não). Eles encontram uma novidade na internet e já querem incorpora-la ao seus projetos. É isso mesmo, já presenciei diversos desenvolvedores que criam uma necessidade que na verdade não existia, apenas para fazer uso de uma ferramenta que está na moda. Este comportamento acarreta um série de problemas e complexidades desnecessárias que impactam e muito no resultado final de um software. Os programadores ficam dependentes das ferramentas e quando se veem em uma ambiente em que elas não estão acessíveis, simplesmente são incapazes de usar o que tem para codificar.

A administração de toda esta parafernália (atualização, integração com sua IDE favorita, etc) toma tanto tempo do programador que não sobra tempo para codificar a funcionalidade do sistema. Alguns passam dias navegando a procura de uma lib que implemente uma funcionalidade que a própria API da linguagem provê, mas ele não conhecia, porque estava ocupado demais procurando libs de terceiros ao invés de estudar o manual da linguagem. Já presenciei casos de programadores incrivelmente experientes em toda essa parafernália mas que tinham dificuldades em um código simples de dois ou três laços encadeados, ou clássico caso do programador que pergunta “Como faço um alert em Jquery ???”. Meu deus, o alert nativo do Javascript já é simples o suficiente, não precisa de uma camada para implementa-lo novamente.

A internet e o engajamento dos desenvolvedores no software livre facilitou o acesso a infinitas ferramentas que ajudam sim (e muito) nossas tarefas, mas seja crítico! Se o desenvolvedor de um framework diz que ele é incrível, não quer dizer que automaticamente ele se comportará assim no seu projeto. Estude primeiro a API da sua linguagem, não deixe seu sistema totalmente dependente de uma ferramenta de terceiro, esteja pronto para substitui-la de alguma forma caso o desenvolvedor deste recurso deixe de suporta-lo. Simplifique, seu foco é o código!

Criptografando arquivos no Linux

Para criptografar arquivos no Linux basta digitar no terminal:


gpg -c arquivo.txt

O sistema pedirá para você digitar a senha e confirmar.
Será criado o arquivo arquivo.txt.gpg.

Para reverter o processo:


gpg arquivo.txt.gpg

Evidentemente existem opções avançadas que podem ser consultadas com:


man gpg

Convertendo avi com duas faixas de audio via ffmpeg

Na prática, o que é feito é extrair as duas faixas de audio, converter o video junto com o audio da trilha 1 e depois adicionar o audio da trilha 2, mas será que é possível fazer isso em uma unica linha de comando? Sim:


/usr/bin/ffmpeg -y -i "/media/dados2/filme.avi" -map 0:0 -map 0:1 -map 0:2 -f
dvd -target ntsc-dvd -r 29.97 -vf scale=720:480 -aspect 16:9 -vb 8000k -g 12 -mbd rd
-trellis 1 -flags +mv0 -cmp 0 -subcmp 2 "/media/dados2/filme.mpg" -newaudio

Análise do Debian 7 Wheezy

A última versão estável do Debian, a 7.0 ( Wheezy ) foi lançada no último dia 04/05/2013 e isso é sempre um grande acontecimento pois trata-se da principal distribuição em atividade hoje em dia, pois a maioria das distribuições tem origem no Debian, então quer vocẽ goste ou não da distribuição, é inegável que ela dita tendências.

No site oficial há uma descrição dos novos recursos (alguns muito interessantes como o suporte a multiarquitetura), mas ainda não tive tempo de testar, o que vou descrever aqui são as impressões que tive em 5 dias de uso no trabalho.

De cara, a grande suspresa é o ambiente gráfico padrão, muito se disse com relação ao Debian abandonar o Gnome e adotar o Xfce, etc, mas isso não aconteceu, o Gnome3 é o ambiente gráfico padrão da distribuição. Entretanto pode-se optar por usar o modo clássico (Gnome classic) na janela de login. Nesta opção tem-se um desktop muito parecido com o tradicional Gnome 2x. Se ainda assim não agradar é possível baixar dos repositórios KDe, Xfce, Lxde, etc, porém Mate, Cinnamonn e Unity não estão disponíveis, devem ser instalados apartir de repositórios de terceiros. O mesmo vale para softwares populares em outras distribuições como Skype, Firefox, Thunderbird, etc. Nesta questão dos repositórios o Debian continua o mesmo, sendo bem criterioso e permitindo apenas pacotes muito estáveis e que se adequam a sua política de licenciamento.

Estabilidade e performance continuam nota 1000, o sistema não trava e é muito rápido, mesmo rodando o Gnome Shell não ocorreram bugs e lentidão experimentadas em outras distribuições.

Também não temos nada de Upstart, Plymouth, Lightdm, e outras coisa que foram vistas em outras distribuições recentes. Tudo continua com a mesma filosofia de se fazer um sistema incrivelmente simples e MUITO estável.

Concluindo, o Debian continua sendo a paltaforma Linux universal, onde vocẽ tem a liberdadee de configurar o sistema que você desejar para a finalidade que precisar.

debian_7_wheezy

debian_7_wheezy

debian_7_wheezy

debian_7_wheezy

 

Acesso externo ao Mysql (bind-address)

Se você instalou o Mysql no Debian, Ubuntu ou derivados e esta tentando se conectar externamente (mesmo que seja pela rede local) deve estar recebendo uma mensagem de erro ‘_mysql_exceptions.operationalerror’ .

Para resolver este problema abra o arquivo my.cnf que está em /etc/mysql e comente a linha bind-address = 127.0.0.1.

Reinicie o mysql.

Evidentemente esta dica se aplica para os casos em que um usuário com acesso externo já esteja cadastrado no Mysql. Se ainda não tem, veja exemplo abaixo para adicionar o usuário “teste” com controle administrativo total quando logado no cliente “192.168.0.15″:

mysql> CREATE USER 'teste'@'192.168.0.15' IDENTIFIED BY 'senha';
mysql> GRANT ALL PRIVILEGES ON *.* TO 'teste'@'192.168.0.15' WITH GRANT OPTION;

Razor-qt Desktop

Um novo projeto desktop tem chamado a atenção no mundo Linux, trata-se do Razor-qt, uma alternativa leve e simples ao KDE.
Inicialmente pensei até tratar-se de um fork do excelente KDE 3 (me confundi com o Trinity desktop), mas na verdade, trata-se de um novo ambiente desktop desenvolvido do zero, mas que também utiliza a lib QT.

Utilizei o Razor-qt no Mint 13, instalando-o atraves do seguinte PPA:

sudo add-apt-repository ppa:razor-qt

sudo apt-get update

sudo apt-get install razorqt

Repare que o Lightdm será instalado, mas mantive o Mdm com display manager padrão e o mesmo foi capaz de carregar o Razor-qt sem problemas.
Também instalei uma série de aplicativos QT para testar (Dolphin, Amarok, Okular, Konqueror, K3b, etc…)  pois é de conhecimento de todos que aplicações desenvolvidas em GTK perdem um pouco de desempenho quando utilizadas em um ambiente QT e vice versa.
Utilizando o ambiente percebemos que trata-se de algo bem espartano mesmo, mais até que o Lxde, porém bem mais bonito. O Razor-qt é composto apenas pelo ambiente desktop (painel, lançador de aplicações, sessão) e alguns poucos aplicativos de configuração, não há gerenciadores de arquivo, editores de texto, emuladores de terminais, e outras aplicações básicas que costumam compor até os ambientes mais básicos como Lxde e Xfce. Quanto ao desempenho estranhei o fato de ele consumir cerca de 100 MB de memória a mais que o LXDE executado na mesma máquina, chegando próximo do consumo do Mate, o que, teoricamente, não o torna uma boa opção para máquinas antigas, como promete no proprio site do Razor-qt.

Inicialmente ele foi executado com o Metacity como Window Manager e apresentou alguns travamentos. Então instalei o Kwin:

sudo apt-get install kde-window-manager
 

Reiniciando o ambiente com o Kwin, o mesmo tornou-se estável e ficou ainda mais parecido com o KDE, sem nenhuma perda de desempenho.

No geral, o ambiente já está bem evoluído e estável. Como imaginado, as aplicações QT são carregadas muito rapidamente e os programas GTK demoram um pouco mais. Acredito que o desktop encontrará seu nicho de usuários naquelas pessoas que preferem ou precisam utilizar aplicações QT específicas, mas acham o ambiente KDE pesado ou extenso demais. É muito bom ter mais uma opção de desktop enxuto e desta vez desenvolvido em QT. Isso só aumenta as já inúmeras opções do mundo Linux.

razor-qt

Ambiente Razor-qt com gerenciador de arquivos Dolphin e K3b