Britain From Above: Motorways off the Coast

A BBC tem agora uma nova experiência não só para os britânicos mas para todo o mundo. Videos e imagens de zonas modernas e históricas do Reino Unido estão agora disponíveis e deixo-vos aqui uma delas.

No Estreito de Dover, incluído no Canal da Mancha, passam diariamente mais de 400 embarcações entre cargueiros, petroleiros ou os simples ferrys que fazem a ligação entre França e Inglaterra.

CakePHP Plugins

banner.png

Motivation

This paper is intended to try to improve the next version of Cake. I think one of the most important features of a framework is its capacity to be expanded. Plugins achieve that gracefully. But there is a problem; plugins, as read on tempdocs, are meant to be packages. I think they can be much more. This is mainly a software design problem.

Where they fail

Point #1

Cake creates conventions for everything turning controllers, models and views universal. Same happens to plugins, but because of namespace concerns it is recommended to developers to include plugins name in controllers, models and views names. So a blog plugin would have BlogPost and BlogComment as models, BlogPosts and BlogComments as controllers. That’s fine to me (and recommended) but the Router should be smart so it won’t be necessary URI’s like /blog/blogPosts.

Point #2

Second is its usefulness. I think plugins can be more than just isolated modules. Imagine a plugin that is mutable, just by receiving some variables on runtime. I think every experienced developer has come to a day where he finds himself coding same thing twice. With MVC architecture that is a problem which is 90% of the time solved, but here are exceptions.

This kind of problem appears on relative big websites. Imagine you have Users profile page, which can receive Comments. You also have the Groups page which can also receive Comments. Code can be reused by creating an element and invoking it on the view, passing the right data. That’s a simple example.

But, what if Users and Groups could have Images. The Images logic would be obviously be present in the Model, but what about all the actions? Could be achieved by /images/view/type:group/23. Still ok to me. But images now have Categories, Tags and Comments. That becomes kind of hard to maintain. Developer is responsible to persist the type and id, for the operations to succeed. A good solution to this problem would be packing all has a plugin, to get all things organized, but the persistent problem would still exist.

Continue reading

Gráficos em jQuery

Apresento o Flotr, um novo plugin para jQuery, que vai facilitar a introdução de gráficos nas suas páginas.
Ao contrário do Google Chart API, este plugin cria e manipula gráficos no momento.

Este plugin surgiu da insatisfação do autor, Ole Laursen, pois outros plugins não eram inteligentes o sufeciente. A vantagem deste plugin sobre outros é que ajusta automaticamente os limites e ajusta a escala, de acordo com os valores de entrada. Outro plugin equivalente, mas para Prototype, é o Plotr.
Esta competição entre Prototype e jQuery só traz vantagens para os utilizadores.

Grafico Barras (Flot)
Continue reading

Objectos Mágicos

autload.jpg

Hoje vou apresentar uma função que a maior parte da comunidade PHP não conhece. Está englobada dentro das “funções mágicas”, foi íncluida no PHP5, mas é necessário defini-la.

Em projectos com uma escala média, em que contamos com mais do que alguns ficheiros é praticamente certo que vamos utilizar classes, e inclui-las com ficheiros externos.


Este é um exemplo típico duma aplicação simples/complexa. Incluímos o nosso ficheiro em todos as páginas em que vamos necessitar duma ligação à base-de-dados e em cada uma delas vamos iniciar o nosso objecto.

Agora podemos continuar a seguir a linha de pensamento, e para um projecto funcionar vai precisar também duma classe para gerir os utilizadores, outra, quem sabe, para gerir os templates – e para os mais exigentes, também podemos incluir uma para cache.

Vamos utilizar muito provavelmente uma página, normalmente denominada por kernel ou global, que vai incluir tudo isto por nós em todas as páginas, ou na única página, do nosso projecto.

Mas tudo fica mais simples se fizermos uso desta função. Imaginemos o seguinte pedaço de código, que representa literalmente como ficaria o nosso index:


Continue reading

Google Reader Theme

261.jpg

John Hicks, famoso designer inglês, lançou há semanas um skin para o Google Reader. Para instalar bastam uns passos simples e é compatível com qualquer browser (excepto IE).

Screenshots

Continue reading

Guia para Iniciados

This area is intended for everyone new to PHP. It opens with a series of informal, entertaining tutorials written by Vikram Vaswani, founder and CEO of Melonfire. These tutorials build on a previously-published 5-part series which has now been updated and extended to embrace PHP 5, making parts of it suitable for those of you who already have worked with PHP 4 in the past.

If you came here to learn about elementary PHP 4 or basic PHP 5, this is for you. Enjoy!

PHP 101: PHP For the Absolute Beginner

PHP Console

Header-PHP-Console

Alguma vez pensou se seria possível executar ficheiros de php na linha de comandos, como se fossem programas de C ou de Pascal?

Além de parecer divertido, provavelmente já precisou mesmo de usar e não sabia como. Imagine um ficheiro em PHP que executaria quando iniciasse o servidor (ou o seu servidor instalado em casa) e que trataria de apagar mensagens de fórum antigas ou actualizasse as estatísticas de um gestor de ficheiros.

Podíamos criar um Crontab se estivéssemos a usar Cpanel ou Unix, mas por vezes precisamos de ir mais além. Em PHP existe mais uma opção chamada actualmente de CLI (Command Line Interface) a qual vamos explorar neste artigo.

Continue reading

Hello Blog!

Like any language, when we start the first thing we do is to test the ultimate algorithm: The Hello Blog!

function foo() {
    return "Hello Blog!n";
}

for ($i = 0; $i < 10 $i++) {
    echo foo();
}

Brain Damage

alaix a akd ek, kakdl a bkiq. kad 2 a 3 dkaie ddaiop ka, dkdaa a dkey.

fdooaxp.