Tiago Natel de Moura

Arquivo da categoria ‘PHP’

Hacking the Core of PHP: Escrevendo extensões

Em C/C++, hacking, PHP, novembro 22, 2009 às 7:30 pm

Hacking the core of PHP.

No ano passado eu estudei PHP-GTK e adorei. Muito fácil desenvolver uma aplicação com um ambiente agradável em poucas linhas de código. Só que o PHP é uma linguagem voltada para a web então muitos dos recursos que seriam necessários à uma aplicação gráfica não estão disponíveis. Por isso que na época acabei me interessando em entender como se escreve uma extensão para o PHP. E descobri que é muito fácil.
Há tempos que estava querendo escrever sobre isso.
Leia o resto deste post »

[PHP] Testes unitários com MAKE no VIM/Kate/gedit/…

Em Kate, PHP, Testes Unitários, VIM, novembro 17, 2009 às 9:15 am

Quem programa orientado a testes sabe do problema de ter que testar a aplicação com uma IDE que não tenha um plugin para isso. Pois deste modo temos que fazer os testes na linha de comando ou direto no navegador.

Eu desenvolvo com o VIM e com o kate e eles não possuem um plugin para testes como no eclipse/netbeans etc… Então, para rodar os testes unitários nestes editores eu uso sempre algum script em shell junto com arquivos Makefile pois daí não preciso criar nenhum plugin para o vim ou kate porque eles já possuem um plugin de compilação.

No VIM é só digitar :make em modo de comando e no kate (se a extensão de comandos do vim estiver desabilitada) é só usar o plugin “builder” ou “construtor” e teclar ALT+R para compilar, o kate possui uma interface para configurar o comando padrão que rodará no make.

Na verdade, eu uso o make em muito mais coisas com o PHP… Por exemplo, agora que o PHP 5.3 ainda não está sendo utilizando na maioria das hospedagens e pouca gente migrou eu estou usando o make para compilar meus fontes PHP de modo a ficarem portáveis à PHP 5.2 e 5.3, mas isto pretendo falar em um post em breve.

Controlando os Testes com Makefile

SimpleTest e PHPUnit suportam Test Suite para automatizar os testes de toda a aplicação, por exemplo, mas tem uma coisa que não gosto… Com test suite soma-se todos os “Passes” e “Failures” como se fosse apenas um teste.
Isto nem sempre é bom. Um dos problemas é que se voce colocar todos os seus testes numa única suíte de testes eles ficarão muito demorados (dependendo do tamanho dos testes).
Leia o resto deste post »

Estrutura de Diretórios para Aplicações Web

Em Orion Framework, PHP, novembro 9, 2009 às 6:37 am

A estrutura de diretórios da aplicação é um requisito importante para a futura produtividade no projeto, pois se não for bem pensada, seu projeto pode ficar amarrado à pequenos problemas como: Repetição de código, não ter escalabilidade nem flexibilidade, dificil migração, etc.
É um ponto que, quando usamos frameworks, não costumamos pensar muito, devido a eles já trazerem uma estrutura de diretórios própria que nem sempre é a melhor para o seu projeto.

Na minha opinião a estrutura de diretórios não deve simplesmente fornecer um padrão para seus projetos, mas sim fornecer flexibilidade, escalabilidade e se possivel produtividade. Alguns frameworks lhe garantem alguns benefícios se você seguir algumas convenções que eles impõem. Mas não gosto da maioria destas convenções e acho que nós devemos programar da maneira que mais nos convém.

Existem inúmeras maneiras de você organizar seu projeto, aqui vou falar de alguns fatores que você poderá pensar na hora de definir sua estrutura de diretórios (independente se usar framework ou não), mas óbvio que isso não significa que é a mais adequada para você ou sua aplicação corrente.

O que será falado vale para qualquer projeto que utilize do padrão MVC. Você terá que adaptar conforme seu framework exigir. Se você não utiliza framework mas programa segundo o padrão MVC esse artigo poderá lhe ajudar.
Leia o resto deste post »

Implementando RC4 em PHP

Em Criptografia, PHP, outubro 24, 2009 às 8:25 am

Eu estava precisando de uma criptografia independente de extensões para o PHP para implementar no framework, depois de uma pesquisada decidi eu mesmo fazer o algoritmo do RC4 em PHP.

Uma pequena introdução

RC4 é um algoritmo de criptografia de fluxo muito conhecido e respeitado. Foi desenvolvido por Ron Rivest para a empresa RSA Data Security, portanto é privado, mas em 1994 foi postado anonimamente uma versão do algoritmo compativel com o original. Esta versão é conhecida como ARCFOUR ou ARC4 (Alleged RC4).

Você quer saber quais protocolos utilizam RC4?

Bom antes de ver o code tem um pré-requisito:

Xor Encription Algorithm

A criptografia moderna é dividida basicamente em criptografia simétrica e assimétrica. RC4 é um algoritmo de criptografia simétrico. Os algoritmos simétricos podem ser divididos em algoritmos de blocos e algoritmos de fluxo.
Nos algoritmos simétricos de bloco um tamanho fixo deve ser cifrado de cada vez. Por exemplo, se o algoritmo cifra blocos de 128 bits, somente ocorrerá a cifragem se a mensagem tiver exatamente este tamanho. Ele é mais usado em transações em que os pacotes possuem tamanho fixo. Eles podem ser usados em quaisquer outras aplicações também, mas para cifrar mensagens menores que o tamanho do bloco ele necessita completar a mensagem com um cabeçalho, também chamado de padding.

Os algoritmos de fluxo podem cifrar a mensagem bit-a-bit não importando assim o tamanho da mensagem. O RC4 é um algoritmo simétrico de fluxo, então vamos entender um pouco esse funcionamento.
Num algoritmo de fluxo, os bits de uma mensagem em texto plano são combinados com simples operações de Xor contra uma cadeia de bits pseudo-aleatórios (pseudorandômicos), também chamados keystream.
O Xor está no centro da maioria dos algoritmos modernos, ele sozinho é um tipo de criptografia. Vamos lembrar como funcionam os operadores lógicos AND, OR, NOT e XOR:
Leia o resto deste post »

Seguir

Obtenha todo post novo entregue na sua caixa de entrada.