Posted in junho 2011

Scaffolding usando Zend Framework

Segundo a Wikipedia, scaffolding é:

…termo é usado em programação para indicar que o código a que se refere é apenas um esqueleto usado para tornar a aplicação funcional, e se espera que seja substituído por algoritmos mais complexos à medida que o desenvolvimento da aplicação progride.

A idéia do scaffolding é gerar código de forma rápida, geralmente para você poder testar algum conceito ou modelagem de banco de dados, mas nada impede de usar o código gerado para algumas aplicações pequenas.
Essa é uma função que já vi em outros frameworks, como CakePHP, Django e Rails (por favor me corrijam se eu estiver errado). No Zend Framework isso ainda não existe, mas um programador criou um projeto para podermos usar os componentes padrão do framework (Zend_Form, Zend_Validate) e gerar códigos em tempo de execução para as tarefas básicas de manipulação de dados de uma tabela, o famoso CRUD (Create, Retrieve, Update,Delete)
Para usar precisamos fazer o download do código no site abaixo:

http://code.google.com/p/zendscaffolding/

Após baixar o arquivo e descompatá-lo você vai encontrar um diretório com o conteúdo:

README.txt - exemplos de como usar o componente
Scaffolding.php - a classe, que deve ser salva no diretório library/Zend/Controller/
tests - uma aplicação de exemplo
views - diretório com as visões usadas pelo componente. Deve ser salvo no diretório views/scripts do seu projeto

Vamos fazer um exemplo de uso.

Tendo uma tabela no banco de dados com a seguinte estrutura:

CREATE TABLE `users` (
  `id` tinyint(4) NOT NULL AUTO_INCREMENT,
  `name` varchar(100) NOT NULL,
  `email` varchar(100) NOT NULL,
  `password` varchar(45) NOT NULL,
  `status` enum('Ativo','Inativo') DEFAULT 'Ativo',
  `role` enum('admin','redator','revisor') DEFAULT 'revisor',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB  DEFAULT CHARSET=latin1 AUTO_INCREMENT=7 ;

Após seguirmos os passos normais de uma aplicação Zend Framework, criando o model para tratar esta tabela podemos criar um controlador:

UserController.php

Somente isto é necessário. Não é preciso criar as visões ou outros métodos. Ao acessar a URL

http://projeto/users

É apresentado :

Esta tela é gerada usando-se as visões do diretório scaffolding dentro do views/scripts, então podemos alterá-las para termos uma interface mais amigável.

Ao clicar em adicionar ou editar um usuários somos apresentados o formulário:

É interessante notar que os campos ENUM da base de dados foram apresentados como campos SELECT, o que facilita o preenchimento.
Um dos detalhes que achei interessante no código é que ele usa todos os componentes padrão do Zend Framework, então é muito fácil extender a classe Zend_Controller_Scaffolding e usar validators, decorators e outras funcionalidades.
No README.txt que vem incluso no pacote, e na documentação do site existem outros exemplos mais complexos, inclusive com o uso de chaves estrangeiras e tabelas relacionais, tudo muito simples de usar.
O desenvolvedor apresentou uma proposta de inclusão desta classe na versão oficial do framework, mas o processo ainda está em andamento, mas espero que seja aprovado, pois tenho usado bastante e acho uma feature realmente útil

TDC São Paulo 2011

Em Julho acontece mais um The Developers Conference, em São Paulo. Ano passado eu palestrei na edição de Florianópolis e gostei muito da organização e do nível das palestras, palestrantes e participantes.
Este ano eu vou para São Paulo com um desafio novo. Vai ser a primeira palestra não-técnica que vou apresentar, na trilha de empreendedorismo. Vou falar sobre alguns conceitos que usamos na Coderockr, principalmente defender a idéia de que “programadores são rock stars”. O título da palestra é “Programadores, guitarras e negócios”.
Os detalhes do evento estão no site oficial do evento

Blog sobre música

Estou tirando mais um projeto da gaveta, e esse é dos antigos. Sempre pensei em escrever um blog sobre música, mas nunca passou de um plano. Agora, com a ótima companhia da minha bela @ruby_sunday, criamos o http://escutae.wordpress.com
A idéia do blog é escrevermos sobre as bandas que gostamos de ouvir, as novas e as clássicas, como se fosse aquele papo de bar “já ouviu aquela banda? não? então escuta aí”
Então, se quiser conhecer algumas bandas novas, ou discutir sobre as que já conhece, dá uma passada lá ;)

Palestra em Bento Gonçalves

No dia 13 de Agosto eu vou ministrar uma nova palestra, no tradicional evento TcheLinux que vai acontecer em Bento Gonçalves, no RS.
A palestra é sobre “Otimizando aplicações desenvolvidas com Zend Framework” e os detalhes do evento podem ser encontrados neste site:
http://tchelinux.org/site/doku.php?id=evento_2011_agosto_bento

E dá-lhe cerveja Polar e vinho para esquentar no frio do rio grande :)

Webcast sobre MySQL

Eu fui convidado pelo amigo Jackson para fazer um webcast, sobre MySQL. O evento vai acontecer no dia 05/07 e você pode fazer a inscrição no site abaixo.

MySQL para aplicações escaláveis

É a primeira vez que vou trabalhar com essa plataforma de e-learning, e gostei muito dos testes que fizemos. A ferramenta possui muitos recursos legais e acho que vai ser uma experiência muito produtiva. Já tem outros webcasts programados, sobre Linux, Zend Frameworks e outros estão na fila.
Parabéns ao pessoal da ConexTI pela idéia. É uma forma de garantir o acesso a conteúdos para pessoas que estão espalhadas pelo país.

Usando o Zend Framework via CLI

Existem várias tarefas dentro de um sistema web que podem/devem ser executadas direto no servidor, sem a interação com o usuário, como workers do Gearman, tarefas agendadas na crontab do Linux, etc.
Estas tarefas podem ser executadas com o PHP-CLI (Command Line Interface). Na documentação oficial do PHP existem exemplos bem fáceis de entender e extender. Nesse post vou comentar como usar o CLI em projetos com o Zend Framework.
O primeiro passo é criar um Bootstrap simplificado, que vou chamar de clip.php. Ele tem a mesma tarefa do Bootstrap normal de uma aplicação Zend Framework, com algumas coisas a menos como o uso das variáveis $_GET e $_POST. Eu criei dois exemplos de cli.php, um para projetos usando módulos e outro para projetos mais simples.
Para usá-los basta usar o projeto exemplo que está no Github ou baixar apenas o cli.php e customizá-lo para seu projeto. Para executar é:

php cli.php -e development -a default/index/index

Você precisa ter o executável do PHP em seu Path. No Windows você iria executar:

php.exe cli.php -e development -a default/index/index

Os parâmetros significam:
-e = ambiente que você está executando. Se não passar parâmetro o script vai considerar como “development”. Isso é usado para ler as configurações de caminhos e dados do config.ini
-a = o que você irá executar. O formato é modulo/controlador/acao/param/valor

Se precisar passar parâmetros para a ação é só adicioná-los no comando, da mesma forma como faria em um navegador. Exemplo:

php cli.php -e development -a default/index/index/id/10/nome/elton

Desta forma a action indexAction do controlador IndexController vai poder acessar os parâmetros id e nome usando o comando:


$id = $this->getRequest()->getParam('id');
$nome = $this->getRequest()->getParam('nome');

No caso de não estar usando módulos no seu projeto basta invocar sem o nome do módulo:

php cli.php -e development -a index/index/id/10/nome/elton

Nós usamos bastante esse recurso em diversas tarefas agendadas nos projetos da Coderockr. É algo realmente útil.

Etiquetado , ,

Sobre e-books e idéias que mudam

Quem me conhece sabe que eu defendo as minhas convicções, as vezes até mais do que deveria. Mas recentemente eu mudei de opinião sobre duas coisas que eu acreditava: que iPads não serviam para nada, e que os e-books/revistas/HQs digitais nunca iriam substituir suas contrapartes impressas.
O motivo por essa mudança foi que comprei um iPad, inicialmente porque como a Coderockr desenvolve aplicativos para iOS ter um iPad é importante. Mas logo acabei me viciando no aparelho, e hoje ando com ele para todo o lado, deixando o MacBook de lado muitas vezes.
Além de alguns aplicativos úteis, a principal utilidade para mim tem sido como um e-reader. Ler livros, revistas e HQs digitais é uma tarefa muito legal no iPad, ainda mais com a vantagem de poder levar centenas deles no aparelho. Assim, sempre que tenho uma folga, no intervalo do almoço, na fila do banco, etc, estou lendo alguma edição de Sandman, Preacher ou um livro qualquer.
Outro motivo que me fez repensar minhas idéias sobre e-books foi ter lançado o Zend Framework na prática. Em poucos dias vendi uma boa quantidade de exemplares e recebi feedback positivo de várias pessoas. Eu já havia lançado dois livros impressos anteriormente, mas gostei do ciclo rápido entre a idéia e o lançamento do e-book (apenas alguns dias no meu caso). Além disso, um livro de programação é muito melhor em versão digital pois é possível copiar e editar códigos de maneira mais rápida. E poder levar o livro em um tablet ou celular ajuda muito. Sem falar que o retorno financeiro de cada edição é muito maior.
Eu sei que não vou jogar fora os livros e HQs que tenho na minha estante, e também não vou parar de comprá-los (um dos meus vícios), pois gosto de ter as edições físicas. Mas dificilmente você vai me ver novamente com um livro de 1000 páginas na mão, como o Senhor dos Anéis. Ele vai ficar na estante, e sua versão digital no meu tablet/celular ;)

Seguir

Obtenha todo post novo entregue na sua caixa de entrada.

Join 1.472 other followers