Cairo Noleto

Certificação profissional, eu devo ter um?

| Comments

Olá hoje teve um email na lista PHP-Brasil bastante interessante. Foi sobre uma dúvida de um iniciante que gerou uma discussão bonita e foi sobre um assunto que diverge a opinião de várias pessoas, sobre Certificação Profissional.

Infelizmente no Brasil ainda quem faz a seleção para os profissionais de Tecnologia da Informação é o antigo Recursos Humanos e para essas pessoas, certificados e diplomas contam bem mais do que a experiência de trabalho. Ainda mais para os profissionais de informática onde temos a necessidade de estar sempre estudando e se atualizando com a velocidade que é essa área.

O pensamento de várias pessoas sobre certificados é que eles são apenas um material que não tem um valor real do que você é capaz. É muito fácil você conseguir tirar um certificado profissional da linguagem XYZ, mas é muito mais difícil você conseguir provar de que aquele certificado tem um valor real, um valor de estudo.

Além disso certificados fazem os profissionais serem mais bitolados, uma pessoa com um certificado quando está procurando emprego mostra o seu certificado, quem não tem mostra seu valor de profissional, mostra suas experiências e conquistas pessoais na profissão. Eu não tenho nenhum certificado sobre PHP, mas me considero um ótimo conhecedor dessa linguagem e não penso em tirar um certificado apenas para mostrar que sei sobre PHP, eu mostro o que eu escrevi, mostro os artigos que escrevi lendo e estudando sobre essa linguagem, mostro que sou pró-ativo nas listas de discussões e principalmente mostro que sempre serei um profissional “Júnior” que estará sempre aprendendo coisas novas, independente de tecnologia ZXY.

O meu maior medo é de que amanhã, logo após eu ter feito um certificado ZXY, essa linguagem/tecnologia vire obsoleta e aquele meu certificado não tenha mais nenhum valor de mercado ou que eu não tenha mais a mesma vivacidade de estudar uma nova linguagem como quem ganha um novo brinquedo por que eu “tenho meu lugar no mercado”. Esse pensamento de que as pessoas só podem trabalhar se tiver um diploma/certificado é algo que eu considero que deve ser banido. Faz nivelar as pessoas “por baixo” e realmente não mede o quanto aquela pessoa sabe sobre determinado assunto, e o pior, faz as pessoas apenas acreditarem que aquela é uma verdade absoluta, e que nada mais pode ser criado.

Esse é o meu ponto de vista sobre o assunto hoje. Até a próxima!

Futuro do PHPSpec

| Comments

Olá, para quem não conhece, PHPSpec é um framework BDD para PHP.

Hoje o desenvolvedor do framework, Pádraic Brady, postou um email na lista phpspec-dev (phpspec-dev@googlegroups.com) e um artigo em seu blog sobre o futuro do PHPSpec.

A primeira e mais importante notícia, é que ele quer criar uma DSL decente (Sim, decente). Como ele citou no seu artigo, no Ruby, o BDD é sexy, mas em PHP é feito e chato. Por conta da sintaxe do PHP, a DSL acaba sendo uma coisa totalmente feia. Enquanto que no Ruby temos algo como should score 0 for gutter game, em PHP isso acaba virando um método:

1
2
3
4
5
6
  public function itShouldScore0ForGutterGame() {
    for ($i=1; $i<=20; $i++) {
      $this->_bowling->hit(0);
    }
    $this->spec($this->_bowling->score)->should->equal(0);
  }

Para desenvolvedores PHP isso é de fácil leitura, mas infelizmente, isso gera uma barreira enorme para pessoas que não sabem nada de PHP ou de programação, isso acaba fazendo ter um nível de explicação para o cliente ou para o interessado nesse comportamento, e isso vai diretamente contra o principio do BDD, onde todos os envolvidos tem que enteder realmente o que se está fazendo.

A outra notícia, é que ele está retomando a dianteira no desenvolvimento do Framework, desde fevereiro ele não vem dando dedicação necessária ao framework.

A primeira coisa é que ele está fazendo uma varredura nos bugs e liberar mais uma nova versão 0.2.x. Além disso ele fez uma chamada para quem quiser contribuir com alguma coisa para a versão 0.3 :).

Outra coisa importante é que anunciou que possivelmente em setembro ou outubro sairá a versão 5.3 do PHP, e pelo roadmap dele, a versão 0.5 já estará sobre o PHP 5.3 e afirmando que não fará esforços para que o framework funcione nas versões anteriores passando essa responsabilidade para a comunidade.

Agora é esperar até a DSL for sexy o suficiente para todos entender ;).

Até a próxima!

Lumine no GitHub

| Comments

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!

Lumine e o gerenciamento de memória

| Comments

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!

Paradigmas

| Comments

Paradigmas são simplesmente padrões psicológicos, modelos ou mapas que usamos para navegas na vida. Nossos paradigmas podem ser valiosos e até salvar vidas quando usados adequadamente. Mas podem se tornar perigosos se os tomarmos como verdades absolutas, sem aceitarmos qualquer possibilidade de mudança, e deixarmos que eles filtrem as novas informações e as mudanças que acontecem no correr da vida. Agarrar-se a paradigmas ultrapassados pode nos deixar paralisados enquanto o mundo passa por nós.

Isso é um parágrafo do livro O Monge e o Executivo que podemos aplicar facilmente no nosso dia-a-dia.

Cuidado com velhos paradigmas!

Até a próxima!

Pense certo ao usar ORM

| Comments

Muitos acham que usar Object-Relational Mapping (ORM) é fazer você não ter mais que escrever SQL dentro do códigos de sua linguagem preferida. É uma pena pensar assim, ORM é muito mais que isso e é muito mais difícil do que se parece.

Para se usar ORM, é necessário pensar Orientados a Objetos. Pensar que você não vai salvar os dados e sim que vai salvar o estado do objeto, que não vai usar relacionamentos e sim conversar entre os objetos.

Usar ORM é abstrair do conceito de Diagrama Entidade-Relacionamento e começar a usar Diagrama de Classes do UML. Quando se pensa assim então você está usando corretamente o pattern ORM.

Construindo a aplicação tendo em mente esses paradigmas então você estará construindo software Orientado a Objetos e não apenas deixando de escrever SQL dentro de seu código.

Até a próxima!

Leitura da semana

| Comments

Na última semana comecei a ler os livros Como transformar sua equipe no seu maior patrimônio e Caindo na Real.

O primeiro livro, Como transformar sua equipe no seu maior patrimônio, é sobre 9 lições que devemos ter não apenas a frente de uma empresa mas que devemos ter sempre ao lidarmos com as pessoas ao nosso redor, não importando se é em uma empresa ou na sua casa, apenas devemos ter.

Essas lições são como realize mais com menos ou desperte a criança dentro de si. O livro foi escrito por Lorraine Grubbs-West, uma ex-funcionária da Southwest Airlines e mostra como a Southwest Airlines lida com seus colaboradores e mostra a estratégia da empresa onde os colaboradores fazem parte da empresa.

O segundo livro, Caindo na Real, considero como um desabafo de uma das empresas mais bem vistas no mundo do software livre a 37signals, criadora do framework de maior sucesso nos últimos tempos, o framework rails.

Considero um desabafo por quê o livro trás de uma maneira direta e precisa o que a maioria das empresas de software sofre que são produtos cheios e gordurosos que possuem funcionalidades meia boca, e ainda fala como a 37signals produz softwares que atendem a necessidade de seus clientes e como fazer para que nossos softwares tambem atendam não só a necessidade, mas a paixão dentro de nossos clientes.

Esses livros são curtos e que são facilmente digeridos em pouco tempo, e ainda de fácil aplicação no dia-a-dia, recomendo a leitura deles.

Até a próxima!

Lumine e o consumo de memória

| Comments

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:

1
2
3
4
5
6
7
8
$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:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
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);
}

</pre>

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:

php

$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!

PHP 6

| Comments

Eu busquei pelo Google noticias sobre o PHP 6. E realmente não encontrei muita coisa boa.

A primeira coisa que você acha, é somente uma pauta de Novembro de 2005 dos líderes do projeto PHP 6 e comentando sobre as novas funcionalidades, o que deve ser retirado e o que vai ser refatorado.

Eu tentei procurar dentro do site oficial do PHP sobre como anda o desenvolvimento, infelizmente não achei muito sobre o PHP 6, mas sobre o PHP 5.3 existe muita coisa nova. Enfim, este não é o intuito deste artigo.

Bom, estamos a mais de 2 anos após essa reunião de definição e pouquíssimas noticias sobre o novo PHP circulam por aí. Mas a maior discussão é sobre a migração.

Não dos desenvolvedores, mas dos provedores web. Hoje estamos na versão 5.2.6, prestes a entrar na versão 5.3 e temos provedores ainda com suporte ao PHP 3, muitos com suporte a versão PHP 4. A Zend estará ministrando um curso de migração do PHP 4 para o PHP 5 em julho.

Espero logo contar com a nova versão e espero que os provedores que usem não demorem muito para migrar. Fico de prontidão para noticiar as novidades sobre o PHP 6.

Até a próxima!