Ementa do curso Desenvolvimento web com
Brook framework 3.0
1. Apresentação
 Baixando o pacote de instalação;
 Instalação com dois cliques;
 Sugerindo ideias, solicitando novos recursos e reportando bugs;
 Forkando o projeto;
 Abrindo um pull request;
 Fazendo uma doação ao projeto.
2. Primeiros passos
 Entendendo o funcionamento de uma aplicação Brook;
 Criando o primeiro Hello world;
 Escrevendo na tela de diversas maneiras com o método Write;
 Renderizando arquivos na tela.
Exercício 1: Mostrar uma mensagem de erro usando recursos da própria
action;
Exercício 2: Renderizar um arquivo na tela, porém, trocando algumas
informações do conteúdo dele em tempo de execução.
3. Tipos de aplicação, Depuração
 Criando um servidor HTTP próprio com Embedded Server;
 Criando um servidor HTTP próprio e o instalando como serviço com
Embedded Daemon Server;
 Criando uma aplicação CGI;
 Depurando aplicações;
 Ativando a opção Build mode na aplicação;
 Personalizando erros 404 e 500.
Desafio: Criar uma aplicação do tipo CGI e Embedded Server, com três
opções de build: Release, Debug e Trace, podendo escolher um dos três
modos via diretiva de compilação, sendo que, no modo Release, a aplicação
será do tipo CGI, e, nos modos Debug e Trace, a aplicação será do tipo
Embedded Server.
4. HTML, Zen Coding, JTemplate, Bootstrap, Métodos HTTP e XMailer
 Escrevendo HTML via back-end;
 Zen Coding na prática (com Notepad++ ou Sublimetext);
 Dando vida ao HTML com o plugin JTemplate;
 Embelezando telas HTML com o Bootstrap;
 Entendendo métodos GET e POST;
 Montando um pequeno exemplo (Calculadora de soma);
 Usando sua conta Gmail para enviar e-mails com XMailer.
Exercício: Usando Zen Coding e Bootstrap, adicionar os botões de 0 a 9 na
calculadora e as operações aritméticas básicas;
Desafio: Alinhar os botões da calculadora com Bootstrap e/ou CSS, deixando-
a com uma aparência de uma calculadora real.
5. Generics, Entity, Formulários e Dados primitivos
 Uma breve abordagem sobre Generics;
 Entendendo actions com suporte a Entity;
 Criando um formulário com diversos tipos de campos;
 Convertendo lista de strings em objeto e vice-versa;
 Clonando objetos;
 Usando propriedades com dados primitivos ao invés de conversões;
 Usando Sets e Enums em formulários.
Exercício: Montando uma pequena calculadora com todas as opções
aritméticas (“+”, “-”, “*” e “/”).
6. Traduções, Redirecionamentos e Tipos de formulários
 Traduzindo as mensagens de erro da Brook;
 Trabalhando com mais de um formulário;
 Entendendo redirecionamento e URLs canônicas;
 Criando links de redirecionamento com UrlFor;
 Criando formulários popup;
 Entendendo formulários do tipo form-data (pequeno exemplo com
upload de arquivo).
Exercício 1: Criar um formulário onde o usuário digita o Nome e, ao clicar em
Salvar, é redirecionado para outro formulário, com o campo Sobrenome, que,
ao clicar em Salvar novamente, é redirecionado para uma tela que exibe a
seguinte mensagem: Seu nome completo é: <NOME SOBRENOME>;
Exercício 2: Criar três exemplos diferentes com UrlFor;
Exercício 3: Criar um formulário que seja possível fazer o upload de três
arquivos, recebendo cada um deles no back-end.
7. Banco de dados I: SQLdb, dOpf, CRUD
 Persistindo dados de um formulário com SQLdb;
 Conhecendo o projeto dOpf;
 Reaproveitando entity numa action e num OPF;
 Paginando dados com dOpf;
 CRUD básico com dOpf.
Desafio: Criar um grid com uma table do HTML, listando 100 registros, no
entanto, mostrando-os de 10 em 10, via paginação.
8. Menus, JTemplate, FontAwesome e dOpf
 Criando um menu de topo e lateral;
 Usando um indicador de navegação com JTemplate;
 Embelezando menus com ícones do projeto FontAwesome.
Desafio: Gerenciar a exibição de cinco menus com JTemplate e dOpf.
9. Cookies e sessions
 Persistindo dados em cookies;
 Persistindo dados em sessions;
 Criando uma tela com contagem de visitas.
Exercício: Criando uma tela de login.
10. Métodos HTTP, REST
 Conhecendo os métodos PUT e DELETE;
 Usando a extensão Advanced REST Client do Google Chome;
 Parâmetros em URLs;
 Criando variáveis dinâmicas em URLs;
Exercício 1: Criar uma pequena aplicação CRUD em REST;
Exercício 2: Criar uma tabela para cadastrar cinco clientes, depois, exibi-los
em um grid, com a opção de mostrar os detalhes do cliente ao clicar em seu
nome ou código.
11. Grids
 Criando um grid com Bootstrap;
 Criando um grid com jTable;
 Criando um grid com Kendo UI;
 Criando um grid com ParamQuery;
 Exemplo completo com grid e telas de edição de dados.
Desafio: Com o conhecimento adquirido sobre os grids apresentados acima,
criar um exemplo com o grid do projeto jEasyUI.
12. Banco de dados II: dOpf, jTable, Master/Detail, Lookup e Bootstrap
 Estruturas master/detail com dOpf e jTable;
 Estruturas lookup com dOpf e jTable;
 Criando uma estrutura master/detail com REST, dOpf e Bootstrap;
 Criando uma tela para busca e listagem de dados;
 Validando dados nos entities (back-end).
Exercício: Criar um exemplo com master/detail e lookup em um único projeto.
13. Componentes especiais
 Buscando um cliente pelo nome e mostrando sua foto na tela;
 Criando um slide show de propagandas com o auxílio do JTemplate;
 Escolhendo um componente para Hora, Data e linha de tempo;
 Mostrando imagens em thumbnail;
 Preenchendo um combobox via JTemplate;
 Criando um campo Autocomplete.
Exercício: Criar um pequeno exemplo de anúncios online.
14. Ajax I
 Conhecendo o jQuery;
 Fazendo requisições com jQuery em estrutura REST (CORS);
 Atualizando uma área da tela sem redirecionar a página;
 Preenchendo dados num combobox via Ajax;
 Preenchendo dados numa lista via Ajax.
Exercício: Criar um pequeno exemplo de como preencher um combobox após
escolher um item em outro.
15. RSS, Relatórios e Documentação de Projetos
 Enviando notícias via RSS com o EasyRSS;
 Criando relatórios em PDF.
Desafio: Criar uma pequena aplicação RSS com uma opção para salvar os
feeds em PDF.
16. Ajax II
 Validando dados com jQuery (fron-end);
 Formatando campos com máscaras;
 Usando Ajax em conjunto com JTemplate;
 Mostrando um ícone indicando que uma determinada página está sendo
carregada;
 Criando um formulário modal;
 Criando e preenchendo tabs (pagecontrol) via Ajax;
 Exibindo tooltips (hints) em controles HTML;
 Exibindo alerts Bootstrap via Ajax;
 Conhecendo o menu do tipo accordion.
Desafio: Criar uma pequena aplicação com um menu lateral esquerdo que, ao
clicar em seus itens (Home, Downloads e About), mostrar suas respectivas
páginas.
17. Middleware, Constraints, Auditoria de Actions, Captcha
 Controlando o acesso a URLs via middleware e constraints;
 Bloqueando o acesso a um site via login;
 Protegendo suas páginas com Captcha.
Desafio: Criar uma pequena aplicação para inscrição de usuários, com a
página de inscrição protegida via Captcha, evitando ataques de bots.
18. APIs, REST, JSON, OAuth e Aplicações Desktop
 Criando uma API para fornecer dados via JSON para um grid LCL;
 Persistindo dados em uma API via formulário LCL;
 Enviando arquivos para uma API via formulário LCL;
 Listando dados JSON em stringgrids com LJGridUtils;
 Evitando o envio de usuário/senha com OAuth PLAIN_TEXT.
Desafio: Criar uma pequena aplicação CRUD para manipular dados de uma
API via formulário LCL.
19. Configurações
 Configurando objetos via arquivo de configuração;
 Configurando uma aplicação via BrookSettings;
 Criando executáveis menores, linkando só o necessário neles;
 Organizando units e scripts em seus projetos;
 Configurando o dOpf para conectar em diversos tipos de bancos de
dados;
 Configurando o dOpf para gerar logs.
Exercício: Criar uma pequena aplicação onde seja possível configurar a
conexão com o banco de dados via arquivo de configuração.
20. Parse, Interpretação de Scripts
 Processando expressões algébricas;
 Executando Pascal dinamicamente com o PascalScript;
 Baixando e interpretando conteúdos de sites de terceiros.
Exercício: Criar um pequeno exemplo que consuma o serviço de algum site
público de terceiro.
21. Multimídia
 Renderizando um vídeo na tela;
 Configurando sua aplicação para oferecer o download ao invés de
renderizar um arquivo;
 Fazendo sua aplicação “tagarelar”.
Exercício: Usar algum plugin jQuery para tocar músicas em MP3.
22. Test-case, Documentação
 Criando testes de regressão (test-case);
 Documentando suas aplicações.
Exercício: Escolher uma de suas aplicações, criar alguns testes de regressão
nela e gerar uma documentação.
23. Conceitos básicos sobre publicação de aplicação web
 Hospedando sua aplicação numa instância Amazon (Introdução);
 Hospedando sua aplicação na HostMonster (Introdução);
 Checando as limitações do host de hospedagem antes de contratá-lo.
Exercício: Criar um Hello World onde seja possível outras pessoas acessá-lo
remotamente por IP ou domínio.
24. Diversos
 Distribuindo um servidor embutido via setup de instalação (instalando
um serviço);
 Configurando o Lazarus para melhorar sua produtividade;
 Criando a aplicação “papo furado” (chat);
Dúvidas, agradecimentos e “o que vem por aí na Brook 3.1”.

Ementa do curso Desenvolvimento web com Brook framework 3.0

  • 1.
    Ementa do cursoDesenvolvimento web com Brook framework 3.0 1. Apresentação  Baixando o pacote de instalação;  Instalação com dois cliques;  Sugerindo ideias, solicitando novos recursos e reportando bugs;  Forkando o projeto;  Abrindo um pull request;  Fazendo uma doação ao projeto. 2. Primeiros passos  Entendendo o funcionamento de uma aplicação Brook;  Criando o primeiro Hello world;  Escrevendo na tela de diversas maneiras com o método Write;  Renderizando arquivos na tela. Exercício 1: Mostrar uma mensagem de erro usando recursos da própria action; Exercício 2: Renderizar um arquivo na tela, porém, trocando algumas informações do conteúdo dele em tempo de execução. 3. Tipos de aplicação, Depuração  Criando um servidor HTTP próprio com Embedded Server;  Criando um servidor HTTP próprio e o instalando como serviço com Embedded Daemon Server;  Criando uma aplicação CGI;  Depurando aplicações;  Ativando a opção Build mode na aplicação;  Personalizando erros 404 e 500. Desafio: Criar uma aplicação do tipo CGI e Embedded Server, com três opções de build: Release, Debug e Trace, podendo escolher um dos três modos via diretiva de compilação, sendo que, no modo Release, a aplicação será do tipo CGI, e, nos modos Debug e Trace, a aplicação será do tipo Embedded Server. 4. HTML, Zen Coding, JTemplate, Bootstrap, Métodos HTTP e XMailer  Escrevendo HTML via back-end;  Zen Coding na prática (com Notepad++ ou Sublimetext);  Dando vida ao HTML com o plugin JTemplate;  Embelezando telas HTML com o Bootstrap;  Entendendo métodos GET e POST;  Montando um pequeno exemplo (Calculadora de soma);
  • 2.
     Usando suaconta Gmail para enviar e-mails com XMailer. Exercício: Usando Zen Coding e Bootstrap, adicionar os botões de 0 a 9 na calculadora e as operações aritméticas básicas; Desafio: Alinhar os botões da calculadora com Bootstrap e/ou CSS, deixando- a com uma aparência de uma calculadora real. 5. Generics, Entity, Formulários e Dados primitivos  Uma breve abordagem sobre Generics;  Entendendo actions com suporte a Entity;  Criando um formulário com diversos tipos de campos;  Convertendo lista de strings em objeto e vice-versa;  Clonando objetos;  Usando propriedades com dados primitivos ao invés de conversões;  Usando Sets e Enums em formulários. Exercício: Montando uma pequena calculadora com todas as opções aritméticas (“+”, “-”, “*” e “/”). 6. Traduções, Redirecionamentos e Tipos de formulários  Traduzindo as mensagens de erro da Brook;  Trabalhando com mais de um formulário;  Entendendo redirecionamento e URLs canônicas;  Criando links de redirecionamento com UrlFor;  Criando formulários popup;  Entendendo formulários do tipo form-data (pequeno exemplo com upload de arquivo). Exercício 1: Criar um formulário onde o usuário digita o Nome e, ao clicar em Salvar, é redirecionado para outro formulário, com o campo Sobrenome, que, ao clicar em Salvar novamente, é redirecionado para uma tela que exibe a seguinte mensagem: Seu nome completo é: <NOME SOBRENOME>; Exercício 2: Criar três exemplos diferentes com UrlFor; Exercício 3: Criar um formulário que seja possível fazer o upload de três arquivos, recebendo cada um deles no back-end. 7. Banco de dados I: SQLdb, dOpf, CRUD  Persistindo dados de um formulário com SQLdb;  Conhecendo o projeto dOpf;  Reaproveitando entity numa action e num OPF;  Paginando dados com dOpf;  CRUD básico com dOpf. Desafio: Criar um grid com uma table do HTML, listando 100 registros, no entanto, mostrando-os de 10 em 10, via paginação. 8. Menus, JTemplate, FontAwesome e dOpf
  • 3.
     Criando ummenu de topo e lateral;  Usando um indicador de navegação com JTemplate;  Embelezando menus com ícones do projeto FontAwesome. Desafio: Gerenciar a exibição de cinco menus com JTemplate e dOpf. 9. Cookies e sessions  Persistindo dados em cookies;  Persistindo dados em sessions;  Criando uma tela com contagem de visitas. Exercício: Criando uma tela de login. 10. Métodos HTTP, REST  Conhecendo os métodos PUT e DELETE;  Usando a extensão Advanced REST Client do Google Chome;  Parâmetros em URLs;  Criando variáveis dinâmicas em URLs; Exercício 1: Criar uma pequena aplicação CRUD em REST; Exercício 2: Criar uma tabela para cadastrar cinco clientes, depois, exibi-los em um grid, com a opção de mostrar os detalhes do cliente ao clicar em seu nome ou código. 11. Grids  Criando um grid com Bootstrap;  Criando um grid com jTable;  Criando um grid com Kendo UI;  Criando um grid com ParamQuery;  Exemplo completo com grid e telas de edição de dados. Desafio: Com o conhecimento adquirido sobre os grids apresentados acima, criar um exemplo com o grid do projeto jEasyUI. 12. Banco de dados II: dOpf, jTable, Master/Detail, Lookup e Bootstrap  Estruturas master/detail com dOpf e jTable;  Estruturas lookup com dOpf e jTable;  Criando uma estrutura master/detail com REST, dOpf e Bootstrap;  Criando uma tela para busca e listagem de dados;  Validando dados nos entities (back-end). Exercício: Criar um exemplo com master/detail e lookup em um único projeto. 13. Componentes especiais  Buscando um cliente pelo nome e mostrando sua foto na tela;  Criando um slide show de propagandas com o auxílio do JTemplate;  Escolhendo um componente para Hora, Data e linha de tempo;
  • 4.
     Mostrando imagensem thumbnail;  Preenchendo um combobox via JTemplate;  Criando um campo Autocomplete. Exercício: Criar um pequeno exemplo de anúncios online. 14. Ajax I  Conhecendo o jQuery;  Fazendo requisições com jQuery em estrutura REST (CORS);  Atualizando uma área da tela sem redirecionar a página;  Preenchendo dados num combobox via Ajax;  Preenchendo dados numa lista via Ajax. Exercício: Criar um pequeno exemplo de como preencher um combobox após escolher um item em outro. 15. RSS, Relatórios e Documentação de Projetos  Enviando notícias via RSS com o EasyRSS;  Criando relatórios em PDF. Desafio: Criar uma pequena aplicação RSS com uma opção para salvar os feeds em PDF. 16. Ajax II  Validando dados com jQuery (fron-end);  Formatando campos com máscaras;  Usando Ajax em conjunto com JTemplate;  Mostrando um ícone indicando que uma determinada página está sendo carregada;  Criando um formulário modal;  Criando e preenchendo tabs (pagecontrol) via Ajax;  Exibindo tooltips (hints) em controles HTML;  Exibindo alerts Bootstrap via Ajax;  Conhecendo o menu do tipo accordion. Desafio: Criar uma pequena aplicação com um menu lateral esquerdo que, ao clicar em seus itens (Home, Downloads e About), mostrar suas respectivas páginas. 17. Middleware, Constraints, Auditoria de Actions, Captcha  Controlando o acesso a URLs via middleware e constraints;  Bloqueando o acesso a um site via login;  Protegendo suas páginas com Captcha. Desafio: Criar uma pequena aplicação para inscrição de usuários, com a página de inscrição protegida via Captcha, evitando ataques de bots.
  • 5.
    18. APIs, REST,JSON, OAuth e Aplicações Desktop  Criando uma API para fornecer dados via JSON para um grid LCL;  Persistindo dados em uma API via formulário LCL;  Enviando arquivos para uma API via formulário LCL;  Listando dados JSON em stringgrids com LJGridUtils;  Evitando o envio de usuário/senha com OAuth PLAIN_TEXT. Desafio: Criar uma pequena aplicação CRUD para manipular dados de uma API via formulário LCL. 19. Configurações  Configurando objetos via arquivo de configuração;  Configurando uma aplicação via BrookSettings;  Criando executáveis menores, linkando só o necessário neles;  Organizando units e scripts em seus projetos;  Configurando o dOpf para conectar em diversos tipos de bancos de dados;  Configurando o dOpf para gerar logs. Exercício: Criar uma pequena aplicação onde seja possível configurar a conexão com o banco de dados via arquivo de configuração. 20. Parse, Interpretação de Scripts  Processando expressões algébricas;  Executando Pascal dinamicamente com o PascalScript;  Baixando e interpretando conteúdos de sites de terceiros. Exercício: Criar um pequeno exemplo que consuma o serviço de algum site público de terceiro. 21. Multimídia  Renderizando um vídeo na tela;  Configurando sua aplicação para oferecer o download ao invés de renderizar um arquivo;  Fazendo sua aplicação “tagarelar”. Exercício: Usar algum plugin jQuery para tocar músicas em MP3. 22. Test-case, Documentação  Criando testes de regressão (test-case);  Documentando suas aplicações. Exercício: Escolher uma de suas aplicações, criar alguns testes de regressão nela e gerar uma documentação. 23. Conceitos básicos sobre publicação de aplicação web
  • 6.
     Hospedando suaaplicação numa instância Amazon (Introdução);  Hospedando sua aplicação na HostMonster (Introdução);  Checando as limitações do host de hospedagem antes de contratá-lo. Exercício: Criar um Hello World onde seja possível outras pessoas acessá-lo remotamente por IP ou domínio. 24. Diversos  Distribuindo um servidor embutido via setup de instalação (instalando um serviço);  Configurando o Lazarus para melhorar sua produtividade;  Criando a aplicação “papo furado” (chat); Dúvidas, agradecimentos e “o que vem por aí na Brook 3.1”.