The Seaside Bookshelf
Para quem tem curiosidade de saber como é uma aplicação Seaside depois de ler tanto sobre o assunto aqui, estou disponibilizando o código inicial de um experimento meu: um pequeno sistema para guardar informações sobre os livros que estou lendo, quero ler ou já li.
A propósito, antes que alguém pergunte, já passo minhas desculpas ao Caffo pela cópia explícita do formato que ele usa. É claro que a dele é bem mais bonita–e bem mais rápida no momento.
Alguns pontos sobre o código que está rodando no servidor como demonstração:
- Essa é uma versão alpha. Não espere sutilezas no código;
- O aplicativo depende de uma instância do OODBMS GOODS. Os dados dessa instância podem ser configurados na própria aplicação;
- O login é uma gambiarra terrível. Eu comecei a fazer um sistema de usuário, fiquei com preguiça e fixei em um único usuário embora o modelo esteja lá para suporte futuro;
- A versão no servidor é lenta, muito lenta. Eu não estou usando nenhuma das técnicas usuais de deployment e o servidor onde a aplicação está é muito pequeno;
- A aplicação está armazenando quase tudo em memória no momento e gerando os thumbnails on-the-fly, o que piora as coisas;
- O código é específico do Squeak.
Dito isso, o sistema ilustra o fluxo básico de uma aplicação Seaside e o uso de Magritte para a modelagem de objetos. Com isso dá para ter uma idéia de como o Seaside diferente dos demais frameworks Web.
O código pode ser obtido nos endereços abaixo:
- Código Base
- Adaptações do Magritte (gosto pessoal)
Para quem quer aprender como configurar uma VM Squeak para rodar os exemplos, em fiz um screencast sobre o assunto há um tempo atrás. Para uma imagem base, eu recomendo a Squeak-Web do Damien Cassou. Com ela, basta carregar o GOODS.
Dúvidas, sugestões, críticas e indicações veladas (ou explícitas) de como o código é péssimo podem ser feitos na área de comentários.
Atualização: Para configurar o GOODS sob o Linux, o processo é simples:
- Baixe e descompacte o código da última versão.
- Rode ./config no diretório para gerar o Makefile do sistema.
- Rode make para compilar
- Se necessário, ajuste Makefile.usr para indicar os caminhos de instalação que você deseja.
- Rode sudo make install para instalar
O arquivo de configuração que eu estou usando é o seguinte (bookshelf.cfg):
1
0:127.0.0.1:9081
O arquivo de opções do banco é o seguinte (bookshelf.srv):
server.admin_telnet_port="127.0.0.1:8081"
Para rodar, algo como o seguinte, onde bookshelf é o arquivo bookshelf.cfg:
sudo /opt/local/bin/goodsrv bookshelf &

February 14th, 2008 at 11:57 am
Nao precisa se desculpar, o formato e’ bastante simples e eu nao inventei nada de diferente nele.
BTW eu estou portando o meu bookqueue para merb - nao preciso de todo o ‘poder’ do rails e quero otimizar ao maximo a performance como experimento. Depois conto os resultados.
February 14th, 2008 at 12:20 pm
Opa, obrigado! Eu tinha certeza que você não ia se importar mas sabe como é.
Eu ainda estou aprendendo as mudanças que foram feitas no Seaside do 2.6 para o 2.8. E com o 2.9 vindo aí, ainda tenho que otimizar outras coisas. Ao contrário do Rails, o Seaside ainda está em muito em fluxo.
E eu também duvido que uma aplicação Seaside consiga superar uma Rails em performance bruta em hardware pequeno, especialmente sobre o Merb. Seaside é bom, mas tem seus custos.
February 15th, 2008 at 11:13 am
Muito interessante.
Mas não conheco o Seaside (ainda).
February 19th, 2008 at 7:55 pm
É uma alternativa bem interessante mesmo ao desenvolvimento Web.