20121029

Thunderbird 7.0.1 com problemas pra salvar email na pasta Sent

Edit -> Account Settings -> Copies & Folders -> marcar Other: em Place a copy in:. A pasta Sent já estará ali por padrão. Reiniciando-se o Thunderbird, parece funcionar.

20120504

rio(1) no Ubuntu 11.10

% cat /usr/share/xsessions/rio.desktop
[Desktop Entry]
Encoding=UTF-8
Type=XSession
Exec=rio
TryExec=rio
Name=Rio
Comment=Plan 9 window manager
Onde rio é um script:
% cat /usr/local/bin/rio
#!/bin/sh

/usr/local/plan9/bin/rio -s -virtuals 4 $*

20110810

Telefone sem fio x Wireless

Usando um roteador wireless TL-WR941N da TP-Link, a qualidade da rede estava aquém da esperada. Com um diagnóstico conjunto descobrimos que o telefone sem fio Gigaset AC650 opera em 2.4Ghz, a mesma frequência de redes 802.11b. Deixando o roteador em modo 802.11bgn mixed e largura de canal de 40Mhz, parece que a estabilidade aumentou.

20110524

Matrizes no Python como lista de listas

Precisávamos de uma implementação de matrizes no Python e lista de listas foi a idéia imediata.
Sabíamos que as seguintes interações funcionavam para copiar uma lista.

>>> a = [1,2,3]
>>> b = a[:]
>>> a
[1, 2, 3]
>>> b
[1, 2, 3]
>>> b[1] = 5
>>> b
[1, 5, 3]
>>> a
[1, 2, 3]

Com base nisso, tentamos o mesmo com matrizes.

>>> a = [[1,2,3], [4,5,6]]
>>> b = a[:]
>>> b
[[1, 2, 3], [4, 5, 6]]
>>> b[1][1] = 7
>>> b
[[1, 2, 3], [4, 7, 6]]
>>> a
[[1, 2, 3], [4, 7, 6]]

No entanto, vê-se que b[1] e a[1] são o mesmo objeto. A solução, ainda utilizando lista de listas, é copiar as listas internas (linhas da matriz) manualmente, como no exemplo seguinte:

>>> a = [[1,2,3], [4,5,6]]
>>> b = []
>>> b.append(a[0][:])
>>> b.append(a[1][:])
>>> b
[[1, 2, 3], [4, 5, 6]]
>>> b[1][1] = 7
>>> b
[[1, 2, 3], [4, 7, 6]]
>>> a
[[1, 2, 3], [4, 5, 6]]

20110223

Instalando mysql no Ubuntu 9.10 mesmo com CARMEN

Tentar instalar mysql numa máquina com CARMEN pode ser um problema, como descrito em https://bugs.launchpad.net/bugs/684685.
Comentei na issue, mas repito aqui: /usr/bin deve ser anterior a /usr/local/bin no PATH do root, já que CARMEN tem um utilitário chamado logger que conflita com logger(1) usado pelo mysql.

20110107

Conserto de erros de linkedição em mipsel

Um erro recorrente quando da linkedição para alvos mips little-endian é:

$xxx/../lib/gcc/mipsel-linux-uclibc/4.2.0/../../../../mipsel-linux-uclibc/bin/ld: non-dynamic relocations refer to dynamic symbol memcpy
$xxx/../lib/gcc/mipsel-linux-uclibc/4.2.0/../../../../mipsel-linux-uclibc/bin/ld: failed to set dynamic section sizes: Bad value

Resolve-se o dito cujo adicionando -fPIC à compilação.

20101122

Conflito entre toolchain Go e Inferno

Na linkedição de um programa trivial em Go, o seguinte erro ocorria:
freesg: symtab: not defined
freesg: esymtab: not defined
freesg: pclntab: not defined
freesg: epclntab: not defined

Em $HOME/bin havia um linker Go antigo, o que causava o problema. Removido este, problemas diferentes apareceram. Estes, por fim, eram devidos ao caminho para o linker da árvore do Inferno ser anterior ao caminho do Go em $PATH.

Como o kencc do Inferno não é usado a menos que se vá mexer no kernel, optei por deixar o caminho deste sempre posterior ao do Go.