Criando um sistema de tarefas com o TheWebMind
Posted by jaydson in TheWebMind on 16 de fevereiro de 2010
Hoje começo uma série de posts onde pretendo mostrar o poder do TheWebMind para criação de uma Aplicação.
Com o último release, uma das principais novidades é o módulo nativo Zend Models, que gera uma estrutura MVC utilizando o Zend Framework.
Atualmente o TheWebMind encontra-se na versão Pre-Alpha, isso quer dizer que ainda não está totalmente estável, ainda possui bugs e melhorias a serem implementadas.
Mas com o que temos hoje, é possível fazer muita coisa. E é isso que quero compartilhar.
Parto do princípio que quem estiver seguindo o tutorial já saiba o que é o TheWebMind, e conheça a teoria por traz de tudo.
Caso contrário acesse a página da documentação: http://docs.thewebmind.org/index.php?title=Main_Page
Minha proposta é criar um sistema simples de tarefas.
Requisitos:
O sistema deve permitir o cadastro de usuários.
O usuário deve ter nome.
A tarefa deve possuir título, descrição, data e um usuário vinculado.
O sistema deve permitir o cadastro de várias tarefas para um usuário.
O sistema deve possuir interface para edição e visualização dos dados, tanto de usuários como de tarefas.
Resumindo, é um sistema bem simples, onde o usuário cadastra suas tarefas.
Passo 1 – Criando um projeto no TheWebMind
Para criar um projeto, acesse o menu File > New Project e preencha os dados do projeto.
OBS: Certifique-se de que você tem um banco de dados instalado e configurado no seu server, e preencha corretamente os dados, informando o endereço, nome, porta, usuário e senha do banco de dados.
São estas informações que o TheWebMind utiliza para gerar as tabelas.
Passo 2 – Escrevendo em WML
Criado o projeto, vamos escrever o código WML que atenda aos requisitos.
A sintaxe da linguagem WML é baseada no conceito NLP (Natural Language Processing), que consiste basicamente em ser semelhante a linguagem humana natural(Português, Inglês, Espanhol, etc).
Veja mais detalhes na documentação: http://docs.thewebmind.org/index.php?title=Web-Mind-Language
<br /><br />Sabemos que o usuario tem nome:string(100);<br />A tarefa tem título:string(100);<br />A tarefa tem descrição:text();<br />A tarefa tem data:date();<br />O usuario tem tarefa;<br /><br />
Passo 3 – Visualizando as saídas
Clique no botão
localizado na barra de tarefas acima do editor.
Depois de “compilado” o projeto, você poderá ver as saídas como diagrama ER, Dicionário de dados, e o código SQL no painel de abas logo abaixo do editor.
Passo 4 – Gerando o projeto
Para gerar o projeto clique no botão
também localizado na barra de tarefas acima do editor.
Uma tela de Wizard abrirá, guiando o usuário até o final.
No Step 1 selecione a segunda opção, que indica o banco de dados de desenvolvimento previamente cadastrado na tela de criar o projeto.
Avance para o próximo passo clicando no botão Next.
Uma tela com todos os módulos será exibida no Step 2, selecione o ZendModels e avance para o próximo passo.
No Step 3 existem 2 opções relacionadas ao que o TheWebMind irá fazer em relação ao banco de dados.
Esta opção deve ser cuidadosamente selecionada, pois se você selecionar a opção “be replaced” , o TheWebMind irá deletar a tabela existente, assim como todos os seus dados e criará uma nova com as alterações necessárias.
A opção “be skipped” ignora qualquer alteração na base de dados.
Agora clique em Finish, e acompanhe a tela onde o TheWebMind mostra tudo que está acontecendo, como cópia de arquivos necessários, criação de tabelas, etc.
Pronto. Você acabou de criar um sistema com o TheWebMind.
Passo 5 – Visualizando o projeto gerado
Feito todo o trabalho, o TheWebMind irá exibir a mensagem “Finished, the project’s been generated here“.
Uma tela com a arvore de arquivos gerados será exibida. É possível ver o conteúdo de um arquivo ao seleciona-lo.
Acima da árvore, clique no botão “Explore Files” , este o conduzirá até a página onde a Aplicação foi gerada.
Passo 6 – Testando a Aplicação
Seguindo esses passos temos um simples sistema de tarefas funcionando.
Para testar publiquei a aplicação gerada aqui: http://source.jaydson.org/TaskList/
O ZendModels gera os formulários da aplicação, isso serve para testarmos se tudo esta funcionando corretamente.
Bom, este foi um pequeno tutorial de como fazer um sistema simples com o TheWebMind utilizando o ZendModels.
Qualquer dúvida entrem em contato ou comentem.
Abaixo segue o link para download da aplicação gerada no exemplo, mas para um melhor entendimento do TheWebMind sugiro que vocês façam o download do TheWebMind, e sigam todos os passos descritos acima.
É muito fácil.
Download: http://source.jaydson.org/TaskList.rar
Vejam um outro exemplo no blog do @felipenmoura : http://felipenascimento.org/en/portugues-brasil-criando-uma-aplicacao-funcional-com-thewebmind/
TheWebMind Pre-Alpha 2.0.0
Posted by jaydson in TheWebMind on 12 de fevereiro de 2010
O primeiro post do ano não poderia tratar de outra coisa, que não o projeto com o qual venho dedicado boa parte do meu tempo.
Como vocês devem saber, juntamente com o Felipe Nascimento sou Desenvolvedor/Líder do TheWebMind.
O projeto vem crescendo ao longo dos meses, e 2010 promete ser um ano de muito sucesso.
Desenvolvedores espalhados pelo Brasil e pelo mundo estão entrando em contato conosco mostrando interesse em participar de alguma maneira do TheWebMind.
Aos poucos estamos nos organizando e selecionando pessoas engajadas que possam contribuir.
Semana passada foi um marco para o TheWebMind. Finalmente depois de muito trabalho, liberamos a versão Pre-Alpha 2.0.0.
Está versão esta totalmente diferente da 1° versão lançada em 2009.
Reescrevemos praticamente todo o core e reformulamos totalmente a interface.
Construímos um novo módulo(ZendModels) que gera código PHP baseado no Zend Framework.
Bom, aos interessados segue abaixo o link para download:
http://thewebmind.org/download_latest
Nas próximas semanas pretendo postar exemplos práticos de uso do TheWebMind, principalmente usando o ZendModels para geração de código.
WML language
Posted by jaydson in TheWebMind on 19 de novembro de 2009
Hoje vou falar um pouco sobre a WML, a linguagem que o TheWebMind interpreta.
A Web-Mind-Language(WML) é uma linguagem baseada no conceito NLP(Natural Language Processing), que é um campo da ciência da computação que se preocupa com a interação entre linguagens de computadores e humanas(naturais).
A linguagem se assemelha muito com a natural (português, inglês, espanhol, etc.), apenas seguindo algumas regras de sintaxe.
Este padrão, chamamos de Linguagem de Programação Discreta.
Em uma linguagem de programação discreta, as instruções são totalmente variáveis podendo inclusive sofrer alterações durante seu uso, ou por conta de costumes do próprio usuário, bem como idioma, dialeto, crenças, etc.
Um dos princípios mais básicos das linguagens de programação é que “tudo aquilo que não está certo, está errado”.
Já no conceito de programação discreta, nem tudo que não é reconhecido pela linguagem, está necessariamente incorreto.
Esta margem de erro possibilita tanto ao desenvolvedor, adaptar-se melhor à linguagem, quanto à própria linguagem de se adaptar e evoluir.
Programar em WML é extremamente simples, observem o exemplo abaixo:
Bom, nós sabemos que cada professor pode ter um ou mais aluno também sabemos que todo aluno possui muitos professor nos foi passado que o aluno tem um nome:string(100) e que o professor possui um nome:string(100)
De primeira olhando o código temos a impressão de que algo esta estranho, não?
Pois é asim mesmo que tudo funciona.
O príncipio é escrever o código de maneira natural, como se estivéssemos documentando o projeto, ou apenas escrevendo sobre ele.
Feito isso, a engine do Mind irá aplicar uma série de regras em cima do código, e interpretará o conhecimento que lhe foi passado.
Com o código acima, o Mind consegue gerar diversas saídas como Diagrama de Entidade e Relacionamento, Dicionário de Dados, Código SQL, e até mesmo gerar código usando um módulo específico.
Abaixo algumas das saídas:
Código SQL gerado pelo código feito acima:
/*######################################################
# Generated by Mind 02:58 11/19/2009 #
# Generate PostgreSQL DataBase Commands #
######################################################*/
/* DDL: table professor */
CREATE SEQUENCE professor_seq;
CREATE TABLE professor
(
pk_professor integer default nextval('professor_seq') unique not null,
nome varchar(100),
PRIMARY KEY(pk_professor)
);
/* DDL: table aluno */
CREATE SEQUENCE aluno_seq;
CREATE TABLE aluno
(
pk_aluno integer default nextval('aluno_seq') unique not null,
nome varchar(100),
PRIMARY KEY(pk_aluno)
);
/* DDL: table professor_aluno */
CREATE SEQUENCE professor_aluno_seq;
CREATE TABLE professor_aluno
(
pk_professor_aluno integer default nextval('professor_aluno_seq') unique not null,
fk_professor integer ,
fk_aluno integer ,
PRIMARY KEY(pk_professor_aluno)
);
/* Adding Foreign Keys */
ALTER TABLE professor_aluno ADD CONSTRAINT professor_aluno_professor FOREIGN KEY (fk_professor) REFERENCES professor(pk_professor) MATCH FULL;
ALTER TABLE professor_aluno ADD CONSTRAINT professor_aluno_aluno FOREIGN KEY (fk_aluno) REFERENCES aluno(pk_aluno) MATCH FULL;
Diagrama ER:

Digrama ER
Abaixo segue um vídeo curto que mostra como porgramar WML utilizando a IDE do Mind:
Por hoje é isso.
Em breve mais posts sobre esta incrível ferramenta.
Por enquanto acessem o site e a documentação:
Como fazer mais em aplicações RIA escrevendo menos
Posted by jaydson in Javascript, Jquery on 18 de novembro de 2009
Quando falamos em aplicações RIA utilizando Javascript, logo pensamos em uma biblioteca que nos auxilie na construção dessas aplicações.
Dentre uma infinidade de bibliotecas e frameworks existentes atualmente, o jQuery continua sendo minha alternativa preferida.
Sua simplicidade e ao mesmo tempo robustez proporcionam diversas funcionalidades indispensáveis no desenvolvimento de uma aplicação rica.
Juntamente com o Felipe Nascimento, palestrei na Target Trust (empresa de TI especializada em treinamentos aqui em Porto Alegre) nesta terça-feira(17/11/2009) sobre a biblioteca jQuery.
O objetivo da palestra foi introduzir o jQuery de maneira que os ouvintes pudessem compreender o poder da biblioteca e do Javascript em si.
Quem teve a oportunidade de acompanhar a palestra conheceu um pouco da história do jQuery, sua origem e também ver as inúmeras possibilidades e funcionalidades.
Abaixo então seguem os slides:
TheWebMind – Um novo paradigma
Posted by jaydson in TheWebMind on 16 de novembro de 2009
Como todos sabem, neste último sábado palestramos sobre o projeto TheWebMind no Tche Linux 2009.
A palestra explica o funcionamento da plataforma Mind, assim como a sintaxe da linguagem entre todas outras funcionalidades.
Estou preparando alguns exemplos sobre o uso do TheWebMind. Em breve posto aqui no Blog.
Segue abaixo os slides para quem não pode comparecer.
TheWebMind no TcheLinux 2009
Posted by jaydson in TheWebMind on 10 de novembro de 2009
Para quem ainda não conhece, vale muito a pena dar uma estudada no projeto da qual me sinto muito orgulhoso de fazer parte, o TheWebMind.
Esse projeto tem um objetivo bem audacioso: Entender um problema e resolve-lo da melhor maneira possível. Claro que tudo isso no mundo do desenvolvimento de Software.
Quando vamos desenvolver um sistema precisamos inicialmente de um escopo. Após isso é feita a análise visando o sistema como um todo e por ai vai… Modelagem de banco de dados, Diagramas, Modelo de Classes etc.
Existem diversas metodologias, e cada sistema é único, porém muitas tarefas acabam se repetindo.
Leia o resto desse post »
Extreme JavaScript Performance
Posted by jaydson in Javascript on 9 de novembro de 2009
Acabei de ler aqui os slides do Thomas Fuchs, que para quem não conhece, é um dos Gurus do Javascript.
O Thomas além de ser o criador da biblioteca Script.aculo.us é membro do core da bilbioteca Prototype, e semana passa anunciou o Scripty2.
O Scripty2 nada mais é do que o próprio Script.aculo.us porém totalmente reescrito e otimizado.
Javascript levado a sério
Posted by jaydson in JSON, Javascript, Jquery, Palestras on 23 de outubro de 2009
Javascript é a linguagem de script mais popular da internet.
Porém, mesmo com toda essa fama, o Javascript ainda é incompreendido.
Segundo Douglas Crockford, um dos mestres da linguagem, essa incompreensão tem varias origens.
Este foi um dos tópicos na palestra que fiz na III Mostra de iniciação científica do Senac-RS.
Javascript – Problema com Evento Change
Posted by jaydson in Browsers, Javascript, Jquery on 14 de outubro de 2009
Semana passada deparei-me com um problema no Internet Explorer (Déjà vu).
A funcionalidade que precisavamos implementar era bem simples:
Verificar se o formulário foi alterado. Ou seja, se o usuário está na página e resolve simplesmente sair e o formulário foi alterado, precisavamos alerta-lo.
O que me ocorreu na hora foi utilizar o Evento change do <form>.
Leia o resto desse post »
Capturar erros Ajax com jQuery
Posted by jaydson in Javascript, Jquery, Jquery-Plugins on 15 de setembro de 2009
Capturar erros Ajax é mais uma tarefa que o jQuery nos da uma boa ajuda.
O que quero dizer com isso é que a biblioteca nos fornece uma série de informações úteis que as vezes passam desapercebidas pelos desenvolvedores.
A primeira coisa a se notar é o evento error.
Neste evento podemos passar uma função(callback) que será executada quando a requisição falhar. São passados 3 parâmetros para esta função:
O objeto XMLHttpRequest, uma String que descreve o tipo do erro que aconteceu e um objeto exceção(opcional).
Uma boa observação é que nunca teremos o evento Success e o evento Error juntos na mesma requisição(meio óbvio isso).
