Postagens

Mostrando postagens de julho, 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...

Visualizando código fonte com SyntaxHighlighter

Já havia visto em vários blogs, o código de alguns programas bem formatado, com realce de cores, etc. Resolvi ir atrás e descobri que foram feitos utilizando a biblioteca SyntaxHighlighter . Se você quiser utilizá-lo em seu blog siga o roteiro abaixo. 1. Entre em Layout > Editar HTML e insira o seguinte código logo acima da tag </HEAD> : <link href="http://alexgorbatchev.com/pub/sh/2.1.364/styles/shCore.css" rel="stylesheet" type="text/css"> <link href="http://alexgorbatchev.com/pub/sh/2.1.364/styles/shThemeDefault.css" rel="stylesheet" type="text/css"> <script src="http://alexgorbatchev.com/pub/sh/2.1.364/scripts/shCore.js" type="text/javascript"> <script src='http://alexgorbatchev.com/pub/sh/2.1.364/scripts/shBrushCpp.js' type='text/javascript'/> <script src='http://alexgorbatchev.com/pub/sh/2.1.364/scripts/shBrushJava.js' type='t...

ODIN - Open Disk Image in a Nutshell

Imagem
Descobri um software muito interessante: ODIN - Open Disk Image in a Nutshell. Ele permite criar uma cópia de uma partição e restaurá-la posteriormente. É muito simples de usar e não é necessário instalá-lo, basta descompactar e executar. É muito útil para que gosta de testar, instalar, desinstalar diversos programas. Download: ODIN - Open Disk Image in a Nutshell

Lista de serviços do Windows

Esses dias fiz algumas alterações na inicialização de alguns serviços do Windows e depois não lembrava mais quais eu tinha habilitado/desabilitado. Para resolver esse problema, fiz um pequeno programa em Delphi que salva o status de inicialização de todos os serviços. Depois de compilá-lo, basta executar diretamente no Prompt de Comando. program SaveSvc; {$APPTYPE CONSOLE} uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Registry; var reg : TRegistry; list: TStringList; arq: text; i, n: integer; nomeArquivo: string; begin if paramstr(1) '' then nomeArquivo := paramstr(1) else nomeArquivo := 'services.reg'; // cria a lista, vazia, em memória list := TStringList.Create; // cria o registro reg := TRegistry.Create; // localização da chave reg.RootKey := HKEY_LOCAL_MACHINE; // abre a chave dos serviços reg.OpenKeyReadOnly('\SYSTEM\CurrentControlSet\Services') ; // popula a lista com todos os serviços reg.GetKeyNames...

Aplicação dos Logaritmos na Prática

Quando você está estudando logaritmos em Matemática, dificilmente alguém vai lhe dizer qual uma aplicação prática para isso. Mas saiba que existe: Suponha que você esteja construindo um gráfico com o número de acessos a um site. Num determinado período, de manhã por exemplo, o número máximo de acessos foi 43 às 11:00. À tarde, o número máximo de acessos foi 951. Para determinar qual o valor máximo no eixo y, basta utilizar a fórmula: maxY = 10 ^ (int(log(n)) + 1), onde n = 43 maxY = 10 ^ (int(log(n)) + 1) maxY = 10 ^ (int(1,6334) + 1) maxY = 10 ^ 2 maxY = 100 Já para o número de acessos feitos à tarde, ficaria assim: maxY = 10 ^ (int(log(n)) + 1), onde n = 951 maxY = 10 ^ (int(log(n)) + 1) maxY = 10 ^ (int(2,9781) + 1) maxY = 10 ^ 3 maxY = 1000 Pronto, de manhã o gráfico teria o eixo Y com o valor máximo igual a 100 e à tarde, com o valor máximo igual a 1000.