Montando um celular Sony Ericsson no Linux

Tenho um aparelho Sony Ericsson W200, e troco dados entre ele e meu Ubuntu sem problemas. É só plugar o aparelho na porta USB e automaticamente duas partições são montadas, uma que contem os dados do disco interno do aparelho, e outra com dados do disco removível, onde podemos colocar arquivos.

No Mandriva as coisas não aconteceram assim automagicamente, então tive que montar o disco removível manualmente.

O primeiro passo é criar um ponto de montagem, no meu caso escolhi /mount/w200. Tanto faz qual seja esse diretório, desde que esteja vazio.

su
mkdir /mount/w200

No meu sistema o disco removível foi reconhecido em /dev/sdb1 com sistema de arquivos FAT16, então para montá-lo bastou fazer:

mount -t vfat /dev/sdb1 /media/w200

Fui obrigado a especificar o tipo do sistema de arquivos do disco, e não há um tipo “fat16″ ou “fat”, é preciso indicar “vfat” mesmo.

Acredito que para outros aparelhos o procedimento seja o mesmo. O que pode mudar é o arquivo dentro de /dev onde seu disco removível é reconhecido. Para ter mais informações sobre isso você precisará fazer:

fdisk -l

Aqui no Mandriva as linhas mais importantes da saída foram as seguintes:

Disk /dev/sdb: 2045 MB, 2045579776 bytes

   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1   *           1         976     1997636+   6  FAT16

Encontrei essa dica aqui.

Para desmontar o sistema de arquivos é só fazer:

umount /media/w200

E então você pode desplugar o aparelho com segurança.


Selecionando os últimos registros de uma tabela Oracle

Como recuperar os N últimos registros de uma tabela Oracle? A consulta abaixo dá conta do recado.

select
    *
from
    (select
        rownum a,
        coluna1,coluna2,...,columnn
    from
        minha_tabela)
where
    a > (select
            (max(rownum) - N)
         from
             minha_tabela);

Você deve trocar:

  • “coluna1,coluna2,…,colunan” pelas colunas que deseja visualizar.
  • “N” pela quantidade de registros que deseja visualizar.
  • “minha_tabela” pela tabela que deseja visualizar.

Peguei a dica aqui.

Por último, nesse caso, quero dizer os últimos registros por ordem de inserção. Deve haver outras formas estranhas de fazer a mesma coisa, mas não parece existir nenhuma forma simples.

Se você quisesse os N primeiros então a coisa seria bem mais prática:

select * from minha_table where rownum <= N;

Baixando vídeos do YouTube pela linha de comando

Se você ficou perdido desde que fez upgrade do seu Firefox para a versão 3 e perdeu o suporte à extensão UnPlug, certamente ficará feliz em saber que há um script Python capaz de baixar os vídeos do YouTube pra você de forma prática e indolor. É o youtube-dl.

Como utilizá-lo? Baixe o script do site oficial e, a partir do diretório onde o salvou, execute:

python youtube-dl -o video.baixado.flv url.do.video.no.youtube

Um exemplo real:

python youtube-dl -o australian.slangs.01.flv http://www.youtube.com/watch?v=W3OirfRSU20

Para obter ajuda na utilização do script execute-o sem parâmetros:

python youtube-dl

Bom, pode ficar ainda mais fácil do que isso. Você irá querer executar esse script a partir de qualquer diretório, então é importante que ele esteja disponível globalmente para o seu usuário. Para isso, siga os passos a seguir.

Posicione-o em um diretório “neutro” do sistema (à sua escolha):

sudo mv youtube-dl /opt

Torne-o executável (para não precisar mais indicar explicitamente o Python na linha de comando):

sudo chmod +x /opt/youtube-dl

Adicione um atalho para /opt/youtube-dl no arquivo ~/.bashrc:

alias youtube-dl='/opt/youtube-dl'

Recarregue suas configurações:

source ~/.bashrc

E faça o teste:

youtube-dl

Se a mensagem de ajuda do programa apareceu, tudo funcionou corretamente.


Convertendo de FLV para MP3 no Ubuntu

Acho que este post interessa a muita gente que baixa vídeos no YouTube a partir da extensão UnPlug do Firefox. Se você quer extrair o audio dos vídeos FLV que você tem mas não sabe como, eis aqui uma solução que talvez funcione no seu sistema. Assumo que você utiliza Ubuntu. Antes de poder realizar conversões você precisa dos seguintes pacotes de software:

  • ffmpeg: que realiza a manipulação do arquivo FLV
  • Alguns codecs específicos para o formato MP3

Para instalar o ffmpeg faça:

 sudo apt-get install ffmpeg

O problema é que o comando de conversão não irá funcionar ainda. Após buscas em fóruns vi que o problema é que o Ubuntu não possui em seus repositórios oficiais pacotes não-livres, e aparentemente o codec utilizado pelo ffmpeg para extrair o conteúdo MP3 do arquivo FLV é não-livre. Para resolver o problema você precisa, primeiro, adicionar o Medibuntu à sua lista de repositórios (referência):

sudo wget http://www.medibuntu.org/sources.list.d/hardy.list -O /etc/apt/sources.list.d/medibuntu.list

Em seguida adicione uma chave GPG necessária:

sudo apt-get update && sudo apt-get install medibuntu-keyring && sudo apt-get update

Bom, aqui vem a minha sacanagem: eu não tive paciência para descobrir qual, entre todos os codecs disponíveis, faria o ffmpeg realizar a conversão, então instalei todos. Se você estiver com tempo e paciência sobrando para descobrir, por favor deixe um comentário ao fim do artigo indicando qual é o pacote premiado. Assumo, deste ponto em diante, que você também irá instalar todos os codecs disponíveis no Medibuntu (em torno de 30MB). Você pode simplesmente fazer:

sudo apt-get upgrade

E esses pacotes todos serão instalados (e adicionalmente outros que você talvez não quisesse atualizar no momento, é bom lembrar).

Com todos os softwares necessários instalados podemos utilizar o seguinte comando para extrair, por exemplo, o audio do arquivo video.flv e colocá-lo no arquivo audio.mp3 (entenda melhor esses comandos lendo o manual do ffmpeg ou com este post, de onde tirei a dica).

ffmpeg -title "Nome qualquer" -i video.flv -acodec mp3 -ac 2 -ab 128 -vn -y audio.mp3

Eis aqui a saída desse programa antes de instalar os codecs adicionais (utilizando um arquivo FLV real):

$ ffmpeg -title 'Space Travel' -acodec mp3 -i space.travel.live.acoustic.flv -acodec mp3 -ac 2 -ab 128 -vn -y space.travel.live.acoustic.mp3
FFmpeg version SVN-rUNKNOWN, Copyright (c) 2000-2007 Fabrice Bellard, et al.
  configuration: --enable-gpl --enable-pp --enable-swscaler --enable-pthreads --enable-libvorbis --enable-libtheora --enable-libogg --enable-libgsm --enable-dc1394 --disable-debug --enable-shared --prefix=/usr
  libavutil version: 1d.49.3.0
  libavcodec version: 1d.51.38.0
  libavformat version: 1d.51.10.0
  built on Mar 12 2008 14:31:53, gcc: 4.2.3 (Ubuntu 4.2.3-2ubuntu4)

Seems stream 0 codec frame rate differs from container frame rate: 1000.00 (1000/1) -> 29.97 (30000/1001)
Input #0, flv, from 'space.travel.live.acoustic.flv':
  Duration: 00:03:50.3, start: 0.000000, bitrate: 48 kb/s
  Stream #0.0: Video: flv, yuv420p, 320x240, 29.97 fps(r)
  Stream #0.1: Audio: mp3, 22050 Hz, mono, 48 kb/s
Output #0, mp2, to 'space.travel.live.acoustic.mp3':
  Stream #0.0: Audio: 0x0000, 22050 Hz, stereo, 0 kb/s
Stream mapping:
  Stream #0.1 -> #0.0
Unsupported codec for output stream #0.0

E após a instalação dos codecs:

$ ffmpeg -title 'Space Travel' -acodec mp3 -i space.travel.live.acoustic.flv -acodec mp3 -ac 2 -ab 128 -vn -y space.travel.live.acoustic.mp3
FFmpeg version SVN-rUNKNOWN, Copyright (c) 2000-2007 Fabrice Bellard, et al.
  configuration: --enable-gpl --enable-pp --enable-swscaler --enable-pthreads --enable-libvorbis --enable-libtheora --enable-libogg --enable-libgsm --enable-dc1394 --disable-debug --enable-libmp3lame --enable-libfaadbin --enable-libfaad --enable-libfaac --enable-xvid --enable-x264 --enable-liba52 --enable-amr_nb --enable-amr_wb --enable-shared --prefix=/usr
  libavutil version: 1d.49.3.0
  libavcodec version: 1d.51.38.0
  libavformat version: 1d.51.10.0
  built on Mar 23 2008 22:28:54, gcc: 4.2.3 (Ubuntu 4.2.3-2ubuntu6)

Seems stream 0 codec frame rate differs from container frame rate: 1000.00 (1000/1) -> 29.97 (30000/1001)
Input #0, flv, from 'space.travel.live.acoustic.flv':
  Duration: 00:03:50.3, start: 0.000000, bitrate: 48 kb/s
  Stream #0.0: Video: flv, yuv420p, 320x240, 29.97 fps(r)
  Stream #0.1: Audio: mp3, 22050 Hz, mono, 48 kb/s
Output #0, mp3, to 'space.travel.live.acoustic.mp3':
  Stream #0.0: Audio: mp3, 22050 Hz, stereo, 0 kb/s
Stream mapping:
  Stream #0.1 -> #0.0
Press [q] to stop encoding
size=    1796kB time=229.9 bitrate=  64.0kbits/s    
video:0kB audio:1796kB global headers:0kB muxing overhead 0.006961%

Note que o arquivo video.flv não será alterado no processo.


Bash One Liners #4

Em: 01/07/2008 Tags: tail, w3m, awk, Bash Comentários (0) Referencie do seu blog (Trackback)

Este é trivial: com w3m e tail podemos descobrir nosso número IP. O one liner é o seguinte:

w3m -dump http://www.ip-adress.com/ | tail -1

O ip-address.com, como o nome indica, é um site que indica qual o número IP que você está utilizando. É a partir do conteúdo da página inicial desse site que vamos chegar ao nosso one liner.

Com a opção -dump do w3m indicamos que queremos que a página seja impressa na saída padrão, sem tags HTML, de uma forma que uma pessoa ache agradável de ler. Essa saída é sempre a mesma, com exceção da última linha, que indica (ta-dá!) seu IP:

Counter

my ip address IP-a[S:d:S]dress.com - What is my IP address?
An IP address (Internet Protocol Address) is a logical address of a
network adapter. The IP address is unique and identifies computers on a
network. An IP address can be private, for use on a LAN, or public, for
use on the Internet or other WAN.
Too many bots are spidering our site. Therefore this small frontpage
version. IP address Tracer / Locator

My IP address:
200.32.10.11

Como o dado que queremos está exatamente (e sempre) na última linha da saída, não ficou muito difícil escolher qual programa vai extrai-la: o tail. Com a opção -1 pegamos exatamente a última linha, finalizando nosso one liner.

Como tenho usado esse site constantemente achei útil criar um atalho myip para o meu usuário. Basta adicionar em ~/.bashrc a linha:

alias myip='w3m -dump http://www.ip-adress.com/ | tail -1'

Depois recarregue a configuração:

source ~/.bashrc

Atualização (2/7/2008): Hoje o one liner já deixou de funcionar, pois a estrutura do site se modificou. Agora a linha que imprime o IP não é mais a última, mas sim uma no meio do documento. Talvez o w3m simplesmente não tenha carregado a página completamente ontem, quando escrevi o artigo, e por isso havia sido tão fácil. Agora seria necessário utilizar o awk para chegar até a linha que diz “My IP Adress:”, em seguida pular para a próxima linha, e então imprimi-la e sair do programa. O novo one liner é, portanto, menos simples, mas ainda trivial:

w3m -dump http://www.ip-adress.com/ | awk '/My IP address/ { getline; print $1; exit }'

Não garanto que esse one liner vai continuar funcionando, afinal eu não mantenho esse site. Ao menos a modificação rendeu mais um one liner…


Resolvendo problemas com Firefox e Banco do Brasil

Atualizado em 2/7/2008.

Encontrei este post do Gustavo Rebuzzi, referenciando este outro post do Daniel Docki, que resolvem o problema da recarga de tela na página de autenticação do site do Banco do Brasil. Basicamente você deve desinstalar os pacotes do OpenJDK e instalar um pacote adicional (que no meu caso já estava instalado). Ah, isso vale para o Ubuntu 8.04.

Conforme dica do Gustavo nos comentários, o problema parece ser o pacote IcedTea, que serve como plugin Java para os navegadores web. No Mandriva 2008 você talvez consiga fazer o site do BB voltar a funcionar da seguinte forma:

# urpme java-1.7.0-icedtea # para remover o pacote

Você será perguntado se também deseja remover o pacote java-1.7.0-icedtea-plugin. Indique que sim para completar a remoção. Depois você precisa executar o seguinte comando para instalar o pacote Java da Sun mais o plugin.

# urpmi java-1.6.0-sun java-1.6.0-sun-plugin

Esse comando simplesmente não funcionou na minha instalação pois aqui a arquitetura da máquina é 64 bits. O pacote java-1.6.0-sun que tenho instalado é 64 bits, mas não há uma versão 64 bits para o pacote java-1.6.0-sun-plugin, e então o instalador do Mandriva se recusa a instalar o plugin. Eu até poderia perder mais um tempo tentando fazer isso mas no momento não dá.

Da próxima vez consulto o Google antes de perder 40 minutos do meu dia em fila de banco…