PHP, MySQL e UTF-8 (o guia)

Trabalhar com UTF-8 no PHP pode dar algumas dores de cabeça pra quem é novo, e até mesmo para alguns mais velhinhos… O PHP trabalha por padrão com ISO-8859-1, que são os caracteres latinos que estamos acostumados. Entretanto, o UTF-8 tem uma abrangência maior de caracteres e o ideal seria que nos acostumássemos a usar este charset nas páginas.
Este pequeno tutorial tem como objetivo deixar bem claro quais os passos a se tomar para construir uma aplicação totalmente baseada no charset UTF-8, desde as páginas HTML, passando pelo PHP e por fim no MySQL.
Antes de tudo, aconselho que aprenda a criar os seus arquivos utilizando o UTF-8 sem BOM, que evitará dores de cabeça futuras quando estiver trabalhando com cookies, sessões e headers.
O segundo passo é definir, no PHP que o charset dos arquivos que serão gerados terão a codificação UTF-8, com o seguinte código:
<?php
ini_set('default_charset','UTF-8');
?>

Só setar o charset no PHP não adianta muito, pois alguns navegadores usam a codificação padrão da região do usuário, a não ser que o seguinte código esteja entre as tags <head> e </head>:
<meta http-equiv="Content-type" content="text/html; charset=UTF-8" />
Com isso, você já pode trabalhar tranquilamente com UTF-8 e PHP sem ter problemas com os caracteres.
Alguns cuidados são necessários quando for trabalhar com o MySQL, entretanto. Vou ensinar como se faz pelo PHPMyAdmin, que acredito que todos que começaram a trabalhar com MySQL estão acostumados.
Em primeiro lugar, ao criar o seu banco de dados, já crie usando o collation utf8_general_ci. Se o banco de dados já tiver um collation definido, não é necessário definir o collation das tabelas, pois elas herdarão o do banco. Mas mesmo assim é bom especificar o charset e collation de cada tabela. Como? Assim:
CREATE TABLE Clientes (
id INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
nome VARCHAR(60) NOT NULL,
PRIMARY KEY(id)
)
TYPE=InnoDB CHARACTER SET utf8 COLLATE utf8_general_ci;

Ok. Nossa tabela está trabalhando com UTF-8 agora. Podemos começar a programar e relaxar porque nossos problemas com charset estão resolvidos, certo?
A resposta é não.
Se você continuar a programar com o sistema assim, os dados do banco serão inseridos e consultados de maneira correta, mas você vai perceber problemas quando tentar fazer buscas com palavras acentuadas insensível a maiúsculas, por exemplo: Água, água e agua serão palavras totalmente diferentes, sem contar que a ordenação de resultados com palavras que começam com letras acentuadas sairá bem bagunçada, coma letra Ó vindo antes de B, por exemplo.
Esse é o problema que eu tive e que demorei eras pra descobrir. O banco estava OK, o PHP também, o mesmo com as páginas HTML… e quando eu inseria algum dado pelo PHPMyAdmin, este era inserido corretamente, o que significava que o problema não era no banco e sim na aplicação.
Depois de meses na verdade foram apenas algumas horas de pesquisa, desconfiei que havia algo na conexão com o MySQL que estava dando esse problema. Fui fuçar no Manual do PHP e encontrei a seguinte solução:
<?php
ini_set('default_charset','UTF-8'); // Para o charset das páginas e
mysql_set_charset('utf8'); // para a conexão com o MySQL
?>

Com isso todos os meus problemas foram resolvidos. Na verdade não, pois tive que alterar todos os campos acentuados da tabela…
Dá para usar a função mysql_client_encoding para identificar o charset da conexão com o MySQL, mas não acho necessário pra quem quer trabalhar diretamente com UTF-8 e não com vários charsets.

Fonte:

http://alessandrosantos.com.br/?p=214

Visualizando partições

Trabalhando ou apenas visualizaro espaço livre da partição:

particionadores:

fdisk, cfdisk, sfdisk

Para ver lista de particoes:

# fdisk -l

Para ver o espaço livre das particoes montadas:

# df -h

Para ver o tamanho de uma pasta:

# du -sh /pasta

 

 

Se quiser formatar um disco:

Partindo do principio que o disco esta montado e energizado ele deve aparecer como /dev/sda, /dev/sdb ….

Então faça:

cfdisk /dev/sda

apague toda e qualquer particao que apareca e CRIE (new) uma nova, tipo 83 (linux).

gravar – (shift W, ou seja, W maiusculo)

mkfs.ext3 /dev/sda1

Pronto agora é só montar ela ou então incluir no fstab para montar toda vez que bootar

Bibliotecas php javascript e webs

Aprendendo java de verdade.

Alguns links para apoio na jornada Java:

Tutorial online muito bem feito e rapido:

http://www.dm.ufscar.br/~waldeck/curso/java/

*Obs: Não esqueça de olhar tambem o site principal com os projetos, sao muito interessantes!

Foruns e sites java no brasil.

Voce encontra muitas soluçoes desde o basico até as mais complexas:

http://www.guj.com.br

http://javafree.org

e logico:

www.vivaolinux.com.br

outros:

http://www.javawiki.com.br

http://www.java2s.com/Code/JavaAPI/CatalogJavaAPI.htm

Conexão com MySQL usando Java e JDBC

Para começar a usar mysql como banco de dados em suas aplicaçoes java, utilize driver para JDBC da mysql. Para auxiliar vai os links:

http://www.vivaolinux.com.br/artigo/Escrevendo-aplicacoes-com-MySQL-e-Java/?pagina=1

http://www.vivaolinux.com.br/dica/Conectando-Java-ao-MySQL-no-Ubuntu/?

http://www.guj.com.br/article.show.logic?id=7

Aprendendo Python

Para começar bem com Python:

http://www.async.com.br/projects/python/pnp/python.html

 

Erros comuns:

http://programeempython.blog.br/2013/07/confusoes-comuns-para-iniciantes-em.html

programeempython.blog.br/2013/08/erros-comuns-para-iniciantes-em-python.html

 

http://programeempython.blog.br/2012/10/interfaces-graficas-com-python.html

Python e QT4:

rra.etc.br/MyWorks/python/

Mais sobre python:

http://pythonclub.com.br/

http://www.nacaolivre.com.br/python/desenvolvendo-em-python/

bd sqlite:

http://pythonclub.com.br/gerenciando-banco-dados-sqlite3-python-parte1.html

 

Deletando arquivos pela extensão

Quando você tem uma grande quantidade de arquivos para fazer um backup o pouco tempo vale a pena excluir coisas indesejáveis que seus usuários tenham deixado nas pastas. Para isso podemos usar alguns comandos para encontrar e deletar arquivos por extensão ou ainda pelo próprio nome.

procurar arquivos com determinada estensão:

$ find /pasta -type f  ‘*.txt’

Você pode trocar o .txt por .mp3, .avi, etc.

Agora para executar o find e também o comando de remoção:

$ find /pasta -type f -name *.txt -exec rm -fv {} ;

O comando vai buscar todos os arquivos (-type f)  que nome contenha a extensão mp3 (-name “*.mp3”) e que a cada ocorrência encontrada deve ser executado o comando “rm -fv {nome do arquivo}”. As chaves no comando indicam para o find onde ele deve inserir o nome do arquivo em relação ao comando que está sendo executado, no nosso caso o rm, para apagar.

Daqui pra frente podemos fazer outras coisas, como deletar todos aqueles malditos arquivos “Thumbs.db” que ficam nas pastas de backups de usuários:

$ find /caminho/pasta -type f -name “Thumbs.db” -exec rm -fv {} ;

Ainda podemos usar ‘*.mp3’, ‘*.msi’, ‘*.exe’,  ‘*.EXE’, para dar aquela limpada no que os usuários andam armazenando a toa.

Caso seu backup ainda esteja grande podemos achar os arquivos de maior tamanho:

$ find /caminho/pasta -type f -size +10M

para arquivos com mais de 10 Mega Bytes.

e agora para arquivos maiores de 1GB:

$ find /caminho/pasta -type f -size +1000M

 

É muito util para agilizar o trabalho de backup!

Abraços!

 

Fontes:

http://www.zago.eti.br/find.html

http://www.vivaolinux.com.br/dica/Utilizando-o-find-para-excluir-determinados-arquivos

http://tocadoelfo.blogspot.com/2010/05/excluindo-arquivos-recursivamente-no.html

http://www.vivaolinux.com.br/script/Apagar-arquivos-recursivamente-de-um-diretorio-pela-extensao