Mostrando postagens com marcador umeboshiserver. Mostrar todas as postagens
Mostrando postagens com marcador umeboshiserver. Mostrar todas as postagens

quinta-feira, setembro 02, 2010

Interfaces Divisíveis (Umeboshi Server, Node Knockout parte 3 - final)

Eis uma apresentação do conceito guia do nosso projeto:



Se preferir em Português:



Demoramos um pouco p/ amadurecer o conceito, e ja adianto que ele não está 100% ainda, mas esta é a idéia básica, que consiste em:


  1. Elementos de interface possuem URLs

  2. Ao se acessar estas URLs, o elemento é então transferido ou replicado na tela de quem acessou.

  3. Listeners e dispatchers de eventos são configurados de maneira semelhante à que seriam para ouvir e enviar eventos dentro do contexto de uma página web, mas extendido para ouvir e enviar(pubsub) via rede pelo canal previamente combinado.



Para tornar isto possível, o primeiro passo foi fazer um servidor que criasse um novo canal pubsub para quem quer que precisasse de um. Em uma analogia com seres humanos, seria um instanciador de salas de chat, ou um carinha que reserva salas de reunião p/ quem pede. Este é o Umeboshi Server.

Então a sequência ou ciclo de vida de um aplicativo que quer que seus elementos conversem remotamente seria algo do tipo:


  1. pede para reservar um canal (acessa o entrypoint /channels/new ou /channels/new?fmt=json p/ resultado em json ou /channels/new?fmt=json&callback=foo para jsonp)

  2. passa de alguma forma este canal para as paginas relativas a cada elemento(que vao ser servidas em cada URL de um elemento destacável)

  3. prepara a lógica do que ouvir e do que falar e do que fazer quando ouvir algo relevante



Como se nota, o servidor em si, que foi nosso projeto, não faz muita coisa. Só dá o suporte para que aplicações do tipo das que visionamos, com interfaces quebráveis/divisíveis/espalháveis possam ser rapidamente e facilmente desenvolvidas por quem está habituado a fazer aplicativos single-page em HTML. Basta a inclusão de duas <script> tags extras, uma que é o include do client Faye e outra que é a chamada ao entrypoint JSONp que te retornará o código do canal em uma callback. A partir daí é tudo responsabilidade do developer.

E é isso aí, foi um projeto que gostei de participar, e que quero continuar trabalhando nele, estamos atualmente continuando a conversa na lista de discussões do umeboshi fireteam e desde já convido a todos que se interessarem a participar também, sugestões e patches são muito bem vindos.

[UPDATE 3-Setembro-2010] A votação acabou. Muito obrigado a todos que doaram parte do seu tempo para votar e deixar um review la na página da competição. Ao que parece, conseguimos ficar entre os top 5 na categoria inovação (4º lugar). E nos próximos dias atualizaremos a página do projeto e o código do servidor uma vez que os repositórios e a máquina onde fazemos deploy estão liberadas novamente.

Para acompanhar o progresso, por favor se inscreva na lista de discussão do Umeboshi Fireteam, estamos coordenando os próximos passos por lá.

terça-feira, agosto 31, 2010

Node Knockout (Parte 1): Node.js

Participei este fim de semana com meu irmão e mais dois amigos da competição Node.js Knockout, uma maratona onde cada equipe teve 48 horas para programar/desenvolver um produto que utilizasse o Node.js.

(pretendo escrever mais sobre o projeto que enviamos nos posts seguintes, mas se vc está curioso assista a estes dois videos: demo1, demo2)

Node o quê?


Eu deveria ter tirado a poeira deste blog para escrever sobre o Node.js antes…

Bom, o Node em poucas palavras é um interpretador de Javascript(engine V8, a mesma do Chrome) com alguns poderes especiais tipo acesso ao filesystem, processos, stack de rede e chamadas do sistema, etc… E o Node chuta bundas!

É sério!! Node.js é do caralho e se você ainda não brincou com ele, ou quer brincar mas está adiando o aprendizado por qualquer que seja o motivo, pare tudo e instale agora o node na sua máquina. Você pode me agradecer depois…

Mas você não precisa acreditar na minha palavra, se tiver com tempo eu recomendo assistir a tech talk do criador do projeto, e tirar suas próprias conclusões.

Enfim, eu comecei a brincar com o node há pouco tempo, e fazendo coisas bem simples, tipo esta ferramenta de linha de comando para consultar os Trending Topics do Twitter sem ter que sair do meu Terminal…

E o legal de começar a brincar com uma tecnologia que tem potencial enquanto ela ainda está no início (versão 0.2.0 e com trunk bem ativa) é que todos estão empolgados e todo mundo tem uma opinião de como implementar este ou aquele módulo, o que de certa forma trás renovação e competição para a mesa… dê só uma olhada nesta lista de libraries, tem de tudo e para todos os gostos!

Não só tem de tudo e para todos os gostos com tem n opcões de módulos diferentes para escolher qualquer que seja a funcionalidade que vc precise:

— Quer mysql? Toma, escolhe entre estas seis aqui.
— Precisa servir websockets? Ok, uma destas 4 aqui deve servir.
— Ah, mas eu queria um parser p/ opções da linha de comando bem simples…
— Sem problemas, veja se algum destes serve…
— Não gostou de nenhum? Faça um novo! Afinal, é tudo Javascript mesmo, e você já programa isso o dia inteiro para websites, oras…

[Update] Ok, eu exagerei na frase acima, não é tudo Javascript, vc pode desenvolver módulos nativos compilados em C ou C++ também :) (Veja a parte de Addons na página da API, ou este tutorial)

[Update 2] Confira as partes 2 e 3 deste post.