Lua entre as 20 mais do Tiobe

10/07/2007

Como já era esperado desde o mês passado, Lua entrou na lista das 20 mais do ranking tiobe. E não apenas no 20º lugar, mas direto pro 18º, subindo 10 posições. A linguagem que saiu da lista foi Fortran (esse mês ficou em 21º lugar). Lua é uma linguagem minimalista, pequena e nem por isso menos poderosa ou versátil que outras linguagens populares atualmente como Python ou Ruby.

Lua foi desenvolvida por uma equipe de programadores do Lablua da PUC-Rio em 1993 para uso no projeto Tecgraf de computação gráfica, como uma linguagem de extensão. Por isso Lua possui uma API poderosíssima com a linguagem de programação C.

Apesar de leve e enxuto (a implementação de regex é maior que Lua inteira), é uma linguagem bastante completa e módulos complementares podem ser encontrados no LuaForge e no lua-users.

Meu uso de Lua atualmente envolve mais em fazer scripts para tornar o SciTE mais poderoso.Atualmente o framework mais bem acabado é Kepler, englobando módulos de suporte a banco de dados, XML, registro (logs), AJAX e um servidor web, Xavante. Meu amigo Rodrigo Cacilhas está desenvolvendo um projeto paralelo similar, chamado LuaWsgi, inspirado no padrão WSGI do Python. Dê uma olhada no blog do LuaWsgi!


Email por Walter Cruz em Lua, Ruby
Tags: linguagens, lua, python, ruby, scite, tiobe

Rails, dispatch.fcgi e quebras de linha

16/04/2007

Mais um para a série: grandes problemas, pequenas soluções.

Há alguns meses eu coloquei o instiki para a equipe de desenvolvimento, na minha máquina mesmo. Porém, eu estava executando o mesmo usando o servidor webrick do ruby. As vezes, quando eu reiniciava a máquina, eu esquecia de reiniciar o wiki. Até que alguém gritasse aqui perguntando se o wiki estava fora do ar (diga-se de passagem, a página mais acessada do wiki chama-se almoço do dia).

Resolvi então configurar o rails com o apache2. Algumas pesquisas, e resolvi configurar usando o fastcgi.

Mmodificações no apache2.conf, reinicializações do apache2 e as mesmas mensagens teimavam em aparecer no log:

[Mon Apr 16 14:11:48 2007] [warn] FastCGI: (dynamic) server "/var/www/wiki/dispatch.fcgi" started (pid 323)
FastCGI: can't start server "/var/www/wiki/dispatch.fcgi" (pid 323), execle() failed: No such file or directory
[Mon Apr 16 14:11:48 2007] [warn] FastCGI: (dynamic) server "/var/www/wiki/dispatch.fcgi" (pid 323) terminated by calling exit with status '255'


Fuça daqui, fuça de lá, e nada. O Thiago Arrais aparece no meu talk, e eu pergunto a ele. Ele sugere verificar se o path para o interpretador ruby no início do dispatch.fcgi está correto. Verificação feita, tudo correto, nada do rails funcionar no apache2.

Até que eu tive uma epifania: seria isso um problema das quebras de linha (dos x unix)?. Uma rápida verificação no SciTE, dos2unix pra converter as quebras de linha para o formato do unix, e está tudo funcionando. Como num passe de mágica!


Email por Walter Cruz em Programação, Ruby, Rails
Tags: apache, fastcgi, geek, instiki, rails, scite

Avisos Rápidos - 23/03/2007

23/03/2007

Curtas:

  1. Lembram do kodumaro? É um blog colaborativo sobre programação. Ele começou no wordpress, mas já há alguns dias mudou-se para o blogspot. A nova URL é http://kodumaro.blogspot.com/ . Atualizem suas URLS e feeds!
  2. Eu estou com uma porção de idéias de textos e artigos pra postar. Portanto, devo postar algo inédito no kodumaro também, ao invés de manter o reblogging contínuo lá. Portanto, assinem o feed.
  3. Por falar, em feeds, estou redirecionando os feeds do devlog para o feedburner. Assim vai ficar mais fácil contar quantas pessoas ainda tem paciência de assinar meu feed
  4. Outra: como vocês sabe, sou fãs de coisas não muito populares. Gosto do editor de textos SciTE, dos sintetizadores Alesis e do b2evolution, essa engine de blog que move as coisas aqui. Criei um blog específico sobre o b2evolution, onde pretendo divulgar dicas, plugins, e tentar prosseguir com meu projeto para esse ano, que é criar uma comunidade em torno dele no Brasil. Dê uma passadinha lá também: http://b2evolution.waltercruz.com/

Email por Walter Cruz em Avisos
Tags: b2evolution, feedburner, kodumaro, scite

Um ano atrás: Lua

14/11/2006

Há pouco mais de um ano, conheci a linguagem Lua, principalmente devido à minha familiaridade com o SciTE. Na época, cheguei a fazer um bocado de coisas com Lua, mas acabei deixando-a em segundo plano, para usar python e um pouco de ruby.

Não que Lua seja pior que essas linguagens (na verdade, creio que não dá nem pra comparar), mas porque Lua não tinha (e acho que ainda não tem) muitas bibliotecas de fácil instalação. Bibliotecas, tem muitas, mas todas exigem recompilação de código e são um pouco chatas de instalar.

Nessa época, usava Lua, dentre outras coisas, para importar csv's para bancos de dados, por exemplo.

Certa feita, precisei fazer um mirror do glossário de termos legislativos e orçamentários presentes no site da Câmara dos Deputados - apenas dos termos, para inserir em um banco de dados. Com um pouco de ajuda da simpática lista, cheguei no código abaixo:


http = require("socket.http")
local letras = {'a','b','c','d','e','f','g','h','i','j','l','m',
'n','o','p','q','r','s','t','u','v','z'}
local pattern="<tr>.-<h4 class=sessaoPagina>(.-)</h4>.-<td>(.-)</td></tr>"

for __, element in pairs(letras) do
    local page = http.request("http://www2.camara.gov.br/glossario/ " .. element .. ".html")
    --print(page)
        for w, d in string.gfind(page,pattern) do
            print(w)
            print(d)
            print("------------------------------------")
        end
end
 

Algumas particularidades:

  1. letras é uma tabela (array) em Lua. É a estrutura de dados mais usada - principalmente com metatabelas.
  2. pattern é um padrão em Lua. Lua não implementa expressões regulares - uma implementação típica toma cerca de 4000 linhas de código - mais que todas as bibliotecas padrão de lua juntas. (ver: http://www.lua.org/pil/20.1.html Surpreendentemente, os patterns, embora não tão completos quando regex, são muito poderosos. Você pode também baixar, compilar e instalar um módulo de regex.
  3. Observem uma das particularidades de Lua. Uma função pode retornar mais de um valor. Isso fica claro no trecho de string.gfind

Há um texto antigo meu, um pouco desatualizado, que você pode consultar também: Do php para Lua. Um case de sucesso no Brasil é a Fábrica Digital, que tem um CMS - o Publique! - desenvolvido em Lua.

Lua é atualmente a linguagem preferida para ser embarcada. Por exemplo, o editor de textos SciTE traz embutida a linguagem. É a a linguagem mais usada atualmente para scripting de jogos. E além de tudo, brasileira!

Só falta eu tomar vergonha na cara e retomar o projeto de tradução da documentação da linguagem...


Email por Walter Cruz em Lua
Tags: lua, python, ruby, scite