VidaGeek.net

Linux, Open-source, Programação e Produtividade

Archive for February, 2009

Uma coisa que me incomoda desde o fim do ensino médio é a faculdade. Tem piorado bastante conforme eu vejo que ela não acrescenta muito a minha vida.
Tenho certeza que tem muita gente pensando “Poxa, será que devo me matar de estudar para fazer uma faculdade? Ou devo tentar investir em mim e me preparar para o mercado?”.

O que eu acho? Que nenhum desses dois é o caminho.

Primeiro deve vir o amor ao que você faz. Não vai adiantar muito você ter uma faculdade em algo que você não gosta (vai ser um inferno aturar professores por 4 ou 5 anos) e não gostar do seu trabalho pode ser pior ainda (imagina aguentar um chefe azedo que também não gosta do trabalho).

Por isso acho que a primeira coisa que deve ser feita é encontrar o que você gosta de fazer, independente do que seja. O dinheiro (e fama e etc) é uma consequência natural de um trabalho bem feito, de alguém que está disposto a trocar horas de lazer e ócio por aperfeiçoamento.

Mas esse aperfeiçoamento, devo fazer para o mercado? Para a faculdade? De jeito nenhum. No fim, o que realmente é necessário é um bom equilibrio entre o conhecimento acadêmico e do mercado. Basta olhar a sua volta. No meu caso, conheço diversos professores universitários (vale lembrar que estudo na USP, que não deveria ser qualquer coisa) que não são capazes de escrever um sistema que fique no ar. Da mesma forma, conheço pessoas do mercado de trabalho que não são capazes de escolher uma estrutura de dados ou algorítmo que facilite o problema dele.

Você tem que estudar ambos os caminhos. Conhecer o que é realmente importante no mundo acadêmico (não precisa resolver um problema NP-completo em tempo polinomial) e conhecer muito bem a dinâmica do mercado de trabalho, novas tecnologias. E estar sempre estudando, porque nenhum desses dois mundos para. Se você parar, fica pra trás em ambos.

Mas ainda não respondi sobre fazer ou não uma faculdade. Quer isso seja bom ou não, o mundo olha pra você diferente se você faz uma faculdade. É idiota mas é verdade. Conheço profissionais que não terminaram a faculdade e são meus exemplos de profissional. São pessoas que sempre que posso, quero estar trabalhando junto. Também não posso esquecer que meu primeiro contato com a Caelum foi atravéz da USP. Então, por mais que desgoste da faculdade, tenho que reconhecer que ela me trouxe coisas boas (sem contar que a base teórica que recebi nos primeiros 3 semestres me ajudam muito até hoje. Depois disso boa parte pode ser jogada no lixo)

Como tudo em computação, você vai ter que pesar as vantagens e desvantagens e decidir se vale a pena fazer ou não. Mas mantenha sempre em mente que por qualquer dos caminhos da pra ir bem longe, basta que você complemente por você mesmo o que falta em um deles.

Posts Relacionados:

  • Nokia ConnectUsp conecta mas não navega
  • Simpósio Brasileiro de Computação Musical
  • Ubuntu como Ferramenta de Recuperação
  • FISL 8.0: Entrevista com Guilherme Silveira, um dos ganhadores da Arena
  • Integrais
  • INC - Isso Não Compila!!!
  • O Jogo da Vida
  • Acompanhe-nos por RSS, por Email ou via Twitter.
    Veja como ter um desconto no Dreamhost: um excelente servidor web.

    Atualizando o RubyGems no Mac

    Rubygems
    Recentemente fui iniciar um projeto pessoal utilizando Ruby on Rails. Meu objetivo era utilizar o Cucumber para fazer teste de integração e desenvolvimento dirigido por comportamento. Ao tentar utilizar o “rake features” para gerar os arquivos do Cucumber, obtive o seguinte resultado:

    Schouery:projeto schouery$ rake features
    (in /Users/schouery/Documents/projeto)
    Rails requires RubyGems >= 1.3.1 (you have 1.2.0).
    Please `gem update --system` and try again.
    

    O natural foi executar o comando pedido, apenas para ser frustrado:

    Schouery:projeto schouery$ sudo gem update --system
    Updating RubyGems
    Nothing to update
    

    Pesquisando por ai, encontrei um post que resolveu meu problema. Basta instalar a gem rubygems-update e então executar “update_rubygems”. Veja o resultado abaixo:

    Schouery:projeto schouery$ sudo gem install rubygems-update
    Successfully installed rubygems-update-1.3.1
    1 gem installed
    Schouery:projeto schouery$ sudo update_rubygems
    Installing RubyGems 1.3.1
    ...
    

    Espero que essa dica possa ajuda-lo. Até mais!

    Posts Relacionados:

  • Java 1.6 no Mac
  • Como carregar extensões do kernel no Mac OS X
  • Meu Ubuntu fala!
  • NeoOffice: Um OpenOffice Nativo para Mac
  • MacOSX Terminal e os Alias do Finder
  • Mac Widgets
  • Unix no Mac
  • Acompanhe-nos por RSS, por Email ou via Twitter.
    Veja como ter um desconto no Dreamhost: um excelente servidor web.

  • 1 Comment
  • Filed under: Ruby
  • Substituindo valores de um Hash em Ruby

    Ruby Logo

    Recentemente, ao criar utilizar o rspec para fazer BDD num projeto em Ruby on Rails, encontrei um problema que não aparentava ter uma solução elegante. Eu tinha um hash @valid_attributes com valores válidos para o meu modelo e gostaria de modificar apenas um deles para fazer um teste que quebrasse minha aplicação. A primeira solução possível foi:

    it "should verify if name is not empty" do
      @valid_attributes[:name] = nil
      Account.new(@valid_attributes).should_not be_valid
    end
    

    Mas uma coisa me incomodou muito neste teste. Eu mudei a semântica da minha variável. Ela passou a conter um atributo inválido, mas continuava com o mesmo nome. Esta é uma péssima prática de programação, já que reutilizamos uma variável para outra coisa, perdendo o significado do nome. Portanto, apesar de parece inútil, o segundo passo foi:

    it "should verify if name is not empty" do
      invalid_attributes = @valid_attributes
      invalid_attributes[:name] = nil
      Account.new(invalid_attributes).should_not be_valid
    end
    

    Mas agora o teste estava muito longo e parecia besteira o que estava sendo feito. Procurei na API do Ruby para tentar achar alguma solução elegante e com um pouco de trabalho cheguei a seguinte solução:

    it "should verify if name is not empty" do
      Account.new(change_attribute(:name)).should_not be_valid
    end
    
    def change_attribute(attribute, value = nil)
      {attribute => value}.merge(@valid_attributes) {|k, o, n| o}
    end
    

    O método merge de um hash permite a fusão de um segundo hash ao primeiro, adicionando novos pares de chave - valor e substituindo os valores das chaves já existentes, mas se passarmos um bloco (como no exemplo acima) podemos escolher qual valor iremos utilizar para chaves repetidas. Indo um pouco além do usual, minha idéia foi substituir um par já existente - o que poderia ser feito para quantos pares fossem desejados. Espero que essa dica possa ser útil, já que o merge é um método muito interessante.

    Posts Relacionados:

  • Benchmark TreeSet x HashSet
  • Rails Vs Java e PHP
  • Linguagens de programação - Ruby
  • YACP - Variáveis e Tipos Primitivos
  • TDD para Ruby - Fibonacci
  • FISL 9.0: Entrando nos trilhos - Introdução a Ruby on Rails
  • Ruby e Rails no Mundo Real
  • Acompanhe-nos por RSS, por Email ou via Twitter.
    Veja como ter um desconto no Dreamhost: um excelente servidor web.

  • 2 Comments
  • Filed under: Dicas, Ruby
  • Refatorando Ruby no seu editor

    Recentemente, o Fabio Kung (um dos gurus brasileiros de Ruby) publicou em seu blog um post sobre a nova ferramenta que está desenvolvendo: o Rfactor.

    Muitos dos que programam em Ruby não utilizam IDEs para desenvolver seus softwares. Com isso já estamos acostumados a fazer tudo na mão e não depender de coisas como auto completion e opções automatizadas de refatoração. Mas o Fabio, sentindo falta das opções de refatoração “Extract Method” e “Extract Variable”, decidiu criar o Rfactor - um Ruby gem - para permitir esses métodos. O resultado pode ser visto no vídeo abaixo.

    Inicialmente, o projeto realiza apenas o “Extract Method” e já pode ser usado no TextMate, mas o projeto foi desenvolvido para permitir o uso de qualquer editor suficientemente poderoso. Para instalar no TextMate basta seguir as instruções na página do Bundle no GitHub.

    Posts Relacionados:

  • Ruby e Rails no Mundo Real
  • FISL 10: Agilidade e Qualidade de Projetos com Ruby on Rails
  • Rails Vs Java e PHP
  • Top 5 ferramentas Linux para Desenvolvedores
  • Guia Latex - Parte I: O que é e por que usar
  • Linguagens de programação - Ruby
  • TDD para Ruby - Fibonacci
  • Acompanhe-nos por RSS, por Email ou via Twitter.
    Veja como ter um desconto no Dreamhost: um excelente servidor web.

  • 2 Comments
  • Filed under: Ruby