Postagens

Mostrando postagens de fevereiro, 2011

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ã

Exponenciação ou Potenciação

Olhando os textos que já publiquei, mais especificamente o Aplicação dos Logaritmos na Prática , lembrei de um outro uso prático para os logaritmos. Uma vez estava usando uma linguagem que não tinha exponenciação (acho que era o Delphi ou Pascal, não tenho certeza). A maneira mais prática que encontrei foi utilizar as funções EXP e LN, mais precisamente: EXP(LN(a)*n) que equivale dizer que "a" é elevado à "n-ésima" potência.

Tema para o Nokia 5310 XpressMusic

Nunca gostei dos temas dos celulares - acho que eles são muito poluídos. Por isso criei este aqui . Mais clean impossível: o fundo é todo preto sem nenhuma frescura.

Programas essenciais

Toda vez que reinstalo meu SO, tenho que reinstalar/copiar vários programas, que hoje em dia considero essenciais. Os principais estão listados abaixo, mas utilizo muito mais, é claro, incluindo aí vários arquivos BAT ou utilitários em Delphi, que me ajudam nas tarefas do dia-a-dia. Detalhe importante: são todos freeware ou open-source . 7-Zip Compactador. Ausdiskdefragportable Desfragmentador portátil. Everything Localiza arquivos e pastas pelo nome. ExamDiff Compara dois arquivos. Foxit Reader Leitor de PDFs. Free Window Registry Repair Repara as entradas inválidas do registro do Windows. HashCheck Shell Extension Calcula e verifica checksums e hashes. Notepad++ Editor de código fonte. Procexp Subistituto para o gerenciador de tarefas do Windows. PSExec Executa processos remotamente. PSKill Termina processos (locais ou remotos). PSList Lista as informações dos processos (locais ou remotos). QRegDefrag Desfragmenta o registro do Windows. Recu

Como enviar um clique para outra aplicação, em Delphi

Vou mostrar aqui como enviar um clique do mouse para uma outra aplicação. Precisei disso para automatizar um processo, já o aplicativo em questão não tinha uma opção de linha de comando para já iniciar no item que eu desejava. Além disso, ele também não aceita o controle via teclado, apenas mouse. program sendClick; uses Windows, SysUtils, Classes, Controls, ExtCtrls, StdCtrls, Messages, Dialogs; var WindowHandle : HWND; pt: TPoint; begin if (paramstr(4) > '') then begin WindowHandle := FindWindow(nil, pchar(paramstr(4))); if WindowHandle = 0 then begin ShowMessage('Program not found.'); halt;; end; end else WindowHandle := GetActiveWindow; pt.x := Round(strtoint(paramstr(2)) * (65535 / Screen.Width)); pt.y := Round(strtoint(paramstr(3)) * (65535 / Screen.Height)); Sleep(StrtoInt(paramstr(1)) * 1000); SetForegroundWindow(WindowHandle); Mouse_Event(MOUSEEVENTF_ABSOLUTE or MOUSEEVENTF_MOVE, pt.x, pt.y, 0, 0);