| Autor |
Mensagem |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 19/05/2010 21:12:36
|
peczenyj
Moderador
![[Avatar]](/images/avatar/299dc35e747eb77177d9cea10a802da2.jpg)
Membro desde: 26/03/2006 23:25:37
Mensagens: 3191
Localização: Rio de Janeiro
Offline
|
Senhores,
Criei uma pequena DSL em Ruby para lidar com eventos que acontecem com determinada frequencia.
Coloquei no github e é possivel instalar via gem (frequency-dsl)
http://github.com/peczenyj/Frequency
É bem simples, always e never são bem claros até certo ponto mas quero documentar melhor.
sometimes, normally e rarely executam o bloco de codigo passado com 50%, 75% e 25% de chance (valores que podem ser alterados)
Imagino que um dos usos pode ser uma aplicação que em dada configuração pode fazer sempre, nunca ou com determinada probabilidade.
Fiz para exercitar a criação de gems e para brincar mesmo, ficou bacana e legivel.
Sugestões?
This message was edited 1 time. Last update was at 19/05/2010 21:13:54
|
http://pacman.blog.br
'Não importa quanto alguém se dedique à tarefa. Ninguém consegue fazer a água da cascata cair para cima.' |
|
|
 |
|
|
![[Post New]](/templates/default/images/icon_minipost_new.gif) 20/05/2010 14:26:47
|
mateusbrum
JavaBaby
![[Avatar]](/images/avatar/be6ea238d9be0fc60080a6f8a8188817.png)
Membro desde: 21/01/2007 22:55:29
Mensagens: 84
Offline
|
Para que serve ?
|
Mateus Henrique Brum
Analista Programador Java
Sun Certified Java Programmer 6.0
Sun Certified Web Component Developer 5.0 |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 20/05/2010 17:12:03
|
peczenyj
Moderador
![[Avatar]](/images/avatar/299dc35e747eb77177d9cea10a802da2.jpg)
Membro desde: 26/03/2006 23:25:37
Mensagens: 3191
Localização: Rio de Janeiro
Offline
|
Boa pergunta.
Imagina que vc quer fazer algo com uma dada porcentagem de chance, tipo 10%
Onde vc gostaria de fazer isso... imagine que vc quer testar uma nova funcionalidade mas vc não quer que todo mundo seja beta-tester, apenas 10% da galera (que é um numero arbitrario). Baseado no feedback desses 10% vc pode decidir por habilitar isso pra todo mundo ou não.
Seria algo como
Pensei em usar de forma que vc leia de um arquivo de configuração se determinadas funcionalidades devem ser sempre (always), nunca (never) ou raramente (rarely).
Normalmente a gente faz o que quando precisa fazer isso?
Porem este código não é semantico o suficiente se vc não tiver uma base adequada de matematica (e saber como o Kernel.rand() funciona, o que retorna, et). Isto
É um pouco mais legivel. O objetivo das DSLs é diminuir o ruido no código de forma que vc leia e seja mais proximo de uma linguagem natural -- o rails, o rspec e outros frameworks como o Sinatra abusam de DSLs.
Eu acho que o fabiokung uma vez mostrou uma DSL em Ruby para vc gerar html, semelhante a mostrada aqui:
/manifestonaweb.wordpress.com/2009/05/26/o-estado-da-arte-da-dsl-em-ruby/
|
http://pacman.blog.br
'Não importa quanto alguém se dedique à tarefa. Ninguém consegue fazer a água da cascata cair para cima.' |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 07/06/2010 10:33:36
|
dlt
JavaEvangelist
![[Avatar]](/images/avatar/f8decd07ac3bcdb30bc816319f3287de.png)
Membro desde: 20/12/2007 16:30:29
Mensagens: 367
Localização: Belo Horizonte
Offline
|
Ideia legal peczenyj!
Clonei seu repositório e coloquei em um gist uma outra versão da sua DSL, com algumas sugestões. Os specs ainda estão passando.
http://gist.github.com/428690
Uma dica para deixar o output do seus specs mais legíveis é colocar um arquivo spec.opts dentro do diretório spec com opcoes para o formato do output. Eu gosto de deixar o meu assim:
|
"It goes against the grain of modern education to teach children to program. What fun is there in making plans, acquiring discipline in organizing thoughts, devoting attention to detail and learning to be self-critical?" - Alan Perlis |
|
|
 |
|
|