Postagens

Mostrando postagens de 2020

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

Dica rápida: compartilhar por Telegram (mensagens salvas)

Imagem
Uso o Telegram há bastante tempo, mas só recentemente descobri (mais) uma utilidade: uso ele para compartilhar páginas, artigos, tweets, etc. É só enviar para o grupo "Mensagens Salvas".  Por exemplo: no Twitter, você seleciona "Compartilhar Tweet por...", escolha "Telegram":  e depois o grupo "Mensagens Salvas":

Robô para controlar ações e criptomoedas

Imagem
Uma das vantagens de ser programador é que quando você não encontra o software que quer, você cria um.  Eu estava a procura de um robô para me ajudar no controle de ações e criptomoedas, mas não encontrei nenhum gratuito que faz o que eu quero: monitorar a cotação das ações e criptomoedas que eu tenho e me alertar quando eu tiver um determinado ganho ou perda. Queria algo simples e prático.  Como não achei nada com todas as características necessárias, criei um pra mim. Para isso usei a linguagem Go (Golang). Mas não se assuste, dividi esse post em duas partes: a primeira, uma explicação de como o programa funciona e a segunda, mais técnica.  A ideia é a seguinte: ler um arquivo com a carteira que eu tenho, com as informações necessárias para me informar quando atingir o valor pré-determinado de ganho ou perda. A cada intervalo de tempo (configurável), carregar as cotações atualizadas da carteira e recalcular tudo novamente. Se ultrapassar o limiar d

GO: "try/catch" ou "if err != nil"

Assim que comecei a programar em GO, fiquei bastante preocupado pelo fato dele não ter try/catch. Eu já estava (mal) acostumado a usar try/catch em tudo que é lugar. E isso é um erro. Bom, não chega a ser um erro, mas descobri que usar IF de maneira inteligente, o código fica muito mais claro. Como o Rob Pike, diz: " Errors are values ". Além disso, se você tem um bloco de código grande dentro de um try, logicamente terá que tratar todos os possíveis erros dentro do catch, o que visualmente não fica tão claro. Diante disso, passei a não mais encadear um IF dentro de outro (sempre que possível, lógico), e já trato (e retorno) os erros tão logo quanto possível. Parece bobo, mas nem sempre fiz isso. E agora, me parece algo tão óbvio!

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.

Dicas de como trabalhar com o Outlook

Imagem
Trabalho com o Outlook desde 2004, e só agora, em 2019 e 2020, descobri duas dicas bem interessantes de como trabalhar com ele. Na verdade, nem sei se as versões (minha versão é a Professional Plus 2013) mais antigas suportam isso que vou falar, mas creio que sim. A primeira dica, um colega de trabalho mostrou ano passado e tem a ver com Regras e Alertas e consiste em criar Categorias com cores diferentes, dependentes do encaminhamento da mensagem: - somente para mim , prioridade alta, cor verde ; - enviada também para mim , prioridade média, cor azu l ; - enviada para mim , em cópia, prioridade baixa, cor cinza . Basta criar uma regra para cada um desses encaminhamentos e sinalizar a categoria desejada. É muito útil para quem recebe dezenas ou centenas de emails diariamente e precisa priorizar a leitura. Dessa forma, uma primeira priorização já é feita automaticamente. A segunda dica, tem a ver com as pastas de pesquisa. Sabe aquelas pesquisas que você rotineiramente

A regra é clara

"A regra é clara" - Coelho, Arnaldo Cezar. Antes de começar gostaria de deixar claro que esse texto não é sobre futebol (é muito polêmico). Falarei sobre condomínio, portanto, um assunto muito mais brando. Se bem que o texto abaixo pode ser aplicado em praticamente todas as áreas, como você verá. Tem gente que não dá bola pras regras, que acha que a percepção dele está correta e não o que está escrito. Para não ir longe demais vou dar um exemplo do que ocorre num condomínio (já adianto que não é o meu). Digamos que esse sujeito more do 30º andar, e tenha dois elevadores (ia chamar de social e o de serviço, mas hoje em dia o pessoal está tão chato que vou chama-los de A e B). No elevador A você não pode andar com animais de estimação e no elevador B você pode. Não sou eu que disse isso, e sim o regimento interno. Ele vai levar seu pet (é assim que chamam agora? - sou velho, me processem) para passear, e ao fechar a porta do apartamento, percebe que: 1. O elevador A es

CloudShot: ferramenta para captura de imagem

Imagem
Existem diversas ferramentas para captura de imagem, mas a que melhor me atende atualmente é a CloudShot . É um software leve, sem frescura que faz o que se propõe: facilita a captura da tela (ou região dela), permite adicionar comentários, setas, retângulos, etc, e por fim, pode salvar na área de transferência, salvar em disco ou enviar para nuvem. Por exemplo: peguei no google uma foto aleatória qualquer e inseri uma seta em poucos segundos sem esforço algum. Segundo o site: "Make a screenshot with notes and share it in less than 20 seconds!" Automaticamente ela fica disponível no clipboard para você fazer um CTRL+V e você pode salva-la ou compartilha-la depois. E não, não ganho nada para fazer publicidade, mas o software é bom!