Postagens

Mostrando postagens de abril, 2020

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ã

Concorrência com GO

Imagem
Comecei a programar com GO há pouco tempo. E logo me deparei com algumas dúvidas de como usar a concorrência. Pesquisei bastante e encontrei algumas soluções muito interessantes, as quais compartilho aqui. Sugiro você primeiro assistir esse video do Rob Pike no Google I/O 2012: https://youtu.be/f6kdp27TYZs . Os programas que ele mostra podem ser encontrados aqui: https://github.com/kevchn/go-concurrency-patterns . E a apresentação que ele utilizou está aqui: https://talks.golang.org/2012/concurrency.slide Outros links que li e achei úteis sobre concorrência em GO: https://golangbot.com/buffered-channels-worker-pools/ https://medium.com/trainingcenter/goroutines-e-go-channels-f019784d6855 Por fim, criei um exemplo ( https://github.com/alexsetta/seqVsConc ), no qual comparo o desempenho de duas funções que fazem a mesma coisa: acessar um slice de URLs e retornar o StatusCode de cada uma. A diferença é que uma função faz a busca sequencial e a outra de forma concorrente. Na prática, o t

Coldfusion

Em 2004 tive que aprender uma nova linguagem de programação para o meu trabalho: Coldfusion. Na época eu usava Delphi e Visual Fox Pro e sendo sincero, nunca havia ouvido falar de Coldfusion! Minha sorte que a curva de aprendizado do Coldfusion é extremamente rápida e em pouco tempo já estava dando manutenção e desenvolvendo software em Coldfusion. Hoje, 16 anos depois, vejo um twitter do Ben Nadel ( https://twitter.com/BenNadel/status/1249679353660739585 ) falando sobre porque gosta de Coldfusion. Não vou falar porque eu gosto de Coldfusion, até porque o Ben fala com mais propriedade que eu, mas não foge muito do que ele disse. Infelizmente, minha empresa está abandonando o Coldfusion, mas sempre vou ter um carinho especial por essa linguagem.