Remember Yesterday… Porto Cidade Linux

6 \06UTC Maio, 2009

As coisas em que uma pessoa tropeça quando tenta reconstituir o passado…

Porto: Cidade Linux, Cidade Tecnológica

e cá está a prova de que estive lá…

Porto Cidade Linux (Fotografia #010 da Galeria 2)


Character encoding

4 \04UTC Julho, 2008

Um dos problemas que volta e meia aparece para morder os calcanhares de quem anda distraído (como eu), é tentar ler-se um ficheiro com um character encoding diferente daquele em que foi escrito.

Há três ferramentas sempre úteis nestes casos: iconv, vi e file.

O primeiro permite converter dois ficheiros entre quaisquer character encoding, o segundo permite visualizar (e editar) um ficheiro e especificar que encoding se quer usar, e o último analisa os primeiros bytes do ficheiro e dá-nos alguma informação sobre ele.

Então agora imaginem que têm um ficheiro em ISO-8859-1 (tanto o file como o vi o comprovam), usam o iconv para o converter para UTF-8, e obtêm o seguinte resultado:

  • O comando file diz que o ficheiro é de facto UTF-8.
  • Abrindo o ficheiro no vi e forçando UTF-8 como encoding vêm os vossos caracteres acentuados todos baralhados.

E agora? De quem é a culpa?

Resposta: do PuTTY que estão a usar para aceder à consola em causa e que está a interpretar todos os bytes que recebe como ISO-8859-1. E esta hein? :)


OpenWRT – DNSMasq forwarding

18 \18UTC Fevereiro, 2008

Troquei recentemente o router lá de casa por um Asus WL-500G Premium.

Pretendia usá-lo como router/access point convencional, mas também como:

  • print server – para uma HP com interface USB;
  • file server – usando como dispositivo de armazenamento uma pen ou disco usb externo;
  • ipsec gateway – para estabelecer uma VPN com a firewall corporativa e permitir acesso aos PCs lá de casa;

Tudo isto podia ser conseguido com o firmware original do router, excepto a parte do ipsec. Como também tinha alguma curiosidade em instalar Linux em sistemas “embedded”, resolvi  experimentar.

A primeira tentativa foi com o DD-WRT, mas não gostei do sistema de ficheiros read-only, nem do feel da coisa. A segunda tentativa foi com o OpenWRT, e desta vez fiquei satisfeito. A documentação existente no wiki é francamente boa, tanto no que diz respeito aos procedimentos de instalação, como também à configuração e afinação final.

Consegui completar todos os objectivos traçados recorrendo à documentação existente no wiki, com excepção de um pequeno pormenor. Depois de estabelecida a VPN com a firewall corporativa, dá muito jeito que as queries DNS para o domínio interno da rede corporativa sejam enviadas através da VPN até aos servidores responsáveis pela zona. O DNSMasq tal como vem instalado só permite encaminhar todas as queries para um (ou mais servidores), ou resolvê-las a partir dos root servers. Parecia não haver forma de fazer um encaminhamento selectivo de queries de certos domínios para um (ou mais servidores) de DNS.

Acabei por descobrir a solução na manpage do DNSMasq. Há um switch que permite definir exactamente isso:

-S /private.domain/w.x.y.z

Acrescentando este switch à variável args do script de arranque em /etc/init.d/dnsmasq consegue-se que o router encaminhe todas as queries de DNS para a zona private.domain para o servidor de DNS com o endereço w.x.y.z.


Windows lsof – list open files

25 \25UTC Janeiro, 2008

Uma nota muito, muito breve.

Para quem anda à procura de um lsof para windows, ele existe!

E, já agora, de uma forma geral, os utilitários Sysinternals valem o seu peso em ouro…


WebSphere headless

17 \17UTC Dezembro, 2007

Uma nota muito rápida sobre como conseguir que aplicações a correr em WebSphere possam usar classes do toolkit AWT sem que exista um ambiente gráfico funcional.

Para os apressados como eu a forma mais simples é definir como verdadeira a propriedade de sistema java.awt.headless, mas a teoria toda está muito bem explicada neste artigo da Sun.

Passar a propriedade no script que inicia o WebSphere, apesar de tentador, não funciona. O script de arranque do WebSphere faz apenas o bootstrapping do application server e a JVM que lança termina no final desse processo. A forma correcta está indicada nesta technote da IBM e passa por usar a consola de administração:

Servers > Application Servers > server1 > Process Definition > Java Virtual Machine > Generic VM Arguments

ou, alternativamente, editar directamente o ficheiro de configuração apropriado:

{$WAS}/config/cells/DefaultNode/nodes/DefaultNode/servers/server1/server.xml


Seguir

Get every new post delivered to your Inbox.