Nginx 1.1 e Websockets (Socket.io, Faye, etc)

O Nginx é um servidor e proxy reverso open source de HTTP/HTTPS, SMTP, POP3 e IMAP, com foco em performance, concorrência e baixo uso de memória. O Nginx é absolutamente fenomenal para entregar conteúdo em alta velocidade, mas recentemente me deparei com um problema.

Datacenter

Não é possível utilizar Websockets atrás de um proxy reverso do Nginx. O motivo é que Websockets utilizam conexões HTTP/1.1, mas o módulo de proxy reverso do Nginx aceita somente conexões HTTP/1.0. Do lado do cliente o servidor é totalmente compatível, porém, do lado do upstream a realidade é outra.

Existem algumas soluções que podem ser aplicadas, como o uso do tcp_proxy ou até mesmo um outro servidor de proxy reverso. O tcp_proxy não permite que você utilize uma porta já utilizada por um módulo HTTP e outros proxies reversos em geral quebram o suporte a multiplos certificados SSL em um mesmo IP.

Este problema porém já foi corrigido na versão de desenvolvimento do Nginx, atualmente 1.1.16 (no momento em que este post foi escrito), mas não existem exemplos claros de como utilizar um Websocket atrás de um proxy reverso do Nginx nesta versão, motivo que me levou a escrever este post. Entendo que este conteúdo talvez fosse mais útil se escrito em inglês, mas não queria misturar um artigo em outro idioma no meio do blog e muito menos criar um somente para este fim.

Basicamente, as diretivas do módulo ngx_http_proxy_module que fazem a mágica são:

proxy_http_version 1.1;
proxy_buffering off;
proxy_cache_bypass $http_pragma $http_authorization;
proxy_no_cache $http_pragma $http_authorization;

Estes vão logo abaixo da diretiva proxy_pass no seu arquivo de configuração. Explicando melhor:

  • proxy_http_version: faz com que seja utilizado HTTP/1.1 para comunicação com o upstream;
  • proxy_buffering: por padrão, o nginx armazena o retorno do upstream em um buffer conforme vai recebendo e envia tudo para o cliente (browser) no final. Desabilitando o buffering, o Nginx passa a enviar imediatamente a resposta ao cliente a medida que vai recebendo do upstream;
  • proxy_cache_bypass e proxy_no_cache: faz com que o Nginx não armazene em cache conteúdo recebido do upstream caso contenham o header no-cache ou seja uma autenticação HTTP.

Se ficou alguma dúvida, poste nos comentários.


Legendas no Lion com o Subtitle Master

Encontrar uma legenda que sirva para seus arquivos de vídeo nem sempre é uma tarefa fácil. É muito comum encontrar legendas fora de sincronia, com falas faltando e traduções ruins. Pensando em aliviar este sofrimento, o Subtitle Master foi desenvolvido.

Subtitle Master

Atualmente o aplicativo está na versão beta e disponível somente para usuários do Mac OS X Lion. Segundo o desenvolvedor, para expandir o suporte para o Snow Leopard seria necessário reescrever diversas partes do programa que atualmente utilizam API’s nativas do Lion.

Para utiliza-lo, basta arrastar um arquivo de vídeo ou pasta para o aplicativo, que imediatamente procura por uma legenda no OpenSubtitles e SubDB. Se encontrada, a mesma é colocada na pasta do vídeo já com o nome correto e pronta para assistir. Quando algo dá errado e a legenda encontrada não serve para o seu arquivo, o Subtitle Master ainda fornece um meio simples de procurar por alternativas e testa-las.

O Subtitle Master pode ainda fazer o upload das legendas que você já possui para o SubDB (base de dados principal), tornando o processo de busca ainda mais rápido e confiável.

Bases de dados

Open Subtitles: É uma das maiores base de dados de legendas existentes atualmente, com suporte a diversos idiomas. A busca no site é confusa, devido a grande quantidade de informações e propagandas. Você pode procurar legendas pelo nome ou hash, no próprio site ou utilizando os diversos clientes disponíveis.

SubDB: É uma base de dados de legendas, centralizada e gratuita. Utiliza um modelo colaborativo, onde usuários enviam legendas e estas ficam disponíveis para outros usuários. Com o auxilio de um algoritmo apelidado de SubRank, a base de dados determina automaticamente a melhor legenda dentre as disponíveis para um determinado arquivo de vídeo simplificando assim o download. Não é possível fazer busca por nome e você deve utilizar um cliente para ter acesso a base.

Update 1

Já está disponível a versão 0.6 do Subtitle Master. Para quem já utilizava a versão 0.5, a atualização será feita automaticamente.


MD5sum direto no browser

Seja devido a falta de uma ferramenta nativa para o Microsoft Windows, ou apenas para facilitar a tarefa nos demais sistemas operacionais, o MD5sum.it é um simples, porém muito útil, aplicativo.

MD5sum.it - online MD5sum

md5sum é um programa de computador instalado por padrão em sistemas UNIX , GNU/Linux e BSD (geralmente em modo texto, mas também há versões para ambiente gráfico) e também disponível para Windows. Ele permite verificar a integridade de arquivos transmitidos por uma rede (como a internet), garantindo a integridade dos dados e evitando que arquivos corrompidos durante a transmissão sejam usados como se fossem íntegros. Artigo sobre MD5sum na Wikipédia

Criado por este que vos escreve, o Web App beta desenvolvido utilizando HTML5, permite que você calcule o hash MD5 de arquivos de até 50MB* sem a necessidade de upload, apenas arrastando o arquivo do seu desktop para o site.

Como a ferramenta utiliza APIs muito recentes de HTML5, é necessário utilizar o Google Chrome 13+ ou Firefox 5+ para funcionar corretamente.

Espero que goste assim como eu, e se tiver alguma dúvida, crítica ou sugestão, será bem vinda.

Alternativas

Caso seu arquivo seja maior que o limite ou você prefira uma solução nativa pro seu sistema operacional Linux, existe o aplicativo de linha de comando md5sum:

md5sum filename.ext

Para usuários de Mac OS, a ferramenta de linha de comando chama-se apenas md5:

md5 filename.ext

Sendo aplicativos nativos, a performance é muito maior se comparada a alternativa em HTML5, mas implica em abrir o terminal, coisa que ainda assusta alguns usuários.

Para o Windows, existem algumas alternativas com interface gráfica, e com performance satisfatória como o MD5summer e o WinMD5.

Update 1

Já está disponível o suporte para arquivos de até 500MB no MD5Sum.it. Os planos agora são para remover completamente a limitação de tamanho.


Um mês de Netflix Brasil

Depois de experimentar o serviço de streaming de vídeo do Netflix por um mês, resolvi compartilhar aqui minha opinião sobre o produto.

Netflix Brasil

Pela modesta quantia de R$14,99 por mês, a Netflix permite que você assista uma grande quantidade de filmes e séries diretamente em seu computador aonde quer que você esteja. Seria perfeito, mas o acervo de filmes possui pouquíssimos lançamentos (para não dizer nenhum.) Filmes de 2011* ? Esqueça, melhor procurar na locadora perto da sua casa.

Com as séries a coisa não é muito diferente. Além das poucas famosas, incluindo algumas excelentes preciso dizer, existem também algumas mexicanas como Maria do Bairro. As temporadas disponíveis são normalmente do ano anterior como já era de se esperar, mas o pior ainda está por vir.

Comecei assistindo a sexta e sétima temporada de Top Gear UK, motivo este alias que me fez querer experimentar o serviço em primeiro lugar. Tudo perfeito, mas a partir da oitava temporada, o áudio é dublado em espanhol, sem opção de voltar ao idioma original e isso sem mencionar legendas com traduções fora de contexto, como Libra Esterlina sendo traduzidos como Libra (massa). A pessoa que traduziu nem a frase leu, caso contrário não sairiam pérolas como: “O carro pesa 35.000 libras”.

Fora isto, vi vários episódios de outras séries com legendas faltantes ou fora de sincronia. Passeando pelos títulos disponíveis, e observando o comentários dos usuários, a maioria é reclamando destes dois fatores: falta de áudio original e legendas com problemas.

O Netflix ainda é muito jovem no Brasil e tem muito o que amadurecer, mas, até lá, eu cancelei o meu. Como o eles oferecem o primeiro mês grátis, recomendo que você experimente o serviço e tire suas próprias conclusões mas pelo menos você já terá uma ideia do que esperar.


Editor online de Markdown

Markdown é uma ferramenta de conversão de texto para HTML. Ela permite que você escreva utilizando uma sintaxe fácil de ler e escrever e então converte o texto em XHTML válido.

O objetivo da sintaxe do Markdown é tornar o texto o mais legível possível. John Gruber on Markdown site

InstantMark - online markdown editor

O InstantMark é um Web App criado utilizando HTML5, que permite que você crie textos utilizando a sintaxe Markdown e veja o preview instantaneamente. Também é possível utilizar o seu próprio CSS arrastando o arquivo para o site, sem a necessidade de upload.

Por que, quem?

Eu, Jr. Hames, amo o Markdown e sua simplicidade. Como já mencionei antes, migrei este blog simplesmente pela possibilidade de escrever meus posts utilizando esta sintaxe. O problema é que eu não consegui encontrar nenhum editor tão simples quanto ela. Os plugins que encontrei para escrever no WordPress ou não possuem preview, ou possuem uma interface/editor ruim.

Estes e outros motivos me levaram a criar este web app. Todos os posts do blog desde a migração, bem como o texto no próprio site do aplicação foram escritos completamente com ela, e os posts antigos do blog foram reformatados para uma maior legibilidade.

Se você gosta de Markdown ou mesmo se o conheceu devido a este post, experimente o InstantMark. Espero que goste assim como eu, e se tiver alguma dúvida, crítica ou sugestão, será bem vinda.


Casa e cara novas

Após quatro anos de sua criação, o Blog do Junior finalmente ganhou uma cara nova, com direito a um novo esquema de cores e a um design mais simples, limpo e com fontes maiores que privilegiam a legibilidade.

"Blog do Junior - Antes da reforma"

Migramos também de plataforma. O blog que nasceu utilizando o Blogger, do Google, agora utiliza o WordPress. Criado com base no finado b2/cafelog, é um software de código aberto, escrito em PHP. Atualmente é a mais popular ferramenta na criação de blogs.

Quero deixar claro que ainda considero o Blogger uma excelente ferramenta, mas que a algum tempo deixou de atender as minhas expectativas e necessidades, como por exemplo, não possuir suporte a edição de textos utilizando Markdown.

Esta porém, não é a primeira vez que utilizo o WordPress como plataforma de publicação. O World Wide Standards, blog de minha autoria com foco em webstandards e design, utilizava uma das primeiras versões do sistema.

Espero que gostem das mudanças, e se tiverem sugestões, críticas ou opiniões, escreva um comentário.


Por que roubar um doce?

Esta foi a pergunta que o desenvolvedor de jogos Cliff Harris perguntou aos internautas. Seus jogos custavam em média US$20 dólares e eram constantemente pirateados. Das milhares de respostas que recebeu, Harris percebeu que em geral, as pessoas consideravam que os jogos não valiam o preço que custavam (mesmo a 20 dólares), e que qualquer impecilho entre a vontade de jogar e o jogo, ou seja, que dificultavam o processo de compra, obtenção ou instalação do jogo como DRM faziam com que os usuários pegassem a via rápida, ou seja, escolhessem a ilegalidade.

Ironicamente, uma das coisas que reduz o entusiasmo de realmente se empenhar em fazer jogos é que milhares de ingratos irão piratear seu jogo no primeiro dia por nada.
Cliff Harris

Como resultado dos feedbacks, Harris diminuiu o preço pela metade, removeu a proteção contra cópia e alterou sua loja online para tornar o processo de compra o mais simples possível além de se dedicar mais ao jogo e tentar fazer um produto cada vez melhor.

More info at: Talking to pirates

Os motivos utilizados pelos usuários não param por ai. Pessoas que fazem download de séries de televisão dizem que o principal motivo de o fazerem é não ter esperar meses para ver a próxima temporada. Em alguns casos a espera chega a ser de um ano.

A facilidade de acompanhar é outro, séries baixadas na internet são marcadas com número da temporada e episódio, informação dificil de ser obtida na televisão, pelo menos no Brasil, mas que permite com que o fã tenha uma referência melhor do que já assistiu ou não.

Por fim temos também a qualidade. Televisões de alta-definição estão ganhando popularidade no Brasil, mas a oferta de conteúdos nesse formato ainda é muito pequena e os valores de operadoras de TV a cabo que fornecem o serviço (R$179,90 o pacote mais em conta da Sky HDTV) estão fora da realidade da grande maioria da população.


Pirataria em números

Tornou-se uma prática muito comum na sociedade ao longo do tempo a violação do direito autoral. Também conhecida como pirataria, ganhou popularidade no fim da década de 90, quando as redes de Peer-to-peer começaram a ganhar mercado com a criação de aplicativos como Napster e Kazaa que simplificavam o uso da tecnologia e permitiam que o usuário comum partilhasse seus arquivos de uma maneira simples e eficiente.

Músicas foram o primeiro tipo de conteúdo amplamente compartilhado em redes de Peer-to-peer. Impulsionados pelos altos valores cobrados por CDs, pessoas, em geral jovens, viram na tecnologia uma maneira de obter o conteúdo desejado sem sair de casa, com uma maior flexibilidade (fazendo download apenas das músicas que queria ouvir) e a um custo muito menor: de graça.

A moda tornou-se tão popular, que a RIAA (Record Industry Association in America) estima que em comparação a 1999, a venda de músicas nos Estados Unidos da América caiu 47%, o que representa um prejuízo de aproximadamente 6 bilhões de dólares anuais. Estima-se também que de 2004 a 2009 foram feitos downloads de aproximadamente 30 bilhões de músicas ilegalmente através das redes de Peer-to-peer.

Atualmente, não são apenas músicas obtivas de maneira ilegal, mas também filmes, séries, aplicativos, jogos e livros.

Se pode ser visto ou ouvido, pode ser pirateado.
Autor desconhecido

Software

Os números relacionados a violação dos direitos autorais na cena musical já são bastante impressionantes, mas a pirataria de software não fica para trás. De acordo com a BSA (Bussiness Software Alliance), em 2010 apenas 22% do software consumido pela china foi obtido legalmente. Nos Estados Unidos, este número chega a 80%, mas a pirataria ainda consome uma boa fatia do mercado. É comum encontrar pelas ruas da china cópias ilegais de softwares sendo vendidas a dois ou três dólares, uma fração de seu valor original.

Não estou dizendo que todas as pessoas na China tem condições de comprar um computador, mas se possui, deve arcar os custos de software.
Steve Ballmer, Presidente da Microsoft

Ainda que os softwares mais pirateados sejam sistemas operacionais e suites comerciais de alto valor, como por exemplo o Microsoft Windows 7 (R$329 a versão mais simples, e R$699 a versão Ultimate), Microsoft Office 2010 (R$1399 a versão com o Publisher) ou o Adobe Photoshop (R$1577 a ultima versão), softwares de baixo valor também são alvos da ilegalidade. Softwares de US$0,99 para dispositivos móveis são distribuidos livremente.

De acordo com a Pinch Media, existem aproximadamente 4 milhões de iPhones jailbroken (procedimento que permite que aplicativos não oficiais sejam instalados) no mundo e destes, aproximadamente 38% possuem pelo menos um aplicativo ilegal. Trata-se de aplicativos cujo o valor variam entre US$0,99 e US$9,99.


Ativando facetime no iPhone4 com a Claro

Muita gente assim como eu está com problemas para ativar o FaceTime no iPhone4, não só na Claro, mas em outras operadoras também. Com a Claro, o problema foi resolvido com a atualização do Carrier para a versão 9.1. O problema, é que no meu caso, a atualização não era oferecida de jeito nenhum.

Apple iPhone 4 - Facetime

Assim como vocês, já segui um monte de tutoriais, que vão desde fazer Reset de configurações do telefone e rede, restauração via iTunes, etc. Nada resolveu. Quando soube que o Carrier 9.1 resolvia o problema, resolvi procurar uma maneira de forçar esta atualização, e o resultado você confere aqui.

O procedimento descrito neste post foi testado com a Claro Brasil, em um iPhone4 com iOS4.1 e iTunes 10.1.1. Provavelmente deve funcionar para outras operadoras também, mas de um jeito ou de outro, faça por sua conta e risco. Primeiramente, você precisa do Carrier Update mais recente para sua operadora. No caso da Claro, é o Claro Brasil 9.1 (consulte aqui outras operadoras).

Por padrão, o iTunes só aceita carrier updates provenientes da Apple, mas é possível fazê-lo aceitar carrier updates de um arquivo a sua escolha, que neste caso é o ipcc que você acabou pegar.

Para que o iTunes aceite seu ipcc:

Mac OS: (digite no terminal)

defaults write com.apple.itunes carrier-testing -bool true

Windows: (CTRL+R ou Start -> Run)

"%ProgramFiles%iTunesiTunes.exe" /setPrefInt carrier-testing 1

Feito isso, conecte seu iPhone no PC e execute o iTunes. Clique no seu iPhone4 na barra de menu da esquerda. Em summary, existe a opção update. Pressione e segure shift (option se você estiver utilizando Mac OS) e clique em update. Será exibida uma caixa de dialogo de seleção de arquivo. Navegue até a tela onde você salvou o ipcc.

Se o arquivo não estiver aparecendo, verifique que ao lado da caixa de entrada de texto (onde o nome do arquivo pode ser digitado) existe um menu dropdown que permite você alterar o tipo de arquivo. Basta selecionar IPCC. Selecione então o arquivo e clique em OK. Deve aparecer uma caixa de progresso escrito: “Updating carrier settings”. Quando a operação estiver concluida, desconecte o seu iPhone, desligue e ligue novamente o aparelho.

Para confirmar que a atualização foi feita com sucesso, vá em Settings -> General -> About. Deve aparecer Claro Brasil 9.1 em Carrier. Pronto, basta agora ir ao Settings -> Phone e ativar o FaceTime.

No meu caso, levou cerca de 1 minuto para a ativação ocorrer.


APIs gratuitas para uso em aplicações multimídia

Já fazem mais de dois anos que não escrevo nada por aqui, mas hoje, resolvi tirar a poeira falando sobre um assunto que gosto muito: Aplicações multimídia; com ênfase em Media Centers.

APIs

API, de Application Programming Interface (ou Interface de Programação de Aplicativos) é um conjunto de rotinas e padrões estabelecidos por um software para a utilização das suas funcionalidades por programas aplicativos que não querem envolver-se em detalhes da implementação do software, mas apenas usar seus serviços. Fonte: Wikipédia

Existem APIs disponíveis para muitas coisas, que vão de Twitter à Google Maps, e elas são uma parte muito importante de um Media Center. O software em si não possui nenhuma informação sobre os arquivos de áudio e vídeo do usuário exceto as que o próprio arquivo provê, mas através de webservices é possível obter uma infinidade de informações que vão desde a capa e informações sobre o elenco de um filme até descobrir o nome de uma música baseada em seu fingerprint.

Muitos destes webservices são abertos, opensource e/ou gratuitos. Alguns deles necessitam de um pré-cadastro para se obter uma chave de acesso a API. Outros porém não demandam de nenhum tipo de autenticação. A maioria destes webservices utiliza puramente o protocolo HTTP ou alguma extensão ou adaptação do mesmo. Por ser de fácil implementação e muito robusto e conhecido, este protocolo acaba sendo uma opção muito melhor do que fazer uma nova implementação.

Abaixo você encontra alguns dos principais webservices utilizados por softwares de Media Centers: