felipeNascimento.org(true);

Making the web a better place to live

Browsing Posts in Generic

Adicione uma animação ao exibir seus twittes no seu site ou blog.
Com o Tweety (nome temporário, provavelmente), você pode especificar sua conta no twitter e receber um pequeno script para colocar esta animação na sua página web ou blog. Simplesmente precisará copiar e colar este código que lhe foi entregue, onde quiseres. Ele randomizará entre seus 4 últimos posts no twitter, alternando a cada minuto.
Na minha página inicial há um exemplo dele funcionando, mas abaixo, segue mais um:

Caso você seja um desenhista e possa preparar novos exemplares, ou tenha encontrado algum bug ou até mesmo queira simplesmente dar alguma ideia bacana, entre em contato ;)

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, http://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.

PHPClasses nomnee

No comments

Olá pessoal.
Minha classe OFXParser está concorrendo para ser uma das vencedoras entre as 12 melhores classes em PHPclasses.org.
Aqueles que tiverem interesse, por favor, votem.
OFX é um formato baseado em XML para intercâmbio de informações financeiras entre diferentes softwares que manipulem este tipo de informação, como Quicken, Microsoft Money, Google Finance, etc…
Esta classe oferece uma solução em PHP para extrair tais informações de arquivos OFX, ainda oferecendo diversos métodos para interação com estas informações.

Para votar, acesse: a página de votos do PHP classes

Sabemos como remover um item de uma Array em JavaScript usando o método splice, mas algumas vezes queremos remover este item pelo seu valor, e não pela sua posição.
A aparente solução seria varrer esta Array procurando pelo elemento que “bata” com o valor pelo qual precisamos remover.
Preparei esta pequena função em JavaScript para remover um item qualquer de uma Array dada pelo seu valor, usando a maneira mais otimizada que pude, como segue:

function removeItem(ar, item)
{
    return ar.join(';').
             replace(new RegExp("(^|;)"+item+"(;|$)"), ';').
             replace(/(^;)|(;$)/g, '').
             split(';');
}

Esta função de uma única linha JavaScript retorna uma array ja com o elemento especifico removido pelo seu valor.

Espero que acabe ajudando alguem.

Absurd error using Internet Explorer

No comments

En:
Today, I fought with the following error in Internet Explorer: System Erro: -1072896658
I got curious, once it used to work prefectly in all the browsers, Internet epxlorer was blowing the error to me(ok, it is not a surprise at all)!
After a lot of tests and have searched all the web, I found out that our friend IE culdn’t build the Ajax object when it had come back if the charset of the current page was UTF-8. The solution? The absurdest one. I just had to change its charset to utf-8… yes, in lower-case.
Just the case changed the page itself.
I hope this post will help someone.


Pt:
Hoje me deparei com o seguinte erro no Internet Explorer: Erro de sistema: -1072896658 Fiquei curioso, uma vez que funcionava perfeitamente para todos os navegadores, exceto IE(o que não é nenhuma surpresa)! Apos muitos testes, e boas pesquisas na web, descobri que o IE nao conseguia construir o objeto ajax no seu retorno, caso o charset da página estivesse setado para UTF-8. A solução? Mais absurda que o problema, bastou setar o charset para utf-8. Sim, minúsculo, apenas. Espero que acabe ajudando alguem com isto, ja que me deu uma certa dor de cabeça.