Archive for abril, 2010

Desabafo de um Desenvolvedor Web

Vídeo hilário que faz uma caricatura do problema que os desenvolvedores têm com o design.


O que são Chaves Primárias e Índices?

Ambos atributos são características essenciais na maioria das tabelas. Da maneira mais simples possível, podemos dizer que:

Chave primária: É um atributo dado a um campo único na tabela. Esse campo servirá para identificar a determinada linha e não poderá ter valores repetidos.

Exemplo 1) Tabela “clientes” com os campos: nome_cliente, data_de_nascimento e cpf_cliente. O campo “cpf_cliente” pode ser definido como chave primária, pois não exitem duas pessoas com o mesmo CPF.

Você também pode gerar o valor da chave primária como auto-incremento.

Exemplo 2) Tabela “produtos” com os campos: idproduto, nome_produto, valor_produto. Poderíamos definir o campo “idproduto” como chave primária com auto-incremento, assim seria gerado um número diferente (automaticamente) para cada registro da tabela.

Índice: É um atributo para aumentar a velocidade na busca de uma tabela.

Exemplo 3) Tabela “cidades” com os campos idcidade,cidade e estado. No campo estado você permitira apenas a sigla do estado e o definiria como Índice. Dessa forma, toda vez que alguem fosse fazer uma busca por todas as cidades do estado, essa busca seria mais rápida.

Você define como índice o campo que você vai utilizar como parâmetro na busca, porém, é interessante que esses campos não tenham muitos caracteres, porque ao utilizar uma chave primária, o tamanho da tabela aumenta consideravelmente.

Use esse recurso com sabedoria. 🙂


Medindo a velocidade real do seu site

Existem várias ferramentas no mercado (muitas delas gratuitas) que podem fazer a medição da velocidade de carregamento do seu site. Mas a maioria delas tem um problema: utilizam a sua conexão para fazer essa medição.

Como a gente sabe, a internet no Brasil, na grande maioria das vezes não é a coisa mais perfeita do mundo, então essa medição pode sofrer interferências, informando um resultado não tão preciso.

Pra resolver esse problema surgiu o Pagetest. Com essa ferramenta você pode informar a URL do site que deseja medir o desempenho e ele te entregará um relatório com todos os dados da medição, pontos que você pode melhorar (compressão de imagens, compressão de texto, cache etc.) e o tempo de carregamento na primeira e na segunda vez que o site é visualizado.

Além disso existe uma opção de comparação visual que você pode fazer entre dois sites. Nessa comparação a ferramenta irá mostrar segundo a segundo o carregamento da página, através de screenshots (imagens do monitor) e você poderá ter uma outra perspectiva sobre o site.

Como se não bastasse, você ainda pode escolher entre alguns links localizados em lugares diferentes para que sua medição seja mais precisa, e se quizer, até definir a velocidade de download e upload desejada – o padrão é 1.5Mbps de download, mas você pode escolher uma velocidade inferior como 300Kbps por exemplo.


Melhorando o desempenho de um site com CSS Sprite

Quem já pesquisou sobre desempenho de sites sabe que existem muitas formas de melhorar, ou seja, tornar o carregamento mais rápido.

Um dos maiores vilões da velocidade de carregamento de um site é uma grande quantidade de arquivos a serem carregados. O navegador demora muito tempo para processar o conteúdo de um site quando existem muitos arquivos a serem baixados, sejam eles .js, .css, imagens etc.

Para resolver isso, é interessante juntar todos os CSS em um único arquivo, todos os JS (JavaScript) em um único arquivo, e por que não todas as imagens em apenas um arquivo? Sim! Isso é possível.

Diversos sites usam essa técnica (YouTube, por exemplo), e existem vários sites que podem criar um Sprite pra você. Um deles é o CSS Sprite Generator (spritegen.website-performance.org).

Nele você vai anexar todos os arquivos em um zip e mandar para o site. A princípio as opções padrão servirão para a maioria das pessoas.

O CSS Sprite Generator irá te fornecer um arquivo PNG de tamanho reduzido com todas as suas imagens mapeadas em um arquivo CSS, que você poderá utilizar no seu site.


Função em PHP que converte de minúscula para maiúscula (e vice-versa) sem perder acentos

Essa função resolve o problema da função nativa do PHP, que remove os acentos das palavras.

<?php

// $term = a string propriamente dita
// $tp = tipo da conversão: 1 para maiúsculas e 0 para minúsculas

function convertem($term, $tp) {

if ($tp == "1")
$palavra = strtr(strtoupper($term),"àáâãäåæçèéêëìíîïðñòóôõö÷øùüúþÿ","ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÜÚÞß");

elseif ($tp == "0")
$palavra = strtr(strtolower($term),"ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÜÚÞß","àáâãäåæçèéêëìíîïðñòóôõö÷øùüúþÿ");

return $palavra;

}

// Exemplo de Utilização - Maiúscula
$exemplo1 = "notícias";
echo convertem($exemplo1, 1);

// Exemplo de Utilização - Minúscula
$exemplo2 = "NOTÍCIAS";
echo convertem($exemplo2, 0);

?>

A História das Coisas

Pequeno documentário bastante didático (aúdio em português) que fala sobre consumismo, degradação ambiental, sustentabilidade etc.


Conectar ao PostgreSQL com o PHP e escolher um banco de dados

Diferente do MySQL, todas as informações são passadas em uma única string. Substitua servidor, banco_de_dados, usuario e senha por seus dados.
Veja como fazer:

$conexao = pg_connect("host=servidor dbname=banco_de_dados user=usuario password=senha") 
or die (pg_last_error());

URL’s Amigáveis com o mod_rewrite e PHP

Se você não sabe do que se trata, URL’s Amigáveis são usadas basicamente para deixar o endereço de uma página mais atraente, e também para melhorar o posicionamento do site nas buscas, já que os sistemas de busca utilizam as palavras contindas na URL para facilitar a busca.

Exemplo de URL Amigável:
http://tiagopassos.com/noticias/37/Carvao_alimenta_boa_parte_da_nuvem_da_Internet_diz_Greenpeace.htm

Funciona da seguinte forma (considerando que seu servidor suporta o mod_rewrite. Pergunta ao ser servidor de hospedagem se o mod_rewrite está habilitado no Apache):

Crie um arquivo chamado .htaccess (sem nome. Ele tem só a extensão .htaccess. Cuidado para não criar .htaccess.txt) e dentro dele coloque o seguinte:

RewriteEngine On
RewriteCond %{SCRIPT_FILENAME} !-f
RewriteCond %{SCRIPT_FILENAME} !-d
RewriteRule ^(.*)$ index.php?cod=$1

Envie o arquivo para a raiz do servidor ou para o diretório.

A partir de agora, se não exisitir um arquivo ou diretório no endereço que você digitar, ele enviará para a index.php. Na index.php você irá receber esses dados através da variavel $_GET[“cod”].

Exemplo:

Se o site tiagopassos.com estiver com o mod_rewrite habilitado na raiz do diretório e você digitar o endereço http://tagopassos.com/index.php, ele vai entrar na index.php (considerando que o arquivo existe). Se você digitar http://tiagopassos.com/contato ele vai enviar a variável $_GET[“cod”] = “contato” para o index. A partir daí, através de “ifs” e “elses” você exibe o que quer exibir.


Animação da comemoração de 5 anos do Firefox (2009)

O vídeo faz uma retrospectiva da história da internet desde o início do Firefox, e a forma como os dois vêm evoluindo.


Principais tipos de campos no MySQL

Muita gente tem dificuldade de escolher que campo usar para cada tipo de dado. Montei esse guia para facilitar o entendimento de quem tem dúvidas sobre isso.

Campos Numéricos
Alguns campos numéricos possuem a opção UNSIGNED. Isso quer dizer que o número não pode ser negativo. Por exemplo: o campo TINYINT com a opção UNSIGNED vai de 0 até 255, sem a opção UNSIGNED vai de -128 até 127.

A opção ZEROFILL completa o campo com zeros. Por exemplo: se você cadastrar ’65’ em um campo INT(5) – ou seja, inteiro com 5 dígitos – com a opção ZEROFILL habilitada, o MySQL irá cadastrar ‘00065’. Sem a opção ZEROFILL habilitada, o MySQL irá cadastrar ’65’.

  • TINYINT: Um número muito pequeno, de 0 até 255 (UNSIGNED) ou -128 até 127. Ocupa 1 byte.
  • SMALLINT: Um inteiro pequeno, de 0 a 65535 (UNSIGNED) ou -32768 até 32767. Ocupa 2 bytes.
  • MEDIUMINT: Um inteiro de tamanho médio, de 0 a 16777215 (UNSIGNED) ou -8388608 a 8388607. Ocupa 3 bytes.
  • INT ou INTEGER: Um inteiro de tamanho normal. De 0 a 4294967295 (UNSIGNED) ou -2147483648 a 2147483647. Ocupa 4 bytes.
  • BIGINT: Um inteiro grande. De 0 a 18446744073709551615 ou -9223372036854775808 a 9223372036854775807. Ocupa 8 bytes.
  • DECIMAL: Um número decimal. Para armazenar um valor monetário, por exemplo, você pode definir o tamanho dele como 8,2. Isso quer dizer que ele poderá ter 8 dígitos à esquerda da vírgula, e duas casas decimais à direita da vírgula. O campo é armazenado como string, então não deve ocorrer nenhuma perda de precisão (arredondamento).
  • DATE: Data no formato ‘AAAA-MM-DD’. Entre ‘1000-01-01’ e ‘9999-12-31’.
  • DATETIME: Combinação de data e hora no formato ‘AAAA-MM-DD HH:MM:SS’. Entre ‘1000-01-01 00:00:00’ e ‘9999-12-31 23:59:59’.
  • TIME: Hora no formato ‘HH:MM:SS’. A faixa é entre ‘-838:59:59’ e ‘838:59:59’.
  • YEAR: Ano com 2 ou 4 dígitos (padrão 4 dígitos).
  • ENUM: Uma enumeração. Exemplo de uso: você tem um campo chamado “ativo” que possui apenas duas opções (0 e 1). Pode ter até 65535 valores diferentes.

Campos String (texto)

  • VARCHAR: String com tamanho entre 1 e 255 caracteres.
  • CHAR: String com tamanho entre 1 e 255 caracteres. Para campos com tamanho fixo (CPF, CEP etc.) é mais vantagem usar o CHAR, porque ele ocupa um byte a menos que o VARCHAR. Por exemplo: você vai cadastrar o valor “abcde” em um campo CHAR(5), ele vai ocupar 5 bytes, se você cadastrar em um VARCHAR(5), ele vai ocupar 6 bytes, porém se você cadastrar o valor “ab” em um campo CHAR(5) ele vai ocupar os mesmos 5 bytes, e o VARCHAR(5) vai ocupar 3 bytes (1 byte a mais do que a quantidade de caracteres).
  • TINYTEXT ou TINYBLOB: String com até 255 bytes.
  • TEXT ou BLOB: String com até 65535 bytes ou 64KB.
  • MEDIUMTEXT ou MEDIUMBLOB: String com até 16777215 bytes ou 16MB.
  • LONGBLOB: String com até 4294967295 bytes ou (4GB).

  • Publicidade

  • Redes Sociais

    Facebook  Twitter
  • Estatísticas

    Page Views (desde março de 2010):

    Estatísticas detalhadas
  • Novidades por e-mail!

    Digite seu e-mail:


    Fique tranquilo. Seu e-mail não será usado para outros fins, e você poderá se descadastrar quando quizer.

    Eu!

    Tiago Passos
    Todo o conteúdo desse site esta licenciado sob a licença Creative Commons 3.0 (CC BY 3.0). Você pode copiar e modificar o conteúdo desde que cite o autor.
    iDream theme by Templates Next | Powered by WordPress