RSS Feed

‘Curiosidades’ Category

  1. William Bonner fala sobre o Twitter

    novembro 17, 2009 by Igor Escobar

    O Twitter é o serviço de microblogging mais famoso do sistema solar, porém, muitas pessoas ainda não fazem a menor idéia para o que serve e qual a sua real utilidade.

    Acompanhando as atualizações do meu Twitter acabei me deparando com este vídeo onde o William Bonner fala sobre o Twitter, conta como ele faz o uso do Twitter e o que mudou na vida dele após a sua utilização.

    Para quem ainda não entendeu o seu uso e não faz a mínima idéia para que serve, o video da uma clareada na cabeça de vocês.

    Twitter do Willian Bonner: @realwbonner

    William Bonner fala sobre o Twitter

    []‘s
    Igor.


    Posts Relacionados:

    • Nenhum post relacionado!

  2. 10 Dicas JavaScript e Boas Práticas

    novembro 5, 2009 by Igor Escobar

    Recentemente alguns site e blogs vem divulgando listas de dicas para se codificar em javascript. Apresentando melhores práticas de desenvolvimento e muitas dicas bacanas, Pensei que este seria um bom tópico para se extender e compartilhar com vocês. Neste post estou reunindo as minhas top 10 dicas e boas práticas para codificação javascript.

    Espero que gostem.

    1. Use o atributo defer para indicar o uso scripts externos no IE

    O propósito do defer é avisar o script que está sendo requisitado externamente para esperar  até que a página seja carregada ou o DOM esteja preparado. O mesmo pode ser realizado através de bons métodos não-obstrutivos via javascript, que usualmente inclui códigos que previne a execução de scripts antes que o DOM seja carregado por completo.

    A vantagem do defer ocorre quando utilizamos o Internet Explorer, tendo em vista que é único browser que suporta o atributo defer. Então, se você precisa de um rápido script que rode únicamente e exclusivamente no Internet Explorer, e você não quer que ele execute antes que o DOM esteja preparado, então simplesmente adicione defer="defer" no sua tag <script> e ela irá rapidamente tratar o seu problema. Corrigir a transparência de arquivos PNG no IE6 é uma das possibilídades práticas do uso do defer.

    (Edit: O atributo defer deve ser usado quando escondemos um script de outros browsers com o uso dos comentários condicionais  – conditional comment – que afete somente os navegadores da Microsoft – de outra maneira o script vai rodar normalmente em outros browsers.)

    2. Use o CData Section para previnir erros de validação XHTML Strict

    Muitas vezes seus scripts vão residir em arquivos externos e chamados dentro da tag <script> dentro do  <head> do documento, ou então antes do fechamento da tag </body>.

    Mas este documento pode estar eventualmente usado em um local que junto dele existem marcações HTML, como abaixo:

    <div>
    <p>
    <script type="text/javascript">
    var my_variable = 100;
    if (my_variable < 50) {
    // alguma coisa aqui...
    }
    </script>
    </p>
    </div>
    

    Você pode notar que no código acima, dentro do if, existe o símbolo <  que representa “menos”, que é parte da sintax, corréto? Este símbolo causa um erro de validação. O validador interpreta ele como um inicio de uma marcação ou uma tag HTML que não foi fechada, a não ser que você encapsule o seu código com o CData, assim:

    <div>
    <p>
    <script type="text/javascript">
    //<![CDATA[
    var my_variable = 100;
    if (my_variable < 50) {
    // alguma coisa aqui...
    }
    //]]>
    </script>
    </p>
    </div>
    

    3. Evite palavras-chaves reservadas do JavaScript quando estiver criando funções e identificadores

    Muitas palavras são reservadas no javascript, então você deve evitá-las quando forem criar variáveis ou outros idenficadores. A lista completa de palavras-chaves do javascript segue abaixo:

    break
    case
    catch
    continue
    default
    delete
    do
    else
    finally
    for
    function
    if
    in
    instanceof
    new
    return
    switch
    this
    throw
    try
    typeof
    var
    void
    while
    with
    

    4. Evite palavras reservadas do JavaScript quando estiver criando funções e identificadores

    Que estão também algumas palavras reservadas, que não estão necessariamente sendo usadas pela linguagem mas são reservadas para o uso futuro. São estas:

    abstract
    boolean
    byte
    char
    class
    const
    debugger
    double
    enum
    export
    extends
    final
    float
    goto
    implements
    import
    int
    interface
    long
    native
    package
    private
    protected
    public
    short
    static
    super
    synchronized
    throws
    transient
    volatile
    

    5. Não mude o tipo das variaveis depois da declaração inicial.

    No javascript, tecnicamente, isso é perfeitamente legal:

    var my_variable = "Esta é uma string";
    my_variable = 50;
    

    Depois que a variável é inicialmente declarada como string na linha 1, na linha 2 o seu valor é mudado e o seu tipo também. Esta não é uma boa prática e deve ser evitada.

    6. Não use variáveis globais.

    Para previnir possíveis conflitos, em 99% dos casos, use o “var” no início quando estivermos declarando uma variável e seu valor. Isso faz com que a sua variável exista somente no escopo da função e não fora dela, ou seja, toda variável criada pelo var, só poderá ser acessível dentro do escopo no qual ela foi declarada e não mais fora dele. Então, se acontecer de você utilizar duas variáveis com o mesmo valor em lugares diferentes do seu script, nenhum conflito ocorrerá.

    7. Javascript é Case-Sensitive.

    Lembre-se do que vem a seguir: No código que segue temos duas variáveis que estão armazenando seus valores em 2 lugares diferentes na memória, e não um só, como alguns podem pensar. São duas variáveis completamente diferentes alocadas em lugares diferentes na memória:

    var myVariable = "data";
    var myvariable = "more data";
    

    8. Use o switch para lidar com multiplas condições

    Não faça isso:

    if (example_variable == "cyan") {
    // faça algo aqui...
    } else if (example_variable == "magenta") {
    // faça algo aqui...
    } else if (example_variable == "yellow") {
    // faça algo aqui...
    } else if (example_variable == "black") {
    // faça algo aqui...
    } else {
    // faça algo aqui...
    }
    

    Faça isso:

    switch (example_variable) {
    case "cyan":
    // faça algo aqui...
    break;
    case "magenta":
    // faça algo aqui...
    break;
    case "yellow":
    // faça algo aqui...
    break;
    case "black":
    // faça algo aqui...
    break;
    default:
    // faça algo aqui...
    break;
    }
    

    O segundo bloco de código faz exatamente a mesma coisa que o primeiro – mas o segundo é limpo, fácil de ler, fácil de dar manutenção e modificar.

    9. Use o try-catch para previnir que erros sejam expostos para os usuários

    Encapsulando todo o seu código no try-catch, você pode evitar que o usuário final nunca veja um feio erro de javascript exposto na tela. Assim:

    try {
    funcaoQueNaoExiste();
    } catch (error) {
    document.write("Um erro ocorreu.")
    }
    

    No código acima, eu tentei chamar uma função que não existe, para forçar um erro. O navegador não vai exibir o típico erro “not an object” ou “object expected”, mas ao invés disso, vai exibir um erro mais customizável que eu incluí dentro do meu “catch”. Você pode também deixar o catch vázio para nada ser mostrado para o usuário, ou você pode criar uma função que seja chamada dentro do catch que faça o tratamento deste erro para propósitos de debug etc.

    Mantenha na sua cabeça que isso pode esconder erros do desenvolvedor também, então uma boa decumentação do código e comentários podem ser úteis neste ponto.

    10. Faça comentários multi-linhas legíveis, mas simples

    Em javascript, você pode comentar uma linha de código colocando um // no início da linha. Você também pode criar um comentário em bloco como mostra a seguir: /* [comentário aqui ] */. Algumas vezes você precisa incluir um comentário longo, um comentário de mais de uma linha. Um bom método para se utilizar que não tenha uma visual esmagador, mas é fácil de identificar o código é esse a seguir:

    /*
    * Este é um comentário multi-linha...
    * bla bla bla...
    * bla bla bla...
    * bla bla bla...
    * bla bla bla...
    */
    

    E é isso :-)

    Este artigo é uma adaptação e tradução do texto: 10 JavaScript Quick Tips and Best Practices


    Posts Relacionados:


  3. Proteção contra o SQL Injection

    outubro 27, 2009 by Igor Escobar

    Olá a todos, desculpem pela ausência, por algum motivo (algo relacionado com o Speedy) eu não estava conseguindo acessar o meu blog o que me impossibilitava de escrever, i’m sorry.

    Hoje vou falar um pouco sobre como funciona o SQL Injection e como podemos proceder para que nós não sejamos pegos por este tipo de vulnerabilidade.

    O que é SQL Injection?

    SQL Injection é uma técnica de injeção de código que explora uma vulnerabilidade de segurança localizada na camada de banco de dados (database layer) do servidor. Na prática é utilizada por hackers (ou não) para ter acesso ao banco de dados do servidor da vítima sem que ele precise de um login ou uma senha efetivamente para fazê-lo.

    Como funciona o SQL Injection?

    Para entendermos melhor como funciona os ataques via injeção de códigos SQL (SQL Injection), vou utilizar um caso bem comum entre os programadores para que vocês se familharizem com mais facilidade.

    Pense em um formulário para login no sistema e uma consulta na base de dados para verificar se determinado usuário e senha existe em na base de dados.
    Exemplo
    SELECT usuario,senha FROM usuarios WHERE usuario = 'igorescobar' AND senha='123456'

    O ataque acontece justamente no ponto, aonde o usuário preenche o usuário e a senha no formulário de login do site. Se você não filtra todos os dados que vem de FORA para DENTRO da sua aplicação, você corre o risco de ser atacado.

    Na prática o código fica algo parecido com isso:
    SELECT usuario,senha FROM usuarios WHERE usuario = '$usuario' AND senha='$senha';

    Estas variáveis ($usuario e $senha) estão vindo do $_POST do seu formulário e o servidor iria interpretar assim:
    SELECT usuario,senha FROM usuarios WHERE usuario = 'igorescobar' AND senha='123456';

    Agora imagine que eu sou um usuário mal intencionado e desejo logar no servidor de vocês sem ser autorizado.

    No campo senha vou inserir o seguinte conteúdo:
    123456' OR 'a'='a

    Vamos ver como fica?
    SELECT usuario,senha FROM usuarios WHERE usuario = 'igorescobar' AND senha='123456' OR 'a'='a';

    Hun… como diria eu mesmo (há!): F-U-D-E-U!

    Quer outro exemplo? … um mais bacana?

    Agora no campo senha eu vou inserir o seguinte conteúdo:
    123456'; DROP TABLE usuarios; --

    Vamos ver como fica?
    SELECT usuario,senha FROM usuarios WHERE usuario = 'igorescobar' AND senha='123456'; DROP TABLE usuarios; --';

    Ok, agora você já esta pronto para passar no RH :)

    Oh my god :O como eu me protejo dos ataques SQL Injection ?

    Primeiro: Separe sempre a exibição de erros em 2 ambientes, o ambiente de desenvolvimento e o ambiente de produção. O ambiênte de desenvolvimento pode ter qualquer tipode erro emitido na tela, afinal, você precisa ver os erros para tratá-los, no ambiênte de produção omita qualquer tipo de erro, qualquer erro pode ser uma pista para o hacker descobrir detalhes sobre o seu ambiênte.

    Ambiente de Desenvolvimento

    <?php error_reporting(E_ALL ^ E_NOTICE);  ?>

    Ambiente de Produção

    <?php error_reporting(0);  ?>

    Segundo: Filtre todo o tipo de variável dados que veem de urls ou inputs de formulário $_GET ou $_POST para que nenhum dos dados inputados pelo usuário possa ser interpretado como parte da instrução SQL.

    Vale lembrar que o certo seria utilizarmos PDO que já tem uma proteção definitiva contra isso, pois ele tem o acesso ao modelo do seu banco de dados e pode fazer muito melhor do que uma simples filtrarem generica nos campos, ele pode filtrar cada campo dependendo do tipo de cada campo o que é muito melhor.

    Caso você não use PDO, você pode utilizar também uma função chamada mysql_real_escape_string que também cumpre o que promete.

    Solução definitiva para o SQL Injection
    Está solução é válida apenas para as pessoas que não utiliza nenhuma das 2 (duas) soluções citadas acima.

    <?php
    
    /**
     * Protege o banco de dados contra ataques de SQL Injection
     *
     * Remove palavras que podem ser ofensivas à integridade do banco
     * Adiciona barras invertidas a uma string
     *
     * @uses $_REQUEST= _antiSqlInjection($_REQUEST);
     * @uses $_POST = _antiSqlInjection($_POST);
     * @uses $_GET = _antiSqlInjection($_GET);
     *
     * @author Igor Escobar
     * @email blog [at] igorescobar [dot] com
     *
     */
    
    function _antiSqlInjection($Target){
    	$sanitizeRules = array('OR','FROM','SELECT','INSERT','DELETE','WHERE','DROP TABLE','SHOW TABLES','*','--','=');
    	foreach($Target as $key => $value):
    		if(is_array($value)): $arraSanitized[$key] = _antiSqlInjection($value);
    		else:
    			$arraSanitized[$key] = (!get_magic_quotes_gpc()) ? addslashes(str_ireplace($sanitizeRules,"",$value)) : str_ireplace($sanitizeRules,"",$value);
    		endif;
    	endforeach;
    	return $arraSanitized;
    }
    
    ?>
    

    Terceiro: Não tem, só estes 2 passos está bom ;)

    ps: Desculpem as piadas, estou de bom humor hoje :)

    UPDATE(1): Acrescentei algumas palavras na blacklist da função
    UPDATE(2): Troquei o str_replace para o str_ireplace e acrescentei a verificação de magic_quotes.
    UPDATE(3): Retirei a função trim por não fazer diferença alguma rs.

    []’s
    Igor.


    Posts Relacionados:


  4. Legibilidade com with() statement no javascript

    outubro 27, 2009 by Igor Escobar

    Hora de falar de Javascript. Hoje vou falar sobre um recurso que o Javascript oferece para diminuir as referências aos objetos. Utilizando o with() você consegue deixar o seu código mais legível e prático.

    Veja um exemplo:

    Uma implementação comum, sem o with()

    function foo(){
            var x = document.forms[0].elements[0].value;
            var y = document.forms[0].elements[1].value;
            var z = document.forms[0].elements[2].options[document.forms[0].elements[2].selectedIndex].text;
    }

    A mesma implementação, COM o with()

    function foo(){
            with(document.forms[0]){
                    var x = elements[0].value;
                    var y = elements[1].value;
                    with(elements[2]){
                            var z = options[selectedIndex].text
                    }
            }
    }

    Viram como o código ficou menor e mais legível? Não não precisamos ficar repetindo instruções para se referenciar a um determinado objeto.

    Gostaram? Ok, mais um exemplo então:

    var a, x, y;
    var r = 10;
    with (Math) {
       a = PI * r * r;
       x = r * cos(PI);
       y = r * sin(PI/2);
    }

    Na forma tradicional teríamos que ficar nos referenciando ao objeto Math do javascript: Math.cos(PI) ou Math.sin(PI/2).

    Atenção

    O uso do with() pode ser nocivo. Como também o eval(), e também como o ajax pode ser nocivo e se pensar no mesmo raciocínio, muitos outros recursos disponíveis na linguagem podem ser nocivos se não forem aplicadas de forma correta. Caso for de interesse, leia mais em: http://yuiblog.com/blog/2006/04/11/with-statement-considered-harmful/

    É isso aí, um abraço a todos.


    Posts Relacionados:


  5. CRM não é tecnologia, CRM é conceito!

    outubro 27, 2009 by Igor Escobar

    Recentemente, tive uma aula muito interessante na faculdade onde foi discutido como funciona, na prática, um CRM ou Customer Relationship Management ou a Gestão de Relacionamento com o Cliente (como preferirem).

    Acho importante compartilhar este conceito com vocês, pois muitas empresas pecam na hora de implantar um sistema que atenda o “conceito” da sua empresa e, de fato, fazem um bom relacionamento com o seu cliente. É muito importante entender o que é um CRM de fato, para depois agir em prol desta causa – fidelização, angarização e prospecto.

    O CRM abrange, no geral, três grandes áreas dentro de uma empresa:

    - Automatização da gestão de marketing.

    - Automatização da gestão comercial, dos canais e da força de vendas.

    - Gestão dos serviços ao cliente.

    Vou falar sobre CRM utilizando as duas faces do conceito: o lado tecnológico e o lado conceitual, que é o mais importante.

    CRM como conceito

    Lembre-se sempre: antes de se agir em prol da causa, atendê-la. É muito importante. Conversando sobre as experiências com outros programadores e funcionários de outras agências, é comum constatarmos empresas que simplesmente compram qualquer “ferramenta” de CRM e começam a utilizar sem fazer qualquer tipo de planejamento.

    Pensam: – Ah! Se o software diz pra eu fazer isso, irei fazê-lo! Deve ser o certo.

    Wrong! Junto à uma equipe competente de marketing, a empresa deve definir todo o processo de relacionamento com o cliente que abrange as três grandes áreas da empresa.

    - Automatização da gestão de marketing.

    - Automatização da gestão comercial, dos canais e da força de vendas.

    - Gestão dos serviços ao cliente.

    Identificando os pontos e como funciona o conceito de marketing, devemos ir atrás de uma ferramenta ou seja, de uma tecnologia que atenda os pontos levantados e estudados pela equipe de gestão de marketing.

    Imagine o quão desmotivado ficaria um funcionário se o setor dele funcionasse perfeitamente com as ferramentas que ele estava utilizando e, de repente, um gestor maluco colocasse uma ferramenta grotesca de CRM que fizesse com que ele demorasse nove vezes o tempo que ele levaria para fazer o que fazia do modo antigo.

    Portanto lembre-se: entender o conceito é importante para não confundir na hora de mudar a empresa.

    Quando o CRM dá errado…

    É muito fácil identificar quando o CRM é aplicado de forma errada dentro de uma empresa.

    Atire a primeira pedra quem nunca precisou ligar para uma empresa e teve que repetir seus dados cadastrais para cada setor que o atendente fosse te transferindo. É frustrante, certo?

    Quando você, cliente, fica frustrado com algo ou alguém da empresa que presta serviço para você é porque o CRM está sendo aplicado de forma errada, (quem disse que CRM também não são pessoas?) ou está sendo aplicado de forma certa e colocado em prática utilizando a tecnologia errada.

    Existem inúmeras falhas que poderíamos ficar relatando aqui incansavelmente, porém não é este meu objetivo. O importante aqui é você entender como deve fazer para evitar que o CRM da sua empresa vá por água abaixo.

    Quando o CRM dá certo…

    Para saber identificar quando o CRM de uma empresa está sendo aplicado de forma correta precisa-se de um pouco mais de contato com a empresa. Precisa explicar todos os setores da empresa e “experimentar” de perto como estão sendo feito os procedimentos internos.

    O CRM não é um sistema só. O conceito é um só, porém é muito comum vários softwares fazerem parte do objetivo que o CRM propõe na sua essência.

    Todos os setores da empresa vêem o cliente como uma coisa só. Todos partilham dos mesmos objetivos que são impostos em cada setor da empresa, porém o cliente é um só, sempre.

    A integração e um bom processo de relacionamento com o cliente são a chave para felicidade da sua empresa e dos seus clientes.

    CRM visto como tecnologia (Wiki)

    O Customer Relationship Management é um sistema integrado de gestão com foco no cliente, constituído por um conjunto de procedimentos/processos organizados e integrados num modelo de gestão de negócios, do inglês “Customer Relationship Management”. O software que auxilia e apóia esta gestão é normalmente denominado sistema de CRM.

    O seu objetivo principal é auxiliar as organizações a angariarem e fidelizarem clientes ou prospectos. Fidelizarem clientes atuais procurando atingir a sua satisfação total, através do melhor entendimento das suas necessidades e expectativas e formação de uma visão global dos ambientes de marketing.

    Os processos e sistemas de gestão de relacionamento com o cliente permitem que se tenha controle e conhecimento das informações sobre os clientes de maneira integrada, principalmente através do acompanhamento e registro de todas as interações com o cliente, que podem ser consultadas e comunicadas às diversas partes da empresa que necessitem desta informação para guiarem as tomadas de decisões.

    Uma das atividades da Gestão do Relacionamento com o cliente implica registrar os contatos por si realizados, de forma centralizada. Os registros não dependem do canal de comunicação que o cliente utilizou (voz, fax, e-mail, chat, SMS, MMS etc) e servem para que se tenham informações úteis e catalogáveis sobre os clientes. Qualquer informação relevante para as tomadas de decisões podem ser registradas, analisadas periodicamente, de forma a produzir relatórios de gestão.

    - CRM Operacional: visa à criação de canais de relacionamento com o cliente.

    - CRM Analítico: visa a obter uma visão consistente do cliente, usando os dados recolhidos pelo CRM operacional para obter conhecimento que permita otimizar e gerar negócios.

    - CRM Colaborativo: foca na obtenção do valor do cliente através de colaboração inteligente, baseada em conhecimento.

    Toda essa tecnologia só será recebida de forma positiva pela sua empresa e pelos seus clientes, se elas entenderem do conceito do seu negócio e de todas as suas premissas.

    Resumindo…

    Antes de querer revolucionar a forma como sua empresa se relaciona com o seu cliente, agrupe profissionais de valor no setor de marketing, para definir detalhadamente o negócio, o conceito e premissa da sua empresa.

    Identificando e definindo perfeitamente estes pontos, vá em busca da tecnologia que atenda este conceito, estes valores suas premissas.


    Posts Relacionados:


  6. Como debugar aplicações AJAX/PHP com FirePHP

    outubro 27, 2009 by Igor Escobar

    Tradicionalmente, existem duas maneiras de se debugar uma aplicação server-side: você pode utilizar qualquer uma Integrated Development Environment (IDE) com algum build-in debugger ou registrar seus processos de depuração exibindo no próprio browser.

    Neste artigo veremos uma forma elegante, simples e mais sustentável de se debuggar aplicações Ajax via browser (especificamente o Mozilla Firefox). Você vai aprender a turbinar o seu Firefox unindo o Firebug e o FirePHP, tornando-o uma elegante ferramenta de depuração.

    Introdução

    Quando técnicas como Ajax se tornam populares nos ambientes de desenvolvimento, é comum que junto surjam também novos desafios, por exemplo: como podemos debuggar requisições e respostas Ajax de forma eficiente para aplicações complexas?

    Se utilizar um debugger foi difícil o suficiente com um modelo RESTful, interceptar uma requisição ajax específica é um saco e um pouco mais difícil. Geralmente o dumping de logs e informações destas transações devem ser feitas via JSON ou XML.

    É aqui que o FirePHP ajuda, permitindo que você registre suas mensagens de debug dentro do console do Firebug. O FirePHP não faz uma bagunça no seu código (e não exige que você modifique nada para pegar erros). As mensagens que você imprime são enviadas para o browser através de HTTP response headers, ou seja, as suas mensagens de debug não vão “quebrar” as respostas das suas requisições com mensagens e erros de debug e fazendo parar de funcionar toda a sua aplicação. A resposta vem limpa e todo o processo de depuração vem catalogado no console do Firebug. Isso faz com que o FirePHP não seja só o aplicativo ideal para você debugar suas aplicações PHP, mas também o seu PHP codebase inteiro.

    O que é o FirePHP?

    O FirePHP é um add-on para um add-on (ahn?): ele estende o popular Firebug. O FirePHP é grátis e fácil de instalar através da seção Mozilla Add-Ons no site oficial da Mozilla. O site oficial do FirePHP pode ser encontrado neste endereço: www.firephp.org,e Christoph Dorn é a pessoa responsável pela criação do FirePHP.

    O que eu preciso para iniciar?

    Como você deve ter adivinhado, são necessáriastrês coisas para fazer com que o FirePHP funcione, são elas:

    1. Firefox
    2. Firebug
    3. FirePHP

    Se você não tem um ou todas as aplicações listadas acima, você pode clicar no link respectivo de cada uma delas e receber instruções de como instalá-las de forma adequada.

    Se você está começando agora a estudar um pouco mais sobre web development, o FirePHP pode ser um pouco “manhoso” no começo, mas o projeto é acompanhado por uma boa documentação e você pode aprender facilmente.

    Instanciando a API OO

    No seu script, você pode utilizar o bloco de código abaixo para instanciar o FirePHP ($firephp):

    require_once('FirePHPCore/FirePHP.class.PHP');
    $firephp = FirePHP::getInstance(true);
    $firephp -> [classmethod];

    Instanciando a API OO com os métodos estáticos

    Esse é o formato como você deve chamar os métodos do FirePHP:

    require_once('FirePHPCore/fb.PHP');
    FB::[nameofmethod];

    A API Procedural

    E aqui está como se utiliza a API procedural do FirePHP:

    require_once('FirePHPCore/fb.PHP');
    fb($var);
    fb($var, 'Label');
    fb($var, FirePHP::[nameofmethod]);

    Nós não vamos entrar em detalhes com relação aos benefícios em utilizar cada uma das APIs, cabe a você decidir a melhor forma para VOCÊ. Em outras palavras, eu não quero iniciar uma guerra para decidir qual é a melhor forma, procedural x orientada a objetos. It’s up to you.

    Gravando mensagens no Firebug Console

    Agora vamos detalhar as formas como você pode lidar com o Console do Firebug.

    Exemplos básicos de log de mensagens

    Se você está debugando um bug, o exemplo a seguir pode ser útil para você:

    Fb::log("log message");

    Isso vai imprimir a mensagem que você passou como parâmetro dentro do console do Firebug:

    Fb::log($array, "dumping an array");

    Passando um array (chega de print_r nos seus scripts) e mostrando o seu conteúdo. O exemplo acima vai mostrar a seguinte saída no seu console:

    Dica: Quando você passar o mouse em cima das mensagens que foram logadas no seu console, uma janela aparece com todas as variáveis logadas, tudo tabulado de forma legível para desenvolvedor. Legal, né?

    Registrando uma mensagem de Informação

    Aqui vai uma forma de você exibir mensagens informativas no console:

    Fb::info("information");

    E o seu console exibirá assim:

    Mensagens de Aviso

    Segue aqui uma forma de você gravar mensagens de aviso:

    Fb::warn("this is a warning");

    Mensagens de Erro

    Segue aqui uma forma de você gravar mensagens de Erro:

    Fb::warn("error message");

    Habilitando/Desabilitando o registro de logs no Console

    Quando o seu site vai para o ar é muito importante que você desabilite o FirePHP para evitar que a pessoa errada veja a informação certa na hora errada (rs).

    FB::setEnabled(false);

    O bom de tudo isso é que você pode manter todo o código que você escreveu para debugar o seu código dentro do código, sem que você precise tirá-lo ou comentá-lo quando for para o ar. Se a sua aplicação possui um arquivo de configuração, é interessante criar uma variável dentro dele que através da qual você consiga habilitar e desabilitar o FirePHP.

    Conclusão

    Antes de tudo, aqui vai uma imagem com todas as mensagens possíveis de se utilizar no FirePHP:

    Neste artigo, cobrimos coisas bem básicas de se fazer utilizando o FirePHP para ajudar você a debugar e ganhar informações sobre as suas requisições nas suas aplicações Ajax/PHP de forma fácil e sustentável no seu próprio browser. Eu espero que estes resultados tenham convencido você a explorar outras alternativas para debugar seu código fora da “old-school” techniques (echo’s print’s etc.). Usar o FirePHP é fácil e conveniente, dá a você muito mais opções e dados para propósitos de debug.

    No futuro, pretendo cobrir recursos mais complexos do FirePHP para fazer desta simples ferramenta de debug uma ferramenta poderosa, completa e robusta.

    []‘s


    Posts Relacionados:


  7. Projeto BoletoPHP

    outubro 27, 2009 by Igor Escobar

    Pequeno desabafo.

    Eu sou uma cara bastante antenado, leio muito e estou frequentemente me atualizando, principalmente nas coisas que surgem por aí (não vou me aprofundar muito nesta questão). Não posso acreditar que até hoje, eu nunca tenha visto nenhum texto ou qualquer palavra de apoio para este projeto que se iniciou em 2006. Me senti na obrigação de divulgar para você este projeto Open-Source mantido e coordenado por Elizeu Alcantara. Uma iniciativa que achei muito bacana e vale o meu apoio. O Projeto se chama BoletoPHP.

    Projeto código aberto de sistema de boletos bancários em PHP

    Este projeto é mantido e coordenado por Elizeu Alcantara desde Maio/2006 e teve origem do Projeto BBBoletoFree, que teve colaborações de Daniel William Schultz e Leandro Maniezo, que por sua vez foi derivado do PHPBoleto de João Prado Maia e Pablo Martins F. Costa.

    Qual o principal motivo deste projeto?

    Criar um sistema de geração de Boletos que seja mais simples do que o PhpBoleto e que se estenda ao desenvolvimento de boletos dos bancos mais usados no mercado, além do Banco do Brasil do projeto BBBoletoFree. Este sistema é de Código Aberto e de Livre Distribuição conforme Licença GPL.
    Ele visa atender exclusivamente aos profissionais e desenvolvedores na área técnica de programação PHP dos boletos, portanto se faz necessário conhecimento desejado e estudo do mesmo para a perfeita configuração do boleto a ser usado, sendo de inteira responsabilidade do profissional a instalação, o funcionamento, os testes e a compensação do mesmo em conta bancária, pois não damos suporte técnico, portanto mensagens enviadas a nós com dúvidas gerais, técnicas ou solicitações de Suporte não serão respondidas.

    O projeto BoletoPhp não tem foco na questão administrativa, comercial ou jurídica, pois isto compete exclusivamente aos bancos devido as suas particularidades existentes de cada carteira de cada boleto. Maiores informações sobre o conceito de Boleto de Cobrança, você pode acessar aqui o site da Wikipédia.

    Faça parte desta revolução e colabore com este projeto

    Todos os voluntários terão seus nomes publicados na área de Créditos do site e do sistema, para valorizar os profissionais que sabem a importância de ter uma ferramenta com Código Aberto como esta em suas mãos e para os seus negócios e para os seus clientes, pois da mesma forma que você foi ajudado, você também pode estar retribuindo com 30 minutos do seu tempo e assim ajudando outros, e como num ciclo, sendo ajudado logo adiante com boleto de um outro banco que você pode precisar.

    Parabéns pela iniciativa, Elizeu Alcantara e todos os outros que também ajudaram de alguma forma, projetos como este sempre terão o meu apoio e o meu reconhecimento.

    []‘s
    Igor.


    Posts Relacionados:


  8. A função levenshtein(): Você quis dizer…

    outubro 27, 2009 by Igor Escobar

    int levenshtein ( string $str1 , string $str2 , int $cost_ins , int $cost_rep , int $cost_del )

    A função levenshtein, é uma função bastante interessante do PHP. Ela é capaz de calcular o numero de inserções, remoções e substituições necessárias para tornar a str1 na str2.

    A função serviu como base de inspiração para várias ferramentas e serviços vistos e utilizados de maneira frequente na Internet; corretores ortográficos, o famoso “Did you mean” ou “Você quis dizer” do Google estão todos inclusos nesta lista.

    Abaixo segue um exemplo da implementação do famoso “Did you mean” encontrado no próprio manual, utilizando a dita-cuja:

    <?php
        // input misspelled word
        $input = 'carrrot';
    
        // array of words to check against
        $words  = array('apple','pineapple','banana','orange',
        'radish','carrot','pea','bean','potato');
    
        // no shortest distance found, yet
        $shortest = -1;
    
        // loop through words to find the closest
        foreach ($words as $word) {
            // calculate the distance between the input word,
            // and the current word
            $lev = levenshtein($input, $word);
    
            // check for an exact match
            if ($lev == 0) {
                // closest word is this one (exact match)
                $closest = $word;
                $shortest = 0;
    
                // break out of the loop; we've found an exact match
                break;
            }
    
            // if this distance is less than the next found shortest
            // distance, OR if a next shortest word has not yet been found
            if ($lev <= $shortest || $shortest > 0) {
                // set the closest match, and shortest distance
                $closest  = $word;
                $shortest = $lev;
            }
        }
    
        echo &quot;Input word: $input\n&quot;;
        if ($shortest == 0) {
            echo "Exact match found: $closest\n"";
        } else {
            echo "Did you mean: $closest?\n";
        }
    ?>
    

    Saída

    Input word: carrrot
    Did you mean: carrot?

    Espero que um dia seja útil para alguém!

    Igor,
    []’s


    Posts Relacionados:


  9. Tradução: 31 dias para se tornar um blogueiro melhor.

    outubro 27, 2009 by Igor Escobar

    Achei este texto interessante para as pessoas que costumam manter um blog então cai bem uma tradução para aqueles que tem mais dificuldade com o idioma.

    Dia 1. Escreva melhor ’sobre’ a página. Escrever melhor ’sobre a pagina/blog’ ajuda a converter mais visitantes em fiéis leitores. Você pode ter uma página ‘ sobre’ mais efetiva simplesmente respondendo a pergunta: ‘O que esta página/blog tem a oferecer?’

    Dia 2. Comece usando mais imagens em seus posts. Leitores gostam de imagens — Elas ajudam o tom do seu blog, ilustrando metáforas e geralmente tornam os seus posts mais interessantes de se olhar. Você pode usar um estoque gratuito de fotografias, mas você consegue também usar o sensacional Flickr images.

    Dia 3. Escreva uma semana antes de antecêdencia. Desenvolvendo o hábito de escrever sempre antecipadamente ajuda você a te dar a segurança de conteúdo quando você estiver preguiçoso, ocupado ou sem inspiração. Escrever e publicar ao mesmo espaço de tempo conduzirá inevitavelmente a um errático hábito, por que seus leitores nunca sabem o que esperar de você. Escrever c0m andecêdencia o suficiente e poderá ganhar o dinheiro de ganhar um feriado blogger.

    Dia 4. Desorganização da sua barra lateral(sidebar). A desorganização gosta da barra lateral da mesma forma que macacos gostam de árvores. Se você tem menos em sua barra lateral, Você pode concentrar maiores espaços para o que realmente importa (seus feeds, categorias e posts mais populares). Remova widgets desnecessários e coloque seu blogroll e arquivos de postagens em sua própria página dedicada. Também pode ser uma boa ideia remover anúncios de baixa performance.

    Dia 5. Destaque seus posts mais populares. Colocar no seu blog de forma destacada os seus posts mais populares é uma ótima prática, por que isso da aos visitantes um novo lugar para ir. Eles não tem tempo para ficar procurando no seu blog um bom conteúdo: Eles querem ver o melhor que você tem a oferecer, imediatamente. Destacar estes links ajuda a manter os posts sempre vivos e os comentários sempre vindo, mesmo depois da postagens, meses depois

    Dia 6. Comece fazendo amigos em serviços de redes sociais como o Digg ou StumbleUpon. Esses lugares são ótimos para você fazer o seu network, por que você vai estar mantendo um relacionamento com pessoas que tem potencial para estar enviando seus artigos para milhares de pessoas. Se você votar no seu conteúdo, talvez você estará colocando as pessoas para falar em favor do seu conteúdo no futuro.

    Dia 7. Prova um post de sua autoria no mais popular blog do seu nicho. Posts de visitantes é um fantástico meio de trazer o seu perfil a tona e o tráfego de volta ao seu blog. Navegue no mais popular blog do seu nicho e pense em uma boa ideia para o próximo post (mas tenha certeza de que isso nunca foi postado anteriormente). Expresse sua ideia para o blog e comprometa-se em escrever um artigo completo caso for do interesse do mesmo. Se não, mesmo assim você consegue fazê-lo tentando em um outro blog, ou até mesmo no seu próprio blog.

    Dia 8. Tenha uma lista de boas fontes. As listas são muito populares em serviços de mídia social e pode ser muito fácil de fazer, Principalmente se você já possui essa lista em mãos. Pegue um tópico do seu publico alvo é sutilmente interessante e crie um lista de tópicos relacionados com a mesma. Você pode usar a sua própria lista de favoritos se você tiver. Se sua lista estiver curta, use o del.icio.us e procure pelo seu tópico, você vai achar milhares de links úteis que as pessoas salvaram usando o tópico de sua escolha anexo a uma palavra chave.

    Dia 9. Ofereça serviços gratuitos para os seus leitores (sem nenhuma expectativa de retorno). Se tratando de um redesing de um logo tipo, ideias, design review, votos de mídia social ou 15 minutos de consultoria grátis, dando algo de valor de graça sem expectativa de nada de volta vai deixar uma impressão duradoura nos seus leitores (e pode atrair alguns links também).

    Dia 10. Prova seu link para um ou três blogs do seu nicho. Pegue o mais popular post do seu blog e repasse através de 3 grandes populares blogs do seu nicho. Se eles gostarem, Eles vão apontar um link para ele no próximo post.

    Dia11. Adiciona links de midias sociais no rodapé dos seus posts e feeds. enquanto as pessoas votam no seu conteúdo através de barras de ferramentas, links em mídias sociais ou ícones relembra as pessoas a votarem a favor dos seus posts, se elas gostarem. É sempre mais que essencial adicionar esses botões em seus feeds, por que não há meio mais fácil para as pessoas votarem nos seus posts do que através dos leitores de feeds. Usando o FeedFlare você coloca um link ‘Adicione um comentário’ no rodapé dos seus feeds, é uma boa ideia. FeedFlares esta disponível Abaixo da tab ‘Publicize’ no painel de controle do seu Feedburner.

    Dia 12. Participe dos comentários no seu blog. Os leitores sentiram que você esta interessando no que eles pensam a respeito do seu post, você pode aprender alguma coisa, e também incrementar o número de comentários no seus posts.

    Dia 13. Trabalhe em um calendário editorial para o seu blog. É muito mais difícil escrever um post quando você sabe que o seu blog precisa de atualização. Trabalhando com um calendário editorial da ao seu blog um senso de ritmo. Isso pode te tornar mais produtivo impondo dead lines firmes para os próximos posts.

    Dia 14. Seja mais rigoroso com a suas inscrições RSS. Eu acho que os blogueiros perdem muito mais tempo lendo blogs do que escrevendo. Escolhendo melhor a sua lista de blogs pode te ajudar a ganhar um tempo a mais. Se você se encontrar regularmente pulando posts de um determinado blog, ou se você não consegue pensar em nada que tenha aprendido neste blog, provavelmente seja melhor você remover este feed da sua lista.

    Dia 15. Escreva um report ou um mini eBook. Poucas horas trabalho resultará em um relatório que você pode distribuir gratuitamente aos assinantes do feed, encorajando-os para compartilhar o mesmo, ou de qualquer forma trazer mais tráfego para o seu blog. Se for extremamente útil, o tráfego virá de forma viral.

    Dia 16. Tente colocar novas fontes de renda em seu blog. Se eu não for muito claro, Programas de anúncios em blogs tendem ser incertos. Você pode estar muito feliz com o seu programa de anúncios atual, mas os serviços mudam(e como), E se mudar? E com essas mudanças vão junto o seus rendimentos? Se você monetiza o seu blog é uma boa ideia ter 2 bons programas de anúncios como opções, pois se algo da errado com um, você tem o seu backup(ou plano B…como preferir).

    Dia 17. Pense em 20 ideias que você pode usar. Depois de saber o que você tem de escrever, começar se torna muito mais fácil. Tire um dia para fazer um brainstorm das 20 coisas que você quer ter em seu blog. Como alternativa, você pode simplesmente usar as vinte Ideias para seu post do Mark’s.

    Dia 18. Agradeça seus leitores. tire um dia para dizer obrigado para seus leitores — mesmo que seja um curso espaço no final dos seu post. Claro!, se você quer inovar na hora de dizer obrigado aos seus leitores, é muito melhor para deixar uma boa impressão.

    Dia 19. Atualize a versão do seu blog sempre!. Blogs desatualizados tendem a ter bugs e vulnerabilidades para ataques de hackers. Tenha certeza que na hora de atualizar a sua versão você tenha um backup da atual (e claro! saber o que você esta fazendo). Você precisa utilizar algum tempo para procurar mais detalhes sobre a transição de uma versão para outra.

    Dia 20. Ótima força, passwords alfanuméricos para todas as contas. Se todas as senhas que você possui são iguais entre seus blogs, Palavras do dicionário ou letras somente, Seria muito fácil para um determinado hacker para quebrar uma de suas contas. Tire um dia para tornar as suas senhas mais fortes usando combinações de letras, números e pontuações ela precisa exceder 8 caracteres. Tenha certeza de estar guardando seus passwords em um local seguro (e as escreva com cuidado).

    Dia 21. Sente e analise suas estatísticas do ultimo mês. As estatísticas dizem muito sobre o que você fez e o que você não fez. Analisar suas estatísticas durante um período pode relevar tendências, posts populares e qual das atividades promocionais que você se comprometeu a fazer eram dignas.

    Dia 22. Peça a alguém para postar no seu blog. Se você é amigo de outro blog, convide-os para escrever no seu blog. Se o seu blog é mais popular que o deles você tem uma grande chance de ser aceito. O post de um visitante consegue inserir um pouco de frescor no seu blog, o mais importante, permite que você mantenha seu foco em outra matéria para o dia.

    Dia 23. Pratique SEO no seu blog. SEO pode ser complicado, mas se você sabe um pouco sobre isso, tire um dia para revisar. Como alternativa, você pode aprender como otimizar o seu blog para os buscadores.

    Dia 24. Compre uma campanha StumbleUpon de $5 dólares para o seu melhor post. $5 compra aproximadamente 300 visitantes. Se alguns destes visitantes resolver votar a favor do seus posts, o resultado pode ser uma gigantesca bola de nele cheia de visitantes muito mais que os seus 5 dólares pode pagar! Depois de começar você pode ler este post ProBlogger no Programa de anúncios StumbleUpon.

    Dia 25. Crie uma logo personalizada para o seu blog, ou consiga alguém para fazer isso para você. O Blog branding é essencial. Se você usa um tema grátis sem nenhum distinção de branding, seu blog provavelmente vai parecer como outros milhares de blogs que usam o mesmo tema que você. Se você tem alguma habilidade em softwares de edição de imagens, crie uma logo customizada. Se você preferir a um passo a frente, você pode pagar um freelancer ou uma empresa para criar sua marca.

    Dia 26. Entre para um fórum popular no seu nicho. Um link para o seu blog na sua assinatura do fórum pode trazer um pouco de tráfego e uma boa quantidade de comentários em outros blogs.

    Dia 27. Use duas horas ou mais para cada post. Se você costuma utilizar várias horas em um único post você quer termina-lo agregando valor a ele. Investir um tempo extra em seus posts pode resultar em prêmios legais.

    Dia 28. Esvazie sua caixa de entrada. Você precisa responder seus e-mails frequentemente, então por que não começar isso hoje? Uma caixa de entrada vazia para um blogger é sempre bem-vinda.

    Dia 29. Comece a conversar com outro blogger do mesmo nicho. Diga Olá!, ofereça ajuda, comente nos posts que ele escreve — tanto faz faça isso, mande qualquer e-mail para outro blogger do seu nicho e não pergunte nada a ele. Se você conseguir uma conversa (ou uma conexão) isso pode criar oportunidades quando você faz um favor para um outro blogger e, depois, este favor pode ser devolvido.

    Dia 30. Mantenha uma competição com um modesto prêmio. Quer seja um e-book, consultoria grátis, DVD ou um CD, um pequeno prêmio e uma pequena competição pode ajudar a impulsionar o leitor sem afetar suas finanças demasiadamente.

    Day 31. Tire o dia de folga. Você mereceu isso! Sente um pouco e reflita sobre as três coisas que você fez para melhorar o seu blog. Você realmente deveria ter orgulho de si mesmo. ;)
    Texto Original: 31 Days to becoming a better blogger.

    Ufa! Realmente traduzir textos da trabalho :D
    Tentei traduzir da melhor forma que eu pude, pode ser que tenha algumas coisas estranhas, mais foi de coração ;)

    Espero que tenha contribuído!
    []’s
    Igor.


    Posts Relacionados:

    • Nenhum post relacionado!

  10. Coding Standards

    outubro 27, 2009 by Igor Escobar

    Todos nós sabemos que programar  é um arte, certo? Errado! :D Resolver problemas e criar soluções, é sim, uma arte. Com o amadurecimento do desenvolvimento e a iteração de equipes cada vez maiores, esta “arte” passou a virar ciência.

    Não existe mais este lance de cada um tem seu jeito de programar, cada um tem seu jeito de escrever etc., cada programador tem o seu jeito de pensar, mas não seu jeito de escrever seu código.

    O Coding Standards foi uma dessas demandas surgidas com o crescimento e o amadurecimento do ambiente corporativo. Visando mais produtividade e padronização do ambiente de trabalho, caras como Walker de Alencar, Todd Hoff’s, e Fredrik Kristiansen (e mais uns por aí) trabalharam desenvolvendo um manual, um guia, de como o seu código deve ser escrito para que todos em uma equipe e/ou empresa desenvolva de forma padrão: dar nomes de funções classes, tabulação, espaçamento, tudo, absolutamente, tudo de forma padrão e sugestiva.

    Adotar o Coding Standards pode ajudar você a não ter que abrir aquele arquivo de funções enorme para lembrar como você escreveu a função que verifica o cadastro dos clientes.

    Verifica_Cadastro() ?
    VerificaCadstro()?
    verificaCadastro()?
    CheckCadastros()?
    verificacadastro()?
    ...
    

    Pode ser que, para algumas pessoas que nunca tenham visto isso, o coding standards pode ser uma lavagem cerebral, algo que vá mudar totalmente a forma como alguns programam, mas é extremamente necessário.

    Qualquer programador que leve a sério o seu trabalho, e que tem o mínimo de respeito pelos seus colegas de trabalho, vão desejar programar de forma padronizada.

    Manuais sobre Coding Standards

    PHP Coding Standards (Walker de Alencar)
    C++ Coding Standards (Todd Hoff’s)
    Code Conventions for Java
    [UPDATE]
    Code Conventions for Python (Guido van Rossum)
    Code Conventions for C#
    Code Conventions for .NET
    [/UPDATE]

    []’s
    Igor.


    Posts Relacionados:

    • Nenhum post relacionado!