Desenvolvendo Aplicações com Software Livre

  • 2,255 views
Uploaded on

 

More in: Technology
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
No Downloads

Views

Total Views
2,255
On Slideshare
0
From Embeds
0
Number of Embeds
2

Actions

Shares
Downloads
93
Comments
0
Likes
1

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 1. Desenvolvendo Aplicações com Software Livre Jackson Laskoski http://www.JACK.eti.br [email_address] Pós-Graduação (lato-sensu) Gestão em Tecnologia e Desenvolvimento da Informação
  • 2. Agenda/Plano de Ensino 10 e 11/10/2008
    • Software Livre - (10/10/2008)
      • Diferentes tipos de licenciamento
      • O que devo e o que eu não preciso liberar a nível de código-fonte?
    • Ferramentas de código livre e metodologias de desenvolvimento - (10/10/2008)
      • “ As Ruffles” do momento ( PHP , Ruby, Java, Python)
      • Bancos de Dados (MySQL, Firebird, PostgreSQL)
      • Orientação a Objetos
      • Web Based
      • MVC
    • Paradigma RAD (Rapid Application Development): Uma necessidade! (10/10/2008)
      • PHP 5: Porque vamos ver ele? O que mudou em relação às versões anteriores?
      • MySQL 5: Porque vamos ver ele? O que mudou em relação às versões anteriores?
      • O que é um Framework?
      • Mas afinal, porque é vantagem usar um framework?
  • 3. Agenda/Plano de Ensino 10 e 11/09/2008
    • CakePHP - (10 e 11/10/2008)
      • Principais características e Recursos:
        • Baseado na arquitetura MVC
        • Licença flexível (MIT)
        • Compatibilidade com PHP4 e PHP5
        • Validação de campos
        • Scaffolding
        • Listas de controle de acesso (ACL)
        • Componentes
        • Helpers
        • Geração de código-fonte
      • Ambiente e cenário envolvido
        • Servidor web (Apache)
        • PHP5
        • MySQL5
      • Instalando e entendendo a ferramenta (estrutura de arquivos)
    • Gerando aplicação de demonstração - (11/10/2008)
      • Sistema para cadastramento e controle de uma coleção de livros:
        • Visitantes podem realizar comentários e sugestões para cada item;
        • Visitantes podem acompanhar a coleção usando um feed RSS;
        • Deve haver uma área administrativa onde o usuário pode alterar suas coleções;
        • A interface deve ser simples e fácil de se utilizar;
  • 4. Agenda/Plano de Ensino 10 e 11/09/2008
    • Trabalho técnico/prático em grupo (3 pessoas) – 11/10/2008
      • Definição de uma aplicação prática e funcional, com enfoque a ser definido por cada grupo:
        • Deve conter a modelagem do sistema;
        • Todos os recursos que forem julgados necessários e/ou importantes;
  • 5. Software Livre
    • “ Software livre" se refere à liberdade dos usuários executarem, copiarem, distribuírem, estudarem, modificarem e aperfeiçoarem o software. Mais precisamente, ele se refere a quatro liberdades, para os usuários do software:
    • A liberdade de executar o programa, para qualquer propósito (liberdade no. 0);
    • A liberdade de estudar como o programa funciona, e adaptá-lo para as suas necessidades (liberdade no. 1). Aceso ao código-fonte é um pré-requisito para esta liberdade;
    • A liberdade de redistribuir cópias de modo que você possa ajudar ao seu próximo (liberdade no. 2);
    • A liberdade de aperfeiçoar o programa, e liberar os seus aperfeiçoamentos, de modo que toda a comunidade se beneficie (liberdade no. 3). Acesso ao código-fonte é um pré-requisito para esta liberdade.
  • 6. Software Livre Diferenças entre as principais licenças de software
      • GPL
        • GNU GPL ou simplesmente GPL, é a designação da licença para software livre idealizada por Richard Stallman no final da década de 1980, no âmbito do projecto GNU da Free Software Foundation (FSF). A GPL requer que trabalhos derivados sejam licenciados sob a mesma licença, ou seja, sob a GPL.
      • BSD
        • A licença BSD permite que o software distribuído sob a licença, seja incorporado a produtos proprietários. Trabalhos baseados no material podem até ser liberados com licença proprietária. Alguns exemplos notáveis são: o uso de código do BSD (funções de rede de computadores) em produtos da Microsoft, e o uso de muitos componentes do FreeBSD no sistema Mac OS X da Apple Computer.
      • MIT
        • A licença MIT é similar a licença BSD versão "3-clause". Essencialmente, a diferença reside no fato de a licença BSD conter um aviso proibindo o uso promocional do nome do autor sob copyright. A versão "4-clause" da licença BSD também inclui uma cláusula determinando que toda a propaganda do software inclua uma nota, enquanto a licença MIT, nunca teve tal cláusula. A licença MIT, por outro lado, coloca de forma mais explícita os direitos do usuário final, incluíndo o direito ao uso, cópia, modificação, fusão, distribuição, "sublicenciamento", e/ou venda de software.
  • 7. Linguagens de Programação (software livre) As “Ruffles” do momento
      • JAVA (http://java.sun.com/)
        • Atualmente licenciado sob GPL pela SUN;
        • Mais que orientada, é baseada em objetos;
        • É extremamente portável e robusta;
        • Pode ser utilizada no desenvolvimento de aplicações texto, desktop ou web-based;
        • Tem uma curvatura de aprendizado considerada elevada;
        • Ainda está se desenvolvendo regionalmente (até mesmo, a nível de Brasil)
      • Ruby on Rails (http://www.rubyonbr.org/)
        • Segundo Colin Steele em An Introduction to Ruby, “Ruby é duas partes Perl, uma parte Python e uma parte Smalltalk.”
        • Devido ao advento do Rails (um framework desenvolvido no próprio Ruby e com enfoque na arquitetura MVC), vem ganhando muitos adeptos;
        • É baseado em objetos e livre (licenciado sob uma licença particular);
        • Ainda pouco popular regionalmente;
        • Utilizado basicamente em aplicações for web;
        • Bastante peculiar quanto a forma de desenvolvimento;
      • Pyton (http://www.pythonbrasil.com.br)
        • Linguagem de código aberto (GPL);
        • Extremamente flexível, script e interpretada;
        • Bastante portável quanto à sistemas operacionais e equipamentos;
        • Utilizada mais a nível acadêmico;
        • Programação tanto desktop quanto web-based;
        • Curvatura de aprendizado bastante atrativa;
  • 8. Linguagens de Programação (software livre) As “Ruffles” do momento
      • PHP (http://www.php.net/)
        • Linguagem script para desenvolvimento de aplicações web-based;
        • 100% livre, GPL;
        • Baixa curvatura de aprendizado;
        • A partir da versão 5.0, com um forte apelo e recursos embutidos de desenvolvimento OO;
        • Junto com ASP (ferramenta proprietária), PHP domina indiscutivelmente o cenário de aplicações web-based;
        • Permite o desenvolvimento de aplicações alinhado a arquitetura MVC e a Frameworks (produtividade);
        • A exemplo de JAVA, com um forte incentivo de gigantes (IBM, Oracle e afins) na certificação de profissionais (Certificação Zend);
  • 9. Banco de Dados - SGBD (software livre)
      • MySQL
        • Banco de Dados Livre, ótima integração com linguagens de programação de mercado (PHP, JAVA, DELPHI, VB, etc…), rápido, leve, costuma ter excelente performance e usar hardware modesto (não precisa vender o fígado para adquirir um servidor - na maioria dos casos, é claro :-) . Amadureceu muito na sua última versão estável (5.0) e promete incorporar várias tecnologias usadas pelo maior cluster MySQL do mundo (a Google) na sua versão 6.0. Possui uma versão comunitária (livre) e uma versão Enterprise. É sem dúvida alguma o banco de dados mais utilizado junto à programas desenvolvidos em PHP. Site oficial: http://www.mysql.com/
      • FireBird
        • Advindo do Interbase da Borland, também trata-se de um SGBD Livre. É rápido, tem excelente integração com Delphi, JAVA, PHP, VB, etc… - Tem versões tanto para MS Windows quanto GNU/Linux. Em virtude de sua origem histórica e de suas APIs é muito mais utilizado em aplicações standalone/desktop que em aplicação desenvolvidas para ambiente web, contudo, é extremamente robusto e com uma comunidade bastante atuante. Site oficial: http://www.firebirdsql.org/
      • PostGreSQL
        • Sem dúvida alguma uma ferramenta robusta e muito escalável em termos de BD livres Tem versões para MS Windows e GNU/Linux. Dos três é a ferramenta que mais pede hardware e infra-estrutura (dependentemente do volume de dados e recursos), mas tem suportes diferenciados como BD escaláveis e ambientes integrados para várias coisas (desenvolvidos por terceiros - Data Warehouse, etc…). Site Oficial: http://www.postgresql.org/
  • 10. Orientação a Objetos Pequena Revisão
      • Objetos
        • Um objeto é uma representação de um conceito real, possui estados, operações (métodos) e dados (atributos). Um objeto em PHP é definido da seguinte forma:
        • <?php
        • //cria um novo objeeto
        • $php = new LinguagemProgramacao;
        • //um objeto possui atributos
        • $php->versao = 5;
        • //e um objeto possui um método
        • $php->ShowVersao();
        • ?>
      • Classes
        • Uma classe pode ser considerada um “molde” para criar objetos. Ela define todos os dados e comportamentos possível daquele tipo de objeto. Dessa forma, um objeto é considerado uma instância de uma classe:
        • <?php
        • class LinguagemProgramacao {
        • $versao; //atributo
        • //método construtor da classe. É executado sempre que um novo objeto é //criado
        • function __construct() {
        • $this->versao = 0; //acessando o atributo internamente
        • }
  • 11. Orientação a Objetos Pequena Revisão
        • //método destrutor. É executado sempre que um objeto é destruído
        • function __destruct() {
        • }
        • //método que escreve o conteúdo do atributo
        • function showVersao() {
        • echo $this->versao;
        • }
        • ?>
      • Herança
        • Podemos definir uma classe como sendo uma classe-filha de outra. Isto significa que a nova classe herda todas as características da classe-pai. Este é um conceito muito importante na POO e utilizado extensivamente em frameworks como o CakePHP:
        • <?php
        • class LinguagemProgramacaoEstruturada extends LinguagemProgramacao {
        • function goto($linha) {
        • echo “Movendo para linha $linha”;
        • //aqui o resto da implementação
        • }
        • }
        • $cobol = new LinguagemProgramacaoEstruturada;
        • $cobol->showVersao(); //usando um método herdado da classe-pai
        • $cobol->goto(100); //usando um método herdado da classe-filha
        • ?>
  • 12. Arquitetura MVC
      • MVC é um acrônimo para Model, View e Controller (Modelo, Visão e Controlador). A idéia básica é separar todo o desenvolvimento de uma aplicação em 3 partes ou camadas:
      • Model – Gerencia o comportamento dos dados da aplicação.
      • View – Gerencia a saída gráfica e textual da parte da aplicação visível ao usuário final.
      • Controller – Interpreta as entradas de mouse e teclado do usuário, comandando a Visão e o Modelo para se alterarem de forma apropriada.
      • Todas as requisições feitas pelo usuário são enviadas ao Controller. Este manipula os dados usando o Model e invoca a View correta, de acordo com a ação executada ou com os resultados vindos do Model.
      • A grande vantagem de se utilizar a arquitetura MVC é a separação entre lógica (regras do negócio), apresentação e dados, favorecendo muito o trabalho em equipe. Dessa forma, qualquer mudança, por exemplo, na apresentação, teria pouco ou nenhum impacto nas demais camadas da aplicação... ao mesmo tempo que tudo continua absolutamente integrado.
  • 13. Frameworks
      • Um framework de desenvolvimento é uma “base” de onde se pode desenvolver algo maior ou mais específico. É uma coleção de códigos-fonte, classes, funções, técnicas e metodologias integradas à um ambiente centralizador que facilitam o desenvolvimento e manutenção de aplicações.
      • Mas afinal, porque é vantagem usar um framework?
        • Passado o período inicial de familiarização com a ferramenta, as vantagens começam a aparecer;
        • Como todos os desenvolvedores de uma mesma equipe usam um determinado framework, programam usando as mesmas convenções, classes e bibliotecas, a manutenção de um programa fica muito mais ágil (produtividade);
        • Abstrai-se as tarefas mais repetitivas, permitindo a concentração de esforços na regras do negócio;
        • DRY – Don’t Repeat Yourself (não se repita). Deixe de repetir códigos comuns em módulos de um mesmo sistema (inclusão, alteração, recuperação e exclusão de dados);
        • Facilidade na geração de testes automatizados;
        • Geração de documentação;
        • Uso de tecnologias embutidas:
          • MVC
          • ActiveRecord: Abstrai o programador de conhecer a fundo uma linguagem de manipulação de dados, como a SQL, além de manter toda a aplicação desenvolvida no paradigma orientado a objetos;
          • AJAX (Asynchronous Javascript and XML): Toda página AJAX está em um objeto chamado XMLHTTPRequest, o qual permite que sejam feitas requisições assíncronas ao servidor web, não precisando de atualizações na página ou espera por parte do usuário;
          • Internacionalização: É o processo de possibilitar que seja facilmente alterada a linguagem da interface e de mensagens de uma determinada aplicação.
  • 14.
      • O CakePHP teve seu desenvolvimento iniciado por Michal Tartarynowicz em 2005. Baseado nas idéias do framework Ruby on Rails, sua principal meta é ser um framework estruturado que permita programadores PHP de todos os níveis desenvolverem aplicações web robustas e sem perda de flexibilidade.
      • O CakePHP, apesar de estar às vésperas de sua versão 1.2 (estável) é bastante maduro, com uma proposta clara de trabalho e uma comunidade de desenvolvedores extremamente ativa.
      • Alguns Links importantes:
      • http://www.cakephp.org
      • http://www.cakephp.com.br/
  • 15. Porque usar o CakePHP?
      • Baseado em arquitetura MVC
        • Facilita o desenvolvimento e manutenção de aplicações;
        • Melhor organização do código-fonte;
        • Facilita o trabalho em equipe;
        • Abstrai o programador de tarefas repetitivas e complexas.
      • Licença Flexível
        • O CakePHP é licenciado sob a licença MIT, muito mais flexível que a GPL e a própria BSD.
      • Compatibilidade com PHP4 e PHP5
        • Como a imensa maioria dos servidores web rodam a versão 4.0 do PHP esta é uma vantagem significativa do CakePHP em relação a outros frameworks PHP, como é o caso do Symfony ou do Zend Framework.
      • Validação de campos
        • O CakePHP possui formas de validar dados digitados pelos usuários em formulários ou URLs. Isso ajuda o programador a evitar dados incorretos ou problemas de segurança.
      • Scaffolding
        • É um recurso que analisa uma tabela na base de dados e cria autamaticamente botões e formulários para as operações básicas de inclusão, alteração, e exclusão de dados.
  • 16. Porque usar o CakePHP?
      • Listas de controle de acesso (ACL)
        • Permite gerenciar algo (geralmente usuários) que deseja utilizar alguma coisa
        • Permite gerenciar algo que é desejado (aplicações, por exemplo)
        • Não é autenticação de usuários
      • Componentes para:
        • Segurança;
        • Sessões;
        • Tratamento de requisições
        • Permite o desenvolvimento de componentes específicos adicionais ao ambiente
      • Helpers
        • Existem helpers para auxiliar na geração de HTML, formulários, JavaScript e AJAX. Novos helpers podem ser criados ou reutilizados em outros projetos.
      • Geração de código-fonte
        • O CakePHP apresenta uma ferramenta chamada bake, que permite a criação de diretórios da aplicação, além da geração de código CRUD. CRUD é um acrônimo para Create, Retrieve, Update e Delete.
  • 17. Instalando o CakePHP
      • Cenário Envolvido
        • O CakePHP pode ser utilizado em qualquer plataforma operacional com suporte ao interpretador PHP;
        • Servidor Web Apache;
        • PHP 4.3.2 ou superior;
        • Editor PHP de sua preferência;
        • DBDesigner ou outra ferramenta de modelagem de dados;
        • Uma base de dados:
          • A versão estável do framework suporta MySQL, PostgreSQL e camada de abstração de banco de dados chamada ADOdb. A versão 1.2 suportará também, nativamente, Oracle.
      • Passos para a instalação
        • Baixar a versão estável da ferramenta em http://www.cakephp.org/downloads
        • Descompactar/extrair no diretório raíz do seu servidor web
        • Renomear o diretório para um nome mais usual/curto (cake)
        • Pronto, já está funcionando: http://localhost/cake
  • 18. Entendendo a “Morfologia” da Ferramenta
      • /app – Diretório onde ficará a aplicação desenvolvida
        • /config – Arquivos de configuração, DB, etc..
        • /controllers – Controladores da aplicação
        • /index.php – Página inicial da aplicação
        • /models – Modelos da aplicação
        • /plugins – Plugins que podem ser adicionados
        • /tmp – Usado para cache e logs
        • /vendors – Bibliotecas de terceiros
        • /views – Visões da aplicação
          • /elements – Elementos, pedaços da visão
          • /errors – Páginas de erros customizadas
          • /helpers – Ajudantes para gerar código
          • /layouts – Arquivos de layout
          • /pages – Visões estáticas
        • /webroot – DocumentRoot para aplicação
          • /css – Arquivos css
          • /files – Arquivos comuns
          • /img – Imagens
          • /js – Javascripts (AJAX)
      • /cake – Código-fonte do cake
      • /docs – Documentação do framework
      • /vendors – Bibliotecas de terceiros
      • index.php – Página inicial do framework
  • 19. Considerações sobre a base de dados de novos projetos
      • Todas as tabelas devem estar no plural
        • Ex: Usuarios, Comentarios
      • A chave primária para todas as tabelas deve ser o campo “id”
        • Preferencialmente estes campos devem ter algum mecanismo de geração de códigos-fonte, como a opção auto_increment do MySQL. Em SGBDs como o PostgreSQL e o Oracle, isso pode ser feito utilizando-se o recurso de triggers.
      • Chave estrangeira no singular
        • Para utilizar chave estrangeira, esta deve possuir nome da tabela no singular acrescido do campo “id”. Exemplo: usuario_id.
      • Relacionamento de n-n deve ser organizado em ordem alfabética
        • Primeiro nome no singular acrescido de um “_” e o nome da segunda tabela no plural. Exemplo: livro_usuarios.
      • É importante seguirmos estas convenções, pois assim o CakePHP pode gerar diversas linhas importantes de código-fonte. Além disso, essas convenções facilitam a vida dos novos desenvolvedores, no que se refere ao entendimento das aplicações.
  • 20. Gerando Aplicação - Demonstração
  • 21. Roteiro de Implementação
      • No Linux
        • php5-cli
        • Apt-get install php5-cli (debian/ubuntu e afins)
      • No Windows
        • php.exe na variável path do sistema (em geral, ela já está lá)
      • Gerando o projeto
        • cd c:apache2triadhtdocscake
        • php cakescriptsake.php –project c:apache2triadhtdocscakemeuslivros
      • ---------------------------------------------------------------------------------------------------
      • Skel Directory: c:apache2triadhtdocscakecakescripts emplatesskel
      • Will be copied to:
      • New App Directory: c:apache2triadcakemeuslivros
      • ---------------------------------------------------------------------------------------------------
  • 22. Roteiro de Implementação
      • Gerando a aplicação
        • php cakescriptsake.php –app meuslivros
      • Configurando o acesso ao banco de dados
        • Informações referente ao acesso à base de dados
      • Solicita a camada da aplicação que se deseja criar
        • Aconselhável (devido as relações) criar sempre na ordem:
          • Todos os Modelos;
          • Todos os Controles;
          • Todas as Visões;
      • Nos modelos...
        • Usar a validação de campos;
        • Definir as associações:
          • hasOne – Possui um;
          • hasMany – Possui muitos;
          • belongsTo – Pertence a;
          • hasAndBelongsToMany – Tem e pertence a muitos;
  • 23. Roteiro de Implementação
      • No caso em específico
        • Um usuário possui muitas coleções, então usuario hasMany colecao;
        • Uma coleção pertence a um usuário, então colecao belongsTo usuario;
        • Uma coleção possui muitos livros, então colecao hasMany livro;
        • Um livro pertence a uma coleção, então livro belongsTo colecao;
        • Um livro possui muitos comentários, então livro hasMany comentario;
        • E um comentário pertence a um livro, logo comentario belongsTo livro;
      • O bake é muito esperto, percebe as associações analisando as chaves estrangeiras (relacionamentos) na base de dados. Por isso é extremamente importante seguir as convenções do CakePHP na hora de gerar a base de dados!
      • Após gerado o modelo
        • O arquivo meuslivros/models/usuario.php pode ser observado
        • O processo deve se repetir para os demais modelos
        • Na ordem (devido as associações):
          • Colecaos, Livros e Comentários
  • 24. Roteiro de Implementação
      • Nos controles...
        • php cakescriptsake.php –app meuslivros
        • Escolher [C]ontroller
        • Seguir a ordem: Usuarios, Colecaos, Livros, Comentários
        • Vamos trabalhar com seções;
        • Queremos o geramento de métodos para o CRUD;
        • Os controles podem ser visualizados em:
          • meuslivroscontrollers;
          • Observe os métodos gerados automaticamente em cada arquivo de controle.
  • 25. Roteiro de Implementação
      • Nas visões...
        • php cakescriptsake.php –app meuslivros
        • Escolher [V]iew
        • Seguir a ordem: Usuarios, Colecaos, Livros, Comentários
        • Queremos o geramento de visões para o CRUD;
        • As views podem ser vislumbradas em:
          • meuslivrosviews<CONTROLE>;
          • Traduções podem ser feitas (ou tradizir o bake.php)
          • Para cada método do controlador é gerado uma view;
          • É possível se observar o uso dos helpers para gerar HTML e formulários;
          • É possível a customização das telas:
            • meuslivrosviewslayoutsdefault.thtml
            • meuslivroswebrootcss
        • http://localhost/cake/meuslivros/usuarios
  • 26. Roteiro de Implementação
      • Customizando a aplicação
        • Dar a idéia de uma aplicação única/integrada
          • meuslivrosviewspageshome.thtml
        • Criar o controlador e as visões para o aplicativo chamado “principal”
          • meuslivroscontrollersprincipal_controller.php
            • Devido as associações quando da concepção dos modelos, o CakePHP busca os dados do usuário e todos os livros pertencentes a ele sem nenhuma instrução SQL escrita pelo desenvolvedor
          • Criar o diretório: meuslivrosviewsprincipal
          • Criar o arquivo: meuslivrosviewsprincipalindex.thtml
            • Aproveitamento dos aplicativos gerados pelo bake: Quando o usuário clicar em Ver Comentários , ele será direcionado para a página de visualização do livro (de acordo com as associações dos modelos, um livro tem vários comentários)!
  • 27. Roteiro de Implementação
      • Customizando a aplicação
        • Autenticando Usuários:
          • Criar o método login() no arquivo: meuslivroscontrollersprincipal_controller.php
          • É possível encontrar um registro por qualquer campo da tabela, através dos métodos do CakePHP (findByNome ou findBySenha, etc...);
          • Criar a view para o método menu: meuslivrosviewsprincipalmenu.thtml
        • Criando o método global (classe-pai) que checa a validade de uma seção:
          • Alterando o arquivo: meuslivrosapp_controller.php
            • Function checkSession();
          • Agora podemos usar o método criado acima, em qualquer classe-filha ou em qualquer método da classe-filha:
            • Meuslivroscontrollerslivros_controller.php;
            • Método beforeFilter();
  • 28. Roteiro de Implementação
      • Melhorando a interface
        • Aspectos “cosméticos” e práticos
          • meuslivroscontrollerslivros_controller.php
            • Modificando o método add();
          • A tática pode ser usada em basicamente qualquer método ou sub-método;
      • Validando a entrada de dados
        • Evitando problemas com SQL Injection e outros
          • meuslivroscontrollerscomentarios_controller.php
            • Modificando o método add();
          • O recursos/classe Sanatize faz parte do CakePHP;
          • A tática pode ser igualmente utilizada em outros método ou sub-métodos onde haja entrada/passagem de dados;
  • 29. Roteiro de Implementação
      • Recurso de RSS
        • Cumprindo com as metas do projeto
          • meuslivroscontrollersprincipal_controller.php
            • Adicionando o método rss();
          • Criando a visão para o método rss(): meuslivrosviewprincipal ss.thtml
          • Adicionando o link para o recurso de RSS no meuslivrosviewsprincipalindex.thtml
      • Usando AJAX
        • Utilizando dois Helpers adicionais para criar a funcionalidade de pesquisa
          • http://www.prototypejs.org/download
          • http://script.aculo.us/downloads
          • Salvar ambos em meuslivroswebrootjs
        • Criar o controle: meuslivroscontrollersuscas_controller.php
        • Criar a view: meuslivrosviewsuscasindex.thtml e meuslivrosviewsuscasupdate.thtml
  • 30. Referências Bibliográficas Básicas
      • Livros
        • Ahsanul Bari, Anupom Syam, CakePHP Application Development . Editora Packt, 2008
        • Minetto, Luiz Elton, Frameworks para desenvolvimento em PHP . Editora Novatec, 2007
      • Links importantes
        • http://book.cakephp.org/pt
        • http://cakephp.org
        • http://cakephp.com.br
        • http://www.tuliofaria.net/categoria/cakephp/
        • http://www.revistaphp.com.br/artigo.php?id=93
        • http://www.jack.eti.br
        • http://www.br-linux.org (software livre)