terça-feira, 21 de maio de 2013

Time is never on my side

Pegando uma data do banco, adicionando dias e retornando ela formatada:
 $vcto = new DateTime($item['data']);  //$item['data'] contém uma data no formato YYYY-MM-DD HH:mm:ss
 $vcto->modify('+1 month');  //período de tempo para adicionar
 echo $vcto->format('d/m/Y');  //escrevendo a data no formato d/m/Y

Não sei quem inventou que as datas tem que ser escritas com o ano na frente.
Acho que isso só faz sentido se o programador acabou de acordar de um coma de seilá, 5 anos, e a primeira coisa que ele fez foi consultar a hora no servidor usando a função NOW().

sexta-feira, 17 de maio de 2013

Dois jquery em um

Eu sempre esqueço como se utiliza a função append() do jQuery várias vezes seguidas, então lá vai:

 $('#senha')  
                .append(  
                     $('<li>').addClass('item')  
                     .append(  
                          $('<input>').attr({type:'password',name:'senha',id:'senha'})  
                     )  
                     .append(  
                          $('<label>').text('(preencha somente se quiser trocar)').addClass('obs')  
                     )  
                )  

Outra coisa,  é quando se cria um formulário de troca de senha.
Por padrão, o Chrome vai preencher o campo da senha automaticamente, mas nem sempre ele vai preencher o campo de repetir a senha.
Aí, pra não encher o saco do usuário, que teria que digitar a senha no campo de repetir-senha, a gente coloca um valor qualquer no campo de senha e no de repetir-senha:

 <input type="password" name="senha" id="senha" class="" value="$password" />  
 <input type="password" name="repetir_senha" id="repetir_senha" class="" value="$password" />  


Depois, com jQuery, a gente limpa o value desses campos. O detalhe é que não funciona se simplesmente fizer assim:

 $(document).ready(function(){  
      $('#senha,#repetir_senha').val('')  
 })  


Precisa dar um tempo após o evento ready, senão o Chrome vai perceber e o negócio não vai funcionar. Então, precisa usar o setTimeout, para dar um atraso na execução:
 $(document).ready(function(){  
      window.setTimeout("$('#senha,#repetir_senha').val('')",100);  
 })  

sábado, 11 de maio de 2013

História do Burrito

Nos tempos da revolução mexicana (1910 - 1921) no bairro da Bella Vista em Cd. Juarez, Chihuahua, México, havia um senhor de nome Juan Mendez que tinha uma barraquinha de comida típica mexicana perto do Rio Bravo. Esse rio separa a fronteira do México com os Estados Unidos. Do lado americano em El Paso, no bairro de Sunset Heights, viviam muitos mexicanos que haviam fugido da revolução. 

Algumas pessoas paravam à beira do Rio Bravo e conversavam com Juan. Perguntavam sobre as noticias da “Revolución” e elogiavam a sua comida. O cheiro da comida de Juan era tão gostoso que conseguia atravessar o longo rio.

Muitos mexicanos, saudosos da comida de sua terra natal, faziam encomendas a Juan. Para a comida não esfriar, ele teve a idéia de fazer tortillas de trigo grandes e colocar os recheios dentro dela (arroz, feijão, carne, etc.). Depois ele as enrolava em sacolas para mantê-las quentinhas. 

Os pedidos eram tantos que decidiu comprar um burro, pois só assim conseguiria cruzar o Rio Bravo. As comidas de Juan eram então transportadas nas costas do "burrito"

O sucesso foi tão grande que, com o tempo, começaram a chegar mexicanos e gringos de todas as partes do Texas perguntando pela comida do "burrito".
Foi assim que o invento de Juan Mendez cruzou a fronteira e encantou não somente seus conterrâneos, mas o mundo. 

sexta-feira, 3 de maio de 2013

ParseInt no Firefox

Tive problemas com o comando parseInt no firefox.
Algumas vezes ele não retornava o valor certo, mas  sim retornava 0.
Executando isso no console do Firebug, retornou algo estranho:

 console.log(parseInt('01'));  
 console.log(parseInt('02'));  
 console.log(parseInt('03'));  
 console.log(parseInt('04'));  
 console.log(parseInt('05'));  
 console.log(parseInt('06'));  
 console.log(parseInt('07'));  
 console.log(parseInt('08'));  
 console.log(parseInt('09'));  
 console.log(parseInt('010'));  

Retornou isso:
 1  
 2  
 3  
 4  
 5  
 6  
 7  
 0 //não deveria ser 8, 9 e 10?
 0  
 8  

Segundo essse link, isso acontece porque o navegador está retornando esse valor em base 8, e não base 10.
Pra resolver isso, precisamos dizer a ele pra usar base 10:
 console.log(parseInt('01','10'));  
 console.log(parseInt('02','10'));  
 console.log(parseInt('03','10'));  
 console.log(parseInt('04','10'));  
 console.log(parseInt('05','10'));  
 console.log(parseInt('06','10'));  
 console.log(parseInt('07','10'));  
 console.log(parseInt('08','10'));  
 console.log(parseInt('09','10'));  
 console.log(parseInt('010','10'));  


Que no fim vai  retornar:
 1  
 2  
 3  
 4  
 5  
 6  
 7  
 8  
 9  
 10