jul 15 2008

Lumine no GitHub

Olá, na semana passada o Hugo Ferreira, criador do Lumine Framework, fez um release de uma versão beta onde ele criou destrutores e um método invocando esses destrutores. Eu até comentei aqui no blog sobre esse release, e gostei muito porquê realmente fez diminuir o consumo de memória, mas uma coisa ainda me deixava com a pulga atrás da orelha, porquê o framework ainda “inchava” no consumo de memória.

Aí no sábado fiquei pensando o que eu devia fazer e no domingo comecei a fazer. A primeira coisa que fiz, foi colocar o Lumine Framework no GitHub, assim fica mais fácil as pessoas verem o que está sendo feito e pode comentar cada linha do que está lá, bem simples mesmo, apenas clicando na linha e comentando. E fica fácil para quem quiser desenvolver, é só fazer um fork e botar a mãos na massa.

Depois eu investiguei como funciona a criação dos objetos e retirei o armazenamento de um objeto de configuração dentro do objeto que estamos lidando. Removi porquê não vejo a necessidade de se manter esse objeto lá, porquê não tem como eu mudar essa configuração em tempo de execução, já que ele necessita de um objeto de configuração.

Nesse ponto, o Hugo me disse que possivelmente não funcionaria multiplas conexões com bancos distintos. Como eu ainda tive a oportunidade de testar se realmente funciona multiplas conexões, então não posso afirmar nada, mas investigando os métodos de criação de configuração, eu acho que irá conectar normalmente.

Depois, eu alterei o destrutor para realmente cumprir o que ele faz destruir o objeto, antes ele estava apenas limpando algumas propriedades do objeto, destruindo outras, agora ele realmente destrói. Se alguem tiver a necessidade de apenas reiniciar o objeto, é só usar o método reset() que ele se propõe a fazer isso.

E por último varri todo o Lumine_Base e procurei por onde ele estava criando objeto e comecei a destruir todos após a sua execução.

Com essas alterações, agora o framework não está inchando e mantém a consumo de memória constante.

No momento estou trabalhando na perfomance dele. Ontem eu fiz o mapeamento do método save e fiz um benchmark, ele faz uma média de 32,2 linhas salvas no banco de dados por segundo. Quero aumentar a quantidade de linhas salvas por segundo e estou estudando como ele faz isso, logo após, irei fazer o inverso, verificar a quantidade de linhas navegadas por segundo.

Quem quiser contribuir com o que eu estou fazendo pode fazer um fork no GitHub e fazer os commits para lá ou para apenas quem quer acompanhar, é só assinar os feeds de commits e do projeto.

Até a próxima!


jul 11 2008

Lumine e o gerenciamento de memória

Olá, agora a pouco o Hugo lançou uma nova versão do Lumine, com algumas correções, como um destrutor explicito para o objeto (Diminuindo e muito o consumo de memória).

Então quem utiliza o lumine é bom atualizar o framework e utilizar os métodos novos :D

Até a próxima!


jul 1 2008

Lumine e o consumo de memória

Olá, alguns dias atrás estava fazendo o mapeamento de um projeto que estou desenvolvendo na Add4 Comunicação no Lumine Framework.

Totalmente corriqueiro, até que resolvi fazer alguns testes, bem simples, para verificar a integração entre os modelos e se tudo estava correto. Só que resolvi fazer de uma forma diferente, ao invés de apenas criar um registro e verificar a compatibilidade entre eles, resolvi fazer vários registros, então criei um loop de inserção:

$crianca = new Crianca;
for($i=1;$i<=10;$i++) {
	$brinquedo[] = Brinquedos::staticGet(rand(1,1000));
}
$crianca->brinquedos = $brinquedos;
$crianca->save();

Até aí nada demais, digo que a criança tem 10 brinquedos. Mas então resolvi adicionar 10000 crianças no banco:

for($i=1;$i<=10000;$i++) {
	$crianca = new Crianca;
	for($i=1;$i<=10;$i++) {
		$brinquedos[] = Brinquedos::staticGet(rand(1,10000));
	}
	$crianca->brinquedos = $brinquedos;
	$crianca->save();
	unset($brinquedos);
}

Bom, aí agora adiciono as 10000 crianças, cada um com 10 brinquedos. O consumo de memória continuou normal, então resolvi pegar esses registros:

$criancas = new Crianca;
$criancas->find();
while($criancas->fetch()) {
	$criancas->_getLink('brinquedos');
	print_r($criancas->toArray());
}

BUM!, então tive o problema, o retorno de uns 1500 registros, o PHP para a execução e lança o erro de estouro de memória.

A cada interação, o consumo de memória aumentava substancialmente, quando comecei a debugar o lumine, descobri que ele não tem um controle de memória, e assim vai criando objetos conforme a requisição, como no caso são várias de uma unica vez, então o consumo aumenta substancialmente até ocorrer o estouro de memória e não se preocupa em destruir esses objetos criados.

No momento estou trabalhando pra “enxugar” esse consumo e enviar um patch para o Lumine.

Então, até não ser resolvido, cuidado ao tratar com vários registros ao mesmo tempo, o consumo pode aumentar conforme o numero de “Get Links” forem sendo utilizados.

Até a próxima!


abr 23 2008

Curso de PHP

Inicia-se nesse sábado, dia 26, às 16:00 na FAETE - Faculdade das Atividades Empresariais de Teresina - um curso sobre PHP Orientado a Objetos, utilizando CodeIgniter e Lumine, ministrado por Cairo Noleto (eu!).

Estou preparando a primeira aula, serão 20 horas, ministradas aos alunos do curso, pessoas interessadas deverão procurar a coordenação de sistemas de informação e se informarem para saber se podem (Eu espero sinceramente que sim!!).

Irei abordar a parte prática da coisa, explicações sobre MVC, ORM, testes entre outros assuntos (Foco no ágil). No primeiro dia, decidiremos um projeto para desenvolver.

Qualquer coisa, mande-me email (caironoleto@gmail.com) que eu conversarei com o coordenador.

Até a próxima!


abr 9 2008

Log no Lumine

Ontem (08/04/2008) na aplicação que estou desenvolvendo na W7 Solutions tive o seguinte problema:

Foi atualizado algumas coisas no CVS, e quando fiz o update, “puff”, a aplicação não funcionava mais.

› Continue reading


mar 20 2008

Code Igniter with Lumine

Olá, como prometido no ultimo post, estarei disponibilizando online o CodeIgniter integrado ao Lumine.

Como não tenho host proprio, então estou colocando os arquivos dentro do “SkyDrive” serviço da microsoft.
› Continue reading


mar 15 2008

CodeIgniter e Lumine, em um só framework

Olá a todos, é mais uma vez com muita emoção que venho por aqui dizer que consegui fazer a integração do Framework Lumine ao CodeIgniter.

› Continue reading


mar 7 2008

Apresentação sobre frameworks PHP ( CodeIgniter e Lumine )

Olá, hoje estarei fazendo uma apresentação na faculdade (FAETE).

Será uma apresentação para padronização de um projeto de desenvolvimento de sistemas utilizando frameworks por camadas e um framework de Mapeamento de dados em Objetos.

Irei falar sobre o CodeIgniter e sua integração com Lumine, vantagens e desvantagens de se utilizar esses frameworks bem como seus pontos fortes e fracos.

Vai ser uma apresentação breve, e após a apresentação, colocarei os slides aqui.

Então boa sorte e que seja aprovada a utilização desses frameworks no projeto.

Até a proxima!


fev 26 2008

Lumine 1.02-beta

Olá a todos.

Ontem (25/02/2008) fiz o lançamento aqui da versão 1.01-alpha do Lumine. Junto com o lançamento, mandei um email para pessoas importantes contando sobre o feito, e uma delas foi ao Hugo, criador do framework Lumine.

› Continue reading


fev 25 2008

Lumine 1.01-alpha

Olá, é com grande orgulho que venho através desta destacar o lançamento do Lumine 1.01-alpha.

› Continue reading