Archive for September, 2008

Click on one of the items below to go to the post

25 anos de GNU


Pois é, faz 25 anos que a maior frente no mundo open source iniciou seu trabalho. O dia da festa foi 27 de Setembro (sab) e mesmo que atrasado sou mais um a manifestar meus parabéns a todos aqueles que contribuem de alguma forma ( desenvolvendo, testando, usando ou evangelizando). É isso ae moçada!

Abaixo coloco um vídeo feito pela Globo News com o polémico Richard Stallman. Apesar do cara ser meio doido, ele é o cara que faz a balança funcionar. De um lado, extremistas que querem capitalizar tudo, por outro extremistas like Richard Stallman que quer liberar tudo.

O vídeo acima esta hospedado no site do Augusto Campos, um ativista brazuca do opensource.

Ubuntu Kung Fu

Boa notícias para os fãs do Ubuntu: o grupo The Pragmatic Programmers acaba de lançar o livro Ubuntu Kung Fu, ressaltando os poderes da distro ( e como as pessoas os desconhecem). Embora não concorde com a frase It’s the best Linux distribution ever, o livro promete trazer mais de 300 dicas sobre o famoso filho do Debian, com foco em usuários que vieram do Windows e do MacOS (sério? E como ficam os milhares de usuários do FreeBSD e do BeOS ?).

Quem quiser um trecho do livro, eles disponibilizaram um PDF aqui.

Materiais online de Stanford e MIT

A universidade de Stanford disponibiliza alguns materiais de suas aulas do curso de Ciências da Computação online, através do programa Stanford Engineering Everywhere. Confesso que peguei o video de introdução ao curso de CC e o carinha fala rápido hein… Mas nada impossível de pegar, principalmente com o tempo.

Abaixo a aula de introdução ao curso de CC:

Procurando por algum similar do MIT achei um tal de MIT Open Courseware, que tem uma sessão de “Ciência, Tecnologia e Sociedade”. Não é tão bom quanto o curso online de Stanford, mas já é alguma coisa também.

Vale lembrar que as duas universidades tem canais no Youtube: Stanford e MIT.

Test Driven Development

Estamos aqui na 3Jane nos policiando para seguirmos as regras pregadas pelos processos ágeis. Uma delas é o desenvolvimento orientado a testes. Na verdade todos nós aqui já tinhamos lido sobre o assunto, mas agora vai ser lei.

Falando de mundo PHP, temos basicamente dois frameworks para testes : o PHPUnit e o SimpleTest. Até onde tenho lido, ambos fornecem diversos recursos para escrita de testes, entretando como o CakePHP já possui um caso de amor com o SimpleTest, estou lendo mais sobre ele.

Deixo abaixo um slide que encontrei no slideshare falando sobre TDD:

Software Testing Basics
View SlideShare presentation or Upload your own.

PHP + YAML via SPYC


O Rails usa um formato muito simples de documentos para a substituição do XML, o YAML. Esse formato além de extremamente ágil é mais “human friendly” que o XML.

Procurando algum loader em PHP para esse formato, achei o SPYC. A implementação é simples, basta dar um Spyc::YAMLLoad(‘arquivo.yml’) que ele carrega e gera um array – e você também pode fazer dump com ele.

Dinheiro não é tudo

Em pleno século XXI, eu, cidadão das Américas (ainda que do Sul), venho com esse papo mole de que dinheiro não é tudo. Sei que a proposta do post não é nova, mas sei também que tem muita gente que vai concordar comigo que dinheiro não é tudo.

Nós como meros desenvolvedores que somos por vezes somos a menor parte do processo de desenvolvimento de um software ( que paradoxo não ?). Constantemente trabalhamos sobre pressão, com prazos apertados, especificações falhas e com legados de softwares que sofremos pra manter. Mas se é tão ruim assim, por que continuamos ? Simples: porque amamos desenvolver software. Achamos mágico construir soluções que acelerem o processo de comunicação entre os seres humanos, sejam eles quem forem. Gostamos de bits, patterns, miracle driven developments, aprender coisas novas pra agilizar os processos e por ai vai.

Por isso nos envolvemos muito com o nosso trabalho. Saimos da empresa onde trabalhamos e vamos pra casa fazer o que ? Programar ou estudar programação ainda mais – e isso normalmente invade nossos finais de semana. Por essa razão não é difícil imaginar que nos envolvemos e muito com o que fazemos, já que fazemos por que somos apaixonados por isso.

E o que acontece quando percebemos que no ambiente onde trabalhamos existem processos ruins, que podiam ser otimizados mas que por “força maior” não os são ? Perdemos nosso humor. Parece que a “inspiração” para programar acabou, perdemos o ânimo para digitar um ponto-e-vígula sequer. Programador que ama o que faz não consegue digerir muito bem essa coisa de “isso é problema da empresa, as 18h vou pra casa tranquilo”.

E é ai que entra o titulo do post “Dinheiro não é tudo”. Ok, gostamos de dinheiro por que precisamos e por que nos trás conforto, mas dinheiro não compra entusiasmo – muito menos patrimônio intelectual.

Por exemplo, sempre tem aquele papo de que todo programador deve virar gerente de projetos. Por quê ? Simples, porque gerente ganha mais. Mas, e se eu não gostar de ficar “o dia todo de frente pro Project?” (hei isso foi uma piada, por favor ria) E se eu achar graça em outra coisa? E se o que me deixa feliz é digitar um bando de palavras em inglês e apertar o F5 ? (preciso dizer que foi outra piada?). Quem disse que eu estou programando só por dinheiro?

Por isso saiba discernir se você esta construindo o seu futuro simplesmente pelo que vai ganhar ou pelo que vai viver. Não deixe seu prazer em desenvolver softwares da maneira correta enferrujar junto com os processos administrativos da sua empresa. Dinheiro é bom, mas quando a gente morre fica tudo pra um bando de filhos ingratos que não vão saber quantas linhas de código você teve que escrever para consegui-lo. E se você morrer sem filhos, alguma mulher vai acabar gastando sua grana mesmo. (Suellen isso foi só força de expressão tah amor…) Não substitua talento por desculpas. Se quando você esta no trabalho, só fica pensando em ir embora e quando esta em casa fica com aquela sensação de frustação de voltar pra empresa, é melhor você dar uma olhada nesse vídeo aqui.

Ps.: A propósito, a foto do post é do filme A procura da felicidade. Acho que fui o único que achou o filme sensacional do inicio ao fim, mas mesmo assim se você não viu aconselho a fazê-lo.

Dica : Desenvolvimento Web Ágil com Rails

Pois é, o ultimo livro que comprei acabou rápido ( terminei de ler até mesmo antes da fatura do cartão de crédito ser emitida. Será que posso devolver o livro ? ). Logo no inicio do The Pragmatic Programmers os autores falam sobre expandir continuamente seu conhecimento, lendo bons livros a todo momento e aprendendo pelo menos uma linguagem de programação nova por ano. Tentando cumprir isso, tomei vergonha pra começar a estudar Ruby on Rails de verdade.

Como gostei muito do estilo usado pelo grupo The Pragmatic Programmers, comprei o livro deles sobre Rails. Já li umas 60 páginas e estou sentindo que vai dar namoro. Provavelmente os posts sobre Rails no blog vão começar aparecer ;-)

LHC usa Linux

Legal não ? Pelo menos agora eu já sei que o mundo não vai acabar com uma tela azul. O texto a seguir foi tirado da Internet News :

“The most powerful physics project in the history of the known universe – The $10 Billion Large Hadron Collider (LHC)- shot its first light speed beam this morning around its 27 km circuit. Beyond the 20 years it took to build and half of all the world’s astrophysicists, it also takes another key ingredient to make LHC work — Linux.

CERN which is the organization that runs the LHC project is using something called CernVM which is is custom Linux distribution. According to VMware, CernVM runs inside of VMware virtual machines that include PC and Macs across a grid that encompases the power of approximately 40,000 CPUs and some 15 petabytes of data a year.

CERN itself is no stranger to Linux and is one of the lead backers of the Scientific Linux distribution, which is a recompiled version of Red Hat Enterprise Linux.

**UPDATED** Got a comment (listed below) from a commenter with an IP within CERN that writes,”.. the primary configuration for machines in the LHC computing grid (http://lcg.web.cern.ch/LCG/) is based on Scientific Linux distribution running directly on the hardware. This grid is used to receive and distribute the 15PB of data across the 100,000s of CPUs across the world” **

Considering that the LHC, according to some, could be powerful enough to destroy the Earth, create a blackhole or rip a hole in the fabric of space itself, it is somewhat re-assuring that at least some of the key software behind it is not at risk from the blue screen of death.”

Usando o Authenticate do CakePHP


Estou trabalhando ultimamente com o CakePHP (1.2) e achei um componente muito útil: o AuthComponent. Ele centraliza todo o fluxo de autenticação no sistema e se você seguir algumas regras básicas dele, poderá fazer toda parte de login do seu site com praticamente esforço zero.

Primeiro passo é definir se a maior parte do seu site será publica ou privada por que isso dirá onde você deve acionar o Auth. Se você notar que quase todas as áreas do seu site será de acesso publico, é melhor chamar o Auth direto nos controllers que terá actions privadas. Caso não, você pode colocar direto no app_controller da sua aplicação.

Não que você não possa colocar direto na configuração de chamada do auth a lista de controllers e/ou actions e suas respectivas visibilidades, mas é só por uma questão de economia de esforço

A idéia é simples, e vou assumir que o controller com o auth será o app_controller

class AppController extends Controller {

 var $components = array('Auth');

 function beforeFilter() {

  // Auth config  $this->Auth->allow(array('action_publica'));  $this->Auth->loginError = __("Usuario nao encontrado", true);         $this->Auth->loginAction = array('controller' => 'users', 'action' => 'login');    $this->Auth->loginRedirect = array('controller' => 'users', 'action' => 'profile'); }

}

No exemplo acima, coloquei a chamada do componente no var $components = array(‘Auth’);, logo depois no beforeFilter ( que sempre é executado antes do controller) configurei o Auth da seguinte forma: o allow() serve para você dizer quais actions são de acesso publico, o loginError() é a mensagem de erro, o loginAction() define onde esta o action de login e o loginRedirect() serve pra apontar pra onde o usuário será redirecionado após o login. Agora basta no meu controller login colocar as actions login() e logout() que ficaria parecido com o seguinte:

class UsersController extends AppController {

   function login() { }

  function logout() {     $this->redirect($this->Auth->logout());   } 

}

Assim ficar o login e o logout. Simples não ? O action login() pode ficar completamente em branco e o logout() faz um redirect pro logout do Auth. E a view do login também é bem simples:

<div class="users">

<?php if ($session->check('Message.auth')):?>        <?php $session->flash('auth'); ?><?php endif;?>

<?php echo $form->create('User', array('action' => 'login'));?> <fieldset>   <legend><? __('Login') ?></legend>  <?= $form->input('username'); ?>  <?= $form->input('password'); ?> </fieldset> <?php echo $form->end('Logar');?></div>

Na view eu coloquei o $session->flash(‘auth’); principalmente para mostrar a mensagens do tipo “usuário não encontrado”, que você configura previamente no Auth.

Algumas considerações finais

O Auth tem várias configurações que podem ser alteradas, mas por default ele assume que você tem um modelo chamado User, que tem dois campos: username e password. Ele também assume que o campo password foi criptografado com um hash dele. A questão da criptografia do password é a única coisa que não pode ser alterada – ele sempre assume que o password esta criptografado.

Para saber mais sobre o Auth, vá na página da API dele e da documentação no CookBook. Agora vou continuar estudando sobre o ACL para definir as permissões de usuário automaticamente pelo grupo que ele pertence. Quando estiver com melhores conhecimentos tento escrever algo sobre isso.