segunda-feira, 6 de dezembro de 2010

Exibindo strings associadas a números no MySQL

Em uma aplicação Lazarus acessando MySQL criei um campo estado civil para armazenar tal informação em forma de número. Ou seja, para cada estado haveria um número correspondente:

0 - solteiro
1 - casado
2 - união estável
3 - separado
4 - divorciado
5 - viúvo

Por preguiça de criar uma tabela para armazenar estas descrições (e também por conta da simplicidade da aplicação), resolvi exibir tais descrições em tempo de execução da consulta. Após uma googlada descobri um comando que resolveria meu caso: MAKE_SET. Este comando cria um conjunto de strings e exibe a que está associada à determinada posição neste conjunto. Porém, o comando MAKE_SET usa um operador binário. Como o meu campo armazenava valores decimais precisei usar a função POW para converter os números para os correpondentes binários. Por exemplo, usando a associação representada na tabela acima minha consulta ficou assim:

SELECT cliente.*, MAKE_SET(POW(2, estado_civil), "solteiro", "casado", "união estável", "separado", "divorciado", "viúvo") AS EstadoCivil FROM cliente

A função POW, no caso acima, eleva 2 a potência armazenada no campo estado_civil. E converte o número ao equivalente necessário para pegar corretamente a descrição no conjunto criado pelo MAKE_SET. Infelizmente somente encontrei referência para este comando no MySQL.

[]'s,

Ericson Benjamim.

terça-feira, 30 de novembro de 2010

Letreiro Digital em Lazarus

Em alguns de meus programas comerciais há um letreiro digital, similar àqueles eletrônicos feitos com LEDs vermelhos. Mas meu mecanismo para mover o texto pelo form era muito grosseiro. Um dos meus clientes questionou sobre o letreiro e resolvi pesquisar para ver se encontrava algo pronto. Rapidamente encontrei uma dica em Delphi que quase me atendia. Na realidade precisei adaptar o código para que a mensagem rolasse para o lado contrário. Rapidamente alterei o código para que me atendesse e está aí o resultado:



[]'s,

Ericson Benjamim.

Código-fonte: letreiro_digital.7z

sábado, 24 de julho de 2010

Teste Free Spider / Lazarus / Ajax

O primeiro teste que fiz com Ajax e Free Pascal não foi lá muito prático. Desde então senti-me na obrigação de refazer tal teste, mas com um exemplo mais didático e prático. Como minha incursão neste novo mundo do Ajax e da Web 2.0 ainda é muito inicial, senti necessidade de apoio didático e acabei comprando um livro para aprender mais sobre o assunto. O livro é "Web Interativa com Ajax e PHP", ISBN 978-85-7522-126-6, de Juliano Niederauer, editora Novatec - excelente, por sinal. Logo ao ler o primeiro exemplo (páginas 105 e 106) resolvi adaptá-lo para o Lazarus. No teste usei o Free Spider, escolhido pela sua simplicidade em criar aplicações Web e o qual estou usando em um projeto de porte significativo.

As adaptações foram pouquíssimas e o programa em Lazarus/Free Spider que substitui o programa em PHP é muito simples. A primeira coisa que fiz foi digitar o código HTML que contem as funções em JavaScript e fazer uma pequena adaptação destacada em vermelho no código abaixo:



Como pode ver, o código é bem simples (talvez as funções em JavaScript pareçam um pouco complicado aos olhos dos iniciantes). A parte em Lazarus / Free Spider é mais simples ainda. Vejam:


O código em Lazarus / Free Spider recebe os campos através do método POST e envia uma resposta em texto bem simples à função JavaScript da página, a qual atualiza o campo "resultado" do form. Seria possível fazer coisas bem sofisticadas como carregar uma lista de cidades ao se escolher uma determinada UF e sem recarregar a página ou poluir o HTML com JavaScript desnecessário. Fico aqui com a dívida de fornecer um exemplo similar com banco de dados.

E um exemplo da saída é:



Para quem não conhece o poder do Ajax, ele permite que a página requisite dados sem que seja exigido um carregamento completo de todo o código.

O código (HMTL + Lazarus) pode ser baixado a partir de: teste_ajax.7z

Os testes foram feitos no XP SP2 com servidor Web Server2Go.

[]'s,

Ericson Benjamim.

domingo, 20 de junho de 2010

Vídeo-aulas Aplicação Lazarus com SQLite / Zeos

Já faz algum tempo que criei estas vídeos-aulas, mas somente agora encontrei um lugar bom para hospedá-las. As aulas são um tutorial que mostram como criar uma aplicação de banco de dados usando o Lazarus e o componente Zeos 7. O banco de dados usado foi o SQLite.

Usando o SQLiteStudio para criar o banco de dados:
http://fanzinepas.ueuo.com/aulas/eb-01-db_sqlite.htm

Tutorial Banco de dados com Lazarus/Zeos/SQLite - parte 1:
http://fanzinepas.ueuo.com/aulas/eb-02-app_laz_zeos_sqlite3.htm

Tutorial Banco de dados com Lazarus/Zeos/SQLite - parte 2:
http://fanzinepas.ueuo.com/aulas/eb-03-app_laz_zeos_sqlite3.htm

Quem quiser baixar as aulas para assistir em modo offline pode fazê-lo a partir de:
videos-aulas_lazarus-zeos-sqlite.7z

As vídeo-aulas foram criadas com o software Wink.

Também estou montando um curso nos moldes de ensino a distância (EAD) em:
http://www.educacaonanet.com.br/...

[]'s,

Ericson Benjamim.

sexta-feira, 11 de junho de 2010

Teste com protocolo SNMP / Synapse + Free Spider Web Development

Como havia comentado no post anterior, uma das linguagens sugeridas para desenvolver o sistema para coletar dados via SNMP foi PHP. A primeira aplicação de teste foi orientada para desktop, mas seria muito interessante que o sistema funcionasse pela Web. A primeira solução na vista foi o componente Free Spider, o qual gera aplicações CGI. Mais um teste rápido com este componente e o Synapse e outro sucesso.

Link do Free Spider: http://motaz.freevar.com/freespider.htm

Código fonte: lazsnmpweb.7z

Screenshots:





Em ambos os testes precisei incluir a string abaixo na opção Projeto - Opções do Compilador - Outros arquivos de unidade:

$(LazarusDir)\components\synapse39\source\lib\

Claro que fui eu que convenientemente gravei o synapse nesta pasta.

quarta-feira, 9 de junho de 2010

Teste com protocolo SNMP / Synapse

Recentemente iniciei a negociação com um colega de um projeto de um sistema que coletará dados de equipamentos em rede usando o protocolo SNMP. Meu colega propôs que o sistema fosse desenvolvido em PHP. Gostei da idéia, pois sou fã desta linguagem, mas uma dúvida surgiu: e a proteção de nosso código? Após um breve debate, ficamos de avaliar como proteger o código, já que o sistema seria instalado no servidor do cliente. Mas aí surgiu-me a idéia: desenvolver em CGI / Lazarus - portável, rápido e com o código muito bem protegido, já que o o programa é compilado. Mas daí apareceu a dúvida: que componente usar? Já tinha usado o LNET com excelentes resultados em comunicações via TCP/IP, mas não vi nenhum componente deste pacote para trabalhar com SNMP. E o Indy? Pelo que soube foi descontinuado. Bem, li algo sobre o Synapse algum tempo atrás. Fui verificar e para minha felicidade achei no meio dos arquivos do Synapse uma unidade para trabalhar com SNMP. Corri atrás dos demos, mas somente encontrei em Delphi (O Synapse pode ser usado no Delphi/Lazarus/Free Pascal). Mas ao abrir o demo verifiquei que o mesmo é bem simples e poderia ser facilmente reescrito no Lazarus. Após alguns minutos já tinha o exemplo pronto. Foi mais complicado achar um OID para fazer um teste, mas meu colega, mais experiente em redes do que eu, forneceu-me um e pude comprovar a funcionalidade do Synapse.

Teste de SNMP com Synapse: lazsnmp.7z
Gerado e compilado no Lazarus 0.9.29 FPC 2.3.1 Win32

Link do Synapse: http://synapse.ararat.cz


Screenshot do teste

sábado, 22 de maio de 2010

Jogo LazSenha

Também conhecido como Mastermind, este pequeno jogo de tabuleiro fez parte de minha infância, o qual costumava jogar com meu irmão (dono do jogo). Resolvi criar uma versão para computador que permitisse que o criador das sequências fosse a máquina.

http://code.google.com/p/lazsenha/

Ficou bem interessante, pois implementei o arrastar-e-soltar para jogar os pinos de diversas cores nos locais devidos. Compila no Lazarus para Windows e Linux.


Jogo LazAnimais

Este mês re-codifiquei um jogo que tinha feito a muito tempo em BASIC: LazAnimais. A primeira versão que codifiquei foi no meu velho TK 3000//e, em BASIC Applesoft, perdida a muito. A segunda versão foi para Rapidq BASIC - para Windows. Esta nova versão foi feita em Lazarus com componente Zeos acessando um pequeno banco de dados em SQLite. Mas o jogo foi inspirado em uma versão publicada na Micro Sistemas em BASIC Sinclair ZX-81.

http://code.google.com/p/lazanimais/

O jogo simula o comportamento de um programa que aprende a cada jogada, o nome dos animais e as características deste. Esta versão ficou um pouco diferente das anteriores mas acaba fazendo a mesma coisa: aprender mais e mais sobre os animais. A nova versão pode ser compilada tanto no Windows como no Linux.