segunda-feira, 23 de novembro de 2015

Primeira Lei da Probabilidade

"A probabilidade de que dois eventos ocorram nunca pode ser maior que a probabilidade de que cada evento ocorra individualmente".

Por que não? Aritmética simples:
Chance de A = Chance de A & B  + Chance de A - B


"Se os detalhes que recebemos se adequarem à imagem mental que temos de alguma coisa, então, quanto maior o número de detalhes numa situação, mais real ela parecerá, e, portanto, consideraremos que será mais provável - muito embora o ato de acrescentarmos qualquer detalhe do qual não tenhamos certeza a uma conjectura a torne menos provável."

terça-feira, 6 de outubro de 2015

Pulando campos (tabulando) ao pressionar Enter

Não sei quem foi o infeliz que teve a infeliz ideia de fazer isso desse jeito, mas por algum motivo infeliz, ainda tem gente que acha que, pressionando 'Enter', o cursor do infeliz deve pular para o próximo campo infeliz, ao invés de, alegremente, enviar o formulário atual.

Enfim.

 function navegarEnter(){  
   $(document).on('keypress', 'input,select,textarea', function(event){  
     if(event.keyCode === 13) {  
       $('input,select,textarea')[$('input,select,textarea').index(this)+1].focus();  
       event.preventDefault();  
     }  
   });  
 }  


Coloquei como função mesmo, porque deu preguiça de fazer um plugin.

quinta-feira, 6 de agosto de 2015

Utilizando scripts sh com parâmetros no Ubuntu

..provavelmente funciona em qualquer SO linux, mas enfim.

O exemplo abaixo é um script que recebe como parâmetro uma mensagem pra ser usada no commit do git.

 #!/bin/sh  
 MENSAGEM="$1"  
 cd /var/www/pastadoprojeto/  
 git add .  
 git commit -m "$MENSAGEM"  
 git push origin master   

Depois de dar um chmod +x, chama ele assim:

 ./script.sh mensagem do commit

quarta-feira, 5 de agosto de 2015

Escrevinhando a data em pt-br no mysql

Esta query é pra colocar o mysql em pt-br:
 SET lc_time_names = 'pt_BR';  

.. e essa outra, pra pegar a data:
 select date_format(now(), '%W, %d de %M de %Y')  

O resultado sai assim:

 quarta, 05 de agosto de 2015  

(na verdade, o resultado depende da data e hora atual, mas isso não é o importante)

quinta-feira, 23 de julho de 2015

Forçando o usuário a digitar em um campo com jQuery

É chato, mas às vezes é necessário.

 $('.campochato').on( "keydown contextmenu", function(event) {  
     switch(event.which){  
       case 3://botao direito  
       case 17://ctrl  
       case 86://ctrl+v  
         event.preventDefault();  
         break;  
     }  
   });  

O evento 'contextmenu' captura o clique no botão direito.

sexta-feira, 12 de junho de 2015

Procurando em um arquivo no shell

  grep 'palavras' arquivo > resultado.log  

Não esquecer de escapar os caracteres especiais:
  grep '192\.168\.0\.1' access_log > resultado.log  

terça-feira, 12 de maio de 2015

Teste de estudo para certificação

What the following code will print out?

 echo true ? 'a':true ? 'b' : 'c';  


//resposta: b
//a condição "true ? 'a':true" é avaliada como true
//e por isso retorna 'b', pois é a opção da esquerda

terça-feira, 31 de março de 2015

Time is Never on my side

Mais um problema com datas, dessa vez em javascript.

 var str = "05/04/2015 23:59";  
 var tmp = str.split(' ');  
 var data = tmp[0].split('/'); 
 
 var data_certa = new Date();  
 var data_errada = new Date();
  
 data[0] = parseInt(data[0]);  
 data[1] = parseInt(data[1]);  
 data[1] = data[1] -1;  
 data[2] = parseInt(data[2]);  

 data_certa.setFullYear(data[2]);  
 data_certa.setDate(data[0]);  
 data_certa.setMonth(data[1]);//setmonth deve vir depois de setdate  

 data_errada.setFullYear(data[2]);  
 data_errada.setMonth(data[1]);  
 data_errada.setDate(data[0]); 
 
 console.log(data_certa);  //Sun Apr 05 2015 12:33:04 GMT-0300 (BRT)
 console.warn(data_errada);  //Tue May 05 2015 12:33:04 GMT-0300 (BRT)


Por algum motivo, setMonth deve ser chamado depois de setDate, senão a data acaba indo parar no mês que vem.

Quem disse que a ordem dos fatores não altera o produto, não programava em javascript.

quarta-feira, 10 de dezembro de 2014

sexta-feira, 1 de agosto de 2014

Algumas regras para o htaccess

 #redirecionando para www  
 RewriteEngine on  
 RewriteCond %{HTTP_HOST} ^dominio.com.br [NC]  
 RewriteRule ^(.*)$ http://www.dominio.com.br/$1 [R=301,L] 
 
#habilitando compressao gzip no php  
 php_value output_handler ob_gzhandler 
 
#habilitando cache do apache  
 ExpiresActive On  
 ExpiresDefault A2419200  
 ExpiresByType image/x-icon A2419200  
 ExpiresByType application/x-javascript A2419200  
 ExpiresByType text/css A2419200  
 ExpiresByType text/html A518400 
 
#desabilitando cache para scripts com conteudo dinamico  
 <FilesMatch "\.(pl|php|cgi|spl|scgi|fcgi)$">  
 ExpiresActive Off  
 </FilesMatch> 
 
#habilitando rewrite para urls amigaveis  
 RewriteEngine On 
 
#enviando requisicoes ao dominio.com/sitemap para o arquivo gerador do sitemap  
 RewriteRule ^sitemap(.*)$ sitemap.php [L] 
 
#redirecionando todas as requisicoes para o index.php, que serve como main controller  
 RewriteCond %{SCRIPT_FILENAME} !-f  
 RewriteCond %{SCRIPT_FILENAME} !-d  
 RewriteRule ^(.*)$ index.php?cod=$1 [QSA] 
 
#habilitando CORS (cross site http requests)   
 <IfModule mod_headers.c>  
 Header set Access-Control-Allow-Origin "*"  
 </IfModule> 
 
#habilitando compressao do apache  
 <ifmodule mod_deflate.c>  
 AddOutputFilterByType DEFLATE text/text text/html text/plain text/xml text/css application/x-javascript application/javascript text/javascript  
 </ifmodule>  

Executando um comando como Root via php

Assim:

 <?php  
 $outPut = shell_exec("echo senha | sudo -S apt-get -y install openssh-server");  
 echo "<pre>$outPut</pre>";  
 ?>  

O detalhe é o 'echo' antes, pra enviar a senha pro sudo, e o -y, pra não pedir confirmação sobre a instalação.

quinta-feira, 27 de fevereiro de 2014

Contos Insuportáveis #001

- 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)

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:

 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]