Como disse em um texto anterior, acho que tecnologia se aprende fazendo, como eu queria aprender e testar algumas coisas, surgiu o Simples Ideias. Na época, em janeiro, queria colocar em prática o máximo que aprendi sobre Restful, JQuery e Spaghetti, e o Simples Ideias foi uma boa experiência.
Mas agora eu queria mais, então primeiro com o intuito de internacionalizar o aplicativo, surgiu o IdeasWall.org, que é a evolução do simples ideias, mas em inglês e com novas tecnologias.
O básico continua o mesmo serviço, de guardar Idéias em Tags e acessar em qualquer lugar. Mas só isso que continua o mesmo.
Eu ia reescrever o serviço em outra linguagem sem ser PHP, como Clojure, mas essa mudança iria demorar muito então resolvi por reescrever, mas em PHP mesmo, mas sem usar o Spaghetti* por motivos que vou explicar mais a frente. Como o serviço é simples foi rápido reescreve-lo e graças aos testes em CURL, estava tudo funcionando. Vamos as interfaces:
Mobile. (J2ME)
O principal objetivo do app, desde antes, era acessar em qualquer lugar. Então a primeira nova interface a ficar pronta foi a para celular. Feita em J2ME de forma extremamente simples aqui pus em prática o estudo desta tecnologia.
As telas são simples e com controles rápido, todos os algoritmos foram reduzidos para caber nos aparelhos mais limitados, e o acesso a web é feito apenas quando necessário e com chamadas o reduzidas.
Obviamente também não oferece muitos recursos e não haverá muitos updates, exceto a opção de trabalhar offline e sincronizar por demanda no futuro.
Web. (JQuery)
A versão web, escrita em JQuery, foi a cópia da antiga interface do serviço, apenas adaptando as mudanças no webservice. É a primeira interface rica, e foi a ultima a ficar pronta, pois o JavaScript esta um lixo, shame on me.
Apesar disso é talvez a melhor opção de acesso, oferece todos os recursos implementados no serviço com um desempenho muito bom, além de esta a um link de distância.
Nela usei os recursos de Arrastar nós, Edição sem sair da página, Abas e muita requisição assíncrona com Json. Funciona no Opera, no Firefox, no Chrome e no IE 7, não funciona no IE6. No IE7 até que foi fácil, neste app eu não ligo para o IE6 mesmo. Não pude testar no Safari, mas aposto que não funciona.
Desktop. (JavaFX)
Sem dúvida, o principal motivo do novo aplicativo. Estou muito empolgado com a tecnologia do JavaFx e resolvi fazer um app para o JavaFx Challenge, como não tive muito criatividade em pensar em algo novo, resolvi refazer o app de idéias. Como ia para o challenge ia ter que passar a Inglês e padronizar mais o serviço, então refiz logo tudo.
JavaFx é muito bom de trabalhar, com sua sintaxe declarativa e similaridades com programação funcional(um pouco longe, mas...) e ainda assim acesso a todo poder dos pacotes do Java. Essa foi o primeiro do novo serviço a ser implementado, logo após reescrever o PHP pela primeira vez.
Essa é com certeza o que mais me dediquei, a interface esta tão trabalhada quanto aguentei, usei os belos icones do KDE, Oxygen e Crystal SVG, para me ajudar, e tentei deixar a interface o mais funcional possível.
Graças ao JavaFx o app funciona nos navegadores(Qualquer) como applet, ou pode ser lançado separado com o WebStart, além de poder arrasta-lo para área de trabalho para deixar instalado localmente.
Infelizmente ainda existem problemas, o tempo para carregar o applet ainda acho muito demorado, mas a versão Webstart e local não sofrem disso, a API ainda tem poucas coisas mas de fácil extensão, e esbarrei num bug sinistro nos HttpRequest que paravam de funcionar.
O Runtime é razoavelmente rápido até, e a experiência é boa, com resposta rápida da interface o feedback é bom. Com as otimização corretas no código é fácil eliminar os gargalos. E em todo lugar que testei funcionou igual.
Webservice. (PHP e GAE)
Como disse no começo reescrevi o webservice por que o queria em inglês e mais padronizado. Como o foco inicial era o JavaFx a primeira reescrita em PHP foi rápida, usei o RestServer e um classe de Sql qualquer, e em meio-dia estava pronta para testar o Javafx e mais tarde baixaria o Framework novamente e melhoraria o código.
No decorrer do desenvolvimento porém resolvi aproveitar a oportunidade para testar o Google App Engine, que tinha lançado o ambiente Java e já havia resultados usando o PHP através do Quercus. Quando o JavaFx já estava quase pronto, me cadastrei no GAE e registrei o domínio.
Enquanto esperava entrar no GAE, instalei o Quercus para começar a portar o serviço, deu um bom trabalho mas funcionou. Aproveitei e comecei a adaptar logo a interface Web. Ai o tempo estava esgotando, já que meu prazo é o JavaFx challenge.
Quando resolvi finalmente passar ao GAE tive ainda de configurar tudo, e a parte que mais me atrapalhou, mudar o esquema de banco de dados. Quer dizer, no GAE não temos um banco de dados comum, disso eu sabia, mas o que eu não tinha percebido é que não poderia usar um externo também!
Bom, tive que aprender JDO, fazer a persistência o mais simples possível em Java adaptar todo o PHP para usar o novo esquema, "wrapping" toda a alteração em uma classe de conexão em PHP.
Enfim, estou cansado e resolvi deixar o web service como esta, já que ainda havia o bug no JavaFx, a página a escrever e testar tudo no Windows. Mas, finalmente, desde de o começo de abril com esse projeto, esta tudo pronto! Viva viva.
E agora?(futuro)
Pronto esta, mas ainda tem muito o que acrescentar:
- Vou reescrever o serviço com certeza, mas ainda não sei se em PHP.
- Um interface(ou adaptar a atual) capaz de ficar na bandeja.
- Possibilidade de usar offline com sincronismo por demanda, em todas as versões.
- IPhone?
- Ambiente compartilhado?
- Integração com o Google Calendar e E-mail?
- Notas com data para termino ou para acontecer.
Fim.
Espero que não tenha muito erro de português, não revisei o texto e estou com fome ;)
- Comments





