Preencher número com zeros a esquerda no PHP

PHP - Logo

PHP – Logo

Tempos atrás trabalhei num projeto que precisava preencher um número com zeros a esquerda usando o PHP. Sabia que o PHP oferecia algo do tipo, pois trabalhei com isso na época da faculdade, o problema era lembrar a função, depois uma pequena pesquisa achei e vou deixar aqui como fazer.

Na explicação que digo é para transformar o número 42 em 00042. Note que o número 42 agora tem 5 caracteres e assim um número sequencial ou não. Claro que poderia jogado no banco de dados para preencher com zeros, porém exatamente nesse caso não era algo que ficava no banco de dados e sendo assim não tinha essa facilidade. Caso faça isso de usar direto do banco de dados tome cuidado somente com o valor que o PHP pega pois ele converte pra inteiro e perde todos os zeros e dai pode usar a função abaixo:

<?php

// Parametro 1: número desejado;
// Parametro 2: número de casas para preencher
// Parametro 3: preencher com o que? podemos colocar outras coisas caso queira 
// Parametro 3: qual direção preencher, caso nao informe será a direita, STR_PAD_LEFT é uma constante do PHP
echo str_pad( '42', 5, '0', STR_PAD_LEFT ); // imprime: 00042
    
?>

Espero que te ajude a lembrar sempre que precisar. Eu mesmo escrevi esse artigo para decorar, pois incrivelmente depois que usei nesse projeto que comentei precisei usar em outros mais algumas vezes. Rsrs.

Abraços.

Como remover click com botão direito usando jQuery?

jQuery - Logo

jQuery – javascript

Fala, galera “biita”. Então hoje venho mostrar uma dica ultra simples para quem precisa bloquear o click com o botão direito do mouse na página. Sinceramente, não sou fã de site que faz isso, porém o título do post é pra chamar a atenção, pois usando o jQuery você pode criar o seu próprio menu de contexto o que pode ser muito útil em alguns projetos. Vários sistemas online como o GMail fazem isso para facilitar a interação do usuário com o sistema e não precisar decorar teclas de atalhos, mas então vamos lá, veja como é simples:

$(document).ready(function(){

  	$(document).bind("contextmenu",function(e){
  		
  		// aqui voce chama o codigo que desejar

		return false;	
  	});
  	
});

Viu como é fácil? Dentro do código você pode executar seu próprio menu, verificando onde o usuário clicou e exibir as informações pertinentes para ele. Caso crie algo legal usando isso avisa nos comentários.

Espero que tenha lhe ajudado.

Abraços 😀

phpFastCache – Ferramenta de cache de dados em PHP

phpFastCache - Logo

phpFastCache – Logo

Você já pode ter precisado fazer cache de dados usando PHP, seja de templates de páginas ou informações especificas da sessão para uso posterior e de várias outras formas usamos o sistema de cache para tentar otimizar nossa aplicação. As vezes, até mesmo em sites precisamos recorrer a essa metodologia. Se você é um usuário de web framework php já deve ter usado isso de alguma, claro que usou a versão do próprio framework acredito eu. Quero oferecer uma alternativa para quando não estiver usando um framework.

Se você ainda conhece, teste o phpFastCache que é uma ferramenta de cache de dados com alta performance de forma genérica, ou seja, ele faz cache de dados que desejar, usando a melhor forma disponível em seu servidor. Ele seleciona por padrão a melhor forma de cache, porém você pode definir qual deseja usar, ele suporta Redis, APC, XCache, MemCache, MemCached, WinCache, Cookie e até mesmo em Arquivo se desejar.

Ele é uma ferramenta bem simples que pode usar até mesmo para otimizar API Request, veja abaixo um exemplo:

<?php
	// adicionar a classe do phpFastCache
    include("phpfastcache/phpfastcache.php");

    // define que vai usar o memcached para fazer os caches
    $cache = phpFastCache("memcached");

    // tenta pegar o cache, caso ja exista.
    $results = $cache->get("identity_keyword");

    // defina seu cURL parametros
    // $cURL = new cUrl;

    // verifica se ja tem cache senao pega novo cache
    if ($results == null) {
        $results = $cURL->get("http://www.youtube.com/api/json/url/keyword/page");
        // salva os dados pegos em cache para evitar ficar fazendo request toda fez
        $cache->set("identity_keyword", $results, 3600*24);
    }

    foreach($results as $video) {
        // aqui voce personaliza o que deseja fazer
    }
?>

Seu que o exemplo não é o melhor do mundo, porém já passa a ideia do que pode ser feito e como pode melhor o tempo de resposta de sua aplicação e até mesmo economizar dinheiro quando você usa API pagas que controlam o número de request. Sei que irá lhe fazer uma grande diferença no final do mês caso tenha muitos acessos desnecessários.

Veja mais sobre o phpFastCache em http://www.phpfastcache.com/ (inglês) ou em https://github.com/khoaofgod/phpfastcache

Espero muito ter lhe ajudado, como já ajudei alguns amigos com essa dica maneira

Abraços 😀

Comprimir imagens com o Trimage

Trimage - Logo

Trimage

Eu gosto muito de pensar em alguns detalhes quando estou desenvolvendo um projeto, pequeno ou grande. Claro, que não dá pra pensar em tudo, porém tento. Hoje quero sugerir o Trimage a todos que sempre precisaram comprimir imagens seja pra colocar em projetos de sites ou pra enviar por email uma imagem que antes tinha 15Mb que enviaram mas o email não aceita fazer upload de arquivos tao grandes.

Quem é usuário do MAC OS  já deve conhecer o ImageOptim, onde você arrasta a imagem e facilmente ela é comprimida. No entanto, como ficam os usuários de Linux? Pensando nisso criaram o Trimage que funcionar de forma muito similar. Claro que se você é um usuário linux pode dizer que já faz isso por linha de comando, sim, fique a vontade, mas acho muito mais prático clica e arrastar o que desejo comprimir. Infelizmente ainda não tem suporte pra Windows, apesar de que como é feito em Python talvez consiga instalar e usa-lo, porém gostaria de deixar a dica do RIOT que faz o mesmo, porém oferece mais opções de otimização de imagem.

De forma básica o Trimage é um compressor de imagem de forma gráfica que suporta os formatos de imagens mais populares e que trabalha com o processamento por threads para acelerar o processamento de imagens em grande quantidade.

Veja mais em: http://trimage.org/ (em inglês)

Espero que essa dica acelere seu trabalho, como acelera o meu.

Abraço 😀

Como carregar arquivos css e javascript em um request com PHP?

HTML 5, CSS 3, Javascript

HTML 5, CSS 3, Javascript

Fala galera, hoje venho dar uma dica simples, que pode ajudar em alguns projetos de sistemas, acredito que para usar em site não deva ajudar muito, pois vai ficar criando processamento no servidor de forma desnecessária. Leia até o final que apresento uma alternativa para fazer o mesmo sem usar PHP. Mas então vamos direto ao ponto que todos querem ver, acredito eu.

Para fazer isso basta chamar todos os seus arquivos css e javascripts em um único arquivo com PHP, eu sugiro que crie 1 arquivo php para cada tipo de conteúdo assim pode separar e facilitar até mesmo na manutenção. Pensando assim, segue abaixo exemplo de código para retornar todos os arquivos de css em um único request:

<?php
/**File: css.php */

/** Caminho para pasta do css, não url e sim a pasta. */
$path_css = __DIR__.'/assets/css/';

$relative_styles = array(
	'bootstrap.min.css',
	'fontawesome.min.css',
	'style.css'
);

/** Definir o Header para navegador saber o tipo de conteudo */
header('Content-type: text/css');

/** Joga todos os arquivos em somente 1 request para o navegador */
foreach ($relative_styles as $style) {
	
	// verifica se existe o existe para evitar erros
	if (file_exists($path_css.$style)){

		readfile($path_css.$style);

	}
}

?>

Depois de criar esse arquivo basta chama-lo da mesma forma que chamaria todos os outros arquivos via html, veja abaixo exemplo:

<link rel="stylesheet" type="text/css" href="/css.php">

Agora que já sabe como funciona pode fazer o mesmo para javascript, apesar de saber que poderia alterar, vou facilitar para você que gosta de copiar e colar de forma mais fácil e rápida, veja abaixo como ficaria o mesmo exemplo para javascript:

<?php
/**File: javascripts.php */

/** Caminho para pasta do javascript, não url e sim a pasta. */
$path_css = __DIR__.'/assets/javascript/';

$relative_js = array(
	'bootstrap.min.js',
	'jquery.min.js',
	'jquery.ui.min.js',
	'app.js'
);

/** Definir o Header para navegador saber o tipo de conteudo */
/** Lembrando de usar o 'application/javascript' pois text/javascript é obsoleto, 
  *	veja mais em: https://www.iana.org/assignments/media-types/media-types.xhtml
  */
header('Content-type: application/javascript');

/** Joga todos os arquivos em somente 1 request para o navegador */
foreach ($relative_js as $js) {
	
	// verifica se existe o existe para evitar erros
	if (file_exists($path_css.$js)){

		readfile($path_css.$js);

	}
}

?>

E sendo assim, o html para chamar esse arquivo de javascript ficaria assim:

<script src="/javascripts.php"></script>

Espero que isso possa lhe ajudar de alguma forma, e sinceramente se quiser otimizar ainda mais pode até mesmo adicionar compressão dos arquivos, retornando para o navegador um conteúdo todo compactado para fazer isso basta adicionar a seguinte linha no inicio do código que irá compactar quando for feito o request e até mesmo transmitir os arquivos de forma mais rápida.

<?php
ob_start ("ob_gzhandler");

/** ... */

?>

Caso não ache isso muito de se fazer, você tem muitas outras alternativas para poder reduzir o consumo de banda ou de requests ao servidor, você pode fazer coisas como:

  • Você pode comprimir os arquivos diretamente no Apache usando o .htaccess;
  • “Compilar” seus arquivos css e/ou javascript em único arquivo que não será necessário compacta-lo a cada request;
  • Pode trabalhar com ferramenta como LESS/SASS para compactar seus arquivo CSS para você de forma mais prática;
  • Pode também trabalhar mais com módulos do NodeJS como o GrunJS que facilitam esse tipo de processo;

Como pode perceber sempre tem uma forma de melhora nosso desenvolvimento e oferecer um produto melhor ao nosso cliente. Claro, que nem sempre conseguiremos fazer da melhor forma inicialmente, porém o importante a nossa constante busca por melhorar nossos projetos que irá nos trazer melhores resultados.

Espero ter ajudado.

Abraços 😀