domingo, 30 de janeiro de 2011

CodeIgniter 2.0 Liberado!

Hoje fiquei sabendo do lançamento do CodeIgniter (CI para os íntimos) versão 2.0. Já fazia mais de um ano que eles estavam trabalhando nesta versão. O anúncio oficial do lançamento e informações sobre as mudanças podem ser vistos em todos os detalhes no site oficial.

Algumas mudanças notáveis foram o abandono da versão 4 do PHP (que já estava na hora, será que alguém ainda usa PHP 4?). Agora o framework tem suporte nativo a query strings, uma falta considerável nas versões passadas na minha opinião. Outra coisa legal foi a adição de suporte para execução de scripts via linha de comando facilitando a criação de cron jobs, se bem que isso já era possível antes com o uso de bibliotecas. Além disso temos as tradicionais correções de bugs e melhorias no código.

O CodeIgniter é um framework PHP muito simples de se usar e instalar. Funciona praticamente em qualquer host compartilhado que você encontrar. Além disso te ajudar com todo aquele trabalho feijão com arroz que sempre tem que ser feito em coisas como upload de arquivos, validação de formulários, envio de emails, sql injection, prevenção de ataques XSS etc. Tem uma comunidade muito ativa e uma excelente documentação através de seu guia do usuário.

domingo, 16 de janeiro de 2011

Sheldon Cooper é um péssimo gerente de projetos

Estes dias eu assisti ao 12º episódio da 4º temporada de "The Big Bang Theory" onde o personagem Leonard tem a ideia de criar uma app para fazer o reconhecimento de equações através de fotos tiradas pelo telefone. Ele conta a ideia para os outros personagens e os chama para participarem do projeto.

Este episódio é muito interessante pois ele demonstra através do comportamento do Dr Sheldon o que acontece em muitas equipes engajadas em desenvolver softwares ou outras atividades.

  • Exagero de detalhes em partes do projeto que não são essenciais para o início da empreitada. Logo no começo Sheldon traça uma lista indicando os cargos e responsabilidades de cada integrante do projeto. Não que isso seja uma coisa errada, mas ele realmente exagera ao, por exemplo, escolher o líder do comitê de Amigo Secreto (no caso ele mesmo). Isso é muito comum em projetos de desenvolvimento de aplicativos, o que geralmente leva ao fracasso. Um exemplo comum é quando uma equipe resolve detalhar vários casos de uso diferentes para uma aplicação. O que temos que levar em conta é que geralmente um aplicativo deve fazer pelo menos uma coisa bem feita. Tente detalhar esta parte primeiramente e depois mais para frente pense sobre o processo de login do usuário ou como vai ser a disposição do menu.
  • Não foca em partes do projeto que contribuem para o objetivo principal. Tem muito a ver com o primeiro ponto mas aqui estamos falando mais de execução do que planejamento. Logo no início do projeto Leonard resolve discutir sobre a interface do programa, o que eu acho que toda equipe de desenvolvimento de software deveria fazer. A primeira e talvez unica coisa que o usuário enxerga de um programa é a sua interface. Para o usuário a interface é o programa. Acertar em uma interface limpa, não ambígua e eficiente já é meio caminho andado em direção ao sucesso quando estamos desenvolvendo aplicativos. Quando Leonard comenta que quer começar a discutir a interface do usuário Sheldon prontamente diz algo como "Estamos ferrados.". Isso sem contar a parte onde no meio do desenvolvimento ele resolve introduzir uma discussão sobre nomes para o aplicativo. Lembrem-se, primeiro façam o aplicativo fazer algo útil depois se preocupem com o resto.
  • Equipe engessada. Em determinando momento Sheldon resolve que Raj será responsável pelo suporte telefônico (o que é um pouco racista) e Howard será seu assistente pessoal. Usar dois caras inteligentes como eles (Howard inclusive é um engenheiro) para dar suporte por telefone e comprar comida para o time?! Eu acho que a série realmente exagerou neste ponto, mas o que eu gostaria de comentar é sobre esta postura de definir papéis inflexíveis para os membros de uma equipe. "Você só trabalha com o banco de dados!" "Eu vou somente programar!" "Você cria a interface e nada mais." É claro que temos que ter pessoas que dão a última palavra ou teríamos discussões intermináveis. Mas para um projeto dar certo uma equipe precisa ser extremamente comunicativa e estar aberta a opiniões uns dos outros. Precisamos ter uma visão do projeto como um todo ou chegamos naquele ponto onde cada membro tem sua opinião divergente sobre o real objetivo do que estão fazendo.
  • Sheldon não sabe trabalhar em equipe. Eu odiaria trabalhar em uma equipe com alguém como o Sheldon. Ele não sabe expressar suas opiniões para outros membros, ele não consegue ser construtivo ao criticar outra pessoa. Sempre existirão conflitos dentro das equipes responsáveis pelos projetos, mas sempre que você for criticar o trabalho de outra pessoa tenha argumentos lógicos e evite usar de oratória vazia ou sua posição ou status.
Bom pessoal estes são os comentários que eu tenho a fazer sobre o episódio, ele ficou muito bom e recomendo que assistam a série pois ela é muito divertida. E vocês? O que tem a dizer?

tl;dr
Inicialmente foque nos aspectos que tornam uma aplicação realmente útil. Não crie "ilhas" dentro de sua equipe onde as pessoas não se comunicam. Seja lógico e consistente ou criticar o trabalho de outra pessoa.

sexta-feira, 7 de janeiro de 2011

Dica Útil

Todo programador vez ou outra dá uma olhada no manual de referência de funções da linguagem sendo usada. No PHP esta necessidade é ainda maior já que é sempre muito difícil lembrar se o nome daquela função tem um underline ou qual a ordem correta dos parâmetros. Os desenvolvedores da linguagem PHP não devem gostar de padrões de codificação.

Aqui vai uma dica para tornar mais rápido o acesso a referência das funções. Eu uso um sistema Linux mas com algumas modificações ela pode ser adaptada para Windows também.

Crie o arquivo "php.net" no seguinte diretório (ou qualquer diretório disponível no seu PATH):
/usr/local/bin

Digite o seguinte no arquivo:
#!/bin/sh

google-chrome --new-window "http://www.php.net/$1"

Eu usei o chrome mas você pode usar outros browsers levando em consideração os parâmetros de cada browser.

Dê permissão de execução com o seguinte comando:
sudo chmod +x /usr/local/bin/php.net


Pronto!
Agora você pode digitar na linha de comando ou usando o atalho Alt+F2 no gnome:
php.net str_replace
e uma nova janela do chrome vai abrir na página com o manual da função str_replace.

É isso aí! Espero que isso possa ajudar a todos!

terça-feira, 4 de janeiro de 2011

Sistema de recomendação de palavras em PHP

Você tem ideia de como implementar aqueles algoritmos de recomendação de palavras? Como por exemplo no google onde se você digita "paola olivera" ele ter retorna a página de resultados com a famosa frase "Você quis dizer: paola oliveira". Eu não sei como implementar um e este cara aqui provavelmente também não sabe. Mas ele conseguiu o objetivo de uma forma muito criativa utilizando PHP.