Postagens

Mostrando postagens de 2022

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ã

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

Paradoxo Final: sem anúncios

Quando comecei o blog, em 2009, nunca pensei em ganhar dinheiro. Mas como alguns posts fizeram sucesso e tive meses que alcancei mais de 34 mil visualizações, o dinheiro começou a entrar. Quer dizer, os trocados, pois em 13 anos ganhei menos de 130 dólares.  De todo modo, em virtude disso, mantive os anúncios. E como somos acomodados por natureza, e mesmo o blog tendo muito menos visualizações, mantive os anúncios. Mas esse final de semana resolvi removê-los, afinal, não escrevo para ganhar dinheiro (até que gostaria, mas não tenho tempo), escrevo porque eu gosto. Então, espero que aproveitem a nova cara do Paradoxo Final.

Como traduzir (legendar) qualquer vídeo do Youtube

Imagem
Às vezes você encontra um vídeo no Youtube com a solução do seu problema, mas ele está em uma língua que você não domina. Normalmente, você olha se tem legenda, e na maioria dos casos ou não tem, ou só tem na própria língua do vídeo Aí você abandona o caso, certo? O que muita gente não sabe é que o próprio Youtube permite você legendar em qualquer língua (que ele tenha disponível).  O segredo é clicar em Legendas primeiro, e depois em Configurações. Assim, aparecerá a opção "Traduzir automaticamente". Ao clicar nessa opção, basta escolher o idioma da tradução. Clique no ícone Legendas e no item de menu Legendas Clique em Traduzir automaticamente Selecione o idioma Voilá! Infelizmente se você fechar o vídeo será preciso executar o processo novamente.

Dicas Go - #1 - Goroutines

Imagem
Já falei um pouco sobre concorrência em Go , mas percebi que não fui muito esclarecedor, por isso vou fazer uma outra abordagem, mais detalhada, sobre esse assunto. O código completo dos programas está no final do texto. Vamos imaginar que você queira fazer um programa que faça acesso à uma API algumas vezes e retorne o resultado como string. Para não tornar o programa muito complexo, utilizei uma pesquisa fake, que simula um retorno e gasta  100 milissegundos. Ao rodar o programa sequencial.go, vemos na tela uma saída como a abaixo: Como esperado, os resultados são listados em ordem, de "golang 0" à "golang 19". E o tempo gasto, pouco mais de 2s, também não é nenhuma surpresa (20 vezes 100 milissegundos mais algum tempo do resto do código). A coisa começa a melhorar quando rodamos o programa concorrente.go. O tempo gasto reduziu de 2s para 100ms. Qual é a mágica? São as goroutines! Se reparar bem, são poucas mudanças em relação ao código original (na verdade, essa

Iniciando o Windows Terminal com layout pré-definido (4 janelas)

Imagem
Se você gosta ou precisa usar o Windows Terminal (WT), talvez já tenha sentido a necessidade de abrir várias abas. Mas dependendo do que você faz, várias abas não são assim tão confortáveis para trabalhar, . Por exemplo: você sobe um servidor numa aba e em outro dispara comandos CURL para verificar se sua API está respondendo a contento. Nesse caso, você precisa ficar alternando entre as abas para ver o resultado. E se desse para ver tudo de uma só vez?  O melhor é que dá sim. E é fácil! Basicamente, você chama o executável do WT (wt.exe) passando alguns argumentos. Nesse link , tem uma descrição completa dos argumentos. Uma janela como a de cima, pode ser obtida com o comando: wt.exe -M -d d:\temp ; sp wsl.exe ~ ; mf left ; sp -d d:\dev ; mf right; sp -d d:\bin\monitor Uma breve descrição dos argumentos utilizados acima: -M maximiza a tela -d abre a janela em um determinado diretório sp (split-panel) divide uma janela/painel mf (move-focus) move o foco numa direção (left

Upload com PHP+JQUERY em AJAX e na mesma página

Se você já perdeu horas procurando um código em PHP que funcionasse para fazer o upload de imagens mas que fizesse isso com AJAX e ainda por cima na mesma página, espero que esse post te ajude! Crie uma pasta para armazenar as imagens que aqui chamo de upload. Copie e cole o código abaixo (testado com XAMPP localmente): <?php if(isset($_FILES['file']['name'])){    /* Pega o nome do arquivo*/    $filename = $_FILES['file']['name'];    /* Local onde sera salvo o arquivo*/    $location = "upload/".$filename;    $imageFileType = pathinfo($location,PATHINFO_EXTENSION);    $imageFileType = strtolower($imageFileType);    /* Extensoes validas */    $valid_extensions = array("jpg","jpeg","png");    /* Checa a extensao do arquivo */    if(in_array(strtolower($imageFileType), $valid_extensions)) {       /* Faz o upload */       move_uploaded_file($_FILES['file']['tmp_name'],$location);    } } ?> <f

O dia que o Australian Crawl chegou à Balneário Camboriú

Imagem
Já falei um pouco do Australian Crawl aqui . O que não contei é que fui um dos primeiros a ouvir a banda em Balneário Camboriú. Como diz o Lito, do Aviões e Músicas: "Senta que lá vem história" (pequena, mas é uma história).  Estamos falando do início dos anos 80, e naquela época para ouvir alguma música nova, era só através de fitas. E eu dia, na casa de um primo de Florianópolis, ouvi essa banda. Claro que fiz uma cópia. Mas gostei tanto que fui atrás da história de como ela chegou no Brasil: um amigo dele tinha ido à Indonésia e parece que ele conseguiu através de um australiano que estava ou morava lá. Não sei se é verdade ou não, mas é o que me contaram.  Quando voltei para casa, em Balneário Camboriú, passei a ouvir a fita diariamente (e várias vezes ao dia). E não deu outra: alguns amigos ouviram, gostaram, copiaram e daí viralizou. Tinha um amigo que falava: "Xande, tu é o primeiro cara que ouviu Australian aqui!".

Huguinho, surfe e tubarões

Imagem
Certa vez, após voltar da Oktoberfest, Huguinho decidiu surfar para curar a ressaca, pois todos sabem que Coca-Cola não cura ressaca:  Huguinho, Oktober e Coca-Cola.   Só que aquele dia, o mar estava grande e quebrando bem longe da areia.  Talvez não estivesse tão grande... Depois de pegar algumas (boas) ondas, Huguinho vai um pouco mais para outside para descansar um pouco. Não demorou muito e apareceram vários golfinhos em sua volta.  O que era Mas na hora, ainda meio grogue, a centenas de metros da areia, sozinho na imensidão do oceano, ele achou que fossem tubarões.  Até hoje não se sabe de ninguém que saiu tão rápido da água! O que Huguinho achou que era