sábado, 28 de novembro de 2009

Carnê-Leão - Receita Federal

Cansado da tela pequena do Carnê-Leão da Receita Federal fiz um editor em PHP do arquivo dele, a única coisa que eu não fiz foi a geração da DARF para pagamento, mas o cálculo do imposto devido é fácil de fazer...

Uma dúvida que estou é se eu libero a fonte desta aplicação, ou faço uma versão web para as pessoas enviarem seus xmls e editarem online e depois baixar de volta para imprimir seus DARF's...

Ou envio o código pra Receita e quem sabe eles usam ele...

segunda-feira, 23 de novembro de 2009

Javascript - Função para manter o cursor no lugar

Você acabou de criar uma função onkeyup no javascript, mas descobriu que, ao mudar o conteúdo do inputbox, o cursor vai parar no final...

Segue uma função para resolver este problema, não lembro de onde peguei ela :/, mas é bem útil, ela mantém o cursor no devido lugar:
function getSelectionStart(o) {
    if (o.createTextRange) {
        var r = document.selection.createRange().duplicate()
        r.moveEnd('character', o.value.length)
        if (r.text == '') return o.value.length
        return o.value.lastIndexOf(r.text)
    } else return o.selectionStart
}


function setCaretTo(obj, pos) {
    if(obj.createTextRange) {
        /* Create a TextRange, set the internal pointer to
           a specified position and show the cursor at this
           position
        */
        var range = obj.createTextRange();
        range.move("character", pos);
        range.select();
    } else if(obj.selectionStart) {
        /* Gecko is a little bit shorter on that. Simply
           focus the element and set the selection to a
           specified position
        */
//        obj.focus();
        obj.setSelectionRange(pos, pos);
    }
}
Uso:
onkeyup="javascript:AlgumaFunctionOnKeyUpOuOutroEvento(this);"
function AlgumaFunctionOnKeyUpOuOutroEvento ()
{
    x=getSelectionStart(campo);
    y = campo.value.length

    // Processamento de algo

    x = x + campo.value.length - y
    setCaretTo(campo,x)
}

PHP POG - Samples

Segue 2 códigos úteis para programadores que não sabem programar corretamente uma função e suas variáveis...
Uma espécie de SetGlobalAll();

De fora pra dentro:
extract($GLOBALS,EXTR_REFS); //No inicio da função
De dentro pra fora:
Savior(get_defined_vars()); //No final da função

function Savior($def)
{
foreach ($def as $key => $val)
{
global $$key;
$$key = $val; //podia usar extract mas daria na mesma... 1 linha por 1 linha....
}
}

domingo, 22 de novembro de 2009

Guia de Programação para Preguiçosos

Este guia é para quem quer economizar tempo programando...

Geral
  • Não use mais de um tipo de charset em sua aplicação, uniformize tudo, se for latin1 (ISO-8859-1) use em tudo mesmo, se for UTF-8, use em tudo, até na hora de salvar os arquivos do script, mas lembre-se sem o BOM...
  • Se tiver uma dúvida, crie um pequeno programa de teste, não perca tempo perguntando... Fazer o script 5min, descobrir o erro 2min... Ou escrever a pergunta 3min, esperar alguém responder 20min...
  • Interprete sua aplicação mentalmente, parece idiota, mas se você aprender a pensar que nem o computador, vai achar os erros 10x mais rápido, e consequentemente errar menos no futuro...
HTML
MySQL
Muito tarde para ficar pensando...

quarta-feira, 4 de novembro de 2009

Post Extraordinário

Um post meio estranho, com duas notícias incrivéis do que aconteceu nestes últimos dias:

  • Um leitor do blog postou nos comentários do meu post explicando a simplicidade de como decodificar o Banco de Dados dos Correios, veja aqui. Parabéns ao FelipeTv que encontrou a resposta com as poucas dicas que passei.