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 &

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.
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.
Muito interessante.
Mas não conheco o Seaside (ainda).
É uma alternativa bem interessante mesmo ao desenvolvimento Web.