Archive for julho, 2009

Primeiros Passos (Jifty)

julho 28, 2009

Esta é uma tradução livre do texto originalmente publicado aqui: http://jifty.org/view/GettingStarted, como nesta primeira vez que traduzi, volto a afirmar: Meu inglês não é muito bom, e por essa razão traduzi este texto, e outros textos que podem vir a ser postado em meu blog, para melhorar ele. Caso encontrem erros, o que é provável que aconteça, me informe (andreoandre <> gmail <dot> com ) para corrigir e manter o texto atualizado.

Nota: Jifty é um framework web em/para Perl. Veja suas características abaixo:

  • DRY
  • Full-stack – Conjunto de ferramentas ( como database mapper, template, AJAX toolkit, etc.. )
  • Continuationsdeixa o desenvolvedor fazer seu trabalho de forma rápida e elegante :)
  • Form-based dispatch – Forma de renderização e processamento do Jifty ( Você dita a regra e ele cuida do resto)
  • Um Pony – O único que vem com um pônei

Primeiros Passos

É fácil como:

perl -MCPAN -eshell
notest install Jifty

jifty app –name MyJiftyApp
cd MyJiftyApp
jifty model –name User

Edite lib/MyJiftyApp/Model/User.pm adicionando as linhas na seção de Schema:

column name =>
type is ‘text’,
is mandatory;
column email =>
type is ‘text’;

Em seguida executeo comando para criar seu banco de dados:

jifty schema –setup

Quando estiver pronto para usar seu (simplista) novo usuário de  banco de dados, inicie o servidor standalone jifty de sua aplicação:

jifty server

Para se aprofundar mais, veja o manual. Códigos como o Wifty ( como este site), que é um pouco mais complexo que o tutorial do manual, também pode ser um bom lugar para começar — você pode obter o código via svn co http://svn.jifty.org/svn/jifty.org/wifty/trunk.

Se você deseja mais detalhes, de uma olhada aqui:

Você pode assistir 20 minutos de um screencast aquiNota: o screencast ( e outros textos no site) fazem uso do plugin de ‘login’, que ainda não esta pronto para uso, e não vem instalado com o Jifty, por isto, não tente copiar o que você vê pois pode não sair exatamente igual. Para mais informações, consulte cpan rt ticket 24107.

[Off-Topic] Sobre Equipe de Desenvolvimento

julho 16, 2009

Ando percebendo muitas coisas ultimamente. Após o FISL, mais fortemente, algumas opiniões pessoais foram, em minha visão, confirmadas.

Trabalhar em uma equipe não é algo das mais triviais. Ainda mais se você trabalha em equipes com mais de 4 pessoas. Mas as equipes são formadas de pessoas, e as pessoas são diferentes, tem objetivos diferentes e metas diferentes, então como trabalhar em harmonia em um projeto?

Bom, descobri que as pessoas que mais falam, são as que menos sabem, ( tem uma frase no I Ching que não me recordo corretamente para colocar aqui, muito interessante sobre isso ) e,  as que sabem, de certa forma, não conseguem falar.

Agora preciso explicar um outro ponto para melhor ilustrar o que vou falar. No livro, A Arte da Guerra, Sun Tzu fala sobre “Os Nove Tipos de Terreno”:

“Em relação ao emprego de tropas, o terreno pode ser classificado como dispersivo, fronteiriço, chave, comunicante, focal, perigoso, difícil, cercado e mortal. Quando se combate em seu próprio território, combate-se em território dispersivo. Quando se avança pequena distância em território inimigo, encontra-se em território fronteiriço. Terreno-chave apresenta igual vantagem para tropas de ambos os lados. Terreno comunicante é aquele que permite fácil acesso por ambos exércitos. Terreno que faz fronteira com três outros estados é chamado de focal, e é de grande importância controlá-lo. Terreno perigoso é aquele em que se encontra um exército que já penetrou profundamente em território inimigo, e de onde é difícil regressar. Em terreno difícil o deslocamento é árduo, pois há de se passar por desfiladeiros, pântanos ou florestas. Terreno cercado possui acesso apertado e saída tortuosa. Terreno mortal é aquele no qual um exército não tem escolha a não ser lutar.”

Ou seja, de certa forma as pessoas agem como generais em suas vidas, e o terreno é o ambiente que ela cria. O que quero dizer é – As pessoas se acomodam ou lutam, dependendo de suas tendências e vontades, isso faz com que em um projeto, determinados tipos de pessoas criem um terreno que traz segurança a elas. O terreno que digo é um ambiente no qual ele sabe que se fizer aquilo o dia inteiro vai receber seu salário, e ninguém vai falar que ela não está colaborando. Suas atividades podem ser sim automatizadas, ou mesmo descartadas, porém isso não é feito por ela -. Assim ela simplesmente trabalha na empresa e contribuí com o projeto.

Pessoas assim falam, para mostrar que estão, de certa forma, envolvidas com o projeto. Pessoas assim contam histórias, não aceitam coisas novas e ficam em seu terreno simplesmente aguardando o exército inimigo atacar, nesse ponto o responsável pela sua derrota é seu próprio terreno que escolheu para combate, e não o exército inimigo.

Quando em reuniões, ( Daily Scrum, etc… ), o comportamente dos conformistas é mais destacado.

Agora, trabalhar com “Open Source” é uma vantagem, mas pelo que vejo, o “Open Source” é apenas uma forma de se destacar no mercado para muitas pessoas. Nesse ponto, quem for melhor “Trovador” ganha, não necessariamente o melhor.

Posso ser sonhador, ou um ignorante. Mas o fato é, que em determinadas situações não se tem como argumentar:

http://en.wikipedia.org/wiki/Argument_from_ignorance

Outro ponto forte que percebo, é o perfil enraizado nas pessoas que convivem com determinadas linguagens. Esse é o terreno dele, se comportar assim é seu ambiente, e seu acampamento seguro em uma guerra. Assim a melhor arma é o ataque ( quem nunca ouviu que uma linguagem é melhor que a outra ).
Assim, eu destaquei especificamente alguns tipos de pessoas que ultimamente mais me incomodam. Porém é por isso que vivemos em um sistema tão arcaico de trabalho.

Muitas metodologias estão ai para nos auxiliar, porém as pessoas são, na maioria delas, excluídas. Mas de certa forma, não seria possível ainda ver em qualquer empresa de desenvolvimento de software times autogeridos, pessoas que são seus próprios generais.

Uma coisa interessante foi o que Ricardo Semler fez :

http://pt.wikipedia.org/wiki/Ricardo_Semler
Ok, temos PMI, temos Lean para desenvolvimento de software, o manifesto ágil, mas o que isso reflete na realidade de uma equipe? Até que ponto deve ser aceito as tendências de uma pessoa para um projeto?

Há tempos ando reparando nas pessoas e estudando melhores formas de desenvolvimento do software.

O que este ano pude perceber no FISL é: existe oportunidade para todos. Por mais que sejam todos parecidos ao mesmo tempo tão diferentes, todos tem mercado. É isso foi o que mais me chamou a atenção.

Da mesma forma que para um problema existem várias soluções, para uma pessoa existem várias empresas.


As empresas são terrenos, cabe o “General” conhecer seu exército para que um projeto flua, assim pode-se ter equipes pequenas, que  consigam se autogerir e que sejam harmônicas.

Claro que estou excluindo aqui o Efeito Halo:

http://pt.wikipedia.org/wiki/Efeito_halo

As teorias de Maslow e todos os estudos de comportamento humano em uma empresa.

O que concluo é – O Segredo de uma equipe esta na forma que ela é comandada, o general deve conhecer seu soldados e fazer com que eles ajam por eles próprios, que eles compreendam o projeto e trabalhem de forma harmônica como uma sinfonia. Isso é a forma com que as equipes são melhores governadas.

Eis o segredo do melhor gestor:

Reger a equipe sem-agir

Pois simplesmente um desenvolvedor, em minha opinião, devia-se:

“Gerar e criar; Gerar e não possuir; Agir sem depender; Presidir e não controlar.”

Fazendo uma analogia ao Friedrich Nietzsche, nós somos o “anti-software-development“, pois não existe problemas em uma equipe, nos que o criamos.

Ruby Rpam Nova Versão

julho 9, 2009

Recebi, recentemente, alguns patchs para o Rpam, (extensão nativa para manipular a biblioteca do PAM em Ruby), enviadas pelos desenvolvedores do WebYast do Suse.

Consiste de exemplos e testes aplicados a chamada authpam().

Você pode baixar os fontes aqui:

http://rubyforge.org/frs/?group_id=6758

Ou aqui:

svn checkout http://rpam.rubyforge.org/svn/

Ou instalar via gem:

gem install rpam

Para quem tem instalado via gem, é só atualizar para a versão atual.

Mais informações:

https://andrem.wordpress.com/2008/08/10/pam-ruby-rpam/

http://rubyforge.org/docman/index.php?group_id=6758

E-mail que recebi:

http://www.mail-archive.com/yast-devel@opensuse.org/msg00864.html

Qualquer problema, me informem :)