Português

Test-Driven Development with CakePHP 1.3 TDD

Today I found a good article about TDD, Test Driven Development using CakePHP 1.3. Nowadays with the constantly changes of scope in one web project the TDD is something that all programmer must know and practice, and some frameworks like the CakePHP give the support for that.
In a recently article for the php architect magazine, Carl Anderson describe a great article how to use the TDD inside the CakePHP 1.3.
You can download that tutorial by free here

Plugin PagSeguro para CakePHP

Veja também em:
http://www.itweb.com.br/blogs/blog.asp?cod=162
Plugin PagSeguro
Sem dúvida, uma das grandes dificuldades quando o assunto é pagamento on-line é a integração com as operadoras de cartões e bancos. Uma das ferramentas disponíveis para quem utiliza esses serviços e que traz vantagens tanto para o desenvolvedor quanto para o cliente ao qual se afilia às operadoras de pagamentos são os Gatways de pagamento. Esses serviços geralmente trabalham com várias bandeiras e bancos, disponibilizando um grande diferencial para pagamento em e-commerces e sistemas que utilizam paramento on-line.
Um Gatway de pagamento muito interessante é o PagSeguro, pertencente ao grupo UOL. Esse serviço se integra a diversos bancos e bandeiras, tornando-se muito simples para o desenvolvedor. Pensando nisso, criei um plugin para o CakePHP que, além de integrar-se, também faz o tratamento dos dados para envio ao PagSeguro.

Tudo sobre Rotas no CakePHP

Este post foi lançado também na ItWeb:
http://www.itweb.com.br/noticias/index.asp?cod=71088
A funcionalidade de rotas do CakePHP sem dúvida é uma das grandes vantagens do framework, seu funcionamento engloba todas camadas as quais utilizam o sistema de roteamento. Seu funcionamento engloba passagem de parâmetros, parâmetros nomeados, prefixos, referências a plugins, controllers, actions, expressão regular, extensão de arquivos etc.
Rotas definidas

MySQL, Multiple select in the same table with the result together and order condition applied on all result

Today I needed made a multiple select, more than one SELECT command in the same table, but the result should comes together and I also needed apply one condition for ORDER in all result.
Firstly I tried read if CakePHP has supports for it, but CakePHP doesn’t has, so I pass to try a MySQL query solution for that, and that solution is the command UNION.
For example:
Table people
id
name
age
If for example we want show 30 person with age equal 20 and more 20 with the age equal 10.
With the union condition this is simple.

Xavante na WEB, Experimento em HTML5, CSS3, jQuery e CakePHP com Crawler usando phpQuery

Hoje postei no ar um experimento(projeto) o Xavante na Web, para testar algumas tecnologias são elas HTML5, CSS3, Jquery e o phpQuery, junto com a integração de algumas API’s, hoje 09.08 de agosto a do twitter já está no ar, e a do Flickr e Youtube, virão em seguida visto que as duas já foram codificadas bastando o cacheamento das mesmas.
Para o mesmo foi gasto 3 horas de desenvolvimento, mais 1 hora de acertos que com sua publicação ficou beirando as 5 horas, usando PHP 5.2, MySQL 5 e CakePHP 1.3.
O Xavante na Web, nada mais é que um agregador de notícias, assuntos, imagens vídeos relacionados ao Grêmio Esportivo Brasil, meu time de coração!

ISO country list in SQL adapted for CakePHP applications

More than one time I needed looking for a list of all countries in SQL to use in CakePHP projects, so this time that I need once more I resolved create that post to share the SQL adapted with the CakePHP rules. The SQL with the list of countries I got from that site.
Get the SQL file here or copy the code below.

Nova estrutura de diretório no CakePHP 2.0

O CakePHP, além dos novos recursos e alterações que está sofrendo, terá sua estrutura de diretórios alterada. Esta alteração vem da adoção de um padrão criado pelo grupo PHP Standards Working Group.
O padrão é usado em alguns frameworks e CMS. Para quem quiser ver as regras pode consulta o site http://groups.google.com/group/php-standards/web/psr-0-final-proposal.
No CakePHP ainda está em fase de estudos e adequações, as últimas decisões sobre o assunto pode ser conferida na página 2.0 – PHP standards group file naming na LightHouseApp. As alterações no código devem começar em breve nos branches da release 2.0.

Virando a página – Cake 2.0

Agora que o CakePHP 2.0 já está um pouco mais maduro, vou comentar um pouco sobre a nova versão, daqui pra frente pretendo publicar alguns posts mais detalhado de cada novo recurso, por enquanto vamos numa visão mais macro.
Pra começo de conversa, pra quem não sabe o CakePHP 2.0 é a versão que está em desenvolvimento pelo time do cake. As versões 1.2 e 1.3 são versões estáveis e que daqui para frente só terão correções de bugs, nada de recurso novo. Não há em vista uma versão 1.4 (que seriam novos recursos com compatibilidade pro PHP4).
A versão 2.0 tem como requisito PHP 5.2 em diante. Por este fato, trará muitos recursos novos e facilidades no desenvolvimento das aplicações. Além disso, a versão poderá otimizar muitos itens, tornando a sua aplicação mais rápida ainda.
Alguns itens previstos pro Cake 2.0:

AjusteFloat e outras novidades no CakePtbr

Pessoal,
Venho aqui anunciar que o projeto CakePtbr sofreu algumas alterações. A primeira foi a inclusão do behavior AjusteFloat criado pelo Zé Ricardo (Obrigado, Zé!), com alguns complementos meus (docs, formatação e testes). Este behavior está disponível para o CakePHP 1.2 e 1.3.
Em segundo lugar, como a release 1.3 do CakePHP está estável, movi o conteúdo do master (que referia-se ao CakePHP 1.2) para o branch 1.2 e transformei o branch 1.3 em master. Daqui pra frente as melhorias serão feitas aqui e o branch 1.2 conterá apenas correções de bug.
Abraços e bom uso.

Croogo falando um pouco de português

Comecei a utilizar o croogo, e vendo que ele tem potencial e tendo vontade de investir algumas horas no desenvolvimento de plugins para ele, resolvi passar ele para o idioma nativo, então surgiu no github o projeto do Croogo falando Português do Brasil, já tendo uma versão inicial da tradução para Português do Brasil, fico disposto a tentar manter esta tradução do mesmo.
Bom para utilização basta o download do zip e fazer o upload dentro do próprio croogo no módulo de Locale, é necessário permissão de escrita no folder do locale que se encontra dentro de app.
Irei fazer mais revisões pois esta é apenas uma inicial, e aguardo feedback e pessoas dispostas a manter a mesma e ou reportar erros de tradução.

CakePHP force download

A common stuff that we need do using PHP is force the download of files, a common routine for it is when we can not give access for the users for the folder where are the files, so we must force the download.
To do it with CakePHP is very simple, for it we have the Media view, let’s go to the code.
some_controller.php

CakePHP 1.3 without database

To use the CakePHP 1.3 without database is pretty simple, we must create a new datasource, I’ll call it “Without”, so let’s go do it.
Firstly we must set the DATABASE_CONFIG, go to the config folder and edit the database.php:

CakeFest 2010

Opa!
Como muitos já devem saber, todo ano acontece um encontro entre desenvolvedores, usuários, apreciadores, gente nova e de tudo que é tipo e lugar num evento chamada CakeFest.
Este ano a CakeFest acontecerá nos EUA (já aconteceu na Argentina, Alemanha, Japão, … Cada ano em um país) e neste momento está convidando as pessoas/empresas para participarem como palestrantes ou patrocinadores. As palestras devem ser em inglês e relacionadas ao CakePHP (meio óbvio ).
Quem tiver interesse, pode entrar no site oficial da festa e entrar em contato para maiores detalhes: http://cakefest.org/

Behavior Super Find veio ao mundo

Depois de ter criado o post sobre o Behavior para melhorar o find, cá está ele! Ontem a noite criei o projeto e enviei o código que tenho para o GitHub, no projeto entitulado de super_find.
Tinha dito que o nome seria power find, mas depois de ver alguns projetos na internet como o SuperAuth, SuperValidatable, etc., resolvi manter o nome de SuperFind.

Lib para lidar com arquivos Zip no CakePHP

Em um projeto recente, precisei extrair arquivos zip no server, e no
processo criei uma classe para abstrair a manipulação dos arquivos.
Como no Dreamhost o PHP não vem com a zlib habilitada, não tem como
usar a ZipArchive, o que facilitaria muito as coisas. Mas o bom é que
o zlib é instalado no server, e os comandos do PHP de execução de
programas são habilitados, então criei a classe utilizando o `exec’
para chamar o `unzip’ e extrair os arquivos.

Nova release do CakePHP

Hoje foi liberada a release 1.2.7 do CakePHP, corrigindo 36 bugs, sendo um uma questão de segurança.
Uma pequena correção de segurança também foi feita nesta versão. Este problema de segurança afeta apenas os sistemas que utilizam o modo debug em produção. Caso deseja apenas corrigir o problema de segurança, sem atualizar o core inteiro, você pode aplicar o patch disponibilzado por eles em http://bin.cakephp.org/view/1459556460.
A nova versão (1.2.7) está disponível no GitHub. A lista completa das alterações pode ser vista no Changelog.
Lembro também que está previsto para domingo o lançamento da versão 1.3.0-RC5! Vamos aguardar pra ver.

Behavior para melhorar o find

Hola!
Estava aqui implementando alguns projetos e vi o quão chato é ter que implementar os models no cake sempre pensando nas queries que ele irá gerar.
As vezes vou fazer um find em models que tenham hasMany e quero fazer um filtro pelo model do hasMany e não consigo. Se eu coloco no conditions ele diz que a tabela do hasMany não existe. Se eu uso Containable ele mostra todos os registros do model que fiz o find com alguns tendo associações vazias. Ou seja, ele não faz JOIN com as tabelas hasMany nesses casos, sempre gerar queries diferentes e não sabe tratar direito.

Plugin CakePtbr

Como alguns já devem conhecer, dou continuidade ao trabalho iniciado pelo Gabriel Gilini no GitHub. Ele iniciou colocando as inflections geradas pelo Sadjow, depois algumas atualizações que fiz, e assim foi… Depois de um tempo fiz um fork do projeto dele no GitHub e fui incluindo novas features, como validações (cpf, cnpj, etc.), behaviors, helpers, etc. Além disso, inclui testes automatizados para todos os itens existentes no plugin. No link do projeto você pode ver todos recursos que foram feitos: http://github.com/jrbasso/cake_ptbr
Agora, com as releases candidates do CakePHP 1.3, criei um branch (chamado 1.3) para fazer os devidos ajustes. Ou seja, se você já está usando o CakePHP 1.3, use a versão do branch 1.3 do cake_ptbr.
Neste branch da versão 1.3 entraram e sairam algumas coisas, dentre elas:

MVC para iniciantes – Parte 1

Um artigo explicando o que é o modelo MVC (Model-View-Controller) e por que essa nova forma de organização de software está tomando o mercado.

Validação de campos de texto com caracteres acentuados

Recentemente tive um problema com a validação de um campo textual que me deu um pouco de dor de cabeça. Como acredito que esse pode ser um problema comum, vou compartilhar a solução aqui no blog.

Syndicate content