Lista de if em shellscript

Neste exemplo estou usando o comando test, mas pode ser com if também

test ­-r #Testa se tem permissão de leitura
test ­-w #Testa se tem permissão de escrita
test ­-x #Testa se tem permissão de execução
test ­-f #Testa se é um arquivo regular
test ­-d #Testa se é um diretório
test ­-u #Testa se seu SUID está ativado
test ­-g #Testa se seu SGID está ativado
test ­-s #Testa se seu tamanho é maior que zero

Exemplo:
Exibe o texto “ok” se o arquivo teste.txt possuir permissão de leitura:

test -r teste.txt && echo "ok"

Da pra usar os mesmos parametros usando IF:

if [ -r teste.txt ]; then echo "ok"; fi

Negação (exibe a mensagem se não tiver permissão de escrita):

test -r teste.txt || echo "nao ok"

Benchark Oracle vs MySQL

Estou estudando a tecnologia oracle, as soluções são realmente interessantes principalmente com “oracle rac”.

Algumas coisas impressionam, como por exemplo,  você está fazendo uma query usando um dos nós do cluster, se o servidor reboota, ou da algum problema, ele roteia automaticamente para o próximo nó e continua a query do ponto que parou, fizemos testes e de fato isso e real, a query para por alguns poucos segundos e depoi segue a execução normalmente.

Fiz um for simples em php para inserção de 10000 registros (sim tem maneiras melhor de inserir, mas era um teste simples) numa tabela chamada “teste” possuindo dois fields:
-> id int key  –> sem auto-increment
-> reg varchar(50)

Trecho do código que usei para o for (em oracle)

for($i=1;$i<=10000;$i++)
{
        $sql = "INSERT INTO country(id, pais) VALUES('".$i."', 'registro-".$i."')";
        $oracle->query($sql);
}

Trecho do código em php

for($i=1;$i<=10000;$i++)
{
        $sql = "INSERT INTO country(id, pais) VALUES('".$i."', 'registro-".$i."')";
        mysql_query($sql, $link);
}

utilizei a função time() do php para medir o timestamp inicial e final, a diferença deles é o tempo da operação em segundos.

Resultados:

–> inicio e fim são timestamp, tempo total em segundos
Oracle:
INICIO: 1316194690
FIM: 1316194729
Tempo Total: 39
Espaço ocupado: 500kb

MySQL INNODB:
INICIO: 1316194769
FIM: 1316194772
Tempo Total: 3
Espaço ocupado: 416Kb

MySQL MyISAM:
INICIO: 1316194854
FIM: 1316194857
Tempo Total: 3
Espaço ocupado: 336.99Kb

Conclusão:
Foi um teste muito simples para afirmar qual é o melhor, mas podemos ver que para operações simples, o mysql é quase 10 vezes mais rápido e ocupa menos espaço em disco.
Porém é fato sabido que o mysql perde performance na medida em que a quantidade de dados vai crescendo, já no oracle, quando isto acontece ele se mantem estável (com perda mínima, ou sem de performance).

Método para validar erros em expressões regulares

Em um determinado momento, tive a necessidade de efetuar validações em expressões regulares inseridas pelo usuário em textbox.

Abaixo segue método que eu utilizei para esta validação:

function validaRegex($regex, $escapar=false)
	{
		if($escapar) $regex = str_replace('/', '/', addslashes($regex));
		$teste = null;
		ini_set('track_errors', 1);
		$teste = @preg_match("/{$regex}/", "<a href="http://$1" target="_blank">[LINK]</a>", $teste);
		$ret = @strip_tags($php_errormsg);
		ini_set('track_errors', 0);
		$r = explode(':', $ret);
		return ($ret) ? array(false, trim($r[1])) : Array(true);
	}

Para explicar o funcionamento:
A variável $teste  (sim, faltou criatividade) recebe o resultado do preg_match, sendo que este recebe no primeiro parametro o valor digitado pelo usuário e o segundo parametro pode ser qualquer porcaria que vier em mente, já que o que nos interessa é se o regex do usuário tem erro ou não

O retorno é um array, sendo que a posição [0] retorna True ou False, e, havendo erro  no regex, a posição [1] retorna a mensagem de erro do php

———————————————-
Posted Listening: “Lights Out – UFO”