UNIVERSIDADE COMUNITÁRIA DA REGIÃO DE CHAPECÓ Curso de Graduação em Sistemas de Informação André Luiz Dallacorte PROTÓTIPO DE REDE SOCIAL VOLTADA PARA A CONSCIENTIZAÇÃO AMBIENTAL BASEADA NOS PRINCÍPIOS DA WEB 2.0 Chapecó – SC, Julho de 2010 ANDRÉ LUIZ DALLACORTE PROTÓTIPO DE REDE SOCIAL VOLTADA PARA A CONSCIENTIZAÇÃO AMBIENTAL BASEADA NOS PRINCÍPIOS DA WEB 2.0 Monografia II apresentada à Unochapecó, como parte dos requisitos para obtenção do grau de Bacharel em Sistemas de Informação. Orientador: José Carlos Toniazzo Chapecó – SC, Julho de 2010 ANDRÉ LUIZ DALLACORTE PROTÓTIPO DE REDE SOCIAL VOLTADA PARA A CONSCIENTIZAÇÃO AMBIENTAL BASEADA NOS PRINCÍPIOS DA WEB 2.0 Esta Monografia foi julgada para obtenção do título de Bacharel em Sistemas de Informação, no Curso de Graduação em Sistemas de Informação da Universidade Comunitária da Região de Chapecó – UNOCHAPECÓ – Campus Chapecó, com a seguinte Banca Examinadora: _______________________________________ Prof. José Carlos Toniazzo Professor Orientador _______________________________________ Prof. Jorge Antonio Di Domenico _______________________________________ Prof. Sediane Carmem Lunardi Chapecó – SC, Julho de 2010 AGRADECIMENTOS Agradeço primeiramente aos meus pais, pelo apoio e incentivo durante todo o tempo, além da ajuda financeira disponibilizada no decorrer do curso. Também agradeço a meu orientador, professor José Carlos Toniazzo, pela orientação clara e objetiva permitindo a realização deste trabalho. Finalmente agradeço aos meus colegas e amigos, os quais fizeram grande diferença na minha vida, e que nunca serão esquecidos. “Se eu soubesse que o mundo acabaria amanhã, ainda hoje plantaria uma árvore.” Martin Luther King RESUMO Objetivando oferecer um espaço para disponibilizar informações relacionadas ao meio ambiente, este trabalho apresenta o desenvolvimento de um protótipo de rede social voltada para a conscientização ambiental com base nos princípios da Web 2.0. Essa rede se mostra de grande valia, visto que preservar o meio ambiente é um tema que vêm apresentando expressiva relevância. Cada vez mais pessoas buscam maneiras de defender esta causa. Apesar dos esforços nesse sentido, as pessoas ainda sentem a falta de um espaço onde possam opinar e participar das discussões ambientais. Com base na conceituação de redes sociais, bem como um estudo das mesmas, busca-se expor os principais fatores que garantem uma boa receptividade dos usuários para a rede ambiental. Para isso, são apresentadas as tecnologias da Web 2.0, as quais estão cada vez mais completas e prezando por agilidade no desenvolvimento. Dessa forma, utilizá-las no desenvolvimento de uma nova rede social se torna de grande relevância. Para isso, foi estudado o Framework Ruby on Rails, uma tecnologia em ascensão e que atende a todos os requisitos para desenvolver para a Web 2.0. Ao final do trabalho apresenta-se a rede desenvolvida, bem como a repercussão inicial que a mesma atingiu ao ser disponibilizada no domínio www.cigno.com.br. Palavras-chave: Ruby on Rails, Redes Sociais, Meio Ambiente. ABSTRACT Aiming to offer a space to provide information related to the environment, this work presents the development of a social network prototype focused on environmental awareness based on the principles of Web 2.0. This network proves valuable, as preserving the environment is a theme that have been having significant relevance. More and more people seek ways to defend this cause. Despite such efforts, people still feel the lack of a space where they can provide feedback and participate in environmental discussions. Based on the concept of social networks, and a study of them, seeks to explain the key factors that guarantee a good reception from users on the network environment. For this, are presented the Web 2.0 technologies, which are more complete and keep looking for agility in development. Thus, use them in developing a new social network becomes highly relevant. For this, was studied the framework Ruby on Rails, a technology and rising that meets all the requirements for developing for the Web 2.0. At the end of the work, are present the network developed and the initial impact that it has reached to be available in the domain www.cigno.com.br. Keywords: Ruby on Rails, Social Networks, Environmental. LISTA DE FIGURAS FIGURA 1: Seqüência de Eventos para Atender a Solicitação do Usuário. ............................ 27 FIGURA 2: Estrutura dos Documentos. ................................................................................... 28 FIGURA 3: Arquitetura de Arquivos Servlets e JSP. .............................................................. 32 FIGURA 4: Estrutura de Diretórios de uma Aplicação Rails .................................................. 46 FIGURA 5: Criando uma Aplicação Básica em Rails. ............................................................ 48 FIGURA 6: Criando uma Estrutura Padrão de um Novo Projeto em Rails. ............................ 49 FIGURA 7: Arquivo de Configuração do Banco de Dados. .................................................... 49 FIGURA 8: Criando o Banco de Dados do Projeto. ................................................................ 50 FIGURA 9: Criando Modelos, Visões e Controladores em uma Única Operação. ................. 50 FIGURA 10: Comando Rake para Executar a Migração do Banco de Dados. ........................ 51 FIGURA 11: Iniciando o Servidor WebRick do Rails. ............................................................ 52 FIGURA 12: Tela para Listagem de Carros. ............................................................................ 52 FIGURA 13: Tela para Inclusão de Carros. ............................................................................. 53 FIGURA 14: Tela para Exibição de Carros.............................................................................. 53 FIGURA 15: Tela para Edição de Carros. ................................................................................ 54 FIGURA 16: Tela para Destruição de Carros. ......................................................................... 54 FIGURA 17: Wireframe do protótipo. ..................................................................................... 69 FIGURA 18: Estrutura do projeto. ........................................................................................... 69 FIGURA 19: Tela da página inicial do protótipo. .................................................................... 75 FIGURA 20: Tela da página inicial do usuário logado. ........................................................... 76 FIGURA 21: Tela da página de ações realizadas pelo usuário logado. ................................... 77 FIGURA 22: Tela da página do perfil do usuário visitado. ..................................................... 78 FIGURA 23: Tela da página de mensagens do usuário logado. ............................................... 78 FIGURA 24: Tela da página do perfil de empresa. .................................................................. 79 FIGURA 25: Tela da página de Amigos seguidos pelo usuário logado. .................................. 79 FIGURA 26: Tela da página de empresas seguidas pelo usuário logado. ................................ 80 FIGURA 27: Tela da página de eventos com temática ambiental. .......................................... 80 FIGURA 28: Tela da página de álbuns de fotos do usuário logado. ........................................ 81 FIGURA 29: Tela da página de fotos do álbum do usuário logado. ........................................ 81 FIGURA 30: Tela da página de vídeos do usuário logado. ...................................................... 82 FIGURA 31: Tela da página de Rankings. ............................................................................... 83 FIGURA 32: Tela da página do TreeRank de usuários. ........................................................... 84 FIGURA 33: Tela da página do TreeRank de empresas. ......................................................... 84 FIGURA 34: Relatório Gráfico de sessões do domínio cigno.com.br. .................................... 85 FIGURA 35: Relatório Gráfico de cliques do domínio cigno.com.br...................................... 86 FIGURA 36: Resumo da média de acessos do protótipo. ........................................................ 87 FIGURA 37: Comentário realizado na rede social Twitter dia 05/06/2010. ............................ 87 FIGURA 38: Comentário realizado na rede social Twitter dia 10/06/2010. ............................ 88 FIGURA 39: Comentário realizado na rede social Twitter dia 15/06/2010. ............................ 88 FIGURA 40: Post realizado pelo Blog3 falando sobre o Cigno............................................... 88 LISTA DE QUADROS Quadro 1: Características da Linguagem Python. .................................................................... 34 Quadro 2: Principais Características das Tecnologias Apresentadas. ...................................... 36 Quadro 3: Aplicando o Método upcase() em uma String. ........................................................ 39 Quadro 4: Classe em Ruby sem uso de Atalhos. ...................................................................... 39 Quadro 5: Classe em Ruby com uso dos Atalhos. .................................................................... 40 Quadro 6: Descrição da Função de Cada Pasta da Raiz do Projeto Rails ................................ 46 Quadro 7: Estrutura Criada a Partir do Script de Scaffolding. ................................................. 51 Quadro 8: Atrações das Redes Sociais. .................................................................................... 62 Quadro 9: Fases do projeto ....................................................................................................... 70 Quadro 10: Principais plugins utilizados no projeto ................................................................ 71 Quadro 11: Função para gerar o gráfico do Ranking de empresas. .......................................... 72 Quadro 12: Código para exibir na tela o gráfico do Ranking de empresas. ............................. 72 Quadro 13: Código do Will_Paginate para o Modelo Post. ..................................................... 73 Quadro 14: Código para o Controlador do método Post receber os dados paginados. ............ 73 Quadro 15: Código para exibir os links da paginação na Visão do método Post. .................... 73 Quadro 16: Tabela de utilização do protótipo. ......................................................................... 87 LISTA DE SIGLAS E ABREVIATURAS AJAX Asynchronous JavaScript+XML APAS Área de Proteção Ambiental API Application Programming Interface CGI Common Gateway Interface CONAMA Conselho Nacional do Meio Ambiente CRUD Create, Retrieve, Update, Delete CSS Cascading Style Sheet DER Diagrama Entidade Relacionamento DOM Document Object Model DRY Don’t Repeat Yourself EIA/RIMA Estudo e Relatório de Impacto Ambiental FTP File Transfer Protocol GPL General Public License HTML Hypertext Markup Language HTTP HiperText Transfer Protocol IBAMA Instituto Brasileiro do Meio Ambiente e dos Recursos Naturais Renováveis JSP Java Server Pages JVM Java Virtual Machine MVC Model, View, Controller O.O. Orientação a Objetos OGM Organismos Geneticamente Modificados ONG Organização Não Governamental PHP Hypertext Preprocessor RIA Rich Internet Application ROR Ruby On Rails SPHAN Serviço de Patrimônio Histórico e Artístico Nacional TCP/IP Transmission Control Protocol / Internet Protocol TI Tecnologia da Informação W3C World Wide Web Consortium XHTML eXtensible Hypertext Markup Language XML eXtensible Markup Language SUMÁRIO 1 INTRODUÇÃO ..................................................................................................................... 15 1.1 ORGANIZAÇÃO DO TRABALHO............................................................................. 15 2 MEIO AMBIENTE E LEGISLAÇÃO AMBIENTAL ......................................................... 17 2.1 CONCEITO DE MEIO AMBIENTE ............................................................................ 17 2.2 PRESERVAÇÃO AMBIENTAL .................................................................................. 18 2.3 LEGISLAÇÃO AMBIENTAL ...................................................................................... 18 2.3.1 As 17 Leis Ambientais Mais Importantes da Legislação Brasileira ...................... 19 2.4 CONSIDERAÇÕES FINAIS ........................................................................................ 24 3 TECNOLOGIAS NA WEB 2.0............................................................................................. 26 3.1 AJAX ............................................................................................................................. 26 3.1.1 Web Standards e CSS............................................................................................. 27 3.1.2 DOM (Document Object Model) ........................................................................... 28 3.1.3 XML (Extensible Markup Language) .................................................................... 29 3.1.4 XMLHttpRequest ................................................................................................... 29 3.1.5 JavaScript ............................................................................................................... 29 3.2 PHP ................................................................................................................................ 30 3.3 JAVA ............................................................................................................................. 31 3.3.1 Java para a Web ..................................................................................................... 32 3.4 PYTHON ....................................................................................................................... 33 3.5 RUBY ON RAILS ......................................................................................................... 34 3.6 ADOBE FLEX ............................................................................................................... 35 3.7 CARACTERÍSTICAS DAS TECNOLOGIAS APRESENTADAS ............................. 35 4 O FRAMEWORK RUBY ON RAILS .................................................................................. 37 4.1 O QUE É RUBY? .......................................................................................................... 37 4.2 CARACTERÍSTICAS DO RUBY ................................................................................ 38 4.3 ENTENDENDO O RUBY ............................................................................................ 38 4.3.1 Totalmente Orientado a Objetos ............................................................................ 39 4.3.2 Atalhos de código ................................................................................................... 39 4.3.3 Escopo das Variáveis ............................................................................................. 40 4.3.4 Tipos de acesso ...................................................................................................... 41 4.3.5 Módulos ................................................................................................................. 41 4.3.6 Mixins .................................................................................................................... 41 4.4 INTRODUÇÃO AO FRAMEWORK RAILS ............................................................... 42 4.4.1 O Padrão MVC ....................................................................................................... 43 4.4.2 Por Dentro do Rails ................................................................................................ 44 4.4.3 Estrutura de diretórios ............................................................................................ 45 4.4.4 Padrão de Nomenclatura ........................................................................................ 47 4.4.5 Scripts do Ruby on Rails ........................................................................................ 47 4.5 DESENVOLVENDO APLICAÇÕES COM RAILS .................................................... 48 5 REDES SOCIAIS NA WEB ................................................................................................. 56 5.1 REDES SOCIAIS ATUAIS........................................................................................... 57 5.1.1 Orkut ...................................................................................................................... 57 5.1.2 Facebook ................................................................................................................ 58 5.1.3 Twitter .................................................................................................................... 59 5.1.4 YouTube................................................................................................................. 60 5.1.5 Ning ........................................................................................................................ 61 5.1.6 Outras redes sociais ................................................................................................ 61 5.2 FATORES PREPONDERANTES NA DISSEMINAÇÃO DE REDES SOCIAIS ...... 62 6 PROTÓTIPO DE REDE SOCIAL PARA A CONSCIENTIZAÇÃO AMBIENTAL ......... 64 6.1 REQUISITOS FUNCIONAIS ....................................................................................... 64 6.2 REQUISITOS NÃO FUNCIONAIS ............................................................................. 65 6.3 FATORES NECESSÁRIOS PARA O SUCESSO DA REDE ..................................... 66 6.4 DESENVOLVIMENTO DO PROJETO ....................................................................... 67 6.4.1 Ferramentas utilizadas ............................................................................................ 67 6.4.2 Desenvolvimento da Rede Social........................................................................... 68 6.4.3 Hospedagem do protótipo na Web ......................................................................... 74 6.4.4 Utilização da Rede Social ...................................................................................... 74 6.4.5 Sistema de pontuação pela utilização da rede ........................................................ 82 6.4.6 Análise de Utilização da Rede Social .................................................................... 85 7 CONCLUSÃO ....................................................................................................................... 90 7.1 TRABALHOS FUTUROS ............................................................................................ 90 8 REFERÊNCIAS .................................................................................................................... 92 9 ANEXO A: INSTALAÇÃO DO RUBY ON RAILS NO UBUNTU ................................... 96 10 ANEXO B: DIAGRAMA ENTIDADE RELACIONAMENTO ........................................ 97 11 ANEXO C: MODELO, VISÃO E CONTROLADOR ....................................................... 98 15 1 INTRODUÇÃO Atualmente, um dos principais problemas que o mundo enfrenta é a falta de um espaço para que as possam participar e contribuir nas discussões ambientais. Com base nisso, o presente trabalho tem como tema central o desenvolvimento de uma rede social verde. O objetivo é permitir que os usuários da rede compartilhem com todos o que estão fazendo para a preservação ambiental. É uma maneira de aliar a Tecnologia da Informação (TI) a atitudes em prol da conscientização sobre a preservação do planeta. Através de uma rede social, usuários e empresas podem trabalhar em conjunto na preservação ambiental, com vantagens para ambos os lados. Nesse sentido, uma rede social com fins de preservação garante que todos estejam engajados na mesma causa, que é manter o planeta vivo. Empresas e organizações poderão usar a rede social proposta para divulgarem de forma transparente o que fazem pelo bem do planeta. Desde uma pequena atitude, como separar o lixo reciclável, até grandes ações, como tratamento de água e reflorestamento. Além disso, podem permitir que os usuários opinem e colaborem em atividades pró meio ambiente. Aplicar a Tecnologia da Informação para contribuir com a preservação ambiental possibilita mostrar que a TI pode oferecer soluções a favor da natureza, ao mesmo tempo em que facilita a comunicação entre pessoas engajadas na mesma causa ao redor do mundo. Com base nestas informações e aproveitando as tendências da Web 2.0, foi possível criar uma rede social com um fim específico, ou seja, a preservação ambiental. Assim, além de trazer informações, dicas e sugestões sobre o meio ambiente, ela oferece recursos que despertem o interesse da comunidade científica que defende a preservação do planeta. 1.1 ORGANIZAÇÃO DO TRABALHO O presente trabalho está dividido em oito capítulos, sendo o primeiro a introdução e a forma como ele está organizado. 16 O capítulo dois fala a respeito do tema meio ambiente. Nele são apresentados os problemas que o meio ambiente enfrenta atualmente e as políticas ambientais que regem o país. O terceiro capítulo apresenta as características das tecnologias emergentes na Web 2.0, tecnologias estas que propiciam o desenvolvimento de uma rede social. O capítulo quatro trata especificadamente do framework Ruby on Rails, apresentando suas funcionalidades e forma de utilização. No capítulo cinco apresenta-se um estudo sobre as redes sociais atuais, analisando os fatores que influenciam os usuários às utilizarem, bem como suas principais funcionalidades. O sexto capítulo descreve como o protótipo foi desenvolvido, bem como os principais requisitos e atrativos que a rede irá oferecer. Além disso, também são apresentados os resultados de utilização e a repercussão da rede social proposta. O capítulo sete apresenta as considerações finais do trabalho, além de propostas para trabalhos futuros. Por fim, no capítulo oito são listadas todas as referências bibliográficas utilizadas para o desenvolvimento do projeto. 17 2 MEIO AMBIENTE E LEGISLAÇÃO AMBIENTAL No final do século XVIII, após o início da Revolução Industrial, houve um aumento significativo das atividades do Homem sobre o meio ambiente. Com a necessidade de energia e espaço para as fábricas, o ser humano começou a modificar o planeta para atender as suas necessidades. Daquela época até os dias atuais, pode-se afirmar que a ação exploratória do homem sobre o meio ambiente só vem aumentando. A partir deste período, o ser humano conseguiu perceber que os recursos naturais são finitos, e que devemos tomar atitudes para proteger o nosso hábitat natural. Foram feitas diversas conferências e criados protocolos para a proteção da natureza. Destaque para a conferência “Rio 92”, realizada em 1992 no Rio de Janeiro, que reuniu diversos países do mundo para discutir assuntos como o tema meio ambiente. Antes de entrar na parte de legislação ambiental, será destacado no item a seguir um breve conceito de meio ambiente. 2.1 CONCEITO DE MEIO AMBIENTE Neste ponto, pode-se destacar o esclarecido conceito escrito por Milaré (2000): A palavra ambiente indica o lugar, o sítio, o recinto, o espaço que envolve os seres vivos ou as coisas. Redundante, portanto, a expressão meio ambiente, uma vez que ambiente já inclui a noção de meio. De qualquer forma, trata-se de expressão consagrada na Língua Portuguesa, pacificamente utilizada pela doutrina, lei e jurisprudência de nosso país, que, amiúde, falam em meio ambiente, em vez de ambiente apenas (MILARÉ, 2000, p. 63-4). Então, neste sentido, meio ambiente compreende uma grande variedade de elementos, tanto naturais quanto os criados pelo homem, conforme foi afirmado por Silva (1997): O meio ambiente é, assim, a interação do conjunto dos elementos naturais, artificiais e culturais, que propiciem o desenvolvimento equilibrado da vida em todas as suas formas. A integração busca assumir uma concepção unitária do ambiente, compreensiva dos recursos naturais e culturais (SILVA, 1997, p.02). Estabelecida assim uma noção básica de meio ambiente, pode ser afirmado que a preservação ambiental não trata só dos aspectos relativos ao meio ambiente natural, porque 18 abriga também o artificial, e, sobretudo, o meio ambiente cultural, que se entende como as diversas formas de expressão de um povo, elo formador e determinante dos sentimentos da nação e cidadania. Depois desta breve apresentação sobre meio ambiente, será dada continuidade ao presente capítulo, falando mais especificadamente sobre legislação e preservação ambiental. 2.2 PRESERVAÇÃO AMBIENTAL Nos últimos anos, notou-se uma mudança significativa nas pessoas em sua maneira de pensar sobre o meio ambiente. Houve uma maior conscientização em relação aos problemas ambientais. Isso se deve ao fato de toda a população mundial ter os mesmos problemas, como o aquecimento global, que ocorre devido ao desmatamento e poluição, o problema na camada de ozônio, os resíduos contaminando águas e a desertificação do solo. Há necessidade de uma nova ética de consumo, de uma nova ética ambientalista. Pois estes problemas recém citados colocam a vida da humanidade em risco. E quem está por trás de tudo isso são as próprias pessoas. Cada vez é consumido mais, cada vez é gerado mais lixo, cada vez é poluído mais e isso precisa mudar. Já foram criadas diversas normas e feitas várias conferências em prol da proteção ambiental, porém não estão sendo seguidas. Para que seja possível vencer todos estes problemas ambientais, devemos seguir à risca nossa legislação ambiental, que será discutida no tópico a seguir. 2.3 LEGISLAÇÃO AMBIENTAL O Brasil possui e é reconhecido mundialmente por ter uma legislação ambiental bastante avançada. Porém ela não está sendo totalmente aplicada na prática. Com isso, não temos garantida uma proteção eficaz ao patrimônio natural e também um combate eficiente à poluição. Segundo Carvalho (2005), a ausência de apoio à inclusão do direito humano ao meio ambiente levou a comunidade ambientalista a: 19 Desviar a atenção dessa ampla abordagem para identificar direitos humanos cujo gozo poderia ser considerado pré-requisito à proteção ambiental, dando-se ênfase aos direitos à informação, à participação e aos recursos jurídicos para reparação dos danos ambientais (CARVALHO, 2005). Na opinião de Birnie e Boyle (1992), o reconhecimento do direito ao ambiente poderia: Resultar na criação de uma hierarquia, na qual se daria à humanidade a posição de superioridade e importância, acima dos demais membros da comunidade natural. Parcela da comunidade ecologista teme que os objetivos e padrões formulados fossem centrados exclusivamente no ser humano, como por exemplo, na sobrevivência da humanidade, na elevação do padrão de vida humano e na intensificação do uso dos recursos naturais para atender à crescente demanda dos consumidores. Dessa forma, o Estado do ambiente seria determinado pelas necessidades da humanidade, sem considerar as de outras espécies (BIRNIE; BOYLE, 1992). Tendo em vista que o presente trabalho visa propor uma ferramenta de conscientização ambiental, é fundamental conhecer quais as políticas ambientais que regem o país. Para garantir a preservação ambiental brasileira, é necessário respeitar as dezessete leis ambientais mais importantes da nossa legislação. 2.3.1 As 17 Leis Ambientais Mais Importantes da Legislação Brasileira A seguir, as dezessete leis serão mais bem analisadas, de acordo com Milaré (2001). • Lei da Ação Civil Pública - número 7.347 de 24/07/1985. Lei de interesses difusos, “trata da ação civil pública de responsabilidades por danos causados ao meio ambiente, ao consumidor e ao patrimônio artístico, turístico ou paisagístico” (MILARÉ, 2001). • Lei dos Agrotóxicos - número 7.802 de 10/07/1989. A lei regulamenta desde “a pesquisa e fabricação dos agrotóxicos até sua comercialização, aplicação, controle, fiscalização e também o destino da embalagem” (MILARÉ, 2001). Exigências impostas: o Agrotóxicos ao consumidor. o Registro de produtos nos Ministérios da Agricultura e da Saúde. 20 o Registro no Instituto Brasileiro do Meio Ambiente e dos Recursos Naturais Renováveis – IBAMA o O descumprimento desta lei pode acarretar multas e reclusão. • Lei da Área de Proteção Ambiental - número 6.902 de 27/04/1981. Lei que criou as “Estações Ecológicas”, áreas representativas de ecossistemas brasileiros, sendo que 90 % delas devem permanecer intocadas e 10 % podem sofrer alterações para fins científicos. Foram criadas também as “Áreas de Proteção Ambiental” ou APAS, áreas que podem conter propriedades privadas e onde o poder público limita as atividades econômicas para fins de proteção ambiental (MILARÉ, 2001). • Lei das Atividades Nucleares - número 6.453 de 17/10/1977. Dispõe sobre a responsabilidade civil por danos nucleares e a responsabilidade criminal por atos relacionados com as atividades nucleares. Determina que se haja um acidente nuclear, a instituição autorizada a operar a instalação tem a responsabilidade civil pelo dano, independente da existência de culpa. Em caso de acidente nuclear não relacionado a qualquer operador, os danos serão assumidos pela União. Esta lei classifica como crime produzir, processar, fornecer, usar, importar ou exportar material sem autorização legal, extrair e comercializar ilegalmente minério nuclear, transmitir informações sigilosas neste setor, ou deixar de seguir normas de segurança relativas à instalação nuclear (MILARÉ, 2001). • Lei de Crimes Ambientais - número 9.605 de 12/02/1998. Reordena a legislação ambiental brasileira no que se refere às infrações e punições. A pessoa jurídica, autora ou co-autora da infração ambiental, pode ser penalizada, chegando à liquidação da empresa, se ela tiver sido criada ou usada para facilitar ou ocultar um crime ambiental. A punição pode ser extinta caso se comprove a recuperação do dano ambiental. As multas variam de R$ 50,00 a R$ 50 milhões de reais (MILARÉ, 2001). 21 • Lei da Engenharia Genética – número 8.974 de 05/01/1995. Esta lei estabelece normas para aplicação da engenharia genética, desde o cultivo, manipulação e transporte de organismos modificados (OGM), até sua comercialização, consumo e liberação no meio ambiente. A autorização e fiscalização do funcionamento das atividades na área e da entrada de qualquer produto geneticamente modificado no país, é de responsabilidade dos Ministérios do Meio Ambiente, da Saúde e da Agricultura. Toda entidade que usar técnicas de engenharia genética é obrigada a criar sua Comissão Interna de Biossegurança, que deverá, entre outros, informar trabalhadores e a comunidade sobre questões relacionadas à saúde e segurança nesta atividade (MILARÉ, 2001). • Lei da Exploração Mineral – numero 7.805 de 18/07/1989. Esta lei regulamenta as atividades garimpeiras. Para estas atividades é obrigatória a licença ambiental prévia, que deve ser concedida pelo órgão ambiental competente. Os trabalhos de pesquisa ou lavra, que causarem danos ao meio ambiente são passíveis de suspensão, sendo o titular da autorização de exploração dos minérios responsável pelos danos ambientais. A atividade garimpeira executada sem permissão ou licenciamento é crime (MILARÉ, 2001). • Lei da Fauna Silvestre – número 5.197 de 03/01/1967. A lei classifica como crime o uso, perseguição, apanha de animais silvestres, caça profissional, comércio de espécies da fauna silvestre e produtos derivados de sua caça, além de proibir a introdução de espécie exótica (importada) e a caça amadorística sem autorização do IBAMA. Criminaliza também a exportação de peles e couros de anfíbios e répteis em bruto (MILARÉ, 2001). 22 • Lei das Florestas – número 4.771 de 15/09/1965. Determina a proteção de florestas nativas e define como áreas de preservação permanente (onde a conservação da vegetação é obrigatória) uma faixa de 30 a 500 metros nas margens dos rios, de lagos e de reservatórios, além de topos de morro, encostas com declividade superior a 45 graus e locais acima de 1.800 metros de altitude. Também exige que propriedades rurais da região Sul e Sudeste do país preservem 20 % da cobertura arbórea, devendo tal reserva ser averbada em cartório de registro de imóveis (MILARÉ, 2001). • Lei do Gerenciamento Costeiro – número 7.661 de 16/05/1988. Define as diretrizes para criar o Plano Nacional de Gerenciamento Costeiro, ou seja, define o que é zona costeira como espaço geográfico da interação do ar, do mar e da terra, incluindo os recursos naturais e abrangendo uma faixa marítima e outra terrestre. Permite aos estados e municípios costeiros instituírem seus próprios planos de gerenciamento costeiro, desde que prevaleçam as normas mais restritivas. Este gerenciamento costeiro deve obedecer às normas do Conselho Nacional do Meio Ambiente (CONAMA) (MILARÉ, 2001). • Lei da criação do IBAMA – número 7.735 de 22/02/1989. Criou o IBAMA, incorporando a Secretaria Especial do Meio Ambiente e as agências federais na área de pesca, desenvolvimento florestal e borracha. Ao IBAMA compete executar a política nacional do meio ambiente, atuando para conservar, fiscalizar, controlar e fomentar o uso racional dos recursos naturais (MILARÉ, 2001). • Lei do Parcelamento do Solo Urbano – número 6.766 de 19/12/1979. Estabelece as regras para loteamentos urbanos, proibidos em áreas de preservação ecológicas, naquelas onde a poluição representa perigo à saúde e em terrenos alagadiços (MILARÉ, 2001). 23 • Lei Patrimônio Cultural - decreto-lei número 25 de 30/11/1937. Lei que organiza a Proteção do Patrimônio Histórico e Artístico Nacional, incluindo como patrimônio nacional os bens de valor etnográfico, arqueológico, os monumentos naturais, além dos sítios e paisagens de valor notável pela natureza ou a partir de uma intervenção humana. A partir do tombamento de um destes bens, ficam proibidas sua demolição, destruição ou mutilação sem prévia autorização do Serviço de Patrimônio Histórico e Artístico Nacional, SPHAN (MILARÉ, 2001). • Lei da Política Agrícola - número 8.171 de 17/01/1991. Coloca a proteção do meio ambiente entre seus objetivos e como um de seus instrumentos. Define que o poder público deve disciplinar e fiscalizar o uso racional do solo, da água, da fauna e da flora; realizar zoneamentos agro ecológicos para ordenar a ocupação de diversas atividades produtivas, desenvolver programas de educação ambiental, fomentar a produção de mudas de espécies nativas, entre outros (MILARÉ, 2001). • Lei da Política Nacional do Meio Ambiente – número 6.938 de 17/01/1981. É a lei ambiental mais importante e define que o poluidor é obrigado a indenizar danos ambientais que causar, independentemente da culpa. O Ministério Público pode propor ações de responsabilidade civil por danos ao meio ambiente, impondo ao poluidor a obrigação de recuperar e/ou indenizar prejuízos causados. Esta lei criou a obrigatoriedade dos estudos e respectivos relatórios de Impacto Ambiental (EIA-RIMA) (MILARÉ, 2001). • Lei de Recursos Hídricos – número 9.433 de 08/01/1997. Institui a Política Nacional de Recursos Hídricos e cria o Sistema Nacional de Recursos Hídricos. Define a água como recurso natural limitado, dotado de valor econômico, que pode ter usos múltiplos (consumo humano, produção de energia, transporte, lançamento de esgotos). 24 A lei prevê também a criação do Sistema Nacional de Informação sobre Recursos Hídricos para a coleta, tratamento, armazenamento e recuperação de informações sobre recursos hídricos e fatores intervenientes em sua gestão (MILARÉ, 2001). • Lei do Zoneamento Industrial nas Áreas Críticas de Poluição – número 6.803 de 02/07/1980. Atribui aos estados e municípios o poder de estabelecer limites e padrões ambientais para a instalação e licenciamento das indústrias, exigindo o Estudo de Impacto Ambiental (MILARÉ, 2001). Com base nas leis recém apresentadas, é possível verificar que a legislação brasileira é de grande alcance. E sabe-se também que estas leis são para assegurar um meio ambiente equilibrado para todos, conforme pode ser visto no Artigo 255 da Constituição da República Federativa do Brasil: Todos têm direito ao meio ambiente ecologicamente equilibrado, bem de uso comum do povo e essencial à sadia qualidade de vida, impondo-se ao Poder Público e à coletividade o dever de defendê-lo e preservá-lo para as presentes e futuras gerações (CONSTITUIÇÃO FEDERAL, art. 255). Se todas as pessoas e empresas cumprissem estas leis de maneira adequada, teríamos um enorme avanço no que se refere à preservação do nosso patrimônio natural. Mas ainda falta muito para que esta meta seja atingida, por isso deve-se começar logo essa jornada buscando conscientizar um grande número de pessoas em relação a este assunto. 2.4 CONSIDERAÇÕES FINAIS Conforme apresentado no presente capítulo, é possível perceber que a legislação ambiental vigente no país obriga as empresas e as pessoas a se preocuparem com o meio ambiente. Além disso, atualmente, a preservação do meio ambiente é um tópico recorrente na discussão de leis. Tendo em vista esse fator, utilizar a TI para fornecer às empresas um mecanismo que permita apresentar o que elas podem fazer em prol do meio ambiente se torna de grande 25 relevância. No próximo capítulo serão abordadas algumas tecnologias na Web 2.0, que mais adiante serão analisadas para a criação de uma rede social de conscientização ambiental. 26 3 TECNOLOGIAS NA WEB 2.0 Após uma breve análise da legislação ambiental, será dada ênfase às tecnologias emergentes na era da Web 2.0. Tecnologias estas que são de grande importância no desenvolvimento de sites interativos e redes sociais. Mas antes de falar sobre estas tecnologias, será apresentado um breve conceito sobre a Web 2.0: Web 2.0 é a mudança para uma internet como plataforma, e um entendimento das regras para obter sucesso nesta nova plataforma. Entre outras, a regra mais importante é desenvolver aplicativos que aproveitem os efeitos de rede para se tornarem melhores quanto mais são usados pelas pessoas, aproveitando a inteligência coletiva (O'Reilly, 2004). Com base nesse conceito de Web 2.0, pode-se enxergar a internet como uma plataforma. Nesta plataforma existem inúmeras aplicações e serviços rodando, estes que, por sua vez, precisam de informação para atingir seus objetivos. Por exemplo, o Google possui um sistema de buscas muito eficaz, porém para funcionar corretamente ele precisa de seu banco de dados, ou seja, precisa de informação. Nesse sentido, O’Reilly (2004) diz que “o valor de um programa é proporcional ao tamanho e dinamismo do conteúdo que ele ajuda a administrar” (O’REILLY, 2004). Outro exemplo que pode ser citado é o Google Maps. Ele possui um sistema de visualização de fotos de satélite, porém o Google não é o dono destas fotos, quem oferece as fotos é a Digital Globe, ou seja, é a dona dos dados. Com este exemplo conclui-se que os dados são de suma importância na Web 2.0, ou seja, o conteúdo é tudo. Após esta breve definição, serão abordadas algumas das principais tecnologias, conceitos e recursos na era da Web 2.0. Com base na análise destas, é possível elencar os principais requisitos para desenvolver para esta nova plataforma. 3.1 AJAX O Ajax (Asynchronous JavaScript+XML) é um nome relativamente novo, cunhado por Jesse James Garrett da Adaptive Path. A maioria das pessoas acha que o Ajax foi inventado pela Google. Mas na verdade, esse comentário surgiu devido ao fato da Google ter sido uma 27 das pioneiras a utilizar esta tecnologia em suas aplicações. Várias outras empresas também já utilizavam Ajax, como por exemplo, a Amazon.com, a maior livraria virtual do mundo. Em um site com Ajax, fica mais agradável de navegar e realizar operações. Isso devido ao fato de não haver a necessidade do usuário ficar esperando que a página seja recarregada a cada modificação. Sem contar que há muito mais interação do que em sites sem este sistema. Como um de seus princípios básicos é trabalhar de forma assíncrona, ele deve proporcionar ao usuário uma maneira de realizar suas operações ao mesmo tempo, carregando somente uma vez a página pretendida. A Figura 1 ilustra a seqüência de eventos realizados em segundo plano para buscar os dados sem alterar a página que está sendo exibida ao usuário. Fonte: (Ajax em Ação, 2007). FIGURA 1: Seqüência de Eventos para Atender a Solicitação do Usuário. 3.1.1 Web Standards e CSS A folha de estilo em cascata (CSS – Cascading Style Sheet) é uma forma de padronizar a formatação de um documento, conforme a definição de Silva (2008), folha de estilo em cascata “é um mecanismo simples para adicionar estilos (p.ex., fontes, cores, espaçamentos) aos documentos Web” (SILVA, 2008). Web Standards são Padrões Web, que tem a finalidade de criar um padrão de programação, tornando-se acessível a todos os usuários. A seguir a definição apresentada por Silva (2008): 28 Web Standards é o termo em inglês para designar um conjunto de normas e diretrizes a serem empregadas nos vários setores envolvidos direta ou indiretamente com a Web. Tais normas são reguladas pelo W3C, um consórcio mundial formado por companhias, fabricantes, desenvolvedores e comunidades relacionadas que buscam a universalidade da Web (SILVA, 2008, p. 28). Então, Web Standards serve para criar sites padronizados de acordo com as normas e definições da W3C. Já o CSS se encarrega de separar programação, conteúdo e estilos visuais. 3.1.2 DOM (Document Object Model) Segundo James (2007), o Document Object Model (DOM) “expõe um documento (uma página Web) ao mecanismo JavaScript. Utilizando o DOM, a estrutura dos documentos, como vista na Figura 2, pode ser manipulada programaticamente. Essa é uma capacidade particularmente útil a se ter a disposição ao escrever um aplicativo Ajax” (JAMES, 2007). Fonte: (Ajax em Ação, 2007). FIGURA 2: Estrutura dos Documentos. 29 Em outras palavras, DOM padroniza o HTML para que seja possível que a programação encontre o que precisa em uma página. 3.1.3 XML (Extensible Markup Language) Segundo Heitlingler (2001), XML é o “formato universal para partilha de dados entre aplicações. O conceito XML é simples e as possibilidades são inúmeras” (HEITLINGER, 2001). Documentos em formato XML podem conter: Bases de Dados, Transações Comerciais, Catálogos de Produtos, Gráficos Vetoriais, Equações Matemáticas, Fórmulas Químicas, Relatórios Financeiros, Dados Bibliográficos, Anúncios Publicitários, enfim, quase todos os dados estruturados, em documento de texto. De forma sucinta, XML é um padrão que foi criado para facilitar a troca de informação entre um banco de dados e qualquer outra interface. 3.1.4 XMLHttpRequest Como Babin (2007) explica em seu livro, o Ajax “é realmente apenas um conceito. Ele é utilizado para descrever a interação do objeto XMLHttpRequest no lado Cliente com os scripts baseados no servidor” (BABIN, 2007). Então, XMLHttpRequest explica o motivo do Ajax ser definido como assíncrono. Pois este componente permite que sejam enviados dados e obtidas respostas do servidor sem a necessidade de recarregar toda a página. Concluindo, os dados podem ir e vir sem a necessidade de sincronia com os códigos da página. 3.1.5 JavaScript De acordo com Crockford (2008), JavaScript “é uma importante linguagem, pois é a linguagem dos navegadores. Sua associação com o navegador proporciona que seja uma das linguagens de programação mais utilizadas do mundo” (CROCKFORD, 2008). 30 É uma linguagem de criação de scripts Web do lado do cliente que amplia as capacidades de interface com o usuário dos navegadores. Trabalhando com as outras tecnologias utilizadas pelo Ajax, o JavaScript pode desempenhar várias funções do lado do cliente, diminuindo o tempo de espera dos usuários para realizar suas operações. Desta forma, o site se torna mais agradável de navegar, fazendo com que o usuário retorne a procura de novas informações. Depois desta breve explicação sobre Ajax, será apresentada uma tecnologia que permite o desenvolvimento de aplicações Web, contando com uma grande gama de recursos e possibilidades de integração com outras tecnologias, como o próprio Ajax, por exemplo. 3.2 PHP A linguagem PHP foi criada por Rasmus Lerdof por volta de 1994. Seu objetivo inicial foi substituir um conjunto de scripts Perl que ele usava no desenvolvimento de sua página pessoal. Já em 1997, surgiu uma revisão, trazendo com ela um interpretador de comandos SQL. Após o lançamento desta nova revisão, foi formada uma equipe com Rasmus para lançar o PHP3, a partir daí houve várias revisões que tornaram a linguagem cada vez melhor. Segundo Converse e Park (2003), o PHP “é uma linguagem de criação de scripts da Web do lado do servidor embutidos no HTML, cujo código-fonte é aberto e compatível com os mais importantes servidores da Web” (CONVERSE E PARK, 2003). PHP é uma linguagem de programação de computadores interpretada, mas, é livre e muito utilizada para criar conteúdos dinâmicos na Web. Além de ser gratuita, rápida e robusta, tem a vantagem de poder ser escrita apenas uma vez e rodar em qualquer lugar, pois é independente de plataforma. Na seqüência, será abordada outra linguagem que permite desenvolvimento Web e também é independente de plataforma, fala-se do Java. 31 3.3 JAVA Java foi desenvolvida na Sun Microsystems por volta de 1990, pouco antes da explosão da internet. Segundo Schützer e Massago (1999), “essa linguagem possui estrutura muito semelhante à da linguagem C, da qual descende imediatamente. Java tem em comum com a linguagem C++ o fato de ser orientada a objetos e mantém com esta um alto grau de semelhança” (SCHÜTZER; MASSAGO, 1999). Segundo Flanagan (2000), os criadores do Java “tentaram tornar esta linguagem poderosa, mas, ao mesmo tempo, mantendo ela como uma linguagem simples, facilitando os programadores para poderem escrever códigos robustos e sem bugs” (FLANAGAN, 2000). Ele também afirma que a linguagem Java foi projetada com os seguintes objetivos: • Orientação a objeto – Baseado no modelo de Samlltalk e Simula67; • Portabilidade – Independência de plataforma – “write once run anywere”; • Recursos de Rede – Possui extensa biblioteca de rotinas que facilitam a cooperação com protocolos TCP/IP, como HTTP e FTP; • Segurança – Pode executar programas via rede com restrições de execução; • Bytecode interpretado, ao invés de compilado. Além destes, ele destaca outras vantagens apresentadas pela linguagem: • Facilidade de Internacionalização – Suporta nativamente caracteres Unicode; • Simplicidade na especificação, tanto da linguagem como do “ambiente” de execução (JVM); • É distribuída com um vasto conjunto de bibliotecas (ou APIs); • Possui facilidades para criação de programas distribuídos e multitarefa (múltiplas linhas de execução num mesmo programa); • Desalocação de memória automática por processo de coletor de lixo; • Carga Dinâmica de Código – Programas em Java são formados por uma coleção de classes armazenadas independentemente e que podem ser carregadas no momento de utilização. 32 3.3.1 Java para a Web De acordo com Kurniawan (2002), “uma das principais arquiteturas adotadas para desenvolvimento de aplicativos Web em Java, usa servlets JSP na camada central para servir os clientes e processar a lógica comercial”, vide Figura 3 (KURNIAWAN, 2002). Fonte: (JSP, a tecnologia Java na Internet, 2002). FIGURA 3: Arquitetura de Arquivos Servlets e JSP. 3.3.1.1 Servlets Conforme Júnior (2002), “os servlets surgiram na internet como alternativa mais eficiente que os scripts CGI (Common Gateway Interface) que, por sua vez, foram os pioneiros como mecanismos de geração de conteúdo dinâmico na rede” (JÚNIOR, 2002, p. 124). Kurniawan (2002) afirma que um servlet “é como uma classe Java que pode ser automaticamente carregada e executada em um servidor Web especial, este que é chamado de contêiner servlet” (KURNIAWAN, 2002). Um servlet é carregado pelo servidor Web na primeira vez que é solicitado e interage com os clientes por meio de solicitação-resposta baseado em HTTP. Ele recebe uma solicitação do usuário, então a processa e retorna a resposta ao servidor Web cliente que, por sua vez, envia a resposta de volta ao usuário. Depois disso, o servlet fica na memória aguardando novas solicitações do usuário. Então, dentre suas vantagens, com um servlet não há necessidade de serem criados novos processos para que os mesmos funcionem a cada nova solicitação. Isso proporciona uma demanda de recursos de memória e processamento muito menor para realização de tarefas. 33 3.3.1.2 Java Server Pages Kurniawan (2002) define Java Server Pages (JSP) como: uma tecnologia Java para desenvolver aplicativos Web. Ela foi lançada quando a tecnologia servlet tinha atingido popularidade como uma das melhores tecnologias disponíveis. Porém, a JSP não foi criada com intenção de substituir a servlet. Na verdade, a JSP é uma extensão da tecnologia servlet, foi montada na base de servlet e precisa dela para trabalhar (KURNIAWAN, 2002, p. 217). De acordo com Júnior (2002), “como uma classe Java é a responsável por exibir o conteúdo da página JSP, o resultado é que as páginas JSP também desfrutam todos os benefícios da linguagem e da plataforma Java” (JUNIOR, 2002). Kurniawan (2002) também afirma que “a JSP utiliza as mesmas técnicas encontradas em programação servlet, ou seja, em JSP também são feitas solicitações e respostas HTTP, parâmetros de solicitação, atributos de solicitação, entre outros” (KURNIAWAN, 2002). Com páginas JSP, a linguagem Java funciona como uma linguagem de scripting, mas isso depende da sofisticada infra-estrutura de containers Web, capazes de recompilar JSPs automaticamente e substituir o código antigo pelo novo através dos classloaders da JVM (DOEDERLEIN, 2005). 3.4 PYTHON O Python foi criado no início dos anos 1990 por Guido van Rossum, na Holanda. Guido é o principal autor do Python, embora a linguagem inclua muitas contribuições de terceiros. A princípio, foi criada como uma linguagem de script para o sistema operacional distribuído Amoeba. Após isso, o Python se desligou de seu projeto original e hoje é utilizado em várias áreas. No Quadro 1, são exibidas algumas características da linguagem Python. 34 Quadro 1: Características da Linguagem Python. Interpretador interativo Possibilidade de testar e modificar o código de um programa antes de iniciar a compilação ou incluí-las nos programas. Tipagem Fortemente Tipada. Licença GPL (General Public License) Multiplataforma Sim Sintaxe Clara Integração com outras linguagens Fácil integração com outras linguagens. Linguagem interpretada Não necessita compilação de código, podem ser executados trechos, testando aos poucos. Interpretador Feito em c. Orientada a objetos 100% O.O., mas tem suporte a outros paradigmas: estrutural, funcional. Fonte: (CHAGAS, 2007) Dentre as principais tecnologias voltadas para a Web 2.0, podemos citar outra ferramenta que além de possuir as características de software livre, ser orientada a objetos e ser dinâmica, atrai uma grande gama de usuários. 3.5 RUBY ON RAILS Ruby on Rails é uma plataforma aberta de desenvolvimento Web, criada em 2003 por David Heinemeier Hansson. É um framework otimizado para a produtividade sustentável. Ele permite que você escreva código de forma elegante, favorecendo a convenção ao invés da configuração, ou seja, utilizando seus padrões (convenções) não há necessidade de estar realizando configurações desnecessárias. No site oficial do Ruby on Rails, O’Reilly enfatiza a agilidade de desenvolvimento do Ruby on Rails. Ruby on Rails é incrível por estar diminuindo as barreiras para entrar no mundo da programação. Aplicações Web poderosas que geralmente demoram semanas ou meses para serem desenvolvidas agora necessitam somente de uma questão de dias (O’REILLY, 2009). 35 Como afirmou O’REILLY, Ruby on Rails possui um grande diferencial. Ele poupa um tempo precioso do programador, fazendo com que aplicações sejam desenvolvidas em um prazo muito menor de tempo. Tempo esse que é considerado o gargalo dos projetos de software. Como o intuito deste projeto é desenvolver o protótipo de uma rede social com o uso do Ruby on Rails, essa tecnologia será explanada de forma mais detalhada no próximo capítulo. 3.6 ADOBE FLEX Segundo Eduardo (2009), o Flex “é um framework multi-plataforma para desenvolvimento de aplicações ricas para a Internet, levando um modelo de programação padrão e conhecido por profissionais e desenvolvedores. O Flex possui funcionalidades para entrega eficiente de aplicações ricas e de alto desempenho” (EDUARDO, 2009). Ainda no mesmo artigo, Eduardo (2009) explica o que são aplicações ricas para a Internet, do inglês RIA (Rich Internet Application): É um conceito inovador no modo de pensar e desenvolver na web. Uma aplicação RIA tem como foco principal os usuários, ou seja, levar até eles uma nova experiência em usabilidade e interatividade, unindo as funcionalidades dos softwares desktop com serviços e aplicações Web, proporcionando assim um novo nível de experiência (EDUARDO, 2009). Através destes conceitos, pode-se entender que o Flex é uma ferramenta com características de portabilidade, agilidade e seguidora de padrões. E por utilizar os padrões RIA, suas aplicações tendem a ser mais atrativas, bonitas e seguras, fazendo com que tenha uma maior aceitação dos usuários. 3.7 CARACTERÍSTICAS DAS TECNOLOGIAS APRESENTADAS Após o estudo destas tecnologias da Web 2.0 é possível elencar algumas características que cada uma delas possui. Estas são apresentadas no Quadro 2. 36 Quadro 2: Principais Características das Tecnologias Apresentadas. Tecnologia Principais Características AJAX Padrões xHTML e CSS; Visual dinâmico; Troca de informações com XML; JavaScript para realizar as operações PHP Velocidade; Portabilidade; Estruturado; Orientado a Objeto; Tipagem Dinâmica JAVA Segurança; Orientado a Objeto; Portabilidade; Tipagem Estática PYTHON Fácil de Aprender; Orientado a Objeto; Portabilidade; Tipagem Dinâmica RUBY ON RAILS Gerador de códigos; Orientado a Objeto; Portabilidade; Tipagem Dinâmica Aplicações Ricas e de alta performance; Aplicações altamente interativas; Utiliza as funcionalidades do Adobe Flash Player; Usa ActionScript para a parte lógica da aplicação Fonte: (elaborado pelo autor). ADOBE FLEX Como pode ser visto, é de grande importância que as linguagens utilizadas na era da Web 2.0 tenham características como portabilidade, orientação a objeto, segurança e velocidade. Também é importante possuir tipagem dinâmica, oferecendo a possibilidade de mudar o tipo da variável durante a execução do programa. Com a apresentação das principais tecnologias recorrentes no ambiente Web, é possível perceber que esse ambiente é um poderoso recurso para desenvolver soluções que beneficiem empresas e atraiam usuários. No capítulo seguinte será abordado o framework Ruby on Rails, este que será utilizado no desenvolvimento do protótipo proposto. 37 4 O FRAMEWORK RUBY ON RAILS Nesse capítulo será apresentada a linguagem Ruby, um pouco de sua história, e estilo de desenvolvimento. Serão apresentadas informações introdutórias sobre o modo como foi idealizado, seu modelo de orientação a objetos, atributos, classes e demais conceitos da linguagem. Na segunda parte, com base em uma definição prévia do conceito de framework, será abordado o framework Rails. Serão apresentados os principais módulos que compõem o framework, assim como sua forma de utilização, acesso a banco de dados, controladores, uso de sessão e cookies e o modelo de visão. Alguns dos fatores que motivaram a escolha do Rails foram por ser uma ferramenta ágil tanto para desenvolvimento como para manutenção. Além de dar ênfase na simplicidade e elegância do código, possuir código aberto, gratuito e sem restrições e por ser orientada a objetos. Também possibilita maior reaproveitamento de códigos e está em ascensão. 4.1 O QUE É RUBY? Baseado em seu site oficial, Ruby é uma linguagem criada por Yukihiro “matz” Matsumoto que se tornou pública em 1995, angariando programadores devotos pelo mundo todo. Para formar esta nova linguagem, Matsumoto uniu partes de suas linguagens favoritas, criando um equilíbrio entre a programação funcional (não mutável) e a programação imperativa (mutável). Sua popularidade entre os programadores do mundo todo se deve ao fato de ter uma filosofia focada nas pessoas. Sobre isso, Matz afirma em entrevista a Venners (2003) que: Muitas pessoas, especialmente engenheiros de computação, focam nas máquinas. Eles pensam, fazendo isso, a máquina será mais rápida, que fazendo isso, a máquina será mais eficiente e fazendo isso, a máquina irá fazer determinada coisa melhor. Eles estão focando nas máquinas. Mas de fato nós precisamos focar nos humanos, em como os humanos lidam com programação ou operação das aplicações das máquinas. Nós somos os mestres. Elas são as escravas, disse Matz (VENNERS, 2003). 38 Segundo Matsumoto (2008), o Ruby “é simples na aparência, mas muito complexo no interior, tal como o corpo humano. É uma linguagem orientada a objetos rápida e fácil. Entre suas vantagens, pode-se destacar a portabilidade e simplicidade, sem contar que é totalmente livre, podendo ser copiada, modificada e até distribuída” (MATSUMOTO, 2008). 4.2 CARACTERÍSTICAS DO RUBY A seguir, de acordo com Matsumoto (2008), são citadas algumas das principais características do Ruby: • É um software livre; • A sintaxe é enxuta, quase não havendo necessidade de colchetes e outros caracteres que dificultam a leitura; • Foram criados atalhos de código, como os “attr”, “attr_reader” e “attr_writer” (Funcionam como getters/setters); • Orientação a objetos pura (tudo são objetos, até mesmo os tipos mais básicos de variáveis); • Para instalar uma biblioteca nova, bastando apenas digitar “gem install biblioteca” na linha de comando do seu sistema operacional (MATSUMOTO, 2008). Com base nestas características pode-se entender porque o Ruby é considerado uma linguagem ágil, pois ela faz com que sobre mais tempo para o programador pensar na lógica da programação ao invés das formalidades da linguagem. 4.3 ENTENDENDO O RUBY Como é definida por seu criador, Ruby é uma linguagem totalmente orientada a objeto. Isso significa que qualquer variável é um objeto, mesmo classes e tipos que em muitas outras linguagens são designadas como primitivos, ou seja, são estruturas estáticas que servem como base para construção de outros tipos de dados (CUNHA NETO, 2007). 39 4.3.1 Totalmente Orientado a Objetos Como visto no item anterior, tudo em Ruby é um objeto, ou seja, até uma simples String é uma classe e possui métodos. No Quadro 3 pode-se entender melhor como funciona: Quadro 3: Aplicando o Método upcase() em uma String. Fonte: (elaborado pelo autor) Neste exemplo, o método upcase() irá tornar a primeira letra da String teste maiúscula. Como pode ser visto, não houve a necessidade de chamar algum método ou passar a String como parâmetro, isso devido ao fato da String já ser um objeto de uma classe. 4.3.2 Atalhos de código Dentre as principais características do Ruby destacadas no item 4.2, se encontram os atalhos de código, estes que funcionam como os métodos getters e setters. Um exemplo é observado no código do Quadro 4. Quadro 4: Classe em Ruby sem uso de Atalhos. Fonte: (elaborado pelo autor) 40 Na classe Pessoa apresentada no Quadro 4 pode-se observar duas funções para buscar nome e sobrenome utilizando getters, e outras duas utilizando setters para atribuir valores a elas. Já utilizando atalhos, o código fica mais enxuto, conforme Quadro 5: Quadro 5: Classe em Ruby com uso dos Atalhos. Fonte: (elaborado pelo autor) No Quadro 5 a classe Pessoa é criada com a utilização de atalhos e possui somente uma linha. Isso se deve ao fato de o Ruby saber que o programador quer criar getters e setters para nome e sobrenome. Estes atributos deixam de forma clara o seu conceito de facilidade. 4.3.3 Escopo das Variáveis Em Ruby, somente pelo nome da variável pode-se saber qual o seu escopo. Então, quando é dado um nome a uma variável já está sendo afirmado qual é seu escopo. De acordo com Cunha Neto (2007) utilizam-se as seguintes opções de variáveis: • Variáveis locais – “são declaradas dentro um método ou um for, por exemplo, e somente existirão dentro daquele argumento” (CUNHA NETO, 2007); • Variáveis globais – “como o próprio nome já diz, são variáveis que estão disponíveis em qualquer parte do programa. Devem ter seus nomes iniciados com $” (CUNHA NETO, 2007); • Variáveis de instância – “são as variáveis que implementam os atributos de uma classe. Por convenção devem ser declaradas começando com @” (CUNHA NETO, 2007); 41 • Variáveis de classe – “uma variável de classe é compartilhada entre todos os objetos da classe em que foi declarada. Devem ser iniciadas com @@” (CUNHA NETO, 2007). Também existem outras particularidades para declaração de variáveis em Ruby. Por exemplo, quando uma variável possuir mais de uma palavra, estas devem ser separadas por underline. Variáveis globais e de instância recebem automaticamente um valor padrão nulo, já as locais e de classes devem ser obrigatoriamente inicializadas (CUNHA NETO, 2007). 4.3.4 Tipos de acesso Segundo Cunha Neto (2007), Ruby trabalha com três tipos de acesso aos métodos, são eles: • Públicos – Podem ser acessados de qualquer classe e instanciados por qualquer objeto; • Privados – São acessados somente por objetos da mesma classe; • Protegidos – Podem ser acessados por qualquer objeto dentro da mesma estrutura hierárquica da classe. 4.3.5 Módulos Módulos em Ruby são bastante parecidos com as classes, se diferenciando pelo fato de não ter instância, subclasse e ser definido através das diretivas modulo ... end. São utilizados para agrupar constantes ou métodos com relações entre si e na realização de mixin, que será explicado a seguir (CUNHA NETO, 2007). 4.3.6 Mixins Propositalmente, o Ruby não possui a denominada herança múltipla, que possibilita herdar características de mais de uma superclasse. Porém, utilizando mixin, pode-se obter o mesmo efeito (CUNHA NETO, 2007). 42 Como foi apresentado no item anterior, um módulo funciona de maneira similar a uma classe. Dessa forma os métodos, as variáveis e as constantes podem ser acrescentadas a outros módulos utilizando o include, que importa as suas propriedades na classe. Agora, depois desta breve apresentação sobre Ruby, pode-se ter uma noção sobre como funciona a linguagem base para o framework Rails, que é de suma importância para o sucesso deste projeto. 4.4 INTRODUÇÃO AO FRAMEWORK RAILS Neste item será apresentado de forma mais detalhada o framework Ruby on Rails, ou simplesmente Rails. Como o próprio termo framework já diz, Rails é uma ferramenta de programação ágil, ou seja, preza pela agilidade no desenvolvimento do software. Segundo Lloyd (2004) framework pode ser definido como: Conjunto de blocos de software pré-fabricados que os programadores podem usar, estender, ou customizar para sua aplicação. É um mecanismo de reuso orientado a objeto que permite ao desenvolvedor decompor uma aplicação em um conjunto interativo de objetos. Descreve as relações executadas pelos componentes da estrutura, pelo fluxo do controle entre estes componentes, e pelos contratos entre os componentes e o sistema. Sendo assim, um framework é um design reusável (LLOYD, 2004). Assim, framework é um conjunto de classes com o objetivo de reutilização de um design. Ele se diferencia de uma simples biblioteca, pois uma biblioteca oferece apenas implementação de funcionalidades, sem definir a reutilização de uma solução de design. Segundo Hanson (2006), “Rails visa dois conceitos com o objetivo de aumentar a produtividade do desenvolvedor: DRY e Convenção ao invés de Configuração, do inglês Convenction over Configuration” (HANSON, 2006). Não repetir a si mesmo, ou DRY (Don’t Repeat Yourself) é o conceito por trás da técnica de definir nomes, propriedades e códigos em somente um lugar e reaproveitar essas informações em outros, muitas vezes sugeridos pelas convenções de separar o código em modelo, visão e controle, ou MVC (Model, View, Controller). Desta forma é muito difícil encontrar duplicações no Rails (THOMAS, HANSON, 2005). 43 O Convention over Configuration, ou seja, Convenção ao invés de Configuração, “permite ao desenvolvedor terminar seu projeto em um tempo reduzido, pois se seguir a convenção, geralmente não será necessária nenhuma configuração” (THOMAS, HANSON, 2005). 4.4.1 O Padrão MVC O Rails utiliza a estratégia MVC (Model – Modelo, View – Visão, Controller – Controlador). Desta forma, haverá disponível para o desenvolvedor uma estrutura com os componentes modelos, visões e controladores separados, cada um executando as tarefas que lhe são convenientes. Como Ferraz (2006) afirma em sua obra, “a parte correspondente ao Model existe nas classes de dados e é implementada pelo ActiveRecord. Um segundo componente do Rails, o ActionPack, implementa o V e o C que são respectivamente View e Controller” (FERRAZ, 2006). A seguir, de acordo com Carvalho (2008), são definidos o que são os Modelos, as Visões e os Controladores em um projeto Rails. O componente modelo impõe todas as regras de negócio que se aplicam aos dados e objetos da aplicação. Por exemplo, se um campo no banco de dados tiver um limite de 30 caracteres, o modelo impõe essa restrição, de modo que somente dados com até este limite sejam persistidos no banco de dados. Esse tratamento faz sentido, pois garante que nenhum dado inválido proveniente de outro lugar da aplicação seja guardado (CARVALHO, 2008). A visão é responsável por gerar uma interface com o usuário, normalmente baseada em dados do modelo. Por exemplo, em uma loja os dados de todos os produtos cadastrados estão em um modelo, mas esses dados são apresentados ao usuário por meio de uma interface gerada pela visão. Para ações de persistência, a visão simplesmente se encarrega de enviar os dados capturados em sua interface e enviá-los para o modelo que, por sua vez, o guarda no banco caso seja válido (CARVALHO, 2008). O componente controlador, por sua vez, funciona como um gerenciador de requisições, recebendo eventos na maioria das vezes vindas do usuário, coordenando a criação de objetos e indicando as visões apropriadas para a requisição (CARVALHO, 2008). 44 Ainda baseando-se na obra de Carvalho (2008), pode-se concluir que o sistema de MVC do Rails funciona de maneira organizada, em que cada componente espera ser requisitado por outro para entrar em ação (CARVALHO, 2008). Além da estratégia MVC, Rails é formado por outros cinco frameworks, os quais serão brevemente explicados no item a seguir. 4.4.2 Por Dentro do Rails Para Thomas (2005), Rails agrupa um conjunto de outros cinco frameworks, que são utilizados a maior parte do tempo pelo desenvolvedor. Também existe um componente muito importante, o qual faz o gerenciamento de todos os módulos de alto nível que compõe o framework. Este componente leva o nome de Rails e, pela sua importância, fez com que todo o framework levasse o seu nome (THOMAS, 2005). Cada um dos frameworks embutidos no Rails realiza uma função específica e independente, sendo gerenciados pelo componente Rails. Assim, todos os componentes do framework trabalham harmoniosamente. Portanto, este componente é essencial para o funcionamento correto do sistema. 4.4.2.1 Active Record Em geral este padrão, ou pattern, especifica que uma classe Active Record equivale a uma tabela do banco de dados, e cada objeto (instância) representa um registro. Ele minimiza o montante de configurações que os desenvolvedores realizam. Se um formulário Web contém dados relacionados a um objeto de negócios, Active Record pode extraí-los para dentro de nosso modelo. O Active Record suporta sofisticadas validações de modelos de dados, e se o formulário de dados carecer de validações, as visões de Rails podem extrair e formatar erros com apenas uma linha de código (THOMAS, HANSON, 2005). 45 4.4.2.2 Action Pack É um framework MVC completo, ou seja, separa de forma clara o layout, as regras de negócio e a base de dados. Também faz a integração dos mesmos de forma consistente e precisa (THOMAS, HANSON, 2005). 4.4.2.3 Action Mailer É um componente Rails simples que permite suas aplicações enviar e receber e-mails (THOMAS, HANSON, 2005). 4.4.2.4 Action Web Service É uma biblioteca que facilita muito o desenvolvimento de Web Services. Com apenas algumas linhas de código, é possível implementar um Web Service completo (THOMAS, HANSON, 2005). 4.4.2.5 Active Support É um conjunto de bibliotecas que são compartilhados por todos os componentes Rails. Muito do que se encontra lá é para uso interno dos Rails (THOMAS, HANSON, 2005). Para o Rails funcionar corretamente, é necessário seguir certo padrão em relação aos diretórios do projeto, assunto que será abordado a seguir. 4.4.3 Estrutura de diretórios Visando organizar as aplicações desenvolvidas, Rails exige que seja seguido um layout padrão para sua estrutura de diretórios. Padrão este que é apresentado na Figura 4. 46 Fonte: (elaborado pelo autor). FIGURA 4: Estrutura de Diretórios de uma Aplicação Rails No Quadro 6, de acordo com Hanson (2006), é feita uma breve descrição sobre a função desempenhada por cada pasta da raiz do projeto padrão do Rails: Quadro 6: Descrição da Função de Cada Pasta da Raiz do Projeto Rails Arquivo/Diretório Propósito README Este é um breve manual de instrução para sua aplicação. Use-o para explicar a outros o que sua aplicação faz, como configurá-la, etc. Rakefile Este arquivo contém tarefas em lote que podem ser executadas do terminal. app/ Contém os controllers, models, e views para sua aplicação. Aqui fica o código principal da aplicação. config/ Configure suas regras de execução para a aplicação, rotas, banco de dados, etc. db/ Exibe o seu schema de banco de dados atual, bem como as migrações de banco de dados. doc/ Documentação completa para sua aplicação. lib/ Módulos de extensão para sua aplicação. log/ Arquivos de log da aplicação. public/ A única pasta vista pelo mundo como ela é. Aqui é onde suas imagens, javascript, stylesheets (CSS), e outros arquivos estáticos ficam. script/ Scripts fornecidos pelo Rails para fazer tarefas repetitivas, tais como benchmarking, instalação de plugins, e iniciar o console ou o servidor web. test/ Testes unitários, fixtures, e outros aparatos de teste. Estes são tratados em Testando Aplicações Rails. 47 tmp/ Arquivos temporários. vendor/ Um local para código de terceiros. Em uma aplicação Rails típica, isto inclui Ruby Gems, o código fonte do Rails e plugins contendo funcionalidades adicionais. Fonte: (HANSON, 2006) Depois de apresentado o padrão de pastas seguido pelo Rails, será explicado como funciona outro padrão, o de nomenclatura. 4.4.4 Padrão de Nomenclatura No Rails, por convenção, nomes de variáveis possuem letras minúsculas e palavras separadas por sublinhado (ex: preco_do_produto). Nomes de classes e módulos não possuem sublinhado, ao invés disso cada palavra, incluindo a primeira, inicia-se com uma letra maiúscula (ex: GeradorRelatorio). A nomenclatura de tabelas do banco de dados e de arquivos segue de maneira similar às variáveis, sendo letras minúsculas e palavras separadas por sublinhado (ex: usuario_model.rb). Porém, no caso das tabelas, os nomes precisam estar no plural (ex: grupo_usuarios) (THOMAS; HANSSON, 2005). Utilizando essas convenções, o Rails diminui o processo de configuração fazendo a conversão de nomes automaticamente. Pois como já foi citado anteriormente, o Rails parte do princípio de convenção ao invés de configuração. 4.4.5 Scripts do Ruby on Rails Para facilitar e agilizar o desenvolvimento de aplicações, o Rails disponibiliza uma série de scripts para geração automática de código. Os principais scripts que fazem parte de qualquer aplicação Rails são elencados e explicados a seguir de acordo com Fortes e Junqueira (2009). • console: disponibiliza um console para interação com o ambiente da aplicação Rails, no qual é possível interagir com o modelo do domínio. Neste console, são disponibilizadas todas as partes da aplicação configurada, exatamente igual à quando a aplicação está rodando. É possível inspeção dos modelos, mudar 48 seus valores e salvar os resultados no banco de dados (FORTES; JUNQUEIRA, 2009). • destroy: permite “destruir” determinado componente da aplicação, como por exemplo um modelo ou uma view que tenham sido criados de forma incorreta ou que não sejam mais necessários (FORTES; JUNQUEIRA, 2009). • generate: permite que seja feita a geração automática de código. Os geradores padrão do Rails são: controller, integration_test, mailer, migration, model, observer, plugin, resource, scaffold, scaffold_resource, session_migration, web_service (FORTES; JUNQUEIRA, 2009). • server: permite rodar um servidor básico para a aplicação. Este servidor é bastante utilizado em ambiente de desenvolvimento, por permitir rápido acompanhamento da aplicação (FORTES; JUNQUEIRA, 2009). Depois de apresentar alguns dos scripts padrão do Rails, será mostrado no próximo item como desenvolver uma aplicação básica. 4.5 DESENVOLVENDO APLICAÇÕES COM RAILS Neste item serão apresentados de forma sucinta, os passos necessários para a criação de uma aplicação utilizando Rails. O percurso básico é ilustrado na Figura 5. Fonte: (elaborado pelo autor). FIGURA 5: Criando uma Aplicação Básica em Rails. 49 Partindo da premissa que se tenha o Rails instalado no computador seguem-se os passos apresentados no roteiro da Figura 5: • Criação do banco de dados – Nesta etapa, como o próprio nome já diz, é criado o banco de dados relacional da aplicação; • Criação da estrutura padrão – Depois de ter instalado o Rails e ter o banco de dados criado, será criada estrutura da aplicação. Como é ilustrado na Figura 6, é utilizado o comando “rails” e o nome da aplicação. A partir deste comando, o Rails entende que deve criar uma nova estrutura (Como visto na Figura 4) para aquele projeto; Fonte: (elaborado pelo autor). FIGURA 6: Criando uma Estrutura Padrão de um Novo Projeto em Rails. • Configuração do banco de dados – Agora com a estrutura padrão do projeto criada, deve ser configurado, o arquivo config/database.yml, que contém as informações sobre o banco de dados. Na Figura 7, por exemplo, o arquivo foi configurado para acessar o banco de dados MySQL; Fonte: (elaborado pelo autor). FIGURA 7: Arquivo de Configuração do Banco de Dados. 50 Como visto na Figura 7, existem três bancos de dados diferentes que o Rails pode rodar: • Ambiente de Desenvolvimento: é usado no computador do desenvolvedor, para interagir com a aplicação manualmente; • Ambiente de Testes: é utilizado para rodar testes na aplicação; • Ambiente de Produção: é a base utilizada quando a aplicação é disponibilizada para outras pessoas. Antes do próximo passo, será realizada a criação do banco de dados de acordo com os parâmetros informados no arquivo da Figura 7. O comando a ser executado é apresentado na Figura 8, ele utiliza o Rake, que conforme diz Hanson (2006) “é um executador de comandos genéricos que o Rails utiliza para diversas coisas” (HANSON, 2006). Fonte: (elaborado pelo autor). FIGURA 8: Criando o Banco de Dados do Projeto. Com o banco de dados criado, pode-se seguir o roteiro. • Criação de scaffolding – O método mais ágil de criar os modelos, visões e controladores em Rails é utilizando um script de scaffolding. Levando em consideração que já se esteja na pasta raiz do projeto, este comando é realizado conforme a Figura 9. Fonte: (elaborado pelo autor). FIGURA 9: Criando Modelos, Visões e Controladores em uma Única Operação. Depois de executado o comando da Figura 9, além dos arquivos acima citados, são criadas as operação básicas de inserção, visualização, edição e exclusão, também conhecidas por CRUD (Create, Retrieve, Update, Delete). De acordo com Hanson (2006), o Quadro 7 exibe os arquivos que foram criados (ou editados) após a realização do script de scaffolding. 51 Quadro 7: Estrutura Criada a Partir do Script de Scaffolding. Arquivo Propósito app/models/carro.rb O model Carro db/migrate/20091119131424_create_c arros.rb A migração para criar a tabela de carros em seu banco de dados. app/views/carros/index.html.erb Uma view para visualizar uma listagem de todos os carros app/views/carros/show.html.erb Uma view para visualizar um único carro app/views/carros/new.html.erb Uma view para criar um novo carro app/views/carros/edit.html.erb Uma view para editar um carro existente app/views/layouts/carros.html.erb Uma view para controlar a visualização geral das outras views de carros public/stylesheets/scaffold.css Cascading style sheet para fazer com que as views criadas pelo scaffold tenham melhor aparência app/controllers/carros_controller.rb O controller para os Carros test/functional/carros_controller_test.r b Estrutura de testes funcionais para o controller de carros app/helpers/carros_helper.rb Funções auxiliares para usar com as views de carros config/routes.rb Editado para incluir informações de roteamento para os carros test/fixtures/carros.yml Dados de Carros simulados para uso nos testes test/unit/carro_test.rb Estrutura de testes unitários para o model Carro test/unit/helpers/carros_helper_test.rb Estrutura de testes unitários para o helper de carros Fonte: (HANSON, 2006) Um dos arquivos gerados pelo scaffold é o arquivo de migração do banco de dados, este que pode ser visto na segunda linha do Quadro 7. A partir deste arquivo será criada uma tabela no banco de dados de acordo com os parâmetros de conexão informados no comando da Figura 7. Mas para que isso ocorra deve-se executar o comando da Figura 10. Fonte: (elaborado pelo autor). FIGURA 10: Comando Rake para Executar a Migração do Banco de Dados. 52 Com a estrutura criada, pode-se iniciar o servidor WebRick, que é instalado junto com o Rails e é de grande utilidade para testar as aplicações desenvolvidas. Para isso é necessário executar o comando ilustrado na Figura 11. Fonte: (elaborado pelo autor). FIGURA 11: Iniciando o Servidor WebRick do Rails. Depois de executado este comando, o servidor fica aguardando requisições HTTP na porta 3000. Então, para visualizar a página criada com o comando da Figura 9, basta digitar o seguinte endereço no browser: http://localhost:3000/carros, o resultado é exibido na Figura 12. Fonte: (elaborado pelo autor). FIGURA 12: Tela para Listagem de Carros. Como foi mencionado anteriormente, o gerador scaffold também gera as operações básicas de inserção de registros (Figura 13), exibição de registros (Figura 14), edição de registros (Figura 15) e exclusão de registros (Figura 16). Na Figura 13 é possível visualizar a tela de inclusão de um novo registro na tabela de carros. 53 Fonte: (elaborado pelo autor). FIGURA 13: Tela para Inclusão de Carros. Já na Figura 14 pode-se visualizar a tela que exibe de forma detalhada o registro escolhido. Fonte: (elaborado pelo autor). FIGURA 14: Tela para Exibição de Carros. Também há a possibilidade de editar um registro existente, como é apresentado na Figura 15. 54 Fonte: (elaborado pelo autor). FIGURA 15: Tela para Edição de Carros. Além da opção de apagar um determinado registro, como pode ser visto na Figura 16. Fonte: (elaborado pelo autor). FIGURA 16: Tela para Destruição de Carros. 55 Depois desta breve utilização do framework, pode-se constatar que Rails realmente é uma ferramenta que facilita a realização de tarefas comuns em qualquer aplicação, sendo ágil e organizada ao mesmo tempo. Utilizando Rails, temos a possibilidade de ter a organização do Java e a rapidez e praticidade do PHP. Sem contar o fato de que você escreve menos código para um sistema inteiro do que um arquivo XML de configuração em Java. Com base nos conceitos e exemplos apresentados no presente capítulo, conclui-se que Rails é uma tecnologia ideal para desenvolver rápido para a Web. Além disso, seguindo os padrões da arquitetura MVC e oferecendo uma solução produtiva de desenvolvimento aos programadores, o Rails está revolucionando a internet. No próximo capítulo serão abordadas as redes sociais, analisando os fatores que levam a popularização das mesmas, permitindo uma análise da melhor forma de criar uma rede e torná-la atrativa na era da Web 2.0. 56 5 REDES SOCIAIS NA WEB É possível observar nos últimos anos, que as redes sociais tem feito um grande sucesso entre os usuários de Internet. Isso se dá pelo motivo de haver uma interação entre as pessoas, onde podem se expressar e contribuir com suas opiniões sobre o que acham sobre determinado assunto ou situação. Esse foi um diferencial que as redes sociais trouxeram, e que as tornou tão populares e acessadas. Antigos e famosos portais e sites de comunicação da internet, antes da era da Web 2.0, eram ricos em informação, porém pobres nos quesitos de interação e aceitação do usuário. Isso fazia com que ele não tivesse um motivo ou interesse para retornar àquele site, ou mesmo acompanhar as atualizações e novas notícias. De acordo com Recuero (2009), a internet: Proporcionou que as pessoas pudessem disseminar as informações de forma mais rápida e mais interativa. Tal mudança criou novos canais e, ao mesmo tempo, uma pluralidade de novas informações circulando nos grupos sociais. Juntamente com essa complexificação, o aparecimento de ferramentas de publicação pessoal, tais como os weblogs, fotologs, e mesmo o YouTube, por exemplo, deu força e alcance para esses fluxos, ampliando a característica de difusão das redes sociais (RECUERO, 2009, p. 116). Deste modo, com as redes de relacionamento proporcionando interação e liberdade de expressão na internet, as pessoas podem se conectar não somente a sites ou portais, mas também a outras pessoas. Com isso podem transferir ou agregar conhecimento sobre os mais diversos assuntos. Com o advento da Web 2.0, e a crescente interação dos usuários com os sites, uma nova forma de cooperar e interagir surgiu. E assim como surgiu, teve uma disseminação muito rápida, juntando um número surpreendente de usuários. As denominadas redes sociais vieram para ficar, e cada vez mais atrai usuários, independente de faixa etária ou qualquer outra classificação. No ambiente Web, vêm se tornando unanimidade. Dessa maneira, o presente capítulo faz uma abordagem dos fatores que elevaram a popularização de uma rede social, fazendo uma análise das mais difundidas. 57 5.1 REDES SOCIAIS ATUAIS Conforme Bouças (2009), “quem utiliza redes sociais são pessoas que tem o hábito de acompanhar o que é publicado a seu respeito ou a respeito de alguma idéia defendida em seu espaço virtual” (BOUÇAS, 2009). Neste ambiente, os usuários encontram espaço para criticar e elogiar pessoas, produtos, serviços e idéias com audiências que muitas vezes ultrapassam milhões de usuários. Um estudo desenvolvido pela In Press Porter Novelli e pela empresa de análise de mídia E.Life, indica diversas motivações que fazem com que um usuário adote uma rede social para interagir (BOUÇAS, 2009). De acordo com este levantamento, mais de 60% dos internautas, acessam o Twitter para ler notícias e divulgar conteúdo (BOUÇAS, 2009). Já o Orkut, segundo 86% dos entrevistados, é utilizado como forma de manter contato com amigos e familiares. O YouTube é considerado por quase 90% dos usuários como uma forma de entretenimento e diversão. Redes como blogs são utilizadas por 86,1% das pessoas para a divulgação de conteúdo, e 42% do total também os utilizam como fonte de informação (BOUÇAS, 2009). Depois de elencadas as principais motivações dos internautas para acessar uma rede social, será feita uma breve apresentação sobre algumas das redes de relacionamento mais utilizadas. Com isso, pretende-se analisar os fatores que levaram ao sucesso das mesmas, bem como elencar os pontos positivos e negativos de cada um destes sites. 5.1.1 Orkut De acordo com seu site oficial, o Orkut é uma comunidade on-line criada para tornar a sua vida social e a de seus amigos mais ativa e estimulante. A rede social do Orkut pode ajudá-lo a manter contato com seus amigos atuais por meio de fotos e mensagens, e a conhecer mais pessoas (ORKUT, 2009). Com o Orkut é fácil conhecer pessoas que tenham os mesmos hobbies e interesses que os seus, que estejam procurando um relacionamento afetivo ou contatos profissionais. O 58 usuário também pode criar comunidades on-line ou participar de várias delas para discutir temas atuais, reencontrar antigos amigos da escola ou até mesmo trocar receitas favoritas. A estratégia utilizada pelo criador do Orkut para alavancar a sua rede foi espetacular. O sistema de distribuição de convites fez com que as pessoas sentissem a necessidade de serem convidadas para fazer parte daquela rede social. Isso se deve ao fato do ser humano ser muito curioso e querer estar sempre à frente das demais. Como visto, graças à curiosidade e a ganância de superioridade das pessoas, o Orkut se tornou um fenômeno da internet, conseguindo reunir inúmeros usuários espalhados pelo mundo todo. Mas além de ter a capacidade de conseguir tantos usuários, ele teve um grande diferencial, dando o poder às pessoas de terem sua própria página na internet. Um dos principais motivos que as fez manter seus perfis atualizados foi sua interface amigável, possibilitando até os menos experientes com computador a utilizá-lo. Dentre seus pontos positivos pode-se citar a utilização de comunidades para agregação de pessoas com interesses em comum. Desta forma, qualquer tipo de pessoa pode: buscar informações sobre determinados assuntos; procurar esclarecimentos e orientações de utilidade pública; compartilhar experiências tanto relacionadas a doenças como vítimas de crimes dentre outras possibilidades. Mas também existe o lado negativo desta rede, onde pessoas mal intencionadas as utilizam para cometer diversos tipos de crimes. Os mais freqüentes são casos de pedofilia, racismo e prostituição infantil. Eliminar este tipo de comunidade é um esforço constante que a mantenedora do Google faz diariamente. 5.1.2 Facebook O Facebook é apresentado em seu site oficial como uma rede social que reúne pessoas a seus amigos e àqueles com quem trabalham, estudam e convivem. As pessoas participam do Facebook para manter contato com seus amigos, carregar um número ilimitado de fotos, compartilhar links e vídeos e aprender mais sobre as pessoas que conhecem (FACEBOOK, 2009). 59 O Facebook é constituído de muitas redes, cada uma baseada em volta de uma empresa, localização, ou escola. O usuário participa de redes que reflitam as comunidades da sua vida real para saber mais sobre as pessoas que trabalham, vivem, ou estudam perto dele. Assim como o Orkut, o Facebook é uma rede que visa manter relacionamentos entre as pessoas com quem cada um convive no dia-a-dia. É possível participar de comunidades específicas de acordo com o interesse do usuário, dando-o oportunidade de expor suas críticas e/ou opiniões. Como os objetivos e visões do Facebook e Orkut são muito semelhantes, pode-se afirmar que seus prós e contras são os mesmos. Deixando a cargo de o usuário escolher qual das duas ferramentas se enquadra melhor na sua realidade, podendo também escolher as duas. No Brasil o uso do Facebook é menos difundido em relação ao Orkut. 5.1.3 Twitter O Twitter é uma rede social que oferece um serviço de mensagens curtas, o qual pode ser acessado de diversas redes e tipos de aparelhos. Atualmente é a grande novidade nas redes sociais, sendo utilizada por muitos usuários como canal de divulgação de notícias e obtenção de informação (TWITTER, 2009). Por sua simplicidade de disseminação de informações, foi utilizado na campanha de Barack Obama, primeiro político a utilizar os recursos da Web 2.0. No Twitter, Obama chegou a ter mais de 160 mil seguidores, sendo o usuário mais acompanhado através do microblogging, sucesso do momento, que tem por base o envio de atualizações a partir de respostas constantes à simples pergunta: ‘o que você está fazendo?’ (PAIVA, 2009). Com sua grande aceitação dos usuários através do Twitter, Barack Obama conseguiu conquistar o apoio dos eleitores americanos e a admiração da população de outros países. Em novembro de 2008, duas semanas de chuvas causaram enchentes nunca vistas em Santa Catarina. Para obter informações sobre amigos e familiares que foram vítimas da tragédia, os internautas utilizaram as redes sociais, entre elas o Twitter, possibilitando a comunicação em tempo real entre os usuários. Também foram feitas mobilizações que ajudaram a conseguir inúmeras doações para os desabrigados. 60 Depois destes dois exemplos de utilização do Twitter, pode-se destacar entre seus pontos positivos a rápida disseminação de informações sobre determinado assunto, seja em questão de publicidade como de cooperação e solidariedade. Dentre os aspectos negativos, existem usuários mal intencionados que se aproveitam da capacidade de espalhar mensagens rapidamente do Twitter para divulgarem informações caluniosas. Isso pode gerar uma grande repercussão na mídia em relação à credibilidade do serviço. 5.1.4 YouTube Como é especificado em seu site oficial, o YouTube foi fundado em fevereiro de 2005, sendo líder na apresentação de vídeos on-line. É também o principal destino dos internautas para assistir e compartilhar vídeos originais com todo o mundo por meio da web. O YouTube permite que as pessoas enviem e compartilhem facilmente videoclipes na Internet por meio de sites, celulares, blogs e e-mail (YOUTUBE, 2009). Qualquer pessoa pode assistir a um vídeo no YouTube. As pessoas podem ver relatos de eventos atuais em primeira mão, localizar vídeos sobre seus passatempos prediletos e assuntos de interesse, e até descobrir algumas pérolas. Cada vez mais pessoas estão capturando momentos em vídeo, e o YouTube está cuidando de transformá-las nos criadores da televisão do futuro. O YouTube foi uma das grandes novidades nesta era da Web 2.0. Antigamente havia poucos métodos fáceis para os usuários de computadores que queriam expor seus vídeos na internet. Com uma interface simples, o YouTube proporcionou que qualquer pessoa com acesso a internet tivesse a possibilidade de postar seus vídeos para milhões de pessoas na Web. Mas como todas as outras ferramentas sociais apresentadas, o YouTube também possui pontos negativos, como divulgação de vídeos com conteúdo pornográfico, de cunho preconceituoso ou racista, cenas de violência, entre outros. 61 5.1.5 Ning O Ning é uma plataforma online que permite a criação de redes sociais individualizadas. Este serviço foi lançado em Outubro de 2005 por Marc Andreesen e Gina Bianchini (NING, 2009). Cada usuário pode criar sua própria rede social e aderir a redes de usuários que partilhem os mesmos interesses. Ao contrário das redes generalistas que visam comunicação e interação pessoal, o Ning permite o compartilhamento de interesses específicos. O seu ponto forte é dar a oportunidade ao usuário de criar suas próprias experiências sociais para suas áreas de interesse. Pode ser considerada uma forma de encontrar outras pessoas que tenham as mesmas paixões. Em suma, o Ning é uma espécie de “ferramenta para criar redes sociais”. A idéia foi bastante difundida, mas ainda enfrenta alguns problemas, como receio dos usuários em utilizá-lo e ausência de algumas funcionalidades existentes em outras redes. 5.1.6 Outras redes sociais Hoje em dia pode-se destacar inúmeras redes sociais oferecidas na Web. E cada vez mais existe espaço para novas surgirem, desde que deixem claros seus objetivos e onde contribuirão para a vida dos usuários. Pois este irá usar do seu tempo para se dedicar àquela rede, procurando amigos, criando comunidades e confeccionando seu perfil. Dentre as redes sociais existentes, pode-se destacar o que vêm chamando a atenção dos internautas: • Via6 – Focada em organização de conteúdo para contatos profissionais; • Ikwa – Voltada para pessoas em busca de realização profissional; • descolando! – Iniciativa brasileira, é focada em alunos universitários que desejam descobrir como é cada professor, o que ajuda muito ao montar a grade de horários do semestre; Essas redes recém citadas podem ser consideradas de grande importância no desenvolvimento profissional de uma pessoa. O Ikwa ajuda a decidir qual carreira seguir, o 62 descolando! ajuda durante a graduação e o Via6 o ajuda a fazer contatos para se inserir no mercado de trabalho. Existem outras redes voltadas para diversos assuntos, como por exemplo, entretenimento. Algumas discutem sobre música, livros, filmes, seriados, e todas elas com uma grande quantidade de adeptos. Com isso é possível perceber que, levando em consideração os reais interesses de cada pessoa, é possível fazer com que uma rede social ganhe popularidade no ambiente Web. Depois de apresentadas algumas redes sociais emergentes e os motivos pelo qual os usuários as utilizam com tanta freqüência, no item a seguir serão enumerados alguns dos atrativos das principais redes sociais da internet. 5.2 FATORES PREPONDERANTES NA DISSEMINAÇÃO DE REDES SOCIAIS Como já foi visto neste capítulo, existem diversos fatores que influenciam os usuários a utilizarem uma rede social, seja por curiosidade, por interesses, influência de amigos, busca de informações, entretenimento, entre outros. Com base nestes fatores, algumas redes sociais têm vantagens em relação a outras, pois isso depende do atrativo que estão oferecendo para os usuários. Por exemplo, uma rede social voltada para diversão é muito mais procurada do que uma rede para negócios profissionais. No Quadro 8 são mostradas as principais atrações de algumas das redes sociais disponíveis na Web. Quadro 8: Atrações das Redes Sociais. Nome da Rede Social Principais Atrativos Orkut Comunicação Online Facebook Comunicação Online YouTube Compartilhamento de Vídeos MySpace Comunicação Online Twitter Microblogging Ning Criação de redes sociais personalizadas 63 Via6 Contatos profissionais Ikwa Orientação vocacional e profissional descolando! Avaliações sobre professores universitários ebaH! Compartilhamento de arquivos acadêmicos Flickr Compartilhamento de fotografias Drimio Relacionamento de Consumidores com suas Marcas preferidas Last.fm Rede social voltada para música MeusParentes Construção de árvores genealógicas Fonte: (elaborado pelo autor) Com o estudo das principais redes sociais é possível perceber que a implementação deste novo mecanismo de marketing e colaboração é possível. Tendo em mente os fatores a serem levados em consideração na hora de criar e difundir uma rede virtual, aliados ao conhecimento da legislação ambiental vigente no país, o próximo capítulo apresenta os detalhes do desenvolvimento do protótipo. 64 6 PROTÓTIPO DE REDE SOCIAL PARA A CONSCIENTIZAÇÃO AMBIENTAL Com base nos temas elencados nos capítulos anteriores, o objetivo desta seção é descrever a elaboração do protótipo de rede social verde desenvolvido com o framework Ruby on Rails. Para isso, serão descritos os principais requisitos e funcionalidades necessárias para o desenvolvimento desta rede social, bem como os principais atrativos que farão pessoas e empresas se interessarem por ela. Na Engenharia de Software o levantamento dos requisitos é de suma importância. É o que afirma Pressman (1995): Pode-se afirmar que os requisitos de sistema são subdivididos em dois grupos: os requisitos funcionais e os não funcionais. Requisitos não funcionais informam como o sistema deve ser, ou seja, as qualidades do sistema. Já os requisitos funcionais descrevem o que o ele irá fazer, expondo as funcionalidades que o sistema deve dispor (PRESSMAN, 1995). Levando em consideração essa afirmação, a definição de requisitos funcionais e não funcionais é apresentada a seguir. 6.1 REQUISITOS FUNCIONAIS Requisitos funcionais descrevem as funcionalidades do sistema desejadas pelos usuários, ou seja, o que se espera que o software faça (PRESSMAN, 1995). Para a criação de uma rede social devem-se tomar vários cuidados, que podem ser definidos como requisitos funcionais. Existem inúmeros requisitos funcionais que foram aplicados nesse protótipo, os principais são citados abaixo: • Possibilitar ao usuário a realização do cadastro de uma nova conta pessoal de forma rápida e fácil; • Enviar por e-mail para o usuário uma confirmação de cadastro com uma mensagem simples e concisa; • Permitir que o usuário solicite um lembrete de senha via e-mail caso a esqueça; 65 • Possibilitar ao usuário a capacidade de personalizar seu perfil e/ou página inicial; • Assegurar que o usuário encontre pessoas e empresas interessadas no tema preservação ambiental de forma rápida e fácil; • Permitir a inserção de tópicos, imagens e demais recursos multimídia mostrando as atitudes tomadas pró meio ambiente; • Possibilitar que sejam efetuadas buscas por termos ou palavras chave determinadas pelo usuário; Conforme mencionado acima, além destes requisitos funcionais apresentados, existem vários outros que foram elencados para o desenvolvimento da rede social proposta. Depois desta explicação, no próximo item serão abordados os requisitos não funcionais. 6.2 REQUISITOS NÃO FUNCIONAIS Os requisitos não funcionais têm como objetivo principal dar qualidade ao sistema. Qualidade essa que reflete diretamente na satisfação de todos os usuários. Como em qualquer outro projeto, o principal requisito não funcional necessário para o desenvolvimento desta rede social é a usabilidade. Para Cibys (2003), usabilidade define-se como “um conjunto de atributos de software relacionado ao esforço necessário para seu uso e para o julgamento individual de tal uso por determinado conjunto de usuários” (CYBIS, 2003). Requisitos de usabilidade são importantes para definir limites para determinadas ações que o sistema terá, por exemplo, “Um novo usuário deverá ser capaz de se cadastrar na rede social em no máximo 15 minutos de orientação”. Dessa maneira, os requisitos não funcionais que este projeto buscou atender foram: • Confiabilidade – os usuários devem ter garantia de que seus dados e informações não serão perdidos devido a falhas de software; • Desempenho – ao solicitado para realização de alguma ação, o sistema este deve responder imediatamente; 66 • Robustez – o sistema terá valores padrão para as principais variáveis, e se possível serão utilizadas no lugar de dados inválidos ou inexistentes; • Utilização – deverá dar suporte para um número elevado de usuários simultâneos; • Segurança – o sistema controla os usuários por nível de privilégio. • Privacidade – deverá ter restrições quanto à visualização das informações pessoais dos usuários. No próximo item serão apresentados os fatores que influenciarão usuários e empresas a utilizarem a rede social proposta. 6.3 FATORES NECESSÁRIOS PARA O SUCESSO DA REDE De acordo com o apresentado no Capítulo 5, uma rede social deve atender alguns requisitos básicos para obter sucesso. Em outras palavras, precisa oferecer ao usuário algo que o motive ou chame sua atenção. Ele precisa entender que o tempo que destina diariamente àquela rede não é em vão. Esta realidade não é muito diferente para as empresas, visto que aderem a redes sociais por motivos semelhantes aos usuários comuns. Ao visualizarem algo que lhe trará benefícios, sejam eles financeiros ou de marketing, as empresam procuram dedicar o tempo de algum funcionário para aquela atividade. Visto que a rede social desenvolvida possui temática ambiental, ela já atende o principal requisito para atrair um grande número de usuários. Isso ocorre porque todas as pessoas e empresas conscientes prezam pela valorização de seu hábitat natural. Além disso, conforme apresentado no capítulo 2, as leis de preservação ambiental são claras, e a fiscalização das empresas em relação ao cumprimento destas leis é cada vez maior. Isso obriga os gestores a acharem formas de mostrar que a empresa de fato trabalha em prol do meio ambiente. Partindo desta premissa, o protótipo de rede social delimita seu público em pessoas que lutam em conjunto pela preservação do meio ambiente, tanto na atualidade como para as futuras gerações. Este é o perfil dos usuários cadastrados nesta rede. Pessoas esclarecidas, 67 conscientes e que se preocupam com o futuro do planeta. Tendo pessoas com esse perfil, será possível conquistar novos usuários para participarem desta rede social verde, fazendo a disseminação da mesma entre todas as classes da sociedade. Ao chegar neste nível de adesão perante os usuários, usando para isso iniciativas de marketing como divulgação em blogs e demais sites renomados, o objetivo é chamar a atenção da categoria empresarial. Dessa forma, as empresas poderão mostrar suas iniciativas de forma transparente, assim como os usuários da rede fiscalizarão se as empresas trabalham corretamente quanto à preservação ambiental. 6.4 DESENVOLVIMENTO DO PROJETO Nesta seção é explanado o processo de desenvolvimento da rede social. Basicamente são descritos fatores como requisitos técnicos, dificuldades encontradas e ferramentas que foram utilizadas para auxiliar na realização deste protótipo de Rede Social. 6.4.1 Ferramentas utilizadas Para a realização do projeto foram utilizadas algumas ferramentas para dar suporte e tornar mais simples a programação. Vale também destacar que o projeto todo foi realizado utilizando ferramentas livres, desde sistema operacional até a linguagem de programação. Em relação à programação, o protótipo todo foi desenvolvido utilizando Ruby On Rails (ROR). Antes de iniciar a configuração do ROR foi realizado um levantamento de qual sistema operacional seria utilizado, levando em consideração as ferramentas que oferecia e a facilidade de instalação e utilização. Como o Rails é um framework aberto, a grande maioria das ferramentas de desenvolvimento mais utilizadas estão disponíveis para sistemas UNIX. Dessa forma o sistema escolhido foi o Ubuntu 9.04. Com o sistema operacional definido pode-se dar inicio a instalação do ROR. A descrição desse processo está disponível no Anexo A: Instalação do Ruby on Rails no Ubuntu. Na seqüência foi realizada a instalação do banco de dados MySQL, utilizado por ser aberto e ter uma excelente compatibilidade com ROR. 68 Como ferramenta gerenciadora de banco de dados foi instalado o EMMA, software livre desenvolvido em Python, e pode ser encontrado no site http://www.fastflo.de/projects/emma. Visando manter um histórico e controle da versão do projeto, foi realizada também a configuração de um servidor SVN (SubVersion), ou seja, um sistema de controle de versão. Este tem a finalidade de administrar diferentes versões no desenvolvimento de um projeto de software. O cliente SVN utilizado foi o RapidSVN, software livre que pode ser baixado no site http://rapidsvn.tigris.org. Para a edição e tratamento de imagens foi utilizado o software GIMP (GNU Image Manipulation Program), que é um programa de código aberto e pode ser baixado no site http://www.gimp.org. Por fim, o editor de textos utilizado para elaboração dos códigos ROR foi o GEdit, que é o editor padrão do sistema operacional Ubuntu. Juntamente com alguns plugins que ajudaram a facilitar o desenvolvimento. Depois de tudo instalado e devidamente configurado pode-se iniciar a codificação da aplicação, a qual é descrita no tópico a seguir. 6.4.2 Desenvolvimento da Rede Social Após os estudos realizados neste projeto, como linguagens de programação, tecnologias, redes sociais e o tema meio ambiente, foi iniciada a implementação da aplicação. Com base nos requisitos levantados, bem como todos os fatores considerados para o sucesso da rede, a mesma foi definida com as seguintes seções: 1. Cabeçalho padrão em todas as páginas contendo atalhos para as principais funcionalidades da rede; 2. Rodapé padrão em todas as páginas com atalhos para contato e termos de utilização; 3. Barra lateral esquerda com informações sobre o usuário logado e menu de navegação completo; 4. Seção central com informações úteis para interação e utilização da rede pelo usuário. Informações estas que levam em consideração se o usuário é novo ou se já está interagindo com outros usuários. 69 5. Barra lateral direita contendo os amigos e empresas seguidas pelo usuário logado. Também há um espaço para publicidade de outros sites relacionados ao tema da rede. Sendo assim, o projeto básico da interface (wireframe) é apresentado na Figura 17. Fonte: (elaborado pelo autor). FIGURA 17: Wireframe do protótipo. Com base nesse modelo, foi possível iniciar a codificação do protótipo utilizando o framework Ruby on Rails. Primeiramente foi criada toda a estrutura da aplicação, que é a base para todo o projeto. Na Figura 18 pode-se visualizar a estrutura de pastas criadas pelo Rails através do comando rails –d mysql cigno. Onde –d mysql indica o banco de dados que será utilizado e cigno o nome do projeto. Cigno foi o nome escolhido para a rede por estar relacionado à natureza, pois na linguagem italiana a palavra “cigno” significa cisne. Fonte: (elaborado pelo autor). FIGURA 18: Estrutura do projeto. 70 O próximo passo foi a configuração da conexão com o banco de dados. Para isso o arquivo database.yml que encontra-se na pasta config teve que ser editado, conforme exemplo apresentado na Figura 7. Para o armazenamento das informações foi modelada uma base de dados. O Diagrama Entidade Relacionamento (DER) está disponível no Anexo B: Diagrama Entidade Relacionamento. Em seguida foi realizado e seguido um cronograma das atividades necessárias para deixar a rede social funcional. O projeto foi divido por fases, conforme é exibido no Quadro 9. Quadro 9: Fases do projeto Fase Atividades realizadas 1 Na primeira fase do projeto foi realizada a codificação do controle de usuários, onde se enquadram cadastro, ativação e autenticação. Ainda nesta etapa do projeto, foram realizados testes para validar tais funcionalidades, como cadastro e ativação do usuário cadastrado, efetuar login e logout no site, edição do perfil e requisição de nova senha. 2 Quando se fala em redes sociais, a primeira coisa que vem à cabeça são as relações de amizade. Esta segunda fase do projeto foi focada nisso, visando oferecer aos usuários logados uma pesquisa por outros usuários e a possibilidade de realizarem uma requisição de amizade. Também foram realizadas algumas validações nesta etapa, verificando se os usuários já são amigos, se não é o próprio usuário tentando se adicionar e se já não existe uma requisição de amizade. 3 Na seqüência foram elencadas todas as funcionalidades como cadastro de ações, mensagens, eventos e funcionalidade, seguindo o padrão MVC, também teve visão e um controlador gerados de acordo com as necessitam. 4 A quarta fase do projeto também foi voltada para implementação de funcionalidades da rede, como um cadastro para manter dicas de preservação, outro para manter um cadastro de ONGs e uma opção para convidar amigos para participarem da rede social. 5 Seguindo o mesmo padrão das relações de amizades, foram criadas as opções de adição de empresas, onde o usuário poderá seguir as ações que esta realizou. Nesta mesma etapa do projeto foram realizadas as implementações do envio e manutenção de arquivos multimídia, como fotos e vídeos. Assim, usuários e empresas poderão manter em seu perfil álbuns de fotos e vídeos sobre suas ações. 6 Já com todos os formulários cadastrais criados, na sexta fase do projeto que a rede teria, empresas. Cada um modelo, uma informações que 71 foram implementadas as opções de busca por nomes de usuários e empresas, facilitando a procura de informações dentro da rede. 7 Com todas as funcionalidades da rede codificadas, torna-se necessário o desenvolvimento de um layout simples e agradável para o usuário navegar. Nesta sétima fase do projeto foi utilizada a linguagem de estilos CSS, dando forma e beleza ao site. 8 Na oitava etapa do projeto, foi realizada a paginação em determinadas áreas da rede. Dessa forma, setores com maior número de informação podem ser carregados mais rapidamente. 9 Por fim, foram realizadas as configurações do controle de permissões da rede, visando proteger as informações desta contra usuários mal intencionados. Fonte: (Elaborado pelo autor) O Framework Rails disponibiliza inúmeros plugins (complementos) que podem ser utilizados para ganhar produtividade durante o desenvolvimento. A lista dos principais plugins contidos neste projeto e sua descrição são apresentadas no Quadro 10. Quadro 10: Principais plugins utilizados no projeto Nome Authlogic JRails Funcionalidade Autenticação de usuários. Integração de JQuery com Rails. Paperclip Upload de arquivos. Formtastic Criação de formulários. Auto_html Conversão de links em fotos e vídeos. Lockdown Controle de permissões de usuários. Will_Pagina te Ezgraphix Paginação de registros. Criação de Gráficos com JQuery. Fonte: (Elaborado pelo autor) Cada um desses plugins foi devidamente testado e configurado para funcionar corretamente no protótipo. Ao final, pode-se perceber que atendiam a necessidade, permitindo que a rede ficasse funcional. No Quadro 11, é possível visualizar a função companie_treerank do controlador de empresas. Ela tem como funcionalidade buscar no banco de dados a soma dos pontos 72 recebidos pelas empresas no TreeRank, este que será explicado no item 8.4.5. Além disso, ela também irá instanciar um novo gráfico utilizando o plugin Ezgraphix. Quadro 11: Função para gerar o gráfico do Ranking de empresas. def companie_treerank @companie_score = CompaniePostScore.find( :all, :select => '(SELECT substr(companies.name,1,15) FROM companies WHERE companies.id = companie_id) as name, companie_id as companie, (IFNULL(sum(score), 0)*3)+ (SELECT (IFNULL(sum(companie_videos.score), 0)*5) FROM companie_video_scores companie_videos WHERE companie_videos.companie_id = companie)+ (SELECT (IFNULL(sum(companie_photos.score), 0)*6) FROM companie_photo_scores companie_photos WHERE companie_photos.companie_id = companie) as score', :group => 'companie', :order => 'score DESC',:limit => 10) @data = Array.new @labels = Array.new for score in @companie_score @data << score.score @labels << score.name end @g = Ezgraphix::Graphic.new(:w => 750, :h => 500, :c_type => 'mscol3d') @g.data = {"Pontos no TreeRank de Empresas" => @data} @g.labels = @labels render :partial => 'home/companie_treerank' end Fonte: (Elaborado pelo autor) Dessa forma, na nossa Visão do controlador Empresas será necessária somente uma linha de código para exibir o gráfico na tela, como pode ser visto no Quadro 12. Quadro 12: Código para exibir na tela o gráfico do Ranking de empresas. <%= render_ezgraphix @g %> Fonte: (Elaborado pelo autor) 73 Também é interessante destacar a forma de funcionamento da paginação do protótipo. Em páginas que possuem vários itens, como a página de ações do usuário, foi realizada a paginação dos mesmos, obtendo assim ganho de desempenho e estética do site. Para esta tarefa foi utilizado o plugin Will_Paginate do Rails, que trabalha de forma simples porém eficaz. No Modelo do método Post devem ser incluídas as linhas de código do Quadro 13, dessa forma ele irá trazer somente 10 registros por página. Quadro 13: Código do Will_Paginate para o Modelo Post. cattr_reader :per_page @@per_page = 10 Fonte: (Elaborado pelo autor) Feita a alteração no modelo também deve ser modificado o código do Controlador, alterando o objeto @user_posts para que fique como o Quadro 14. Quadro 14: Código para o Controlador do método Post receber os dados paginados. @user_posts = Post.paginate(:all, :page => params[:page], :conditions => ['user_id = :user_id and d_e_l_e_t_ = 0', {:user_id => @user.id}], :order => 'created_at DESC') Fonte: (Elaborado pelo autor) Por fim, para que seja exibida a opção de troca de páginas ao usuário, deve ser inserido na Visão o código apresentado no Quadro 15, após isso o Will_Paginate irá se encarregar de montar os links para as outras páginas. Quadro 15: Código para exibir os links da paginação na Visão do método Post. <%= will_paginate @user_posts, :renderer => 'RemoteLinkRenderer', :remote => {:update => :home_middle, :loading => "$('#spinner').show()", :complete => "$('#spinner').hide()"}, :prev_label => 'Anterior', :next_label => 'Próximo' %> Fonte: (Elaborado pelo autor) Após a conclusão da primeira versão do protótipo, foram realizados testes de todas as funcionalidades em base local. Como houve tempo hábil, foi possível registrar um domínio e colocar o site no ar em uma versão para utilização, processo descrito a seguir. 74 6.4.3 Hospedagem do protótipo na Web Partindo do que foi estudado em capítulos anteriores, uma rede social necessita de seus usuários para ter algum sentido, pois são eles que trazem a informação e a tornam interessante. Dessa forma, para que fosse possível realizar testes com o protótipo desenvolvido, foi locado um servidor Linux e efetuada a compra do domínio cigno.com.br para hospedagem do mesmo na internet. Quanto ao nome do protótipo, procurou-se encontrar algo fácil de ser lembrado pelos usuários e que tivesse algum significado relacionado ao tema da rede. A palavra Cigno é italiana e quer dizer Cisne em português. Após o protótipo estar devidamente hospedado no servidor WEB, foi possível que os usuários interagissem na rede social. No tópico a seguir são apresentadas algumas telas do mesmo, bem como alguns números de sua utilização no período em que ficou disponível. 6.4.4 Utilização da Rede Social Para mostrar de maneira clara as funcionalidades do protótipo, a seguir, todo o processo de navegação é apresentado através de um exemplo prático. Ao acessar o endereço do protótipo ( www.cigno.com.br ), o usuário irá encontrar a página inicial da rede social. Como pode ser visto na Figura 19, neste espaço estão disponíveis informações sobre qual é o objetivo da rede, dados estatísticos, temos de uso, política de privacidade, espaço para efetuar login e opção de cadastro de novo usuário. 75 Fonte: (elaborado pelo autor). FIGURA 19: Tela da página inicial do protótipo. Conforme um padrão adotado pela maioria das redes sociais, a página inicial permite que o usuário descubra para que serve a rede, possibilita um novo cadastro, bem como traz uma caixa de login na rede para usuários já cadastrados. Após realizar o cadastro, o usuário é informado que foi lhe enviado um email contendo um link de ativação de sua conta. Desta forma somente usuários com emails verdadeiros conseguirão utilizar a rede. Depois de ter ativado a conta através do email, o usuário irá receber uma confirmação de que já está apto a efetuar login. Com a conta ativada, o usuário acessa novamente a página inicial do protótipo e informa seu usuário e senha para logar-se. Se as informações estiverem corretas ele será direcionado para a página inicial do seu perfil, conforme tela apresentada na Figura 20. 76 Fonte: (elaborado pelo autor). FIGURA 20: Tela da página inicial do usuário logado. Partindo da premissa que é a partir da página inicial do usuário logado que serão realizadas todas as operações, a mesma é detalhada conforme a numeração da Figura 20. Na seção 1 é possível visualizar os links de acesso rápido às principais funcionalidades da rede, o qual é mantido em todas as outras páginas. Na seção 2 são apresentadas informações sobre o usuário e opções de visualização e edição do perfil. Na seção 3 está localizado o menu de navegação, e na seqüência, na seção 4, a opção de convite para amigos participarem da rede. Na seção 5 é apresentado um ranking contendo os dez usuários mais votados na rede no momento. Este item será melhor explanado no item 8.5.4. No centro da página inicial, na seção 6, são exibidas dicas de preservação ambiental aleatórias. Nas seções 7 e 8, são oferecidas opções de busca de amigos e empresas respectivamente. Caso seja a primeira vez que efetuou login, serão apresentadas algumas 77 opções a mais, como alterar foto, atualizar informações do seu perfil e sugestões de amizades e empresas. Ao acessar o menu lateral direito, na seção 9, é possível visualizar as relações de amizade do usuário. Logo abaixo, na seção 10, são exibidas as empresas que o usuário está seguindo. E por fim, na seção 11, são apresentadas as opções de colaboração. Na Figura 21 é apresentada a tela da página de ações realizadas pelo usuário, que também oferece a possibilidade de cadastrar uma nova ação. Fonte: (elaborado pelo autor). FIGURA 21: Tela da página de ações realizadas pelo usuário logado. A página de ações, como a maioria das funcionalidades do protótipo, são carregadas utilizando AJAX, que conforme vimos no Capítulo 3, carrega somente a ação requisitada sem recarregar toda a página. Para possibilitar a interação entre os usuários foi implementada também a opção de troca de mensagens. Conforme visto na Figura 22, ao acessar o perfil de outro usuário é possível deixar uma mensagem privada para ele. Já na Figura 23 é apresentada a tela da página de mensagens do usuário logado. 78 Fonte: (elaborado pelo autor). FIGURA 22: Tela da página do perfil do usuário visitado. Além da opção de envio de mensagem privada, a página do perfil do usuário visitado apresenta várias informações úteis referentes ao seu perfil. Fonte: (elaborado pelo autor). FIGURA 23: Tela da página de mensagens do usuário logado. 79 Assim como o perfil do usuário visitado, também é possível visualizar o perfil das empresas cadastradas, como pode ser visto na Figura 24. Fonte: (elaborado pelo autor). FIGURA 24: Tela da página do perfil de empresa. Conforme é exibido na Figura 25, através do menu da página inicial também é possível visualizar as relações de amizade do usuário logado. Fonte: (elaborado pelo autor). FIGURA 25: Tela da página de Amigos seguidos pelo usuário logado. 80 Do mesmo modo, como pode ser visto na Figura 26, através do menu principal o usuário também pode visualizar quais empresas ele está acompanhando. Fonte: (elaborado pelo autor). FIGURA 26: Tela da página de empresas seguidas pelo usuário logado. O protótipo também oferece a seus usuários um local onde possam divulgar futuros eventos relacionados ao tema meio ambiente. Na Figura 27 é apresentada tal funcionalidade. Fonte: (elaborado pelo autor). FIGURA 27: Tela da página de eventos com temática ambiental. 81 Além das funcionalidades apresentadas, o protótipo também possibilita o envio de arquivos multimídia, como imagens e vídeos. Na Figura 28 é possível visualizar a página de álbuns de fotos do usuário e na Figura 29 as fotos contidas no mesmo. Fonte: (elaborado pelo autor). FIGURA 28: Tela da página de álbuns de fotos do usuário logado. Se o usuário logado for o proprietário daquele álbum de fotos será exibida uma opção para a criação de novo álbum. Do mesmo modo é apresentada uma opção para envio de nova foto. Fonte: (elaborado pelo autor). FIGURA 29: Tela da página de fotos do álbum do usuário logado. 82 Seguindo a mesma lógica, na Figura 30 é apresentada a página de vídeos. Ela oferece ao usuário logado a possibilidade de cadastro de novo vídeo. Nesta funcionalidade foi utilizado um plugin para conversão do link do vídeo em imagem. Assim não há a necessidade do usuário fazer o upload do vídeo para a rede, ele somente informa o link de um vídeo existente. Fonte: (elaborado pelo autor). FIGURA 30: Tela da página de vídeos do usuário logado. Para tornar a rede o mais atrativa possível, foi elaborado um sistema pontuação onde os usuários podem avaliar ações de outros usuários. Esta funcionalidade é abordada a seguir. 6.4.5 Sistema de pontuação pela utilização da rede Visando tornar a rede mais interativa e interessante para os usuários, bem como incentivá-los a cadastrarem novas ações, vídeos e imagens, foi criado um sistema de pontuação: o TreeRank. Ao acessar o perfil de algum amigo ou empresa, o usuário logado tem a possibilidade de avaliar suas ações em favor do meio ambiente. Os pontos ganhos são acumulados e através deles são gerados gráficos em tempo real. 83 Na Figura 31 pode-se visualizar a tela principal do TreeRank. Ela contém uma breve descrição de como o sistema de pontuação funciona e links para que o usuário possa visualizar os cinco tipos de rankings disponíveis. Fonte: (elaborado pelo autor). FIGURA 31: Tela da página de Rankings. Ao escolher a opção TreeRank de Usuários é carregado automaticamente um gráfico em tempo real dos dez usuários mais bem posicionados. Esse gráfico, que pode ser visto na Figura 32, leva em consideração os pontos obtidos com ações realizadas, imagens enviadas e vídeos cadastrados. 84 Fonte: (elaborado pelo autor). FIGURA 32: Tela da página do TreeRank de usuários. Da mesma forma pode ser visualizado o gráfico com as empresas mais votadas na rede. Este também leva em consideração os pontos das ações realizadas, vídeos cadastrados e imagens enviadas pela empresa. O gráfico pode ser visto na Figura 33. Fonte: (elaborado pelo autor). FIGURA 33: Tela da página do TreeRank de empresas. 85 Além dos dois tipos de gráficos apresentados, também estão disponíveis rankings dos dez usuários com mais pontos em ações, imagens ou vídeos individualmente. Como a rede ficou disponível para navegação, foi possível coletar algumas informações a respeito de sua utilização. Essa análise é apresentada a seguir. 6.4.6 Análise de Utilização da Rede Social Após a hospedagem da rede social e a configuração do domínio cigno.com.br no servidor locado, foi disponibilizada a primeira versão do site na internet. A hospedagem ocorreu no dia 01/06/2010, e os números apresentados a seguir foram coletados no dia 14/06/2010. Para a divulgação da rede social deste trabalho foram utilizadas as principais redes sociais atuais, o Orkut e o Twitter. Também foram enviados vários emails de divulgação para contatos conhecidos e com interesse ambiental (coletados através de visitas a sites de instituições do ramo e organizações não governamentais de cunho ambiental). Para criação dos relatórios estatísticos mostrados a seguir, foi utilizado o Urchin, que é um sistema de processamento de relatórios de acesso e tráfego nos sites disponibilizado pelo provedor que hospedou o protótipo. Ele oferece vários tipos de relatórios e informações úteis para acompanhamento da utilização do site. No gráfico da Figura 34 pode ser visualizado o relatório de sessões que a rede teve nas suas primeiras duas semanas. Vale lembrar que este contador só é incrementado quando um usuário efetua login no site através de um endereço IP distinto. Fonte: (elaborado pelo autor). FIGURA 34: Relatório Gráfico de sessões do domínio cigno.com.br. 86 Pode-se perceber que a rede começou com 140 acessos, e atingiu um pico de 145 acessos diários, oscilando nos primeiros dias. Além do relatório de sessões também pode ser apresentado o relatório de cliques, disponível no gráfico da Figura 35. Neste caso, conta-se como clique cada vez que o usuário faz uma nova requisição, como uma nova página HTML ou imagem por exemplo. Fonte: (elaborado pelo autor). FIGURA 35: Relatório Gráfico de cliques do domínio cigno.com.br. Se compararmos o relatório de cliques com o de sessões, conseguimos perceber que um não influencia diretamente no outro, pois há dias com maior número de acessos que tiveram menor utilização em relação aos outros. Com base nos relatórios apresentados pode-se fazer uma projeção de crescimento da rede, bem como um planejamento de divulgação para conseguir novos usuários. Pois além de relatórios de acessos, é possível visualizar as formas que os usuários utilizaram para chegar até o site e termos utilizados nos buscadores como Google e Yahoo. Até a data da conclusão deste trabalho, 14 dias após a rede estar no ar, alguns números merecem ser destacados. Estes são apresentados no Quadro 16. Foram 131 usuários cadastrados e média de 91 acessos únicos por dia. Quanto aos acessos às funcionalidades da rede, já foram cadastradas mais de 140 ações em favor do meio ambiente, 446 relações de amizade, 6187 pontos em votos para o TreeRank e 118 itens multimídia entre fotos e vídeos. 87 Quadro 16: Tabela de utilização do protótipo. Semana 1 Total Média/Dia Semana 2 Total Média/Dia Usuários cadastrados 68 9,71 63 9 Acessos únicos 530 75,71 747 106,71 Ações realizadas 79 11,28 62 8,85 Itens multimídia 56 8 62 8,85 Relações de amizade 198 28,28 248 35,42 Pontos no TreeRank 2359 337 3828 546,85 Fonte: (Elaborado pelo autor) Com base nessa tabela, a Figura 36 apresenta uma média de acessos nas duas semanas que a rede ficou disponível online. Fonte: (elaborado pelo autor). FIGURA 36: Resumo da média de acessos do protótipo. Em relação à repercussão da rede, também vale ressaltar que foi bem avaliada. Em blogs e outras redes sociais foram feitos vários comentários em favor da rede social Cigno. Alguns deles são apresentados nas Figuras 37, 38, 39 e 40. Fonte: (elaborado pelo autor). FIGURA 37: Comentário realizado na rede social Twitter dia 05/06/2010. 88 Na primeira semana de divulgação da rede no Twitter, já foi possível visualizar comentários positivos por parte dos usuários. Fonte: (elaborado pelo autor). FIGURA 38: Comentário realizado na rede social Twitter dia 10/06/2010. Pessoas de diversas partes do país, todos com o interesse de proteger nosso planeta, aderiram à idéia e estão ajudando na divulgação do Cigno. Fonte: (elaborado pelo autor). FIGURA 39: Comentário realizado na rede social Twitter dia 15/06/2010. Além da repercussão na rede social Twitter, também houve matérias em blogs comentando sobre a idéia e apoiando seus leitores a se cadastrarem. Fonte: (elaborado pelo autor). FIGURA 40: Post realizado pelo Blog3 falando sobre o Cigno. 89 Com base nos dados informados no Quadro 16, bem como os comentários realizados por usuários na internet, pode-se afirmar que a repercussão inicial foi positiva. Resta apenas continuar a divulgação, procurando agora atingir as empresas que querem mostrar consciência ambiental. Por fim, após apresentar o processo de desenvolvimento, bem como a forma de utilização e a repercussão inicial da rede, foi possível perceber que a mesma teve grande receptividade. Além disso, observando a aceitação dos usuários conclui-se que o contínuo aprimoramento da mesma se mostra de grande valia. 90 7 CONCLUSÃO Através deste trabalho, foi possível realizar um estudo das principais tecnologias da Web 2.0, bem como suas principais características e funcionalidades. Também possibilitou visualizar melhor como funciona a legislação ambiental, e como está sendo aplicada na prática. Além do estudo sobre as redes sociais, que mostrou como são bastante difundidas e aceitas entre o público brasileiro. Quanto ao uso do framework Rails, este provou ser uma ferramenta ágil e ao mesmo tempo completa. Proporcionou seu entendimento em de forma rápida e simples, fazendo o desenvolvimento da rede social ser possível em um curto espaço de tempo. Isso comprova que realmente esta tecnologia pode ser usada no processo de desenvolvimento rápido de aplicações WEB. Vale destacar também a temática do protótipo apresentado, pois o assunto meio ambiente pede reflexão. As pessoas sabem que precisam se conscientizar e melhorar suas atitudes, então para tornar isso mais simples nada melhor que utilizar esta nova tendência, as redes sociais. Além de desmistificar a idéia de que os avanços tecnológicos degradam o meio ambiente. Quanto aos objetivos atingidos durante o projeto, pode-se citar o planejamento e desenvolvimento da rede, a sua hospedagem na Web, a divulgação e a repercussão que ela teve e acima de tudo o aprendizado. Enfim, o objetivo principal, que era desenvolver a rede social e a deixar funcional, bem como a repercussão inicial da rede entre os usuários, foi atingido. 7.1 TRABALHOS FUTUROS Além das funcionalidades apresentadas pelo protótipo, algumas sugestões podem ser dadas para aprimorar o trabalho e aumentar a usabilidade do mesmo. Dentre as quais pode-se destacar: • disponibilizar uma versão da aplicação para dispositivos móveis; 91 • desenvolver técnica de recomendação de amizades e empresas na rede baseada em mecanismos de inteligência artificial; • enriquecer a interface do site com mais interatividade, como jogos e desafios com temática ambiental; • buscar parcerias com empresas para fortalecer a divulgação da rede; • vincular a rede com sites maiores, como orkut e twitter. Dessa forma, realizando todos estes aperfeiçoamentos, a rede poderá auxiliar consideravelmente os usuários a discutirem questões ambientais. 92 8 REFERÊNCIAS BABIN, Lee. Ajax com PHP. Rio de Janeiro : Alta Books, 2007. BIRNIE, Patricia W.; BOYLE, Alan E. International Law and the environment. Oxford : Claredon Press, 1992. BOUÇAS, Cibelle. Redes sociais atraem interesse de companhias. Disponível em: http://www.fenacon.org.br/. Acesso em: 09 nov. 2009. CARVALHO, Edson Ferreira de. Meio Ambiente e Direitos Humanos. Curitiba: Juruá, 2005. CARVALHO, Luiz Arão Araújo. GETNA: Gerador de Código Ruby on Rails a partir de Banco de Dados. 2008. 110 f. Monografia (Bacharel em Ciências da Computação) – Universidade Federal do Tocantins, Palmas, 2008. Disponível em: http://www.redrails.com.br/2009/09/monografia-getna-gerador-ruby-on-rails-a-partir-debanco-de-dados/. Acesso em: 07 nov. 2009. CHAGAS, Manoela Doraci. Um protótipo de CRM na área comercial, aplicando técnicas de Data Mining. 2007. 98 f. Monografia (Bacharel em Sistemas de Informação) – Universidade Comunitária da Região de Chapecó, Chapecó, 2007. CONVERSE, Tim; PARK, Joyce. PHP4: a bíblia. Tradução da 2. ed. Original de Edson Furmankieveicz. Rio de Janeiro: Elseiver, 2003. CRANE, Dave; PASCARELLO, Eric; JAMES Darren. Ajax em Ação. São Paulo : Pearson Prentice Hall, 2007. CROCKFORD, Douglas. JavaScript: The Good Parts. United States of America, 2008. CUNHA NETO, S. M. Rails Versus Struts: Um Comparativo de Frameworks. 2007. 57 f. Monografia (Bacharel em Sistemas de Informação) – Universidade Federal do Estado do Rio de Janeiro, Rio de Janeiro, 2007. Disponível em: http://www.mergulhao.info/assets/2007/5/2/monografia.pdf Acesso em: 15 nov. 2009. CYBIS, Walter de Abreu. Engenharia de Usabilidade: Uma abordagem Ergonômica. Labiutil: Florianópolis, 2003. 93 DOEDERLEIN, Osvaldo. Aprendendo Scripting e dinamismo na plataforma Java. Java Magazine, 2005. n. 32. EDUARDO, Carlos. O que é Adobe Flex. Disponível em: http://fmsguru.com.br/2009/09/15/o-que-e-adobe-flex/. Acesso em: 23 nov. 2009. FERRAZ, Ronaldo Melo. Rails para sua Diversão e Lucro. Free Software Fundation, Inc.: Boston, 2006. FACEBOOK. Site Oficial do Facebook. Disponível em: http://www.facebook.com/. Acesso em: 08 nov. 2009. FLANAGAN, David. Java: o guia essencial. 3. ed. Campus: Rio de Janeiro, 2000. FORTES, Renata P. M.; JUNQUEIRA, Daniel C. Introdução ao Desenvolvimento de Aplicações Web com Ruby on Rails. Disponível em: www.icmc.usp.br/~renata/RoRcapitulo_webmedia07.pdf Acesso em: 21 nov. 2009. GUTMANS, Andi; BAKKEN, Stig Saether; RETHANS, Derick. PHP 5: programação poderosa. Tradução: Marcelo Soares e Andreza Gonçalvez. Rio de Janeiro: Alta Books, 2005. HANSON, David. Ruby on Rails in Brazil. 2006. Disponível em: http://www.rubyonrails.com.br/. Acesso em: 03 nov. 2009. HEITLINGER, Paulo. O Guia Prático da XML. Porto – Lisboa, 2001. JANDI JUNIOR, Peter. Introdução ao Java. Berkley: São Paulo, 2002. JÚNIOR, Francisco. JSP, a tecnologia Java na Internet. Erica: São Paulo, 2002. KURNIAWAN, Budi. Java para Web com Servlets, JSPs e EJB. Ciência Moderna: Rio de Janeiro, 2002. LLOYD, Douglas. Expresso Developer’s Guide. Disponível em: www.jcorporate.com/expresso/doc/edg/edg.pdf Acesso em: 03 nov. 2009. MASSAGO, Sadao; SCHÜTZER, Waldeck. Programação Java. Disponível em: http://www.dm.ufscar.br/~waldeck/curso/java/introd.html Acesso em: 07 nov. 2009. 94 MATSUMOTO, Yukihiro. Sobre o Ruby. Disponível em: http://www.ruby-lang.org/pt/sobreo-ruby/. Acesso em: 17 nov. 2009. MILARÉ, Édis. Direito do ambiente: doutrina, prática, jurisprudência, glossário. São Paulo: Editora dos Tribunais, 2000. NING. Site Oficial do Ning. Disponível em: http://www.ning.com/. Acesso em: 08 nov. 2009. O’REILLY, Tim. Citações sobre Ruby on Rails. Disponível em: http://www.rubyonrails.pro.br/citacoes Acesso em: 04 nov. 2009. OLIVEIRA JR., Eustáquio Rangel de. RUBY. São Paulo : Brasport, 2005. ORKUT. Site Oficial do Orkut. Disponível em: http://www.orkut.com/. Acesso em: 08 nov. 2009. PAIVA, Moriael. Como Obama usará as redes sociais como presidente? Disponível em: http://webinsider.uol.com.br/. Acesso em: 09 nov. 2009. PILGRIM, Mark. Mergulhando no Python. Rio de Janeiro : Alta Books, 2005. PRESSMAN, Roger S. Engenharia de Software. São Paulo: Makron Books, 1995. RECUERO, Raquel. Redes Sociais na Internet. Porto Alegre: Sulina, 2009. ROSSUM, Guido van. História do Python. Disponível em: http://www.python.org/doc/essays/foreword.html Acesso em: 07 nov. 2009. SILVA, José Afonso da. Direito ambiental constitucional. 2. ed. São Paulo: Malheiros, 1997. SILVA, Maurício Samy. Construindo Sites com CSS e (X)HTML. São Paulo : Novatec Editora, 2008. THOMAS, Dave. Programming Ruby. 2. ed. Dallas: 2004. ______, ______; HANSON, David. Agile Web Development with Rails. Dallas: 2005. 95 TWITTER. Site Oficial do Twitter. Disponível em: http://www.twitter.com/. Acesso em: 08/11/2009 14:25. VENNERS, Bill. The Philosophy of Ruby. Disponível em: http://www.artima.com/intv/ruby4.html. Acesso em: 17 nov. 2009. YOUTUBE. Site Oficial do Youtube. Disponível em: http://www.youtube.com/. Acesso em: 08 nov. 2009. 96 9 ANEXO A: INSTALAÇÃO DO RUBY ON RAILS NO UBUNTU Primeiramente instala-se o Ruby, neste caso, o Ruby 1.8. A partir do terminal do Linux são digitados os seguintes comandos: sudo apt-get install build-essential sudo apt-get install ruby1.8 ruby1.8-dev rdoc1.8 ri1.8 irb1.8 Agora é instalado o RubyGems, atualmente versão 1.3.5, que serve para a instalação de plugins e aplicações relacionadas ao Ruby, entre eles o Rails: wget http://rubyforge.org/frs/download.php/60718/rubygems-1.3.5.tgz tar xvzf rubygems-1.3.5.tgz cd rubygems-1.3.5/ sudo ruby1.8 setup.rb Em seguida são criados os links de acesso rápido para os pacotes do Ruby que foram instalados: sudo ln -s /usr/bin/ruby1.8 /usr/bin/ruby sudo ln -s /usr/bin/gem1.8 /usr/bin/gem sudo ln -s /usr/bin/ri1.8 /usr/bin/ri sudo ln -s /usr/bin/irb1.8 /usr/bin/irb sudo ln -s /usr/bin/rdoc1.8 /usr/bin/rdoc E a verificação se existe algum update para o RubyGems: sudo gem update –system sudo gem sources -a http://gems.github.com sudo gem sources -a http://gemcutter.org Depois é feita a instalação do Rails: sudo gem install rails sudo apt-get install libopenssl-ruby E por fim será feita a instalação do plugin (gem) do MySQL: sudo gem install mysql 97 10 ANEXO B: DIAGRAMA ENTIDADE RELACIONAMENTO ¹ Para melhor visualização foram ocultados os atributos das tabelas. 98 11 ANEXO C: MODELO, VISÃO E CONTROLADOR Controlador do envio de convites: class ConvitesController < ApplicationController def create @convite = Convite.new(params[:convite]) respond_to do |format| if @ convite.save flash[:notice] = 'Convite enviado com sucesso' send_email_convidar_amigo format.html { redirect_to(root_path) } else flash[:warning] = 'Você deve informar um email válido' format.html { redirect_to(root_path) } end end end private #Envia email (convidar amigo) def send_email_convidar_amigo corpo = <<-CODE <b>Olá,</b><br /><br /> <b>#{@convite.user.name} está te convidando para participar do Cigno.<br /></b> <b>Acesse agora mesmo e faça seu cadastro!</b><br /><br /> <b>http://www.cigno.com.br</b><br /> CODE Email.deliver_padrao(:corpo => corpo, :assunto => "Convite para o Cigno", :para => @convite.email) end end Modelo do envio de convites: class Convite < ActiveRecord::Base belongs_to :user validates_presence_of :email, :message => 'Favor informar o email' validates_format_of :email, :with => /^[-a-z0-9_+\.]+\@([-a-z0-9]+\.)+[a-z0-9]{2,4}$/i validates_length_of :email, :maximum => 50, :message => 'O Email não pode ter mais que 50 caracteres' end 99 Visão do envio de convites: <div id='mti01'> <div id='lft'> <p class='rmt01'>Convidar Amigos</p> </div> </div> <% semantic_form_for(@new_convite) do |f| %> <%= f.input :email, :label => false, :input_html => { :class => 'nrm01' } %> <%= f.input :user_id, :as => :hidden, :value => current_user.id %> <%= f.commit_button 'Enviar', :button_html => {:class => 'h01'} %> <% end %>