Filed under codes

Criando uma pseudo-coluna no CakePHP

Estou desenvolvendo um sistema grande usando o framework CakePHP e surgiu uma necessidade. Precisava criar uma pseudo-coluna com o resultado do cálculo de outras duas. Seguindo o conceito de MVC, achei mais interessante fazer este cálculo no Model para poder usar em todos os programas que utiizam aquela tabela. 

Para ilustrar isto montei um exemplo. Criei a seguinte tabela:

CREATE TABLE IF NOT EXISTS `clientes` (
  `id` int(11) NOT NULL auto_increment,
  `nome` varchar(100) NOT NULL,
  `sobrenome` varchar(100) NOT NULL,
  PRIMARY KEY  (`id`)
) ENGINE=InnoDB  DEFAULT CHARSET=latin1 AUTO_INCREMENT=2 ;

O Model da tabela ficou da seguinte forma:

class Cliente extends AppModel {

  var $name = 'Cliente';
  var $validate = array(
 	'id' => VALID_NOT_EMPTY,
 	'nome' => VALID_NOT_EMPTY,
 	'sobrenome' => VALID_NOT_EMPTY,
  );

  /*
  funcao que é executada toda vez que é realizado uma consulta na tabela
  esta funcao adiciona o nome completo do cliente ao resultado como uma pseudo-coluna.
  idéia tirada de http://www.paulherron.net/articles/view/cakephp_afterfind_psuedofield
  */
  function afterFind($results) {
     if(isset($results['0']['Cliente'])) {
       foreach ($results as $key => $val) {
         $results[$key]['Cliente']['nome_completo'] = $results[$key]['Cliente']['nome']  . $results[$key]['Cliente']['sobrenome'] ;
       }
    }
   return $results;
  }
}

E na visão eu simplesmente imprimo a pseudo-coluna: 

echo $cliente['Cliente']['nome_completo'];

Simples assim. 

Etiquetado ,

python-mcrypt

Recentemente precisei criptografar alguns dados gerados por uma aplicação em Python. Para isso resolvi testar o python-mcrypt, módulo desenvolvido pelo brasileiro Gustavo Niemeyer.

Demorei um pouco para conseguir entender o funcionamento, mas é bem simples. Fiz um exemplo de uso para alguém não precisar perder o mesmo tempo que eu investi :-)

exemplo_mcrypt

Etiquetado

Aptana

Faz um bom tempo que tenho usado o Eclipse como IDE para trabalhar com PHP, principalmente por causa do suporte a CVS que preciso para alguns projetos.

Ele é muito bom, mas uma coisa estava me irritando. A dificuldade de configurar cores de fundo e cores da sintaxe. Parece besteira, mas o fundo branco padrão do Eclipse agride os olhos depois de algumas horas de uso.  No Komodo Edit é muito fácil trocar essas configurações mas no Eclipse é muito complicado e limitado.

Então resolvi fazer um teste com o Aptana . E me surpreendi. Ele tem tudo o que o Eclipse tem (é baseado nele) como CVS e outros plugins, suporte a várias bibliotecas de Ajax como ExtJs, jQuery, etc. E tem suporte a alterar as cores de uma maneira bem fácil e completa. 

Segui estes passos e estou bem feliz com minha nova configuração.

Etiquetado , ,

Professor Nerd

Nas disciplinas que ministro sempre aplico vários trabalhos para reforçar o conhecimento dos alunos. Todos os trabalhos são divididos em duas partes: 7 pontos a entrega do texto/código e os outros 3 pontos vem da apresentação oral. Quando o trabalho é em grupos eu sempre sorteio um dos componentes para apresentar e a nota da apresentação vale para o grupo todo. Tem dado certo. O único problema era fazer o sorteio dos alunos de forma justa. Para isso fiz um script em PHP que resolve isso pra mim.

Professor Nerd é isso :-)

Editores de programação para Mac

Nesses meses como novo usário de MacOSX testei alguns editores para trabalhar com programação, principalmente com PHP, Python, HTML e CSS. Encontrei alguns interessantes. Deixo aqui minhas opiniões sobre o assunto.

Eclipse

O primeiro que testei foi o Eclipse, pois é o que utilizo no meu trabalho diário na universidade. Lá eu utilizo em ambiente Linux e no OSX tudo funcionou da mesma maneira. Só algumas telas e teclas de atalho mudam. O Eclipse é uma ferramenta muito poderosa. Instalando os plugins corretos, PDT para PHP e PyDev para Python, é possível ter todas as características que esperamos deste tipo de ambiente. O que eu mais gosto é o suporte nativo a CVS (extremamente útil para projetos maiores pois não consigo mais programar sem este recurso), o auto complete dos comandos PHP e HTML que funciona certinho, aquilo que o Eclipse chama de Outline onde ele mostra os métodos e funções do arquivo aberto, e a árvore de arquivos/diretórios que facilita o acesso rápido aos códigos. O que eu não gosto no Eclipse é a quantia de memória que ele utiliza.

Smultron

Já comentei sobre o Smultron aqui no site. É um editor bom, open source e leve. O que eu sinto falta é o equivalente ao Outline e a árvore de diretórios do Eclipse. Além disso, a interface do programa não é tão bonita quanto o resto do sistema operacional

TextWrangler

O TextWrangler é um editor feito pela mesma empresa que desenvolve outro editor famoso (e pago) para o Mac, o BBEdit. É uma versão com menos recursos do que a versão comercial, mas mesmo assim é muito bom. Leve, suporta várias linguagens de programação, interface polida, acesso a ler/gravar arquivos direto em servidores FTP/SFTP, possui algo equivalente ao Outline do Eclipse, além de ser altamente configurável. Uma boa opção. Só senti falta da árvore de diretórios para rápido acesso aos arquivos.

Komodo Edit

É a versão para Mac do editor do qual já comentei aqui no site. É muito bom. Rápido, possui a árvore de diretórios (que se atualiza automaticamente caso um arquivo seja criado ou excluído. Cool), é extensível usando-se plugins quase da mesma maneira que o Firefox, apesar de ainda existirem poucos disponíveis. E o auto complete é tão bom quanto o do Eclipse, se não for até melhor. Só faltou o Outline e suporte a CVS pra ser um bom substituto ao Eclipse. Mas isso só na versão paga, que por enquanto está fora do meu foco de avaliação

Vi/VIM

Lógico que não dava para esquecer do velho amigo. Outra vantagem do OSX ser derivado do Unix é poder usar o Vi. É um bom editor de programação como é possível ver nesse excelente artigo

Conclusões

Depois de testar estes softwares cheguei as seguintes conclusões:

  • Para projetos grandes, onde o CVS/Subversion é importante, o Eclipse ainda é a melhor opção.
  • Para projetos menores eu estou usando o Komodo Edit e estou satisfeito. Tenho usado ele bastante em projetos com o CakePHP e outros frameworks como o Django (ele tem suporte ao Django além do próprio Python)
  • Para editar arquivos PHP/Python de maneira rápida, sem precisar ver todo o projeto eu estou usando o TextWrangler
  • E para arquivos de configuração, como o httpd.conf e outros, o bom e velho Vim é a solução
  • É possível programar confortavelmente sem precisar comprar um TextMate ou o BBEdit (apesar do TextMate ser muito bonito)

Se alguém usa outro editor ou discorda de alguma das conclusões me avise

Material sobre Zend Framework 1.0.1

Gostaria de indicar um material muito legal sobre o Zend 1.0.1 escrito pelo Flavio Gomes da Silva Lisboa

Como construir uma aplicação MVC em PHP 5 com Zend Framework

Ambiente integrado para Zend Framework

Ambos bem completos e bem escritos. Vale a pena a leitura.

slimPHP 1.1

Aproveitando o lançamento da nova versão do Ubuntu, aproveito para fazer o lançamento da versão 1.1 do framework slimPHP. Este é um framework que desenvolvi a algum tempo atráz e foi adotado como principal ferramenta de desenvolvimento de novos aplicativos na universidade onde trabalho, a Unochapecó.
Esta nova versão contou com a colaboração dos desenvolvedores da Unochapecó Odair Lopes, Francis Perini, Clemente Scaratti e o professor Jorge Antônio Di Domenico.

As novas features do framework são:

Classe tabela

  • Adicionado método getAllData() que retorna todos os dados da consulta na forma de um array

Exemplo:
$tab = new tabela(“pessoa”);
$tab->get(array(“*”));
$dados = $tab->getAllData();
unset($tab);
app::showView(“view/index_view.php”,$dados);

  • Adicionado método setData() que automaticamente seta os valores para a tabela apartir dos dados vindos do $_POST ou $_GET

Exemplo:
$tab = new tabela(“pessoa”);
$tab->setData($_POST);
$tab->insert();
$tab->save();
unset($tab);

  • Adicionado campo opcional $order no método get() na forma de uma string para poder escolher os campos de ordenação do SQL

Demais inclusões

  • Adicionado o crudGenerator na pasta extra. Manual
  • Foram adicionados os arquivos header.php e footer.php no diretório de visões representando o cabeçalho e o rodapé das visões.
  • Adicionada a classe report.

Exemplo
Controlador
get(array(“*”));
$dados = $tab->getAllData();
unset($tab);
app::showView(“view/index_view.php”,$dados);
}
}
$app = new XXX(“mysql://root:@localhost/slimphp”);
?>
Visão
Table($header,$dados,’Pessoas’); //gera uma tabela
$r->Text(‘Total de Pessoas ‘.count($info)); //gera uma linha de texto
?>

O download desta nova versão pode ser feito neste link

Arquivos palestra I Boot

Ontem ministrei a palestra sobre CakePHP na Unoesc em Xanxerê.
O arquivo da apresentação pode ser copiado aqui e o aplicativo criado neste link.

Exemplo de RMI

Estou novamente ministrando a disciplina de Sistemas Operacionais Distrubuídos. É uma disciplina bem complexa mas muito divertida. Já me rendeu algumas horas de programação e diversão.

Um dos tópicos é a comunicação entre processos em sistemas distribuídos. Aí entra sockets, RPC, RMI, Corba e WebServices. Ano passado tinha desenvolvido um exemplo de um programa distribuído em sockets que depois foi desenvolvido usando Pyro por outro professor. Agora consegui um tempo e desenvolvi o mesmo algoritmo usando Java RMI.

Aqui está o código se interessar para alguém. Vale lembrar que não programo regularmente em Java por isso a solução pode estar bem “tosca”. Se algum Java Jedi quiser melhorar eu ficaria muito feliz.

slimPHP

Finalmente criei o projeto do slimPHP no Sourceforge.

slimPHP é o nome, pouco criativo, que dei para o pequeno framework que desenvolvi e que estamos utilizando aqui na Unochapecó no desenvolvimento de novos aplicativos.

Eu já havia descrito ele anteriormente aqui no site, mas agora no sourceforge fica mais fácil de alguém visualizar os códigos e fazer o download.

O site ficou horrível, sem nenhum design. Se alguém tiver interesse de ajudar nisso e em qualquer coisa relacionada eu agradeço

Site: http://slimphp.sourceforge.net

Seguir

Obtenha todo post novo entregue na sua caixa de entrada.

Join 1.472 other followers