CENTRO UNIVERSITÁRIO METODISTA BENNETT. Rafael Gomes de Oliveira Polo Sabrina Arêas DESENVOLVIMENTO ÁGIL DE SISTEMAS PARA A WEB 2.

Tamanho: px
Começar a partir da página:

Download "CENTRO UNIVERSITÁRIO METODISTA BENNETT. Rafael Gomes de Oliveira Polo Sabrina Arêas DESENVOLVIMENTO ÁGIL DE SISTEMAS PARA A WEB 2."

Transcrição

1 CENTRO UNIVERSITÁRIO METODISTA BENNETT Rafael Gomes de Oliveira Polo Sabrina Arêas DESENVOLVIMENTO ÁGIL DE SISTEMAS PARA A WEB 2.0 COM RAILS 2009

2 CENTRO UNIVERSITÁRIO METODISTA BENNETT Rafael Gomes de Oliveira Polo Sabrina Arêas DESENVOLVIMENTO ÁGIL DE SISTEMAS PARA A WEB 2.0 COM RAILS Monografia apresentada ao Centro Universitário Metodista Bennett, como parte dos requisitos para obtenção do título de Bacharel em Ciência da Computação. Orientador: Prof. Sávio Figueiredo Rio de Janeiro Novembro, 2009

3 CENTRO UNIVERSITÁRIO METODISTA BENNETT Rafael Gomes de Oliveira Polo Sabrina Arêas Orientador: Prof. Sávio Figueiredo DESENVOLVIMENTO ÁGIL DE SISTEMAS PARA A WEB 2.0 COM RAILS Trabalho de Conclusão do Curso de Ciência da Computação do Centro Universitário Metodista Bennett como parte dos requisitos necessários à obtenção do título de Bacharel em Ciência da Computação. Aprovado por: Prof. Sávio Figueiredo, MSc Presidente Prof. Carolina Xavier, MSc Prof. Vinicius da Fonseca Vieira, MSc Rio de Janeiro Novembro, 2009

4 RESUMO DESENVOLVIMENTO ÁGIL DE SISTEMAS PARA A WEB 2.0 COM RAILS Rafael Gomes de Oliveira Polo Sabrina Arêas Orientador: Prof. Sávio Figueiredo Este trabalho tem por objetivo apresentar alguns aspectos dos novos princípios de arquitetura de software voltadas para a World Wide Web, mostrando que o refinamento dos novos frameworks para sistemas de informação na Web permitem o desenvolvimento ágil e com qualidade, eliminando tarefas recorrentes nos projetos. Demonstramos essa viabilidade na implementação de dois sistemas Web com um moderno framework. Palavras-chave: HTTP, WEB 2.0, REST, URI, RUBY ON RAILS Rio de Janeiro Novembro, 2009

5 ABSTRACT AGILE SYSTEMS DEVELOPMENT FOR WEB 2.0 WITH RAILS Rafael Gomes de Oliveira Polo Sabrina Arêas Advisor: Prof. Sávio Figueiredo This paper aims to present some aspects of the new principles of software architecture focused on the World Wide Web, showing that the refinement of new information system s frameworks allows agile development with quality, eliminating recurring tasks in projects. We demonstrates its viability implementing two Web systems with a modern framework. Key-words: HTTP, WEB 2.0, REST, URI, RUBY ON RAILS Rio de Janeiro Novembro, 2009

6 AGRADECIMENTOS Agradeço ao meu esposo por sempre me mostrar que posso ir além. Aos meus pais que são responsáveis por eu estar aqui hoje. Ao meu irmão por sempre me levar a busca pela sabedoria e aos Mestres da casa por todo conhecimento transmitido. (Sabrina) Agradeço à meus pais e familiares pelo exemplo de determinação e bondade que me faz seguir em frente, a minha irmã pelo incentivo e colaboração, aos amigos pelos momentos de diversão e por manterem minha curiosidade no mundo acesa. (Rafael)

7 A mente que se abre a uma nova idéia jamais voltará ao seu tamanho original. Albert Einstein

8 Sumário 1 - Introdução Objetivos Justificativa Revisão Mapeamento Objeto Relacional Active Record ActiveRecord do Framework Ruby On Rails Desvantagens do Active Record Sistema de caching Caching on Rails Paging Cache Action Cache Fragment Caching Sweepers SQL caching Conditional GET Support View e Templates Partials Rer RHTML Helpers Roteamento de URLs Conectando URLs com o código Gerando URLs do código Routes.rb Processando o arquivo Rotas RESTful Rotas Nomeadas...19

9 Rotas Aninhadas Rotas Regulares Rotas Padrão Roteamento RESTful: o Padrão Rails Estudo de caso Estudo de caso - baixogavea.com Criação do Projeto Definição do SGBD Definição do Schema Modelos Migrando e Testando Roteando as requisições HTTP aos controladores Visualizando as respostas através dos templates AJAX Resultados e Conclusões Trabalhos Futuros...40 REFERÊNCIAS BIBLIOGRÁFICAS...42

10 1 - Introdução Desde a crise do software nos anos 70 - ano de desenvolvimento e comercialização do microprocessador - quando a demanda por sistemas de informação era progressiva, boa parte dos projetos estourava o orçamento e o prazo e softwares tinham baixa qualidade ou se tornavam muito complexos para serem gerenciados, o uso de melhores técnicas, métodos e ferramentas se fez necessário. Muito se evoluiu em pouco mais de 40 anos, desde quando o termo Engenharia de Software foi utilizado oficialmente em 1968 na Conferência sobre Engenharia de Software da OTAN. A década de 80 viveu a popularização dos Sistemas Operacionais e o uso de PCs (computadores pessoais) para uso não necessariamente empresarial ou científico. No ápice de um contexto histórico, da guerra fria aos movimentos de contra-cultura, essa época é considerada o fim da Sociedade Industrial e o início da Sociedade da Informação, a computação foge do seu único destino de processamento de dados corporativos para tornar-se um instrumento de criação de textos, imagens e música. A informática perde seu status de técnica industrial para fundir-se com as telecomunicações, editoração, digitalização e multimídia. No começo da década de 90 o cientista da computação Tim Berners Lee publicou seu projeto sobre a World Wide Web (teia de alcance global) e um sistema de identificação global e único de recursos, o Uniform Resource Identifier (URI), além de um servidor de hipertexto e o primeiro browser, desenvolvido na CERN (Organização Europeia para a Investigação Nuclear), o WorldWideWeb, que funda toda a arquitetura de nossa Web contemporânea. 1

11 De forma geral, visualizar uma página web ou outro recurso disponibilizado na rede normalmente inicia ao digitar uma URL (Uniform Resource Locator) no navegador ou seguindo um hiperlink. Primeiramente, a parte da URL referente ao servidor web é separada e transformada em um ereço IP, por um banco de dados da Internet chamado Domain Name System (DNS). O navegador estabelece então uma conexão TCP-IP com o servidor web localizado no ereço IP retornado. Em seguida o navegador envia uma requisição HTTP (Protocolo de Transferência de Hipertexto) ao servidor para obter o recurso indicado pela parte restante da URL. No caso de uma página web típica, o texto HTML é recebido e interpretado pelo navegador, que realiza então requisições adicionais para figuras, arquivos de formatação, arquivos de script e outros recursos que fazem parte da página. O navegador então gera a página na tela do usuário, assim como descrita pelos arquivos que a compõe. Diversas são as camadas de tecnologias que nos permitem a Internet tal como é hoje. No ano 2000, Roy Fielding, um dos principais autores das especificação do protocolo HTTP, em sua tese de doutoramento (PHD) apresenta a Transferência de Estado Representacional (Representational State Transfer) ou somente REST, uma técnica de engenharia de software para sistemas hipermídia distribuídos, como é a própria World Wide Web. Sistemas RESTful maximizam o uso de interfaces bem definidas préexistentes e minimizam a necessidade de novas camadas de abstração ao sistema Objetivos So notório que cada pedaço de conhecimento deve ter uma representação inequívoca num sistema de informação e que na Web um sistema te a ser aberto, evolutivo e 2

12 reusado por outros nós da rede, é cada vez mais comum o uso de APIs públicas (Interface de Programação de Aplicativos) por conhecidas organizações como o Flickr, Youtube, Open Social, Facebook, Blogspot, ebay e Twitter que fazem de seu sistema de informação um eco-sistema aberto além de seu domínio. Um nó na rede pode ter seu próprio repositório de vídeos, imagens, microblogging integrado à mapas apenas com mashups dessas interfaces. Hoje, a Web vai muito além da simples exibição de páginas, quase duas décadas desde sua invenção, aproximadamente 20% da população mundial usa a Internet para atividades cada vez mais essenciais, países como a Estônia já elegeram seus governantes pela Internet. Como o computador é uma máquina universal, em rede, reinventamos a comunicação, a mídia e as próprias relações humanas. Diversos são os estudos que demonstram a simbiose da tecnologia e a cultura na última década, mas nos limitaremos a analisar e demonstrar o atual estado da arte da ágil construção de sistemas de informação com base no protocolo de transferência de hipertexto, o HTTP, a aquitetura REST e apresentar estudos de caso que desenvolvemos e publicamos na Web, o e o utilizando um moderno framework publicado inicialmente em 2004, o Ruby on Rails, cujos principais conceitos (mapeamento objetorelacional, sistema de cache, template e roteamento) faremos uma revisão e apresentaremos como pesquisa dos sistemas desenvolvidos Justificativa Nos quatro anos de experiência em desenvolvimento Web vimos diversos frameworks com as mais distintas funções. 3

13 "Framework é um conjunto de classes que colaboram para realizar uma responsabilidade para um domínio de um subsistema da aplicação." - FAYAD e SCHMIDT Em Java, uma das linguagem mais bem aceitas pelo mercado, conhecemos o Hibernate, o Velocity e o Spring, em Python o Django, adotado como base em muitos serviços do Google, em PHP o CakePHP e em Ruby o Rails, to sido esse último escolhido por ser um meta-framework open-source em constante evolução por uma engajada comunidade internacional de desenvolvedores e ter uma ótima documentação - é a junção de quatro frameworks, Active Record, Action Pack, Action Mailer e Active Support. Além disso, o Rails oferece um inovador roteamento de requisições, um conjunto de utilitários de testes e geração de documentação inspirados em sistemas UNIX em uma bem definida arquitetura MVC (Model-View-Controller), como a figura 1 representa. figura 1 4

14 2 - Revisão O conteúdo e os conceitos necessários para o desenvolvimento de uma aplicação Web completa extrapolam nosso intuito de apresentar as novas abordagens para realizá-las com ganhos significativos em produtividade, portanto resumiremos nossa revisão aos principais conceitos modernos de Mapeamento Objeto Relacional, Sistema de Caching, View e Templates e Roteamento de URLs Mapeamento Objeto Relacional Mapeamento objeto-relacional (ou ORM) é uma técnica de desenvolvimento utilizada para reduzir a redundância da programação orientada a objetos utilizando banco de dados relacionais. As tabelas do banco de dados são representadas através dos modelos do sistema, as classes, e os registros de cada tabela são representados como instâncias das classes correspondentes. Com esta técnica, o programador não precisa se preocupar com os comandos em linguagem SQL e sua tradução a objetos em sistemas orientados à objetos, ele irá usar uma interface de programação simples que faz todo o trabalho de persistência. Não é necessária uma correspondência direta entre as tabelas de dados e as classes do programa. A relação entre as tabelas onde originam os dados e o objeto que os disponibiliza é configurada pelo programador, isolando o código do programa das alterações à organização dos dados nas tabelas do banco de dados. 5

15 Existem dois padrões comuns para a comunicação com o BD/Framework: o Data Access Object (DAO) e o Active Record (AR). Os dois, DAO e AR, são padrões bem distintos e refletem abordagens extremamente diferentes na modelagem da aplicação Active Record Active Record é uma abordagem para acessar dados em um banco de dados. Uma tabela do banco de dados ou view é envolta em uma classe, desta maneira, uma instância é vinculada a uma única linha (registro) na tabela. Após a criação de um objeto, um novo registro é adicionado na tabela. Qualquer objeto carregado obtém informações do seu banco de dados; quando um objeto é atualizado, o registro correspondente na tabela também é atualizado. A classe wrapper implementa os métodos de acesso ou propriedades para cada coluna na tabela ou view. O Active Record Pattern é comumente usado por ferramentas de persistência de objetos e em mapeamento objeto relacional. Normalmente relacionamentos de chave estrangeira serão expostos como um objeto de tipo apropriado por meio de uma propriedade ActiveRecord do Framework Ruby On Rails O Active Record se tornou extremamente popular com o framework Rails, para a linguagem Ruby, como a produtividade e simplicidade do framework revoluciona o desenvolvimento, muitos abraçaram o padrão também em outros frameworks. Esse padrão é muito comum em frameworks para linguagens dinâmica, como Python. 6

16 O Active Record fornece acesso conveniente e programático à camada de domínio de nossas aplicações. Ele é um mecanismo de armazenagem persistente que geralmente interage diretamente com o banco de dados relacional, baseia-se e recebe o nome de um padrão de design definido por Martin Fowler em seu livro, Patterns of Enterprise Application Architecture (Addison-Wesley). Neste livro Fowler resume este padrão como: "Um objeto que encapsula um registro em uma tabela ou view do banco de dados. Além disso, este objeto cuida das rotinas de acesso ao banco e adiciona lógica de domínio às informações encapsuladas." O Active Record trabalha criando um mapeamento objeto-relacional (ORM) entre os objetos Ruby da aplicação e as linhas e colunas das tabelas no banco de dados. Este mapeamento nos permite interagir com o banco de dados da mesma forma que interagimos com os objetos Ruby, eliminando a necessidade de usar SQL para manipular os dados das tabelas. Em vez de trabalhar com registros nas tabelas, trabalhamos com objetos Ruby, e as colunas das tabelas do banco de dados passam a ser vistas como atributos destes objetos, os quais podemos ler ou escrever usando métodos de acesso. Um modelo de domínio consiste dos dados e um conjunto de regras que definem como estes dados interagem com o restante da aplicação. O Active Record permite a definição da lógica de nossos modelos de domínio usando Ruby. Com isso há flexibilidade ao definir regras de negócios específicas aos dados, e, uma vez que esta lógica está centralizada no modelo, a alteração se torna muito mais fácil. O Active Record, assim como boa parte do framework Rails, trabalha com o conceito de "convenção em vez de configuração - convention over configuration" para simplificar os estágios iniciais, assumindo que geralmente os projetos tem padrões em comum. Por exemplo, o Active Record determina os campos da tabela, eliminando a necessidade de 7

17 definir métodos básicos de acesso para cada campo. A forma que o Active Record faz isso é analisando as convenções de nomes de tabelas e campos para mapear o esquema do banco de dados para os objetos Ruby com o mínimo possível de configuração. Os nomes das tabelas são entidos como so o plural do objeto armazenado na tabela. Assim, cada registro de uma tabela "clientes" guarda um "cliente". Além disso, todas as tabelas (exceto tabelas de ligação) devem possuir uma chave primária única chamada id. Chaves estrangeiras (foreign keys) recebem seus nomes baseado no nome da tabela seguido por _id. Por exemplo, uma tabela alunos referenciando uma tabela chamada cursos possuiría uma coluna chamada cursos_id. Tabelas de ligação, usadas em relacionamentos muitos-para-muitos recebem os nomes das duas tabelas envolvidas, com seus nomes em ordem alfabética. Ex: alunos_cursos, artigos_categorias, etc. Os benefícios da abstração do acesso direto ao banco de dados usando Active Record inclui a habilidade de mudar o banco de dados sempre que necessário, a aplicação não fica depente de apenas um banco de dados. Uma vez que os detalhes dos dados e suas formas de acesso estão incluídos no Active Record, para mudar de MySQL para PostgreSQL ou SQLite é só editar o arquivo databases.yml no diretório conf do projeto. Para finalizar, como o Ruby possui a capacidade de instrospecção e metaprogramação de objetos, o Active Record no Rails fornece finders (métodos de pesquisa) dinâmicos baseados em atributos e um bom número de métodos auxiliares que facilitam e tornam a interação com o banco de dados extremamente ágeis Desvantagens do Active Record As classes sempre são persistidas no banco. Quando você cria uma nova instância de 8

18 aluno, por exemplo, o Active Record criará um registro na tabela aluno automaticamente. Isso às vezes é ruim, pois não é possível utilizar objetos não persistidos, como na API JPA do Java. A principal queixa com o Active Record é a sua lentidão para sistemas complexos com uma base de dados muito grande. O programa pode demorar para exibir listas de objetos persistidos e seus atributos, pois além de gerar o SQL necessário de acordo com o banco de dados definido, o resultado é convertido em objetos. Mas apesar dessa desvantagem, contornada utilizando SQL direto para consultas complexas, o Active Record ainda traz muitos ganhos ao mapear objetos, relacionamentos e automatizar todas as conexões com o banco de dados. Uma forma de melhorar o desempenho é o uso do cache, que pode manter o resultado das consultas em memória para evitar outras consultas ao banco e páginas préviamente construídas Sistema de Caching Cache é uma área de acesso rápido que pode ser utilizada para otimização de sistemas que se utilizam de recursos do sistema. Os dados existentes em cache estão lá duplicados, os dados existem em uma área de armazenamento permanente e no cache. A área de armazenamento permanente, normalmente, é de acesso mais caro, e normalmente o acesso mais caro é compensado pela capacidade superior de armazenamento. Já em áreas de cache o acesso aos dados é mais rápido. Só que a capacidade de armazenamento é menor. Assim, é necessário que existam heurísticas que se encarreguem de eleger quem será 9

19 removido do cache para liberar espaço para o armazenamento de outro recurso. Apesar de alguns dispositivos de computação terem o nome "cache" contido em seus nomes, cache não é um dispositivo - é um conceito - onde é utilizado recursos de acesso mais rápido para armazenar dados mais, ou recentemente, acessados. Cache é um bloco de memória temporário para acesso futuro. Para acesso aos dados, um cliente primeiramente consulta sua existência em um cache. Indo ao recurso mais lento apenas se o dado não puder ser encontrado no cache. A este processo se dá o nome de cache hit, utilizado nos navegadores Web recentes. Ao requisitar um ereço na Web, o navegador, primeiramente, verifica se a página solicitada existe no disco local. Se a solicitação (tag) for encontrada no disco local, a página (dado) é exibida sem ir a rede buscá-la. Em contrapartida, se a solicitação não for encontrada no cache local do browser, o mesmo se encarrega em ir no local destino para buscar a página solicitada. A partir daí a página é inserida no cache para acesso futuro. A esse evento dá-se o nome de cache miss. Durante o processo de cache miss o processador de cache se encarrega de prover espaço para entrada do dado mais recentemente acessado que ainda não existia no cache. O algoritmo para o processamento disso chama-se replacement policy. Existem dois métodos de escrita no cache. Write-through e write-back. No write-through o dado armazenado no cache é gravado sincronamente no local de armazenamento. No write-back, quando um dado é escrito no cache ele ainda não foi armazenado na área definitiva de armazenamento. O sistema de cache deve se encarregar de escrever o dado na área de armazenamento a fim de precaver-se de perda de dados. 10

20 Caching on Rails Em servidores Web é possível implementar funcionalidades se aproveitando do conceito de cache. O objetivo é manter as páginas, já processadas, em uma área temporária para acessos futuros. Com isso é economizado acesso a recursos mais onerosos do sistema armazenando informações recuperáveis por meios mais eficientes. No Ruby on Rails pode-se utilizar de técnicas de cache já implementadas no framework, como cache de páginas ou de SQL a fim de aproveitar recursos do sistema Paging Cache Por este método, o primeiro cliente que acessar uma determinada página irá processar a página e armazena-la no cache. Com isso o próximo cliente que precisar desta página, não irá esperar o processamento da mesma. Receberá uma cópia já processada. Esse recurso não pode ser utilizado para páginas em que os dados enviados precisam ser checados para estabelecer uma conexão ao recurso solicitado. É muito utilizado para páginas que são idênticas para todos os usuários que acessam ou para páginas que não precisam de autenticação para serem acessadas Action Cache Isso resolve o problema existente em paging cache. Antes de servir ao cliente a página em cache, é possível efetuar filtros. Isso utiliza processamento para efetuar as verificações de permissão, por exemplo, e depois serve a página em cache. Assim, uma 11

21 página que depe de autenticação não seria exibida simplesmente por estar em cache Fragment Caching Como atualmente as páginas Web são mais componentizadas e cada componente da página tem um comportamento diferente, também será necessário aplicação de regras de cache diferente para cada componente da página - para isso o Rails provê este mecanismo Sweepers Com esta técnica, é possível internalizar o momento de expirar um determinado cache a partir de ações. Quando há um objeto em cache, é necessário que o mesmo seja inválido a partir do momento que algum dado é alterado. Sweeper são pequenos pedaços de código que removem do cache informações que já são antigas, ou devem ser expiradas programáticamente SQL caching Query cache é uma característica do Rails que permite colocar em cache todo resultset de querys solicitadas pelos clientes. Uma vez solicitada uma consulta que já possui seu resultado em cache o Rails utilizará esse resultado ao invés de consultar novamente no banco de dados. Este recurso está disponível apenas na execução de uma Action. 12

22 Conditional GET Support É uma característica da especificação do protocolo HTTP. Ele provê ao Web browser um mecanismo para informar ao Web browser que o recurso solicitado não foi alterado desde sua última solicitação. Então ele pode usar o já existente em seu cache local. 2.3 View e Templates O ActionView é a parte do framework responsável pelo tratamento do View, o que é visualizado, na abordagem do Rails para o MVC. O ActionView utiliza os objetos criados pelo controlador e gera a saída, geralmente como HTML ou XML. O ActionView está inserido com o ActionController em uma gem (pacote) Ruby chamada ActionPack. Juntamente com o ActiveRecord, o ActionView e o ActionController formam o núcleo do Rails. Embora seja possível gerar o conteúdo diretamente a partir do controlador, quase 100% dos aplicativos Rails utilizam o ActionView. O ActionView suporta muitas abordagens diferentes para a gerar a página por meio de um mecanismo de um modelo pré-definido. O ActionView é fornecido com três estilos de modelos. Os modelos Embedded Ruby (Erb) são armazenados em arquivos.rhtml e utilizam um misto de marcação e Erb para a construção do conteúdo dinâmico. Os modelos construtores são armazenados como arquivos.rxml e utilizam o Ruby puro para a construção da saída XML. Os modelos JavaScript são armazenados como arquivos.rjs e utilizam uma API Ruby para a construção da saída JavaScript. Do controlador é gerado a saída de uma action para o view, a camada de representação 13

23 na arquitetura MVC. O modelo.ehtml ou.rhtml geralmente tem o mesmo nome da ação do controlador. Ou seja, o app/view/bandas/list.ehtml representa o template da ação list do bandas_controller.rb Partials O partials é um arquivo especial que começa com _, como _itens.ehtml, que é utilizado como um componente reutilizável de modelo de template. Objetos representados igualmente em diferentes partes do sistema são fortes candidato a possuir um único modelo de template parcial Rer As possíveis chamadas à visão pelo controlador. Action: rer :action => 'some_action' rer :action => 'some_action', :layout => 'another_layout' Partial: rer :partial => 'subform' rer :partial => 'error', :status => 500 rer :partial => 'subform', :locals => { :variable } rer :partial => 'listitem', :collection Template: rer :template => 'weblog/show' 14

24 Arquivo: rer :file => '/path/to/some/file.rhtml' rer :file => '/path/to/some/filenotfound.rhtml', status => 404, :layout => true Texto: rer :text => "Hello World" rer :text => "This is an error", :status => 500 rer :text => "Let's use a layout", :layout => true rer :text => 'Specific layout', :layout => 'special' Template Inline: rer :inline => "<%= 'olá novamente' %>" Redefinindo o content-type: rer :action => "status", :content_type => "application/json rer :json => texto.to_json Além da eficiente integração dos controladores com a view, a elaboração dos.rhtml não diferem muito das aplicações como ASP e PHP, so utilizado Ruby puro. Porém há o foco na arquitetura RESTful, onde cada recurso tem uma representatividade bem definida, um Identificador Uniforme de Recurso, facilitando a manipulação das entidades do sistema de informação, como melhor apresentado no roteamento das URLs RHTML Modelo de template que gera links para todos os últimos álbuns. do album %> <li> 15

25 </li> <% %> <%= link_to album_name(album), album_path(album) %> Modelo de template que gera links para todas as bandas e seu número de álbuns. do banda %> <li> <%= link_to "#{banda.nome} (#{banda.albuns.count})", banda_path(banda) %> </li> <% %> Helpers Helpers são classes auxiliadoras para fornecer métodos para as views. Supondo a necessidade de um método de formatação para que apenas os dez primeiros caracteres de uma determinada string sejam exibidos, o método so10() poderia ser definido no helper. # esse texto é muito grande => esse texto... def so10(str) str[0..10]+"..." E utilizado num template: Em nossa pesquisa, desenvolvemos um helper capaz de buscar o primeiro resultado de 16

26 imagem do Google Imagens, dado um termo, como o nome de um álbum de banda, usando a API do Google. def getalbumimage(album) google_image = nil banda_nome = CGI.escape('"'+album.banda.nome+'"') album_nome = CGI.escape('"'+album.nome+'"') query = "#{banda_nome}+#{album_nome}" url = "http://ajax.googleapis.com/ajax/services/search/images?hl=pt- BR&rsz=large&start=#{position=0}&v=1.0&q=#{query}" results = JSON.parse(open(url).read) image_array = results['responsedata']['results'] if image_array && image_array[0] image = image_array[0] google_image = {:thumbnail => image['tburl'], :original => image['unescapedurl'], :name => query.titleize} Assim, representamos álbuns não só pelo seu nome, mas exibindo suas capas como se fossem de nosso próprio domínio Roteamento de URLs Roteamento Rails é um dos conceitos mais inovadoras e importantes do Framework, que conecta as solicitações HTTP com os controllers da aplicação e ajuda a gerar URLs automáticas sem ter que ser codificadas como strings Conectando URLs com o código A engine de roteamento dentro do Rails é a parte do código que envia a solicitação para o 17

27 local apropriado na sua aplicação. Quando a aplicação Rails recebe uma solicitação HTTP de entrada, como GET /livros/17 Neste caso, a aplicação provavelmente executaria a action show dentro do controller livros, mostrando os detalhes do livro cujo ID é Gerando URLs do código O roteamento também funciona no caminho reverso. Em uma aplicação que contém o = Livro.find(17) <%= link_to "Livro Grande", %> Então a engine de roteamento é a parte que traduz o link para a URL, assim como Usando o roteamento desta maneira, pode-se reduzir a fragilidade da aplicação se comparada com uma aplicação com URLs codificada, além de tornar o código fácil de ler e enter. Livro necessita ser declarado como um recurso mapeado para que este estilo de tradução por rotas nomeadas esteja disponível Routes.rb Há dois componentes para roteamento no Rails: a própria engine de roteamento, que é 18

28 fornecida como parte do Rails, e o arquivo config/routes.rb, que contém as rotas atuais que serão usadas pela aplicação. É nesse importante arquivo que todas as requisições ao sistema devem ser repassadas aos devidos controladores para serem devidamente respondidas. Rotas podem ser definidas a partir de expressões regulares. O arquivo routes.rb define todas as requisições que o sistema é capaz de responder Processando o arquivo O routes.rb não é nada mais que um grande bloco enviado para ActionController::Routing::Routes.draw. Dentro do bloco, pode-se ter comentários, mas é provável que a maior parte do conteúdo seja de linhas individuais de código cada linha so uma rota na aplicação. Existem cinco tipos principais de conteúdo que estarão neste arquivo: Rotas RESTful (RESTful Routes) Rotas Nomeadas (Named Routes) Rotas Aninhadas (Nested Routes) Rotas Regulares (Regular Routes) Rotas Padrão (Default Routes) O arquivo é processado de cima para baixo quando chega uma requisição. A requisição será despachada para a primeira rota que combine. Se nenhuma rota combina, então o Rails retorna o status HTTP 404 ao chamador. 19

29 Rotas RESTful Rotas RESTful tiram vantagem da orientação do REST embutido no Rails para empacotar muitas das informações de roteamento em uma simples declaração. Uma rota RESTful se parece como esta: map.resources :livros Rotas Nomeadas Rotas nomeadas nos dão links muito legíveis no seu código, bem como manipulação de solicitações recebidas. Exemplo típico de rota nomeada: map.login '/login', :controller => 'sessions', :action => 'new' Rotas Aninhadas Rotas aninhadas permitem-nos declarar que um recurso está contido dentro de outro recurso Rotas Regulares Em muitas aplicações, há roteamento não RESTful, que conecta explicitamente cada parte da URL a uma ação em particular. Por exemplo, map.connect 'pagina/:numero', :controller => 'paginas', :action => 'show' 20

Centro Universitário Metodista Benne1 Rio de Janeiro, Dezembro de 2009. Rafael Polo e Sabrina Arêas

Centro Universitário Metodista Benne1 Rio de Janeiro, Dezembro de 2009. Rafael Polo e Sabrina Arêas Centro Universitário Metodista Benne1 Rio de Janeiro, Dezembro de 2009 Rafael Polo e Sabrina Arêas Contexto 60 s - Primeiros sistemas de informação corporativos. 70 s Desenvolvimento e comercialização

Leia mais

FRWTC800 - Desenvolvimento Web com Ruby on Rails

FRWTC800 - Desenvolvimento Web com Ruby on Rails FRWTC800 - Desenvolvimento Web com Ruby on Rails SOBRE A FRAMEWORK A Framework (www.frwtc.com) atua diretamente com profissionais do segmento de tecnologia em busca de capacitação, atualização e certificação,

Leia mais

Conteúdo. Disciplina: INF 02810 Engenharia de Software. Monalessa Perini Barcellos. Centro Tecnológico. Universidade Federal do Espírito Santo

Conteúdo. Disciplina: INF 02810 Engenharia de Software. Monalessa Perini Barcellos. Centro Tecnológico. Universidade Federal do Espírito Santo Universidade Federal do Espírito Santo Centro Tecnológico Departamento de Informática Disciplina: INF 02810 Prof.: (monalessa@inf.ufes.br) Conteúdo 1. Introdução 2. Processo de Software 3. Gerência de

Leia mais

Desenvolvendo Websites com PHP

Desenvolvendo Websites com PHP Desenvolvendo Websites com PHP Aprenda a criar Websites dinâmicos e interativos com PHP e bancos de dados Juliano Niederauer 19 Capítulo 1 O que é o PHP? O PHP é uma das linguagens mais utilizadas na Web.

Leia mais

O Framework Rails. Diego Rubin http://diegorubin.com @diegorubin

O Framework Rails. Diego Rubin http://diegorubin.com @diegorubin O Framework Rails Diego Rubin http://diegorubin.com @diegorubin Introdução David Heinemeier Hansson (DHH) 2004 MVC Restful Meta-Framework Convention over configuration Rails 3.1 Ferramentas Rake Bundler

Leia mais

Aplicativo web para definição do modelo lógico no projeto de banco de dados relacional

Aplicativo web para definição do modelo lógico no projeto de banco de dados relacional Aplicativo web para definição do modelo lógico no projeto de banco de dados relacional Juarez Bachmann Orientador: Alexander Roberto Valdameri Roteiro Introdução Objetivos Fundamentação teórica Desenvolvimento

Leia mais

Sistema Gerador de Anúncios para Compra e Venda On-line. Leandro de Oliveira ol.leandro@gmail.com

Sistema Gerador de Anúncios para Compra e Venda On-line. Leandro de Oliveira ol.leandro@gmail.com Sistema Gerador de Anúncios para Compra e Venda On-line Leandro de Oliveira ol.leandro@gmail.com Roteiro da Apresentação Motivação Conceitos e Tecnologias Objetivos do trabalho Sistema SideCart Conclusões

Leia mais

5 Detalhes da Implementação

5 Detalhes da Implementação Detalhes da Implementação 101 5 Detalhes da Implementação Neste capítulo descreveremos detalhes da implementação do Explorator que foi desenvolvido usando o paradigma MVC 45 e o paradigma de CoC 46 (Convention

Leia mais

Engenharia de Software Aplicações de Internet

Engenharia de Software Aplicações de Internet Engenharia de Software Aplicações de Internet Eduardo Santos eduardo.edusantos@gmail.com eduardo.santos@planejamento.gov.br www.softwarepublico.gov.br Histórico Por que existe a Internet? Por que existe

Leia mais

Desenvolvendo Aplicações Web com NetBeans

Desenvolvendo Aplicações Web com NetBeans Desenvolvendo Aplicações Web com NetBeans Aula 3 Cap. 4 Trabalhando com Banco de Dados Prof.: Marcelo Ferreira Ortega Introdução O trabalho com banco de dados utilizando o NetBeans se desenvolveu ao longo

Leia mais

Desenvolva rapidamente utilizando o frame work CakePHP. Elton Luí s Minetto

Desenvolva rapidamente utilizando o frame work CakePHP. Elton Luí s Minetto Desenvolva rapidamente utilizando o frame work CakePHP Elton Luí s Minetto Agenda Ambiente Web PHP Problemas Frameworks CakePHP Demonstração Ambiente Web É o ambiente formado por algumas tecnologias: Servidor

Leia mais

II Semana de Tecnologia da Informação. Rails Framework

II Semana de Tecnologia da Informação. Rails Framework II Semana de Tecnologia da Informação Rails Framework Rails Instalação Ruby versão 1.8.7 Linux: ftp://ftp.ruby-lang.org/pub/ruby/1.8/ruby-1.8.7-p174.tar.gz ou apt-get install ruby (Debian/Ubuntu) Windows:

Leia mais

Produto: Webscan Relatório II Programas desenvolvidos, testados e documentados

Produto: Webscan Relatório II Programas desenvolvidos, testados e documentados Produto: Webscan Relatório II Programas desenvolvidos, testados e documentados Sérgio Oliveira Campos Contrato N : 2008/000514 Sumário 1 Introdução 1 2 Bibliotecas Utilizadas 2 2.1 Reconhecimento de Texto

Leia mais

Sumário. Parte I Introdução 21. 1 Introdução 15 1.1 O Rails é ágil... 17 1.2 Explorando o conteúdo... 18 1.3 Agradecimentos... 19

Sumário. Parte I Introdução 21. 1 Introdução 15 1.1 O Rails é ágil... 17 1.2 Explorando o conteúdo... 18 1.3 Agradecimentos... 19 Sumário 1 Introdução 15 1.1 O Rails é ágil.......................................................... 17 1.2 Explorando o conteúdo................................................... 18 1.3 Agradecimentos........................................................

Leia mais

Desenvolvendo Websites com PHP

Desenvolvendo Websites com PHP Desenvolvendo Websites com PHP 2ª Edição Juliano Niederauer Novatec Copyright 2009, 2011 da Novatec Editora Ltda. Todos os direitos reservados e protegidos pela Lei 9.610 de 19/02/1998. É proibida a reprodução

Leia mais

Luiz Arão Araújo Carvalho Bacharel em Ciência da Computação Desenvolvedor RedeSat-TO maximusmano@gmail.com http://www.maxonrails.wordpress.

Luiz Arão Araújo Carvalho Bacharel em Ciência da Computação Desenvolvedor RedeSat-TO maximusmano@gmail.com http://www.maxonrails.wordpress. Parte II Luiz Arão Araújo Carvalho Bacharel em Ciência da Computação Desenvolvedor RedeSat-TO maximusmano@gmail.com http://www.maxonrails.wordpress.com Rails - Instalação Windows gem install rails Plataformas

Leia mais

Wireshark. Captura de Protocolos da camada de aplicação. Maicon de Vargas Pereira

Wireshark. Captura de Protocolos da camada de aplicação. Maicon de Vargas Pereira Wireshark Captura de Protocolos da camada de aplicação Maicon de Vargas Pereira Camada de Aplicação Introdução HTTP (Hypertext Transfer Protocol) 2 Introdução Camada de Aplicação Suporta os protocolos

Leia mais

DESENVOLVENDO APLICAÇÃO UTILIZANDO JAVA SERVER FACES

DESENVOLVENDO APLICAÇÃO UTILIZANDO JAVA SERVER FACES DESENVOLVENDO APLICAÇÃO UTILIZANDO JAVA SERVER FACES Alexandre Egleilton Araújo, Jaime Willian Dias Universidade Paranaense (Unipar) Paranavaí PR Brasil araujo.ale01@gmail.com, jaime@unipar.br Resumo.

Leia mais

GLOSSÁRIO. ActiveX Controls. É essencialmente uma interface usada para entrada e saída de dados para uma aplicação.

GLOSSÁRIO. ActiveX Controls. É essencialmente uma interface usada para entrada e saída de dados para uma aplicação. GLOSSÁRIO Este glossário contém termos e siglas utilizados para Internet. Este material foi compilado de trabalhos publicados por Plewe (1998), Enzer (2000) e outros manuais e referências localizadas na

Leia mais

ARQUITETURA DE SISTEMAS. Cleviton Monteiro (cleviton@gmail.com)

ARQUITETURA DE SISTEMAS. Cleviton Monteiro (cleviton@gmail.com) ARQUITETURA DE SISTEMAS Cleviton Monteiro (cleviton@gmail.com) Roteiro Definição Documento de arquitetura Modelos de representação da arquitetura Estilos arquiteturais Arquitetura de sistemas web Arquitetura

Leia mais

Desenvolvendo para WEB

Desenvolvendo para WEB Nível - Básico Desenvolvendo para WEB Por: Evandro Silva Neste nosso primeiro artigo vamos revisar alguns conceitos que envolvem a programação de aplicativos WEB. A ideia aqui é explicarmos a arquitetura

Leia mais

Programação Web Aula 8 - Rails (Introdução)

Programação Web Aula 8 - Rails (Introdução) Programação Web Aula 8 - Rails (Introdução) Departamento de Informática UFPR 7 de Abril de 2014 1 Rails Básico Mágica Princípios Características Criando uma aplicação Levantando o Servidor Examinando o

Leia mais

Nos Trilhos com RAILS. Sylvestre Mergulhão

Nos Trilhos com RAILS. Sylvestre Mergulhão Nos Trilhos com RAILS Sylvestre Mergulhão Necessidades Desenvolver para a web Desenvolver para a web de forma organizada Desenvolver para a web de forma fácil de manter Desenvolver para a web de forma

Leia mais

Programação Web Prof. Wladimir

Programação Web Prof. Wladimir Programação Web Prof. Wladimir Linguagem de Script e PHP @wre2008 1 Sumário Introdução; PHP: Introdução. Enviando dados para o servidor HTTP; PHP: Instalação; Formato básico de um programa PHP; Manipulação

Leia mais

ABORDAGEM DE FRAMEWORKS PARA JSF QUE AUXILIAM O DESENVOLVIMENTO DE SOFTWARE

ABORDAGEM DE FRAMEWORKS PARA JSF QUE AUXILIAM O DESENVOLVIMENTO DE SOFTWARE ABORDAGEM DE FRAMEWORKS PARA JSF QUE AUXILIAM O DESENVOLVIMENTO DE SOFTWARE Amarildo Aparecido Ferreira Junior 1, Ricardo Ribeiro Rufino 1 ¹Universidade Paranaense (Unipar) Paranavaí PR Brasil aapfjr@gmail.com

Leia mais

Processos (Threads,Virtualização e Migração de Código)

Processos (Threads,Virtualização e Migração de Código) Processos (Threads,Virtualização e Migração de Código) Roteiro Processos Threads Virtualização Migração de Código O que é um processo?! Processos são programas em execução. Processo Processo Processo tem

Leia mais

Autoria Web Apresentação e Visão Geral sobre a Web

Autoria Web Apresentação e Visão Geral sobre a Web Apresentação e Visão Geral sobre a Web Apresentação Thiago Miranda Email: mirandathiago@gmail.com Site: www.thiagomiranda.net Objetivos da Disciplina Conhecer os limites de atuação profissional em Web

Leia mais

ANEXO 11. Framework é um conjunto de classes que colaboram para realizar uma responsabilidade para um domínio de um subsistema da aplicação.

ANEXO 11. Framework é um conjunto de classes que colaboram para realizar uma responsabilidade para um domínio de um subsistema da aplicação. ANEXO 11 O MATRIZ Para o desenvolvimento de sites, objeto deste edital, a empresa contratada obrigatoriamente utilizará o framework MATRIZ desenvolvido pela PROCERGS e disponibilizado no início do trabalho.

Leia mais

Associação Carioca de Ensino Superior Centro Universitário Carioca

Associação Carioca de Ensino Superior Centro Universitário Carioca Desenvolvimento de Aplicações Web Lista de Exercícios Métodos HTTP 1. No tocante ao protocolo de transferência de hipertexto (HTTP), esse protocolo da categoria "solicitação e resposta" possui três métodos

Leia mais

Sistemas Distribuídos. Professora: Ana Paula Couto DCC 064

Sistemas Distribuídos. Professora: Ana Paula Couto DCC 064 Sistemas Distribuídos Professora: Ana Paula Couto DCC 064 Sistemas Distribuídos Basedos na Web Capítulo 12 Agenda Arquitetura Processos Comunicação Nomeação Sincronização Consistência e Replicação Introdução

Leia mais

Resumo: Perguntas a fazer ao elaborar um projeto arquitetural

Resumo: Perguntas a fazer ao elaborar um projeto arquitetural Resumo: Perguntas a fazer ao elaborar um projeto arquitetural Sobre entidades externas ao sistema Quais sistemas externos devem ser acessados? Como serão acessados? Há integração com o legado a ser feita?

Leia mais

Criando Frameworks Inteligentes com PHP. Uma abordagem prática: vantagens, aplicações e procedimentos.

Criando Frameworks Inteligentes com PHP. Uma abordagem prática: vantagens, aplicações e procedimentos. Criando Frameworks Inteligentes com PHP Uma abordagem prática: vantagens, aplicações e procedimentos. Apresentação Equipes ao redor do mundo utilizam diferentes padrões de projeto, de acordo com suas necessidades

Leia mais

UFG - Instituto de Informática

UFG - Instituto de Informática UFG - Instituto de Informática Especialização em Desenvolvimento de Aplicações Web com Interfaces Ricas EJB 3.0 Prof.: Fabrízzio A A M N Soares professor.fabrizzio@gmail.com Aula 10 Persistência de Dados

Leia mais

PHP Conference Brasil

PHP Conference Brasil Symfony Elton Luís Minetto Agenda O que é o Symfony Conceitos básicos Requisitos Instalação Configuração Aplicação de exemplo O que é o Symfony Symfony é um framework de desenvolvimento para PHP5. Seu

Leia mais

Ambiente Web PHP Problemas Frameworks CakePHP Symfony Zend Framework Prado CodeIgniter Demonstração

Ambiente Web PHP Problemas Frameworks CakePHP Symfony Zend Framework Prado CodeIgniter Demonstração Desenvolvimento em PHP usando Frameworks Elton Luís Minetto Agenda Ambiente Web PHP Problemas Frameworks CakePHP Symfony Zend Framework Prado CodeIgniter Demonstração Ambiente Web É o ambiente formado

Leia mais

Introdução à Tecnologia Web. Tipos de Sites. Profª MSc. Elizabete Munzlinger www.elizabete.com.br

Introdução à Tecnologia Web. Tipos de Sites. Profª MSc. Elizabete Munzlinger www.elizabete.com.br IntroduçãoàTecnologiaWeb TiposdeSites ProfªMSc.ElizabeteMunzlinger www.elizabete.com.br ProfªMSc.ElizabeteMunzlinger www.elizabete.com.br TiposdeSites Índice 1 Sites... 2 2 Tipos de Sites... 2 a) Site

Leia mais

WebApps em Java com uso de Frameworks

WebApps em Java com uso de Frameworks WebApps em Java com uso de Frameworks Fred Lopes Índice O que são frameworks? Arquitetura em camadas Arquitetura de sistemas WEB (WebApps) Listagem resumida de frameworks Java Hibernate O que são frameworks?

Leia mais

Boas Práticas de Desenvolvimento Seguro

Boas Práticas de Desenvolvimento Seguro Boas Práticas de Desenvolvimento Seguro Julho / 2.012 Histórico de Revisões Data Versão Descrição Autor 29/07/2012 1.0 Versão inicial Ricardo Kiyoshi Página 2 de 11 Conteúdo 1. SEGURANÇA DA INFORMAÇÃO

Leia mais

Ambiente Web PHP Problemas Frameworks CakePHP Symfony Zend Framework Prado CodeIgniter Demonstração O livro

Ambiente Web PHP Problemas Frameworks CakePHP Symfony Zend Framework Prado CodeIgniter Demonstração O livro Desenvolvimento em PHP usando Frameworks Elton Luís Minetto Agenda Ambiente Web PHP Problemas Frameworks CakePHP Symfony Zend Framework Prado CodeIgniter Demonstração O livro Ambiente Web É o ambiente

Leia mais

Tecnologias Web. Padrões de Projeto - Camada de Apresentação

Tecnologias Web. Padrões de Projeto - Camada de Apresentação Tecnologias Web Padrões de Projeto - Camada de Apresentação Cristiano Lehrer, M.Sc. Padrões da Camada de Apresentação (1/2) Intercepting Filter Viabiliza pré e pós processamento de requisições. Front Controller

Leia mais

10/07/2013. Camadas. Principais Aplicações da Internet. Camada de Aplicação. World Wide Web. World Wide Web NOÇÕES DE REDE: CAMADA DE APLICAÇÃO

10/07/2013. Camadas. Principais Aplicações da Internet. Camada de Aplicação. World Wide Web. World Wide Web NOÇÕES DE REDE: CAMADA DE APLICAÇÃO 2 Camadas NOÇÕES DE REDE: CAMADA DE APLICAÇÃO Introdução à Microinformática Prof. João Paulo Lima Universidade Federal Rural de Pernambuco Departamento de Estatística e Informática Aplicação Transporte

Leia mais

BANCO DE DADOS CONTEÚDO INFORMÁTICA. Prof.: MARCIO HOLLWEG mhollweg@terra.com.br BANCO DE DADOS SGBD TABELA CONCEITOS BÁSICOS

BANCO DE DADOS CONTEÚDO INFORMÁTICA. Prof.: MARCIO HOLLWEG mhollweg@terra.com.br BANCO DE DADOS SGBD TABELA CONCEITOS BÁSICOS CONTEÚDO HARDWARE - 2 AULAS SISTEMA OPERACIONAL - 2 AULAS INFORMÁTICA Prof.: MARCIO HOLLWEG mhollweg@terra.com.br APLICATIVOS OFFICE - 3 AULAS INTERNET - 1 AULA REDE - 2 AULA SEGURANÇA - 1 AULA BANCO DE

Leia mais

Curso de Aprendizado Industrial Desenvolvedor WEB

Curso de Aprendizado Industrial Desenvolvedor WEB Curso de Aprendizado Industrial Desenvolvedor WEB Disciplina: Programação Orientada a Objetos II Professor: Cheli dos S. Mendes da Costa Modelo Cliente- Servidor Modelo de Aplicação Cliente-servidor Os

Leia mais

Programação Orientada a Objetos com PHP & MySQL Sistema Gerenciador de Banco de Dados: Introdução e configuração de bases de dados com Postgre e MySQL

Programação Orientada a Objetos com PHP & MySQL Sistema Gerenciador de Banco de Dados: Introdução e configuração de bases de dados com Postgre e MySQL Programação Orientada a Objetos com PHP & MySQL Sistema Gerenciador de Banco de Dados: Introdução e configuração de bases de dados com Postgre e MySQL Prof. MSc. Hugo Souza Iniciando nossas aulas sobre

Leia mais

DOCUMENTAÇÃO DO FRAMEWORK - versão 2.0

DOCUMENTAÇÃO DO FRAMEWORK - versão 2.0 DOCUMENTAÇÃO DO FRAMEWORK - versão 2.0 Índice 1 - Objetivo 2 - Descrição do ambiente 2.1. Tecnologias utilizadas 2.2. Estrutura de pastas 2.3. Bibliotecas já incluídas 3 - Características gerais 4 - Criando

Leia mais

Desenvolvimento de Aplicações Web

Desenvolvimento de Aplicações Web Desenvolvimento de Aplicações Web André Tavares da Silva andre.silva@udesc.br Método de Avaliação Serão realizadas duas provas teóricas e dois trabalhos práticos. MF = 0,1*E + 0,2*P 1 + 0,2*T 1 + 0,2*P

Leia mais

Implementar servidores de Web/FTP e DFS. Disciplina: Serviços de Redes Microsoft Professor: Fernando Santorsula fernando.santorsula@esamc.

Implementar servidores de Web/FTP e DFS. Disciplina: Serviços de Redes Microsoft Professor: Fernando Santorsula fernando.santorsula@esamc. Implementar servidores de Web/FTP e DFS Disciplina: Serviços de Redes Microsoft Professor: Fernando Santorsula fernando.santorsula@esamc.br Conteúdo programático Introdução ao protocolo HTTP Serviço web

Leia mais

CONCEITOS BÁSICOS DE INTERNET. Disciplina: INFORMÁTICA 1º Semestre Prof. AFONSO MADEIRA

CONCEITOS BÁSICOS DE INTERNET. Disciplina: INFORMÁTICA 1º Semestre Prof. AFONSO MADEIRA CONCEITOS BÁSICOS DE INTERNET Disciplina: INFORMÁTICA 1º Semestre Prof. AFONSO MADEIRA conceito inicial Amplo sistema de comunicação Conecta muitas redes de computadores Apresenta-se de várias formas Provê

Leia mais

Entendendo Rails. Fabio Akita Surgeworks Brazil Rails Practice Manager www.akitaonrails.com

Entendendo Rails. Fabio Akita Surgeworks Brazil Rails Practice Manager www.akitaonrails.com Entendendo Rails Fabio Akita Surgeworks Brazil Rails Practice Manager www.akitaonrails.com 37signals Criado por David Heinemeier Hansson, em 2004 Extraído do aplicativo Basecamp Feito em Ruby, em vez de

Leia mais

Manual de referência do HP Web Jetadmin Database Connector Plug-in

Manual de referência do HP Web Jetadmin Database Connector Plug-in Manual de referência do HP Web Jetadmin Database Connector Plug-in Aviso sobre direitos autorais 2004 Copyright Hewlett-Packard Development Company, L.P. A reprodução, adaptação ou tradução sem permissão

Leia mais

Criando Aplicações PHP com. Zend e Dojo. Flávio Gomes da Silva Lisboa. Novatec

Criando Aplicações PHP com. Zend e Dojo. Flávio Gomes da Silva Lisboa. Novatec Criando Aplicações PHP com Zend e Dojo Flávio Gomes da Silva Lisboa Novatec Copyright 2013 da Novatec Editora Ltda. Todos os direitos reservados e protegidos pela Lei 9.610 de 19/02/1998. É proibida a

Leia mais

DESENVOLVIMENTO EM DISPOSITIVOS MÓVEIS UTILIZANDO BANCO DE DADOS

DESENVOLVIMENTO EM DISPOSITIVOS MÓVEIS UTILIZANDO BANCO DE DADOS DESENVOLVIMENTO EM DISPOSITIVOS MÓVEIS UTILIZANDO BANCO DE DADOS Leandro Guilherme Gouvea 1, João Paulo Rodrigues 1, Wyllian Fressatti 1 1 Universidade Paranaense (Unipar) Paranavaí PR Brasil leandrog.gouvea@gmail.com,

Leia mais

Conteúdo Programático de PHP

Conteúdo Programático de PHP Conteúdo Programático de PHP 1 Por que PHP? No mercado atual existem diversas tecnologias especializadas na integração de banco de dados com a WEB, sendo o PHP a linguagem que mais se desenvolve, tendo

Leia mais

Desenvolvimento de aplicação web com framework JavaServer Faces e Hibernate

Desenvolvimento de aplicação web com framework JavaServer Faces e Hibernate Desenvolvimento de aplicação web com framework JavaServer Faces e Hibernate Tiago Peres Souza 1, Jaime Willian Dias 1,2 ¹Universidade paranaense (Unipar) Paranavaí PR Brasil tiagop_ti@hotmail.com 2 Universidade

Leia mais

Um Processo para Desenvolvimento de Aplicações Web Baseado em Serviços. Autores: Fábio Zaupa, Itana Gimenes, Don Cowan, Paulo Alencar e Carlos Lucena

Um Processo para Desenvolvimento de Aplicações Web Baseado em Serviços. Autores: Fábio Zaupa, Itana Gimenes, Don Cowan, Paulo Alencar e Carlos Lucena Um Processo para Desenvolvimento de Aplicações Web Baseado em Serviços Autores: Fábio Zaupa, Itana Gimenes, Don Cowan, Paulo Alencar e Carlos Lucena Tópicos Motivação e Objetivos LP e SOA Processo ADESE

Leia mais

Reuso. Curso de Especialização DEINF - UFMA Desenvolvimento Orientado a Objetos Prof. Geraldo Braz Junior

Reuso. Curso de Especialização DEINF - UFMA Desenvolvimento Orientado a Objetos Prof. Geraldo Braz Junior Reuso Curso de Especialização DEINF - UFMA Desenvolvimento Orientado a Objetos Prof. Geraldo Braz Junior Reutilização de Software Na maioria das áreas de engenharia de software, sistemas são desenvolvidos

Leia mais

Programação para a Web - I. José Humberto da Silva Soares

Programação para a Web - I. José Humberto da Silva Soares Programação para a Web - I José Humberto da Silva Soares Fundamentos de Internet Rede Mundial de Computadores; Fornece serviços, arquivos e informações; Os computadores que têm os recursos são chamados

Leia mais

Persistindo dados com TopLink no NetBeans

Persistindo dados com TopLink no NetBeans Persistindo dados com TopLink no NetBeans O que é TopLink? O TopLink é uma ferramenta de mapeamento objeto/relacional para Java. Ela transforma os dados tabulares de um banco de dados em um grafo de objetos

Leia mais

Mini-curso de CakePHP

Mini-curso de CakePHP Mini-curso de CakePHP Apresentação Daniel Golgher - formado em Tecnologia em Processamento de Dados e bacharel em Sistema de Informação pela UNA. Pós graduado em Engenharia de Software pela UFMG. Desenvolve

Leia mais

Programação para a Internet. Prof. M.Sc. Sílvio Bacalá Jr sbacala@gmail.com www.facom.ufu.br/~bacala

Programação para a Internet. Prof. M.Sc. Sílvio Bacalá Jr sbacala@gmail.com www.facom.ufu.br/~bacala Programação para a Internet Prof. M.Sc. Sílvio Bacalá Jr sbacala@gmail.com www.facom.ufu.br/~bacala A plataforma WEB Baseada em HTTP (RFC 2068) Protocolo simples de transferência de arquivos Sem estado

Leia mais

ASP.NET MVC em Ação. Jeffrey Palermo Ben Scheirman Jimmy Bogard. Novatec. Prefácio de Phil Haack

ASP.NET MVC em Ação. Jeffrey Palermo Ben Scheirman Jimmy Bogard. Novatec. Prefácio de Phil Haack ASP.NET MVC em Ação Jeffrey Palermo Ben Scheirman Jimmy Bogard Prefácio de Phil Haack Novatec Sumário Prólogo...11 Prefácio...13 Agradecimentos...17 Sobre este livro...20 Sobre os autores...26 Sobre a

Leia mais

COMPARANDO APLICAÇÃO WEB SERVICE REST E SOAP

COMPARANDO APLICAÇÃO WEB SERVICE REST E SOAP COMPARANDO APLICAÇÃO WEB SERVICE REST E SOAP Cleber de F. Ferreira¹, Roberto Dias Mota¹. ¹Universidade Paranaense (Unipar) Paranavaí PR Brasil cleberferreirasi@hotmail.com, motaroberto@hotmail.com Resumo.

Leia mais

Introdução. à Linguagem JAVA. Prof. Dr. Jesus, Edison O. Instituto de Matemática e Computação. Laboratório de Visão Computacional

Introdução. à Linguagem JAVA. Prof. Dr. Jesus, Edison O. Instituto de Matemática e Computação. Laboratório de Visão Computacional Introdução à Linguagem JAVA Prof. Dr. Jesus, Edison O. Instituto de Matemática e Computação Laboratório de Visão Computacional Vantagens do Java Independência de plataforma; Sintaxe semelhante às linguagens

Leia mais

Rational Quality Manager. Nome: Raphael Castellano Campus: AKXE Matrícula: 200601124831

Rational Quality Manager. Nome: Raphael Castellano Campus: AKXE Matrícula: 200601124831 Rational Quality Manager Nome: Raphael Castellano Campus: AKXE Matrícula: 200601124831 1 Informações Gerais Informações Gerais sobre o RQM http://www-01.ibm.com/software/awdtools/rqm/ Link para o RQM https://rqmtreina.mvrec.local:9443/jazz/web/console

Leia mais

7 Utilização do Mobile Social Gateway

7 Utilização do Mobile Social Gateway 7 Utilização do Mobile Social Gateway Existem três atores envolvidos na arquitetura do Mobile Social Gateway: desenvolvedor do framework MoSoGw: é o responsável pelo desenvolvimento de novas features,

Leia mais

Geração e execução de scripts de teste em aplicações web a partir de casos de uso direcionados por comportamento 64

Geração e execução de scripts de teste em aplicações web a partir de casos de uso direcionados por comportamento 64 direcionados por comportamento 64 5 Estudo de caso Neste capítulo serão apresentadas as aplicações web utilizadas na aplicação da abordagem proposta, bem como a tecnologia em que foram desenvolvidas, o

Leia mais

4 Desenvolvimento da ferramenta

4 Desenvolvimento da ferramenta direcionados por comportamento 38 4 Desenvolvimento da ferramenta Visando facilitar a tarefa de documentar requisitos funcionais e de gerar testes automáticos em uma única ferramenta para proporcionar

Leia mais

Guia de administração. BlackBerry Professional Software para Microsoft Exchange. Versão: 4.1 Service pack: 4B

Guia de administração. BlackBerry Professional Software para Microsoft Exchange. Versão: 4.1 Service pack: 4B BlackBerry Professional Software para Microsoft Exchange Versão: 4.1 Service pack: 4B SWD-313211-0911044452-012 Conteúdo 1 Gerenciando contas de usuários... 7 Adicionar uma conta de usuário... 7 Adicionar

Leia mais

Este livro é dedicado a minha esposa Edna e a todos os desenvolvedores que fizeram do software livre um meio profissional levado a sério.

Este livro é dedicado a minha esposa Edna e a todos os desenvolvedores que fizeram do software livre um meio profissional levado a sério. EDSON GONÇALVES Este livro é dedicado a minha esposa Edna e a todos os desenvolvedores que fizeram do software livre um meio profissional levado a sério. AGRADECIMENTOS Primeiramente gostaria de agradecer

Leia mais

PRODUTO 1 (CONSTRUÇÃO DE PORTAL WEB)

PRODUTO 1 (CONSTRUÇÃO DE PORTAL WEB) RELATÓRIO DE ENTREGA DO PRODUTO 1 (CONSTRUÇÃO DE PORTAL WEB) PARA A ELABORAÇÃO DOS PLANOS MUNICIPAIS DE GESTÃO INTEGRADA DE RESÍDUOS SÓLIDOS PMGIRS PARA OS MUNICÍPIOS DE NOVO HORIZONTE, JUPIÁ, GALVÃO,

Leia mais

Camada de Aplicação. DNS Domain Name System. Redes de Computadores Prof. Leandro C. Pykosz

Camada de Aplicação. DNS Domain Name System. Redes de Computadores Prof. Leandro C. Pykosz Camada de Aplicação Redes de Computadores Prof. Leandro C. Pykosz Camada de Aplicação A camada de aplicação fornece os serviços "reais" de rede para os usuários. Os níveis abaixo da aplicação fornecem

Leia mais

Capítulo 04: Persistência com SQLite

Capítulo 04: Persistência com SQLite Capítulo 04: Persistência com SQLite Instrutor Programador desde 2000 Aluno de doutorado Mestre em informática pelo ICOMP/UFAM Especialista em aplicações WEB FUCAPI marcio.palheta@gmail.com sites.google.com/site/marcio

Leia mais

PHP() é uma linguagem de integração de servidor que permite a criação de paginas dinâmicas. Como todas

PHP() é uma linguagem de integração de servidor que permite a criação de paginas dinâmicas. Como todas O que é PHP? Acrônimo de PHP: Hipertext Language PostProcessor Inicialmente escrita para o desenvolvimento de aplicações Web Facilidade para iniciantes e recursos poderosos para programadores profissionais

Leia mais

Programação WEB Introdução

Programação WEB Introdução Programação WEB Introdução Rafael Vieira Coelho IFRS Instituto Federal de Educação, Ciência e Tecnologia do Rio Grande do Sul Campus Farroupilha rafael.coelho@farroupilha.ifrs.edu.br Roteiro 1) Conceitos

Leia mais

Struts 2 : Projeto e Programação Editora: Ciência Moderna Autor: Antunes Budi Kurniawan Número de páginas: 600

Struts 2 : Projeto e Programação Editora: Ciência Moderna Autor: Antunes Budi Kurniawan Número de páginas: 600 Objetivo Com enfoque totalmente prático permite que programadores Java possam ampliar seus conhecimentos no mundo Web na criação de sistemas profissionais. Utilizar os modelos de programação com Servlets,

Leia mais

1. Introdução. 2. Funcionamento básico dos componentes do Neteye

1. Introdução. 2. Funcionamento básico dos componentes do Neteye 1. Introdução Esse guia foi criado com o propósito de ajudar na instalação do Neteye. Para ajuda na utilização do Software, solicitamos que consulte os manuais da Console [http://www.neteye.com.br/help/doku.php?id=ajuda]

Leia mais

4 O Workflow e a Máquina de Regras

4 O Workflow e a Máquina de Regras 4 O Workflow e a Máquina de Regras O objetivo do workflow e da máquina de regras é definir um conjunto de passos e regras configuráveis. Ao longo de sua execução, um usuário consegue simplificar o seu

Leia mais

Programação Orientada a Objetos com PHP & MySQL Cookies e Sessões. Prof. MSc. Hugo Souza

Programação Orientada a Objetos com PHP & MySQL Cookies e Sessões. Prof. MSc. Hugo Souza Programação Orientada a Objetos com PHP & MySQL Cookies e Sessões Prof. MSc. Hugo Souza Se você precisar manter informações sobre seus usuários enquanto eles navegam pelo seu site, ou até quando eles saem

Leia mais

O melhor do PHP. Por que PHP? CAPÍTULO 1. Uma Pequena História do PHP

O melhor do PHP. Por que PHP? CAPÍTULO 1. Uma Pequena História do PHP CAPÍTULO 1 O melhor do PHP Este livro levou bastante tempo para ser feito. Venho usando agora o PHP por muitos anos e o meu amor por ele aumenta cada vez mais por sua abordagem simplista, sua flexibilidade

Leia mais

AULA 1 PHP O QUE É APACHE FRIENDS

AULA 1 PHP O QUE É APACHE FRIENDS O QUE É PHP Se você já programa PHP, aconselho que pule para o capítulo 7 desse livro. Pois até esse capitulo iremos abordar algoritmos em PHP até a construção de uma classe com seus métodos e atributos

Leia mais

SISTEMA GERENCIAL TRATORPLAN

SISTEMA GERENCIAL TRATORPLAN SISTEMA GERENCIAL TRATORPLAN SIGET Fabrício Pereira Santana¹, Jaime William Dias¹, ², Ricardo de Melo Germano¹ ¹Universidade Paranaense (Unipar) Paranavaí PR Brasil fabricioblack@gmail.com germano@unipar.br

Leia mais

SISTEMA DE WORKFLOW PARA MODELAGEM E EXECUÇÃO DE PROCESSOS DE SOFTWARE. Aluno: Roberto Reinert Orientador: Everaldo A. Grahl

SISTEMA DE WORKFLOW PARA MODELAGEM E EXECUÇÃO DE PROCESSOS DE SOFTWARE. Aluno: Roberto Reinert Orientador: Everaldo A. Grahl SISTEMA DE WORKFLOW PARA MODELAGEM E EXECUÇÃO DE PROCESSOS DE SOFTWARE Aluno: Roberto Reinert Orientador: Everaldo A. Grahl Roteiro de apresentação Introdução Objetivos Fundamentação Teórica Workflow Processo

Leia mais

1 Criar uma entity a partir de uma web application que usa a Framework JavaServer Faces (JSF)

1 Criar uma entity a partir de uma web application que usa a Framework JavaServer Faces (JSF) Sessão Prática II JPA entities e unidades de persistência 1 Criar uma entity a partir de uma web application que usa a Framework JavaServer Faces (JSF) a) Criar um Web Application (JPAsecond) como anteriormente:

Leia mais

milenaresende@fimes.edu.br

milenaresende@fimes.edu.br Fundação Integrada Municipal de Ensino Superior Sistemas de Informação A Internet, Intranets e Extranets milenaresende@fimes.edu.br Uso e funcionamento da Internet Os dados da pesquisa de TIC reforçam

Leia mais

V1.1 SITE EM UM SITE 11/2015 MINUTOS APRENDA A PROGRAMAR IMAGINE FAZER O SEU PRIMEIRO PROGRAMA EM 180 SEGUNDOS WWW.DESAFIO3MINUTOS.COM.

V1.1 SITE EM UM SITE 11/2015 MINUTOS APRENDA A PROGRAMAR IMAGINE FAZER O SEU PRIMEIRO PROGRAMA EM 180 SEGUNDOS WWW.DESAFIO3MINUTOS.COM. 11/2015 UM SITE SITE EM EM UM 3 APRENDA A PROGRAMAR IMAGINE FAZER O SEU PRIMEIRO PROGRAMA EM 180 SEGUNDOS MINUTOS V1.1 WWW.DESAFIO3MINUTOS.COM.BR ELIELBARONE RUBY ON RAILS O que é? Ruby on Rails é um framework,

Leia mais

World Wide Web e Aplicações

World Wide Web e Aplicações World Wide Web e Aplicações Módulo H O que é a WWW Permite a criação, manipulação e recuperação de informações Padrão de fato para navegação, publicação de informações e execução de transações na Internet

Leia mais

SCE-557. Técnicas de Programação para WEB. Rodrigo Fernandes de Mello http://www.icmc.usp.br/~mello mello@icmc.usp.br

SCE-557. Técnicas de Programação para WEB. Rodrigo Fernandes de Mello http://www.icmc.usp.br/~mello mello@icmc.usp.br SCE-557 Técnicas de Programação para WEB Rodrigo Fernandes de Mello http://www.icmc.usp.br/~mello mello@icmc.usp.br 1 Cronograma Fundamentos sobre servidores e clientes Linguagens Server e Client side

Leia mais

O que é um framework?

O que é um framework? O que é um framework? Um framework, ou arcabouço, em desenvolvimento de software, é uma abstração que une códigos comuns entre vários projetos de software provendo uma funcionalidade genérica. (Wikipedia)

Leia mais

Introdução à Informática

Introdução à Informática Introdução à Informática Aula 23 http://www.ic.uff.br/~bianca/introinfo/ Aula 23-07/12/2007 1 Histórico da Internet Início dos anos 60 Um professor do MIT (J.C.R. Licklider) propõe a idéia de uma Rede

Leia mais

MAPEAMENTO OBJETO RELACIONAL: UM ESTUDO DE CASO

MAPEAMENTO OBJETO RELACIONAL: UM ESTUDO DE CASO MAPEAMENTO OBJETO RELACIONAL: UM ESTUDO DE CASO UTILIZANDO O HIBERNATE Rafael Laurino GUERRA, Dra. Luciana Aparecida Martinez ZAINA Faculdade de Tecnologia de Indaiatuba FATEC-ID 1 RESUMO Este artigo apresenta

Leia mais

Manual de Instalação. Instalação via apt-get. SIGA-ADM versão 12.02

Manual de Instalação. Instalação via apt-get. SIGA-ADM versão 12.02 Manual de Instalação Instalação via apt-get SIGA-ADM versão 12.02 Índice de capítulos 1 - Pré-requisitos para instalação..................................................... 05 2 - Instalando o SIGA-ADM..............................................................

Leia mais

Padrões de Interação com o Usuário

Padrões de Interação com o Usuário Padrões de Interação com o Usuário Granularidade dos Padrões Padrões estão relacionados a 3 elementos: Contexto ocorre Problema resolve Solução Problemas e Soluções podem ser observados em diferentes níveis

Leia mais

Prevayler. Perola. André Luís Sales de Moraes Juliana Keiko Yamaguchi Tatiana Yuka Takaki

Prevayler. Perola. André Luís Sales de Moraes Juliana Keiko Yamaguchi Tatiana Yuka Takaki Prevayler Perola André Luís Sales de Moraes Juliana Keiko Yamaguchi Tatiana Yuka Takaki Prevayler Prevayler é a implementação em Java do conceito de Prevalência. É um framework que prega uma JVM invulnerável

Leia mais

GERADOR DE CÓDIGO JSP BASEADO EM PROJETO DE SGBD. Acadêmico: Maicon Klug Orientadora: Joyce Martins

GERADOR DE CÓDIGO JSP BASEADO EM PROJETO DE SGBD. Acadêmico: Maicon Klug Orientadora: Joyce Martins GERADOR DE CÓDIGO JSP BASEADO EM PROJETO DE SGBD Acadêmico: Maicon Klug Orientadora: Joyce Martins Roteiro Introdução Objetivos do trabalho Fundamentação teórica Desenvolvimento do trabalho Conclusão Extensões

Leia mais

Tópicos de Ambiente Web Conceitos Fundamentais Redes de Dados

Tópicos de Ambiente Web Conceitos Fundamentais Redes de Dados Tópicos de Ambiente Web Conceitos Fundamentais Redes de Dados Professora: Sheila Cáceres Computador Dispositivo eletrônico usado para processar guardar e tornar acessível informação. Tópicos de Ambiente

Leia mais

CURSO DESENVOLVEDOR JAVA WEB E FLEX Setembro de 2010 à Janeiro de 2011

CURSO DESENVOLVEDOR JAVA WEB E FLEX Setembro de 2010 à Janeiro de 2011 CURSO DESENVOLVEDOR JAVA WEB E FLEX Setembro de 2010 à Janeiro de 2011 O curso foi especialmente planejado para os profissionais que desejam trabalhar com desenvolvimento de sistemas seguindo o paradigma

Leia mais

INDICE 3.APLICAÇÕES QUE PODEM SER DESENVOLVIDAS COM O USO DO SAXES

INDICE 3.APLICAÇÕES QUE PODEM SER DESENVOLVIDAS COM O USO DO SAXES w w w. i d e a l o g i c. c o m. b r INDICE 1.APRESENTAÇÃO 2.ESPECIFICAÇÃO DOS RECURSOS DO SOFTWARE SAXES 2.1. Funcionalidades comuns a outras ferramentas similares 2.2. Funcionalidades próprias do software

Leia mais

Funcionalidades da ferramenta zabbix

Funcionalidades da ferramenta zabbix Funcionalidades da ferramenta zabbix Jordan S. Romano¹, Eduardo M. Monks¹ ¹Curso Superior de Tecnologia em Redes de Computadores FACULDADE DE TECNOLOGIA SENAC PELOTAS (FATEC PELOTAS) Rua Gonçalves Chaves,

Leia mais

Instalação do IBM SPSS Modeler Server Adapter

Instalação do IBM SPSS Modeler Server Adapter Instalação do IBM SPSS Modeler Server Adapter Índice Instalação do IBM SPSS Modeler Server Adapter............... 1 Sobre a Instalação do IBM SPSS Modeler Server Adapter................ 1 Requisitos de

Leia mais