Tag Archive | Programação 3

Programação 3 – parte 2

No último post da série, eu ainda não havia feito nenhuma linha de código, e estava decidido a fazer a parte principal do sistema em Python, até que eu li um artigo sobre Node.js e decidi que essa seria a tecnologia que eu utilizaria.

Você pode pensar no Node.js como um interpretador de Javascript que usa a engine V8 da google e adiciona uma API para tratar I/O de forma assíncrona, usando o paradigma de programação orientada a eventos. Essa abordagem resolve o problema c10k. Um servidor que usa a mesma abordagem para resolver o mesmo problema e é utilizado em ~7,65% de todos os domínios é o nginx.

Alguns problemas que eu enfrentei é que eu nunca tinha trabalhado com Javascript na vida, e junto com o fato de a tecnologia ser nova, tive dificuldades até para realizar a escolha dos módulos que eu iria utilizar.

Para criar os serviços, eu optei pelo uso do formato de dados JSON-RPC e pela implementação node-jsonrpc. Durante os testes com telnet, minha implementação dos serviços estava sempre falhando e explorando muito o problema (criei até uma ferramenta para me ajudar nos testes) descobri que era um bug na implementação do JSON-RPC, que ajudei a corrigir.

Para persistência, optei pelo banco de dados MongoDB, e pelo módulo mongoose, que ajudou-me inclusive na modelagem. O MongoDB é um banco de dados NoSQL escalável, de alta-performance e escrito em C++ que armazena objetos JSON.

Utilizei o módulo node-static, que inclusive faz cache, para servir os arquivos estáticos. O site que criei é simples, mas faz uso de tecnologias interessantes como HTML5 para os forms, o velho e já conhecido CSS e Javascript+dojo para fazer e tratar as requisições JSON-RPC.

Não tive tempo de criar uma aplicação gráfica completa a tempo para a entrega do trabalho, então fiz uma aplicação em Qt, que era nada mais que uma janela com um widget QWebView ao centro.

Posso afirmar que essa disciplina foi uma experiência interessante (principalmente comparada às outras disciplinas do curso de ciência da computação na UFAL). Caso queira os slides que eu criei para fazer o screencast anterior, use o link abaixo:

http://www.mediafire.com/?4ybe1njebvak0p9

Anúncios

Programação 3 – uma oportunidade para aprender uma nova linguagem

Para nos avaliar, o professor de programação 3 da UFAL pediu um sistema que é composto por um servidor web que fornece webservices, uma interface web para o mesmo, e também uma interface gráfica.

Ele exigiu inicialmente para implementar em Java, e no começo da matéria eu estava realmente disposto a dar mais uma chance a Java, mas depois de ver swing e o suporte ridículo a metaprogramação que Java fornece, eu insisti o suficiente para que ele me deixasse fazer em outras linguagens.

Então, como ele foi bonzinho, resolvi optar pelo meio-termo. Ele gosta de Java, eu de C++, então vou fazer em Python =p. Devo conhecer só 10% de Python, mas isso é mais que o suficiente para fazer muito mais do que sou capaz de fazer em muitas linguagens, e combinado com o shell ipython e a ide komodo, espero não encontrar grandes dificuldades na linguagem.

Problema da linguagem resolvido, agora preciso de uma framework web (e toda a infraestrutura como servidores web e forma de integração …) para desenvolvimento. Lendo bastante acabei conhecendo o fcgi e o genshi. Eu já conhecia o CGI, mas sempre achei limitado e complicado, mas o fcgi parece ter removido os maiores problemas. Para o servidor, acho que vou colocar o Lighttpd, pelo simples motivo de que ele suporta o fcgi e parece ser fácil de configurar.

A parte mais difícil foi escolher a framework. Descobri os projetos web2py e Django, e ambos aparentam ser tão legais que eu não consigo me decidir entre um ou outro. Um amigo resolveu fazer o trabalho em Python também e tivemos a ideia de cada um fazer usando uma framework diferente para depois fazer uma comparação profunda. Ele ficou com Django e eu fiquei com web2py. Vou ver se é fácil substituir o sistema de templates próprio do web2py pelo genshi.

Tentarei caminhar o máximo no resto que sobrou de hoje e só retornarei a esse projeto próxima semana.

%d blogueiros gostam disto: