Cyou

From Laboratório MM 5

Revision as of 04:14, 18 January 2011 by Liliana (Talk | contribs)
Jump to: navigation, search

Contents

Introdução

The Web is more a social creation than a technical one. I designed it for a social effect—to help people work together—and not as a technical toy. —Tim Berners-Lee, Weaving the Web (1999)

A proliferação mundial da tecnologia, da Internet e o boom dot.com fez com que se procedesse à evolução da criação de páginas para a Web. A explosão da Web 2.0 levou a ter presente os seguintes conceitos: páginas dinâmicas, partilha de conhecimento, formas de interacção, criação e edição de conteúdos, grupos, comunicação (as)síncrona e identidade.

Objectivo do documento

Face a esta realidade, serve o presente documento como suporte ao projecto, que surge no âmbito das unidades curriculares Laboratório Multimédia V, Implementação e Controlo de Projectos e Gestão de Empresas e, que tem por objectivo conceber e desenvolver um website que se insira no contexto Web 2.0. No que diz respeito à sua implementação tem como coordenadores, os docentes Hélder Caixinha e Lícinio Mano.

Definiram-se como objectivos gerais do projecto:

Definiram-se como objectivos específicos:

Visão geral do projecto

Cyou é o nome da rede social que pretende aproximar as pessoas e reconhecê-las em tempo real. Através da API da Google, o utilizador consegue partilhar a sua localização em tempo real, interagindo com os diferentes membros através de mensagens no mural e visualização das suas diferentes localizações.

De forma sucinta, esta apresenta as seguintes funcionalidades:

  1. Publicação de mensagens no Mural (comunicação assíncrona);
  2. Edição de dados/perfil;
  3. Inserção de comentários ao perfil e fotos;
  4. Serviço de localização do utilizador;
  5. Acesso ao mapa de localização dos amigos, conhecidos e desconhecidos;
  6. Procura de localizações;
  7. Acesso ao sistema de ajuda do tipo FAQ e inserção de novas questões, reguladas por um administrador interno;



>>> FALTA TEXTO

Base de dados desenvolvida

“Web users ultimately want to get at data quickly and easily. They don't care as much about attractive sites and pretty design.” —Tim Berners-Lee, 1955
Fig.1-Base de Dados da rede social Cyou

A Base de Dados Cyou armazena os dados de treze tabelas, apresentando como Sistema de Gestão de Base de Dados Relacional, o MySQL.Assim, prosseguiu-se à determinação de:

1.Tabelas

As tabelas apresentam-se como sendo a estrutura básica em que a informação é armazenada. As entidades que foram identificadas no momento em que se repensaram as funcionalidades da rede social, foram:

1.1.Profile

A entidade profile é onde se encontra a informação relativa ao utilizador que acede à rede social. Diferentes tipos de informação são armazenados:

  • Informação pessoal que provém do registo na aplicação (ex.: nome, apelido, data de nascimento, descrição);
  • Informação de registo e login (ex.: email e password);
  • Informação de edição de perfil (ex: fotografia, status);

No que concerne à parametrização de dados, a maior parte dos campos são do tipo varchar, algumas variáveis booleanas como auto-login, gender e active e int como o id_profile e a privacidade.

1.1.1.Friends_profile_AA

Em Web 2.0, encontra-se muito presente o conceito de colaboração. Para tal, é preciso que o perfil do utilizador esteja ligado a outros perfis e é a entidade friends_profile_AA que armazena as informações dessa relação. Os ids de cada perfil são do tipo INT e o estado_amizade, do tipo varchar.

1.2.Location

A entidade location armazena informação relativa à latitude, longitude e a morada definida aquando o registo. Os dados são do tipo float e a morada é do tipo varchar.

1.3.Msg

A tabela com a designação msg armazena a informação relativa a mensagens de mural próprias de cada perfil como a localização, o texto, a pessoa, imagem e o id do profile a que se destina. Os ids são do tipo int e o texto da mensagem são do tipo TEXT, a fim de não haver uma grande limitação de caracteres na mensagem.

1.3.1.Msg_like

De forma a proporcionar a concordância e discordância entre utilizadores, implementou-se o mecanismo de (dis) likes nas mensagens. Assim, é armazenado o id da mensagem, o id do perfil (do tipo int) e a variável booleana like.

1.4.Photo

A tabela photo armazena o id da foto, o id da localização e os atributos próprios para armazenar a fotografia (filename e texto). Como tal, os ids são do tipo int, o filename do tipo varchar (que irá buscar o caminho da imagem) e a descrição/texto do tipo text.

1.4.1.Photo_like

O mesmo mecanismo que se segue para msg_like, passa-se com photo_like. Assim passa a ser armazenado o identificador da fotografia, o id do perfil (do tipo int) e o estado booleano like.

1.5.Plan

Uma nova tabela surge com a integração do tipo de plano escolhido pelo utilizador. Esta irá armazenar o tipo de plano (free e premium) e, também, a data inicial e final em que o utilizador passou a ser premium. Por essa razão em que só se armazena apenas a data inicial e final do que o utilizador é premium, o plano deixa de ser atributo do perfil e faz parte de uma nova tabela. No que diz respeito à parametrização de dados, o id e o tipo de plano são inteiros e a data inicial e final são do tipo date.

1.6.Faq

Uma das formas de prestar auxílio ao utilizador na rede social cyou é através de FAQ. Assim é armazenada a pegunta do tipo text, o estado booleano de activo ou não, nome da pessoa e email (varchar).

1.6.1.Id_categoria

Dado que se pode inserir novas categorias a rotular novas questões no faq, serve a tabela do id da categoria do tipo inteiro e a descrição do tipo varchar.

1.6.2. Resposta_faq

É o administrador que responde às questões de FAQ, sendo necessária uma entidade que armazene o id da resposta, a resposta e o id do perfil. Os ids são do tipo inteiro e a resposta do tipo text.

1.7. Privacy

O utilizador pode controlar a privacidade, indicando o que quer ou não tornar público – control settings (perfil, mensagens de mural, fotografia, localização e amigos). Assim, para as diferentes tabelas, é acrescentado o atributo de privacidade. Estas são dp tipo inteiro.


Uma vez identificadas as entidades e as propriedades armazenadas, segue-se a determinação das relações existentes entre elas, dependências e tabelas de relação.

- Relações 1:1 do tipo Identifying

A relação 1:1 existe entre profile e plan (cada utilizador tem um tipo de plano free ou premium e vice-versa); profile e privacy (cada utilizador tem um tipo de privacidade e cada tipo de privacidade diz respeito a um e um só utilizador) e entre faq e resposta_faq (para cada pergunta, só há a resposta do administrador). Estas relações são do tipo identifying dado que as tabelas plan e privacy são dependentes da tabela profile e a resposta_faq da faq.

- ''Relações 1:M do tipo Non Identifying''

A relação 1:M do tipo Non Identifying encontra-se presente na relação que existe entre as entidades faq e id_categoria (cada questão apresenta apenas uma categoria e cada categoria diz respeito a várias questões), entre profile e resposta_faq. Ambas as relações são do tipo non identifying porque não existe dependência entre as tabelas.

Esta relação também existe entre as tabelas profile e msg, profile e location, msg e photo, photo e location e msg e location.

- ''Relações M:M''

A relação M:M existe entre profile e msg (cada utilizador pode enviar várias mensagens e cada mensagem pode ser enviada por vários utilizadores), tendo como tabela intermédia msg_like em se procede ao (dis)like da mesma. A mesma relação repercute-se entre a tabela profile e photo (cada utilizador pode submeter várias fotografias e cada fotografia pode ser submetida por vários utilizadores), tendo como tabela intermédia photo_like em que se procede ao seu (dis)like.

-''Auto-associações''

As auto-associações existentes na base de dados ocorrem nas tabelas msg e profile. No que diz respeito à tabela profile, para representar as amizades entre os diferentes utilizadores, definiu-se uma auto-associação entre id_profiles, armazenando o atributo estado_amizade. No que concerne a tabela msg, há uma auto-associação da mensagem e comentário (Cada mensagem no mural pode ter vários comentários e cada comentário diz respeito apenas a uma mensagem).

Depois da base de dados modelada e a geração do código SQL, procedeu-se à sua implementação (execução de scripts de criação, leitura e carregamento de dados), sua administração e configuração do servidor de base de dados (localhost) e, por fim, ao desenho das queries visualmente através do FlySpeed e editor do Workbench.


Implementação

“A good idea is about ten percent and implementation and hard work and luck is 90 percent" —KAWASAKI, Guy
<source lang="php">
<?php
class Person {
   function __construct() {
        print "O construtor é chamado automaticamante quando o objeto é instanciado!";
    } /* Constutor */
    function __destruct() {
        print "Destruímos o objecto...";
    } /* Isto de colocar aqui código atrofia 1 pouco */
}
?>
</source>



    echo <?php if( $a == 1 || $a == 2 ) {
    if( $b == 3 || $b == 4 ) {
        if( $c == 5 || $ d == 6 ) {
             //Do something here.
        }
    }}?> You could just simply do this:
<?php
if( ($a==1 || $a==2) && ($b==3 || $b==4) && ($c==5 || $c==6) ) {
    //do that something here.
}
?> 

Descrição das principais funcionalidades da aplicação Web

Mapa de páginas

Integração (e.g. Flash, AJAX Frameworks, etc)

Desenvolvimentos Futuros

“We realize that we can still play better. Were still improving. We make advances every day and we continue to make advances.” BELSKY, Andrew

Sobre base de dados

Conclusões

A project is complete when it starts working for you, rather than you working for it.” ALLEN, Scott

Bibliografia

Livros

Web

Glossário

Internet- O maior conjunto de redes de dados do mundo, tendo em comum apenas a utilização do protocolo TCP/IP.

boom dot.com- Especulação nas bolsas de valores, no final dos anos 90, em relação às empresas baseadas na Internter. Dot.com enterprises. No contexto, refere-se ao crescimento da Internet comercial, da World Wide Web.

Web 2.0- Segunda geração de comunidades e serviços, assumindo o conceito Web como uma plataforma. Envolve wikis, redes sociais e Tecnologias da Informação.

Páginas dinâmicas- Páginas dotadas de flexibilidade na alteração do seu conteúdo, recorrem a bancos de dados ou formas de armazenamento de dados específicos. São o exemplo de páginas que utilizem linguagens de programação na base do servidor, como o PHP.

Website server-side- Website que necessita de um servidor para efectuar a tradução da programação para a página do cliente. Essa trradução é feita pelo servidor XAMPP do desenvolvedor Apache.

Multitier Architecture- Arquitectura de aplicações web em 3 camadas: Data Tier, Logic tier e Presentation tier.

Cascading Style Sheets/CSS- linguagem de folhas de estilo usado para a apresentação visual e formatação de um focumento escrito.

Javascript /JS- Linguagem do tipo interpretado, passível de ser lida nos browsers WWW mais utilizados do mundo e interpretada directamente no bowser.

Frameworks- conjunto de bibliotecas reutilizáveis ou classes para um sistema de software.

API/Application Programming Interface- conjunto de rotinas e padrões estabelecidos por um software para a utilização das suas funcionalidades por programas aplicativos.

Índice Remissivo

ÍNDICE REMISSIVO

A B C D E F G H I J K L M N O P Q R S T U V W X Y Z


B

C

D

I

L

* Base de Dados Control settings Delete Identifying Login
Insert

M

N

Q

R

MySQL Non Identifying Queries Recordsets
Personal tools
Namespaces
Variants
Actions
Navigation
Toolbox