Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
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...
Upcoming SlideShare
Loading in …5
×

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

1,599 views

Published on

Published in: Internet
  • Be the first to comment

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

×