Rails Girl – Rails for Newbies

Ruby on Rails for Newbies

7 motivos para você começar a escrever o seu blog agosto 13, 2008

Filed under: Uncategorized — amandavarella @ 2:33 pm

Pessoal,
este post é pra incentivar quem ainda não começou a escrever o seu blog que o comece, já! Tem pouco tempo que este blog começou, e eu estou gostando muito da experiência. Veja se você possui algum desses pensamentos:
– Ah eu sou iniciante, não tem nada de interessante que eu escreva que possa interessar a outras pessoas.
– Tudo que eu for escrever alguém já escreveu.
– Eu tenho vergonha de postar alguma coisa errada.
– Eu não penso nada disso, gostaria de começar um blog mas não sei porque ainda não comecei!
Se vc possui algum destes, vou começar a citar uma série de motivos pra você deixar todos para trás e começar imediatamente a escrever seu blog de aprendizado!

1 – Você internaliza conhecimento: quando você está aprendendo algo novo, o conhecimento passa por um processo constante de internalização e externalização. Vc aprende, escreve código, do código escrito você aprende mais e por aí vai. Em um trabalho solitário, a única maneira de externalizar o seu conhecimento é através de código escrito. Porém, quando você escreve sobre o que você aprendeu, o conhecimento tem a oportunidade de ser internalizado mais uma vez, só que de uma outra maneira, através da linguagem humana, que é aquela que sabemos desde pequenininhos! Ou seja, vc vai estar ajudando o seu cérebro a fixar mais e mais os conceitos aprendidos!

2 – Você compartilha a sua experiência: nenhum blog tem o objetivo de ser a explicação definitiva sobre determinado assunto, sendo assim o pensamento “Mas várias pessoas já falaram sobre isso…” não é desculpa para não começar o seu próprio blog. Quando você posta sobre um determinado assunto, você não está postando apenas sobre a teoria do assunto, você está postando a sua experiência sobre aquele assunto, como funcionou, que dificuldades que você teve, ou seja, ali vai ficar registrada a sua percepção sobre o problema e o que você fez para resolvê-lo. Também pode ficar registrada a sua opinião sobre determinado plugin, e se ele é mesmo aquela maravilha que todos falam!

3 – Você ajuda ao tio Google (e a quem pesquisa!): quanto mais textos existirem sobre um assunto, mais fácil será para outras pessoas localizarem informações sobre este assunto. Enquanto a Web Semântica não pegar, ainda vamos ter que depender da digitação dos vários significados semânticos que um conceito pode ter. Claro que “O mestre” é bem esperto, mas ele não faz milagre. Então vamos ajudar a todos que buscam informações aumentando o vocabulário que pode ser utilizado para encontrar os blogs com os assuntos desejados.

4 – Você recebe feedback: quando você diz o que entendeu, ou como você resolveu determinado problema, a sua solução poderá ser avaliada por várias pessoas que já passaram pelas mesmas situações. Estas podem te ajudar a avaliar a sua solução, sugerindo maneiras alternativas que você poderia ter utilizado para resolver o mesmo problema. E o que acontece? Você agrega mais conhecimento. O blog é uma via de mão dupla!

5 – A primeira pessoa da sua audiência é você: antes de escrever para outras pessoas, você está escrevendo para você. Além da escrita te ajudar na consolidação do seu conhecimento, você terá também um lugar para registro físico desse conhecimento adquirido. Nós, Analistas de Sistemas e Programadores conhecemos bem a síndrome do “Hummm.. eu já fiz isso, mas não lembro como…”, então, seu blog é seu registro, seu blog é seu google! Registre todas as suas experiências e quando precisar terá fácil acesso a elas.

6 – Você não precisa só dar dicas extraordinárias e de primeira mão: as vezes se têm a falsa impressão de que para um blog ser bem sucedido ele precisa estar repleto da nata da informação do último segundo! Isto não é verdade! É claro sim, que exisem blogs que têm esta função, em geral são blogs dos Mentores, “dos caras”, eles estão na vanguarda do conhecimento, acompanhando tudo que tem de mais novo e filtrando a informação pra passar para nós, Newbies. Mas o nosso objetivo não é deve ser esse (pelo menos por enquanto!) o nosso pequeno problema de cada dia pode ser o grande problema que acabou com o dia de um cara que começou agora e está mais cru que você!

7 – Você tem um papel na comunidade: se você leu essas dicas até aqui, é bem provável que você seja um membro da comunidade rails. Como toda comunidade, cada um tem o seu papel, e a responsabilidade dos novatos que possuem “algum conhecimento” é passar este conhecimento para os hiper novatos, que não possuem conhecimento nenhum. As vezes os “hiper novatos” podem se sentir um pouco deslocados, já que nas listas os problemas discutidos são avançados e eles não conseguem nem se achar na sopa de letras e siglas, já que é tudo muito novo. Pela nossa experiência de constante aprendizado sabemos que é apenas questão de tempo até nos acostumarmos com os novos conceitos, mas porque não tornar este caminho mais suave? Esta é a nossa responsabilidade como não tão iniciantes assim, uma vez que a nossa linguagem ainda está muito parecida com a de quem está entrando agora. A ordem é colaborar!

Então, depois de todos esses motivos, o que você está esperando pra começar a blogar?

Anúncios
 

O que eu aprendi (ou não!) sobre Closures em Ruby agosto 12, 2008

Filed under: Ruby — amandavarella @ 12:07 am
Tags:

Hoje eu li o livro Learn to Program. Bem interessante pra quem não sabe nada de programação, ou para uma noção inicial sobre Ruby. Tudo corre bem, até o capítulo 10, cujos conceitos podem ser complicados até pro experiente. Eu confesso que quando li o capítulo 10, me senti um pouco como há cerca de 9 anos atrás, quando eu comecei a programar. Mas que assunto bizarro é esse? São as Closures (tb conhecidas como fechamento)! Eu já tinha ouvido falar, mas estou indo aos poucos, e aprendendo conceito a conceito, sem embolar o meio de campo. A idéia das Closures é simples: Um bloco de código, pode ser armazenado em uma variável e executado! Acredite, com esta abordagem é possível construir os códigos mais exóticos possíveis! Segundo o Chris Pine, autor do livro Learn to Program ele não consegue mais viver sem elas! Vou colocar uns exemplos do livro Learn Program para dar uma pequena demonstração:

saudacao = Proc.new do
  puts 'Olá!'
end

saudacao.call

Neste trecho de código você cria a instância “saudacao” da classe “Proc”, que servirá para você armazenar o código do seu procedimento. Depois você manda executar a “saudacao”. Neste caso, a saída do programa será “Olá!”

Como instâncias de Proc se comportam como quaisquer outras instâncias de variáveis, você também poderá retornar um Procedimento (isto mesmo, fiquei chocada! Retornar um procedimento ao invés de um valor!) um outro pequeno exemplo de retorno do livro (esse mais complexo):

def compor proc1, proc2
  Proc.new do |x|
    proc2.call(proc1.call(x))
  end
end

quadrado = Proc.new do |x|
  x * x
end

dobre = Proc.new do |x|
  x + x
end

dobreeEleve = compor dobre, quadrado
puts dobreeEleve.call(5)

Resultado

100

Nossa…compor recebe dois procedimentos como parâmetro, e retorna um terceiro procedimento como resultado da operação de proc1 e proc2. Ainda vou processar isto durante a noite! Realmente, pra quem nunca trabalhou com linguagens dinâmicas é um conceito bem diferente.
Eu não tenho a mínima pretensão de explicar tudo sobre Closures aqui (até mesmo pq eu não entendi tudo ainda!). Na verdade não sei se precisarei algum dia, acho que precisar não precisa, mas para determinadas coisas deve facilitar. Talvez quando estiver pensando “ruby” eu já tenha a sacada de como utilizar. A única mensagem que eu gostaria de deixar pros Newbies é que este é um conceito difícil sim, e no começo do aprendizado você pode perfeitamente conviver sem ele, considero que é um plus, um brinde da linguagem, de qualquer maneira é sempre bom saber como funciona, no caso de precisarmos ler o código alheio. As explicações profundas eu deixo pros profissionais:

http://sproutcorewithrails.org/2007/11/30/anatomia-de-ruby-blocks-closures

http://aprendaaprogramar.rubyonrails.pro.br/capitulo10

 

Partials, reutilização de código no Rails agosto 5, 2008

Filed under: Ruby on Rails — amandavarella @ 8:10 pm
Tags: ,

Partials são pedaços de página que podem ser reutilizados pra evitar replicação de código. Pra quem vem do mundo Java, as Partials fazem algo semelhante ao Tiles, vc vai juntando os “pedaços” conforme a sua necessidade. Então vai um simples, mas muito útil exemplo de Partials em Rails.

Vou utilizar o exemplo que eu tenho aqui, onde eu fiz o scaffold* para o modelo “reading”.
Na view index.html.erb foi gerado o seguinte trecho de código:

 
#index.html.erb

<% for reading in @readings %>
<tr>
<td><%=h reading.url %></td>
<td><%=h reading.text %></td>
<td><%=h reading.page %></td>
<td><%=h reading.time %></td>
<td><%= link_to ‘Show’, reading %></td>
<td><%= link_to ‘Edit’, edit_reading_path(reading) %></td>
<td><%= link_to ‘Destroy’, reading, :confirm => ‘Are you sure?’, :method => :delete %></td>
</tr>
<% end %>

Eu gostaria de reutilizar o trecho que está exibindo cada “reading”, então, eu vou retirar e colocar este trecho de código em uma Partial, assim eu posso chamá-la em qualquer outro lugar da minha aplicação, onde eu queira exibir as informações da mesma maneira.

Uma partial é um arquivo que começa com um “_”, underscore, underline…. então vou criar um arquivo _reading.html.erb (dentro da pasta de views de readings), e vou pegar todo o código que estava dentro do meu for. Este será o conteúdo da partial:
#_reading.html.erb

<tr>
<td><%=h reading.url %></td>
<td><%=h reading.text %></td>
<td><%=h reading.page %></td>
<td><%=h reading.time %></td>
<td><%= link_to ‘Show’, reading %></td>
<td><%= link_to ‘Edit’, edit_reading_path(reading) %></td>
<td><%= link_to ‘Destroy’, reading, :confirm => ‘Are you sure?’, :method => :delete %></td>
</tr>

E finalmente vou alterar o meu index.html.erb, substituindo:

#index.html.erb



<tr>
<td><%=h reading.url %></td>
<td><%=h reading.text %></td>
<td><%=h reading.page %></td>
<td><%=h reading.time %></td>
<td><%= link_to ‘Show’, reading %></td>
<td><%= link_to ‘Edit’, edit_reading_path(reading) %></td>
<td><%= link_to ‘Destroy’, reading, :confirm => ‘Are you sure?’, :method => :delete %></td>
</tr>

Por uma única linha:

#index.html.erb

<%= render :partial => 'reading', :collection => @readings%>

A partial receberá a collection “readings” como parâmetro.

Simples, bonito, e limpo!

Newbies Corner:
Scaffold é uma operação do Rails onde vc passa um nome de modelo e os campos, e ele gera uma aplicação CRUD (Create, Retrieve, Update e Delete) completa.
Ex: o comando “script/generate scaffold person name:string tel:number” vai gerar um cadastro completo de pessoas com nome e telefone, permitindo listar, excluir e alterar cada registro.

 

O segredo para fazer dinheiro on-line

Filed under: Negócios — amandavarella @ 1:35 am

Interessantíssima a palestra do David Heinemeier Hanson, o criador do Rails. Na palestra ele fala como ganhar dinheiro com aplicações web, sem necessariamente ter que ser um Google, FaceBook ou You Tube. Vários segmentos de negócio têm várias necessidades, e para você conseguir ganhar dinheiro na web são necessárias três coisas: uma boa idéia, um preço, e alguém que pague por isso, gerando lucro. Falando assim parece óbvio, mas a idéia principal é que vc não precisa vender esta idéia para uma única pessoa. Se você conseguir arrumar várias pessoas, pequenas quantias, já é um grande começo. Ele dá um exemplo, de 2.000 pessoas, pagando 40$ por mês, e vc consegue 1 milhão de dólares ao ano. Parece muito? Se considerarmos 400 pessoas, a 40$ ao mês, chegamos a quase 200 mil $, o que continua sendo bem razoável.
Ele cita a própria esperiência no Base Camp, a ferramenta de gerenciamento de projetos que ele fez pela 37 signals (e que deu origem ao rails). O desenvolvimento da ferramenta começou com 3 pessoas, que tinham outros projetos. Ele mesmo disse que dedicava apenas 10 horas por semana para o desenvolvimento do Base Camp. Após um ano de ferramenta, todos puderam se desvencilhar de suas outras atividades.
Os exemplos são bem motivadores, sempre enfatizando que o seu negócio não precisa ser o melhor, nem o único. Basta vc fazê-lo melhor do que alguém (obviamente alguém que tenha clientes) o faz. E que existem milhões de possibilidades e oportunidades.
É uma palestra que vale à pena assistir:


http://www.omnisio.com/startupschool08/david-heinemeier-hansson-at-startup-school-08

 

Criando uma Tela de Login julho 29, 2008

Filed under: Restful Authentication — amandavarella @ 1:32 am

Atenção: eu fiz isso com rails 2.1, não sei como funciona com as versões anteriores.

Depois de brigar um dia inteiro (e ao final do dia perceber que não precisava nada disso…) consegui criar uma interface de login, que como vocês verão aqui é muito simples.
Eu sabia que existia uma gem, ou um plugin sei lá.. que já gerava as interfaces para cadastro de usuário, login no sistema e talz.. mas eu não sabia qual era, e fiquei inutilmente o dia inteiro tentando tentar um plugin com um nome bastante sugestivo “login_generator”. Depois de muito pesquisar e bater cabeça, cheguei finalmente ao “restful_authentication” o plugin de nome nada sugestivo para a criação das nossas interfaces de acesso de usuário.
Para começarmos precisamos de um projeto, se vc ainda não o tem, para criá-lo digite:

rails meuprojeto

Com o seu projeto criado, vc deverá então instalar este plugin, com os seguintes comandos:

script/plugin source http://svn.techno-weenie.net/projects/plugins/
script/plugin install restful_authentication

Em seguida, gere os seus controles da seguinte maneira:

script/generate authenticated user sessions

MUITA CALMA NESSA HORA! REPARE, RESPEITE O SINGULAR E O PLURAL!!! user (no singular) sessions (no plural), gerará dois controllers um “users”e outro “sessions”. No tutorial que eu estava lendo estava errado! E eu perdi mais um tempo com isso… bem, eu ainda não entendi muito bem essa coisa de singular e plural do rails não, mas segundo o carinha de um mini-curso que eu assisti, isto é normal e a gente se acostuma com o tempo

Altere o seu arquivo routes.rb (dentro do diretório config) para que ele fique assim:

ActionController::Routing::Routes.draw do |map|
  map.resources :users
  map.resource :session, :controller => :sessions
  map.signup '/signup', :controller => 'users', :action => 'new'
  map.login  '/login', :controller => 'sessions', :action => 'new'
  map.logout '/logout', :controller => 'sessions', :action => 'destroy'  
end

Cuidado que no final do arquivo vem por default uns map.connect, tira essas linhas e deixa o arquivo como está mostrado acima.
Agora vamos criar a tabela de usuários com

rake db:migrate

Se o servidor estiver rodando, acesse a aplicação http://localhost:3000/signup.
Tente cadastrar os dados e Voilá! Vc tem uma tela de cadastro de usuários (após o cadastro, ele vai para a tela principal do rails, depois vc terá que configurar para onde vc quer que após o login do usuário o sistema vá)
Teste também http://localhost:3000/login, informando os dados do usuário que vc cadastrou para testar se está funcionando.

 

Eu troquei a Tv pelo Rails julho 13, 2008

Filed under: Screencasts — amandavarella @ 1:31 am

Tenho ficado cada dia mais surpresa com a quantidade de material de qualidade que o pessoal da comunidade rails, e as empresas envolvidas têm produzido por aí. Agora, a Locaweb está com umas palestras on-line no estilo do Treina Tom de alguns posts abaixo. O Akita anunciou em seu blog os “Locaweb Casts“, que segundo ele acontecerão toda semana. O horário eu achei meio ruim, pq é durante a semana e à tarde, mas o primeiro locawebcast foi gravado, então quem perdeu (como eu) teve a oportunidade de assistir. Espero que eles continuem gravando. O webcast foi muuuuito legal, e explicou vários conceitos que eu ainda não sabia do que se tratava. Ele contou um pouco da história do Rails e do Ruby, que pasmem, foi criada em 1993, antes do Java! Depois falou sobre os vários sites espalhados pelo mundo que foram feitos em RoR. Fez uma pequena demonstração da praticidade do Rails, no velho estilo blog em 15 minutos, mostrando estrutura de diretórios, os arquivos gerados, e dando uma pincelada em como o Rails se adapta perfeitamente às metodologias ágeis. Resumindo, foi muito legal e deu pra dar uma costurada nos conceitos que pra mim ainda estavam meio soltos. O próximo webcast acontecerá na sexta, 18/07, às 15:00 hs, não poderei assistir, mas espero que eles continuem gravando. Daqui pra frente vai ser cada vez mais difícil programar em outra linguagem!

 

Heroku! julho 10, 2008

Filed under: Heroku,Ruby on Rails — amandavarella @ 1:22 am

Esse site é muito legal. O nome dele é Heroku, é uma ferramenta para construção de aplicações on-line em rails, vc pode importar um projeto rails existente, ou criar um do zero. Dá pra fazer tudo que se faz no rails do nosso console, é impressionante! Ele tem suporte a várias outras características legais, como compartilhamento. Penei um pouquinho pra conseguir fazer o import de um projeto meu (ele só aceita arquivo no formato .tar.gz), tentei com vários compactadores, e por fim, o PeaZip compactou em um formato que o Heroku aceitou. Uma outra coisa é que o Heroku só aceita aplicações em rails 2.0.2 ( não sei se aceita 2.1), e a minha aplicação velhinha, em 1.2.3 não rodou muito bem não, mas consegui ver os recursos disponíveis. O legal eh que para cada aplicação sua ele cria um link http://aplicacao.heroku.com, ou seja, da pra fazer aplicações e imediatamente deixá-las disponíveis na web. Quando eu tiver migrado para o rails mais recente, com certeza vou brincar muito com o Heroku. Aí vai a carinha dele:
Tela do Heroku