tag:blogger.com,1999:blog-61982845437766673912009-06-23T09:54:46.065-07:00LuaWsgi ChangeLogVersões, exemplos e notíciasLa Batalemahttp://www.blogger.com/profile/14265747724618147106noreply@blogger.comBlogger11125tag:blogger.com,1999:blog-6198284543776667391.post-76752595269284699812008-09-16T17:18:00.000-07:002008-09-17T17:55:21.484-07:00Kraken 8.09Nova versão do <a href="http://www.assembla.com/wiki/show/kraken-lua">Kraken</a>!<br /><br />Use <a href="http://subversion.tigris.org/">Subversion</a> para obter:<br /><pre><code>svn co http://svn2.assembla.com/svn/kraken-lua/tags/8.09 kraken-8.09.0</code></pre><br /><br />Walter, foi mal a falta de comentários! As principais mudanças foram nos arquivos <a href="http://trac2.assembla.com/kraken-lua/changeset?new=trunk%2FMakefile.in%4014&old=trunk%2FMakefile.in%406"><code>Makefile.in</code></a>, <a href="http://trac2.assembla.com/kraken-lua/changeset?new=trunk%2Fsrc%2Fkforker.cc%4018&old=trunk%2Fsrc%2Fkforker.cc%4010"><code>kforker.cc</code></a> e <a href="http://trac2.assembla.com/kraken-lua/changeset?new=trunk%2Fsrc%2Fkraken.cc%4018&old=trunk%2Fsrc%2Fkraken.cc%4010"><code>kraken.cc</code></a>, além de ter trocado a extensão <code>.hpp</code> por <code>.h</code> dos cabeçalhos.<br /><br />Basicamente foram corrigidos alguns <em>bugs</em>, ajustado o <em>casting</em> e implementada função para obter o UID de um usuário a partir do <em>login</em>.<br /><br />[]'s<br />Cacilhas, La Batalema<br /><br />PS: Já estou trabalhando nos códigos de LuaWsgi para o novo Kraken.<div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6198284543776667391-7675259526928469981?l=luawsgi.blogspot.com'/></div>La Batalemahttp://www.blogger.com/profile/14265747724618147106noreply@blogger.com0tag:blogger.com,1999:blog-6198284543776667391.post-57493905094483583202008-05-06T07:40:00.000-07:002008-05-06T09:19:24.924-07:00Kraken no OhlohO <a href="http://www.assembla.com/wiki/show/kraken-lua">Kraken</a> agora está no <a href="http://www.ohloh.net/">Ohloh, <em>the open source network</em></a>!<br /><br />Vejam <a href="http://www.ohloh.net/projects/kraken/">aqui</a>, comentários <a href="http://www.ohloh.net/projects/kraken/factoids/">aqui</a>.<br /><br />Obrigado, <a href="http://waltercruz.com/">Walter</a>!<br /><br />[]'s<br />Cacilhas, La Batalema<div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6198284543776667391-5749390509448358320?l=luawsgi.blogspot.com'/></div>La Batalemahttp://www.blogger.com/profile/14265747724618147106noreply@blogger.com1tag:blogger.com,1999:blog-6198284543776667391.post-60561116593634387402008-04-30T15:57:00.000-07:002008-09-17T17:56:09.880-07:00Kraken 8.01Lancei o Kraken em <a href="http://subversion.tigris.org/">Subversion</a> no <a href="http://www.assembla.com/">Assembla</a>.<br /><br />No momento em que posto este artigo, a versão no <em>head</em> é 8.01. O endereço da página do Kraken é <a href="http://www.assembla.com/wiki/show/kraken-lua">http://www.assembla.com/wiki/show/kraken-lua</a>. Para obter os códigos do repositório use o comando:<br /><pre><code>svn co http://svn2.assembla.com/svn/kraken-lua/tags/8.01 kraken-8.01.0</code></pre><br /><br />Infelizmente não há ainda uma versão de LuaWsgi portada para esse novo Kraken.<br /><br />[]'s<br />Cacilhas, La Batalema<div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6198284543776667391-6056111659363438740?l=luawsgi.blogspot.com'/></div>La Batalemahttp://www.blogger.com/profile/14265747724618147106noreply@blogger.com2tag:blogger.com,1999:blog-6198284543776667391.post-79010561322607963292007-10-14T17:02:00.000-07:002007-10-14T17:04:40.704-07:00Kraken 7.10Primeiramente gostaria de pedir desculpas pelo tempo sem postar aqui. Estive um tanto ocupado com uma série de contratempos, mas agora estou de volta!<br /><br />Tomei esse último feriadão para mexer no código do Kraken. Infelizmente não consegui fazê-lo funcionar com <em>threads</em>, pois preciso clonar um estado Lua – e sinceramente não sei como fazer isso (ainda) – portanto ele faz <em>fork</em> por enquanto.<br /><br />De qualquer forma, segue a prematura versão 7.10 do Kraken e do LuaWsgi, mas cuidado! Deve haver <em>bugs</em> não detectados.<br /><br />Os fontes estão aqui:<br /><ul><li><a href="http://luaforge.net/frs/download.php/2660/kraken-7.10.0.tar.gz">Kraken 7.10</a></li> <li><a href="http://luaforge.net/frs/download.php/2661/luawsgi-7.10.0.tar.gz">LuaWsgi 7.10</a></li></ul><br /><br />Para os felizardos usuários de Slackware, seguem os pacotes (testados na versão 11.0):<br /><ul><li><a href="http://luaforge.net/frs/download.php/2662/kraken-7.10.0-i386-1.tgz">Kraken 7.10</a></li> <li><a href="http://luaforge.net/frs/download.php/2663/luawsgi-7.10.0-i386-1.tgz">LuaWsgi 7.10</a></li></ul><br /><br />Obrigado!<br /><br />[]'s<br />Cacilhas<div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6198284543776667391-7901056132260796329?l=luawsgi.blogspot.com'/></div>La Batalemahttp://www.blogger.com/profile/14265747724618147106noreply@blogger.com0tag:blogger.com,1999:blog-6198284543776667391.post-65581392520808170202007-08-19T09:42:00.000-07:002007-08-20T05:04:47.618-07:00KrakenComo LuaWsgi é meu projeto de conclusão de curso da faculdade, ainda vai levar algum tempo para entrar em fase <em>beta</em>. Enquanto isso, modificações mais pesadas pode ser feitas.<br /><br />E é o que tenho feito.<br /><br />Por exemplo, o <code>wsgi.listener</code> passou a se chamar <strong>Kraken</strong>, nome escolhido num debate entre <a href="http://montegasppa.blogspot.com/">mim</a>, <a href="http://nauapoteotica.blogspot.com/">Krisnatágoras Araújo</a>, <a href="http://claudiotorcato.wordpress.com/">Claudio Torcato</a>, <a href="http://weblook.blogspot.com/">Ulisses Campos</a> e <a href="http://waltercruz.com/">Walter Cruz</a>.<br /><br />Estou reescrevendo o Kraken em C com dois pontos em vista: <sup>1</sup>reduzir a quantidade de dependências e <sup>2</sup>adaptar seu funcionamento para ambiente multiprocessado, inicialmente só de memória compartilhada. O suporte a memória distribuída será inicialmente fornecido por <a href="http://openmosix.sourceforge.net/">OpenMosix</a>.<br /><br />Após a defesa do trabalho de conclusão, pretendo implementar no Kraken suporte nativo a ambiente multiprocessado de memória distribuída, mas esse ainda é um sonho distante.<br /><br />Aproveitando a deixa, estou escolhendo outro nome pro módulo que trata do protocolo HTTP, atualmente <code>wsgi.httpd</code>. Sugestões são bem vindas!<br /><br />Gostaria que fosse algo que tenha a haver com <a href="http://pt.wikipedia.org/wiki/Kraken">Kraken</a> – sugestão de procura: <a href="http://pt.wikipedia.org/wiki/Categoria:Mitologia_nórdica">mitologia nórdica</a>.<br /><br />Então nova versão de LuaWsgi demorará um pouco, pois estou reescrevendo o Kraken em C.<br /><br />[]'s<br />Cacilhas<div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6198284543776667391-6558139252080817020?l=luawsgi.blogspot.com'/></div>La Batalemahttp://www.blogger.com/profile/14265747724618147106noreply@blogger.com1tag:blogger.com,1999:blog-6198284543776667391.post-74279126795759239412007-07-07T18:39:00.000-07:002007-07-08T11:09:27.961-07:00Pacotes para Slackware 11.0Os seguintes apontadores levam aos pacotes necessários para instalar LuaWsgi e suas dependências sobre Slackware 11.0 (outras versões não foram testadas):<br /><ul><li><a href="http://maisideias.com.br/~rodrigocacilhas/luawsgi/lua-5.1.2-i486-1rmc.tgz">Lua 5.1</a></li> <li><a href="http://maisideias.com.br/~rodrigocacilhas/luawsgi/luasocket-2.0.1-i386-1rmc.tgz">LuaSocket 2.0</a></li> <li><a href="http://maisideias.com.br/~rodrigocacilhas/luawsgi/luaposix-5.1.200703-i386-1rmc.tgz">LuaPOSIX</a></li> <li><a href="http://maisideias.com.br/~rodrigocacilhas/luawsgi/lua51pthread-0.1-i386-1rmc.tgz">lua51pthread 0.1</a></li> <li><a href="http://luaforge.net/frs/download.php/2509/luawsgi-7.07.0-i386-1rmc.tgz">LuaWsgi</a> (ou <a href="http://maisideias.com.br/~rodrigocacilhas/luawsgi/luawsgi-7.07.0-i386-1rmc.tgz">aqui</a>)</li></ul><br /><br />Sintam-se convidados a criar pacotes RPM e APT (<code>.deb</code>). =)<br /><br />[]'s<br />Cacilhas<div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6198284543776667391-7427912679575923941?l=luawsgi.blogspot.com'/></div>La Batalemahttp://www.blogger.com/profile/14265747724618147106noreply@blogger.com1tag:blogger.com,1999:blog-6198284543776667391.post-1652239831635712202007-07-06T05:31:00.000-07:002007-07-06T05:34:05.547-07:00Relação entre WSGI e LuaWsgiO <a href="http://pythonologia.org/">Osvaldo</a> comentou comigo que <a href="http://www.python.org/dev/peps/pep-0333/">WSGI</a> não cuida do baixo nível, sendo apenas uma interface de programação, uma camada de abstração do servidor <em>web</em> em si.<br /><br />Praticamente um protocolo de interface.<br /><br />Eu sei disso, mas <a href="http://luaforge.net/projects/wsgi/">LuaWsgi</a> não é <strong>apenas</strong> WSGI…<br /><br />WSGI é tão somente o motivo primordial para LuaWsgi.<br /><br />Para cima de WSGI, LuaWsgi implementa módulos de suporte a <a href="http://www.ietf.org/rfc/rfc2965.txt"><em>cookies</em></a>, sessão, <a href="http://pt.wikipedia.org/wiki/AJAX_(programação)">AJAX</a>, modelos (por enquanto apenas <a href="http://www.keplerproject.org/cgilua/manual.html#templates">LuaPage</a>, porque é fácil) e (por enquanto só) dois <em>middlewares</em> prontos, autenticação e publicador.<br /><br />Para baixo de WSGI, LuaWsgi possui uma implementação de servidor <a href="http://www.ietf.org/rfc/rfc2616.txt">HTTP</a> sobre um módulo gerenciador de <em>daemon</em> TCP para múltiplas conexões, <code>wsgi.listener</code>, que pretende tirar o melhor proveito possível de um ambiente multiprocessado (essa parte está em construção).<br /><br />Nessa direção ainda falta criar interfaces com outros servidores <em>web</em>, a começar pelo <a href="http://httpd.apache.org/">Apache</a>.<br /><br />Portanto LuaWsgi <strong>é</strong> WSGI, mas não somente… é mais que isso.<br /><br />[]'s<br />Cacilhas<div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6198284543776667391-165223983163571220?l=luawsgi.blogspot.com'/></div>La Batalemahttp://www.blogger.com/profile/14265747724618147106noreply@blogger.com0tag:blogger.com,1999:blog-6198284543776667391.post-82079527801721356392007-07-05T06:17:00.000-07:002007-07-05T07:48:41.494-07:00O que você NÃO gosta…Duas coisas me motivaram a escrever <a href="http://luaforge.net/projects/wsgi/">LuaWsgi</a>:<br /><ol><li>Distração do <em>stress</em> pelo qual eu passava (sim! Programo para relaxar!);</li> <li>Havia coisas em outras ferramentas das quais eu não gostava.</li></ol><br /><br />Em Lua, o melhor projeto de <em>framework</em> para <em>web</em> que há atualmente é <a href="http://www.keplerproject.org/">Kepler</a>.<br /><br />No entanto há coisas em Kepler das quais eu pessoalmente não gosto. O legal do desenvolvimento colaborativo é que as pessoas podem ajudar a mudar essas coisas.<br /><br />Por exemplo, coisas que não são legais em Kepler 1.0 e 1.1, cujas mudanças já estão previstas para a versão 1.2:<br /><ul><li>O controle de sessão está na camada mais abstrata (<a href="http://www.keplerproject.org/cgilua/">CGILua</a>). Será passado para camadas mais baixas na versão 1.2.</li> <li>A interface <a href="http://www.keplerproject.org/cgilua/sapi.html">SAPI</a> será substituída por outra mais programável, <a href="http://kepler-tmp.dreamhosters.com/en/WSAPI">WSAPI</a> (ou KAPI, o pessoal ainda está discutindo o nome), que possuirá uma camada superior mais amigável que CGILua, chamada <a href="http://kepler-tmp.dreamhosters.com/en/Orbit">Orbit</a>.</li> <li>O módulo facilitador para AJAX (<a href="http://www.keplerproject.org/xavante/sajax.html">Sajax</a>) não trabalha com sessão e está implementado na camada mais abstrata (CGILua). Na versão 1.2 será implementado usando WSAPI e de forma a permitir trabalhar com sessão.</li></ul><br /><br />É claro que é necessário um certo nível de controle para um projeto não virar um caos. Esse controle é ao mesmo tempo o ponto forte e o ponto fraco do desenvolvimento colaborativo.<br /><br />Por um lado o controle mantém foco e concisão no projeto. Por outro lado é impossível agradar a gregos e troianos, e esse foco pode não ser o que você procura.<br /><br />Chegamos à beleza do código aberto: se você não gosta de algo, pode fazer diferente por conta própria. O nome disso é <strong>diversidade</strong>.<br /><br />Diversidade é o que garante continuidade na Natureza e o homem só é feliz em seus intentos quando aprende com a Natureza.<br /><br />Por exemplo, <a href="http://www.keplerproject.org/xavante/">Xavante</a> – servidor <em>web</em> de Kepler – tem como foco permanecer pequeno e ser apenas um ambiente de desenvolvimento, como o objeto <code>httpserver</code> de <a href="http://pythonpaste.org/">Paste</a>.<br /><br />Assim Xavante e <a href="http://www.keplerproject.org/copas/">Copas</a> são mantidos pequenos, rodando em um só processo, sem <em>multithreading</em> e sem criação de processos filho – usam uma combinação de <a href="http://www.lua.org/pil/9.html">corrotinas</a> e <a href="http://www.lua.org/pil/9.4.html">tempo de expiração</a> de <a href="http://www.cs.princeton.edu/~diego/professional/luasocket/"><em>sockets</em></a>.<br /><br />Nada contra, é um foco. Os coordenadores do projeto oferecem interfaces com outros servidores <em>web</em> para uso em produção.<br /><br />Mas eu quero mais… e se você também quer mais, pode ajudar a melhorar LuaWsgi!<br /><br />O foco de LuaWsgi é tirar proveito máximo de um ambiente multiprocessado, de memória compartilhada ou distribuída.<br /><br />A idéia é que LuaWsgi use <code>pthread</code> para fazer <em>multithreading</em> (que em ambiente GNU/Linux já tira proveito de multiprocessamento <em>per si</em>) e crie processo filho (<em>fork</em>) quando necessário (LuaWsgi ainda não faz isso).<br /><br />Chegamos aqui ao <strong>objetivo desta postagem</strong>: quais são <strong>suas</strong> sugestões para melhorar LuaWsgi?<br /><br />O que você <strong>não gosta</strong> em LuaWsgi?<br /><br />O que você não gosta em <strong>outros</strong> <em>frameworks</em>, não pode mudar e gostaria de ver implementando em LuaWsgi?<br /><br />Vamos criar um <em>TODO</em> de coisas legais que podem ser implementadas em LuaWsgi. Você não precisa colaborar com código (se tiver algum código, ele será analisado com zelo, claro), ideias bastam – seja para <strong>acrescentar</strong>, seja para <strong>retirar</strong>.<br /><br />Precisamos de ideias nesse momento.<br /><br />[]'s<br />Cacilhas<div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6198284543776667391-8207952780172135639?l=luawsgi.blogspot.com'/></div>La Batalemahttp://www.blogger.com/profile/14265747724618147106noreply@blogger.com4tag:blogger.com,1999:blog-6198284543776667391.post-82913062351314549462007-07-03T18:22:00.000-07:002007-07-06T05:28:32.293-07:00VersionamentoPerguntaram-me por que a primeira versão de LuaWsgi é 7.06.0.<br /><br />Foi adotado um esquema de versionamento um tanto peculiar, mas similar ao adotado pelo <a href="http://www.ubuntu.com/">Ubuntu</a>.<br /><br />O número maior de versão indica o ano (2007 → 7), o número menor indica o mês (junho → 06) e o número de <em>release</em> inicia em zero e é incrementado a cada lançamento no mesmo mês.<br /><br />Então 7.06.0 indica o primeiro <em>release</em> de junho de 2007 e 7.06.1 o segundo <em>release</em> do mesmo mês.<br /><br />[]'s<br />Cacilhas<div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6198284543776667391-8291306235131454946?l=luawsgi.blogspot.com'/></div>La Batalemahttp://www.blogger.com/profile/14265747724618147106noreply@blogger.com0tag:blogger.com,1999:blog-6198284543776667391.post-88532188381243704512007-07-03T07:49:00.000-07:002007-07-03T08:01:13.033-07:00RefatoraçãoInicialmente escrevi LuaWsgi para trabalhar associado ao <a href="http://www.keplerproject.org/">Kepler</a>.<br /><br />Assim, na versão 7.06.x, LuaWsgi tem como dependências Lua, LuaSocket, LuaFileSystem, Copas e lua-unistd.<br /><br />No entanto mudei de idéia e estou refatorando o código.<br /><br />As dependências passarão a ser nas versões posteriores:<br /><ul><li><a href="http://www.lua.org/">Lua</a></li> <li><a href="http://www.cs.princeton.edu/~diego/professional/luasocket/">LuaSocket</a></li> <li><a href="http://alua.inf.puc-rio.br/ftp/libs/posix-5.1.tar.gz">LuaPOSIX</a></li> <li><a href="http://lua51pthread.luaforge.net/">lua51pthread</a></li></ul><br /><br />Já tenho ele refatorado para funcionar assim, no entanto quero separar o tratamento do protocolo HTTP do tratamento de WSGI antes de liberar nova versão.<br /><br />[]'s<br />Cacilhas<div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6198284543776667391-8853218838124370451?l=luawsgi.blogspot.com'/></div>La Batalemahttp://www.blogger.com/profile/14265747724618147106noreply@blogger.com0tag:blogger.com,1999:blog-6198284543776667391.post-2701334630148821702007-07-03T07:37:00.000-07:002007-07-03T07:41:39.187-07:00IntroduçãoEste <em>blog</em> tem o objetivo de manter <em>changelogs</em> e notícias sobre o projeto <a href="http://luaforge.net/projects/wsgi/">LuaWsgi</a>.<br /><br />Como o público alvo principal do projeto são programadores lusófonos, este <em>blog</em> terá como linguagem preferencial o Português, mas algumas postagens podem eventualmente ser feitos em outras línguas <strong>se</strong> necessário.<br /><br />[]'s<br />Cacilhas<div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6198284543776667391-270133463014882170?l=luawsgi.blogspot.com'/></div>La Batalemahttp://www.blogger.com/profile/14265747724618147106noreply@blogger.com0