terça-feira, 4 de abril de 2017

Git pull bitbucket command line with password for cron jobs

O código:

git pull "http://[user]:[password]@bitbucket.org/[user]/[repo].git" master


hasta!

segunda-feira, 26 de outubro de 2015

MySQL Slugify

O CÓDIGO:

UPDATE `noticias_noticia`   SET slug = lower(titulo),
slug = replace(slug, '.', ' '),
slug = replace(slug,'ß','Ss'),
slug = replace(slug,'à','a'),
slug = replace(slug,'á','a'),
slug = replace(slug,'â','a'),
slug = replace(slug,'ã','a'),
slug = replace(slug,'ä','a'),
slug = replace(slug,'å','a'),
slug = replace(slug,'æ','a'),
slug = replace(slug,'ç','c'),
slug = replace(slug,'è','e'),
slug = replace(slug,'é','e'),
slug = replace(slug,'ê','e'),
slug = replace(slug,'ë','e'),
slug = replace(slug,'ì','i'),
slug = replace(slug,'í','i'),
slug = replace(slug,'î','i'),
slug = replace(slug,'ï','i'),
slug = replace(slug,'ð','o'),
slug = replace(slug,'ñ','n'),
slug = replace(slug,'ò','o'),
slug = replace(slug,'ó','o'),
slug = replace(slug,'ô','o'),
slug = replace(slug,'õ','o'),
slug = replace(slug,'ö','o'),
slug = replace(slug,'ø','o'),
slug = replace(slug,'ù','u'),
slug = replace(slug,'ú','u'),
slug = replace(slug,'û','u'),
slug = replace(slug,'ý','y'),
slug = replace(slug,'ý','y'),
slug = replace(slug,'þ','b'),
slug = replace(slug,'ÿ','y'),
slug = replace(slug,'ƒ','f'),
slug = replace(slug, 'œ', 'oe'),
slug = replace(slug, '€', 'euro'),
slug = replace(slug, '$', 'dollars'),
slug = replace(slug, '£', ''),
slug = replace(slug, '/', ''),
slug = replace(slug, ',', ''),
slug = replace(slug, ':', ''),
slug = replace(slug, '!', ''),
slug = replace(slug, '?', ''),
slug = replace(slug, '%', ''),
slug = replace(slug, '"', ''),
slug = replace(slug, "'", ''),
slug = replace(slug, '+', ''),
slug = replace(slug, '(', ''),
slug = replace(slug, ')', ''),
slug = replace(slug, '\\', ''),
slug = replace(slug, '“', ''),
slug = replace(slug, '”', ''),
slug = replace(slug, 'º', ''),
slug = replace(slug, 'ª', ''),
slug = trim(slug),
slug = replace(slug, ' ', '-'),
slug = replace(slug, '--', '-') ;

hasta!

terça-feira, 20 de outubro de 2015

Como corrigir charset de uma base latin1 quando importada para uma utf8

O CÓDIGO

Faça o dump:

mysqldump -u USER -p --opt --quote-names --skip-set-charset --default-character-set=latin1 DBNAME > dump.sql

Substitua os valores de USER e DBNAME de acordo com sua necessidade.

Importe para sua nova base UTF8:

mysql -u USER -p --default-character-set=utf8 DBNAME  < dump.sql

hasta!

segunda-feira, 5 de outubro de 2015

Instalando PHP, Django, MySQL em um Cloudpro na Locaweb com Ubuntu 12.04

Instalação do Apache com mod_wsgi:


aptitude search apache2
aptitude install apache2
ps aux | grep apache
sudo aptitude install libapache2-mod-wsgi
sudo service apache2 restart

Instalação do Virtualenv

apt-get install python-virtualenv

Instalação do MySQL

apt-get update
apt-get install mysql-client-core-5.5
apt-get install mysql-server
mysql -u root -p
ps aux | grep mysql

Instalação do PHP

apt-get update
aptitude install php5 libapache2-mod-php5
/etc/init.d/apache2 restart
mysql -u root -p
ps aux | grep mysql

Instalação do GIT

apt-get install git
ssh-keygen

Instalação do Django com VirtualENV

virtualenv --no-site-packages --unzip-setuptools ENV
pip install django

Instalação de um novo projeto em PHP

Copie o arquivo default  da pasta /etc/apache2/sites-available/ para o mesmo diretorio com o nome do seu projeto, no exemplo abaixo utilizaremos seudominio.com.br.  Depois abra com o editor de sua preferência e deixe como a seguir:



E para configurar um em Django, deixe como a seguir:



hasta!

quinta-feira, 27 de novembro de 2014

Preview imagem antes do upload sem distorcer na exibição

Requisitos: JQUERY HTML:

...
<input type="file" name="imagem_upload" id="id_foto">
<div id="img2"></div>
...


CSS:

 #img2 {
    width: 80px; height: 80px;
    background: url(imagem-padrao.jpg) no-repeat center center;
    background-size: cover;
    position: absolute;
    top: 50%; left: 50%;
    margin-left: -40px;
    margin-top: -40px;
    border-radius: 50%;
    border: 5px solid #fff;
    z-index: 1;
}


JAVASCRIPT:

$('#id_foto').live('change', function(){
 var input = document.getElementById("id_foto");
 var fReader = new FileReader();
 fReader.readAsDataURL(input.files[0]);
 fReader.onloadend = function(event){
  $("#img2").css('background', 'url('+event.target.result+') no-repeat center center');
  $("#img2").css('background-size', 'cover');
 }
});


sábado, 15 de novembro de 2014

Configurando Apache no OS Yosemite para funcionar LOCALHOST na pasta Sites

Abra o arquivo /etc/apache2/httpd.conf com o editor de sua preferencia:

sudo nano /etc/apache2/httpd.conf


E deixe como a seguir, configurando o caminho para seu suarios

DocumentRoot "/Users/myusername/Sites"

<Directory "/Users/myusername/Sites">

    Options Indexes FollowSymLinks Multiviews

    MultiviewsMatch Any

    AllowOverride All

</Directory>

Salve e reinicie o apache

sudo apachectl restart

Depois basta abrir o navegador e digitar http://localhost

hasta!

terça-feira, 22 de abril de 2014

Como adicionar ou atualizar algum parametro da querystring via javascript

Surgiu a seguinte necessidade: Tinha uns filtros que utilizavam o método GET para enviar os valores. Como tinha mais que um e precisava deles de forma cumulativa, como fazer para pegar os filtros pré enviados e mantê-los num novo filtro?

Precisei verificar se o parâmetro já estava enviado e atualizá-lo se sim, ou incluí-lo se não.


O CÓDIGO:


function UpdateQueryString(key, value, url) {
    if (!url) url = window.location.href;
    var re = new RegExp("([?&])" + key + "=.*?(&|#|$)(.*)", "gi");

    if (re.test(url)) {
        if (typeof value !== 'undefined' && value !== null)
            return url.replace(re, '$1' + key + "=" + value + '$2$3');
        else {
            var hash = url.split('#');
            url = hash[0].replace(re, '$1$3').replace(/(&|\?)$/, '');
            if (typeof hash[1] !== 'undefined' && hash[1] !== null)
                url += '#' + hash[1];
            return url;
        }
    }
    else {
        if (typeof value !== 'undefined' && value !== null) {
            var separator = url.indexOf('?') !== -1 ? '&' : '?',
                hash = url.split('#');
            url = hash[0] + separator + key + '=' + value;
            if (typeof hash[1] !== 'undefined' && hash[1] !== null)
                url += '#' + hash[1];
            return url;
        }
        else
            return url;
    }
}


O USO:

location.href = UpdateQueryString('seu_parametro',SEU_VALOR);


hasta!

terça-feira, 7 de janeiro de 2014

App de cidades e estados brasileiros

Vez ou outra é necessário cadastrar a cidade e o estado em um formulário de algum projeto, seja para cadastro de perfis, pedidos, etc.

Quando tem endereço envolvido ainda é mais fácil, pois existem diversos webservices que fornecem o nome da forma correta, como consta nos correios. O problema acontece quando desejamos apenas cidade e estado.

Sempre aparece alguns "espertinhos" (pra não dizer outra coisa), que escrevem sua cidade cada hora de um jeito, abreviando das mais diversas maneiras, e com isso, o banco fica uma bagunça quando precisa-se filtrar ou tirar um relatório baseado em cidades.

Por isso, resolvi montar um banco com base nas informações dispostas no site do IBGE (http://www.cidades.ibge.gov.br/xtras/home.php - atualizado em 2010) para ajudar com esta tarefa.

Espero que ajude outros programadores.

Segue o link: https://github.com/zejuniortdr/cidades-br

hasta!

Compartilhar um link com uma imagem específica no Facebook

Por que quando se compartilha um link no Facebook, este pega uma imagem aleatória do site? Bom, li em vários lugares dizendo que não é bem assim. Ele tem uma premissas que fazem a escolha das imagens.

Algumas que vi, envolvem passar alguns parâmetros por metatags. Contudo, não deu muito certo.

Então tem alguma forma de fazer isso de maneira direta? Como a antiga url sharer? Tem. Bom, mais ou menos.

Aqui vão os passos:

  • Em https://developers.facebook.com/apps, crie uma aplicação com nome e namespace.
  • Nos detalhes da APP pode colocar como Page Tab e preencher os dados. Mas acho que não tem necessidade. Eu usei pagetab, pois já serviu para outro propósito.
  • No seu site, adicione a classe 'fb-share' ao elemento que será seu botão para a ação de compartilhar o link no Facebook
  • Em algum lugar, junto com seus JS, coloque o código abaixo:
$('.fb-share').click(function(event) {
 /* Act on the event */
 var app_id = 'SUA_APP_ID_AQUI'
 var title = "SEU TITULO AQUI";
 var summary = "SUA DESCRICAO AQUI";
 var link = "http://www.LINK-DO-SEU-SITE-AQUI.com.br/";
 var image = link+"CAMINHO/DA/IMAGEM.png";
 var caption = "ASSINATURA DO SITE AQUI"
 var fb_share = 'https://www.facebook.com/dialog/feed?'+
      'app_id='+app_id+'&'+
      'link='+link+'&'+
      'picture='+image+'&'+
      'name='+title+'&'+
      'caption='+caption +'&'+
      'description='+summary+'&'+
      'redirect_uri='+link;
 window.open(fb_share);
});


  • Lembre-se de ao criar como pagetab, colocar os links iguais com relação a ter ou não a barra no fim, isso pode ocasionar um erro informando que a redirect_uri não pertente a aplicação.


terça-feira, 10 de setembro de 2013

Verificar se um elemento está na tela

Para verificar se um elemento já está em tela:

O Código:

function isScrolledIntoView(elem)

{

    var docViewTop = $(window).scrollTop();

    var docViewBottom = docViewTop + $(window).height();



    var elemTop = $(elem).offset().top;

    var elemBottom = elemTop + $(elem).height();



    return ((elemBottom <= docViewBottom) && (elemTop >= docViewTop));

}

Outra solução seria alterar o elemBottom para desconsiderar a altura e tratar o início da exibição do elemento em tela.

sexta-feira, 30 de agosto de 2013

Verificar um charset/mimetype de um arquivo

As vezes se faz necessário saber em qual charset e/ou mimetype está um determinado arquivo. Dentre os mais comuns charsets estão o UTF-8 e o Windows-1252.

Para verificar, basta executar o comando abaixo.

O Código:

file -bi arquivo.txt ou
file -i arquivo.txt


hasta!

quarta-feira, 7 de agosto de 2013

Executar algo depois do de uma imagem ter carregado

Imagine assim: 2 elementos na tela. Um sendo uma div com uma imagem de background e outro sendo outra div apenas com uma cor setada via css.

Quem carrega primeiro? A div de cor chapada lógico. Ela não precisa de uma imagem externa.

E se, por alguma razão, precisar que ela apareça depois do load da imagem na primeira div?

O CÓDIGO:

$('< img / >').attr('src', '/static/site/css/img/SUA_IMAGEM.png').load(function() {
    $('div.bg').css('background-image', 'url(/static/site/css/img/SUA_IMAGEM.png)');
    $('div.bg').show();
    // o que mais tiver que fazer
});

LEMBRE DE REMOVER OS ESPAÇOS DESNECESSÁRIOS NO PRIMEIRO SELETOR DA PRIMEIRA LINHA. 

 Coloquei com espaços pois senão o editor do blog some com os caracteres.

quarta-feira, 10 de julho de 2013

Alterar a cor e a opacidade dos placeholders no form via css

O Código:

::-webkit-input-placeholder { /* WebKit browsers */
    color: #999; opacity:1; filter:alpha(opacity=100);
}

:-moz-placeholder { /* Mozilla Firefox 4 to 18 */
    color: #999; opacity:1; filter:alpha(opacity=100);
}

::-moz-placeholder { /* Mozilla Firefox 19+ */
    color: #999; opacity:1; filter:alpha(opacity=100);
}
:-ms-input-placeholder { /* Internet Explorer 10+ */
    color: #999; opacity:1; filter:alpha(opacity=100);
}


hasta!

sexta-feira, 17 de maio de 2013

Como criar uma aba no Facebook e pegar os dados dos usuário no aplicativo

Extraído de: http://blog.hubspot.com/blog/tabid/6307/bid/26330/How-to-Create-Custom-Tabs-for-Facebook-Business-Pages.aspx

Passo 1: Faça login como Desenvolvedor

Faça login como desenvolvedor no Facebook em : https://developers.facebook.com/apps

Passo 2: Crie e nomeie seu novo aplicativo

Clique em "Criar um novo aplicativo" no canto superior esquerdo. Você precisa fornecer um "Display Name", que é como seu "app", ou guia, será chamado. Você também precisa criar um "namespace", que é basicamente apenas um ID único para o seu aplicativo.
create new facebook app

Passo 3: Escolha uma imagem e atualizar informações básicas para a App


Escolha uma imagem e um ícone para o seu guia personalizado. Lembre-se, isso vai exibir no topo da sua página do Facebook, então pense nisso como um call-to-action. Escolha uma imagem que vai receber seus visitantes ao clicar!

Atualize suas informações básicas com o nome de domínio e categoria. Você também pode fazer upload de uma imagem personalizada para o seu aplicativo, clicando em "ícone de edição."

basic info


Passo 4: Criar o conteúdo que será exibido dentro da aba do aplicativo


Agora crie uma página da web fora do Facebook. Isto é o que será exibido dentro de sua guia personalizado Facebook. Para garantir o conteúdo da página exibida corretamente no Facebook, certifique-se que a largura da sua página web esteja configurado para 100%, 520px ou 810px. Certifique-se de todas as imagens, vídeos, etc, que você incluir em sua página são menos do que qualquer 520px ou 810px, dependendo de quão grande você escolheu para fazer o conteúdo da sua guia.

facebook screenshot


Para se certificar de que todos podem ver o sua nova guia da página do Facebook, você também precisará fornecer uma URL segura. Esta deve ser a mesma URL que você forneceu para o separador de página, mas com "https://" em vez de "http://" na frente. Se o seu site não suporta https, o aplicativo ainda funciona para quem tem a navegação segura desativada em suas configurações do Facebook, mas você deve obter um certificado SSL. 

Salve as alterações que você fez para o app.


Passo 5: Diga Facebook o conteúdo que você deseja exibir no seu guia Personalizar


Volte para suas configurações de aplicativos em developers.facebook.com, desça até a opção "Selecionar como seu aplicativo se integra com Facebook" seção, e escolha "Page Tab",  nomeie do seu guia que você gostaria, então copie a URL da página que você criou no passo 4, e cole a URL em "Página Tab URL".


page tab


Para se certificar de que todos podem ver o sua nova guia da página do Facebook, você também precisará fornecer uma URL segura. Esta deve ser a mesma URL que você forneceu para o separador de página, mas com "https://" em vez de "http://" na frente. Se o seu site não suporta https, o aplicativo ainda funciona para quem tem navegação segura desativada em suas configurações do Facebook, mas você deve olhar para obter um certificado SSL.

Salve as alterações que você fez para o app.

Passo 6: Adicione o seu guia para sua página do Facebook 


Este passo pode ser um pouco complicado, então leia com atenção. Para instalar sua guia nova em sua página de negócios, você precisa visitar um link com vários parâmetros de URL personalizada. O link é: 

http://www.facebook.com/dialog/pagetab?app_id=YOUR_APP_ID&amp;next=YOUR_URL 

Você vai precisar de substituir os termos em negrito na URL acima. "YOUR_APP_ID" e "YOUR_URL" com algumas informações que o Facebook oferece para o seu aplicativo, o ID do seu aplicativo e a url do seu site.

facebook summary


Passo 7: Página que será renderizada na aba e channel file

Channel File

Crie um arquivo com o conteúdo abaixo que será utilizado na página da sua aba:

<?php

  $cache_expire = 60*60*24*365;
  header("Pragma: public");
  header("Cache-Control: maxage=".$cache_expire);
  header('Expires: '.gmdate('D, d M Y H:i:s', time()+$cache_expire).' GMT');
?>
<script src="//connect.facebook.net/en_US/all.js"></script>

Se não tiver trabalhando com php, pode criar um arquivo apenas com o script do facebook, o php acima serve apenas para controle de cache, ou pode fazer da forma que sua linguagem assim permitir.

Conteúdo da aba:

Na sua página que se hospedará externamente ao facebook, insira os códigos abaixo, subistituindo os devidos valores:

Antes de fechar a tag HEAD:

<meta property="og:title" content="TITULO" />
<meta property="og:url" content="<?=$url?>/" />
<meta property="og:type"        content="company" />
<meta property="og:site_name"   content="TITULO DO SITE" />
<meta property="og:description" content="DESCRICAO" />
<meta property="fb:app_id"      content="ID DO APLICATIVO" />
<meta property="og:image"       content="https://URL DA THUMB/thumb.jpg" />

Logo depois da abertura da tag BODY:

<!-- Facebook JS SDK -->
<div id="fb-root"></div>
<script>
 // Additional JS functions here
 window.fbAsyncInit = function() {
  FB.init({
    appId      : 'ID DO APLICATIVO', // App ID
    channelUrl : '//CHANNEL FILE', // Channel File ex: 'SEU SITE/channel.php'
    status     : true, // check login status
    cookie     : true, // enable cookies to allow the server to access the session
    xfbml      : true  // parse XFBML
  });

  // Additional init code here
  FB.getLoginStatus(function(response) {
   if (response.status === 'connected') {
    // connected
    //alert('usuario já autorizou a aplicacao');
    //console.log(JSON.stringify(response));

    FB.api('/me', function(response){
     //DADOS ESTARÃO TODOS NO RESPONSE
     // Ex:
     // NOME = response.name
    });

   } else if (response.status === 'not_authorized') {
    // not_authorized
    login();
   } else {
    // not_logged_in
    login();
   }
  });
 };

 function login() {
  FB.login(function(response) {
   if (response.authResponse) {
    // connected
    FB.api('/me', function(response) {
     location.reload();
    });
   } else {
    // cancelled
    //alert("Usuário Cancelou");
   }
  },{scope: 'email'});
 }

 function postToWall() {
  FB.login(function(response) {
    if (response.authResponse) {
   FB.ui({
    method: 'feed',
    name: 'NOME',
    link: 'LINK DO SEU APLICATIVO', // EX: https://www.facebook.com/SUA PAGINA/app_(ID DO APLICATIVO)';
    picture: 'URL DA FOTO DO POST',
    caption: 'LEGENDA',
    description: 'DESCRICAO/TEXTO DO POST'
   },
   function(response) {
     if (response && response.post_id) {
    //alert('Post was published.');
     } else {
    //alert('Post was not published.');
     }
   });
    } else {
   //alert('User cancelled login or did not fully authorize.');
    }
  }, {scope: 'publish_stream'});
  return false;
 }

 // Load the SDK Asynchronously
 (function(d){
  var js, id = 'facebook-jssdk', ref = d.getElementsByTagName('script')[0];
  if (d.getElementById(id)) {return;}
  js = d.createElement('script'); js.id = id; js.async = true;
  js.src = "//connect.facebook.net/en_US/all.js";
  ref.parentNode.insertBefore(js, ref);
 }(document));

Considerações:

  • O que acontece na verdade depois de tudo isso é que sua página será executada dentro de um iframe do facebook, e graças a isso, é possível fazer tudo que uma página normal faz: upload, persistência em banco de dados, ajax, etc.
  • O SSL se faz ncessário, pois caso não exista, apenas usuários que desabilitaram esta opção nas configurações do facebook poderão ver o aplicativo, sendo que muitos não fazem ideia de onde isso fica, e nem o que faz.
  • A função de login, solicita além dos dados publicos (nome, lista de amigos, etc) o eemail da pessoa. Para mais permissões, consulte https://developers.facebook.com/docs/reference/login/#permissions

segunda-feira, 29 de outubro de 2012

Renomear extensões de vários arquivos no Windows de uma vez

Crie um arquivo ".bat" com o seguinte conteúdo:

O CÓDIGO


cd CAMINHO_DA_SUA_PASTA
ren *.extensao_atual *.nova_extensao
pause

Execute o arquivo.

hasta!

sexta-feira, 26 de outubro de 2012

Bloquear a seleção de elementos no html

Algumas vezes se faz necessário o bloqueio da seleção dos elementos no html. Algumas vezes esses eventos acontecem sem querer, como o acontecido recentemente. Tinha uma esteira em que se o usuário clicasse 2x nas setas de navegação, como havia um bloqueio para mover 1 elemento por vez, o duplo clique não funcionava, logo todo o conteúdo era selecionado deixando aquele bloco azul de vídeo reverso.

Este caso ocorreu apenas nos testes realizados no Chrome 22 rodando no Windows.

Para resolver o problema basta adicionar o CSS abaixo em todos os elementos que não queira a seleção:

O CÓDIGO:

.seus-seletores{
        -moz-user-select: none;
        -khtml-user-select: none;
        -webkit-user-select: none;
        user-select: none;
}


hasta!

quinta-feira, 4 de outubro de 2012

Validar formulário quando Enter for pressionado

O Código:


$('input,select').keypress(function(e){
var code = (e.keyCode ? e.keyCode : e.which);
if(code == 13) { //Enter keycode
//Do something
$(this).parents('form').find('div.bt-enviar').trigger('click');
}
});


A Explicação:

Para todos os inputs e selects (fique livre para adicionar outros campos caso seu form os tenha), é criado um listener para capturar a tecla pressionada. Quando o keyCode  for igual a 13 (enter), chamará o evento definido no onclick do seu botão submit, no caso acima, é uma div com a classe bt-enviar.

terça-feira, 25 de setembro de 2012

MeioMask: Um Plugin JQuery muito útil para máscaras de campos


Para fazer máscaras para campos que possuem um padrão definido, como por exemplo cpf, telefone, cep, etc, utilizo este plugin para facilitar a vida.

Ele está disponível aqui:
https://github.com/zejuniortdr/jquery.meiomask.9digito

Depois de adicioná-lo em sua página, basta criar um arquivo de iniciliação como o a seguir:




 /* Mascaras pre-existentes*/
/*$.mask.masks : {
 'phone'     : { mask : '(99) 9999-9999' },
 'phone-us'  : { mask : '(999) 9999-9999' },
 'cpf'       : { mask : '999.999.999-99' },
 'cnpj'      : { mask : '99.999.999/9999-99' },
 'date'      : { mask : '39/19/9999' }, //uk date
 'date-us'   : { mask : '19/39/9999' },
 'cep'       : { mask : '99999-999' },
 'time'      : { mask : '29:69' },
 'cc'        : { mask : '9999 9999 9999 9999' }, //credit card mask
 'integer'   : { mask : '999.999.999.999', type : 'reverse' },
 'decimal'   : { mask : '99,999.999.999.999', type : 'reverse', defaultValue: '000' },
 'decimal-us'    : { mask : '99.999,999,999,999', type : 'reverse', defaultValue: '000' },
 'signed-decimal'    : { mask : '99,999.999.999.999', type : 'reverse', defaultValue : '+000' },
 'signed-decimal-us' : { mask : '99,999.999.999.999', type : 'reverse', defaultValue : '+000' }
}
*/

 /* Mascaras personalizadas */
$.mask.masks = $.extend($.mask.masks,{
    msk:{ mask: '999-999' },
    other_msk:{ mask: '6666' },
    another_one:{ mask: '7777' , type:'reverse' },
    dose:{ mask: '99'},
    termina_em:{ mask: '39/19/9999', autoTab:false },
    phone_9digito:{ mask: '(99) 99999-9999'}
});

(function($){
 $(function(){
  $('input:text').setMask();
  var ddds = ['11) 9','12) 9','13) 9','14) 9','15) 9','16) 9','17) 9','18) 9','19) 9','21) 9','22) 9','24) 9','27) 9','28) 9'];

  // SP 11 - 19
  // RJ 21,22,24
  // ES 27,28

  $('#id_telefone, #id_celular, #id_celular_validacao, #id_telefone').keydown(function(event) {
   if( procura_no_array($(this).val().substring(1,6), ddds) >= 0){
    $(this).attr('alt','phone_sp');
   }else{
    $(this).attr('alt','phone');
   }
   $(this).setMask();
  });
 });

})(jQuery);

No comentário acima, é possivel verificar alguns dos tipos disponíveis deste plugin, e se caso achar necessário pode-se criar novas máscaras como pode ser visto logo abaixo do bloco comentado. O init normal resume-se a apenas a instrução  $('input:text').setMask(); chamada no onload da página.

Com a nova norma da Anatel, os celulares de São Paulo receberam o número 9 a frente dos 8 dígitos já existentes, e uma personalização para tal foi necessária no plugin. No evento onkeypress de todos os campos telefones e celulares, caso o DDD tenha o nono dígito, será aplicado a máscara personalizada "phone_9digito", caso contrário a máscara normal de telefone ("phone") será aplicada.

Para aplicação de qualquer máscara em seus inputs, basta colocar a identificação da máscara no atributo alt do input. Como no exemplo abaixo:

<input alt="phone_9digito" class="input2" id="id_telefone" name="telefone" placeholder="Telefone" type="text" value="" />

quinta-feira, 23 de agosto de 2012

Atualizando campo datetime com valores aleatórios

Muitas vezes, principalmente durante testes na fase de desenvolvimento, é preciso gerar datas aleatórias para os registros que muitas vezes já estão no banco.

O CÓDIGO:

UPDATE artigos_artigo SET data =  FROM_UNIXTIME(RAND() * 2147483647)


hasta!

terça-feira, 14 de agosto de 2012

Somando/Subtraindo datas com DATE_ADD no MySQL

O CÓDIGO:

UPDATE perguntas_pergunta SET data_disparo = DATE_ADD(data_disparo,  INTERVAL 7 DAY);

Outros tipos de INTERVAL podem ser consultados em: http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html#function_date-add.

Para subtração de datas, basta utilizar um valor negativo do intervalo escolhido.

hasta!