terça-feira, 17 de agosto de 2010

Awful 0.25

Há pouco foi lançada a versão 0.25 de awful. A seguir são descritas as novidades.

O servidor awful admite novos parâmetros de linha de comando: --development-mode, --ip-address e --port. Os parâmetros --development-mode e --port servem, respectivamente, para fazer com que o servidor escute nos dados endereço IP e porta.

O parâmetro --development-mode ativa o modo de desenvolvimento de awful. Neste modo, funcionalidades como o Web REPL e o Session inspector são automaticamente ativadas. O caminho /reload também é automaticamente criado para que as aplicações possam ser recarregadas sem que seja necessário reiniciar o servidor. No modo de desenvolvimento, mensagens de erro das aplicações são exibidas no cliente (e.g., navegador). Abaixo está um exemplo (erro.scm):
#!/usr/bin/awful

(use awful)

(define-page (main-page-path)
(lambda ()
(++ "Oops " 'erro)))


Para executar no modo de desenvolvimento:
$ awful --development-mode erro.scm

Ao acessar http://localhost:8080/ a mensagem de erro do screenshot abaixo é exibida no navegador, seguida de um link para o Web REPL.



Quando executado em modo de desenvolvimento, o parâmetro development-mode? tem como valor #t.

Outra novidade é o parâmetro awful-response-headers o qual permite ajustar os campos do cabeçalho de resposta para o cliente. Abaixo está um exemplo de um procedimento para associar URIs a respostas JSON:
#!/usr/bin/awful

(use awful)

(define (define-json path body)
(define-page path
(lambda ()
(awful-response-headers '((content-type "text/json")))
(body))
no-template: #t))

(define-json (main-page-path)
(lambda ()
"{a: 1}"))


A menos que explicitamente fornecido, awful calcula automaticamente o tamanho da resposta e o atribui ao campo Content-Length.

Hoje também disponibilizei um pequeno texto com instruções sobre como instalar awful em sistemas Unix[-like].

2 comentários:

Vilson Vieira disse...

Olá Mario!

Parabéns pelo awful, é realmente maravilhosa a forma como você está simplificando o desenvolvimento web com Scheme. Funcionalidades que sempre pensei para um framework e inveja de outros como Seaside em Smalltalk (o web-repl está ficando muito legal!).

Documentação impecável também. Se não te conhecesse me surpreenderia :-)

Abraços amigo!

Mario Domenech Goulart disse...

Alô Vilson

Obrigado pelos comentários. Fico feliz por saber que estás gostando do desenvolvimento de awful.

Programação para a web é uma tristeza mesmo, o que torna o desenvolvimento de awful dureza. Por outro lado, o uso de awful tem facilitado bastante o desenvolvimento de coisas para a web, então o esforço de alguma forma tem sido recompensado.

Tenho me preocupado em fornecer uma documentação minimamente decente. Um dos motivos é eu mesmo tê-la disponível para consulta, pois seguidamente não lembro como fazer algumas coisas. :-) A título de curiosidade, a documentação é quase duas vezes maior (em bytes) do que o tamanho do código.

O código é pequeno. No total, aplicação e extensão somam 800 linhas de código. No entanto, awful depende de várias outras extensões (em http://tests.call-cc.org/2010/08/18/salmonella-report/dep-graphs/awful.png há uma figura mostrando o grafo de dependências).

Abraço.