ForkinRio Python – 13/06/2010

segunda-feira, 14 junho 2010

Galera,

Rolou ontem mais um ForkinRio Python. A ideia foi de fazê-lo majoritariamente remoto, portanto, só estávam presentes de corpo e alma:

Nos encontramos às 10:00 da manhã, entretanto, perdemos muito tempo tentando achar uma maneira alternativa ao dimdim para poder realizar a reunião remotamente. Testamos primeiro uma outra ferramenta online para conferências que o Mário havia pesquisado. A ferramenta é a tokbox. É uma ferramenta online que, para até 20 pessoas na conferência, pode ser usada de graça. Para esse número de pessoas, achamos bastante razoável a usabilidade, o problema é que ela não tinha screen sharing. Depois testamos uma conferência via Skype, mas havia o mesmo problema. No Skype não poderíamos usar câmeras e dividir a tela. Por fim, tivemos a ideia de fazer um screen cast, mas já estava bem tarde e resolvemos começar o trabalho.

Não progredimos muito. Primeiro porque bastante tempo foi gasto para o Diego e eu entendermos o código, já que não havíamos participado dos últimos Forks. Depois, como alguns tinham compromissos mais tarde, não poderiam demorar muito.

O Mário nos explicou as ideias definidas no último de primeiro separar os métodos e depois encapsulá-los em classes. Mas, achamos melhor, antes disso fazer um ajuste fino nos métodos já definidos. Como antes tudo era um código só, ainda havia muito lixo legado em alguns métodos. Além disso, haviam algumas (várias) variáveis e chamadas de métodos que possuíam nomes que não imprimia valor nenhum ao programador que lê. Por último, os arquivos HTML estavam uma zona no que diz respeito a identação. Como todo programador gasta mais tempo lendo código do que escrevendo, nós optamos por tornar o código tanto das interfaces como os de algum métodos mais legível.

O resultado está neste repositório no Github. Aprendemos bastante sobre a maneira que o CherryPy dialoga para montar os fluxos e também o modo que os arquivos de template fazem para acessar variáveis e terem códigos Python dentro deles. Houve uma crítica ferrenha à tal modo e algumas comprações com o modo que o Django e o Web2py dialoga com os templates.

Para o próximo encontro, nos comprometemos em continuar essa refatoração. Pretendemos terminá-la para definirmos quais serão os próximos passos do Fork. Como no próximo domingo teremos jogo do Brasil na Copa do Mundo, o encontro fica para o domingo seguinte. Então, dia 26 de Junho nos encontramos para trocar mais uma bolinha sobre Python.

Até a próxima,

Bernardo Fontes

Anúncios

ForkinRio Erlang funcional em todos os sentidos

quinta-feira, 3 junho 2010

Na terça-feria dia 01/06/2010, começou mais um ForkinRio, depois do Fork de Python e do Fork de Rails, o assunto da vez na pauta de estudo é Erlang.

A idéia nasceu com o Alessandro Martins e o Vanderson “Argentino” Mota, e logo em seguida surgiram mais pessoas interessadas na idéia de estudar uma liguagem funcional.
O pessoal notou que era uma boa oportunidade e propôs mais um Fork dessa vez de erlang.

Como foi o primeiro encontro?

Não houve pré definição de nada, apenas marcamos um dia e horário, e fomo tocar o barco.

Em um primeiro momento o Alessandro fez uma introdução sobre a liguangem que pode ser resumida em:

1. Foi criada na Ericson.

2. O foco do erlang é na concorrência, ser distribuida e tolerante a falhas.

3. É uma liguagem funcional.

4. O CouchDB uma das ferramentas mais faladas do momento, tem seu core feito em Erlang.

Em seguida partimos para o código em si para conhecer como é essa tal de erlang.
Logo no início da códificação descobrimos algumas coisas interessantes, erlang tal qual java, é compilada e o arquivo a ser salvo deve ter a definição do nome do módulo (namespace) igual ao nome do arquivo.
Como no caso abaixo que o arquivo se chama factorial.erl.


-module(factorial).
-export([fac/1]).

fac(0) -> 1;
fac(X) -> X * fac(X-1).

Outro dado que pode ser conferido é o fato de você ter que esportar suas funções e sua quantidade de parâmetros usando:


-export([nome_funcao/qtd_parametro])

Mais um fato interessante, é em relação as variáveis, que não têm seu valor variável, elas são variáveis de associação única (single assignment variable), ou seja o primeiro valor que for atribuido a ela, será assumido e não poderá ou aceitará qualquer outro valor. Outro detalhe importante é que as variáveis devem ser definidas com a primeira letra maiúscula.

Teste você mesmo em seu console:


1> K = 3.
3
2> K = 5.
**exception error: no match of right hand side value 5

A brincadeira foi basicamente esta. Fizemos algumas funções simples de dobro, metade, PA e alguns códigos na base da tentativa e erro somente por curiosidade.

Quem pensou funcional no primeiro encontro ou não foi: ;p

Anna Cruz
Alessandro Martins
Arley Lobato
Carlos Flores
Claudio Berrondo
Israel Teixeira (atrasadão)
Rodrigo Pinto
Vinícius Sales

Para saber mais informações sobre erlang, você pode conferir no próprio site, e também temos algumas referências já em português de quem já andou estudando erlang, confira nos blogs, do Code Zone, do
Caio Ariede e também em algumas anotações do Nando Vieria que ele postou no github.

No próximo encontro no dia 08/06/2010, falaremos sobre primitivas, então se pretende ir ao próximo é legal dar uma olhada para não ficar perdido ;p

Abraços,

Rodrigo Pinto;