Happy Festivus!
quinta-feira, 20 de dezembro de 2012
Debugando erros Episódio 1
Pra quando o script trava sem nenhum motivo aparente:
error_reporting(E_ALL);
ini_set('display_errors','on');
error_reporting(E_ALL);
ini_set('display_errors','on');
quarta-feira, 12 de dezembro de 2012
Como tornar uma imagem em preto-e-branco com css
Update: O cara que disponibilizou a classe que eu copiei, atualizou o código. Segue abaixo:
.imagem{
filter: url("data:image/svg+xml;utf8,<svg xmlns=\'http://www.w3.org/2000/svg\'><filter id=\'grayscale\'><feColorMatrix type=\'matrix\' values=\'0.3333 0.3333 0.3333 0 0 0.3333 0.3333 0.3333 0 0 0.3333 0.3333 0.3333 0 0 0 0 0 1 0\'/></filter></svg>#grayscale"); /* Firefox 10+ */
filter: gray; /* IE6-9 */
-webkit-filter: grayscale(100%); /* Chrome 19+ & Safari 6+ */
-webkit-transition: all .6s ease; /* Fade to color for Chrome and Safari */
-webkit-backface-visibility: hidden; /* Fix for transition flickering */
}
Só não funcionou no Safari nem no Opera...
..com a seguinte classe:
.imagem{
filter: url("data:image/svg+xml;utf8,<svg xmlns=\'http://www.w3.org/2000/svg\'><filter id=\'grayscale\'><feColorMatrix type=\'matrix\' values=\'0.3333 0.3333 0.3333 0 0 0.3333 0.3333 0.3333 0 0 0.3333 0.3333 0.3333 0 0 0 0 0 1 0\'/></filter></svg>#grayscale"); /* Firefox 10+, Firefox on Android */
filter: gray; /* IE6-9 */
-webkit-filter: grayscale(100%); /* Chrome 19+, Safari 6+, Safari 6+ iOS */
}
Fonte: http://www.karlhorky.com/2012/06/cross-browser-image-grayscale-with-css.html
terça-feira, 11 de dezembro de 2012
Select Case no Mysql
Simples:
SELECT id, nome, descricao,
CASE status
WHEN 1 THEN 'Aprovado'
WHEN 2 THEN 'Vencido'
WHEN 3 THEN 'Pendente'
WHEN 0 THEN 'Reprovado'
END AS status
FROM tabela
Fonte:http://talibamartins.wordpress.com/2007/09/20/if-e-case-no-mysql/
SELECT id, nome, descricao,
CASE status
WHEN 1 THEN 'Aprovado'
WHEN 2 THEN 'Vencido'
WHEN 3 THEN 'Pendente'
WHEN 0 THEN 'Reprovado'
END AS status
FROM tabela
Fonte:http://talibamartins.wordpress.com/2007/09/20/if-e-case-no-mysql/
sexta-feira, 7 de dezembro de 2012
Zero entre aspas
Só uma coisinha rápida, pra eu lembrar mais tarde, e pro caso de alguém precisar:
Tem um site que eu 'fiz' (na verdade, personalizei) em wordpress.
Pra gerenciar as galerias de fotos, eu instalei o Nextgen Gallery, que é um plugin pra isso.
O bom de mexer com wordpress, e com coisas que muita gente usa, é que tem milhares de blogs falando como se usa esses negócios. O ruim é que nenhum deles é o que eu quero fazer.
Eu queria era ter uma página chamada 'fotos', onde ia mostrar automaticamente todos os albuns de fotos cadastrados. Do jeito que todo mundo mostrava, tinha que entrar na página e dizer pra mostrar tal álbum. Mas eu não queria isso, queria um jeito de mostrar todos os albuns.
Bueno, eu dei uma olhada no código e achei o que eu queria. Ou seja, a resposta tava bem debaixo do meu nariz.
Ou pra ser mais específico, na frente. Porque eu não fico com o nariz em cima do monitor, e sim de frente pra ele. Mas enfim.
Nos outros blogs, aparecia sempre pra colocar assim no post:
[album=#]
onde # é o id do álbum que eu quero mostrar. Mas eu não queria mostrar um álbum, queria mostrar todos. Daí no código eu achei esse comentário:
// in the case somebody uses the '0', it should be 'all' to show all galleries
Quer dizer, se eu colocar '0' como id do álbum que eu quero mostrar, ele mostra todos.
E eu tava desde ontem à noite tentando descobrir como fazer isso...
sexta-feira, 20 de julho de 2012
Pegando a altura da tela de dentro de um iframe com jQuery
Estava mais uma vez brigando com iframes, tentando pegar a altura interna da janela.
Como já é de costume, não funcionou no ie - pegava sempre a altura do iframe sem considerar o tamanho do conteúdo.
A solução foi pegar a altura da primeira tabela (não é um layout tableless), assim:
jQuery('table:first').css('height')
quarta-feira, 6 de junho de 2012
Como interceptar o pressionamento de teclas do teclado
Com jQuery, óbvio.
jQuery("input").keypress(function(event){ if(event.keyCode=='13') { event.preventDefault(); } })
Nesse caso, está impedindo o pressionamento do Enter (keycode=13).
Caso precise descobrir o keycode das demais teclas, ao invés de procurar uma tabela poraí, é mais fácil assim:
jQuery("input").keypress(function(event){ console.log(event.keyCode) })
terça-feira, 22 de maio de 2012
Agrupar campos de formulários
Na verdade, não é bem agrupar, e sim colocar dentro de arrays, o que não deixa de ser um certo tipo de agrupamento.
Exemplo: temos esse formulário assim:
O retorno desse formulário vai sair assim:
Array ( [campos] => Array ( [campo1] => valor 1 [campo2] => valor 2 [campo3] => valor 3 [campo4] => valor 4 [campo5] => valor 5 ) )
Pena que não dá pra colocar mais sub-arrays, mas já é algo.
segunda-feira, 21 de maio de 2012
aprendi hoje que...
..tabelas do mysql aceitam nomes com até 64 caracteres.
Não sei porque eu sempre achei que era 32...
quarta-feira, 9 de maio de 2012
Apocalipse zumbi
.. é preciso muito menos do que um apocalipse zumbi para que as pessoas percam a noção de 'humanidade'.
Basta um metrô lotado pra isso.
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
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
Assinar:
Postagens (Atom)