SlideShare uma empresa Scribd logo
1 de 14
Baixar para ler offline
DESENVOLVIMENTO WEB COM
BROOK FRAMEWORK 3.0
APRESENTAÇÃO; INSTALAÇÃO; SUGESTÃO DE
IDEIAS; FORK; PULL REQUESTS; DOAÇÕES
Orientador: Silvio Clécio
RESUMO
Este artigo apresenta todos os passos iniciais para quem pretende conhecer,
baixar, instalar e usar o projeto Brook framework 3.0 no Lazarus 1.2.2 e Free
Pascal 2.6.4. O artigo consiste dos seguintes passos: Apresentação do projeto.
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.
PALAVRAS CHAVE: Brook 3.0. Apresentação. Instalação. Fork. Pull request.
Petrolina – PE
2014
2Brook EaD – Desenvolvimento web com Brook framework 3.0
SUMÁRIO
APRESENTAÇÃO DO PROJETO.......................................................................................... 3
BAIXANDO O PACOTE DE INSTALAÇÃO.......................................................................... 5
INSTALAÇÃO COM DOIS CLIQUES .................................................................................... 5
SUGERINDO IDEIAS, SOLICITANDO NOVOS RECURSOS E REPORTANDO BUGS
....................................................................................................................................................... 7
FORKANDO O PROJETO ....................................................................................................... 8
ABRINDO UM PULL REQUEST............................................................................................. 8
FAZENDO UMA DOAÇÃO AO PROJETO ........................................................................... 8
PRÓXIMOS PASSOS ............................................................................................................... 9
REFERÊNCIAS .......................................................................................................................... 9
APÊNDICES ............................................................................................................................. 10
APÊNDICE A – Relatório de estatísticas do ApacheBench para um teste realizado com
uma aplicação FCLWeb/CGI:................................................................................................. 11
APÊNDICE B – Relatório de estatísticas do ApacheBench para um teste realizado com
uma aplicação Brook/CGI: ...................................................................................................... 12
APÊNDICE C – Relatório de estatísticas do ApacheBench para um teste realizado
com uma aplicação FCLWeb/FastCGI: ................................................................................ 13
APÊNDICE D – Relatório de estatísticas do ApacheBench para um teste realizado
com uma aplicação Brook/FastCGI:...................................................................................... 14
3Brook EaD – Desenvolvimento web com Brook framework 3.0
APRESENTAÇÃO DO PROJETO
Brook nasceu a partir de um estudo sobre Object Pascal voltado para
desenvolvimento web, ou seja, compatível com aplicativos console.
Paralelamente a tal estudo, projetos de outras linguagens também foram
pesquisados, como Rails (Ruby) e Slim (PHP). Após o contato com estes dois
projetos, nasceu a ideia de roteamento e rotas, dando origem ao seu nome: “...
imagine um canal de água com canais menores interligados nele, cada pequeno
canal com sua própria rota, e o canal maior gerenciando o córrego de água
assincronamente cada um; no interior da Inglaterra, eles dão um nome para isso:
Brook”. Hoje, um dos recursos mais poderosos da Brook é o seu roteador,
fazendo jus ao que o seu nome sugere.
Com Brook, é possível criar aplicações web sem trocar de linguagem de
programação, ou seja, sem sair do Pascal. Logo abaixo, seguem algumas
vantagens específicas do projeto:
Estrutura em três camadas: Camada de dados (Model), camada de controle
(Controller) e camada de apresentação (View).1
Desempenho: Em um teste de performance realizado com o auxílio da
ferramenta ab – ApacheBench2, no Linux Mint 16 - 64 bits, em que a página
testada retornava apenas a palavra “testing it”, foi possível obter as seguintes
quantidade de requests por segundo em uma comparação entre uma aplicação
usando apenas FCLWeb, e outra usando Brook:
FCLWeb/CGI (detalhes no APÊNDICE A):
Complete requests: 1337
Brook/CGI (detalhes no APÊNDICE B):
Complete requests: 1303
FCLWeb/FastCGI (detalhes no APÊNDICE C):
Complete requests: 6832
Brook/FastCGI (detalhes no APÊNDICE D):
Complete requests: 6866
1
Um pouco sobre MVC: http://pt.wikipedia.org/wiki/MVC.
2
ab - Apache HTTP server benchmarking tool: http://httpd.apache.org/docs/2.2/programs/ab.html.
4Brook EaD – Desenvolvimento web com Brook framework 3.0
Ou seja, baseado nos resultados acima, é possível observar que a
performance de aplicações Brook é completamente compatível com aplicações
puramente em FCLWeb, mesmo sem levar em conta as diversas funcionalidades
que um framework como ela agrega à aplicação.
Recursos – Utilização de vários protocolos (HTTP, CGI, FastCGI ...) de forma
transparente, isto é, pela simples troca de uma unit broker na cláusula uses.
Suporte a roteamento avançado – É a capacidade de mapear URLs para
ações. Recurso este que torna a Brook um passo à frente aos seus concorrentes.
Suporte a Mapeamento de Objetos – Formulários HTML são convertidos
automaticamente para objetos Pascal, com a vantagem de usar suas
propriedades com dados primitivos ao invés de conversões, por exemplo:
Sem mapeamento de objetos (Brook 2.*):
procedure TPersonAction.Post;
begin
Write('ID: %d, Name: %s', [Fields['id'].AsInt64, Fields['name'].AsString]);
end;
Código 1 - Action da Brook 2.*
Com mapeamento de objetos (Brook 3.0):
procedure TPersonAction.Post;
begin
Write('ID: %d, Name: %s', [Entity.Id, Entity.Name]);
end;
Código 2 - Action da Brook 3.0
Plug-ins – Brook contém uma apreciável quantidade de plug-ins e projetos
relacionados que aumentam sua produtividade. Plug-ins como JTemplate,
dOPF, RUtils, XMailer, entre outros, são encontrados facilmente aqui:
 https://github.com/silvioprog?tab=repositories.
E claro, há vários outros recursos (Middleware, Constraints, Actions com
suporte a Generics etc.) na Brook, que serão abordados com ênfase em outros
artigos, no decorrer do curso.
Em suma, o projeto também está em constante evolução, recebendo
atualizações regularmente tanto dos seus idealizadores3, quanto de
3
Arquivo com o nome de alguns idealizadores do projeto Brook:
https://github.com/silvioprog/brookframework/blob/master/CONTRIBUTORS.txt.
5Brook EaD – Desenvolvimento web com Brook framework 3.0
desenvolvedores de todo o mundo, que voluntariamente contribuem com o
projeto.
BAIXANDO O PACOTE DE INSTALAÇÃO
Como na maioria dos projetos, o primeiro passo a ser feito é baixar o
pacote de instalação da última versão lançada. Quando este artigo foi escrito, a
versão mais recente da Brook era a 3.0, disponível no seguinte link:
 https://github.com/silvioprog/brookframework/releases/tag/v3.0.0.
Com duas opções para download:
1. Source code (zip);
2. Source code (tar.gz).
A opção usada neste artigo foi a Source code (zip), baixando o arquivo de
nome brookframework-3.0.0.zip.
INSTALAÇÃO COM DOIS CLIQUES
Com o arquivo brookframework-3.0.0.zip “em mãos”, basta descompactá-
lo, salvando todos os seus arquivos em alguma pasta no sistema, como por
exemplo: C:repositoryframeworkbrookframework-3.0.0, e, logo em seguida,
realizar os seguintes passos:
1. Abrir o arquivo C:repositoryframeworkbrookframework-3.0.0packages
brookex.lpk;
2. Na janela Package BrookEX, clicar no botão Use >>, menu Install.
A Figura 1 mostra a janela Package BrookEX, com as opções propostas
acima:
Figura 1 - Package BrookEX
6Brook EaD – Desenvolvimento web com Brook framework 3.0
Para prosseguir, a instalação requer duas confirmações. A primeira é na
tela Automatically installed packages que, conforme Figura 2, informa quais
pacotes serão instalados, automaticamente:
Figura 2 - Automatically installed packages
A segunda tela, com a pergunta Rebuild Lazarus?, recebe a confirmação
para recompilar a IDE Lazarus, necessária para a instalação dos experts Brook,
abordados a seguir.
Após alguns instantes, quando a IDE retornar de sua recompilação, é
possível verificar se a instalação da Brook ocorreu com sucesso checando os
seus experts, que são instalados junto ao pacote, e, logo em seguida, disponíveis
no menu File | New ... > Brook framework, conforme ilustra a Figura 3:
Figura 3 - Expert Brook
7Brook EaD – Desenvolvimento web com Brook framework 3.0
SUGERINDO IDEIAS, SOLICITANDO NOVOS RECURSOS E REPORTANDO
BUGS
O melhor do código aberto é a sua possibilidade de evolução. Com a
Brook não poderia ser diferente, é possível enviar novas ideias ao projeto,
solicitar a implementação de novos recursos, bem como relatar problemas. Para
qualquer uma destas opções, o local indicado para fazê-las é via página de
issues, no repositório do projeto, em:
 https://github.com/silvioprog/brookframework/issues.
Para abrir um issue, é necessário o login no site Github, e, para aqueles
que ainda não o possui, é recomendável criar uma conta gratuitamente, em:
 https://github.com/join.
Estando previamente logado no site Github, é possível abrir um issue.
Conforme Figura 4, este seria um modelo de issue para um pedido de
implementação de novo recurso no projeto:
Figura 4 - New issue
Substituindo Your title e Your feature request ... pelo título e pedido de
recurso, respectivamente, logo em seguida, fazendo a confirmação, via botão
Submit new issue.
8Brook EaD – Desenvolvimento web com Brook framework 3.0
FORKANDO O PROJETO
O site Github permite realizar fork de repositório, isto é, copiar um
repositório inteiro – tornando-se dono dele – para uma conta Github pessoal, no
entanto, mantendo intacto o código no repositório original. A vantagem disso é
que, uma vez feito o fork, é possível modificar o código (corrigindo bugs, por
exemplo), então, caso sejam alterações úteis para outros desenvolvedores,
enviá-las para o projeto original, fazendo um pull request, que será explicado
mais adiante. A Figura 5 mostra o status de forks realizados no projeto Brook,
onde alguns deles já enviaram alterações para o código original:
Figura 5 - Status de forks da Brook
ABRINDO UM PULL REQUEST
Através de um pull request, é possível fazer a solicitação de integração
das alterações feitas em um fork para o projeto original. O link a seguir mostra
uma correção aplicada na Brook por meio de um pull request:
 https://github.com/silvioprog/brookframework/pull/25.
O pedido mostrado acima foi a correção de ortografia de algumas linhas
no arquivo README.txt. Pull requests podem ser feitos ao projeto através do link
abaixo:
 https://github.com/silvioprog/brookframework/pulls.
FAZENDO UMA DOAÇÃO AO PROJETO
Projetos open source a exemplo da Brook sobrevivem de contribuições
em código ou doações em dinheiro. Portanto, àqueles interessados em realizar
uma doação em dinheiro, é possível fazê-la via PayPal, através do botão Donate,
no rodapé da home page do projeto, conforme ilustra a Figura 6:
Figura 6 - Botão Donate
9Brook EaD – Desenvolvimento web com Brook framework 3.0
A página não especifica valores para doação, deste modo, é possível doar
qualquer quantia, sendo o dinheiro recebido investido diretamente no projeto.
PRÓXIMOS PASSOS
Neste artigo, dentre outras coisas, aprendemos a baixar e instalar a Brook.
No próximo artigo, entenderemos o funcionamento de uma aplicação Brook e
faremos o nosso primeiro Hello world. Logo em seguida, usaremos os métodos
Write e Render para escrever textos ou renderizar arquivos na tela. Após esses
primeiros exemplos práticos, você entenderá que, sem um framework completo
como a Brook, a vida do programador web com Pascal seria bastante difícil.
REFERÊNCIAS
[1] ApacheBench & HTTPerf. G-WAN. Disponível em jun. 2014 em:
http://gwan.com/en_apachebench_httperf.html.
[2] Contribuindo em projetos open source com o Github. Tableless. Disponível em jun.
2014 em:
http://tableless.com.br/contribuindo-em-projetos-open-source-com-o-github.
[3] Padrões de projeto: O modelo MVC - Model View Controller. Macoratti. Disponível
em jun. 2014 em:
http://www.macoratti.net/vbn_mvc.htm.
10Brook EaD – Desenvolvimento web com Brook framework 3.0
APÊNDICES
11Brook EaD – Desenvolvimento web com Brook framework 3.0
APÊNDICE A – Relatório de estatísticas do ApacheBench para um teste
realizado com uma aplicação FCLWeb/CGI:
$ ab -n 90000 -c 90 -t 1 -k "http://localhost/cgi-bin/project1.cgi"
This is ApacheBench, Version 2.3 <$Revision: 1430300 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/
Benchmarking localhost (be patient)
Finished 1317 requests
Server Software: Apache/2.4.6
Server Hostname: localhost
Server Port: 80
Document Path: /cgi-bin/project1.cgi
Document Length: 11 bytes
Concurrency Level: 90
Time taken for tests: 1.001 seconds
Complete requests: 1317
Failed requests: 0
Write errors: 0
Keep-Alive requests: 1307
Total transferred: 260333 bytes
HTML transferred: 14487 bytes
Requests per second: 1315.63 [#/sec] (mean)
Time per request: 68.408 [ms] (mean)
Time per request: 0.760 [ms] (mean, across all concurrent requests)
Transfer rate: 253.97 [Kbytes/sec] received
Connection Times (ms)
min mean[+/-sd] median max
Connect: 0 0 0.6 0 6
Processing: 1 10 62.3 2 923
Waiting: 1 10 62.3 2 923
Total: 1 10 62.8 2 929
Percentage of the requests served within a certain time (ms)
50% 2
66% 2
75% 3
80% 3
90% 3
95% 49
98% 50
99% 51
100% 929 (longest request)
Código 3 - ApacheBench: FCLWeb/CGI
12Brook EaD – Desenvolvimento web com Brook framework 3.0
APÊNDICE B – Relatório de estatísticas do ApacheBench para um teste
realizado com uma aplicação Brook/CGI:
$ ab -n 90000 -c 90 -t 1 -k "http://localhost/cgi-bin/cgi1.bf"
This is ApacheBench, Version 2.3 <$Revision: 1430300 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/
Benchmarking localhost (be patient)
Finished 1303 requests
Server Software: Apache/2.4.6
Server Hostname: localhost
Server Port: 80
Document Path: /cgi-bin/cgi1.bf
Document Length: 11 bytes
Concurrency Level: 90
Time taken for tests: 1.001 seconds
Complete requests: 1303
Failed requests: 0
Write errors: 0
Keep-Alive requests: 1293
Total transferred: 334442 bytes
HTML transferred: 14333 bytes
Requests per second: 1302.15 [#/sec] (mean)
Time per request: 69.116 [ms] (mean)
Time per request: 0.768 [ms] (mean, across all concurrent requests)
Transfer rate: 326.39 [Kbytes/sec] received
Connection Times (ms)
min mean[+/-sd] median max
Connect: 0 0 1.0 0 8
Processing: 1 15 75.1 3 977
Waiting: 1 15 75.1 3 977
Total: 1 15 75.8 3 986
Percentage of the requests served within a certain time (ms)
50% 3
66% 3
75% 4
80% 4
90% 49
95% 50
98% 52
99% 53
100% 986 (longest request)
Código 4 - ApacheBench: Brook/CGI
13Brook EaD – Desenvolvimento web com Brook framework 3.0
APÊNDICE C – Relatório de estatísticas do ApacheBench para um teste
realizado com uma aplicação FCLWeb/FastCGI:
$ ab -n 90000 -c 90 -t 1 -k "http://localhost/cgi-bin/project1.fcgi"
This is ApacheBench, Version 2.3 <$Revision: 1430300 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/
Benchmarking localhost (be patient)
Completed 5000 requests
Finished 6832 requests
Server Software: Apache/2.4.6
Server Hostname: localhost
Server Port: 80
Document Path: /cgi-bin/project1.fcgi
Document Length: 11 bytes
Concurrency Level: 90
Time taken for tests: 1.000 seconds
Complete requests: 6832
Failed requests: 0
Write errors: 0
Keep-Alive requests: 6770
Total transferred: 1350019 bytes
HTML transferred: 75152 bytes
Requests per second: 6831.82 [#/sec] (mean)
Time per request: 13.174 [ms] (mean)
Time per request: 0.146 [ms] (mean, across all concurrent requests)
Transfer rate: 1318.34 [Kbytes/sec] received
Connection Times (ms)
min mean[+/-sd] median max
Connect: 0 0 0.7 0 8
Processing: 0 6 56.7 1 954
Waiting: 0 6 56.7 1 954
Total: 0 7 57.3 1 961
Percentage of the requests served within a certain time (ms)
50% 1
66% 2
75% 2
80% 2
90% 3
95% 3
98% 4
99% 13
100% 961 (longest request)
Código 5 - ApacheBench: FCLWeb/FastCGI
14Brook EaD – Desenvolvimento web com Brook framework 3.0
APÊNDICE D – Relatório de estatísticas do ApacheBench para um teste
realizado com uma aplicação Brook/FastCGI:
$ ab -n 90000 -c 90 -t 1 -k "http://localhost/cgi-bin/cgi1.fbf"
This is ApacheBench, Version 2.3 <$Revision: 1430300 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/
Benchmarking localhost (be patient)
Completed 5000 requests
Finished 6866 requests
Server Software: Apache/2.4.6
Server Hostname: localhost
Server Port: 80
Document Path: /cgi-bin/cgi1.fbf
Document Length: 11 bytes
Concurrency Level: 90
Time taken for tests: 1.000 seconds
Complete requests: 6866
Failed requests: 0
Write errors: 0
Keep-Alive requests: 6803
Total transferred: 1761801 bytes
HTML transferred: 75526 bytes
Requests per second: 6865.67 [#/sec] (mean)
Time per request: 13.109 [ms] (mean)
Time per request: 0.146 [ms] (mean, across all concurrent requests)
Transfer rate: 1720.43 [Kbytes/sec] received
Connection Times (ms)
min mean[+/-sd] median max
Connect: 0 0 0.7 0 7
Processing: 0 7 57.9 1 954
Waiting: 0 7 57.9 1 954
Total: 0 7 58.5 1 961
Percentage of the requests served within a certain time (ms)
50% 1
66% 2
75% 2
80% 2
90% 3
95% 3
98% 4
99% 12
100% 961 (longest request)
Código 6 - ApacheBench: Brook/FastCGI

Mais conteúdo relacionado

Mais procurados

Cobol Web com Net Express 3.1/4.0/5.x - Parte 2
Cobol Web com Net Express 3.1/4.0/5.x - Parte 2Cobol Web com Net Express 3.1/4.0/5.x - Parte 2
Cobol Web com Net Express 3.1/4.0/5.x - Parte 2Altair Borges
 
GraphQL - APIs mais robustas e flexíveis
GraphQL - APIs mais robustas e flexíveisGraphQL - APIs mais robustas e flexíveis
GraphQL - APIs mais robustas e flexíveisBruno Lemos
 
GraphQL: Como começar a usar no seu projeto AGORA
GraphQL: Como começar a usar no seu projeto AGORAGraphQL: Como começar a usar no seu projeto AGORA
GraphQL: Como começar a usar no seu projeto AGORAMaira Bello
 
Ajax para quem_ouviu_falar
Ajax para quem_ouviu_falarAjax para quem_ouviu_falar
Ajax para quem_ouviu_falarCharleston Anjos
 
Grails parte 1 - introdução
Grails   parte 1 - introduçãoGrails   parte 1 - introdução
Grails parte 1 - introduçãoJosino Rodrigues
 

Mais procurados (9)

Cobol Web com Net Express 3.1/4.0/5.x - Parte 2
Cobol Web com Net Express 3.1/4.0/5.x - Parte 2Cobol Web com Net Express 3.1/4.0/5.x - Parte 2
Cobol Web com Net Express 3.1/4.0/5.x - Parte 2
 
Aula02 eclipse quem_es_tu
Aula02 eclipse quem_es_tuAula02 eclipse quem_es_tu
Aula02 eclipse quem_es_tu
 
GraphQL - APIs mais robustas e flexíveis
GraphQL - APIs mais robustas e flexíveisGraphQL - APIs mais robustas e flexíveis
GraphQL - APIs mais robustas e flexíveis
 
Curso de Grails
Curso de GrailsCurso de Grails
Curso de Grails
 
GraphQL: Como começar a usar no seu projeto AGORA
GraphQL: Como começar a usar no seu projeto AGORAGraphQL: Como começar a usar no seu projeto AGORA
GraphQL: Como começar a usar no seu projeto AGORA
 
Ajax para quem_ouviu_falar
Ajax para quem_ouviu_falarAjax para quem_ouviu_falar
Ajax para quem_ouviu_falar
 
Apostila ajax
Apostila ajaxApostila ajax
Apostila ajax
 
Mean Stack
Mean StackMean Stack
Mean Stack
 
Grails parte 1 - introdução
Grails   parte 1 - introduçãoGrails   parte 1 - introdução
Grails parte 1 - introdução
 

Semelhante a Desenvolvimento web com Brook 3.0 em

Processo para a Construção de Protótipos
Processo para a Construção de ProtótiposProcesso para a Construção de Protótipos
Processo para a Construção de ProtótiposOtávio Souza
 
Criando extensões para o BrOffice (Serpro 2010)
Criando extensões para o BrOffice (Serpro 2010)Criando extensões para o BrOffice (Serpro 2010)
Criando extensões para o BrOffice (Serpro 2010)William Colen
 
Curso de Verão - Aula 02 - Orquestração de Contêineres
Curso de Verão - Aula 02 - Orquestração de ContêineresCurso de Verão - Aula 02 - Orquestração de Contêineres
Curso de Verão - Aula 02 - Orquestração de ContêineresGuilhermeJorgeAragod
 
Tutorial: Criando extensões para o OpenOffice
Tutorial: Criando extensões para o OpenOfficeTutorial: Criando extensões para o OpenOffice
Tutorial: Criando extensões para o OpenOfficeWilliam Colen
 
Web Training Aula 04: Introduction to Git
Web Training Aula 04: Introduction to GitWeb Training Aula 04: Introduction to Git
Web Training Aula 04: Introduction to GitMozDevz
 
Apresentação sobre blockchain, executada no mestrado de ciencia da computação
Apresentação sobre blockchain, executada no mestrado de ciencia da computaçãoApresentação sobre blockchain, executada no mestrado de ciencia da computação
Apresentação sobre blockchain, executada no mestrado de ciencia da computaçãoManoelGuilherme2
 
Docker de ponta a ponta: do Desenvolvimento à Nuvem - UNICID - Novembro-2019
Docker de ponta a ponta: do Desenvolvimento à Nuvem - UNICID - Novembro-2019Docker de ponta a ponta: do Desenvolvimento à Nuvem - UNICID - Novembro-2019
Docker de ponta a ponta: do Desenvolvimento à Nuvem - UNICID - Novembro-2019Renato Groff
 
Aprendendo Na Prática: Aplicativos Web com HTML5, Angular.js, Twitter Bootstr...
Aprendendo Na Prática: Aplicativos Web com HTML5, Angular.js, Twitter Bootstr...Aprendendo Na Prática: Aplicativos Web com HTML5, Angular.js, Twitter Bootstr...
Aprendendo Na Prática: Aplicativos Web com HTML5, Angular.js, Twitter Bootstr...Daniel Makiyama
 
.NET Core 3.0 e ASP.NET Core 3.0 : principais novidades - TDC 2019 - Porto Al...
.NET Core 3.0 e ASP.NET Core 3.0 : principais novidades - TDC 2019 - Porto Al....NET Core 3.0 e ASP.NET Core 3.0 : principais novidades - TDC 2019 - Porto Al...
.NET Core 3.0 e ASP.NET Core 3.0 : principais novidades - TDC 2019 - Porto Al...Renato Groff
 
Aprendendo Angular com a CLI
Aprendendo Angular com a CLIAprendendo Angular com a CLI
Aprendendo Angular com a CLIVanessa Me Tonini
 
Desenvolvendo Aplicações com Software Livre
Desenvolvendo Aplicações com Software LivreDesenvolvendo Aplicações com Software Livre
Desenvolvendo Aplicações com Software Livreelliando dias
 
ASP.Net MVC 3 - o que há de novo (TechEd)
ASP.Net MVC 3 - o que há de novo (TechEd)ASP.Net MVC 3 - o que há de novo (TechEd)
ASP.Net MVC 3 - o que há de novo (TechEd)Giovanni Bassi
 
Quasar Framework - Front end de alto desempenho
Quasar Framework - Front end de alto desempenhoQuasar Framework - Front end de alto desempenho
Quasar Framework - Front end de alto desempenhoPatrick Monteiro
 
Re pensando-virtualização-através-linux containers
Re pensando-virtualização-através-linux containersRe pensando-virtualização-através-linux containers
Re pensando-virtualização-através-linux containersFrancisco Gonçalves
 
Componentizando a Web com Polymer
Componentizando a Web com PolymerComponentizando a Web com Polymer
Componentizando a Web com PolymerStefan Horochovec
 
Entendendo Frameworks web com Python
Entendendo Frameworks web com PythonEntendendo Frameworks web com Python
Entendendo Frameworks web com PythonLuiz Aldabalde
 

Semelhante a Desenvolvimento web com Brook 3.0 em (20)

Processo para a Construção de Protótipos
Processo para a Construção de ProtótiposProcesso para a Construção de Protótipos
Processo para a Construção de Protótipos
 
Fullstack C# com Blazor
Fullstack C# com BlazorFullstack C# com Blazor
Fullstack C# com Blazor
 
Criando extensões para o BrOffice (Serpro 2010)
Criando extensões para o BrOffice (Serpro 2010)Criando extensões para o BrOffice (Serpro 2010)
Criando extensões para o BrOffice (Serpro 2010)
 
Curso de Verão - Aula 02 - Orquestração de Contêineres
Curso de Verão - Aula 02 - Orquestração de ContêineresCurso de Verão - Aula 02 - Orquestração de Contêineres
Curso de Verão - Aula 02 - Orquestração de Contêineres
 
Tutorial: Criando extensões para o OpenOffice
Tutorial: Criando extensões para o OpenOfficeTutorial: Criando extensões para o OpenOffice
Tutorial: Criando extensões para o OpenOffice
 
HTML5
HTML5HTML5
HTML5
 
Git hub and Laravel
Git hub and Laravel Git hub and Laravel
Git hub and Laravel
 
Web Training Aula 04: Introduction to Git
Web Training Aula 04: Introduction to GitWeb Training Aula 04: Introduction to Git
Web Training Aula 04: Introduction to Git
 
Apresentação sobre blockchain, executada no mestrado de ciencia da computação
Apresentação sobre blockchain, executada no mestrado de ciencia da computaçãoApresentação sobre blockchain, executada no mestrado de ciencia da computação
Apresentação sobre blockchain, executada no mestrado de ciencia da computação
 
Docker de ponta a ponta: do Desenvolvimento à Nuvem - UNICID - Novembro-2019
Docker de ponta a ponta: do Desenvolvimento à Nuvem - UNICID - Novembro-2019Docker de ponta a ponta: do Desenvolvimento à Nuvem - UNICID - Novembro-2019
Docker de ponta a ponta: do Desenvolvimento à Nuvem - UNICID - Novembro-2019
 
Aprendendo Na Prática: Aplicativos Web com HTML5, Angular.js, Twitter Bootstr...
Aprendendo Na Prática: Aplicativos Web com HTML5, Angular.js, Twitter Bootstr...Aprendendo Na Prática: Aplicativos Web com HTML5, Angular.js, Twitter Bootstr...
Aprendendo Na Prática: Aplicativos Web com HTML5, Angular.js, Twitter Bootstr...
 
.NET Core 3.0 e ASP.NET Core 3.0 : principais novidades - TDC 2019 - Porto Al...
.NET Core 3.0 e ASP.NET Core 3.0 : principais novidades - TDC 2019 - Porto Al....NET Core 3.0 e ASP.NET Core 3.0 : principais novidades - TDC 2019 - Porto Al...
.NET Core 3.0 e ASP.NET Core 3.0 : principais novidades - TDC 2019 - Porto Al...
 
Aprendendo Angular com a CLI
Aprendendo Angular com a CLIAprendendo Angular com a CLI
Aprendendo Angular com a CLI
 
Desenvolvendo Aplicações com Software Livre
Desenvolvendo Aplicações com Software LivreDesenvolvendo Aplicações com Software Livre
Desenvolvendo Aplicações com Software Livre
 
ASP.Net MVC 3 - o que há de novo (TechEd)
ASP.Net MVC 3 - o que há de novo (TechEd)ASP.Net MVC 3 - o que há de novo (TechEd)
ASP.Net MVC 3 - o que há de novo (TechEd)
 
W2py pyconpe
W2py pyconpeW2py pyconpe
W2py pyconpe
 
Quasar Framework - Front end de alto desempenho
Quasar Framework - Front end de alto desempenhoQuasar Framework - Front end de alto desempenho
Quasar Framework - Front end de alto desempenho
 
Re pensando-virtualização-através-linux containers
Re pensando-virtualização-através-linux containersRe pensando-virtualização-através-linux containers
Re pensando-virtualização-através-linux containers
 
Componentizando a Web com Polymer
Componentizando a Web com PolymerComponentizando a Web com Polymer
Componentizando a Web com Polymer
 
Entendendo Frameworks web com Python
Entendendo Frameworks web com PythonEntendendo Frameworks web com Python
Entendendo Frameworks web com Python
 

Desenvolvimento web com Brook 3.0 em

  • 1. DESENVOLVIMENTO WEB COM BROOK FRAMEWORK 3.0 APRESENTAÇÃO; INSTALAÇÃO; SUGESTÃO DE IDEIAS; FORK; PULL REQUESTS; DOAÇÕES Orientador: Silvio Clécio RESUMO Este artigo apresenta todos os passos iniciais para quem pretende conhecer, baixar, instalar e usar o projeto Brook framework 3.0 no Lazarus 1.2.2 e Free Pascal 2.6.4. O artigo consiste dos seguintes passos: Apresentação do projeto. 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. PALAVRAS CHAVE: Brook 3.0. Apresentação. Instalação. Fork. Pull request. Petrolina – PE 2014
  • 2. 2Brook EaD – Desenvolvimento web com Brook framework 3.0 SUMÁRIO APRESENTAÇÃO DO PROJETO.......................................................................................... 3 BAIXANDO O PACOTE DE INSTALAÇÃO.......................................................................... 5 INSTALAÇÃO COM DOIS CLIQUES .................................................................................... 5 SUGERINDO IDEIAS, SOLICITANDO NOVOS RECURSOS E REPORTANDO BUGS ....................................................................................................................................................... 7 FORKANDO O PROJETO ....................................................................................................... 8 ABRINDO UM PULL REQUEST............................................................................................. 8 FAZENDO UMA DOAÇÃO AO PROJETO ........................................................................... 8 PRÓXIMOS PASSOS ............................................................................................................... 9 REFERÊNCIAS .......................................................................................................................... 9 APÊNDICES ............................................................................................................................. 10 APÊNDICE A – Relatório de estatísticas do ApacheBench para um teste realizado com uma aplicação FCLWeb/CGI:................................................................................................. 11 APÊNDICE B – Relatório de estatísticas do ApacheBench para um teste realizado com uma aplicação Brook/CGI: ...................................................................................................... 12 APÊNDICE C – Relatório de estatísticas do ApacheBench para um teste realizado com uma aplicação FCLWeb/FastCGI: ................................................................................ 13 APÊNDICE D – Relatório de estatísticas do ApacheBench para um teste realizado com uma aplicação Brook/FastCGI:...................................................................................... 14
  • 3. 3Brook EaD – Desenvolvimento web com Brook framework 3.0 APRESENTAÇÃO DO PROJETO Brook nasceu a partir de um estudo sobre Object Pascal voltado para desenvolvimento web, ou seja, compatível com aplicativos console. Paralelamente a tal estudo, projetos de outras linguagens também foram pesquisados, como Rails (Ruby) e Slim (PHP). Após o contato com estes dois projetos, nasceu a ideia de roteamento e rotas, dando origem ao seu nome: “... imagine um canal de água com canais menores interligados nele, cada pequeno canal com sua própria rota, e o canal maior gerenciando o córrego de água assincronamente cada um; no interior da Inglaterra, eles dão um nome para isso: Brook”. Hoje, um dos recursos mais poderosos da Brook é o seu roteador, fazendo jus ao que o seu nome sugere. Com Brook, é possível criar aplicações web sem trocar de linguagem de programação, ou seja, sem sair do Pascal. Logo abaixo, seguem algumas vantagens específicas do projeto: Estrutura em três camadas: Camada de dados (Model), camada de controle (Controller) e camada de apresentação (View).1 Desempenho: Em um teste de performance realizado com o auxílio da ferramenta ab – ApacheBench2, no Linux Mint 16 - 64 bits, em que a página testada retornava apenas a palavra “testing it”, foi possível obter as seguintes quantidade de requests por segundo em uma comparação entre uma aplicação usando apenas FCLWeb, e outra usando Brook: FCLWeb/CGI (detalhes no APÊNDICE A): Complete requests: 1337 Brook/CGI (detalhes no APÊNDICE B): Complete requests: 1303 FCLWeb/FastCGI (detalhes no APÊNDICE C): Complete requests: 6832 Brook/FastCGI (detalhes no APÊNDICE D): Complete requests: 6866 1 Um pouco sobre MVC: http://pt.wikipedia.org/wiki/MVC. 2 ab - Apache HTTP server benchmarking tool: http://httpd.apache.org/docs/2.2/programs/ab.html.
  • 4. 4Brook EaD – Desenvolvimento web com Brook framework 3.0 Ou seja, baseado nos resultados acima, é possível observar que a performance de aplicações Brook é completamente compatível com aplicações puramente em FCLWeb, mesmo sem levar em conta as diversas funcionalidades que um framework como ela agrega à aplicação. Recursos – Utilização de vários protocolos (HTTP, CGI, FastCGI ...) de forma transparente, isto é, pela simples troca de uma unit broker na cláusula uses. Suporte a roteamento avançado – É a capacidade de mapear URLs para ações. Recurso este que torna a Brook um passo à frente aos seus concorrentes. Suporte a Mapeamento de Objetos – Formulários HTML são convertidos automaticamente para objetos Pascal, com a vantagem de usar suas propriedades com dados primitivos ao invés de conversões, por exemplo: Sem mapeamento de objetos (Brook 2.*): procedure TPersonAction.Post; begin Write('ID: %d, Name: %s', [Fields['id'].AsInt64, Fields['name'].AsString]); end; Código 1 - Action da Brook 2.* Com mapeamento de objetos (Brook 3.0): procedure TPersonAction.Post; begin Write('ID: %d, Name: %s', [Entity.Id, Entity.Name]); end; Código 2 - Action da Brook 3.0 Plug-ins – Brook contém uma apreciável quantidade de plug-ins e projetos relacionados que aumentam sua produtividade. Plug-ins como JTemplate, dOPF, RUtils, XMailer, entre outros, são encontrados facilmente aqui:  https://github.com/silvioprog?tab=repositories. E claro, há vários outros recursos (Middleware, Constraints, Actions com suporte a Generics etc.) na Brook, que serão abordados com ênfase em outros artigos, no decorrer do curso. Em suma, o projeto também está em constante evolução, recebendo atualizações regularmente tanto dos seus idealizadores3, quanto de 3 Arquivo com o nome de alguns idealizadores do projeto Brook: https://github.com/silvioprog/brookframework/blob/master/CONTRIBUTORS.txt.
  • 5. 5Brook EaD – Desenvolvimento web com Brook framework 3.0 desenvolvedores de todo o mundo, que voluntariamente contribuem com o projeto. BAIXANDO O PACOTE DE INSTALAÇÃO Como na maioria dos projetos, o primeiro passo a ser feito é baixar o pacote de instalação da última versão lançada. Quando este artigo foi escrito, a versão mais recente da Brook era a 3.0, disponível no seguinte link:  https://github.com/silvioprog/brookframework/releases/tag/v3.0.0. Com duas opções para download: 1. Source code (zip); 2. Source code (tar.gz). A opção usada neste artigo foi a Source code (zip), baixando o arquivo de nome brookframework-3.0.0.zip. INSTALAÇÃO COM DOIS CLIQUES Com o arquivo brookframework-3.0.0.zip “em mãos”, basta descompactá- lo, salvando todos os seus arquivos em alguma pasta no sistema, como por exemplo: C:repositoryframeworkbrookframework-3.0.0, e, logo em seguida, realizar os seguintes passos: 1. Abrir o arquivo C:repositoryframeworkbrookframework-3.0.0packages brookex.lpk; 2. Na janela Package BrookEX, clicar no botão Use >>, menu Install. A Figura 1 mostra a janela Package BrookEX, com as opções propostas acima: Figura 1 - Package BrookEX
  • 6. 6Brook EaD – Desenvolvimento web com Brook framework 3.0 Para prosseguir, a instalação requer duas confirmações. A primeira é na tela Automatically installed packages que, conforme Figura 2, informa quais pacotes serão instalados, automaticamente: Figura 2 - Automatically installed packages A segunda tela, com a pergunta Rebuild Lazarus?, recebe a confirmação para recompilar a IDE Lazarus, necessária para a instalação dos experts Brook, abordados a seguir. Após alguns instantes, quando a IDE retornar de sua recompilação, é possível verificar se a instalação da Brook ocorreu com sucesso checando os seus experts, que são instalados junto ao pacote, e, logo em seguida, disponíveis no menu File | New ... > Brook framework, conforme ilustra a Figura 3: Figura 3 - Expert Brook
  • 7. 7Brook EaD – Desenvolvimento web com Brook framework 3.0 SUGERINDO IDEIAS, SOLICITANDO NOVOS RECURSOS E REPORTANDO BUGS O melhor do código aberto é a sua possibilidade de evolução. Com a Brook não poderia ser diferente, é possível enviar novas ideias ao projeto, solicitar a implementação de novos recursos, bem como relatar problemas. Para qualquer uma destas opções, o local indicado para fazê-las é via página de issues, no repositório do projeto, em:  https://github.com/silvioprog/brookframework/issues. Para abrir um issue, é necessário o login no site Github, e, para aqueles que ainda não o possui, é recomendável criar uma conta gratuitamente, em:  https://github.com/join. Estando previamente logado no site Github, é possível abrir um issue. Conforme Figura 4, este seria um modelo de issue para um pedido de implementação de novo recurso no projeto: Figura 4 - New issue Substituindo Your title e Your feature request ... pelo título e pedido de recurso, respectivamente, logo em seguida, fazendo a confirmação, via botão Submit new issue.
  • 8. 8Brook EaD – Desenvolvimento web com Brook framework 3.0 FORKANDO O PROJETO O site Github permite realizar fork de repositório, isto é, copiar um repositório inteiro – tornando-se dono dele – para uma conta Github pessoal, no entanto, mantendo intacto o código no repositório original. A vantagem disso é que, uma vez feito o fork, é possível modificar o código (corrigindo bugs, por exemplo), então, caso sejam alterações úteis para outros desenvolvedores, enviá-las para o projeto original, fazendo um pull request, que será explicado mais adiante. A Figura 5 mostra o status de forks realizados no projeto Brook, onde alguns deles já enviaram alterações para o código original: Figura 5 - Status de forks da Brook ABRINDO UM PULL REQUEST Através de um pull request, é possível fazer a solicitação de integração das alterações feitas em um fork para o projeto original. O link a seguir mostra uma correção aplicada na Brook por meio de um pull request:  https://github.com/silvioprog/brookframework/pull/25. O pedido mostrado acima foi a correção de ortografia de algumas linhas no arquivo README.txt. Pull requests podem ser feitos ao projeto através do link abaixo:  https://github.com/silvioprog/brookframework/pulls. FAZENDO UMA DOAÇÃO AO PROJETO Projetos open source a exemplo da Brook sobrevivem de contribuições em código ou doações em dinheiro. Portanto, àqueles interessados em realizar uma doação em dinheiro, é possível fazê-la via PayPal, através do botão Donate, no rodapé da home page do projeto, conforme ilustra a Figura 6: Figura 6 - Botão Donate
  • 9. 9Brook EaD – Desenvolvimento web com Brook framework 3.0 A página não especifica valores para doação, deste modo, é possível doar qualquer quantia, sendo o dinheiro recebido investido diretamente no projeto. PRÓXIMOS PASSOS Neste artigo, dentre outras coisas, aprendemos a baixar e instalar a Brook. No próximo artigo, entenderemos o funcionamento de uma aplicação Brook e faremos o nosso primeiro Hello world. Logo em seguida, usaremos os métodos Write e Render para escrever textos ou renderizar arquivos na tela. Após esses primeiros exemplos práticos, você entenderá que, sem um framework completo como a Brook, a vida do programador web com Pascal seria bastante difícil. REFERÊNCIAS [1] ApacheBench & HTTPerf. G-WAN. Disponível em jun. 2014 em: http://gwan.com/en_apachebench_httperf.html. [2] Contribuindo em projetos open source com o Github. Tableless. Disponível em jun. 2014 em: http://tableless.com.br/contribuindo-em-projetos-open-source-com-o-github. [3] Padrões de projeto: O modelo MVC - Model View Controller. Macoratti. Disponível em jun. 2014 em: http://www.macoratti.net/vbn_mvc.htm.
  • 10. 10Brook EaD – Desenvolvimento web com Brook framework 3.0 APÊNDICES
  • 11. 11Brook EaD – Desenvolvimento web com Brook framework 3.0 APÊNDICE A – Relatório de estatísticas do ApacheBench para um teste realizado com uma aplicação FCLWeb/CGI: $ ab -n 90000 -c 90 -t 1 -k "http://localhost/cgi-bin/project1.cgi" This is ApacheBench, Version 2.3 <$Revision: 1430300 $> Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/ Licensed to The Apache Software Foundation, http://www.apache.org/ Benchmarking localhost (be patient) Finished 1317 requests Server Software: Apache/2.4.6 Server Hostname: localhost Server Port: 80 Document Path: /cgi-bin/project1.cgi Document Length: 11 bytes Concurrency Level: 90 Time taken for tests: 1.001 seconds Complete requests: 1317 Failed requests: 0 Write errors: 0 Keep-Alive requests: 1307 Total transferred: 260333 bytes HTML transferred: 14487 bytes Requests per second: 1315.63 [#/sec] (mean) Time per request: 68.408 [ms] (mean) Time per request: 0.760 [ms] (mean, across all concurrent requests) Transfer rate: 253.97 [Kbytes/sec] received Connection Times (ms) min mean[+/-sd] median max Connect: 0 0 0.6 0 6 Processing: 1 10 62.3 2 923 Waiting: 1 10 62.3 2 923 Total: 1 10 62.8 2 929 Percentage of the requests served within a certain time (ms) 50% 2 66% 2 75% 3 80% 3 90% 3 95% 49 98% 50 99% 51 100% 929 (longest request) Código 3 - ApacheBench: FCLWeb/CGI
  • 12. 12Brook EaD – Desenvolvimento web com Brook framework 3.0 APÊNDICE B – Relatório de estatísticas do ApacheBench para um teste realizado com uma aplicação Brook/CGI: $ ab -n 90000 -c 90 -t 1 -k "http://localhost/cgi-bin/cgi1.bf" This is ApacheBench, Version 2.3 <$Revision: 1430300 $> Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/ Licensed to The Apache Software Foundation, http://www.apache.org/ Benchmarking localhost (be patient) Finished 1303 requests Server Software: Apache/2.4.6 Server Hostname: localhost Server Port: 80 Document Path: /cgi-bin/cgi1.bf Document Length: 11 bytes Concurrency Level: 90 Time taken for tests: 1.001 seconds Complete requests: 1303 Failed requests: 0 Write errors: 0 Keep-Alive requests: 1293 Total transferred: 334442 bytes HTML transferred: 14333 bytes Requests per second: 1302.15 [#/sec] (mean) Time per request: 69.116 [ms] (mean) Time per request: 0.768 [ms] (mean, across all concurrent requests) Transfer rate: 326.39 [Kbytes/sec] received Connection Times (ms) min mean[+/-sd] median max Connect: 0 0 1.0 0 8 Processing: 1 15 75.1 3 977 Waiting: 1 15 75.1 3 977 Total: 1 15 75.8 3 986 Percentage of the requests served within a certain time (ms) 50% 3 66% 3 75% 4 80% 4 90% 49 95% 50 98% 52 99% 53 100% 986 (longest request) Código 4 - ApacheBench: Brook/CGI
  • 13. 13Brook EaD – Desenvolvimento web com Brook framework 3.0 APÊNDICE C – Relatório de estatísticas do ApacheBench para um teste realizado com uma aplicação FCLWeb/FastCGI: $ ab -n 90000 -c 90 -t 1 -k "http://localhost/cgi-bin/project1.fcgi" This is ApacheBench, Version 2.3 <$Revision: 1430300 $> Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/ Licensed to The Apache Software Foundation, http://www.apache.org/ Benchmarking localhost (be patient) Completed 5000 requests Finished 6832 requests Server Software: Apache/2.4.6 Server Hostname: localhost Server Port: 80 Document Path: /cgi-bin/project1.fcgi Document Length: 11 bytes Concurrency Level: 90 Time taken for tests: 1.000 seconds Complete requests: 6832 Failed requests: 0 Write errors: 0 Keep-Alive requests: 6770 Total transferred: 1350019 bytes HTML transferred: 75152 bytes Requests per second: 6831.82 [#/sec] (mean) Time per request: 13.174 [ms] (mean) Time per request: 0.146 [ms] (mean, across all concurrent requests) Transfer rate: 1318.34 [Kbytes/sec] received Connection Times (ms) min mean[+/-sd] median max Connect: 0 0 0.7 0 8 Processing: 0 6 56.7 1 954 Waiting: 0 6 56.7 1 954 Total: 0 7 57.3 1 961 Percentage of the requests served within a certain time (ms) 50% 1 66% 2 75% 2 80% 2 90% 3 95% 3 98% 4 99% 13 100% 961 (longest request) Código 5 - ApacheBench: FCLWeb/FastCGI
  • 14. 14Brook EaD – Desenvolvimento web com Brook framework 3.0 APÊNDICE D – Relatório de estatísticas do ApacheBench para um teste realizado com uma aplicação Brook/FastCGI: $ ab -n 90000 -c 90 -t 1 -k "http://localhost/cgi-bin/cgi1.fbf" This is ApacheBench, Version 2.3 <$Revision: 1430300 $> Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/ Licensed to The Apache Software Foundation, http://www.apache.org/ Benchmarking localhost (be patient) Completed 5000 requests Finished 6866 requests Server Software: Apache/2.4.6 Server Hostname: localhost Server Port: 80 Document Path: /cgi-bin/cgi1.fbf Document Length: 11 bytes Concurrency Level: 90 Time taken for tests: 1.000 seconds Complete requests: 6866 Failed requests: 0 Write errors: 0 Keep-Alive requests: 6803 Total transferred: 1761801 bytes HTML transferred: 75526 bytes Requests per second: 6865.67 [#/sec] (mean) Time per request: 13.109 [ms] (mean) Time per request: 0.146 [ms] (mean, across all concurrent requests) Transfer rate: 1720.43 [Kbytes/sec] received Connection Times (ms) min mean[+/-sd] median max Connect: 0 0 0.7 0 7 Processing: 0 7 57.9 1 954 Waiting: 0 7 57.9 1 954 Total: 0 7 58.5 1 961 Percentage of the requests served within a certain time (ms) 50% 1 66% 2 75% 2 80% 2 90% 3 95% 3 98% 4 99% 12 100% 961 (longest request) Código 6 - ApacheBench: Brook/FastCGI