Arquivo mensais:maio 2007

Encodings e charsets

Geralmente não precisamos nos preocupar com os Encodings em uma aplicação em .NET. Isto porque ao desenvolvermos um sistema .NET, utilizamos ferramentas uniformizadas, afinal, elas provêm de uma mesma fabricante: Microsoft.

(Já quando desenvolvemos soluções LAMP (Wikipedia:LAMP), ou mesmo WAMP, nosso cuidado precisa aumentar e muito.)

Mas e quando precisamos mudar o encoding de alguma string em Asp.NET? Simples:

Encoding.UTF8.GetString(Encoding.GetEncoding("iso8859-1").GetBytes("Média"));

A código acima toma uma string em ISO-8859-1 e tranforma-a em uma no formato UTF-8.

Eclipse no Ubuntu

No Ubuntu é muito simples instalar o Eclipse, basta instalá-lo a partir dos repositórios oficiais. (mas sempre dá para instalar o pacote baixado da SUN)

Quanto ao Java, caso não queira utilizar o GCJ, não é necessário baixar diretamente da SUN os pacotes da versão mais recente (já estamos no Java 6). É só instalar a partir do Synaptic. Faça uma busca por sun-java e instale os pacotes necessários.

Depois, para mudar qual dos javas será o padrão para o sistema em geral entre com o seguinte comando para listar as versões instaladas:

update-java-alternatives -l

Para configurar o Java 6 como padrão entre com:

update-java-alternatives -s java-6-sun

Caso o Eclipse teime em usar o GCJ, você tem duas alternativas: editar o arquivo /etc/eclipse/java_home (mudança global) ou editar o arquivo ~/.eclipse/eclipserc (mudança em nível de usuário).

Caso resolva-se editar o eclipserc, basta adicionar a seguinte linha:

JAVA_HOME="/usr/lib/jvm/java-1.6.0-sun"

E para saber que problemas estão ocorrendo no Eclipse, nada como o log de erros: Window->Show View->PDE runtime->Error log

Referência: http://weblogs.java.net/blog/robogeek/archive/2007/05/ubuntu_and_easi.html

Edgy Eft para Feisty Fawn

Update Manager

Como recente lançamento final do Ubuntu Feisty Fawn, resolvi atualizar meu sistema utilizando seu próprio Update Manager. Após seguir as instruções do site oficial o sistema não subia. Até passava pelo GRUB, mostrava o splashscreen do Ubuntu (um pouco modificado com relação ao do Edgy) mas aparecia um erro e parava num terminal com o prompt dizendo apenas: (initramfs).

E agora?

Bom, tive uma experiência semelhante após reparticionar o disco com o Gparted e eu já sabia que eu deveria:

  1. montar o sistema de arquivos na mão com o mount;
  2. editar o arquivo de configuração do GRUB /boot/grub/menu.lst

Pesquisei também no Google e encontrei isto: http://ubuntuforums.org/showthread.php?t=392854
Que diz para trocar onde diz

kernel        /vmlinuz-2.6.20-13-generic root=UUID=702e3aab-4a86-4374-8763-af456ddb9620 ro splash

para

kernel        /vmlinuz-2.6.20-13-generic root=/dev/sda5 ro splash

(sda5 é a partição em que se encontra o meu Linux, em outros sistemas pode ser outra)

Para não ter de rebootar com sistema usando o Live CD, resolvi aprender a usar o sed, única ferramenta disponível para edição de texto no terminal que me foi dado (aquele do iniotramfs do começo do texto, lembra?).

Assim eu montei o sistema de arquivos:

mkdir /image
mount -o dev /dev/sda5/ /image

E depois editei o arquivo menu.lst

cd /image/boot/grub/
sed -i 's_root=UUID=702e3aab-4a86-4374-8763-af456ddb9620_root=/dev/sda5_' menu.lst

REBOOT!

A estranha seqüencia de caracteres UUID=702e3aab-4a86-4374-8763-af456ddb9620 (veja abaixo) tive de pegar listando o arquivo menu.lst com o comando cat e digitando um por um…

O estranho é que depois de inicializado o sistema, verifiquei outra sequëncia estranha de caracteres no mesmo arquivo, no trecho:

#kopt=root=430e3aab-4a86-4374-8763-af456ddb9620
#kopt_2_6=root=/dev/sda7 ro

que tratei de mudar para:

#kopt=root=/dev/sda5
#kopt_2_6=root=/dev/sda5 ro

Assim na próxima atualização do kernel não terei problemas (espero!).

UUID

Nada como o Wikipedia para tirar nossas dúvidas. O UUID, ou Universally Unique Identifier trata-se de um identificador de propósito geral criado pela Open Software Foundation, que por sua vez foi criada para padronizar a implementação de sistema UNIX.

No nosso caso, no sistema de arquivos ext3, que é o que eu uso, o UUID é utilizado para identificar cada partição da máquina, além dos vários dispositivos de armazenamento que possam ser plugados no mesmo, tais como pen-drives, hds portáteis, mp3 players…

Assim cada dispositivo terá seu próprio número e poderá possuir uma configuração individual.

O Ubuntu, a partir da versão 6.10 (Edgy Eft) passou a utilizar este sistema.

Para descobrir qual o UUID de uma determinada partição podemos utilizar o comando vol_id:

sudo vol_id -u /dev/sda1

O comando acima mostrará o UUID da primeira partição do dispositivo sda, que no caso é meu HD SATA.

Bom, fica a critério usuário manter-se nos /dev/ da vida ou utilizar os UUID. Ao menos no que se refere ao menu.lst =)

Usando o DD

Resolvi trocar o HD do meu notebook por um de maior capacidade. Para isto comprei o dito HD e um case USB/e-SATA para aproveitar o HD que vai sair do computador.

Como eu não queria passar novamente pelo processo de instala/configura/verifica, tanto do Windows como do Linux, decidi procurar alguma alternativa parecida ao Norton Ghost, mas no mundo Linux.
Encontrei o comando dd.

O dd copia um fluxo de dados de uma entrada para uma saída. Pode parecer pouco, mas isto o torna capaz de copiar, bit a bit, partições ou HDs inteiros, mesmo que contenham outros SOs.

Coloquei o HD novo no case USB, e liguei o notebook com o Live CD do Ubuntu 6.06 Dapper Drake. Verifiquei se os HDs realmente não estavam montados e executei a seguinte linha de comando:

sudo dd if=/dev/sda of=/dev/sdb

Após pouco mais de 3 horas de espera, o resultado no terminal foi este:

155910825+0 records in
155910825+0 records out
79826342400 bytes (80 GB) copied, 16510.4 seconds, 4.8 MB/s

Troquei os HDs de lugar e liguei o notebook. Tudo certo! Só precisei usar o Gnome Partition Editor (gparted) para extender a partição com o /home para ocupar o restante do HD.

Outra execução:

dd: writing to `/dev/sdb': No space left on device
145226113+0 records in
145226113+0 records out
74355769344 bytes (74GB) copied, 3674.27 s, 20.2 MB/s