29 de setembro de 2006

Baixando e convertendo vídeos do Youtube

Que o Youtube é uma página fantástica ninguém duvida, que os seus vídeos são vistos por milhares de pessoas (talvez milhões) todos sabem, que podemos encontrar vários vídeos brilhantes também não é novidade. Mas e quando queremos guardar alguns desses vídeos no computador, e se a banda da internet não for tão larga para ficar vendo vídeos toda hora. O que fazer? Com o sucesso do Youtube já começaram a aparecer programas para baixar os vídeos do site. Eu vou apresentar uma maneira de baixar e converter os vídeos usando Linux.

Para baixar os vídeos do site nada melhor do que usar o próprio navegador para fazer isso. Existe uma extensão para o Firefox chamada VideoDownloader, a qual permite que você faça download de vídeos do Youtube e também de outros sites do gênero. Para instalar a extensão entre no link: addons.mozilla.org/firefox/2390. Depois de instalar reinicie o Firefox como de costume.

Depois de reabrir o navegador um ícone aparecerá no canto inferior direito da tela (se você deixar o mouse em cima aparecerá o nome VideoDownloader). Para fazer o download do vídeo desejado entre no Youtube e clique normalmente como se fosse assisti-lo. Agora clique no ícone do VideoDownloader, com isso uma janela irá abrir com um botão com o nome “download link”, clique com o botão direito nele e escolha “salvar link como”. Será feito um download comum no firefox de um arquivo chamado get_video.

Não se preocupe com a extensão do vídeo, ela não vem correta mesmo. Os vídeos do Youtube tem um formato .flv (flash video), a qual é um formato bem incomum e não roda na maioria dos players. Como provavelmente você não vai querer um vídeo assim o próximo passo será converte-lo.

A ferramenta ffmpeg para linux tem entre seus inúmeros recursos a possibilidade de converter vídeos, o seu único problema é não ser tão amigável, já que funciona através de linha de comando. Para facilitar a minha e a vida de quem quiser eu criei para o nautilus um script que converte de flv para avi usando o ffmpeg. Para instalar o script é só copiá-lo para o diretório ~/.gnome2/nautilus-scripts e para usa-lo você só precisa clicar no arquivo .flv, clicar com o botão direito e ir em scripts>flv para avi.

Essa foi uma das maneiras que eu achei mais simples para se fazer download e converter vídeos .flv. Eu sei que existem outros programas que fazem isso, inclusive se alguém quiser recomendar alternativas podem ficar a vontade para posta-las nos comentários.

28 de setembro de 2006

Formatos proprietários no Ubuntu

A grande maioria das perguntas dos novos usuários do Ubuntu estão relacionadas ao suporte aos formatos proprietários que não são instalados por padrão. Como instalar o flash? Como ver videos .wmv? Como rodar java no navegador? Essas são uma das perguntas que eu mais vejo no #ubuntu-br.

A resposta para todos esses problemas estão reunidas em um só local, uma ótima idéia do pessoal que cuida dos wikis. O link wiki.ubuntubrasil.org/FormatosProprietarios é um guia completo para acabar com todo o mistério de que certas coisas não funcionam no Ubuntu. Na verdade elas não vem instaladas por causa de restrições de patentes e copyrights.

Usem o guia a vontade e sempre procurem respostas no fórum, no wiki e até mesmo no help (Sistema>Ajuda>Documentação do Sistema) antes de sair perguntando no IRC e no fórum. Muitos dos problemas que você poderá ter alguém já deve ter tido, perguntado a solução e recebido ajuda, então um grande número de respostas estão contidas nesses 3 locais citados. Dessa forma você deixa o fórum um pouco mais enxuto, não precisa esperar pela resposta e ninguém precisa responder novamente algo que já foi solucionado.

26 de setembro de 2006

O jeito Ruby (parte 2)

Continuando a série de grandes sacadas da linguagem Ruby e das coisas que realmente tornam a programação mais intuitiva, vou falar um pouco sobre como manipular listas em geral: array, lista encadeada, pilha, etc.

Primeiramente vamos pensar em uma lista genérica de elementos: 1,2,3,4,5. Para armazenar essa lista vamos usar uma variável da seguinte maneira:

lista = [1,2,3,4,5]

A variável lista agora é um objeto da classe Array que armazena uma lista de números (verifique isso usando lista.class).
Uma das operações básicas de uma lista qualquer é a sua varredura, acessar elemento por elemento e fazer alguma operação. Podemos fazer isso facilmente:

lista.each do |elem|
instruções
end

Um objeto da classe Array também pode se comportar como uma lista encadeada, a qual é dinâmica e pode ter elementos adicionados ou removidos em tempo de execução, para isso existem os seguintes métodos:

lista.insert(3,”yCode”)
[1, 2, 3, “yCode”, 4, 5]

lista.delete(2)
[1,3, “yCode”, 4, 5]

lista.delete_at(1)
[1, “yCode”, 4, 5]

Eu acredito que o exemplo mostra muito bem a função de cada método, mas mesmo assim vamos a uma explicação rápida: lista.insert(3,”yCode”), insere na posição 3 o objeto “yCode”, lista.delete(2), apaga o elemento 2, lista.delete_at(1), apaga o elemento na posição 1 do array.

Um objeto da classe array em Ruby ainda pode se comportar como uma pilha. Os métodos básicos de uma pilha são push e pop:

lista.pop
=> 5
[1, “yCode”, 4]

lista.push(1.5)
=> [1, “yCode”, 4, 1.5]

Existem dezenas de métodos para a classe Array, além desses apresentados temos os comuns, sort, fill, clear, reverse, e outros um pouco mais complexos. Para conhecer melhor todos os métodos vale a pena dar uma olhada na documentação da linguagem no site: www.ruby-doc.org/core.

Mais uma vez espero ter mostrado como Ruby tem uma estrutura muito bem bolada e ainda ter deixado claro o quanto é intuitivo toda a versatilidade da classe Array através do uso de métodos simples porém fundamentais.

25 de setembro de 2006

Propaganda agressiva

Todos devem conhecer o Google Ad Sense, o famoso sistema de publicidade do google que de acordo com o site que você está navegando ele mostra propagandas relacionadas, assim atingindo melhor o público alvo.

Navegando no sourceforge meio que por acaso vi uma propaganda sobre uma distribuição linux a qual me espantou pelo grau de agressividade. Vejam a imagem abaixo:

Propaganda do Freespire

Esse tipo de propaganda que tenta usar falsos defeitos dos outros para aparecer são bem negativas, achei super deselegante a maneira com que o Freespire tenta parecer melhor que o Ubuntu de uma maneira que leva a entender que o segundo não tem suporte a mp3, DVDs, etc.

Claro que após ver isso eu cliquei na propaganda para ver do que realmente se tratava, mesmo ja tendo visto o link do Freespire embaixo. Clicando no link fui levado a uma página wiki do Freespire como seguinte título “The Perfect Desktop Linux OS”, O SO Linux para Desktop Perfeito. Ainda bem que o conteúdo do wiki é bem mais ameno que o da propaganda, ele apenas diz que no Freespire já tem suporte multimídia ativado por padrão e mostra alguns links ensinando como fazer isso em outras distribuições.

Quero deixar claro que eu não tenho nada contra outras distribuições linux, muito menos contra o Freespire que eu nunca usei e não posso falar nada nem contra nem a favor, só acho esse tipo de propaganda um tanto apelativa.

20 de setembro de 2006

Ruby code style

Os programadores de determinadas linguagens normalmente criam convenções para guiar os novos desenvolvedores a criarem um código com a “cara” que todos já estão acostumados. A seguir vou mostrar algumas dessas convenções para linguagem Ruby.

Convenção para nomes:

  • NomeDaClasse
  • nome_do_metodo
  • nome_da_variavel
  • metodo_que_faz_uma_pergunta?
  • metodo_perigoso!
  • @variavel_de_instancia
  • $variavel_global
  • MINHA_CONSTANTE

Uso de espaços em branco

  • variavel = 10
  • def metodo(parametro,parametro_default=10)

Blocos

Bloco de uma linha:

meu_array.each {|x| print "#{x}"}

Bloco de várias linhas:

meu_array.each  do  |x|
a = x+1
puts a
end

Identação
Eu particularmente gosto de usar uma identação de quatro espaços, mas nada impede que você use 8 ou até mesmo 2.

Quem quiser se aprofundar ainda mais visite o site: www.caliban.org/ruby/rubyguide.shtml

19 de setembro de 2006

IRB online

Interactive Ruby Shell (irb) é um shell para programação na linguagem de script orientada a objeto Ruby. O IRB é executado da linha de comando e permite ao programador experimentar criando código em tempo real (tradução livre do texto retirado da wikipedia).
Para quem acompanhou um post passado sobre Ruby e ficou interessado em testar os comandos mas mesmo assim ainda não quis fazer nenhuma instalação, acabaram-se as desculpas, o irb tem uma versão online implementada nesse site: tryruby.hobix.com. O tryruby conta ainda com um help (digite help e tecle enter) que mostra vários comandos que você pode rodar no irb e consequentemente no Ruby.
A versão online é um pouco lenta, mas se você está apenas curioso para testar uns comandos daquela linguagem “nova” vale a pena. Se quiser fazer uns testes mais profundos não custa nada instalar o ruby e o irb (no ubuntu: sudo apt-get install ruby irb).

16 de setembro de 2006

O jeito Ruby

A grande maioria dos programadores estão acostumados com uma sintaxe C-like: Java, C, C++ e até mesmo Python tem estruturas bem semelhantes que acabam parecendo naturais quando se vai escrever um programa.
Mas maneiras diferentes existem e também podem ser poderosas ou talvez mais intuitivas, é sobre algumas sacadas inteligentes da linguagem Ruby que eu pretendo escrever nesse post.
Quando você pensa em um laço contado, com um número fixo de repetições, uma palavra surgi espontaneamente em sua cabeça: FOR. Mas será essa a única maneira de fazer um laço contado?
Primeiramente um laço em C que poderia também ser usado em Java.
int i;
for (i=0;i<5;i++) {
//instruções aqui
}
Agora vamos ver como poderíamos fazer isso em Ruby
5.times { #instruções aqui }
Podemos ver que o código está bem mais enxuto, porém o que chama mais atenção é a clareza para quem ler essa linha. Ainda dando ênfase na clareza poderíamos escrever:
5.times do
#instruções aqui
end
Ao ler essas linhas você entende muito bem o que o programa faz: cinco vezes faça (instrução aqui) fim.
Mas aí você ainda pergunta: “Eu preciso de uma variável como o i no for em C/Java”. Calma temos a solução:
5.times do |i|
#instruções aqui
end
ou
5.times {|i| #instruções aqui }
A variável i variará de 0 até 4 da mesma forma que no laço em C.
E se ainda não se sentir a vontade você pode usar um for em Ruby também.
for i in 0...5 do
#instruções aqui
end
Não estou aqui para julgar o que é melhor, só estou mostrando que existem maneiras diferentes e mais intuitivas em Ruby de fazer tarefas comuns na programação.
O post está ficando gigantesco por isso vou deixar para falar mais do jeito Ruby de programar em breve.

Convertendo .avi para dvd usando o Avidemux

Eu escrevi esse simples tutorial há algum tempo, mas até hoje ainda continuo usando essa bela ferramenta chamada avidemux.
Quem nunca quis transformar aqueles seus vídeos em alta qualidade para assistir no seu aparelho de dvd numa televisão bem maior que seu monitor? Por causa disso fiz esse tutorial explicando como usar o avidemux, uma ferramenta poderosa e que pra mim bate qualquer outra do windows que eu conheça.
Converter vídeos .avi para mpeg2 (formato do dvd) é muito fácil com o Avidemux. Se estiver usando o Ubuntu você pode encontrar ele pelo Synaptic.
Abra o programa, clique em open e escolha o vídeo que você deseja converter. Se for detectado o audio no formato mp3 o programa perguntará se você quer construir o Time Map para o audio e o vídeo poderem ficar sincronizados. Clique em Build Time Map para o mapa ser construído. O Avidemux também pode detectar o Bitstream compactado (Packed Bitstream), clique em Yes para descompacta-lo. Depois disso o vídeo será aberto no programa. Agora vá no menu Auto>DVD e escolha as opcões de acordo com seu vídeo. Com isso o Avidemux configurará muita coisa necessária para converter de avi para dvd automaticamente, nós precisamos fazer apenas alguns ajustes. Do lado esquerdo do programa na parte de Audio clique em Filters e depois marque a opção normalize. Agora ainda do lado esquerdo só que na parte de Vídeo clique em Configure, em Encoding Type selecione Two Pass, e logo abaixo você pode selecionar com quantos megas você quer que o vídeo tenha (Lembre-se que o tamanho total do arquivo é a soma do vídeo + o audio, o avidemux tem uma calculadora que pode ajudar nessas contas).
Você pode salvar o projeto, para não ter que fazer tudo isso novamente, vá no menu File>Save Project. E finalmente vamos salvar o vídeo no novo formato, cliquem em File>Save>Save Video. Agora é só esperar, dependendo do tamanho do vídeo o processo pode levar algumas horas, mas mesmo assim eu garanto que é mais rápido que muitos programas do windows, até hoje não conheço nenhum mais veloz que o avidemux.

11 de setembro de 2006

Gobby - editor de texto colaborativo

“Gobby é um editor de texto colaborativo livre que suporta múltiplos documentos em uma sessão e um chat multi-usuário. Ele roda no Microsoft Windows, Mac OS X, Linux e outras plataformas Unix.”

O programa já existe há alguns meses, pelo que eu vi no repositório svn, mas só conheci ele ontem. A sua utilidade é bem grande, principalmente no mundo opensource onde muitas vezes os desenvolvedores estão bem distantes fisicamente. Além de seus vários recursos como chat, realce de sintaxe, suporte há vários usuários e vários documentos, entre outros, o mais interessante do Gobby é a possibilidade de uma interação em tempo real, como se os programadores estivessem lado a lado.

A intenção não é fazer um review do programa mas apenas mostrar que temos ferramentas poderosas em nossas mãos (apt-get install gobby :P). Como eu não a conhecia outras pessoas podem também não conhecer e nada como fazer “propaganda” de um aplicativo opensource de qualidade e muito útil. Como não podia esquecer, o página do Gobby é: http://gobby.0×539.de e para mais detalhes a respeito do Gobby no Ubuntu vejam o wiki: http://wiki.ubuntubrasil.org/Programas/Gobby

8 de setembro de 2006

Mini-System no Ubuntu

Normalmente quando pensamos em ligar algo um tanto quanto incomum no linux ficamos com um pé atrás. A primeira coisa que vem na cabeça é que vamos precisar compilar drivers ou na pior das hipóteses não conseguir fazer funcionar certo periférico.

Há alguns dias pensei em ligar o mini-system Gradiente AS-M 550 no linux, como a maioria dos aparelhos ele vem com o cd com drivers apenas para o windows. Eu pluguei o cabo usb do mini-system no pc sem muitas esperanças, mas foi aí que o Ubuntu me surpreendeu. No cantinho da tela aparece um aviso de que ele detectou o mini-sytem como uma outra placa de som e ainda mostra os passos pra configura-la. A configuração é muito fácil, é só ir em Sistema>Preferências>Som e trocar a placa de som padrão. Com isso tudo passa a funcionar normalmente e sem precisar instalar nada.

Viram como as coisas podem ser fácil no linux, é só pensar um pouco no usuário, desenvolvendo soluções para que qualquer um consiga usar e acabar um pouco com pensamento que linux é exclusivo para geeks.