sexta-feira, 6 de julho de 2012

Tratando excessões no Oracle via código de erro

A solução é declarar uma exception e inicializá-la com o tipo:



begin
  DECLARE  test_exce EXCEPTION;
   PRAGMA EXCEPTION_INIT(test_exce, -20002);
  begin
    raise_application_error(-20002, ':)');
  exception when test_exce
    THEN
    BEGIN
      NULL;
    END;
  end;
end;


Bem mais elegante do que capturar todas (com o OTHERS) e testar o código do erro (SQLCODE). ;)

Fonte: http://docs.oracle.com/cd/B19306_01/appdev.102/b14261/errors.htm#i1863

quarta-feira, 30 de maio de 2012

Oracle XE

Para permitir acesso de qualquer host ao Apex (interface em HTML para administração):
BEGIN DBMS_XDB.SETLISTENERLOCALACCESS(FALSE); END;
Solução para o erro:
ORA-12519: TNS:no appropriate service handler found
Executar o seguinte SQL:
ALTER SYSTEM SET PROCESSES=300 SCOPE=SPFILE;

terça-feira, 29 de novembro de 2011

(re)gerando build.xml de um projeto Android

Pode ser que, ao pegar um projeto criado no Eclipse para o Android, o projeto gerado não tenha alguns arquivos necessários para trabalhar via CLI - seu professor pode não tê-los incluído, por exemplo ;). O build.xml e o local.properties são necessários para usar o "ant" no projeto. É possível, entretanto, gerá-los. Basta o comando:
android update project --path <caminho> --name <nome> --target <versão>
<caminho> é o path para o projeto. Os demais parâmetros podem ser conferidos no post Hello Android World

terça-feira, 16 de agosto de 2011

Usando o Log no Android

No meio do desenvolvimento, certamente você precisará de algumas informações pra descobrir o que está acontecendo de errado. O SDK do Android tem uma ferramenta de log que pode ser usada facilmente.

No código, só é necessário incluir, em pontos estratégicos, uma chamada para a classe estática "Log":

Log.d("MyTAG", "message");
Para "ouvir" o log, é necessário executar o seguinte comando:
$ adb logcat
Também é possível usar uma variável de ambiente para filtrar as mensagens pela TAG: ANDROID_LOG_TAGS
export ANDROID_LOG_TAGS="ActivityManager:I MyTAG:D *:S"
"ActivityManager" são os logs de atividades do Android. Serão mostradas mensagens de informação (o "I" indica isso).
"MyTAG" é a TAG que interessa, com mensagens de debug (o "D") ;)
O asterisco é para silenciar (S) todas as demais mensagens.

O valor dessa variável pode ser sobrescrito via linha de comando:
$ adb logcat MyTAG:D *:S
Com isso, a variável de ambiente é completamente ignorada.

Mais informações:
$ adb logcat --help
http://developer.android.com/reference/android/util/Log.html
http://developer.android.com/guide/developing/tools/logcat.html

terça-feira, 9 de agosto de 2011

Hello Android World

Depois de anos, reativando o blog com um post sobre o Android...

Comprei um Nexus S, da Samsung e pretendo criar algumas apps pro Android. O emulador do Android é muito (muito mesmo) lento. Então, a ideia é usar um dispositivo "real" pra testes e debug.

Instalando o SDK
Primeiro, as dependências: precisa instalar o Java (estou usando o OpenJDK 1.6.0_22 e o ant). Use o yum ou o apt, funciona! ;)
 
Depois, é necessário instalar o SDK do Android, que está disponível em http://developer.android.com/sdk/. No Linux, primeiro precisa baixar e descompactar em algum lugar.

Eu baixei e descompactei em /home/rodolfo/source/android/android-sdk-linux_x86.

Depois, é necessário instalar a versão da API que se quer usar. Para isso, executamos "android" que está na pasta "tools".



Seguindo a interface, acesse "Available Packages" e  marque a versão do Android no celular. Atualmente, a última para celulares (a 3.* é para trablets) é o "SDK Plataform Android 2.3.3, API 10, revision 1".

Atenção para o número 10 da API, será útil no futuro. Espere o download e era isso. :)

Tipos de Aplicações no Android
  • Activities => interface gráfica onde o usuário pode interagir
  • Services => parte/software que fica executando em segundo plano
  • Broadcast Receivers => aplicações que respondem a determinados eventos, como receber um SMS, por exemplo. 
No nosso "HelloWorld", vamos criar uma "Activity", com um texto "HelloWorld" na tela. Simples assim.

Ajustando o ambiente
Como não pretendo usar o eclipse, uma dica é configurar o shell para usar diretamente os comandos do SDK.

export PATH="$PATH:/home/rodolfo/source/android/android-sdk-linux_x86/tools:/home/rodolfo/source/android/android-sdk-linux_x86/platform-tools"
Lembre-se de ajustar o path para onde você descompactou o SDK. ;)


Criando o projeto

No shell:
android create project -t 10 -k meu.HelloWorld -a HelloWorld -n myHelloWorld --path ./myHelloWorld
Os parâmetros:
  • -t , onde o é o nro que está na API, quando instalamos
  • -k indica o nome do projeto, que sempre precisa ter 2 palavras, separadas por "." (deve ser culpa do Java).
  • -n indica o nome da atividade. Quando vc instalar a app no celular, é esse o nome que vai aparecer no menu do android.
  • --path é o local onde os arquivos do projeto serão criados
O projeto, obviamente, não faz nada. Vamos alterar só pra escrever o HelloWorld na tela.


O primeiro código

No "path" do projeto existe uma pasta "src" que - obviamente - contém os fontes. Lá dentro, edite o arquivo HelloWorld.java:

package meu.HelloWorld;

import android.app.Activity;
import android.os.Bundle;
import android.widget.TextView;

public class HelloWorld extends Activity
{
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        TextView tv = new TextView(this);
        tv.setText("Hello, Android!");
        setContentView(tv);
    }
}
Sem muitas explicações, vamos logo rodar isso...


Compilando...
Voltando ao path do projeto, execute:
ant debug
Sim, por enquanto, debug ativo. E só.
O ant já cria, no diretório "bin" do projeto, os arquivos .apk para serem instalados.


... configurar o celular...
É preciso habilitar o celular para rodar aplicações de fora do Android Market. Isso fica nos ajustes (settings) do celular.
E mais algumas configurações que podem ser encontradas em http://developer.android.com/guide/developing/device.html
 
... e rodar!
No projeto, é só executar
ant install
A aplicação será transferida para o celular. A partir de agora, só precisa clicar nela pra tudo sair funcionando..


Melhor que usar o eclipse, né!? ;)




Fontes:
http://developer.android.com/guide/developing/device.html
http://blogs.nitobi.com/joe/2010/03/26/android-without-eclips/

sábado, 30 de outubro de 2010

RailsRumble 2010

Já faz um bom tempo que terminou (foi no final de semana dos dias 16 e 17 de Outubro), mas os resultados ainda estão aí. Participei do RailsRumble convidado pelo @juliogreff. A meta: programar alguma coisa usando RoR em 48h. Detalhe: nem eu, nem ele tínhamos feito nada em Rails antes da equipe Nuby on Rails (que contava com o talento do @rafaelmarin e do @herminiotorres).

A aplicação também foi ideia do Júlio: http://choons.fm. É uma rede social para bons ouvintes (de boa música).


A experiência foi incrivelmente única. Eu não acreditava que a gente conseguiria terminar, mas conseguimos. A estratégia não foi das melhores: Extreme Go Horse (extreme). Talvez por isso o código precise ser refeito... e eu disse talvez... haha

Falando sério, passar 48h programando, dormindo pouco e sob pressão pode não parecer muito divertido, mas o aprendizado no processo foi grande. É muito bom colocar em prática o que foi lido no Caindo na Real (ou Getting Real) - que agora tem nova versão chamada Rework. Acaba dando muita energia para discutir nas reuniões e pra querer mudar o rumo das coisas...

E acontece de às vezes querer pedir demissão, né Júlio?!

Ah, só pra constar: ficamos em 3º lugar (atrás do BeerCheckIn e do Owe Me Cash) na classificação geral, de 180 equipes que conseguiram terminar em 48h, de 300 equipes que se inscreveram. Nada mal para marinheiros de primeira viajem, não?! :)


Então: recomendo pra todo mundo participar, mesmo que não saiba nada de RoR. E mesmo que não consiga terminar a app, o que se aprende vai muito além do código-fonte!

domingo, 3 de outubro de 2010

Primeiros passos com RoR

Comecei a ver RoR seguindo o Getting Started. Tive um problema logo no começo. Foi ao usar o console:

rodolfo@rodolfoNote:~/RoR/blog$ rails console/opt/RoR/ruby/lib/ruby/1.9.1/irb/completion.rb:9:in `require': no such file to load -- readline (LoadError)
from /opt/RoR/ruby/lib/ruby/1.9.1/irb/completion.rb:9:in `<top (required)>'
from /opt/RoR/ruby/lib/ruby/gems/1.9.1/gems/railties-3.0.0/lib/rails/commands/console.rb:3:in `require'
from /opt/RoR/ruby/lib/ruby/gems/1.9.1/gems/railties-3.0.0/lib/rails/commands/console.rb:3:in `<top (required)>'
from /opt/RoR/ruby/lib/ruby/gems/1.9.1/gems/railties-3.0.0/lib/rails/commands.rb:20:in `require'
from /opt/RoR/ruby/lib/ruby/gems/1.9.1/gems/railties-3.0.0/lib/rails/commands.rb:20:in `<top (required)>'
from script/rails:6:in `require'
from script/rails:6:in `<main>'

A solução foi encontrada em http://snippets.aktagon.com/snippets/57-Solution-to-require-no-such-file-to-load-readline-LoadError-problem, mas a solução não foi suficiente:

root@rodolfoNote:/opt/RoR/src/ruby-1.9.2-p0/ext/readline# ruby extconf.rb 
checking for tgetnum() in -lncurses... yes
checking for readline/readline.h... no
checking for editline/readline.h... no

O script indica que não encontrou o "readline.h". A solução é instalar o pacote libreadline6-dev via apt e repetir o processo. Essa falha não acontecerá se essa lib estiver instalada no momento de compilar o ruby. :)

Depois, é só tocar ficha:

cd /ruby-1.9.2-p0/ext/readline
ruby extconf.rb
make
make install

Por hoje é só. Logo posto mais resultados... :)

terça-feira, 7 de setembro de 2010

...mas a Dell também acerta!

(essa é a parte 2 - a parte 1 é "A Dell também erra")
Finalmente!

Ontem - segunda-feira, véspera de feriado - 2 semanas depois de reportar o problema para a Dell, um técnico foi até o meu local de trabalho - já que eu estava trabalhando - e trocou a placa-mãe do notebook. Tudo funcionando: agora, depois de 2 notebooks e 5 placas-mãe, tenho um notebook que não aquece (chu*a HP!) e que também desliga!

O atendimento foi feito por uma empresa chamada Unisys e levou 1h e 15min, mais ou menos. O cara desmontou o notebook inteiro! (pena não ter uma câmera pra tirar fotos).

O notebook apresentou defeito, mas não fiquei nem um dia sem ele graças à garantia que a Dell oferece. Realmente muito bom e vale a pena, bem diferente dos notes HP comprados em lojas, que deixam o cliente sem por mais de 2 meses...

O único porém foi o técnico não ter os relatórios de atendimento e precisar usar uma impressora ali. Mas tudo bem, quando eu era técnico fazia dessas também...


Parabéns, Dell. Conseguiu um cliente e várias recomendações.

segunda-feira, 30 de agosto de 2010

A Dell também erra

Faz um tempo que meu notebook Dell tem um problema: ele não desliga. No Windows e no Linux, acontece a mesma coisa: ao desligar, ele faz um "desliguei-na-pegadinha-do-malandro" (créditos pra @vanemaster) e reinicia.

Liguei para a Dell, no 0800, passei todas as informações (incluindo o nro de série, pra não ter problema ao identificar o notebook). Como a garantia é no local (toma HP!), é o técnico da Dell que vem até o notebook, não o contrário. Isso foi na segunda-feira, dia 23. A solução dada pelo atendente: substituição da placa-mãe (de novo?! nããããããão!)

No dia seguinte, me ligam e agendam a visita. Ficou para quinta-feira, dia 26. Até aqui, nota 10 pro atendimento. O ideal seria notebook sem problema, mas o pós-venda está muito bom.

No dia 26 aparece o técnico. E adivinha? Sim, a Dell também erra: mandaram a placa-mãe de outro modelo. O técnico tentou uma atualização de BIOS e mais umas configurações, mas nada feito. Um novo atendimento será realizado.

Hoje, dia 30, uma semana depois do primeiro contato, fui no chat da Dell perguntar pq ainda não entraram em contato. Depois de espera - o atendente precisou pedir ajuda para o coordenador - veio a resposta:

Senhor, infelizmente não temos a peça para o seu equipamento no Brasil
O chamado esta aberto, mas será necessário aguardar a vinda de uma peça do exterior.

Perguntei quanto tempo ia levar... Sem esperanças, mas perguntei. A resposta:

Não tenho como lhe informar senhor.
Pois depende da fabricação.

No fim, mesmo com a espera, estou satisfeito com o atendimento. O notebook funciona e eu não preciso ficar sem ele até conseguirem as peças...

Só 1 coisa a declarar: HP nunca mais!

sábado, 21 de agosto de 2010

Firefox 4.0b5pre - 214 pontos no HTML5

Eu não gosto muito de esperar. Então, resolvi baixar o Firefox direto do repositório da Mozilla e compilar a versão que nem saiu do forno ainda (apressado come cru?):


Para minha grata surpresa, muito do HTML5 já estará implementado na nova versão da nossa raposa (ou panda-vermelho). Os resutados nos testes do site http://www.html5test.com/ chegam a 214 (de um total de 300)!


Para efeito de comparação, a versão atual (3.6.7 enquanto escrevo) fica em 139. E agora já dá pra assistir vídeos no Youtube sem Flash (com o Chrome já dava, é verdade): http://www.youtube.com/html5

Somente baixar e instalar, no entanto, não habilita o webGL. O webGL coloca 3D dentro do navegador. Para funcionar no Linux, é necessário instalar o pacote libosmesa6 e fazer os devidos apontamentos dentro do about:config do navegador:

As mudanças são:

webgl.enabled_for_all_sites = true
webgl.osmesalib = /usr/lib/libOSMesa.so.6


Depois disso, é só testar: http://guciek.net/test/adaptive_webgl


Fonte: http://guciek.net/en/3d/osmesa_webgl

quarta-feira, 18 de agosto de 2010

Como capturar porcos selvagens?

Recebi, ainda em 2007, mas que ainda é atual (transcrevo aqui, mas a autoria não é minha, nem sei de quem é). Não tem nada a ver com informática, mas tem a ver com reflexão e a época...


Havia um professor de química em um grande colégio com alunos de intercâmbio em sua turma. Um dia, enquanto a turma estava no laboratório, o professor notou um jovem do intercâmbio que continuamente coçava as costas e se esticava como se elas doessem.

O professor perguntou ao jovem qual era o problema. O aluno respondeu que tinha uma bala alojada nas costas pois tinha sido alvejado enquanto lutava contra os comunistas de seu país nativo que estavam tentando derrubar seu governo e instalar um novo regime, um "outro mundo possível".

No meio da sua história ele olhou para o professor e fez uma estranha pergunta: "O senhor sabe como se capturam porcos selvagens?"

O professor achou que se tratava de uma piada e esperava uma resposta engraçada. O jovem disse que não era piada.

"Você captura porcos selvagens encontrando um lugar adequado na floresta e colocando algum milho no chão. Os porcos vêm todos os dias comer o milho de gratuito. Quando eles se acostumam a vir todos os dias, você coloca uma cerca mas só em um lado do lugar em que eles se acostumaram a vir. Quando eles se acostumam com a cerca, ele voltam a comer o milho e você coloca um outro lado da cerca. Mais uma vez eles se acostumam e voltam a comer. Você continua desse jeito até colocar os quatro lados da cerca em volta deles com uma porta no último lado. Os porcos que já se acostumaram ao milho fácil e às cercas, começam a vir sozinhos pela entrada. Você então fecha a porteira e captura o grupo todo."

"Assim, em um segundo, os porcos perdem sua liberdade. Eles ficam correndo e dando voltas dentro da cerca, mas já foram pegos. Logo, voltam a comer o milho fácil e gratuito. Eles ficaram tão acostumados a ele que esqueceram como caçar na floresta por si próprios, e por isso aceitam a servidão."

O jovem então disse ao professor que era exatamente isso que ele via acontecer neste país. O governo ficava empurrando-os para o comunismo e o socialismo e espalhando o milho gratuito na forma de programas de auxílio de renda, bolsas isso e aquilo, impostos variados, estatutos de "proteção", cotas para estes e aqueles, subsídio para todo tipo de coisa, pagamentos para não plantar, programas de "bem-estar social",  medicina e medicamentos "gratuitos", sempre e sempre novas leis, etc, tudo ao custo da perda contínua das liberdades, migalha a migalha.

Devemos sempre lembrar que "Não existe esse negócio de almoço grátis" e também que "não é possível alguém prestar um serviço mais barato do que seria se você mesmo o fizesse".



Lembre-se disso (também) na hora de votar...

domingo, 25 de julho de 2010

FISL 2010

Chegou ao fim mais um FISL. Foi o 11º da história do evento e o 2º da minha história pessoal. :)


Valeu pelas palestras, pelas oficinas em pé no meio dos expositores e tudo mais. Pessoal do Tchelinux de parabéns e do Ateliê Livre também, que deixaram com mais vontade ainda de comprar um Arduino.

Muito interessante o que foi demonstrado sobre o Firefox. Nos sentimos (eu e o Júlio Greff, que assistiu comigo) pequenos com a quantidade do que pode/poderá ser feito. Depois do que vi, passei a acreditar que realmente poderemos ter o navegador substituindo boa parte do desktop...

Muita coisa sobre Ruby on Rails. Muito mais sobre filosofia do que sobre código e programação. Mesmo as ditas "metodologias ágeis" hoje já esquecem os 4 princípios do manifesto ágil:

Individuals and interactions over processes and tools
Working software over comprehensive documentation
Customer collaboration over contract negotiation
Responding to change over following a plan
E antes que pensem mal, não vou abandonar o Python/Django... ;)

sábado, 19 de junho de 2010

Tchelinux 2010

Hoje foi minha primeira participação do Tchelinux na minha cidade. Já havia participado em Porto Alegre, mas nunca aqui. E foi a primeira vez como palestrante também.

Confesso que fiquei meio nervoso, sim, mas acredito que foi por ser minha primeira vez (e a primeira a gente nunca esquece) e acabei apresentando meio rápido. Ainda assim foi muito bom. E quem não foi, participe da próxima: a inscrição custa só a doação de alimentos (já arrecadaram quase 9t de 2009 pra cá).

Minha palestra foi sobre segurança (acredito que de baixo-nível), mostrando como proteger cookies contra "furto" via javascript e captura de pacotes. Deixo abaixo a palestra, já com uns ajustes pra ficar mais completa. Vou atualizando assim que for melhorando ela :)





Gostei bastante também depois de conversar com o pessoal sobre desenvolvimento seguro. E se alguém tiver comentários sobre o assunto, por favor use os comentários... :)

E ficam as referências da comunidade que organiza os eventos:
@tchelinux
http://tchelinux.org/

quarta-feira, 19 de maio de 2010

Ovi Store - primeira "compra"

O que um nerd faz na aula de Teoria da Computação? Fuça no celular, óbvio.

Hoje baixei minha primeira aplicação da ovi-store, da Nokia. Tenho um Nokia 5130 XpressMusic com uma conta vivo controle. Como tinham uns créditos acumulados do mês passado, resolvi arriscar: comecei a procurar uma app para o twitter.

Pelo celular, consegui gastar pouco mais de R$10 só procurando, sem sucesso. Navegar pela tela desse celular não é bom.

A forma mais simples de conseguir uma aplicação é via Ovi Store na Internet. Você se cadastra, precisa confirmar que o celular é seu (via SMS) e depois escolhe alguma aplicação. Ao clicar em "Enviar para cel", vc recebe um SMS com o link da aplicação.

Até aqui, ok. Só que, depois de vários SMSs com links apontando para "http://store*falta algum texto *", vc ainda precisa navegar, logar, etc, etc e, no fim, baixar... Funciona, mas foram mais R$10 de créditos pra conseguir baixar (o aplicativo é free, mas a conexão não)...


No fim, baixei o Twittle, mas como a loja levou todos os meus créditos, só vou poder twittar do celular mês que vem...

Depois de tudo, o complicado é ver que o arquivo baixado é "twittle_s40.nfl", um arquivo ZIP com um SWF dentro. Sim! NFL deve ser Nokia Flash Lite...

Conclusão: ainda é muito caro usar a Internet no celular para qualquer coisa por aqui... =/


EDIT: O complicado é, depois de googlar um pouco, encontrar sites como o http://www.mobicreed.com e o http://mobigun.com/ com um monte de games e aplicações FREE para o celular...

segunda-feira, 17 de maio de 2010

TI - revolução

A tecnologia da informação é uma enorme revolução que ainda está em andamento. Ela é muito maior que a Revolução Industrial e só é comparável à imprensa de Gutemberg. Essa revolução tem mudado até os paradigmas científicos vigentes.

Essa frase é de George Djorgovski, professor de astronomia do Instituto de Tecnologia da Califórnia (Caltech). Saiu no inovação tecnológica.

O que chama a atenção é a responsabilidade colocada em cima da Tecnologia da Informação. Como seres humanos não conseguem dar conta de tanta informação, cabe a nós darmos um jeito nisso...

Grandes poderes trazem grandes responsabilidades...

Fonte:http://www.inovacaotecnologica.com.br/noticias/noticia.php?artigo=ciencia-seculo-21-realidade-virtual-inteligencia-artificial&id=010150100514

sábado, 10 de abril de 2010

Skype em AMD64

Já escrevi sobre como instalar programas 32 bits em Linux 64 bits. Só que nem tudo são flores: tentei fazer o mesmo com o Skype e quem disse que funciona?!

A solução parece simples: criar um chroot completo 32 bits. E é bem simples mesmo, só é preciso ter cuidado com algumas coisas.

Primeiro, criar um diretório e usar o cdebootstrap pra baixar todos os pacotes básicos nele (se não estiver instalado, apt-get nele!)
mkdir /opt/i386-chroot
cdebootstrap --arch i386 sid /opt/i386-chroot http://ftp.br.debian.org/debian/

O "i386" é a arquitetura. O "br" eu coloquei para usar os servidores nacionais, que devem ser mais rápidos por estarem mais próximos.

Depois, o "pulo do gato": colocar os diretórios de sistema do linux e o seu home nos 2 lugares ao mesmo tempo. Para isso, só é necessário acrescentar no arquivo /etc/fstab:
#i386 chroot
/dev        /opt/i386-chroot/dev    none    bind    0    0
/tmp        /opt/i386-chroot/tmp    none    bind    0    0
/home        /opt/i386-chroot/home    none    bind    0    0
/proc        /opt/i386-chroot/proc    none    bind    0    0
/sys        /opt/i386-chroot/sys    none    bind    0    0
E executar o comando para montar tudo:
mount -a
Com essas confs, quando o micro for reiniciado, tudo já vai estar automaticamente nos lugares certos. Todos eles são importantes, principalmente o "/proc" e o "/sys" para funcionar a webcam e o áudio... O "/tmp" é necessário para a interface gráfica... ;)

ATENÇÃO: quando vc faz isso, seus arquivos estarão nos 2 lugares. Se vc apagar o diretório i386-chroot, todos os arquivos do "/home" também serão excuídos.

Alguns sites colocam outras configurações para o "/proc" ou deixam o "/sys" de fora. Fazendo de outras formas eu não consegui usar o som e a webcam. Fica a dica, então.

Feito isso, é só executar o comando chroot para usar o novo diretório como se fosse um novo linux
chroot /opt/i386-chroot
Adicionar a linha do repositório do Skype (lembre-se que depois de executar o chroot você estará num ambiente completamente novo) :
## Skype
deb http://download.skype.com/linux/repos/debian/ stable non-free
 E instalar usando o apt-get:
apt-get install skype
Para rodar ele sem precisar ser root (vc deve ter percebido que o comand "chroot" só funciona como super usuário), utiliza-se o schroot (de novo, se não estiver, apt-get nele!).

Depois de instalar, é preciso configurá-lo. Adicione no fim do arquivo /etc/schroot/schroot.conf :
[i386]
description=Debian i386 (sid/unstable)
directory=/opt/i386-chroot
priority=3
groups=rodolfo,root
root-groups=root
personality=linux32
Em negrito está o nome do grupo dos usuários que podem usar o schroot. Use o seu (eu usei o meu... hehe). Outras opções e explicação para elas vc encontra no seu próprio linux:
man schroot.conf
Para rodar:

schroot -p -c i386 -- skype
"i386" é o nome entre [ ] no arquivo de configuração.
"skype" é o comando a ser executado em 32 bits.

Vc pode criar um script em shell bem criativo para automatizar essa tarefa (e ainda não precisar lembrar de tudo isso cada vez que instalar alguma coisa). Eu coloquei o meu em /usr/local/bin/i386_chroot.sh. Com permissão de execução (chmod +x i386_chroot.sh), vc pode chamá-lo de qualquer lugar.

O conteúdo:
#!/bin/bash
exec /usr/bin/schroot -p -c i386 -- "`/usr/bin/basename $0`" "$@"
 Pra funcionar, ele vai chamar o nome do arquivo que vc colocar. Então, ainda no /usr/local/bin, faça:
ln -s i386_chroot.sh skype
 Assim, quando vc chamar "skype" na linha de comando, ele vai entrar no chroot e rodar. Para outros programas, é só instalar no chroot e criar o link (não precisa alterar o script, só criar o link simbólico através do ln ali de cima).

Ufa! Está pronto. Só que a webcam não funcionou no skype. O erro é o seguinte:
 X Error, request 132, minor 18, error code 8 BadMatch (invalid parameter attributes)
A solução é simples. Adicione, no script i386_chroot.sh, antes da linha do "exec":

# skype: http://akdwivedi.wordpress.com/2009/05/09/skype-on-64bit-fedora-10/
export XLIB_SKIP_ARGB_VISUALS=1
Deixei o link no comentário, para futuras referências.

É isso. Nem todas as aplicações estão prontas pra usar 64 bits, mas nós usamos mesmo assim (e aproveitamos melhor os 4GB de memória).

Fontes:
http://blog.diovani.com/2008/03/11/usando-um-chroot-para-rodar-aplicacoes-32bit-em-uma-instalacao-amd64/
http://akdwivedi.wordpress.com/2009/05/09/skype-on-64bit-fedora-10/

sábado, 3 de abril de 2010

mplayer e legenda com erro de codificação

Assistindo umas séries no mplayer, algumas legendas perdem os caracteres acentuados por causa da codificação. A solução, para os "brasileiros" , é até bem simples. É só chamar o mplayer com identificação de idioma:

mplayer -slang pt-BR #arquivo#
Acho que não é o ideal, e ainda não encontrei solução na interface gráfica, se alguém tiver a dica, agradeceria... :)

Fonte: http://lists.mplayerhq.hu/pipermail/mplayer-dvb/2004-January/001405.html

Novo hardware encontrado...

O ano finalmente começou e eu entrei num período de "atualização de hardware". Por motivos de força maior, troquei de celular (um Nokia 5130) e de notebook (um Vostro V13). Finalmente eles chegaram...

Uma coisa divertida é que ambos possuem bluetooth. Assim, dá pra fazer algumas brincadeiras. Por enquanto, só estou usando o DVD pra tocar as músicas do celular e do note... (isso me lembra o "because we can" do The Big Bang Theory).

Pra fazer o mplayer acessar o dispositivo de áudio, é preciso instalar o blueman e rodá-lo (com usuário normal, não root)
sudo apt-get install blueman
blueman-manager
O software é bem intuitivo. Clicando na lupa, ele vai procurar os dispositivos. Depois, ele vai fornecer o endereço MAC. Pela interface, faça a sincronização (no meu DVD - da Samsung -, mesmo que ele não coloque a senha de acesso, foi só usar o clássico "0000").

Para usar o áudio, crie o arquivo ~/.asoundrc com o conteúdo:

pcm.bluetooth {
   type bluetooth
   device 00:16:6C:00:00:00
}
Observe que em "device" vai o endereço MAC do seu dispositivo.

Assim, é só chamar o mplayer apontando a saída de áudio para o bluetooth:
mplayer -ao alsa:device=bluetooth -shuffle *.mp3
Logo testo com outros players, mas acho que não vai ser mto diferente... :)

Fonte: http://wiki.bluez.org/wiki/HOWTO/AudioDevices

sexta-feira, 5 de março de 2010

pyflakes - sugerindo melhorias no código Python

Existe uma ferramenta chamada "pyflakes"[1], que pode ser instalada via apt-get (apt-get install pyflakes - desculpem usuários de windows). Ela serve para melhorar algumas coisas nos códigos, por exemplo avisando sobre "import" que não é mais usado ou variáveis que não atribuídas mas nunca usadas.

Para usar, é bem simples:

pyflakes UCSAutenticacao.py

E a saída vai ser algo como:

UCSAutenticacao.py:9: 'get_times_user' imported but unused
UCSAutenticacao.py:33: local variable 'log' is assigned to but never used
UCSAutenticacao.py:46: local variable 'u' is assigned to but never used

Assim, podemos verificar quais variáveis não são usadas e removê-las. O mesmo vale para os includes.

Vamos deixar nossos códigos otimizados? :D

Além do pyflakes, existe o pylint[2], mas eu não experimentei ele ainda.

[1] http://pypi.python.org/pypi/pyflakes
[2] http://pypi.python.org/pypi/pylint



Fonte @petry

sexta-feira, 19 de fevereiro de 2010

art and design (wallpapers)

O link é antigo, mas tem uns wallpapers legais (além de algum significado):




Fica a dica