Vaga de estágio para desenvolvimento de software no Rio

Posted February 1st, 2011 in Utilidades by felipepavao

Este post é bem rápido para anunciar que estou fazendo um processo de seleção para empresa de um amigo. Ele procura por estudantes cariocas que comem Informática com arroz e feijão e querem uma oportunidade de crescer e aparecer. Se você conhecer alguém assim, por favor, passe a frente o link a seguir:

Estágio de desenvolvimento muito legal

Obrigado pela ajuda.

Gem MySQL no Mac OS x Leopard

Posted June 6th, 2010 in Desenvolvimento by felipepavao

Essa dica é rápida e serve para quem tem problemas ao instalar a gem do MySQL toda vez que vai preparar um ambiente de desenvolvimento Rails. Se você instalou o MySQL executando o .dmg, faça a instalação da gem igual ao que foi sugerido no link abaixo.

http://wonko.com/post/how-to-install-the-mysqlruby-gem-on-mac-os-x-leopard

Fazendo dessa forma, você conseguirá definir os paths corretos para os executáveis do MySQL.

Até a próxima.

Criando um sitemap.xml em Rails

Posted May 3rd, 2010 in Desenvolvimento by felipepavao

Dica rápida para quem está precisando criar um arquivo sitemap.xml, aquele mesmo que auxilia os navegadores a indexar melhor as páginas de um site.

Levando em consideração, neste exemplo, que temos um root_controller.rb, criaremos um método sitemap nele.

def sitemap
    @urls = [
              ["1.0", "http://www.domain.com/", "daily"],
              ["0.5", "http://www.domain.com/about", "monthly"],
              ["0.5", "http://www.domain.com/contact", "monthly"],
            ]
    @objects = Object.find(
           :all, 
           :order => "updated_at DESC", 
           :limit => 50000)
 
    response.headers['Content-Type'] = 'application/xml'
    render :action => 'sitemap', :layout => false
end

Como podemos observar, foi criado um hash com as URLs que são estáticas (podem até ter conteúdo dinâmico, mas são URLs que nunca mudarão). Definimos no hash alguns parâmetros como a importância e a frequência que as páginas são atualizadas. Em seguida, recebemos de uma consulta ao banco, objetos que formarão as URLs dinâmicas do site. Definimos também que a resposta da requisição está no formato XML e que aquele determinado método não é renderizado pelo template padrão.

No arquivo de rotas (routes.rb), criaremos uma rota para o método sitemap. Veja abaixo:

map.sitemap "/sitemap.xml", :controller => "root", :action => "sitemap"

Agora precisamos criar o template do XML que vai renderizar os parâmetros do método:

xml.instruct! :xml
xml.urlset "xmlns" => "http://www.sitemaps.org/schemas/sitemap/0.9" do
  @urls.each do |url|
    xml.tag! 'url' do
      xml.tag! 'loc', url[1]
      xml.tag! 'changefreq', url[2] 
      xml.tag! 'priority', url[0] 
    end
  end
  @objects.each do |o|
    xml.tag! 'url' do
      xml.tag! 'loc', object_url(o)
      xml.tag! 'changefreq', 'monthly'
      xml.tag! 'priority', '0.2'
    end
  end
end

Este arquivo, sendo salvo como sitemap.rxml, será responsável por formatar o documento XML. Podemos observar que o primeiro bloco de código é responsável pelas urls estáticas, e a segunda parte faz um loop do objeto que recuperamos do banco de dados.

Agora você já tem um um sitemap.xml para utilizar nas ferramentas de webmasters dos mecanismos de busca.

Adicionando dados ao banco corretamente com Rails

Posted November 27th, 2009 in Desenvolvimento by felipepavao

Essa dica é rápida porém muito eficaz. No Rails 2.3.4 foi adicionado uma funcionalidade para podermos popular nossa base de dados de forma segura e correta, pois antes tínhamos que criar migrations de dados de exemplo ou até mesmo os primeiros dados de configuração da aplicação.

Agora basta criar um arquivo chamado seeds.db dentro da pasta db da sua aplicação. Nele você pode chamar os objetos Rails normalmente como o código abaixo:

 
puts "Adicionando usuario admin"
u = User.new(
            :email => "admin@testecom",
            :login => "admin",
            :password => "12345",
            :password_confirmation => "12345",
            :admin => true
            )

Para rodar a massa de dados basta executar:

rake db:seed

Não está mais fácil e organizado ? Até a próxima.

Localização e Rails 2.3

Posted September 29th, 2009 in Desenvolvimento by felipepavao

De vez em quando somos desafiados a desenvolver projetos que necessitam de traduções para outras línguas. Para resolver isso, usamos técnicas de localização.O Rails facilita muito a nossa vida ao guardar mensagens de erro e todo o texto customizado que você desejar traduzir em apenas um lugar.

Abaixo segue um exemplo de um trecho do arquivo de tradução com mensagens de erro do Active Record traduzidos para português:

:activerecord => {
      :errors => {
        :template => {
          :header => {
            :one => "Identificamos 1 erro nesta operação",
            :other => "Identificamos {{count}} erros nesta operação"
          },
          :body => "Por favor, confira os seguintes campos:"
        },
        :messages => {
          :inclusion => "não está incluso na lista",
          :exclusion => "não está disponível",
          :invalid => "não é válido",
          :confirmation => "é diferente da confirmação",
          :accepted  => "precisa ser aceito",
          :empty => "não pode ser vazio",
          :blank => "não pode ser vazio",
          :too_long => "é muito longo (deve ser menor que {{count}} caracteres)",
          :too_short => "é muito curto (deve ser maior que {{count}} caracteres)",
          :wrong_length => "não é do tamanho correto (precisa ter {{count}} caracteres)",
          :taken => "não está disponível",
          :not_a_number => "não é um número",
          :greater_than => "precisa ser maior do que {{count}}",
          :greater_than_or_equal_to => "precisa ser maior ou igual a {{count}}",
          :equal_to => "precisa ser igual a {{count}}",
          :less_than => "precisa ser menor do que {{count}}",
          :less_than_or_equal_to => "precisa ser menor ou igual a {{count}}",
          :odd => "precisa ser ímpar",
          :even => "precisa ser par",
        }
      },

Seguindo o tutorial, para ativar a localização em um aplicativo Rails, basta definir as seguintes configurações em seu arquivo enviroment.rb:

config.i18n.load_path += Dir[Rails.root.join('my', 'locales', '*.{rb,yml}')]
config.i18n.default_locale = 'pt-BR'

Dessa forma, define-se uma linguagem padrão para todo o site. Se quisermos alterar a linguagem durante a renderização das páginas, passando parâmetro na URL, pode-se definir os seguintes parâmetros no application controller.

before_filter :set_locale
 
def set_locale
    # update session if passed
    session[:locale] = params[:locale] if params[:locale]
 
    # set locale based on session or default
    I18n.locale = session[:locale] || I18n.default_locale
 
    # load locale from settings
    @locale_files = []
    ['yml', 'rb'].each do |type|
      locale_file = "#{LOCALES_DIRECTORY}#{I18n.locale}.#{type}"
      if File.exists?(locale_file)
        @locale_files << locale_file
        I18n.load_path << locale_file
      end
    end
  end

Como viram, é bastante fácil “localizar” em Rails. Se você desejar também traduzir o conteúdo das páginas. Veja o codigo abaixo:

},
      :home => {
        :see_more_link => "Veja mais {{more_link}}",
        :see_all_link => "Saiba tudo sobre este {{all_link}}",
        :video_box_title => "Aperitivo",
        :events_box_title => "Últimos Eventos",
        :blog_box_title => "Blog",
        :followers_box_title => "Fãs",
        :scrapbook_box_title => "Scrapbook",
        :shopping_box_title => "Shopping"
      },

Criamos um dicionário de ítens a serem traduzidos. No template HTML, você deve fazer da seguinte forma:

<h1><%= I18n.t 'txt.home.video_box_title' %></h1>

Mais uma vez comprovamos a facilidade de traduzir com Rails. Para ter o arquivo de localização completo, entre em contato comigo que eu enviarei, pois ainda não disponibilizei no github. Se for urgente, você poderá encontrar em alguns perfis onde achei o modelo para me basear.

Dev in Rio 2009

Posted August 23rd, 2009 in Desenvolvimento by felipepavao

Dev in Rio 2009

Mais um evento muito legal promete agitar e marcar o cenário carioca de desenvolvimento de software. Será realizado dia 14 de setembro o Dev in Rio, um evento que terá vários ícones nacionais e internacionais representando diversas comunidades de tecnologias. Um dos organizadores é meu colega de trabalho Guilherme Chapiewski, famoso por diversas palestras que já fez em sua carreira, além de ser um grande desenvolvedor.

O evento que também é organizado pelo Henrique Bastos, contará com as presenças de Ryan Ozimeck, Guilherme Silveira, Nico Steppat, Fábio Akita, Jacob Kaplan-Moss, Jeff Patton e Vinícius Manhães Teles.

Confira toda a programação no site do evento e não deixe de participar.

Ruby e SQLite sem Rails

Posted July 2nd, 2009 in Desenvolvimento by felipepavao

Estou desenvolvendo um programinha para consumir dados da API de buscas do Twitter e tive a ideia de implementar algum controle de usuário, para que a aplicação não faça muitas requisições ao Twitter e para que eles não me bloqueiem :-).

Então resolvi utilizar o SQLite diretamente de um script feito em Ruby. Basicamente, nesse script eu preciso criar o banco de dados, a tabela com os campos, inserir dados e verificar se eles já foram inseridos anteriormente. Veja abaixo como poderia ser.

require 'sqlite'
 
#criando ou utilizando o banco de dados
db = SQLite::Database.new('example01.db', 0644)
 
#criando a tabela
db.execute_batch <<-SQL
      CREATE TABLE users (
          idx INTEGER PRIMARY KEY,
          username VARCHAR(255)
      );
SQL
 
#inserindo um dado no banco
db.execute( "INSERT INTO users (username) VALUES ('username01')" )
 
#fazendo uma consulta e verificando se já existe no banco
if db.execute("SELECT * FROM users WHERE username = '%s' " % "username01") != []
  puts "O usuario username01 já foi adicionado anteriormente no banco de dados."
end

Se você quiser aprender mais, dê uma olhada na documentação do plugin SQLite Ruby. Este post também explica uma série de macetes se você quiser aumentar a interação com o banco de dados.

FISL 10 – Terceiro dia

Posted June 29th, 2009 in Eventos by felipepavao

fisl10banner

Talvez vocês estranhem um post sobre o Terceiro dia de FISL sem um antecessor comentando o segundo, mas infelizmente este dia não merece maiores explanações. Improdutivo, palestras ruins e que não agregaram valor (pelo menos as que eu escolhi assistir).

Diferentemente do dia anterior, o Terceiro dia foi totalmente interessante. Pela manhã acompanhei uma palestra que comparava vários frameworks em PHP, como o Code Igniter, Cake PHP, Symfony e Zend. Quatro palestrantes apontavam tópicos que denotavam pontos positivos de seu framework predileto. Foi legal conhecer um pouco mais de frameworks PHP e o que eles estão oferecendo para aumentar a produtividade dos desenvolvedores.

Após essa palestra, assisti um grande resumo do que se propõe o Middleware Ginga, framework para ser utilizado em set-top-boxes de sistema de tv digital. O palestrante falou tanto do Ginga-J quanto o Ginga-NCL e sobre o que cada um poderia oferecer. Fica a dica para os que tem interesse em apostar na tecnologia.

Depois do almoço assisti pela primeira vez uma palestra do Fábio Akita e gostei muito do que ele preparou. Falou das possibilidades do Rails e mostrou o exemplo do blog de 15 minutos do David Heinemeier Hansson com outras funcionalidades incluídas e que agregaram muito valor (will_paginate, cucumber, rspec, cache entre outras). Acho que ele conseguiu mostrar, para quem ainda tem dúvidas em estudar Rails, que o framework consegue ser muito útil e produtivo.

Em seguida assisti a palestra do Mergulhão sobre um case muito interessante de escalabilidade em aplicações feitas em Rails. Ele, que trabalha no Rede Parede, demonstrou que é possível sim ter aplicações Rails para aguentar situações de grande estresse. Ele também demonstrou como sua aplicação foi crescendo, e como eles se planejaram para aumentar sua infraestrutura. Ficou evidente que quanto mais o Google indexava o site, mais o site crescia e eles puderam criar algumas testes sobre o Google.

Por último, assisti um palestrante que possui uma “empresa livre“, com todos seus serviços orientados para utilização de software livre. E sim, diferente do que pensam, é possível ganhar dinheiro com software livre (eu já sabia :D).

Também não irei comentar sobre o quarto dia, pois depois que o Lula lá passou no evento, bagunçou todos os horários e prejudicou o andamento do evento. Que o ano que vem nenhum presidente pense em passar por lá.

Guia Tutorial Rails

Posted April 15th, 2009 in Desenvolvimento by felipepavao

Mais um post com dica para iniciantes que desejam aprender o grande framework Rails ou apenas se aprofundar um pouco mais. O Rails Guide, versão em inglês de um guia com diversas explicações e exemplificações foi traduzida para português por alguns programadores da comunidade Rails brasileira e está disponível no endereço http://guias.rubyonrails.pro.br/

rails_guides_logo

Agora não há mais o que reclamar :-).

Paperclip Rails

Posted March 29th, 2009 in Desenvolvimento by felipepavao

Mais um post sobre Rails e dessa vez darei uma dica para usuários de MAC que estão apanhando para rodar o Paperclip e perceberam que o redimensionamento de imagem não funcionava. Entretanto, antes de começar, você pode ler um pouco mais sobre esta gem no blog Nome do Jogo, que fez um pequeno tutorial sobre  como usar o Paperclip. Se preferir em inglês, você poderá acompanhar o post do Jim Neath.

Continuando, é importante saber que o Paperclip utiliza a biblioteca de tratamento de imagens ImageMagick. Você poderá instalar utilizando o DarwinPorts.

Então vamos a dica. No MAC OS X, o Paperclip não encontra automaticamente o path do executável do ImageMagick que realiza os redimensionamentos. Para isso, realize as configurações que são descritas no post do Ricardo Shiota. Já para UBUNTU, é um pouco mais fácil a instalação. Apenas instale o ImageMagick utilizando apt e aproveite.

Página 1 de 212