KISS - Keep it simple, stupid!

Gerando HTML 4.01 com o HTML Helper do CakePHP

postado por Fabrício Ferracioli em 15/12/2009 14:21:18
Não há tags para este post

Apesar das melhorias introduzidas no HTMLHelper do 1.2, sempre achei ridículo ele gerar marcação apenas em XHTML. Sempre preferi HTML, e me via engessado pelo nesse aspecto.

Acredito que muitos passam por essa dificuldade quando estão trabalhando com o HTMLHelper e FormHelper do . Uma das principais consequências disso, é que o código gerado na maioria das vezes não é válido, pois mistura tags HTML e XHTML.

Mas sempre imaginei que deveria haver um meio de contornar isso. Certa vez verifiquei que existia um método chamado docType no HTMLHelper, e que era possível definir HTML 4.01 com ele. Mas minha alegria logo acabou quando percebi que ele não alterava o comportamento do Helper para gerar tags HTML.

Finalmente, hoje acabei me deparando com uma alternativa. Cansado de mensagens de código inválido fiz uma leitura mais cuidadosa do manual do e encontrei a página que diz como gerar tags HTML 4.01. A solução não é muito elegante, mas é uma alternativa presente no próprio framework.
Espero que a solução sirva para vocês também!

Update 1:Para quem estiver com preguiça de fazer o arquivo do zero, fiz um repositório no Github com o arquivo e algumas tags. Conforme for sentindo necessidade vou aumentar o conteúdo dele. Quem quiser colaborar, está convidado!

Update 2: Apliquei as sugestões do Juan Basso, agora um Helper está disponível para manter as tags HTML 4.01. Vejam a discussão abaixo. O link do Github contínua o mesmo. Mantive o arquivo anterior para quem preferir o método da documentação do Cake.

No tags for this post.
Topo

3 Comentários

Programador, nem sempre é você que está errado!

postado por Fabrício Ferracioli em 19/11/2009 14:51:11
Não há tags para este post

Pois é amigos, quando estamos falando de programação nem sempre você é o cara errado da história.

Digo isso pois acabo de passar por uma situação em que estava certo, mas por não acreditar muito nisso acabei perdendo algum tempo procurando erros inexistentes.

Estava testando uma aplicação e apenas um caso de teste falhava.
Ao verificar o código aparentemente não havia nada errado, e poucos dias atrás o mesmo trecho não apresentava problemas. O que estaria acontecendo?

Teste com 1 falha

Fiquei um bom tempo tentando encontrar algum erro bobo de lógica em um código que eu havia acabado de inserir, mas não encontrava nada. Além disso, o trecho de código que falhava nos testes não tinha relação nenhuma com as alterações que havia feito.

Então pensei que poderia ser uma alteração do CakePHP 1.2.5 que não havia passado para o meu código. Também procurei por isso em vão. Então percebi que o problema estava com uma função que utiliza transações, o que já foi uma fonte de problemas nesse projeto, ou seja, um problema recorrente.

    if($init_transaction){
        $db =& ConnectionManager::getDataSource($this->useDbConfig);
        $db->begin($this);
    }
    foreach( $balloonContents['BalloonContent'] as $index => $content ) {
        $content['balloon_id'] = $balloon_id;
        $this->create($content);
        $save = $this->save();
        $status = $status && $save;
    }
 
    if(!$init_transaction){
        return $status;
    }
    elseif ($status && $db->commit($this)) {
        return true;
    }
    else {
        $db->rollback($this);
        return false;
    }

É um código simples, e não existe nenhum problema com ele. Como eu acabei de instalar o openSuse 11.2, que agora está com o MySQL 5.1 nativo, me lembrei que ele poderia não estar configurado corretamente para usar a storage engine InnoDB. E era exatamente isso! Como o MyISAM fica habilitado por padrão, e essa storage engine não tem suporte total a transações, se você deseja utilizar esse recurso deve dizer ao banco de dados.
Ou seja, meu ambiente estava configurado de modo inconsistente com as necessidades da aplicação. Alterei o arquivo de configuração do MySQL, o my.cnf, adicionando a seguinte opção:

default-storage-engine=InnoDB

Depois disso o teste passou e tudo voltou ao normal.

Testes passando após trocar a storage engine

Portanto rapaziada, em alguns casos não adianta procurar pelos seus erros. Procure se lembrar que qualquer tarefa necessita de subsídios, e no caso de nós programadores, um ambiente bem configurado faz toda diferença.

Alguém já passou por situação semelhante?

No tags for this post.
Topo

Sem comentários

Lo dia mas importante del ano!

postado por Fabrício Ferracioli em 30/10/2009 08:18:49
Não há tags para este post

Hola pueblo! Ustedes estan bien?
Hoje es un dia muy gratificante para mi persona e mi pueblo, lo dia internacional de hablarse portuñol! Es una data muy querida, muchas fiestas en diversas naciones ocorren neste gracioso dia.

Para los mas desavisados, portuñol es un idioma famoso, tiene artigo en Wikipedia! E non és solamiente esto, és un idioma estudiado por una grande universidad.

És una pena que en Brasil las comeraciones se limitem a lo mundo virtual. En grande part de los países latino americanos las comeraciones son regadas a mucha fiesta. Mariachis, tequila, castanholas e tudo mas que relembra nuestra richa cultura! Las muheres e chicas enton, ficam muy belas.

Estoy mui empolgado e esqueci-me que este blog es sobre progamacion. Nuestra cultura tiene grandes programadueres, grandes tecnicas de la programacion. Uno grande exiemplo desto és lo comando goto, recientemente adicionado en la linguagen .
Solamente una cosa me deja triste en , el Paamayim Nekudotayim. No seria bein mehor lamado de dos puentos? Mas jo acredito que esta discussion lo ira lebar a nada!

Enton, dejo una contribuicion de uno grand programador que habla nuestra lingua! Es un programa que convierte lo idioma del Brasil para las bielas palabras de lo idioma Portuñol! E non dejem de acessar las paginas oficialies de las comemoraciones!
13 de lo otubro, lo dia Internacional de Hablarse Portunhol

No tags for this post.
Topo

Sem comentários

Aumentando a semântica com RDFa

postado por Fabrício Ferracioli em 04/09/2009 15:18:54
Não há tags para este post

Acredito que Web vem tomando um caminho interessante com decisões tomadas nos últimos meses, como a adoção do HTML 5 e o engavetamento do XHTML 2. Isso com apenas um padrão, a confusão será bem menor e a adoção poderá ser realizada de modo mais harmonioso. Mas, como a maioria das pessoas que trabalham com Web sabem, não basta que o padrão exista, ele deve ser suportado pelo mercado, senão acaba ficando somente “no papel”.
Até algum tempo atrás, acreditava que isso aconteceria com o RDFa, uma recomendação do W3C que é conjunto de extensões do (X)HTML que permite aumentar a semântica de documentos (X)HTML. Atualmente, o padrão é suportado pelo Yahoo!, o pioneiro, e pelo Google.

E agora você me pergunta:

Em que isso vai me ajudar?

O RDFa basicamente adiciona semântica a seus documentos, fazendo com que eles sejam compreendidos mais facilmente por dispositivos, o que aumenta a capacidade de busca.
Agora é só pensar um pouco, se o Yahoo e Google puderem compreender melhor seus documentos, eles serão mais facilmente encontrados e você ganha uma vantagem sobre quem não dá a mínima para semântica.
Pra você que ainda não ficou convencido, aqui vou usar dois exemplos, que talvez você já tenha visto, mas não sabia o porque das informações adicionais. Primeiro a do Yahoo.
Resultado de busca do Yahoo com RDFa
Agora a do Google.
Resultado de busca do Google com RDFa

Em ambos os casos, as informações adicionais que estão associadas aos resultados fazem grande diferença nos resultados, pois adicionam muito mais ao que o usuário deseja saber, do que simplesmete o resultado da busca tradicional. Essa pequena diferença já é suficiente para deixar seu resultado a frente dos demais e possivelmente preferido pelo usuário.

Gostou, não é?
E agora você me pergunta:

Mas como eu faço isso?!

Não faltam recursos na Web sobre RDFa, e como o objetivo desse post é alertar sobre as possibilidades dele, deixo alguns links para vocês aprenderem um pouco.

  1. Ótimo para quem não sabe nada, leitura obrigatória.
  2. Também é ótimo para quem está começando, dividido em duas partes.
  3. Continuação do artigo anterior.
  4. Esse é um pouco mais avançado, leia depois de ler os anteriores

Lembrando que o W3C Semantic Web Activity possui vários recursos para quem quer aprender, além de alguns casos de uso.
E não tem desculpa para não utilizar, ele é compatível tanto com HTML quanto XHTML.

No tags for this post.
Topo

4 Comentários

Padrões de escrita de código em PHP

postado por Fabrício Ferracioli em 03/08/2009 11:11:58
Não há tags para este post

Hoje aconteceu mais uma apresentação sobre temas relacionados a programação aqui para a equipe da souÁgil. Falamos sobre um tema que gera bastante polêmica entre uma equipe de programadores, por se tratar muitas vezes de uma preferência pessoal. Mas que tema é esse?
Padrões de escrita de código em .
Especialmente no caso do , a polêmica é ainda maior, uma vez que a linguagem não possui nenhum padrão estabelecido oficialmente.

Aqui vai a apresentação:

Acredito que em qualquer projeto essa prática é importante, e o objetivo dessa apresentação é mostrar alternativas existentes em . Quem gostar de algum deles pode adotá-lo ou criar o seu, mas lembre-se que toda a equipe deve ter uma maneira fácil de conhecê-lo.
É isso, espero que ajude a quem precisar.

No tags for this post.
Topo

Sem comentários

Ajudando a melhorar a qualidade do PHP

postado por Fabrício Ferracioli em 17/06/2009 09:23:41
Tags: ,

Vocês já devem ter percebido através dos posts do blog que damos grande importância para os testes de software. As razões para isso são diversas, mas certamente a principal está relacionada a confiabilidade.

Nossa linguagem de programação preferida, o , sempre sofreu diversos ataques com relação a esse aspecto, normalmente comparado a outras linguagens de programação como Java, Python, Ruby e até C++. Não que ele seja uma linguagem imaculada, mas não é limitado ou ruim como muitos dizem por ai.
Se vocês acompanham o desenvolvimento da linguagem, devem saber que a versão 5.3 está quase saindo do forno, e vem com várias promessas bastante promissoras.

Uma delas, que acredito que seja uma das melhores iniciativas desse release, é o PHP Quality Assurance. O QA é uma iniciativa de um grupo de desenvolvedores que deseja ajudar o grupo principal de desenvolvimento do , melhorando a qualidade da linguagem. Entre as estratégias e objetivos, temos diversas iniciativas associadas a testes automatizados, análise e reporting de bugs.

Só que uma das partes mais interessantes ainda não foi mencionada. Se você se preocupa com a qualidade da sua linguagem de programação preferida e gostaria de ajudar ela a melhorar, agora você tem mais uma maneira de fazer isso! Você quer saber como?
Agora você pode escrever testes para o PHP!
E não é só isso! Agora você também pode acompanhar o andamento dos testes existentes e o code coverage para cada versão. Outro modo de ajudar é testanto a compilação dos Release Candidates atuais.

Não conheço nenhuma iniciativa semelhante por parte de outras linguagens de programação, alguém sabe de alguma?
Essa talvez seja uma das grandes vantagens do com relação a outras linguagens de programação, o tamanho da comunidade e a abertura dada para que ela possa contribuir.
Agora ninguém tem desculpa pra não ajudar o a se tornar uma linguagem de programação cada vez melhor. E quando vocês ouvirem que ele é uma linguagem não confiável, já sabem aonde recorrer para provarem o contrário.
Good coding!

Tags: ,
Topo

2 Comentários

Apresentação introdutória sobre PHP e CakePHP

postado por Fabrício Ferracioli em 22/04/2009 13:13:37

Na última sexta-feira, 17/04, participei como palestrante de uma das etapas do processo seletivo da Empresa Júnior de Computação (Cop-Jr) da Universidade Estadual de Londrina (UEL).
Para quem quiser ir direto para os downloads, use a âncora.

Durante três dias foram abordados os assuntos:

Fui o palestrante do último dia, falando sobre e . Visto que o grupo de inscritos era em sua maioria do primeiro ano do curso de Ciência da Computação, o conteúdo dos slides é bem introdutório. Procurei focar em conceitos e boas práticas, já que eles ainda vão aprender a programar.
Como exemplo, desenvolvi o blog do tutorial do CakePHP, onde é possível mostrar vários conceitos para quem está começando. Logo depois disso o Lucas acabou com minha apresentação, mostrando o Scaffolding….
Assim não vale, os caras tem que sofrer pelo menos um pouco!

Espero que eles tenham aproveitado e aprendido, e peço para quem tiver sugestões enviar nos comentários.
E sejam bem vindos, novos padeiros!

A apresentação está no formato odp, pra quem não tiver o OpenOffice, segue o link para download.
Apresentação processo seletivo da Cop-Jr
Blog desenvolvido em PHP puro e CakePHP

Tags: , , ,
Topo

3 Comentários

Creative Commons License
Sou Ágil: KISS em http://kiss.souagil.com.br está licenciado sobre
Creative Commons Attribution-Share Alike 2.5 Brazil License.

souÁgil