Porque não temos memória de elefante

Problemas de espaçamento desnecessários na tag FORM são comuns ao desenvolvermos sistemas WEB. A necessidade de elaborar formulários complexos, em um espaço limitado e precioso, faz com que esse tipo de problema seja frequente.

Uma dica antiga era colocar a tag FORM entre o <table> e o <tr>, nessa forma:

<table>
<form>
<tr> <td><input .... ></td></tr>
</form>
</table>

Ok, funciona, só que isso não é HTML válido.

Uma forma mais correta de fazer isso é utilizando CSS, alterando as propriedades border e padding para 0:

<form style="border: 0px; padding:0px;">
<table>
<tr> <td><input .... ></td></tr>
</table>
</form>

Agora temos HTML válido, omitindo os espaços desnecessários com CSS. Mas que tal aplicar automaticamente a todos os elementos FORM do seu sistema?

<style type="text/css">
form { border: 0px; padding:0px; }
</style

;-)

Por padrão, o RoR vem configurado para realizar pluralizalição nos nomes das tabelas, de modo que os classes fiquem no singular e as tabelas e controllers no plural. Isso funciona muito bem no idioma inglês, mas no português acaba sendo um problema.

Mas desabiblitar tabelas no plural no rails é bem simples. Basta colocar a seguinte linha no final do arquivo config/environment.rb
ActiveRecord::Base.pluralize_table_names = false

Em ambientes corporativos, é comum o uso de proxy autenticado para acesso à internet. Nesses casos, é possível para atualizar e instalar pacotes do Linux ou Ubuntu, é possível configurar o proxy no Synaptic. Uma forma melhor é configurar o proxyao nível do sistema, dessa forma, além do synaptic, outras aplicações fará uso da mesma configuração, como o wget.

Para tanto é necessário definir duas variáveis de ambiente. No debian e derivados, esta configuração pode e deve ser feita no arquivo /etc/enviroment. Abra para edição o arquivo com o seguinte comando:

$ gksu gedit /etc/environment

Adicione esse conteúdo ao final do arquivo:

http_proxy=”http://usuario:senha@10.2.1.2:3128″ ftp_proxy=”http://usuario:senha@10.2.1.2:3128″

Feito! ;-)

Tanto nos betas Ubuntu Edgy Eft, quando na versão final do Mandriva 2007, eu passei por problemas com o teclado ABNT2. Problemas há “séculos” resolvidos, voltaram para atormentar. Mas dessa vez trata-se apenas de mudança em configuração.
A correção está aqui

Problema ao iniciar o k3bsetup no Mandriva 2007?

Siga esse link:

http://qa.mandriva.com/show_bug.cgi?id=26359

O conjunto Linux + Apache + MySQL + PHP já é mais do que consagrado. Eu praticamente não vivo sem uma instalação dessas perto de mim. Quando não é por causa da necessidade dessa combinação de softwares livres para rodar algum serviço em particular, é para desenvolvimento de aplicações e sites WEB.

Abaixo os passos necessários para instala-los no Mandriva 2007:

Instalar Apache + PHP:

# urpmi apache apache-mod_php

Instalar servidor MySQL e suporte a MySQL no PHP:

# urpmi MySQL php-mysql

Pronto! Tudo instalado e configurado. Basta inciar o MySQL e Apache:

# /etc/init.d/mysql start

# /etc/init.d/httpd start

A senha inicial do superusuário do mysql é em branco. Altere-a para maior segurança:

# mysqladmin -u root password ‘nova_senha’

Se você acessar pelo navegador WEB o endereço http://localhost/ , já vai ver o Apache rodando. Para verificar que o PHP também está configurado, crie um arquivo no chamado info.php no diretório principal do serviço WEB:

echo ‘< ?=phpinfo() ? >’ > /var/www/html/info.php

Agora acessando http://localhost/info.php será possível ver a saída da função phpinfo(), que mostra toda a configuração atual do PHP.

Continuando com a experiência com o Mandriva, seguem os pacotes necessários para que seja possível compilar programas, inclusive aplicações que dependem do KDE:

# urpmi task-c-devel kernel-source-2.6 glibc-devel ctags

# urpmi task-c++-devel

# urpmi libxorg-x11-devel libstdc++6-devel libstdc++5-devel

# urpmi task-kde-devel

Resolvi testar o Mandriva para ver como é que está o trabalho depois da junção Mandrake + Conectiva. Pra começo de conversa, baixei o ISO do MandrivaOne 2007. Trata-se de um Live CD mas que pode ser instalado, assim como o Ubuntu.
O link para download via torrent é
http://qa.mandriva.com/torrent/2007/mandriva-one-2007-kde3.torrent

Um fato curioso, é que agora eles estão oferecendo duas versões: uma com Gnome, outra com KDE. Resolvi usar a versão KDE.

Outra boa surpresa foi a configuração automática e sem problemas do XGL, para computadores que já possuem uma placa NVidia. Já durante a seção Live, o desktop 3D já estava funcionando, com driver da NVidia configurado e tudo. O Gcompiz funcionando sob o KDE não difere muito se comparado com o Gnome, que eu já tenho usado no Ubuntu.

A instalação foi rápida e indolor, um pouco parecida com a do Ubuntu, só que com algumas perguntas a mais. Para um usuário já iniciado, achei que o instalador é mais flexível, especialmente nas opções de configuração do boot loader, que pode ser grub ou lilo. Optei pelo grub, e já foi incluído automaticamente o boot para o Windows 2000 que tenho instalado em hdc. Para o boot do Ubuntu (hda), tive que inserir manualmente.

Reiniciei o computador, entrei no Mandriva e o processo de instação finalizou com mais algumas configurações, como senha do root, criação de uma conta de usuário inicial e configuração da rede. Fiquei muito surpreso com a qualidade das aplicações de configuração drake*, que me conduziu nesse processo.

Chegou a hora de investigar os aplicativos instados por default e complementar com os que preciso. Sem ter familiaridade com o urpmi, abri a parte de gerenciamento de pacotes do drakconf (rpmdrake). Realizei facilmente as atualizações de segurança e adicionei repositórios para instalação de aplicações adicionais. Cheguei a instalar o gaim e mais uns 3 aplicativos pela ferramenta gráfica, mas o vício pela linha de comando é algo difícil de se perder. Fui procurar informações sobre o urpmi.

Com a taxa de transferência muito baixa ao instalar aplicativos pelo respósitorio que adicionei usando o rpmdrake, acabei descobrindo o easyurpmi.

Removi todos os repositórios adicionados anteriormente:

urpmi.removemedia -a

Adicionei o main e o contrib que consegui usando o easyurpmi (http://easyurpmi.zarb.org):

# urpmi.addmedia main \
ftp://mirror.fis.unb.br/pub/linux/MandrivaLinux/devel/2007.0/i586/media/main/release \
with media_info/synthesis.hdlist.cz

# urpmi.addmedia contrib \
ftp://mirror.fis.unb.br/pub/linux/MandrivaLinux/devel/2007.0/i586/media/contrib/release \
with media_info/synthesis.hdlist.cz

Pude instalar mais alguns programas, já com uma taxa de tranferência melhor:

# urpmi kdesvn

Chegou a hora de instalar codecs extras e outras coisas que normalmente que não vem nas ditribuições, por proibições legais, como o libdvdcss. Encontrei um repositório que serve justamente à esse psopósito, o PLF (http://plf.zarb.org).

Antes de qualquer coisa, é aconselhável instalar a chave do repositório, para garantir autencidade dos pacotes:

# urpmi lynx

# lynx -source http://plf.zarb.org/plf.asc > plf.asc;

# rpm –import plf.asc

Agora vamos adicionar os repositórios free e non-free do PLF:

# urpmi.addmedia free \

http://distrib-coffee.ipsl.jussieu.fr/pub/linux/plf/mandriva/2007.0/free/release/binary/i586/

# urpmi.addmedia non-free \

http://distrib-coffee.ipsl.jussieu.fr/pub/linux/plf/mandriva/2007.0/non-free/release/binary/i586/

Ok. Já podemos instalar pacotes:

# urpmi libdvdcss2

# urpmi win32-codecs

E por aí vai.

Em resumo, estou gostando do Mandriva, fora dois pequenos problemas que percebi:
1. A acentuação parou de funcionar enquanto eu escrevia esse post, depois voltou a funcionar novamente. Não entendi nada.
2. O Firefox deu crash quando loguei no WordPress. Estou escrevendo esse post via konqueror.

Do resto, tudo bem, especialmente o Centro de Controle Mandriva (drakconf). Estou impressionado.

Após seguir as instruções do install.txt, obtive os seguintes problemas:

  1. Definições do php.ini era ignorado
  2. Módulo do mysql não era carregado

As duas dicas para evitar esses problemas são:

Não confie cegamente nas instruções do install.txt, que diz que se você colocar o c:\php no path, não precisará colocar o php.ini no c:\windows. Na dúvida, SEMPRE use o php.ini no c:\windows, ou o arquivo de configuração do PHP não será lido, de forma que o PHP sempre estará com as configurações default.

No php.ini, nunca use a barra invertida como separador de diretórios. Ao informar o parâmetro extension_dir, sempre informe o formato “c:/php/ext”, mesmo que o exemplo que esteja no arquivo seja “c:\php\ext”. Caso contrário, os módulos não serão carregados e o servidor subirá silenciosamente sem logar nem reclamar nada.
É isso. Após umas 3 horas de bateção de cabeça, espero não perder tempo novamente com essas bobagens.

Meu cenário:

Ambiente de desenvolvimento em Windows XP XP2, MySQL 5.0.24a, atrás de um proxy squid configurado para autenticação no domínio corporativo (Active Directory)

A primeira tentativa para instalar o Rails, foi usando o gem, passando por parâmetro o servidor de proxy:
c:\>gem install rails -p http://login:senha@servidorproxy:3128 -r --backtrace
Install required dependency activesupport? [Yn] Y
ERROR: While executing gem ... (Errno::EBADF)
Bad file descriptor - connect(2)

Sem obter sucesso, parti para a instalação manual, baixando os pacotes individualmente, conforme explicado em http://wiki.rubyonrails.com/rails/pages/GemRails

Para instalação do Rails 1.1.6, baixei os seguintes pacotes:

  • activesupport-1.3.1.gem
  • activerecord-1.14.4.gem
  • actionpack-1.12.5.gem
  • actionmailer-1.2.5.gem
  • actionwebservice-1.1.6.gem
  • rails-1.1.6.gem
  • rake-0.7.1.gem

Coloquei todos eles em um diretório do meu PC e instalei, na ordem listada acima, com os comandos:
gem install activesupport
gem install activerecord
gem install actionpack
gem install actionmailer
gem install actionwebservice
gem install rails
gem install rake

Pronto. O RoR já está instalado. Para começar a usar/aprender veja o seguinte tutorial:

http://br-linux.org/linux/tutorial_basico_de_ruby_on_rails

Update:

Consegui usar o gems, mesmo estando atrás de um proxy autenticando em Active Directory. Bastou setar a variável http_proxy antes de executar o gems:

http_proxy=http://usuario:senha@10.2.1.2:3128