twittering-mode: usando Twitter no EMACS

Faz tempo que não posto aqui… E tem alguns motivos isso:

O primeiro foi o início de mais um projeto pessoal, o Aulas de C, que visa ensinar a base de C para os interessados em tal linguagem de programação. A idéia é aprender-se o que é mais interessante primeiro, e deixar tecnicidades e detalhes mais exóticos para depois, conforme forem sendo necessários. Não é um curso mesmo, mas sim uma forma de se aprender fazendo.
Mas o mais importante é bem mais simples: falta de algo útil para escrever.
Bem, isso acabou agora.
Recentemente, perdi o suporte ao Echofon na minha antiga estação de trabalho Linux… Os clientes modernos nenhum pegava e os que pegavam eram antigos e/ou sobrecarregavam meu sistema…
O que fazer?“, pensei
Como eu uso EMACS para várias atividades no meu dia-a-dia profissional, me ocorreu pesquisar por meios para usar o mesmo como um cliente de Twitter. E acabei encontrando o twittering-mode, um modo que permite ao EMACS navegar no Twitter de forma extremamente rápida e eficiente, com ícones, RT e a possibilidade de abrir-se timelines de outros usuários e ver-se hashtags.
A idéia aqui é explicar o básico sobre como utilizar o twittering-mode e algumas dicas de uso que me ocorreram no uso diário.

Instalando

Você vai precisar pegar o pacote do twittering-mode. Nesse caso, existe tanto a opção de baixar um tarball em http://twmode.sf.net quanto a que considero mais recomendável. Para isso, você precisará do git instalado na sua máquina. Faça um clone do repositório do github.com do twittering-mode na sua máquina com o comando:

git clone git://github.com/hayamiz/twittering-mode.git

Isso permitirá que você tenha os recursos mais atuais e correções de bugs, como a possibilidade de usar o migre.me como encurtador de URLs e uma correção no caso do uso de um arquivo de avatares que obrigava você a limitar o número de avatares a serem armazenados.
Seja como for, vamos começar a instalação. Antes, porém, você precisará do EasyPG para o EMACS. No EMACS a partir da versão 23 o EasyPG é parte do mesmo. Para trás do 23, é necessário baixar ele no link mostrado anteriormente. Além disso, você precisará instalar no seu ambiente os pacotes wget, curl, openssl e/ou gnutls, além do ImageMagick para os avatares e do GnuPG, que será usado para que não precisemos fazer autenticação OAuth toda santa vez. Sugiro que, por via das dúvidas, instale todos eles. Uma coisa a se mencionar, antes de seguirmos adiante, é que o twittering-mode só é compatível com EMACS 21.3 ou melhor, e ainda assim suas funcionalidades totais só estão disponíveis em ambientes a partir do EMACS 22. Adianto que não existe nenhuma perda perceptível de performance ou funcionalidades reais em ambientes de EMACS 21.3 até 22. Uso ele em um EMACS 21.4 e funciona de maneira muito boa, apenas com algumas “facilidades” ausentes, mas sem maiores problemas.
OK, vejamos a instalação:
Descompacte o tarball do twittering-mode em algum lugar no seu load-path (o caminho onde o EMACS busca suas extensões). Caso não saiba qual o caminho, descompacte-o em qualquer caminho que nós iremos explicar como adicionar o mesmo no load-path. Vamos assumir como exemplo o caminho ~/twittering-mode. Se seu EMACS for anterior ao 23, também baixe o pacote EasyPG e o descompacte em algum lugar (consideraremos como exemplo ~/epg).
Bem, antes de começarmos a usar o Twitter no EMACS, vamos fazer algumas configurações. Abra o EMACS e carregue seu arquivo de configuração .emacs (~/.emacs). Antes de começarmos, vamos adicionar no início do .emacs as seguintes linhas:

(add-to-list 'load-path "~/twittering-mode")

Essa linha avisa ao EMACS a procurar novos modos no caminho adicionado. No caso, estamos adicionando o pacote básico do twittering-mode ao load-path do EMACS, de modo que ele possa ser usado. Além disso, nas versões antigas do EMACS (anteriores à 23), precisamos adicionar o EasyPG:

(add-to-list 'load-path "~/epg")

Então adicionamos o comando que irá carregar no EMACS o módulo do twittering-mode:

(require 'twittering-mode)

Com isso, já fizemos uma configuraçao rápida. Salve o .emacs, feche o EMACS e abra-o novamente.

Navegação básica

Use o atalho M-x (Meta-x) para ir ao minibuffer e abra o modo com o comando twittering-mode. Uma série de cargas serão feitas e aparecerá uma mensagem pedindo o OAuth Authorization PIN. Uma janela de navegador será aberta pelo EMACS pedindo que você autorize o twittering-mode (twmode) no seu usuário do Twitter. Confirme a autorização e copie no EMACS o número que irá aparecer após a confirmação. Esse número é o PIN que você precisa. Aguarde alguns instantes que o EMACS irá carregar, com a ajuda dos utilitários instalados anteriormente, sua Timeline em um buffer chamado :home.
Cada Timeline aberta, seja sua, seja de um usuário ou hashtag, fica em um buffer do EMACS separado. Embora o twittering-mode disponibilize atalhos específicos para navegar entre as TL, particularmente prefiro usar os atalhos do próprio EMACS, que continuam funcionando normalmente.
Você move-se normalmente pelo buffer (que é read-only) usando os comandos de movimentação padrão do EMACS ou as setas  e PgUp e PgDn se você tiver o modo pc-select. Alguns atalhos bem úteis (lembrando que os atalhos são case-sensitive):

  • j – Desce para o tweet anterior (em termos de tempo). Se chegar no final da Timeline carregada, irá carregar tweets mais antigos. Normalmente são carregados de 20 a 20 twits, mas esse valor pode ser configurado através de uma variável do EMACS. Veremos customizações mais adiante;
  • k – Avança para o próximo tweet (em termos de tempo);
  • n – volta para o tweet anterior postado pelo mesmo usuário do tweet onde você está;
  • p – avança para o próximo tweet postado pelo mesmo usuário do tweet onde você está;
  • H – vai para o topo da Timeline;
  • G – vai para o final da Timeline;
  • g – carrega novos tweets à Timeline. O twittering-mode tem auto-update para a Timeline, mas esse pode ser desligado se necessário, e então usa-se esse atalho para carregar-se novos tweets. Esse atalho pode ser usado com o auto-update ativo;
  • r – mostra replies ao tweet onde você está;
  • C-c C-e – limpa o buffer da Timeline em questão;
  • q – fecha a Timeline;
  • v – sobre uma hashtag ou o nome de usuário, abre em um novo buffer a Timeline da hashtag ou usuário (Nota: em alguns casos, os acentos em uma hashtag poderão aparecer como caracteres randômicos… Isso se deve a um problema na tratativa das hashtags e não há previsão para correção)
  • V – permite você abrir uma Timeline de qualquer usuário que você quiser, bastando digitar o nick do usuário (lembrando que ele não abrirá TLs protegidas, exceto se você seguir o usuário). Além disso, existem alguns nomes especiais que ele usa para TLs relacionadas ao usuário:
  1. :home – sua timeline;
  2. :replies – respostas a seus tweets (incluindo RTs “editados”);
  3. :direct_messages – mensagens diretas que você recebeu;
  4. :favorites – tweets que você marcou como favoritos;
  • u – Postar um twit – Abrirá uma janela de edição onde você poderá escrever o seu tweet normalmente. Para enviar o tweet, use o atalho C-c C-c. Caso deseje cancelar o twit, use o atalho C-c C-k. [F4] irá encurtar qualquer URL que esteja no tweet;
  • [Enter] – Permite editar um reply ao tweet apontado pelo cursor. Em cima de um link, abre-o no navegador padrão do sistema. Sobre um nome de usuário, abre seu profile no Twitter. Sobre uma hashtag, abre uma pesquisa sobre ela no Twitter;
  • C-c [Enter] – Permite dar um RT “antigo” (como Reply) do tweet apontado pelo cursor;
  • C-u C-c [Enter] – Permite enviar um RT “novo” (da API do Twitter) do tweet apontado pelo cursor;
  • d – Permite enviar uma mensagem direta a um usuário. É considerado por padrão que o DM irá para o usuário que postou o tweet onde o cursor está, mas você pode digitar o nick de qualquer usuário;
  • a – Ativa/Desativa a auto-atualização da TLs atual (padrão ativo);
  • i – Ativa/Desativa a exibição de avatares da TLs atual (padrão ativo);
  • s – Ativa/Desativa rolamento da TL atual (padrão desativado);
  • C-c C-t – Permite definir uma hashtag padrão para seus posts – útil na cobertura de um evento;
Esses comandos oferecem uma navegação básica que deve ser o suficiente para o uso cotidiano. Para maiores informações, consulte a entrada do twittering-mode no EMACSWiki.org.

Customizando

Como tudo no EMACS, o twittering-mode é muito customizável. Infelizmente ele não é customizável pelo customize-mode, portanto as customizações normalmente são feitas pelo .emacs ou fazendo eval de setq no *scratch*. Vamos falar então da customização via .emacs.
Abaixo estou copiando o trecho do meu .emacs para definir algumas variáveis padrão, além de usar alguns hooks do twittering-mode para mudar alguns atalhos e para fazer com que o twittering-mode exiba notificações de novos tweets:

;; Configurações do twmode (twmode.sf.net)
(setq twittering-use-master-password t) ;; voce precisara do EasyPG para EMACS (no 23 vem junto)
(setq twittering-timer-interval 300     ; 3 minutos para atualizar as TLs
      twittering-tinyurl-service ‘migre.me
      twittering-url-show-status nil
      twittering-icon-mode t
      twittering-initial-timeline-spec-string ‘(“:home” “:favorites” “:replies”)
      twittering-number-of-tweets-on-retrieval 60
      twittering-scroll-mode t
      twittering-use-icon-storage t
      twittering-icon-storage-limit nil
      )

 (add-hook ‘twittering-mode-hook
           (lambda ()
             (mapc (lambda (pair)
                     (let ((key (car pair))
                           (func (cdr pair)))
                       (define-key twittering-mode-map
                         (read-kbd-macro key) func)))
                   ‘((“F” . twittering-friends-timeline)
                     (“R” . twittering-replies-timeline)
                     (“U” . twittering-home-timeline)
                     (“f” . twittering-favorite)))))

(add-hook ‘twittering-new-tweets-hook (lambda ()
   (let ((n twittering-new-tweets-count))
     (start-process “twittering-notify” nil “notify-send”
                    “-i” “/usr/share/pixmaps/gnome-emacs.png”
                    “Novas mensagens”
                    (format “Tem %d nova%s mensage%s no Twitter!”
                            n (if (> n 1) “s” “”) (if (> n 1) “ns” “m”))))))

A variável twittering-use-master-password t, é muito útil, e ela que exige o EasyPG. Normalmente, o twittering-mode irá lhe obrigar a obter um novo PIN a cada vez que você tentar entrar nele, o que vai chegar um momento e tornar-se muito chato. Ao ativar essa variável twittering-use-master-password, você irá criar uma senha mestra de acesso ao twittering-mode e o mesmo irá guardar o PIN em um arquivo .twittering-mode.gpg, que ele abrirá e lerá ao começar a usar o twittering-mode.
As demais variáveis são:

  • twittering-timer-interval – Define o intervalo de atualização em segundos (padrão 90 segundos – 1,5 minutos);
  • twittering-tinyurl-service – Define qual será o serviço de encurtador de URLs a ser utilizado entre alguns que o twittering-mode consegue usar: ‘tinyurl, ‘bit.ly, ‘goo.gl, ‘is.gd, ‘toly, ‘j.mp e ‘migre.me (esse último apenas na versão do github na época em que esse post foi escrito). Se você desejar utilizar especificamente bit.ly e j.mp precisará definir também duas variáveis (twittering-bitly-login e twittering-bitly-api-key) com informações sobre seu usuário e chave de API do bit.ly. ou do. j.mp Padrão ‘tinyurl;
  • twittering-url-show-status – Mostra o tráfego utilizado depois de uma atualização de TL. Padrão nil;
  • twittering-icon-mode – Ativa o modo de visualização de avatares. Padrão nil;
  • twittering-initial-timeline-spec-string – Uma lista de TLs a serem abertas no momento da inicialização do twittering-mode. O padrão é abrir apenas a TL do usuário (“:home“);
  • twittering-number-of-tweets-on-retrieval – Número de twits a serem obtidos por vez… Padrão 20, com limite máximo de 200.
  • twittering-scroll-mode – define se a TL vai rolar de modo a manter o tweet que está sendo lido como o atual ou se vai fazer com que o EMACS desça os twits não lidos. O padrão é nil, que indica o 2° comportamento. Para ativar o primeiro, basta definir essa variável com qualquer valor não-nil usando setq.
  • twittering-use-icon-storage – Permite que o twittering-mode faça um cache dos avatares que ele consegur carregar, o que aumenta o desempenho, mas consome memória. Padrão nil. Deve ser definido para qualquer outro valor para ser ativado. Por padrão, o cache de avatares fica gravado em .twittering-mode-icons.gz, que é gravado ao sair-se do EMACS e aberto no momento em que chamamos o twittering-mode. É possível mudar-se o nome desse arquivo modificando-se a variável twittering-icon-storage-file;
  • twittering-icon-storage-limit – Se você utilizar o cache de avatares, você pode estipular ou não um valor padrão de avatares a serem usados modificando essa variável. O padrão é 500. Se não desejar limitar o número de avatares salvos no cache, defina essa variável como nil;

Após definirmos todas as variáveis que queremos, também realizamos algumas modificações em dois hooks. Um para fazermos uma modificação de atalhos (no caso, defini f para abrir a TL de favoritos) e a outra para fazer com que notificações sejam exibidas no momento em que houver o recebimento de novos twits. Essas dicas foram coletadas na entrada do twittering-mode no EMACSWiki.org.
Essa é apenas uma introdução ao twittering-mode, e na Internet existe muita coisa sobre ele. Espero que tenha sido útil. Se quiser me adicionar no Tweeter, meu usuário é @hufflepuffbr.

[Update 15:17 2011-08-18] A pedidos, um snapshot do twittering-mode em uso!

Anúncios

Convertendo vídeos do Decodificador de TV Digital/PVR LB-SAT LBDTV10T para AVI no Linux

Com o surgimento da TV Digital no Brasil, no seu padrão ISDB-Tb (ou ISDB-International), vários conversores estão sendo vendidos a preços interessantes com a mais diversa gama de recursos. Um muito popular é o recurso de PVR (Personal Video Recorder – Gravador Pessoal de Vídeo), onde o aparelho grava em um disco rígido externo ou pendrive à programação de TV, como era o caso nos antigos videocassetes. No caso, iremos falar do decodificador LBDTV10T, da empresa LBSat. Esse é um produto a um preço razoável e que pode ser encontrado em boas casas especializadas em equipamento de TV (no caso, comprei em uma loja da Rua Vitória, uma das travessas da Santa Efigênia), e possui as seguintes características.

Características:

  • HDTV e SDTV
  • Instalação automática de canais
  • Menu na tela (OSD) – facilita a configuração do aparelho.
  • Saída HDMI para imagens em alta definição e áudio digital
  • Saídas S-Video, Vídeo Componente, vídeo e áudio estéreo
  • Saída de áudio digital óptica e SPDIF
  • EPG (Guia de Programação Eletrônica) Permite visualizar informações sobre os programas da TV. (Este recurso depende da transmissão pela emissora)
  • Programação de canais favoritos
  • Sintonia automática UHF para TV Digital – Canais 7 ao 69
  • Controle Remoto multifunção
  • Ajustes de Áudio / Vídeo / Volume
  • Seleção automática de voltagem – entre 100 e 240 Vac
  • Idiomas do menu: Português

Observações:
Antes de comprar o conversor, certifique-se de que a sua região já recebe as transmissões da TV Digital. Para captar o sinal digital corretamente é necessária a utilização de uma antena UHF, interna ou externa. A captação é restrita aos sinais da TV aberta, não incluindo, portanto, os sinais de TV por assinatura.
Especificações:

  • Resolução de vídeo : 1080i / 720p / 576i
  • Conexão USB para : MP-3, MP-4, Fotos. Através dela é possível reproduzir arquivos de músicas em MP-3, de vídeo MPEG-2, MPEG-4, e exibir arquivos de fotos JPEG.
  • Formatos de Tela : 16:9 e 4:3

É ótimo poder gravar vídeos em um HD externo, ainda mais se pensarmos que esses arquivos são acessíveis pelo computador como arquivos normais de vídeo. O problema é que a maior parte dos decodificadores (esse incluído) gravam o stream DTV recebido da antena diretamente (como se usasse um tee entre a saídea de vídeo e um arquivo no HD externo), o que envolve formatos proprietátios estranhos e convenções um pouco complexas. Mas com a ajuda do Google e do pessoal do Clube do LBDTV10T no HT-Fórum. Ainda não foi possível automatizar o processo devido a alguns problemas com o arquivo do decodificador, em especial na parte de áudio, mas tentarei fazer o melhor possível para expĺicar detalhadamente o processso de modo que você possa converter adequadamente os seus vídeos para usá-los no computador.
Esse tutorial foi elaborado em um Intel Core 2 Duo 2GHz, 3GB de RAM, 320 GB de disco, Ubuntu Linux Karmic Koala (9.10), com o repositório Medibuntu original e todos os pacotes de vídeos e áudio, incluindo os non-free e restricted. Você precisará ter instalado mencoder, mplayer, VLC e ffmpeg. Uma vez dito isso, vamos começar o processo.

1-) Encontrando o vídeo no disco e preparando-o para codificação

A primeira parte é encontrar e prepara o vídeo. Nesse caso, existe apenas uma sugestão: limpe o disco pelo decodificador (MENU -> Meu de Função -> Função PVR -> Formatar HDD). Caso contrário, você terá que descobrir o arquivo em meio aos diversos vídeos gravados e o modo como os vídeos são nomeados internamente pelo decodificador não ajuda. Os arquivos ficam gravados em uma pasta dentro do HD chamada PVR, em diretórios com o nome PVRXXXXX, (onde X são números hexadecimais), Dentro dessas pastas, existem pastas ~DATA/, onde vários arquivos DATAXX.trp (onde X são números normais). Esses arquivos são as várias partes do vídeo gravadas pelo decodificador. Isso ocorre pois, como ele formata os discos em FAT32 para maior eficiência, o tamanho máximo do arquivo é de 2 GB. Quando esse valor é superado, o decodificador cria um novo arquivo. Nesse caso, iremos fundir os arquivos com o seguinte comando em um terminal, dentro da pasta ~DATA/ do vídeo: cat DATA00.trp DATA01.trp DATA02.trp ... DATAXX.trp > convert.trp. Caso o vídeo tenha menos partes, basta usar menos arquivos. É só lembrar de listar todos os arquivos DATAXX.trp nesse comando. PS: não faça isso no disco do PVR! Copie os arquivos para uma partição Ext3/ext4/NTFS ou outro formato de arquivos mais avançado, caso contrário continuará com a limitação do tamanho de arquivo e não funcionará. Um comando alternativo seria cat DATA*.trp > convert.trp, mas não existe como garantir a seqüência dos arquivos.
Trabalharemos no caso com esse arquivo convert.trp. Ele é um arquivo em um formato chamado Transport Stream (TS), um encapsulamento do MPEG-2 para a transmissão contínua de arquivos, E conterá vídeo e áudio. Esse tutorial não irá aprofundar nos mecanismos de extração de áudio, uma vez que o TS permite vários canais de áudio e isso é usado em especial em vídeos (onde você pode colocar um canal de áudio em porutugês e um no idioma nativo do programa). No caso, nos restringiremos ao uso mais simples possível desse tutorial.

2-) Demultiplexação do vídeo original:

Um problema com o sistema de TV Digital Brasileiro é que ele utiliza na camada de áudio o formato HE-AAC, que não é muito bem suportado tanto por FFMpeg quanto por MPlayer/mencoder, os principais mecanismos de codificaçaão/decodificação/reprodução de vídeos e áudios em Linux. Porém, ele funciona muito bem no VLC e isso permite que utilizemos tal player para codificar o áudio.
A primeira parte então é demultiplexar o vídeo original, ou seja, separar as partes de vídeo e áudo do TS para que possamos trabalhar calma e corretamente com cada arquivo sem maiores problemas. No final desse processso, teremos um arquivo .mp4 (MPEG-4 AVC H264) e um outro arquivo de áudio .aac (MPEG-4 HE-AAC). Para esse processo, utilizaremos o Mplayer. Abra um terminal e, dentro da pasta ~DATA/ do vídeo desejado, use os seguintes comandos:

mencoder convert.trp -o convertVideo.mp4 -demuxer lavf -nosound -ovc copy
mplayer -dumpaudio -dumpfile convertAudio.aac convert.trp

Nesse momento, podemos reproduzir o vídeo no sistema para (1) testar se a demulplexação foi bem-sucedida e (2) verificar se o arquivo é o desejado. Para isso, digite mplayer convertVideo.mp4 e veja se está OK. Tudo OK, vamos para começar a trabalhar os arquivos.

3-) Codificação do áudio:

Um problema de fazer o processo de demultiplexação dos arquivos é que precisaremos optar por formatos de vídeo e aúdio individuais dos formatos de vídeo desejados, sem podermos recorrer a templates e outros esquemas que associem o vídeo e áudio a um formato. No caso, utilizaremos o AVI com vídeo XviD e áudio MP3. Nesse processo, iremos codificar cada parte separadamente e depois iremos multiplexar os arquivos no arquivo final, juntando ambos os arquivos de vídeo e áudio em uma saída final.
No caso, vamos focar primeiro na codificação do áudio, que iremos fazer usando o VLC. Esse passo justamente é o que impede criar-se um script para automatizar a codificação do arquivo, uma vez que VLC é um programa em iterface gráfica. Então, vamos ao passo a passo:

  1. Abra o VLC e vá no menu Mídia e escolha a opção Converter/Salvar;
  2. Na Aba Arquivo, clique em Adicionar. Na caixa de diálogo de arquivos, vá até a pasta PVRXXXXX/~DATA do vídeo desejado e escolha o arquivo convertAudio.aac desse ~DATA;
  3. Clique em Converter/Salvar. Na janela que abrir, na seção Configurações, escolha o perfil “Áudio – MP3“;
  4. Copie o conteúdo de Fonte (onde deverá ter o caminho completo para o arquivo de origem convertAudio.aac) para Destino e modifique a extensão para .mp3, de modo que fique convertAudio.mp3;
  5. Clique em “Iniciar“. Se quiser verificar as configurações, clique no ícone de chave de fenda, que irá apresentar as informações de codificação de áudio;

Agora, aguarde o arquivo ser codificado pelo VLC. Se preferir, teste o arquivo de saída com mpg123 convertAudio.mp3. Tudo estando OK, é hora de codificar o vídeo e encerrar o serviço.

4-) Codificar o vídeo e obter o arquivo final:

Agora codificado o áudio de saída em MP3, é hora de codificar o vídeo para XviD. No caso, também usaremos o mencoder para codificar o arquivo de saída de vídeo. Para isso, use o seguinte comando em um terminal na pasta PVRXXXXX/~DATA do vídeo desejado:

mencoder -o convertVideo.avi -ovc lavc -lavcopts vcodec=mpeg4:vhq:vbitrate=5000 -vf scale -zoom -xy 720 convertVideo.mp4

No caso, setei algumas poucas opções, entre elas -vf scale -zoom -xy 720, que permite codificar corretamente o vídeo para 720p. Se você preferir outras opções, dê uma pesquisada na Internet que configurações possam ser ajustadas para melhor resultado. O único objetivo aqui é obter uma saída de qualidade razoável. Atenção: esse comando foi baseado em sugestões para ripping de DVD obtidas em sites na Internet. Não sou um especialista em codificação de vídeos e não saberia informar a melhor combinação de parâmetros.
Se desejar, teste o vídeo no Mplayer como fizemos anteriormente. Uma vez tudo OK, você pode multiplexar (juntar) os arquivos de vídeo e áudio em um arquivo de saída com os comandos abaixo:

ffmpeg -i convertVideo.avi -i convertAudio.mp3 -acodec copy -vcodec copy convertFinal.avi
ou
mencoder -oac copy -ovc copy -o convertFinal.avi -audiofile convertAudio.mp3 convertVideo.avi

O resultado é o arquivo AVI com o nome convertFinal.avi. Esse arquivo é o resultado final, que poderá ser usado em outros formatos e gerar DVD e afins. Não vou entrar nesses méritos, mas muita documantação pode ser encontrada na Internet. Também não foi testado se a saída possui ou não perda de sincronismo entre o áudio e o vídeo. Aparentemente isso pode acontecer ocasionalmente e infelizmente não existe uma solução simples nesse caso. O que pode-se sugerir caso isso ocorra é ajustar-se o arquivo de áudio MP3, removendo alguns milisegundos de seu início e depois multiplexar novamente o vídeo.
Espero que esse tutorial tenha sido útil e que você possa obter o melhor de seu decodificador de TV Digital.

Remasterizando Debian/Ubuntu usando o Remastersys

Olá!

Sempre que tem um lançamento de uma nova versão do Ubuntu em geral é a mesma coisa: fazer backup, baixar o DVD, instalar, configurar repositórios, instalar aplicações adicionais, configurar, etc…
Isso já é um processo irritante em máquinas desktop caseiras que usem apenas aplicações de repositórios, mas as coisas se complicam ainda mais quando você envolve aplicações .deb fora de repositórios e, pior ainda, aplicações que possuem instaladores diferenciados, como Adobe AIR, Firefox e BrOffice.org (quando você os baixa de seus sites). Imagine ainda que você precise fazer instalações de muitas máquinas diferentes. Só por isso você tem uma noção do tempo que se perde ao instalar-se o Ubuntu a cada nova versão do mesmo.
Existem várias formas de criar-se LiveCDs/DVDs que são compatíveis com as mais diversas distros, inclusive por meio de customizações envolvendo o uso de chroot. O problema é que tais métodos não são fáceis e práticos para o dia-a-dia, uma vez que demandam conhecimento e estrutura mais avançados que o normal.
Existe, porém, uma ótima aplicação para Debian e Ubuntu chamada remastersys que permite executar o trabalho de remasterizar, ou seja, criar uma versão customizada do Debian/Ubuntu extremamente fácil, com a grande vantagem de não exigir processos complexos e salvar uma grande quantidade das customizações e informações de sistema do ambiente do usuário.

1-) Por quê customizar?

Ok, essa deve ser sua pergunta agora. Na realidade, existem várias vantagens:

  1. Gerar um pacote previamente configurado com aplicações, configurações e até mesmo aparência ajustada para instalar-se em um grande conjunto de equipamentos. Por exemplo, imagine que você tenha uma empresa e esteja instalando Ubuntu nas estações de trabalho. Ao invés de se dar ao trabalho de configurar uma a uma totalmente, você pode criar pacotes completos de aplicações básicas (pacote office, navegador, etc…) e restringir-se a instalar apenas aquelas aplicações mais específicas de cada estação, poupando tempo e pessoal;
  2. Em Desktops, é útil para criar “pontos de recuperação” em situações onde pode-se potencialmente “quebrar” o sistema (por exemplo, uma atualização ou adição de repositório). Caso algo de errado ocorra, basta-se queimar a ISO da “nova” distro e instalar-se tudo como estava antes.
  3. No caso de (2), quando você está em uma empresa, mesmo essa atividade pode ser custosa em tempo, então você poderá usar uma imagem criada de um desktop para criar uma máquina virtual e testar qualquer alteração necessária (à exceção de coisas como compatibilidade de kernels);
  4. Você pode ter uma espécie de “Estação Portável” que a pessoa poderia usar em Lan Houses ou afins, com as devidas configurações (por exemplo, estabelecer um túnel SSH ou coisas do gênero);

Essas são apenas algumas razões pelas quais você deveria usar o remastersys.

2-) Começando: uma primeira customização rápida e suja

OK, e agora, como customizar?
Primeiro, você deve ter um Ubuntu ou Debian instalado. O remastersys ainda é restrito a sistemas que possuam gerenciamento de pacotes baseados em DPKG/APT.
Segundo, você deve ter instalado todos os pacotes que você deseja, seja via gerenciador de pacotes, seja por compilação ou descompactação. No último caso, é bom lembrar que os pacotes deverão ser adicionados em pastas como /opt e /usr/bin, portanto você precisará de acesso ao superusuário root ou no mínimo ser capaz de executar comandos com sudo.
Primeira coisa, como superusuário, abra um editor de texto de sua preferência e abra o arquivo /etc/apt/source.list. Edite ele conforme indicado no site do remastersys, de acordo com sua distro, seja ela Ubuntu ou Debian. No meu caso, estou usando um Ubuntu Karmic Koala, então inseri as seguintes linhas, conforme indicado para o Ubuntu:

For Karmic, Lucid and Newer with grub2 – version 2.0.13-1 and up

# Remastersys
deb http://www.geekconnection.org/remastersys/repository karmic/

Uma vez que essa linha tenha sido adicionada ao /etc/apt/source.list (ou a linha adequada conforme indicado no site do remastersys), execute os seguintes comandos em um terminal:

sudo apt-get update && sudo apt-get install remastersys

O sistema poderá reclamar a ausência de autenticação do remastersys e ausência de PUBKEY (NO_PUBKEY). Não se preocupe agora: na Internet existem várias formas de resolver-se esse problema localizando-se a PUBKEY do desenvolvedor, então não entraremos nesse momento nesse detalhe. Se ele reclamar a falta de autenticação do remastersys, confirme a instalação. Em alguns instantes, o apt-get instalará o remastersys e suas dependências, definindo também configurações básicas. Por enquanto, aceitaremos elas.
Antes de continuar, é importante que exista espaço adequado nas partições onde ficam os diretórios /tmp e /home. É interessante as partições onde ambas as pastas ficam tenham em torno de 10 GB livres (se ambas estiverem na mesma partição, pode considerar-se por volta de 15 GB). Esses valores não possuem embasamento de documentação ou afins, sendo valores baseados na experiência.
Uma vez que o remastersys esteja instalado, vamos rodar ele. Ele precisa de permissões de super-usuário, portanto iremos usar:

sudo remastersys dist

O remastersys irá iniciar o processo de remasterização baixando pacotes adicionais, como o ubiquity (o programa instalador do Ubuntu), copiar os arquivos necessários e ignorar alguns (como os arquivos de pastas como /home, /tmp, /var e alguns muito específicos da máquina, como /etc/hostname, /etc/fstab e /boot/grub/menu.lst) e compactar eles em um arquivo que na realidade funciona como um filesystem que pode ser montado pela estrutura de LiveCD. Após isso, esse arquivo é juntado aos arquivos de boot básicos do LiveCD e uma ISO é gerada. Nesse momento muito provavelmente a ISO estará em /home/remastersys/remastersys com o nome de customdist.iso (mais para frente veremos como modificar esse nome conforme a necessidade). Copie esse arquivo e o arquivo customdist.iso.md5 que o acompanha (um checksum criado pelo remastersys que pode ser útil para quando o arquivo for enviado via Internet para checar sua integridade). Uma vez que esse arquivo seja copiado para outro local, você pode limpar os arquivos utilizados para a remasterização da do Ubuntu com o comando:

sudo remastersys dist

Você pode queimar a imagem ISO com sua ferramenta de gravação de CD e DVD predileta, independente do sistema operacional. Uma vez gravada a imagem ISO, você poderá rebootar sua máquina e usar ele como LiveCD. No caso, você perceberá que a distro ainda tem aparência de um LiveCD Ubuntu “vanilla” (padrão), mas que as aplicações estarão todas lá, assim como configurações globais do sistema (como listas de repositórios) e afins. Se preferir fazer um teste sem queimar mídia, utilize o VirtualBox para dar boot em uma máquina virtual usando o seu novo LiveCD.
Com isso, já temos um LiveCD útil para muitas coisas, mas podemos melhorar ainda mais isso.

3-) Melhorando as coisas: instalações globais

Uma das melhores formas que existem de melhorar as customizações em uma remasterização é usar instalações globais. Instalações globais dão uma grande vantagem de nos oferecer recursos que, no caso de ambientes multi-usuário, podem ser aproveitados por todos eles e que não precisam de instalação local (lembrando que o remastersys no modo dist, que estamos usando nesse texto, não coppia arquivos do /home).
Quase todos os programas Linux possuem formas de realizar instalações globais de extensões e adicionais. Os ambientes clássicos de Desktop, como KDE e GNOME possuem instalações globais para vários componentes, como fontes e papéis de parede. No caso, não vou me aprofundar em todos os casos, citando apenas algumas que eu testei. Para customizar com instalações globais programas que não serão citados aqui, a Internet está recheada de informações e uma pesquisa rápida no Google irá indicar as mais diversas opções.

Fontes truetype

Essa customização é uma das mais simples e pode ser feita sem necessidade de entrar no terminal. No caso, estarei mostrando o processo usando o KDE. Para GNOME, o processo é similar:
Entre no Centro de Controle do KDE (navegue nos menus normalmente) e vá na opção Administração do Sistema| Instalador de Fontes. Ele irá carregar uma lista com todas as fontes instaladas no sistema. Clique em “Modo Administrador” e na janela que irá aparecer, dê a sua senha (normalmente é uma janela do kdesudo. Se for o kdesu, dê a senha de root). Uma borda vermelha irá se delinear ao redor da área onde está a lista de fontes. Clique em “Adicionar Fontes” e procure o diretório onde estão as fontes a serem instaladas. Selecione-as, dê OK e aguarde alguns instantes. Ele irá copiar as fontes para o diretório /usr/share/fonts/truetype, que é o diretório padrão de fontes do sistema. Todos os programas que forem abertos a partir de então terão acesso a esse pacote completo de fontes.
Caso não esteja usando KDE e/ou prefira fazer isso usando linha de comando, uma sugestão dada na wiki do Ubuntu é a seguinte: vá ao diretório onde está suas fontes e digite os seguintes comandos:

sudo cp *.ttf /usr/share/fonts/truetype
sudo fc-cache -f -v

Com isso, suas fontes estarão habilitadas também!

Papéis de Parede

Papéis de parede são ainda mais facilmente customizáveis: basta como usuário root ou em sudo copiar os arquivos desejados no diretório /usr/share/wallpapers. Apenas tome cuidado para não sobre-escrever nenhuma imagem padrão do ambiente, para não comprometer integridade do sistema.
Se você estiver usando o Kubuntu mais moderno, ou o Debian com KDE 4.0 ou melhor, existe uma pegadinha que pode dificultar ou até mesmo melhorar as coisas:  você pode criar diretórios com os papéis de parede em várias resoluções, o que facilita ajustes de tela sem arquele problema de deformação no papel de parede.
Bem, acho que não existe mais o que falar sobre isso.

Extensões do Firefox

As extensões do Firefox podem ser disponibilizadas globalmente de duas formas diferentes, como pode ser lido no MozillaZine Knowledge Base. Em ambos os casos elas envolvem a cópia de arquivos dentro da pasta /usr/share/mozilla/extensions. A principal diferença é no comportamento final que terá o processo. Se você tiver já configurado o Firefox em um usuário de acordo com suas necessidades, pode ser útil as extensões FEBE e CLEO.

Solução 1: Cópia dos instaladores de extensões

Nesse método, os arquivos serão instalados pelo usuário em sua pasta local na primeira inicialização do Firefox. Nesse caso, o processo é o seguinte:

  1. Baixe as extensões desejadas em seu formato .xpi, os arquivos de instalação das extensões. No caso de as extensões já estarem instaladas em um Firefox de um usuário, utilize a extensão FEBE para realizar um Backup dos arquivos de instalação .xpi das extensões instaladas.
  2. Vá ao diretório onde as extensões .xpi estão guardadas e copie-os para a pasta indicada anteriormente.

A vantagem desse processo é que evita manipulações desnecessárias na estrutura do sistema. Em compensação, torna o processo de atualização do Firefox de maneira global um pouco mais complexo, uma vez que dependerá muito mais da intervenção do usuário.

Solução 2: Cópia das extensões instalada

Esse processo é mais simples, ainda que existam complicadores na usabilidade e/ou na segurança. Uma vez que você tenha configurado corretamente as extensões na pasta local de um usuário, vá ao diretório .mozilla/firefox/<diretorio_profile>/extensions. Se você precisar saber qual é o <diretorio_profile>, abra o arquivo .mozilla/firefox/profiles.ini, localize o nome do perfil desejado (normalmente será o default) e verifique a opção Path da mesma. Dentro desse diretório, use o seguinte comando.

sudo cp -Rvf * /usr/share/mozilla/extensions

Após terminar a cópia, para testar se todas as extensões estão OK, existe um truque: mova temporariamente o diretório .mozilla para mozilla-old com o comando mv .mozilla mozilla-old e execute o Firefox. Se tudo der certo, suas extensões irão aparecer, ainda que você seja obrigado a reconfigurar tudo.

Mas tudo bem: para voltar às suas preferências, faça o seguinte:

  1. remova o diretório .mozilla com rm -rvf .mozilla;
  2. copie o diretório mozilla-old para .mozilla com cp -Rvf mozilla-old .mozilla;
  3. remova o conteúdo da pasta de extensões do usuário com rm -rvf .mozilla/firefox/<diretorio_profile>/extensions/*;

Execute o Firefox. Tudo estando OK, o Firefox estará com as funcionalidades mantidas exatamente como estavam antes do processo. Qualquer coisa, apenas repita o processo mostrado anteriormente à exceção do passo 3 que tudo deve voltar a ser como antes.

Quando falamos sobre o problema na usabilidade e/ou na segurança, deve-se ao fato das permissões de arquivos na estrutra global. Isso ira afetar a localização e instalação de extensões. Nesse caso, existe a opção de deixar o Firefox sem atualizações automáticas, com um usuário sendo atualizado e copiado para as extensões globais com regularidade, ou então por meio da configuração de acesso a escrita às extensões por meio de chmod a+w -Rvf usr/share/mozilla/extensions, Nesse caso, se quiser evitar que algum engraçadinho desinstale as extensões instaladas, você pode usar o comando chmod a+wt -Rvf usr/share/mozilla/extensions, o que irá ativar o sticky bit (bit “colado”), que impede que os usuários apaguem arquivos dentro do diretório das extensões.

Modelos do BrOffice.org

Esse é um tópico que, em especial, será interessante àqueles que estão usando o remastersys para configurar LiveCDs de instalação para máquinas corporativas. Existem algumas formas diferenciadas de instalação global que irá depender do que você deseja.

No caso de apenas copiar alguns poucos modelos, apenas copie os modelos desejados para /usr/lib/openoffice/basis<versao_do_broffice.org>/share/template como super-usuário. Lembrando que os modelos devem estar nos formatos de template OpenDocument (*.ot*).

Já no caso de copiar pastas completas de modelos, existem algumas dificuldades maiores. Mas se for feito com cuidado, é um processo razoavelmente simples.

  1. Copie as pastas de modelos para algum local dentro da hierarquia principal do sistema (sugestões seriam em /usr/share, /usr/local/share e /opt).
  2. Agora, como super-usuário, edite ou crie o arquivo /usr/lib/openoffice/basis<versao_do_broffice.org>/share/registry/data/org/openoffice/Office/Paths.xcu e adicione o seguinte conteúdo nele:

<?xml version="1.0" encoding="UTF-8"?>
<oor:component-data xmlns:oor="http://openoffice.org/2001/registry" xmlns:xs="http://www.w3.org/2001/XMLSchema" oor:name="Paths" oor:package="org.openoffice.Office">
<node oor:name="Paths">
<node oor:name="Template">
<prop oor:name="UserPaths" oor:type="oor:string-list">
<value>$(user)/template file://<diretorio_das_suas_extensoes></value> </prop>
<prop oor:name="WritePath" oor:type="xs:string">
<value>file://<diretorio_das_suas_extensoes></value>
</prop>
</node>
</node>
</oor:component-data>

Onde <diretorio_das_suas_extensoes> deve ser preenchido com o diretório onde você colocou seus modelos. No caso de vários diretórios diferentes, adicione cada um dos diretórios precedidos por file:// nas duas partes (UserPaths) e (WritePath)

Atenção: Caso você edite manualmente esse arquivo, copie o seu arquivo em outro. Caso o BrOffice.org não “suba”, abra novamente o arquivo, copie o conteúdo original do arquivo e tente novamente.

Para saber se está tudo bem, abra o BrOffice.org, vá em Arquivo | Novo | Modelo e Documentos, Na página “Modelos” a sua pasta deve aparecer e os arquivos de modelos deverão estar lá!

OK… Vamos falar apenas desses casos: execute novamente remastersys dist e sua distro deverá estar melhor ainda ao abrir um Mozilla, suas extensões deverão estar lá (ainda que sem configurações), assim como Templates do BrOffice.org e afins.

Mas dá para melhorar ainda mais um tanto, deixando a cara do boot da sua “distro” mehor ainda:

3-) Dando a sua cara: usuário “padrão”

No caso, agora vamos com calma. Tudo começa com você criando um usuário adicional “limpo” que você irá usar para customizar totalmente as opções do ambiente. No nosso caso vamos criar um usuário mykubuntu. Na linha de comando dê o comando sudo adduser mykubuntu, Dẽ uma senha, confirme-a e as demais informações podem ficar em branco.

Agora, saia do seu usuário normal e logue-se como mykubuntu. Ao entrar no ambiente, comece a customizar o ambiente conforme a necessidade, configurando papel de parede, fontes, temas, configurações de extensões do Firefox, etc… Desse modo, você vai ter uma espécie de “modelo” que você irá usar para criar a cara do usuário “padrão” da sua “distro” remasterizada. As customizações podem envolver o que você achar adequado (adicionar ícones, customizar aparência, adicionar Widgets, etc…). Uma vez que você se dê por satisfeito, deslogue-se e retorne ao seu usuário normal.

Uma vez que você tenha logado, abra um terminal e use o comando sudo -s, para abrir um shell de root. Uma vez feito isso, você precisará copiar os arquivos do diretório do usuário criado (no nosso caso mykubuntu) para dentro do diretório /usr/skel. Além disso, será necessário configurar a posse dos arquivos. No caso, digite os comandos abaixo:

cp -Rvf /home/mykubuntu/* /etc/skel

chown root:root -Rvf /etc/skel

Com esses dois comandos, você coloca os arquivos dentro de /etc/skel, um diretório usado para criar diretórios padrão de usuário. Como isso é copiado para os diretórios padrão de usuários, existe a vantagem adicional de permitir-se que definições padrão sejam adicionadas, o que oferece ganhos para aquele que deseja utilizar o remastersys para customizar um Debian/Ubuntu para uso corporativo e também para “Estações Virtuais”.

Como pode-se ver, o remastersys é uma ferramenta de altíssimo nível que, apesar de simples, oferece muitíssimas opções, e que, combinada com conhecimentos simples e pesquisas no google, oferece possibilidades muito interessantes para o usuário, tanto caseiro quanto corporativo. Espero que esse documento tenha sido do agrado de todos os leitores.

sudo remastersys dist

Configurando Ubuntu Linux como media server para Xbox360

Olá!

Já faz algum tempo que eu não posto nada no blog, e o motivo é que realmente não estava com assunto para postar. Porém, agora tem um bom assunto para postar.

XBOX 360Como alguns sabem, tenho vários consoles de videogames, entre eles já citados um Nintendo DS (na verdade agora tenho um Nintendo DSi mais dois Nintendo DS) e um PSP. Como não poderia deixar de ser, tenho meus consoles de mesa: um PS2, um Wii e um XBOX 360.

O último foi uma aquisição que fiz com o objetivo duplo de jogar (obviamente) e de utilizar como Media Center. Mas como tudo que envolve a Microsoft, descobri que existe um trabalho bastante significativo para colocar vídeos para rodar no XBOX 360, quem dirá disponibilizar esse vídeos em modo Media Server (ou seja, de modo que os vídeos estejam no computador caseiro e sejam buscados pelo XBOX via rede)

Em parte isso se deve a problemas de protocolo e em parte a formatos de arquivo. Então iremos dividir o artigo em duas partes. A primeira, sobre como codificar vídeos para o formato do XBOX 360, e a segunda sobre como disponibilizar os vídeos codificados da maneira correta via rede.

Codificando vídeos para o formato do XBOX 360

O XBOX 360 possui formatos muito determinados sobre como os videos devem ser codificados para ele. No caso, adotaremos um enocde para WMV (Windows Media Video), e utilizaremos uma ferramenta gráfica para Linux, o Hyper Video Converter, que nada mais e que um frontend para MPlayer/Mencoder e ffmpeg. Procure e baixe no site o pacote .deb ou .rpm e instale conforme a suia distro. Ele irá criar um ícone no Menu K /Aplicações. Abra o programa. Ao abrir, uma janela como a abaixo irá aparecer.

Primeira coisa: você vai precisar criar um diretório onde você irá jogar seus arquivos encodados. No meu caso: /home/teste/video. Isso será importante no segundo estágio, quando formos disponibilizar os vídeos via rede. Por agora, escolha qualquer pasta. Em encoder, escolha ffmpeg. Iremos trabalhar com ele por enquanto. Clique em “Encoder Settings”. Você receberá uma janela como a seguinte:

No caso, ele já está com todas as informações sobre como o vídeo deve ser codificado, segundo o link apresentado anteriormente.No caso, optamos por encodar o vídeo em formato WMV2 em Video Codec, que é o único que permite encodar vídeos com saída em FullHD para ele. De qualquer modo, utilizaremos a resoloção como 720p, setada em Video Size (perceba que ela foi colocada em Custom e o valor digitado na caixa de texto em baixo). O Aspect foi deixado em 1:1 (acredito que isso permita que o Aspect Ratio original dos vídeos a serem encodados, sem os distorcer). Setamos o Container Format para ASF. Isso é importante pois o formato ASF é o container padrão para o Windows Media Video. O Video Bitrate pode ser definido para qualquer valor, mas acredito que entre 5000 a 10000 kbps é o suficiente. Menor bitrate implica em maior granulação, enquanto um Bitrate menor pode servir apenas para aumentar demais o arquivo (que ficará enorme). Deixe Target em default.pois ele serve apenas para alguns pré-defs relacionados com DVD (portanto, não é uma boa idéia mexer aí). O Audio Format ddverá ser configurado para wma2 (Windows Media Audio versão 2). Audio Bitrate pode ser deixado em qualquer valor, então 128 kbps deve ser um valor adequado (caso encode shows, pode desejar aumentar esse valor, conforme a qualidade das fontes originais). Sample Rate não têm restrições também, então deixamos em 44100 bps, que é o valor padrão para CD ou DVD.

Precisaremos de algumas configurações mais avançada, então clique em Advanced Settings para que a janela pareça com a seguinte:

A única coisa que precisamos deifinir aqui é o Framerate. Clique na caixa correspondente e defina o valor. No caso atual meu, defini como 25 fps. Se desejar, o limite é de 30 fps conforme o link apresentado anteriormente.

Na aba Misc. Video Settings, existem poucas opções interessantes.

Eu uso por costume 2-pass encoding, mas segundo alguns não faz a menor diferença. Se tiver dúvidas, não mexa nessa aba e aceite os padrões, clicando em OK ao terminar. Clique em Open Files para adicionar videos para conversão. Se selecionar mais de um vídeo, selecione a opção convert all input. Mude a Extensão para wmv e clique em Create Command. Ele irá apresentar na caixa de diálogo de baixo a linha de comando a ser executada. Clique em Convert e aguarde.

A conversão demorará significativamente e, além disso, gerará arquivos enormes (700 MB para 20 min), portanto tenha muito HD livre ao tentar isso ou jogue a saída para um pendrive. Na realidade, precisaremos usar um Pendrive depois do vídeo convertido.

Testando o vídeo

Uma vez que você tenha codificado seu vídeo (lembre-se de ter todos os codecs instalados em sua máquina, inclusive – e especialmente – os de WMV), o vídeo será colocado na pasta indicada em Output Directory, com o nome original e extensão definida em Extension (no nosso caso, wmv). Copie o arquivo para um pendrive e leve ao XBOX 360. Conecte o pendrive por uma das entradas USB, seja as traseiras (próximas à entrada de rede) ou as dianteiras (em baixo do botão de força, protegidas por uma tampa). Ligue o XBOX.

No Dashboardo do XBOX 360, escolha a opção “Biblioteca de Vídeo“. Aperte A.

A opção “Dispositivo Portátil” deverá estar acesa. Selecione-a e navegue no conteúdo do pendrive até achar o arquivo codificado. Selecione-o e clique em Executar. Ele deverá ser exibido. Caso não seja, verifique as configurações de vídeo anteriormente citadas e modifique-as até que o resultado final seja de seu agrado.

Para facilitar a vida, o Hyper Video Converter aceita que você salve Profiles de configurações de vídeo. Uma vez que você tenha a opção adequada, salve-a clicando em Save Profile no Encoder Settings e dê um nome ao mesmo na janela que irá aparecer (ele não sobrescreve profiles existentes). Para carregar um profile, clique em Manage Profiles na janela principal.

Escolha o programa utilizado (no nosso caso, ffmpeg) selecione o profile desejado e clique em Load.

Ok… Uma vez que o vídeo esteja funcionando corretamente, você irá se pegar pensando no tamanho do vídeo gerado e em como isso é dose de ter que ser feito o tempo todo. No caso, vamos utilizar o uShare como servidor de mídia (Media Server), por meio do protocolo uPnP A/V.

Cnfigurando o Media Center

Primeiro, instale como padrão o uShare conforme sua distro. A maioria das distros modernas oferecem o uShare a partir de seus repositórios padrão, assim como suas dependências. Use os comandos adequados para instalar o uShare.

Como root (ou usando sudo), abra um editor de arquvios e procure o arquivo /etc/ushare.conf. Será necessárias algumas modificações nesse arquivo para disponibilizar os vídeos via rede. O arquivo irá se parecer com algo como abaixo.

# /etc/ushare.conf
# Edit this file with 'dpkg-reconfigure ushare'
# Configuration file for uShare
# uShare UPnP Friendly Name (default is 'uShare').
USHARE_NAME=hufflepuff
# Interface to listen to (default is eth0)
# Ex : USHARE_IFACE=eth1
USHARE_IFACE=eth1
# Port to listen to (default is random from IANA Dynamic Ports range)
# Ex : USHARE_PORT=49200
USHARE_PORT=
# Port to listen for Telnet connections
# Ex : USHARE_TELNET_PORT=1337
USHARE_TELNET_PORT=
# Directories to be shared (space or CSV list).
# Ex: USHARE_DIR=/dir1,/dir2
USHARE_DIR=/home/teste/videos
# Use to override what happens when iconv fails to parse a file name.
# The default uShare behaviour is to not add the entry in the media list
# This option overrides that behaviour and adds the non-iconv'ed string into
# the media list, with the assumption that the renderer will be able to
# handle it. Devices like Noxon 2 have no problem with strings being passed
# as is. (Umlauts for all!)
#
# Options are TRUE/YES/1 for override and anything else for default behaviour
USHARE_OVERRIDE_ICONV_ERR=yes
# Enable Web interface (yes/no)
USHARE_ENABLE_WEB=yes
# Enable Telnet control interface (yes/no)
USHARE_ENABLE_TELNET=no
# Use XboX 360 compatibility mode (yes/no)
USHARE_ENABLE_XBOX=yes
# Use DLNA profile (yes/no)
# This is needed for PlayStation3 to work (among other devices)
USHARE_ENABLE_DLNA=no

A maior parte das conbfigurações podem ser deixadas no padrão da distro. No caso, vamos falar das configurações que devem ser modificadas.

  • USHARE_NAME=hufflepuff - Essa linha informa o nome pelo qual sua máquina será conhecida como Media Center. Escolha o nome que lhe aprouver;
  • USHARE_IFACE=eth1 - Essa linha indica qual interface de rede será usada como saída para o seu Media Center. A não ser que você tenha várias placas de rede e/ou algum problema com a interface de rede padrão (eth0), pode deixar em branco. Caso contrário, escolha a inferface a ser utilizada, lembrando que o XBOX 360 deve estar conectado fisicamente à estrutura de rede desejada;
  • USHARE_DIR=/home/teste/video - Essa linha é uma das que devem ser obrigatoriamente modificada. Ela indica onde o uShare deverá buscar arquivos de mídia. No meu caso, /home/teste/video. Lembre-se de dar o mesmo caminho dado no Hyper Video Converter, ou então selecionar vários caminhos, separando-os por vírgulas.
  • USHARE_ENABLE_WEB=yes - Essa linha é útli ao administrar os compartlhamentos a serem buscados. Se você ativar essa opção, a janela de administração do uShare estará disponível em http://<servidor&gt;:<porta>/web/ushare.html, onde <servidor> representa o IP ou DNS do servidor uShare (repare que esse nome não precisa ser o mesmo e pode não ter relação com o nome uPnP indicado em USHARE_NAME) e  <porta> é a porta definida pelo uShare para atender (normalmente 49152, modificada em USHARE_PORT);
  • USHARE_ENABLE_TELNET=no - Essa linha tem a mesma funcionalidade e uso da anterior, USHARE_ENABLE_WEB, mas usando Telnet ao invés do navegador. Como isso pode ser um potencial furo de segurança (uma vez que o Telnet não é um protocolo conhecido pela segurança), é recomendável deixar essa opção em no;
  • USHARE_ENABLE_XBOX=yes – Essa opção é a que define o suporte para o XBOX 360 e deve estar obrigatoriamente em yes;
  • USHARE_ENABLE_DLNA=no – Essa opção define o suporte para alguns recursos avançados em uPnP A/V. Essa opção é usada em especial no PS3 e em outros Media Centers, mas usar essa opção no XBOX 360 apenas serve para confundir o sistema. No caso, deixe-a em no se for usar o XBOX 360 como Media Center;

Com isso definimos toda a configuração necessária para o mesmo no Linux. Inicie o servidor conforme a distro (normalmente service ushare start como root). Nota: no Ubuntu por algum motivo o uShare ignora sumariamente a opção USHARE_ENABLE_XBOX=yes, portanto devemos forçar o suporte a XBOX 360. Para isso, inicie o uShare em um terminal ushare -x. Antes disso, pare o servidor uShare (normalmente com sudo service ushare stop). O uShare pode ser iniciado sem obrigatoriedade de superusuário por usar portas TCP altas (acima de 1024). Mantenha o terminal aberto enquanto não estiver o usando. Como opção, pode ser usado o comando nohup ushare -x & para fazer com que o uShare rode em backgroung.

Configuração no XBOX 360:

Primeiro, ligue o XBOX 360 à rede onde o Media Server uShare está ligado (nomralmente conectando um cabo entre o roteador da rede do uShare e o XBOX 360). Em seguida, ligue o XBOX 360 e vá em “Configurações de Sistema“.

Vá em Configurações de Rede.

Selecione Testar Conexão no PC. Ele poderá dar um aviso de desconectar os usuários do videogame. Confirme e aguarde. Ele deverá aparecer uma máquina com o nome dado por voce em USHARE_NAME.

Tudo OK, aperte A e volte para o Dashboard e escolha a opção “Biblioteca de Vídeo“. Aperte A.

Deve ter uma opção com o nome da sua máquina. Escolha-a. Uma lista dos vídeos disponíveis na sua pasta deve aparecer. Atenção: ele não fará distinção de pastas, colocando todo o conteúdo dentro da pasta espalhado. Escolha o vídeo desejado e clique em Reproduzir:

E aproveite os seus vídeos. Utilizar o XBOX 360 como Media Center dá um certo trabalho, mas vale a pena!

PS: As telas do XBOX 360 foram fotografadas com uma câmera FujiFilm FinePix s5100fd com alta qualidade a partir de uma teve LCD 32″ buster 720p.

Leia mais deste post

Revertendo atualização (downgrade) de pacotes no Debian/Ubuntu

Faz bastante tempo que não posto nesse blog (acho que mais de 6 meses), mas a verdade é que eu não tinha nenhum tema interessante ou dica a dar. Continuei usando Linux (no caso, Ubuntu Karmic Koala 9.10), o que me atende muito bem.
Recentemente, porém, tive um problema: devido a um problema de configuração do meu sources.list (arquivo de fontes de pacotes para Debian/Ubuntu), me vi pegando um pacote de drivers para placas de vídeo Intel GMA450 no Xorg que estava muito instável (caía o tempo todo com o KDE 4.3 e não permitia um uso adequado do sistema). Depois de instalar um outro gerenciador de janelas mais simples (optei pelo LXDE), conversei com o pessoal da sala #kubuntu do Freenode e fui aconselhado a dar um downgrade (ou seja, reverter a atualização) do pacote de drivers do X. Como não sabia o que fazer, recorri ao Guia do Mochileiro das Galáxias (também conhecido como Google), e obtive uma resposta:
Bem, a primeira coisa é saber o nome do pacote a se dar o downgrade. No meu caso era xserver-xorg-video-intel, mas utilizarei o mesmo exemplo da fonte em questão. Você irá precisar ir a um terminal e usar os comandos apt-cache (para consultar as informações sobre o pacote) e aptitude (para efetuar o downgrade).
Sabendo o nome do pacote, utilize o comando apt-cache showpkg <pacotedesejado>, que irá listar quais versões do pacote em questão estão disponíveis no repositório. É importante que você note isso, pois pode acontecer que o repositório não possua a versão que você deseja do pacote. De qualquer modo, vamos por exemplo ver uma saída para o pacote sun-java6-jdk (SDK do Java 6 que era o problema da fonte de informação):

apt-cache showpkg sun-java6-jdk

Package: sun-java6-jdk
Versions:
6-14-0ubuntu1.9.04 (/var/lib/apt/lists/security.ubuntu.com_ubuntu_dists_jaunty-proposed_multiverse_binary-amd64_Packages) (/var/lib/dpkg/status)
Description Language:
File: /var/lib/apt/lists/security.ubuntu.com_ubuntu_dists_jaunty-proposed_multiverse_binary-amd64_Packages
MD5: cb47d4c49fa7317c472613b7010ef9d8
6-13-1 (/var/lib/apt/lists/au.archive.ubuntu.com_ubuntu_dists_jaunty_multiverse_binary-amd64_Packages)
Description Language:
File: /var/lib/apt/lists/au.archive.ubuntu.com_ubuntu_dists_jaunty_multiverse_binary-amd64_Packages
MD5: cb47d4c49fa7317c472613b7010ef9d8
Reverse Depends:
sun-java6-source,sun-java6-jdk 6-14-0ubuntu1.9.04
sun-java6-javadb,sun-java6-jdk 6-14-0ubuntu1.9.04
sun-java6-demo,sun-java6-jdk
sun-java6-demo,sun-java6-jdk 6-14-0ubuntu1.9.04
libnb-java2-java,sun-java6-jdk
libnb-java2-java,sun-java6-jdk
sun-java6-source,sun-java6-jdk 6-13-1
sun-java6-javadb,sun-java6-jdk 6-13-1
sun-java6-demo,sun-java6-jdk
sun-java6-demo,sun-java6-jdk 6-13-1
glassfishv2-bin,sun-java6-jdk
glassfishv2,sun-java6-jdk
Dependencies:
6-14-0ubuntu1.9.04 - sun-java6-bin (5 6-14-0ubuntu1.9.04) libc6 (0 (null)) libx11-6 (0 (null)) debconf (18 0.5) debconf-2.0 (0 (null)) sun-java6-demo (0 (null)) sun-java6-doc (0 (null)) sun-java6-source (0 (null))
6-13-1 - sun-java6-bin (5 6-13-1) libc6 (0 (null)) libx11-6 (0 (null)) debconf (18 0.5) debconf-2.0 (0 (null)) sun-java6-demo (0 (null)) sun-java6-doc (0 (null)) sun-java6-source (0 (null))
Provides:
6-14-0ubuntu1.9.04 - java6-sdk java5-sdk java2-sdk java2-compiler java-sdk java-compiler
6-13-1 - java6-sdk java5-sdk java2-sdk java2-compiler java-sdk java-compiler
Reverse Provides:

Perceba que tem dois números de versão destacados. O primeiro (em amarelo) representa a versão atualmente instalada, enquanto a segunda (em verde), a que desejamos instalar. Caso haja outras versões, pode obviamente ser usada quaisquer delas. A questão aqui é a seguinte: anote o nome da versão como indicada. Você precisará do valor exato para passar para o aptitude para que ele possa instalar a versão desejada. Perceba também que pode acontecer problemas com dependências (versões antigas de dependências serem exigidas, etc), portanto tenha cuidado ao realizar essa operação.
Muito bem, uma vez que você tenha obtido o número de versão desejado do pacote, é hora de mandar o aptitude instalar essa versão. Para isso, você irá usar o comando aptitude install <pacotedesejado>=<versaodesejada>. Importante: esse comando exige poder de adminstrador (root) e, portante, exige su ou sudo. Vamos então utilizar o número de versão que anotamos na saída do apt-cache como opção no comando que mostramos anteriormente.

sudo aptitude install sun-java6-jdk=6-13-1

A saída será similar à seguinte, que lembra bem a de um apt-get normal:

Reading package lists... Done
Building dependency tree
Reading state information... Done
Reading extended state information
Initializing package states... Done
The following packages are BROKEN:
sun-java6-jdk
0 packages upgraded, 0 newly installed, 1 downgraded, 0 to remove and 2 not upgraded.
Need to get 17.7MB of archives. After unpacking 1925kB will be freed.
The following packages have unmet dependencies:
sun-java6-jdk: Depends: sun-java6-bin (= 6-13-1) but 6-14-0ubuntu1.9.04 is installed.
The following actions will resolve these dependencies:
Remove the following packages:
sun-java6-fonts
sun-java6-plugin
Downgrade the following packages:
sun-java6-bin [6-14-0ubuntu1.9.04 (jaunty-proposed, now) -> 6-13-1 (jaunty)]
sun-java6-jre [6-14-0ubuntu1.9.04 (jaunty-proposed, now) -> 6-13-1 (jaunty)]
Score is 188
Accept this solution? [Y/n/q/?] Y
The following packages will be DOWNGRADED:
sun-java6-bin sun-java6-jdk sun-java6-jre
The following packages will be REMOVED:
sun-java6-fonts{a} sun-java6-plugin{a}
0 packages upgraded, 0 newly installed, 3 downgraded, 2 to remove and 2 not upgraded.
Need to get 50.7MB of archives. After unpacking 4096kB will be freed.
Do you want to continue? [Y/n/?] Y

Perceba que o aptitude irá resolver todas as dependências, inclusive revertendo pacotes que sejam dependências do pacote revertido. É um comando que demanda muito cuidado, uma vez que ele pode levar dependências que não deveriam, inclusive podendo remover pacotes que tenham sido instalados pela nova versão do pacote a ser revertido. Analise a saída e, caso tenha certeza, confirme. Pode ser que, dependendo do pacote, você precise reiniciar o X (como foi meu caso) ou mesmo o computador, mas a reversão terá sido feita.
É importante isso pois pode acontecer (como aconteceu no meu caso) de pacotes muito novos gerarem instabilidade no uso do sistema. Tome muito cuidado ao atualizar o sistema e procure pegar pacotes apenas de fontes confiáveis. Se não tiver confiança, não é recomendável, por exemplo, buscar pacotes em PPAs (PPAs são repositórios de desenvolvimento que são utilizados para pacotes muito novos), como aconteceu comigo.

Campus Party 2009 – Resumo da Ópera (Longo)

OK… Já vai alguns dias que acabou a Campus Party, e portanto é uma ótima hora para falar sobre ela, sem muita pressão e tal. Desse modo, posso comentar os bons e ruins sem muito medo.
Bem, se você não quer saber sobre a Campus Party, pule esse post pois ele é muito, MUITO LONGO MESMO!!!
Então, prepare-se para a viagem!

Leia mais deste post

WSIS: Sociedade da Informação

Reblog de um artigo meu antigo, em cooperação com o Carlísson Galdino.


Todos sabemos do impacto da Internet no cenário sócio-político-econômico mundial. Alguns afirmam que a Internet é uma aldeia global, e de certa forma ela é. Porém, como em toda aldeia, existe muito ainda a ser decidido. Se por um lado abriu novos mercados e modos de comunicação, pelo outro gerou cybercrime, pirataria e outros assuntos problemáticos.
Com esse objetivo, a ONU propôs uma discussão sobre o assunto, a WSIS (World Summit of Information SocietyCúpula Mundial da Sociedade da Informação), com a participação de todos os países membros da ONU.
Vários temas que serão tratados nessa cúpula são importantes e polêmicos, envolvendo assuntos como Inclusão Digital, Governança Eletrônica, Cybercrime, Pedofilia, Racismo, Software Livre, Copyright, Multiculturalismo e desenvolvimento sustentável.
A primeira rodada, em Genebra, já mostrava que a discussão seria complicada. De um lado, os Estados Unidos e os países do G8 querendo travar a discussão da WSIS às questões do cybercrime, copyright e tarifações. Já um outro bloco, formado pelo Brasil e alguns países do chamado G20 (o bloco dos países em desenvolvimento), incluindo China, Índia e África do Sul, procurando descentralizar o poder da Net e propor idéias para Multiculturalismo, Inclusão Digital (principalmente fugindo do modelo tradicional e usando soluções livres e baseadas em formatos abertos).
O debate foi acirrado, mas no final das contas o grupo do G20 foi bem sucedido na colocação de idéias como a descentralização do controle da Internet e outras.
A próxima rodada, a se realizar entre os dias 16 a 18 de Novembro de 2005, será o tira-teima e poderá representar um grande avanço ou uma grande guinada de rumos para a internet.
Vamos resumir alguns pontos que podem não estar muito claros para a maioria das pessoas.

Governança Eletrônica

A idéia por trás da Governança Eletrônica é que cada país possa gerenciar seus tráfegos de Internet, ao mesmo tempo em que nenhum deles detenha o controle absoluto da Internet.
Os problemas nesse caso chamam-se DNS (Domain Name ServicesServiços de Nome de Domínio) e ICANN (Internet Corporation for Assigned Names and NumbersCorporação para a distribuição de nomes e números de Internet). Falemos primeiro de DNS.
Esse sistema, o DNS, funciona como uma espécie de “agenda telefônica” que traduz nomes de sites legíveis por pessoas (como http://www.google.com.br) para números IP que os computadores possam usar para procurar tais páginas (como 64.233.187.104). Para evitar a sobrecarga em um único servidor, ele é construído de uma maneira que cada um dos domínios (cada trecho antes de um ponto) seja descentralizado. Antes do último domínio (nesse caso, o “.br”), existem servidores chamados root servers (servidores raiz) que são o início de tudo, onde as pesquisas começam.
O grande problema é que os root servers atualmente são 10, sendo que destes, 7 são americanos, dos quais 4 são militares. Os outros 3 estão na Alemanha, na Suiça e no Japão.
Parece não ser grande problema, mas bastaria, por exemplo, um desses países apagar a entrada para o domínio de um país em guerra (por exemplo, o domínio .br) e aquele país ficaria isolado, ou ao menos MUITO mais difícil de ser alcançado.
As sugestões, principalmente do G20, é de que esses root servers sejam distribuídos, espalhados pelo mundo, ajudando na descentrazação. Isso impediria que uma exclusão americana pudesse afetar o sistema como um todo, já que uma das características do DNS é ser redundante (tradução: ter os mesmos dados em todos os sistemas). Ou seja, uma “remoção” tem que ser feita em todos os root servers. Com o controle saindo das mãos dos EUA, isso com certeza seria muito difícil.
O outro problema é o ICANN, Internet Corporation for Assigned Names and Numbers (Corporação para a distribuição de nomes e números de Internet), uma organização norte-americana que controla o fornecimento dos domínios nacionais já citados e dos números de IP.
Os Estados Unidos não abrem mão de deterem o controle dessa organização, alegando “questões de segurança”, mesmo com a sugestão de passar esse controle para uma organização pan-nacional, como o ITU (International Telecommunication UnionUnião Internacional de Telecomunicações), órgão ligado à ONU que já trata da questão de telecomunicações, com padronizações em vários setores relacionados. Porém, o principal medo dos outros países é que os americanos comecem a usar seu poder no ICANN para atuarem como Grande Irmão (referência a 1984 de George Orwell), o que, considerando-se a atual “Guerra contra o Terror” não seria de se estranhar.
Há um perigo de que uma decisão intransigente americana possa romper a estrutura da Internet como a conhecemos, isolando os EUA do mundo e vice-versa, com cada país criando variações da Internet individuais, talvez ligadas entre si, mas sem o alcance global da Internet como a conhecemos.
Outro problema envolvido na Governança Eletrônica está relacionado ao Multiculturalismo, ou à existência de conteúdo e funcionamento da Internet em idiomas diferentes do inglês ou com alfabetos não latinos (como o Hindi ou Gujarati do Indiano, o Cirílico do Russo e os caracteres japoneses e chineses). Há um crescente interesse pelo uso do sistema IDN – Internationalized Domain Names (Nomes de Domínio Internacionalizados), mas os americanos evitam falar do assunto, alegando que complicaria tecnologicamente o sistema DNS, além de tornar complexo o acesso para americanos. Porém, a alegação é recíproca por parte de países que usam idiomas com alfabetos não-latinos ou até mesmo com alfabetos com acentos, como o Brasil. É que deixar de fora seus alfabetos ou acentos locais fere o respeito à cultura de um povo. Além disso, o fato de o IDN utilizar sistemas técnicos já reconhecidos têm derrubado a barreira da complexidade. De fato, alguns países, como Grécia, Alemanha e Brasil, já adotam domínios IDN.

Liberdade de Expressão:

Outro problema sério a ser tratado no caso da Internet é a Liberdade de Expressão, onde muitas vezes os países acabam sendo pedra e vidraça.
Os Estados Unidos estranhamente não aceitam que o racismo ou a xenofobia (ódio a estrangeiros, relacionado ao nazismo) sejam incluídos como temas a serem deplorados no cyber-espaço, alegando para isso parte da Primeira Emenda de sua Constituição, que declara que o principal valor americano é a liberdade de expressão. Por isso não é tão estranho que sites norte americano sobre racismo e xenofobia sejam tão prósperos em “net-solo” americano.
Esse mesmo princípio que os faz extremamente tolerantes à difusão de idéias xenofóbicas e racistas em seu território é o que os faz ir contra o Grande Firewall da China (um filtro de conteúdo nacional que não permite que chineses acessem sites como o do New York Times ou sobre o Dalai Lama).
Mas se de um lado a China quer barrar certos tipos de conteúdo, do outro os EUA querem censurar o conteúdo pornográfico na Internet. Para isso estão dispostos a tudo, inclusive a impedir a criação de um novo domínio chamado “.xxx” (lembrando que XXX é uma notória convenção para indicar-se pornografia explícita, principalmnete em fitas de vídeo e DVDs) e a exigir que empresas “suspeitas” divulguem incondicionalmente informações sobre “conteúdos polêmicos”. Estranhamente, os EUA possuem muitas leis bizarras sobre a questão sexual, inclusive com estados que permitem a zoofilia (sexo com animais) e até mesmo a necrofilia (sexo com pessoas mortas).

Cyberjus (ou Leis para a Internet):

Na área de crimes digitais, o consenso existe quando se trata de crimes contra bancos, roubos em contas bancárias a partir do roubo de senhas e demais versões informáticas de crimes “do mundo físico”. Fora isso, tratar do Direito Informático ainda é um problema enorme, e pode ficar ainda maior. Principalmente se a WSIS for pressionada a aceitar leis rígidas como a DMCA (Digital Millenium Copyright ActLei de Copyright do Milênio Digital).
A DMCA é uma lei que impede a engenharia reversa (ou seja, a pesquisa do funcionamento e possíveis formas de contornar “travas de segurança” digitais), considerando-a crime de pirataria de dados. O maior problema desse caso é que a DMCA está sendo usada como uma forma de impedir a disseminação cultural e tecnológica. Os Estados Unidos, para variar, são os principais defensores da idéia de leis que lindem legalmente tecnologias de proteção, também chamadas de leis anti-contorno (anti-circunvention em inglês). Já países como o Brasil, China e Índia defendem modelos de copyright mais maleáveis, como aquelas baseadas em Creative Commons para uma maior difusão sócio-tecno-cultural.
Outros dois problemas sérios na Internet também fazem parte dessa discussão. São eles a questão da pirataria e do spam.
A pirataria é inegavelmente nociva, mas o maior problema da questão da pirataria não é o fato em si, mas o que está por trás dele, que é uma supressão velada da cultura de outros países, cuja cultura será substituída pela cultura americana. Esse fato já acontece, mas as empresas midiáticas e de software têm o desejo de conseguir mercados consumidores para seus produtos, não importa o que aconteça. Países de diversos tipos vêm defendendo um modelo que permita que supostos piratas (normalmente pessoas que baixam músicas de bandas pouco conhecidas, como os irlandeses do Ceolbeg ou os coreanos do Banya) possam pagar preços justos pela música, ao invés de serem obrigados a pagar US$ 20,00 em um CD do qual aproveitarão uma ou duas músicas. Claro que as empresas midiáticas são contra, uma vez que perderiam parte expressiva da renda.
Já em se tratando de mensagens de propaganda abusiva (os famosos spams), existem queixas americanas de que os países em desenvolvimento seriam o ponto de partida da maior parte deles. Por sua vez, a maior parte dos países defende que o spam é disparado por empresas norte-americanas que usam de adulteração dos emails para indicarem suas origens em endereços legítimos nas regiões em desenvolvimento.
A questão da invasão de sistemas, principalmente a do defacement (pichação, onde a página de um site é removida e é colocada outra, como em uma pichação de muros), também tem sua polêmica, principalmente sobre como deverão e quem deverá ser responsabilizado. Há uma tendência de que se responsabilize também o administrador de qualquer sistema que tenha sido usado para essa invasão.
Mas há casos em que esta decisão se torna deveras injusta, como ocorre com o tipo de ataque DDoS (Distributed Denail of ServiceNegação de Serviço Distribuída). O DDoS pode ser comparado a uma espécie de “trote coletivo” capaz de desativar um servidor de conteúdo da Internet, e pode se utilizar de (muitos) computadores inocentes. Se a responsabilização se extender aos donos desses computadores, afetará pessoas que nada têm a ver com o problema e que podem ter tido suas máquinas transformadas em zumbis (termo que quer dizer: transformar-se uma máquina comum em uma preparada para participar – sem conhecimento do seu dono – de um ataque de DDoS).

Inclusão Digital:

O tema Inclusão poderia ser o único tema de concórdia entre todos os países na WSIS, já que não existe país que não reconheça a importância da Inclusão Digital e da Internet, e não saiba que para uma evolução no 3° Milênio é necessário combater o Analfabetismo Funcional.
O ponto de discórdia resume-se a como ela deve ser feita.
Os países em desenvolvimentos, liderados por Brasil, China, África do Sul e Índia, sugeriram um modelo de Inclusão baseado na preferência pelo software livre, o que permitiria menores custos e um maior intercâmbio de tecnologia. Esse modelo também possui proponentes na Rússia, Alemanha, Polônia e outros países da União Européia.
Porém, os países desenvolvidos, liderados principalmente pelos Estados Unidos, sugerem um “modelo neutro”, sem preferências, o que em geral acaba abrindo espaço para o tradicional lobby do modelo proprietário de software, que termina sendo imposto por algumas empresas de software, principalmente pela Microsoft. Tais países também possuem interesse em manter o eterno atraso tecnológico dos países em desenvolvimentos.

Conclusão

Enfim, a WSIS teria tudo para ser um campo de decisões unânimes, se prevalecesse o bom-senso e houvesse real preocupação com os países ainda-não-desenvolvidos ou em desenvolvimento. Se houvesse uma real preocupação com uma globalização justa. Mas como não há, de que adianta serem razoáveis?
As ações, os grupos e suas motivações estão bem delineadas. O importante é que as motivações sejam compreendidas e debatidas, e que a sociedade não aceite nenhum tipo de indefinição que favoreça pequenos grupos de elite. É sempre bom notar que, por mais que os atuais donos da Internet entendam assim, a Internet não é um shopping center virtual. Ela é muito mais que isso, e foi fundada com outro objetivo, o objetivo que grupos como FSF, EFF, Creative Commons e outros defendem… A livre troca de conhecimento, para melhoria não apenas de um ou outro país, e sim da humanidade como um todo.
O que está em jogo para os donos do mundo não é a melhoria dos pequenos, mas a preparação de um mercado consumidor nesses países, e só. Teremos, nessa Cúpula, uma chance de mudar as coisas como são hoje, pelo menos no mundo da Informática. Torçamos por ela.
Referência

Powered by ScribeFire.