Arquivo do Autor

Coding Dojo 008 – Criptografia

novembro 28, 2009

Finalizamos com sucesso a criação de uma classe de criptografia e descriptografia, usamos um dicionário onde cada letra era representada pela próxima letra (A => B).

Data: 28/11/2009.

Presentes: Cairo, Daniel, Dmitry, Fabricio e Stevie.

Linguagem: Ruby.

Problema: Criptografia.

Estavam presentes no horário Cairo, Dmitry e Stevie. Conversamos um pouco e começamos a decidir o que seria feito, procuramos no Ruby Quiz e quando o Fabricio chegou resolvemos usar esse problema. Logo depois chegou o Daniel.

Solução: Adivinha onde está!? No github!

Retrospectiva:

Nós discutimos bastante na retrospectiva (Na realidade, no final dela) sobre o quão complexo deve ser os problemas e seus testes. Não chegamos a nenhuma conclusão, mas foi uma boa discussão sobre testes.

O que foi bom:

  • Resolução do problema
  • Desktop melhor do que notebook
  • Tempo mais visível
  • Retrospectiva

O que pode melhorar:

  • Presença de mais gente
  • Problema mais complexo
  • Lanche (Recorrente…)
  • Horário de inicio (O Fabricio falou em começar no horário, mesmo que tenha uma pessoa Uma pessoa não da pra fazer dojo!. Ele comentou sobre isso e acho que vamos adotar essa postura, sempre ter gente no horário ajuda e muito.
  • Escolha do problema antes na lista

Foi um ótimo Coding Dojo, o problema simples, uso de alguns métodos de hash e de string, testes passando.

Coding Dojo 007 – Campo Minado

novembro 24, 2009

Retomamos as atividades do Dojo Piauí, no último sábado (21/11/09) realizado no laboratório de informática e estatística da UFPI (DIE), onde estavam presentes 9 desenvolvedores, sendo a maioria novos no encontro.

A princípio nossa tarefa era implementar uma simulação do jogo Texas hold ‘em, mas devido a maioria dos presentes não conhecer bem as regras deste estilo de porker, o tempo já estava curto.

Então, uma sugestão dada pelo Marvin foi a implementação do jogo Campo Minado. Depois de explorarmos melhor o jogo definimos nosso objetivo: um gerador do jogo de Campo Minado.

Lembra do jogo Campo Minado, onde o objetivo é revelar um campo de minas sem que alguma seja detonada, pois é. A idéia era: Dado o tamanho do tabuleiro (no caso, a ordem da matriz quadrada que representa o tabuleiro) e a quantidade de bombas, a idéia foi gerar uma versão em Ruby do Jogo Campo Minado. Como o tempo foi limitado, concluimos apenas o modelo do Jogo, sem GUI (Isso fica quem sabe p/ um próximo Dojo) . Seguindo boas práticas de desenvolvimento conseguimos envolver os desenvolvedores presentes na solução do nosso Jogo.

Data: 21/11/2009.

Presentes: Lucas, Aecio, Edalmo, Fabricio, Marvin Lemos, Dmitry, Jáder, Danilo.

Linguagem: Ruby.

Problema: Campo Minado.

Solução: Está no Github.

Retrospectiva

Positivos:

  • Novos participantes
  • A maioria dos presentes eram mais proficientes em Java. A experiência com ruby foi muito interessante.
  • Envolvemos desenvolvedores de vários backgrounds
  • Coding Dojo itinerante
  • Abordamos a possibilidade de usar SmallTalk  e outras linguagens em próximas reuniões ( mas iremos dar um tempo p/ que todos possam se familiarizar com a linguagem)
  • Houve muita troca de idéias sobre boas práticas em um bom de caso de testes
  • Usamos um monitor 17”, mas deu tudo certo

Negativos:

  • Não estudamos o problema inicial previamente, isso nos rendeu um belo atraso
  • Muitas pessoas comunicam a vontade de participar, mas infelizmente são impedidos pelo trabalho
  • Tirar fotos 🙂
  • Não usamos nenhum SCM
  • Falta de presença de quem já participava (Só o Dmitry)

Esse último foi eu que adicionei, eu era um que não estava presente.

Dojo 006 – Microsystem!

outubro 5, 2009

Nós conseguimos fazer um microsystem! Ele tem a função de tocar uma música, passar para frente, para trás, parar e carregar uma lista de músicas!

Data: 03/10/2009.

Presentes: Cairo Noleto, Cleiton Francisco, Dmitry Rocha, Ewerton Costa, Ricardo Farias e o “Jeová” (Esqueci o nome, é algo parecido com isso :P).

UPDATE: O nome é Joval 🙂

Estavam lá também presentes o prof. Fábio Gomes e a Mônica, mas eles não participaram, apenas estavam por lá.

Linguagem: Ruby.

Problema: Music Player.

Estávamos sem um problema para resolver, mas o Cleiton chegou com o music player para fazermos.

Após um pouco de explicação nós começamos a codificar.

Solução: Está no github.

Tínhamos várias classes para fazer, fizemos duas, faltou várias funcionalidades, mas mais uma vez terminamos o Coding Dojo com o problema resolvido(ou pelo menos parte dele).

Retrospectiva:

Nós fizemos no IF-PI. Pela empolgação e motivação da galera na lista, eu achei que ia bombar, que ia ter cerca de 20 pessoas, cheio de gente, várias rodadas. NADA, só foi especulação, mais uma vez frustrado!

Nós discutimos sobre, mesmo mudando de data, a pouca presença das pessoas. O prof. Fábio deu a idéia de que poderíamos fazer um Coding Dojo especial uma vez ao mês, onde poderia ser no IF-PI.

Eu já tinha pensado em fazer um “Dojo itinerante” e ir em faculdaes/empresas divulgando a importância do Coding Dojo.

Outra coisa que o Fábio falou foi sobre falar mais das vantagens/desvantagens da prática do Coding Dojo, explanar mais sobre TDD/BDD, programação em par e esse tipo de coisa.

Por conta da pouca presença das pessoas, ainda usaremos nos próximos Dojos Ruby, queríamos conversar com todos sobre o uso de Java e tal, mas como não tinha javeiro em peso, rubistas ganham!

Sobre o Coding Dojo nós chegamos aos pontos:

Positivos:

  • Problema Simples e do conhecimento de todos
  • Projetor
  • Ambiente
  • Novo participante
  • Bom inicio

Negativos:

  • Precisa de mais participantes
  • Mais incentivo
  • Mais divulgação sobre as vantagens
  • Participação do Ricardo e do Dmitry
  • Lanche
  • Máquina fotográfica

Sobre a máquina, eu realmente esqueci, tanto a máquina, como tirar as fotos do celular, o que resultou em algumas fotos no final!

Mas eu só vou colocar uma, nosso amigo Dmitry Rocha, o mais novo dono e proprietário de um MacBook, quis se mostrar um cara bastante inteligente quando resolveu pegar seu macbook e fazer pose para uma foto. Ele se enganou quando eu percebi que seu lindo macbook nem estava ligado, resultado:

Cleiton, Dmitry e os MacBooks

Cleiton, Dmitry e os MacBooks

O que é Coding Dojo?

outubro 1, 2009

Algumas pessoas entraram na lista do Coding Dojo Piauí e perguntaram o que é Coding Dojo, como funciona, aonde está sendo realizado e quando.

Dessas perguntas, duas delas não tem uma resposta definitiva. Atualmente estamos realizando o Coding Dojo no Jus Navigandi, ficaremos por lá enquanto o espaço permitir. E estava sendo realizado todas as quarta feiras, mas notamos uma grande evasão, então estamos reencontrando um dia melhor para realizar o Coding Dojo.

O Coding Dojo é uma espécie de treinamento prático de desenvolvimento. Ele é fundamentado nas técnicas Ágeis de desenvolvimento de software. É uma atividade realizada em grupo, de no mínimo duas pessoas.

Para realizar o Coding Dojo é necessário apenas algumas coisas básicas:

  • Um computador
  • Um projetor (Nós utilizamos um segundo monitor)
  • Duas cadeiras
  • Duas pessoas

O Coding Dojo funciona da seguinte forma: É escolhido um problema que deve ser levado a cada Coding Dojo (No nosso caso, nós discutimos os problemas na lista, para não perder muito tempo), a maioria dos participantes deve saber uma linguagem de programação e conhecer um framework de testes nessa linguagem (A linguagem não deve ser restritiva, não podemos impedir que um problema seja resolvido por causa da linguagem.).

Sobre a linguagem tem um ponto a mais a ser observado, nós preferimos Ruby porquê é uma linguagem fácil de se aprender. Mas nem por isso vamos fazer todos os Coding Dojos em Ruby. Queremos começar a fazer em Java usando JUnit, mas queremos que mais linguagens entre no Coding Dojo (Python, C, Erlang, Closure, Haskell, PHP, <coloque uma linguagem aqui>).

Sobre as regras do Coding Dojo são simples:

  • Dois programadores, 1 piloto e 1 co-piloto.
  • A cada 7 minutos o piloto sai, o co-piloto assume e entra um novo co-piloto da platéia.
  • Enquanto os testes não estão passando, a platéia só pode fazer perguntas (Que não devem ser tendenciosas).
  • Quando os testes estão passando, então discutimos um pouco sobre o andamento do código.
  • Ao final é necessário a retrospectiva.

A retrospectiva serve para melhorarmos os próximos Coding Dojo, considerada a atividade mais importante, já que é aqui que vamos colher o feedback.

E um ponto importante que o Ewerton lembrou na lista é a comunicação, sem ela o dojo falhará! Assim como vários e vários projetos de softwares sem comunicação.

Dojo 005 – Bilhetagem Eletrônica

setembro 24, 2009

Data: 23/09/2009.

Presentes: Cairo Noleto, Cleiton Francisco, Ewerton Costa e Weldys Santos.

Linguagem: Ruby.

Problema: Bilhetagem Eletrônica.

Nós, insatisfeito com a bilhetagem eletrônica em Teresina, resolvemos fazer nosso próprio sistema de bilhetagem, livre de bugs e cheio de testes.

Devido a pouca presença, conseguimos explicar rapidamente para o Ewerton, que ainda não sabia do problema.

Solução: Está no Github.

Tínhamos a idéia de fazer 1 classe, que seria herdada por outras 3 e fazer uma classe para leitura do cartão. Fizemos apenas a classe Cartão, com os métodos de inserção de crédito, debito e saldo.

Esse Coding Dojo foi um dos que os testes ficaram a maior parte do tempo verde!

Retrospectiva:

Nós discutimos um pouco sobre a pouca presença de poucas pessoas, eu (Cairo Noleto) acho que o problema pode ser o dia fixo, já que a desculpa mais escutada é que “não posso faltar a aula”. Mas o Cleiton disse que pode ser por conta da linguagem, enfim, nós decidimos que iríamos discutir na lista sobre os dois casos.

Foi Bom:

  • Teve lanche!!!
  • Boa explanação do problema.
  • Uso de vários matchers do rspec.
  • Problema ótimo

Pode Melhorar:

  • Mais participantes!
  • Fazer refactoring.
  • Sala para disputas calorosas!
  • Voltar a discutir o rodízio de dias.

Coding Dojo Especial InfoPi 2009

setembro 18, 2009

Data: 17/09/2009.

Presentes: Muitos, não sabemos o nome de todos! Foi o dojo com mais gente.

Linguagem: Ruby.

Problema: Equação do segundo grau.

Resolvemos algumas questões antes de iniciarmos, queríamos apenas um problema simples, que todos podessem entender e participar.

Solução: Está no Github.

Antes de comerçamos explicamos o que era o Coding Dojo utilizando os slides do Régis Pires, mostramos algumas coisas que fazemos, tentamos passar a idéia do Ágil, do TDD, de tudo!

Como muitos nem sequer tinham ouvido falar de ruby (E como já tínhamos nos preparado), apresentamos de forma extremamente rápida a sintaxe, apenas um pouco para podemos resolver aquele problema.

Eu sei, o Coding Dojo é para ser feito em uma linguagem que todos conheçam, não precisam dominar, mas como nós pensamos no espírito de aprendizagem, achamos que um problema matemático simples poderia ser resolvido por todos usando Ruby (E que foi comprovado!)

Então, nesta sequência, nós preparamos um esquema onde um mais experiente em Ruby sempre iria conduzir um que não tinha tanta fluência assim. Dessa forma ficamos com duas linhas: Eu(Cairo), Cleiton, Cyrus e Weldys e com a platéia, nos revezando.

Infelizmente o único que sabia um pouco a mais de Ruby era o Caio, o restante da platéia não conhecia e os que conheciam, era poucos fluentes. Tinha um também que não sabia nem muita coisa de programação, mas foi o segundo da platéia a participar!

O mais legal em tudo, é que conseguimos passar a mensagem de que qualquer linguagem pode ser usada para resolver qualquer tipo de problema, e que o mais importante é a lógica de programação.

E a codificação começou com o Cleiton e com o Pedro Alcântara:

P9176908

Depois de algum tempo nós decidimos finalizar o problema, com um código funcional e uma boa bateria de testes! 🙂

Retrospectiva:

Nós tivemos a maior retropesctiva (Mais gente, mais opiniões).

Foi bom:

  • Número de participantes
  • Problema simples
  • Presença do Pedro Alcântara
  • Ótimas instalações
  • Data show

Pode melhorar:

  • Diferença de conhecimento entre os participantes
  • Teoria sobre Testes podem ser mais explanados
  • Tem que ter lanche
  • Nem todos participaram
  • Mais voluntarismo
  • A presença do Fábio Gomes e do Ricardo Ramos

Felizmente nós conseguimos explorar bem a comunicação, mesmo com pessoas que não participaram efetivamente do código, mas participaram contribuindo na discussão de código.

Infelizmente nós convidamos algumas pessoas para participar, mas que não foram. Mas as que foram, realmente foram ótimas!

E algumas fotos:

P9176904

P9176928Dois Cairos!

P9176934

Dojo 004 – Boliche

setembro 3, 2009

Data: 02/09/2009.

Presentes: Cairo Noleto, Marcelo Soares, Cleiton Francisco, Ricardo Farias, Weldys Santes e Cyrus Cavalcante.

Mas o José Esmerino passou por aqui antes do Coding Dojo e depois de muita pressão da mulher, foi embora antes de começarmos. O Fanfarrão do Lucas não veio. Deve ter se confundido, porque ele pensou que antes-de-ontem (novas regras do português!?) era ontem (oO).

Linguagem: Ruby.

Problema: Jogo de Boliche.

Resolvemos antes do Coding Dojo, na lista, de que iríamos resolver o problema da obtenção dos pontos do jogo de Boliche. Queríamos passar uma estrutura para um novo objeto e que ele retornasse o valor total do jogo.

Solução: Está no Github.

Chegamos a um acordo antes de começar a codificar. De que entraríamos com um array de arrays, onde cada array dentro do array array, array, array, array, teria o valor da primeira, segunda ou da terceira rodada (no caso a último frame).

Todos concordaram e principalmente, entenderam o problema. Nós iniciamos os trabalhos com eu (Cairo) e o Marcelo, que pela primeira vez codificou. O layout da sala foi o mesmo do Dojo 003, então foi melhor para gerenciarmos tudo. Apenas esquecemos uma vez de ligar o relógio, já no finalzinho!

Depois de quase 3 horas, nós finalizamos o Coding Dojo sem um código pronto, cheio de ifs/elses que com certeza podem e devem ser refatorados. Nos perdemos quando o primeiro bug apareceu e não conseguimos avançar mais.

Retrospectiva:

Esse foi cheio de pontos que devem melhorar.

Devem melhorar:

  • Usar outros matchers do Rspec (estamos praticamente só usando o should ==)
  • Mais pessoas. Esse Dojo foi o que teve menos gente até agora, 6.
  • Discutir mais antes do código, nós discutimos apenas sobre o problema, não discutimos como seria o funcionamento.
  • Quando os testes passarem, discutir o design do código.

Positivos:

  • Poucas pessoas (dava pra gente brincar mais vezes! :D)
  • Problema amplo. Existe mil maneiras de se resolver o boliche.

Temos muitos pontos a melhorar, eu acho que o nosso problema foi comunicação, a cada dupla, uma implementação diferente era abordada, não convesamos entre si e nem com a platéia para definir como deveria ser resolvido o problema. Por isso que agora, quando os testes estiverem passando, vamos discutir mais com a platéia.

Algumas fotos:

P9026708

P9026709

P9026715

Problema para o Dojo Teresina 004 – Boliche

setembro 1, 2009

Conforme já foi discutido na lista o problema do 4º dojopi [em Teresina, já que agora temos também a contagem do dojopi de Parnaíba correndo em paralelo 🙂 ] deve ser um programa de pontuação de partidas de Boliche.

Como eu não entendo muito de boliche resolvi fazer uma pesquisa pra conhecer mais sobre o jogo. O resultado é um resumo das regras no tocante à pontuação. Ao final teremos um roteiro que irá guiar nossos testes e, consequentemente, nossa implementação.

Contagem dos pontos

O jogo de boliche consiste de dez frames. Um jogador tem direito a duas bolas em cada frame. A pontuação de uma partida varia de acordo com a quantidade de pinos e a forma como o jogador os derruba.

Em resumo, existem três formas de acumular pontos:

  1. pelos pinos derrubados, quando não fizer strike ou spare;
  2. pelos pinos derrubados, mais (bônus) os pinos derrubados nas DUAS bolas seguintes quando fizer strike;
  3. pelos pinos derrubados, mais (bônus) os pinos derrubados na BOLA seguinte quando fizer spare.

Strike: é marcado quando todos os pinos são derrubados no primeiro lançamento do frame, neste caso, o jogador não precisará fazer a segunda jogada do frame e a pontuação se dará conforme o item 2 acima. No quadro de pontuação o strike é simbolizado com um X.

Spare: acontece quando os pinos que não foram derrubados no primeiro lançamento são derrubados no segundo arremesso do mesmo frame. Os pontos obtidos são descritos no item 3 acima. No quadro de pontuação o spare é simbolizado com uma /.

O último frame é especial, ele “poderá” permitir uma jogada extra, caso o jogador obtenha um spare ou duas jogadas extras caso o jogador tenha obtido um strike.

No quandro de pontuação o símbolo ‘-‘ significa que não houve pinos derrubados na jogada. A pontuação máxima no boliche é de 300 pontos (12 strikes).

Simulação

Pontuação de uma partida de boliche

Pontuação de uma partida de boliche

Frame a frame

Frame 1: 30 pontos

10 pontos pelo strike + bônus das DUAS BOLAS jogadas na seqüência (10 + 10, já que o jogador fez dois strikes logo a seguir) por esse strike.

No primeiro frame o jogador do exemplo derrubou os 10 pinos na primeira bola jogada (strike), porém para marcar esses dez pontos do primeiro frame, antes é preciso jogar as duas bolas seguintes (porque o bônus pelo strike são os pontos das DUAS BOLAS seguintes)

Frame 2: 57 pontos

São os 30 acumulados do primeiro frame (veja acima) + os 10 pontos pelo strike que fez neste segundo frame + bônus das DUAS BOLAS jogadas na seqüência por esse strike (na primeira o jogador fez outro strike e na segunda derrubou apenas 7 pinos). Então: 30 + 10 + 10 + 7 é igual a 57 pontos (total até o segundo frame)

Frame 3: 76 pontos

São os 57 acumulados até o segundo frame + os 10 pontos pelo strike que fez neste terceiro frame + bônus das DUAS BOLAS jogadas na seqüência por esse strike (na primeira o jogador derrubou 7 pinos e na segunda apenas 2).

57 + 10 + 7 + 2 = 76

Frame 4: 85 pontos

São os 76 pontos acumulados até o terceiro frame + os 9 pontos (7+2) conseguidos nesse frame (sem bônus porque não fez strike nem spare).

76 + 9 = 85

Frame 5: 95 pontos

São os 85 pontos acumulados até o quarto frame + os 10 pontos (spare 8+2) conseguidos nesse frame + o bônus da BOLA SEGUINTE por esse spare (zero, porque o jogador cometeu falta e não marca ponto).

85 + 10 + 0 = 95

Frame 6: 104 pontos

São os 95 pontos acumulados até o quinto frame + os 9 pontos conseguidos nesse frame (0 + 9), sem bônus porque não fez strike nem spare).

95 + 0 + 9 = 104

Frame 7: 124 pontos

São os 104 pontos acumulados até o sexto frame + os 10 pontos pelo strike conseguido nesse frame + bônus das DUAS BOLAS jogadas na seqüência por esse strike (na primeira o jogador derrubou 7 pinos e na segunda 3 pinos).

104 + 10 + 7 + 3 = 124

Frame 8: 143 pontos

São os 124 pontos acumulados até o sétimo frame + os 10 pontos pelo spare conseguido nesse frame + o bônus da BOLA SEGUINTE por esse spare (o jogador derrubou 9 pinos).

124 + 10 + 9 = 143

Frame 9: 152 pontos

São os 143 pontos acumulados até o oitavo frame + os 9 pinos derrubados nesse frame (sem bônus porque não fez strike nem spare).

143 + 9 = 152

Frame 10: 180 pontos

São os 152 pontos acumulados até o nono frame + 10 pelo strike na primeira bola jogada nesse frame + bônus das DUAS BOLAS seguintes (outro strike e 8 pinos).

152 + 10 + 10 + 8 = 180

OBS: se fizer strike na primeira bola jogada no décimo frame ganha-se DUAS bolas extras para jogar como bônus. Se fizer spare nas duas primeira bolas jogadas no décimo frame ganha UMA bola extra para jogar como bônus.

Fontes:

Dojo 003 – Conversor de Moedas

agosto 27, 2009

Data: 26/08/2009.

Presentes: Weldys Santos, José Tavares, Cleiton Francisco, Monica Regina, Cairo Noleto, Ewerton Costa, Lucas de Castro.

Linguagem: Ruby.

Framework de Testes: RSpec.

Problema: Conversão de Moedas.

Nós decidimos quer resolveríamos o problema não acabado do Dojo 002.

Solução: Está no Github.

Dessa vez, nós chegamos a um acordo comum entre os participantes antes de pegarmos no código. Nos focamos em resolver o problema de conversão. Decidimos que o Euro seria nossa moeda chave, assim davámos para passar de um euro para dolar ou de um dolar para um real sem mais problemas.

O Coding Dojo de ontem foi o mais tranquilo de todos, com o melhor layout de sala até agora. Ainda não temos o nosso projetor, mas estamos resolvendo o problema usando o computador em dual monitor espelhados, e o layout de ontem, a plateia ficou de frente com os pilotos, ficou melhor para quem está pilotando, por quê não ficou todo mundo atrás.

E para quem estava na platéia, ficou melhor de discutir, pq a gente não precisava ficar em pé atrás da dupla e nem precisava ficar se esquivando para olhar para uma tela ou outra!

Retrospectiva:

Como foi tranquilo, fizemos uma Retrospectiva com vários pontos em comum entre todos.

Positivo:

  • Espaço Físico
  • Dois novos participantes
  • Melhoramento dos problemas do Dojo 002
  • Abordagem no inicio
  • Problema mais claro
  • Cronometragem

O que pode melhorar:

  • Mais participantes
  • Lanche
  • Complexidade do problema
  • Variar a linguagem
  • Fotos!

Nesse teve foto sim, só no finalzinho, quando lembramos da câmera!

Vai algumas fotos:

P8266680

P8266681

P8266684

P8266686

Coding Dojo Especial InfoPi 2009

agosto 21, 2009

É com orgulho que iremos fazer nosso primeiro Coding Dojo especial em um evento aqui em Teresina, será no InfoPi 2009.

Para quem ainda não está ligando a cara com o nome, o InfoPi é o antigo InfoCefet, devido a alteração do nome dos cefet’s para if’s. Esse ano contará com um dos organizadores do FISL.

Esse ano as palestras serão realizadas no auditório do Metropolitan Hotel, os outros eventos serão realizados no auditório/salas do Ifpi.

O Coding Dojo será no auditório do Ifpi no dia 17/09/2009 das 14 às 17:30. Estamos preparando um Coding Dojo especial. Então não fique de fora, venha participar e se divertir com a gente.