Postagens

Postagem em destaque

Código Limpo: Nomes Significativos

Imagem
Às vezes fico com um assunto na cabeça por semanas, até achar uma situação ou um exemplo que esclareça a situação. Explico: estava querendo já a algum tempo escrever sobre boas práticas de programação, e pensei em iniciar por "Nomes Significativos", para seguir a nomenclatura utilizada pelo ótimo livro Código Limpo , de Robert C. Martin.  Entretanto, ficava sempre amarrado em exemplos que pareciam ser bons, mas que ainda eu não tinha visto a utilidade prática.  Antes de continuar preciso explicar que tenho um hábito de anotar num bloco de papel todas as ideias que surgem, pois elas desaparecem com a mesma velocidade que aparecem. Para isso tenho um bloco e caneta na mesa de cabeceira (além de um no banheiro), pois esses são os lugares onde tenho mais ideias... Vai entender... Semana passada, estava com um problema bem complicado e tive uma ideia: "vou criar uma variável para indicar que quando um arquivo tiver um certo tamanho deve gravar algumas informações no log. Pois

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ã

ABS (Arquitetura do Bom Senso): A Importância do Bom Senso na Arquitetura de Software

Durante as últimas semanas acompanhei algumas discussões sobre arquitetura de software e clean code. Por isso resolvi escrever esse artigo. A arquitetura de software é fundamental no desenvolvimento de sistemas de alta qualidade e desempenho. É responsável por definir a estrutura e organização do código-fonte, as interações entre os diferentes componentes e as diretrizes para garantir a escalabilidade, manutenibilidade e extensibilidade do sistema. No entanto, além de técnicas e padrões estabelecidos, existe um fator crucial que muitas vezes é negligenciado: o bom senso. Neste artigo, exploraremos a importância do bom senso na arquitetura de software, apresentando a ideia da ABS (Arquitetura do Bom Senso) e como ela pode impactar positivamente os projetos de desenvolvimento. O que é a ABS (Arquitetura do Bom Senso)? A ABS (Arquitetura do Bom Senso) é uma abordagem que destaca a importância de aplicar o bom senso durante o processo de arquitetura de software. Ela reconhece que as melhor

Atual Momento da IA: ChatGPT

A inteligência artificial é um tema que vem ganhando cada vez mais espaço na nossa sociedade e tem a capacidade de mudar a forma como vivemos e trabalhamos. Atualmente, estamos testemunhando um marco na evolução da IA, com modelos como o ChatGPT liderando o caminho. O ChatGPT é um modelo de linguagem de ponta desenvolvido pela OpenAI. Ele foi treinado em milhões de páginas da web e possui uma incrível capacidade de compreender e gerar texto natural. Isso significa que ele pode responder a perguntas, escrever textos e até mesmo criar conversas com humanos, sem que eles percebam a diferença. O sucesso do ChatGPT é resultado de anos de pesquisa e desenvolvimento, e ele está mudando a forma como vemos a inteligência artificial. Antes, modelos de IA eram incapazes de compreender o significado por trás das palavras e apenas respondiam com base em padrões previamente programados. Agora, com o ChatGPT, a IA tem a capacidade de aprender e evoluir ao longo do tempo, tornando-se cada vez mais hu

Dica rápida: .gitignore não "funciona"

Caso você tenha um arquivo que já estava versionado, e você agora quer removê-lo do versionamento, é necessário limpar o cache local do repositório. Para isso basta executar: git rm -r --cached <path_e_nome_arquivo>

Falha ao acessar a API da Binance

De uns tempos pra cá, meu programa que monitora o preço de ações e criptomoedas (tenho um post sobre isso), passou a receber a mensagem:  "Service unavailable from a restricted location according to 'b. Eligibility' in https://www.binance.com/en/terms. Please contact customer service if you believe you received this message in error."  Depois de muito pesquisar, descobri o problema: meu programa fica hospedado nos EUA, e eu uso o endereço base https://api.binance.com . A solução é bem simples, troque o endereço base por https://api.binance.us . O único porém é que alguns assets não existem no novo endereço. Por exemplo:  https://api.binance.us/api/v3/ticker/24hr?symbol=ETHBRL . Nesse caso, a única solução é trocar o ETHBRL por ETHUSD.

VSCode não roda?

Esses dias fiz uma atualização do VSCode (gosto de manter os softwares atualizados) e ele simplesmente não abriu mais. Clicava no ícone e ele abria e já fechava em seguida. Depois de muita pesquisa, não descobri o problema. Daí comecei a operar em modo desespero: Primeiro, tentei acessar sem nenhum extensão, pois imaginei que poderia ser um problema de compatibilidade de uma extensão com a nova versão do VSCode. Para isso rodei o comando: code --disable-extensions E nada. Ele simplesmente não dava sinal de vida. Em tempo: se precisar desinstalar uma extensão problemática via linha de comando use: code --uninstall-extersion <ext-id> O <ext-id> você consegue com o comando: code --list-extensions Depois, tentei baixar versões mais antigas, mas também não adiantou. https://code.visualstudio.com/updates Nessas horas a experiência conta muito: resolvi renomear o arquivo settings.json, e deu certo. Ele estava corrompido. Daí foi fácil descobrir o problema do arquivo e corrigir. Es