XOOPS Brasil

 

XOOPS Cube Weblog


apache lua php mysql kepler windows

Kepler, plataforma Lua de desenvolvimento Web

kepler - plataforma lua de desenvolvimento web

Quarta-feira, Dezembro 31, 2008
 

apache lua php mysql kepler windows

Fiz um pacote para win32 com Apache v2.2.11.0, PHP 5.2.8, mySQL 5.1.30 e Lua 5.1.2 (com Kepler); todos pre-instalados, e tudo isso em apenas 4.63MB. Acho que este é o primeiro WAMP que tem a linguagem de programação Lua instalada. Coloquei um pequeno exemplo no diretório "www"em que Lua e PHP são utilizadas no mesmo arquivo para formar a frase "hello world" pelo recurso SSI do apache. Não foi um bom exemplo, ainda preciso estudar melhores formas de utilizar essas duas linguagens em um mesmo projeto.

Download:

Assim como os outros pacotes de servidores configurados por mim, este pacote é 100% portável e autônomo: pode ser utilizado em Pen Drives e não precisa ser "instalado", basta descompactar e rodar. Ele não altera o registro do sistema ou qualquer outro arquivo.

Para rodar, basta clicar no arquivo "xoopserver.exe".

Nesta versão, o PhpMyAdmin foi substituído pelo PhpMiniAdmin com o objetivo de economizar espaço. Na próxima versão, atualizarei as versões da Lua, Kepler, e incluirei alguns componentes do PHP. Configurado em 31 de dezembro de 2008.

Marcadores: , , , , , , , ,


Segunda-feira, Janeiro 28, 2008
 

Kepler, plataforma Lua de desenvolvimento Web

Kepler é uma plataforma de desenvolvimento Web e, como tal, oferece recursos que tornam a criação de aplicações Web bem mais fácil do que se fôssemos começar do zero.

Há muitas plataformas de desenvolvimento Web disponíveis no mercado. Por que criar mais uma? Porque nenhuma permite o mesmo equilíbrio entre poder, tamanho e flexibilidade que Kepler. Kepler foi concebido a partir do conceito de SIMPLE: é Simples, Portátil, Leve e Extensível. Isto não quer dizer que só possa ser utilizado para criar aplicações simples. Você pode desenvolver aplicações Web bastante sofisticadas com Kepler. O que queremos dizer então com SIMPLE?

  • Simples: Kepler é fácil de aprender, fácil de implementar e fácil de usar. Desenvolvedores em todo o mundo acusam aumentos dramáticos de produtividade quando utilizam Kepler.
  • Portátil: Kepler pode rodar em praticamente qualquer sistema operacional que tenha um compilador C padrão ANSI. Mas é improvável que você tenha de compilar qualquer coisa: arquivos binários executáveis para a maioria dos principais sistemas operacionais estão disponíveis para download.
  • Leve: Kepler pode ser utilizado mesmo com restrições extremas de memória e CPU. Embora todas plataformas Web do mercado possam ser executadas em computadores poderosos, a maioria nem cogitaria ser instalada num dispositivo móvel ou em hardware customizado. Kepler já foi utilizado para desenvolver aplicações Web completas que rodam em dispositivos de todos tamanhos, desde telefones inteligentes e PDA's até grandes máquinas que usam Windows/Linux/OSX.
  • Extensível: Kepler oferece uma poderosa combinação de componentes de uso geral. Mas, se você quiser, também pode criar seu próprio componente e extender a funcionalidade de Kepler. Se estiver imbuído de espírito comunitário, você ainda pode oferecer o seu componente para fazer parte da plataforma Kepler.

Kepler é software open source que utiliza uma licença do estilo MIT. Isto significa que você não paga absolutamente nada para utilizá-lo e que, ao contrário do que acontece com outras ferramentas open source, você não está sujeito a restrições em cobrar pelos produtos que desenvolver utilizando a plataforma Kepler.

Sobre a Lua e astrônomos

O segredo por trás do Kepler é a linguagem de programação Lua, criada em 1993 na Pontifícia Universidade Católica (PUC) do Rio de Janeiro. Lua segue o conceito SIMPLE, embora este termo não existisse então. Suas características fizeram com que a linguagem se difundisse pelo mundo todo – embora, infelizmente, nem tanto no Brasil – para uma série de aplicações. A indústria americana de jogos de computador adotou Lua, que está presente em jogos como World of Warcraft; a Adobe utiliza Lua em alguns de seus produtos; e softwares embedded, como o do PlayStation, aproveitam a leveza e portabilidade da linguagem.

O Projeto Kepler se formou a partir da percepção de que o Brasil também deveria explorar este recurso nacional. Enxergando o poder da linguagem Lua mas também a dificuldade em criar programas a partir do zero com ela, algumas pessoas decidiram criar uma plataforma que facilitasse a criação de aplicações de nível industrial. Na esperança de que a plataforma gere ondas de crescimento no software nacional, batizaram o projeto com o nome de Johannes Kepler, pioneiro no cálculo das órbitas dos corpos celestes e o primeiro astrônomo a explicar que as marés eram causadas pela lua. Nasceu assim o Projeto Kepler, que conta com o apoio da Fábrica Digital e da PUC-Rio, e que logo recebeu recursos da FINEP e do CNPq.

Kepler em dispositivos portáteis

A plataforma Kepler é extremamente flexível. Por exemplo, a equipe do Projeto Kepler utiliza um webserver num Internet tablet Nokia 770 conectado à rede de um escritório através de Wi-Fi, como mostra a Figura 1. Usuários em PC’s acessam as aplicações que estão num webserver do tamanho de um PDA ligado sem fios à rede local, com desempenho similar ao de um servidor comercial.

wm_28-01-2008pic17.JPG

Figura 1. Internet tablet Nokia 770 rodando o webserver Xavante.

Uma situação em que Kepler se mostra especialmente útil é quando estamos desenvolvendo uma aplicação que será utilizada em dispositivos portáteis que serão utilizados em áreas remotas. Por exemplo, é possível embutir um webserver num dispositivo wireless para que o usuário possa utilizar aplicações Web locais e acessar os dados mesmo quando estiver sem cobertura de Wi-Fi ou GPRS. Quando o dispositivo estiver novamente online os dados são sincronizados com um servidor remoto.

A instalação do Kepler é extremamente leve: ocupa entre menos de 500 kilobytes até cerca de 1 megabyte, dependendo dos módulos de software instalados. Isto representa um gasto de memória bastante inferior ao exigido por plataformas como Java, PHP e Python. O software criado com Kepler tende a ser extremamente rápido e compatível a nível de código com praticamente qualquer dispositivo que se crie. Se você quiser utilizar Kepler com Apache, Microsoft IIS, Tomcat ou Zope, não há problema: Kepler é compatível com todos eles. Mas se quiser utilizá-lo num dispositivo com restrições de memória, a melhor opção provavelmente será o Xavante, o webserver nativo do Kepler.

Brincando com Kepler

Entre no site www.keplerproject.org. Clique o item Download do menu à esquerda. Você será levado para a página do Kepler no LuaForge, onde se encontram as versões disponíveis do Kepler. Para nosso exemplo vamos utilizar a versão para Windows, descrita no LuaForge como “Intel x86”. Vamos então baixar o arquivo, que é um programa convencional de instalação de software, e executá-lo. É recomendável aceitar todas opções default do programa de instalação.

O menu do Windows agora tem um novo item, Kepler, que é um menu com duas opções: Uninstall e Xavante. Vamos acionar o Xavante, que é o webserver nativo do Kepler. Antes, porém, feche qualquer programa que utilize a porta 80, que é a porta default do Xavante. Um exemplo de software popular que utiliza esta porta é o Skype.

Para acionar o Xavante, basta acionar o item correspondente no menu do Windows. Deverá aparecer na sua bandeja um ícone similar à Figura 2. Clicando este item com o botão direito do mouse vemos um menu de opções que permite, entre outras opções, ativar e desativar o Xavante. Se o Xavante estiver rodando, será apresentada a opção Stop Xavante; se ele não estiver ativo aparecerá a opção Start Xavante. Repare que o ícone muda de aparência para indicar quando o Xavante não está ativo.

wm_28-01-2008pic18.JPG

Figura 2. Ícone do Xavante.

Direcione agora seu browser para o seguinte endereço: http://localhost/. Se tudo estiver certo você verá uma tela parecida com a Figura 3. Se não aparecer esta tela é sinal de que algo não está como deveria estar. Se o Xavante estiver no ar (examine o ícone na bandeja para saber), talvez algum aplicativo esteja ocupando a porta 80. Certifique-se de que todos aplicativos que usem esta porta estejam desativados e tente novamente.

wm_28-01-2008pic19.JPG

Figura 3. Tela de abertura do webserver Xavante.

Clique no link Xavante tests. Você cairá numa tela parecida com a Figura 4, que apresenta algumas propriedades do sistema e permite simular a digitação de um nome de usuário e senha.

wm_28-01-2008pic20.JPG

Figura 4. Teste do Xavante

Pronto! Você instalou Kepler e testou seu webserver nativo.

Uma brincadeira mais divertida

Na verdade, o que fizemos até agora não foi muito excitante. O que queremos é desenvolver nossas próprias aplicações Web. Ensinar tudo o que é preciso para desenvolver uma aplicação completa está além do escopo deste artigo, mas podemos apresentar um tutorial simples e direcionar você para os locais onde pode aprender mais.

Vamos primeiro ao tutorial. Será uma versão do tradicional “Hello, World!” com alguma interatividade.

Procure a pasta onde o Kepler foi instalado. Se você aceitou os valores default durante a instalação, esta pasta deve ter endereço similar a C:/Program Files/Kepler. Dentro desta pasta há uma outra pasta, de nome web. Dentro da pasta web crie um arquivo com o conteúdo da Listagem 1 e salve-o com o nome meututor.lp.

wm_28-01-2008pic21.JPG
Listagem 1.
Aplicação simples no Kepler.

Direcione seu browser para http://localhost/hello.lp. Você verá uma tela como a da Figura 5. Coloque seu nome no campo, clique o botão OK e veja o que acontece.


wm_28-01-2008pic22.JPG

Figura 5. Uma primeira aplicação em Kepler

Esta aplicação, como todo “Hello, World”, é um exemplo simplório. Na prática, colocar lógicas de negócio complexas num arquivo .lp (Lua Pages) seria uma solução deselegante por dois motivos: torna difícil a leitura de lógica Lua emaranhada com código HTML; e reduz a modularidade do produto final. O padrão comumente aceito de desenvolvimento no Kepler consiste em fazer páginas LP executarem chamadas a funções externas, geralmente desenvolvidas em Lua.

Os componentes de Kepler

Kepler possui módulos independentes que podem ajudar a incorporar funcionalidades às suas aplicações. Os componentes atualmente disponíveis (além do webserver Xavante, mencionado acima) estão descritos a seguir.

CGILua é uma ferramenta para a criação de páginas dinâmicas e para a manipulação de dados informados via formulários Web. CGILua permite separar a lógica e manipulação de dados da geração das páginas, tornando fácil desenvolver aplicações Web com Lua. Uma das vantagens de CGILua é a abstração do webserver. Você pode desenvolver uma aplicação com CGILua em um webserver e depois executá-la em qualquer outro webserver que suporte CGILua.

Compat-5.1 é um conjunto de arquivos que implementa o modelo de packages de Lua 5.1 em programas desenvolvidos em Lua 5.0.

Copas é um despachante baseado em co-rotinas que pode ser utilizado por servidores do tipo request/response TCP/IP. Um servidor registrado com Copas fornece um tratador para requisições e utiliza as funções de sockets do Copas para enviar as respostas.

LuaExpat é um parser de XML no padrão SAX (Simple API for XML – veja www.saxproject.org) que facilita o processamento de arquivos XML. LuaExpat se baseia na biblioteca Expat (vejawww.libexpat.org).

LuaFileSystem oferece funções complementares relacionadas a sistemas de arquivos. LuaFileSystem fornece uma maneira portátil de acessar a estrutura de diretórios e os atributos dos arquivos armazenados pelo sistema operacional.

LuaLDAP implementa uma interface simples para um cliente LDAP de acordo com o padrão OpenLDAP (veja www.openldap.org). LuaLDAP permite que uma aplicação se conecte a um servidor LDAP e execute operações de busca, adição, comparação, exclusão, alteração e troca de nomes.

LuaLogging permite a geração de mensagens de logging para a console, arquivos, email, sockets ou SQL, sem alteração do código binário. LuaLogging se baseia em log4j (vejahttp://logging.apache.org/log4j/docs/index.html).

LuaJava é uma ferramenta de scripting para Java. Seu objetivo é permitir que scripts escritos em Lua manipulem components escritos em Java através da mesma sintaxe utilizada para acessar os objetos nativos de Lua. LuaJava não requer declarações nem qualquer tipo de pré-processamento. Também permite a Java implementar uma interface em Lua.

LuaSOAP facilita o uso de SOAP (Simple Object Access Protocol) através de uma API extremamente simples que converte tabelas Lua em documentos XML e vice-versa.

LuaSQL permite a conexão com bancos de dados ODBC, ADO, Oracle, MySQL, SQLite, JDBC e PostgreSQL. Através da conexão o usuário pode executar quaisquer comandos SQL e recuperar os resultados linha a linha num cursor.

LuaXMLRPC é uma biblioteca que permite realizar chamadas RPC através de XML-RPC (veja www.xmlrpc.com). LuaXMLRPC provê uma API simples e uma camada de abstração sobre XML, evitando assim a complexidade de ter de manipular strings que representam estruturas de dados.

LuaZIP é uma biblioteca que permite a manipulação de arquivos em formato ZIP. Com LuaZip um programa escrito em Lua pode ler os arquivos armazenados em arquivos ZIP através de uma API bastante similar à biblioteca padrão para I/O de Lua.

Orbit permite o desenvolvimento de aplicações Web dentro do paradigma Model-View-Controller (MVC). Um controller Orbit é um módulo Lua, ações são funções dentro deste controller e views são Lua Pages. Orbit permite a utilização de um mesmo modelo com diversos sistemas de BD sem que seja necessário se preocupar com os detalhes de cada um, o que facilita o desenvolvimento e aumenta a portabilidade dos sistemas que utilizam bancos de dados.

Rings permite criar novos estados Lua dentro de Lua. Um estado é um ambiente de execução com suas próprias variáveis e valores. Rings também prove uma forma simples comunicação entre o estado criador (mestre) e os estados criados (escravos).

VEnv é o Lua Virtual Environment, uma biblioteca que provê uma maneira simples de executar uma função Lua num ambiente estanque, sem afetar o ambiente original.

Xavante foi visto no nosso tutorial. Ele é um webserver de arquitetura modular baseada em handlers e que segue o padrão HTTP 1.1.

Além dos componentes acima, Kepler também oferece ferramentas que facilitam o desenvolvimento de aplicações. Segue uma descrição das ferramentas que atualmente fazem parte do Kepler.

LuaProfiler ajuda a encontrar gargalos de desempenho em programas Lua. LuaProfiler gera um log de todas chamadas a funções, com os respectivos tempos de execução. O log pode ser importado para uma planilha eletrônica para análise.

RemDebug é um debugger permite controlar remotamente a execução de um programa Lua, incluir pontos de parade e inspecionar o estado atual do programa. RemDebug também pode ser usado para depurar scripts CGILua.

Como Kepler é um projeto open source, novos componentes e ferramentas são criados continuamente por desenvolvedores externos. O site LuaForge (www.luaforge.net) também contém um grande número de componentes de uso livre que facilitam a criação de aplicações com Kepler.

No mundo da Lua

Nosso tutorial e o quadro Os componentes de Kepler deixam evidente que a principal habilidade necessária para criar aplicações Kepler – presumindo experiência anterior em desenvolvimento Web – é conhecimento da linguagem Lua.

Quer dizer que para usar Kepler preciso aprender uma linguagem nova? Sim, é isto mesmo. O que permite ao Kepler ser SIMPLE (veja a explicação do conceito no início do artigo) é a plataforma se basear em Lua. O interpretador Lua é portátil e leve, o que permite ao Kepler ter estas mesmas características. Além disto, Lua é simples de aprender e simples de usar.

À primeira vista Lua parece ser apenas uma entre tantas linguagens de programação. É possível aprendê-la em poucos dias. Quando começamos a programar em Lua, contudo, vamos percebendo aos poucos que a linguagem permite executar tarefas bastante complexas com código notavelmente enxuto. Lua incorpora a filosofia SIMPLE ao extremo. Por exemplo, só tem um tipo de estrutura de dados, a tabela, que entretanto pode ser utilizada para implementar arrays, matrizes, listas, pilhas, listas, conjuntos, dicionários e praticamente qualquer outro tipo de estrutura.

Lua permite ao programador se manter completamente isolado do hardware. Isto é uma conseqüência da portabilidade da linguagem. Não se pensa em termos de ponteiros, caracteres delimitadores de strings ou outros detalhes de baixo nível. O gerenciamento de memória é automático.

Além disso, Lua tem mecanismos que tornam muito fácil estender sua sintaxe. Por exemplo, funções são variáveis de primeiro nível, o que permite, entre outras coisas, passar uma função como parâmetro para outra função.

Lua é uma linguagem de cola (glue language), ou seja, ela foi projetada para se integrar bem com outras linguagens e para unir components desenvolvidos em linguagens diferentes. Já foi integrada com C, C++, Fortran, Java, Smalltalk, Ada, C#, Perl e Ruby e outras linguagens.

Lua é uma linguagem orientada a objetos? Estritamente falando, não: é uma linguagem procedural. Mas provê mecanismos que permitem, através de técnicas simples e de domínio público, implementar os mecanismos de orientação a objetos.

Vale a pena conhecer esta curiosa linguagem.

O site oficial de Lua é www.lua.org. Lá você encontra a documentação formal da linguagem. Outro endereço que contém recursos bastante úteis, inclusive um curso fácil de Lua, é o do site do grupo de usuários de Lua: www.lua-users.org.

Para quem realmente se interessar pelo assunto, recomendamos o livro Programming in Lua, de Roberto Ierusalimschy, um dos criadores da linguagem. A primeira edição, publicada em 2003 e, disponível na Amazon (www.amazon.com), descreve a versão 5.0 de Lua; a segunda, publicada em 2006 e disponível no site do Kepler (www.keplerproject.org), descreve a versão 5.1. Atualmente (abril de 2006) Kepler utiliza a versão 5.0 de Lua, mas a migração para a versão 5.1 está prevista para o futuro próximo.

Duas observações surpreendentes saltam aos olhos quando procuramos o livro de Lua na Amazon: a primeira é que, embora a linguagem tenha sido criada no Brasil, o livro foi escrito em inglês; a segunda é a quantidade de livros que incluem Lua entre seus assuntos. A explicação de ambos fenômenos é a mesma. Como falamos no início, Lua é uma linguagem popular no mundo, mas nem tanto no Brasil. Um dos motivos para a criação de Kepler é tentar reverter esta situação.

Procuram-se desenvolvedores

Kepler é uma iniciativa open source. Apesar do apoio que tem recebido, a colaboração de bons desenvolvedores sempre é bem-vinda. Caso você tenha interesse de participar deste projeto, entre em contato através do email info-NO-SPAM-THANKS@keplerproject.org. Ainda há muito o que fazer.

Conclusões

Plataformas de desenvolvimento Web oferecem componentes que tornam a criação de aplicações Web bem mais fácil do que começando do zero. Diversas plataformas de desenvolvimento Web excelentes estão disponíveis, mas nenhuma permite o mesmo equilíbrio entre poder, tamanho e flexibilidade que Kepler. Kepler é simples, portátil, leve e extensível.

Kepler é uma escolha particularmente boa quando queremos implementar aplicações Web que irão rodar em ambientes com limitações rigorosas de memória e velocidade de CPU, como PDA’s, telefones celulares e consoles de jogos. Também é altamente recomendável quando queremos garantir a portabilidade das aplicações para uma gama heterogênea de equipamentos e sistemas operacionais.

Vimos quão fácil é instalar e usar Kepler, e como o desenvolvimento de páginas dinâmicas é simples com a utilização da linguagem de programação Lua.

Partes deste artigo foram adaptadas da documentação do Kepler e de seus componentes, com a autorização do Projeto Kepler.


Pacote Nokia 770 com Wi-Fi

Uma forma conveniente de adquirir o Nokia 770 é através do pacote Go wireless at home, que inclui o Internet tablet Nokia 770 e um roteador ou gateway Linksys.

Mais detalhes em www.internettablettalk.com/content/view/173/2.


CRÉDITOS: Carlos Accioly.

Marcadores: , , , , , , , ,


 

kepler - plataforma lua de desenvolvimento web

Kepler é uma plataforma de desenvolvimento Web e, como tal, oferece recursos que tornam a criação de aplicações Web bem mais fácil do que se fôssemos começar do zero.

Há muitas plataformas de desenvolvimento Web disponíveis no mercado. Por que criar mais uma? Porque nenhuma permite o mesmo equilíbrio entre poder, tamanho e flexibilidade que Kepler. Kepler foi concebido a partir do conceito de SIMPLE: é Simples, Portátil, Leve e Extensível. Isto não quer dizer que só possa ser utilizado para criar aplicações simples. Você pode desenvolver aplicações Web bastante sofisticadas com Kepler. O que queremos dizer então com SIMPLE?

q Simples: Kepler é fácil de aprender, fácil de implementar e fácil de usar. Desenvolvedores em todo o mundo acusam aumentos dramáticos de produtividade quando utilizam Kepler.

q Portátil: Kepler pode rodar em praticamente qualquer sistema operacional que tenha um compilador C padrão ANSI. Mas é improvável que você tenha de compilar qualquer coisa: arquivos binários executáveis para a maioria dos principais sistemas operacionais estão disponíveis para download.

q Leve: Kepler pode ser utilizado mesmo com restrições extremas de memória e CPU. Embora todas plataformas Web do mercado possam ser executadas em computadores poderosos, a maioria nem cogitaria ser instalada num dispositivo móvel ou em hardware customizado. Kepler já foi utilizado para desenvolver aplicações Web completas que rodam em dispositivos de todos tamanhos, desde telefones inteligentes e PDA's até grandes máquinas que usam Windows/Linux/OSX.

q Extensível: Kepler oferece uma poderosa combinação de componentes de uso geral. Mas, se você quiser, também pode criar seu próprio componente e extender a funcionalidade de Kepler. Se estiver imbuído de espírito comunitário, você ainda pode oferecer o seu componente para fazer parte da plataforma Kepler.

Kepler é software open source que utiliza uma licença do estilo MIT. Isto significa que você não paga absolutamente nada para utilizá-lo e que, ao contrário do que acontece com outras ferramentas open source, você não está sujeito a restrições em cobrar pelos produtos que desenvolver utilizando a plataforma Kepler.

Sobre a Lua e astrônomos

O segredo por trás do Kepler é a linguagem de programação Lua, criada em 1993 na Pontifícia Universidade Católica (PUC) do Rio de Janeiro. Lua segue o conceito SIMPLE, embora este termo não existisse então. Suas características fizeram com que a linguagem se difundisse pelo mundo todo – embora, infelizmente, nem tanto no Brasil – para uma série de aplicações. A indústria americana de jogos de computador adotou Lua, que está presente em jogos como World of Warcraft; a Adobe utiliza Lua em alguns de seus produtos; e softwares embedded, como o do PlayStation, aproveitam a leveza e portabilidade da linguagem.

O Projeto Kepler se formou a partir da percepção de que o Brasil também deveria explorar este recurso nacional. Enxergando o poder da linguagem Lua mas também a dificuldade em criar programas a partir do zero com ela, algumas pessoas decidiram criar uma plataforma que facilitasse a criação de aplicações de nível industrial. Na esperança de que a plataforma gere ondas de crescimento no software nacional, batizaram o projeto com o nome de Johannes Kepler, pioneiro no cálculo das órbitas dos corpos celestes e o primeiro astrônomo a explicar que as marés eram causadas pela lua. Nasceu assim o Projeto Kepler, que conta com o apoio da Fábrica Digital e da PUC-Rio, e que logo recebeu recursos da FINEP e do CNPq.

Kepler em dispositivos portáteis

A plataforma Kepler é extremamente flexível. Por exemplo, a equipe do Projeto Kepler utiliza um webserver num Internet tablet Nokia 770 conectado à rede de um escritório através de Wi-Fi, como mostra a Figura 1. Usuários em PC’s acessam as aplicações que estão num webserver do tamanho de um PDA ligado sem fios à rede local, com desempenho similar ao de um servidor comercial.

wm_28-01-2008pic17.JPG

Figura 1. Internet tablet Nokia 770 rodando o webserver Xavante

Uma situação em que Kepler se mostra especialmente útil é quando estamos desenvolvendo uma aplicação que será utilizada em dispositivos portáteis que serão utilizados em áreas remotas. Por exemplo, é possível embutir um webserver num dispositivo wireless para que o usuário possa utilizar aplicações Web locais e acessar os dados mesmo quando estiver sem cobertura de Wi-Fi ou GPRS. Quando o dispositivo estiver novamente online os dados são sincronizados com um servidor remoto.

A instalação do Kepler é extremamente leve: ocupa entre menos de 500 kilobytes até cerca de 1 megabyte, dependendo dos módulos de software instalados. Isto representa um gasto de memória bastante inferior ao exigido por plataformas como Java, PHP e Python. O software criado com Kepler tende a ser extremamente rápido e compatível a nível de código com praticamente qualquer dispositivo que se crie. Se você quiser utilizar Kepler com Apache, Microsoft IIS, Tomcat ou Zope, não há problema: Kepler é compatível com todos eles. Mas se quiser utilizá-lo num dispositivo com restrições de memória, a melhor opção provavelmente será o Xavante, o webserver nativo do Kepler.

Brincando com Kepler

Entre no site www.keplerproject.org. Clique o item Download do menu à esquerda. Você será levado para a página do Kepler no LuaForge, onde se encontram as versões disponíveis do Kepler. Para nosso exemplo vamos utilizar a versão para Windows, descrita no LuaForge como “Intel x86”. Vamos então baixar o arquivo, que é um programa convencional de instalação de software, e executá-lo. É recomendável aceitar todas opções default do programa de instalação.

O menu do Windows agora tem um novo item, Kepler, que é um menu com duas opções: Uninstall e Xavante. Vamos acionar o Xavante, que é o webserver nativo do Kepler. Antes, porém, feche qualquer programa que utilize a porta 80, que é a porta default do Xavante. Um exemplo de software popular que utiliza esta porta é o Skype.

Para acionar o Xavante, basta acionar o item correspondente no menu do Windows. Deverá aparecer na sua bandeja um ícone similar à Figura 2. Clicando este item com o botão direito do mouse vemos um menu de opções que permite, entre outras opções, ativar e desativar o Xavante. Se o Xavante estiver rodando, será apresentada a opção Stop Xavante; se ele não estiver ativo aparecerá a opção Start Xavante. Repare que o ícone muda de aparência para indicar quando o Xavante não está ativo.

wm_28-01-2008pic18.JPG

Figura 2. Ícone do Xavante

Direcione agora seu browser para o seguinte endereço: http://localhost/. Se tudo estiver certo você verá uma tela parecida com a Figura 3. Se não aparecer esta tela é sinal de que algo não está como deveria estar. Se o Xavante estiver no ar (examine o ícone na bandeja para saber), talvez algum aplicativo esteja ocupando a porta 80. Certifique-se de que todos aplicativos que usem esta porta estejam desativados e tente novamente.

wm_28-01-2008pic19.JPG

Figura 3. Tela de abertura do webserver Xavante

Clique no link Xavante tests. Você cairá numa tela parecida com a Figura 4, que apresenta algumas propriedades do sistema e permite simular a digitação de um nome de usuário e senha.

wm_28-01-2008pic20.JPG

Figura 4. Teste do Xavante

Pronto! Você instalou Kepler e testou seu webserver nativo.

Uma brincadeira mais divertida

Na verdade, o que fizemos até agora não foi muito excitante. O que queremos é desenvolver nossas próprias aplicações Web. Ensinar tudo o que é preciso para desenvolver uma aplicação completa está além do escopo deste artigo, mas podemos apresentar um tutorial simples e direcionar você para os locais onde pode aprender mais.

Vamos primeiro ao tutorial. Será uma versão do tradicional “Hello, World!” com alguma interatividade.

Procure a pasta onde o Kepler foi instalado. Se você aceitou os valores default durante a instalação, esta pasta deve ter endereço similar a C:/Program Files/Kepler. Dentro desta pasta há uma outra pasta, de nome web. Dentro da pasta web crie um arquivo com o conteúdo da Listagem 1 e salve-o com o nome meututor.lp.

wm_28-01-2008pic21.JPG
Listagem 1.
Aplicação simples no Kepler

Direcione seu browser para http://localhost/hello.lp. Você verá uma tela como a da Figura 5. Coloque seu nome no campo, clique o botão OK e veja o que acontece.


wm_28-01-2008pic22.JPG

Figura 5. Uma primeira aplicação em Kepler

Esta aplicação, como todo “Hello, World”, é um exemplo simplório. Na prática, colocar lógicas de negócio complexas num arquivo .lp (Lua Pages) seria uma solução deselegante por dois motivos: torna difícil a leitura de lógica Lua emaranhada com código HTML; e reduz a modularidade do produto final. O padrão comumente aceito de desenvolvimento no Kepler consiste em fazer páginas LP executarem chamadas a funções externas, geralmente desenvolvidas em Lua.

Os componentes de Kepler

Kepler possui módulos independentes que podem ajudar a incorporar funcionalidades às suas aplicações. Os componentes atualmente disponíveis (além do webserver Xavante, mencionado acima) estão descritos a seguir.

CGILua é uma ferramenta para a criação de páginas dinâmicas e para a manipulação de dados informados via formulários Web. CGILua permite separar a lógica e manipulação de dados da geração das páginas, tornando fácil desenvolver aplicações Web com Lua. Uma das vantagens de CGILua é a abstração do webserver. Você pode desenvolver uma aplicação com CGILua em um webserver e depois executá-la em qualquer outro webserver que suporte CGILua.

Compat-5.1 é um conjunto de arquivos que implementa o modelo de packages de Lua 5.1 em programas desenvolvidos em Lua 5.0.

Copas é um despachante baseado em co-rotinas que pode ser utilizado por servidores do tipo request/response TCP/IP. Um servidor registrado com Copas fornece um tratador para requisições e utiliza as funções de sockets do Copas para enviar as respostas.

LuaExpat é um parser de XML no padrão SAX (Simple API for XML – veja www.saxproject.org) que facilita o processamento de arquivos XML. LuaExpat se baseia na biblioteca Expat (vejawww.libexpat.org).

LuaFileSystem oferece funções complementares relacionadas a sistemas de arquivos. LuaFileSystem fornece uma maneira portátil de acessar a estrutura de diretórios e os atributos dos arquivos armazenados pelo sistema operacional.

LuaLDAP implementa uma interface simples para um cliente LDAP de acordo com o padrão OpenLDAP (veja www.openldap.org). LuaLDAP permite que uma aplicação se conecte a um servidor LDAP e execute operações de busca, adição, comparação, exclusão, alteração e troca de nomes.

LuaLogging permite a geração de mensagens de logging para a console, arquivos, email, sockets ou SQL, sem alteração do código binário. LuaLogging se baseia em log4j (vejahttp://logging.apache.org/log4j/docs/index.html).

LuaJava é uma ferramenta de scripting para Java. Seu objetivo é permitir que scripts escritos em Lua manipulem components escritos em Java através da mesma sintaxe utilizada para acessar os objetos nativos de Lua. LuaJava não requer declarações nem qualquer tipo de pré-processamento. Também permite a Java implementar uma interface em Lua.

LuaSOAP facilita o uso de SOAP (Simple Object Access Protocol) através de uma API extremamente simples que converte tabelas Lua em documentos XML e vice-versa.

LuaSQL permite a conexão com bancos de dados ODBC, ADO, Oracle, MySQL, SQLite, JDBC e PostgreSQL. Através da conexão o usuário pode executar quaisquer comandos SQL e recuperar os resultados linha a linha num cursor.

LuaXMLRPC é uma biblioteca que permite realizar chamadas RPC através de XML-RPC (veja www.xmlrpc.com). LuaXMLRPC provê uma API simples e uma camada de abstração sobre XML, evitando assim a complexidade de ter de manipular strings que representam estruturas de dados.

LuaZIP é uma biblioteca que permite a manipulação de arquivos em formato ZIP. Com LuaZip um programa escrito em Lua pode ler os arquivos armazenados em arquivos ZIP através de uma API bastante similar à biblioteca padrão para I/O de Lua.

Orbit permite o desenvolvimento de aplicações Web dentro do paradigma Model-View-Controller (MVC). Um controller Orbit é um módulo Lua, ações são funções dentro deste controller e views são Lua Pages. Orbit permite a utilização de um mesmo modelo com diversos sistemas de BD sem que seja necessário se preocupar com os detalhes de cada um, o que facilita o desenvolvimento e aumenta a portabilidade dos sistemas que utilizam bancos de dados.

Rings permite criar novos estados Lua dentro de Lua. Um estado é um ambiente de execução com suas próprias variáveis e valores. Rings também prove uma forma simples comunicação entre o estado criador (mestre) e os estados criados (escravos).

VEnv é o Lua Virtual Environment, uma biblioteca que provê uma maneira simples de executar uma função Lua num ambiente estanque, sem afetar o ambiente original.

Xavante foi visto no nosso tutorial. Ele é um webserver de arquitetura modular baseada em handlers e que segue o padrão HTTP 1.1.

Além dos componentes acima, Kepler também oferece ferramentas que facilitam o desenvolvimento de aplicações. Segue uma descrição das ferramentas que atualmente fazem parte do Kepler.

LuaProfiler ajuda a encontrar gargalos de desempenho em programas Lua. LuaProfiler gera um log de todas chamadas a funções, com os respectivos tempos de execução. O log pode ser importado para uma planilha eletrônica para análise.

RemDebug é um debugger permite controlar remotamente a execução de um programa Lua, incluir pontos de parade e inspecionar o estado atual do programa. RemDebug também pode ser usado para depurar scripts CGILua.

Como Kepler é um projeto open source, novos componentes e ferramentas são criados continuamente por desenvolvedores externos. O site LuaForge (www.luaforge.net) também contém um grande número de componentes de uso livre que facilitam a criação de aplicações com Kepler.

No mundo da Lua

Nosso tutorial e o quadro Os componentes de Kepler deixam evidente que a principal habilidade necessária para criar aplicações Kepler – presumindo experiência anterior em desenvolvimento Web – é conhecimento da linguagem Lua.

Quer dizer que para usar Kepler preciso aprender uma linguagem nova? Sim, é isto mesmo. O que permite ao Kepler ser SIMPLE (veja a explicação do conceito no início do artigo) é a plataforma se basear em Lua. O interpretador Lua é portátil e leve, o que permite ao Kepler ter estas mesmas características. Além disto, Lua é simples de aprender e simples de usar.

À primeira vista Lua parece ser apenas uma entre tantas linguagens de programação. É possível aprendê-la em poucos dias. Quando começamos a programar em Lua, contudo, vamos percebendo aos poucos que a linguagem permite executar tarefas bastante complexas com código notavelmente enxuto. Lua incorpora a filosofia SIMPLE ao extremo. Por exemplo, só tem um tipo de estrutura de dados, a tabela, que entretanto pode ser utilizada para implementar arrays, matrizes, listas, pilhas, listas, conjuntos, dicionários e praticamente qualquer outro tipo de estrutura.

Lua permite ao programador se manter completamente isolado do hardware. Isto é uma conseqüência da portabilidade da linguagem. Não se pensa em termos de ponteiros, caracteres delimitadores de strings ou outros detalhes de baixo nível. O gerenciamento de memória é automático.

Além disso, Lua tem mecanismos que tornam muito fácil estender sua sintaxe. Por exemplo, funções são variáveis de primeiro nível, o que permite, entre outras coisas, passar uma função como parâmetro para outra função.

Lua é uma linguagem de cola (glue language), ou seja, ela foi projetada para se integrar bem com outras linguagens e para unir components desenvolvidos em linguagens diferentes. Já foi integrada com C, C++, Fortran, Java, Smalltalk, Ada, C#, Perl e Ruby e outras linguagens.

Lua é uma linguagem orientada a objetos? Estritamente falando, não: é uma linguagem procedural. Mas provê mecanismos que permitem, através de técnicas simples e de domínio público, implementar os mecanismos de orientação a objetos.

Vale a pena conhecer esta curiosa linguagem.

O site oficial de Lua é www.lua.org. Lá você encontra a documentação formal da linguagem. Outro endereço que contém recursos bastante úteis, inclusive um curso fácil de Lua, é o do site do grupo de usuários de Lua: www.lua-users.org.

Para quem realmente se interessar pelo assunto, recomendamos o livro Programming in Lua, de Roberto Ierusalimschy, um dos criadores da linguagem. A primeira edição, publicada em 2003 e, disponível na Amazon (www.amazon.com), descreve a versão 5.0 de Lua; a segunda, publicada em 2006 e disponível no site do Kepler (www.keplerproject.org), descreve a versão 5.1. Atualmente (abril de 2006) Kepler utiliza a versão 5.0 de Lua, mas a migração para a versão 5.1 está prevista para o futuro próximo.

Duas observações surpreendentes saltam aos olhos quando procuramos o livro de Lua na Amazon: a primeira é que, embora a linguagem tenha sido criada no Brasil, o livro foi escrito em inglês; a segunda é a quantidade de livros que incluem Lua entre seus assuntos. A explicação de ambos fenômenos é a mesma. Como falamos no início, Lua é uma linguagem popular no mundo, mas nem tanto no Brasil. Um dos motivos para a criação de Kepler é tentar reverter esta situação.

Procuram-se desenvolvedores

Kepler é uma iniciativa open source. Apesar do apoio que tem recebido, a colaboração de bons desenvolvedores sempre é bem-vinda. Caso você tenha interesse de participar deste projeto, entre em contato através do email info-NO-SPAM-THANKS@keplerproject.org. Ainda há muito o que fazer.

Conclusões

Plataformas de desenvolvimento Web oferecem componentes que tornam a criação de aplicações Web bem mais fácil do que começando do zero. Diversas plataformas de desenvolvimento Web excelentes estão disponíveis, mas nenhuma permite o mesmo equilíbrio entre poder, tamanho e flexibilidade que Kepler. Kepler é simples, portátil, leve e extensível.

Kepler é uma escolha particularmente boa quando queremos implementar aplicações Web que irão rodar em ambientes com limitações rigorosas de memória e velocidade de CPU, como PDA’s, telefones celulares e consoles de jogos. Também é altamente recomendável quando queremos garantir a portabilidade das aplicações para uma gama heterogênea de equipamentos e sistemas operacionais.

Vimos quão fácil é instalar e usar Kepler, e como o desenvolvimento de páginas dinâmicas é simples com a utilização da linguagem de programação Lua.

Partes deste artigo foram adaptadas da documentação do Kepler e de seus componentes, com a autorização do Projeto Kepler.

Pacote Nokia 770 com Wi-Fi

Uma forma conveniente de adquirir o Nokia 770 é através do pacote Go wireless at home, que inclui o Internet tablet Nokia 770 e um roteador ou gateway Linksys.

Mais detalhes em www.internettablettalk.com/content/view/173/2.

CRÉDITOS: Carlos Accioly autor deste artigo, a revista WebMobile e o Projeto Kepler não têm nenhuma afiliação com a Nokia ou com a Linksys.

Marcadores: , , , , ,


Arquivos

XOOPS Cube é um sistema de gerenciamento e publicação de conteúdo para a criação de portais, comunidades virtuais, fotologs, weblogs, videologs, etc. Pode ser gerenciado por qualquer pessoa sem conhecimento em programação, e representa a solução ideal para quem não pode ou não quer depender de terceiros para criar e administrar o seu próprio portal. Possui milhares de recursos de redação, edição e publicação de conteúdo já incorporados e a custo zero!

This page is powered by Blogger. Isn't yours?

Assinar Postagens [Atom]


Vídeos sobre Kepler:




KEPLER-186F Planet For ALIEN 2014 - Documentary

KEPLER-186F Planet For ALIEN 2014 - Documentary

https://www.youtube.com/watch?v=ZsVGut7G-dU http://www.youtube.com/user/truedocumentaryhd If Alien exist where do they live and how do they live? Scientists ...

Por: Sish Advexon
Duração: 54.20 minutos.
Visualizações: 123383
Avaliação: 4.82387



孫燕姿

孫燕姿"克卜勒"Kepler 官方MV

一閃一閃亮晶晶孫燕姿克卜勒用歌聲佈置你的星空iTunes 數位專輯下載:http://smarturl.it/Kepler_Album 數位專輯線上搶聽: KKBOX : http://www.kkbox.com/tw/tc/album/ZOWSNRDU7-YyII0FA9Bw0091-index.ht...

Por: Universaltwn /Universal Taiwan 台灣環球唱片
Duração: 4.33 minutos.
Visualizações: 2304019
Avaliação: 4.9181085



孫燕姿

孫燕姿"克卜勒"官方歌詞版MV (Kepler official lyric video)

在眾多孤星之中我還是找得到你孫燕姿克卜勒iTunes 數位專輯下載:http://smarturl.it/Kepler_Album 數位專輯線上搶聽: KKBOX : http://www.kkbox.com/tw/tc/album/ZOWSNRDU7-YyII0FA9Bw0091-index.html ...

Por: Universaltwn /Universal Taiwan 台灣環球唱片
Duração: 4.23 minutos.
Visualizações: 698635
Avaliação: 4.9471364



Planet Hunting life in Space Kepler

Planet Hunting life in Space Kepler

They Believe Kepler will find over 50 Alien Earths Fair use notice.

Por: Horsefarmer1000
Duração: 45.82 minutos.
Visualizações: 79302
Avaliação: 4.7829456



Video News File: Kepler Discovers First Earth-size Planet in the Habitable Zone of Another Star

Video News File: Kepler Discovers First Earth-size Planet in the Habitable Zone of Another Star

[Video News File; media resource preview] NASA's Kepler Space Telescope has discovered the first validated Earth-size planet orbiting in the habitable zone o...

Por: NASA Ames Research Center
Duração: 5.47 minutos.
Visualizações: 319669
Avaliação: 4.7958117



The Kepler Mission - Finding the Next Earth Latest News!!!

The Kepler Mission - Finding the Next Earth Latest News!!!


Por: Ben Goor Levy
Duração: 88.65 minutos.
Visualizações: 16572
Avaliação: 4.860465



Kepler Makes Discoveries Inside the Habitable Zone

Kepler Makes Discoveries Inside the Habitable Zone

NASA's Kepler mission has discovered two new planetary systems that include three super-Earth-size planets in the "habitable zone," the range of distance fro...

Por: NASA
Duração: 66.50 minutos.
Visualizações: 71135
Avaliação: 4.903904