Postagem em destaque

A incrível velocidade do Go

Imagem
Um dos motivos que gosto do Go (a linguagem de programação, não o jogo), é que ele é extremamente rápido. E não estou falando de utilizar goroutines pois aí é covardia. Estamos migrando um sistema de Coldfusion para Go e PHP e uma das rotinas insere um registro no banco de dados no início e outra no fim do processo. Pense como se fosse um log, mas um log específico para essa rotina. Dessa forma: 2023-05-18 17:45:03. 687     ... [processaImagem] Incorporando imagem 2023-05-18 17:45:03. 688     ... [processaImagem] Imagem incorporada Entre o inicio e o final do processamento levou 1ms. Até aí, tudo bem, se não fosse o fato dessa tabela ter o campo timestamp como parte da chave primária. Se reparar, o tempo é definido em milissegundos. Com o Coldfusion esse processo dura cerca de 20ms. Simplesmente migrando para Go, o tempo caiu muito, para menos de 1ms e assim, começou a dar erro de chave duplicada. A solução? Depende, sempre depende. No nosso contexto, a mais simples foi feita, pois nã

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(list) ;
assignFile(arq, nomeArquivo);
rewrite(arq);
writeln(arq, 'Windows Registry Editor Version 5.00');
writeln(arq, '');

// todos os serviços
for i := 0 to list.Count - 1 do begin
try
// tenta abrir cada um dos serviços
if reg.OpenKeyReadOnly('\SYSTEM\CurrentControlSet\Services\' + list[i]) then
// se existe o valor "Start"
if reg.ValueExists('Start') then begin
// lê o valor da chave
n := reg.ReadInteger('Start');
writeln(arq, '[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\' + list[i] + ']');
writeln(arq, '"Start"=dword:0000000' + inttostr(n));
writeln(arq, '');
end;
except
end;
end;

// Descarrega o buffer
Flush(arq);

// Fecha o arquivo
Close(arq);

end.

Comentários

Postagens mais visitadas deste blog

Netflix não mostra ícone de streaming

Google Hacking

FTP não funciona no PHP