Pois é. Hoje meu servidor ficou fora do ar. O motivo foi o servidor de banco de dados que caiu, assim nenhum site que usasse banco de dados, estava travado. Não abria. Retomando essa discussão, e se o servidor tivesse crashado geral e tivesse perdido tudo? Já era, né? Não é bem assim.
Abaixo estou compartilhando o meu código de backup que criei há um tempo atrás.
Nele é possível montar o backup do banco de dados e mandar por e-mail.
No meu caso, o mesmo executa 1 vez por dia. Mas fica a seu critério ao rodar o cron.
Dependências: phpmailer. Baixe aqui.
<?php
// aumenta a memoria e importa o mailer
ini_set("memory_limit","64M");
require 'class.phpmailer.php';
// gera backup
$nome = '/tmp/' . date('Ymd-Hi') . '.sql';
exec("mysqldump -u usuario --password='senha' --all-databases > {$nome}");
exec("gzip $nome");
$nome .= ".gz";
$tamanho = number_format(filesize($nome) / 1048576, 0);
$data = date('d/m/Y');
$m = new PHPMailer();
$m->SetFrom('emaildofrom@dominio.com', 'Backup do BD');
$m->AddAddress('destinatario@dominio.com', 'Nome do Destinatario');
$m->AddAttachment($nome);
$m->Subject = 'Backup de Banco de Dados Diario '.$data;
$m->MsgHTML(nl2br("Backup dos Bancos de Dados. \n Dia: {$data} \n Tipo: ANEXO \n Tamanho: {$tamanho}MB."));
// envio backup
if ($m->Send()) {
unlink($filename);
}
?>

Então é isso.
Fica a dica e até mais. Qualquer dúvida, podem comentar aqui abaixo.

Tags: , , ,

Está aí um macetinho para quem gosta de enviar newsletter via PHP

// conecta ao banco

$start = int($_GET['start']);
$sql = mysql_query("SELECT * FROM emails ORDER BY id LIMIT 10, $start");

while($i<10)
{
// manda os emails

// aqui você pode usar a função mail() para enviar. consulte: http://br2.php.net/manual/en/function.mail.php
}

$start_new = $start + 10;
header("Location: arquivo.php?start=$start_new");
Tags: , , ,

Montei este código agora há pouco e coloquei no github. Confira aqui o código do TDD completo.

Ele é um TDD do Coding Kata.

O TDD é um processo que consiste basicamente na programação como mostrado na imagem abaixo:

Fonte: http://blogs.msdn.com

Veja como ficou:

def slang(texto):
    """
    Autor: fzmaster
    Data: 26/12/2010
    Problema: Teleprompter

http://codingkata.org/katas/unit/teleprompter

    Substituir trecho da string por texto adequado
    """
    dict = {'babaca':'bacana', 'tosko':'feio', 'bosta':'beleza'}
    palavra = re.findall(r"\$.+\$", texto)
    try:
        dict.has_key(palavra[0][1:-1])
        reg = re.sub(r"\$.+\$",dict.get(palavra[0][1:-1]), texto, 1)
        return reg
    except :
        return 'Traducao nao encontrada'

Fica a dica pra poder ser utilizado em outros projetos similares.

Tags: , , , ,

Dados Serializados

Um assunto que gostaria de abordar hoje é a utilização de serialização dos dados. Podemos tirar muito proveito desta funcionalide nas linguagens de programação pois desta maneira, podemos intercomunicar os processos e obter melhores resultados com menos conflitos na própria linguagem.

[ad#entrenoticias]

O que são?

Há, basicamente, duas maneiras de se transmitir os dados, a saber: serial e paralelamente. Quando nós temos um HD e ele está ligado na placa-mãe por meio do flat-cable, os dados ali são enviados paralelamente (modelo IDE). Esta maneira é mais eficiente para se transmitir muitos dados. Outra forma é a chamada serial. Geralmente, tudo o que não está ligado internamente num computador, é ligado serialmente. Veja por exemplo a transmissão de dados entre um continente e outro. Temos cabos que passam por debaixo dos oceanos e os dados que trafegam são seriais.

E as LPs com isso?

Bom, quanto às linguagens de programação, nós temos um artifício com o qual conseguimos transformar um array, um objeto, uma string, um número, enfim, qualquer variável em apenas uma string (linha de texto).

Na prática!

Bom, vou mostrar aqui um exemplo do funcionamento deste recurso. Veja o trecho de código abaixo.

[php]

print_r($objeto);
$serializado = serialize($objeto);
print_r($serializado);
$desfaz = unserialize($serializado);
print_r($desfaz);

class minhaSessao {

var $title = ”;
var $conteudo = array();

function __construct(){
$this->title = ‘Meu título simples’;
$this->conteudo = array(1,2,3,4,5);
}

function getTitle(){
return $this->title;
}
}

[/php]

[ad#entrenoticias]

Agora, veja a saída gerada:

[php]
minhaSessao Object
(
[title] => Meu título simples
[conteudo] => Array
(
[0] => 1
[1] => 2
[2] => 3
[3] => 4
[4] => 5
)

)

O:11:"minhaSessao":2:{s:5:"title";s:18:"Meu título simples";s:8:"conteudo";a:5:{i:0;i:1;i:1;i:2;i:2;i:3;i:3;i:4;i:4;i:5;}}

minhaSessao Object
(
[title] => Meu título simples
[conteudo] => Array
(
[0] => 1
[1] => 2
[2] => 3
[3] => 4
[4] => 5
)

)
[/php]

Note que eu tinha um objeto, em seguida, transformei-o em uma string. E por fim, fiz essa string se transformar novamente no objeto original.
E com isso fica MUITO fácil para guardar dados no seu Banco de Dados.

Ok?
Dúvidas? Postem ai.
Abraço até a próxima.

Tags:

Pessoal, hoje comecei a mexer com o CKFinder na sua versão mais atual que é a 1.4.2.

Então resolvi dar uma lida no código e notei que o mesmo está bem consistente. Quando se executa o CKFinder ele exibe a mensagem de demonstação como abaixo:

Para resolver este problema, basta você trocar o arquivo ckfinder_gecko.js na pasta /aplicacao/ckfinder/code/js.

Neste caso fiz somente para a versão Gecko, mas tem também para a versão do IE.

Basta baixar o arquivo que acompanha este tópico e substituir. Pronto.

[ad#entrenoticias]

Um abraço.

Aguardo comentários.

Baixar agora.