Arquivo para a categoria 'Lua'

Tutorial: nginx + Lua

Objetivo: configurar um servidor web que sirva conteúdo dinâmico utilizando a linguagem de programação Lua.
Pilha: Arch Linux, nginx, wsapi, fastcgi e Lua.

1º Passo: instalação dos pacotes

# pacman -Sy nginx fcgi
$ yaourt -S wsapi spawn-fcgi

2º Passo: configuração do nginx (web server)

Adicionar:

location ~ \.lua$ {
    root html;
    fastcgi_pass 127.0.0.1:9000;
    fastcgi_index  index.lua;
    fastcgi_param SCRIPT_FILENAME /srv/http/nginx$fastcgi_script_name;
    include fastcgi_params;
}

3º Passo: Hello World

Criar o arquivo /srv/http/nginx/index.lua com o seguinte conteúdo:

require('wsapi.response')
require('wsapi.request')

return function(env)
    local resp = wsapi.response.new()
    resp:write('Hello world!')
    return resp:finish()
end

A cada requisição, a função retornada pelo script é executada (o script só é carregado uma vez por instância).

4º Passo: ativar instâncias do FastCGI

$ sudo spawn-fcgi -F 4 -p 9000 -f /usr/bin/wsapi.fcgi

F (fork) é o número de filhos, p é a porta a ser utilizada e f o lançador.

5º Passo: teste:

$ sudo /etc/rc.d/nginx start
URL de acesso: localhost

Pronto.

lgob 9.04!

No post anterior eu descrevi o projeto lgob. Agora anuncio a primeira versão ‘estável’, a 9.04 (optei por este tipo de versionamento, pois não faz sentido continuar com o 0.1, 0.2 e etc).

Mais informações em: http://oproj.tuxfamily.org .

lgob – Bindings para Lua

A um ano atŕas, eu publiquei bindings para Lua das bibliotecas GTK+, cairo, entre outras, no http://oproj.tuxfamily.org . Decidi automatizar a tarefa, escrevendo um gerador de código que lê informações dos arquivos “.gir” do projeto gobject-instrospection e gera código para exportar classes, funções e enumerações.

O projeto foi nomeado como lgob (lua gobject), e está disponível (via svn) em: http://svn.tuxfamily.org/viewvc.cgi/oproj_oprojsvn/lgob/ .

As vantagens da nova abordagem incluem: uma maior cobertura da API, maior facilidade para mudanças, e geração de código para versões específicas.

Novo site

O novo wiki, agora utilizando o http://www.dokuwiki.org/ (que de ruim só tem o nome) já esta estruturado e contendo um primeiro esforço para documentar os projetos.

A wiki pode ser acessada pelo endereço http://oproj.tuxfamily.org.

Status dos projetos

Ontem o site onde hospedo meus projetos, http://oproj.tuxfanily.org, foi crackeado.
Removi tudo o que restou, e substitui o sistema de wiki. Agora estou escrevendo a documentação direto na wiki, mas ainda vai demorar algum tempo até que esteja tudo organizado.

Os releases dos projetos não foram prejudicados, pois estão em um repositório separado. E falando em releases, liberei hoje uma nova versão do lobj e do lgui. Salvo pequenas mudanças e correções de possíveis bugs, estas devem as últimas versões antes de uma versão estável.

lgui 0.6 e ldraw 0.3

Obs.: Um pouco atrazado, pois já publiquei estas versões a um bom tempo, mas:

Uma nova versão dos bindings do GTK+2.0 para Lua (lgui) e do cairo (ldraw) estão disponíveis para download.
Alguns screenshoots:

ss1

ss3ss2

lgui 0.3 e lcairo 0.1

Voltei de férias! Estes três dias pós-férias foram bem produtivos. Fiz um “gerador” que organiza as funções do lgui de maneira a tornar a sintaxe orientada a objeto:

Exemplo:

require(“lguiOO”)

local w = lgui.Window.new()
w:set(“title”, “Olá mundo OO!”, “window-position”, lgui.WIN_POS_CENTER)
w:connect(“delete-event”, lgui.gtkQuit)
w:showAll()
lgui.gtkMain()

Também fiz bindings do cairo, que podem ser utilizados sozinhos ou integrados ao lgui (só as funções básicas foram feitas até agora, tá bem no início).

lgui 0.2

Outro release público. Deve consertar todos os bugs que eu encontrei e adicionar mais algumas coisas principais que faltavam (GtkComboBox e GtkTable). Agora é férias! Daqui um mês volto a trabalhar nele hehe.

Para teste, fiz uma pequena aplicação “CRUD” com postgresql.

Resultado:

ss

lgui: Bindings do GTK para Lua

(Atenção: Post antigo, houvera mudanças significativas no projeto).

A um tempo atrás, comecei a criar um binding do GTK para Lua. Atualmente, ele cobre 90% do que é realmente usado, e é compacto e simples (<60kbs, compilado como um módulo). Compilado e testado com GTK 2.12, para Linux e MS-Windows.
O código fonte já está no CVS. (não existe mais, ver http://oproj.tuxfamily.org)

-> Exemplo de uso:

#! /usr/bin/env lua

require(“lgui”)
lgui.export()

local window = windowNew()
local hbox = hboxNew(true, 5)
local b1, b2 = buttonNewFromStock(“gtk-ok”), buttonNewFromStock(“gtk-cancel”)

containerAdd(hbox, b1, b2)
containerAdd(window, hbox)

set(window, “title”, “Hello World”, “window-position”, WIN_POS_CENTER)

connect(window, “delete-event”, gtkQuit)
connect(b1, “clicked”, print, “Button 1 clicked!”)

widgetShowAll(window)
gtkMain()

-> Resultado:

SS

lua-gtk e suas dependências – Arch Linux

Terminei de montar os pacotes do lua-gtk (bindings do gtk para Lua) e suas dependências. Deu um trabalho danado, pois muita coisa teve que ser mudada para se tornar compilável com os pacotes do Arch.

Os 4 já estão no AUR (as outras dependências já foram empacotadas por outros):

- bitlib (manipulação de bits em Lua)
- cmph (biblioteca de hashing escrita em C) *
- lua-expat (bindings  do expat para Lua)
- lua-gtk (enfim!)

* Nota.: Apesar de estar empacotado, não configurei o lua-gtk para utilizá-lo. Quando eu tiver mais tempo eu tento novamente!

Lembrando que o lua-gtk ainda está em estado alfa, e possui alguns bugs (a versão atual, a 0.6, é considerada pelo desenvolvedor como uma versão de desenvolvimento, equanto que a versão 0.5 já se encontra compilada para Linux e Windows no site do projeto no luaforge.org )

Próxima Página »