Hireme

From Laboratório MM 5

(Difference between revisions)
Jump to: navigation, search
(Novas Implementações)
 
(90 intermediate revisions not shown)
Line 1: Line 1:
-
Espaço reservado para o relatório dos excelentíssimos:
+
[[File:Header.png | center | 600px ]]
-
Andreia Peixoto
+
-
Olga Correia
+
-
Samuel Manso
+
-
Sara Macedo.
+
==Introdução==
==Introdução==
 +
 +
Após um brainstorming onde fluíram os mais variados conceitos e ideias, o grupo decidiu focar-se numa forma de permitir a indivíduos a exposição do seu percurso escolar, académico e profissional. É cada vez mais comum que um estudante, após terminar o ensino superior, tenha um site pessoal com os trabalhos que realizou na universidade e possíveis colaborações com o mundo profissional. Pretende-se com esta nova plataforma facultar uma forma fácil e directa de expôr esses mesmos trabalhos para pessoas com muita ou pouca literacia tecnológica. A ideia para a plataforma foi evoluindo de forma abrangente e rica, passando a permitir uma dualidade de perfis. Por um lado, o perfil intitulado de "Candidatos", onde qualquer indivíduo poderá expôr o seu percurso académico, profissional e respectivos trabalhos, bem como terá de preencher um formulário de testes psicotécninos. Por outro lado, foi adicionado o perfil de "Empresa", onde as empresas se podem registar, mediante subscrição, e aceder a toda a base de dados disponível na plataforma, servindo-lhes como uma poderosa ferramenta de gestão de recursos humanos, onde é possível pesquisar candidatos ao maior detalhe imaginável para encontrar o tipo de perfil indicado para preencher um cargo numa empresa.
 +
 +
===Abstract===
 +
 +
 +
In this difficult times, people have as much difficulties to find the right job, as companies have difficulties to find the right person for the position. In order to solve this dilemma, and taking advantage in all that internet offers, we create Hire me. This project will be associated with your local town's companies in order to create the best shot the candidate can get to find a job that suites him/her as much as suits the opening in the company.
 +
 +
How, you might ask. Well, this site proposes a totally different way of exposing the candidate's information by creating a personal profile to each person that includes professional experience, past jobs, education and so on. On the other hand, It displays a search engine much more accurate in order find the right person for the job. We also offer a psychometric test to best describe the person ability's and not led on the the others with not so true self-statements.
 +
 +
Key-words - PHP; Base de dados; MySql; Server Behaviors, Recordsets; Queries; redes socais.
===Objectivo do documento===
===Objectivo do documento===
-
o objectivo do projecto é...
+
 
 +
Este documento serve de suporte ao projecto HireMe que surge no âmbito das unidades curriculares Laboratório Multimédia 5, Implementação e Controlo de Projectos Multimédia e Gestão de Empresas. O objectivo do mesmo é planificar e desenvolver um website no contexto da Web 2.0.
 +
 
 +
Deste modo, este documento servirá como um guião da construção deste mesmo site, explicando os seus procedimentos ao longo do seu desenvolvimento, as dificuldades sentidas ao longo do mesmo e evoluções futuras do projecto.
 +
 
===Visão geral do projecto===
===Visão geral do projecto===
-
===Subtítulo 1===
+
A internet é cada vez mais o meio de comunicação mais abrangente. De uma forma inovadora, o site HireMe associar-se-à a empresas do país para lhes proporcionar uma irrepreensível actividade de consultoria. Por outro lado, tornar-se-à, também, na maior plataforma online de procura de emprego, oferecendo aos candidatos propostas aliciantes de trabalho.
 +
 +
Este site tem como objectivo proporcionar aos nossos utilizadores candidatos uma experiência agradável, intuitiva e simples de exporem os trabalhos a que tanto se dedicaram de forma valorizada, bem como facultar-lhes oportunidades de emprego na sua área de formação. Por sua vez, os consultores de empresas terão acesso a uma inovadora ferramenta de gestão e pesquisa inteligente de candidatos que poderão seleccionar para vagas em posições na sua empresa tendo por base o perfil mais adequado ao cargo.
 +
 
 +
Para concluir Hire me permitirá:
 +
 
 +
::*Editar os dados do perfil;
 +
::*Personalização do perfil;
 +
::*Fazer upload de ficheiros para o portfólio;
 +
::*Realizar testes psicotécnicos;
 +
::*Adicionar amigos;
 +
::*Inserção de comentários;
 +
::*Consultar uma pesquisa simples e/ou avançada;
 +
::*Manutenção (backoffice);
 +
::*Troca de mensagens privadas (PM'S).
 +
 
 +
==Especificações e Design Gráfico==
 +
:::'''Nome do Projecto'''
 +
 
 +
No que diz respeito a este tópico, o grupo tentou focar-se no que gostaria que o nome transmitisse sobre o projecto. Para isso, centramo-nos na relação instantânea ao universo de conceitos  relacionados com a procura de trabalho e tudo o que ela implica:
 +
 
 +
::*currículos (“cv”, “portefolio”)
 +
::*a necessidade de ser melhor e se distinguir dos outros  (“hire”, “choose”, “solution”)
 +
::*o foco no eu e nas capacidades do indivíduo (uso do “me”)
 +
 
 +
Daí surgiram as seguintes propostas:
 +
 
 +
::*Perfil cv
 +
::*Arquivo
 +
::*Portefolio
 +
::*meetMe
 +
::*hireMe
 +
::*pickMe
 +
::*chooseMe
 +
::*iHire
 +
::*yourSolution
 +
::*Start
 +
''(NR:O facto de se usarem expressões inglesas diz respeito à futura universalidade do projecto.)''
 +
 
 +
 
 +
De todas, a que se sobressaiu foi a “Hire me” já que a expressão “hire” remete momentaneamente para para o mundo do trabalho e o “me” foca-se no indivíduo e na forma em como o próprio se poderia tornar a solução para o lugar vago de uma empresa.
 +
 
 +
 
 +
:::'''Estudo de Logótipo'''
 +
 
 +
:::[[File:logo.png | 200px ]]
 +
 
 +
Quanto à escolha do logo, a ideia é que este fosse simples e que chamasse a atenção. Em realidades quase ultrapassadas era usual uma pessoa que estivesse à procura de trabalho abrir um boletim de classificados e marcar as ofertas de trabalho que lhe poderiam interessar.
 +
Como a dinâmica deste site é o contrario, a ideia é remeter o utilizador que, a pessoa em causa é a escolha certa para o lugar vago. Para isso , recorreu-se ao uso de uma tipografia simples e clara, circundada por um desenho aparentemente manual que indica a escolha. O ponto de exclamação serve para reafirmar a expressão em si, e transmitir confiança no titulo.
 +
 
 +
 
 +
:::'''Estudo de Cor'''
 +
 
 +
:::[[File:cores.png | 150px]]
 +
 
 +
A escolha destas cores recaiu no facto de serem cores simples e “clean”. O preto e os diversos tons de cinzento são usados como mancha e para textos simples. O branco é usado como fundo e como contraste. Já o vermelho é usado como forma de destaque de elementos, sendo que é a unica cor “viva” dentro desta palete. Assim, não há tanta confusão visual.
 +
 
 +
 
 +
:::'''Estudo do tipo de Letra'''
 +
 
 +
Tipo de letra utilizado no Logótipo: '''Tw Cen MT''' - Letra de simples compreensão, não serifada.
 +
 
 +
Tipo de letra utilizado no site : '''Tahoma''' - Simples e universal. Assim, caracteriza-se por ser um tipo de letra não serifado e próprio para a Web.
 +
 
 +
==Base de dados desenvolvida==
 +
[[File:HireMe BD-01.jpg|500px]]
 +
 
 +
Desde o início do projecto que desejavamos ser bastante ambiciosos. Pretendíamos implementar um vasto conjunto de funcionalidades por forma a enriquecer a plataforma, tais como:
 +
 
 +
::*Candidatos: personalização de perfil, introdução e edição de informações sobre percurso académico, profissional, formações externas, inserção de portefólios, inserção de colegas de trabalho, envio de PMs e testemunhar perfis de colegas.
 +
 
 +
::*Empresas: aceder à base de dados de candidatos através de pesquisas avançadas, permitindo escolher melhor o perfil do candidato que pretende para a sua empresa. Esse candidato pode ser adicionado a uma bolsa de candidaturas e posteriormente ser contactado para uma entrevista. Dessa entrevista, a empresa poderá tirar notas e mesmo determinar uma classificação final para o indivíduo, tudo na plataforma.
 +
 
 +
A imensidão de funções, que resultou numa base de dados com bastantes entidades e relações entre elas, influenciou o desenvolvimento do projecto. Ainda que a maioria das funções tenha sido implementada, serão mencionadas mais à frente as funcionalidades que, por escassez de tempo, não puderam ser implementadas.
 +
 
 +
==Implementação==
 +
 
 +
====Universalidade====
 +
Desde o início que ambicionávamos que o site pudesse ser facilmente traduzido para outras línguas. Ainda que para o contexto deste projecto, a única língua disponível seja o Português, todo o mecanismo para uma facil tradução do mesmo foi implementado através da leitura de ficheiro XML. Deste modo, para uma futura tradução do site, é apenas necessário, dentro do XML, criar um novo elemento com o idioma em questão e traduzir os diversos "nodes".
 +
 
 +
====Testes Psicotécnicos====
 +
 
 +
O grupo apercebeu-se do quão limitadora é a informação disponibilizada nos curricula por parte dos utilizadores. Qualquer um pode dizer que é dinâmico ou criativo, mas a verdade é que a empresa não tem forma de o saber. De forma a tentar dar alguma veracidade aos dados, implementaram-se testes psicotécnicos de algumas características base, de forma a avaliar o individuo. Apesar de o grupo ter noção que mesmo estes dados podem ser manipulados, sempre existe um maior controlo da informação final.
 +
 
 +
Estas características vão ser ainda incluídas como um elemento diferenciador dos candidatos. Uma empresa para além de procurar pelas competências mínimas que necessita, poderá também procurar as características que são indispensáveis para o bom funcionamento da mesma. Assim, pode excluir logo à partida os candidatos que não lhe interessa e poupar tempo em entrevistas desnecessárias.
 +
 
 +
 
 +
===Descrição das principais funcionalidades da aplicação Web===
 +
 
 +
As principais funcionalidades da rede social HireMe agrupam-se em quatro grandes categorias:
 +
 
 +
::*Funcionalidades Gerais, onde é possível ter acesso à pagina inicial, de registo, e de login.
 +
Há a possibilidade do utilizador registar-se e consequentemente criar uma nova conta, preenchendo diversos parâmetros de um formulário de registo (perfil, email, password e idioma).
 +
Após este, o utilizador consegue efectuar o login com os respectivos dados de registo (email e password). Para o caso do utilizador se esquecer da password tem disponível a funcionalidade de recuperá-la;
 +
 
 +
 
 +
::*Funcionalidades de Candidatos a Empresas, onde o utilizador pode criar um perfil, editar dados pessoais (nome, morada, numero identificação e foto de perfil), mostrar todo o seu percurso académico e profissional com a mais valia de agregar todo o seu portefolio.
 +
Em relação à página de perfil, esta tem a funcionalidade de ver e adicionar testemunhos tanto por parte de outros candidatos como das empresas.
 +
O candidato tem disponíveis testes psicotécnicos que ajudam à sua caracterização de modo a favorece-lo na pesquisa das empresas.
 +
Este pode, igualmente, adicionar cursos ao seu percurso académico e formações ao seu percurso profissional.
 +
Tem ao seu dispor uma página de competências para seleccionar as que melhor o identificam.
 +
Na página de portefólio, é possível criar-se um conjunto de portefólios que integram os trabalhos realizados pelo candidato, que pode efectuar o upload sob a forma de diferentes tipos de ficheiros (video, fotografia, relatórios/dissertações, ficheiros audio).
 +
Nesta mesma secção há ainda a funcionalidade de receber comentários, tanto nos portefólios como nos trabalhos adicionados, que necessitam de aprovação por parte do utilizador.
 +
Com o intuito de haver uma maior interactividade há a possibilidade de pesquisar, visualizar outros perfis, adicionar colegas de trabalho e trocar mensagens privadas entre estes, como responder às possíveis PM's recebidas pelas empresas.
 +
Por último, a secção de ajuda permite consultar informação relacionada com os aspectos mais importantes do site.
 +
 
 +
 
 +
::*Funcionalidades de Empresas, com a possibilidade do utilizador criar um perfil, preencher e editar os dados da empresa (nome, morada, nif, cae e foto de perfil), criar bolsas de candidatos conforme as categorias de cargos a preencher e, ainda, realizar pesquisas pormenorizadas que permitem encontrar novos candidatos.
 +
 +
A empresa poderá criar uma nova bolsa de candidatos especificada por área de formação, permitindo adicionar potenciais candidatos resultantes da pesquisa detalhada. Uma vez adicionados estes podem ser excluídos, como também é possível visualizar o seu perfil e enviar mensagens privadas de forma a poder marcar entrevistas de trabalho.
 +
 
 +
De acordo com a pesquisa de candidatos, a empresa terá que preencher um formulário detalhado que serve de auxílio à filtração dos diversos utilizadores.
 +
 
 +
Através do ícone de mensagem, presente no lado esquerdo da página, é permitida a consulta das mensagens recebidas.
 +
Tal como nas funcionalidades dos Candidatos a secção de ajuda está disponível para consulta de informação relacionada com os aspectos mais importantes do site.
 +
 
 +
::*Funcionalidades do Administrador, onde se realiza a validação das empresas.
 +
Na secção de administrador, o utilizador gere a autenticação das empresas, recentemente registadas, aprovando ou não a autorização para a empresa poder utilizar o nosso serviço.
 +
 
 +
===Mapa de páginas===
 +
 
 +
[[File:arborescencia.png | 700px]]
 +
 
 +
===Server Behaviours utilizados===
 +
Os Servers Behavious são uma ferramenta do Dreamweaver que permitem uma maior facilidade na gestão dos conteúdos e permissões. Ao longo de todo o site, estes são alguns dos Server Behaviours utilizados:
 +
 
 +
- Dynamic Text Field: permite preencher um campo de texto dinâmicamente com valores da base de dados
 +
 
 +
- Repeat Region: permite dinâmicamente a listagem/construção de informação através de um recordset
 +
 
 +
- Show if Recordset is Not Empty: só executa o código caso as condições do recordset se verifiquem;
 +
 
 +
- LogIn / LogOut User: permite ao utilizador iniciar ou terminar sessão;
 +
 
 +
- Restrict Acess to Page - verifica se existe uma sessão iniciada. Caso não exista, o utilizador sem permissões é redireccionado para a home page e é-lhe mostrado um aviso dessa mesma situação.
 +
 
 +
- Insert Record - insere registos na base de dados
 +
 
 +
- Update Record - actualiza registos na base de dados
 +
 
 +
- Delete Record - apaga registos na base de dados
 +
 
 +
Para além destes server behaviours, recorreu-se com muita frequência à utilização/implementação manual de queries, para um maior controlo sobre o procedimento.
 +
 
 +
 
 +
===Recordsets/Queries utilizados===
 +
Ao longo do projecto, são utilizados utilizados vários recordsets constantemente em todas as páginas. São exemplos disso, listas de candidatos, do seu perfil, das suas formações, competências, empregos passados/actuais e portefólios. Estes recordsets, na sua maioria, foram construidos através do dreamweaver para uma maior facilidade e rapidez na implementação da ligação à base de dados e construção dinâmica de conteúdos. Contudo, em situações críticas em que a liberdade e expansão eram importantes, foram criados recordsets avançados, ou mesmo queries sem recorrer à ferramenta de recordsets do dreamweaver. São exemplo disso a inserção, a actualização ou o apagar de registos em múltiplas tabelas.
 +
 
 +
Construção de queries dinâmicas:
 +
              $query="SELECT Candidatos.fotoCandidato, Candidatos.nomeCandidato, Candidatos.idCandidato";
 +
              if ($_GET['curso_sup']==1) {
 +
              $query.=", Candidato_has_Curso.idCandidato";
 +
              }
 +
              if ($_GET['exp_prof']==1) {
 +
              $query.=", PercursoProfissional.idCandidato";
 +
              }
 +
              if ($_GET['formacao']==1) {
 +
              $query.=", Candidatos_has_Formacoes.idCandidato";
 +
              }
 +
              if ($_GET['psico']==1) {
 +
              $query.=", Candidato_has_TestePsicotecnico.idCandidato";
 +
              }
 +
              if ($_GET['portefolio']==1) {
 +
              $query.=", Portefolios.idCandidato";
 +
              }
 +
              if ($_GET['testemunhos']==1) {
 +
              $query.=", Testemunhos.idCandidatoChegada";
 +
              }
 +
              $query.=" FROM Candidatos ";
 +
              if ($_GET['curso_sup']==1) {
 +
              $query.="Inner Join Candidato_has_Curso On Candidato_has_Curso.idCandidato = Candidatos.idCandidato ";
 +
              }
 +
              if ($_GET['exp_prof']==1) {
 +
              $query.="Inner Join PercursoProfissional On PercursoProfissional.idCandidato = Candidatos.idCandidato ";
 +
              }
 +
              if ($_GET['formacao']==1) {
 +
              $query.="Inner Join Candidatos_has_Formacoes On Candidatos_has_Formacoes.idCandidato = Candidatos.idCandidato ";
 +
              }
 +
              if ($_GET['psico']==1) {
 +
              $query.="Inner Join Candidato_has_TestePsicotecnico On Candidato_has_TestePsicotecnico.idCandidato = Candidatos.idCandidato ";
 +
              }
 +
              if ($_GET['portefolio']==1) {
 +
              $query.="Inner Join Portefolios On Portefolios.idCandidato = Candidatos.idCandidato ";
 +
              }
 +
              if ($_GET['testemunhos']==1) {
 +
              $query.="Inner Join Testemunhos On Testemunhos.idCandidatoChegada = Candidatos.idCandidato ";
 +
              }
 +
              $query.=" ORDER BY Candidatos.idCandidato";
 +
 
 +
Para implementar a pesquisa avançada de candidatos, que é influenciada pelos parâmetros que a empresa quer incluir na sua pesquisa, foi necessário recorrer à construção dinâmica de queries, isto é, construir uma query através de PHP consoante os parâmetros de entrada definidos pelo utilizador empresa. A sua implementação foi feita passo a passo para assegurar que não era violada a integridade da mesma.
 +
 
 +
===Parâmetros passados entre páginas===
 +
Para a passagem de parâmetros entre páginas foram utilizados os dois métodos lecccionados na unidade curricular, tendo ambos as suas vantagens e desvantagens.
 +
A passagem de parâmetros pelo método POST foi sobretudo utilizado em formulários (pesquisa e adição/alteração de dados). Este método tem a vantagem de ser transparente para os utilizadores e, portanto, mais seguro.
 +
Por sua vez, a passagem de parâmetros pelo método GET apresenta a vantagem de ser vísivel para o utilizador (e para o programador), pelo que nos é mais fácil observar o comportamento da aplicação. Este método foi utilizado sobretudo na passagem de ID's para visualização de perfis e alteração de dados de perfil.
 +
 
 +
Para além da passagem de parâmetros entre páginas, será igualmente relevante referir nesta secção, o upload de ficheiros. O upload de ficheiros é utilizado no envio de uma foto de perfil e na criação dos portefólios, podendo ser de fotografias, música, vídeo ou dissertações. Por forma a combater o "overwrite" de possíveis ficheiros com o mesmo nome, foi criado um script para adicionar um timestamp ao início do ficheiro.
 +
 
 +
              if ((isset($_POST["MM_insert"])) && ($_POST["MM_insert"] == "form1")) {
 +
                $insertSQL = sprintf("INSERT INTO Portefolios (idCandidato, nomePortefolio, descPortefolio, tipoPortefolio, dataPortefolio, imagemPortefolio)
 +
                VALUES (%s, %s, %s, %s, %s, %s)",
 +
                                      GetSQLValueString($_POST['idCandidato'], "int"),
 +
                                      GetSQLValueString($_POST['nomePortefolio'], "text"),
 +
                                      GetSQLValueString($_POST['descPortefolio'], "text"),
 +
                                      GetSQLValueString($_POST['tipoPortefolio'], "int"),
 +
                                      GetSQLValueString($_POST['dataPortefolio'], "date"),
 +
                                      GetSQLValueString("uploads/".$nomeFicheiro =date('Y').date('m').date('d').date('G').date('i').
 +
                                      $_FILES['ficheiro']['name'],"text"));
 +
 
 +
 
 +
 
 +
 
 +
===Integração de tecnologias===
 +
Para a implementação deste projecto tal como é apresentado, foi necessária a conjugação de diferentes tecnologias, por forma a obter um resultado final satisfatório.
 +
 
 +
HTML - Foi utilizada linguagem HTML para a construção de páginas estáticas;
 +
 
 +
PHP - O PHP foi utilizado para conferir dinamismo às mesmas e para a integração da base de dados nas páginas;
 +
 
 +
CSS - O CSS foi integrado para uma melhor formatação dos elementos visuais do site.
 +
 
 +
Sprys - Por sua vez, foram também utilizadas Sprys para a validação de formulários antes de serem submetidos ao servidor.
 +
 
 +
SublimeVideo - Utilizando o serviço gratuito da "SublimeVideo", foi possível embeber um player de h264 em html no site, possibilitando a visualização de um vídeo introdutório à plataforma.
 +
 
 +
==Problemas sentidos e Desenvolvimentos Futuros==
 +
 
 +
No decorrer do desenvolvimento deste projecto foram muitos os problemas e dificuldades sentidas. Como referido anteriormente, a complexidade da base de dados tornou-se um problema devido ao elevado número de funções a serem implementadas. Por limitações de tempo, fomos obrigados a deixar algumas funcionalidades de lado, ainda que estejam representadas no modelo de base de dados anexado. São elas:
 +
- O comentário individual a cada trabalho de um portefólio (apenas foram mantidos os comentários aos portefólios no geral);
 +
- A marcação de entrevistas tendo por base disponibilidades definidas nos portefólios dos candidatos, numa integração com um calendário construído pelo grupo ou integração com o Google Maps, teve que ser posta de lado devido à elevada complexidade;
 +
- Pretendíamos permitir aos utilizadores adicionar competências, estabelecimentos de emprego ou de formação (universidades e cursos) que não constassem na base de dados. Consideramos esta funcionalidade extremamente importante mas, em detrimento da implementação de outras funcionalidadaes, não nos foi possível implementá-la.
 +
- Pretendíamos ter uma melhor verificação e validação dos formulários através de Sprys. Infelizmente, apenas nos foi possível implementar as verificações do Dreamweaver sem modificar os textos de aviso e a sua formatação. Esta situação seria corrigida sem dúvida numa versão futura.
 +
- No upload de ficheiros para os portefólios, deveria ter sido imposto um limite de tamanho e de tipo de ficheiro passível de ser enviado para o servidor.
 +
 
 +
Problemas ocorridos na implementação:
 +
- A verificação do dreamweaver de sessão (username, password e access level) foi problemática ao nível do access level. Deste modo, apenas conseguimos implementar uma verificação/segurança ao nível do username e password.
 +
- A leitura do ficheiro de XML em PHP teve um comportamento fora do normal, impossibilitando a leitura de caractéres especiais. A única solução que conseguimos foi remover os caractéres especiais do ficheiro XML.
 +
 
 +
 
 +
==Desenvolvimentos em Época de Melhoria (Fev. 2010)==
 +
 
 +
===Novas Implementações===
 +
 
 +
Com uma nova oportunidade para desenvolver este projecto, surgiram novas ideias e , consequentemente, novas implementações de funcionalidade para enriquecer a aplicação, de entre as quais:
 +
 
 +
- Implementação de um sistema de notificações para os candidatos, onde poderá ver o que tem pendente deste confirmações de amigos, entrevistas futuras, comentários aos seus portefólios e testemunhos ao seu perfil. Este sistema fica localizado no "ponto de exclamação", debaixo da fotografia do utilizador;
 +
 
 +
- Implementação de uma pequena secção de notificações para a empresa, onde poderá ver as entrevistas futuras, também no "ponto deexclamação";
 +
 
 +
- Implementação da confirmação de amigos, localizada na área de notificações, deixando assim de ser automática;
 +
 
 +
- Implementado o destaque de portefólios para que o utilizador possa personalizar o seu perfil (botões circulares na secção de "Portefólios") - para esta implementação foi necessário fazer alterações mínimas à base de dados na tabela "Portefolios";
 +
 
 +
- Implementado o mecanismo de segurança de restrição por tipo de utilizador, através da comparação de uma váriavel de sessão com o dígito de controlo de permissões;
 +
 
 +
- Implementada a funcionalidade de impressão em papel de um histórico de cada bolsa de candidatos: com o perfil de cada candidato bem como as notas tiradas na entrevista;
 +
 
 +
- Implementação da secção de disponibilidades dos candidatos;
 +
 
 +
- Implementação da marcação de entrevistas das empresas com candidatos e, porteriormente, atribuição de notas e comentários à entrevista;
 +
 
 +
- Implementação de uma pesquisa "auto complete" para uma maior facilidade de encontrar colegas/amigos;
 +
 
 +
===Aperfeiçoamentos===
 +
 
 +
- Os colegas de trabalho já não estão limitados apenas a 5. Agora, esses 5 colegas apresentados são aleatório e não os 5 primeiros, bem como existe a possibilidade de ver todos os colegas de trabalho.
 +
 
 +
- Os portefólios de vídeo, música e fotografia foram aperfeiçoados de forma a manter o utilizador na interface gráfica da aplicação.
 +
Para o portefólio de fotografia, usou-se o conhecido plugin "Lightbox" para uma melhor navegação nas fotografias.
 +
Para o portefólio de vídeo, utilizou-se o plugin da "SublimeVideo" (utilizado também no vídeo de introdução) que apresenta um efeito semelhante ao da "lightbox" mas em vídeo. É, também, compatível com Flash e HTML5 (embora a versão HTML não funcione correctamente no Firefox, nos testes realizados, apenas em Safari).
 +
Para o portefólio de música, utilizou-se o simples mas eficaz plugin "NiftyPlayer" que permite a reprodução de ficheiros MP3.
 +
 
 +
- As mensagens privadas foram distribuídas por conversação, por forma a obter uma melhor organização das mesmas, possibilitando também a consulta das mensagens enviadas (a partir do momento em que é recebida uma resposta a essa mesma PM).
 +
 
 +
- A pesquisa de candidatos está mais elaborada, permitindo às empresas a introdução de mais variáveis para restringir a pesquisa como médias de final de curso, resultados em testes psicotécnicos, número mínimo de experiência profissional... O efeito de esconder/mostrar essas novas variáveis consegui-se através de "Usable Forms".
 +
 
 +
- O candidato pode ver o seu próprio perfil, carregando na sua fotografia.
 +
 
 +
- Ao efectuar um log-in incorrecto, é guardado o username para conveniência do utilizador.
 +
 
 +
- Os botões de submit foram personalizados, tendo sido removidas as mensagens por defeito, nomeadamente "Submit" ou "Submit Query".
 +
 
 +
===Bugfixes===
 +
 
 +
Para além de novas implementações e aperfeiçoamentos a funcionalidades anteriormente desenvolvidas, também foram corrigidos erros detectados após a primeira entrega do projecto.
 +
 
 +
- O Administrador do Backoffice não conseguia validar novos registos de empresas. Tal acontecia pois existia um erro na query que procurava pelo nome da empresa (que não é especificado aquando o registo) e não pelo seu username/e-mail.
 +
 
 +
- Quando um candidato pesquisava por um colega, ainda antes de fazer a pesquisa, já lhe era apresentada a mensagem de que não tinham sido encontrados resultados.
 +
 
 +
- Nos perfis dos utilizadores (candidato_ve_perfil.php) apareciam campos escusadamente mesmo que não estivessem preenchidos relativos a percurso profissional ou académico, formações, etc...
 +
 
 +
- Ao clicar num candidato que comentou um portefólio, éramos reencaminhados para um perfil "vazio" em vez do seu prórpio.
 +
 
 +
- No formulário de comentar portefólios, era apenas tida em conta a data e não a hora ao submeter um comentário, indo contra o tipo de dados da BD.
 +
 
 +
- Quando uma empresa via o perfil de um candidato, os valores que lhe eram apresentados nos testes psicotécnicos eram, por engano, o ID desse mesmo candidato.
 +
 
 +
==Conclusões==
 +
 
 +
=== Janeiro de 2011 ===
 +
Com o terminar deste projecto é possível fazer uma retrospectiva ao desenvolvimento do mesmo, desde a importância da planificação, a gestão do tempo e a divisão de tarefas (abordadas na cadeira de ICPM), a orçamentação e estudo de viabilidade financeira (cadeira de Gestão de Empresas) e a implementação própriamente dita (Laboratório Multimédia 5). Todas estas fases são cruciais para a obtenção de um resultado final bem sucedido.
 +
 
 +
Apesar dos problemas mencionados, encontramo-nos satisfeitos com o resultado final deste trabalho. Pensamos que a base de dados foi bem desenhada, contudo, demasiado extensa para um projecto desta natureza, obrigando-nos a desenvolver funcionalidades em detrimento de outras. Contudo, consideramos que conseguimos implementar a maioria das funcionalidades a que nos pruposemos, mas lamentamos não ter algumas arestas limadas.
 +
 
 +
=== Fevereiro de 2011 ===
 +
 
 +
Esta nova oportunidade para trabalhar e desenvolver o projecto revelou-se vantajosa. Numa segunda abordagem à aplicação, foi possível desenvolver novas funcionalidades que não tinham sido implementadas numa primeira instância, quer por falta de tempo, quer por falta de lembrança, funcionalidades essas que melhoram a utilização da aplicação. Também foi possível corrigir erros que passaram despercebidos na primeira fase de desenvolvimento e, assim, contribuir para uma melhor estabilidade de utilização.
 +
 
 +
Em suma, o resultado final está mais elaborado do que na primeira abordagem, contribuindo para uma melhor satisfação de utilização, tendo sido dada, como anteriormente, primazia à funcionalidade sobre a estética.
 +
 
 +
==Referências bibliográficas==
 +
 
 +
 
 +
Web:
 +
 
 +
[1] Anthony Holdener, "Suite101.com", url: http://www.suite101.com/content/forgot-your-password-script-a192711
 +
 
 +
[2] Diogo Souza da Silva,"Um manifesto", url: http://manifesto.blog.br/1.5/Blog/PHP/Utf-vs-Iso-PHP.html
 +
 
 +
[3] "PHPeasystep.com", http://phpeasystep.com/phptu/6.html
 +
 
 +
[4] "MySQL", http://dev.mysql.com
 +
 
 +
[5] "W3Schools Online Web Tutorials", http://www.w3schools.com/
 +
 
 +
[6] "PHP", http://www.php.net
 +
 
 +
[7] "Lightbox", http://www.huddletogether.com/projects/lightbox2/#download
 +
 
 +
[8] "Lightbox Automatic Resizing", http://blog.hma-info.de/2008/04/09/latest-lightbox-v2-with-automatic-resizing/
 +
 
 +
[9] "SublimeVideo", http://docs.sublimevideo.net/put-video-in-a-floating-lightbox
 +
 
 +
[10] "SublimeVideo", http://sublimevideo.net/demo#zoom
 +
 
 +
[11] "NiftyPlayer", http://www.varal.org/niftyplayer/
 +
 
 +
[12] "Usable Forms", http://www.quirksmode.org/dom/usableforms.html
 +
 
 +
[13] "AutoCompleter Tutorial", http://www.nodstrum.com/2007/09/19/autocompleter/
 +
 
 +
Manuais:
 +
 
 +
[14] Alexandre Pereira, Carlos Poupa, "Linguagens Web"
-
====Subtítulo 1.1====
+
[15] Miguel Pina e Cunha, Arménio Rego, Miguel Pereira Lopes, Mário Ceitil, "Organizações Positivas - Manual de trabalho e formação para desenvolver as forças dos individuos e das organizações", Edições Silabo; 1ª Edição, Lisboa, 2008
-
====Subtítulo 1.2====
+

Latest revision as of 12:54, 3 February 2011

Header.png

Contents

Introdução

Após um brainstorming onde fluíram os mais variados conceitos e ideias, o grupo decidiu focar-se numa forma de permitir a indivíduos a exposição do seu percurso escolar, académico e profissional. É cada vez mais comum que um estudante, após terminar o ensino superior, tenha um site pessoal com os trabalhos que realizou na universidade e possíveis colaborações com o mundo profissional. Pretende-se com esta nova plataforma facultar uma forma fácil e directa de expôr esses mesmos trabalhos para pessoas com muita ou pouca literacia tecnológica. A ideia para a plataforma foi evoluindo de forma abrangente e rica, passando a permitir uma dualidade de perfis. Por um lado, o perfil intitulado de "Candidatos", onde qualquer indivíduo poderá expôr o seu percurso académico, profissional e respectivos trabalhos, bem como terá de preencher um formulário de testes psicotécninos. Por outro lado, foi adicionado o perfil de "Empresa", onde as empresas se podem registar, mediante subscrição, e aceder a toda a base de dados disponível na plataforma, servindo-lhes como uma poderosa ferramenta de gestão de recursos humanos, onde é possível pesquisar candidatos ao maior detalhe imaginável para encontrar o tipo de perfil indicado para preencher um cargo numa empresa.

Abstract

In this difficult times, people have as much difficulties to find the right job, as companies have difficulties to find the right person for the position. In order to solve this dilemma, and taking advantage in all that internet offers, we create Hire me. This project will be associated with your local town's companies in order to create the best shot the candidate can get to find a job that suites him/her as much as suits the opening in the company.

How, you might ask. Well, this site proposes a totally different way of exposing the candidate's information by creating a personal profile to each person that includes professional experience, past jobs, education and so on. On the other hand, It displays a search engine much more accurate in order find the right person for the job. We also offer a psychometric test to best describe the person ability's and not led on the the others with not so true self-statements.

Key-words - PHP; Base de dados; MySql; Server Behaviors, Recordsets; Queries; redes socais.

Objectivo do documento

Este documento serve de suporte ao projecto HireMe que surge no âmbito das unidades curriculares Laboratório Multimédia 5, Implementação e Controlo de Projectos Multimédia e Gestão de Empresas. O objectivo do mesmo é planificar e desenvolver um website no contexto da Web 2.0.

Deste modo, este documento servirá como um guião da construção deste mesmo site, explicando os seus procedimentos ao longo do seu desenvolvimento, as dificuldades sentidas ao longo do mesmo e evoluções futuras do projecto.

Visão geral do projecto

A internet é cada vez mais o meio de comunicação mais abrangente. De uma forma inovadora, o site HireMe associar-se-à a empresas do país para lhes proporcionar uma irrepreensível actividade de consultoria. Por outro lado, tornar-se-à, também, na maior plataforma online de procura de emprego, oferecendo aos candidatos propostas aliciantes de trabalho.

Este site tem como objectivo proporcionar aos nossos utilizadores candidatos uma experiência agradável, intuitiva e simples de exporem os trabalhos a que tanto se dedicaram de forma valorizada, bem como facultar-lhes oportunidades de emprego na sua área de formação. Por sua vez, os consultores de empresas terão acesso a uma inovadora ferramenta de gestão e pesquisa inteligente de candidatos que poderão seleccionar para vagas em posições na sua empresa tendo por base o perfil mais adequado ao cargo.

Para concluir Hire me permitirá:

  • Editar os dados do perfil;
  • Personalização do perfil;
  • Fazer upload de ficheiros para o portfólio;
  • Realizar testes psicotécnicos;
  • Adicionar amigos;
  • Inserção de comentários;
  • Consultar uma pesquisa simples e/ou avançada;
  • Manutenção (backoffice);
  • Troca de mensagens privadas (PM'S).

Especificações e Design Gráfico

Nome do Projecto

No que diz respeito a este tópico, o grupo tentou focar-se no que gostaria que o nome transmitisse sobre o projecto. Para isso, centramo-nos na relação instantânea ao universo de conceitos relacionados com a procura de trabalho e tudo o que ela implica:

  • currículos (“cv”, “portefolio”)
  • a necessidade de ser melhor e se distinguir dos outros (“hire”, “choose”, “solution”)
  • o foco no eu e nas capacidades do indivíduo (uso do “me”)

Daí surgiram as seguintes propostas:

  • Perfil cv
  • Arquivo
  • Portefolio
  • meetMe
  • hireMe
  • pickMe
  • chooseMe
  • iHire
  • yourSolution
  • Start

(NR:O facto de se usarem expressões inglesas diz respeito à futura universalidade do projecto.)


De todas, a que se sobressaiu foi a “Hire me” já que a expressão “hire” remete momentaneamente para para o mundo do trabalho e o “me” foca-se no indivíduo e na forma em como o próprio se poderia tornar a solução para o lugar vago de uma empresa.


Estudo de Logótipo
Logo.png

Quanto à escolha do logo, a ideia é que este fosse simples e que chamasse a atenção. Em realidades quase ultrapassadas era usual uma pessoa que estivesse à procura de trabalho abrir um boletim de classificados e marcar as ofertas de trabalho que lhe poderiam interessar. Como a dinâmica deste site é o contrario, a ideia é remeter o utilizador que, a pessoa em causa é a escolha certa para o lugar vago. Para isso , recorreu-se ao uso de uma tipografia simples e clara, circundada por um desenho aparentemente manual que indica a escolha. O ponto de exclamação serve para reafirmar a expressão em si, e transmitir confiança no titulo.


Estudo de Cor
Cores.png

A escolha destas cores recaiu no facto de serem cores simples e “clean”. O preto e os diversos tons de cinzento são usados como mancha e para textos simples. O branco é usado como fundo e como contraste. Já o vermelho é usado como forma de destaque de elementos, sendo que é a unica cor “viva” dentro desta palete. Assim, não há tanta confusão visual.


Estudo do tipo de Letra

Tipo de letra utilizado no Logótipo: Tw Cen MT - Letra de simples compreensão, não serifada.

Tipo de letra utilizado no site : Tahoma - Simples e universal. Assim, caracteriza-se por ser um tipo de letra não serifado e próprio para a Web.

Base de dados desenvolvida

HireMe BD-01.jpg

Desde o início do projecto que desejavamos ser bastante ambiciosos. Pretendíamos implementar um vasto conjunto de funcionalidades por forma a enriquecer a plataforma, tais como:

  • Candidatos: personalização de perfil, introdução e edição de informações sobre percurso académico, profissional, formações externas, inserção de portefólios, inserção de colegas de trabalho, envio de PMs e testemunhar perfis de colegas.
  • Empresas: aceder à base de dados de candidatos através de pesquisas avançadas, permitindo escolher melhor o perfil do candidato que pretende para a sua empresa. Esse candidato pode ser adicionado a uma bolsa de candidaturas e posteriormente ser contactado para uma entrevista. Dessa entrevista, a empresa poderá tirar notas e mesmo determinar uma classificação final para o indivíduo, tudo na plataforma.

A imensidão de funções, que resultou numa base de dados com bastantes entidades e relações entre elas, influenciou o desenvolvimento do projecto. Ainda que a maioria das funções tenha sido implementada, serão mencionadas mais à frente as funcionalidades que, por escassez de tempo, não puderam ser implementadas.

Implementação

Universalidade

Desde o início que ambicionávamos que o site pudesse ser facilmente traduzido para outras línguas. Ainda que para o contexto deste projecto, a única língua disponível seja o Português, todo o mecanismo para uma facil tradução do mesmo foi implementado através da leitura de ficheiro XML. Deste modo, para uma futura tradução do site, é apenas necessário, dentro do XML, criar um novo elemento com o idioma em questão e traduzir os diversos "nodes".

Testes Psicotécnicos

O grupo apercebeu-se do quão limitadora é a informação disponibilizada nos curricula por parte dos utilizadores. Qualquer um pode dizer que é dinâmico ou criativo, mas a verdade é que a empresa não tem forma de o saber. De forma a tentar dar alguma veracidade aos dados, implementaram-se testes psicotécnicos de algumas características base, de forma a avaliar o individuo. Apesar de o grupo ter noção que mesmo estes dados podem ser manipulados, sempre existe um maior controlo da informação final.

Estas características vão ser ainda incluídas como um elemento diferenciador dos candidatos. Uma empresa para além de procurar pelas competências mínimas que necessita, poderá também procurar as características que são indispensáveis para o bom funcionamento da mesma. Assim, pode excluir logo à partida os candidatos que não lhe interessa e poupar tempo em entrevistas desnecessárias.


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

As principais funcionalidades da rede social HireMe agrupam-se em quatro grandes categorias:

  • Funcionalidades Gerais, onde é possível ter acesso à pagina inicial, de registo, e de login.

Há a possibilidade do utilizador registar-se e consequentemente criar uma nova conta, preenchendo diversos parâmetros de um formulário de registo (perfil, email, password e idioma). Após este, o utilizador consegue efectuar o login com os respectivos dados de registo (email e password). Para o caso do utilizador se esquecer da password tem disponível a funcionalidade de recuperá-la;


  • Funcionalidades de Candidatos a Empresas, onde o utilizador pode criar um perfil, editar dados pessoais (nome, morada, numero identificação e foto de perfil), mostrar todo o seu percurso académico e profissional com a mais valia de agregar todo o seu portefolio.

Em relação à página de perfil, esta tem a funcionalidade de ver e adicionar testemunhos tanto por parte de outros candidatos como das empresas. O candidato tem disponíveis testes psicotécnicos que ajudam à sua caracterização de modo a favorece-lo na pesquisa das empresas. Este pode, igualmente, adicionar cursos ao seu percurso académico e formações ao seu percurso profissional. Tem ao seu dispor uma página de competências para seleccionar as que melhor o identificam. Na página de portefólio, é possível criar-se um conjunto de portefólios que integram os trabalhos realizados pelo candidato, que pode efectuar o upload sob a forma de diferentes tipos de ficheiros (video, fotografia, relatórios/dissertações, ficheiros audio). Nesta mesma secção há ainda a funcionalidade de receber comentários, tanto nos portefólios como nos trabalhos adicionados, que necessitam de aprovação por parte do utilizador. Com o intuito de haver uma maior interactividade há a possibilidade de pesquisar, visualizar outros perfis, adicionar colegas de trabalho e trocar mensagens privadas entre estes, como responder às possíveis PM's recebidas pelas empresas. Por último, a secção de ajuda permite consultar informação relacionada com os aspectos mais importantes do site.


  • Funcionalidades de Empresas, com a possibilidade do utilizador criar um perfil, preencher e editar os dados da empresa (nome, morada, nif, cae e foto de perfil), criar bolsas de candidatos conforme as categorias de cargos a preencher e, ainda, realizar pesquisas pormenorizadas que permitem encontrar novos candidatos.

A empresa poderá criar uma nova bolsa de candidatos especificada por área de formação, permitindo adicionar potenciais candidatos resultantes da pesquisa detalhada. Uma vez adicionados estes podem ser excluídos, como também é possível visualizar o seu perfil e enviar mensagens privadas de forma a poder marcar entrevistas de trabalho.

De acordo com a pesquisa de candidatos, a empresa terá que preencher um formulário detalhado que serve de auxílio à filtração dos diversos utilizadores.

Através do ícone de mensagem, presente no lado esquerdo da página, é permitida a consulta das mensagens recebidas. Tal como nas funcionalidades dos Candidatos a secção de ajuda está disponível para consulta de informação relacionada com os aspectos mais importantes do site.

  • Funcionalidades do Administrador, onde se realiza a validação das empresas.

Na secção de administrador, o utilizador gere a autenticação das empresas, recentemente registadas, aprovando ou não a autorização para a empresa poder utilizar o nosso serviço.

Mapa de páginas

Arborescencia.png

Server Behaviours utilizados

Os Servers Behavious são uma ferramenta do Dreamweaver que permitem uma maior facilidade na gestão dos conteúdos e permissões. Ao longo de todo o site, estes são alguns dos Server Behaviours utilizados:

- Dynamic Text Field: permite preencher um campo de texto dinâmicamente com valores da base de dados

- Repeat Region: permite dinâmicamente a listagem/construção de informação através de um recordset

- Show if Recordset is Not Empty: só executa o código caso as condições do recordset se verifiquem;

- LogIn / LogOut User: permite ao utilizador iniciar ou terminar sessão;

- Restrict Acess to Page - verifica se existe uma sessão iniciada. Caso não exista, o utilizador sem permissões é redireccionado para a home page e é-lhe mostrado um aviso dessa mesma situação.

- Insert Record - insere registos na base de dados

- Update Record - actualiza registos na base de dados

- Delete Record - apaga registos na base de dados

Para além destes server behaviours, recorreu-se com muita frequência à utilização/implementação manual de queries, para um maior controlo sobre o procedimento.


Recordsets/Queries utilizados

Ao longo do projecto, são utilizados utilizados vários recordsets constantemente em todas as páginas. São exemplos disso, listas de candidatos, do seu perfil, das suas formações, competências, empregos passados/actuais e portefólios. Estes recordsets, na sua maioria, foram construidos através do dreamweaver para uma maior facilidade e rapidez na implementação da ligação à base de dados e construção dinâmica de conteúdos. Contudo, em situações críticas em que a liberdade e expansão eram importantes, foram criados recordsets avançados, ou mesmo queries sem recorrer à ferramenta de recordsets do dreamweaver. São exemplo disso a inserção, a actualização ou o apagar de registos em múltiplas tabelas.

Construção de queries dinâmicas:

              $query="SELECT Candidatos.fotoCandidato, Candidatos.nomeCandidato, Candidatos.idCandidato";
              if ($_GET['curso_sup']==1) {
              	$query.=", Candidato_has_Curso.idCandidato";
              }
              if ($_GET['exp_prof']==1) {
              	$query.=", PercursoProfissional.idCandidato";
              }
              if ($_GET['formacao']==1) {
              	$query.=", Candidatos_has_Formacoes.idCandidato";
              }
              if ($_GET['psico']==1) {
              	$query.=", Candidato_has_TestePsicotecnico.idCandidato";
              }
              if ($_GET['portefolio']==1) {
              	$query.=", Portefolios.idCandidato";
              }
              if ($_GET['testemunhos']==1) {
              	$query.=", Testemunhos.idCandidatoChegada";
              }
              $query.=" FROM Candidatos ";
              if ($_GET['curso_sup']==1) {
              	$query.="Inner Join Candidato_has_Curso On Candidato_has_Curso.idCandidato = Candidatos.idCandidato ";
              }
              if ($_GET['exp_prof']==1) {
              	$query.="Inner Join PercursoProfissional On PercursoProfissional.idCandidato = Candidatos.idCandidato ";
              }
              if ($_GET['formacao']==1) {
              	$query.="Inner Join Candidatos_has_Formacoes On Candidatos_has_Formacoes.idCandidato = Candidatos.idCandidato ";
              }
              if ($_GET['psico']==1) {
              	$query.="Inner Join Candidato_has_TestePsicotecnico On Candidato_has_TestePsicotecnico.idCandidato = Candidatos.idCandidato ";
              }
              if ($_GET['portefolio']==1) {
              	$query.="Inner Join Portefolios On Portefolios.idCandidato = Candidatos.idCandidato ";
              }
              if ($_GET['testemunhos']==1) {
              	$query.="Inner Join Testemunhos On Testemunhos.idCandidatoChegada = Candidatos.idCandidato ";
              }
              $query.=" ORDER BY Candidatos.idCandidato";

Para implementar a pesquisa avançada de candidatos, que é influenciada pelos parâmetros que a empresa quer incluir na sua pesquisa, foi necessário recorrer à construção dinâmica de queries, isto é, construir uma query através de PHP consoante os parâmetros de entrada definidos pelo utilizador empresa. A sua implementação foi feita passo a passo para assegurar que não era violada a integridade da mesma.

Parâmetros passados entre páginas

Para a passagem de parâmetros entre páginas foram utilizados os dois métodos lecccionados na unidade curricular, tendo ambos as suas vantagens e desvantagens. A passagem de parâmetros pelo método POST foi sobretudo utilizado em formulários (pesquisa e adição/alteração de dados). Este método tem a vantagem de ser transparente para os utilizadores e, portanto, mais seguro. Por sua vez, a passagem de parâmetros pelo método GET apresenta a vantagem de ser vísivel para o utilizador (e para o programador), pelo que nos é mais fácil observar o comportamento da aplicação. Este método foi utilizado sobretudo na passagem de ID's para visualização de perfis e alteração de dados de perfil.

Para além da passagem de parâmetros entre páginas, será igualmente relevante referir nesta secção, o upload de ficheiros. O upload de ficheiros é utilizado no envio de uma foto de perfil e na criação dos portefólios, podendo ser de fotografias, música, vídeo ou dissertações. Por forma a combater o "overwrite" de possíveis ficheiros com o mesmo nome, foi criado um script para adicionar um timestamp ao início do ficheiro.

              if ((isset($_POST["MM_insert"])) && ($_POST["MM_insert"] == "form1")) {
                $insertSQL = sprintf("INSERT INTO Portefolios (idCandidato, nomePortefolio, descPortefolio, tipoPortefolio, dataPortefolio, imagemPortefolio)
                VALUES (%s, %s, %s, %s, %s, %s)",
                                     GetSQLValueString($_POST['idCandidato'], "int"),
                                     GetSQLValueString($_POST['nomePortefolio'], "text"),
                                     GetSQLValueString($_POST['descPortefolio'], "text"),
                                     GetSQLValueString($_POST['tipoPortefolio'], "int"),
                                     GetSQLValueString($_POST['dataPortefolio'], "date"),
                                     GetSQLValueString("uploads/".$nomeFicheiro =date('Y').date('m').date('d').date('G').date('i').
                                     $_FILES['ficheiro']['name'],"text"));



Integração de tecnologias

Para a implementação deste projecto tal como é apresentado, foi necessária a conjugação de diferentes tecnologias, por forma a obter um resultado final satisfatório.

HTML - Foi utilizada linguagem HTML para a construção de páginas estáticas;

PHP - O PHP foi utilizado para conferir dinamismo às mesmas e para a integração da base de dados nas páginas;

CSS - O CSS foi integrado para uma melhor formatação dos elementos visuais do site.

Sprys - Por sua vez, foram também utilizadas Sprys para a validação de formulários antes de serem submetidos ao servidor.

SublimeVideo - Utilizando o serviço gratuito da "SublimeVideo", foi possível embeber um player de h264 em html no site, possibilitando a visualização de um vídeo introdutório à plataforma.

Problemas sentidos e Desenvolvimentos Futuros

No decorrer do desenvolvimento deste projecto foram muitos os problemas e dificuldades sentidas. Como referido anteriormente, a complexidade da base de dados tornou-se um problema devido ao elevado número de funções a serem implementadas. Por limitações de tempo, fomos obrigados a deixar algumas funcionalidades de lado, ainda que estejam representadas no modelo de base de dados anexado. São elas: - O comentário individual a cada trabalho de um portefólio (apenas foram mantidos os comentários aos portefólios no geral); - A marcação de entrevistas tendo por base disponibilidades definidas nos portefólios dos candidatos, numa integração com um calendário construído pelo grupo ou integração com o Google Maps, teve que ser posta de lado devido à elevada complexidade; - Pretendíamos permitir aos utilizadores adicionar competências, estabelecimentos de emprego ou de formação (universidades e cursos) que não constassem na base de dados. Consideramos esta funcionalidade extremamente importante mas, em detrimento da implementação de outras funcionalidadaes, não nos foi possível implementá-la. - Pretendíamos ter uma melhor verificação e validação dos formulários através de Sprys. Infelizmente, apenas nos foi possível implementar as verificações do Dreamweaver sem modificar os textos de aviso e a sua formatação. Esta situação seria corrigida sem dúvida numa versão futura. - No upload de ficheiros para os portefólios, deveria ter sido imposto um limite de tamanho e de tipo de ficheiro passível de ser enviado para o servidor.

Problemas ocorridos na implementação: - A verificação do dreamweaver de sessão (username, password e access level) foi problemática ao nível do access level. Deste modo, apenas conseguimos implementar uma verificação/segurança ao nível do username e password. - A leitura do ficheiro de XML em PHP teve um comportamento fora do normal, impossibilitando a leitura de caractéres especiais. A única solução que conseguimos foi remover os caractéres especiais do ficheiro XML.


Desenvolvimentos em Época de Melhoria (Fev. 2010)

Novas Implementações

Com uma nova oportunidade para desenvolver este projecto, surgiram novas ideias e , consequentemente, novas implementações de funcionalidade para enriquecer a aplicação, de entre as quais:

- Implementação de um sistema de notificações para os candidatos, onde poderá ver o que tem pendente deste confirmações de amigos, entrevistas futuras, comentários aos seus portefólios e testemunhos ao seu perfil. Este sistema fica localizado no "ponto de exclamação", debaixo da fotografia do utilizador;

- Implementação de uma pequena secção de notificações para a empresa, onde poderá ver as entrevistas futuras, também no "ponto deexclamação";

- Implementação da confirmação de amigos, localizada na área de notificações, deixando assim de ser automática;

- Implementado o destaque de portefólios para que o utilizador possa personalizar o seu perfil (botões circulares na secção de "Portefólios") - para esta implementação foi necessário fazer alterações mínimas à base de dados na tabela "Portefolios";

- Implementado o mecanismo de segurança de restrição por tipo de utilizador, através da comparação de uma váriavel de sessão com o dígito de controlo de permissões;

- Implementada a funcionalidade de impressão em papel de um histórico de cada bolsa de candidatos: com o perfil de cada candidato bem como as notas tiradas na entrevista;

- Implementação da secção de disponibilidades dos candidatos;

- Implementação da marcação de entrevistas das empresas com candidatos e, porteriormente, atribuição de notas e comentários à entrevista;

- Implementação de uma pesquisa "auto complete" para uma maior facilidade de encontrar colegas/amigos;

Aperfeiçoamentos

- Os colegas de trabalho já não estão limitados apenas a 5. Agora, esses 5 colegas apresentados são aleatório e não os 5 primeiros, bem como existe a possibilidade de ver todos os colegas de trabalho.

- Os portefólios de vídeo, música e fotografia foram aperfeiçoados de forma a manter o utilizador na interface gráfica da aplicação. Para o portefólio de fotografia, usou-se o conhecido plugin "Lightbox" para uma melhor navegação nas fotografias. Para o portefólio de vídeo, utilizou-se o plugin da "SublimeVideo" (utilizado também no vídeo de introdução) que apresenta um efeito semelhante ao da "lightbox" mas em vídeo. É, também, compatível com Flash e HTML5 (embora a versão HTML não funcione correctamente no Firefox, nos testes realizados, apenas em Safari). Para o portefólio de música, utilizou-se o simples mas eficaz plugin "NiftyPlayer" que permite a reprodução de ficheiros MP3.

- As mensagens privadas foram distribuídas por conversação, por forma a obter uma melhor organização das mesmas, possibilitando também a consulta das mensagens enviadas (a partir do momento em que é recebida uma resposta a essa mesma PM).

- A pesquisa de candidatos está mais elaborada, permitindo às empresas a introdução de mais variáveis para restringir a pesquisa como médias de final de curso, resultados em testes psicotécnicos, número mínimo de experiência profissional... O efeito de esconder/mostrar essas novas variáveis consegui-se através de "Usable Forms".

- O candidato pode ver o seu próprio perfil, carregando na sua fotografia.

- Ao efectuar um log-in incorrecto, é guardado o username para conveniência do utilizador.

- Os botões de submit foram personalizados, tendo sido removidas as mensagens por defeito, nomeadamente "Submit" ou "Submit Query".

Bugfixes

Para além de novas implementações e aperfeiçoamentos a funcionalidades anteriormente desenvolvidas, também foram corrigidos erros detectados após a primeira entrega do projecto.

- O Administrador do Backoffice não conseguia validar novos registos de empresas. Tal acontecia pois existia um erro na query que procurava pelo nome da empresa (que não é especificado aquando o registo) e não pelo seu username/e-mail.

- Quando um candidato pesquisava por um colega, ainda antes de fazer a pesquisa, já lhe era apresentada a mensagem de que não tinham sido encontrados resultados.

- Nos perfis dos utilizadores (candidato_ve_perfil.php) apareciam campos escusadamente mesmo que não estivessem preenchidos relativos a percurso profissional ou académico, formações, etc...

- Ao clicar num candidato que comentou um portefólio, éramos reencaminhados para um perfil "vazio" em vez do seu prórpio.

- No formulário de comentar portefólios, era apenas tida em conta a data e não a hora ao submeter um comentário, indo contra o tipo de dados da BD.

- Quando uma empresa via o perfil de um candidato, os valores que lhe eram apresentados nos testes psicotécnicos eram, por engano, o ID desse mesmo candidato.

Conclusões

Janeiro de 2011

Com o terminar deste projecto é possível fazer uma retrospectiva ao desenvolvimento do mesmo, desde a importância da planificação, a gestão do tempo e a divisão de tarefas (abordadas na cadeira de ICPM), a orçamentação e estudo de viabilidade financeira (cadeira de Gestão de Empresas) e a implementação própriamente dita (Laboratório Multimédia 5). Todas estas fases são cruciais para a obtenção de um resultado final bem sucedido.

Apesar dos problemas mencionados, encontramo-nos satisfeitos com o resultado final deste trabalho. Pensamos que a base de dados foi bem desenhada, contudo, demasiado extensa para um projecto desta natureza, obrigando-nos a desenvolver funcionalidades em detrimento de outras. Contudo, consideramos que conseguimos implementar a maioria das funcionalidades a que nos pruposemos, mas lamentamos não ter algumas arestas limadas.

Fevereiro de 2011

Esta nova oportunidade para trabalhar e desenvolver o projecto revelou-se vantajosa. Numa segunda abordagem à aplicação, foi possível desenvolver novas funcionalidades que não tinham sido implementadas numa primeira instância, quer por falta de tempo, quer por falta de lembrança, funcionalidades essas que melhoram a utilização da aplicação. Também foi possível corrigir erros que passaram despercebidos na primeira fase de desenvolvimento e, assim, contribuir para uma melhor estabilidade de utilização.

Em suma, o resultado final está mais elaborado do que na primeira abordagem, contribuindo para uma melhor satisfação de utilização, tendo sido dada, como anteriormente, primazia à funcionalidade sobre a estética.

Referências bibliográficas

Web:

[1] Anthony Holdener, "Suite101.com", url: http://www.suite101.com/content/forgot-your-password-script-a192711

[2] Diogo Souza da Silva,"Um manifesto", url: http://manifesto.blog.br/1.5/Blog/PHP/Utf-vs-Iso-PHP.html

[3] "PHPeasystep.com", http://phpeasystep.com/phptu/6.html

[4] "MySQL", http://dev.mysql.com

[5] "W3Schools Online Web Tutorials", http://www.w3schools.com/

[6] "PHP", http://www.php.net

[7] "Lightbox", http://www.huddletogether.com/projects/lightbox2/#download

[8] "Lightbox Automatic Resizing", http://blog.hma-info.de/2008/04/09/latest-lightbox-v2-with-automatic-resizing/

[9] "SublimeVideo", http://docs.sublimevideo.net/put-video-in-a-floating-lightbox

[10] "SublimeVideo", http://sublimevideo.net/demo#zoom

[11] "NiftyPlayer", http://www.varal.org/niftyplayer/

[12] "Usable Forms", http://www.quirksmode.org/dom/usableforms.html

[13] "AutoCompleter Tutorial", http://www.nodstrum.com/2007/09/19/autocompleter/

Manuais:

[14] Alexandre Pereira, Carlos Poupa, "Linguagens Web"

[15] Miguel Pina e Cunha, Arménio Rego, Miguel Pereira Lopes, Mário Ceitil, "Organizações Positivas - Manual de trabalho e formação para desenvolver as forças dos individuos e das organizações", Edições Silabo; 1ª Edição, Lisboa, 2008

Personal tools
Namespaces
Variants
Actions
Navigation
Toolbox