Rails
Crontab dentro da sua aplicação rails com whenever
Æ!!
Hoje estou aqui para falar de uma coisa que quando vi pela primeira vez ignorei por parecer uma coisa boba, mas olhando melhor eu percebi que é uma idéia bem interessante. O que a gem whenever faz é manter o seu crontab de uma forma mais Ruby, e melhor, dentro da sua aplicação!
A principio parece estranho tentar manter o crontab dentro da sua aplicação, mas ganhamos muitas vantagens com isso:
- versionamento
- menos acesso ao servidor
- rapida atualização do crontab do servidor via capistrano
- forma mais legível de ver o crontab
E tudo isso não influi no crontab que você já possui ( e que muitas vezes tem muita coisa que não é relacionada com a aplicação ), pois o whenever cria uma seção que ele atualiza mantendo a seção antiga onde está.
Para instalar o whenever é a mesma facilidade de sempre:
sudo gem sources -a "http://gemcutter.org" sudo gem install whenever
OBS: Lembrando que a primeira linha só é necessária uma vez, se você já tem o gemcutter no seu sources então ignore-a.
Depois disso execute:
wheneverize .
O comando acima vai gerar os arquivos necessários para a utilização do whenever ( básicamente o config/schedule.rb ).
E a partir de agora você já pode atualizar o seu crontab com as suas configurações feitas no config/schedule.rb executando o comando:
whenever --update-crontab suaaplicacao
Quando você passa como parametro a sua aplicação ele cria um bloco apenas para as configurações da sua aplicação no crontab.
Mas é claro que você não vai precisar acessar o servidor e executar esse comando toda vez que você alterar o arquivo de schedule, para isso você provavelmente deve estar usando o capistrano para ser mais DRY. Se estiver usando inclua algumas linhas no seu deploy.rb:
after "deploy:symlink", "deploy:update_crontab" namespace :deploy do desc "Update the crontab file" task :update_crontab, :roles => :db do run "cd #{release_path} && whenever --update-crontab #{application}" end end
OBS: Se você tiver problemas no deploy com essa linha ( como se o comando whenever não existisse ), tente adicionar o path absoluto para o whenever.
E com isso a cada vez que você fizer um cap server deploy seu crontab será atualizado com as configurações contidas no config/schedule.rb.
Veja alguns exemplos do que pode ter no seu schedule.rb:
every 4.minutes do rake "ts:in" end every 1.day, :at => '5:25 am' do rake "bla_bla" end every [:monday, :thursday], :at => '11:59 am' do command "sudo rm -rf /" # claro! end
Nada do que eu demonstrei aqui é uma grande novidade, você pode ver mais exemplos de como usar no Railscasts e na própria página do plugin.
Espero que seja útil para mais alguem como está sendo para mim.
Há braços
Dev In Sampa
Nesse sábado, dia 28/11/2009 aconteceu aqui em São Paulo (obviamente!
) o Dev In Sampa! Um evento para desenvolvedores em geral, sem foco em uma determinada linguagem de programação, ou seja, um evento bem legal e pragmatico!
Perdi um pouco a hora, portanto não assisti o começo da palestra do José Valim, que por sinal é um assunto que muito me interessa, portanto recorri aos vídeos do @agaelebe para assistir o comecinho. Para quem quiser ver os vídeos confira no blip.tv do agaelebe.
Agora vamos para a programação e meus comentários:
José Valim – Tópicos de machine learning: classificação de textos
Como disse no começo do post, eu perdi o começo da palestra do Jose Valim por que eu me atrasei ( foi por um bom motivo ), mas compensei depois assistindo o vídeo.
A palestra foi muito boa, e abordou um dos tipos de tema que eu gosto, machine learning é bem interessante! Essa é uma das coisas que eu pretendo estudar só por diversão, por que parece ser bem legal.
O @josevalim fez sua tese sobre classificação de textos, portanto conhece bem do assunto e foi muito interessante ver as pesquisas dele consolidadas e simplificadas em uma apresentação.
Rodrigo Yoshima – Design de Software: As técnicas esquecidas…
O @rodrigoy fez uma palestra bem legal comentando sobre várias técnicas esquecidas sobre design de software, e muitos programadores que assistiram essa palestra devem ter se visto em várias situações por ele citadas ( eu fui um deles em alguns pontos ). Algumas das coisas citadas foram:
- Design incremental Nunca pense naquela história de “Preciso do pedido para poder fazer a tela de cadastro” sempre comece por aquilo que agrega mais valor. Faça as coisas sempre usando um pensamento incremental, criando testes para que quando você resolva um bug não crie mais outros por não saber as consequências de suas modificações. Sempre tomar cuidado com o design incremental para que ele não se torne um problema pelo mal crescimento da sua aplicação.
- Tomar cuidado com arquiteturas monolíticas / egípcias Arquiteturas difíceis de refatorar, que usam componentes pesados, quem ninguém sabe como foi feita e etc.
- Separar a função de cada unidade, não deixando que o produto tenha que saber sobre vendas, por exemplo.
- É melhor um design ruim com testes do que um design bom sem testes por que com testes você pode refatorar, agora sem testes a situação já muda bastante.
Entre outras coisas muito interessantes que eu não vou mencionar por que senão meu post vai ficar enorme, mas assista o vídeo e veja as dicas interessantes que ele dá.
Primeiro Coffee break para encontrar os amigos e bater papo! Tinha bastante gente do Guru-sp por lá ( @almeidaricardo, @shadow, @rafaelrosafu, @scalone, @bbcoimbra, @nelsonmhjr, @_bojak, @cassiomarques, @dcreq e mais um monte de gente! ), foi legal para bater um papo com os conhecidos.
Só para constar, o Ronaldp Ferraz (@rferraz) veio falar comigo sem crachá e sem cavanhaque, e eu obviamente não conheci, tinha que se apresentar formalmente ( ou seja, com cavanhaque! O @tinogomes já aprendeu! haha ).
Ronaldo Ferraz – Criando sua própria linguagem de programação
Palestra muito boa do @rferraz!
O assunto foi bem denso, mas bem interessante, ele mostrou alguns conceitos e informações interessantes sobre como criar e brincar com a sua própria linguagem de programação de uma maneira não tão difícil usando Treetop e Ruby.
Como muitos já sabem o Ronaldo tem conhecimento infinito em linguagens de programação, portanto a palestra foi bem legal com vários exemplos em várias linguagens.
João S. O. Bueno – Desenvolvimento de jogos com Python
Puxa vida…Essa palestra foi um grande 417 ( Código de retorno do HTTP para Expectation Failed ), por que como muitos sabem eu adoro desenvolvimento de jogos, e fiquei muito feliz por ver uma palestra desse segmento nesse evento. Outra coisa que me entusiasmou bastante foi o fato de ser com Python, que assim como Ruby é uma linguagem que eu gosto bastante, mas em outra palestra que eu tinha visto ( no CONISLI 2008 ) o palestrante não foi muito feliz com o conteúdo. Enfim, e fui com muita vontade de ver essa palestra.
No início da palestra quando falaram o nome do palestrante e eu o vi, percebi que parecia familiar, e por incrível que pareça…Era o mesmo do CONISLI 2008… Mas até aí tudo bem, agora o nível do pessoal é diferente e já se passou mais de 1 ano desde a ultima palestra, ou seja, essa prometia ser bem melhor.
Como puderam ver pelo começo do post, foi um grande engano meu, apesar de o palestrante falar que ia focar mais em jogos já que o pessoal já conhecia Python, ele ficou muito em Python e no finalzinho mostrou alguns joguinhos feitos em PyGame, como se a idéia da palestra fosse mostrar que Python é legal (que nós já sabemos!
) e dá para fazer jogos tambem.
Enfim…Me decepcionou…
Intervalo para almoço
O Almoço foi meio corrido por que o evento estava meio atrasado, mas mesmo assim deu para conversar bastante com a galera do Guru-sp no shopping ( não me pergunte qual ).
Guilherme Silveira e Adriano Almeida – Do REST ao RESTFul
Na volta do almoço tivemos uma palestra teórica sobre REST e RESTful, que por sinal abriu muito a mente sobre o assunto. Mesmo o assunto sendo teórico o Guilherme Silveira e o Adriano passaram muito bem a idéia e souberam conduzir bem a palestra para manter o conteúdo bem dinâmico.
Nando Vieira – Escrevendo testes no JavaScript
Aqui um assunto que vem me interessando cada vez mais, testes! E como eu sempre gostei de Javascript, a palestra foi bem relevante. Infelizmente o Nando Vieira não conseguiu mostrar todos os exemplos que ele tinha planejado, mas foi bem interessante ver o live coding, e as amostras de testes para determinadas coisas. Gostei bastante da syntax do JSpec, não sei como fica a integração dele com o prototype ( que é o que eu estou usando atualmente no trabalho, mesmo preferindo JQuery ), mas pretendo dar uma chance para ele assim que possível.
Luis Cipriani – Web em tempo real com Ruby e XMPP
Bem legal o case que o Cipriani mostrou sobre a sua aplicação da maratona de basquete, achei muito interessante as ferramentas que ele usou, e vi que ele soube passar bem as informações sobre o XMPP que foram necessárias.
Coffee-break
Agora sim um coffee break que deu um tempinho para conversar com uma outra galerinha como o @rferraz, a @narwen, o @fabiokung e mais outra galera.
Ricardo Almeida – Buscas poderosas com Solr
Estava curioso desde o ultimo post do @dcrec sobre o Solr, e a palestra do Ricardo foi o ponto para tirar as minhas dúvidas. Vi muitas vantagens do Solr sobre o Sphinx e nenhuma do Sphinx sobre o Solr, acho que vale a pena tentar uma migração num futuro não tão distante.
Radamés Ajna – Arduino – Computação Física
A palestra do Radamés foi demais! Além do Arduino ser fantástico, o Radamés soube apresentar muito bem, mesmo com alguns problemas nos slides ele mostrou muito bem algumas coisas legais que dá para fazer com o Arduino, sempre com exemplos muito interessantes de coisas que já fizeram ou que ele pretende fazer.
A interface para mexer com arduino realmente não parece ser tão complexa, e eu gostaria mesmo de ter algum conhecimento em eletronica nesses momentos, mas quem sabe algum dia eu tiro um tempinho para dar uma brincada.
Fabio Kung – Cloud Computing. E eu com isso?
Para fechar o evento tivemos uma palestra muito legal do Kung mostrando o que “ele acha” que é cloud computing, e os tipos de cloud computing que são oferecidos ( IaaS, PaaS e SaaS ). Ele mostrou como funciona e por que são usados os cloud computings atualmente, e como estão as experiencias dele com cluod computing atualmente. Achei a palestra bem legal, e é interessante ver as opiniões e experiências de alguem que realmente está vivendo essa parte de cloud computing.
Conclusão
O evento terminou bem atrasado ( mais de 20:00 ), mas valeu muito a pena ter ido. Há tempos estava sentindo falta de um evento que não levasse em consideração apenas uma linguagem de programação, algo que fosse mais pragmático mas que fosse totalmente voltado a desenvolvimento.
Parabens a todos os organizadores do evento e espero ver vocês novamente na próxima edição!
Há braços
Rails Summit 2009
Æ!!
Esse é um post para relatar como foi o Rails Summit Latin America desse ano!
Já começo o post com um grande #win para a organização do #railssummit, por que eles tem tomadas para todos e wi-fi liberado para todos os participantes, o que ajuda para que pessoas como eu possam ficar postando no blog durante o evento,
Vamos ao evento!
Rails Insurgency – Chad Fowler
A palestra foi muito interessante e o Chad Fowler falou sobre como é a dificuldade de implantar uma aplicação Rails em uma grande empresa quando você tem grandes gerentes que te enchem de perguntas do tipo: “Rails faz X?, “Rails faz Y” até que voc6e responda um não para que ele possa dizer: “Aháá! Então não podemos usar”. O Chad Fowler já foi um desses gerentes e decidiu passar a experiencia de um desses gerentes e por que eles pensam dessa maneira.
Uma outra coisa bem legal que o Chad comentou foi sobre fazer um modelo junto com o seu cliente na hora do planejamento, até por que você consegue fazer isso facilmente com o Rails e até mostrar uma pequena funcionalidade com um Scaffold sem muito transtorno, e seu cliente pode facilmente ver se é isso mesmo que ele está pensando.
Gregg Pollack – Na vanguarda da performance em Rails
O Greg Pollack falou sobre page scaling Rails, comentando sobre uma grande quantidade de plugins para medir e ajudar a corrigir alguns problemas de escalabilidade que são detectados. Foi apresentado ferramentas para melhorar performance de banco de dados, para verificar quais queries que podem ser melhoradas, onde podem ser incluídos índices e outras coisas bem interessantes.
No fim da palestra ele falou sobre o madmimi que ajuda a lidar com um dos grandes gargalos de aplicações, que é quando se tem que trabalhar com grandes listas de e-mails.
Para saber os outros assuntos que o Greg falou é só ver no blog do EnvyLabs: http://blog.envylabs.com/summit
Carlos Brando – Como o Rails funciona por dentro
Agora começa o problema por que temos que escolher uma palestra e eu fiquei em dúvida entre a palestra do Ilya Grigorick e a do Carlos Brando, mas no fim das contas resolvi assistir a do Carlos.
O Carlos Brando falou sobre como o Rails funciona por dentro, usando a sua experiência na criação de um framework ( que ele está fazendo na nova empresa que está trabalhando ), ele falou um pouco sobre como o Rails trata as requisições, como utilizar as coisas certas de Rails quando se está fazendo um framework, e comentou um pouco sobre o framework que ele está criando como exemplo.
Achei a palestra muito superficial…Achei que o Carlos fosse pegar pesado mostrando bastante coisa do Rails, mas ele decidiu mostrar algo mais simples pois ao mostrar para algumas pessoas percebeu que elas estavam achando meio massante. Enfim, como ele mesmo disse, não dá para agradar a todos, mas na minha opinião a palestra foi fraca
José Valim – Aprenda a customizar os geradores do Rails 3.0
A palestra do José Valim foi bem legal! Ele falou sobre o Thor e sobre os geradores do Rails 3, como você poderá facilmente customiza-los e como o thor pode te ajudar em suas aplicações.
Ele mostrou um pouco do motivo de se trocar utilizar o thor, e por que os antigos geradores são ruins do jeito que estão. Um exemplo legal foi mostrar como um plugin tem que fazer para gerar coisas, tomando como exemplo o RSpec, que com um spec_model vai ter que gerar migrations tambem, sendo que não é do escopo do RSpec ter que se preocupar com migrations, mas do jeito que está atualmente ele apenas pode trocar o “script/generate model” pelo “script/generate rspec_model”. Utilizando o exemplo anterior como base foi mostrado como os novos geradores vão ajudar nas tarefas dos plugins a partir de agora.
Gostei da palestra e acho que o José Valim conseguiu passar bem o que ele queria.
David Chelimsky – RSpec e Cucumber alem do básico
A palestra do chelimsky foi sobre o uso do RSpec e do Cucumber, que na minha opinião foi bem similar a palestra do ano passado, mas mesmo assim mostrou algumas boas práticas sobre RSpec que foram interessantes.
Eu ainda tive a chance de conversar com o Chelimsky no final da palestra para fazer umas perguntas sobre o Spork e como melhorar o tempo de execução dos meus testes que demoram muito para serem executados, tornando o desenvolvimento com o autospec não tão bom quando poderia ser.
Fabio Akita – Agile, além do caos
A palestra do Akita foi uma grande viagem de pensamentos aleatórios dele sobre a teoria do caos baseado nos estudos que ele tem feito nos últimos tempos. Eu achei que foi muita informação para um curto período de tempo para as pessoas, mas quem conseguiu abstrair muita coisa e entender qual foi a finalidade da palestra deve ter gostado bastante, por que a idéia central é bem interessante.
Matt Aimonetti – O Futuro do Ruby & Rails
O Matt falou sobre as novidades que virão no Rails 3, sobre o que poderá ser incorporado do merb e o quanto “plugável” o Rails 3 será. Ele não falou apenas de Rails, mas falou tambem um pouco de Ruby e quais são as novidades em termos de velocidade.
Desconferência
E chegou a hora que muitos estavam esperando, a desconferência!
Na ultima desconferência o Elomar deu show falando um pouco sobre grupos de estudo, e muita gente estava esperando coisas legais para esse ano.
Teve muita coisa interessante, mas infelizmente não pude ficar até o final por causa da minha faculdade, mas o que pude ver foi:
- Pessoal do Guru-sp apresentando o grupo e falando sobre o crescimento e futuras atividades ( eu fui o primeiro a falar!
) - George Guimarães falando do Devise
- Aldo França contando sua história para aprender Rails e fazendo um blog em 15 minutos ( com 11 anos de idade )
- Guilherme Chapiewsky e Henrique Bastos falando sobre os eventos e grupos que eles participam no Rio
Sei que teve muito mais coisas legais alem disso, mas essas foram as unias que eu pude ver e achei todas bem legais!
Acho muito interessante essa idéia de desconferência, pois serve tanto para integrar o pessoal e dar risada quanto para apresentar projetos interessantes e muito úteis para alguns.
Sem contar que eu ganhei um Ipod nano da ThoughtWorks em um sorteio pouco antes da desconferência.
Manhã do primeiro dia
Agora vem a parte triste…Não pude estar no evento no segundo dia de manhã.
O ikwa não liberou todos os programadores para ficar lá em tempo integral, portanto fizemos um revezamento, e para mim ficou o segundo dia de manhã.
Perdi duas palestras que eu gostaria muito de assistir. A primeira é do Carlos Vilela que falou sobre o uso do Ruby na ThoughtWorks e a segunda é do Nando Vieira que estava falando do Ruby 1/9.
Uma coisa que me animou um pouco foi saber que as palestras eram simultâneas, portanto eu ia perder uma de qualquer jeito.
Marcos Tapajós – CouchDB no Rails
Como não pude estar no evento no segundo dia de manhã eu já cheguei direto para a palestra do Tapajós sobre CouchDB, que por sinal foi bem interessante! O Tapajós mostrou um pouco de como é trabalhar com CouchDB e como deve ser a mudança de paradigma da saída de um banco relacional para ir para um banco orientado a documentos.
Como o próprio Tapajós disse, a idéia da palestra dele era dar um Overview do couchDB e depois abrir para perguntas para tirar as dúvidas do pessoal, e na minha opinião ficou muito bom!
Bruno Miranda – Rails não escala
O Bruno Miranda apresentou “juntamente” com o Jason Seifer (infelizmente o Jason Seifer não pode estar no railssummit por problemas com a viagem, portanto apenas enviou vídeos da parte que ele ia falar) sobre “Rails não escala”, falando sobre a aplicação que está em baixo do canal de audio do MSN e como eles conseguem manter uma infra escalável usando Rails.
Vinicius Teles – Do serviço ao produto
Uma das melhores palestras do Rails Summit ( as palestras não técnicas são sempre as mais marcantes, por melhor que sejam as técnicas… ), onde o Vinícius contou sua história passando por bons e maus momentos com a sua empresa, começando com serviços e terminando em produto.
Coisas interessantes da palestra do Vinícius foi o grande enfoque em “reserva”, ou seja, sempre tenha uma reserva em caixa para segurar a sua empresa nos piores momentos ou ajudar quando vem aquela grande oportunidade. Apenas investir em passivo ( como carros por exemplo ) quando isso não for um grande empecilho, por que no começo um carro (por exemplo) só vai te trazer prejuízo com desvalorização e manutenção.
O Vinícius deu ótimas dicas para quem quer começar uma empresa, várias dicas de experiencias que ele passou, e me animou muito a preparar as coisas par a empresa que eu vou abrir no futuro. Acho que já posso começar a me preparar.
Obie Fernandez – Dominando a arte do desenvolvimento de aplicações
Outra palestra no mesmo nível da palestra do Vinícius ( também não técnica ), portanto muito boa!
O Obie Fernandez falou sobre como dominar o desenvolvimento de aplicações, e achei muito interessante os exemplos que ele passou sobre musica, comentando da quantidade de esforço de um grupo de músicos em termos de horas e o que isso implicava em seu nível. Ainda sobre o tempo de estudo, não é “apenas estudo” por que pratica não leva a perfeição, “prática perfeita leva a perfeição”. Programação é como musica, é sempre bom pegar musicas dos outros para estudar, por que assim você pode aprender sutilezas para fazer a sua.
A palestra do Obie assim como a do Vinícius teve frases chave como:
- Se eu estiver trabalhando e um dia descobrir que eu não estou feliz eu simplesmente saio
- Fuck the enterprize ( muito boa! haha )
- Pratica não leva a perfeição, pratica perfeita leva a perfeição
Gostei bastante da palestra, e bateu certinho com algumas coisas que estou pensando para os meus estudos para os próximos tempos.
#horaextra
O #horaextra foi muito legal! Tivemos um problema com o primeiro bar que fomos por que não podiam entrar menores e nem com short, portanto o Mergulhão e o Aldo ficariam de fora, então o pessoal foi para outro bar, que ficava do lado desse e lotamos o lugar
Como o bar era pequeno para a quantidade de pessoas, as coisas demoravam um pouco para chegar, mas nada que uma boa conversa não pudesse ajudar você a relevar isso. A mesa era gigante, mas as pessoas que a voz alcançava eram: Carlos Brando, r4f4e1, Vinícius Baggio, Shadow e Agaelebe.
Batemos papo por um bom tempo, com participação de mais uma galera ( Akita, Rafael Rosa, Thiago Scalone …. ), e acabei saindo de lá mais de 00:00.
Aqui chega o fim do evento e o que fica são os bons momentos passados por lá, o conhecimento adquirido e a vontade de participar novamente no ano que vem! Parabens aos organizadores ( e patrocinadores! ) do evento, por que ficou ótimo!
Se quiser ver as fotos que eu tirei no evento veja o album no meu picasaweb.
Há braços
Encontro de numero 5 do Guru-sp
Æ!!
Nesse sábado aconteceu o quinto encontro do Guru-sp!
O encontro estava marcado para as 10 da manhã com uma seção para iniciantes e começou as 10:30 ( sempre atrasa um pouquinho né? hehe ), já com um bate papo legal coordenado pelo @rafaelrosafu após uma breve apresentação de todos os participantes.
Rails para iniciantes
Nessa primeira seção tiveram muitas conversas interessantes sobre algumas filosofias Rails, como DRY, REST, TDD, Test all the Fucking Time, Skynny Controllers and Fat Models e mais algumas outras coisas bem interessantes que fomentaram uma ótima discussão sobre quais os melhores padrões para se seguir quando se constrói uma aplicação Rails ( sim, falamos tomando como base uma aplicação Rails ), como utilizar plugins como o ResourceController ( que tem seus prós e contras ), manter seus scripts num lugar diferente da pasta scripts, que é a pasta padrão para scripts “internos” do Rails e tentar centralizar em uma pasta dentro de lib, além de usar Rake sempre que possível para essas tarefas ficarem organizadas e de fácil acesso.
Uma parada rápida para o almoço no Shopping e lá se vão mais de 20 programadores para comer a bater papo!
DataMapper
Após o almoço tivemos a palestra sobre DataMapper do @rafaelrosafu ( olha ele aí novamente! ) que explicou muito bem dando várias referências sobre o seu blog pessoal e como ele fez para utilizar o DataMapper ao invés do Active Record. O Rails é mais difícil de se sair do padrão, mas ficará mais simples de se escolher um ORM quando chegarmos ao Rails 3. Aproveitando o gancho de DataMapper eu falei um pouco de Sinatra dando alguns pitacos na condução do Rafael.
Git
Após a palestra de DataMapper passamos para uma palestra de Git com o Douglas ( qmx ), que foi muito interessante e participativa! Pegamos uma galera do grupo para fazer um scaffold e commitar no projeto para começar a ver coisas diferentes, como merges, rebases, mudanças de commit, e algumas outras coisas legais, como usar tags, procurar por um código em meio aos commits e outras coisas interessantes! =)
Levantamos a idéia de participar do Rails Rumble, aproveitando que o Diego Carrion estava conosco e comentou que a GoNow estava patrocinando 3 equipes para o evento, mas não conseguimos ter uma idéia legal para propor para o concurso.
Coding Dojo
E finalmente como ultima coisa do dia tivemos o nosso coding dojo, que era uma das coisas que eu mais estava esperando nesse econtro! O Vinicius Baggio “se ofereceu” ( com um empurrãozinho meu…hahah ) para ficar com o notebook ligado no datashow e conduzir o código. O dojo foi muito divertido com participação de todos da sala, o que sempre trazia novas idéias para fazer um código melhor e agregava conhecimento para todos. Fizemos TDD para construir umas classes simples de usuário.
Conclusão
Gostaria de agradecer ao André e o pessoal da Voice Technology por todo o apoio ao evento e ao grupo, com local, organização, fotos e mais várias outras coisas! Guys you Rock!
Infelizmente algumas pessoas não puderam aparecer, e outras apareceram por pouco tempo ( o Marcelo Castellani ), por motivos pessoais, mas espero que estejam presentes no próximo!
O evento realmente valeu a pena e aprendi muita coisa por lá, alem de conhecer muita gente interessante tambem! Agora é marcar os próximos e esperar que o grupo cada vez cresça mais e podemos fortalecer as amizades e conhecimentos!
Há braços
Começando a falar de Ruby
Æ!!
Se você já conhece Ruby, ignore esse post! A idéia do post é mostrar um pouco da linauagem Ruby para pessoas que não conhecem nada sobre ela.
Eu, claro, acho muito bizarro interessante que muita gente por aí ainda não conhece Ruby, mesmo com a grande popularização do Rails, e eu chego a ouvir coisas assim:
“Não é você que programa naquela linguagem esquisita?”
Cheguei a ouvir do meu “professor de algoritmo” ( perdeu meu respeito ):
“Gostei desse algoritmo que você fez nessa linguagem esquisita aqui”
Há muitas pessoas que já ouviram falar em algo relacionado a Ruby apenas quando leram alguma coisa na Info falando de RubyOnRails. Portanto, resolvi escrever alguns posts sobre a linguagem para passar para esse pessoal que ainda não conhece nada. Pretendo que esse seja o post introdutório de vários capítulos passando por partes interessantes da linguagem.
Então…Vamos falar de Ruby!
Ruby é uma linguagem interpretada, criada pelo japonês Yukihiro “matz” Matsumoto e liberada publicamente em 1995. Desde lá o Ruby vem aparecendo bastante no mundo de tecnologia, sendo que a partir de 2006 teve um grande boom de comentários, ainda mais com o maior aparecimento do Rails.
Uma coisa que me irrita bastante é as pessoas associarem diretamente Ruby com Rails, portanto preciso deixar isso claro…Rails não é Ruby!
Rails é um framework para desenvolvimento web que utiliza a linguagem Ruby para o tal. O Ruby tem bem mais coisas legais do que só o Rails.
Como o Ruby é uma linguagem interpretada, podemos facilmente fazer um Hello World em Ruby:
puts 'Hello World'
Isso aí! Apenas uma linha! Uma linguagem totalmente orientada a objeto e você não precisa necessáriamente criar uma classe, um método ( public static void main… ) e escrever mil comandos Hierarquicamente para escrever algo!
O interessante do Ruby é que tudo é um objeto, ou seja, se você escreve o numero 10 ele já é um objeto, tendo seus próprios métodos, como por exemplo:
10.times { puts 'Vou estudar Ruby' }
No caso acima usamos um dos métodos do 10 ( que é da Classe Fixnum ) que é o método times, que faz um loop 10 ( ou qualquer outro numero Fixnum que estivesse aqui ) vezes fazendo o que está dentro do bloco, no caso, imprimir “vou estudar Ruby”.
No Ruby você consegue modificar métodos em tempo de execução! Uma classe que não possuía nenhum método pode possuir 10 em tempo de execução bastando que seu código os inclua lá, e isso é uma coisa muito legal!
A sintaxe da linguagem foi feita para ser simples, você tem vários métodos facilitadores, inclusive com uso de “?” ( interrogação ) para alguns métodos, como por exemplo para descobrir se a variável está não retorna nada:
variavel.nil?Aqui temos uma pergunta explícita, que você olhando isso intuitivamente lhe vem duas respostas: Sim ou não ( nem me venha com talvez
),o que mostra que você olha um código Ruby e facilmente distingue muita coisa.
E tem bem mais coisas interessantes!
Tá…E por que diabos eu deveria usar Ruby
Aí que está! É aí que entram as coisas legais, como:
Rails
Agora sim você pode usar esse cara aí em cima para desenvolver aplicações bem legais usando todas as facilidades que o Ruby pode te oferecer
Shoes
Uma biblioteca bem interessante para desenvolvimento desktop multiplataforma, onde você consegue fazer muita coisa legal.
JRuby
Olha que legal, se você gosta bastante do Java, você pode rodar programas Ruby em cima da maquina virtual Java, o que é bem legal, até por que, a velocidade do JRuby, já passou a do MRI ( Matz Ruby Interpreter, ou a versão core oficial do Ruby, feita pelo Matz ).
Inclusive você pode importar várias bibliotecas do Java e tudo mais.
Iron Ruby
Você usa a plataforma .NET da Microsoft? Então procure por esse cara! Eu não tenho muito a comentar por que não uso .NET.
É claro que não existem só esses aí em cima, apenas estou citando algumas coisas legais, mas se você procura por desenvolvimento web você pode escolher Sinatra, Merb ( ainda não se fundiu com o Rails, mas isso vai acontecer na versão 3 do Rails ), ou outros.
E se você apenas pensa em desenvolver para Desktop, alem do Shoes, você pode escolher, o RubyGTK, o MacRuby ( para usuários MAC ) ou até o FXRuby!
Se você não é programador, e trabalha com administração de sistemas, por que não utilizar Ruby para automatizar as tarefas? É fácil, tem manutenção simples, vem padrão em várias distribuições Linux…Não tem desculpa!
Meu foco nesse post não é abordar a fundo nenhuma das ferramentas que eu citei acima, e sim apenas dar um overview de tudo que você pode fazer usando essa linguagem.
Puxa, gostei! Como usar?
Moleza! Está no Linux né? Se estiver usando Ubuntu só dê os comandos mágicos:
sudo apt-get install ruby irb rdocNão está no Linux? Humm…No Windows é fácil tambem, baixe o executável e instale. Não tive muito contato com um mac ainda para instalar coisas e tudo mais, mas me parece fácil.
Basta clicar aqui e pegar os arquivos necessários para a instalação!
Vixe…Instalei, e agora?
Agora é hora de brincar um pouco com a linguagem para saber como ela funciona! Eu recomendo você a entrar no IRB ( Interactive Ruby Shell ) e começar a brincar!
Para acessar o irb é aquela moleza de sempre, apenas entre no terminal e chame por irb ( acho que funciona assim no Windows tambem )!
Lá você pode tentar executar uns códigos, inclusive os poucos exemplos que eu postei aqui, é muito legal para você conhecer a linguagem, descobrir uns métodos e tudo mais.
Já estou no IRB, mas eu não sei fazer nada…
Bem, agora é partir para as cabeças!
- Eu recomendo você a começar lendo o tutorial de Ruby do TaQ que é um material bem legal para começar.
- Se seu ingles é bom ( não precisa ser fluente, mas você precisa saber ler e enteder ) eu aconselho firmemente você a participar de algum curso Core do Rubylearning.org, e lá você vai aprender bastante coisa, alem de se divertir bastante.
- Leia alguns dos livros gratuitos que estão disponíveis na web gratuitamente e em português! Eu recomendo o Aprenda a Programar e o (comovente) guia de Ruby do Why. ( obrigado pela dica Abraão )
- Participe de Grupos de usuários para aumentar seus conhecimentos e conhecer pessoas que tambem estão interessadas na linguagem e sempre estudando! Se você está em São Paulo eu recomento fortemente você a participar do GURU-SP!
- Fique de olho aqui no blog que eu pretendo começar a postar umas coisas básicas, mas não espere somente por mim e já inicie seus estudos!
Bem, com isso você já tem uma pequena base do que é o Ruby ( e sabe que o Rails é apenas um framework feito em Ruby ) e já pode começar a se divertir com ele!
Há braços
Rails X Django
Æ!!
Como todos sabem eu sou do mundo Ruby/Rails ( Não sou xiita mas é o que mais gosto ) e de vez em quando começo a brincar com coisas diferentes para poder formar a minha própria opinião sobre o assunto. No mes de fevereiro me surgiu um projeto bem interessante para trabalhar, pessoas legais, oportunidade legal, bem interessante! O projeto seria feito em Python/Django, e achei bem interessante a idéia de poder comparar várias coisas do Rails com o Django.
Bem…Vamos as minhas comparações:
Pontos fortes
- Como primeiro argumento, e incontestável para mim, tenho que dizer que o admin do Django é muito legal! Você consegue fazer coisas bonitinhas e funcionais com uma facilidade espantosa! Sei que no Rails podemos fazer um scaffold ( ou até usar o ActiveScaffold, mas não é tão bom ) e criar facilmente um CRUD para mexer nos dados, mas isso não é um admin pronto, é apenas uma forma fácil de se manipular os dados. Penso eu que com o Rails seja mais facil de se criar um admin personalizado, com Design próprio, mas gostei bastante da solução a curto prazo do Django.
- Achei bem interessante como podemos fazer a divisão de trabalhos com o nosso HTML(er) / JavaScript(er), por que o Django dá pouquíssima liberdade para o template com relação a código, ou seja, você define na sua view as query’s que vão ser mandadas para o template e no template ele vai usar apenas o que você pode mandar, e não vai poder consultar ou fazer maiores alterações no conteúdo, portanto, quem deve cuidar de como o conteúdo vai chegar ao template são os programadores que vão enviar os dados para quem vai fazer a integração com o layout.
Pontos fracos
- Não encontrei uma padronização / centralização para os plugins do Django…Você encontra vários modos de instalação para determinados plugins, alguns vem com setup.py, outros falam para você jogar na pasta do Python. Não tem algo centralizado como as gems do Rails ou os próprios plugins para jogar na pasta vendor/plugins, ou usar um script/plugin install …
- Não cria uma estrutura de pastas, deixando que você faça o que bem entender com a estrutura, ao invés de usar uma convenção sobre configuração.
- Talvez seja a inexperiencia, mas eu não achei legal o que tivemos que fazer com o settings, pois cada um precisava colocar uma configuração diferente de diretórios de imagens, ou algumas configurações referentes aos plugins ( filebrowser no caso ), portanto cada um tinha que ter um settings.py diferente, informando o settings.py quando vamos executar alguma coisa.
- Não me acostumei muito bem com o esquema de indentação do Python…Não que seja ruim, mas como estavamos trabalhando em sistemas operacionais diferentes de vez em quando aparecia um indentation error por causa de conversões de tabs em espaços e tal. Sei que esse argumento vai ser facilmente contestado com um: “É só configurar o seu editor de texto” ou “usa um editor de texto multiplataforma”, mas mesmo assim…A idéia da indentação é legal, mas ainda me atrapalha um pouco.
Bem, é isso! Essas foram as minhas primeiras impressões do Django, como disse, não tinha experiência com o framework e muitas coisas poderiam ser evitadas mais facilmente, ou feitas de um modo bem melhor.
Continuo gostando bastante do Rails, mas achei muito legal várias idéias do Django, e acho que tem aplicações legais dependendo do projeto que você for usar.
Há braços
Search
Recent Posts
WP Cumulus Flash tag cloud by Roy Tanck and Luke Morton requires Flash Player 9 or better.

