Obtendo o tamanho de arquivo via File Handle em PHP

Resumo:
Dica rápida

Caso você tenha um file handle aberto (tipo resource do PHP) e queira saber qual o tamanho do arquivo, pode usar as funções ftell e fseek para determinar o valor desejado. Basta encaminhar o ponteiro do arquivo para o final dele e depois obter a posição.

A utilização da função filesize não ajuda, pois para usá-la é necessário passar o caminho do arquivo. Existem situações em que não temos acesso a esse caminho. Para isso criei esta nova função.

Estruturação e Organização do CSS (parte 2)

Resumo:
Introdução

No post anterior comecei uma série de dicas sobre estruturação do CSS, inicialmente apresentando a correta utilização dos seletores. Neste artigo, veremos algumas estratégias para separação de estilos em arquivos e organização das regras de estilos dentro de um arquivo.

Estruturação e Organização do CSS (parte 1)

Resumo:
Introdução

Desde as primeiras páginas web até os dias de hoje, muitas coisas mudaram em relação à estruturação dos estilos aplicados. Por algum momento, páginas utilizavam estilos embutidos no HTML. Aos poucos, isso foi mudando e os estilos foram separados. Atualmente, é altamente recomendado o uso de folhas de estilos externas para possibilitar manutenções em estilos sem afetar a estrutura do documento. Além disso, a transferência de dados entre cliente e servidor fica reduzida (já que as folhas de estilos podem ser cacheadas), e também melhora a legibilidade da estrutura do documento.

Nos próximos posts vou citar algumas dicas sobre como estruturar seu CSS para permitir mudanças futuras sem grandes impactos e, na medida do possível, justificar as abordagens.

Implementando uma Barra de Progresso de Upload com PHP

Resumo:
Introdução

No post passado, comentei que está previsto para o PHP 5.4.0 um novo recurso, que permitirá nativamente controlar o progresso do upload de arquivos. A pedidos, vou postar um exemplo de código que utiliza o novo recurso.

O principal código é em JavaScript. Você pode optar por usar jQuery ou algum framework próprio. Aqui no post, usei JavaScript/DOM puro, apenas para ilustrar.

Para montar a barra de progresso no HTML, utilizei a tag <progress> do HTML 5.

Controle do Progresso de UPLOAD no PHP

Resumo:
Introdução

É comum que sistemas de informação possuam um mecanismo de upload para algum propósito. Normalmente para enviar uma foto do perfil, anexar documentos, etc. O problema é que alguns sistemas esperam receber arquivos relativamente grandes para um tráfego (quase) imediato na Internet e, por este motivo, é útil informar para o usuário sobre o progresso do upload dos arquivos que ele está enviando para o servidor.

Uma das "soluções" mais comuns era a exibição de uma imagem de carregamento (normalmente aquela rodinha girando ou uma barrinha se mexendo), que dava a ideia de que o sistema estava trabalhando e que o usuário precisava esperar. O problema dessa solução é que o usuário não era informado sobre quanto do arquivo foi enviado e, consequentemente, se faltava muito ou pouco para aguardar. Pensando nisso, foram implementadas alguns mecanismos alternativos, baseados em applet, flash e/ou iframes. Todos muito funcionais, mas normalmente pouco elegantes por utilizarem recursos não nativos do PHP.

Felizmente, no PHP 5.4 foi incluído um recurso para controlar o progresso das requisições de Upload. A versão 5.4 ainda está em fase beta, mas o manual do PHP já apresenta uma prévia de como será o funcionamento desse novo recurso: [Controle de Progresso de Upload]. O recurso prevê, inclusive, o cancelamento do upload durante o processo. Neste artigo veremos como este recurso funcionará.

Nível de Conhecimento em PHP

Resumo:
Introdução
escalada

Estive observando as perguntas que aparecem em listas de discussão de PHP e notei que vários programadores não conhecem todos recursos da linguagem. Então resolvi separar aqui alguns dos principais recursos da linguagem em níveis. Assim, você tem condições de se auto-avaliar e saber o que ainda pode aprender para melhorar.

PHP ou Java

Achei um post interessante sobre o assunto "PHP ou Java" e resolvi compartilhá-lo por aqui: PHP ou Java.

Na minha humilde opinião, Java é uma linguagem que já nasceu baseada em conceitos, padrões e estratégias consolidadas. Por outro lado, o PHP nasceu como um projeto pessoal e cresceu (muito). A partir da versão 5, o PHP começou a aperfeiçoar seus recursos relacionados à orientação a objetos e acredito que hoje possa fazer praticamente tudo que se faz em Java. E diria mais: pode fazer coisas que Java não pode ou que só pode com um esforço estupidamente maior.

No final das contas, PHP propicia uma facilidade de aprendizado mais rápido que Java, ocasionando em muitas pessoas se interessando por ela. Pessoas boas e ruins. Por outro lado, Java costuma ser aprendido em cursos superiores, normalmente por pessoas com mais noções de POO.

Se você ainda é um daqueles que acha que PHP não pode ser utilizado por grandes aplicações, segue uma lista com alguns aplicativos famosos feitos em PHP:

  • Facebook
  • Yahoo!
  • Gmail
  • Wikipédia (Mediawiki)
  • Moodle
  • Joomla
  • Wordpress
  • Digg

PHP 5.3.7 e PHP 5.3.8

Dia 18/08 foi lançado o PHP 5.3.7, com um pacotão de correções da linha 5.3.X. Porém, dia 22/08 foi observado um bug considerado grave e, imediatamente, a equipe lançou a correção na versão 5.3.8 no dia 23/08.

Portanto, não é recomendado instalar a versão 5.3.7, mas sim a versão 5.3.8.

Os bugs encontrados eram relativamente simples:

  • O primeiro era que a função crypt devolvia apenas um sal quando era solicitada a criação de uma senha com sal MD5. Já escrevi sobre o crypt no post "Autenticação e Criptografia de Senhas".
  • O segundo estava relacionado ao timeout de conexões com MySQL usando SSL com o driver nativo do MySQL para PHP (mysqlnd).

Note que o PHP 5.4 já está em fase beta, e logo estará disponível com novas funcionalidades. A linha 5.3.X, a princípio, deve receber apenas correções e upgrade de bibliotecas, mas não deve ter novos recursos.

A Propriedade CSS "text-overflow"

Resumo:
Introdução

Quem trabalha com design Web e CSS, deve conhecer a propriedade overflow, que define como será o comportamento de um bloco em relação à sua rolagem caso o seu tamanho seja inferior ao do seu conteúdo. Mas hoje me deparei com a propriedade text-overflow, que eu nunca havia visto. Ela é muito simples, mas só está prevista para o CSS 3.

O Firefox só suportará esta propriedade na versão 7, enquanto outros navegadores já a suportam há algumas versões. O interessante é que o Internet Explorer suporta a propriedade desde a versão 6.0 (aquela famosa versão). Creio que seja uma invenção da Microsoft na época e que acabará se tornando um padrão.