Archive for category Lua
Tutorial: nginx + Lua
Publicado por Lucas Hermann Negri em Linux, Lua, OpenSource em 6, novembro 2009
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 o seguinte conteúdo na seção http->server do arquivo /etc/nginx/conf/nginx.conf :
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!
Publicado por Lucas Hermann Negri em Lua, OpenSource, Softwares em 14, abril 2009
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
Publicado por Lucas Hermann Negri em GTK, Lua, OpenSource em 9, março 2009
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
Publicado por Lucas Hermann Negri em GTK, Lua, OpenSource, Softwares em 19, setembro 2008
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
Publicado por Lucas Hermann Negri em GTK, Lua, OpenSource em 10, setembro 2008
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
Publicado por Lucas Hermann Negri em GTK, Linux, Lua, OpenSource em 7, março 2008
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:
lgui 0.3 e lcairo 0.1
Publicado por Lucas Hermann Negri em Lua, OpenSource em 17, fevereiro 2008
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
Publicado por Lucas Hermann Negri em Lua, OpenSource, Softwares em 10, janeiro 2008
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:
lgui: Bindings do GTK para Lua
Publicado por Lucas Hermann Negri em GTK, Lua, OpenSource em 5, janeiro 2008
(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:
lua-gtk e suas dependências – Arch Linux
Publicado por Lucas Hermann Negri em Linux, Lua, OpenSource em 30, outubro 2007
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 )



