Escrito por Helio Loureiro
Categoria:


Como alguém já disse antes: nem todo restart é bom.

Mas infelizmente isso é necessário em alguns momentos.  E meu roteador wireless Netgear WGR614 v7 chegou nesse ponto.  Diariamente ele exige um leve "restart" pra poder funcionar direito na parte wireless, do contrário nada consegue se conectar nele: notebook, netbook, xbox360, celulares... 

Deve ser alguma feature chinesa pois todos os produtos de lá padecem do mesmo mal, que sempre começa a aparecer depois de mais de 1 ano de uso.  Deve ser uma estratégia de marketing pra nos forçar a fazer um upgrade.  Igual ao Windows.

Mas voltando ao problema e sua solução, resolvi partir pra um restart automático (restart do bom, pra deixar claro).  Então primeiramente descobri que o roteador faz um restart ao salvar as configurações de wireless.  Em seguinda utilizei o Add-on do firefox, Live HTTP Headers, que ajudou a capturar os dados enviados ao equipamento:

POST /wlg_adv.cgi HTTP/1.1
Host: 192.168.34.1
User-Agent: Mozilla/5.0 (X11; U; Linux i686; pt-BR; rv:1.9.2.13) Gecko/20101206 Ubuntu/10.04 (lucid) Firefox/3.6.13
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: pt-br,pt;q=0.8,en-us;q=0.5,en;q=0.3
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 115
Connection: keep-alive
Referer: http://192.168.34.1/WLG_adv.htm
Authorization: Basic ZnVjazp5b3U=
Content-Type: application/x-www-form-urlencoded
Content-Length: 60
enable_ap=enable_ap&ssid_bc=ssid_bc&enable_wmm=0&Apply=Apply

O router exige autenticação, o que pode ser visto pela entrada "Authorization: Basic ZnVjazp5b3U=", que não usa criptografia mas um encode de base 64.

Então criei um script pra fazer o trabalho sujo e enviar os mesmos dados ao roteador, mas em Python.

#! /usr/bin/env python
# Script to restart daily my wireless router
# by Helio Loureiro

import httplib
import base64
import urllib
from time import ctime
 
user = "admin"
passw = "password"
host = "192.168.0.1"
 
def GetAuth(user = "user", passw = "passwd"):
        auth = user + ":" + passw
        return base64.encodestring(auth)[:-1]
 
headers = { 
        "Host" : host , 
        "User-Agent" : "Mozilla/5.0  (Python)",
        "Accept" : "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8" , 
        "Accept-Language" : "pt-br,pt;q=0.8,en-us;q=0.5,en;q=0.3",
        "Accept-Encoding" : "gzip,deflate", 
        "Accept-Charset" : "ISO-8859-1,utf-8;q=0.7,*;q=0.7",
        "Referer" : "http://192.168.34.1/WLG_adv.htm" ,
        "Authorization" : "Basic " +  GetAuth(user, passw),
        "Content-Type" : "application/x-www-form-urlencoded"
        }
 
post_params = {
        "enable_ap" : "enable_ap" ,
        "ssid_bc" : "ssid_bc",
        "enable_wmm" : "0",
        "Apply" : "Apply"
        }
 
params = urllib.urlencode(post_params)
 
web = httplib.HTTPConnection(host)
web.request("POST", "/wlg_adv.cgi", params, headers)
response = web.getresponse()
 
if (response.status == 200):
        print "[" + ctime() + "] Wireless router restarted successfully"
else:
        print "[" + ctime() + "] Restart FAILED"
 
data = response.read()
web.close()

Os dados necessários são usuário, senha e IP do roteador wireless (user, passw e host).  Adicionando o script à crontab, o roteador será reiniciado diariamente, aumentando um pouco mais a longevidade de tal produto Chinês.

Escrito por Helio Loureiro
Categoria:

Hoje, no meio das minhas férias, dei uma conectada na rede da empresa pra verificar uns mails (de uns amigos perdidos que mandaram pro endereço errado).

Por lá o comunicador oficial é o Lotus Sametime, da IBM.  Sempre conectei utilizando o Pidgin, um dos melhores clientes multi-serviço para IMs que conheço, e utilizando o módulo meanwhile pra conectar no servidor de sametime.  Qual não foi minha surpresa ao descobrir que o mesmo não funcionava mais.  Apenas recebia uma mensagem de "Version Mismatch" no rodapé do Pidgin e a conexão se encerrava.


Felizmente encontrei fácil uma solução no site do Pidgin, no TT#12623.  A solução sugere que o meanwhile seja configurado pra esconder sua identificação (hide), o que já era feito.  Então editei o arquivo ~/.purple/accounts.xml e adicionei somente uma linha com a informação abaixo:

                <settings>
                        <setting name='fake_client_id' type='bool'>1</setting>
                        <setting name='client_minor' type='int'>8511</setting>
                        <setting name='port' type='int'>1533</setting>
                        <setting name='force_login' type='bool'>1</setting>
                        <setting name='server' type='string'>sametime.internal.server.com</setting>
                </settings>

Funcionou xuxu beleza.  Reiniciei o Pidgin e imediatamente conectei e pude ver os contatos online.

Escrito por Helio Loureiro
Categoria:

Somente algumas pessoas sabem, mas eu criei um encurtador de url, o http://eri.cx.  A idéia é que seja usado para encurtar as URL da empresa.  E também serviu pra mostrar que algo tão simples quanto o encurtador não demanda tanto trabalho, nem pessoas.

Essa última afirmação pode soar estúpida, mas em grandes corporações não.  Como somos cercados por idiotas engravatados, algumas atitudes como essa, de criar algo que precisávamos, são necessárias.

Mas eu mesmo estava meio frustrado com o encurtador uma vez que seu uso exigia (na verdade  eu que achava que exigia) a compilação dos módulos do Choqok para uso no Twitter, entre outros.  O Choqok, para quem não conheçe, é um ótimo cliente KDE4 pra Twitter.

Aproveitando minhas sagradas férias, resolvi olhar um pouco mais a documentação do Yourls, projeto no qual o eri.cx é baseado, pra verificar se isso não era possível de uma forma mais simples.  Vi que existe uma API pra isso, a yourls-api.php, mas seu uso não era tão simples quanto eu achava.  Ou era e eu não percebi.  Mas enfim deu certo e aqui estou descrevendo como configurar.

No próprio Choqok, na aba de Configurações (ou Settings, se estiver em inglês como o meu), clique no último item, Configure Choqok.  Ele abrirá a tela de configuração, onde deve-se ir à aba de "encurtadores de url", ou "url shortening".  Nessa pasta, selecione o encurtador do tipo Yourls e em seguida clique na ferramenta ao lado, pra configurar.



Na parte de "Yourls API URL", entre como no formato mostrado acima: http://eri.cx/yourls-api?

Leia mais:Adicionando o encurtador ao Choqok
Escrito por Helio Loureiro
Categoria:

Meio tosco, meio fora de lugar, mas adicionei os links do AdSense ao site.

Não espero uma enormidade de retorno, mas... acho que não fará mal algum também.

Gostaria de adicionar ao topo da página, mas tenho encontrado muitas dificuldades de layout com esse tema no Joomla.  Talvez isso mostre que já é hora de trocar o mesmo.

Escrito por Helio Loureiro
Categoria:

Horrível a notícia que vi na Internet hoje.  Aparentemente uma lei foi aprovada na Hungria permitindo que Blogs, imprensa, qualquer fonte de notícia seja forçada a publicar suas fontes.

Medida extremamente opressiva, que vai contra todo sentido de liberdade.  Deixo então aqui meu apoio ao povo Húngaro.

E espero que os jumentos de terninho de Brasília não façam o mesmo por aqui com o #AI5Digital.


Escrito por Helio Loureiro
Categoria:

Aproveitando as resoluções de ano novo, alterei o template de CSS da página principal do site.  Editei o "templates/ja_purity/css/template.css" e fiz a seguinte alteração:


table.contentpaneopen {
	border: none;
	border-collapse: collapse;
	border-spacing: 0;
        color: #FFFFFF;
}

Isso melhorou as fontes que aparecem na parte de cima, logo abaixo do logo do site, com informações em branco (cor #FFFFFF).

2011 está aí, férias também, então nada mais justo que acertar essas pequenas pendências de 2010.

= Um pequeno adendo =

Depois de publicar, vi que o links continuavam escuros.  Fiz mais um pequeno adendo ao mesmo arquivo:

table.contentpaneopen a {
    color: #FFFFFF;
}


Escrito por Helio Loureiro
Categoria:

Como já tinha comentado no post anterior, adquiri um laptop novo. Decidi fazer isso pra me livrar da chateação corporativa do laptop da empresa. Agora posso utilizar Linux ou FreeBSD, ou o que eu quiser, incondicionalmente, sem amolação. No momento estou com Linux, Ubuntu pra ser mais preciso, mas com certeza gostaria de rodar FreeBSD nele, o que não farei até que o suporte pra suspend/hibernate esteja mais maduro.

Devido às restrições dos aplicativos da empresa, que estão empacados em 32 bits, optei por utilizar Ubuntu X86 ao invés do AMD64. Se perdi desempenho, nem percebi. Habilitei o kernel com PAE, pra endereçar os 4 GB de memória e tudo está funcionando bem.

 

Leia mais:Análise do Sony Vaio VPC S110GB
Escrito por Helio Loureiro
Categoria:

Um último post antes da ceia de Natal, pra fechar bem o dia. 

Utilizando o kdenlive (grande dica via Twitter, nem lembro de quem, mas foi uma ótima dica), editei o longo e moroso vídeo original (os vários na verdade) e fiz um pequeno "unboxing" do laptop.

Provavelmente estarei escrevendo uma pequena comparação entre o Sony Vaio e o Dell.


Escrito por Helio Loureiro
Categoria:

Faz tempo que não escrevo nada por aqui, e confesso que estava com saudades.

Muito coisa mudou desde o meu último post.  Shibboleet foi devolvida, migrei pra Ubuntu, comprei outro xbox360, vendi o anterior, criei um encurtador e a reta final do ano veio com tudo: projetos, mais projetos e muito mais projetos.  Por isso escrevi tão pouco por aqui.

Começando pela Shibboleet, minha recém adquirida máquina, um Dell Vostro 3500, que foi sumariamente devolvida.  Quando abri o pacote, realmente levei um susto: enorme.  O equipamento era muito grande.  Eu o imaginava como um PowerBook 13 polegadas, só que um *pouquinho* maior.  Esse pouco era imenso, tanto em largura e comprimento quanto em altura, o que fazia meus pulso doerem com a digitação.

Leia mais:Adeus shibboleet...
Escrito por Helio Loureiro
Categoria:

Invariavelmente tenho de mexer no xorg e acertar as frequências do monitor.  Isso não é tão necessário no Linux, mas em FreeBSD é impossível ter uma tela gráfica usável sem o xorg.conf criado.

E testando no Dell Vostro 3500, só consigo uma tela 1024x768 justamente pela falta das frequências suportadas.  Para corrigir isso, criei um script já faz alguns anos, mas não tinha publicado ainda.  É baseado no xrandr e deve ser rodado a partir da tela gráfica, por pior que seja sua resolução.

#! /usr/bin/perl

$H_SIZE = 1280; # standard horizontal size
$V_SIZE = 800; # standard vertical size


@SIZES = qw( 1280 1152 1024 800 1200 1400 1600 1800 1900 1920 2048);

print "Section \"Modes\"\n\tIdentifier \"MyModes\"\n";
foreach $hs (@SIZES) {
$rate = $hs / $H_SIZE;
$vs = $V_SIZE * $rate;
foreach $freq qw(60 75) {
print "\t\t# $hs x $vs ($rate - $freq Hz)\n";
$output = `gtf $hs $vs $freq -x`;
foreach $line (split(/\n/, $output)) {
next if ($line !~ /[0-9a-z]/);
$line =~ s/ *//;
print "\t\t".$line."\n";
next if ($line =~ "#");
$line =~ s/\"//g;
$line =~ s/_(\d+)//g;
$line =~ s/Modeline //g;
$cmd = "xrandr --newmode ".$line ;
system($cmd."> /dev/null 2>&1");
#print $cmd."\n";
$modeline = $line;
$modeline =~ s/ .*//g;
#print "Mode: $modeline\n";
$cmd = "xrandr --addmode LVDS $modeline > /dev/null 2>&1";
system($cmd);
}
}
}
print "EndSection\n";

Leia mais:Frequências de vídeo
Escrito por Helio Loureiro
Categoria:

Finalmente decidi concretizar meu sonho de consumo e comprei um Dell Vostro, mas o 3500 ao invés do 3300.  No momento espero poder realizar a troca por um 3300 pois o mesmo é muito grande em suas dimensões (e peso), mas isso é outro assunto.

Na instalação do sistema, fiquei na dúvida em qual seria o hostname perfeito pro novo laptop.  E hostname não é somente um nome: é toda a personalidade do seu sistema.

Meu laptop anterior chamava-se, ou melhor, ainda chama, uma vez que continua comigo, musashi.  Uma homenagem ao grande espadachim e mestre da arte da estratégia japonesa.  E também porque o batismo dele ocorreu exatamente durante a leitura do livro homônimo.

O meu outro laptop, um iBook branco de 12 polegadas, chama-se xuxu.

Então precisava de um nome pro mais novo membro da família computacional de casa.  Adotei inicialmente musashi-v3500, mas confesso que usar números e símbolos é algo tão frio que reservo essa falta de imaginação patogênica para as máquinas do trabalho.

Foi então que decidi usar o nome Bazinga.  Seria uma clara homenagem ao seriado "The Big Bang Theory", e me elevaria aos níveis mais nerds possíveis.  Mas durante esse pensamento, tive uma epifania: shibboleet.

shibboleet surgiu recentemente num quadrinho do xkcd.  Encontrei o mesmo traduzido para português:


Achei fantástica a piada somente pelo "momento" da coisa, pela falta de suporte do help-desk.  Como temos o suporte da HP na empresa, pra área de TI, senti o mesmo que o cara acima.

Mas recentemente, buscando essa mesma tira pra lembrar a palavra shibboleet, encontrei um artigo sobre o seu significado.  Aparentemente é a fusão de shibboleth, uma palavra hebraica que é usada para distiguir se a pessoa que a pronuncia corretamente é de origem judaica, e leet, que quer dizer na linguagem *hacker* liderar.

XKCD é realmente uma viagem geek.  Espero que meu novo laptop também o seja. 

Escrito por Helio Loureiro
Categoria:


Usuários Debian ou Ubuntu, ou um de seus derivados, frequentemente encontram problema de chave ao realizar um "apt-get update", como abaixo:

root@musashi:DEBIAN# apt-get update
Get:1 http://dl.google.com stable Release.gpg [189 B]
Ign http://dl.google.com/linux/chrome/deb/ stable/main Translation-en
Hit http://ftp.de.debian.org squeeze Release.gpg
[... várias linhas suprimidas ...]
Hit ftp://debian.oregonstate.edu testing/main i386 Packages/DiffIndex
Hit ftp://debian.oregonstate.edu testing/contrib i386 Packages/DiffIndex
Hit ftp://debian.oregonstate.edu testing/non-free i386 Packages/DiffIndex
Fetched 5,197 B in 49s (104 B/s)
Reading package lists... Done

W: GPG error: http://deb.opera.com squeeze Release: The following signatures
couldn't be verified because the public key is not available: NO_PUBKEY F9A2F76A9D1A0061
W: GPG error: http://mirror.home-dn.net squeeze Release: The following signatures
couldn't be verified because the public key is not available: NO_PUBKEY 07DC563D1F41B907
W: GPG error: http://www.lamaresh.net squeeze Release: The following signatures
couldn't be verified because the public key is not available: NO_PUBKEY 905C75258D4B24D2
W: GPG error: http://mirror.home-dn.net testing Release: The following signatures
couldn't be verified because the public key is not available: NO_PUBKEY 07DC563D1F41B907
W: GPG error: http://www.debian-multimedia.org testing Release: The following signatures
couldn't be verified because the public key is not available: NO_PUBKEY 07DC563D1F41B907
W: GPG error: http://debian-multimedia.org squeeze Release: The following signatures
couldn't be verified because the public key is not available: NO_PUBKEY 07DC563D1F41B907

O erro de GPG mostrado é causado pela falta dessas chaves no sistema de controle do apt, o chamado chaveiro GPG (em geral localizado em "/etc/apt/trusted.gpg"). Essas chaves assinam os pacotes DEB instalados, garantido que os mesmos não foram modificados no repositório, evitando a instalação de "cavalos de tróia" e coisas de gênero (note que isso não garante a origem do pacote, por isso sempre use repositórios confiáveis).

Para corrigir, nada mais fácil que um scriptzinho, utilizando as chaves mostradas na saída de erro:

for key in F9A2F76A9D1A0061 07DC563D1F41B907 905C75258D4B24D2 \
07DC563D1F41B907 07DC563D1F41B907 07DC563D1F41B907
do
gpg --keyserver subkeys.pgp.net --recv $key | \
gpg --export --armor | apt-key add -
done

A saída será algo como:

gpg: requesting key 1F41B907 from hkp server subkeys.pgp.net
gpg: key 1F41B907: "Christian Marillat " not changed
gpg: Total number processed: 1
gpg: unchanged: 1
OK

para cada chave. O próximo "apt-get update" já não apresentará os mesmos problemas.

=-=-=-=-=
Powered by Blogilo

Escrito por Helio Loureiro
Categoria:

O twitter tem sugado tanto minhas energias (e meus posts) que às vezes me sinto como essa tira do Dilbert...


Dilbert.com


Será que estou ficando tão burro assim?