Objeto literal em JavaScript

On 9 de outubro de 2014, in JavaScript, by andersonstraube

Neste post pretendo explicar um pouco sobre como trabalhar com objetos em javascript, mais especificamente com Objetos Literais.

Objetos Literais são conjuntos de propriedades com um ou mais elementos que contém valores setados, esses valores podem ser tipos primitivos da linguagem (string, array, integer) ou objetos. Uma das grandes vantagens em utilizar objetos literais é a possibilidade de usarmos Singleton uma vez que esses objetos não podem ser instanciados.

Vamos aos exemplos:

Continue reading »

Tagged with:  

Image Filter vs Blend Multiply no PHP

On 9 de outubro de 2014, in Sem categoria, by andersonstraube

Precisei criar um filtro para uma imagem, porém a função nativa da GD Lib não nos permite fazer um blend multiply onde o efeito é bem mais interessante e agradável.

Lendo mais sobre o algoritmo do blend multiply e “googlando” percebi que a fórmula utilizada é subtraindo o RGB pelo valor máximo (255), ou seja, valores opostos.

Com base nisso o código de exemplo ficou da seguinte forma:

Continue reading »

Tagged with:  

GROUP_CONCAT – Agrupando dados no MySQL

On 8 de outubro de 2014, in SQL, by andersonstraube

Se você precisa exibir um relacionamento 1 para muitos, a primeira coisa que vem em mente é JOIN das tabelas, todavia você já se deparou com uma questão da quantidade de dados “desnecessário” que isso causa?

Exemplo/Cenário:

Temos as tabelas pessoas e livros (1 para n):

Continue reading »

Tagged with:  

Strategy Pattern em ColdFusion

On 17 de abril de 2012, in CFML, Design Pattern, by andersonstraube

Strategy é um padrão de projeto de software (do inglês design pattern). O objetivo é representar uma operação a ser realizada sobre os elementos de uma estrutura de objetos. O padrão Strategy permite definir novas operações sem alterar as classes dos elementos sobre os quais opera. Definir uma família de algoritmos e encapsular cada algoritmo como uma classe, permitindo assim que elas possam ter trocados entre si. Este padrão permite que o algoritmo possa variar independentemente dos clientes que o utilizam.
Fonte: http://pt.wikipedia.org/wiki/Strategy

Motivação para usar o Padrão Strategy?

– Quando um sistema possui vários componentes que têm semelhança estrutural porém com comportamentos diferentes;
– Quando tem um algoritmo cujo cálculo pode variar dependendo dos parâmetros fornecidos;
– Você não quer que o componente principal seja alterado e/ou “inflado” toda vez que um novo modo (estratégia) é desenvolvida/solicitada.

Continue reading »

Tagged with:  

Observer Pattern em ColdFusion

On 11 de abril de 2012, in CFML, Design Pattern, by andersonstraube

O Observer é um padrão de projeto de software que define uma dependência um-para-muitos entre objetos de modo que quando um objeto muda o estado, todos seus dependentes sejam notificados e atualizados automaticamente. Permite que objetos interessados sejam avisados da mudança de estado ou outros eventos ocorrendo num outro objeto.
O padrão Observer é também chamado de Publisher-Subscriber, Event Generator e Dependents.
Fonte: http://pt.wikipedia.org/wiki/Observer

Motivação para usar o Padrão Observer?

– Definir uma dependência um-para-muitos entre objetos para que quando um objeto mudar de estado, todos os seus dependentes sejam notificados e atualizados automaticamente;
– Quando um objeto deve ser capaz de avisar outros sem fazer suposições sobre quem são os objetos. Ou seja, sem criar um acoplamento forte entre os objetos;
– Conseguimos reduzir o uso do relacionamento bidirecional por meio de interfaces e classes abstratas, separando a abstração para ter um alto nível de coesão e baixo acoplamento.

Continue reading »

Tagged with:  

É comum termos dúvidas sobre a performance de um determinado código, se um loop está otimizado ou não – se fizer uma alteração vai diminuir o tempo de execução, entre outras coisas…

Para sanar essas dúvidas nós podemos usar o console do navegador, para tanto basta criar um identificador para que ele calcule o tempo de execução, veja no exemplo abaixo:

Continue reading »

Tagged with:  

cfqueryparam com lista de valores para a cláusula “IN” do SQL

On 4 de abril de 2012, in CFML, SQL, by andersonstraube

Vamos ver como usar uma lista de valores na cláusula “IN” do SQL utilizando o cfqueryparam do ColdFusion.

Não preciso nem comentar sobre o uso do cfqueryparam, para mim isso é obrigatório por questões de segurança e vários outros fatores.

No código abaixo ele lista os clientes cujo nome está na lista:


<cfquery name="q_Clientes" datasource="#dsn#">
  SELECT 
	*
  FROM 
	clientes
  WHERE 
	nome IN ('Anderson','Maria','João','Zeca')
</cfquery>

Continue reading »

Tagged with:  

Exibir loading nas requisições ajax

On 4 de abril de 2012, in jQuery, by andersonstraube

Neste post vou explicar como exibir a mensagem de “carregando” nas requisições ajax:

Podemos fazer de 2 formas:
1 – Antes da requisição nós exibimos o “loading” e depois da conclusão nós ocultamos;
2 – Fazer isso de maneira automática (é o que vamos ver neste post).

Vamos criar nossa div que será o loading:


<div class="carregando">
  <strong>CARREGANDO</strong>
</div>

Continue reading »

Tagged with:  

jQuery: evitar cache em chamadas ajax

On 3 de abril de 2012, in jQuery, by andersonstraube

O cache em requisições ajax é um problema comum entre os desenvolvedores iniciantes e principalmente com o Internet Explorer. Para resolver esses problemas vou dar 2 dicas que o jQuery utiliza:

1 – Setar o cache na própria requisição ajax:


$('#formCadastro').submit(function(e) {
    e.preventDefault();	
    $.ajax( {
        url: "arquivo.cfm",
        type: 'POST',
        cache: false, // aqui definimos o cache como false
        data: $(this).serialize(),
        success: function(dados) {
                console.log(dados);
        }
    });
});

2 – Setar o cache como false para todas as requisições ajax:


$.ajaxSetup({ cache: false });

O ajaxSetup é uma configuração global da sua aplicação, com ela não precisamos ficar definindo as configurações em cada requisição. Veja mais em http://api.jquery.com/jQuery.ajaxSetup/

Tagged with:  

Cache de Query no ColdFusion

On 28 de março de 2012, in CFML, by andersonstraube

Em sistemas críticos (de alta carga) é fundamental termos otimização de SQL’s e principalmente sistema de cache. O ColdFusion tem um recurso muito interessante que é utilizado para fazer o cache de query.

Em consultas largamente utilizadas no sistema e onde o resultado raramente muda como por exemplo: listagem de estados, cidades e bairros – não precisamos recorrer ao banco de dados para recuperar tais informações, nestes casos podemos poupar o banco armazenando o resultado dessa consulta em cache na própria aplicação:

Continue reading »

Tagged with: