Hijax - Ajax não obstrutivo

Resumo:
Introdução

Recentemente vi uma apresentação de slides cujo título era Hijax - Progressive Enhancement with Ajax (Hijax - Melhoria Progressiva com Ajax). Por abordar um tema muito interessante, resolvi compartilhar sobre o assunto aqui no blog.

O termo "Hijax" foi proposto por Jeremy Keith, e tem como princípio o planejamento/implementação de soluções com Ajax de forma acessível e não obstrutiva, ou seja, a aplicação se mantém funcional em navegadores com ou sem JavaScript habilitado ou disponível. Embora o tema esteja intimamente relacionado à acessibilidade, ele representa apenas a prática da organização de um documento HTML da forma como deveria ser feito em toda web.

Output Buffer do PHP e os mistérios do echo (parte 2)

Resumo:
Introdução

No artigo anterior, vimos uma introdução sobre o Output Buffer do PHP, com seus conceitos básicos e uma aplicação prática do recurso. Neste artigo, veremos a continuação do assunto, nos aprofundando em conceitos mais complexos e algumas aplicações práticas mais avançadas.

Output Buffer do PHP e os mistérios do echo (parte 1)

Resumo:
Introdução

Um dos comandos mais conhecidos do PHP é o echo, que "simplesmente" envia uma string para a saída padrão (STDOUT). Porém, o funcionamento aparentemente simples de um echo pode envolver conceitos bem mais complexos, como o output buffer e a transferência de pacotes HTTP de resposta do servidor para o cliente.

Neste post veremos alguns conceitos necessários para compreender a fundo o funcionamento do Output Buffer. Também veremos um exemplo inicial de como usufruir deste recurso para modificar dados que já foram "impressos" no PHP. No próximo post, veremos alguns exemplos mais complexos e suas aplicações práticas.

Expires no PHP - Cache de arquivos no navegador

Resumo:
performance

Introdução

No artigo Expires no Apache - Cache de arquivos no navegador, vimos como configurar o servidor HTTP (mais especificamente o Apache) para aproveitar o cache do navegador para guardar conteúdo estático, tais como imagens, arquivos CSS ou arquivos JS. Com isso, a performance do seu site será muito melhor (page speed), especialmente se utiliza muito conteúdo estático.

Neste artigo, veremos como fazer com que arquivos dinâmicos gerados com PHP possam usufruir do mesmo mecanismo de cache, mas sem prejudicar o caráter dinâmico da aplicação. Com isso, haverá ainda mais ganhos na performance, trazendo benefícios para o usuário e também para SEO.

Vagas de Emprego em PHP

Novidade no Blog

Agora o blog conta com o link "Vagas de Emprego em PHP", no menu superior do Blog. Este link aponta para uma página que sempre retorna vagas de emprego relacionadas com PHP e desenvolvimento web.

Convertendo ISO-8859-1 para UTF-8 de forma segura em PHP

Resumo:
Introdução

Já falamos várias vezes sobre Unicode, desde a definição de unicode, funções para manupular unicode, como utilizar unicode em todas camadas do sistema e como representar os símbolos na forma de html entities.

Sabemos que ISO-8859-1 foi uma codificação muito utilizada antes do surgimento do Unicode, mas que a tendência é que tudo seja migrado para Unicode e, no caso do ISO-8859-1, preferencialmente migrado para UTF-8. Porém, aplicações web estão sujeitas a situações das mais adversas, quando se trata de dados enviados pelo usuário. Existem casos em que um usuário consegue colar um texto em que parte dele deveria ser ISO-8859-1 e parte dele deveria ser UTF-8. Isso pode ocorrer ao copiar e colar trechos de aplicações para aplicações em sistemas de "origem duvidosa", que acabam gerando uma bagunça de bytes que, por acaso, acabam sendo enviadas para nossa aplicação.

Para resolver este problema, elaborei uma função parecida com utf8_encode, ou seja, converte os caracteres de ISO-8859-1 para UTF-8, porém, caso a função identifique um caractere UTF-8 no texto, ela o mantem intacto. Portanto, ela é útil para garantir que o texto final seja 100% UTF-8 válido.

PHPClasses

O site PHPClasses (www.phpclasses.org) é um grande repositório de classes PHP, que recebe contribuições da comunidade de desenvolvedores da linguagem PHP, de forma voluntária. Ele também oferece vários recursos de redes sociais, como fóruns de discussão, etc.

Se você procura algum recurso muito específico para PHP, pode ser que encontre algo pronto por lá. Atualmente há mais de 6.000 classes aprovadas.

Já escrevi algumas classes e mandei para lá: Classes do Rubens no PHPClasses. Inclusive, duas delas ficaram entre as premeadas por inovação do mês (Innovation Award of Month), com direito a escolha de brinde. Hoje também descobri que uma delas (a Unicode Manipulation) está em segundo lugar no ranking geral de classes mais bem qualificadas do PHPClasses (elas recebem pontuação por utilidade, consistência, documentação, exemplos, testes e vídeos).

Ordenação Especial de Registros do BD

Resumo:
Introdução

Todos que trabalham com Bancos de Dados sabem que o comando SELECT permite que os resultados obtidos sejam ordenados de acordo com algum critério. Porém, a utilização mais comum do ORDER BY é com uma coluna do BD, e normalmente é especificada uma ordem crescente ou decrescente (ASC ou DESC).

Porém, em algumas situações, não queremos usar simplesmente uma ordem crescente ou decrescente. Por exemplo, se temos uma tabela com uma coluna "status" e queremos mostrar primeiro os registros com status "5", e depois mostrar o resto. Neste caso, precisamos de um recurso especial para ordenação.

Códigos de Retorno HTTP

Resumo:
Introdução

A Internet é suportada pelo protocolo HTTP, em que um cliente solicita um pedido ao servidor e este retorna um resultado. Este resultado deve sempre vir com um código numérico e, opcionalmente, algum conteúdo extra (como exemplo: podem ser instruções no cabeçalho do pacote de resposta, como uma solicitação para o cliente redirecionar para outro arquivo, ou o conteúdo de um arquivo HTML para ser renderizado no cliente).

É importante conhecer os principais códigos HTTP e utilizá-los da maneira correta, pois eles podem afetar a reputação de seu site.

Erros de Sintaxe em Scripts PHP

Resumo:
Dica rápida

Para detectar erros de sintaxe no PHP, podemos executar o php, no terminal de comandos, passando o parâmetro "-l" (lint), conforme o exemplo:

$ php -l script.php

Isso é útil quando queremos apenas saber se há erros de sintaxe, mas não queremos executar, de fato, o script.

Cuidados com a geração de XML

Resumo:
Introdução

Ao gerar documentos XML com conteúdo dinâmico é preciso tomar cuidado com a sintaxe XML para que o documento não seja "mal formado". Muita gente conhece a sintaxe básica do XML, que especifica coisas como: é preciso um elemento raiz único, todo elemento que é aberto precisa ser fechado (ou ter o fechamento simplificado com "/>"), todos atributos precisam ter nome e valor, mesmo que o valor seja vazio.

Porém, um detalhe que nem todos sabem é que os elementos que contém texto não podem incluir qualquer tipo de caractere. Neste artigo veremos detalhes sobre isso.

Manipulação de URL usando PHP

Resumo:
Introdução
Quebra cabeça de URL

No desenvolvimento web, é muito comum a utilização de links. Também é comum que os links precisem ser manipulados para incluir ou remover parâmetros. Neste post, veremos como manipular um link e seus parâmetros de forma facilitada e segura.

Singleton versus Static

Resumo:
Introdução

Muita gente conhece o padrão Singleton. O conceito é muito simples: é um design utilizado para garantir que uma determinada classe possua uma única instância em toda a aplicação. Para isso, uma única instância é criada pela classe e sempre a mesma instância é retornada para uso. Porém, em algumas situações, é possível que uma classe agrupe métodos e atributos estáticos, como se uma única "instância" fosse manipulada. Neste post vou analisar as diferenças sobre o padrão Singleton e uma classe com métodos e atributos estáticos.

PHP 5.4 é lançado!

Hoje foi lançada a nova versão do PHP, a versão 5.4, após várias e várias release candidates. E foi um lançamento inesperado (pelo menos para mim). Dia 24/02 haviam anunciado no php.net que uma nova release candidate seria lançada hoje, mas, ao invés disso, foi lançada a versão release final.

Eu já escrevi sobre algumas melhorias da versão 5.4, mas você pode ter uma boa noção das mudanças lendo a página Migrando do PHP 5.3 para o 5.4.

Mas mesmo com este lançamento, me pergunto o quanto a versão 5.3 está plenamente em uso. A verdade é que já na versão 5.3 surgiram ótimos recursos, mas também algumas incompatibilidades. Isso fez com que muitos sites optassem por continuar na versão 5.2.x até hoje. Com a versão 5.4 também surgem recursos muito interessantes, enquanto extingue alguns recursos depreciados há algum tempo. Torço para que desenvolvedores PHP fiquem cada vez mais atentos à evolução da linguagem para sempre estarem cientes dos novos recursos e das atividades depreciadas.

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.

Nova geração de Web Design

Resumo:
Introdução

A Web surgiu como hipertextos bastante simples. A primeira geração gráfica ficou marcada por uma extensa lista de sites com gifs animados, textos coloridos e layout com tabela. Mais tarde começaram a pipocar sites montados com frames, onde se separava título, menu e conteúdo em frames separados. Com o passar dos anos os web designers passaram a adotar os padrões da W3C e utilizar corretamente a semântica das tags (tableless). Mais recentemente, ocorreu uma explosão de sistemas Web de alta popularidade, que exploraram a chamada Web 2.0, com recursos mais interativos sustentados basicamente por JavaScript. Porém, do ano passado para cá, tenho notado uma nova geração de Web Design. Neste artigo, vamos discutir alguns elementos que tem surgido e o que cada um pode impactar na usabilidade.

Edição de Imagem com PHP GD

Resumo:
Introdução

Embora PHP seja especialmente desenvolvido para geração de páginas dinâmicas (HTML), ele também possui recursos para manipular outros tipos de dados, por exemplo, imagens. Neste post, veremos como trabalhar com a biblioteca GD sem precisar criar uma matriz de cores da imagem, ou seja, trabalhar diretamente na imagem.

Constantes do PHP

Dica rápida com uma lista de constantes importantes do PHP:

  • DIRECTORY_SEPARATOR - Caractere usado para delimitar diretórios no S.O. do servidor.
  • PATH_SEPARATOR - Caractere usado para delimitar caminhos no PATH.
  • PHP_INT_SIZE - Número de bytes usado para guardar um inteiro na arquitetura do servidor.
  • PHP_INT_MAX - Maior número inteiro permitido pelo PHP na arquitetura do servidor.
  • PHP_VERSION - Versão do PHP.
  • PHP_OS - Nome do sistema operacional do servidor.
  • PHP_SAPI - Nome da sapi utilizada para acessar o script.
  • PHP_EOL - Guarda a sequência de caracteres necessária para gerar uma quebra de linha na plataforma do servidor, que normalmente é "\n" ou "\r" ou "\r\n".
  • __FILE__ - Constante mágica que guarda o nome do arquivo corrente.
  • __LINE__ - Constante mágica que guarda a linha corrente no arquivo.
  • __DIR__ - Constante mágica que guarda o diretório do arquivo corrente (a partir do PHP 5.3.0).
  • __CLASS__ - Constante mágica que guarda o nome da classe corrente (caso esteja dentro de alguma).
  • __FUNCTION__ - Constante mágica que guarda o nome da função corrente (caso esteja dentro de alguma).
  • __METHOD__ - Constante mágica que guarda o nome do método corrente (caso esteja dentro de algum).
  • __NAMESPACE__ - Constante mágica que guarda o nome do namespace corrente (a partir do PHP 5.3.0).

Usando PHP para tratar E-mail com Acentos e Caracteres Especiais

Resumo:
Introdução

Ao utilizar a função mail do PHP, você pode se deparar com um inconveniente por causa de codificação de caracteres usada para o assunto ou o conteúdo do e-mail. O problema é que o protocolo SMTP só permite a transmissão de dados em US-ASCII. Para utilizar caracteres que não fazem parte da tabela US-ASCII, é preciso utilizar um mecanismo de codificação dos dados para que o resultado seja compatível com US-ASCII. Neste artigo, veremos como fazer isso e enviar e-mail com assunto e conteúdo corretamente.

Problemas com Charset? Nunca mais

Resumo:
Hommer assustado com um caractere exibido incorretamente
Introdução

Vira e mexe existe alguém aparecendo com problemas com apresentação de caracteres por conta de codificação de caracteres errada. Já escrevi sobre Unicode, Códigos e Símbolos Unicode e sobre HTML entities. Mas neste artigo, veremos como utilizar UTF-8 em tudo e nunca mais ver caracteres sendo exibidos errado.

PHP 5.4 (preparado para o futuro?)

Resumo:
PHP 5.4 direto do futuro
Introdução

Mal foi lançada a Release Candidate do PHP 5.3.7 e, já no dia 28/06/2011, foi disponibilizada a primeira versão do PHP 5.4 alpha. Esta versão não deve ser utilizada no ambiente de produção, apenas no ambiente de desenvolvimento para caráter de teste da nova engine.

Este artigo apresenta algumas das principais mudanças e opiniões pessoais sobre a futura versão do PHP.

Firefox 5, surpresa!

Resumo:
Firefox 5
Introdução

Dia 21/06/2011 foi disponibilizada a versão final do Firefox 5. Dizem por aí que tem muita gente que "foi pega de surpresa", alguns chegaram a criticar a nova postura da equipe de desenvolvimento, enquanto outros ficaram entusiasmados com a agilidade com que novos recursos serão disponibilizados. E você? O que acha disso tudo?

Funções Estatísticas em PHP

Resumo:
calculadora estatística
Introdução

Em sistemas integrados de gestão (que atendem ao nível operacional, gerencial e estratégico), é muito comum o cálculo e apresentação de resultados estatísticos de dados gerados pelo nível operacional. Com estes resultados, é possível montar gráficos que facilitam a visualização (postei outro dia como gerar gráficos com o google chart). Neste artigo serão apresentadas algumas funções úteis para o cálculo de algumas informações estatísticas.

CSS Gradient

Resumo:
Introdução

Acompanhando o site da especificação da futura CSS 3, achei algo bacana: CSS Gradient. Este recurso permite aplicar um degradê de uma cor para outra no fundo de um elemento. E não são degradês simples (de uma cor para outra) apenas. É possível especificar várias cores, o sentido em que caminhará o degradê, e em que pontos haverá mudança de cor, ou seja, é possível especificar várias cores e obter resultados muito bonitos.

Salário de Profissionais de TI

programador

Recentemente o Olhar Digital postou uma notícia com uma pesquisa sobre a média salarial de profissionais de TI nas cidades de São Paulo/SP, Rio de Janeiro/RJ e Campinas/SP. Veja os dados da pesquisa no link:
http://olhardigital.uol.com.br/negocios/digital_news/noticias/saiba_quanto_ganham_os_profissionais_de_ti_em_sp_rj_e_campinas

Layout para Dispositivos Móveis

Resumo:
celular acessando a web
Introdução

A web tem mudado muito nos últimos anos. Antigamente, a resolução mais indicada para desenvolvimento de sites era 800x600. Muitos sites optavam por um layout de largura fixa de aproximadamente 780px e deixavam margens desocupadas nas laterais. Com o tempo, a resolução dos computadores pessoais e notebooks foi aumentando, passou para 1024x768. Recentemente, é comum utilizar uma resolução acima de 1024x768.

Por outro lado, um outro mercado tem cada vez mais se conectado à web: o mercado de dispositivos móveis de pequeno porte. Este mercado inclui celulares, smartphones, ipads, tablets, etc. Alguns destes dispositivos tem uma resolução compatível com um notebook (por exemplo, os tablets), mas outros tem resoluções muito pequenas. Neste cenário, o desenvolvimento web precisa de uma outra atenção para atender a um público ainda maior.

Acesso do Apache a outras partições

Resumo:
Quadro sobre os índios apache

Ontem me deparei com um problema que eu nunca tinha visto antes. Instalei o Apache no Fedora 14 (Linux), que vem configurado para utilizar o diretório "/var/www/html" como repositório de sites, mas ele não estava conseguindo acessar arquivos/diretórios em outras partições.

Search Engine Optimization (SEO)

Resumo:
search engine optimization
Introdução

Search Engine Optimization (Otimização para Mecanismos de Busca) ou simplesmente SEO é um termo que tem aparecido cada vez mais vezes no meio tecnológico e dos negócios. Na atual "Era da Informação" e pelo atual nível de globalização, ter visibilidade digital (entre outras) tem grande importância econômica. A visibilidade digital é conquistada de diferentes formas e este artigo apresenta algumas delas, explicando o conceito de SEO.

Percorrendo elementos de um HTML com PHP

Resumo:

Muitas vezes vi programadores perguntando como se faz para um script PHP obter os links de um documento HTML (obter os links de uma página) ou então as imagens (obter as imagens de uma página) ou outro elemento qualquer. Este artigo mostra como percorrer elementos de um documento HTML e capturá-los de acordo com seu nome ou atributo. Para tanto, é utilizada a extensão DOM.

Obtendo dados do Navegador pelo User Agent ID usando PHP

Resumo:
Introdução

A arquitetura de aplicações Web define que o documento gerado dinamicamente no servidor seja renderizado através de um programa (navegador Web ou "browser") no computador cliente. Normalmente são utilizadas as linguagens HTML e CSS para geração do documento. No entanto, existem vários navegadores disponíveis no mercado, cada um com características próprias e com um motor (engine) de renderização específico, que procura (ou não) seguir as especificações da W3C a respeito das linguagens citadas, e manter um certo "padrão de qualidade" do resultado visual.

Diante das diferenças entre os motores de renderização, pode ser útil detectar qual deles o cliente está usando para, talvez, aplicar alguns ajustes no layout, seja para torná-lo mais atrativo, seja para contornar algum bug no motor de renderização.

Neste artigo, veremos como detectar qual programa está acessando o sistema e, a partir disso, conseguir ajustar o layout de acordo com este valor detectado, ou oferecer o download de um programa para uma plataforma específica, ou simplesmente gerar estatísticas sobre os programas usados por quem acessa o sistema.

Google Web Fonts

Dica rápida: o Google Web Fonts permite utilizar algumas fontes estilizadas com facilidade no seu site. Basta seguir estes passos:

  1. procurar uma fonte no site Google Web Fonts,
  2. clicar sobre uma fonte,
  3. clicar sobre "Use this font",
  4. copiar a tag <link> para dentro do <head> da sua página e
  5. aplicar a diretiva font-family sobre os elementos desejados via CSS.

Obtendo dados de tabelas, colunas e relacionamentos no PostgreSQL

Resumo:
Elefante
Introdução

No post anterior, vimos como consultar informações sobre tabelas, colunas e relacionamentos em bancos de dados MySQL. Neste post serão apresentados os recursos correspondentes no banco de dados PostgreSQL.

Diferente do MySQL, o PostgreSQL não possui um banco de dados reservado chamado information_schema. Ao invés disso, possui algumas tabelas reservadas prefixadas por "pg_".

Obtendo dados de tabelas, colunas e relacionamentos no MySQL

Resumo:
Golfinho
Introdução

Ao desenvolver um framework ou um sistema que possui uma "porta dos fundos" para o BD, onde é possível acessar a base de dados diretamente através de uma interface genérica, podemos precisar obter informações sobre as tabelas, colunas, relacionamentos, etc. No MySQL, estas informações ficam em um banco reservado chamado information_schema, que possui diversas VIEWS para consulta de dados.

Este artigo apresenta algumas SQLs úteis para se obter informações a respeito de tabelas, colunas, índices, chaves e relacionamentos entre tabelas, no SGBD MySQL.