Bootstrapping
aonde vamos almoçar hoje?
aonde vamos almoçar hoje?
Aug 31st
Frameworks & ORMs
Concluí nesta semana o desenvolvimento da versão beta do meu primeiro framework/orm para php e mysql. De modo geral, um framework cria uma estrutura de arquivos (classes, xmls, arquivos de configuração, bibliotecas…) para inclusão nos projetos.
Há uma infinidade de frameworks para facilitar o desenvolvimento de aplicações PHP. Então porque escrever mais um? Basicamente, diversão & aprendizado. Aprendemos muito escrevendo uma ferramenta para automatizar o trabalho de padronizar métodos e escrita de códigos. E o quebra cabeça envolvido em escrever algo assim garante boas horas de diversão =)
Funcionamento genérico
Geralmente, os frameworks trabalham criando arquivos xml e classes que representam o banco de dados. Tal técnica é conhecida por ORM - object relational mapping- ( em tradução live, mapeador de objetos-relacional ). Depois dos xmls criados, o próximo passo é criar um conjunto de classes com métodos e propriedades que reflitam as atividades do banco. Após isso, basta incluir os arquivos disponibilizados no seu projeto.
Funcionamento do ORM PHP<=> MySql
Basicamente, o framework escrito segue o funcionamento padrão de mapear o banco criando os arquivos xml e as classes representativas das tabelas. Todas as classes herdam de uma classe Query, que contém os métodos de pesquisa, inserção e deleção dos dados. Os métodos são estáticos, de modo que cada classe pode manipular suas próprias instâncias¹, criando um processo mais intuitivo de desenvolvimento. Os arquivos xml são lidos usando a api DOM presente no PHP. O algoritmo para interpretação dos arquivos é implementado na classe XML_Reader ( coincidentemente, existe uma classe XMLReader no PHP ).
Os arquivos são organizados em diretórios auto-explicados, que por sua vez, são compactados em um zip, o qual o usuário faz o download para a inclusão no projeto. Depois da escrita das classes, os arquivos Query.php, XML_Reader.php são copiados para o diretório raiz.
Cada classe contém um array descritivo para a correspondência classe <-> tabelas. Tal variável pode ser usada para percorrer todos as propriedades da classe e também como parâmetros de pesquisa dos objetos/dados em banco.
Padronização²
Visto que o framework cria uma estrutura para o desenvolvimento de aplicativos, é natural que uma padronização seja criada e seguida. No caso do ORM PHP <=> MySql a padronização é criada para a nomenclatura da base de dados e das tabelas:
Melhorias futuras
A versão utilizada para a escrita do framework foi a 5.2.10 do PHP. Isso resultou em um conjunto de problemas: falta de namespaces, métodos inexistentes e outros detalhes que podem ser esclarescidos no manual da linguagem [http://www.php.net]. Para vencer tais desafios foram utilizadas rotas alternativas ( um eufemismo para gambiarra
).
Por ser uma versão beta, melhorias são necessárias, por exemplo:
É tudo beta
O framework não passa de uma experiência de aprendizado, por isso, não pode ser usado em projetos grandes.
Mas, se desejar aprender alguma coisa com ele no método ‘abrir para ver como funciona‘, terei prazer em disponibilizá-lo.
Basta entrar em contato.
P.S.: 1 - A ideia dos métodos estáticos é do Emiliano, para a camada de persistência criada por ele mesmo. 2 – Agradeço ao colega Yzaac que criou a padronização para os banco de dados. Vlw Yzaac!
Ambos os citados acima foram colegas da Unitins, com quem aprendi bastante.
Aug 12th
Buracos negros estão entre as estruturas mais enigmáticas do Universo. Resultantes do colapso de estrelas massivas, os buracos negros são astros extremamente densos, o que cria uma gravidade brutal aprisionando até mesmo a luz. Por isso mesmo são tão difíceis de detectar.
O vídeo abaixo é uma palestra de uma astrofísica sobre como encontrar buracos negros super massivos - uma espécie especialmente interessante de buraco negro.