quarta-feira, 25 de abril de 2012

Passando variáveis em requisições Ajax com Jquery


Aprendi um negócio esquisito em jQuery hoje.
Digamos que eu precise fazer a seguinte requisição:


$.get("test.php", { name: "John", time: "2pm" } );

Até aí tudo simples. Mas digamos que o nome esteja na variável name.



var name = 'john';
var time = '2pm';


A requisição ficaria assim:


$.get("test.php", { name:name, time:time } );


sexta-feira, 20 de abril de 2012

Coisas Chatas


Eis uma lista de coisas chatas:


  • Reggae;
  • Reggae em fones de ouvido;
  • Reggae em fones de ouvido de outra pessoa que não está na sala;
  • Posts em blogs abandonados sobre chatices

domingo, 15 de abril de 2012

Printf





$num = 3;
$location = 'tree';
$format = 'There are %d monkeys in the %s';
printf($format,$num,$location);


O comando printf recebe um formato de string, e variáveis que serão utilizadas para montar a string que será retornada.

Os caracteres % serão substituídos pelos parâmetros informados, na ordem em que forem aparecendo.

O exemplo acima retorna:

There are 3 monkeys in the tree

Caso os parâmetros não sejam informados na ordem em que eles precisam ser substituídos, precisamos informar qual é o parâmetro que será utilizado:


$format = 'The %2$s contains %1$d monkeys';
printf($format,$num,$location);


O exemplo acima retorna:

The tree contains 3 monkeys


Os tipos de formação são os seguintes:

%b - Binário

%d - Decimal

%f - Float

%o - Octal

%e - Notação Científica

%s - String



Sintaxe Heredoc


É utilizada para criar uma string. Ela se comporta como uma string entre aspas duplas, ou seja, o conteúdo de variáveis será exibido.
Demarcamos o início de uma string assim:


<<TESTE
para demarcar o fechamento, utilizamos exatamente o mesmo texto que foi informado na abertura, sem os caracteres <<<.

 

$array[] = '1';
$array[] = '2';

$string = <<<TESTE
teste de alguma coisa
em várias linhas
item do array: $array[0]
outro item do array: $array[1]
TESTE;


Resultado:

teste de alguma coisa em várias linhas item do array: 1 outro item do array: 2

quinta-feira, 5 de abril de 2012

Ashes against the grain


The god of man is a failure
Our fortress is burning against the grain of the shattered sky
Charred birds escape from the ruins and return as cascading blood
Dying bloodbirds pooling, feeding the flood
The god of man is a failure
And all of our shadows are ashes against the grain

segunda-feira, 26 de março de 2012

Pegando a imagem de um vídeo do Youtube


Outra coisa que precisei fazer hoje, foi pegar a miniatura de um vídeo do youtube. Consegui usando php e expressões regulares (viu como serviu pra algo o livro?):
 $embed = '';//código que o youtube disponibiliza. pode ser usado tanto o iframe quanto o embed antigo, com ou sem https.  
 preg_match('/http(s)?:\/\/www.youtube.com\/(v|embed)\/[a−zA−Z0−9]1,}/',$embed,$array_embed); //expressão regular pra pegar só o link e jogar no $array_embed  
 $id_youtube = end(explode('/',$array_embed[0]));//pega somente a última parte do link, que é o código do vídeo $preview_video = "http://img.youtube.com/vi/$id_youtube/0.jpg";//monta o link da imagem. Trocando o 0.jpg por 1 ou 2.jpg dá pra pegar as imagens em tamanhos diferentes.  

quarta-feira, 7 de março de 2012

Lista de Profissões em Mysql


Eu tinha uma lista de profissões em mysql, mas deu algum problema com o arquivo.
Então lá vai de novo, só que dessa vez em Xml:
Download


Segue também uma lista de modelos de automóveis, da tabela da Fipe, também em xml:
Download

sábado, 3 de março de 2012

Continue


O continue é semelhante ao break, com a diferença que o break interrompe a execução do laço (no caso, foreach), e o continue apenas pula a execução atual.

Exemplo:


$arr = array(1, 2, 3);
foreach($arr as $number) {
if($number == 2) {
continue;
}
print "$number,";
}

retorno:1,3,
Se trocássemos o continue por break, o retorno seria apenas 1.

Switch


O comando switch faz um teste e executa um bloco de código conforme o resultado deste teste. Utiliza-se o break para encerrar o bloco de código a ser executado. Caso nenhum dos testes seja verdadeiro, executa o bloco default. O bloco default não precisa do break.

Exemplo:


$teste = 3;
switch($teste){
case 1:
echo 1;
break;
case 2:
echo 2;
break;
default:
echo 0;
}


Do-while


O comando do-while é parecido com o while, com a diferença que o teste é feito após executar o bloco de comando.
Assim, no caso abaixo, o bloco é executado só uma vez, pois $i não é maior que zero.

Exemplo:


$i = 0;
do {
echo $i;
} while ($i > 0);



Utilizando o while, o bloco não seria executado nenhuma vez.


$i = 0;
while($i>0)
{
echo $i;
}


Operadores ternários


O operador ternário é formado por um teste ($v1==true), e duas opções. Caso o teste seja verdadeiro, será retornado a opção à esquerda. Caso seja falso, será retornado a opção à direita.

Exemplo:

$v1 = false;
$v2 = ($v1 == true) ? 'sim' : 'nao';
echo $v2;

retorno: nao

Operador Backtick


O conteúdo entre os acentos graves (não confundir com aspas simples) é executado como o comando shell_exec(), que executa um comando no console.

Exemplo:


$output = `ver`;
echo "<pre>$output</pre>";


/* retorno:
Microsoft Windows [versÆo 6.1.7601]

Operador Lógico XOR


O operador lógico XOR retorna verdadeiro se qualquer um dos valores testados for verdadeiro, mas retorna falso se ambos forem verdadeiros.

Exemplo:


$a = true;
$b = true;
if($a xor $b)
{
echo 'verdadeiro';
}else{
echo 'falso';
}


retorno: falso

List


O comando list cria variáveis com os nomes passadas como parâmetros, e as popula com os valores do array que também é passado.

Exemplo:


$info = array('Café', 'marrom', 'cafeína');
list($bebida, $cor, $substancia) = $info;
echo "$bebida é $cor e $substancia o faz especial.n";


Retorno: Café é marrom e cafeína o faz especial.

sexta-feira, 2 de março de 2012

Orelhodoria


Outro dia desses, tava no ônibus, quando vi passar um carro de uma empresa na rua. Nesse carro, tinha uma daquelas mensagens 'como estou dirigindo?', e o telefone para contato. No lado do telefone, tinha o nome do departamento responsável: Ouvidoria.

Fiquei pensando nesse nome, Ouvidoria. Acho que eles inventaram esse nome só pro pessoal se sentir bem (ou menos mal) trabalhando nesse setor, já que, a julgar pelo nome, o que eles fazem lá é ouvir as reclamações das pessoas o tempo todo.

Será que um digitador trabalharia no setor de Dedolodoria? Se bem que digitador não é realmente um emprego...

sexta-feira, 10 de fevereiro de 2012

Função para limpar texto em javascript


Ontem, precisei de uma função em javascript pra tirar acentos e caracteres especiais de textos, tipo essa que o wordpress faz quando vamos criar um novo post.
O problema não era só trocar os caracteres especiais por traços, e sim trocar as letras acentuadas pelas respectivas sem acentos. Acabei achando  nesse blog o que eu precisava pra fazer essa parte.
O resto foi com expressões regulares.
A função ficou assim:
function limpar(texto)
{
 texto = texto.replace(/^\s+|\s+$/g, "");//tira espaços do inicio e do fim
 texto = texto.replace(/\s{2,}/g, " ");//tira espaços duplicados
 
 replacements = {
  "[áãàäâª]": "a",
  "[éèëê]": "e",
  "[íìï]": "i",
  "[óòôõö]": "o",
  "[ùúûü]": "u",
  "[ç]": "c"
 };
 regex = {};
 for (key in replacements) {
   regex[key] = new RegExp(key, 'g');
 }

 for(key in replacements){
   texto = texto.replace(regex[key], replacements[key]);//tira caracteres acentuados
 }
 texto = texto.replace(/[^A-Za-z0-9]/g, "-");//tira caracteres especiais
 texto = texto.toLowerCase();//coloca em minusculo
 return texto;
}

Constantes Mágicas


São constantes definidas pelo PHP e que não podem ser alteradas. Algumas podem mudar conforme o lugar onde são utilizadas.

Exemplo:


__LINE__;//linha atual do script
__FILE__;//caminho completo e nome do arquivo.se utilizado dentro de um include, o nome do arquivo incluido será utilizado.
__DIR__;//pasta do arquivo
__FUNCTION__;//nome da função
__CLASS__;//nome da classe
__TRAIT__;//nome do trait (php 5.4.0)
__METHOD__;//nome do método da classe
__NAMESPACE__;//nome do namespace


quinta-feira, 15 de dezembro de 2011

Algumas funções do MySQL


Contar registros duplicados:


SELECT id_cliente, count(id_cliente) 
FROM  clientes 
GROUP BY id_cliente 
HAVING count( id_cliente) > 1


Mostrar conexões ativas:
SHOW PROCESSLIST;


Gerar sql para otimizar várias tabelas:
SELECT CONCAT('OPTIMIZE TABLE ',TABLE_NAME,'; ')AS tabela from information_schema.TABLES WHERE TABLE_SCHEMA = 'nome_do_bd’


Gerar sql para truncar várias tabelas:
SELECT concat('TRUNCATE ',TABLE_NAME,' ;') FROM information_schema.`TABLES` T WHERE TABLE_SCHEMA = 'nome_da_base'

Comando find_in_set, para quando precisar procurar um registro em uma lista de valores (similar ao IN(), mas passando uma string já formatada com as virgulas):

select id_cliente, Find_In_Set(id_cliente, '172,171,182,183') FROM clientes

Contar horas entre datas:
SELECT TIMEDIFF(STR_TO_DATE('19/01/2011 00:00:00', '%d/%m/%Y %H:%i:%s'),now());


Insert-update: 

REPLACE INTO acesso (login, ip, data_ultimo_acesso )VALUES ('login','192.168.0.1', now());


quarta-feira, 16 de novembro de 2011

War


When I thought that I fought this war alone

You were there by my side on the frontline

And we fought to believe the impossible

When I thought that I fought this war alone

We were one with our destinies entwined

When I thought that I fought without a cause

You gave me the reason why

quinta-feira, 10 de novembro de 2011

Att


Acho engraçado quando as pessoas colocam nas assinaturas de e-mail 'Atenciosamente'. Principalmente quando o e-mail enviado se trata de alguma reclamação, ou com erros de digitação. Isso é contraditório. Se a pessoa escreveu 'atenciosamente', como ela digita errado, trocando as letras? E como alguém reclama de algo 'atenciosamente'?

Sem contar quando abreviam, e colocam 'Att'. Isso mostra que a pessoa dedicou tanta atenção ao e-mail...

Uma coisa que eu sempre detestei foram mensagens de aviso de recebimento. Não aquelas que a gente configura pra receber um aviso de que leram o e-mail, mas sim aquelas que a pessoa que recebe envia automaticamente, normalmente com aviso de que ela tá de férias, ou que tá fora do escritório. Isso ficou particularmente irritante quando comecei a monitorar uma conta de e-mail usada pra enviar uma newsletter pra mais de 20 mil endereços, mas aí eu lembrei que também detesto newsletter, e pensei 'bem feito pra mim'.