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 %>
Download

TCC II - André Luiz Dallacorte