terça-feira, 17 de fevereiro de 2009

Gerador de Diagramas de Seqüência a partir de XMLs



Recentemente, precisei gerar diagramas de seqüência automaticamente. Comecei a procurar geradores de diagramas de seqüência e de fato eu encontrei várias ferramentas que geram diagramas a partir de XMI. Dentre elas algumas que valem a pena serem citadas são: a Xmi2Svg e o Net Beans Uml Diagrams . O problema de todas as soluções apresentadas é que as entradas eram em XMI e, o pior um XMI extremamente específico, problema comum no XMI, o que o faz sair do próprio propósito original. O código do XMI é muito esquisito, na falta de uma palavra melhor. Um trecho de um diagrama de seqüência simples do Net Beans pode ajudar a demonstrar o que eu quero dizer:
</UML:GraphEdge.waypoints>
<UML:GraphElement.semanticModel>
<UML:Uml2SemanticModelBridge presentation="Message" xmi.id="xmi_id">
<UML:Uml2SemanticModelBridge.element>
<UML:Message xmi.idref="DCE.1F882CFB-E059-6341-7A50-2D9D63879AEB"/>
</UML:Uml2SemanticModelBridge.element>

Após muito procurar, eu resolvi partir para a filosofia "faça você mesmo". Então, após alguns dias de esforço, eu apresento a vocês o meu Gerador de Diagramas de Seqüência . Como é um código PHP, este está num link externo do meu ainda inutilizado dominio pessoal.

Neste conversor o XML de entrada é muito mais simples que o XMI, focado apenas no diagrama de seqüência , sendo facilmente compreensível. Conforme exemplo:

<sequence>
<actors>
<actor id="1" type="user">me:people</actor>
<actor id="2" type="system">you:people</actor>
</actors>
<messages>
<message type="call" from="1" to="2" text="hi"/>
<message type="return" from="2" to="1" text="hello"/>
</messages>
</sequence>


Gere então seu próprio XML, divirta-se no exemplo dos "Três Porquinhos" e me diga o que achou. Esse gerador de diagramas faz parte de um plano muito maior que eu ainda não revelarei para os senhores. Mas saibam que no fim tudo será revelado!!!

segunda-feira, 12 de janeiro de 2009

Métodos Mágicos no Javascript.

Uma das coisas que eu mais gosto em php é a simplicidade junto com a riqueza de recursos. Um recurso muito conhecido, de uso simples mas que é extremamente interessante são os métodos mágicos. Uma vez eu estava me perguntando se existiria algo parecido com isto em javascript e a resposta é: "depende". Na verdade esse recurso está disponível no firefox e foi nele que eu achei a documentação a respeito.

Tudo isso e muito mais pode ser visto neste link do site da Mozilla Firefox.

Não sei se ele chega a funcionar no Safari ou no Google Chrome, eu particularmente duvido devido ao fato de não ser padrão, mas CERTAMENTE não funciona no Internet Explorer.

Ainda assim, quando se deseja depurar páginas javascript no Firefox, fazer esses métodos gerarem uma exceção já ajuda bastante a se encontrar o erro, pode-se ainda fazer as "classes" de seu framework todas extenderem de uma classe padrão que ao se tentar ler ou escrever qualquer atributo inexistente ou chamar um método inexistente gere uma exceção evitando, principalmente ao lidar com atributos, que valores "undefined" possam ser lidos ou que novos atributos "fantasmas" possam aparecer nos seus objetos.

Infelizmente não podemos utilizar isso como recurso de framework tendo em vista a restrição de uso, salvo alguem tenha alguma ideia genial para fazer isso funcionar em qualquer navegador. Não vale citar o projeto Tamarin!! Alguma idéia ?

sábado, 27 de setembro de 2008

Head Tracking - Web 3D

Maioria de nós, já vimos em ficções científicas como no futuro a internet seria 3D. Muito barulho foi feito de como isso poderia ser fantástico, mas o "como fazer", "de que forma", "a que custo" e talvez até o mais importante, "como isso pode ser útil" sempre são questões que apenas a realidade responde.

Nesse video, Jonnhy Chung Lee fala a respeito de como isso pode ser feito com um monitor normal, se alterando a imagem apresentada, ainda em 2D, através de uma projeção a partir do ponto de vista do observador. Para se rastrear a posição do observador, ele utilizou o contole do Nitendo Wii.



Apesar do resultado já impressionante, este método ainda exige que o usuário do seu site tenha um Nitendo Wii. Bem, Chris Harrison em seu projeto de Head Tracking, numa tradução livre "Monitoramento de Face", utiliza a web cam para detectar aonde está o observador e faz a mesma triangulação sem necessitar do Nitendo Wii.



Por último, falta "apenas" colocar isto tudo num flash. Aparentemente, no que depender de Jim Foley, não vai demorar tanto. Ele já está rascunhando um flash que faz este processo usando o infra vermelho.



Muito mais nesta área está para vir. Como podemos ver em http://wiiflash.org/ os desenvolvedores e designers estão a todo vapor, em breve estaremos vendo várias páginas com contéudo 3D. Além disto, o Head tracking, pode ser utilizado para várias outras aplicações, como podemos ver em outro projeto do Chris Harrison

Formei!


Gostaria de agradecer a todos aqueles que de alguma forma contribuíram para isto.

Um agradecimento especial ao meu grande amigo Renê de Lima , que foi meu companheiro de curso, de trabalho, de sinuca, e parceiro na nossa monografia, a professora Cláudia Nalon, a qual eu tenho muito orgulho de ter sido aluno, e a toda a minha família é claro.

Muitos projetos pessoais que estavam na gaveta ou em marcha lenta estão aos poucos, saindo do papel.

Em breve muitas novidades.