DESENVOLVIMENTO WEB COM
BROOK FRAMEWORK 3.0
APRESENTAÇÃO; INSTALAÇÃO; SUGESTÃO DE
IDEIAS; FORK; PULL REQUESTS; DOAÇÕES
Ori...
2Brook EaD – Desenvolvimento web com Brook framework 3.0
SUMÁRIO
APRESENTAÇÃO DO PROJETO.....................................
3Brook EaD – Desenvolvimento web com Brook framework 3.0
APRESENTAÇÃO DO PROJETO
Brook nasceu a partir de um estudo sobre ...
4Brook EaD – Desenvolvimento web com Brook framework 3.0
Ou seja, baseado nos resultados acima, é possível observar que a
...
5Brook EaD – Desenvolvimento web com Brook framework 3.0
desenvolvedores de todo o mundo, que voluntariamente contribuem c...
6Brook EaD – Desenvolvimento web com Brook framework 3.0
Para prosseguir, a instalação requer duas confirmações. A primeir...
7Brook EaD – Desenvolvimento web com Brook framework 3.0
SUGERINDO IDEIAS, SOLICITANDO NOVOS RECURSOS E REPORTANDO
BUGS
O ...
8Brook EaD – Desenvolvimento web com Brook framework 3.0
FORKANDO O PROJETO
O site Github permite realizar fork de reposit...
9Brook EaD – Desenvolvimento web com Brook framework 3.0
A página não especifica valores para doação, deste modo, é possív...
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 te...
12Brook EaD – Desenvolvimento web com Brook framework 3.0
APÊNDICE B – Relatório de estatísticas do ApacheBench para um te...
13Brook EaD – Desenvolvimento web com Brook framework 3.0
APÊNDICE C – Relatório de estatísticas do ApacheBench para um te...
14Brook EaD – Desenvolvimento web com Brook framework 3.0
APÊNDICE D – Relatório de estatísticas do ApacheBench para um te...
Próximos SlideShares
Carregando em…5
×

Desenvolvimento web com Brook framework 3.0 - 01 - APRESENTAÇÃO; INSTALAÇÃO; SUGESTÃO DE IDEIAS; FORK; PULL REQUESTS; DOAÇÕES

1.299 visualizações

Publicada em

Publicada em: Internet
0 comentários
2 gostaram
Estatísticas
Notas
  • Seja o primeiro a comentar

Sem downloads
Visualizações
Visualizações totais
1.299
No SlideShare
0
A partir de incorporações
0
Número de incorporações
1
Ações
Compartilhamentos
0
Downloads
41
Comentários
0
Gostaram
2
Incorporações 0
Nenhuma incorporação

Nenhuma nota no slide

Desenvolvimento web com Brook framework 3.0 - 01 - APRESENTAÇÃO; INSTALAÇÃO; SUGESTÃO DE IDEIAS; FORK; PULL REQUESTS; DOAÇÕES

  1. 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. 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. 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. 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. 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. 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. 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. 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. 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. 10. 10Brook EaD – Desenvolvimento web com Brook framework 3.0 APÊNDICES
  11. 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. 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. 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. 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

×