Stori
From Laboratório MM 5
| Line 1: | Line 1: | ||
| + | [[File:header2.jpg]] | ||
==Introdução== | ==Introdução== | ||
Revision as of 02:38, 18 January 2011
Contents |
Introdução
O trabalho que a este relatório diz respeito foi-nos proposto no início do semestre, e tem vindo a ser pensado desde então. Além da disciplina de Laboratório Multimédia 5, estão envolvidas as cadeiras de Gestão de Empresas e Implementação e Controlo de Projectos Multimédia. Ao longo deste trabalho aplicamos os princípios Web 2.0, recorrendo a tecnologias como PHP, AJAX e jQuery. Assim, surgiu o projecto Stori, onde possibilitamos às pessoas uma das coisas que mais gostam de fazer, que é conhecer a vida alheia e ter ainda a possibilidade de comentar sobre ela. Ao longo de todo este trabalho, vai ser apresentado o desenvolvimento do projecto, assim como as dificuldades encontradas e soluções adoptadas pelo grupo.
Objectivo do documento
Com a realização deste documento, pretendemos expor como foi realizada toda a metodologia de trabalho e de que forma conseguimos aplicar todos os conceitos apreendidos ao longo do semestre. Assim, conseguimos compreender qual a melhor forma de estruturar e desenvolver um projecto com esta magnitude.
Visão geral do projecto
Após realizarmos vários brainstormings e outras técnicas de apoio à criação e inovação, a ideia explorada surgiu ao procurarmos abordar um conceito que não existisse já no mercado. Embora a partilha de histórias (ou de qualquer coisa que se pretenda escrever) seja já possível na internet, nomeadamente através de blogs pessoais, não existia previamente um site destinado apenas a esse efeito, possibilitando inclusive a categorização (Bizarras, Divertidas, Constrangedoras, etc.) dos diferentes tipos de histórias. A ideia é a de um site que permite ao utilizador partilhar situações pelas quais tenha passado, e que pretenda dar a conhecer. Alguém que tenha algo para partilhar, e não possua já um blog pessoal, não quererá proceder à criação de um apenas para esse evento singular, podendo em alternativa dirigir-se à nossa plataforma. É importante também salientar que existirá, um sistema de classificação das histórias que influencia a ordem de aparição das mesmas, permitindo assim uma maior interacção entre a comunidade. Este factor será importante no caminho gradual para a formação de uma comunidade à volta do projecto. Explicado o conceito base do nosso projecto, iremos de seguida, ao longo deste relatório, apresentar a componente técnica que o suporta.
Base de dados desenvolvida
Na fase de desenvolvimento da base de dados, recorremos à ferramenta de trabalho MySQL Worbench 5.2. Este instrumento de trabalho permitiu-nos organizar os nossos conteúdos e estruturar de forma lógica a informação a armazenar. A base de dados foi construída tendo em conta o funcionamento da nossa aplicação. O nosso modelo é relativamente simples, sendo constituído por cinco tabelas ligadas entre si, seguindo o modelo relacional. A tabela principal está destinada a reter a informação relacionada com as propriedades das histórias (como o título, data da publicação, e a história em si). Esta está ligada a duas tabelas mais pequenas, destinadas a guardar, respectivamente, a categoria relativa a cada história e a sua classificação. Também ligada à tabela das histórias está a tabela relativa aos utilizadores, destinada a guardar os dados que lhes dizem respeito (como o seu nome ou email). Esta, por sua vez, está também ligada a uma tabela mais pequena, que contém os dados relativos à categoria de cada utilizador (1 - administrador ou 2 - utilizador normal). Sendo que um utilizador, ao registar-se na nossa plataforma, não poderia escolher ser administrador da mesma, incluímos previamente na base de dados a informação relativa ao administrador, classificado como tal, e incluímos no formulário de registo de novos utilizadores um campo escondido, que atribui a cada novo utilizador a categoria 2, ou seja, de utilizador normal.
Implementação
Descrição das principais funcionalidades da aplicação Web
Ao realizarmos a implementação do site, procuramos seguirmos uma linha de simplicidade, mas sempre com o conceito de funcionalidade bastante presente. Desde o início do trabalho, projectamos uma aplicação onde fosse possível aplicar todos os conceitos apreendidos nas aulas. Uma das primeiras funcionalidades que o utilizador vai encontrar ao aceder ao site, vai ser desde logo a possibilidade de realizar o registo para conseguir aceder a página principal. No formulário de registo, caso o utilizador pretenda aceder a aplicação, tem de preencher obrigatoriamente os campos presentes, exceptuando o campo “fotografia”. Este último possibilita realizar o upload da foto de quem se está a registar, permitindo ao novo membro ter uma foto sua na página de perfil. Após o registo o utilizador tem a possibilidade de alterar os dados criados, como o seu nome, password, email, fotografia e o conteúdo da sua história. A realização do “login” é também uma das funcionalidades presentes no contexto da aplicação. Através da autenticação dos seus dados o utilizador vai conseguir aceder ao site propriamente dito. Na página de login existem dois campos, username e password, onde será necessário o seu preenchimento de maneira a prosseguir. Na página principal, o utilizador terá a possibilidade de escolher entre ver as histórias disponíveis, através de páginas destinadas às suas respectivas categorias, seleccionar uma história para ler, editar o seu conteúdo ou mesmo apagar a história (opções disponíveis apenas para o administrador), editar o conteúdo dos campos relativos ao seu perfil, verificar a lista de utilizadores registados e apagar utilizadores (possível apenas ao administrador), ou publicar uma nova história. Este será o local onde o utilizador terá a possibilidade de realizar a partilha da informação que pretender. Terá para isso que preencher os campos presentes no formulário, onde terá a opção de escolher a categoria que se enquadra com a história que pretende publicar. Aqui tal como no formulário de registo, é possível adicionar uma imagem que pretendermos, de maneira a possibilitarmos a ilustração da história. Após a publicação da mesma, o utilizador é redireccionado para a página de índex, podendo depois visualizar a história que publicou na categoria que escolheu. A possibilidade de realizar a edição dos conteúdos está neste momento apenas disponível ao administrador. Esta edição é possível através de um formulário, onde se encontra a informação armazenada relativa à história em questão, sendo possível alterá-la aí mesmo.
Mapa de páginas
Server Behaviours utilizados
Em todas as páginas, exceptuando a página de login e de registo, utilizamos a opção de restringir a visualização de conteúdo apenas para utilizadores identificados previamente. Em algumas páginas, quando achámos necessário, utilizamos também a opção de restrição respeitante ao nível de acesso do utilizador, permitindo que estas fossem apenas visualizadas pelo administrador. Na página de registo e na que permite publicar uma nova história, recorremos à função Insert Record para inserir a nova informação na base de dados. Utilizamos a função Check New Username de modo a que fosse possível verificar se o username que o utilizador escolhe já se encontra em utilização. Nas páginas de log in/log out, recorremos às respectivas funções. Recorremos à função Delete Record nas páginas que permitem apagar uma história e na página que exibe a lista dos utilizadores registados. A função Update Record foi usada na página de edição de uma história e na página de detalhes do utilizador. Utilizámos Repeat Regions nos campos onde a informação é disposta, nas diversas páginas relativas às categorias e na página que mostra os resultados da pesquisa. Nesta última recorremos ainda à função Display Total Records para mostrar o número de resultados, assim como funções que permitem mostrar mensagens se não for introduzida uma palavra no campo de pesquisa, ou se esta não obtiver resultados.
Recordsets/Queries utilizados
Recorremos frequentemente a recordsets e queries, para conter e apresentar a informação relativa aos utilizadores (rs_utilizadores) e notícias (rs_noticias), assim como aos parâmetros a estes associados (rs_tipo_utilizador, rs_categorias), ou para funções como editar e guardar informação (editar_historia) ou visualizar resultados de uma pesquisa (rs_pesquisa). Em todas as páginas relativas às categorias, utilizamos recordsets para conter a informação correcta a ser seleccionada, sendo depois apresentada com o recurso a queries. Recorremos à utilização de texto dinâmico para apresentar a informação correcta nos campos respectivos, por exemplo quando o utilizador selecciona uma história para ler. Este atributo foi-nos útil também para apresentar o nome do utilizador quando este faz o log in e se depara com a página de índex, por exemplo.
Parâmetros passados entre páginas
Recorremos à passagem de parâmetros entre páginas, nomeadamente id’s, para permitir identificar a informação correcta que deverá ser apresentada numa página, como por exemplo na página de perfil, que deverá apresentar a informação relativa ao utilizador que se encontra logado nesse momento. Utilizámos este mesmo mecanismo para apresentar a história correcta, na página relativa à leitura da mesma, após o utilizador ter seleccionado uma das histórias disponíveis nas páginas que contêm as categorias.
Integração (e.g. Flash, AJAX Frameworks, etc)
Desenvolvimentos Futuros
Stori é uma aplicação diferente de todas as outras, sendo semelhante em apenas alguns aspectos. Tem como principal objectivo para o futuro melhorar algumas áreas fundamentais. Stori já tem em vista a criação de novas funcionalidades na aplicação, como por exemplo a possibilidade de os utilizadores incorporarem vídeos. No formulário de publicação das histórias, existirá uma zona de upload de vídeo, possibilitando assim ao utilizador incorporar nos seus posts. Assim torna-se possível ilustrar uma história recorrendo a vídeo, existindo a hipótese de criar uma história recorrendo a escrita ou ao upload de uma filmagem. Numa fase mais avançada, implementaríamos a opção de “Utilizador Premium”, acessível através de uma doação monetária de valores a definir, que incluiria, entre outras vantagens, o acesso ao site sem publicidade. Pretendemos também no futuro, implementar na aplicação restrição por idades. Uma vez que o site foi desenvolvido com o intuito de categorizar as histórias, é importante existir uma restrição por idades em determinadas categorias. Sendo que existem categorias como picantes ou bizarras, que por vezes podem conter histórias menos próprias para certas idades. A principal implementação que pretendemos integrar na aplicação é um sistema de classificação das histórias. Este sistema consiste em permitir ao utilizador, seleccionar o número de estrelas (de 1 a 5) que acha conveniente para classificar a história. Esta informação seria guardada na base de dados (que já possui uma tabela para isto). Tentámos implementar esta funcionalidade, mas não nos foi possível, devido principalmente às nossas limitações. Este foi, de resto, o principal problema que encontrámos ao longo do desenvolvimento do site, e que preveniu a implementação de funcionalidades mais complexas, como a opção de re-sizing das imagens, ao ser feito o upload das mesmas, ou a utilização de um slider dinâmico na leitura de histórias, evitando recorrer ao scroll. Todas estas funcionalidades foram investigadas pelo grupo, e procurámos aplicá-las no projecto, mas não conseguimos concluir este processo com sucesso, pelo que seriam melhoramentos a considerar numa futura versão do site.
Conclusões
Com o desenvolvimento deste trabalho, tornou-se compreensível como devemos proceder na criação de um projecto em que englobamos diferentes tecnologias (PHP, AJAX e jQuery). Assim conseguimos desenvolver uma aplicação Web 2.0 capaz de sustentar o conceito do nosso trabalho. Ao longo de todo o processo de implementação foram surgindo percalços, mas que foram solucionados com a aplicação dos conhecimentos adquiridos nas aulas. A implementação de conteúdos mais complexos foi-nos muito dificultada devido aos nossos parcos conhecimentos no assunto, pelo que não nos encontramos plenamente satisfeitos com o resultado final comparativamente ao que idealizámos, mas temos noção das nossas limitações no que diz respeito a esta matéria.
6. Referências bibliográficas
http://php.net/manual/ http://www.kirupa.com/developer/actionscript/flash_php_mysql.htm http://sandbox.ronggur.com/2009/05/30/jquery-tutorial-simple-ajax-star-rating-with-php/ http://net.tutsplus.com/tutorials/html-css-techniques/building-a-5-star-rating-system-with-jquery-ajax-and-php/ http://www.tizag.com/htmlT/htmlhidden.php

