Postagens

Mostrando postagens de agosto, 2009

Postagem em destaque

Assinando arquivos PDF com certificado digital em Go

Imagem
Desenvolver uma solução para assinar PDFs com certificado digital (PFX) em Go se mostrou um desafio considerável, apesar do escopo inicial parecer simples. Após a conclusão, a implementação aparenta ser direta (são apenas 180 linhas), mas o processo exigiu várias iterações e entendimento detalhado sobre as limitações das ferramentas e bibliotecas disponíveis. A primeira abordagem consistiu em tentar, de forma monolítica, ler o PDF, aplicar o carimbo visual e assinar digitalmente em uma única etapa. No entanto, surgiram diversos entraves — em especial, a perda da assinatura digital após a inserção do carimbo, e erros decorrentes da manipulação do documento. Adicionalmente, muitas soluções baseadas em IA indicavam bibliotecas pagas ou APIs externas, ou ainda métodos inexistentes nas bibliotecas, tornando a busca por alternativas viáveis um processo repetitivo e pouco produtivo. O fluxo mais robusto — e funcional — consolidou-se apenas após dividir o processo em etapas claras, conforme ob...

Falta de criatividade

Por que os nomes de sistemas, em sua grande maioria, são siglas e começam com a letra S? SCP (Sistema de Contas a Pagar), SCR (Sistema de Contas a Receber), SCE (Sistema de Controle de Estoque), SGE (Sistema de Gestão Empresarial), e por aí vai. Sejam criativos!

BlueScreenView

Imagem
O utilitário BlueScreenView , um freeware da NirSoft, mostra a mesma mensagem que você recebe na Blue Screen of Death (Tela Azul da Morte). É uma maneira muito mais prática e fácil de tentar resolver o problema, pois era comum ter que anotar os dados numa folha de papel ou tirar uma foto da tela.

Removendo caracteres especiais de uma string

Algumas vezes precisamos remover alguns caracteres especiais de uma string. A maneira mais fácil de fazermos isso é utilizando as expressões regulares. Seu uso não é nenhum bicho de 7 cabeças. Segue aqui, um exemplo em ColdFusion. texto = 'Somente_Numeros e Letras 123456*'; retorno = reReplace(texto, '[^[:digit:][:alpha:]]', '', 'all'); // resultado: SomenteNumeroseLetras123456