Um pouco rubista e quem sabe um dia Railer

Eu gosto de python, é a minha linguagem de programação favor… bem, isso tá mudando. Não vou detalhar aqui os motivos pelo qual o ruby e seu ecossistema vem me seduzindo bem mais que o python. Mas no grosso, vejo a comunidade ruby/rails focada em aplicativos web, apis para aplicativos web e sites para web, ou seja, focados no futuro da computação pessoal baseado na nuvem. Eu entrei nessa também, meu mantra é nuvem -> webapps.

Dentre as coisas interessantes que vem surgindo ao redor do Ruby/Rails, existe o SproutCore, uma biblioteca MVC para desenvolvimento de webapps tão bem feitos quanto um app para desktop, celular ou tablet, e até uma “alternativa” ao javascript o CoffeScript, que promete e entrega ao programador uma forma mais ‘limpa’ de se desenvolver javascript, que alias foi adicionado como dependência do Rails e tá gerando estranheza entre alguns Railers.

Eu queria muito mostrar algumas idéias que tô desenvolvendo usando rails e sproutcore, mas tá tudo muito crú, e tempo livre eu não tenho mais. Mas se algum leitor puder me dar dicas de gems interessantes para usar com o rails sou todo ouvidos.

Posted in web | Tagged , , , , | Comments Off

A saga de Biorn

Essa dica veio da galera da Uterere:

Posted in animação | Tagged , | Comments Off

Como salvar um vídeo do (seu site de videos favorito) no novo flash plugin ?

Houve um tempo (até poucas semanas atrás), em que para salvar um vídeo FLV qualquer da web, bastava ir no diretório /tmp, e copiar o arquivo FlashFEYHS2W34F para o desktop com outro nome, ou ainda assistir o vídeo usando o mplayer enquanto o mesmo era baixado.

Mas as coisas mudaram, a Adobe, visando proteger o direito autoral da indústria, mudou o comportamento do Flash, agora ao começar o stream de vídeo ele deleta o arquivo do HD, assim ele fica inacessível para o sistema e para os outros programas, mas não para o processo que originou o stream. Ou seja, enquanto esse processo estiver rodando o sistema de arquivos não libera o espaço ocupado pelo arquivo deletado, assim ele continua disponível para o processo pai indefinidamente.

Que tal usar essa característica dos sistemas de arquivos do linux a nosso favor ?

Primeiro passo, escolha um vídeo no youtube e dê play, em seguida abra um terminal e digite:

lsof | grep deleted | grep /tmp/Flash

Essa etapa pode demorar alguns minutos, dependendo do tamanho do seu sistema e da quantidade de processos rodando, e no fim ele vai te gerar uma saida semelhante a essa:

chromium- 4103    liquuid   22w      REG       8,21  20022146     394236 /tmp/FlashXXfBMa8x (deleted)

Esse comando nos mostra qual o comando e o número do processo que tem um arquivo aberto deletado cujo o nome se inicia com ‘/tmp/Flash’. Se você pegar o nome do arquivo ‘/tmp/FlashXXfBMa8x’ e der um ‘ls’, ele não vai estar lá, por outro lado todos os processo do linux tem seus files decriptors muito bem organizados e guardados no diretório ‘/proc’.

Dessa forma usando o número do processo (segunda coluna) 4103, basta dar o comando:

ls -l /proc/4103/fd/ | grep '/tmp/Flash'

A saída será parecida com essa :

l-wx------ 1 liquuid liquuid 64 2011-03-26 16:31 22 -> /tmp/FlashXXfBMa8x (deleted)

Ou seja, existe um link chamado ’22′ linkado com o conteúdo do arquivo deletado, então basta copiar ‘/proc/4103/fd/22′ para outro diretório, para ter sua cópia do vídeo. Não é simples, mas é uma forma.

EDIT: Esse post não mostra uma solução de como baixar videos do Youtube, mas de qualquer site e qualquer conteúdo.

Posted in linux | Tagged , , , | 13 Comments

Customizando o prompt interativo do python

Em algumas distros linux notei que o interpretador padrão do Python, aquele invocado pelo comando python no terminal, possuiam autocomplete e histórico. Eu sei que existe o ipython o bpython, mas em várias situações onde eles não estão disponíveis, o interpretador interativo padrão é a melhor solução.

Existe uma variavel de ambiente chamada PYTHONSTARTUP, que guarda o path do seu script de inicialização, por exemplo:

export PYTHONSTARTUP="~/.pythonstartup"

O conteúdo de ~/.pythonstartup pode ser customizando à vontade, e ainda existe uma documentação básica sobre o assunto aqui.

Um exemplo de pythonstartup :

import readline
import rlcompleter
import atexit
import os
from datetime import datetime as d

readline.parse_and_bind('tab: complete')

histfile = os.path.join(os.environ['HOME'], '.pythonhistory')

try:
    readline.read_history_file(histfile)
except IOError:
    pass

atexit.register(readline.write_history_file, histfile)

def isodate():
    return d.now().isoformat()

del os, histfile, readline, rlcompleter

Como você pode ver é possível adicionar funções e objetos personalizados para tornar seu prompt mais flexivel.

Posted in python | Tagged , , , | Comments Off

O dia em que o Glade parou, um passeio pelos RADs Opensource

A um ano atras fiz um projeto para o CCJ que envolvia a criação de um sistema de gerenciamento de telecentros, uma versão simplificada de um programa para gerenciar Lan-Houses chamdo Pylan.

O Pylan foi feito em python e gtk, e o primeiro protótipo funcional ficou pronto em 3 semanas, bem rápido, mas como não usei uma ferramenta de RAD para desenhar a interface posso assegurar que pelo menos metade do tempo de coding foi tentando ajustar a interface na mão, principalmente os formulários. Como o projeto tinha tudo para ser um oneshot, isso não era um problema tão grande, já que no futuro poucas mudanças na interface seriam necessárias.

Mas hoje eu vivo uma situação curiosa, apesar de ter minha empresa aberta legalizada e plenamente funcional, sou empregado em tempo integral em outra .A Hyddro foi concebida para ser uma empresa de verdade, e não uma passadora de notas, ela surgiu num vácuo de negociações que surgiu no processo da minha integração ao grupo da empresa em que sou empregado por circunstâncias obtusas, falhas de comunicação, desconfianças e conflito de interesses que são papo de bar, e não pra blog. Ou seja, toco minha empresa fora do horário comercial, e isso cansa, cansa muito e portanto surgiu a necessidade de usar RAD no produtos da empresa.

Surgiram clientes em potencial para uma versão atualizada do Pylan, que bancariam seu desenvolvimento por alguns meses, e um outro cliente que abriria a portas para um novo mercado, o das lan houses e cyber cafes com linux. Um mercado cheio de soluções pela metade, ruins ou emuladas via dosbox, mas que tem um potêncial muito grande se bem trabalhado.

Voltando, ferramentas de RAD permitem desenhar as interfaces dos programas de forma independente do código, tudo clicando e arrastando, depois é só escrever as classes e os métodos para se conecetar com a interface, reduzindo drásticamente o tempo de desenvolvimento, o que pra mim é fundamental já que não vou conseguit manter um emprego integral e tocar meu negócio sem isso…

No linux existem algumas ferramentas desse tipo:

  • Netbeans possui uma ferramenta de RAD integrada ao IDE, para java.
  • QTDesigner, cria arquivos .ui , que podem ser aproveitados por programas feitos em C++, python, ruby, java, C#  usando QT.
  • Glade, cria arquivos xml para biblioteca GTK, para liguagem C/C++, python, ruby, java etc…
  • wxGlade, cria código em python, c++, perl , lisp ou um xml que pode ser importado pela aplicação.
  • Mono, cria interfaces para qualquer liguagem integrada ao CLR/.NET, C#, IronPython, IronRuby etc…

Usei várias madrugadas para desenvolver protótipos em cada uma dessas soluções, considerando minhas necessidades:

  • Multiplataforma
  • Desempenho decente em Windows e Mac
  • Visualmente bem integrado com a plataforma que está rodando
  • Fácil de instalar, sem muitas dependências
  • Velocidade no desenvolvimento
  • Desenvolvimento Ágil

Mono


O primeiro protótipo que desenvolvi foi em Mono, e digo que foi a experiência mais fantástica em desenvolvimento desktop que já tive !

O monodevelop, não fica no seu caminho, ele é realmente útil, simples de usar e intuitivo, C# é bem parecido com Java, possui bibliotecas bem resolvidas e uma boa compatibilidade com bibliotecas livres desenvolvidas para .NET (sim isso existe).

É Super multiplataforma, rodou bem rápido no Linux, Windows e Mac, se integrou visualmente muito bem no Linux e no Windows… no Mac ficou bem estranho. O ubuntu já vem com mono instalado, no windows tive que instalar o GTK#, no mac tive que instalar o mono e o GTK#, mas em todos os casos foi bem tranquila as instações e o tempo de download das bibliotecas.

Existem bibliotecas como a NUnit para testes, e bons depuradores e profilers integrados no monodevelop.

Levei pouco mais que 4 horas para terminar o protótipo, simplesmente fantástico.

Mas o mono tem um problema sério, o projeto é constantemente trolado pela microsoft e pela comunidade opensource, só pra se ter uma idéia existem milhares de tutoriais e scripts para tornar sua distro mono-free. Tem até distro que seu único diferencial é não ter mono !

Netbeans

No netbeans tive uma experiência de produtividade parecida com a do Mono, com a vantagem de usar swing, não tive que instalar nada na hora do deploy, bastou apenas executar o Jar. O Swing integra nativamente o ‘look’ da aplicação, mas não o ‘feel’, o programa ficou estranho em todos os sistemas, e ficou lento … muito lento. Lendo a respeito, a galera diz que o swing não recebe atenção dos desenvolvedores do java a pelo menos 5 anos, deve ser verdade.

Por mais que eu tenha gostado o desempenho e a pobreza de widgets o tirou da jogada.

QTDesigner

A qualidade gráfica e a riqueza de widgets é fenomenal, outstanding, mas todo seu potencial só é atingido usando C++, eu queria muito usar python, não que não seja possível, mas tenho minhas dúvidas já que o pyQT é desenvolvido por uma empresa independente da nokia.

Outra coisa que pega é que o PyQT exige pagamento de licença no caso de softwares comerciais, o software é livre, mas vou receber pra melhora-lo, tenho muitas dúvidas.

WXGlade

Bem rápido de desenvolver, tem muitos widgets legais, é comparavel como  QT nesse ponto, a portabilidade é fantástica, basta instalar um pacotinho e o sistema funciona como se fosse nativo. É uma ótima opção, muito bem documentado, mas possui bugs e isso é um tanto preocupante.

Glade

Foi minha primeira opção, a ferramenta é muito boa, da pra integrar com o pygtk tranquilamente. O grande problema é que para rodar pygtk no windows é necessária a instalação de meia dúzia de pacotes, além do python claro, o que incha o sistema. No Mac roda sob o X11 o que não é legal. Apesar de tudo, ele é melhor integrado com o GNOME e tem uma qualidade superior aos outros, o Pylan é feito em PyGTK e funciona muito bem.

Meu drama é que após redesenhar toda interface do pylan no glade o programa travou, e não consegue mais abrir o xml gerado… Fiquei na mão, abri um bug report, mas perdi a confiança no sistema.

Agora estou aqui, dividido, com uma deadline, estou bastante inclinado a usar WX com python ou QT com C++, e agora ?

Posted in linux, Uncategorized, vida | Tagged , , , , , , , | Comments Off

Bing roubando resultados de busca do Google ?

É o que o google diz ! Eles plantaram resultados de busca com palavras propositalmente grafadas incorretamente, o resultado é intrigante, veja uma amostra:


O resto do artigo você confere aqui

Posted in web | Tagged , , , | Comments Off

Vai uma coca ai ?

O QUE ACONTECE QUANDO VOCÊ ACABA DE BEBER UMA LATA DE REFRIGERANTE:

Primeiros 10 minutos:
10 colheres de chá de açúcar batem no seu corpo, 100% do recomendado diariamente.
Você não vomita imediatamente pelo doce extremo, porque o ácido fosfórico corta o gosto.

20 minutos:
O nível de açúcar em seu sangue estoura, forçando um jorro de insulina.
O fígado responde transformando todo o açúcar que recebe em gordura (É muito para este momento em particular).

Gostaria de recomendar a leitura do resto do texto do blog de onde tirei o mesmo, o vivaotux vale a pena.

Posted in cultura | Tagged , , | Comments Off

Qual a diferença entre Reino Unido, Grã-Bretanha e Inglaterra ?

O blog do liquuid também é cultura, essa dúvida sempre me corroeu :

Posted in cultura | Tagged , , | Comments Off

Como são feitos os cartões de memória ?

A fabricante Lexar explica :

Simplesmente fantástico não ?

Posted in hardware | Tagged , , , | Comments Off

45 ebooks sobre desenvolvimento web gratuitos

Dica do Carlos Seabra :

http://speckyboy.com/2011/01/12/45-free-ebooks-for-developers-and-designers/

Tem umas coisas interessantes, vale a pena dar uma olhada

Posted in Uncategorized | Tagged , , , | Comments Off