mWmdev :: projects ::creating and developing http://mwmdev.com pt SMDB - Social Movie Database Este projecto começou de uma maneira não muito normal. Não foi muito planeado.<br /> Depois da Phoenix aterrar em Marte, subscrevi o feed do Twitter oficial.<br /> No entanto só seguia o conteúdo pelo Google Reader. De vez em quando, havia um post novo com link inserido e aí precisava de ir mesmo ao site do Twitter para seguir o link. Foi aí que comecei a ver como o Twitter funcionava melhor, etc.<br /> <br /> Passado um tempo, tive a ideia de criar uma espécie de Twitter só para filmes em que o utilizador, registado, adicionava os filmes que tinha visto ultimamente, deixando um link para o IMDB a sua pontuação e um pequeno comentário, tipo opinião, com 200 caracteres no máximo.<br /> <br /> Perante esta ideia, numa noite consegui fazer praticamente a base toda até à versão 0.25. Sendo que novas features acrescentavam 0.01 unidades à versão anterior, ou seja, levou 25 features numa noite.<br /> Entre estas, os utilizadores já se podiam registar, fazer login, adicionar filmes (sem comentários) e ver a sua página com os seus filmes adicionados ("My Corner").<br /> Posteriormente adicionei o esquema de friends em que, indo ao "My Corner" de outro utilizador, se podia adicionar à lista de amigos (que aparece na toolbox à direita), juntamente com uma "Genres Cloud" que mostra os estilos de filme mais vistos pelo utilizador, com diferentes tamanhos.<br /> <br /> Finalmente acrescentei a possibilidade de se acrescentar um comentário/opinião, quando se adiciona um filme depois de várias opiniões. E fazia sentido o utilizador pode dizer o que acha do que viu.<br /> No fim foi uma questão de corrigir centenas de bugs e pequenos erros que levaram 2 noites a concluir o que hoje é a versão beta 0.46.<br /> <br /> Aventurei-me um pouco a fazer os comentários deslizantes em Javascript mas ficou bastante bom.<br /> Houve uma data de detalhes de segurança que tive de ter em causa, controlando tudo a nível local com Javascript e além disso, para quem o tem desligado ou simplesmente o browser não suporta (raro) em <i>serverside</i> com PHP.<br /> <br /> Houve ainda os problemas do costume com UTF8, a leitura e a inserção na base de dados mas até me ajudou a, finalmente, encontrar a melhor maneira de o fazer recorrendo à função<br /> <p class="code">mysql_set_charset('utf8', $connection);</p><br /> que, quando inserida antes de qualquer selecção, saca tudo da base de dados em UTF8. E, assim, já não tenho problemas. Corrigi estes problemas também nos outros sites e aqui mesmo, no blog.<br /> <br /> Com o tempo depois vou acrescentando novas features.<br /> Ficam aqui algumas screenshots e podem usar a webapp em<br /> <p class="quote"><a href="http://smdb.mwmdev.com/" target="_blank">http://smdb.mwmdev.com/</a><br /> <a href="http://smdb.mwmdev.com/index.php?u=mwm" target="_blank">http://smdb.mwmdev.com/index.php?u=mwm</a> (o meu user que podem adicionar e seguir<p><br /> <br /> <p class="topic">Screenshots</p><br /> <div align="center"> <table> <tr> <td align="center" valign="bottom"> <table class="albuns" border="0"> <tr> <td width="0" height="0" align="center" valign="bottom"> <a href="http://albuns.mwmdev.com/pictures/smdb_00.jpg"><img align="center" src="http://albuns.mwmdev.com/pictures/thumbnails/td_smdb_00.jpg" alt="img: smdb_00.jpg" border="0"></a> </td> </tr> <tr> <td align="center" bgcolor="#BBBBBB"> <font size="1"><b>47</b> Kb</font> </td> </tr> </table> </td> <td align="center" valign="bottom"> <table class="albuns" border="0"> <tr> <td width="0" height="0" align="center" valign="bottom"> <a href="http://albuns.mwmdev.com/pictures/smdb_01.jpg"><img align="center" src="http://albuns.mwmdev.com/pictures/thumbnails/td_smdb_01.jpg" alt="img: smdb_01.jpg" border="0"></a> </td> </tr> <tr> <td align="center" bgcolor="#BBBBBB"> <font size="1"><b>59</b> Kb</font> </td> </tr> </table> </td> <td align="center" valign="bottom"> <table class="albuns" border="0"> <tr> <td width="0" height="0" align="center" valign="bottom"> <a href="http://albuns.mwmdev.com/pictures/smdb_02.jpg"><img align="center" src="http://albuns.mwmdev.com/pictures/thumbnails/td_smdb_02.jpg" alt="img: smdb_02.jpg" border="0"></a> </td> </tr> <tr> <td align="center" bgcolor="#BBBBBB"> <font size="1"><b>64</b> Kb</font> </td> </tr> </table> </td> <td align="center" valign="bottom"> <table class="albuns" border="0"> <tr> <td width="0" height="0" align="center" valign="bottom"> <a href="http://albuns.mwmdev.com/pictures/smdb_03.jpg"><img align="center" src="http://albuns.mwmdev.com/pictures/thumbnails/td_smdb_03.jpg" alt="img: smdb_03.jpg" border="0"></a> </td> </tr> <tr> <td align="center" bgcolor="#BBBBBB"> <font size="1"><b>33</b> Kb</font> </td> </tr> </table> </td> <td align="center" valign="bottom"> <table class="albuns" border="0"> <tr> <td width="0" height="0" align="center" valign="bottom"> <a href="http://albuns.mwmdev.com/pictures/smdb_04.jpg"><img align="center" src="http://albuns.mwmdev.com/pictures/thumbnails/td_smdb_04.jpg" alt="img: smdb_04.jpg" border="0"></a> </td> </tr> <tr> <td align="center" bgcolor="#BBBBBB"> <font size="1"><b>45</b> Kb</font> </td> </tr> </table> </td> </tr></table> </div> GMT http://mwmdev.com/viewpost.php?id=137 Dabliu Project 2007 - the restart Como já referi no blog, este projecto já existia há alguns anos e consistia num site em que os utilizadores guardavam vários conteúdos e os partilhavam. Contudo, e devido à pouca versatilidade da criação de conteúdos por parte dos utilizadores, pois necessita do conhecimento de webdev, decidi recriar o site mas usando um sistema dinâmico de adicionar conteúdos usando PHP e MySQL. O site encontra-se num subdomínio deste em <a href="http://dabliu.mwmdev.com">http://dabliu.mwmdev.com</a>. Ainda há muita coisa a fazer no site mas o projecto em si já arrancou. Existe a secção principal, onde estão os "bookmarks of the moment", os últimos bookmarks adicionados e posteriormente será criada uma lista com os top bookmarks. Nesta lista é possível ordenar os bookmarks por título, tag ou data em que foi inserido. Para além disso, para os utilizadores registados e autenticados, é possível ver os bookmarks que estão na lista do momento e que também os tem na sua e apagá-los ou adicionar se ainda não os tiver. Como é óbvio, é possível adicionar novos posts na secção "post", inserindo um link, o titulo e uma tag que o identifique e ajude a organizar. É ainda possível seleccionar uma opção para tornar o bookmark a criar, privado para os outros, onde não aparecerão na lista dos "bookmarks of the moment" da página principal nem aos outros que visitem a área de um certo utilizador, ou seja, apenas serão visíveis ao utilizador que o criou.<br /> <br /> Para este projecto usei, uma vez mais, PHP e MySQL. Em vez de criar só uma tabela para tudo, para o Dabliu usei várias tabelas, uma delas para os utilizadores, outra para os bookmarks e uma última para os utilziadores online. Este último serve apenas para estatísticas e é utilizado no painel stats que se encontra no fim de cada página, indicando quem se encontra online, dos que estão online, quantos são registados e quantos são apenas guests, quantos utilizadores registados existem no total, uma lista com os nomes dos utilizadores e um sistema de tracker como aqui o do blog com o número de páginas visitadas, e o número páginas visitadas únicas [1 utilizador -> 200 visitas].<br /> <br /> A intenção deste projecto é criar uma comunidade de partilha de informação. Comecei com um conteúdo fácil de armazenar, bookmarks. Para breve vêm os notebooks em que podemos guardar pequenos blocos com notas, histórias, tutoriais, ou outras informações e partilhá-las com os outros ou mantê-las privadas.<br /> <br /> Existe ainda um sistema de search que permite procurar nos bookmarks do Dabliu, nos próprios bookmarks de um certo utilizador ou no do próprio se estiver autenticado.<br /> <br /> Em falta fica um sistema de páginas para organizar os conteúdos e mostrar apenas 10 bookmarks por página, por exemplo e ainda a criação da página pessoal de cada utilizador com os seus bookmarks ou outros futuros conteúdos.<br /> <br /> Este projecto deverá ser integrado na disciplina de Portefólio 1. GMT http://mwmdev.com/viewpost.php?id=65 Blog system - from zero Sempre tive interesse em ter um espaço onde pudesse "arquivar" e, porque não, mostrar os meus trabalhos. No início comecei por pensar num site e foi a melhor solução. Aprendi a programar em HTML mas rapidamente me apercebi que só sabendo muito da linguagem é que conseguia criar o que, porventura, criaria em papel como rascunho. Por isso, encontrei uma ferramenta para desenhar sites em que o código é gerado automaticamente consoante o que se cria na secção de desenho. Tem processador de texto, tabelas, forms, e muito mais. Falo do Frontpage da Microsoft. Durante muito tempo actualizei o site com projectos em que trabalhava. A certa altura dividi o site em várias secções, não tantas como as que agora tem, mas era uma maneira de organizar melhor os temas. Na altura já criava alguns modelos em 3D por isso decidi separar os projectos 3D da secção de projectos na generalidade. Ao longo do tempo foram surgindo novas secções até às actuais. Contudo, era difícil e tornava-se chato estar constantemente a actualizar o site manualmente. A certa altura comecei a aprender PHP. PHP é uma linguagem com uma sintaxe bastante parecida com o C++ [e o C] e que viria a tornar a coisa bastante mais simples e prática para o site. Associada à aprendizagem do PHP, veio a de MySQL. MySQL é um sistema de base de dados opensource, tal como o PHP, e que tem uma série de ligações, através de funções, com o PHP.<br /> <br /> Com a necessidade de ter um sistema tipo blog em que havia a possibilidade de criar posts, editá-los, removê-los e organizá-los por secções, comecei a trabalhar em PHP juntamente com MySQL onde guardava, numa tabela, todos os posts. Estes, compostos por um título, um sub-título, uma tag [nome da secção] uma imagem do post [ou nenhuma], uma data, uma data de edição [se o post fosse posteriormente editado] e o artigo propriamente dito. Comecei a desenvolver o sistema e a adicionar pormenores e ainda criei um sistema de login para que, em qualquer lugar com internet, pudesse aceder ao site e, depois de autenticado, pudesse criar posts, editá-los e apagá-los. No fundo, pudesse gerir o site todo como se estivesse em casa.<br /> <br /> Com a utilização das tags [nomes das várias secções], generalizei o sistema de modo a que em cada secção, "peço" há base de dados que me seleccione todos os posts que tenham uma determinada tag [a com o nome dessa secção]. Assim, ao criar um post com a tag "projects", quando acabar o post, a secção "Projects", irá à base de dados recolher todos os posts com a tag "projects", incluindo este.<br /> <br /> Juntamente com a criação do sistema do blog, comprei um Website Host mais um domínio, e assim, tenho tudo alojado nesse host com um domínio próprio em "mwmdev.com". O sistema onde o site está alojado tem uma base de dados MySQL e também suporta PHP, por isso exportei todo o site para lá e para pequenas actualizações no código apenas tenho de me ligar por FTP e transferir os ficheiros alterados. Para a criação de posts, é tudo automático, como já expliquei, fica tudo na base de dados.<br /> <br /> Para quem estiver interessado no sistema de blogs, vou compilar os vários sub-sites que têm o código e gerar um zip ou outro formato de compressão e disponibilizar aqui. Depois é preciso saber como configurar a base de dados, mas são coisas simples. GMT http://mwmdev.com/viewpost.php?id=35 Driving Techniques - live for speed Guiar um carro num simulador de computador é, obviamente, muito diferente da realidade, mas hoje em dia existem simuladores capazes de se aproximarem desta.<br /> Um deles é o Live For Speed (LFS). As suas físicas são altamente fieis à realidade. O grande problema é o jogador não sentir as forças no corpo, o que tira bastante percepção da velocidade a que vai e da condução em geral. Contudo, e como é muito fiel, podemos fazer todas as manobras que são possíveis fazer na realidade. Aproveitando esse facto, tentei transpor da realidade para o simulador algumas manobras, filmando-as. By the way, sem YouTube não ia a lado nenhum [obrigado!]. Ao todo estão já feitos dois videos: RWD (rear wheel drive) Drift e FWD (front wheel drive) 360º. Falta ainda RWD 360º, embora seja praticamente igual feito com um carro FWD e FWD Scandinavian Flick (pré drift), para terminar esta primeira parte das manobras de drift. Para uma próxima fase, será feita uma compilação de manobras feitas a dois. Dois pilotos, dois mesmos carros e manobras coordenadas. Ficam aqui os dois primeiros vídeos anteriormente apresentados:<br /> <br /> <p align="center"><br /> <object width="425" height="350"><param name="movie" value="http://www.youtube.com/v/XaHh5EWYjVo"></param><embed src="http://www.youtube.com/v/XaHh5EWYjVo" type="application/x-shockwave-flash" width="430" height="350"></embed></object><br /> </p><br /> <br /> <p align="center"><br /> <object width="425" height="350"><param name="movie" value="http://www.youtube.com/v/sPxs0wbgycI"></param><embed src="http://www.youtube.com/v/sPxs0wbgycI" type="application/x-shockwave-flash" width="430" height="350"></embed></object><br /> </p> GMT http://mwmdev.com/viewpost.php?id=28 Flight Simulator 2004 - flying lessons Como já disse anteriormente, voltei ao FS 2004 e para além disso juntei-me a uma companhia aérea virtual, a UPS VAC. Antes de me aventurar online e "assério", estou a fazer as Flying Lessons do FS. Ao longo de 7 lições, aprendemos desde subidas [climbs], descidas [descents], viragens [turns], descolagens [take offs] e aterragens [lands]. No final há um teste a solo onde todas as técnicas anteriormente e supostamente apreendidas estão integradas.Uma breve descrição do teste final a solo:<br /> <br /> Céu limpo e ventos calmos sem tráfego quer em terra quer no ar.<br /> Parado na pista, aplico full throttle e aos 55 knots [kts] levanto voo. Tento manter os 80 kts e uma subida de 10º a 800 feet [ft] por minuto, mantendo o heading 193 mais ou menos. Depois de levantar e de estabilizar a 1500 ft, viro à esquerda para perto de Norte. Estou quase paralelo à pista de onde levantei. Já mais à frente, viro à esquerda para perto de Oeste e desco para 1300 ft para preparar a aproximação à pista. Por esta altura já estou a fazer a aproximação final, após ter virado de novo para o heading 193 perto de Sul, descendo a 500 ft por minuto e a guiar-me pelos PAPI [Precision Approach Path Indicator], que nos indicam se estamos na altitude certa durante o processo de aterragem. Últimos acertos antes de aterrar. A aterragem é finalmente concluida. O throttle vai então a zeros e os travões vão a fundo. Tudo correu na perfeição. Também fica ai a análise do voo. E como não podia faltar, recebi o meu certificado de Private Pilot. Mais umas lições e umas horas para treinar e UPS VAC here I go!<br /> <br /> <div align="center"> <table> <tr> <td align="center" valign="bottom"> <table class="albuns" border="0"> <tr> <td width="0" height="0" align="center" valign="bottom"> <a href="http://albuns.mwmdev.com/pictures/fs3.jpg"><img align="center" src="http://albuns.mwmdev.com/pictures/thumbnails/td_fs3.jpg" alt="img: fs3.jpg" border="0"></a> </td> </tr> <tr> <td align="center" bgcolor="#BBBBBB"> <font size="1"><b>255</b> Kb</font> </td> </tr> </table> </td> <td align="center" valign="bottom"> <table class="albuns" border="0"> <tr> <td width="0" height="0" align="center" valign="bottom"> <a href="http://albuns.mwmdev.com/pictures/fs4.jpg"><img align="center" src="http://albuns.mwmdev.com/pictures/thumbnails/td_fs4.jpg" alt="img: fs4.jpg" border="0"></a> </td> </tr> <tr> <td align="center" bgcolor="#BBBBBB"> <font size="1"><b>245</b> Kb</font> </td> </tr> </table> </td> <td align="center" valign="bottom"> <table class="albuns" border="0"> <tr> <td width="0" height="0" align="center" valign="bottom"> <a href="http://albuns.mwmdev.com/pictures/fs5.jpg"><img align="center" src="http://albuns.mwmdev.com/pictures/thumbnails/td_fs5.jpg" alt="img: fs5.jpg" border="0"></a> </td> </tr> <tr> <td align="center" bgcolor="#BBBBBB"> <font size="1"><b>241</b> Kb</font> </td> </tr> </table> </td> <td align="center" valign="bottom"> <table class="albuns" border="0"> <tr> <td width="0" height="0" align="center" valign="bottom"> <a href="http://albuns.mwmdev.com/pictures/fs6.jpg"><img align="center" src="http://albuns.mwmdev.com/pictures/thumbnails/td_fs6.jpg" alt="img: fs6.jpg" border="0"></a> </td> </tr> <tr> <td align="center" bgcolor="#BBBBBB"> <font size="1"><b>246</b> Kb</font> </td> </tr> </table> </td> </tr><tr> <td align="center" valign="bottom"> <table class="albuns" border="0"> <tr> <td width="0" height="0" align="center" valign="bottom"> <a href="http://albuns.mwmdev.com/pictures/fs7.jpg"><img align="center" src="http://albuns.mwmdev.com/pictures/thumbnails/td_fs7.jpg" alt="img: fs7.jpg" border="0"></a> </td> </tr> <tr> <td align="center" bgcolor="#BBBBBB"> <font size="1"><b>258</b> Kb</font> </td> </tr> </table> </td> <td align="center" valign="bottom"> <table class="albuns" border="0"> <tr> <td width="0" height="0" align="center" valign="bottom"> <a href="http://albuns.mwmdev.com/pictures/fs8.jpg"><img align="center" src="http://albuns.mwmdev.com/pictures/thumbnails/td_fs8.jpg" alt="img: fs8.jpg" border="0"></a> </td> </tr> <tr> <td align="center" bgcolor="#BBBBBB"> <font size="1"><b>168</b> Kb</font> </td> </tr> </table> </td> <td align="center" valign="bottom"> <table class="albuns" border="0"> <tr> <td width="0" height="0" align="center" valign="bottom"> <a href="http://albuns.mwmdev.com/pictures/fs9.jpg"><img align="center" src="http://albuns.mwmdev.com/pictures/thumbnails/td_fs9.jpg" alt="img: fs9.jpg" border="0"></a> </td> </tr> <tr> <td align="center" bgcolor="#BBBBBB"> <font size="1"><b>241</b> Kb</font> </td> </tr> </table> </td> <td align="center" valign="bottom"> <table class="albuns" border="0"> <tr> <td width="0" height="0" align="center" valign="bottom"> <a href="http://albuns.mwmdev.com/pictures/fs10.jpg"><img align="center" src="http://albuns.mwmdev.com/pictures/thumbnails/td_fs10.jpg" alt="img: fs10.jpg" border="0"></a> </td> </tr> <tr> <td align="center" bgcolor="#BBBBBB"> <font size="1"><b>188</b> Kb</font> </td> </tr> </table> </td> </tr><tr> <td align="center" valign="bottom"> <table class="albuns" border="0"> <tr> <td width="0" height="0" align="center" valign="bottom"> <a href="http://albuns.mwmdev.com/pictures/fs11.jpg"><img align="center" src="http://albuns.mwmdev.com/pictures/thumbnails/td_fs11.jpg" alt="img: fs11.jpg" border="0"></a> </td> </tr> <tr> <td align="center" bgcolor="#BBBBBB"> <font size="1"><b>258</b> Kb</font> </td> </tr> </table> </td> <td align="center" valign="bottom"> <table class="albuns" border="0"> <tr> <td width="0" height="0" align="center" valign="bottom"> <a href="http://albuns.mwmdev.com/pictures/fs12.jpg"><img align="center" src="http://albuns.mwmdev.com/pictures/thumbnails/td_fs12.jpg" alt="img: fs12.jpg" border="0"></a> </td> </tr> <tr> <td align="center" bgcolor="#BBBBBB"> <font size="1"><b>242</b> Kb</font> </td> </tr> </table> </td> </tr></table> </div> GMT http://mwmdev.com/viewpost.php?id=27 Dabliu - project Este projecto tem como base a revolução que já começou WEB 2.0. A ideia é criar um espaço online onde cada utilizador tem tudo o que precisa para estar e quando está online. Se forem como eu, quando abrem o vosso browser, no meu caso o Firefox 2.0, a coisa mais frustrante é andar à procura de certos sites ou mesmo de ter de ir sempre procurar os sites que visitamos diariamente. Outro problema é o de não estarmos no nosso PC e querermos mostrar a alguém algum site que não nos lembramos ou mesmo uma simples fotografia, uma música ou um vídeo. Fundamentalmente, este projecto serve para isso mesmo, juntar todos estes problemas comuns na maior parte dos utilizadores e colocá-los num espaço online onde não só o utilizador que o criou o usa e desfruta das suas ferramentas e utilidades, como qualquer outra pessoa o pode usar se encontrar algum interesse nesse espaço.<br /> A cada site pessoal vamos chamar-lhe dabliu [W : double u -> double you] com o sentido de que esse espaço é uma segunda parte do utilizador, todos os seus conteúdos estão lá reflectidos para serem usados por si ou por outros. Assim, cada utilizador terá um dabliu. Por exemplo eu teria o espaço: mWm.dabliu. E assim sucessivamente para cada utilizador que se juntasse ao projecto. Para levar isto para um modo mais abrangente em que existiria um espaço oficial para registar os dablius, teria de ter algum conhecimento de php para criar um espaço destes com bases de dados para os utilizadores se registarem. Se arranjar um grupo para fornecer e dar mais vida à ideia porei estas ideias em prática, se não, ficar-me-ei pelo meu dabliu e tentarei transmitir a ideia a alguém. O meu actual mWm.dabliu encontra-se online aqui: mWm.dabliu [link em falta] GMT http://mwmdev.com/viewpost.php?id=26