felipeNascimento.org(true);

Making the web a better place to live

Browsing Posts in theWebMind

Mind can now learn new verbs and data types.
Now, you can configure it to ask you those expressions theWebMind does not understand, allowing you, then, to teach it how to deal from now on with that.
For example, if you use:
Student attempts classes.
Mind will not recognise any verb on it and will ask it for you. Then you can tell it that here, “attempts” is the verb. From now on, any time anyone use this same verb, Mind will know how to deal with it.
The same is going to happen when you use unknown data types as the following:
teacher has salary:bucks(5.2).
Mind doesn’t know bucks, then when it asks you for that, you can tell it that it is related to the REAL type. Now, Mind knows how to treat it ;)

TheWebMind no Flisol 2010

No comments

O Flisol é um evento que ocorre simultâneamente em diversos lugares da América Latina, e este ano estaremos presentes no evento, palestrando sobre o Mind em Caxias do Sul, as 11 da manhã.
O nome da palestra será “Desenvolvimento rápido ao extremo com theWebMind”.
Confira maiores detalhes no site oficial do evento:
https://flisol.net/FLISOL2010/Brasil/CaxiasDoSul#WebMind

Quero apresentar neste post, e em alguns mais que virão, como podemos criar uma aplicação completa a partir de não mais que 6 linhas utilizando o theWebMind.
Um de seus principais desafios é mostrar como podemos explorar muito mais de algumas de nossas capacidades, que são verdadeiros diferenciais contra as máquinas, ao mesmo tempo, sabendo extrair o que há de melhor nas máquinas, e que não temos sequer chance de concorrer. Sim, estou falando de criatividade, inovação, imaginação, versus habilidade matemática, lógica e performance ao se aplicar regras.
TheWebMind está em sua versão Pre-Alpha 2.0.0 e com certeza ainda ha muitas melhorias por vir, além de possíveis bugs a serem corrigidos.

Com o último release, uma das principais novidades é o módulo nativo Zend Models, que gera uma estrutura MVC utilizando o Zend Framework.

Caso ainda não conheça o Mind, como assim o chamamos, visite seu site oficial e veja a documentação.

Após ter baixado o último release do Mind e tê-lo movido para um diretório em seu ambiente de desenvolvimento PHP, por exemplo, https://localhost/thewebmind/, basta acessar tal endereço para vê-lo funcionando. Ao ser acessado pela primeira vez, o Mind tratará de criar um usuário padrão, que recomendamos que se altere a senha, e prepara o ambiente todo, mesmo que você nem perceba. A partir daí, ja estarás apto a sair usando o Mind.
Caso tenha tido algum problema nesta parte, visite a nossa FAQ e a página com detalhes sobre a instalação.

Sobre o sistema a ser desenvolvido:
Pensei no que preparar, de forma a mostrar de tudo um pouco, e por isto decidi fazer um sistema de posts, onde usuários pudessem criar posts, e outros usuários pudessem comentar os mesmos, além de dar uma nota de 1 a 5.

1º Passo, criando um projeto no Mind

Já logado na IDE do Mind, acesse o menu File, e então New Project. Um formulário será exibido solicitando algumas informações.
Note que não é necessário ter uma base de dados já funcionando para ir desenvolvendo o projeto, porém, ao se solicitar que o Mind gere os arquivos ou a base de dados, sim, neste momento será necessário a existência de um banco de dados já configurado. Aconselho a já cadastrar os dados para um banco de dados desde o início. Podemos ainda cadastrar duas bases de dados diferentes, uma para testes e outra pra produção.

2º Passo, escrevendo em WML

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), e ainda obedece ao conceito de programação discreta.
Caso precise de alguma ajuda nesta sintaxe, visite a documentação do Mind sobre WML.

O código que preparei para este protótipo foi o que segue:

Sabemos que todo login tem nome:caractere(60).
Também, o login tem idade:inteiro(). E login pode ter muitos post.
Sendo que cada post tem título:string(40, obrigatório).
E todo post tem descrição:texto().
Post pode ter muitos comentário.
Comentário tem mensagem:varchar(140).
Enquanto que todo o comentário
tem pontuação:inteiro(-1, {1=Ruim|2=Regular|3=Bom|4=Muito Bom|5=Ótimo}).

Para compreender o que foi escrito: apenas com estas 7 linhas de código conseguimos representar um problema relativamente complexo.
A instrução mais complexa é a ultima, onde especificamos que os comentarios terão uma pontuação, e que a mesma somente aceitará 5 opções de valores numericos. Apontamos -1 como tamanho do inteiro, para que o mesmo tenha um tamanho padrão, e então especificamos os valores válidos para este atributo e suas respectivas lábels. Para maiores detalhes, veja em na sessão de atributos na documentação do mind.

3º Rodando o projeto

Para rodar o projeto, o que atualizará o output do mesmo, será necessário ter o projeto já salvo com o código atual, e entao clicar no ícone Run project na barra de ferramentas sobre o editor do Mind, ou pelo menu Tools>Run/Simulate.
Neste momento, as saídas serão atualizadas tanto no painel de output, na parte inferior da tela, quanto na árvore contendo a estrutura do projeto, na lateral esquerda da IDE.
Confira algumas das saídas para este projeto:
Código DDL - criação da estrutura na base de dados

Diagrama ER para o projeto gerado

Árvore, representando a estrutura do projeto trabalhado

4º Gerando o projeto

Para gerar um projeto, use o menu Tools>Generate Project ou o ícone Generate Project sobre o editor do theWebMind.
Um wizard irá abrir com alguns passos a serem seguidos:

  1. Escolha o que planejas gerar. Nesta tela, selecione a opção que melhor se adapta. Escolheremos a segunda, para criar os arquivos, MAIS a base de dados no banco de dados que cadastramos como desenvolvimento.
  2. Na segunda tela, selecionaremos um módulo para ficar como responsável pelo código a ser gerado. Neste caso, selecionaremos o módulo ZendModels.
    – Note que há requisitos para usar este módulo, como htaccess ativo e a biblioteca library na raíz de seu servidor
  3. A terceira tela lhe oferecerá opções sobre o módulo selecionado ou detalhes do passo-a-passo. Neste caso, o ZendModels não tem nenhuma especificação extra, porém será perguntado se desejamos pular(skip) ou substituir (replace) as tabelas que já existirem no banco de dados. Como a base ainda está limpa, esta opção é indiferente neste momento.

Ao clicar em avançar, theWebMind irá automáticamente iniciar a gerar os arquivos e a interagir com a base de dados para criar as tabelas necessárias.
Ao término desta tarefa, lhe será oferecido um link, here que lhe levará aos arquivos gerados. Os mesmos também estão acessíveis em View>Temp Project Files.

6º Testando a aplicação gerada

Simplesmente fazendo isto, já temos um sistema pronto e funcionando de forma simples. Somente o que precisaremos fazer será editar as views para ter uma interface melhor adaptada à real necessidade.
Na modal onde vemos os códigos gerados, logo no topo da árvore que representa a estrutura de arquivos vemos um link com o nome do projto. Clicando nele seremos levados para onde a aplicação gerada esta rodando. Outra forma de chegarmos a estes arquivos paramovermos para outro servidor é atraves do endereço: <theWebMind root>/restrict/users/<user name>/temp/<project name>/root/

Publiquei o sistema gerado, sem nenhuma alteração, aqui, onde você poderá ver e testar como ficou o resultado.

Enfrentando possíveis problemas

Caso tenha tido algum problema ao gerar o mesmo sistema, verifique se o htaccess está aivo na configuração do seu server. Confirme também que a biblioteca do Zend Framework está no diretório raíz do seu servidor HTTP. O que enfrentamos também, foi que algumas configurações no apache limitam o htaccess, então teste removendo as linhas:

php_flag magic_quotes_gpc off
php_flag register_globals off

Enfim, tentei expressar neste post como podemos com apenas algumas poucas linhas, desenvolver uma aplicação já funcional com toda a estrutura e classes seguindo o padrão ZF.
Você encontra outro exemplo de aplicação gerada a partir do Mind no blog do Jaydson.
Espero ter um feedback sobre suas experiências a respeito do theWebMind.

Abraços a todos.

Esta semana saiu uma notícia que ficou na home do baguete por dois dias tratando sobre o theWebMind. Tivemos muitas visitas oriundas deste post e gostaria de divulgar aqui esta que foi um grande passo para a divulgação do projeto.
A notícia continua no ar, no link do baguete

TheWebMind Pre-Alpha 2.0.0 launched

No comments

I gotta say I’m very proud of our work on theWebMind 2.0 and we have had a lot of people interested in helping its development.
Well, now we are ready to release the Pre-Alpha 2.0 version of theWebMind and I hope we will have much feedback and help to make it the best as it can be.

It has its interface completely remade, the core engine to interpret the WML language is also completely new.
Also, it has new features and supports different situations. The new core is quite faster and stable.

Now, theWebMind supports plugins. In other words, if you dislike any ouput, or simply want a new one, or maybe, just need to integrate a new feature to the Mind’s IDE, you can create your own plugin. To do so, we developed a very easy-to-use framework, where programming only in javascript you can create a powerful plugin to run into theWebMind.
Mind 2.0 comes already with some plugins we developed in a few hours, you can review then to learn how to do your own. More than that, you also can see all its documentation here: https://docs.thewebmind.org.

Modues… well, the modules have an important place in theWebMind’s process. It is with them that you can to generate the code to run and test your application. We released the ZendModels module to download as default. With this module theWebMind will be able to give you a whole application with some validation and all the CRUD (MVC) ready, following the advised Zend pattern.

You can also create your own module and generate the code following the pattern you want, the framework you want and even in the language you want.
How to create your own module? check it here: https://docs.thewebmind.org. Doing it you will not only help yourself doing your work, but also will help the community.
Notice that, you can create a proprietary module. TheWebMind is open source and uses the MIT license, but your module or plugins are not, they can have their own license and you can even sale then, if you want to.

Your feedback is very welcome.

Official website: https://thewebmind.org