"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
"Eu já disse o que penso sobre matemática e programação aqui e aqui. Mas pra resumir: Quando dizemos "matemática", muita gente associa com aquilo que vemos na escola: decorar fórmulas e sair fazendo contas sem entender pra que serve. Na minha opinião é..."4 tabcoins · 0 comentário · kht · 2 anos atrás
"O que muita gente não entende (principalmente os que adoram dizer que não precisa saber matemática pra programar, "sou um dev bom pra caramba e nunca precisei", etc) é que matemática vai muito além de fazer continhas e saber as fórmulas que decoramos n..."9 tabcoins · 1 comentário · kht · 2 anos atrás
"pode receber mais de um argumento (valor_batata + valor_cerveja + valor hamburguer) Não é "mais de um argumento", é um só. Mas vamos por partes. A função foi definida assim: float half(float bill, float tax, int tip) { // etc... } Ou seja, ela possui t..."2 tabcoins · 1 comentário · kht · 2 anos atrás
"bill é diferente de bill_amount, tax é diferente de tax_percent e tip é diferente de tip_percent. Os nomes dos parâmetros de uma função só existem dentro da função. Fora dela, o que importa é que ela receba uma expressão que resulte em um valor que ela..."3 tabcoins · 3 comentários · kht · 2 anos atrás
"Eu só não vejo a necessidade de se fazer o split (que transforma a string em um array), para depois usar o filter (que cria outro array) e por fim o join (que junta tudo em uma string). Acho uma volta muito grande, sendo que dá pra fazer apenas com um..."2 tabcoins · 1 comentário · kht · 2 anos atrás
"Eu não usaria filter desta forma. Isso porque cada chamada de filter percorre o array e retorna outro. Mesmo que o filtro remova alguns elementos, ainda sim na prática vc está percorrendo várias vezes o array (no pior caso, todos os elementos), e retor..."8 tabcoins · 3 comentários · kht · 2 anos atrás
"Complementando, seguem outros posts sobre o assunto: https://www.tabnews.com.br/drigols/analise-de-loops-em-complexidade-de-algoritmos https://www.tabnews.com.br/gabrielTapes/complexidade-de-algoritmos-recursivos https://www.tabnews.com.br/rodriguesxxx..."3 tabcoins · 0 comentário · kht · 2 anos atrás
"Definir isso é bem complicado porque é algo muito subjetivo, cada um tem seu próprio critério do que seria alta qualidade. Tem gente que é mais exigente, outros nem tanto. Por exemplo, já apareceram alguns posts que contêm vários erros básicos e acabam..."2 tabcoins · 0 comentário · kht · 2 anos atrás
"acredito que o texto que acompanha o commit em sua essência resolve esse tipo de problema de compatibilidade Exatamente. E se o texto já resolve a questão, o emoji acaba sendo desnecessário. Se o emoji confunde e precisa do texto para ser esclarecido,..."2 tabcoins · 0 comentário · kht · 2 anos atrás
"O problema dos emojis é que eles não são tão "universais" como muitos imaginam. Tem muito mais problemas de compatibilidade do que um texto "normal". Por exemplo: um mesmo emoji, em cada combinação de sistema operacional + aplicação (browser, editor, e..."2 tabcoins · 2 comentários · kht · 2 anos atrás