2 Encontro Guru Campinas

Posted by Alberto Leal on May 2nd, 2011

No último sábado realizamos o segundo encontro do Guru Campinas(Grupo de usuários Ruby). O primeiro encontro foi apenas um happy hour, onde tivemos a oportunidade de conhecer algumas pessoas da comunidade.

Desta vez, resolvemos marcar um encontro na Unicamp. E, abrimos um evento no Call4Papers para que as pessoas submetessem propostas de palestras. Neste encontro, compareceram 7 integrantes do grupo. Fiquei bastante contente com esse número. Afinal, é difícil competir com um sábadão ensolarado, né?!  O próximo encontro já tem data definida, será no dia 14/05 na Unicamp. Se você tiver interesse em submeter alguma proposta, cadastre no call4Papers: http://call4paperz.com/events/23

Falei sobre um assunto que eu gosto bastante, que é integração contínua e mostrei um exemplo prático de utilização do Hudson para fazer deploy no Webbynode, pegando o código do Github. Abaixo, os slides da minha apresentação:

E ae, te vejo no próximo encontro no dia 14/05 na Unicamp?

Rails Rumble 2010

Posted by Alberto Leal on October 20th, 2010

rumble_logo_color

Eu bem que gostaria de falar um pouco sobre o #RailsRumble. Mas, após ler alguns posts que alguns amigos escreveram, inclusive um membro do meu time, o João, percebi que isso não seria necessário. Tudo o que eles escreveram retratam examente a forma como eu vi o evento.  Recomendo, fortemente, que vocês visitem todos os links listados abaixo!

João Almeida - http://www.joaoalmeida.com.br/blog/eventos/rails-rumble-2010-2/

Léo Hackin - http://www.leohackin.com.br/2010/10/rails-rumble-uma-licao-de-vida/

Vítor Pellegrino - http://vp.blog.br/my-impressions-about-railsrumble

E, que venha 2011!!!

QConSP 2010, eu fui!

Posted by Alberto Leal on September 15th, 2010

qcon

Não sei nem por onde começar.. =P

Sem dúvidas o melhor evento o qual já participei! Superou completamente as minhas espectativas. O evento foi dividido em dois dias, sendo que os keynotes foram apresentados durante toda a manhã e o período da tarde foi dividido em três tracks. Haviam momentos em que era praticamente impossível escolher entre uma track e outra.

Organização?! Nota 10! Evento muito bem trabalhado, muito bem conduzido. Parabéns a Caelum e toda a equipe que estava de alguma forma envolvida com o andamento do evento.

Coffe break?! Não tem como deixar de comentar: O coffee break foi animal!! Toda vez que você saia da sala a mesa estava lá, sempre cheia de comida e bebida. Teve coffee break o tempo inteiro!!

Networking?! Foi muito bacana poder conhecer pessoas que só conhecia pela internet, além de re-encontrar velhos amigos.

Happy Hour?! O local escolhido para o happy hour foi um barzinho localizado próximo ao evento. O problema aqui foi que tinha tanta gente que, foi impossível colocar todo mundo “junto”. Uma galera ficou no último andar do bar, enquanto que outra parte ficou no primeiro andar. Mas isso nem atrapalhou muito, deu para rir bastante, trocar altas idéias…

Lightning Talk?! Até eu fiz uma apresentação no QConSP. Foi no final do primeiro dia. Contei um pouco sobre a forma como minha equipe utiliza o Git: “Utilizando Git em Projetos com Repositório Centralizado”. Mostrei uma pequena aplicação que utilizamos para ajudar a fazer a entrega em um repositório centralizado (qualquer dia eu blogo sobre isso em detalhes)

beto

Obrigado pela foto, @Loiane!

Projeto no Github: http://github.com/albertoleal/Git-To-Central-Repository

Quem saca bastante de SVN, CVS, fique a vontade para fazer um fork. Aliás, seria bem interessante poder ter esta aplicação voltada para outros SCM. =)

#CaravanaJavaCE?! Demais!! Muito legal pode re-encontrar a galera e conhecer outros membros da comunidade Cearense!

qconsp2010_loiane-48

Pontos Negativos?! Foram distribuídos fones de ouvido para que as pessoas que não tem o domínio da língua inglesa pudessem acompanhar a tradução  simultânea feita pelo Paulo e Guilherme. Só que a galera colocava este fone no último volume. Com isso, acabava atrapalhando outras pessoas que não precisavam do fone. E não dava para fugir, pois sempre tinha um fone alto em algum lugar =( Isto foi uma coisa que atrapalhou, mas que ao meu ver não estava no controle da organização do evento. Outro ponto que acho que poderia mudar é: Divulgar o nível da palestra no site. Por exemplo: Deixei de assistir uma palestra para assistir outra, achando que ia aprofundar no assunto, mas não aconteceu. Isto me deixou um pouco “frustado”. Outra sugestão é: Achei que faltou um “lounge”. Seria legal ter um no próximo, para que as pessoas possam usufruir do espaço: descansando, batendo papo..

Então, é isso! Espero poder participar do próximo. Com certeza estarei presente =D

(E ainda tem gente falando que o evento foi caro.. tsc tsc)

Mapeando rotas com with_options

Posted by Alberto Leal on December 3rd, 2008

Muitas vezes, nossos controllers possuem diversas actions. Às vezes customizamos a URL e criamos uma rota para cada um, e, de forma repetida. Por exemplo:

ActionController::Routing::Routes.draw do |map|
  map.connect “/blog/list,  :controller => “blog”,
                             :action => “list”
  map.connect “/blog/view/:id,  :controller => “blog”,
                                 :action => “find_post”
end

Note que, todos os mapeamentos acima fazem referência ao mesmo controller, porém para actions diferentes. O método with_options nos permite criar um bloco com mapeamentos para o mesmo controller de forma a não ter que repetir sempre o nome do controller para todos os mapeamentos:

ActionController::Routing::Routes.draw do |map|
  map.with_options (:controller => “blog”) do |blog_map|
    blog_map.connect “/blog/list”, :action => “list”
    blog_map.connect “/blog/show/:id,   :action => “show”
  end
end

Como instalar Ruby/Gem MySQL no Mac OS X Leopard

Posted by Alberto Leal on December 1st, 2008

Quando tentamos executar nossa migration no rails 2.2, usando o mysql como SGBD, nos deparamos com o seguinte erro:

The bundled mysql.rb driver has been removed from Rails 2.2. Please install the mysql gem and try again: gem install mysql.

Para instalar a gem no MAC OS X 10.5 Leopard, execute a seguinte linha se comando no seu terminal:

$ sudo env ARCHFLAGS="-arch i386" gem install mysql -- \
  --with-mysql-dir=/usr/local/mysql --with-mysql-lib=/usr/local/mysql/lib \
  --with-mysql-include=/usr/local/mysql/include

Você terá a seguinte saída:

Building native extensions.  This could take a while...
Successfully installed mysql-2.7
1 gem installed

Conversão implícita e explícita no Ruby

Posted by Alberto Leal on December 1st, 2008

Existe um pouco de confusão quando estamos falando dos métodos: to_s e to_str. Qualquer objeto, no ruby, pode ser convertido para uma representação em string. Quando olhamos as classes no core nos deparamos com um método to_s (Por exemplo, execute Fixnum.methods e você verá o método), mas não vemos o método to_str. Pense que to_str é para conversão implícita e to_s é para conversão explícita.

Vamos ver um exemplo:

 

class Automovel
  def to_s
    "Carro"
  end

  def to_str
    "Fiat"
  end
end

auto = Automovel.new
puts auto
puts "O automóvel criado foi #{auto}"
puts "O automóvel criado foi " + auto

# Saída COM o método to_str definido
# Alberto:Desktop Alberto$ ruby post.rb
# Carro
# O automóvel criado foi Carro
# O automóvel criado foi Fiat

 

É possível notar que, quando definimos o método to_str estamos forçando uma conversão. Vamos executar o mesmo código acima, porém sem o método to_str definido:

class Automovel
  def to_s
    "Carro"
  end
end

auto = Automovel.new
puts auto
puts "O automóvel criado foi #{auto}"
puts "O automóvel criado foi " + auto

# Saída SEM o método to_str definido
# Alberto:Desktop Alberto$ ruby post.rb
# Carro
# O automóvel criado foi Carro
# post.rb:10:in `+': can't convert Automovel into String (TypeError) from post.rb:10

 

Vale ressaltar que, quando usamos o método puts, esse sempre chama o método to_s do objeto quando desejamos a representação textual de um objeto.

Vamos ver mais um exemplo: Quando tentamos concatenar uma String com um objeto do tipo Fixnum, diretamente, não conseguimos porque a classe Fixnum não possui o método to_str, para conversão implícita.

s = "Número: " + 007
TypeError: can't convert Fixnum into String
    from (irb):3:in `+'
    from (irb):3
    from :0

 

Agora, quando adicionamos o método em tempo de execução a classe Fixnum (via duck typing), conseguimos executar o código que antes acusava TypeError :

class Fixnum
  def to_str
    self.to_s
  end
end

s = "Número: "+ 007

Outra forma de executar o código, sem ter que adicionar o novo método a classe Fixnum, seria chamar o método to_s diretamente:

s = "Número: "+ 007.to_s

Rspec + Growl + ZenTest

Posted by Alberto Leal on November 28th, 2008

Existe uma aplicação para Mac OS chamada Growl. Através dessa é possível enviar notificações para serem exibidas no desktop.

Diversos programas o utilizam para enviar alertas ao usuário. Aproveitando essa característica, alguns desenvolvedores configuram o seu ambiente de desenvolvimento para receberem notificações com o resultado da execução dos testes da aplicação em desenvolvimento.

Caso você queria configurar, também, o seu ambiente de desenvolvimento, aconselho a leitura do post.

Read the rest of this entry »


Copyright © 2007 Alberto Leal. All rights reserved.