quinta-feira, 19 de dezembro de 2013

Cliente Open Source Nativo para o Rdio serviço de streaming

Música é uma parte essencial na vida de quase todas as pessoas. Muitos serviços de streaming de música chegaram ao país esse ano e resolvi testar o Rdio, pois uma amiga me falou que assinava o serviço e que estava bastante contente com ele.

Pessoalmente, tenho o meu próprio servidor de música, mas o Rdio oferece um período de teste gratuito e fiquei curiosidade para ver como ele funcionava. Aa facilidade de simplesmente ouvir falar de um determinado artista e já ter acesso imediato às musicas deste é algo bem interessante e que faz toda a diferença para alguém que assina um serviço desse tipo.

A interface web é bastante simples e funcional e você se adapta a ela com facilidade, mas logo senti a vontade de poder controlar a reprodução das músicas através de atalhos do teclado e de ter integração com o o menu do sistema.

Me decepcionei ao entrar no site da Rdio e ver que eles oferecem clientes desktop para Mac e Windows e para as principais plataformas móveis, mas não para GNU/Linux (achei que esse tipo de coisa já tinha acabado...). Isso por si só é algo que faria eu não assinar um produto desse tipo: se quem oferece o produto não se importa com aquilo que eu uso, porque eu deveria me importar com ele?

Mas na busca por um cliente "oficial" encontrei um cliente open source nativo que oferecia boa parte das funções que eu desejava: https://github.com/sgringwe/rdio

Cliente Rdio nativo rodando no meu Gnome Shell
Com ele pude ter acesso a atalhos de teclado, mudando as faixas através das setas do teclado e pausar as músicas com a barra de espaço. Outro ponto importante foi a integração com o menu do Gnome Shell, o que tornou muito mais fácil a tarefa de baixar o volume e controlar as músicas mesmo sem estar na área de trabalho onde o aplicativo estava aberto (utilizo uma extensão que provavelmente facilita isso)

O Rdio para Linux é escrito em Vala e além de ter uma interface praticamente idêntica ao cliente "oficial" tem o código fonte disponível, o que me deixa ainda mais a vontade para usá-lo. Parece que isso foi possível pela rica API do serviço, que permitiu que o autor do programa fizesse um cliente desktop totalmente livre para o serviço.

Como utilizei apenas a conta de testes do serviço, não pude testar recursos mais avançados como sincronização local e outras opções que o Rdio oferece, uma vez que esse tipo de conta gratuita não parece contar com essas opções. Entretanto, pelas issues abertas no Github, eu diria que esses recursos mais avançados não foram implementados, de forma que o aplicativo se restringe às tarefas mais triviais.
Rdio integrado ao menu do Gnome Shell

Apesar disso, gostei do que vi e usei. O aplicativo é rápido, fácil, com interface semelhante à nativa e com os recursos que eu desejava.

Para instalar, o programa conta com um PPA disponibilizado pelo do próprio autor para o Ubuntu.  Mas como  este não estava disponível para a versão atual do Ubuntu (13.10 Saucy Salamander), compilei o fonte através do Github seguindo a excelente documentação do desenvolvedor e não tive problema algum.

Resolvi divulgar aqui pois não vi muita coisa reproduzida na net. Se você assina o serviço da Rdio (ou outro) ou já conhecia o programa, não deixe de escrever as suas impressões nos comentários. :-)

quinta-feira, 24 de outubro de 2013

Primeira Expedição de Dados no Brasil faz visualizações e análises com base de dados do Walmart


Participei da 1ª expedição de dados no Brasil. Um projeto da Fundação Open Knowledge, que acaba de chegar ao país. A experiência foi incrível e só pude dizer que aprendi muito. Convido desde já qualquer um que tenha interesse por dados abertos a participar das próximas edições.

Como o texto do blog da Escola de Dados resume bem tudo que aconteceu, deixo o link aqui:

 Primeira Expedição de Dados no Brasil faz visualizações e análises com base de dados do Walmart

Eu tava ali no fundinho da foto... rss.

quinta-feira, 17 de outubro de 2013

Como executar um script dentro de uma sessão do GNU Screen

Ando brincando de minerar Bitcoins (estou fascinado com a tecnologia e preciso me lembrar de escrever algo mais informativo sobre o assunto aqui) e me deparei com um problema.

Ao iniciar o programa de mineração (estou usando o bfgminer) na linha de comando, ele exibe diversas informações e estatísticas relativas ao hardware e ao andamento da sua "mineração". Acontece que eu gostaria de iniciar o programa automaticamente durante o boot. Até aí tudo bem, pois isso é facilmente resolvido criando-se um script e agendando sua execução através do cron toda vez que a máquina reiniciar, mas como fazer depois para acessar os dados do programa depois, inclusive via SSH?

Pensando nisso, achei que uma seção do GNU Screen poderia resolver o problema; mas como executar o script dentro de uma seção do Screen automaticamente? A solução para isso eu achei em algum lugar no stackoverfow.com:

Acrescentei as seguintes linhas ao meu script:

screen -dmS nomeDaSessão
screen -S nomeDaSessão -p 0 -X stuff "comando$(printf \\r)"


Explicando:
  • -dmS inicia uma sessão "detached" do screen com o nome escolhido por você.
  • -X stuff executa o comando ou script dentro da sessão especificada pelo atributo -S.
  • -p 0 especifica o número do terminal dentro da seção do Screen. Como ela só tem um terminal rodando dentro da seção, este começa no 0.
  • $(printf \\r) insere um caractere do tipo "Enter" logo após o comando ou script passado como atributo para, de fato, entrar com o comando.

Bônus


Screen -S nomeDaSessão -p 1 comando2

executa o comando2 em um novo terminal (o de nº 1) dentro da mesma seção do Screen.

Homepage do GNU Screen: https://www.gnu.org/software/screen/

sábado, 5 de outubro de 2013

Compilar o CudaMiner para minerar Litecoins no GNU/Linux

Símbolo do Litecoin
Ultimamente tenho estado encantado com o conceito e a tecnologia por trás do Bitcoin e das moedas criptográficas. Espero poder escrever mais sobre isso neste blog. Se você não sabe o que é Bitcoin e muito menos Litecoin, clique nos respectivos links. Sugiro começar pelo Bitcoin, já que ela foi a primeira moeda virtual que inspirou todas as outras que vieram em seguida, inclusive o Litecoin.

Estava me informando mais sobre como minerar liteconis e li em algum lugar que  o melhor minerador de litecoins para GPUs Nvidia (eu tenho uma GTS 250, já um pouco velhinha...) é hoje o CudaMiner.

Resolvi baixar o programa no GitHub e instalá-lo, para um teste breve. No entanto, o programa não tinha nenhuma documentação de como compilá-lo. Como é horrível tentar compilar um programa que não te informa o mínimo sobre as dependências necessárias e como atingir este objetivo, resolvi documentar aqui o processo para outras pessoas (e eu mesmo) que por ventura venham a tentar fazer o mesmo.

Baixe o programa do GitHub:

$ git clone https://github.com/cbuchner1/CudaMiner.git

O grande problema, neste caso, foi encontrar as dependência que no caso eram os pacotes de desenvolvimento da tecnologia CUDA. Na atual versão do Ubuntu (13.04), eles são instaláveis através de:

$ sudo apt-get install nvidia-cuda-dev nvidia-cuda-toolkit

Feito isso tudo ficará mais fácil :-) Basta tornar o script configure executável e rodá-lo.

$ chmod +x configure
$ ./configure

Compile com make. Isso irá gerar um executável cudaminer na pasta, que pode ou não ser colocado no diretório padrão através de:

# make install

Nos meus testes, o bfgminer estava alcançando uma taxa de 33-36 kH/s e o cudaminer elevou esse patamar para 44-47 kH/s.

Se mais alguém tentar fizer o mesmo, por favor, deixe seus números nos comentários abaixo.

sexta-feira, 6 de setembro de 2013

Ouça suas músicas de qualquer lugar do mundo com Subsonic e Raspberry Pi

Nesse artigo vou documentar como instalar um servidor Subsonic em um  Raspberry Pi para poder fazer o backup de suas músicas e de quebra, poder ouvi-las de qualquer lugar que tenha uma conexão de Intenet, inclusive no seu celular. É como ter seu próprio Last.FM, Pandora ou Spotify.

Muito provavelmente você já ouviu falar do Raspberry Pi, um computador com processador ARM (o mesmo utilizado nos celulares) do tamanho de um cartão de crédito e com baixo consumo de energia. O Raspberry Pi custa apenas 35 dólares e foi criado por uma fundação ligada a Universidade de Cambridge, no Reino Unido, para incentivar o conhecimento relativo à programação para crianças e jovens. Pela versatilidade e baixo custo, o computadorzinho tem sido utilizado para muitos outros fins além deste.

Já o Subsonic é um software servidor de som e gerenciador de músicas escrito em Java, que por ser software livre (GPL 2), pode ser utilizado livremente. É com ele que iremos acessar as nossas músicas pela Internet. O Subsonic é muito rico em recursos sendo inclusive capaz de realizar transcoding (conversão de formato durante o streaming). Para saber mais, visite o site do projeto.

Conheci o programa quando fui editor da extinta Ubuntu Magazine e tive que instalar o programa para tirar os screenshots em Português, pois o artigo estava originalmente em inglês. Fiquei com muita vontade de ter o aplicativo rodando, mas a necessidade de um servidor físico dificultava um pouco as coisas.

Contudo, com o surgimento do Raspberry Pi, tudo ficou mais fácil e após brincar um pouquinho com ele, instalando o XBMC e um servidor web, resolvi dar uma função definitiva para o computadorzinho como o responsável pelo backup dos meus arquivos e meu servidor de música.

Tela da interface web do Subsonic

Ingredientes


Você vai precisar de:
  • 1 Raspberry Pi completo: com fonte e cartão de memória.
  • 1 HD portátil (opcional)
  • 1 Hub USB com alimentação (opcional)
  • intimidade com o terminal e SSH é altamente recomendável.

Se a sua biblioteca de músicas couber em um cartão SD, muito bom; mas caso necessite ligar um HD portátil, será preciso adquirir um hub USB alimentado, ou seja, com fonte, ou um HD que já inclua cabo de alimentação. Isso porque a alimentação de 5V do Raspberry Pi não dá conta de fornecer energia para um dispositivo como o HD e assim que você conectá-lo a saída USB o sistema será desligado.

RaspberryPi rev. B
Não vou descrever aqui como instalar o sistema operacional no Raspberry, pois há muita documentação sobre isso. Escolhi o Raspbian por estar mais habituado à distribuições Debian e por ser uma ótima escolha para um servidor.

Instalando o Java 8


Na primeira instalação que fiz, instalei o OpenJDK 7 na versão soft-float do Raspbian a partir dos repositórios e tudo funcionou muito bem. O único problema ocorria caso fosse necessário realizar transcoding para o streaming. Nesse momento a música ficava picotada, pois o Raspberry não dava conta de processar tudo ao mesmo tempo.

Isso acontecia porque o Java 7 não oferece suporte ao ABI (application binary interface) do ARMv6 e para instalá-lo era preciso utilizar uma versão do sistema operacional que não fazia uso dos registradores de ponto flutuante, o que diminuia muito o desempenho do sistema. Uma explicação mais detalhada pode ser encontrada na wiki do Raspbian.

Contudo, eu li que a versão 8 do Java oferecia esse suporte e poderia ser instalada em uma versão hard-float do sistema e resolvi instalar tudo de novo. O resultado foi muito bom, pois tanto o consumo de memória, quanto de CPU se reduziram muito, sendo que os problemas durante o transcoding também foram sanados.

 Apesar do OpenJDK ser a implementação Java padrão a partir da versão 7, não consegui achar uma forma de baixar uma versão 8 dele e acabei baixando a versão da Oracle a partir deste link. É preciso baixar em um outro computador e transferir via sftp, por exemplo, pois há a necessidade de aceitar a licença antes.

Uma vez baixado o pacote tar para a versão ARM, faça a instalação descompactando o arquivo baixado com o tar no diretório /opt com o comando:

sudo tar xvfz arquivobaixado.tar.gz -C /opt
 
Em seguida, crie o link simbólico para o diretório descompactado:

sudo update-alternatives --install "/usr/bin/java" "java" "/opt/jdk1.8.0/bin/java" 1
sudo update-alternatives --set java /opt/jdk1.8.0/bin/java

e com o editor de texto da sua preferência, abra o arquivo /etc/environment e crie a seguinte variável de ambiente:

JAVA_HOME="/opt/jdk1.8.0"

e em seu arquivo ~/.bashrc insira:

export PATH=$PATH:$JAVA_HOME/bin

Dê um reboot no seu Raspberry e teste se está tudo funcionando ao digitar

java -version

no terminal. Na sequência iremos instalar o Subsonic

Instalação do Subsonic

Para instalar o Subsonic, basta baixar o pacote para Debian/Ubuntu da seção Download do site do subsonic.org e instalar com

sudo dpkg -i pacote.deb

Por padrão o Subsonic roda como usuário root, porém, por questões de segurança, isso é altamente desaconselhável. Vamos criar um usuário seguro para a execução do aplicativo e adicioná-lo ao grupo audio:

sudo adduser --no-create-home --disabled-password --disabled-login subsonic-user
sudo adduser subsonic-user audio


Agora precisamos atualizar as configurações do programa para utilizar esse usuário.

sudo vi /etc/default/subsonic e mudamos a última linha para:

SUBSONIC_USER=subsonic-user

e reiniciamos o serviço digitando:

sudo /etc/init.d/subsonic restart

Após fazer isso podemos acessar a interface web do aplicativo na porta 4040.

Como você pode ver pelo aviso emitido pelo programa, é altamente recomendável que você troque a senha padrão de admin já no primeiro acesso.

Além disso, eu aconselho que você crie um outro usuário sem poderes administrativos para acessar o programa normalmente, reservando o acesso como admin exclusivamente para fins de manutenção. Neste caso, mesmo que a sua senha seja comprometida, não há a possibilidade de que um eventual invasor possa fazer muitos estragos.

O programa é muito fácil de usar e você pode encontrar mais informações sobre as configurações iniciais na documentação.

Para que o transcoding funcione normalmente, instale o ffmpeg e o lame, pois a versão que vêm embutida no pacote de instalação do Subsonic não é compatível com a arquitetura ARM.

sudo apt-get install ffmpeg lame

sudo ln -fs /usr/bin/ffmpeg /var/subsonic/transcode
sudo ln -fs /usr/bin/lame /var/subsonic/transcode


Acesso móvel


Após a instalação você tem acesso por 30 dias a recursos acesso em dispositivos móveis, compartilhamento em redes sociais, seu próprio endereço DNS como por exemplo seunome.subsonic.org. Depois disso é preciso pagar um plano premium, que é bastante razoável e justo uma vez que oferece muitas vantagens ao mesmo tempo que estimula o desenvolvedor a continuar evoluindo o software.

Para ouvir as suas músicas através do celular basta instalar os aplicativos disponíveis na loja de aplicativos do seu smartphone. Há versões para Android, iPhone e Windows Phone.

 

 

Bônus


Como bônus, há algumas questões importantes que devem ser configuradas de maneira a aumentar a segurança e evitar problemas. Apesar de ser pequeno e possuir pouco poder computacional, o Raspberry Pi estará rodando um serviço que está exposto a toda Internet e caso sua segurança seja comprometida, um eventual invasor terá uma porta de entrada para a sua rede local.

A primeira providência é a configuração das permissões de arquivo das pastas onde estarão as suas músicas.

Certifique-se que o usuário subsonic-user tem acesso a elas, caso contrário não será possível adicioná-las à biblioteca do Subsonic. No meu caso, configurei toda a pasta com a músicas para pertencerem ao usuário pi e ao grupo audio do qual o subsonic-user faz parte.

Para aumentar a segurança da sua instalação, eu sugiro que você configure a montagem de seu HD portátil de forma a impedir a execução de executáveis maliciosos por parte de um eventual invasor. No meu caso acrescentei as seguinte linha ao meu arquivo /etc/fstab:

/dev/sda1       /media/cartola  ext4    defaults,noexec,nosuid,nodev    0       2

Espero que você tenham gostado. Deixe seu comentário abaixo.

No próximo post eu escreverei sobre como configurar um servidor rsync para sincronizar as músicas de seu computador principal com o Raspberry Pi.

quinta-feira, 18 de julho de 2013

Vídeo da palestra "Para que serve uma web aberta?"

Conforme eu tinha avisado no post anterior, postaria aqui o vídeo da palestra relâmpago que dei no 7 Masters. O vídeo pode ser conferido abaixo. Visite também a página do 7 Masters para visualizar as outras seis palestras que foram apresentadas no dia, durante a edição sobre Open Web e os vídeos das edições anteriores. Creio que vale muito a pena. Gostaria bastante de saber o que as pessoas acharam, por isso, deixe o seu comentário neste post.
Palestras 7Masters Open Web | Pra que serve web aberta com Kemel Zaidan por imasters no Videolog.tv.

PS: infelizmente o produtora não sincronizou direito os slides com o vídeo... :-(

quinta-feira, 6 de junho de 2013

Para que serve uma web aberta?

No último dia 29 de junho, fui convidado para falar no evento 7 Masters sobre Open Web, promovido pelo portal iMasters. A proposta é convidar 7 pessoas que fazem uma palestra rápida de 7 minutos (ou um pouco mais, no meu caso) sobre um determinado tema, abordando assim 7 visões sobre um determinado assunto. Como as palestras são rápidas, assistir aos vídeo não cansa tanto (a minha lista de "assistir mais tarde" do YouTube que o diga...)

Esse é um assunto do qual eu nunca tinha me prontificado a falar, mas aceitei o convite com gosto, pois o tema é pra lá de interessante. Pensei primeiro em falar sobre o projeto Webmakers, da Mozilla, que tem a intenção de levar o conhecimento sobre uma internet aberta para um público não técnico.

Mais tarde achei que não daria para abordar esse assunto em tão pouco tempo e resolvi falar sobre o porque considero importante termos uma internet aberta e projetos como o Webmakers.

Gostei muito da oportunidade de falar do assunto e surgiram diversas ideias para melhorar a palestra. Os slides da palestra (feitos em HTML5 e reveal.js) não dizem muito sobre a apresentação, mas a título de curiosidade, colocarei ele aqui para quem quiser ter uma ideia. Espero poder ter outra oportunidade de apresentar o tema. Quando o vídeo sair, tento blogar ele aqui.

quinta-feira, 28 de fevereiro de 2013

Mudanças na coordenação do time do Ubuntu-br-sp

Olá a todos,

por alguns anos levei a coordenação do time à frente e contei com a participação de muitos membros relevantes para isso. Alguns deles permanecem na comunidade, mas a maior parte já não podem estar mais tão presentes, por inúmeras impossibilidades que a vida prática nos impõem em alguns momentos.

Como alguns já devem saber, felizmente chegou a minha hora de também deixar com que aqueles em melhores condições tomem a frente da comunidade. Como vocês devem ter percebido, estive muito ocupado pessoal e profissionalmente, o que me reservou pouco (ou quase nenhum) tempo livre para me dedicar a comunidade do Ubuntu-SP, coisa que sempre fiz com enorme prazer.

Foram anos muito bons, de muito aprendizado e de muitas conquistas, os quais guardarei para sempre no meu coração. Aqueles que me conhecem sabem que não exagero ao dizer que o software livre foi responsável por mudar a minha vida e esta comunidade foi parte integrante disso. Me coloco à disposição para colaborar com o que for preciso junto a nova coordenação e aproveito desde já para desejar boa sorte aos novos coordenadores.

Espero que vocês tenham a fibra e a persistência necessária para agir nos inúmeros momentos em que elas se fazem necessárias, os quais, eu garanto, são muito mais frequentes do que a gente pode imaginar. Por favor, honrem a história dessa comunidade! É a única coisa que eu vos peço.

Continuarei sempre sendo um membro ativo da comunidade brasileira do Ubuntu e colaborando com ela. Se precisarem de mim. Peço apenas para tentarem também outras maneiras alternativas de contato além do email (gtalk, facebook, twitter etc.), pois anda difícil acompanhar a minha caixa de email e uma grande faxina se faz necessária.

Abraços,

Kemel Zaidan

Comente clicando!