A ver a categoria “PHP”

Categoria sobre a linguagem de programação PHP. Truques e dicas, snippets úteis, resmungos.

The 500 Blog - Homepage
Em Novembro surgiu um desafio no P@P para criar um blog em 500 linhas. O objectivo não era fácil (tanto eu como o outro participante falhámos, de largo), mas, pelo menos, ficou montado um motor próprio para aprendizagem, com muitos exemplos do que devem ser boas práticas de programação em PHP. O projecto está no GitHub, em duas branches: a master e a compact, que é igual à outra, mas sem comentários, sem linhas em branco, instruções inline onde é possível, etc. O que se segue é a tradução adaptada do README que acompanha o projecto.

Como disse no primeiro post desta série, encontrei esta página com os resultados eleitorais de 2009. Nessa página, descobri que os resultados são carregados via AJAX, e que o resultado do pedido (via, se não me engano, url rewrite, que não sei até que ponto coise…) é uma string JSON. Melhor que isto, nem na farmácia.

Daí a descobrir quais os números que variam de distrito para distrito (de 010000 a 180000 nos continentais, 300000 para a Madeira, 400000 para os Açores) foi um saltinho, e depois era questão de se fazer umas chamadas (eu usei cURL, mas há mais maneiras do gato ir às filhoses), uns ciclos, aproveitar os campos que queríamos, et voilá, resultados prontos a serem inseridos numa base de dados.

Como bónus adicional, estes dados trazem também os resultados de 2005, o que é ainda mais porreiro, pá.

Esta posta é pouco mais que um repositório, mais para mim do que para o mundo. Posto isto…

Apresentações com conteúdos que quero explorar em mais profundidade, com aplicações práticas para o meu trabalho ou para projectos pessoais:

Para além das acima, a apresentação How to build your own Quadrocopter (vídeo e apresentação), por Lenz Grimmer, não me ensinou nada de novo, mas é um projecto que comecei no final do verão, para se ir fazendo.

Finalmente, a Dr. © - How I Learned to Stop Worrying and Love Fair-Use Licensing (vídeo e apresentação), pelo já acima nomeado André Luís, reflecte a minha posição em relação a licenciamento (é só visitar a licença aqui do DreamsInCode).

Comentários 3 comentários Continuar a ler Continuar a ler »

Mesmo nesta era de banda larga massificada, não há nada que me irrite mais, como utilizador, do que esperar dois ou três segundos que um site abra. Sobretudo, quando o que falta vir é o CSS da página, por exemplo, ou imagens sem tamanho definido que rebentam com o layout.

Como tal, dedico bastante tempo a melhorar a performance dos sites que desenvolvo. Na realidade, já não dedico assim tanto tempo, visto que entretanto o processo foi agilizado de tal forma que apenas dois ou três parâmetros têm que ser ajustados caso a caso.

As duas ferramentas absolutamente imprescindíveis para este trabalho são extensões para a extensão Firebug do Firefox (sim, extensões para a extensão), o YSlow da Yahoo e o Page Speed da Google. A maioria das regras são comuns a ambos, algumas novas, outras com parâmetros de avaliação diferentes. O ideal é obter uma pontuação o mais próxima de 100 possível. Os resultados do DreamsInCode são os seguintes:

Na continuação desta posta, venho agora falar-vos de sombras.

O Imagick tem uma instrução própria para gerar sombras, shadowImage, que aceita quatro parâmetros: opacidade, sigma, x e y. Uma das vantagens mais fascinantes é que, se a imagem passada tiver transparência, a sombra segue o contorno da mesma. Ideal para usar com botões, ícones…

O que é?

A extensão Imagick é uma extensão para PHP para criação e modificação de imagens, que usa a API ImageMagick. Está disponível através do PECL ou, apenas para Windows, no site do seu criador, Mikko Koppanen. A API ImageMagick, que é de instalação obrigatória, está disponível no site oficial, para vários sistemas operativos.

Em relação à extensão GD2, bastante comum, o Imagick é mais rápido nalgumas das operações mais comuns: redimensionamentos, filtro sharpen, rotações, cortes, etc. Além disso, tal como está no nome, aplica alguma magia nalgumas operações: sombreados, cantos arredondados, composição de texto e imagem… Apesar de nada disto ser inacessível à extensão GD2, no Imagick será possível fazer a maior parte destas operações em poucas linhas – nalgumas operações, apenas uma linha!

Como já falei aqui, o Wordpress não é a peça central do DreamsInCode. Isso, na altura, levantou alguns problemas de integração. Resolvidos que foram, não me preocupei mais.

À pala da brincadeira com os endereços “humanos” (aqui e aqui), que são usados nos projectos aqui no DreamsInCode, andei a monitorizar-lhes o comportamento no sitemap via Google Webmaster Tools. Qual não é a minha surpresa ao verificar que todas as páginas eram reportadas como 404 Not Found, excepto as do blog. Como é que era possível, se eu via as páginas perfeitamente, em vários browsers e em várias ligações. Olhando para o painel Net do Firebug, certinho, direitinho: lá estava o 404 a olhar para mim, em conjunto com todos os dados da página. WTF?!

No seguimento deste post, relembro o exemplo que dei do jornal Público: http://www.publico.clix.pt/Sociedade/divulgacao-de-escutas-na-internet-punivel-pela-lei-do-cibercrime_1419063. Acho que é claro para todos que não existe, no site do jornal Público, nenhum directório “Sociedade” e muito menos um directório para cada notícia que eles colocam.

Na realidade, o que acontece é um redireccionamento invisível do pedido para um script central que, neste caso, trata das notícias. Esse redireccionamento é feito com a extensão mod_rewrite do Apache. O mod_rewrite é uma espécie de pau para toda a obra dos redireccionamentos, desde visíveis a invisíveis, com inúmeras aplicações.

Já devem ter reparado, em centenas de sites por essa ‘Net fora – aqui no DreamsInCode, por exemplo – em endereços cujo caminho é semelhante ao título da página; nalguns casos, inclui mesmo categorias. O caso em que me baseei foi o do site do jornal Público, por ter exactamente a característica que eu queria, e que o WordPress não tem. Se repararem neste URL, por exemplo, http://www.publico.clix.pt/Sociedade/divulgacao-de-escutas-na-internet-punivel-pela-lei-do-cibercrime_1419063, verificam que os caracteres acentuados constam do mesmo, o que não acontece com o WordPress, por exemplo.

Posto isto, o problema tem duas fases: converter os títulos ou os nomes dos registos para uma versão compatível com URL’s e depois redireccionar os novos URL’s para os scripts correspondentes ao tratamento do pedido. No entanto, converter os títulos, que parecia tarefa simples, foi, na verdade, bastante complicado; para isso contribuiu a codificação dos registos na base de dados, que está em UTF-8 (e se não tiverem em UTF-8, deviam ter).

Quando me decidi a fazer este espaço, incluíndo um blog, tive um dilema durante para aí dez segundos: faço eu um motor de blog, ou uso um dos disponíveis?

Volta e meia vejo por aí blogs de developers ou programadores que dizem à boca cheia, ah e tal, o blog foi feito por mim, não usei nenhum motor de blog ou CMS… Alguém tem demasiado tempo em mãos. Reparem que, se o blog for  única coisa do site, e se foi feito como proof of concept, até aceito; mas se for como integração num projecto mais vasto…

O bom programador é inerentemente um malandrão: código escreve-se uma vez e é reutilizável, e isto aplica-se não só ao nosso próprio código, mas a código livre de outros programadores, a menos que tudo o que encontremos, não sirva, de todo, os nossos interesses. Não é, claramente, o caso dos motores de blog, onde há motores para aí ao pontapé; as CMS’s são um caso diferente, onde nenhuma das existentes serve os meus interesses: ou tem funcionalidades a menos, ou tem funcionalidades a mais, ou tem mais buracos que um queijo suiço (e não me façam falar do Joomla).

 Categorias
 Arquivo
 Projectos em Destaque
 Últimas Postas no Blog
 Últimos Comentários do Blog