sábado, 23 de janeiro de 2010

O PHP e suas surpresas

Graças a um erro em uma função criada por mim, meu site estava com um bug constrangedor, pelo menos agora já está corrigido.

O problema da função que criei era que ela deveria retornar um array, mas, devido a um lapso momentâneo meu, ela estava retornando uma string. Acontece que o PHP considera uma string como um array de caracteres, mas até aí isso parece uma consideração bem lógica. Se você tem a varável $nome por exemplo, você pode acessar o primeiro caractere assim:

$nome = "Maria";
echo $nome[0]; // escreve M

Mas quando eu recebia o retorna da minha função eu não estava usando números inteiros como índice para acessar os valores do array (como usei o 0 no exemplo anterior). Eu usei strings como indices. Nestas horas que a tipagem fraca do PHP conjuntamente com uma inferência de tipos bem flexível mostra uma das desvantagens da plataforma (pelo menos para os mais desavisados como eu estava neste caso). O que você esperaria como saída no código abaixo:

$nome = "Maria";
echo $nome['valor']; //????

Bom, de acordo com a documentação do PHP, valores não inteiros usados como índice para strings são convertidos para inteiros. E o que o PHP faz quando tem que converter uma string como 'valor' (que não tem nada de número inteiro) para inteiro? Bem ele converte para 0 (zero). Silenciosamente ele converte um índice do tipo string para 0 do tipo inteiro. Assim o código assima exibe a mesma saída do código anterior a ele.

Isso não é um ataque ao PHP, o erro foi meu. Isso só serve para mostrar que você deve tomar bastante cuidado com estas conversões de tipo implícitas que o PHP faz.

segunda-feira, 18 de janeiro de 2010

Sem ideias então links!

Já faz um tempinho que não posto nada aqui, eu queria poder falar que isso é excesso de trabalho com meu site ou falta de tempo. Geralmente o primeiro leva ao segundo, mas este não é meu caso. Como não estou com uma boa ideia sobre o que escrever resolvi compartilhar alguns links que tenho de livros gratuitos ou livres sobre informática e computação. Será que sou somente eu que junta links e mais links de livros mas acaba não lendo quase nenhum? Se eu lesse 10% de todo o material que achei, exisitiria uma foto minha na Wikipedia no termo programação e eu seria considerado mais legal que o allien do reddit.
Tomara que vocês sejam menos preguiçosos do que eu, aí vai a lista.
  1. Acrobat Planet - De tudo um pouco.
  2. Stack Overflow - Várias sugestões postadas em uma questão do site.
  3. E-books directory - Muita coisa entre outras programação, algoritmos, estruturas de dados e até livros de matemática e engenharia.
  4. Meiobit - Um post no meiobit, os comentários tem muitos links também.
  5. Free IT Books - Tem até material sobre robótica.
  6. Python para Desenvolvedores - Para quem já sabe programar e quer aprender python em português.
  7. Free Computer Books - Este aqui pode esgotar seu hd.
  8. Reddit - Canal dentro do reddit, sempre estão adicionando alguma coisa.
  9. Bill the Lizard - Post deste blog com vários livros. O blog é bom também.
  10. Coderholic - Outro post de blog e nos comentários tem material extra.
Por enquanto é isso, eu nem postei tudo (eu sei, eu tenho vicío de guardar links), mas já deve ajudar alguém procurando aprender alguma coisa nova.