Posts Tagged ‘Ruby on Rails’

RubyConf 2010 – estivemos lá! – Segundo dia

novembro 11, 2010

O segundo dia começou com o keynote do Evan Phoenix, que palestrou sobre o Rubinius, uma Virtual Machine para Ruby. Na palestra houve uma visão geral do Rubinius que é um plataforma para rodar código Ruby e houve grande destaque na parte de performance que o Rubinius fornece e também nas facilidades que ele traz, como por exemplo para fazer testes de performance.

Charles Nutter falou sobre o JRuby, a máquina virtual Ruby que roda sobre a JVM. Ele explicou detalhes, funcionalidades e vantagens do JRuby como:

  • Instalação e configuração rápida do JRuby;
  • Ampla gama de plataformas suportadas pelo JRuby, incluindo Windows, Z/OS, AS/400, Android.
  • Suporte a Threads nativas reais no JRuby;
  • Uso e reúso de bibliotecas Java e bibliotecas nativas no JRuby;
  • Diferenças de performance grandes em relação a VM Ruby “canônica”;
  • Compilador JIT;
  • Rails executa corretamente no JRuby;
  • Suporte a quase toda API do Ruby até 1.9.

Também tivemos exemplos rápidos de aplicativos durante a palestra:

  • “jirb”, o console interativo do JRuby;
  • Um simulador de piano rodando no JRuby;
  • Um renderizador de círculos rodando no JRuby para o Android;
  • Um jogo que usava JMonkeyEngine rodando no JRuby.

A palestra do David Chelimsky foi muito interessante pois ele falou sobre a manutenção do equilíbrio, reduzindo a duplicação de códigos em uma variedade de formas e os riscos associados a cada um. estratégias para reduzir a duplicação, sem sacrificar princípios de design como encapsulamento, baixo acoplamento e alta coesão.

O princípio DRY (Don’t Repeat Yourself) sugere que “cada pedaço do conhecimento deve ter uma única representação autoritativa dentro de um sistema.” Uma orientação forte, mas muitas vezes é atendido sem uma clara compreensão de suas motivações subjacentes, nem a consideração de outros princípios que poderiam levar o código a outras direções.

Depois do almoço houve a palestra do Ola Bini que falou sobre “O passado e o futuro das linguagens de programação”. A palestra dele foi bem interessante, pois mostrou as linguagens em que o Ruby foi inspirado, baseado em suas características principais.

Scott Chacon palestrou sobre Git, e sua palestra foi separada em duas partes: na primeira ele falou das novas funcionalidades da última versão do Git (1.7.3) e na segunda parte falou sobre alguns comandos do Git que não são tão populares. Maiores detalhes da palestra do Chacon podem ser encontrados na sua apresentação.

Após o coffee break o Alexandre Gomes falou de algumas escolhas, erros, acertos, atitudes e coragem? Como por exemplo: Computação ou medicina? Passar num concurso, enviar curriculos ou abrir uma empresa? Web, mobile ou desktop? Desde os tempos de escola somos inundados de questões que somente o curso da vida nos é capaz de responder. Em nossa formação escolar, somos orientados a seguir um único caminho, o caminho da estabilidade, segurança e conforto. Educam-nos a sermos submissos e obedientes e, condutas fora do padrão esperado são rechaçadas e condenadas ao castigo. Protagonizando essa história, estamos nós,  sob avaliação incisiva dos olhos críticos da sociedade. Poucos, acertam de primeira em suas escolhas de vida. Outros, no entando, não têm a mesma sorte e atrofiam-se em gaiolas de outro sem gozar do prazer de se viver dia após dia.

Fez refletir-nos sobre todos estes fatos, usando exemplos reais de rotinas de profissionais na mais diferentes situações e analisando porque a paixão pelo trabalho é a principal virtude compartilhada por profissionais e empreendedores de sucesso.

A última palestra do Ruby Conf 2010 foi a de Jim Weirich, uma das palestras mais aguardadas do evento, onde todos foram reunidos no mesmo horário e na mesma sala.
Figura importante no mundo Ruby, Jim é o cientista-chefe da EdgeCase LLC, uma empresa de desenvolvimento Rails localizado em Columbus Ohio.
A palestra falou sobre os princípios SOLID que são um conjunto de princípios de design que melhoram um design orientado a objeto.
Os cinco princípios são:
  • Princípio da Responsabilidade Individual
  • Principio Aberto / Fechado
  • Princípio da substituição Liskov
  • Princípio da Segregação de Interface
  • Princípio da Inversão de Dependência
Jim explicou cada um dos princípios, dando exemplos e principalmente fazendo muitas perguntas à platéia para que todos que quisessem opinar ficassem a vontade para falar a respeito das práticas de programação do SOLID.
O SOLID surgiu das linguagens de programação OO como C++ e Java, durante a palestra, Jim explicou como é possível utilizar o SOLID no Ruby on Rails.

Conclusão

A RubyConf 2010 foi excelente, com ótimas palestras sobre temas bem variados e com palestrantes de alto nível. No geral, as palestras foram de nível intermediário para avançado, isso é ruim por um lado, pois em várias acabamos “boiando”, mas em contrapartida é bom, pois nos faz perceber que precisamos aprender mais e força as pessoas a terem mais interesse em buscar entender melhor os assuntos e se aprofundar mais.

Esperamos que a RubyConf 2011 seja melhor ainda (com wifi funcionando rs). Parabéns a todos da organização e ao Fabio Akita pelo trabalho singular que vem exercendo na comunidade Ruby.

Autores:

Bruna Oliveira

Daniel Sakuma

Fabrício Campos

Glaucia Mekaru

William Nishio

Fonte imagens:

http://www.flickr.com/photos/locaweb/

Anúncios

Cobertura do evento “Ruby+Rails no mundo real 2010”

junho 1, 2010

Pessoal,

No sábado passado (29-05-10) Eu e o Fabrício Campos estivemos na segunda edição do evento “Ruby+Rails no mundo real 2010”, organizado pela Tempo Real Eventos em parceria com o GURU-SP (Grupo de usuários Ruby de São Paulo).

Para os interessados em saber quais foram as novidades mostradas nesse evento, eu escrevi uma cobertura do que aconteceu e um resumo de cada palestra no meu blog.

Quer conferir? Então acesse o link abaixo:

Minhas impressões – Ruby+Rails no mundo real 2010 – 29/05/10

No ano passado eu também escrevi a cobertura da primeira edição do evento (rs) e foi publicada aqui no Blog do Ensinar. Acesse o post pelo link abaixo:

Minhas impressões – Ruby + Rails no Mundo Real 2009 – 04/04/09

Acompanhe também as atualizações do pessoal que está postando no twitter acerca do evento!

Até mais e boa leitura a todos!

Minhas impressões – Quinto encontro Guru-SP – 18-07-09

julho 18, 2009

Caros colegas,

Neste sábado tive o prazer de participar do quinto encontro do Grupo de Usuários Ruby de São Paulo (Guru-SP), que aconteceu na sala de treinamentos da empresa onde trabalho (a Voice Technology :)).

Apesar de meu conhecimento da linguagem e do framework de desenvolvimento Web (Rails) ser baixa, o objetivo maior era angariar o maior número de informações, aprender e ter contato com o pessoal da comunidade. Assim poderia ter mais “idéia” do que é Ruby e porque está sendo tão falado, comentado e usado nas empresas e em projetos open source.

Nós da Voice Technology já temos algumas pessoas capacitadas em programar em Ruby, mas estamos em constante nível de aprendizado. Essa participação no encontro será importante para sanar as principais dúvidas e responder as expectativas pessoais e do pessoal da empresa que não esteve presente.

P.S.: Este post também está presente no Templário da Tecnologia.

Panorama Geral


Até o dia de ontem (17-07-09) era prevista a participação de no máximo 20 pessoas para toda a duração do evento (10h00 até ~17h00), o que já era um número excelente para uma reunião “informal”.

Para a nossa surpresa (André Pantalião, Rodrigo Ribeiro e Thiago Veiga, membros da empresa presentes) tivemos cerca de 25 pessoas participando (!). A procura foi grande e acho que o encontro respondeu as expectativas da melhor maneira possível.

“Escopo” da programação das palestras (pelo menos o pensado):

  • 10:30 (devido ao “delay” clássico de espera do pessoal) – Palestra de Ruby (e Rails) voltada para iniciantes
  • 13:00 – DataMapper
  • 14:30 – GIT
  • 16:00 – Bate-papo sobre itens de interesse / Coding Dojo

Palestras

Ruby on Rails para iniciantes – Rafael Rosa “Fu”


Rafael Rosa “Fu” tomou a iniciativa de levar o notebook a frente e passar alguns “Ruby fundamentals” para o pessoal. Primeiramente ele abriu uma “janela” para que todos falassem (momento “apresentação”) o nome, profissão, envolvimento com as linguagens de programação e porque “raios” estar presente em um sábado de manhã para ver uma reunião de Rails (rs).

Foi interessante para chegar a algumas conclusões:

  • Maioria do pessoal é oriundo da área de programação em Java, voltada para Web;
  • Muitos dos presentes (inclusive eu…rs) são iniciantes em Ruby e Rails. O objetivo era saber mais do que é, como usar e os objetivos da linguagem;
  • Já existem pessoas que trabalham só com Rails em empresas. Muitos dos presentes já fizeram curso também, em sua maioria na Caelum;
  • A comunidade Ruby e metodologias ágeis estão andando de “mãos dadas” e estão definitivamente “implantados” nas empresas que usam Rails.

Após isso foram mostrados conceitos (e prática) de como instalar e usar Ruby, tomando como exemplo o famoso modelo do “Faça seu blog em 15 minutos“. O interessante é que desde a criação de um projeto até a edição/criação de métodos html (POST, por exemplo), dentre outros poréns de um blog não é necessário escrever uma linha de código (!).

O Rails já tem muita coisa pronta, relativa a configuração de banco de dados, modelo MVC, testes e servidor de aplicação. Por isso temos a famosa “agilidade de escrita” de código e desenvolvimento.

Além disso foram discutidos termos como TDD, BDD e princípio da janela quebrada, ressaltando também o uso de ferramentas de testes com o Rails (RSpec, Remarkable e Cucumber).

Abaixo alguns links para aprendizado de Ruby e Rails:

DataMapper – Rafael Rosa “Fu”


DataMapper utiliza o design pattern para persistência de dados publicado por Martin Fowler, de mesmo nome e que também é utilizado pelo Hibernate. Foi criado pelo pessoal do Merb (Matt Aimonetti e Yehuda Katz). O conceito base é o ORM do Merb.

As vantagens do DataMapper são:

  • Não depende de estrutura de banco de dados;
  • Mais fácil de integrar com sistemas legados;
  • Migrações e múltiplos repositórios.

Rafael mostrou e explicou alguns exemplos de código, comparando classes usando DataMapper e Hibernate, exemplificando o funcionamento, mapeamento de chaves e campos usados, etc. Muitos exemplos de classes podem ser encontrados no site do DataMapper. Reinterou que Active Record (outro ORM  e manuseador de dados usado por Rails) não é DataMapper, sendo o último mais “poderoso” e modularizado.

Explicou sobre os muitos plugins existentes para DataMapper e encontrados no repositório GIT do mesmo, separados em “Resource Plugins” e “Is Plugins”, e os seus respectivos “poderes de fogo”. Complementando o assunto foram mostrados de maneira mais superficial Adapters, Integration e Utility, pois são temas mais aprofundados do DataMapper.

Nas futuras versões (0.10 e 0.11) haverão novidades:

  • Validações para objetos Ruby puros;
  • Melhorias no SEL.

Desvantagens do DataMapper:

  • Menos maduro (menor número de usuários usando e desenvolvendo DataMapper e muitos usando Active Record);
  • Não se itegra facilmente com Rails (ainda);
  • Pequena comunidade;
  • Pouca documentação (relativamente);
  • Ainda não tem Remarkable;

Como podemos participar do projeto?

  • IRC Freenode #datamapper e #dm-hacking

A palestra do Rafael foi interessante, apesar de ser bem técnica. Devido ao conhecimento de Hibernate (seja ele teórico ou prático, da maioria do pessoal) a assimilação do conteúdo passado foi melhor e mais inteligível.

Desvendando o GIT – Douglas Campos (qmx)


A palestra procurou passar uma introdução a respeito do GIT, sistema de repositórios altamente usado em projetos Ruby. Mudança de paradigma de versionamento (não só arquivos, mas conteúdo de arquivos são altamente analisados).

Na introdução mostrou-se que GIT é performático e foi baseado em um desenvolvimento de 45 dias para uma nova plataforma de versionamento para o Kernel (ao invés do BK – BitKeeper, proprietária) desenvolvida por Linus Torvalds. No sistema de repositórios CVCS há o problema do código muito centralizado. No DVCS já o contrário: não há ponto central imposto pela ferramenta, tudo é descentralizado. No GIT há mudança de paradigma, pois os commits podem ser locais e/ou não acessando o servidor.

Sobre o “core” do GIT:

  • Commits pequenos em Rails são muito usados, pois as mudanças no projeto geralmente requerem pequenas implementações de linhas de código;
  • O versionamento de conteúdo no git “impacta” no conteúdo da árvore inteira;
  • Commit: não é nada mais do que as diferenças aplicadas a árvore de código (pilha de alterações);
  • O conceito de índice é tirar um “snapshot” seletivo dos objetos da árvore;
  • Podemos melhorar o conceito de índice no/para GIT: coloca tudo o que está no indíce dentro do repositório e são indicados por um hash SHA único e definido por um diff;
  • Definição técnica de GIT: o repositório no GIT é um grafo acíclico dirigido;
  • Branches: são simples ponteiros dentro do grafo, apontando para índices.

Após isso foi feito um exemplo de aplicação com vários desenvolvedores alterando e “subindo” código para um projeto fictício em um repositório GIT de teste, simulando a realidade e com a finalidade de mostrar ao vivo os conceitos de merge, diff, commit e histórico de mudanças.

Alguns comandos foram mostrados e são importantes para uso e manutenção do repositório: git stash, git status, git tag, git reset, git rebase e outro comandos.

Você precisa pesquisar em que arquivo ficava aquele método? Use o comando: git log -S’def update’ –pickaxe-all (visualiza as “mudanças de história”. Procura métodos que foram alterados no projeto e ele mostra os logs de commit. Muito poderoso). Essa é uma dica que é muito útil e pouca gente sabe!

Na parte final, Douglas discutiu com o pessoal sobre os conceitos de Cherry pick, Cherry (commits pequenos e pontuais) e Bisect (famosa história: “Mas eu tinha consertado aquele bug…quem ‘quebrou’?”).

Para finalizar houve uma discussão sobre fluxos de trabalho em equipe, recuperação de “desastres” e boas práticas.

Sem dúvida uma palestra bastante técnica, mas bem moldada, concisa e dinâmica. O overview dado sobre GIT foi bom para os “imaturos” em Ruby e Rails e para os experientes, pois várias dúvidas foram sanadas e muitas perguntas respondidas, de ambos lados. E uma novidade: Douglas expôs a informação de uma nova comunidade que está surgindo de Rails, intitulada RailsBridge. Ela é muito completa e voltada também para fins educacionais, além de ter uma campanha para ter mulheres programando em Ruby (rs). Vale a pena dar uma olhada!

Apesar de ter sido a palestra mais técnica do encontro os parabéns ao Douglas são necessários, pois o conteúdo foi excelente!

Coding Dojo – Modelagem de uma classe usando RSpec (aplicação de TDD)


No final do dia houve um dojo para que o pessoal, de forma colaborativa, codificasse um “projetinho”. O objetivo foi modelar uma classe usando RSpec, com a finalidade de trazer a tona modelos de programação, estilos de código, implementação de patterns, etc. O foco principal era aplicar o princípio básico do TDD: escrever testes antes de codificar.

Algumas das características usadas foram:

Gems instaladas

* remakable ( from github )
* rspec-rails
* Zentest

User Story da classe Group
– Tem que um nome;
– Outras características.

User Story da classe User
– Tem que ter um nome, login, e-mail, senha;
– Tem que pertencer a um grupo;
– Tem que ter status: ativo ou inativo;
– Senha tem que ser guardada como Hash;
– Precisa de método para fazer login que:
– recebe login e senha;
– retorna false se deu errado (login inexistente, usuário inativo, senha inválida);
– retorna true se deu certo.

O feedback durante a sessão foi legal e muito interessante!

Conclusão

Na minha visão o evento foi muito interessante e produtivo, sanando muitas dúvidas minhas a respeito do Ruby. Até instalei o Ruby na minha VM! (posteriormente estarei testando alguma coisa, pois o tempo urge para mim nesses dias!). Esse evento não seria realizado sem a iniciativa de André Pantalião e o pessoal do Guru-SP, que mostraram um grande interesse em participar e interagir, trazendo para o ambiente Voice a disseminação do conhecimento, tanto para nós quanto para a comunidade Ruby e afins. Aguardem mais novidades daqui para frente!

Agradeço a todos pela leitura e até a próxima!

ConclusãoNa minha visão o evento foi muito interessante e produtivo, sanando muitas dúvidas minhas a respeito do Ruby. Até instalei o Ruby na minha VM! (posteriormente estarei testando alguma coisa, pois o tempo urge para mim nesses dias!). Esse evento não seria possível de ser realizado sem a iniciativa de André Pantalião e o pessoal do Guru-SP, que mostraram um grande interesse e participação (interação), trazendo para o ambiente Voice a disseminação do conhecimento, tanto para nós quanto para a comunidade Ruby e afins. Aguardem mais novidades daqui para frente!Agradeço a todos pela leitura e até a próxima!