- Bom dia, posso falar com o programador?
- É ele falando.
- Oi, o sistema de vocês tá fora do ar.
- Tá?
- Sim, eu tou tentando acessar e não consigo.
- Peraí que eu vou ver.
- E nem vem dizer que é a minha internet. Todos os outros sites acessam, menos o do sistema de vocês.
- Então me faz um favor. Tenta encostar a sua língua no seu cotovelo.
- Como?
- Tenta encostar a língua no cotovelo, oras.
- Tá de brincadeira comigo, né?
- Claro que não. Só preciso fazer um teste.
- Não dá. Não consigo.
- Tá, agora faz o seguinte. Pede pra um colega fazer isso.
- O quê? Pedir pra alguém lamber meu cotovelo? Tá doido é?
- Não é pra lamber. É só pra encostar a língua. Na verdade nem precisa encostar, é só pra ver se alguém consegue encostar.
- Pedi pro Jorge e ele disse que conseguiria, se não fosse nojento. E agora?
- Tu não consegue encostar a língua no cotovelo, e não consegue acessar o sistema. Se isso não significa que o teu cotovelo está fora do ar, então o sistema também não está fora do ar.
(na minha cabeça, isso ficou engraçado)
quinta-feira, 27 de fevereiro de 2014
segunda-feira, 24 de fevereiro de 2014
Procurando e substituindo um texto por outro, em vários arquivos, via shell
sudo find /home/usuario -name \*.php -exec sed -i "s/valorantigo/novovalor/g" {} \;
Fonte: http://askubuntu.com/questions/84007/find-and-replace-text-within-multiple-files
sexta-feira, 21 de fevereiro de 2014
Utilizando o encurtador de url do Google com php
Primeiro, precisamos do cliente da api do google em php, no seguinte link:
https://github.com/google/google-api-php-client
Incluímos a biblioteca e instanciamos a classe, assim:
Após isso, é só acessar as propriedades do objeto $shorUrl pra pegar o link encurtado. Não lembro agora quais são, mas um var_dump nesse objeto resolve.
Também precisa ter uma conta no Google Developers, pra pegar a chave de autenticação.
https://github.com/google/google-api-php-client
Incluímos a biblioteca e instanciamos a classe, assim:
set_include_path(get_include_path() . PATH_SEPARATOR . '/home/ferramen/public_html/src');
require_once 'Google/Client.php';
require_once 'Google/Service/Urlshortener.php';
$client = new Google_Client();
$client->setApplicationName("API Project");//nome do seu projeto
$client->setDeveloperKey("sua_developer_key");sua chave de autenticação no google developer
$service = new Google_Service_Urlshortener($client);
$url = new Google_Service_Urlshortener_Url();
$url->longUrl = $link; //$link contém a url original
$shortUrl = $service->url->insert($url);
Após isso, é só acessar as propriedades do objeto $shorUrl pra pegar o link encurtado. Não lembro agora quais são, mas um var_dump nesse objeto resolve.
Também precisa ter uma conta no Google Developers, pra pegar a chave de autenticação.
sexta-feira, 31 de janeiro de 2014
Redirecionando de um domínio para outro e mantendo os parâmetros na url
Com .htaccess, obviamente.
RewriteEngine On
RewriteCond %{SCRIPT_FILENAME} !-f
RewriteCond %{SCRIPT_FILENAME} !-d
RewriteRule ^(.*)$ http://novodominio.com/$1 [QSA]
terça-feira, 21 de janeiro de 2014
Exportando um ou mais registros no MySql com mysqldump
Ás vezes a gente precisa exportar só um registro de uma tabela.
Dá pra fazer assim:
Só pra lembrar: o parâmetro -p recebe a senha 'colada' nele, por exemplo, se a senha for 'estrogonofe', fica assim:
E no final, onde tem '~/insert.sql', é onde vai ser gerado o arquivo com o comando sql pra dar o insert no banco.
Dá pra fazer assim:
mysqldump -t -u usuario -psenha banco tabela --where=id_tabela=666 > ~/insert.sql
Só pra lembrar: o parâmetro -p recebe a senha 'colada' nele, por exemplo, se a senha for 'estrogonofe', fica assim:
mysqldump -t -u usuario -pestrogonofe banco tabela --where=id_tabela=666 > ~/insert.sql
E no final, onde tem '~/insert.sql', é onde vai ser gerado o arquivo com o comando sql pra dar o insert no banco.
quarta-feira, 18 de dezembro de 2013
Trocando o wallpaper do Windows usando linha de comando
Ingredientes: Irfanview, uma pasta com imagens, e Windows.
1 - Instale o Irfanview. Talvez precise instalar o Windows antes.
2 - Crie um arquivo com a extensão .bat, com o conteúdo abaixo:
4 - Crie outro arquivo .bat, com o conteúdo abaixo. Esse arquivo é quem dá o comando pro Irfanview trocar a imagem:
Happy festivus!
1 - Instale o Irfanview. Talvez precise instalar o Windows antes.
2 - Crie um arquivo com a extensão .bat, com o conteúdo abaixo:
dir D:\Wallpapers /s /b *.jpg > list.txt
3 - Execute este arquivo para gerar a lista de imagens.4 - Crie outro arquivo .bat, com o conteúdo abaixo. Esse arquivo é quem dá o comando pro Irfanview trocar a imagem:
i_view32.exe /filelist=D:\wallpapers\list.txt /random /wall=0 /killmesoftly
Happy festivus!
sexta-feira, 6 de dezembro de 2013
Plugin para 'zebrar' tabelas ou listas com jQuery
(function( $ ){
$.fn.zebrar = function(options) {
var defaults = {
'par' : 'lightgrey',
'impar' : 'white'
};
var settings = $.extend( {}, defaults, options );
return this.each(function(index,elemento) {
if((index % 2)==0)
{
$(this).css({ background: settings.par });
}else{
$(this).css({ background: settings.impar });
}
});
};
})( jQuery );
Utiliza assim:
<script src="js/zebrar.js"></script>
<script>
$(function(){
$('ul li').zebrar();
)
</script>
<style>
ul{
list-style-type:none;
padding:0;
margin:0;
}
ul li{
display:block;
}
</style>
<ul>
<li><a href="#">Nunc tincidunt</a></li>
<li><a href="#">Proin dolor</a></li>
<li><a href="#">Aenean lacinia</a></li>
</ul>
Também dá pra passar os parâmetros para as cores das linhas, assim:
$('ul li').zebrar({par:'blue',impar:'red'});
Nota: deixar de ser preguiçoso e usar o github pra códigos grandes.
terça-feira, 3 de dezembro de 2013
Verificando se a variável existe em javascript
Existem aproximadamente 362,57 jeitos diferentes de se verificar se uma variável em javascript existe ou não.
Esse é o que eu vou usar:
Pronto, agora não preciso mais pesquisar cada vez que precisar disso.
Esse é o que eu vou usar:
if (typeof variavel!== "undefined")
Pronto, agora não preciso mais pesquisar cada vez que precisar disso.
quinta-feira, 31 de outubro de 2013
Redirecionando o usuário para um subdomínio
No .htacces na pasta pública:
RewriteEngine on
RewriteCond %{HTTP_HOST} ^dominio.com [NC]
RewriteRule ^(.*)$ http://www.dominio.com/$1 [R=301,L]
sexta-feira, 18 de outubro de 2013
Avisar se o usuário esqueceu de gravar o formulário
Primeiro, criamos uma variável:
No evento change de qualquer elemento, alteramos essa variável, para sabermos que o usuário mexeu no formulário:
Depois, no evento beforeunload da janela, precisamos ver se a variável foi alterada.
Se sim, damos o alerta, perguntando se ele quer mesmo sair.
Ah, quando o usuário envia o formulário, precisamos setar a variável como true, para que não apareça o alerta.
Se tu tiver usando o jquery validation, fica assim:
var alguem_mexeu_no_meu_queijo = false;
No evento change de qualquer elemento, alteramos essa variável, para sabermos que o usuário mexeu no formulário:
$('select, input, textarea').change(function(){
alguem_mexeu_no_meu_queijo = true;
});
Depois, no evento beforeunload da janela, precisamos ver se a variável foi alterada.
Se sim, damos o alerta, perguntando se ele quer mesmo sair.
window.onbeforeunload = function(){
if(alguem_mexeu_no_meu_queijo==true)
{
return 'Alguém mexeu no meu queijo.';
}
}
Ah, quando o usuário envia o formulário, precisamos setar a variável como true, para que não apareça o alerta.
Se tu tiver usando o jquery validation, fica assim:
$('#form').validate({ , submitHandler: function(form) {alguem_mexeu_no_meu_queijo= false; form.submit(); } });
quinta-feira, 17 de outubro de 2013
Aumentando o tamanho do array _POST
No .htaccess, assim:
php_value max_input_vars 3000
Claro que o jeito certo é não deixar um formulário com 1000 inputs, que é o valor padrão, mas é mais fácil fazer isso do que revisar mais scripts jurássicos feitos por terceiros e quartos.
php_value max_input_vars 3000
Claro que o jeito certo é não deixar um formulário com 1000 inputs, que é o valor padrão, mas é mais fácil fazer isso do que revisar mais scripts jurássicos feitos por terceiros e quartos.
sexta-feira, 11 de outubro de 2013
Relógio em javascript
Um pequeno relógio em javascript:
<form name="crono" style="margin:0px;">
<input id="relogio" width="30" />
<script language="JavaScript">
var data = new Date();
function data_inicial(ano,mes,dia,hora,minuto,segundo){
data.setFullYear(ano)
data.setMonth(mes-1)
data.setDate(dia)
data.setHours(hora)
data.setMinutes(minuto)
data.setSeconds(segundo)
}
function zeros(number) {
if (number < 10) {
number = ("0"+number);
}
return number;
}
function Relogio() {
var formato = zeros(data.getDate())+'/'+zeros(data.getMonth()+1)+'/'+zeros(data.getFullYear())+' '+zeros(data.getHours())+':'+zeros(data.getMinutes())+':'+zeros(data.getSeconds());
data.setSeconds(data.getSeconds()+1)
document.getElementById('relogio').value = formato;
setTimeout("Relogio()",1000);
}
data_inicial(2013, 09, 12, 15, 09, 05); //comente para começar com a data atual
Relogio();
</script>
</form>
Utilizando jquery-ui tabs + jquery validation plugin
Quando o plugin encontra um elemento com erro, o elemento automaticamente ganha foco.
Mas quando o elemento está em uma aba que não está habilitada no momento, não acontece nada.
Pra que o elemento ganhe foco e a aba passe a ser a ativa, segue a função:
Mas quando o elemento está em uma aba que não está habilitada no momento, não acontece nada.
Pra que o elemento ganhe foco e a aba passe a ser a ativa, segue a função:
$('#formulario').validate({
ignore: "",//para validar os elementos que estão nas abas desabilitadas
highlight: function(element, errorClass, validClass) {
var div = $(element).parents('.ui-tabs-panel').attr('id');//encontra a div em que está o elemento inválido
var index = $('#tabs ul li a').index($('a[href="#'+div+'"]')); //encontra o indice nos links
$("#tabs").tabs( "option", "active", index ); //seta a aba como ativa
}
});
sexta-feira, 4 de outubro de 2013
Pegando o máximo de memória usada pelo script, em Mb, arredondando duas casas:
round((memory_get_peak_usage() / 1048576),2)
quinta-feira, 3 de outubro de 2013
Quando se usa o editor tinyMCE junto com o jquery.validate, acontece um problema que o usuário precisa clicar duas vezes no botão de salvar, por um motivo que não lembro qual é.
Pra resolver isso, precisa chamar a função triggerSave no clique no botão de enviar, mais ou menos assim:
Pra resolver isso, precisa chamar a função triggerSave no clique no botão de enviar, mais ou menos assim:
$('button.salvar').click(function(){
if (tinyMCE) tinyMCE.triggerSave();
});
terça-feira, 17 de setembro de 2013
Validando datas em pt-br com jQuery Validate
assim:
$.validator.addMethod(
"date",
function(value, element) {
var check = false;
var re = /^\d{1,2}\/\d{1,2}\/\d{4}$/;
if( re.test(value)){
var adata = value.split('/');
var gg = parseInt(adata[0],10);
var mm = parseInt(adata[1],10);
var aaaa = parseInt(adata[2],10);
var xdata = new Date(aaaa,mm-1,gg);
if ( ( xdata.getFullYear() == aaaa ) && ( xdata.getMonth () == mm - 1 ) && ( xdata.getDate() == gg ) )
check = true;
else
check = false;
} else
check = false;
return this.optional(element) || check;
},
"Insira uma data válida"
);
sexta-feira, 16 de agosto de 2013
Escrevendo a data e hora atuais do servidor
Mexer com datas e php parece ser uma arte, algo que poucos dominam.
Eu, por exemplo, não sou um deles. Mas eu vou tentando.
Primeiro, precisamos setar o locale do servidor para nosso querido idioma:
Se o servidor for windows, só pra variar, tem que ser de um jeito diferente:
Depois, usamos strftime pra escrever a data atual.
O resultado fica:
sexta-feira, 16 de agosto de 2013, 15:02
Eu, por exemplo, não sou um deles. Mas eu vou tentando.
Primeiro, precisamos setar o locale do servidor para nosso querido idioma:
setlocale(LC_ALL, 'pt_BR.utf8');
Se o servidor for windows, só pra variar, tem que ser de um jeito diferente:
setlocale(LC_ALL, 'ptb');
Depois, usamos strftime pra escrever a data atual.
echo strftime('%A, %d de %B de %Y, %H:%M');
O resultado fica:
sexta-feira, 16 de agosto de 2013, 15:02
segunda-feira, 15 de julho de 2013
Ou algo assim
Como todo mundo sabe, uma caipirinha se faz misturando limão, cachaça e gelo.
Se trocar a cachaça por vodca, a bebida muda pra 'caipiroska'.
Mas não deveria ser 'caipivodca'? Digo, de onde surgiu a 'roska'?
Talvez se a bebida fosse inventada pelo Paulinho Moska, poderia ser CaipiMoska, o que seria mais próximo de 'caipiroska' (e mais nojento também).
Se misturar saquê, fica 'caipisaquê'. Ou seja, qualquer porcaria que se misturar com limão e gelo, vira 'caipi'+algumacoisa. Logo, pepsi com limão seria 'caipsi', e com coca-cola, 'caipicoca' (ou 'caipicola').
Ou algo assim.
Se trocar a cachaça por vodca, a bebida muda pra 'caipiroska'.
Mas não deveria ser 'caipivodca'? Digo, de onde surgiu a 'roska'?
Talvez se a bebida fosse inventada pelo Paulinho Moska, poderia ser CaipiMoska, o que seria mais próximo de 'caipiroska' (e mais nojento também).
Se misturar saquê, fica 'caipisaquê'. Ou seja, qualquer porcaria que se misturar com limão e gelo, vira 'caipi'+algumacoisa. Logo, pepsi com limão seria 'caipsi', e com coca-cola, 'caipicoca' (ou 'caipicola').
Ou algo assim.
sexta-feira, 21 de junho de 2013
Setando cabeçalhos no Apache
Às vezes, o Internet Explorer decide ignorar os cookies em iframes.
Pra resolver isso, normalmente a gente seta os cabeçalhos p3p no php, assim:
Mas pra isso funcionar, o arquivo com esse comando deveria ser chamado em todo o sistema, o que em sistemas macarrônicos dificilmente acontece.
Nesse caso, usamos o .htaccess do Apache, na pasta mais acima que puder:
A resposta, para todas requisições abaixo da pasta que estiver o arquivo, sai assim:
Podemos, inclusive, setar nossos próprios cabeçalhos, pra, seilá, servir como um amuleto de boa sorte:
Pra resolver isso, normalmente a gente seta os cabeçalhos p3p no php, assim:
header('p3p: CP="IDC DSP COR CURa ADMa OUR IND PHY ONL COM STA"');
Mas pra isso funcionar, o arquivo com esse comando deveria ser chamado em todo o sistema, o que em sistemas macarrônicos dificilmente acontece.
Nesse caso, usamos o .htaccess do Apache, na pasta mais acima que puder:
Header set p3p 'CP="IDC DSP COR CURa ADMa OUR IND PHY ONL COM STA"'
A resposta, para todas requisições abaixo da pasta que estiver o arquivo, sai assim:
p3p:CP="IDC DSP COR CURa ADMa OUR IND PHY ONL COM STA"
Podemos, inclusive, setar nossos próprios cabeçalhos, pra, seilá, servir como um amuleto de boa sorte:
SecretNumbers:4, 8, 15, 16, 23 42
quarta-feira, 12 de junho de 2013
Trocando obrigatoriedade de campo com jQuery Validate
Temos um campo obrigatório e, ao lado dele, um checkbox que, se estiver marcado, faz com que o campo não seja obrigatório.
A regra fica assim:
A regra fica assim:
$("#form_cadastro").validate({
rules: {
senha: {
minlength:8
},
repetir_senha: {
equalTo: "#senha"
},
campo_obrigatorio: {
required: function(element) {
return $('#campo_checkbox:checked').length < 1
}
}
}
});
Assinar:
Postagens (Atom)