"float não é adequado para valores monetários. Os números de ponto flutuante são imprecisos e possuem várias nuances difíceis de perceber. Se quiser se aprofundar mais, aqui tem vários links sobre o assunto - e cada um desses links tem vários outros, sã..."4 tabcoins · 1 comentário · kht · 2 anos atrás
"Ah, os velhos tempos (não necessariamente "bons" - algumas coisas até que eram sim, outras não). Na faculdade usei Turbo Pascal na matéria de Introdução à Programação, todos diziam que "Pascal é uma linguagem bem didática", etc. De fato era bem simples..."8 tabcoins · 0 comentário · kht · 2 anos atrás
"Muito bom! Complementando, todas estas opções de formatação podem ser encontradas na documentação (é bem ampla, com várias outras opções, sugiro a leitura). Um detalhe interessante é que os parâmetros de formatação (tamanho, alinhamento, etc) podem ser..."3 tabcoins · 0 comentário · kht · 2 anos atrás
"Como saber se sou pleno? Não tem como responder de forma objetiva, simplesmente porque não existe uma definição oficial desses "níveis" (júnior, pleno, sênior, e qualquer outro que inventarem). Então cada um tem sua própria definição, com critérios que..."6 tabcoins · 0 comentário · kht · 2 anos atrás
"em menos de dois anos e meio que não programava nada Mas vc mexia muito com Python? Porque as características que vc relatou não são tão recentes assim... for i in i range(a,quantidade) Isso nunca foi uma sintaxe válida em Python, a menos que seja um e..."2 tabcoins · 1 comentário · kht · 2 anos atrás
"Bom, mudando um pouco de assunto, uma dica que posso dar é que - pelo menos no último exemplo - vc está não está usando map da melhor maneira. Quer dizer, até "funciona", mas não é a ferramenta adequada para este caso. A ideia do map é executar algo co..."2 tabcoins · 0 comentário · kht · 2 anos atrás
"Vc pode compartilhar o código completo? Ou pelo menos algum exemplo reduzido que dê o mesmo resultado. Porque sem isso não tem como analisar o que está fazendo com que um seja mais rápido que outro, nem o que de fato está sendo comparado. Em geral, um..."1 tabcoin · 2 comentários · kht · 2 anos atrás
"O problema de qualquer critério que for definido é que não tem como escapar da subjetividade. Sempre vai ter um componente subjetivo, que depende muito do background e da experiência prévia de cada um. Por exemplo, perguntas sobre algum assunto batido..."3 tabcoins · 1 comentário · kht · 2 anos atrás
"Pessoas diferentes encaram as publicações de formas diferentes, então votam de maneiras diferentes. Perfeito. Nem sempre todo mundo vai concordar com todo mundo. O que é bom pra um pode ser muito ruim pra outro. Tem vezes que vejo posts que eu acho bon..."3 tabcoins · 3 comentários · kht · 2 anos atrás
"Só um detalhe, que é uma confusão que muitos fazem: complexidade não mede o tempo de execução. O único jeito de saber o tempo exato que um programa leva para executar é testando-o em condições reais. O que funções como o Big-O fazem é determinar o "tra..."2 tabcoins · 0 comentário · kht · 2 anos atrás
"O WebStorm tem uma versão trial de 30 dias, por que vc não instala e testa? Assim vc mesmo poderá ver se vale a pena ou não - inclusive, usar é a melhor maneira de decidir isso, já que a escolha de IDE costuma ser algo pessoal, vai da preferência de ca..."3 tabcoins · 1 comentário · kht · 2 anos atrás
"Muito bom! Complementando: sobre os comandos switch e restore, eu já fiz este post. Vale lembrar que por muito tempo a documentação oficial (aqui e aqui) dizia que eles eram comandos experimentais e poderiam mudar. De qualquer forma, é interessante con..."5 tabcoins · 1 comentário · kht · 2 anos atrás
"vão todos os arquivos do meu repositório local e não apenas os que eu selecionei no git add Mas a ideia do git push é justamente essa: enviar para o repositório remoto todas as alterações do seu branch local que ainda não estão lá. Aqui tem uma explica..."1 tabcoin · 0 comentário · kht · 2 anos atrás
"Outra opção interessante deste comando é mudar o nome do branch inicial. Por padrão, git init cria o branch "master". Mas é possível alterar o nome do branch inicial usando a opção --initial-branch ou -b. Por exemplo, se eu quiser que seja "main": : A..."5 tabcoins · 0 comentário · kht · 2 anos atrás
"Só pra complementar, além de transformar o número em string, tem também a solução matemática. A mais comum que se vê por aí é a de construir o número inverso e comparar com o original: // gerar o número inverso de "num" e comparar com o original functi..."4 tabcoins · 0 comentário · kht · 2 anos atrás
"Sobre matemática, já falei aqui e aqui. Sugiro ler tudo para um panorama mais completo, mas pra resumir um ponto essencial: matemática não é só aquilo que vemos na escola (decorar fórmulas e fazer continhas), vai muito além disso. Um trecho do segundo..."2 tabcoins · 0 comentário · kht · 2 anos atrás
"Uma das utilidades de closure é o caso clássico de precisar usar uma função anônima de callback dentro de um loop. Exemplo: for (var i = 0; i < 5; i++) { setTimeout(function () { console.log(i) }, 1000 * i); } Ou seja, em cada iteração do for, eu chamo..."1 tabcoin · 1 comentário · kht · 2 anos atrás
"Sobre os data attributes, o propósito deles é simplesmente de armazenar dados customizados associados a um elemento, quando não há nenhum outro atributo que sirva. Isso é descrito pela própria especificação do HTML: Custom data attributes are intended..."2 tabcoins · 0 comentário · kht · 2 anos atrás
"Pra mim, qualquer um que defenda ou leve a sério esses pacotes tipo is-odd já é desqualificado na hora. E pra completar o show de horrores, o is-even tem como dependência o is-odd, inclusive seu código fonte é: module.exports = function isEven(i) { ret..."1 tabcoin · 0 comentário · kht · 2 anos atrás
"Complementando... O ASCII original só tinha 128 caracteres. Aí perceberam que tinha mais 128 "sobrando", e que ainda sim caberia em um byte. Vários tiveram essa ideia ao mesmo tempo e cada um criou seu próprio mapeamento - como vc disse, cada valor ent..."3 tabcoins · 1 comentário · kht · 2 anos atrás
"Eu não diria que são um lixo completo, apenas que são ferramentas que têm sua utilidade, mas que ao longo do tempo foram extremamente abusadas (ou seja, usadas em contextos inadequados, nos quais não eram a melhor solução). O fato de terem sido moda po..."2 tabcoins · 0 comentário · kht · 2 anos atrás
"Muito bom, mas só um detalhe sobre o RSA. Foi dito que: 1. chave pública, que é capaz apenas de encriptar. 2. chave privada, que é capaz apenas de decriptar. Na verdade, ambas as chaves servem para encriptar e decriptar (e o que é encriptado com uma, s..."6 tabcoins · 1 comentário · kht · 2 anos atrás
"Muito bom! Só pra complementar, a função também poderia ser assim: function verificarInterseccao(a1, a2, b1, b2) { return !((b2 a2)); } Ou seja, se uma das condições for verdade, retornará falso. Mas quando eu tenho algo como !(cond1 || cond2), eu poss..."4 tabcoins · 2 comentários · kht · 2 anos atrás
"Primeiramente parabéns por não negligenciar matemática, pois ignorá-la é um erro que a grande maioria comete. Só fica o alerta que matemática vai muito além de fazer contas e decorar fórmulas (que infelizmente é a abordagem da escola), e que programaçã..."6 tabcoins · 0 comentário · kht · 2 anos atrás
"Seguem algumas sugestões. Coloque ponto-e-vírgula no final das linhas. Pode parecer "frescura", e sei que o JavaScript "aceita" o código sem ponto e vírgula e "funciona", e tem até muita gente que ensina a não usar. Mas isso evita algumas situações biz..."5 tabcoins · 1 comentário · kht · 2 anos atrás
"Podemos dividir o algoritmo em dois casos: se os caracteres devem estar na mesma ordem da palavra (ou na ordem inversa), ou se podem estar embaralhados. Cada um dos casos leva a um algoritmo diferente. De qualquer forma, primeiro concentre-se em fazer..."8 tabcoins · 0 comentário · kht · 2 anos atrás
"Só um detalhe (porque sou um cara chato e pedante): atob e btoa são funções para converter de/para Base64. E Base64 não é um algoritmo de hash. Base64 é reversível (vc consegue voltar para a string original), mas um algoritmo de hash não é. Ah, e Base6..."3 tabcoins · 1 comentário · kht · 2 anos atrás
"Complementando, optar por usar ou não arrow function vai muito além de "simplificar" o código ou deixá-lo mais curto. Na verdade, existem várias outras diferenças muito mais importantes, citadas nos links abaixo (inclusive, "deixar o código mais curto"..."2 tabcoins · 0 comentário · kht · 2 anos atrás
"Complementando, também é possível usar a desestruturação em argumentos de uma função: function fazAlgo([ pessoa, acao ]) { console.log(${pessoa} ${acao}); } fazAlgo([ 'Você' ]); // Você undefined fazAlgo([ 'Você', 'quer' ]) // Você quer Ou com valores..."6 tabcoins · 1 comentário · kht · 2 anos atrás
"Só um detalhe: fgets lê os dados até encontrar uma quebra de linha ou ler a quantidade máxima de caracteres. Isso quer dizer que se tiver uma linha maior do que MAX_LINE_LEN, ele não lerá a linha toda. Uma abordagem mais garantida é ir lendo os caracte..."6 tabcoins · 1 comentário · kht · 2 anos atrás