Judy Arrays do PHP

Resumo:
Introdução

Judy Array é uma extensão Pecl (código em C que possui interface para utilização em PHP) que implementa arrays associativos com os benefícios de escalabilidade, alta performance e eficiência no uso de memória.

HTML Entities

Resumo:
Introdução

HTML é uma linguagem baseada em tags. Estas tags são definidas através de caracteres reservados (símbolos "<" e ">"). Além disso, as tags podem conter atributos definidos na forma: nome_do_atributo="valor" ou nome_do_atributo='valor'.

Com o uso de caracteres reservados, existe a necessidade de um mecanismo para representar estes mesmos caracteres fora do contexto nos quais são reservados. Ou seja, se desejamos mostrar um sinal de menor num documento HTML, precisamos representá-lo de outra forma, caso contrário, o interpretador de HTML pode achar que é um caractere reservado indicando o início de uma nova tag. O mecanismo que permite representar caracteres no HTML é chamado de HTML entities (ou "Entidades HTML").

Criar arquivos com nomes únicos em diretórios

Resumo:

Em sistemas que envolvem upload de um número indefinido de arquivos, é possível que o sistema armazene o arquivo no próprio Banco de Dados ou que ele armazene em algum diretório reservado para arquivos submetidos.

O primeiro caso normalmente não exige que os arquivos tenham nomes únicos (exceto por alguma restrição do sistema). No segundo caso, independente da forma como os diretórios são organizados, é necessário garantir que um arquivo tenha um nome único dentro de um diretório.

Evitando o "autocomplete" de navegadores

Resumo:
Introdução

Sistemas Dinâmicos Web normalmente são repletos de formulários. Em alguns deles, é útil que o navegador ofereça sugestões de preenchimento automático baseado no histórico de preenchimento de determinado campo. Normalmente os navegadores gravam estes tipos de informação de acordo com o valor do atributo "name" do input de texto (e, talvez, de acordo com a URL em que o campo foi gerado).

Porém, em alguns campos, não desejamos este recurso por uma questão de segurança e/ou confidencialidade.

Funções com número indefinido de parâmetros em PHP

Resumo:

Algumas funções em PHP possuem um número indefinido de parâmetros. Por exemplo: printf, onde o primeiro parâmetro é o "formato" e os demais são definidos de acordo com o valor do formato.

Para fazer uma função com número indefinido de parâmetros, basta usar algumas funções especiais do PHP:

  • func_num_args - Retorna o número de parâmetros informados para a função.
  • func_get_arg - Retorna um parâmetro determinado (pela posição).
  • func_get_args - Retorna os valores passados por parâmetro na forma de um array indexado numericamente.

Isolamento de Transações no BD

Resumo:
Introdução

Transações em Bancos de Dados permitem encapsular um conjunto de instruções que devem ocorrer para garantir as propriedades ACID (Atomicidade, Consistência, Isolamento e Durabilidade).

A SQL-92 expõe 3 fenômenos que podem ocorrer durante a execução de blocos de consultas concorrentes (em paralelo). Para cada fenômeno, existe um tipo de isolamento de transação que é capaz de solucioná-lo. Mas observe que "solucionar", neste caso, não significa que todas as consultas das transações irão ocorrer. Significa que o bloco de instruções será executado por completo, ou será abortado automaticamente, através de um rollback implícito.

Abrir Arquivos CSV com PHP

Resumo:
Introdução

CSV (Comma-Separated Values) é um formato de arquivo texto para armazenamento de dados de forma bastante simples, e agrupada na forma de tabela (planilha). Ele pode ser gerado com qualquer editor de texto puro (TXT), bastando seguir as regras de sintaxe (definidas em RFC 4180).

Este formato é bastante útil para exportação e importação de dados entre sistemas. Você pode, por exemplo, pedir para uma tabela do MySQL ser exportada para CSV e, então, ser importada pelo seu sistema que utiliza outro banco de dados.

Otimização de métodos que retornam arrays em PHP

Resumo:
performance

Existem métodos que servem apenas para retornar arrays. Em alguns casos, estes arrays são muito grandes e ocupam muito espaço no próprio arquivo da classe onde o método se encontra. Arquivos muito grandes acarretam em uso de memória para carregá-los. Por este motivo pode ser útil considerar uma estratégia de otimização deste array, para que ele só seja carregado caso necessário (consulta sob demanda).

PHP 5.3.5 e PHP 5.2.17

Resumo:

Quem se apressou para baixar a nova versão do PHP no final de 2010 (5.3.4 ou 5.2.16), já pode tratar de baixar a versão substituta imediata. Dia 06/01/2011 foram disponibilizadas as versões 5.3.5 e 5.2.17, que corrigem apenas um bug com a conversão de um determinado número de string para float.

Otimização de métodos PHP com cache de resultados

Resumo:
performance

Existem métodos que calculam uma informação de acordo com parâmetros informados (ou não) e retornam um resultado. Para alguns destes métodos, pode ser útil utilizar um cache de resultados para otimizar chamadas sucessivas ao método com parâmetros idênticos.

Para prover a otimização destes métodos, é utilizada uma variável estática que guarda os resultados já calculados.

CSS Dinâmico

Resumo:

Normalmente a linguagem PHP é utilizada para gerar HTML dinamicamente. Porém, a linguagem PHP pode gerar qualquer tipo de arquivo, desde que se conheça a especificação do tipo de arquivo. Gerar um arquivo CSS dinamicamente é muito simples pois é um tipo de arquivo texto com uma sintaxe bastante simples.

Ano novo, PHP novo

2011 chegou! E alguns dias atrás (em 16/12/2010), o php.net anunciou o fim do suporte à versão 5.2 do PHP. Neste dia, foi lançada a última versão da família 5.2, que foi a 5.2.16.

Programadores são encorajados a usar a família 5.3, que já tem mais de um ano de lançamento, e atualmente está na versão 5.3.4 (lançada dia 10/12/2010).

Expires no Apache - Cache de arquivos no navegador

Resumo:
performance

O ambiente Web é caracterizado pelo modelo requisição/resposta através do protocolo HTTP. Sabendo que alguns conteúdos enviados do servidor para o cliente (navegador) são estáticos, ou mudam com pouca frequência, é possível utilizar um mecanismo de cache para evitar requisições repetidas ao mesmo arquivo. Isso é muito útil, por exemplo, para ser aplicado em imagens e folhas de estilos.

Nohup

Resumo:

Quando trabalhamos com sistemas de informação, existem momentos em que precisamos executar scripts que demoram muito tempo. Seja para corrigir algum erro do sistema, seja para realizar um processamento demorado em função do volume de dados. Nestes casos, não é recomendado deixar estas operações acessíveis via Web, já que o usuário final normalmente não está interessado em esperar mais que um minuto para obter o resultado de um processamento.

Podemos fazer um script para ser executado na linha de comando (shell) usando php-cli, mas executá-lo diretamente também recai sobre o mesmo problema: quem quer ficar esperando o script terminar?

Obter o IP do cliente pelo PHP

Resumo:

Em PHP, existem alguns recursos úteis para se tentar obter o IP do cliente. O processo é feito basicamente observando algumas variáveis guardadas no array superglobal $_SERVER. O maior problema é que o cliente pode estar por trás de um ou mais proxy. A função abaixo tenta obter o IP por diferentes vias:

Layout com Sombras

Resumo:
Introdução

A linguagem CSS 3 ainda não está 100% pronta. Porém, ela é modular, e alguns módulos já possuem algumas especificações interessantes e já suportadas por alguns navegadores.

Algumas das especificações mais atraentes são as sombras em elementos e as sombras em textos. Estes efeitos são feitos pelas propriedades box-shadow e text-shadow respectivamente.