Upgrade do Ubuntu Hardy Heron, uma dor de cabeça sem tamanho!

hardy_heron

Estou revoltado com o uppgrade do Ubuntu. Eu tenho em meu notebook de trabalho o Ubuntu Gutsy Gibbon (7.10) instalado e ontem me veio a oferta de instalar a atualização quentinha do Ubuntu Hardy Heron (8.04 LTS). Resolvi baixar os mais de 900 MB pois acreditei que valia a pena, visto que eu já havia instalado o 8.04 beta no meu PC e não encontrei problemas. Muito pelo contrário, desta vez não precisei instalar o Driver proprietário da ATI no braço e compilar o Kernel para a aceleração 3D funcionar corretamente!

Após a finalização do download pus para prosseguir o upgrade e segui trabalhando, quando de repente me surge uma janela na frente que simplesmente travou e não voltou mais ao normal, ficou eternamente cinza… Resolvi reiniciar para ver se voltava ao normal e para a minha surpresa ele não entrava mais no X. Logava e tal, mas a tela ficava em branco.

Após várias pesquisas nos fórums do Ubuntu e uma tentativa frustrada de ajuda no canal de IRC #ubuntu-br, desisti. Hoje enquanto fazia backups dos meus dados para formatar eu li no forum do ubuntu uma dica que parecia que resolveria meu problema. Subi como root e tentei:

aptitude update && aptitude dist-upgrade

Até adiantou alguma coisa, comecei a ter oficialmente a distro 8.04 em meu notebook, porém, após o login permanecia a situação em que nada aparecia.

Estou agora a 18% de finalizar a instalação “do zero” do Ubuntu Hardy Heron 8.04, e desta vez com a home em outra partição… vivendo e aprendendo!

Mesmo assim, o problema que passei é pouco perto do que já passei enquanto usuário Windows. São dois dias perdidos, mas que valerão a pena para entender uma coisa: “Sempre fazer backup de tudo antes de fazer atualizações e upgrades críticos”.

Ao que me parece, este problema não ocorreu somente comigo… o Eustáquio Rangel passou por um problema semelhante, como vocês podem acompanhar por aqui.

Instale o Firebug no Firefox 3

firebug

Se você é como eu, não desenvolve sem utilizar o Firebug. Pode sentir-se limitado ao migrar para a versão beta do Firefox 3. Há dias venho postergando minha mudança para o firefox 3 em meu Ubuntu Gutsy Gibbon (7.10). Porém, intalei o Ubuntu Hardy Heron (8.04) no meu pc de casa. Ele já vem com o Firefox 3 beta, porém, agora ia trabalhar em um projeto nele e me deparei com a seguinte situação: fui direto à página de add-ons da Mozilla e busquei pelo firebug e tentei instalar, não deu, pois a versão atual não é suportada pelo Firefox 3 Beta.

A solução

É simples, vá ao site do Firebug e baixe a versão 1.1 beta. A versão 1.05 é a versão do site de Add-ons da Mozilla, portanto, ela não funciona na versão 3 do Firefox. Se você migrou da versão 2 para a três provavelmente pode resolver os seus problemas agora!

Quem programa em Rails só sabe criar blogs?

Estava agora olhando meu Twitter e vendo o que as pessoas que eu sigo têm postado de dicas interessantes. Eu vi uma indicação do Nando Vieira para um post que ele deve ter escrito hoje, sobre relacionamento Has And Belongs To Many, o famoso HABTM. Fui ler, numa boa, uma dica excelente por sinal. No entanto, enquanto eu lia acendeu uma luzinha na minha cabeça: por que diabos todo exemplo de Rails tem modelos do tipo post, comments, users no meio?

Eu me imaginei na seguinte situação: nunca ouvi falar do bendito Ruby on Rails, vou me informar sobre. Aí eu googlar sobre o assunto e vou me deparar com os cabeções de rails no Brasil e até mesmo o famoso screencast “Creating a weblog in 15 minutes” do site oficial do Rails. Simplesmente todo exemplo referente ao Rails tem algo de um blog, o que leva a pessoa – no caso eu – que está apenas dando uma olhada nesse framework a pensar que ela serve basicamente para desenvolver blogs.

Claro que esta hipótese é tão idiota quanto o imbecil que escreveu ela, mas fiquem atentos, não estou descartando a hipótese. Tampouco estou criticando a postura do Nando ao utilizar esta analogia. Ele tem todo o meu respeito e admiração. O ponto é que tudo relacionado ao Rails acaba caindo no velho exemplo do Blog. E a dúvida que fica, é tão mais fácil explicar as coisas baseadas em um blog que bloqueiam as pessoas a criar dicas utilizando outros modelos?

Custom Resource Name vs. Restfull Authentication

É até uma injustiça eu começar falando do Custom Resource Name tanto tempo após o seu lançamento, mas o tempo não permitiu que eu fizesse nada. Como podem ver meus posts estão cada vez menos frequentes. Porém, antes tarde do que nunca.

Custom Resource Name é um excelente plugin para Rails criado pelo simpático Carlos Brando, que teve toda a paciência do mundo para me ouvir. Este plugin renomeia as rotas, muito útil para quem programa em inglês para aproveitar todas as facilidades do Rails.

Para início de conversa, eu incomodei muito o Carlos Brando para fazer rodar o seu plugin em uma aplicação que eu estava fazendo em Rails 1.2.3, eu tinha até vergonha de ficar pedindo isso pra ele às vésperas do Rails 2.1. Mas os motivos de rodar o Rails 1.2.3 são óbvios, em “shared hosts” é essa a realidade. No entanto, o Everton resoulveu dar freeze no Rails, e dessa forma começamos a usar Rails 2 em todas as nossas aplicações. Mas isto não vem ao caso agora.

O que acontecia de erro no plugin do Carlos, não era a versão do Rails que eu estava utilizando, mas sim o plugin Restfull Authentication. Ele não é um plugin no sentido estrito da palavra, mas sim um generator. Ele gera controllers, models e views de acordo com as opções que você escolher. Mas o problema está na rota que o restfull authentication gera a sua rota REST. Uma rota normal para um resource chamado categories seria map.resources :categories o que faz sentido, visto que categorias podem ser mais de uma. Porém, a rota gerada pelo restfull authentication para a página de login é map.resource :session, :controller => :session, fique atento, map.resource. Isto significa que no plugin do Carlos Brando não dá cobertura para uma rota singular, algo compreensível, visto que este tipo de rota é algo muito incomum.

O fato de a rota ser singular fazia com que ao instalar o plugin Custom Resource Name eu não conseguisse sequer iniciar o WEBRick. Após muitas tentativas de mudar o plugin resolvi recorrer a uma reunião de equipe para que todos pudessem identificar o problema e propôr soluções. A solução foi modificar o que foi gerado pelo Restfull Authentication e transformar a rota singular sessions para uma rota “plural” chamada sessions, mas para não ficar feio para iniciar “uma sessions”, nomeamos a rota sessions para login com o Custom Resource Name.

Se alguém encontrar o mesmo problema e não conseguir resolver, pode entrar em contato comigo. Além disso vou ver se mudo mais adiante o plugin do Carlos para suportar este tipo de rota.

Agradeço a paciência do Carlos Brando com o meu problema. Espero não ter incomodado muito.

A propósito, o Carlos tem melhorado dia após dia o seu plugin. Novos recursos foram adicionados recentemente, o que me possibilitou ter nenhuma dor de cabeça com o cliente, pois certamente ele iria reclamar se eu pusesse algo como formas_de_pagamento/novo, agora, com as modificações do plugin, isto não vai mais acontecer.

Fazendo justiça

Em um outro post que escrevi, Onde estão os desenvolvedores Rails, o Eduardo Scoz, desenvolvedor do site Mapia respondeu em um comentário o motivo de seu site não ser validado. Veja abaixo a resposta dele:

Ola pessoal!
Sou o único desenvolvedor do site mapia.com.br ,listado aí acima!
Primeiramente, deixe-me agradecer por incluir meu site na lista! Ver o nome do site ali ao lado de gente grande realmente me deixa muito feliz!

Quanto a validacao xhtml no site, até pouco tempo atrás o mapia passava em todas as validacoes. Só que o html foi ficando muito complicado, e ao inves de me preocupar em validar tudo, resolvi que em breve vou dar uma grande limpada no código fonte, e por isso deixei passar.

Ultimamente também, tenho me preocupado bastante também com a qualidade dos dados no site, e isso tem me gastado o pouco tempo que tenho para trabalhar no site. Manter dados atualizados (ou tentar manter) para todas as cidades, além das que vão aparecer logo), é algo que consume muito tempo, coisa que está escassa para mim hoje em dia. Fazer o site renderizar corretamente em todos ( ou maioria de ) browsers por aí também toma bastante tempo.

De qualquer forma, valeu pelo comentário!

Grande abraço,

Eduardo Scoz

Mudando o repositório para git

Acabei de ler na lista de e-mails Rails-br um e-mail do Fábio Akita anunciando que o repositório do Rails irá migrar do Subversion para o Git. Isto tem um significado muito importante, pode significar o fim de uma era onde o subversion era dominante. Posso estar exagerando afirmando isto tão cedo, pois não sou vidente, mas hoje é o Rails, amanhã quem sabe o que será?

Aproveitando o post vou indicar também aos leitores e colegas que estão começando no Git este Micro tutorial de Git que o Fábio Akita, de novo ele, escreveu.

Recentemente fizemos a migração do Trac para o Redmine, justamente porque tem suporte a Git. No post anterior eu fiz uma pergunta a qual não respondi, pois precisaria testar a aplicação em produção. A pergunta de que o Redmine seria um trac perfeito no post anterior já pode ser respondida. Não é perfeito, é QUASE PERFEITO! Já pusemos ele em produção em um novo projeto e migramos um projeto que estava no Restrospectiva pra ele.

O relato do Everton J. Carpes é algo que sintetiza bem o que o Redmine significou para nós:

Perfeito soh o tempo dirá, porém excelente, certamente.

O Sistema realmente me surpreendeu. Entre as muitíssimas features interessantes, uma me chamou MUITO a atenção: “controle de workflow”.

O Redmine tem um mecanismo que permite ao administrador dele controlar o que eles chamam (comercialmente) de workflow, mas eu (geek) prefiro chamar de “máquina de estados”.

Através deste controle você consegue estabelecer como o tracker permitirá as alterações de estados de um ticket, e o mais maravilhoso, POR ROLE!!!

Isso simplesmente abre horizontes em termos de gerência, pois permite a você estabelecer padrões onde gerentes possam realizar tarefas X, desenvolvedores tarefas Y e por aí vai… Isso é uma forma clara de estabelecer os padrões de gerência de seu time de desenvolvimento sem complicar para ninguém.

Alem disso, claro as centenas de vantagens em features muito interessantes (como o suporte ao GIT como SCM!!! :D ).

Uma outra coisa maravilhosa sobre o Redmine eh que ele REALMENTE é uma aplicação Rails e segue suas convenções e práticas. Eu que estava já “de cara” com o Retrospectiva por ele não me dar suporte a outro mecanismo de e-mail que o smtp padrão, fiquei extremamente feliz de poder voltar a usar o msmtp.

Buenas, puxações de saco a parte, vamos agora aproveitar a ferramenta, contribuir se possível e procurar sempre por melhorias.

Mesmo assim, estamos muito atarefados, pois o Brasil começou a funcionar em abril, e de quebra eu estou na fase de redação da minha monografia.

 

Off-topic nem tão off assim

O trânsito é realmente um ambiente muito fértil para pensar na vida. Durante o tempo em que estava dirigindo pela cidade e recordando os problemas que estamos passando, pensei em várias dicas que poderia dar em relação à nossa experiência como Startup.

  1. Nunca conte com um cliente antes dele efetuar o primeiro depósito;
  2. Utilize sempre o mesmo software e a mesma identação, identações distintas acabam com os diff’s;
  3. Nunca se comprometa produzir a quantidade que não pode cumprir, a sua improdutividade afeta a produtividade dos membros da outra equipe;
  4. Sempre ponha um prazo de validade nos contratos, contratos antigos, com orçamentos antigos podem afetar o andamento das atividades atuais;
  5. E finalmente, por último, aprenda com os erros alheios para não repeti-los.

E como diria Leonardo Monasterio, meu orientador:

“Dado bom é o dado que a gente tem.”

Eis meus dados (Eu não queria perder a piada):