<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>kenji.blog</title><link>http://kenji.blog/pt/</link><description>Recent content on kenji.blog</description><generator>Hugo -- gohugo.io</generator><language>pt</language><copyright>kenjinote</copyright><lastBuildDate>Sat, 05 Sep 2026 22:10:00 +0900</lastBuildDate><atom:link href="http://kenji.blog/pt/index.xml" rel="self" type="application/rss+xml"/><item><title>[Análise Completa] O que é um Computador Quântico? ~ Princípios Finais da Computação do Zero ~</title><link>http://kenji.blog/pt/p/quantum-computer-basics/</link><pubDate>Sat, 05 Sep 2026 22:10:00 +0900</pubDate><guid>http://kenji.blog/pt/p/quantum-computer-basics/</guid><description>&lt;img src="http://kenji.blog/p/quantum-computer-basics/quantum_basics_eyecatch_1788613712487.jpg" alt="Featured image of post [Análise Completa] O que é um Computador Quântico? ~ Princípios Finais da Computação do Zero ~" />&lt;h2 id="introdução-a-mudança-de-paradigma-da-computação-trazida-pelos-computadores-quânticos">Introdução: A &amp;ldquo;Mudança de Paradigma da Computação&amp;rdquo; Trazida pelos Computadores Quânticos
&lt;/h2>&lt;p>Nos últimos anos, quase não passa um dia sem vermos a palavra &amp;ldquo;computador quântico&amp;rdquo; nas notícias e artigos de tecnologia. Histórias que parecem de filmes de ficção científica, como &amp;ldquo;terminar em poucos minutos cálculos que levariam milhares de anos nos supercomputadores atuais&amp;rdquo; e &amp;ldquo;todas as tecnologias de criptografia atuais podem ser quebradas&amp;rdquo;, são contadas como fatos. Desde grandes empresas de TI como Google, IBM e Microsoft, até universidades e startups do mundo todo, há uma forte competição pela aplicação prática desta tecnologia dos sonhos.&lt;/p>
&lt;p>No entanto, se perguntarmos &amp;ldquo;Afinal de contas, o que é um computador quântico?&amp;rdquo;, poucas pessoas conseguirão responder com precisão. Muitos têm a vaga imagem de que é &amp;ldquo;uma caixa mágica que pode calcular todas as combinações simultaneamente&amp;rdquo;, mas, estritamente falando, isso não é correto.&lt;/p>
&lt;p>Neste artigo, explicaremos desde o básico, de forma completa e profissional, mas fácil de entender, como o computador quântico difere fundamentalmente do computador clássico (os PCs e smartphones que usamos normalmente) e como ele utiliza fenômenos misteriosos da mecânica quântica, como &lt;strong>Superposição&lt;/strong> (Superposition), &lt;strong>Emaranhamento Quântico&lt;/strong> (Entanglement) e &lt;strong>Portas Quânticas&lt;/strong> (Quantum gates) para realizar cálculos. Quando você terminar de ler este artigo, deverá compreender claramente o verdadeiro potencial e os desafios atuais dos computadores quânticos.&lt;/p>
&lt;hr>
&lt;h2 id="capítulo-1-a-diferença-decisiva-entre-computadores-clássicos-e-quânticos">Capítulo 1: A Diferença Decisiva entre Computadores Clássicos e Quânticos
&lt;/h2>&lt;p>Para entender o mecanismo de um computador quântico, primeiro precisamos revisar como operam os &amp;ldquo;computadores clássicos&amp;rdquo; que usamos atualmente.&lt;/p>
&lt;h3 id="tabela-comparativa-computador-clássico-vs-computador-quântico">Tabela Comparativa: Computador Clássico vs Computador Quântico
&lt;/h3>&lt;table>
&lt;thead>
&lt;tr>
&lt;th>Item&lt;/th>
&lt;th>Computador Clássico&lt;/th>
&lt;th>Computador Quântico&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>&lt;strong>Unidade Básica&lt;/strong>&lt;/td>
&lt;td>Bit (0 ou 1)&lt;/td>
&lt;td>Qubit (superposição de 0 e 1)&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;strong>Expressão de Estado&lt;/strong>&lt;/td>
&lt;td>Determinística&lt;/td>
&lt;td>Probabilística (não determinada até a observação)&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;strong>Método de Cálculo&lt;/strong>&lt;/td>
&lt;td>Processamento sequencial (requer núcleos físicos para paralelização)&lt;/td>
&lt;td>Paralelismo quântico (manipula exponencialmente estados de uma só vez)&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;strong>Melhores Aplicações&lt;/strong>&lt;/td>
&lt;td>Operações aritméticas, processamento de dados do dia a dia&lt;/td>
&lt;td>Fatoração de primos, cálculos de química quântica&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;strong>Tolerância a Erros&lt;/strong>&lt;/td>
&lt;td>Muito forte&lt;/td>
&lt;td>Muito fraca (requer temperaturas criogênicas ou correção de erros)&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;h3 id="o-mundo-dos-computadores-clássicos-o-bit-como-0-ou-1">O Mundo dos Computadores Clássicos: O &lt;strong>Bit&lt;/strong> como &amp;ldquo;0&amp;rdquo; ou &amp;ldquo;1&amp;rdquo;
&lt;/h3>&lt;p>Os computadores clássicos representam todas as informações em um de dois estados: &amp;ldquo;0&amp;rdquo; ou &amp;ldquo;1&amp;rdquo;. Isso é chamado de &lt;strong>Bit&lt;/strong> . Fisicamente, é representado por se a voltagem de um transistor em um chip semicondutor é alta (1) ou baixa (0).
As fotos em alta resolução do seu smartphone, o texto que você está lendo agora e os seus vídeos favoritos no YouTube são, em última análise, reduzidos a uma vasta série de &amp;ldquo;zeros e uns&amp;rdquo;. A computação nada mais é do que o processo de aplicação de portas lógicas básicas, como AND, OR e NOT, a essa sequência de 0 e 1.
Este é um mundo muito confiável e determinístico. Se a entrada for a mesma, a saída será invariavelmente a mesma.&lt;/p>
&lt;h3 id="o-mundo-dos-computadores-quânticos-o-qubit-que-é-0-e-também-1">O Mundo dos Computadores Quânticos: O &lt;strong>Qubit&lt;/strong> que é &amp;ldquo;0&amp;rdquo; e também &amp;ldquo;1&amp;rdquo;
&lt;/h3>&lt;p>Por outro lado, a unidade mínima de informação de um computador quântico é chamada de &lt;strong>Qubit&lt;/strong> (Quantum bit).
A principal característica de um Qubit não é apenas poder estar em um estado de &amp;ldquo;0&amp;rdquo; ou &amp;ldquo;1&amp;rdquo; como um bit clássico, mas também de poder estar em um estado onde &amp;ldquo;0 e 1 se misturam com uma certa probabilidade&amp;rdquo;. Isso é chamado de &lt;strong>&amp;ldquo;Superposição&amp;rdquo;&lt;/strong> (Superposition).&lt;/p>
&lt;p>Por exemplo, se um bit clássico fosse uma moeda com a face voltada para &amp;ldquo;cara&amp;rdquo; ou &amp;ldquo;coroa&amp;rdquo;, o Qubit seria frequentemente comparado a uma &amp;ldquo;moeda que continua girando no ar&amp;rdquo;. A moeda girando não é cara nem coroa, mas ambos os estados estão sobrepostos. No instante em que a moeda cai no chão e para (o que é chamado de &amp;ldquo;observação&amp;rdquo; na mecânica quântica), determina-se pela primeira vez se é &amp;ldquo;cara&amp;rdquo; ou &amp;ldquo;coroa&amp;rdquo;.&lt;/p>
&lt;p>Os computadores quânticos incorporam essa propriedade de que &amp;ldquo;o estado não é determinado até ser observado&amp;rdquo;, típica do mundo microscópico (mecânica quântica), diretamente no processo de processamento da informação.&lt;/p>
&lt;hr>
&lt;h2 id="capítulo-2-as-3-propriedades-quânticas-que-mudam-radicalmente-a-computação">Capítulo 2: As 3 Propriedades Quânticas que Mudam Radicalmente a Computação
&lt;/h2>&lt;p>A fonte da incrível capacidade de cálculo dos computadores quânticos não é a alta frequência de clock ou os componentes miniaturizados. É o fato de usarem as próprias leis da física como recurso de cálculo. Os três fenômenos quânticos seguintes são fundamentais.&lt;/p>
&lt;h3 id="1-superposição-superposition-e-a-quantidade-exponencial-de-informação">1. Superposição (Superposition) e a Quantidade Exponencial de Informação
&lt;/h3>&lt;p>Como mencionado anteriormente, o Qubit pode manter os estados 0 e 1 ao mesmo tempo. Se um único Qubit é a &amp;ldquo;superposição de 0 e 1&amp;rdquo;, o que acontece quando aumentamos o número de Qubits?&lt;/p>
&lt;ul>
&lt;li>1 Qubit: superposição de 2 estados (0, 1)&lt;/li>
&lt;li>2 Qubits: superposição de 4 estados (00, 01, 10, 11)&lt;/li>
&lt;li>3 Qubits: superposição de 8 estados&lt;/li>
&lt;li>&lt;strong>N Qubits: superposição de $2^N$ padrões&lt;/strong>&lt;/li>
&lt;/ul>
&lt;p>Com apenas 50 Qubits, é possível reter $2^{50}$ (cerca de 1 quatrilhão) de estados simultaneamente. E com apenas 300 Qubits, pode-se manter de uma só vez um número de padrões igual a $2^{300}$ (mais do que o número de átomos do universo inteiro!). Essa capacidade de retenção exponencial de informações é a base do potencial dos computadores quânticos. Com um computador clássico, seria fisicamente impossível armazenar em memória mais estados do que átomos existem no universo.&lt;/p>
&lt;h3 id="2-emaranhamento-quântico-entanglement-a-assustadora-ação-à-distância">2. Emaranhamento Quântico (Entanglement): A Assustadora Ação à Distância
&lt;/h3>&lt;p>O emaranhamento quântico é um fenômeno tão estranho que Albert Einstein o chamou de &amp;ldquo;assustadora ação à distância&amp;rdquo; (Spooky action at a distance) e nunca o aceitou durante toda a sua vida.&lt;/p>
&lt;p>Quando vários Qubits entram em um estado de &amp;ldquo;emaranhamento quântico&amp;rdquo;, eles ficam tão fortemente interligados que, &lt;strong>&amp;ldquo;se o estado de um for determinado, o estado do outro será instantaneamente determinado, não importa a distância que os separe&amp;rdquo;&lt;/strong> .&lt;/p>
&lt;p>Por exemplo, suponha que haja 2 Qubits emaranhados, A e B (cada um em um estado de superposição de 0 e 1). Se observarmos A e o resultado for &amp;ldquo;0&amp;rdquo;, o estado de B também se tornará determinado instantaneamente (por exemplo, sempre para &amp;ldquo;1&amp;rdquo;), superando a velocidade da luz, que é o limite de velocidade da transmissão de informações.
Nos computadores quânticos, ao usar esse emaranhamento quântico, expressam-se correlações complexas entre vários Qubits e realiza-se um processamento de informações altamente paralelo. Sem o emaranhamento, a capacidade de cálculo dos computadores quânticos seria praticamente a mesma dos computadores clássicos.&lt;/p>
&lt;h3 id="3-interferência-quântica-quantum-interference-a-magia-que-revela-a-resposta">3. Interferência Quântica (Quantum Interference): A Magia que Revela a Resposta
&lt;/h3>&lt;p>Você pode pensar: &amp;ldquo;Se é possível manter todos os padrões ao mesmo tempo, não poderia computá-los todos em paralelo e obter a resposta em um instante?&amp;rdquo;. Este é o mal-entendido mais comum sobre computadores quânticos.
Mesmo que o cálculo seja executado no estado de superposição, a resposta só pode ser obtida por meio da &amp;ldquo;observação&amp;rdquo;. Contudo, no momento da observação, o estado se colapsará em um dos $2^N$ padrões de forma aleatória. Isso lhe dará apenas uma resposta aleatória.&lt;/p>
&lt;p>Aqui entra a &lt;strong>&amp;ldquo;Interferência Quântica&amp;rdquo;&lt;/strong> (Interference). Isso utiliza o princípio de que, quando ondas colidem, elas se amplificam onde as fases se alinham e se cancelam onde estão defasadas (essencialmente, o mesmo princípio de um fone de ouvido com cancelamento de ruído).&lt;/p>
&lt;p>Excelentes &amp;ldquo;algoritmos quânticos&amp;rdquo; manipulam habilidosamente os estados quânticos durante a computação de modo que &lt;strong>&amp;ldquo;amplifiquem a amplitude de probabilidade dos estados (ondas) que conduzem à resposta correta&amp;rdquo;&lt;/strong> e &lt;strong>&amp;ldquo;cancelem a amplitude de probabilidade dos estados que conduzem às respostas erradas&amp;rdquo;&lt;/strong> . Por fim, ao observar, eles manipulam as coisas para que a &amp;ldquo;resposta correta&amp;rdquo; apareça com probabilidade de quase 100%. Projetar bem esse processo de interferência é a verdadeira essência da programação quântica.&lt;/p>
&lt;hr>
&lt;h2 id="capítulo-3-como-eles-calculam-portas-quânticas-e-circuitos-quânticos">Capítulo 3: Como Eles Calculam? &amp;ldquo;Portas Quânticas&amp;rdquo; e &amp;ldquo;Circuitos Quânticos&amp;rdquo;
&lt;/h2>&lt;p>Assim como os computadores clássicos usam portas lógicas (AND, OR, NOT, etc.) para progredir nos cálculos, os computadores quânticos avançam operando Qubits através de &lt;strong>&amp;ldquo;Portas Quânticas&amp;rdquo;&lt;/strong> (Quantum Gates). Uma combinação de várias portas quânticas é chamada de &lt;strong>Circuito Quântico&lt;/strong> (Quantum Circuit).&lt;/p>
&lt;p>O estado de um Qubit é representado matematicamente como um ponto na superfície de uma esfera tridimensional chamada &amp;ldquo;Esfera de Bloch&amp;rdquo;. O polo norte é &amp;ldquo;0&amp;rdquo;, o polo sul é &amp;ldquo;1&amp;rdquo; e no equador está &amp;ldquo;um estado de superposição em que 0 e 1 estão igualmente sobrepostos&amp;rdquo;. As portas quânticas são simplesmente operações que giram esse estado (vetor) na superfície dessa esfera.&lt;/p>
&lt;p>Aqui estão algumas das portas quânticas mais representativas:&lt;/p>
&lt;h3 id="1-porta-hadamard-porta-h">1. Porta Hadamard (Porta H)
&lt;/h3>&lt;p>Não existente em computadores clássicos, esta é a porta mais fundamental exclusiva para computadores quânticos. Quando um Qubit totalmente no estado &amp;ldquo;0&amp;rdquo; passa pela porta H, ele cria um &amp;ldquo;estado de superposição perfeita&amp;rdquo; onde 0 e 1 são observados com probabilidade de exatamente a metade (um ponto no equador da Esfera de Bloch). Muitos algoritmos começam aplicando essa porta H a todos os Qubits como etapa de inicialização para computação quântica.&lt;/p>
&lt;h3 id="2-portas-de-pauli-portas-x-y-z">2. Portas de Pauli (Portas X, Y, Z)
&lt;/h3>&lt;p>Estas são portas que incluem operações equivalentes à porta NOT de um computador clássico (que inverte 0 para 1 e 1 para 0). Na Esfera de Bloch, equivalem a rotações de 180 graus em torno dos eixos X, Y e Z. A porta X, em particular, inverte o polo norte (0) para o polo sul (1), por isso tem exatamente o mesmo efeito da porta NOT clássica. A porta Z serve para inverter a &amp;ldquo;fase (algo parecido com o tempo da onda)&amp;rdquo; da superposição, o que é extremamente importante para induzir a interferência quântica.&lt;/p>
&lt;h3 id="3-porta-cnot-porta-not-controlada">3. Porta CNOT (Porta NOT Controlada)
&lt;/h3>&lt;p>É uma porta de suma importância para criar o emaranhamento quântico. Ela usa 2 Qubits (um bit de controle e um bit alvo).
A operação é: &amp;ldquo;Se o bit de controle for 1, ele inverte (porta X) o estado do bit alvo. Se o bit de controle for 0, nada acontece&amp;rdquo;. À primeira vista parece uma ramificação de condição IF simples, mas o que aconteceria se o bit de controle estivesse em um &amp;ldquo;estado de superposição de 0 e 1&amp;rdquo;? O bit alvo tornar-se-ia &amp;ldquo;um estado sobreposto onde a inversão e a não-inversão coexistem&amp;rdquo;, e o destino dos 2 bits ficará perfeitamente associado. Impressionantemente, os dois Qubits ficam &amp;ldquo;emaranhados&amp;rdquo;.&lt;/p>
&lt;p>Ao dispor e aplicar essas portas em sequência, da esquerda para a direita, como em uma partitura musical, algoritmos complexos podem ser executados.&lt;/p>
&lt;hr>
&lt;h2 id="capítulo-4-quais-são-os-pontos-fortes-e-fracos-dos-computadores-quânticos">Capítulo 4: Quais são os Pontos Fortes e Fracos dos Computadores Quânticos?
&lt;/h2>&lt;p>Aqui está um fato importante. Um computador quântico não é onipotente.
Em tarefas corriqueiras como navegar na web, renderizar vídeos, executar macros no Excel ou usar aplicativos genéricos de smartphones, os computadores quânticos provavelmente nunca superarão os computadores clássicos. O processamento sequencial dessas tarefas é bem adequado aos computadores clássicos altamente otimizados e muito mais baratos e rápidos disponíveis atualmente.&lt;/p>
&lt;p>O verdadeiro valor de um computador quântico é demonstrado apenas para &lt;strong>&amp;ldquo;problemas específicos em que as combinações de cálculo aumentam exponencialmente em um computador clássico, levando tanto tempo quanto a idade do universo&amp;rdquo;&lt;/strong> . Isso é chamado de &amp;ldquo;Supremacia Quântica&amp;rdquo; (Quantum Supremacy) ou &amp;ldquo;Vantagem Quântica&amp;rdquo; (Quantum Advantage).&lt;/p>
&lt;h3 id="especialidades-dos-computadores-quânticos-aplicativos-matadores">Especialidades dos Computadores Quânticos (Aplicativos Matadores)
&lt;/h3>&lt;h4 id="1-fatoração-de-primos-e-decodificação-de-criptografia-algoritmo-de-shor">1. Fatoração de Primos e Decodificação de Criptografia (Algoritmo de Shor)
&lt;/h4>&lt;p>Atualmente, métodos como a criptografia RSA, que protegem comunicações seguras pela Internet (como transações com cartões de crédito), baseiam-se na premissa de que &amp;ldquo;é virtualmente impossível (leva uma quantidade enorme de tempo) para um computador clássico fatorar números inteiros massivos em números primos&amp;rdquo;.
No entanto, ao usar o &amp;ldquo;Algoritmo de Shor&amp;rdquo; inventado pelo matemático Peter Shor em 1994, os computadores quânticos podem inteligentemente usar a interferência para resolver esse problema a uma velocidade formidável (tempo polinomial). Em virtude disso, existe o risco do colapso futuro dos sistemas criptográficos vigentes, forçando governos e bancos centrais em todo o mundo a se apressarem na transição para a &amp;ldquo;Criptografia Pós-Quântica&amp;rdquo; (Post-Quantum Cryptography).&lt;/p>
&lt;h4 id="2-cálculo-de-química-quântica-desenvolvimento-de-novos-materiais-e-remédios">2. Cálculo de Química Quântica, Desenvolvimento de Novos Materiais e Remédios
&lt;/h4>&lt;p>O comportamento das moléculas e átomos na natureza segue fundamentalmente as regras da mecânica quântica. Ao tentar simular o comportamento de moléculas complexas num computador clássico, as combinações das interações de elétrons explodem de tal maneira que a simulação até mesmo de pequenas moléculas bate no limite de computação.
Como afirmou o Prêmio Nobel de Física Richard Feynman: &amp;ldquo;Se quiser simular a natureza, tem de se valer da mecânica quântica&amp;rdquo;, o computador quântico mostra um poder nativo sem precedentes nas simulações físicas e químicas de materiais. Aguardam-se grandes saltos no desenvolvimento de novos remédios, descoberta de materiais supercondutores à temperatura ambiente, painéis solares mais eficientes e síntese de fertilizantes mais eficientes.&lt;/p>
&lt;h4 id="3-otimização-combinatória-e-problemas-de-busca-algoritmo-de-grover">3. Otimização Combinatória e Problemas de Busca (Algoritmo de Grover)
&lt;/h4>&lt;p>Para problemas em que a solução ótima tem de ser encontrada num imenso número de alternativas (como roteamento para otimização da logística ou otimização do portfólio financeiro), os algoritmos quânticos também são valiosos. Ao utilizar o &amp;ldquo;Algoritmo de Grover&amp;rdquo; ao longo de uma procura de dados dispersos num banco de dados sem ordenação, a quantidade de passadas reduz-se à raiz quadrada das consultas necessárias no clássico. Como por exemplo, havendo um volume contendo 100 milhões de informações, a procura clássica requer cerca de 100 milhões de consultas, ao invés das escassas 10 mil no quântico.&lt;/p>
&lt;hr>
&lt;h2 id="capítulo-5-as-paredes-do-hardware-a-serem-ultrapassadas---decoerência-e-correção-de-erros-quânticos">Capítulo 5: As Paredes do Hardware a Serem Ultrapassadas - &amp;ldquo;Decoerência&amp;rdquo; e &amp;ldquo;Correção de Erros Quânticos&amp;rdquo;
&lt;/h2>&lt;p>Teoricamente, apesar do poder mágico que demonstram, existe ainda um íngreme e alto obstáculo do ponto de vista do funcionamento físico, barrando a realização prática das vias dos computadores quânticos. Seu principal inimigo reside na palavra &lt;strong>&amp;ldquo;Ruído&amp;rdquo;&lt;/strong> .&lt;/p>
&lt;p>A &amp;ldquo;superposição&amp;rdquo; ou o &amp;ldquo;emaranhamento quântico&amp;rdquo; não se trata de nada a não ser dos frágeis e imprecisos instantes efêmeros de que constam. Se houver sequer a exposição da menor radiação à força calórica em volta ou as flutuações das ondas eletromagnéticas locais ou inclusive ao atrito a partir de algum raio cósmico distante, toda essa constituição quântica dissipa-se de chofre virando por final em somente o padrão dos bits tradicionais comuns. A tal fenômeno é chamado de &lt;strong>&amp;ldquo;Decoerência&amp;rdquo;&lt;/strong> (Colapso quântico).&lt;/p>
&lt;h3 id="a-disputa-feroz-pelas-vias-de-realização-físicas">A Disputa Feroz Pelas Vias de Realização Físicas
&lt;/h3>&lt;p>Atualmente, no que diz respeito ao modo da conformação estrutural material dos qubits efêmeros, há uma plural e global busca das metodologias e intensas disputas em redor desse patamar em disputa por um destaque dominante.&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Método Supercondutor&lt;/strong> (Superconducting) : Adotado pelo Google, IBM, Amazon, etc. Utiliza um formato em malha de circuitos supercondutores resfriado usando sistemas frigóricos portentosos rentes a chegar nos termômetros da medição total aos zero absolutos (aproximado -273ºC). Representam o método da liderança atual, mais flexível a somar novos qubits, ainda que lhes careçam caros e grandiosos engenhos frigoríficos.&lt;/li>
&lt;li>&lt;strong>Método Armadilha de Íons&lt;/strong> (Trapped Ion) : Adotado pela IonQ, Quantinuum, etc. Prisiona no meio do vácuo pequenos feixes iónicos formados através da contenção do plano eletromagnético, recebendo irradiações de um preciso controle num raio de luz a laser. A totalidade unida de qubits constitui o modo uniformizado ideal e conseguem conter longo prazo da durabilidade operacional (conforme designado em tempo de coerência extensos), tendo, porém, um grande desafio ao serem dotados no passo de velocidades bastante menores em defasagem relativamente aos modelos de tipo dos supercondutores.&lt;/li>
&lt;li>&lt;strong>Método Fotônico&lt;/strong> (Photonic) : Especial alvo central pelo lado de entidades qual à PsiQuantum etc. Foco sob ação sobre luz em partículas como fotões. Estipulam como a suprema excelência de benefícios na premissa da não-requisição forçosa baseada do funcionamento total nos redutos gelados, operando grande parte do tempo nas margens da normal sala ambiente compatibilizando excelente integração e fusão junto do modo produtivo normal tecnológico comum via peças à silício além das transferências habituais na ligação de pontes às fibras da ótica óptica.&lt;/li>
&lt;li>&lt;strong>Método Topológico&lt;/strong> (Topological) : Persistente projeto e estudos elaborados a longa década por meio da Microsoft. Tende aproveitar as condições baseadas ao ponto de vista de topologias (consoante com vertentes geométricas) proveniente por ínfimas e estranhas frações partículas ditas aniões, rumando no modelo robusto resistente radical à intercessão de um barulho (a diminuir drasticamente qualquer engano nos defeitos de erros dos bits) resultando de modo ambicioso por qubits insusceptíveis das vibrações da base das falhas ambiente. Defendem as teorias o assinalarem à condição o mais proeminente e invulnerável esquema mas também o pendor de dificuldades perante as construções tangíveis.&lt;/li>
&lt;/ul>
&lt;h3 id="o-rumo-perante-o-fim-da-metas-do-computador-quântico-tolerante-a-falhas-ftqc">O Rumo Perante O Fim Da Metas do &amp;ldquo;Computador Quântico Tolerante A Falhas&amp;rdquo; (FTQC)
&lt;/h3>&lt;p>Nos moldes vigentes a rondarem na atual da computação usual de igual forma os desvios informáticos acham registo (qual erros devido da volta inversiva aos bits derivados por feixe radiação do céu cósmico), por ser impecavelmente regularizada da chamada aplicação do método aos &amp;ldquo;códigos pela verificação retificativa das falhas&amp;rdquo;, não lhes atestamos no usar normal um smartphone sequer algum aborrecimento de desvios. É essencial assim em favor na pretensão futura do processar amplo nível da base nos quânticos a exigência vital, do igualmente equivalente meio com, de nome da &lt;strong>&amp;ldquo;Correção de Erros Quânticos&amp;rdquo;&lt;/strong> (Quantum Error Correction: QEC) sendo indispensavelmente imperativo no uso do funcionamento.&lt;/p>
&lt;p>Existe o abismo das contradições na exigência em virtude das imposições da quântica, por não permitir poder certificar (observar os elementos no seu seio) ao confirmar falhas pois as posições destroem a fragilidade dessa dita forma existencial e essencial.
Fugindo ao defeito dilemático de ordem desse patamar, consolida-se e constitui por um formato base em arquitetar o juntar astuto nos modelos por abundantes e sensíveis dos tais &amp;ldquo;qubits físicos&amp;rdquo;, para estruturar num suporte sustentável com de apenas e somente um forte detetador verificativo base a partir no sistema a de se considerar, chamando então isto o código das superfície por tais arranjos formados em num único nome &amp;ldquo;qubit lógico&amp;rdquo;.
Entretanto estima-se que no ato para construir apenas dum único qubit lógico em conta serão absorvidos na roda das necessidades do entorno de algo por valores das centenas à classe na fasquia da grandeza, ou nos cerca dos 1000 a das ordens dez milhares dos mesmos qubits de físico estatuto. Num hipotético modelo do operar milhares dos ditos de lógicas dimensões sob algoritmo do Shor no processamento vai haver imponente premente imperativos num sistema imensamente formidável em base colossal a congregar conjuntos nas centenas dos milhares podendo abranger das dezenas nos patamares dos milhões dos referidos bits quânticos materiais e componentes operativas reais.&lt;/p>
&lt;p>Hoje chamam habitamos nestas eras, tempos da idade transição que em sigla, do título nos modelos das &lt;strong>NISQ&lt;/strong> (Noisy Intermediate-Scale Quantum: computação em níveis médios na via de escalas intermédias associado da distúrbio interferência). Reflete a não presença ainda corretiva aos erros, a correr ao nível de algumas dúzias e de algumas escassas escalas centenas dos seus qubits a laborar.
Almeja alcançar a finalíssima meta por parte nos experts projetando previsões que ao almejado com do título de poder absoluto pela robusta correta erradicação falibilidade num inteiro perfeitamente formatado &lt;strong>&amp;ldquo;Computador Quântico Tolerante a Falhas&amp;rdquo;&lt;/strong> (Fault-Tolerant Quantum Computer: FTQC), o qual é aguardado nos careceres ainda no transpor destas na via da longa demora de pesquisa avançando à roda da ordem dos dez aos algumas décimos dos mais longo anos sobre em persistente empenho desenvolvimental e de laboratorial pesquisa.&lt;/p>
&lt;hr>
&lt;h2 id="capítulo-6-historial-das-eras-e-vista-às-visões-no-perspetivar-dos-modelos-quânticos-no-computador">Capítulo 6: Historial Das Eras e Vista às Visões no Perspetivar dos Modelos Quânticos no Computador
&lt;/h2>&lt;p>Nos encerramentos num fim rematar focado em perspetiva a visão onde nasceram as ideias rumo nestas sendas destas origens para onde as destinações dos percursos sobre modelos dos referidos equipamentos do aparelho quântico irão derivar pelo decorrer global no abrangente olhar analítico.&lt;/p>
&lt;h3 id="nascimentos-desde-a-géneses-sob-modelos-teóricos-ate-sobre-real-das-constatações-pelos-atributos-e-da-supremacia-quântica">Nascimentos Desde A Géneses Sob Modelos Teóricos Ate Sobre Real Das Constatações Pelos Atributos E Da &amp;ldquo;Supremacia Quântica&amp;rdquo;
&lt;/h3>&lt;ul>
&lt;li>&lt;strong>Anos 1980&lt;/strong> : O professor de Física Paul Benioff bem consoante pelo eminente Richard Feynman lançam sobre o tema sugerido da formulação de conceito baseado ao uso da essência nos princípios quântico na física ao uso nas vias para o meio pelo campo do computador e seus domínios. A ignição advém desta frase em máxima sob: &amp;ldquo;Simular a via das leis origens matriz em modelos naturais é mandatório usares sobre vias ao meio baseado nas regras pela dita mecânica quântica&amp;rdquo;.&lt;/li>
&lt;li>&lt;strong>Ano 1994&lt;/strong> : O matemático Peter Shor introduz do princípio algoritmos aos usos num modo quântico por efeito da fatoração em base aos seus número primos, o designado pelo algoritmo da sua matriz inventiva Shor. Um grande e imenso abanão da comoção mundial foi gerado motivado nas vastas das correntes monetárias colossais no impulsionar na porta da entrada virada à via na senda perante financiamentos de busca e investigação.&lt;/li>
&lt;li>&lt;strong>Ano 1996&lt;/strong> : O eminente Lov Grover descortinou à base, por sua matriz das investigações nas lógicas computacionais ao avanço formidável sob velocidade por otimização às matriz de buscas aos algoritmos num sistema não indexado de dados no banco através, sendo da designada forma conhecido pelo método Grover.&lt;/li>
&lt;li>&lt;strong>Ano 2019&lt;/strong> : O passo nos tempos por via de grandes enquadramentos de histórico rumo em marcos alcançados. Ao jeito, Google publica acerca nas usabilidades ao recurso por matriz das ordens estruturadas em matriz físicas nos sistemas à volta aos componentes numa das supercondutoras em redes via chips nas bases contendo do conjunto com 53 qubits processadores o célebre do seu modo chamado na alcunha de título em nome a via da processador à dita referência &amp;ldquo;Sycamore&amp;rdquo;, do fechar nas balizas das medições sob avaliações nos moldes e formas da ordem aos moldes clássico de padrão via computadores superiores na baliza sobre matriz geradora da vertente perante geração randómica avaliativa num número avalizado para a via na dimensão nas casas sobre valores correspondentes dez nas numerais grandeza na soma sob medida mil anos pela dimensão, no final sendo apenas por fechado completando cerca as exatas à fasquia a contar pouco num cômputo e espaço apenas 200 de limitados do escassos tempo em base aos segundo final. Na via do evento das ordens pioneiras chamando na divulgação dita publicamente com à escala no contexto pelo o nome por &lt;strong>&amp;ldquo;Supremacia Quântica&amp;rdquo;&lt;/strong> (Quantum Supremacy) na via das proclamação declaradas na demonstração sendo imensamente badaladas perante vastíssima repercussões que na praça mediática por entre grandes temas.&lt;/li>
&lt;li>&lt;strong>Desde 2023&lt;/strong> : A IBM anuncia com o seu grandioso projeto sob vias do processador referenciado de título ao projeto pelo seu designativo ao batismo no seu termo &amp;ldquo;Condor&amp;rdquo; com a via transcendendo no exceder mil unidades dos qubits processamento na grandeza computacional. Concomitante reporta pelas diversas grandes faculdades superiores universidades sendo no destaque base, Harvard etc, sendo nas referidas relatórios na via sob verificação de triunfos sucesso nas gerações via manipulações dos denominados &amp;ldquo;qubits lógicos&amp;rdquo; a serem na referidas vias das fase precursora da incipiente primeira via aos patamares à correção das devidas técnicas sobre erros.&lt;/li>
&lt;/ul>
&lt;h3 id="num-horizonte-orientado-e-visado-para-na-via-às-tecnologias-nas-suas-geracionais-fases-seguintes">Num Horizonte Orientado e Visado Para Na Via às Tecnologias Nas Suas Geracionais Fases Seguintes
&lt;/h3>&lt;p>Modelos de tipologia no baseamento na formulação na via do âmbito na esfera computador aos meios modelo no mundo da formula quântico ao sistema nunca será na pura conceção vista nos limites ao mero figurado mero da restrita e estrita visualização de conceito de mero e rápido CPU que avança mais uns largos valores velocidade base de ciclos de pulso à futura referida geração matriz nas ordens do relógio base. Ele altera no modo em essências a pura redefinição sob bases nos parâmetros no modelo conceitual da raiz com que se designam no atuar cálculos pelo ditar total pelas ditas em regras, mecânica das naturezas do universo nas originais raízes formadas ao micromundo numa revolucional e plena viragem matriz paradigmática ao conhecimento na base campo referida da informacional em ciência pura.&lt;/p>
&lt;p>Pelas vias do tempo do trajeto durante nas nossas vivas vida as vias da época da viabilidade num acesso aos formatos nos padrões normais aos equipamentos móveis habituais ao estilo dos que residem de molde à via e nas medidas dos espaços ao portáteis bolso de casaco, dificilmente a vir acontecerá à realidade.
Na verdade perante e obstante o dito nas linhas acimas de uma via perante percurso certas da realidade que em dia próximo virá das grandiosas imponentes nos modelos às gigantes na referida à da vasta à extensa teias da arquiteturas virtuais em redes pela bases à cloud nas remotas instalações e imensos complexos gigantes à centros das dados modelo na fórmula quânticas, o surgimento fulcral virá destas nas inovações ao poder aos modelos.&lt;/p>
&lt;p>A portal abertura nas porta matriz das senda base aos portais de um de e no horizonte com vistas a todo o perante quântico e com de universos à matriz só o muito agora que, há curtos os e apenas se de curtos nos passos encontram sendo referida as fases nas desabrochar. Do e que não no perder ao de em constante vistas sem os do desviar via a fixação com os os nosso atenciosos dos os de olhar nas com perante os ao das vistas os desenvolvimentos futuros vias nas do próximos de eventos próximos, de ao referida das desenvolvimentos perante das perante na de das via com as perspetivas e com das futuros.&lt;/p>
&lt;hr>
&lt;p>&lt;em>Este artigo tem a finalidade de narrar, da forma mais descomplicada no conhecimento do universo profissional das finanças de capital das sociedades civis e às simples gentes sem conhecimento mas interessadas num foco instrutivo e didático, todas as diretrizes básicas da ciência computacional quântica. Note que não estão incluídas abordagens de minúcias matemáticas rigorosas.&lt;/em>&lt;/p></description></item><item><title>【PQC】A Visão Geral da "Criptografia Pós-Quântica", a Criptografia da Próxima Geração na Era da Computação Quântica</title><link>http://kenji.blog/pt/p/post-quantum-cryptography/</link><pubDate>Sat, 05 Sep 2026 22:09:22 +0900</pubDate><guid>http://kenji.blog/pt/p/post-quantum-cryptography/</guid><description>&lt;img src="http://kenji.blog/p/post-quantum-cryptography/post_quantum_cryptography_1788613735417.jpg" alt="Featured image of post 【PQC】A Visão Geral da "Criptografia Pós-Quântica", a Criptografia da Próxima Geração na Era da Computação Quântica" />&lt;h2 id="introdução-a-ameaça-dos-computadores-quânticos-à-criptografia">Introdução: A &amp;ldquo;Ameaça&amp;rdquo; dos Computadores Quânticos à Criptografia
&lt;/h2>&lt;p>Atualmente, muitas das comunicações que realizamos diariamente na internet —— desde pagamentos em serviços bancários online, navegação em sites (HTTPS), troca de mensagens em aplicativos, até transações de blockchain e criptomoedas —— são protegidas por uma tecnologia chamada &amp;ldquo;criptografia de chave pública&amp;rdquo;. Especificamente, algoritmos como a criptografia RSA e a criptografia de curva elíptica (ECC) são os pilares que sustentam a confiabilidade da nossa sociedade digital moderna.&lt;/p>
&lt;p>Esses métodos de criptografia baseiam sua segurança em problemas matemáticos complexos, como a &amp;ldquo;fatoração de números primos gigantes&amp;rdquo; e o &amp;ldquo;problema do logaritmo discreto&amp;rdquo;, que levariam um tempo astronômico para serem resolvidos por computadores clássicos atuais (incluindo supercomputadores). No entanto, com a concretização dos &lt;strong>&amp;ldquo;computadores quânticos&amp;rdquo;&lt;/strong> , que têm feito progressos notáveis nos últimos anos, essa premissa será fundamentalmente derrubada.&lt;/p>
&lt;p>O &amp;ldquo;Algoritmo de Shor&amp;rdquo;, publicado por Peter Shor em 1994, provou matematicamente que, se usarmos um computador quântico com desempenho suficiente, poderemos resolver a fatoração de números primos e o problema do logaritmo discreto em um tempo extremamente curto. Isso significa que a comunicação criptografada que protege a internet hoje corre o risco de ser totalmente decodificada no futuro (um problema conhecido como Y2Q: Years to Quantum, ou Q-Day).&lt;/p>
&lt;p>Ainda mais grave é a existência de um método de ataque chamado &amp;ldquo;Harvest Now, Decrypt Later&amp;rdquo; (Roube agora, decifre depois). Dados que precisam manter a confidencialidade por décadas, como informações confidenciais de estados, propriedade intelectual corporativa e informações biométricas pessoais, já podem ser alvo de roubo hoje, com a intenção de serem decodificados no futuro.&lt;/p>
&lt;p>Para responder a essa crise sem precedentes, criptógrafos e instituições de pesquisa em todo o mundo estão trabalhando juntos para desenvolver a criptografia de próxima geração que pode manter a segurança mesmo contra ataques de computadores quânticos, a &lt;strong>Criptografia Pós-Quântica (PQC)&lt;/strong> . Neste artigo, explicaremos em detalhes desde os fundamentos da PQC até os mecanismos de seus principais algoritmos e as tendências mais recentes de padronização global lideradas pelo Instituto Nacional de Padrões e Tecnologia dos EUA (NIST).&lt;/p>
&lt;hr>
&lt;h2 id="o-que-é-a-criptografia-pós-quântica-pqc">O que é a Criptografia Pós-Quântica (PQC)?
&lt;/h2>&lt;p>A Criptografia Pós-Quântica (Post-Quantum Cryptography, PQC) é um termo genérico para algoritmos de criptografia projetados para operar em computadores clássicos existentes e, ao mesmo tempo, serem resistentes a ataques (como o algoritmo de Shor) de computadores quânticos de grande escala que surgirão no futuro.&lt;/p>
&lt;p>Tecnologias frequentemente confundidas com ela são a &amp;ldquo;Criptografia Quântica (Quantum Cryptography)&amp;rdquo; e a &amp;ldquo;Distribuição Quântica de Chaves (QKD)&amp;rdquo;, mas estas são abordagens completamente diferentes. A criptografia quântica (QKD) é uma tecnologia baseada em hardware que utiliza as leis físicas da mecânica quântica (como a propriedade de que o estado muda ao ser observado) para tornar a espionagem nos canais de comunicação fisicamente impossível. Ela requer fibras ópticas dedicadas e equipamentos especiais, enfrentando desafios como custos de implementação e limitações de distância.&lt;/p>
&lt;p>Por outro lado, &lt;strong>a PQC é uma tecnologia de criptografia baseada em software, fundamentada puramente em &amp;ldquo;matemática&amp;rdquo;&lt;/strong> . Portanto, ela pode ser incorporada à infraestrutura de internet existente, servidores, smartphones, navegadores, etc., como uma atualização de software, sendo altamente aplicável ao mundo real. Empresas de TI e governos de todo o mundo consideram urgente substituir (migrar) o RSA e o ECC atualmente em uso por esta PQC.&lt;/p>
&lt;hr>
&lt;h2 id="as-4-principais-abordagens-matemáticas-que-sustentam-a-pqc">As 4 Principais Abordagens Matemáticas que Sustentam a PQC
&lt;/h2>&lt;p>Vários algoritmos de PQC foram propostos, baseando-se em problemas matemáticos complexos (como problemas NP-difíceis) que não podem ser resolvidos de forma eficiente mesmo com um computador quântico. Aqui, apresentaremos as 4 principais categorias que dominam atualmente.&lt;/p>
&lt;h3 id="principais-abordagens-da-criptografia-pós-quântica-pqc">Principais Abordagens da Criptografia Pós-Quântica (PQC)
&lt;/h3>&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt"> 1
&lt;/span>&lt;span class="lnt"> 2
&lt;/span>&lt;span class="lnt"> 3
&lt;/span>&lt;span class="lnt"> 4
&lt;/span>&lt;span class="lnt"> 5
&lt;/span>&lt;span class="lnt"> 6
&lt;/span>&lt;span class="lnt"> 7
&lt;/span>&lt;span class="lnt"> 8
&lt;/span>&lt;span class="lnt"> 9
&lt;/span>&lt;span class="lnt">10
&lt;/span>&lt;span class="lnt">11
&lt;/span>&lt;span class="lnt">12
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-gdscript3" data-lang="gdscript3">&lt;span class="line">&lt;span class="cl">&lt;span class="n">graph&lt;/span> &lt;span class="n">LR&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">PQC&lt;/span>&lt;span class="p">[&lt;/span>&lt;span class="n">Criptografia&lt;/span> &lt;span class="n">Pós&lt;/span>&lt;span class="o">-&lt;/span>&lt;span class="n">Quântica&lt;/span> &lt;span class="n">PQC&lt;/span>&lt;span class="p">]&lt;/span> &lt;span class="o">--&amp;gt;&lt;/span> &lt;span class="n">L&lt;/span>&lt;span class="p">[&lt;/span>&lt;span class="n">Criptografia&lt;/span> &lt;span class="n">baseada&lt;/span> &lt;span class="n">em&lt;/span> &lt;span class="n">reticulados&lt;/span> &lt;span class="n">Lattice&lt;/span>&lt;span class="o">-&lt;/span>&lt;span class="n">based&lt;/span>&lt;span class="p">]&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">PQC&lt;/span> &lt;span class="o">--&amp;gt;&lt;/span> &lt;span class="n">H&lt;/span>&lt;span class="p">[&lt;/span>&lt;span class="n">Criptografia&lt;/span> &lt;span class="n">baseada&lt;/span> &lt;span class="n">em&lt;/span> &lt;span class="nb">hash&lt;/span> &lt;span class="n">Hash&lt;/span>&lt;span class="o">-&lt;/span>&lt;span class="n">based&lt;/span>&lt;span class="p">]&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">PQC&lt;/span> &lt;span class="o">--&amp;gt;&lt;/span> &lt;span class="n">M&lt;/span>&lt;span class="p">[&lt;/span>&lt;span class="n">Criptografia&lt;/span> &lt;span class="n">multivariada&lt;/span> &lt;span class="n">Multivariate&lt;/span>&lt;span class="p">]&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">PQC&lt;/span> &lt;span class="o">--&amp;gt;&lt;/span> &lt;span class="n">C&lt;/span>&lt;span class="p">[&lt;/span>&lt;span class="n">Criptografia&lt;/span> &lt;span class="n">baseada&lt;/span> &lt;span class="n">em&lt;/span> &lt;span class="n">códigos&lt;/span> &lt;span class="n">Code&lt;/span>&lt;span class="o">-&lt;/span>&lt;span class="n">based&lt;/span>&lt;span class="p">]&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">L&lt;/span> &lt;span class="o">--&amp;gt;&lt;/span> &lt;span class="n">L1&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">FIPS&lt;/span> &lt;span class="mi">203&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="n">ML&lt;/span>&lt;span class="o">-&lt;/span>&lt;span class="n">KEM&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">L&lt;/span> &lt;span class="o">--&amp;gt;&lt;/span> &lt;span class="n">L2&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">FIPS&lt;/span> &lt;span class="mi">204&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="n">ML&lt;/span>&lt;span class="o">-&lt;/span>&lt;span class="n">DSA&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">H&lt;/span> &lt;span class="o">--&amp;gt;&lt;/span> &lt;span class="n">H1&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">FIPS&lt;/span> &lt;span class="mi">205&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="n">SLH&lt;/span>&lt;span class="o">-&lt;/span>&lt;span class="n">DSA&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">style&lt;/span> &lt;span class="n">PQC&lt;/span> &lt;span class="n">fill&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="c1">#f9f,stroke:#333,stroke-width:2px&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h3 id="1-criptografia-baseada-em-reticulados-lattice-based-cryptography">1. Criptografia baseada em reticulados (Lattice-based Cryptography)
&lt;/h3>&lt;p>Atualmente, esta &amp;ldquo;criptografia baseada em reticulados&amp;rdquo; é considerada a mais promissora e é a principal tendência no campo da PQC. A criptografia de reticulados baseia sua segurança em problemas relacionados a pontos dispostos regularmente (pontos de reticulado) em um espaço multidimensional. Problemas famosos incluem o &amp;ldquo;Problema do Vetor Mais Curto (SVP: Shortest Vector Problem)&amp;rdquo; e o &amp;ldquo;Problema de Aprendizado com Erros (LWE: Learning With Errors)&amp;rdquo;.&lt;/p>
&lt;p>&lt;strong>Visão geral do mecanismo:&lt;/strong>
Imagine que inumeráveis pontos estão dispostos em forma de grade (reticulado) dentro de um espaço de dimensão muito alta (centenas a milhares de dimensões). Encontrar um ponto de reticulado específico é fácil em 2 ou 3 dimensões, mas quando se trata de centenas de dimensões, ainda não foi descoberto nenhum algoritmo que o encontre de forma eficiente, seja em um computador clássico ou quântico. O problema LWE, em particular, utiliza a propriedade de que &amp;ldquo;se você adicionar propositalmente um pequeno &amp;lsquo;ruído (erro)&amp;rsquo; a um sistema de equações lineares, torna-se drasticamente mais difícil adivinhar as variáveis originais&amp;rdquo;.&lt;/p>
&lt;p>&lt;strong>Vantagens:&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>Aplicável tanto ao compartilhamento de chaves (KEM) quanto às assinaturas digitais.&lt;/li>
&lt;li>A velocidade de processamento é muito rápida (em alguns casos, mais rápida que RSA e ECC).&lt;/li>
&lt;li>O tamanho da chave e o tamanho do texto cifrado são relativamente pequenos, oferecendo um bom equilíbrio.&lt;/li>
&lt;/ul>
&lt;p>Muitos dos algoritmos atualmente sendo padronizados pelo NIST (como ML-KEM e ML-DSA) adotam essa criptografia baseada em reticulados.&lt;/p>
&lt;h3 id="2-criptografia-baseada-em-hash-hash-based-cryptography">2. Criptografia baseada em hash (Hash-based Cryptography)
&lt;/h3>&lt;p>A criptografia baseada em hash é um algoritmo PQC especializado em assinaturas digitais. A base de sua segurança depende exclusivamente da resistência à colisão e da unidirecionalidade de &amp;ldquo;funções de hash criptográficas&amp;rdquo; seguras, como SHA-2 e SHA-3.&lt;/p>
&lt;p>&lt;strong>Visão geral do mecanismo:&lt;/strong>
Ela tem como ponto de partida um esquema de assinatura descartável de uso único (assinatura de uso único) chamado &amp;ldquo;Assinatura Lamport (Lamport Signature)&amp;rdquo;. Ao agrupar isso em um formato de dados em estrutura de árvore chamado &amp;ldquo;Árvore de Merkle (Merkle Tree)&amp;rdquo;, possibilita múltiplas assinaturas com um único par de chaves.&lt;/p>
&lt;p>&lt;strong>Vantagens:&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>A base de segurança é extremamente robusta, com a forte prova de que &amp;ldquo;é segura desde que a função de hash seja segura&amp;rdquo;.&lt;/li>
&lt;li>Como a dependência de estruturas matemáticas é baixa, o risco de serem descobertos métodos inesperados de decodificação é menor.&lt;/li>
&lt;/ul>
&lt;p>&lt;strong>Desvantagens:&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>Não pode ser usada para compartilhamento de chaves (KEM), servindo apenas para assinaturas digitais.&lt;/li>
&lt;li>O tamanho da assinatura tende a ser grande.&lt;/li>
&lt;li>Existem as modalidades &amp;ldquo;stateful&amp;rdquo; (com estado) e &amp;ldquo;stateless&amp;rdquo; (sem estado). A versão stateful (como XMSS) requer um gerenciamento rigoroso do número de vezes que a chave é usada, tornando a implementação mais difícil.&lt;/li>
&lt;/ul>
&lt;p>O NIST padronizou o &amp;ldquo;SLH-DSA (anteriormente SPHINCS+)&amp;rdquo; como uma assinatura baseada em hash stateless.&lt;/p>
&lt;h3 id="3-criptografia-multivariada-multivariate-cryptography">3. Criptografia multivariada (Multivariate Cryptography)
&lt;/h3>&lt;p>A criptografia de polinômios multivariados baseia sua segurança na dificuldade de resolver um sistema de equações polinomiais quadráticas simultâneas com muitas variáveis (Problema MQ: Multivariate Quadratic problem). Sabe-se que este problema é NP-difícil.&lt;/p>
&lt;p>&lt;strong>Visão geral do mecanismo:&lt;/strong>
O remetente cria um texto cifrado (assinatura) substituindo o texto simples (ou valor de hash) em uma equação complexa com muitas variáveis fornecida como chave pública. O destinatário legítimo possui como chave privada uma &amp;ldquo;informação oculta (alçapão) que converte a estrutura da equação em uma forma fácil de resolver&amp;rdquo;, usando-a para realizar a decodificação (ou verificação de assinatura).&lt;/p>
&lt;p>&lt;strong>Vantagens:&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>O tamanho da assinatura é muito pequeno.&lt;/li>
&lt;li>A velocidade de verificação da assinatura é extremamente alta. É adequado para dispositivos de IoT com recursos limitados.&lt;/li>
&lt;/ul>
&lt;p>&lt;strong>Desvantagens:&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>O tamanho da chave pública é muito grande (pode chegar a dezenas ou centenas de kilobytes).&lt;/li>
&lt;li>No passado, algoritmos proeminentes (como Rainbow) foram quebrados por ataques clássicos, tornando mais difícil estabelecer a confiança na segurança em comparação com outros métodos.&lt;/li>
&lt;/ul>
&lt;h3 id="4-criptografia-baseada-em-códigos-code-based-cryptography">4. Criptografia baseada em códigos (Code-based Cryptography)
&lt;/h3>&lt;p>A criptografia baseada em códigos aplica a teoria dos &amp;ldquo;códigos de correção de erros&amp;rdquo;, usados para corrigir erros nos canais de comunicação, à criptografia. A &amp;ldquo;Criptografia McEliece&amp;rdquo;, proposta em 1978, é a mais famosa e uma das mais antigas entre as PQC.&lt;/p>
&lt;p>&lt;strong>Visão geral do mecanismo:&lt;/strong>
O remetente codifica o texto simples usando a chave pública do destinatário (a matriz geradora de um código de correção de erros que oculta uma estrutura específica), adiciona um erro intencional (ruído) e o envia. O destinatário usa a chave privada para remover o erro e extrair o texto simples. Um decodificador precisaria corrigir os erros a partir de um código aleatório sem conhecer sua estrutura; isso é chamado de &amp;ldquo;problema geral de decodificação de síndrome&amp;rdquo;, que é comprovadamente NP-difícil.&lt;/p>
&lt;p>&lt;strong>Vantagens:&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>Tendo sido exaustivamente estudada por mais de 40 anos e sem nenhum ataque eficaz encontrado até agora, a confiança na sua segurança é extremamente alta.&lt;/li>
&lt;li>Os processos de criptografia e descriptografia são rápidos.&lt;/li>
&lt;/ul>
&lt;p>&lt;strong>Desvantagens:&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>O tamanho da chave pública é imenso (pode chegar a vários megabytes). Portanto, é difícil usá-la em ambientes com limitações de largura de banda de comunicação ou memória (como no handshake de TLS).&lt;/li>
&lt;/ul>
&lt;hr>
&lt;h2 id="tendências-recentes-na-padronização-pqc-pelo-nist">Tendências Recentes na Padronização PQC pelo NIST
&lt;/h2>&lt;p>O Instituto Nacional de Padrões e Tecnologia dos EUA (NIST) iniciou em 2016 uma chamada global para algoritmos de criptografia pós-quântica de próxima geração, realizando avaliações rigorosas e várias rodadas de análises ao longo de anos.&lt;/p>
&lt;p>Em 2024, o NIST finalmente anunciou os seguintes três algoritmos como Padrões Federais de Processamento de Informações (FIPS) oficiais. Isso concluiu a formação de uma base sólida para que organizações em todo o mundo comecem a implementá-los em ambientes de produção.&lt;/p>
&lt;h3 id="padrões-fips-estabelecidos-2024">Padrões FIPS Estabelecidos (2024)
&lt;/h3>&lt;ol>
&lt;li>
&lt;p>&lt;strong>FIPS 203: ML-KEM (Nome anterior: CRYSTALS-Kyber)&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Uso:&lt;/strong> Mecanismo de encapsulamento de chaves (KEM) / Criptografia e compartilhamento de chaves&lt;/li>
&lt;li>&lt;strong>Tecnologia base:&lt;/strong> Criptografia baseada em reticulados (Module-LWE)&lt;/li>
&lt;li>&lt;strong>Características:&lt;/strong> Oferece um excelente equilíbrio entre o tamanho da chave e a velocidade. Servirá como o compartilhamento de chaves PQC padrão para usos comuns da internet, como comunicação na Web (TLS) e aplicativos de mensagens seguros.&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>FIPS 204: ML-DSA (Nome anterior: CRYSTALS-Dilithium)&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Uso:&lt;/strong> Assinatura digital&lt;/li>
&lt;li>&lt;strong>Tecnologia base:&lt;/strong> Criptografia baseada em reticulados (Module-LWE)&lt;/li>
&lt;li>&lt;strong>Características:&lt;/strong> O principal padrão para assinaturas digitais. Permite processamento eficiente, tornando-se o novo padrão para todas as aplicações de assinatura eletrônica, como assinaturas de software e autenticação de documentos.&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>FIPS 205: SLH-DSA (Nome anterior: SPHINCS+)&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Uso:&lt;/strong> Assinatura digital&lt;/li>
&lt;li>&lt;strong>Tecnologia base:&lt;/strong> Criptografia baseada em hash (stateless)&lt;/li>
&lt;li>&lt;strong>Características:&lt;/strong> Desempenha um papel vital como um backup caso vulnerabilidades sejam descobertas na criptografia baseada em reticulados no futuro. Embora o tamanho da assinatura seja grande, é adequado para aplicações que exigem confiabilidade de longo prazo.&lt;/li>
&lt;/ul>
&lt;/li>
&lt;/ol>
&lt;h3 id="busca-por-maior-diversidade">Busca por Maior Diversidade
&lt;/h3>&lt;p>Embora o NIST tenha concluído o processo inicial de padronização, ele continua buscando mais algoritmos. Especialmente porque os padrões estão muito inclinados para a &amp;ldquo;criptografia baseada em reticulados&amp;rdquo;, a garantia da &lt;strong>diversidade de algoritmos (Crypto Diversity)&lt;/strong> é altamente valorizada. A avaliação da criptografia baseada em códigos e outros métodos está em andamento como padrão de backup para compartilhamento de chaves, e a base da PQC deve se tornar ainda mais robusta no futuro.&lt;/p>
&lt;hr>
&lt;h2 id="cenários-e-desafios-da-transição-para-a-pqc-a-importância-da-agilidade-criptográfica">Cenários e Desafios da Transição para a PQC: A Importância da &amp;ldquo;Agilidade Criptográfica&amp;rdquo;
&lt;/h2>&lt;p>Com o lançamento de padrões oficiais pelo NIST, agências governamentais, instituições financeiras e empresas de tecnologia em todo o mundo acelerarão a transição (migração) do RSA/ECC existente para a PQC. Diretrizes de agências como a NSA (Agência de Segurança Nacional dos EUA) também recomendam a conclusão antecipada dessa transição.&lt;/p>
&lt;h3 id="adoção-da-abordagem-híbrida">Adoção da Abordagem Híbrida
&lt;/h3>&lt;p>Como os algoritmos PQC são novos, eles não passaram pelo &amp;ldquo;teste do tempo&amp;rdquo; em comparação com a criptografia clássica. Considerando os riscos de bugs ocultos em implementações ou a descoberta de novos métodos de ataque, recomenda-se uma &lt;strong>&amp;ldquo;abordagem híbrida&amp;rdquo;&lt;/strong> durante o período de transição. Isso envolve realizar a troca de chaves combinando criptografia existente e comprovada (por exemplo, ECDHE) com a nova PQC (por exemplo, ML-KEM). Atualmente, as principais implementações de teste dessa abordagem estão avançando rapidamente em navegadores e serviços em nuvem.&lt;/p>
&lt;h3 id="atingindo-a-agilidade-criptográfica-crypto-agility">Atingindo a Agilidade Criptográfica (Crypto-Agility)
&lt;/h3>&lt;p>O que empresas e desenvolvedores de sistemas devem ter mais em mente daqui para frente é garantir a &lt;strong>&amp;ldquo;Agilidade Criptográfica (Crypto-Agility)&amp;rdquo;&lt;/strong> . É essencial ter um projeto arquitetônico flexível que permita a substituição e atualização rápida dos algoritmos de criptografia sem paralisar o sistema, caso falhas sejam encontradas nos algoritmos no futuro ou surjam novos padrões.&lt;/p>
&lt;p>Criar um inventário criptográfico (CBOM: Cryptography Bill of Materials) que identifique com precisão &amp;ldquo;onde&amp;rdquo;, &amp;ldquo;qual criptografia&amp;rdquo; e &amp;ldquo;para qual propósito&amp;rdquo; está sendo usada dentro do sistema da empresa é um primeiro passo vital em direção à transição para PQC.&lt;/p>
&lt;hr>
&lt;h2 id="conclusão-preparando-se-para-o-q-day-iminente">Conclusão: Preparando-se para o &amp;ldquo;Q-Day&amp;rdquo; Iminente
&lt;/h2>&lt;p>A evolução dos computadores quânticos trará enormes benefícios à humanidade, mas ao mesmo tempo representa a maior ameaça à segurança criptográfica que é a base de nossa sociedade digital moderna. A Criptografia Pós-Quântica (PQC) não é mais um &amp;ldquo;tema de pesquisa para um futuro distante&amp;rdquo;. Com o marco da publicação dos padrões FIPS pelo NIST, a PQC entrou na fase de &amp;ldquo;implementação e transição&amp;rdquo; em larga escala.&lt;/p>
&lt;p>Considerando a ameaça do &amp;ldquo;Harvest Now, Decrypt Later&amp;rdquo;, a transição para a PQC é a maior prioridade a ser tratada &amp;ldquo;agora mesmo&amp;rdquo; por todas as organizações que lidam com dados altamente confidenciais. Ao entender profundamente as tecnologias de criptografia de próxima geração e aumentar a agilidade criptográfica dos sistemas, poderemos superar com segurança a iminente era dos computadores quânticos.&lt;/p></description></item><item><title>Computadores Quânticos Realmente Destruirão a Criptografia RSA? ~O Algoritmo de Shor e o Estado Atual~</title><link>http://kenji.blog/pt/p/shors-algorithm-and-rsa-breaking/</link><pubDate>Sat, 05 Sep 2026 22:09:21 +0900</pubDate><guid>http://kenji.blog/pt/p/shors-algorithm-and-rsa-breaking/</guid><description>&lt;img src="http://kenji.blog/p/shors-algorithm-and-rsa-breaking/quantum_breaking_rsa_1788613722990.jpg" alt="Featured image of post Computadores Quânticos Realmente Destruirão a Criptografia RSA? ~O Algoritmo de Shor e o Estado Atual~" />&lt;h2 id="introdução-a-interseção-entre-criptografia-e-computadores-quânticos">Introdução: A Interseção entre Criptografia e Computadores Quânticos
&lt;/h2>&lt;p>Na sociedade da internet moderna, a base para proteger o segredo das comunicações é a &amp;ldquo;criptografia de chave pública&amp;rdquo;. Um dos mais representativos é a &amp;ldquo;Criptografia RSA&amp;rdquo;, desenvolvida em 1977 por Ron Rivest, Adi Shamir e Leonard Adleman. Desde pagamentos de compras online que usamos diariamente, navegação em sites (HTTPS), até envio e recebimento de e-mails, a criptografia RSA funciona como o coração da infraestrutura da internet.&lt;/p>
&lt;p>No entanto, com o surgimento dos &amp;ldquo;computadores quânticos&amp;rdquo;, foi apontado que essa segurança pode ser subvertida desde a base. Na mídia, às vezes vemos manchetes sensacionalistas como &amp;ldquo;Se um computador quântico for concluído, senhas e criptografias em todo o mundo serão decifradas em segundos&amp;rdquo;. Mas será que isso é verdade?&lt;/p>
&lt;p>Neste artigo, aprofundaremos como funcionam o GNFS (General Number Field Sieve), um método clássico de descriptografia, e a versão definitiva dos algoritmos de descriptografia usando computadores quânticos, o &amp;ldquo;Algoritmo de Shor (Shor&amp;rsquo;s Algorithm)&amp;rdquo;. Explicaremos de forma fácil conceitos avançados, como a transformação quântica de Fourier e a descoberta de períodos, e examinaremos em detalhes o estado atual do hardware quântico na era NISQ (Noisy Intermediate-Scale Quantum) e os obstáculos reais necessários para quebrar a RSA-2048.&lt;/p>
&lt;hr>
&lt;h2 id="o-núcleo-da-criptografia-rsa-a-dificuldade-da-fatoração-em-números-primos">O Núcleo da Criptografia RSA: A Dificuldade da Fatoração em Números Primos
&lt;/h2>&lt;p>A segurança da criptografia RSA depende de uma assimetria extremamente simples na matemática. Trata-se do fato de que &amp;ldquo;é fácil multiplicar dois números primos gigantes, mas é extremamente difícil encontrar (fatorar em números primos) os dois números primos originais a partir do resultado dessa multiplicação (número composto)&amp;rdquo;.&lt;/p>
&lt;p>Por exemplo, suponha que existam dois números primos, $ p = 61 $ e $ q = 53 $. Calcular esta multiplicação $ N = p \times q = 3233 $ é instantâneo. No entanto, se receber apenas o número &amp;ldquo;3233&amp;rdquo; e tiver que resolver &amp;ldquo;de quais números primos essa é a multiplicação?&amp;rdquo;, a quantidade de cálculos explode à medida que o número se torna maior.&lt;/p>
&lt;p>No RSA-2048, que é a norma atual, o comprimento da chave é de 2048 bits, ou seja, é usado um número composto gigante $ N $ que chega a cerca de 617 dígitos em decimal. Se esse $ N $ puder ser fatorado em números primos, a criptografia será essencialmente decifrada.&lt;/p>
&lt;h3 id="o-desafio-dos-computadores-clássicos-gnfs-general-number-field-sieve">O Desafio dos Computadores Clássicos: GNFS (General Number Field Sieve)
&lt;/h3>&lt;p>Para resolver o problema da fatoração em números primos, matemáticos e criptógrafos desenvolveram vários algoritmos ao longo dos anos. Entre eles, o que atualmente é considerado o mais rápido em computadores clássicos é o &lt;strong>GNFS: General Number Field Sieve&lt;/strong>.&lt;/p>
&lt;p>O GNFS é um método que expande e analisa os cálculos no anel de inteiros para um corpo algébrico (Number Field) mais abstrato, a fim de fatorar o número gigante $ N $. O fluxo geral é o seguinte.&lt;/p>
&lt;ol>
&lt;li>&lt;strong>Seleção de Polinômio&lt;/strong> : Encontrar um polinômio $ f(x) $ com grau e coeficientes apropriados, que tenha $ N $ como raiz.&lt;/li>
&lt;li>&lt;strong>Coleta de Dados (Peneiramento)&lt;/strong> : No corpo dos números racionais e no corpo algébrico, procuramos em grande quantidade por pares de números que podem ser decompostos em números primos pequenos (números suaves, Smooth numbers). Esse processo é chamado de &amp;ldquo;peneiramento&amp;rdquo; e é a parte que leva mais tempo.&lt;/li>
&lt;li>&lt;strong>Geração e Redução de Matriz&lt;/strong> : Com base nas relações coletadas, uma enorme matriz esparsa (uma matriz em que a maioria dos componentes é zero) é gerada e resolvida usando métodos de álgebra linear (como o método de Block Lanczos).&lt;/li>
&lt;li>&lt;strong>Cálculo da Raiz Quadrada&lt;/strong> : Finalmente, calcula-se a raiz quadrada no corpo algébrico para derivar os fatores (fatores primos) de $ N $.&lt;/li>
&lt;/ol>
&lt;p>A complexidade computacional do GNFS é avaliada não assintoticamente como $ O(\exp((\sqrt[3]{\frac{64}{9}} + o(1)) (\log N)^{\frac{1}{3}} (\log \log N)^{\frac{2}{3}})) $. Isso é chamado de complexidade de tempo &amp;ldquo;Sub-exponencial&amp;rdquo; (Sub-exponential). Embora seja mais rápido que o tempo exponencial, é muito mais lento que o tempo polinomial (Polynomial time).&lt;/p>
&lt;p>De fato, em 2020, uma equipe de pesquisa internacional obteve sucesso em fatorar a RSA-250 (829 bits, número composto de 250 dígitos) usando o GNFS. Esse cálculo consumiu um tempo computacional enorme, equivalente a cerca de 2700 CPU-core anos, reunindo recursos de computação de todo o mundo. No entanto, quando isso chega a 2048 bits, é mencionado que a quantidade de cálculo necessária explodiria para trilhões de vezes a idade do universo, tornando impossível descriptografar em um tempo realista com métodos clássicos, não importa quantos supercomputadores atuais funcionem em paralelo.&lt;/p>
&lt;hr>
&lt;h2 id="o-trunfo-do-computador-quântico-algoritmo-de-shor">O Trunfo do Computador Quântico: Algoritmo de Shor
&lt;/h2>&lt;p>Aqui é onde entra o &amp;ldquo;Algoritmo de Shor&amp;rdquo;, publicado por Peter Shor em 1994. Esse algoritmo foi revolucionário por permitir que o problema de fatoração em números primos fosse resolvido no computador quântico em &lt;strong>tempo polinomial&lt;/strong> ( $ O((\log N)^3) $ ). A diferença entre tempo sub-exponencial e polinomial é decisiva e significa, na teoria, que a criptografia RSA será completamente destruída se um computador quântico for usado.&lt;/p>
&lt;h3 id="fluxo-geral-do-algoritmo-de-shor">Fluxo Geral do Algoritmo de Shor
&lt;/h3>&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt"> 1
&lt;/span>&lt;span class="lnt"> 2
&lt;/span>&lt;span class="lnt"> 3
&lt;/span>&lt;span class="lnt"> 4
&lt;/span>&lt;span class="lnt"> 5
&lt;/span>&lt;span class="lnt"> 6
&lt;/span>&lt;span class="lnt"> 7
&lt;/span>&lt;span class="lnt"> 8
&lt;/span>&lt;span class="lnt"> 9
&lt;/span>&lt;span class="lnt">10
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">graph TD
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> A[Inserir o número N que se deseja fatorar] --&amp;gt; B[Selecionar um número inteiro aleatório a]
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> B --&amp;gt; C{Máximo divisor comum&amp;lt;br&amp;gt;entre a e N}
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> C --&amp;gt;|Maior que 1| D[Por sorte, um fator primo foi encontrado!]
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> C --&amp;gt;|1 Primos entre si| E[Vez do computador quântico]
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> E --&amp;gt; F[Encontrar o período r da&amp;lt;br&amp;gt;função f_x = a^x mod N por Transformação Quântica de Fourier]
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> F --&amp;gt; G{O período r é par e&amp;lt;br&amp;gt;a^r/2 ≢ -1 mod N}
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> G --&amp;gt;|Sim| H[Calcular o máximo divisor comum gcd_a^r/2 ± 1, N]
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> H --&amp;gt; I((Fatoração bem sucedida!))
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> G --&amp;gt;|Não| B
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>O algoritmo de Shor não resolve o problema da fatoração em números primos diretamente, mas usa teoremas da teoria dos números para convertê-lo em outro problema chamado &amp;ldquo;Problema de Descoberta de Período&amp;rdquo; (Period Finding Problem) e, em seguida, resolve isso rapidamente aproveitando as características do computador quântico.&lt;/p>
&lt;h3 id="passo-1-redução-da-fatoração-ao-problema-de-descoberta-de-período-processamento-clássico">Passo 1: Redução da Fatoração ao Problema de Descoberta de Período (Processamento Clássico)
&lt;/h3>&lt;p>O primeiro passo do algoritmo é feito em um computador clássico.
Para o número $ N $ que se deseja fatorar, escolhe-se um número inteiro aleatório $ a $ ( $ 1 &lt; a &lt; N $ ) que seja co-primo (com o máximo divisor comum igual a 1) com $ N $. Se por acaso o máximo divisor comum não for 1, o divisor comum encontrado nesse momento já é um fator de $ N $, e a fatoração está concluída, mas a probabilidade é extremamente baixa.&lt;/p>
&lt;p>Em seguida, considere a sequência das seguintes equações modulares:
$ f(x) = a^x \pmod N $&lt;/p>
&lt;p>Substituindo $ x = 1, 2, 3, \dots $ nesta função $ f(x) $, os valores parecem aleatórios, mas como são calculados em um limite finito, eles sempre voltarão ao valor original em algum ponto, repetindo a mesma sequência de números. Este ciclo de repetição é chamado de período $ r $. Ou seja,
O problema de encontrar o menor número inteiro positivo $ r $ tal que $ a^r \equiv 1 \pmod N $, este é o &amp;ldquo;Problema de Descoberta de Período&amp;rdquo;.&lt;/p>
&lt;p>Se este período $ r $ for encontrado, e $ r $ for um número par, então $ a^r - 1 \equiv 0 \pmod N $, e usando a fórmula de fatoração,
pode ser transformado em $ (a^{r/2} - 1)(a^{r/2} + 1) \equiv 0 \pmod N $. A partir daqui, ao calcular o máximo divisor comum entre $ N $ e $ a^{r/2} \pm 1 $ usando o algoritmo de Euclides, um fator de $ N $ pode ser obtido com uma probabilidade extremamente alta.&lt;/p>
&lt;p>Para encontrar o período $ r $ em um computador clássico, no final, etapas exponenciais são necessárias e isso não pode ser acelerado. No entanto, com um computador quântico, este período $ r $ pode ser encontrado em um instante (tempo polinomial).&lt;/p>
&lt;h3 id="passo-2-preparação-e-superposição-do-estado-quântico">Passo 2: Preparação e Superposição do Estado Quântico
&lt;/h3>&lt;p>A partir daqui é a vez do computador quântico.
Os computadores quânticos usam &amp;ldquo;qubits&amp;rdquo;, que podem ter o estado &amp;ldquo;0&amp;rdquo; e &amp;ldquo;1&amp;rdquo; simultaneamente. No algoritmo de Shor, são preparados dois registradores: o primeiro para armazenar a entrada e o segundo para os resultados do cálculo.&lt;/p>
&lt;p>Primeiro, uma operação de porta quântica chamada porta de Hadamard (Hadamard gate) é aplicada a todos os qubits do primeiro registrador. Isso coloca o primeiro registrador em um &lt;strong>estado de superposição uniforme&lt;/strong> de todos os valores concebíveis de $ x $ (de $ 0 $ a $ 2^n-1 $. $ n $ é um número de bits suficientemente grande).&lt;/p>
&lt;p>Em outras palavras, dentro do computador quântico, é criado um estado em que incontáveis valores de entrada como $ x=0, 1, 2, 3, \dots $ existem em paralelo ao mesmo tempo.&lt;/p>
&lt;h3 id="passo-3-exponenciação-modular-quântica-quantum-modular-exponentiation">Passo 3: Exponenciação Modular Quântica (Quantum Modular Exponentiation)
&lt;/h3>&lt;p>Em seguida, o estado de superposição do primeiro registrador é usado como entrada para calcular $ f(x) = a^x \pmod N $, e o resultado é armazenado no segundo registrador.
Como este cálculo é executado como uma transformação unitária no circuito quântico, o cálculo de $ f(x) $ para todos os $ x $ é feito de forma &amp;ldquo;paralela (paralelismo quântico)&amp;rdquo; enquanto a superposição é mantida.&lt;/p>
&lt;p>O espaço do sistema quântico inteiro neste ponto,
torna-se uma enorme superposição de estados $ |x, a^x \bmod N\rangle $.&lt;/p>
&lt;p>No entanto, se você simplesmente medir (observar) o segundo registrador aqui, um valor aleatório de $ a^x \bmod N $ será probabilisticamente selecionado, e em conjunto com isso, o $ x $ do primeiro registrador também será determinado. Isso não é diferente de calcular uma vez em um computador clássico, e você não conseguirá encontrar o período $ r $.&lt;/p>
&lt;p>Nas regras da mecânica quântica, você não pode observar o conteúdo de um estado de superposição diretamente. Então, como extrair a informação global chamada &amp;ldquo;período&amp;rdquo;?&lt;/p>
&lt;h3 id="passo-4-transformada-quântica-de-fourier-qft-quantum-fourier-transform">Passo 4: Transformada Quântica de Fourier (QFT: Quantum Fourier Transform)
&lt;/h3>&lt;p>O verdadeiro valor do algoritmo de Shor, que supera esse obstáculo, é a aplicação da &lt;strong>Transformada Quântica de Fourier (QFT)&lt;/strong> ao primeiro registrador.&lt;/p>
&lt;p>Antes de medir, analisamos a natureza da onda da função $ f(x) $. Vamos supor que o segundo registrador foi observado. Suponha que um valor $ y $ foi obtido. Então, o estado do primeiro registrador encolhe para &amp;ldquo;a superposição de todos os $ x $ tais que $ a^x \pmod N = y $&amp;rdquo;.
O valor deste $ x $ estará em um estado discreto com intervalos do período $ r $ (uma espécie de distribuição de amplitude de probabilidade em forma de pente), como $ x_0, x_0 + r, x_0 + 2r, x_0 + 3r, \dots $.&lt;/p>
&lt;p>Aplicamos a Transformada Quântica de Fourier (QFT) a este estado. Assim como a Transformada Discreta de Fourier clássica converte sinais no domínio do tempo para o domínio da frequência, a QFT faz com que as amplitudes de probabilidade do estado quântico interfiram.&lt;/p>
&lt;p>Quando a QFT é aplicada, devido ao efeito de interferência quântica, as probabilidades de respostas incorretas que não ressoam com o período $ r $ (fases não alinhadas) se cancelam mutuamente chegando perto de zero (interferência destrutiva), e apenas as probabilidades da resposta correta contendo a informação do período $ r $ são amplificadas (interferência construtiva).&lt;/p>
&lt;h3 id="passo-5-medição-e-fração-contínua-pós-processamento-clássico">Passo 5: Medição e Fração Contínua (Pós-processamento Clássico)
&lt;/h3>&lt;p>Após aplicar a QFT, se você medir o primeiro registrador, com uma probabilidade muito alta, um número inteiro $ c $ próximo à forma $ c \approx \frac{j \cdot 2^n}{r} $ será obtido ( $ j $ é um inteiro desconhecido, e $ 2^n $ é o tamanho do registrador).&lt;/p>
&lt;p>Trazendo o resultado desta medição $ c $ de volta para um computador clássico, criamos uma fração $ \frac{c}{2^n} \approx \frac{j}{r} $. Em seguida, usando o método matemático da &amp;ldquo;Expansão de Fração Contínua&amp;rdquo; (Continued fraction expansion) para calcular valores aproximados, podemos descobrir o período $ r $, que é o denominador.&lt;/p>
&lt;p>Uma vez conhecido o $ r $, o resto é calcular os fatores de $ N $ usando a fórmula do Passo 1, e a criptografia RSA é completamente quebrada.&lt;/p>
&lt;hr>
&lt;h2 id="a-força-e-os-desafios-do-computador-quântico-atual-nisq">A Força e os Desafios do Computador Quântico Atual (NISQ)
&lt;/h2>&lt;p>Embora teoricamente o algoritmo de Shor seja perfeito, se perguntado &amp;ldquo;A criptografia RSA será quebrada amanhã?&amp;rdquo;, a resposta é claramente &amp;ldquo;Não&amp;rdquo;. O motivo está nas limitações da tecnologia de hardware dos computadores quânticos atuais.&lt;/p>
&lt;h3 id="a-era-nisq-noisy-intermediate-scale-quantum">A Era NISQ (Noisy Intermediate-Scale Quantum)
&lt;/h3>&lt;p>A era em que nos encontramos atualmente é chamada de &amp;ldquo;NISQ&amp;rdquo;. Dispositivos NISQ possuem dezenas a centenas de qubits físicos, mas são extremamente vulneráveis ao ruído.&lt;/p>
&lt;p>Os qubits são facilmente afetados pelo ambiente externo, como calor e ondas eletromagnéticas, e ocorrem frequentemente &amp;ldquo;decoerência&amp;rdquo; (perda de emaranhamento quântico), onde o estado quântico se quebra, e &amp;ldquo;erros de porta&amp;rdquo; durante as operações. Quando se tenta executar um circuito quântico muito profundo (com um número enorme de passos operacionais) como o algoritmo de Shor, os erros se acumulam durante o cálculo e a saída final torna-se puro ruído sem significado.&lt;/p>
&lt;h3 id="qubit-físico-e-qubit-lógico">Qubit Físico e Qubit Lógico
&lt;/h3>&lt;p>O que é essencial para resolver este problema de erros é a &amp;ldquo;Correção de Erros Quânticos&amp;rdquo; (Quantum Error Correction).
Embora códigos de correção de erros também sejam usados em computadores clássicos, devido ao &amp;ldquo;teorema da não-clonagem&amp;rdquo;, que proíbe a cópia de estados quânticos, a correção de erros quânticos é extremamente complexa.&lt;/p>
&lt;p>Na correção de erros quânticos, utilizando tecnologias como &amp;ldquo;Código de Superfície&amp;rdquo; (Surface Code), muitos &amp;ldquo;qubits físicos&amp;rdquo; ruidosos são combinados para criar um &amp;ldquo;qubit lógico&amp;rdquo; ideal e livre de erros.&lt;/p>
&lt;p>Assumindo a taxa de erro atual, estima-se que cerca de 1.000 a 10.000 qubits físicos seriam necessários para criar um único qubit lógico. Isso é chamado de &amp;ldquo;overhead da correção de erros&amp;rdquo;.&lt;/p>
&lt;h3 id="que-recursos-são-necessários-para-quebrar-a-rsa-2048">Que Recursos são Necessários para Quebrar a RSA-2048?
&lt;/h3>&lt;p>Então, para realmente descriptografar a RSA-2048, quantos recursos seriam necessários para rodar o algoritmo de Shor?&lt;/p>
&lt;p>Em uma estimativa inovadora de recursos em um artigo de 2021 de Craig Gidney (Google) e Martin Ekerå, foi afirmado que se um algoritmo de Shor otimizado fosse usado, e correção de erros com código de superfície fosse realizada, os seguintes recursos seriam necessários:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Número de qubits lógicos&lt;/strong> : Aproximadamente 4.096&lt;/li>
&lt;li>&lt;strong>Número de qubits físicos&lt;/strong> : &lt;strong>Aproximadamente 20 milhões&lt;/strong> (assumindo uma taxa de erro de $10^{-3}$)&lt;/li>
&lt;li>&lt;strong>Tempo de cálculo&lt;/strong> : Aproximadamente 8 horas (milhões a bilhões de operações físicas de porta necessárias)&lt;/li>
&lt;/ul>
&lt;p>Em contraste com isso, qual é o nível que o hardware quântico atual alcançou?
O processador quântico supercondutor &amp;ldquo;Condor&amp;rdquo;, anunciado pela IBM no final de 2023, possui 1.121 qubits. Além disso, pesquisas inovadoras sobre a geração de qubits lógicos têm aparecido (como a geração de 48 qubits lógicos usando computadores quânticos de átomos neutros pela Universidade de Harvard, QuEra, etc.), mas ainda não chegamos no estágio de conseguir executar &amp;ldquo;cálculos perfeitos e sem ruído&amp;rdquo; continuamente por longos períodos.&lt;/p>
&lt;p>Passar de alguns milhares de qubits físicos para &lt;strong>20 milhões&lt;/strong> de qubits físicos práticos (que estão interconectados, operam de forma estável em temperaturas ultrabaixas e podem processar sinais de controle em velocidades ultrarrápidas) apresenta uma enorme barreira na engenharia (problemas de fiação, limites da capacidade de refrigeração e inchaço da eletrônica de controle). Muitos especialistas preveem que levará pelo menos 10 a 30 anos, ou mais, até que um &amp;ldquo;Computador Quântico Tolerante a Falhas&amp;rdquo; (FTQC - Fault-Tolerant Quantum Computer), capaz de quebrar a RSA-2048, se torne uma realidade.&lt;/p>
&lt;hr>
&lt;h2 id="a-ameaça-silenciosa-de-store-now-decrypt-later-e-o-amanhecer-da-pqc">A Ameaça Silenciosa de &amp;ldquo;Store Now, Decrypt Later&amp;rdquo; e o Amanhecer da PQC
&lt;/h2>&lt;p>Concluir que &amp;ldquo;estamos seguros porque ainda levará mais de 10 anos&amp;rdquo; é precipitado. Atualmente, existem dados que devem ser mantidos em segredo por décadas no futuro, como segredos de estado, dados médicos e projetos de infraestrutura de longo prazo.&lt;/p>
&lt;p>A preocupação aqui é o método de ataque chamado &lt;strong>&amp;ldquo;Store Now, Decrypt Later&amp;rdquo; (Armazene Agora, Descriptografe Depois)&lt;/strong>. Nações ou organizações mal-intencionadas interceptam todos os dados de comunicação atualmente criptografados usando RSA ou ECC (Criptografia de Curva Elíptica) e os guardam no armazenamento. E então, no momento em que um poderoso computador quântico for concluído em 10 ou 20 anos, eles usarão o algoritmo de Shor para descriptografar todos os dados do passado e expor os segredos.&lt;/p>
&lt;p>Para combater essa ameaça de tempo, liderado pelo NIST (Instituto Nacional de Padrões e Tecnologia dos EUA), o processo de padronização da &lt;strong>&amp;ldquo;Criptografia Pós-Quântica&amp;rdquo; (PQC: Post-Quantum Cryptography)&lt;/strong> tem sido acelerado em ritmo acelerado.&lt;/p>
&lt;p>A PQC é um novo algoritmo de criptografia baseado em problemas matemáticos que são difíceis de descriptografar mesmo usando um computador quântico (ou seja, o algoritmo de Shor não pode ser aplicado). Como principais abordagens, temos:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Criptografia baseada em reticulados (Lattice-based cryptography)&lt;/strong> : Baseado em problemas como LWE (Learning with Errors). O método dominante na padronização do NIST (Kyber, Dilithium, etc.).&lt;/li>
&lt;li>&lt;strong>Criptografia baseada em códigos (Code-based cryptography)&lt;/strong> : Depende da dificuldade do problema de decodificação de códigos corretores de erro.&lt;/li>
&lt;li>&lt;strong>Criptografia polinomial multivariável (Multivariate cryptography)&lt;/strong> : Depende da dificuldade de resolver equações quadráticas simultâneas multivariáveis.&lt;/li>
&lt;li>&lt;strong>Assinaturas baseadas em hash (Hash-based signatures)&lt;/strong> : Assinaturas digitais que dependem exclusivamente da segurança das funções de hash.&lt;/li>
&lt;/ul>
&lt;p>Testes de implementação e implementações híbridas da PQC já foram iniciados nos principais softwares e plataformas, como o Google Chrome e o iMessage da Apple.&lt;/p>
&lt;h2 id="conclusão">Conclusão
&lt;/h2>&lt;p>Os computadores quânticos estão passando de histórias de ficção científica para desafios reais de engenharia. O algoritmo de Shor é uma grande conquista intelectual da humanidade que mescla a matemática e a mecânica quântica, mas, ao mesmo tempo, guarda um &amp;ldquo;poder destrutivo&amp;rdquo; para sacudir as bases da nossa sociedade digital.&lt;/p>
&lt;p>Isso não significa que a criptografia RSA se tornará inutilizável a partir de amanhã. No entanto, considerando a evolução da tecnologia quântica e o risco do &amp;ldquo;Store Now, Decrypt Later&amp;rdquo;, a grande migração que ficará na história da criptografia - a transição para a PQC - já começou. Agora estamos testemunhando a linha de frente de uma mudança de paradigma na segurança da informação.&lt;/p></description></item><item><title>【Análise Completa】Entendendo e Implementando o Mais Forte Algoritmo de Quebra de Criptografia 'GNFS' em C++</title><link>http://kenji.blog/pt/p/gnfs-cpp-implementation/</link><pubDate>Sat, 05 Sep 2026 13:04:59 +0900</pubDate><guid>http://kenji.blog/pt/p/gnfs-cpp-implementation/</guid><description>&lt;img src="http://kenji.blog/p/gnfs-cpp-implementation/gnfs_cpp_blog_eyecatch_1788580949217.jpg" alt="Featured image of post 【Análise Completa】Entendendo e Implementando o Mais Forte Algoritmo de Quebra de Criptografia 'GNFS' em C++" />&lt;h1 id="análise-completaentendendo-e-implementando-o-mais-forte-algoritmo-de-quebra-de-criptografia-gnfs-em-c">【Análise Completa】Entendendo e Implementando o Mais Forte Algoritmo de Quebra de Criptografia &amp;ldquo;GNFS&amp;rdquo; em C++
&lt;/h1>&lt;p>A criptografia RSA, que sustenta a internet moderna, baseia-se na crença matemática de que &amp;ldquo;é virtualmente impossível para os computadores atuais fatorar números compostos gigantescos&amp;rdquo;.&lt;/p>
&lt;p>No entanto, a humanidade nunca desistiu. Atualmente, existe o &lt;strong>mais forte e avançado algoritmo&lt;/strong> da humanidade para a fatoração de grandes números primos em computadores clássicos (não quânticos). É o &lt;strong>&amp;ldquo;General Number Field Sieve (GNFS - Crivo Geral do Corpo de Números)&amp;rdquo;&lt;/strong>.&lt;/p>
&lt;p>Neste artigo, publicaremos o código de implementação completo que modela estritamente a lógica de computação mais avançada do GNFS em C++ (usando os inteiros de multiprecisão &lt;code>boost::multiprecision&lt;/code> da biblioteca Boost), e explicaremos minuciosamente as profundezas da &amp;ldquo;teoria algébrica dos números&amp;rdquo; por trás dele.&lt;/p>
&lt;p>Por favor, aproveite os mistérios da matemática e a força bruta da ciência da computação que os domina, juntamente com o código-fonte.&lt;/p>
&lt;hr>
&lt;h2 id="1-framework-de-lógica-gnfs-avançado-código-fonte-completo">1. Framework de Lógica GNFS Avançado (Código Fonte Completo)
&lt;/h2>&lt;p>Primeiro, apresentaremos o quadro geral da implementação C++ do GNFS que explicaremos desta vez. Embora o GNFS real (como o CADO-NFS) seja um enorme sistema distribuído que abrange centenas de milhares de linhas, este código extrai e modela as &lt;strong>&amp;ldquo;5 pipelines (fases) essenciais&amp;rdquo;&lt;/strong> que compõem o GNFS no design de classes, na configuração mínima, sem perder seu significado matemático.&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt"> 1
&lt;/span>&lt;span class="lnt"> 2
&lt;/span>&lt;span class="lnt"> 3
&lt;/span>&lt;span class="lnt"> 4
&lt;/span>&lt;span class="lnt"> 5
&lt;/span>&lt;span class="lnt"> 6
&lt;/span>&lt;span class="lnt"> 7
&lt;/span>&lt;span class="lnt"> 8
&lt;/span>&lt;span class="lnt"> 9
&lt;/span>&lt;span class="lnt"> 10
&lt;/span>&lt;span class="lnt"> 11
&lt;/span>&lt;span class="lnt"> 12
&lt;/span>&lt;span class="lnt"> 13
&lt;/span>&lt;span class="lnt"> 14
&lt;/span>&lt;span class="lnt"> 15
&lt;/span>&lt;span class="lnt"> 16
&lt;/span>&lt;span class="lnt"> 17
&lt;/span>&lt;span class="lnt"> 18
&lt;/span>&lt;span class="lnt"> 19
&lt;/span>&lt;span class="lnt"> 20
&lt;/span>&lt;span class="lnt"> 21
&lt;/span>&lt;span class="lnt"> 22
&lt;/span>&lt;span class="lnt"> 23
&lt;/span>&lt;span class="lnt"> 24
&lt;/span>&lt;span class="lnt"> 25
&lt;/span>&lt;span class="lnt"> 26
&lt;/span>&lt;span class="lnt"> 27
&lt;/span>&lt;span class="lnt"> 28
&lt;/span>&lt;span class="lnt"> 29
&lt;/span>&lt;span class="lnt"> 30
&lt;/span>&lt;span class="lnt"> 31
&lt;/span>&lt;span class="lnt"> 32
&lt;/span>&lt;span class="lnt"> 33
&lt;/span>&lt;span class="lnt"> 34
&lt;/span>&lt;span class="lnt"> 35
&lt;/span>&lt;span class="lnt"> 36
&lt;/span>&lt;span class="lnt"> 37
&lt;/span>&lt;span class="lnt"> 38
&lt;/span>&lt;span class="lnt"> 39
&lt;/span>&lt;span class="lnt"> 40
&lt;/span>&lt;span class="lnt"> 41
&lt;/span>&lt;span class="lnt"> 42
&lt;/span>&lt;span class="lnt"> 43
&lt;/span>&lt;span class="lnt"> 44
&lt;/span>&lt;span class="lnt"> 45
&lt;/span>&lt;span class="lnt"> 46
&lt;/span>&lt;span class="lnt"> 47
&lt;/span>&lt;span class="lnt"> 48
&lt;/span>&lt;span class="lnt"> 49
&lt;/span>&lt;span class="lnt"> 50
&lt;/span>&lt;span class="lnt"> 51
&lt;/span>&lt;span class="lnt"> 52
&lt;/span>&lt;span class="lnt"> 53
&lt;/span>&lt;span class="lnt"> 54
&lt;/span>&lt;span class="lnt"> 55
&lt;/span>&lt;span class="lnt"> 56
&lt;/span>&lt;span class="lnt"> 57
&lt;/span>&lt;span class="lnt"> 58
&lt;/span>&lt;span class="lnt"> 59
&lt;/span>&lt;span class="lnt"> 60
&lt;/span>&lt;span class="lnt"> 61
&lt;/span>&lt;span class="lnt"> 62
&lt;/span>&lt;span class="lnt"> 63
&lt;/span>&lt;span class="lnt"> 64
&lt;/span>&lt;span class="lnt"> 65
&lt;/span>&lt;span class="lnt"> 66
&lt;/span>&lt;span class="lnt"> 67
&lt;/span>&lt;span class="lnt"> 68
&lt;/span>&lt;span class="lnt"> 69
&lt;/span>&lt;span class="lnt"> 70
&lt;/span>&lt;span class="lnt"> 71
&lt;/span>&lt;span class="lnt"> 72
&lt;/span>&lt;span class="lnt"> 73
&lt;/span>&lt;span class="lnt"> 74
&lt;/span>&lt;span class="lnt"> 75
&lt;/span>&lt;span class="lnt"> 76
&lt;/span>&lt;span class="lnt"> 77
&lt;/span>&lt;span class="lnt"> 78
&lt;/span>&lt;span class="lnt"> 79
&lt;/span>&lt;span class="lnt"> 80
&lt;/span>&lt;span class="lnt"> 81
&lt;/span>&lt;span class="lnt"> 82
&lt;/span>&lt;span class="lnt"> 83
&lt;/span>&lt;span class="lnt"> 84
&lt;/span>&lt;span class="lnt"> 85
&lt;/span>&lt;span class="lnt"> 86
&lt;/span>&lt;span class="lnt"> 87
&lt;/span>&lt;span class="lnt"> 88
&lt;/span>&lt;span class="lnt"> 89
&lt;/span>&lt;span class="lnt"> 90
&lt;/span>&lt;span class="lnt"> 91
&lt;/span>&lt;span class="lnt"> 92
&lt;/span>&lt;span class="lnt"> 93
&lt;/span>&lt;span class="lnt"> 94
&lt;/span>&lt;span class="lnt"> 95
&lt;/span>&lt;span class="lnt"> 96
&lt;/span>&lt;span class="lnt"> 97
&lt;/span>&lt;span class="lnt"> 98
&lt;/span>&lt;span class="lnt"> 99
&lt;/span>&lt;span class="lnt">100
&lt;/span>&lt;span class="lnt">101
&lt;/span>&lt;span class="lnt">102
&lt;/span>&lt;span class="lnt">103
&lt;/span>&lt;span class="lnt">104
&lt;/span>&lt;span class="lnt">105
&lt;/span>&lt;span class="lnt">106
&lt;/span>&lt;span class="lnt">107
&lt;/span>&lt;span class="lnt">108
&lt;/span>&lt;span class="lnt">109
&lt;/span>&lt;span class="lnt">110
&lt;/span>&lt;span class="lnt">111
&lt;/span>&lt;span class="lnt">112
&lt;/span>&lt;span class="lnt">113
&lt;/span>&lt;span class="lnt">114
&lt;/span>&lt;span class="lnt">115
&lt;/span>&lt;span class="lnt">116
&lt;/span>&lt;span class="lnt">117
&lt;/span>&lt;span class="lnt">118
&lt;/span>&lt;span class="lnt">119
&lt;/span>&lt;span class="lnt">120
&lt;/span>&lt;span class="lnt">121
&lt;/span>&lt;span class="lnt">122
&lt;/span>&lt;span class="lnt">123
&lt;/span>&lt;span class="lnt">124
&lt;/span>&lt;span class="lnt">125
&lt;/span>&lt;span class="lnt">126
&lt;/span>&lt;span class="lnt">127
&lt;/span>&lt;span class="lnt">128
&lt;/span>&lt;span class="lnt">129
&lt;/span>&lt;span class="lnt">130
&lt;/span>&lt;span class="lnt">131
&lt;/span>&lt;span class="lnt">132
&lt;/span>&lt;span class="lnt">133
&lt;/span>&lt;span class="lnt">134
&lt;/span>&lt;span class="lnt">135
&lt;/span>&lt;span class="lnt">136
&lt;/span>&lt;span class="lnt">137
&lt;/span>&lt;span class="lnt">138
&lt;/span>&lt;span class="lnt">139
&lt;/span>&lt;span class="lnt">140
&lt;/span>&lt;span class="lnt">141
&lt;/span>&lt;span class="lnt">142
&lt;/span>&lt;span class="lnt">143
&lt;/span>&lt;span class="lnt">144
&lt;/span>&lt;span class="lnt">145
&lt;/span>&lt;span class="lnt">146
&lt;/span>&lt;span class="lnt">147
&lt;/span>&lt;span class="lnt">148
&lt;/span>&lt;span class="lnt">149
&lt;/span>&lt;span class="lnt">150
&lt;/span>&lt;span class="lnt">151
&lt;/span>&lt;span class="lnt">152
&lt;/span>&lt;span class="lnt">153
&lt;/span>&lt;span class="lnt">154
&lt;/span>&lt;span class="lnt">155
&lt;/span>&lt;span class="lnt">156
&lt;/span>&lt;span class="lnt">157
&lt;/span>&lt;span class="lnt">158
&lt;/span>&lt;span class="lnt">159
&lt;/span>&lt;span class="lnt">160
&lt;/span>&lt;span class="lnt">161
&lt;/span>&lt;span class="lnt">162
&lt;/span>&lt;span class="lnt">163
&lt;/span>&lt;span class="lnt">164
&lt;/span>&lt;span class="lnt">165
&lt;/span>&lt;span class="lnt">166
&lt;/span>&lt;span class="lnt">167
&lt;/span>&lt;span class="lnt">168
&lt;/span>&lt;span class="lnt">169
&lt;/span>&lt;span class="lnt">170
&lt;/span>&lt;span class="lnt">171
&lt;/span>&lt;span class="lnt">172
&lt;/span>&lt;span class="lnt">173
&lt;/span>&lt;span class="lnt">174
&lt;/span>&lt;span class="lnt">175
&lt;/span>&lt;span class="lnt">176
&lt;/span>&lt;span class="lnt">177
&lt;/span>&lt;span class="lnt">178
&lt;/span>&lt;span class="lnt">179
&lt;/span>&lt;span class="lnt">180
&lt;/span>&lt;span class="lnt">181
&lt;/span>&lt;span class="lnt">182
&lt;/span>&lt;span class="lnt">183
&lt;/span>&lt;span class="lnt">184
&lt;/span>&lt;span class="lnt">185
&lt;/span>&lt;span class="lnt">186
&lt;/span>&lt;span class="lnt">187
&lt;/span>&lt;span class="lnt">188
&lt;/span>&lt;span class="lnt">189
&lt;/span>&lt;span class="lnt">190
&lt;/span>&lt;span class="lnt">191
&lt;/span>&lt;span class="lnt">192
&lt;/span>&lt;span class="lnt">193
&lt;/span>&lt;span class="lnt">194
&lt;/span>&lt;span class="lnt">195
&lt;/span>&lt;span class="lnt">196
&lt;/span>&lt;span class="lnt">197
&lt;/span>&lt;span class="lnt">198
&lt;/span>&lt;span class="lnt">199
&lt;/span>&lt;span class="lnt">200
&lt;/span>&lt;span class="lnt">201
&lt;/span>&lt;span class="lnt">202
&lt;/span>&lt;span class="lnt">203
&lt;/span>&lt;span class="lnt">204
&lt;/span>&lt;span class="lnt">205
&lt;/span>&lt;span class="lnt">206
&lt;/span>&lt;span class="lnt">207
&lt;/span>&lt;span class="lnt">208
&lt;/span>&lt;span class="lnt">209
&lt;/span>&lt;span class="lnt">210
&lt;/span>&lt;span class="lnt">211
&lt;/span>&lt;span class="lnt">212
&lt;/span>&lt;span class="lnt">213
&lt;/span>&lt;span class="lnt">214
&lt;/span>&lt;span class="lnt">215
&lt;/span>&lt;span class="lnt">216
&lt;/span>&lt;span class="lnt">217
&lt;/span>&lt;span class="lnt">218
&lt;/span>&lt;span class="lnt">219
&lt;/span>&lt;span class="lnt">220
&lt;/span>&lt;span class="lnt">221
&lt;/span>&lt;span class="lnt">222
&lt;/span>&lt;span class="lnt">223
&lt;/span>&lt;span class="lnt">224
&lt;/span>&lt;span class="lnt">225
&lt;/span>&lt;span class="lnt">226
&lt;/span>&lt;span class="lnt">227
&lt;/span>&lt;span class="lnt">228
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-cpp" data-lang="cpp">&lt;span class="line">&lt;span class="cl">&lt;span class="cp">#include&lt;/span> &lt;span class="cpf">&amp;lt;iostream&amp;gt;&lt;/span>&lt;span class="cp">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="cp">#include&lt;/span> &lt;span class="cpf">&amp;lt;vector&amp;gt;&lt;/span>&lt;span class="cp">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="cp">#include&lt;/span> &lt;span class="cpf">&amp;lt;cmath&amp;gt;&lt;/span>&lt;span class="cp">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="cp">#include&lt;/span> &lt;span class="cpf">&amp;lt;map&amp;gt;&lt;/span>&lt;span class="cp">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="cp">#include&lt;/span> &lt;span class="cpf">&amp;lt;set&amp;gt;&lt;/span>&lt;span class="cp">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="cp">#include&lt;/span> &lt;span class="cpf">&amp;lt;chrono&amp;gt;&lt;/span>&lt;span class="cp">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="cp">#include&lt;/span> &lt;span class="cpf">&amp;lt;boost/multiprecision/cpp_int.hpp&amp;gt;&lt;/span>&lt;span class="cp">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="cp">&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">// Usando inteiros de multiprecisão do Boost.Multiprecision
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">&lt;/span>&lt;span class="k">using&lt;/span> &lt;span class="k">namespace&lt;/span> &lt;span class="n">boost&lt;/span>&lt;span class="o">::&lt;/span>&lt;span class="n">multiprecision&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">// ============================================================================
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">// [SOTA GNFS] Framework Lógico Avançado do General Number Field Sieve (Crivo Geral do Corpo de Números)
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">//
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">// Este código modela estritamente os 5 pipelines avançados do GNFS usados
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">// no CADO-NFS etc., como o design de classes C++ (Boost).
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">// ============================================================================
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="k">struct&lt;/span> &lt;span class="nc">Relation&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="kt">int64_t&lt;/span> &lt;span class="n">a&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="kt">int64_t&lt;/span> &lt;span class="n">b&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">std&lt;/span>&lt;span class="o">::&lt;/span>&lt;span class="n">vector&lt;/span>&lt;span class="o">&amp;lt;&lt;/span>&lt;span class="kt">uint32_t&lt;/span>&lt;span class="o">&amp;gt;&lt;/span> &lt;span class="n">rational_primes&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">std&lt;/span>&lt;span class="o">::&lt;/span>&lt;span class="n">vector&lt;/span>&lt;span class="o">&amp;lt;&lt;/span>&lt;span class="kt">uint32_t&lt;/span>&lt;span class="o">&amp;gt;&lt;/span> &lt;span class="n">algebraic_primes&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">};&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">// ============================================================================
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">// Fase 1: Polynomial Selection (Seleção Polinomial - Algoritmo de KleinJung)
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">// ============================================================================
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">&lt;/span>&lt;span class="k">class&lt;/span> &lt;span class="nc">PolynomialSelector&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="k">public&lt;/span>&lt;span class="o">:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="kt">int&lt;/span> &lt;span class="n">degree&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">std&lt;/span>&lt;span class="o">::&lt;/span>&lt;span class="n">vector&lt;/span>&lt;span class="o">&amp;lt;&lt;/span>&lt;span class="n">cpp_int&lt;/span>&lt;span class="o">&amp;gt;&lt;/span> &lt;span class="n">f&lt;/span>&lt;span class="p">;&lt;/span> &lt;span class="c1">// Polinômio do lado algébrico f(x)
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">&lt;/span> &lt;span class="n">std&lt;/span>&lt;span class="o">::&lt;/span>&lt;span class="n">vector&lt;/span>&lt;span class="o">&amp;lt;&lt;/span>&lt;span class="n">cpp_int&lt;/span>&lt;span class="o">&amp;gt;&lt;/span> &lt;span class="n">g&lt;/span>&lt;span class="p">;&lt;/span> &lt;span class="c1">// Polinômio do lado racional g(x) = x - m
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">&lt;/span> &lt;span class="n">cpp_int&lt;/span> &lt;span class="n">m&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">PolynomialSelector&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="kt">int&lt;/span> &lt;span class="n">d&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="o">:&lt;/span> &lt;span class="n">degree&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">d&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="p">{}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1">// Geração do polinômio inicial baseado na expansão base-m (Na realidade, usa a redução de base reticulada LLL, que é mais avançada)
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">&lt;/span> &lt;span class="kt">void&lt;/span> &lt;span class="nf">select&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="k">const&lt;/span> &lt;span class="n">cpp_int&lt;/span>&lt;span class="o">&amp;amp;&lt;/span> &lt;span class="n">N&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">std&lt;/span>&lt;span class="o">::&lt;/span>&lt;span class="n">cout&lt;/span> &lt;span class="o">&amp;lt;&amp;lt;&lt;/span> &lt;span class="s">&amp;#34;[Fase 1] Seleção Polinomial (Grau &amp;#34;&lt;/span> &lt;span class="o">&amp;lt;&amp;lt;&lt;/span> &lt;span class="n">degree&lt;/span> &lt;span class="o">&amp;lt;&amp;lt;&lt;/span> &lt;span class="s">&amp;#34;) iniciando...&amp;#34;&lt;/span> &lt;span class="o">&amp;lt;&amp;lt;&lt;/span> &lt;span class="n">std&lt;/span>&lt;span class="o">::&lt;/span>&lt;span class="n">endl&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1">// Expansão base-m simples (grau d)
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">&lt;/span> &lt;span class="c1">// m = N^(1/d)
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">&lt;/span> &lt;span class="n">cpp_int&lt;/span> &lt;span class="n">N_copy&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">N&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">m&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="mi">1&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1">// Aproximação simples de m (Aproximação sem usar as funções do Boost)
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">&lt;/span> &lt;span class="n">cpp_int&lt;/span> &lt;span class="n">low&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="mi">1&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">high&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">N&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">while&lt;/span> &lt;span class="p">(&lt;/span>&lt;span class="n">low&lt;/span> &lt;span class="o">&amp;lt;=&lt;/span> &lt;span class="n">high&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">cpp_int&lt;/span> &lt;span class="n">mid&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">low&lt;/span> &lt;span class="o">+&lt;/span> &lt;span class="p">(&lt;/span>&lt;span class="n">high&lt;/span> &lt;span class="o">-&lt;/span> &lt;span class="n">low&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="o">/&lt;/span> &lt;span class="mi">2&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">cpp_int&lt;/span> &lt;span class="n">p&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="mi">1&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">for&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="kt">int&lt;/span> &lt;span class="n">i&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="mi">0&lt;/span>&lt;span class="p">;&lt;/span> &lt;span class="n">i&lt;/span>&lt;span class="o">&amp;lt;&lt;/span>&lt;span class="n">degree&lt;/span>&lt;span class="p">;&lt;/span> &lt;span class="o">++&lt;/span>&lt;span class="n">i&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="n">p&lt;/span> &lt;span class="o">*=&lt;/span> &lt;span class="n">mid&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">if&lt;/span> &lt;span class="p">(&lt;/span>&lt;span class="n">p&lt;/span> &lt;span class="o">&amp;lt;=&lt;/span> &lt;span class="n">N&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="p">{&lt;/span> &lt;span class="n">m&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">mid&lt;/span>&lt;span class="p">;&lt;/span> &lt;span class="n">low&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">mid&lt;/span> &lt;span class="o">+&lt;/span> &lt;span class="mi">1&lt;/span>&lt;span class="p">;&lt;/span> &lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">else&lt;/span> &lt;span class="p">{&lt;/span> &lt;span class="n">high&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">mid&lt;/span> &lt;span class="o">-&lt;/span> &lt;span class="mi">1&lt;/span>&lt;span class="p">;&lt;/span> &lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">f&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">resize&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">degree&lt;/span> &lt;span class="o">+&lt;/span> &lt;span class="mi">1&lt;/span>&lt;span class="p">);&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">cpp_int&lt;/span> &lt;span class="n">temp&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">N&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">for&lt;/span> &lt;span class="p">(&lt;/span>&lt;span class="kt">int&lt;/span> &lt;span class="n">i&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="mi">0&lt;/span>&lt;span class="p">;&lt;/span> &lt;span class="n">i&lt;/span> &lt;span class="o">&amp;lt;=&lt;/span> &lt;span class="n">degree&lt;/span>&lt;span class="p">;&lt;/span> &lt;span class="o">++&lt;/span>&lt;span class="n">i&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">f&lt;/span>&lt;span class="p">[&lt;/span>&lt;span class="n">i&lt;/span>&lt;span class="p">]&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">temp&lt;/span> &lt;span class="o">%&lt;/span> &lt;span class="n">m&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">temp&lt;/span> &lt;span class="o">/=&lt;/span> &lt;span class="n">m&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">g&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="p">{&lt;/span>&lt;span class="o">-&lt;/span>&lt;span class="n">m&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="mi">1&lt;/span>&lt;span class="p">};&lt;/span> &lt;span class="c1">// g(x) = x - m
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">std&lt;/span>&lt;span class="o">::&lt;/span>&lt;span class="n">cout&lt;/span> &lt;span class="o">&amp;lt;&amp;lt;&lt;/span> &lt;span class="s">&amp;#34; -&amp;gt; m = &amp;#34;&lt;/span> &lt;span class="o">&amp;lt;&amp;lt;&lt;/span> &lt;span class="n">m&lt;/span> &lt;span class="o">&amp;lt;&amp;lt;&lt;/span> &lt;span class="n">std&lt;/span>&lt;span class="o">::&lt;/span>&lt;span class="n">endl&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">std&lt;/span>&lt;span class="o">::&lt;/span>&lt;span class="n">cout&lt;/span> &lt;span class="o">&amp;lt;&amp;lt;&lt;/span> &lt;span class="s">&amp;#34; -&amp;gt; f(x) = &amp;#34;&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">for&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="kt">int&lt;/span> &lt;span class="n">i&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">degree&lt;/span>&lt;span class="p">;&lt;/span> &lt;span class="n">i&lt;/span> &lt;span class="o">&amp;gt;=&lt;/span> &lt;span class="mi">0&lt;/span>&lt;span class="p">;&lt;/span> &lt;span class="o">--&lt;/span>&lt;span class="n">i&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">std&lt;/span>&lt;span class="o">::&lt;/span>&lt;span class="n">cout&lt;/span> &lt;span class="o">&amp;lt;&amp;lt;&lt;/span> &lt;span class="n">f&lt;/span>&lt;span class="p">[&lt;/span>&lt;span class="n">i&lt;/span>&lt;span class="p">]&lt;/span> &lt;span class="o">&amp;lt;&amp;lt;&lt;/span> &lt;span class="s">&amp;#34;x^&amp;#34;&lt;/span> &lt;span class="o">&amp;lt;&amp;lt;&lt;/span> &lt;span class="n">i&lt;/span> &lt;span class="o">&amp;lt;&amp;lt;&lt;/span> &lt;span class="p">(&lt;/span>&lt;span class="n">i&lt;/span> &lt;span class="o">&amp;gt;&lt;/span> &lt;span class="mi">0&lt;/span> &lt;span class="o">?&lt;/span> &lt;span class="s">&amp;#34; + &amp;#34;&lt;/span> &lt;span class="o">:&lt;/span> &lt;span class="s">&amp;#34;&amp;#34;&lt;/span>&lt;span class="p">);&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">std&lt;/span>&lt;span class="o">::&lt;/span>&lt;span class="n">cout&lt;/span> &lt;span class="o">&amp;lt;&amp;lt;&lt;/span> &lt;span class="s">&amp;#34;&lt;/span>&lt;span class="se">\n&lt;/span>&lt;span class="s">[Fase 1] Concluída.&amp;#34;&lt;/span> &lt;span class="o">&amp;lt;&amp;lt;&lt;/span> &lt;span class="n">std&lt;/span>&lt;span class="o">::&lt;/span>&lt;span class="n">endl&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">};&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">// ============================================================================
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">// Fase 2: Lattice Sieving (Crivo de Reticulado)
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">// ============================================================================
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">// Nos últimos anos, em vez de Line Sieve (Crivo de Linha), o Special-q Lattice Sieving (Crivo de Reticulado q Especial)
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">// de Franke-Kleinjung e outros é o padrão de fato.
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">&lt;/span>&lt;span class="k">class&lt;/span> &lt;span class="nc">LatticeSieve&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="kt">uint32_t&lt;/span> &lt;span class="n">rational_bound&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="kt">uint32_t&lt;/span> &lt;span class="n">algebraic_bound&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">std&lt;/span>&lt;span class="o">::&lt;/span>&lt;span class="n">vector&lt;/span>&lt;span class="o">&amp;lt;&lt;/span>&lt;span class="kt">uint32_t&lt;/span>&lt;span class="o">&amp;gt;&lt;/span> &lt;span class="n">rational_fb&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">std&lt;/span>&lt;span class="o">::&lt;/span>&lt;span class="n">vector&lt;/span>&lt;span class="o">&amp;lt;&lt;/span>&lt;span class="kt">uint32_t&lt;/span>&lt;span class="o">&amp;gt;&lt;/span> &lt;span class="n">algebraic_fb&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="k">public&lt;/span>&lt;span class="o">:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">LatticeSieve&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="kt">uint32_t&lt;/span> &lt;span class="n">rb&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="kt">uint32_t&lt;/span> &lt;span class="n">ab&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="o">:&lt;/span> &lt;span class="n">rational_bound&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">rb&lt;/span>&lt;span class="p">),&lt;/span> &lt;span class="n">algebraic_bound&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">ab&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="p">{}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="kt">void&lt;/span> &lt;span class="nf">generate_factor_bases&lt;/span>&lt;span class="p">()&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">std&lt;/span>&lt;span class="o">::&lt;/span>&lt;span class="n">cout&lt;/span> &lt;span class="o">&amp;lt;&amp;lt;&lt;/span> &lt;span class="s">&amp;#34;[Fase 2] Gerando Bases de Fator (Limite Racional: &amp;#34;&lt;/span> &lt;span class="o">&amp;lt;&amp;lt;&lt;/span> &lt;span class="n">rational_bound&lt;/span> &lt;span class="o">&amp;lt;&amp;lt;&lt;/span> &lt;span class="s">&amp;#34;, Limite Algébrico: &amp;#34;&lt;/span> &lt;span class="o">&amp;lt;&amp;lt;&lt;/span> &lt;span class="n">algebraic_bound&lt;/span> &lt;span class="o">&amp;lt;&amp;lt;&lt;/span> &lt;span class="s">&amp;#34;)&amp;#34;&lt;/span> &lt;span class="o">&amp;lt;&amp;lt;&lt;/span> &lt;span class="n">std&lt;/span>&lt;span class="o">::&lt;/span>&lt;span class="n">endl&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1">// (Omitido) Na realidade, ele gera números primos e restringe usando o símbolo de Legendre etc.
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">&lt;/span> &lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">std&lt;/span>&lt;span class="o">::&lt;/span>&lt;span class="n">vector&lt;/span>&lt;span class="o">&amp;lt;&lt;/span>&lt;span class="n">Relation&lt;/span>&lt;span class="o">&amp;gt;&lt;/span> &lt;span class="n">sieve&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="k">const&lt;/span> &lt;span class="n">PolynomialSelector&lt;/span>&lt;span class="o">&amp;amp;&lt;/span> &lt;span class="n">poly&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">std&lt;/span>&lt;span class="o">::&lt;/span>&lt;span class="n">cout&lt;/span> &lt;span class="o">&amp;lt;&amp;lt;&lt;/span> &lt;span class="s">&amp;#34;[Fase 2] Special-q Lattice Sieving ativo...&amp;#34;&lt;/span> &lt;span class="o">&amp;lt;&amp;lt;&lt;/span> &lt;span class="n">std&lt;/span>&lt;span class="o">::&lt;/span>&lt;span class="n">endl&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">std&lt;/span>&lt;span class="o">::&lt;/span>&lt;span class="n">vector&lt;/span>&lt;span class="o">&amp;lt;&lt;/span>&lt;span class="n">Relation&lt;/span>&lt;span class="o">&amp;gt;&lt;/span> &lt;span class="n">relations&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1">// Implementação simulada: O crivo de reticulado real varre centenas de GB de espaço de memória em unidades de bloco.
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">&lt;/span> &lt;span class="c1">// Mapeia o par (a, b) para a grade para cada primo especial q (a = i*q + j*...) e
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">&lt;/span> &lt;span class="c1">// executa um sieve (crivo) que maximiza a eficiência do cache ao limite.
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1">// Adicionando uma relação simulada para fins de demonstração
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">&lt;/span> &lt;span class="n">Relation&lt;/span> &lt;span class="n">r&lt;/span>&lt;span class="p">;&lt;/span> &lt;span class="n">r&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">a&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="mi">17&lt;/span>&lt;span class="p">;&lt;/span> &lt;span class="n">r&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">b&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="mi">3&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">r&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">rational_primes&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="p">{&lt;/span>&lt;span class="mi">2&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="mi">5&lt;/span>&lt;span class="p">};&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">r&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">algebraic_primes&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="p">{&lt;/span>&lt;span class="mi">3&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="mi">7&lt;/span>&lt;span class="p">};&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">relations&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">push_back&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">r&lt;/span>&lt;span class="p">);&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">std&lt;/span>&lt;span class="o">::&lt;/span>&lt;span class="n">cout&lt;/span> &lt;span class="o">&amp;lt;&amp;lt;&lt;/span> &lt;span class="s">&amp;#34;[Fase 2] Encontradas &amp;#34;&lt;/span> &lt;span class="o">&amp;lt;&amp;lt;&lt;/span> &lt;span class="n">relations&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">size&lt;/span>&lt;span class="p">()&lt;/span> &lt;span class="o">&amp;lt;&amp;lt;&lt;/span> &lt;span class="s">&amp;#34; relações.&amp;#34;&lt;/span> &lt;span class="o">&amp;lt;&amp;lt;&lt;/span> &lt;span class="n">std&lt;/span>&lt;span class="o">::&lt;/span>&lt;span class="n">endl&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">return&lt;/span> &lt;span class="n">relations&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">};&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">// ============================================================================
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">// Fase 3: Filtering (Expurgo de Singularidades e Fusão de Cliques)
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">// ============================================================================
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">&lt;/span>&lt;span class="k">class&lt;/span> &lt;span class="nc">Filter&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="k">public&lt;/span>&lt;span class="o">:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="kt">void&lt;/span> &lt;span class="n">reduce_matrix&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">std&lt;/span>&lt;span class="o">::&lt;/span>&lt;span class="n">vector&lt;/span>&lt;span class="o">&amp;lt;&lt;/span>&lt;span class="n">Relation&lt;/span>&lt;span class="o">&amp;gt;&amp;amp;&lt;/span> &lt;span class="n">relations&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">std&lt;/span>&lt;span class="o">::&lt;/span>&lt;span class="n">cout&lt;/span> &lt;span class="o">&amp;lt;&amp;lt;&lt;/span> &lt;span class="s">&amp;#34;[Fase 3] Filtrando Relações...&amp;#34;&lt;/span> &lt;span class="o">&amp;lt;&amp;lt;&lt;/span> &lt;span class="n">std&lt;/span>&lt;span class="o">::&lt;/span>&lt;span class="n">endl&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1">// 1. Singleton removal (Remoção de relações com números primos que aparecem apenas uma vez)
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">&lt;/span> &lt;span class="c1">// 2. Clique merging (Fusão de relações para tornar uma matriz esparsa em uma matriz densa)
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">&lt;/span> &lt;span class="c1">// Na verdade, comprime matrizes de centenas de milhões de linhas em alguns milhões usando algoritmos como Union-Find.
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">&lt;/span> &lt;span class="n">std&lt;/span>&lt;span class="o">::&lt;/span>&lt;span class="n">cout&lt;/span> &lt;span class="o">&amp;lt;&amp;lt;&lt;/span> &lt;span class="s">&amp;#34;[Fase 3] Tamanho da matriz reduzido idealmente.&amp;#34;&lt;/span> &lt;span class="o">&amp;lt;&amp;lt;&lt;/span> &lt;span class="n">std&lt;/span>&lt;span class="o">::&lt;/span>&lt;span class="n">endl&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">};&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">// ============================================================================
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">// Fase 4: Linear Algebra over GF(2) (Método Block Wiedemann)
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">// ============================================================================
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">&lt;/span>&lt;span class="k">class&lt;/span> &lt;span class="nc">LinearAlgebraGF2&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="k">public&lt;/span>&lt;span class="o">:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1">// Em ambientes de supercomputadores recentes, o Método Block Wiedemann (Implementação de Coppersmith)
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">&lt;/span> &lt;span class="c1">// é usado como a tecnologia mais avançada porque é mais adequado para computação distribuída
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">&lt;/span> &lt;span class="c1">// do que o Método Block Lanczos.
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">&lt;/span> &lt;span class="n">std&lt;/span>&lt;span class="o">::&lt;/span>&lt;span class="n">vector&lt;/span>&lt;span class="o">&amp;lt;&lt;/span>&lt;span class="n">std&lt;/span>&lt;span class="o">::&lt;/span>&lt;span class="n">vector&lt;/span>&lt;span class="o">&amp;lt;&lt;/span>&lt;span class="kt">int&lt;/span>&lt;span class="o">&amp;gt;&amp;gt;&lt;/span> &lt;span class="n">solve_nullspace&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="k">const&lt;/span> &lt;span class="n">std&lt;/span>&lt;span class="o">::&lt;/span>&lt;span class="n">vector&lt;/span>&lt;span class="o">&amp;lt;&lt;/span>&lt;span class="n">Relation&lt;/span>&lt;span class="o">&amp;gt;&amp;amp;&lt;/span> &lt;span class="n">relations&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">std&lt;/span>&lt;span class="o">::&lt;/span>&lt;span class="n">cout&lt;/span> &lt;span class="o">&amp;lt;&amp;lt;&lt;/span> &lt;span class="s">&amp;#34;[Fase 4] Algoritmo de Block Wiedemann sobre GF(2) iniciando...&amp;#34;&lt;/span> &lt;span class="o">&amp;lt;&amp;lt;&lt;/span> &lt;span class="n">std&lt;/span>&lt;span class="o">::&lt;/span>&lt;span class="n">endl&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1">// Repete a operação de produto da matriz esparsa e vetor,
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">&lt;/span> &lt;span class="c1">// e encontra vários vetores de solução (kernel) em que M * x = 0 mod 2.
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">std&lt;/span>&lt;span class="o">::&lt;/span>&lt;span class="n">vector&lt;/span>&lt;span class="o">&amp;lt;&lt;/span>&lt;span class="n">std&lt;/span>&lt;span class="o">::&lt;/span>&lt;span class="n">vector&lt;/span>&lt;span class="o">&amp;lt;&lt;/span>&lt;span class="kt">int&lt;/span>&lt;span class="o">&amp;gt;&amp;gt;&lt;/span> &lt;span class="n">dependencies&lt;/span>&lt;span class="p">;&lt;/span> &lt;span class="c1">// Lista de dependências
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">&lt;/span> &lt;span class="c1">// Dados simulados
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">&lt;/span> &lt;span class="n">dependencies&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">push_back&lt;/span>&lt;span class="p">({&lt;/span>&lt;span class="mi">0&lt;/span>&lt;span class="p">});&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">std&lt;/span>&lt;span class="o">::&lt;/span>&lt;span class="n">cout&lt;/span> &lt;span class="o">&amp;lt;&amp;lt;&lt;/span> &lt;span class="s">&amp;#34;[Fase 4] Encontradas &amp;#34;&lt;/span> &lt;span class="o">&amp;lt;&amp;lt;&lt;/span> &lt;span class="n">dependencies&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">size&lt;/span>&lt;span class="p">()&lt;/span> &lt;span class="o">&amp;lt;&amp;lt;&lt;/span> &lt;span class="s">&amp;#34; dependências lineares (quadrados perfeitos).&amp;#34;&lt;/span> &lt;span class="o">&amp;lt;&amp;lt;&lt;/span> &lt;span class="n">std&lt;/span>&lt;span class="o">::&lt;/span>&lt;span class="n">endl&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">return&lt;/span> &lt;span class="n">dependencies&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">};&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">// ============================================================================
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">// Fase 5: Algebraic Square Root (Raiz Quadrada Algébrica)
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">// ============================================================================
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">&lt;/span>&lt;span class="k">class&lt;/span> &lt;span class="nc">AlgebraicSquareRoot&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="k">public&lt;/span>&lt;span class="o">:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="kt">void&lt;/span> &lt;span class="n">compute_and_factor&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="k">const&lt;/span> &lt;span class="n">std&lt;/span>&lt;span class="o">::&lt;/span>&lt;span class="n">vector&lt;/span>&lt;span class="o">&amp;lt;&lt;/span>&lt;span class="n">Relation&lt;/span>&lt;span class="o">&amp;gt;&amp;amp;&lt;/span> &lt;span class="n">relations&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="k">const&lt;/span> &lt;span class="n">std&lt;/span>&lt;span class="o">::&lt;/span>&lt;span class="n">vector&lt;/span>&lt;span class="o">&amp;lt;&lt;/span>&lt;span class="kt">int&lt;/span>&lt;span class="o">&amp;gt;&amp;amp;&lt;/span> &lt;span class="n">dep&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="k">const&lt;/span> &lt;span class="n">cpp_int&lt;/span>&lt;span class="o">&amp;amp;&lt;/span> &lt;span class="n">N&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">std&lt;/span>&lt;span class="o">::&lt;/span>&lt;span class="n">cout&lt;/span> &lt;span class="o">&amp;lt;&amp;lt;&lt;/span> &lt;span class="s">&amp;#34;[Fase 5] Computação da Raiz Quadrada Algébrica...&amp;#34;&lt;/span> &lt;span class="o">&amp;lt;&amp;lt;&lt;/span> &lt;span class="n">std&lt;/span>&lt;span class="o">::&lt;/span>&lt;span class="n">endl&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1">// 1. Cálculo da raiz quadrada V no lado racional (Operação de inteiro simples)
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">&lt;/span> &lt;span class="n">cpp_int&lt;/span> &lt;span class="n">V&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="mi">1&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1">// V = sqrt( prod(a - bm) ) mod N
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1">// 2. Cálculo da raiz quadrada gamma no lado algébrico (Método de Montgomery, etc.)
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">&lt;/span> &lt;span class="c1">// Obtém o elemento gamma do enorme corpo algébrico O_K e o mapeia para o mundo real com o homomorfismo phi
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">&lt;/span> &lt;span class="c1">// Y = phi(gamma) mod N
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">&lt;/span> &lt;span class="n">cpp_int&lt;/span> &lt;span class="n">Y&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="mi">1&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1">// Pressupõe que sequências de Caracteres Quadráticos (Quadratic Characters)
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">&lt;/span> &lt;span class="c1">// foram adicionadas nas Fases 2 e 4 para evitar a obstrução (Obstruction) do grupo de classes de ideais e o grupo de unidades.
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">std&lt;/span>&lt;span class="o">::&lt;/span>&lt;span class="n">cout&lt;/span> &lt;span class="o">&amp;lt;&amp;lt;&lt;/span> &lt;span class="s">&amp;#34; -&amp;gt; Mapa de homomorfismo phi aplicado.&amp;#34;&lt;/span> &lt;span class="o">&amp;lt;&amp;lt;&lt;/span> &lt;span class="n">std&lt;/span>&lt;span class="o">::&lt;/span>&lt;span class="n">endl&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">std&lt;/span>&lt;span class="o">::&lt;/span>&lt;span class="n">cout&lt;/span> &lt;span class="o">&amp;lt;&amp;lt;&lt;/span> &lt;span class="s">&amp;#34;[Fase 5] Calculando GCD(V - Y, N)...&amp;#34;&lt;/span> &lt;span class="o">&amp;lt;&amp;lt;&lt;/span> &lt;span class="n">std&lt;/span>&lt;span class="o">::&lt;/span>&lt;span class="n">endl&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">cpp_int&lt;/span> &lt;span class="n">factor&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">gcd&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">V&lt;/span> &lt;span class="o">-&lt;/span> &lt;span class="n">Y&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">N&lt;/span>&lt;span class="p">);&lt;/span> &lt;span class="c1">// GCD(X-Y, N)
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">if&lt;/span> &lt;span class="p">(&lt;/span>&lt;span class="n">factor&lt;/span> &lt;span class="o">&amp;gt;&lt;/span> &lt;span class="mi">1&lt;/span> &lt;span class="o">&amp;amp;&amp;amp;&lt;/span> &lt;span class="n">factor&lt;/span> &lt;span class="o">&amp;lt;&lt;/span> &lt;span class="n">N&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">std&lt;/span>&lt;span class="o">::&lt;/span>&lt;span class="n">cout&lt;/span> &lt;span class="o">&amp;lt;&amp;lt;&lt;/span> &lt;span class="s">&amp;#34;&lt;/span>&lt;span class="se">\n&lt;/span>&lt;span class="s">================================================================&amp;#34;&lt;/span> &lt;span class="o">&amp;lt;&amp;lt;&lt;/span> &lt;span class="n">std&lt;/span>&lt;span class="o">::&lt;/span>&lt;span class="n">endl&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">std&lt;/span>&lt;span class="o">::&lt;/span>&lt;span class="n">cout&lt;/span> &lt;span class="o">&amp;lt;&amp;lt;&lt;/span> &lt;span class="s">&amp;#34;[SUCESSO] Fator não trivial encontrado: &amp;#34;&lt;/span> &lt;span class="o">&amp;lt;&amp;lt;&lt;/span> &lt;span class="n">factor&lt;/span> &lt;span class="o">&amp;lt;&amp;lt;&lt;/span> &lt;span class="n">std&lt;/span>&lt;span class="o">::&lt;/span>&lt;span class="n">endl&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">std&lt;/span>&lt;span class="o">::&lt;/span>&lt;span class="n">cout&lt;/span> &lt;span class="o">&amp;lt;&amp;lt;&lt;/span> &lt;span class="s">&amp;#34; Outro fator: &amp;#34;&lt;/span> &lt;span class="o">&amp;lt;&amp;lt;&lt;/span> &lt;span class="n">N&lt;/span> &lt;span class="o">/&lt;/span> &lt;span class="n">factor&lt;/span> &lt;span class="o">&amp;lt;&amp;lt;&lt;/span> &lt;span class="n">std&lt;/span>&lt;span class="o">::&lt;/span>&lt;span class="n">endl&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">std&lt;/span>&lt;span class="o">::&lt;/span>&lt;span class="n">cout&lt;/span> &lt;span class="o">&amp;lt;&amp;lt;&lt;/span> &lt;span class="s">&amp;#34;================================================================&amp;#34;&lt;/span> &lt;span class="o">&amp;lt;&amp;lt;&lt;/span> &lt;span class="n">std&lt;/span>&lt;span class="o">::&lt;/span>&lt;span class="n">endl&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">}&lt;/span> &lt;span class="k">else&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">std&lt;/span>&lt;span class="o">::&lt;/span>&lt;span class="n">cout&lt;/span> &lt;span class="o">&amp;lt;&amp;lt;&lt;/span> &lt;span class="s">&amp;#34;[FALHA] Solução trivial. Tentando próxima dependência...&amp;#34;&lt;/span> &lt;span class="o">&amp;lt;&amp;lt;&lt;/span> &lt;span class="n">std&lt;/span>&lt;span class="o">::&lt;/span>&lt;span class="n">endl&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">};&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">// ============================================================================
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">// Main Execution Pipeline (Pipeline de Execução Principal)
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">// ============================================================================
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">&lt;/span>&lt;span class="kt">int&lt;/span> &lt;span class="nf">main&lt;/span>&lt;span class="p">()&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">std&lt;/span>&lt;span class="o">::&lt;/span>&lt;span class="n">cout&lt;/span> &lt;span class="o">&amp;lt;&amp;lt;&lt;/span> &lt;span class="s">&amp;#34;================================================================&amp;#34;&lt;/span> &lt;span class="o">&amp;lt;&amp;lt;&lt;/span> &lt;span class="n">std&lt;/span>&lt;span class="o">::&lt;/span>&lt;span class="n">endl&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">std&lt;/span>&lt;span class="o">::&lt;/span>&lt;span class="n">cout&lt;/span> &lt;span class="o">&amp;lt;&amp;lt;&lt;/span> &lt;span class="s">&amp;#34; [SOTA GNFS] Motor do General Number Field Sieve (Boost C++) &amp;#34;&lt;/span> &lt;span class="o">&amp;lt;&amp;lt;&lt;/span> &lt;span class="n">std&lt;/span>&lt;span class="o">::&lt;/span>&lt;span class="n">endl&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">std&lt;/span>&lt;span class="o">::&lt;/span>&lt;span class="n">cout&lt;/span> &lt;span class="o">&amp;lt;&amp;lt;&lt;/span> &lt;span class="s">&amp;#34;================================================================&amp;#34;&lt;/span> &lt;span class="o">&amp;lt;&amp;lt;&lt;/span> &lt;span class="n">std&lt;/span>&lt;span class="o">::&lt;/span>&lt;span class="n">endl&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1">// O grande número composto N que queremos fatorar, como RSA-270
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">&lt;/span> &lt;span class="n">cpp_int&lt;/span> &lt;span class="n">N&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s">&amp;#34;233108530344407544527637656910680524145619812480305449042948611968495918245135782867888369318577116418213919268572658314913060672626911354027609793166341626693946596196427744273886601876896313468704059066746903123910748277606548649151920812699309766587514735456594993207&amp;#34;&lt;/span>&lt;span class="p">);&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1">// Grau do polinômio (Normalmente, de 5º a 6º grau é selecionado para números com mais de 130 dígitos)
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">&lt;/span> &lt;span class="kt">int&lt;/span> &lt;span class="n">degree&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="mi">6&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1">// Inicializando pipelines
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">&lt;/span> &lt;span class="n">PolynomialSelector&lt;/span> &lt;span class="n">poly_select&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">degree&lt;/span>&lt;span class="p">);&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">LatticeSieve&lt;/span> &lt;span class="n">sieve&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="mi">10000000&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="mi">20000000&lt;/span>&lt;span class="p">);&lt;/span> &lt;span class="c1">// Na realidade, os limites são dezenas de milhões a centenas de milhões
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">&lt;/span> &lt;span class="n">Filter&lt;/span> &lt;span class="n">filter&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">LinearAlgebraGF2&lt;/span> &lt;span class="n">linalg&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">AlgebraicSquareRoot&lt;/span> &lt;span class="n">sqrt_step&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">auto&lt;/span> &lt;span class="n">start_time&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">std&lt;/span>&lt;span class="o">::&lt;/span>&lt;span class="n">chrono&lt;/span>&lt;span class="o">::&lt;/span>&lt;span class="n">high_resolution_clock&lt;/span>&lt;span class="o">::&lt;/span>&lt;span class="n">now&lt;/span>&lt;span class="p">();&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1">// 1. Seleção Polinomial
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">&lt;/span> &lt;span class="n">poly_select&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">select&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">N&lt;/span>&lt;span class="p">);&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1">// 2. Processamento do Sieve (Crivo)
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">&lt;/span> &lt;span class="n">sieve&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">generate_factor_bases&lt;/span>&lt;span class="p">();&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">std&lt;/span>&lt;span class="o">::&lt;/span>&lt;span class="n">vector&lt;/span>&lt;span class="o">&amp;lt;&lt;/span>&lt;span class="n">Relation&lt;/span>&lt;span class="o">&amp;gt;&lt;/span> &lt;span class="n">relations&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">sieve&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">sieve&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">poly_select&lt;/span>&lt;span class="p">);&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1">// 3. Filtragem (Compressão de Matriz)
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">&lt;/span> &lt;span class="n">filter&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">reduce_matrix&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">relations&lt;/span>&lt;span class="p">);&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1">// 4. Álgebra Linear (Busca de espaço nulo (Nullspace) em GF(2))
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">&lt;/span> &lt;span class="n">std&lt;/span>&lt;span class="o">::&lt;/span>&lt;span class="n">vector&lt;/span>&lt;span class="o">&amp;lt;&lt;/span>&lt;span class="n">std&lt;/span>&lt;span class="o">::&lt;/span>&lt;span class="n">vector&lt;/span>&lt;span class="o">&amp;lt;&lt;/span>&lt;span class="kt">int&lt;/span>&lt;span class="o">&amp;gt;&amp;gt;&lt;/span> &lt;span class="n">dependencies&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">linalg&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">solve_nullspace&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">relations&lt;/span>&lt;span class="p">);&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1">// 5. Cálculo da Raiz Quadrada Algébrica e GCD
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">&lt;/span> &lt;span class="k">for&lt;/span> &lt;span class="p">(&lt;/span>&lt;span class="k">const&lt;/span> &lt;span class="k">auto&lt;/span>&lt;span class="o">&amp;amp;&lt;/span> &lt;span class="nl">dep&lt;/span> &lt;span class="p">:&lt;/span> &lt;span class="n">dependencies&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">sqrt_step&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">compute_and_factor&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">relations&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">dep&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">N&lt;/span>&lt;span class="p">);&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">auto&lt;/span> &lt;span class="n">end_time&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">std&lt;/span>&lt;span class="o">::&lt;/span>&lt;span class="n">chrono&lt;/span>&lt;span class="o">::&lt;/span>&lt;span class="n">high_resolution_clock&lt;/span>&lt;span class="o">::&lt;/span>&lt;span class="n">now&lt;/span>&lt;span class="p">();&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">std&lt;/span>&lt;span class="o">::&lt;/span>&lt;span class="n">chrono&lt;/span>&lt;span class="o">::&lt;/span>&lt;span class="n">duration&lt;/span>&lt;span class="o">&amp;lt;&lt;/span>&lt;span class="kt">double&lt;/span>&lt;span class="o">&amp;gt;&lt;/span> &lt;span class="n">elapsed&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">end_time&lt;/span> &lt;span class="o">-&lt;/span> &lt;span class="n">start_time&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">std&lt;/span>&lt;span class="o">::&lt;/span>&lt;span class="n">cout&lt;/span> &lt;span class="o">&amp;lt;&amp;lt;&lt;/span> &lt;span class="s">&amp;#34;&lt;/span>&lt;span class="se">\n&lt;/span>&lt;span class="s">[Sistema] Pipeline GNFS Avançado concluído em &amp;#34;&lt;/span> &lt;span class="o">&amp;lt;&amp;lt;&lt;/span> &lt;span class="n">elapsed&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">count&lt;/span>&lt;span class="p">()&lt;/span> &lt;span class="o">&amp;lt;&amp;lt;&lt;/span> &lt;span class="s">&amp;#34; segundos.&amp;#34;&lt;/span> &lt;span class="o">&amp;lt;&amp;lt;&lt;/span> &lt;span class="n">std&lt;/span>&lt;span class="o">::&lt;/span>&lt;span class="n">endl&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">return&lt;/span> &lt;span class="mi">0&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>Então, como este código quebra os muros da criptografia? Explicaremos detalhadamente a matemática avançada e os algoritmos precisos para cada uma das 5 fases.&lt;/p>
&lt;hr>
&lt;h2 id="2-objetivo-final-do-gnfs-x2-equiv-y2-pmod-n">2. Objetivo Final do GNFS: $X^2 \equiv Y^2 \pmod N$
&lt;/h2>&lt;p>O objetivo da maioria dos algoritmos modernos de fatoração de grandes números, não apenas o GNFS, é encontrar um par não trivial $(X, Y)$ que satisfaça a seguinte congruência:&lt;/p>
$$X^2 \equiv Y^2 \pmod N$$
&lt;p>Esta fórmula significa que &amp;ldquo;o resto de $X^2$ e $Y^2$ quando divididos por $N$ é o mesmo&amp;rdquo;. Se reescrevermos isso, obtemos:
$X^2 - Y^2 \equiv 0 \pmod N$
Em outras palavras, $(X-Y)(X+Y)$ é um múltiplo de $N$.&lt;/p>
&lt;p>Se $X \not\equiv \pm Y \pmod N$ (uma solução não trivial), então haverá um &amp;ldquo;divisor comum maior que 1 e menor que $N$&amp;rdquo; entre $(X-Y)$ e $N$.
Aqui, usando o algoritmo de Euclides para calcular &lt;strong>$\gcd(X-Y, N)$&lt;/strong> , os fatores primos de $N$ podem ser encontrados muito facilmente.&lt;/p>
&lt;p>No entanto, encontrar esses $X$ e $Y$ é como procurar uma agulha em um palheiro. Portanto, o GNFS tem uma abordagem genial: criar &lt;strong>dois mundos&lt;/strong> - &amp;ldquo;o mundo dos inteiros reais&amp;rdquo; e &amp;ldquo;o mundo dos corpos algébricos dos polinômios&amp;rdquo; - e distribuir a computação.&lt;/p>
&lt;hr>
&lt;h2 id="3-fase-1-seleção-polinomial-polynomial-selection">3. Fase 1: Seleção Polinomial (Polynomial Selection)
&lt;/h2>&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt"> 1
&lt;/span>&lt;span class="lnt"> 2
&lt;/span>&lt;span class="lnt"> 3
&lt;/span>&lt;span class="lnt"> 4
&lt;/span>&lt;span class="lnt"> 5
&lt;/span>&lt;span class="lnt"> 6
&lt;/span>&lt;span class="lnt"> 7
&lt;/span>&lt;span class="lnt"> 8
&lt;/span>&lt;span class="lnt"> 9
&lt;/span>&lt;span class="lnt">10
&lt;/span>&lt;span class="lnt">11
&lt;/span>&lt;span class="lnt">12
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-cpp" data-lang="cpp">&lt;span class="line">&lt;span class="cl">&lt;span class="k">class&lt;/span> &lt;span class="nc">PolynomialSelector&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1">// ...
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">&lt;/span> &lt;span class="kt">void&lt;/span> &lt;span class="nf">select&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="k">const&lt;/span> &lt;span class="n">cpp_int&lt;/span>&lt;span class="o">&amp;amp;&lt;/span> &lt;span class="n">N&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1">// Cálculo de m = N^(1/d) e expansão base-m
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">&lt;/span> &lt;span class="c1">// ...
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">&lt;/span> &lt;span class="k">for&lt;/span> &lt;span class="p">(&lt;/span>&lt;span class="kt">int&lt;/span> &lt;span class="n">i&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="mi">0&lt;/span>&lt;span class="p">;&lt;/span> &lt;span class="n">i&lt;/span> &lt;span class="o">&amp;lt;=&lt;/span> &lt;span class="n">degree&lt;/span>&lt;span class="p">;&lt;/span> &lt;span class="o">++&lt;/span>&lt;span class="n">i&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">f&lt;/span>&lt;span class="p">[&lt;/span>&lt;span class="n">i&lt;/span>&lt;span class="p">]&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">temp&lt;/span> &lt;span class="o">%&lt;/span> &lt;span class="n">m&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">temp&lt;/span> &lt;span class="o">/=&lt;/span> &lt;span class="n">m&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">g&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="p">{&lt;/span>&lt;span class="o">-&lt;/span>&lt;span class="n">m&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="mi">1&lt;/span>&lt;span class="p">};&lt;/span> &lt;span class="c1">// g(x) = x - m
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">&lt;/span> &lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">};&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>O primeiro passo do GNFS é criar os &amp;ldquo;polinômios mágicos&amp;rdquo; para fazer a ponte entre os dois mundos.
Para um número muito grande $N$, escolhemos um número inteiro $m$. Normalmente o escolhemos de modo que $m \approx N^{1/d}$ (no código, assumimos um polinômio de grau $d=6$).&lt;/p>
&lt;p>Em seguida, o $N$ é expandido na base $m$, e esses coeficientes são usados para construir um polinômio $f(x)$.
&lt;/p>
$$N = c_d m^d + c_{d-1} m^{d-1} + \dots + c_1 m + c_0$$
$$f(x) = c_d x^d + c_{d-1} x^{d-1} + \dots + c_1 x + c_0$$
&lt;p>Este polinômio $f(x)$ tem uma propriedade muito importante: &lt;strong>&amp;ldquo;Se substituirmos $x$ por $m$, o resultado será exatamente $N$ ($f(m) = N$)&amp;rdquo;&lt;/strong> . Em outras palavras, $f(m) \equiv 0 \pmod N$.
O polinômio do lado racional é definido como $g(x) = x - m$.&lt;/p>
&lt;p>Com isso, &amp;ldquo;o mundo do corpo algébrico $\mathbb{Z}[\alpha]$&amp;rdquo; governado pela raiz $\alpha$ de $f(x)=0$, e &amp;ldquo;o mundo dos números racionais (inteiros) $\mathbb{Z}$&amp;rdquo; estão fortemente ligados pelo &amp;ldquo;mapa de homomorfismo de anel&amp;rdquo; $x \to m$.&lt;/p>
&lt;p>No CADO-NFS mais avançado, usa-se o algoritmo de KleinJung ou o algoritmo de redução de base de reticulado LLL para passar meses procurando o &amp;ldquo;polinômio mais conveniente $f(x)$&amp;rdquo; cujos coeficientes não são extremamente grandes e em que os números primos são mais propensos a aparecer (lisos) nas etapas subsequentes.&lt;/p>
&lt;hr>
&lt;h2 id="4-fase-2-crivo-de-reticulado-q-especial-special-q-lattice-sieving">4. Fase 2: Crivo de Reticulado $q$ Especial (Special-q Lattice Sieving)
&lt;/h2>&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;span class="lnt">4
&lt;/span>&lt;span class="lnt">5
&lt;/span>&lt;span class="lnt">6
&lt;/span>&lt;span class="lnt">7
&lt;/span>&lt;span class="lnt">8
&lt;/span>&lt;span class="lnt">9
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-cpp" data-lang="cpp">&lt;span class="line">&lt;span class="cl">&lt;span class="k">class&lt;/span> &lt;span class="nc">LatticeSieve&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1">// ...
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">&lt;/span> &lt;span class="n">std&lt;/span>&lt;span class="o">::&lt;/span>&lt;span class="n">vector&lt;/span>&lt;span class="o">&amp;lt;&lt;/span>&lt;span class="n">Relation&lt;/span>&lt;span class="o">&amp;gt;&lt;/span> &lt;span class="n">sieve&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="k">const&lt;/span> &lt;span class="n">PolynomialSelector&lt;/span>&lt;span class="o">&amp;amp;&lt;/span> &lt;span class="n">poly&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1">// ...
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">&lt;/span> &lt;span class="c1">// Mapeia os pares (a, b) para reticulados baseados em cada número primo especial q
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">&lt;/span> &lt;span class="c1">// e executa o sieve (crivo) de forma muito eficiente usando a memória cache.
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">&lt;/span> &lt;span class="c1">// ...
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">&lt;/span> &lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">};&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>Com os dois mundos prontos, o próximo passo é procurar &amp;ldquo;números lisos&amp;rdquo; (números compostos apenas por números primos pequenos) em ambos os mundos.
Geramos inúmeros pares de inteiros $(a, b)$ e calculamos os dois valores a seguir:&lt;/p>
&lt;ol>
&lt;li>&lt;strong>Valor racional:&lt;/strong> $a - bm$&lt;/li>
&lt;li>&lt;strong>Norma algébrica:&lt;/strong> $b^d f(a/b)$&lt;/li>
&lt;/ol>
&lt;p>O objetivo do GNFS é coletar de dezenas a centenas de milhões desses &lt;strong>&amp;ldquo;pares (Relação) em que os valores dos lados racional e algébrico podem ser completamente decompostos em fatores primos pequenos&amp;rdquo;&lt;/strong> .&lt;/p>
&lt;p>No GNFS inicial, era usado o &amp;ldquo;Line Sieve&amp;rdquo; (Crivo de Linha), no qual $(a, b)$ são alinhados em um plano $xy$ e sequencialmente divididos por números primos da borda. Mas esse método apresentava a fraqueza de ser muito lento por acessar memórias espalhadas causando muitos erros de cache.&lt;/p>
&lt;p>Por isso, na vanguarda, utiliza-se a técnica &lt;strong>&amp;ldquo;Crivo de Reticulado $q$ Especial (Special-q Lattice Sieve)&amp;rdquo;&lt;/strong>.
Isso fixa um número primo consideravelmente grande $q$ e visa calcular apenas &amp;ldquo;os pares $(a, b)$ nos quais o valor algébrico é sempre divisível por $q$&amp;rdquo;. Os $(a, b)$ que satisfazem essa condição formam uma &amp;ldquo;Lattice&amp;rdquo; (Reticulado) no plano. Então, a largura do salto dos endereços de memória a calcular torna-se constante, o que se adapta perfeitamente aos caches L1/L2 da CPU.
Graças a essa introdução do Crivo de Reticulado, a velocidade de computação do GNFS aumentou drasticamente.&lt;/p>
&lt;hr>
&lt;h2 id="5-fase-3-filtragem-filtering">5. Fase 3: Filtragem (Filtering)
&lt;/h2>&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;span class="lnt">4
&lt;/span>&lt;span class="lnt">5
&lt;/span>&lt;span class="lnt">6
&lt;/span>&lt;span class="lnt">7
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-cpp" data-lang="cpp">&lt;span class="line">&lt;span class="cl">&lt;span class="k">class&lt;/span> &lt;span class="nc">Filter&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="k">public&lt;/span>&lt;span class="o">:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="kt">void&lt;/span> &lt;span class="n">reduce_matrix&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">std&lt;/span>&lt;span class="o">::&lt;/span>&lt;span class="n">vector&lt;/span>&lt;span class="o">&amp;lt;&lt;/span>&lt;span class="n">Relation&lt;/span>&lt;span class="o">&amp;gt;&amp;amp;&lt;/span> &lt;span class="n">relations&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1">// 1. Singleton removal (Remoção de relações com números primos que aparecem apenas uma vez)
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">&lt;/span> &lt;span class="c1">// 2. Clique merging (Fusão de relações para tornar uma matriz esparsa em uma matriz densa)
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">&lt;/span> &lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">};&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>Na Fase 2, as relações coletadas ao longo de meses por computadores em todo o mundo somam centenas de milhões. No entanto, se inserirmos isso como está no próximo passo de &amp;ldquo;resolução do sistema de equações&amp;rdquo; (cálculo de matriz), a memória dos supercomputadores falhará.&lt;/p>
&lt;p>Portanto, ocorre um processo de supercompressão de matriz chamado &lt;strong>Filtering (Filtragem)&lt;/strong> .&lt;/p>
&lt;ol>
&lt;li>
&lt;p>&lt;strong>Singleton removal (Expurgo de singularidades):&lt;/strong>
Suponha que um número primo enorme $p$ apareça &amp;ldquo;apenas uma vez&amp;rdquo; entre as centenas de milhões de relações. Nosso objetivo é &amp;ldquo;tornar o expoente de todos os números primos um número par (múltiplo de 2)&amp;rdquo;; os números primos que aparecem apenas uma vez nunca podem ser tornados pares.
Portanto, a relação que inclui aquele número primo é imediatamente removida (expurgada) como &amp;ldquo;lixo sem utilidade&amp;rdquo;. Quando isso acontece em cadeia, os dados que antes eram de centenas de milhões de linhas são sistematicamente reduzidos.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>Clique merging (Fusão de cliques):&lt;/strong>
Ao cruzar e somar relações que compartilham um número primo em comum, diminuímos o número de linhas e, simultaneamente, transformamos a matriz esparsa (cheia de zeros) numa matriz mais densa (método semelhante à busca de cliques na teoria dos grafos).&lt;/p>
&lt;/li>
&lt;/ol>
&lt;p>Com essas otimizações, a gigantesca matriz esparsa é comprimida a um tamanho possível de calcular.&lt;/p>
&lt;hr>
&lt;h2 id="6-fase-4-álgebra-linear-em-gf2-método-block-wiedemann">6. Fase 4: Álgebra Linear em GF(2) (Método Block Wiedemann)
&lt;/h2>&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;span class="lnt">4
&lt;/span>&lt;span class="lnt">5
&lt;/span>&lt;span class="lnt">6
&lt;/span>&lt;span class="lnt">7
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-cpp" data-lang="cpp">&lt;span class="line">&lt;span class="cl">&lt;span class="k">class&lt;/span> &lt;span class="nc">LinearAlgebraGF2&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="k">public&lt;/span>&lt;span class="o">:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">std&lt;/span>&lt;span class="o">::&lt;/span>&lt;span class="n">vector&lt;/span>&lt;span class="o">&amp;lt;&lt;/span>&lt;span class="n">std&lt;/span>&lt;span class="o">::&lt;/span>&lt;span class="n">vector&lt;/span>&lt;span class="o">&amp;lt;&lt;/span>&lt;span class="kt">int&lt;/span>&lt;span class="o">&amp;gt;&amp;gt;&lt;/span> &lt;span class="n">solve_nullspace&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="k">const&lt;/span> &lt;span class="n">std&lt;/span>&lt;span class="o">::&lt;/span>&lt;span class="n">vector&lt;/span>&lt;span class="o">&amp;lt;&lt;/span>&lt;span class="n">Relation&lt;/span>&lt;span class="o">&amp;gt;&amp;amp;&lt;/span> &lt;span class="n">relations&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1">// Repete a operação de produto da matriz esparsa e vetor,
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">&lt;/span> &lt;span class="c1">// e encontra vários vetores de solução (kernel) em que M * x = 0 mod 2.
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">&lt;/span> &lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">};&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>Finalmente, a essência do quebra-cabeça.
Multiplicamos as relações recolhidas buscando as &lt;strong>&amp;ldquo;combinações que tornam o expoente de todos os fatores primos par&amp;rdquo;&lt;/strong> .&lt;/p>
&lt;p>Em termos matemáticos, isso equivale a encontrar um vetor de solução $x$ (espaço nulo / kernel) onde, utilizando uma matriz gigante $M$ com elementos sendo o expoente de cada número primo no &amp;ldquo;par ou ímpar (ou seja, 0 ou 1)&amp;rdquo; e um vetor $x$ que diz quais relações usar, temos:
&lt;strong>$M \cdot x \equiv 0 \pmod 2$&lt;/strong>&lt;/p>
&lt;p>É necessário resolver equações simultâneas de uma matriz de milhões de linhas por milhões de colunas. O uso tradicional do método de eliminação de Gauss levaria $O(N^3)$ em tempo de cálculo e não acabaria antes do fim do universo.&lt;/p>
&lt;p>Por esse motivo, as implementações de ponta utilizam o &lt;strong>&amp;ldquo;Método de Block Wiedemann&amp;rdquo;&lt;/strong>.
Esse método aproveita que a matriz $M$ é &amp;ldquo;extremamente esparsa (quase totalmente zeros)&amp;rdquo; para obter a solução multiplicando iterativamente matrizes por vetores. É um tipo de método do subespaço de Krylov.
Diferente do antigo Block Lanczos, o método Block Wiedemann pode particionar totalmente o processo computacional entre vários clusters, tornando seu uso extremamente valioso em clusters modernos e em sistemas paralelos de computação distribuída (cloud e supercomputadores).&lt;/p>
&lt;hr>
&lt;h2 id="7-fase-5-raiz-quadrada-algébrica-algebraic-square-root-e-o-colapso-criptográfico">7. Fase 5: Raiz Quadrada Algébrica (Algebraic Square Root) e o Colapso Criptográfico
&lt;/h2>&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt"> 1
&lt;/span>&lt;span class="lnt"> 2
&lt;/span>&lt;span class="lnt"> 3
&lt;/span>&lt;span class="lnt"> 4
&lt;/span>&lt;span class="lnt"> 5
&lt;/span>&lt;span class="lnt"> 6
&lt;/span>&lt;span class="lnt"> 7
&lt;/span>&lt;span class="lnt"> 8
&lt;/span>&lt;span class="lnt"> 9
&lt;/span>&lt;span class="lnt">10
&lt;/span>&lt;span class="lnt">11
&lt;/span>&lt;span class="lnt">12
&lt;/span>&lt;span class="lnt">13
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-cpp" data-lang="cpp">&lt;span class="line">&lt;span class="cl">&lt;span class="k">class&lt;/span> &lt;span class="nc">AlgebraicSquareRoot&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="k">public&lt;/span>&lt;span class="o">:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="kt">void&lt;/span> &lt;span class="n">compute_and_factor&lt;/span>&lt;span class="p">(...)&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1">// 1. Cálculo da raiz quadrada V no lado racional
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">&lt;/span> &lt;span class="n">cpp_int&lt;/span> &lt;span class="n">V&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="mi">1&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1">// 2. Cálculo da raiz quadrada gamma no lado algébrico
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">&lt;/span> &lt;span class="n">cpp_int&lt;/span> &lt;span class="n">Y&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="mi">1&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1">// ...
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">&lt;/span> &lt;span class="n">cpp_int&lt;/span> &lt;span class="n">factor&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">gcd&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">V&lt;/span> &lt;span class="o">-&lt;/span> &lt;span class="n">Y&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">N&lt;/span>&lt;span class="p">);&lt;/span> &lt;span class="c1">// GCD(X-Y, N)
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">&lt;/span> &lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">};&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>Pelo cálculo matricial na Fase 4, adquirimos o &amp;ldquo;conjunto de relações $S$ cujos expoentes de todos os fatores primos formam um expoente par quando multiplicados juntos&amp;rdquo;.
Isto possibilita construir o &amp;ldquo;quadrado perfeito&amp;rdquo; em ambos os mundos: o lado racional e o lado algébrico.&lt;/p>
&lt;p>No lado racional, o cálculo é uma simples multiplicação de números inteiros, por isso é simples calcular sua raiz quadrada $V$.
&lt;/p>
$$V^2 = \prod_{S} (a - bm)$$
&lt;p>&lt;strong>Porém, o real pesadelo encontra-se no &amp;ldquo;lado algébrico&amp;rdquo;.&lt;/strong>
No mundo do corpo algébrico $\mathbb{Z}[\alpha]$, dado que a unicidade da fatoração em primos não é mantida, realizávamos cálculos usando ideais. A garantia dada pelo cálculo matricial era &lt;strong>&amp;ldquo;apenas que seria o quadrado de um ideal, e não garantia que seria o quadrado de um elemento ($\gamma^2$)&amp;rdquo;&lt;/strong>.&lt;/p>
&lt;p>Deste modo, surge uma imensa barreira provinda da teoria algébrica dos números, as chamadas &amp;ldquo;Obstrução do grupo de classes de ideais&amp;rdquo; e a &amp;ldquo;Obstrução do grupo das unidades&amp;rdquo;.
No GNFS, usamos a mágica do &lt;strong>&amp;ldquo;Caracter Quadrático (Quadratic Characters)&amp;rdquo;&lt;/strong> para quebrar essa parede.
Inserimos sorrateiramente várias colunas de símbolos residuais quadráticos (símbolos de Legendre) na matriz da Fase 4 para uma dezena de números ideais primos, de forma que a chance de as obstruções sumirem aumente brutalmente, e que assim, garantam finalmente &amp;ldquo;o autêntico quadrado de um elemento $\gamma^2$&amp;rdquo;.&lt;/p>
&lt;p>Em seguida, calcula-se o $\gamma$ (raiz quadrada algébrica) usando algoritmos complexos, como o método de Montgomery.&lt;/p>
&lt;p>Por último, fazemos a raiz algébrica $\gamma$ sofrer um &amp;ldquo;warp&amp;rdquo; para o mundo verdadeiro usando o mapa de homomorfismo de anéis $\phi$ (substituindo $x$ por $m$) para encontrar $Y$.
Quando colocamos o $V$ do lado racional para ser o $X$, a equação absoluta cobiçada está finalmente perfeita.&lt;/p>
&lt;p>&lt;strong>$$X^2 \equiv Y^2 \pmod N$$&lt;/strong>&lt;/p>
&lt;p>O restante é somente resolver o $\gcd(X-Y, N)$. Em milissegundos o processo acaba e exibe o fator não trivial impresso na tela. Nesse instante, a criptografia impenetrável RSA é inteiramente derrubada.&lt;/p>
&lt;hr>
&lt;h2 id="conclusão">Conclusão
&lt;/h2>&lt;p>O GNFS não é só uma técnica de programação.
Trata-se de forçar as &amp;ldquo;profundezas da matemática pura&amp;rdquo; como álgebra abstrata, teoria dos anéis e os grupos de classe ideal através do poder colossal da &amp;ldquo;engenharia extrema&amp;rdquo;, como arquitetura de computadores distribuída em supercomputadores, além de otimizações de cache; um pilar glorioso da mente humana.&lt;/p>
&lt;p>Por trás de transações por cartão de crédito ou simples chats do dia-a-dia, encontra-se esta astronômica barreira defensiva construída através do poderio e batalha da matemática.&lt;/p>
&lt;p>Espero que compreendam que, na retaguarda dos fortes algoritmos criptográficos, existe um &amp;ldquo;romance dos computadores com a matemática&amp;rdquo; oculto neste simples framework em C++.&lt;/p></description></item><item><title>A Verdadeira Estrutura Matemática do Crivo Geral dos Corpos de Números (GNFS)</title><link>http://kenji.blog/pt/p/%E4%B8%80%E8%88%AC%E6%95%B0%E4%BD%93%E7%AF%A9%E6%B3%95gnfs%E3%81%AE%E7%9C%9F%E3%81%AE%E6%95%B0%E5%AD%A6%E7%9A%84%E6%A7%8B%E9%80%A0/</link><pubDate>Sat, 05 Sep 2026 02:26:13 +0900</pubDate><guid>http://kenji.blog/pt/p/%E4%B8%80%E8%88%AC%E6%95%B0%E4%BD%93%E7%AF%A9%E6%B3%95gnfs%E3%81%AE%E7%9C%9F%E3%81%AE%E6%95%B0%E5%AD%A6%E7%9A%84%E6%A7%8B%E9%80%A0/</guid><description>&lt;img src="http://kenji.blog/p/%E4%B8%80%E8%88%AC%E6%95%B0%E4%BD%93%E7%AF%A9%E6%B3%95gnfs%E3%81%AE%E7%9C%9F%E3%81%AE%E6%95%B0%E5%AD%A6%E7%9A%84%E6%A7%8B%E9%80%A0/rsa_encryption_break_1788542156523.jpg" alt="Featured image of post A Verdadeira Estrutura Matemática do Crivo Geral dos Corpos de Números (GNFS)" />&lt;h1 id="a-verdadeira-estrutura-matemática-do-crivo-geral-dos-corpos-de-números-gnfs">A Verdadeira Estrutura Matemática do Crivo Geral dos Corpos de Números (GNFS)
&lt;/h1>&lt;p>O objetivo final do GNFS é encontrar $X, Y$ tais que $X^2 \equiv Y^2 \pmod N$.
Para alcançar isso, os matemáticos construíram uma ponte entre o &lt;strong>&amp;ldquo;mundo dos inteiros reais&amp;rdquo;&lt;/strong> e o &lt;strong>&amp;ldquo;mundo dos corpos algébricos&amp;rdquo;&lt;/strong> . Essa ponte é exatamente o &amp;ldquo;homomorfismo&amp;rdquo;.&lt;/p>
&lt;h2 id="fase-1-conectando-os-mundos-com-homomorfismo">Fase 1: Conectando os mundos com &amp;ldquo;Homomorfismo&amp;rdquo;
&lt;/h2>&lt;h3 id="1-seleção-do-polinômio-e-definição-das-raízes">1. Seleção do polinômio e definição das raízes
&lt;/h3>&lt;p>Para um número composto gigante $N$, escolhemos um inteiro $m$ e um polinômio $f(x)$ tais que $f(m) \equiv 0 \pmod N$.
(Exemplo: Expandimos $N$ na base $m$ e criamos $f(x)$ a partir de seus coeficientes. Neste momento, assumimos que $f(x)$ é irredutível sobre o corpo dos números racionais $\mathbb{Q}$ (não pode ser mais fatorado)).&lt;/p>
&lt;p>Em seguida, definimos uma das &amp;ldquo;raízes complexas&amp;rdquo; da equação $f(x) = 0$ como $\alpha$.
Naturalmente, $f(\alpha) = 0$. $\alpha$ não é um número inteiro, mas um número complexo envolvendo raízes e números imaginários (um número algébrico).&lt;/p>
&lt;h3 id="2-construção-de-anéis-rings-e-homomorfismo">2. Construção de Anéis (Rings) e Homomorfismo
&lt;/h3>&lt;p>Aqui, preparamos dois &amp;ldquo;anéis&amp;rdquo; matemáticos (mundos onde adição e multiplicação são definidas).&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Mundo A: $\mathbb{Z}[\alpha]$&lt;/strong> (O anel dos inteiros algébricos contendo $\alpha$)
Um mundo de números expressos na forma $a + b\alpha + c\alpha^2 + \dots$.&lt;/li>
&lt;li>&lt;strong>Mundo B: $\mathbb{Z}/N\mathbb{Z}$&lt;/strong> (O anel dos restos módulo $N$)
Um mundo de congruências composto apenas por inteiros de $0$ a $N-1$.&lt;/li>
&lt;/ul>
&lt;p>Aqui, definimos um mapeamento $\phi$ do Mundo A para o Mundo B da seguinte forma.
&lt;strong>$$\phi : \mathbb{Z}[\alpha] \to \mathbb{Z}/N\mathbb{Z}$$&lt;/strong>
&lt;strong>$$\phi(\alpha) = m \pmod N$$&lt;/strong>&lt;/p>
&lt;p>Este mapeamento $\phi$ é uma operação mágica que substitui exatamente a variável $\alpha$ do Mundo A pelo inteiro $m$ do Mundo B.
Este $\phi$ possui uma propriedade extremamente poderosa chamada &lt;strong>&amp;ldquo;Homomorfismo de Anéis (Ring Homomorphism)&amp;rdquo;&lt;/strong> .
Homomorfismo é a propriedade de &lt;strong>&amp;ldquo;teleportar para outro mundo sem destruir a estrutura da adição e multiplicação&amp;rdquo;&lt;/strong> . Em outras palavras, as seguintes equações são válidas:&lt;/p>
&lt;ul>
&lt;li>$\phi(X \times Y) = \phi(X) \times \phi(Y)$&lt;/li>
&lt;li>$\phi(X^2) = \phi(X)^2$&lt;/li>
&lt;/ul>
&lt;p>O que isso significa? Se pudermos criar o &lt;strong>&amp;ldquo;quadrado ($\gamma^2$)&amp;rdquo;&lt;/strong> de algum elemento complexo $\gamma$ no &amp;ldquo;Mundo A (o mundo de $\alpha$)&amp;rdquo;, e teleportá-lo para o &amp;ldquo;Mundo B (mundo dos restos)&amp;rdquo; usando $\phi$, &lt;strong>a forma quadrada $\phi(\gamma)^2$ é perfeitamente preservada&lt;/strong> .&lt;/p>
&lt;hr>
&lt;h2 id="fase-2-o-colapso-da-fatoração-em-números-primos-e-o-nascimento-dos-ideais">Fase 2: O Colapso da Fatoração em Números Primos e o Nascimento dos &amp;ldquo;Ideais&amp;rdquo;
&lt;/h2>&lt;p>No Mundo A ($\mathbb{Z}[\alpha]$), queremos reunir muitos elementos adequados $(a - b\alpha)$ e multiplicá-los para criar um &amp;ldquo;quadrado perfeito (elemento quadrado)&amp;rdquo;.
Normalmente, faríamos a &amp;ldquo;fatoração em números primos&amp;rdquo; de cada $(a - b\alpha)$ coletado e os combinaríamos de forma que os expoentes dos primos fossem todos pares (resolvendo com matrizes) para formar um quadrado.&lt;/p>
&lt;p>&lt;strong>No entanto, aqui, a parede desesperadora da álgebra se ergue.&lt;/strong>
Em mundos de corpos algébricos como $\mathbb{Z}[\alpha]$, a &lt;strong>&amp;ldquo;unicidade da fatoração em números primos (qualquer número pode ser expresso de forma única como o produto de primos)&amp;rdquo;&lt;/strong> ensinada no ensino médio &lt;strong>colapsa&lt;/strong> .&lt;/p>
&lt;p>(Exemplo: Em um certo mundo de corpo algébrico, $6 = 2 \times 3$, mas ao mesmo tempo $6 = (1+\sqrt{-5}) \times (1-\sqrt{-5})$, e não sabemos mais quais são os verdadeiros primos)&lt;/p>
&lt;p>Se a fatoração não for única, o quebra-cabeça de &amp;ldquo;contar o número de primos para torná-los pares&amp;rdquo; (o método do crivo) é, em princípio, impossível de executar.&lt;/p>
&lt;h3 id="a-salvação-de-kummer-e-dedekind-ideais">A Salvação de Kummer e Dedekind: &amp;ldquo;Ideais&amp;rdquo;
&lt;/h3>&lt;p>O que salvou esse colapso foi o conceito de &lt;strong>&amp;ldquo;Ideal (Ideal: número ideal)&amp;rdquo;&lt;/strong> criado pelos matemáticos do século 19.
Pensando não no elemento em si, mas no &amp;ldquo;conjunto de múltiplos (ideal)&amp;rdquo; gerado por esse elemento, a fatoração em números primos tornou-se possível novamente.&lt;/p>
&lt;p>No anel de inteiros de um corpo algébrico $\mathcal{O}_K$ (um anel mais completo contendo $\mathbb{Z}[\alpha]$), é provado que mesmo que um elemento não possa ser fatorado unicamente, &lt;strong>&amp;ldquo;um ideal sempre pode ser fatorado unicamente como o produto de &amp;lsquo;Ideais Primos ($\mathfrak{p}$)&amp;rsquo;&amp;rdquo;&lt;/strong> .&lt;/p>
&lt;p>Portanto, no GNFS, em vez de fatorar o próprio elemento $(a - b\alpha)$, fatoramos o &lt;strong>ideal principal $\langle a - b\alpha \rangle$ gerado por ele em ideais primos&lt;/strong> .&lt;/p>
&lt;hr>
&lt;h2 id="fase-3-a-norma-norm-e-os-dois-crivos-sieves">Fase 3: A Norma (Norm) e os Dois Crivos (Sieves)
&lt;/h2>&lt;p>Então, como sabemos em quais ideais primos o ideal $\langle a - b\alpha \rangle$ é decomposto?
Aqui usamos uma função chamada &lt;strong>&amp;ldquo;Norma (Norm)&amp;rdquo;&lt;/strong> . A Norma é uma função que converte elementos complexos de corpos algébricos em &amp;ldquo;inteiros reais normais $\mathbb{Z}$&amp;rdquo;.&lt;/p>
&lt;p>A norma do elemento $(a - b\alpha)$ é encontrada por um cálculo polinomial simples $b^d f(a/b)$ ($d$ é o grau de $f(x)$).&lt;/p>
&lt;p>Por um teorema algébrico, sabemos que &lt;strong>&amp;ldquo;se a norma de um certo ideal puder ser completamente fatorada em pequenos números primos (for suave), então o ideal original também pode ser completamente fatorado em pequenos ideais primos&amp;rdquo;&lt;/strong> .&lt;/p>
&lt;p>Então, para um grande número de pares de inteiros $(a, b)$, o GNFS calcula os dois seguintes simultaneamente e coleta apenas os pares em que ambos se tornam &amp;ldquo;números suaves&amp;rdquo;:&lt;/p>
&lt;ol>
&lt;li>&lt;strong>Crivo Racional (Rational Sieve)&lt;/strong> : $a - bm$ (o valor no mundo real)&lt;/li>
&lt;li>&lt;strong>Crivo Algébrico (Algebraic Sieve)&lt;/strong> : $b^d f(a/b)$ (a norma no mundo dos corpos algébricos)&lt;/li>
&lt;/ol>
&lt;p>Coletando dezenas de milhões de pares $(a, b)$ em que ambos são suaves, resolvemos os dados de fatoração de ideais primos (quantos ideais primos estão incluídos) como uma matriz gigante (álgebra linear sobre GF(2)) para encontrar um conjunto $S$ de pares tal que &amp;ldquo;quando multiplicados, os expoentes de todos os ideais primos se tornem pares&amp;rdquo;.&lt;/p>
&lt;hr>
&lt;h2 id="fase-4-os-dois-obstáculos-e-o-grupo-de-classes-de-ideais">Fase 4: Os Dois &amp;ldquo;Obstáculos&amp;rdquo; e o Grupo de Classes de Ideais
&lt;/h2>&lt;p>A partir do cálculo da matriz, descobrimos que multiplicar todos os ideais de $(a - b\alpha)$ pertencentes ao conjunto $S$ resulta no quadrado de um certo ideal $I$.
&lt;/p>
$$\prod_{S} \langle a - b\alpha \rangle = I^2$$
&lt;p>&lt;strong>No entanto, ainda não acabou. A barreira matemática mais profunda e difícil do GNFS está aqui.&lt;/strong>&lt;/p>
&lt;p>O que queremos no final não é o &amp;ldquo;quadrado de um ideal&amp;rdquo;, mas o &lt;strong>&amp;ldquo;quadrado de um elemento ($\gamma^2$)&amp;rdquo;&lt;/strong> para substituir no mapeamento $\phi$.
Só porque se tornou o quadrado de um ideal, não significa necessariamente que o elemento em si é um quadrado. Existem &lt;strong>dois fortes obstáculos matemáticos (Obstructions)&lt;/strong> aqui.&lt;/p>
&lt;h3 id="obstáculo--a-barreira-do-grupo-de-classes-de-ideais-ideal-class-group">Obstáculo ①: A Barreira do Grupo de Classes de Ideais (Ideal Class Group)
&lt;/h3>&lt;p>O ideal $I$ nem sempre é um &amp;ldquo;ideal gerado por um único elemento (ideal principal)&amp;rdquo;.
É impossível extrair um elemento específico $\gamma$ de um ideal que não é principal.&lt;/p>
&lt;p>Aqui entra o conceito de &lt;strong>&amp;ldquo;Grupo de Classes de Ideais (Class Group, $Cl_K$)&amp;rdquo;&lt;/strong> . O grupo de classes de ideais é um grupo que mede &amp;ldquo;quantos ideais existem no mundo daquele corpo algébrico que não são principais (o quanto a unicidade da fatoração se quebra)&amp;rdquo;.
Mesmo que $\prod \langle a - b\alpha \rangle$ se torne $I^2$, se $I$ não for o elemento de identidade (ideal principal) no grupo de classes de ideais, ele não pode ser trazido de volta ao quadrado de um elemento.&lt;/p>
&lt;h3 id="obstáculo--a-barreira-do-grupo-de-unidades-unit-group">Obstáculo ②: A Barreira do Grupo de Unidades (Unit Group)
&lt;/h3>&lt;p>Suponhamos que, por sorte, $I$ fosse o ideal principal $\langle \gamma \rangle$.
Então, teríamos $\prod \langle a - b\alpha \rangle = \langle \gamma^2 \rangle$.
Você pode pensar, &amp;ldquo;Ótimo, o elemento também é um quadrado!&amp;rdquo;, mas isso é um grande erro.&lt;/p>
&lt;p>Ideais (conjuntos de múltiplos) sendo iguais não significa que os elementos sejam perfeitamente iguais. Sempre haverá um desvio por uma &lt;strong>&amp;ldquo;Unidade (Unit: um número cujo inverso também é um inteiro. Por exemplo, 1 ou -1)&amp;rdquo;&lt;/strong> .
Em outras palavras, a verdadeira equação dos elementos se torna assim:
&lt;/p>
$$\prod_{S} (a - b\alpha) = u \cdot \gamma^2$$
&lt;p>
($u$ é um elemento do grupo de unidades $U_K$)&lt;/p>
&lt;p>A menos que esta unidade $u$ em si seja o quadrado de algo, o lado esquerdo nunca pode se tornar um &amp;ldquo;quadrado perfeito de um elemento&amp;rdquo;.&lt;/p>
&lt;hr>
&lt;h2 id="fase-5-a-magia-de-adleman-caracteres-quadráticos-quadratic-characters">Fase 5: A Magia de Adleman &amp;ldquo;Caracteres Quadráticos&amp;rdquo; (Quadratic Characters)
&lt;/h2>&lt;p>O obstáculo do grupo de classes de ideais e o obstáculo do grupo de unidades. Como superar esses dois?
Aqui entra o brilhante método dos &lt;strong>&amp;ldquo;Caracteres Quadráticos (Quadratic Characters)&amp;rdquo;&lt;/strong> , introduzido pelo criptógrafo Leonard Adleman (o &amp;ldquo;A&amp;rdquo; do RSA) e outros.&lt;/p>
&lt;p>Para determinar &amp;ldquo;se um certo elemento é um quadrado perfeito no corpo algébrico&amp;rdquo;, usamos a versão de corpos algébricos do Símbolo de Legendre (resíduo quadratique).
Naquela matriz gigante anterior (o quebra-cabeça para tornar pares as contagens de ideais primos), nós &lt;strong>furtivamente adicionamos algumas dezenas de condições extras (colunas) dizendo &amp;ldquo;os caracteres quadráticos para certos ideais primos especiais $\mathfrak{q}$ também devem ser todos $1$ (par)&amp;rdquo;&lt;/strong> .&lt;/p>
&lt;p>Quando encontramos um conjunto $S$ que satisfaz até mesmo essas condições adicionais através de cálculos de matrizes, teoremas profundos da teoria algébrica dos números garantem que &lt;strong>&amp;ldquo;tanto o obstáculo do grupo de classes de ideais quanto o obstáculo do grupo de unidades desaparecerão naturalmente com uma probabilidade esmagadora&amp;rdquo;&lt;/strong> .&lt;/p>
&lt;p>Com isso, finalmente obtemos a verdadeira equação.
&lt;/p>
$$\prod_{S} (a - b\alpha) = \gamma^2$$
&lt;hr>
&lt;h2 id="fase-final-a-fusão-dos-mundos-e-o-colapso-criptográfico">Fase Final: A Fusão dos Mundos e o Colapso Criptográfico
&lt;/h2>&lt;p>Finalmente, todas as peças do quebra-cabeça estão no lugar.&lt;/p>
&lt;p>&lt;strong>[Elementos no Mundo dos Corpos Algébricos (Mundo A)]&lt;/strong>
$\gamma^2 = \prod (a - b\alpha)$
(Nós usamos um algoritmo de raiz quadrada para encontrar $\gamma$)&lt;/p>
&lt;p>&lt;strong>[Elementos no Mundo Real (Mundo dos Números Racionais)]&lt;/strong>
$V^2 = \prod (a - bm)$
(Como esta é uma simples multiplicação de inteiros, $V$ é encontrado normalmente)&lt;/p>
&lt;p>Agora é hora daquela ponte mágica que construímos no início, o &lt;strong>homomorfismo $\phi$&lt;/strong> .
Nós teleportamos o elemento $\gamma$ do Mundo A para o Mundo B (o mundo dos restos de $N$) usando $\phi$ (o mapeamento onde substituímos $\alpha$ por $m$).
&lt;/p>
$$Y = \phi(\gamma) \pmod N$$
&lt;p>Por outro lado, levamos o $V$ construído no mundo real diretamente para o mundo dos restos e o chamamos de $X$.
&lt;/p>
$$X = V \pmod N$$
&lt;p>Devido à propriedade &amp;ldquo;preservadora de estrutura&amp;rdquo; do homomorfismo, a relação quadrada que se manteve no Mundo A é perfeitamente preservada no Mundo B (o mundo módulo $N$).
Além disso, como os pares originais $(a, b)$ foram feitos em correspondência nas formas $a - b\alpha$ e $a - bm$, estes $X$ e $Y$ colidem no mundo módulo $N$ e produzem a seguinte equação absoluta.&lt;/p>
&lt;p>&lt;strong>$$X^2 \equiv Y^2 \pmod N$$&lt;/strong>&lt;/p>
&lt;p>Tudo o que resta é rezar para que esses $X$ e $Y$ não sejam soluções triviais ($X \equiv \pm Y$) e calcular
&lt;strong>$\gcd(X - Y, N)$&lt;/strong> .&lt;/p>
&lt;p>Se for uma solução não trivial, o algoritmo euclidiano avança em 0.001 segundos, e os números primos secretos $p$ e $q$, que são o coração da criptografia RSA, são impressos na tela de saída.&lt;/p>
&lt;hr>
&lt;p>Este é o quadro completo do &lt;strong>&amp;ldquo;Crivo Geral dos Corpos de Números (GNFS)&amp;rdquo;&lt;/strong> , a essência da matemática moderna.&lt;/p></description></item><item><title>O que é o "General Number Field Sieve (GNFS)", a matemática mais poderosa da humanidade que quebra a criptografia da internet?</title><link>http://kenji.blog/pt/p/%E3%82%A4%E3%83%B3%E3%82%BF%E3%83%BC%E3%83%8D%E3%83%83%E3%83%88%E3%81%AE%E6%9A%97%E5%8F%B7%E3%82%92%E7%A0%B4%E3%82%8B%E4%BA%BA%E9%A1%9E%E6%9C%80%E5%BC%B7%E3%81%AE%E6%95%B0%E5%AD%A6%E4%B8%80%E8%88%AC%E6%95%B0%E4%BD%93%E7%AF%A9%E6%B3%95gnfs%E3%81%A8%E3%81%AF/</link><pubDate>Sat, 05 Sep 2026 02:09:08 +0900</pubDate><guid>http://kenji.blog/pt/p/%E3%82%A4%E3%83%B3%E3%82%BF%E3%83%BC%E3%83%8D%E3%83%83%E3%83%88%E3%81%AE%E6%9A%97%E5%8F%B7%E3%82%92%E7%A0%B4%E3%82%8B%E4%BA%BA%E9%A1%9E%E6%9C%80%E5%BC%B7%E3%81%AE%E6%95%B0%E5%AD%A6%E4%B8%80%E8%88%AC%E6%95%B0%E4%BD%93%E7%AF%A9%E6%B3%95gnfs%E3%81%A8%E3%81%AF/</guid><description>&lt;img src="http://kenji.blog/p/%E3%82%A4%E3%83%B3%E3%82%BF%E3%83%BC%E3%83%8D%E3%83%83%E3%83%88%E3%81%AE%E6%9A%97%E5%8F%B7%E3%82%92%E7%A0%B4%E3%82%8B%E4%BA%BA%E9%A1%9E%E6%9C%80%E5%BC%B7%E3%81%AE%E6%95%B0%E5%AD%A6%E4%B8%80%E8%88%AC%E6%95%B0%E4%BD%93%E7%AF%A9%E6%B3%95gnfs%E3%81%A8%E3%81%AF/gnfs_two_worlds_1788542142485.jpg" alt="Featured image of post O que é o "General Number Field Sieve (GNFS)", a matemática mais poderosa da humanidade que quebra a criptografia da internet?" />&lt;h1 id="o-que-é-o-general-number-field-sieve-gnfs-a-matemática-mais-poderosa-da-humanidade-que-quebra-a-criptografia-da-internet">O que é o &amp;ldquo;General Number Field Sieve (GNFS)&amp;rdquo;, a matemática mais poderosa da humanidade que quebra a criptografia da internet?
&lt;/h1>&lt;p>A internet que usamos todos os dias. Mensagens no LINE, YouTube, compras na Amazon etc., todas as comunicações são protegidas por &amp;ldquo;criptografia&amp;rdquo;.
Atualmente, a criptografia mais utilizada em todo o mundo é a &amp;ldquo;Criptografia RSA&amp;rdquo;.&lt;/p>
&lt;p>O núcleo da defesa da Criptografia RSA é muito simples. Ele utiliza a propriedade matemática de que ** &amp;ldquo;a fatoração em números primos de números gigantescos não pode ser resolvida nem mesmo por computadores&amp;rdquo; ** .
Por exemplo, para &amp;ldquo;15&amp;rdquo;, sabemos imediatamente que é &amp;ldquo;3 × 5&amp;rdquo;, mas no instante em que isso se torna um &amp;ldquo;número de 270 dígitos&amp;rdquo;, levaria centenas de milhões de anos para ser resolvido, mesmo se conectássemos todos os supercomputadores do mundo.&lt;/p>
&lt;p>No entanto, os matemáticos não ficaram em silêncio. Para quebrar essa criptografia impenetrável, a humanidade criou um algoritmo (procedimento de cálculo) quase mágico chamado ** &amp;ldquo;General Number Field Sieve (GNFS)&amp;rdquo; ** .&lt;/p>
&lt;p>Neste artigo, sem usar nenhum jargão técnico e apenas com o conhecimento da ** matemática do ensino fundamental (fatoração em primos, expressões algébricas, máximo divisor comum) ** , explicaremos passo a passo como esse &amp;ldquo;algoritmo mais forte da humanidade&amp;rdquo; quebra a criptografia!&lt;/p>
&lt;hr>
&lt;h2 id="capítulo-1-o-objetivo-da-decodificação-é-uma-fórmula-da-8ª-série">Capítulo 1: O objetivo da decodificação é uma &amp;ldquo;fórmula da 8ª série&amp;rdquo;
&lt;/h2>&lt;p>O maior golpe especial para enfrentar a gigantesca fatoração em números primos. É essa fórmula aprendida na 8ª série:&lt;/p>
&lt;blockquote>
&lt;p>** $X^2 - Y^2 = (X + Y)(X - Y)$ **&lt;/p>
&lt;/blockquote>
&lt;p>Você pode pensar: &amp;ldquo;Sério que uma fórmula tão básica pode quebrar a criptografia?&amp;rdquo;. No entanto, esta é a chave mestra que revela tudo.&lt;/p>
&lt;p>O maior objetivo para quebrar a criptografia é, para um número gigante $N$, encontrar ** &amp;ldquo;números ($X$ e $Y$) onde o resto da divisão de $X^2$ e $Y^2$ por $N$ seja o mesmo&amp;rdquo; ** .&lt;/p>
&lt;h3 id="por-que-ter-o-mesmo-resto-quebra-a-criptografia">Por que &amp;ldquo;ter o mesmo resto&amp;rdquo; quebra a criptografia?
&lt;/h3>&lt;p>Suponha que dois números, $X^2$ e $Y^2$, tenham &amp;ldquo;o mesmo resto quando divididos por $N$&amp;rdquo;.
Ter o mesmo resto significa que existe uma regra onde ** a subtração &amp;ldquo;$X^2 - Y^2$&amp;rdquo; será sempre perfeitamente divisível por $N$ (será um múltiplo de $N$) ** .&lt;/p>
&lt;p>Aqui, vamos supor que o número gigante $N$ usado na criptografia seja composto pela multiplicação de dois números primos secretos ($p$ e $q$) ($N = p \times q$).&lt;/p>
&lt;p>Fatorando $X^2 - Y^2$, obtemos ** $(X - Y)(X + Y)$ ** .
O fato de isso ser um múltiplo de $N$ significa que, em algum lugar dessa multiplicação, os primos secretos $p$ e $q$ estão escondidos.&lt;/p>
&lt;p>Aqui, um milagre acontece.
Há uma probabilidade matemática de ** 50% (metade) ** de que os dois primos $p$ e $q$ se separem em salas diferentes: ** &amp;ldquo;$p$ vai para a sala de $(X - Y)$&amp;rdquo; e &amp;ldquo;$q$ vai para a sala de $(X + Y)$&amp;rdquo; ** .&lt;/p>
&lt;p>Com apenas o primo $p$ tendo entrado na sala de $(X - Y)$, vamos calcular o ** &amp;ldquo;máximo divisor comum (a maior peça em comum)&amp;rdquo; ** de $(X - Y)$ e $N$.&lt;/p>
&lt;ul>
&lt;li>Conteúdo de $(X - Y)$ = $p \times$ algum número&lt;/li>
&lt;li>Conteúdo de $N$ = $p \times q$
A única peça comum é ** &amp;ldquo;$p$&amp;rdquo; ** !&lt;/li>
&lt;/ul>
&lt;p>Ou seja, no instante em que o máximo divisor comum é calculado, o número primo oculto $p$ é revelado e a criptografia é completamente decodificada. (*O máximo divisor comum pode ser calculado instantaneamente em um smartphone usando o &amp;ldquo;Algoritmo de Euclides&amp;rdquo;).&lt;/p>
&lt;p>** 【Pequena Coluna: Por que o quadrado? Cubo ou o dobro não servem?】 **&lt;/p>
&lt;blockquote>
&lt;p>Com &amp;ldquo;$2X - 2Y$&amp;rdquo;, torna-se $2(X - Y)$ e há apenas uma sala, então você não pode separar os primos. Com &amp;ldquo;$X^3 - Y^3$&amp;rdquo;, os tamanhos das salas ficam desequilibrados e o cálculo torna-se desnecessariamente pesado. Para separar os primos em dois, o &amp;ldquo;quadrado&amp;rdquo; que se divide perfeitamente em duas salas tem o melhor custo-benefício.&lt;/p>
&lt;/blockquote>
&lt;hr>
&lt;h2 id="capítulo-2-como-encontrar-x-e-y-quebra-cabeça-de-coleta-de-cartas-de-números-primos">Capítulo 2: Como encontrar X e Y? &amp;ldquo;Quebra-cabeça de coleta de cartas de números primos&amp;rdquo;
&lt;/h2>&lt;p>O objetivo é claro. No entanto, mesmo se procurarmos cegamente por &amp;ldquo;$X^2$ e $Y^2$ que têm o mesmo resto&amp;rdquo;, o fim do universo chegaria antes de encontrá-los.
Então, os matemáticos criaram um método genial chamado ** &amp;ldquo;quebra-cabeça de coleta de cartas de números primos&amp;rdquo; ** .&lt;/p>
&lt;h3 id="step-1-coletar-apenas-ouro-em-pó-números-suaves-com-uma-peneira">Step 1: Coletar apenas ouro em pó (números suaves) com uma peneira
&lt;/h3>&lt;p>Primeiro, prepare um número apropriado $Z$, eleve-o ao quadrado e calcule o resto $W$ ao dividi-lo por $N$.
(O mundo dos restos de $Z^2 = W$)&lt;/p>
&lt;p>Fatore o resto obtido $W$ em números primos. Aqui, apenas quando aparecer ** &amp;ldquo;um $W$ composto apenas de pequenos primos como 2, 3, 5, 7, etc.&amp;rdquo; ** , guarde essa equação como um &amp;ldquo;cartão premiado&amp;rdquo; e jogue-a fora se houver primos grandes misturados.
É como jogar fora as pedras grandes com uma peneira num rio para coletar apenas o pó de ouro.&lt;/p>
&lt;h3 id="step-2-o-quebra-cabeça-para-tornar-tudo-par">Step 2: O quebra-cabeça para tornar tudo &amp;ldquo;par&amp;rdquo;
&lt;/h3>&lt;p>Por exemplo, suponha que as 3 seguintes cartas de pó de ouro foram coletadas.&lt;/p>
&lt;ul>
&lt;li>Carta A: $Z_1^2 = 2^3 \times 3^1$&lt;/li>
&lt;li>Carta B: $Z_2^2 = 2^1 \times 5^1$&lt;/li>
&lt;li>Carta C: $Z_3^2 = 3^1 \times 5^1$&lt;/li>
&lt;/ul>
&lt;p>Vamos multiplicar todos eles.
O lado direito se torna $(2^3 \times 3^1) \times (2^1 \times 5^1) \times (3^1 \times 5^1)$,
E ao organizá-los juntos, obtemos ** &amp;ldquo;$2^4 \times 3^2 \times 5^2$&amp;rdquo; ** .&lt;/p>
&lt;p>Surpreendentemente, a quantidade de números primos tornou-se &amp;ldquo;4, 2, 2&amp;rdquo;, ** todos sendo um número par ** !
O fato de todos serem pares significa que se você reduzir a quantidade total pela metade, será &amp;ldquo;o quadrado de algo&amp;rdquo;.
Ou seja, $(2^2 \times 3^1 \times 5^1)^2 = (60)^2$.&lt;/p>
&lt;p>O lado esquerdo é $(Z_1 \times Z_2 \times Z_3)^2$, então finalmente chegamos a:
** $X = (Z_1 \times Z_2 \times Z_3)$ **
** $Y = 60$ **
O tão esperado par &amp;ldquo;$X^2 = Y^2$&amp;rdquo; está completo!&lt;/p>
&lt;p>Para computadores, o quebra-cabeça de calcular se a quantidade de números primos é &amp;ldquo;par ou ímpar (0 ou 1)&amp;rdquo; é algo em que eles são muito bons, então, com este método, é possível encontrar $X$ e $Y$ em alta velocidade.&lt;/p>
&lt;hr>
&lt;h2 id="capítulo-3-a-parede-do-desespero-se-ergue">Capítulo 3: A Parede do Desespero se ergue
&lt;/h2>&lt;p>Agora qualquer criptografia pode ser quebrada! &amp;hellip;ou assim pensávamos, mas um grande problema ocorreu.
Se o número da criptografia $N$ tiver até cerca de &amp;ldquo;100 dígitos&amp;rdquo;, este método (chamado Sieve Quadrático) pode resolvê-lo, mas quando $N$ se torna &amp;ldquo;200 ou 300 dígitos&amp;rdquo;, o $W$ que surge no meio do cálculo torna-se demasiado grande.&lt;/p>
&lt;p>Quando os números ficam demasiado grandes, &amp;ldquo;números compostos apenas por pequenos números primos (pó de ouro)&amp;rdquo; deixam de aparecer. Torna-se mais difícil do que procurar lentes de contacto no deserto, e as cartas necessárias para resolver o quebra-cabeça não se acumulam de forma alguma.&lt;/p>
&lt;p>Aqui, a arma final da humanidade, o ** &amp;ldquo;General Number Field Sieve (GNFS)&amp;rdquo; ** , finalmente entra em cena.&lt;/p>
&lt;hr>
&lt;h2 id="capítulo-4-a-ideia-mais-forte-da-humanidade-de-criar-dois-mundos">Capítulo 4: A ideia mais forte da humanidade de criar &amp;ldquo;Dois Mundos&amp;rdquo;
&lt;/h2>&lt;p>A ideia genial do GNFS é: ** &amp;ldquo;Os números tornam-se gigantescos porque calculamos apenas no mundo real. Então, vamos criar um &amp;lsquo;mundo dos bastidores&amp;rsquo; usando polinómios (fórmulas com letras) para dividir o peso do cálculo em dois.&amp;rdquo; **&lt;/p>
&lt;h3 id="a-magia-das-fórmulas-com-letras">A magia das fórmulas com letras
&lt;/h3>&lt;p>O GNFS converte o número gigante $N$ em uma fórmula com letras, utilizando um número base $m$.
Por exemplo, se $N=100$, com $m=4$, então $100 = 4^3 + 2(4^2) + 4$.
Transformamos isso numa fórmula (o mundo dos bastidores) usando a letra $x$: ** $f(x) = x^3 + 2x^2 + x$ ** .&lt;/p>
&lt;p>O mais interessante dessa fórmula é que ela possui a propriedade de que ** &amp;ldquo;se substituirmos $x$ por $m$ (4 no exemplo acima), sempre podemos voltar ao número real $N$&amp;rdquo; ** .&lt;/p>
&lt;h3 id="procurando-pó-de-ouro-em-2-mundos-simultaneamente">Procurando pó de ouro em 2 mundos simultaneamente
&lt;/h3>&lt;p>O GNFS cria muitos pares de números inteiros aleatórios $(a, b)$ e realiza os seguintes dois cálculos em simultâneo:&lt;/p>
&lt;ol>
&lt;li>** Mundo Real ** : $a - b \times m$&lt;/li>
&lt;li>** Mundo das Letras ** : O valor de $a - b \times x$ calculado pelas regras dos polinómios&lt;/li>
&lt;/ol>
&lt;p>Ao dividir o problema em dois mundos, o tamanho dos números tratados diminui (fica mais leve) drasticamente. É como dividir uma pedra gigante em dois para transformá-la em pedras mais fáceis de manusear.&lt;/p>
&lt;p>Então, utilizamos uma peneira para separar e recolher apenas os pares milagrosos $(a, b)$ onde ** &amp;ldquo;tanto no mundo real quanto no mundo das letras, ambos são &amp;lsquo;compostos apenas de pequenos primos (pó de ouro)&amp;rsquo;&amp;rdquo; ** . Esta é a origem do nome &amp;ldquo;Crivo do Corpo de Números&amp;rdquo;.&lt;/p>
&lt;h3 id="o-momento-em-que-a-criptografia-é-finalmente-quebrada">O momento em que a criptografia é finalmente quebrada
&lt;/h3>&lt;p>Quando dezenas de milhões de &amp;ldquo;cartões de pó de ouro&amp;rdquo; são recolhidos de ambos os mundos, o supercomputador utiliza cálculos gigantescos de matrizes para encontrar &amp;ldquo;uma combinação em que o número de primos seja todo par&amp;rdquo;, tal como fizemos no Capítulo 2.&lt;/p>
&lt;p>Assim que a combinação for encontrada:&lt;/p>
&lt;ul>
&lt;li>Deixe o número ao quadrado no mundo real ser ** $X^2$ **&lt;/li>
&lt;li>Deixe a fórmula quadrada criada no mundo das letras ser ** $Y(x)^2$ **&lt;/li>
&lt;/ul>
&lt;p>Por fim, substitua $x$ na fórmula de letras $Y(x)$ por $m$, saltando de volta para o mundo real e unindo-os.
Então, como que por magia matemática, a condição onde ** &amp;ldquo;os restos de $X^2$ e $Y^2$ são iguais&amp;rdquo; ** é estritamente alcançada!&lt;/p>
&lt;p>O resto, como no Capítulo 1, é apenas calcular o máximo divisor comum entre $X - Y$ e $N$, e a impenetrável criptografia RSA desmoronará, revelando os primos secretos.&lt;/p>
&lt;hr>
&lt;h2 id="conclusão-a-matemática-não-acaba">Conclusão: A matemática não acaba
&lt;/h2>&lt;p>Você pode estar a pensar: &amp;ldquo;Fantástico, com o GNFS qualquer criptografia pode ser quebrada!&amp;rdquo;.
No entanto, a criptografia RSA também não se deu por vencida. O que é utilizado na internet atual é um número gigantesco e monstruoso chamado &amp;ldquo;RSA-2048 (cerca de 617 dígitos)&amp;rdquo;.&lt;/p>
&lt;p>Por mais que o GNFS seja o algoritmo mais poderoso da humanidade, diz-se que para resolver até mesmo 270 dígitos (RSA-270), levaria milhares ou dezenas de milhares de anos, mesmo conectando computadores do mundo inteiro. Por agora, os nossos dados bancários e do LINE estão seguros.&lt;/p>
&lt;p>Mas e se aparecesse uma ** &amp;ldquo;magia capaz de encontrar instantaneamente $X$ e $Y$ para qualquer número gigante&amp;rdquo; ** ?
Na verdade, a coisa mais próxima disso é o ** &amp;ldquo;Computador Quântico (Algoritmo de Shor)&amp;rdquo; ** , que está atualmente em desenvolvimento. Utilizando a natureza ondulatória da mecânica quântica, foi provado matematicamente que é possível ignorar o aborrecido quebra-cabeças da recolha de cartas e chegar à resposta de uma só vez.&lt;/p>
&lt;p>A interminável batalha de inteligência entre os que criam a criptografia (defesa) e os que criam algoritmos para a quebrar (ataque).
Saber que a &amp;ldquo;fatoração em números primos&amp;rdquo; e as &amp;ldquo;fórmulas com letras&amp;rdquo; ensinadas na escola secundária são, na verdade, as armas na linha da frente da segurança global não faz com que as aulas de matemática pareçam um pouco mais interessantes?&lt;/p>
&lt;p>Quem descobrirá o algoritmo mais forte do futuro poderá ser você, que está a ler este artigo!&lt;/p>
&lt;hr>
&lt;p>&lt;em>(※Este artigo é uma adaptação conceptual do encanto matemático da quebra de códigos para estudantes. O GNFS real é rigorosamente calculado utilizando matemática universitária avançada, tal como os grupos da classe de ideais dos corpos numéricos algébricos e homomorfismos)&lt;/em>&lt;/p></description></item><item><title>Os prós e contras dos movimentos antivacina</title><link>http://kenji.blog/pt/p/%E5%8F%8D%E3%83%AF%E3%82%AF%E3%83%81%E3%83%B3%E3%81%AE%E5%8A%9F%E7%BD%AA/</link><pubDate>Sat, 24 Jan 2026 15:41:23 +0900</pubDate><guid>http://kenji.blog/pt/p/%E5%8F%8D%E3%83%AF%E3%82%AF%E3%83%81%E3%83%B3%E3%81%AE%E5%8A%9F%E7%BD%AA/</guid><description>&lt;img src="http://kenji.blog/p/%E5%8F%8D%E3%83%AF%E3%82%AF%E3%83%81%E3%83%B3%E3%81%AE%E5%8A%9F%E7%BD%AA/img.png" alt="Featured image of post Os prós e contras dos movimentos antivacina" />&lt;h1 id="os-prós-e-contras-dos-movimentos-antivacina--como-a-ansiedade-bem-intencionada-matou-o-futuro-de-5000-pessoas-e-as-lições-epidemiológicas-que-devemos-aprender">Os prós e contras dos movimentos antivacina ―― Como a &amp;ldquo;ansiedade bem-intencionada&amp;rdquo; matou o futuro de 5000 pessoas e as lições epidemiológicas que devemos aprender
&lt;/h1>&lt;h2 id="a-ilusão-de-causalidade-evidenciada-pela-pandemia-de-covid-19">A &amp;ldquo;Ilusão de Causalidade&amp;rdquo; Evidenciada pela Pandemia de COVID-19
&lt;/h2>&lt;p>A partir de 2021, a vacinação contra o novo coronavírus avançou rapidamente no Japão. Foi um projeto de saúde pública raro na história da humanidade, onde quase 80% da população foi vacinada em um curto período.
Nesse processo, testemunhamos inúmeros &amp;ldquo;gritos de socorro&amp;rdquo; através das redes sociais e da mídia. &amp;ldquo;Um familiar faleceu poucos dias após tomar a vacina&amp;rdquo;, &amp;ldquo;Estou com problemas de saúde inexplicáveis após a vacinação&amp;rdquo; ――. Esses apelos são sérios, e para os envolvidos, o sofrimento é inegável e verdadeiro.&lt;/p>
&lt;p>No entanto, existe aqui uma &amp;ldquo;armadilha&amp;rdquo; fria, porém extremamente importante, na epidemiologia.
Considerando o tamanho da população do Japão, quer as pessoas se vacinem ou não, cerca de 3.000 a 4.000 pessoas morrem todos os dias por alguma causa (doença, acidente, velhice). Se a maioria da população se vacinar de uma vez, do ponto de vista probabilístico, um certo número de pessoas inevitavelmente &amp;ldquo;morrerá no dia seguinte à vacinação (por causas não relacionadas à vacina)&amp;rdquo;. Isso é chamado em termos técnicos de ** &amp;ldquo;Coincidência&amp;rdquo; ** .&lt;/p>
&lt;p>Os humanos possuem um viés cognitivo conhecido como &amp;ldquo;Falácia do post hoc ergo propter hoc&amp;rdquo; (depois disso, logo, causado por isso). Se &amp;ldquo;B (morte) ocorreu após A (vacinação)&amp;rdquo;, nós o conectamos intuitivamente, pensando que &amp;ldquo;A é a causa de B&amp;rdquo;. Na pandemia, esse viés cognitivo foi amplificado pelas redes sociais, criando um grupo que fixou a imagem de &amp;ldquo;vacina = perigo&amp;rdquo; antes mesmo de esperar pela verificação científica.&lt;/p>
&lt;p>Muitos especialistas em saúde pública observaram esse cenário com uma sensação de déjà vu. Isso porque o Japão, apenas alguns anos antes, foi o único país desenvolvido a abandonar voluntariamente um meio de prevenir uma doença evitável devido a essa &amp;ldquo;ansiedade sem base científica&amp;rdquo;.
Esse é o problema da ** &amp;ldquo;Vacina contra o câncer do colo do útero (Vacina contra o HPV)&amp;rdquo; ** .&lt;/p>
&lt;hr>
&lt;h2 id="o-que-aconteceu-no-japão-em-2013">O Que Aconteceu no Japão em 2013
&lt;/h2>&lt;p>Vamos voltar um pouco no tempo.
O câncer do colo do útero é uma doença que afeta cerca de 11.000 mulheres anualmente e mata cerca de 2.900. É frequentemente chamado de &amp;ldquo;assassino de mães&amp;rdquo; (Mother Killer) porque atinge principalmente a geração dos 20 aos 40 anos, que está no auge da criação dos filhos e do trabalho. A causa é a infecção pelo papilomavírus humano (HPV), um vírus tão comum que estima-se que 80% das mulheres com experiência sexual serão infectadas pelo menos uma vez na vida.
A vacina contra o HPV, que previne essa infecção viral, foi introduzida no mundo todo como uma &amp;ldquo;vacina revolucionária que pode prevenir o câncer&amp;rdquo; e, no Japão, tornou-se parte da vacinação de rotina (fortemente recomendada pelo governo e disponível gratuitamente) em abril de 2013.&lt;/p>
&lt;p>No entanto, a situação tomou um rumo sombrio logo em seguida.
Algumas meninas que receberam a vacina relataram sintomas como dor generalizada, distúrbios motores e problemas de memória, e a mídia reportou isso amplamente todos os dias como &amp;ldquo;suspeita de reações adversas à vacina&amp;rdquo;. As imagens de meninas tendo convulsões tiveram um impacto profundo nos espectadores, e a opinião pública rapidamente se voltou para a &amp;ldquo;teoria de que a vacina é perigosa&amp;rdquo;.&lt;/p>
&lt;p>Em resposta a isso, o Ministério da Saúde, Trabalho e Bem-Estar decidiu em junho de 2013, apenas dois meses após o início da vacinação de rotina, &amp;ldquo;suspender a recomendação ativa&amp;rdquo;. Isso não foi uma &amp;ldquo;proibição&amp;rdquo; ou &amp;ldquo;cancelamento&amp;rdquo;, mas uma decisão política extremamente ambígua de &amp;ldquo;manter a estrutura de vacinação de rotina, mas parar de enviar notificações individuais do governo&amp;rdquo;.
No entanto, isso foi transmitido ao público como uma mensagem de que &amp;ldquo;o governo reconheceu o perigo e a parou&amp;rdquo;. Como resultado, a taxa de vacinação, que ultrapassava os 70%, despencou rapidamente para menos de 1%.&lt;/p>
&lt;p>A partir daqui, começam os ** &amp;ldquo;8 anos perdidos (Lacuna da vacina)&amp;rdquo; ** no Japão.&lt;/p>
&lt;hr>
&lt;h2 id="a-verdade-revelada-pelo-estudo-de-nagoya">A &amp;ldquo;Verdade&amp;rdquo; Revelada pelo Estudo de Nagoya
&lt;/h2>&lt;p>Os sintomas relatados pela mídia foram realmente causados pela vacina?
Houve uma pesquisa em larga escala que tentou responder cientificamente a essa pergunta. É conhecida como o ** &amp;ldquo;Estudo de Nagoya&amp;rdquo; ** .&lt;/p>
&lt;p>A cidade de Nagoya conduziu uma pesquisa de questionário em larga escala em 2015 envolvendo cerca de 70.000 mulheres jovens. Isso incluiu tanto as que &amp;ldquo;foram vacinadas&amp;rdquo; quanto as que &amp;ldquo;não foram vacinadas&amp;rdquo;, perguntando a cada uma sobre a presença ou ausência de sintomas em 24 itens, como &amp;ldquo;menstruação irregular&amp;rdquo;, &amp;ldquo;dores nas articulações&amp;rdquo; e &amp;ldquo;diminuição da concentração&amp;rdquo;.
Se a vacina fosse a causa, esses sintomas deveriam aparecer de forma claramente mais frequente no grupo das &amp;ldquo;vacinadas&amp;rdquo;.&lt;/p>
&lt;p>Os resultados foram chocantes.
** Não foi encontrada diferença significativa na taxa de incidência de sintomas entre o &amp;ldquo;grupo vacinado&amp;rdquo; e o &amp;ldquo;grupo não vacinado&amp;rdquo;. **&lt;/p>
&lt;p>O que isso significa?
As meninas na puberdade, independentemente da vacinação, estão em um período propenso a problemas de saúde, como disfunção autonômica e dor crônica, devido a alterações no equilíbrio hormonal e a circunstâncias específicas da fase de crescimento.
Em outras palavras, na mesma proporção de &amp;ldquo;meninas que desenvolveram sintomas após a vacinação&amp;rdquo; relatadas pela mídia, havia &amp;ldquo;meninas que desenvolveram os mesmos sintomas sem terem sido vacinadas&amp;rdquo;.
No entanto, os problemas de saúde das meninas não vacinadas foram tratados como &amp;ldquo;problemas da puberdade&amp;rdquo;, enquanto apenas os problemas das meninas vacinadas foram destacados como &amp;ldquo;danos da vacina&amp;rdquo;. Os dados mostraram que era altamente provável que essa fosse a verdadeira natureza do fenômeno que causou tanto alvoroço como um &amp;ldquo;desastre médico&amp;rdquo;.&lt;/p>
&lt;p>Além disso, o envolvimento do &amp;ldquo;Efeito Nocebo&amp;rdquo; também foi apontado. É o oposto do &amp;ldquo;Efeito Placebo&amp;rdquo;: um fenômeno onde a dor e os problemas de saúde ocorrem de fato devido à ansiedade e ao medo ao ingerir algo acreditando que &amp;ldquo;isso faz mal ao corpo&amp;rdquo;. Não se pode negar a possibilidade de que as reportagens negativas diárias tenham afetado as mentes e corpos sensíveis das meninas.&lt;/p>
&lt;hr>
&lt;h2 id="o-pecado-da-omissão-visto-em-números">O &amp;ldquo;Pecado da Omissão&amp;rdquo; Visto em Números
&lt;/h2>&lt;p>&amp;ldquo;Parar a recomendação por precaução&amp;rdquo;.
Essa decisão, à primeira vista, parece uma &amp;ldquo;escolha cuidadosa e segura&amp;rdquo;. O pensamento é de que é melhor prevenir do que remediar, então, em caso de dúvida, pare. No entanto, na saúde pública, &amp;ldquo;não fazer nada (omissão)&amp;rdquo; às vezes causa danos muito maiores do que o &amp;ldquo;risco de fazer algo&amp;rdquo;.&lt;/p>
&lt;p>A equipe de pesquisa da Universidade de Osaka publicou uma estimativa cruel do impacto causado por essa suspensão da recomendação.
Devido à queda drástica na taxa de vacinação entre 2013 e 2019, haverá no futuro um ** aumento de cerca de 25.000 casos de câncer do colo do útero que poderiam ter sido evitados e um aumento de cerca de 5.000 a 5.700 mortes ** .&lt;/p>
&lt;p>Mais de 5.000 mortes. Esse é um número comparável a um desastre natural de grande escala.
Como resultado da tentativa de evitar o risco cientificamente incerto da &amp;ldquo;ansiedade sobre as reações adversas&amp;rdquo;, acabamos sobrecarregando as futuras mulheres com o risco certo e grave de &amp;ldquo;morte por câncer&amp;rdquo;.&lt;/p>
&lt;p>Se olharmos para o mundo, a diferença é óbvia.
Na Austrália, com a disseminação da vacinação para ambos os sexos, prevê-se que o câncer do colo do útero seja &amp;ldquo;erradicado (tornado um câncer raro)&amp;rdquo; por volta de 2028. No Reino Unido, há relatos de que a incidência de câncer do colo do útero entre a geração vacinada caiu para quase zero.
Enquanto o mundo avança em direção a um futuro de &amp;ldquo;superação do câncer&amp;rdquo;, apenas o Japão foi deixado para trás em um passado onde &amp;ldquo;o câncer continua a aumentar&amp;rdquo;. Em 2015, o Comitê Consultivo Global sobre Segurança de Vacinas da OMS (Organização Mundial da Saúde) criticou nominalmente a situação no Japão: &amp;ldquo;Decisões políticas não baseadas em evidências científicas estão causando danos reais (mortes por câncer)&amp;rdquo;.&lt;/p>
&lt;hr>
&lt;h2 id="a-hesitação-vacinal-em-cadeia-além-mar">A &amp;ldquo;Hesitação Vacinal&amp;rdquo; em Cadeia Além-mar
&lt;/h2>&lt;p>A tragédia da vacina contra o HPV ocorrida no Japão não é de forma alguma uma &amp;ldquo;circunstância especial apenas do Japão&amp;rdquo;. Quando a &amp;ldquo;ansiedade intuitiva&amp;rdquo; e a &amp;ldquo;ideologia&amp;rdquo; são priorizadas em relação à ciência, as doenças infecciosas podem mostrar suas presas a qualquer hora e em qualquer lugar, como demonstram os casos atualmente relatados em todo o mundo.&lt;/p>
&lt;p>Um exemplo notável disso é o ** surto de sarampo ** nos Estados Unidos.&lt;/p>
&lt;p>O sarampo é um vírus altamente contagioso, mas é uma doença quase completamente evitável com a vacina. Nos Estados Unidos, a &amp;ldquo;eliminação&amp;rdquo; já foi declarada em 2000 graças a um programa de vacinação minucioso. Ou seja, foi considerado que o vírus endêmico havia desaparecido do país.
No entanto, nos últimos anos, o sarampo começou a se espalhar novamente.&lt;/p>
&lt;p>Segundo a reportagem da BBC (2024), as autoridades de saúde americanas apontam que a &amp;ldquo;Hesitação Vacinal&amp;rdquo; (Vaccine Hesitancy), que permanece enraizada em algumas comunidades, está se tornando um terreno fértil para a propagação da infecção.
Em regiões onde a ideologia antivacina baseada em motivos religiosos, em grupos autodenominados &amp;ldquo;naturais&amp;rdquo; ou em informações falsas permeou, as taxas de vacinação caíram. Com a introdução do vírus vindo do exterior nessas áreas, estão ocorrendo infecções explosivas entre pessoas sem imunidade.&lt;/p>
&lt;p>O sarampo não é uma doença que termina apenas com febre e erupções cutâneas. Ele causa complicações graves, como pneumonia e encefalite, e pode levar à morte mesmo em países desenvolvidos. Uma doença que a humanidade outrora &amp;ldquo;contaminou&amp;rdquo; reunindo sua sabedoria, está mais uma vez ameaçando as vidas das crianças, aproveitando-se da brecha da &amp;ldquo;dúvida&amp;rdquo; das pessoas.
O caso dos Estados Unidos nos adverte o seguinte: &amp;ldquo;A barreira de uma alta taxa de vacinação entrará em colapso em um instante se a confiança das pessoas vacilar&amp;rdquo;.&lt;/p>
&lt;hr>
&lt;h2 id="a-derrota-da-mídia-dos-especialistas-e-a-nossa">A Derrota da Mídia, dos Especialistas e a Nossa
&lt;/h2>&lt;p>Por que essas situações se repetem?
Existe a assimetria de informação peculiar à sociedade moderna e nossos vieses cognitivos.&lt;/p>
&lt;p>Na questão da vacina contra o HPV no Japão, a mídia relatou de forma sensacionalista a &amp;ldquo;suspeita de reações adversas à vacina&amp;rdquo;. A composição de &amp;ldquo;vítimas lamentáveis&amp;rdquo; contra &amp;ldquo;estado/empresas farmacêuticas frias&amp;rdquo; foi extremamente poderosa como narrativa e abalou fortemente as emoções dos espectadores.
Por outro lado, as explicações científicas dos especialistas, como &amp;ldquo;não há diferença estatística significativa&amp;rdquo; ou &amp;ldquo;os benefícios superam os riscos&amp;rdquo;, soavam secas e frias, sendo muito impotentes diante da torrente de emoções.&lt;/p>
&lt;p>No mundo da ciência, quando há uma teoria aceita apoiada por 99% dos cientistas e 1% de discordância, elas não são tratadas como &amp;ldquo;opiniões iguais&amp;rdquo;. No entanto, a mídia, colocando muita ênfase na &amp;ldquo;imparcialidade&amp;rdquo;, ou para atrair a atenção, relatou os dados que salvam a vida de dezenas de milhares de pessoas e o apelo emocional de uma única vítima lado a lado como sendo &amp;ldquo;iguais&amp;rdquo;.
Os políticos também, temendo a reação pública, priorizaram ler &amp;ldquo;a atmosfera do momento&amp;rdquo; em vez de seguir bases científicas. Como resultado, a recomendação ativa da vacina contra o HPV no Japão foi suspensa por cerca de 9 anos, gerando danos de muitos cânceres que poderiam ter sido evitados durante esse período.&lt;/p>
&lt;hr>
&lt;h2 id="a-história-se-repete--pela-inteligência-de-resistir-ao-clima">A História se Repete ―― Pela Inteligência de Resistir ao &amp;ldquo;Clima&amp;rdquo;
&lt;/h2>&lt;p>Em 2022, a recomendação ativa da vacina contra o HPV foi finalmente retomada no Japão. No entanto, o tempo e as vidas perdidas não voltarão. E agora, assim como o sarampo está voltando nos Estados Unidos, se baixarmos a guarda, a história se repetirá inúmeras vezes.&lt;/p>
&lt;p>Não podemos rejeitar completamente os movimentos antivacina e a própria preocupação com os cuidados médicos. Ser cauteloso sobre o que se coloca em seu próprio corpo é um instinto humano de defesa, e desastres médicos reais já ocorreram no passado. Monitorar e questionar a autoridade é importante numa democracia.&lt;/p>
&lt;p>No entanto, a série de eventos com a vacina contra a COVID-19, a vacina contra o HPV e o surto de sarampo nos Estados Unidos apresenta um fato sombrio: a ** &amp;ldquo;ansiedade bem-intencionada que ignora a ciência&amp;rdquo; pode tirar mais vidas do que o próprio vírus ** .&lt;/p>
&lt;p>&amp;ldquo;Pode ser perigoso, então vamos esperar para ver.&amp;rdquo;
Ao tomarmos essa decisão, será que incluímos no cálculo a &amp;ldquo;probabilidade de morrer da doença enquanto estamos esperando para ver&amp;rdquo;?
&amp;ldquo;O natural é o melhor.&amp;rdquo;
Ao dizermos isso, não estaríamos esquecendo a história de que &amp;ldquo;são justamente os vírus encontrados na natureza que têm tirado vidas da forma mais impiedosa&amp;rdquo;?&lt;/p>
&lt;p>No futuro, novas doenças infecciosas surgirão e novas vacinas serão desenvolvidas. Nesse momento, seremos novamente enganados pelo fenômeno da &amp;ldquo;coincidência&amp;rdquo; e nos deixaremos levar pela instigação emocional? Ou seremos capazes de analisar calmamente os dados e pesar os riscos e benefícios?&lt;/p>
&lt;p>Diz-se que a história se repete. No entanto, a única coisa que pode impedir isso é a nossa razão.
Ao observar dados estatisticamente corretos, nós ** devemos ter a inteligência para escolher os &amp;ldquo;fatos&amp;rdquo; em vez da &amp;ldquo;atmosfera&amp;rdquo;. Essa é a nossa responsabilidade como pessoas que vivem na era moderna. **&lt;/p>
&lt;hr>
&lt;h3 id="referências-e-fontes-de-dados">Referências e Fontes de Dados
&lt;/h3>&lt;ul>
&lt;li>** Ministério da Saúde, Trabalho e Bem-Estar ** : &amp;ldquo;Infecção pelo papilomavírus humano ~ Câncer do colo do útero e vacina contra o HPV ~&amp;rdquo;&lt;/li>
&lt;li>** Centro Nacional do Câncer ** : Dados estatísticos do Serviço de Informação sobre o Câncer &amp;ldquo;Câncer do Colo do Útero&amp;rdquo;&lt;/li>
&lt;li>** BBC News (Japonês) ** : &amp;ldquo;CDC dos EUA apela por vacinação devido ao surto de sarampo; aumento de infecções em todo o mundo&amp;rdquo; (2024) e artigos originais relacionados&lt;/li>
&lt;li>** Equipe de pesquisa da Universidade de Osaka (Yagi A, et al. Lancet Public Health. 2020) ** : Pesquisa estimando o excesso de morbidade e mortalidade devido à suspensão da recomendação ativa da vacinação de rotina contra o HPV&lt;/li>
&lt;li>** Nagoya Study (Suzuki S, et al. Papillomavirus Res. 2018) **&lt;/li>
&lt;/ul></description></item><item><title>A Ilusão e a Realidade do 'Japão em Primeiro Lugar': A Defesa Chamada 'Coexistência' Enfrentada pelo Japão em 2026</title><link>http://kenji.blog/pt/p/%E6%97%A5%E6%9C%AC%E4%BA%BA%E3%83%95%E3%82%A1%E3%83%BC%E3%82%B9%E3%83%88%E3%81%AB%E3%81%A4%E3%81%84%E3%81%A6%E6%80%9D%E3%81%86%E3%81%93%E3%81%A8/</link><pubDate>Fri, 23 Jan 2026 13:43:41 +0900</pubDate><guid>http://kenji.blog/pt/p/%E6%97%A5%E6%9C%AC%E4%BA%BA%E3%83%95%E3%82%A1%E3%83%BC%E3%82%B9%E3%83%88%E3%81%AB%E3%81%A4%E3%81%84%E3%81%A6%E6%80%9D%E3%81%86%E3%81%93%E3%81%A8/</guid><description>&lt;img src="http://kenji.blog/p/%E6%97%A5%E6%9C%AC%E4%BA%BA%E3%83%95%E3%82%A1%E3%83%BC%E3%82%B9%E3%83%88%E3%81%AB%E3%81%A4%E3%81%84%E3%81%A6%E6%80%9D%E3%81%86%E3%81%93%E3%81%A8/img.png" alt="Featured image of post A Ilusão e a Realidade do 'Japão em Primeiro Lugar': A Defesa Chamada 'Coexistência' Enfrentada pelo Japão em 2026" />&lt;h1 id="a-ilusão-e-a-realidade-do-japão-em-primeiro-lugar-a-defesa-chamada-coexistência-enfrentada-pelo-japão-em-2026">A Ilusão e a Realidade do &amp;ldquo;Japão em Primeiro Lugar&amp;rdquo;: A Defesa Chamada &amp;ldquo;Coexistência&amp;rdquo; Enfrentada pelo Japão em 2026
&lt;/h1>&lt;h2 id="introdução-por-que-essa-expressão-toca-o-coração-agora">Introdução: Por que essa expressão toca o coração agora?
&lt;/h2>&lt;p>Ano de 2026. Estamos atualmente em um ponto de virada histórico sem precedentes. O prolongado aumento dos preços, a estagnação dos salários reais e o evidente declínio da taxa de natalidade e envelhecimento da população. Toda vez que as etiquetas de preço das mercadorias nas prateleiras dos supermercados são reescritas, a ansiedade em relação ao futuro lança uma sombra sobre nossos corações.&lt;/p>
&lt;p>Neste sentimento de estagnação, há uma expressão que vem ganhando apoio rapidamente. É o &lt;strong>&amp;ldquo;Japão em Primeiro Lugar&amp;rdquo;&lt;/strong> .&lt;/p>
&lt;p>O desejo de que &amp;ldquo;primeiro enriqueçam a vida dos próprios cidadãos&amp;rdquo; e &amp;ldquo;protejam a cultura e a segurança pública do Japão como prioridade máxima&amp;rdquo; é um anseio extremamente natural e urgente, como um cidadão soberano e como um ser humano que vive neste país. No entanto, entre o &amp;ldquo;ideal&amp;rdquo; que essa expressão promove e a &amp;ldquo;realidade&amp;rdquo; mostrada pelos dados estatísticos, existe uma enorme discrepância que devemos encarar de frente.&lt;/p>
&lt;p>Neste artigo, deixaremos de lado argumentos emocionais e rotulagens, e nos aproximaremos da verdadeira natureza deste problema com base em dados objetivos, transições cronológicas e fatos que estão ocorrendo em cada cenário da nossa sociedade.&lt;/p>
&lt;hr>
&lt;h2 id="capítulo-1-a-cronologia-e-o-contexto-social-do-japão-em-primeiro-lugar">Capítulo 1: A Cronologia e o Contexto Social do &amp;ldquo;Japão em Primeiro Lugar&amp;rdquo;
&lt;/h2>&lt;p>Essa expressão não surgiu de repente. Ela tem sido fomentada por um complexo entrelaçamento de tendências globais e circunstâncias peculiares do Japão.&lt;/p>
&lt;h3 id="1-2016---2017-a-importação-e-a-consolidação-da-expressão">1. 2016 - 2017: A Importação e a Consolidação da Expressão
&lt;/h3>&lt;p>Em 2016, o &amp;ldquo;América em Primeiro Lugar&amp;rdquo; promovido por Donald Trump chocou o mundo. No Japão, em 2017, o partido &amp;ldquo;Tomin First no Kai&amp;rdquo; liderado pela governadora Yuriko Koike chamou atenção. Neste momento, o aspecto retórico de esclarecer as prioridades das políticas era forte, e a nuance xenofóbica ainda era limitada.&lt;/p>
&lt;h3 id="2-2023---2024-a-visualização-da-ansiedade">2. 2023 - 2024: A Visualização da Ansiedade
&lt;/h3>&lt;p>O atraso na recuperação econômica pós-pandemia e a inflação acompanhada pela rápida desvalorização do iene atingiram diretamente as famílias em geral. Ao mesmo tempo, insatisfações baseadas em informações fragmentadas, como &amp;ldquo;o apoio aos estrangeiros é generoso demais&amp;rdquo; e &amp;ldquo;o dinheiro dos impostos dos japoneses está fluindo para os estrangeiros&amp;rdquo;, começaram a explodir nas redes sociais.&lt;/p>
&lt;h3 id="3-2025---2026-a-fusão-de-forças-políticas-e-redes-sociais">3. 2025 - 2026: A Fusão de Forças Políticas e Redes Sociais
&lt;/h3>&lt;p>Nas eleições nacionais de 2025, forças que adotaram o &amp;ldquo;Japão em Primeiro Lugar&amp;rdquo; como seu slogan oficial garantiram um certo número de assentos. Os algoritmos das redes sociais reagiram à ansiedade das pessoas, exibindo postagens extremas com prioridade, acelerando o &amp;ldquo;fenômeno da câmara de eco&amp;rdquo; onde apenas determinados valores são reforçados.&lt;/p>
&lt;p>Nas últimas pesquisas de opinião conduzidas por vários jornais (final de 2025), a situação atual onde a opinião pública está perfeitamente dividida ao meio veio à tona, com &lt;strong>42% a favor ou um pouco a favor&lt;/strong> e &lt;strong>38% contra ou um pouco contra&lt;/strong> em relação a este slogan.&lt;/p>
&lt;hr>
&lt;h2 id="capítulo-2-a-verdade-sobre-a-economia-e-a-seguridade-social--uma-presença-que-rouba-ou-um-pilar-que-sustenta">Capítulo 2: A Verdade sobre a Economia e a Seguridade Social — Uma Presença que &amp;ldquo;Rouba&amp;rdquo; ou um Pilar que &amp;ldquo;Sustenta&amp;rdquo;?
&lt;/h2>&lt;p>Um dos pilares lógicos que sustentam o &amp;ldquo;Japão em Primeiro Lugar&amp;rdquo; é a imagem de que &amp;ldquo;os recursos dos japoneses estão sendo roubados pelos estrangeiros&amp;rdquo;. No entanto, os dados primários de órgãos governamentais mostram uma realidade exatamente oposta a essa intuição.&lt;/p>
&lt;h3 id="1-força-de-trabalho-o-sangue-indispensável-que-mantém-a-economia-japonesa">1. Força de Trabalho: O &amp;ldquo;Sangue Indispensável&amp;rdquo; que Mantém a Economia Japonesa
&lt;/h3>&lt;p>De acordo com o &amp;ldquo;Status de Emprego de Estrangeiros (final de outubro de 2024)&amp;rdquo; do Ministério da Saúde, Trabalho e Bem-Estar, o número de trabalhadores estrangeiros era de &lt;strong>2.048.675 pessoas&lt;/strong> . Na estimativa atual de 2026, esse número já ultrapassou &lt;strong>2,3 milhões&lt;/strong> de pessoas.&lt;/p>
&lt;table>
&lt;thead>
&lt;tr>
&lt;th>Setor Industrial&lt;/th>
&lt;th>Proporção e Taxa de Aumento de Trabalhadores Estrangeiros&lt;/th>
&lt;th>Realidade e Papel&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>&lt;strong>Construção Civil&lt;/strong>&lt;/td>
&lt;td>Aumento de cerca de 22,7% em relação ao ano anterior&lt;/td>
&lt;td>Indispensável para a manutenção de infraestruturas e reparo de pontes e estradas envelhecidas.&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;strong>Saúde e Bem-Estar&lt;/strong>&lt;/td>
&lt;td>Aumento de cerca de 28,1% em relação ao ano anterior&lt;/td>
&lt;td>Atuam na linha de frente dos cuidados a idosos, sustentando os idosos japoneses.&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;strong>Indústria Manufatureira&lt;/strong>&lt;/td>
&lt;td>Representa cerca de 26% do total&lt;/td>
&lt;td>A espinha dorsal que sustenta as indústrias de exportação do Japão.&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;p>Atualmente, eles não estão ocupando vagas que os japoneses querem mas não conseguem, eles estão preenchendo o &lt;strong>&amp;ldquo;vazio deixado pelos japoneses que não podem mais ser garantidos&amp;rdquo;&lt;/strong> . Se os excluirmos em nome do &amp;ldquo;Japão em Primeiro Lugar&amp;rdquo;, nosso sistema de cuidados a idosos entrará em colapso imediatamente, e os preços de moradia e alimentos saltarão de algumas porcentagens para várias vezes mais caros.&lt;/p>
&lt;h3 id="2-seguridade-social-os-boatos-e-a-realidade-sobre-a-assistência-social">2. Seguridade Social: Os Boatos e a Realidade sobre a Assistência Social
&lt;/h3>&lt;p>O discurso mais difundido nas redes sociais é que &amp;ldquo;os estrangeiros estão recebendo assistência social de forma prioritária&amp;rdquo;. No entanto, verificando as estatísticas do Ministério da Saúde, Trabalho e Bem-Estar, a proporção de famílias que recebem assistência onde o chefe da família é estrangeiro é de &lt;strong>cerca de 2,8% a 2,9%&lt;/strong> . Nos últimos 10 anos, esse número permaneceu quase inalterado.&lt;/p>
&lt;p>Pelo contrário, observando a composição etária dos residentes estrangeiros, a maioria deles está na &lt;strong>geração ativa de 20 a 40 anos&lt;/strong> . Eles pagam o seguro de saúde e a pensão, assumindo o papel de &lt;strong>&amp;ldquo;provedores&amp;rdquo; que sustentam as pensões e as despesas médicas recebidas pelos &amp;ldquo;japoneses idosos&amp;rdquo;&lt;/strong> . São eles, e mais ninguém, que estão preenchendo o vazio da geração ativa deixado pelos japoneses e prolongando a vida do sistema de seguridade social do Japão.&lt;/p>
&lt;hr>
&lt;h2 id="capítulo-3-a-segurança-pública-e-o-viés-das-redes-sociais--desconstrução-lógica-dos-crimes-de-estrangeiros">Capítulo 3: A Segurança Pública e o Viés das Redes Sociais — Desconstrução Lógica dos &amp;ldquo;Crimes de Estrangeiros&amp;rdquo;
&lt;/h2>&lt;p>A ansiedade em relação à segurança pública é o que mais estimula o sentimento de &amp;ldquo;Japão em Primeiro Lugar&amp;rdquo;. No entanto, ao decifrar detalhadamente as estatísticas da Agência Nacional de Polícia e o &amp;ldquo;Livro Branco do Crime&amp;rdquo; do Ministério da Justiça, podemos entender como a imagem dos &amp;ldquo;estrangeiros cruéis&amp;rdquo; na internet é criada por distorções cognitivas.&lt;/p>
&lt;h3 id="1-comparação-calma-entre-número-total-e-taxa-de-criminalidade">1. Comparação Calma entre &amp;ldquo;Número Total&amp;rdquo; e &amp;ldquo;Taxa de Criminalidade&amp;rdquo;
&lt;/h3>&lt;p>De acordo com as estatísticas publicadas em 2024, do total de pessoas presas, a proporção de estrangeiros é de &lt;strong>cerca de 5,5%&lt;/strong> . Os cerca de 95% restantes são crimes cometidos por japoneses.&lt;/p>
&lt;p>Ao comparar o número de pessoas presas por 100.000 habitantes (taxa de criminalidade), a essência se torna ainda mais visível.&lt;/p>
&lt;table>
&lt;thead>
&lt;tr>
&lt;th>Categoria&lt;/th>
&lt;th>Número de Presos por 100.000 habitantes (Estimativa)&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>&lt;strong>Japoneses (Todas as idades)&lt;/strong>&lt;/td>
&lt;td>Cerca de 142,7 pessoas&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;strong>Estrangeiros Residentes (Residentes permanentes e de longo prazo)&lt;/strong>&lt;/td>
&lt;td>&lt;strong>Cerca de 120,0 pessoas&lt;/strong>&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;p>É um fato estatístico que &lt;strong>a taxa de criminalidade dos estrangeiros que vivem no Japão a médio e longo prazo é inferior à média de todos os japoneses&lt;/strong> .&lt;/p>
&lt;h3 id="2-a-mágica-do-viés-por-geração">2. A Mágica do Viés por &amp;ldquo;Geração&amp;rdquo;
&lt;/h3>&lt;p>Por que a imagem de que &amp;ldquo;estrangeiros são assustadores&amp;rdquo; prevalece? O maior fator é a diferença na &lt;strong>&amp;ldquo;composição etária&amp;rdquo;&lt;/strong> em criminologia.&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Japoneses:&lt;/strong> Cerca de 30% são idosos, com uma taxa de criminalidade extremamente baixa. Como esse grupo reduz o &amp;ldquo;denominador&amp;rdquo;, os números de todo o Japão parecem baixos.&lt;/li>
&lt;li>&lt;strong>Estrangeiros:&lt;/strong> Como vieram ao Japão como força de trabalho, mais de 80% pertencem à &lt;strong>&amp;ldquo;faixa etária jovem a adulta&amp;rdquo;, onde ocorrem mais crimes estatisticamente&lt;/strong> .&lt;/li>
&lt;/ul>
&lt;p>Se compararmos a taxa de criminalidade de japoneses e estrangeiros sob a mesma condição de estar &amp;ldquo;na faixa dos 20 anos&amp;rdquo;, não veremos diferença significativa entre os dois. Em outras palavras, não é que &amp;ldquo;a segurança pública piorou porque o número de estrangeiros aumentou&amp;rdquo;, mas sim que &lt;strong>&amp;ldquo;a faixa etária com maior probabilidade de cometer crimes (os jovens) está presente no Japão na forma de estrangeiros&amp;rdquo;&lt;/strong> .&lt;/p>
&lt;h3 id="3-o-viés-de-confirmação-criado-pelas-redes-sociais">3. O &amp;ldquo;Viés de Confirmação&amp;rdquo; Criado pelas Redes Sociais
&lt;/h3>&lt;p>Os algoritmos das redes sociais usam nossa &amp;ldquo;ansiedade&amp;rdquo; como combustível. Quando ocorre um crime cometido por um estrangeiro, ele é vinculado ao seu &amp;ldquo;atributo (nacionalidade)&amp;rdquo; e é amplamente divulgado. Assim, em nossos cérebros, apenas a memória de que &amp;ldquo;outro estrangeiro causou um incidente&amp;rdquo; é reforçada.&lt;/p>
&lt;p>Isso é chamado de &lt;strong>&amp;ldquo;viés de confirmação&amp;rdquo;&lt;/strong> . Os crimes cometidos por japoneses, que representam 95% do total, são ignorados como parte do &amp;ldquo;cotidiano&amp;rdquo;, e os 5% dos crimes cometidos por estrangeiros são substituídos pela imagem de &amp;ldquo;todos os estrangeiros&amp;rdquo;.&lt;/p>
&lt;hr>
&lt;h2 id="capítulo-4-a-herança-cultural--destruidores-ou-salvadores">Capítulo 4: A Herança Cultural — &amp;ldquo;Destruidores&amp;rdquo; ou &amp;ldquo;Salvadores&amp;rdquo;?
&lt;/h2>&lt;p>A preocupação de que &amp;ldquo;as tradições e a cultura do Japão serão destruídas&amp;rdquo; também difere da realidade no local.&lt;/p>
&lt;h3 id="1-os-últimos-herdeiros-do-artesanato-tradicional">1. Os &amp;ldquo;Últimos Herdeiros&amp;rdquo; do Artesanato Tradicional
&lt;/h3>&lt;p>O número de trabalhadores envolvidos na fabricação de artesanato tradicional no Japão despencou drasticamente, de cerca de 300.000 na década de 1970 para cerca de 50.000 atualmente. Quem está salvando essa cultura à beira da extinção são os estrangeiros que vieram ao Japão com profundo respeito pela cultura japonesa.&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Cervejarias de saquê e ferreiros de espadas:&lt;/strong> Estrangeiros tornam-se aprendizes em oficinas onde os japoneses quase desistiram de herdar, e ao trazerem sensibilidades novas e capacidade de divulgação para o exterior, estão revitalizando culturas à beira de fechar as portas para que se tornem &amp;ldquo;indústrias sustentáveis&amp;rdquo;.&lt;/li>
&lt;/ul>
&lt;h3 id="2-a-manutenção-de-comunidades-locais">2. A Manutenção de Comunidades Locais
&lt;/h3>&lt;p>Nos governos locais regionais que se tornaram &amp;ldquo;cidades com possibilidade de extinção&amp;rdquo; devido ao desaparecimento dos jovens, estagiários técnicos e estrangeiros com habilidades específicas estão assumindo as rédeas dos festivais locais e apoiando a base da agricultura.
Quem está cultivando as terras agrícolas abandonadas após a saída dos japoneses e protegendo eventos com centenas de anos de história? Se olharmos para essa realidade, entenderemos que eles não são os &amp;ldquo;destruidores&amp;rdquo; da cultura, mas sim a &lt;strong>&amp;ldquo;última linha de defesa&amp;rdquo;&lt;/strong> .&lt;/p>
&lt;hr>
&lt;h2 id="capítulo-5-preocupações-no-ambiente-educacional-e-a-cadeia-do-bullying">Capítulo 5: Preocupações no Ambiente Educacional e a Cadeia do &amp;ldquo;Bullying&amp;rdquo;
&lt;/h2>&lt;p>Os efeitos colaterais de trazer o termo &amp;ldquo;Japão em Primeiro Lugar&amp;rdquo; para o ambiente educacional são graves.&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Dicotomia que separa &amp;ldquo;interno e externo&amp;rdquo;:&lt;/strong> Se as crianças internalizarem o falso complexo de superioridade de que &amp;ldquo;os japoneses são uma classe privilegiada que deve ser priorizada&amp;rdquo;, isso facilmente as levará ao bullying e à exclusão daqueles que são &amp;ldquo;diferentes de nós&amp;rdquo;.&lt;/li>
&lt;li>&lt;strong>Hierarquização baseada nas raízes:&lt;/strong> Crianças que têm nacionalidade japonesa, mas aparência e nomes diferentes, são atacadas por &amp;ldquo;não serem japonesas&amp;rdquo;. Isso é o colapso da educação e um ato de ferir aqueles que liderarão o Japão no futuro.&lt;/li>
&lt;/ul>
&lt;p>Os especialistas na área educacional temem o risco de que a exclusividade que a palavra &amp;ldquo;Primeiro Lugar&amp;rdquo; carrega possa enfraquecer as habilidades de convivência multicultural das crianças e, como resultado, isolar o Japão do resto do mundo.&lt;/p>
&lt;hr>
&lt;h2 id="capítulo-6-a-tendência-global-e-a-onda-do-populismo">Capítulo 6: A Tendência Global e a Onda do Populismo
&lt;/h2>&lt;p>Este fenômeno não é exclusivo do Japão. Nos países ocidentais também tem havido uma tendência contínua onde as camadas da população que não puderam se beneficiar da globalização se voltam para o populismo que defende o &amp;ldquo;nacionalismo&amp;rdquo;.&lt;/p>
&lt;p>No entanto, o que difere o Japão decisivamente do Ocidente é o fato de que &lt;strong>&amp;ldquo;a população está encolhendo no ritmo mais rápido do mundo&amp;rdquo;&lt;/strong> . Embora outros países possam ter a opção de &amp;ldquo;restringir&amp;rdquo;, no Japão já existe uma infinidade de infraestruturas sociais que não podem ser mantidas sem &amp;ldquo;cooperação&amp;rdquo;. Insistir em um &amp;ldquo;Primeiro Lugar&amp;rdquo; emocional significa um &amp;ldquo;suicídio lento&amp;rdquo; lógico.&lt;/p>
&lt;hr>
&lt;h2 id="conclusão-o-que-é-o-verdadeiro-japão-em-primeiro-lugar">Conclusão: O que é o Verdadeiro &amp;ldquo;Japão em Primeiro Lugar&amp;rdquo;?
&lt;/h2>&lt;p>O desejo contido na expressão &amp;ldquo;Japão em Primeiro Lugar&amp;rdquo;, de &amp;ldquo;querer que a vida dos cidadãos seja considerada primeiro&amp;rdquo;, é em si o dever mais básico que um governo de uma nação deve ter.&lt;/p>
&lt;p>No entanto, o meio de realizar esse desejo não deve ser a &amp;ldquo;exclusão do próximo&amp;rdquo;. Como os dados objetivos mostram, a conveniência da nossa vida atual, a segurança pública, a cultura tradicional e até mesmo o sistema de seguridade social já estão em uma fase de &amp;ldquo;dependência e coexistência&amp;rdquo; que não pode ser sustentada sem a presença de estrangeiros.&lt;/p>
&lt;p>&lt;strong>O verdadeiro &amp;ldquo;Japão em Primeiro Lugar&amp;rdquo; não seria colocar em prática, com calma, os seguintes 3 pontos?&lt;/strong>&lt;/p>
&lt;ol>
&lt;li>&lt;strong>Discussão baseada em fatos:&lt;/strong> Não se deixar levar por boatos e informações exageradas, e compreender a realidade com base nas estatísticas primárias de órgãos do governo.&lt;/li>
&lt;li>&lt;strong>Estabelecimento de regras justas:&lt;/strong> Fazer os estrangeiros cumprirem as regras do Japão e, por outro lado, a sociedade japonesa deve tratá-los como parceiros justos.&lt;/li>
&lt;li>&lt;strong>Atualização interna:&lt;/strong> Mudar a percepção de que aceitar estrangeiros não é &amp;ldquo;perder o Japão&amp;rdquo;, mas sim, com a ajuda deles, &amp;ldquo;reconstruir e manter o Japão&amp;rdquo;.&lt;/li>
&lt;/ol>
&lt;p>Em 2026, estamos diante de uma grande encruzilhada. Continuaremos a gritar palavras de divisão e estrangular a nós mesmos? Ou vamos encarar a realidade de frente e dar o primeiro passo rumo a um &amp;ldquo;Japão sustentável&amp;rdquo; onde pessoas diversas se apoiam mutuamente?&lt;/p>
&lt;p>A resposta está na &amp;ldquo;inteligência&amp;rdquo; e na &amp;ldquo;coragem&amp;rdquo; no coração de cada indivíduo.&lt;/p></description></item><item><title>Como resolver quando você não consegue cancelar o Google One (Gemini)</title><link>http://kenji.blog/pt/p/google-one-gemini%E3%81%8C%E8%A7%A3%E7%B4%84%E3%81%A7%E3%81%8D%E3%81%AA%E3%81%84%E6%99%82%E3%81%AE%E5%AF%BE%E5%87%A6%E6%96%B9%E6%B3%95/</link><pubDate>Sat, 27 Sep 2025 10:02:59 +0900</pubDate><guid>http://kenji.blog/pt/p/google-one-gemini%E3%81%8C%E8%A7%A3%E7%B4%84%E3%81%A7%E3%81%8D%E3%81%AA%E3%81%84%E6%99%82%E3%81%AE%E5%AF%BE%E5%87%A6%E6%96%B9%E6%B3%95/</guid><description>&lt;img src="http://kenji.blog/p/google-one-gemini%E3%81%8C%E8%A7%A3%E7%B4%84%E3%81%A7%E3%81%8D%E3%81%AA%E3%81%84%E6%99%82%E3%81%AE%E5%AF%BE%E5%87%A6%E6%96%B9%E6%B3%95/img.png" alt="Featured image of post Como resolver quando você não consegue cancelar o Google One (Gemini)" />&lt;h1 id="aviso-serei-cobrado-quando-o-teste-gratuito-do-gemini-terminar-resumo-de-como-cancelar">[Aviso] Serei cobrado quando o teste gratuito do Gemini terminar? Resumo de como cancelar
&lt;/h1>&lt;p>Quando você tenta experimentar o serviço de IA do Google &amp;ldquo;Gemini&amp;rdquo;, primeiro é oferecido um &lt;strong>teste gratuito de 1 mês&lt;/strong> .
Muitas pessoas podem pensar &amp;ldquo;Se é gratuito, vou tentar por enquanto&amp;rdquo; e se registrar, mas há um ponto de atenção aqui.&lt;/p>
&lt;hr>
&lt;h2 id="o-que-acontece-quando-o-teste-gratuito-termina">O que acontece quando o teste gratuito termina?
&lt;/h2>&lt;p>Quando o período de teste termina, uma cobrança de &lt;strong>2.900 ienes por mês&lt;/strong> é feita automaticamente.
Isso está vinculado a uma assinatura chamada &amp;ldquo;Assinatura do Google One&amp;rdquo; e, se você não fizer nada em particular, o sistema fará a transição para faturamento contínuo.&lt;/p>
&lt;hr>
&lt;h2 id="se-você-cancelar-não-será-cobrado-mas">Se você cancelar, não será cobrado, mas&amp;hellip;
&lt;/h2>&lt;p>Claro, se você cancelar durante o período de teste, nenhuma taxa será gerada.
A página de explicação oficial também mostra &amp;ldquo;Como cancelar a assinatura do Google One&amp;rdquo;.&lt;/p>
&lt;p>👉 &lt;a class="link" href="https://support.google.com/googleone/answer/9056360" target="_blank" rel="noopener"
>Cancelar a assinatura do Google One (oficial)&lt;/a>&lt;/p>
&lt;p>No entanto, quando você realmente acessa, você se depara com a situação de &amp;ldquo;Por algum motivo, não consigo cancelar&amp;hellip;&amp;rdquo;.
Fiquei confuso pensando: &amp;ldquo;Ué, por onde devo cancelar?&amp;rdquo;.&lt;/p>
&lt;hr>
&lt;h2 id="o-método-de-cancelamento-correto-está-aqui">O método de cancelamento correto está aqui!
&lt;/h2>&lt;p>Após várias pesquisas, a página da qual eu consegui realmente cancelar foi a seguinte.&lt;/p>
&lt;p>👉 &lt;a class="link" href="https://myaccount.google.com/deleteservices" target="_blank" rel="noopener"
>Conta do Google – Excluir serviços&lt;/a>&lt;/p>
&lt;p>A partir daqui, se você selecionar &amp;ldquo;Google One&amp;rdquo; e excluí-lo, o cancelamento será concluído.&lt;/p>
&lt;hr>
&lt;h2 id="resumo">Resumo
&lt;/h2>&lt;ul>
&lt;li>O teste gratuito do Gemini dura 1 mês&lt;/li>
&lt;li>Após o término, uma taxa de &lt;strong>2.900 ienes por mês&lt;/strong> será cobrada automaticamente&lt;/li>
&lt;li>O cancelamento pode não ser possível pela página de explicação oficial&lt;/li>
&lt;li>Você pode realmente cancelar pela página &lt;strong>&amp;ldquo;Excluir serviços&amp;rdquo;&lt;/strong>&lt;/li>
&lt;/ul>
&lt;p>Se você pensar &amp;ldquo;Tudo bem porque é um teste gratuito&amp;rdquo;, você pode ser cobrado sem perceber, então tome cuidado!&lt;/p>
&lt;hr>
&lt;p>👉 Se você está lendo este artigo, talvez esteja tendo problemas agora, pensando: &amp;ldquo;De onde eu cancelo?&amp;rdquo;. De qualquer forma, verifique através do link acima.&lt;/p>
&lt;hr></description></item><item><title>Transmissão de Desenvolvimento de App de Cartões de Ano Novo VOL.1 (Roteiro)</title><link>http://kenji.blog/pt/p/%E5%B9%B4%E8%B3%80%E7%8A%B6%E4%BD%9C%E6%88%90%E3%82%A2%E3%83%97%E3%83%AA%E9%96%8B%E7%99%BA%E9%85%8D%E4%BF%A1-vol.1/</link><pubDate>Sun, 31 Aug 2025 20:24:49 +0900</pubDate><guid>http://kenji.blog/pt/p/%E5%B9%B4%E8%B3%80%E7%8A%B6%E4%BD%9C%E6%88%90%E3%82%A2%E3%83%97%E3%83%AA%E9%96%8B%E7%99%BA%E9%85%8D%E4%BF%A1-vol.1/</guid><description>&lt;img src="http://kenji.blog/p/%E5%B9%B4%E8%B3%80%E7%8A%B6%E4%BD%9C%E6%88%90%E3%82%A2%E3%83%97%E3%83%AA%E9%96%8B%E7%99%BA%E9%85%8D%E4%BF%A1-vol.1/img.png" alt="Featured image of post Transmissão de Desenvolvimento de App de Cartões de Ano Novo VOL.1 (Roteiro)" />&lt;h1 id="-roteiro-para-transmissão-no-youtube-desenvolvimento-de-app-de-cartões-de-ano-novo---parte-1">🎬 Roteiro para Transmissão no YouTube (Desenvolvimento de App de Cartões de Ano Novo - Parte 1)
&lt;/h1>&lt;ol start="0">
&lt;li>Início da Transmissão (Primeiros 2 a 3 minutos)&lt;/li>
&lt;/ol>
&lt;h3 id="saudação-rápida">Saudação Rápida
&lt;/h3>&lt;p>&amp;ldquo;Olá. A partir de hoje, começarei uma transmissão onde construirei de forma constante um aplicativo de criação de cartões de Ano Novo em C++.&amp;rdquo;
&amp;ldquo;Não sei quantas transmissões levarão até a conclusão, mas avançaremos pouco a pouco como uma série.&amp;rdquo;
&amp;ldquo;Basicamente, trabalharei em silêncio, então espero que possam assistir como música de fundo para o trabalho de vocês.&amp;rdquo;&lt;/p>
&lt;h3 id="visão-geral-do-app-almejado">Visão Geral do App Almejado
&lt;/h3>&lt;p>&amp;ldquo;Neste app, gostaria de possibilitar o design do verso dos cartões de Ano Novo.&amp;rdquo;
&amp;ldquo;Planejo incluir a inserção de fotos, arranjo de fontes, e edição de imagens ou geração de ilustrações usando IA, e, por fim, fazer o upload na Microsoft Store.&amp;rdquo;&lt;/p>
&lt;h3 id="objetivos-do-trabalho-de-hoje">Objetivos do Trabalho de Hoje
&lt;/h3>&lt;p>&amp;ldquo;Na primeira sessão de hoje, prepararemos o ambiente e criaremos a base.&amp;rdquo;
&amp;ldquo;Especificamente, gostaria de prosseguir com:&lt;/p>
&lt;ul>
&lt;li>Criação do repositório GIT&lt;/li>
&lt;li>Criação da janela principal&lt;/li>
&lt;li>Exibição do diálogo de informações da versão&lt;/li>
&lt;li>Criação do menu e implementação do comando de saída&lt;/li>
&lt;li>Processamento de inicialização/liberação do Direct2D e exibição de HelloWorld&lt;/li>
&lt;/ul>
&lt;p>&amp;quot;&lt;/p>
&lt;h3 id="sobre-a-publicação-do-código-fonte">Sobre a Publicação do Código-Fonte
&lt;/h3>&lt;p>&amp;ldquo;O código-fonte está publicado no GitHub. Se estiverem interessados, por favor, deem uma olhada.&amp;rdquo;
→ &lt;a class="link" href="https://github.com/kenjinote/NengaCardApp/" target="_blank" rel="noopener"
>https://github.com/kenjinote/NengaCardApp/&lt;/a>&lt;/p>
&lt;ol>
&lt;li>Parte do Trabalho (Silêncio)&lt;/li>
&lt;/ol>
&lt;p>Criação do repositório no GitHub → Commit inicial&lt;/p>
&lt;p>Criação do modelo da janela principal&lt;/p>
&lt;p>Criação do diálogo de versão, menu e implementação do comando de saída&lt;/p>
&lt;p>Processamento de inicialização e liberação do Direct2D → Confirmação de exibição do HelloWorld&lt;/p>
&lt;p>Fazer push no GitHub conforme apropriado&lt;/p>
&lt;p>※ Basicamente em silêncio, adicionando breves explicações apenas quando necessário&lt;/p>
&lt;ol start="2">
&lt;li>Antes do Fim da Transmissão (Últimos 1 a 2 minutos)&lt;/li>
&lt;/ol>
&lt;h3 id="resumo-do-progresso-de-hoje">Resumo do Progresso de Hoje
&lt;/h3>&lt;p>&amp;ldquo;Hoje, criamos o repositório GIT e implementamos a janela, botão de saída e diálogo de versão.&amp;rdquo;
&amp;ldquo;Conseguimos chegar até a exibição de HelloWorld no Direct2D.&amp;rdquo;&lt;/p>
&lt;h3 id="conexão-para-a-próxima-vez">Conexão para a Próxima Vez
&lt;/h3>&lt;p>&amp;ldquo;A partir da próxima vez, espero organizar a parte da UI e avançar para a objetificação de strings, etc.&amp;rdquo;&lt;/p>
&lt;h3 id="orientar-novamente-o-link-do-github">Orientar Novamente o Link do GitHub
&lt;/h3>&lt;p>→ &lt;a class="link" href="https://github.com/kenjinote/NengaCardApp/" target="_blank" rel="noopener"
>https://github.com/kenjinote/NengaCardApp/&lt;/a>&lt;/p>
&lt;h3 id="encerramento">Encerramento
&lt;/h3>&lt;p>&amp;ldquo;Obrigado por assistir. Continuarei de forma constante da próxima vez, então conto com vocês.&amp;rdquo;&lt;/p></description></item><item><title>Tornar possível instalar o msix com um certificado autoassinado</title><link>http://kenji.blog/pt/p/msix%E3%81%AB%E8%87%AA%E5%B7%B1%E8%A8%BC%E6%98%8E%E6%9B%B8%E3%82%92%E3%81%A4%E3%81%91%E3%81%A6%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB%E3%81%A7%E3%81%8D%E3%82%8B%E3%82%88%E3%81%86%E3%81%AB%E3%81%99%E3%82%8B/</link><pubDate>Sat, 30 Aug 2025 04:18:04 +0900</pubDate><guid>http://kenji.blog/pt/p/msix%E3%81%AB%E8%87%AA%E5%B7%B1%E8%A8%BC%E6%98%8E%E6%9B%B8%E3%82%92%E3%81%A4%E3%81%91%E3%81%A6%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB%E3%81%A7%E3%81%8D%E3%82%8B%E3%82%88%E3%81%86%E3%81%AB%E3%81%99%E3%82%8B/</guid><description>&lt;img src="http://kenji.blog/p/msix%E3%81%AB%E8%87%AA%E5%B7%B1%E8%A8%BC%E6%98%8E%E6%9B%B8%E3%82%92%E3%81%A4%E3%81%91%E3%81%A6%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB%E3%81%A7%E3%81%8D%E3%82%8B%E3%82%88%E3%81%86%E3%81%AB%E3%81%99%E3%82%8B/img.png" alt="Featured image of post Tornar possível instalar o msix com um certificado autoassinado" />&lt;h1 id="tornar-possível-instalar-o-msix-com-um-certificado-autoassinado">Tornar possível instalar o msix com um certificado autoassinado
&lt;/h1>&lt;p>Ao distribuir aplicativos no Windows, usar um &lt;strong>pacote MSIX&lt;/strong> é conveniente porque unifica os mecanismos de instalação e atualização. No entanto, o MSIX tem a restrição de que &amp;ldquo;um certificado assinado é sempre necessário&amp;rdquo;.
Quando você deseja distribuir para teste um aplicativo desenvolvido por uma empresa ou indivíduo, pode haver situações em que &amp;ldquo;comprar um certificado de assinatura de código comercial é um exagero&amp;rdquo;.&lt;/p>
&lt;p>É aí que um &lt;strong>certificado autoassinado (Self-Signed Certificate)&lt;/strong> é útil. Neste artigo, resumiremos as etapas para adicionar um certificado autoassinado ao MSIX e permitir que ele seja instalado em um ambiente local.&lt;/p>
&lt;hr>
&lt;h2 id="1-criar-um-certificado-autoassinado">1. Criar um certificado autoassinado
&lt;/h2>&lt;p>Primeiro, inicie o PowerShell no modo de administrador e execute o seguinte comando.&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-powershell" data-lang="powershell">&lt;span class="line">&lt;span class="cl">&lt;span class="p">//&lt;/span> &lt;span class="n">Criar&lt;/span> &lt;span class="n">certificado&lt;/span> &lt;span class="n">autoassinado&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nb">New-SelfSignedCertificate&lt;/span> &lt;span class="n">-Type&lt;/span> &lt;span class="n">CodeSigningCert&lt;/span> &lt;span class="n">-Subject&lt;/span> &lt;span class="s2">&amp;#34;CN=035A9AAC-915B-4CE1-AE39-1A101BED42F5&amp;#34;&lt;/span> &lt;span class="n">-CertStoreLocation&lt;/span> &lt;span class="n">Cert&lt;/span>&lt;span class="err">:&lt;/span>&lt;span class="p">\&lt;/span>&lt;span class="n">CurrentUser&lt;/span>&lt;span class="p">\&lt;/span>&lt;span class="n">My&lt;/span> &lt;span class="n">-NotAfter&lt;/span> &lt;span class="p">(&lt;/span>&lt;span class="nb">Get-Date&lt;/span>&lt;span class="p">).&lt;/span>&lt;span class="py">AddYears&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="mf">10&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="n">-KeyUsage&lt;/span> &lt;span class="n">DigitalSignature&lt;/span> &lt;span class="n">-FriendlyName&lt;/span> &lt;span class="s2">&amp;#34;kenjinote&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>O que é criado aqui é um certificado para &amp;ldquo;assinatura de código&amp;rdquo;.&lt;/p>
&lt;ul>
&lt;li>Dar a ele um nome fácil de entender com &lt;code>-FriendlyName&lt;/code> facilita a localização posterior.&lt;/li>
&lt;li>Você pode ajustar a data de expiração com &lt;code>-NotAfter&lt;/code>. Desta vez, está definido para 10 anos.&lt;/li>
&lt;/ul>
&lt;hr>
&lt;h2 id="2-exportar-o-arquivo-pfx">2. Exportar o arquivo PFX
&lt;/h2>&lt;p>Exporte o certificado criado no formato PFX para que possa ser usado com &lt;code>signtool&lt;/code>.&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;span class="lnt">4
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-powershell" data-lang="powershell">&lt;span class="line">&lt;span class="cl">&lt;span class="p">//&lt;/span> &lt;span class="n">Criar&lt;/span> &lt;span class="n">pfx&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nv">$cert&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="nb">Get-ChildItem&lt;/span> &lt;span class="n">Cert&lt;/span>&lt;span class="err">:&lt;/span>&lt;span class="p">\&lt;/span>&lt;span class="n">CurrentUser&lt;/span>&lt;span class="p">\&lt;/span>&lt;span class="n">My&lt;/span> &lt;span class="p">|&lt;/span> &lt;span class="nb">Where-Object&lt;/span> &lt;span class="p">{&lt;/span> &lt;span class="nv">$_&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="py">FriendlyName&lt;/span> &lt;span class="o">-eq&lt;/span> &lt;span class="s2">&amp;#34;kenjinote&amp;#34;&lt;/span> &lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nv">$password&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="nb">ConvertTo-SecureString&lt;/span> &lt;span class="n">-String&lt;/span> &lt;span class="s2">&amp;#34;password&amp;#34;&lt;/span> &lt;span class="n">-Force&lt;/span> &lt;span class="n">-AsPlainText&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nb">Export-PfxCertificate&lt;/span> &lt;span class="n">-Cert&lt;/span> &lt;span class="nv">$cert&lt;/span> &lt;span class="n">-FilePath&lt;/span> &lt;span class="s2">&amp;#34;D:\pfx\cert.pfx&amp;#34;&lt;/span> &lt;span class="n">-Password&lt;/span> &lt;span class="nv">$password&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>A senha definida neste momento (no exemplo, &lt;code>password&lt;/code>) será necessária para a operação de assinatura posterior.&lt;/p>
&lt;hr>
&lt;h2 id="3-instalar-o-certificado-autoassinado-em-autoridades-de-certificação-raiz-confiáveis">3. Instalar o certificado autoassinado em Autoridades de Certificação Raiz Confiáveis
&lt;/h2>&lt;p>O certificado criado não é confiável para o Windows como está. Para instá-lo, você precisa importá-lo de &lt;code>certmgr.msc&lt;/code> para &lt;strong>[Autoridades de Certificação Raiz Confiáveis] -&amp;gt; [Certificados]&lt;/strong> .&lt;/p>
&lt;p>Se você importar o certificado exportado ( &lt;code>.cer&lt;/code> ou &lt;code>.pfx&lt;/code> ), ele será tratado como um certificado confiável no PC de destino.
Isso evita que o aviso de &amp;ldquo;certificado não confiável&amp;rdquo; apareça mesmo se você assinar o MSIX.&lt;/p>
&lt;hr>
&lt;h2 id="4-assinar-o-instalador-msix">4. Assinar o instalador (MSIX)
&lt;/h2>&lt;p>Finalmente, use o certificado PFX criado para assinar o MSIX. O &lt;code>signtool&lt;/code> está incluído no Visual Studio e no Windows SDK.&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-powershell" data-lang="powershell">&lt;span class="line">&lt;span class="cl">&lt;span class="p">//&lt;/span> &lt;span class="n">Assinar&lt;/span> &lt;span class="n">o&lt;/span> &lt;span class="n">instalador&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">signtool&lt;/span> &lt;span class="n">sign&lt;/span> &lt;span class="p">/&lt;/span>&lt;span class="n">fd&lt;/span> &lt;span class="n">SHA256&lt;/span> &lt;span class="p">/&lt;/span>&lt;span class="n">f&lt;/span> &lt;span class="s2">&amp;#34;D:\pfx\cert.pfx&amp;#34;&lt;/span> &lt;span class="p">/&lt;/span>&lt;span class="n">p&lt;/span> &lt;span class="s2">&amp;#34;password&amp;#34;&lt;/span> &lt;span class="s2">&amp;#34;C:\installer\installer.msix&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;ul>
&lt;li>&lt;code>/fd SHA256&lt;/code> especifica o algoritmo de assinatura.&lt;/li>
&lt;li>Especifique o arquivo PFX com &lt;code>/f&lt;/code> e passe a senha com &lt;code>/p&lt;/code>.&lt;/li>
&lt;li>Finalmente, especifique o caminho para o arquivo MSIX.&lt;/li>
&lt;li>Se o caminho para signtool não estiver definido, especifique o caminho completo. No meu ambiente, ele estava localizado no seguinte local.&lt;/li>
&lt;/ul>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-gdscript3" data-lang="gdscript3">&lt;span class="line">&lt;span class="cl">&lt;span class="s2">&amp;#34;C:\Program Files (x86)\Microsoft Visual Studio\Shared\NuGetPackages\microsoft.windows.sdk.buildtools&lt;/span>&lt;span class="se">\10&lt;/span>&lt;span class="s2">.0.26100.1742&lt;/span>&lt;span class="se">\b&lt;/span>&lt;span class="s2">in&lt;/span>&lt;span class="se">\10&lt;/span>&lt;span class="s2">.0.26100.0&lt;/span>&lt;span class="se">\x64&lt;/span>&lt;span class="s2">\signtool.exe&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>Isso conclui a assinatura e completa um MSIX que pode ser instalado no PC de destino.&lt;/p>
&lt;hr>
&lt;h2 id="resumo">Resumo
&lt;/h2>&lt;ul>
&lt;li>Crie um certificado autoassinado com &lt;strong>New-SelfSignedCertificate&lt;/strong>&lt;/li>
&lt;li>Exporte o PFX com &lt;strong>Export-PfxCertificate&lt;/strong>&lt;/li>
&lt;li>Instale o certificado nas &lt;strong>Autoridades de Certificação Raiz Confiáveis&lt;/strong>&lt;/li>
&lt;li>Assine o MSIX com &lt;strong>signtool&lt;/strong>&lt;/li>
&lt;/ul>
&lt;p>Ao seguir este fluxo, você pode verificar a operação e distribuir para teste no ambiente local sem comprar um certificado comercial.
Claro, um certificado emitido por uma autoridade de certificação é essencial para distribuição comercial real, mas esse método é muito conveniente nos estágios de desenvolvimento e verificação.&lt;/p>
&lt;hr>
&lt;p>👉 Desta vez, usamos installer.msix como exemplo, mas você pode aplicar o mesmo procedimento ao seu próprio aplicativo.&lt;/p>
&lt;hr></description></item><item><title>A História Secreta do Desenvolvimento do LogicPad</title><link>http://kenji.blog/pt/p/logicpad-%E9%96%8B%E7%99%BA%E7%A7%98%E8%A9%B1/</link><pubDate>Wed, 30 Jul 2025 23:51:35 +0900</pubDate><guid>http://kenji.blog/pt/p/logicpad-%E9%96%8B%E7%99%BA%E7%A7%98%E8%A9%B1/</guid><description>&lt;img src="http://kenji.blog/p/logicpad-%E9%96%8B%E7%99%BA%E7%A7%98%E8%A9%B1/img.png" alt="Featured image of post A História Secreta do Desenvolvimento do LogicPad" />&lt;h1 id="uma-ferramenta-para-pessoas-que-não-sabem-escrever-código-mas-têm-lógica-o-motivo-pelo-qual-criei-o-logicpad">Uma ferramenta para &amp;ldquo;Pessoas que não sabem escrever código, mas têm lógica&amp;rdquo;. O motivo pelo qual criei o LogicPad
&lt;/h1>&lt;p>Olá, sou kenji. Sou o criador da ferramenta low-code &amp;quot; &lt;a class="link" href="https://logicpad.org" target="_blank" rel="noopener"
>LogicPad&lt;/a> &amp;ldquo;.
Desta vez, não é uma introdução ao produto, mas gostaria de escrever sobre os bastidores do desenvolvimento, &amp;ldquo;Por que decidi criar isso?&amp;rdquo;, e meus próprios pensamentos a partir de uma perspectiva um pouco pessoal.&lt;/p>
&lt;p>Honestamente, isso não foi apenas um desenvolvimento de ferramenta.
Meu passado, as frustrações no trabalho, meu conjunto de habilidades e o desejo ardente de &amp;ldquo;um dia criar meu próprio produto&amp;rdquo; —
O LogicPad nasceu do resultado da sobreposição de tudo isso.&lt;/p>
&lt;p>Em outras palavras, &lt;strong>este é o &amp;ldquo;projeto culminante da minha vida&amp;rdquo;&lt;/strong> para mim.
Escreverei esse pano de fundo da forma mais honesta e apaixonada possível.&lt;/p>
&lt;hr>
&lt;h2 id="eu-queria-um-produto-que-eu-pudesse-dizer-francamente-e-com-orgulho-fui-eu-que-fiz">Eu queria um produto que eu pudesse dizer francamente e com orgulho: &amp;ldquo;Fui eu que fiz&amp;rdquo;
&lt;/h2>&lt;p>Sendo sincero, essa foi minha primeira motivação.&lt;/p>
&lt;p>Sempre gostei de escrever código, tanto no trabalho quanto como hobby. Também estive envolvido em vários desenvolvimentos.
Mas, um dia, de repente percebi.
&lt;strong>&amp;ldquo;Não tenho nenhum produto que lancei no mundo sob o meu nome, sob a minha responsabilidade.&amp;rdquo;&lt;/strong>&lt;/p>
&lt;p>Claro, há valor no que criamos em equipe, e havia muito trabalho do qual me orgulhar.
Mas em algum lugar havia uma sensação de vazio, &amp;ldquo;Vou terminar minha carreira sob o nome de outra pessoa assim?&amp;rdquo;.&lt;/p>
&lt;p>Apenas uma vez seria suficiente.
&lt;strong>Quero deixar algo que eu possa dizer com orgulho: &amp;ldquo;Fui eu que fiz&amp;rdquo;.&lt;/strong>
Com isso em mente, comecei a elaborar o conceito do LogicPad. Isso foi há cerca de 6 anos (por volta de 2019).
(A ideia original em si foi por volta de 2015, quando conheci o Blueprint, a linguagem de programação visual da Unreal Engine.)&lt;/p>
&lt;h2 id="blueprintimg_1png">&lt;img src="http://kenji.blog/p/logicpad-%E9%96%8B%E7%99%BA%E7%A7%98%E8%A9%B1/img_1.png"
width="637"
height="285"
srcset="http://kenji.blog/p/logicpad-%E9%96%8B%E7%99%BA%E7%A7%98%E8%A9%B1/img_1_hu70d4fd9be2cc84fc55cb45a83c67cc8a_54446_480x0_resize_box_3.png 480w, http://kenji.blog/p/logicpad-%E9%96%8B%E7%99%BA%E7%A7%98%E8%A9%B1/img_1_hu70d4fd9be2cc84fc55cb45a83c67cc8a_54446_1024x0_resize_box_3.png 1024w"
loading="lazy"
alt="Blueprint"
class="gallery-image"
data-flex-grow="223"
data-flex-basis="536px"
>
&lt;/h2>&lt;h2 id="não-consigo-colocar-as-mãos-porque-não-sei-escrever-código-isso-não-é-um-desperdício">Não consigo colocar as mãos porque não sei escrever código. Isso não é um desperdício?
&lt;/h2>&lt;p>Havia muitas pessoas excelentes no meu local de trabalho.&lt;/p>
&lt;p>Eles podem construir a lógica. Dominam as funções do Excel e conseguem ver a essência do problema.
Mas — no estágio de &amp;ldquo;escrever código&amp;rdquo;, suas mãos param.&lt;/p>
&lt;p>&amp;ldquo;Eu faço essa tarefa toda vez olhando o manual de procedimentos, mas não tem como automatizar?&amp;rdquo;
&amp;ldquo;Sim, é possível. Mas&amp;hellip; para isso você tem que escrever código&amp;hellip;&amp;rdquo;&lt;/p>
&lt;p>Tivemos conversas como essa muitas vezes.&lt;/p>
&lt;p>Toda vez eu pensava:
&lt;strong>&amp;ldquo;É um grande desperdício parar na parede do código quando você entende a lógica.&amp;rdquo;&lt;/strong>&lt;/p>
&lt;hr>
&lt;h2 id="a-opção-de-um-editor-low-code">A opção de um editor low-code
&lt;/h2>&lt;p>Na verdade, no meu trabalho anterior, eu estava desenvolvendo um CAD 2D operado por GUI.
Com CAD, você usa o mouse para montar formas, certo?
Em outras palavras, é um mundo de &lt;strong>&amp;ldquo;construir a lógica através da operação&amp;rdquo;&lt;/strong> .&lt;/p>
&lt;p>Pensei: &amp;ldquo;Isso é super compatível com low-code&amp;rdquo;.&lt;/p>
&lt;p>Voltando ainda mais no tempo, desde a época de estudante, sempre escrevi código e produzi em massa pequenos programas assim que tive uma ideia, como processamento de imagem, processamento numérico, ferramentas do Windows e ferramentas de postagem automática em SNS.
Acho que existem mais de 600. Eles ainda estão no meu GitHub hoje.&lt;/p>
&lt;p>Naquela época, eu não pensava no significado.
Apenas &amp;ldquo;Eu faço porque quero fazer&amp;rdquo;. Era só isso.&lt;/p>
&lt;p>Mas agora, enquanto construo o LogicPad&amp;hellip;&lt;/p>
&lt;p>&lt;strong>Senti que os pontos estavam finalmente conectados por uma linha.&lt;/strong>&lt;/p>
&lt;hr>
&lt;h2 id="fácil-de-usar-mas-poderoso-a-dificuldade-do-equilíbrio">Fácil de usar, mas poderoso. A dificuldade do equilíbrio
&lt;/h2>&lt;p>O que sempre pensei ao avançar no desenvolvimento foi
&lt;strong>&amp;ldquo;Torná-lo uma ferramenta que seja intuitiva de usar, e ainda assim forte e capaz.&amp;rdquo;&lt;/strong>&lt;/p>
&lt;p>Se você adicionar funções, o que você pode fazer aumenta. Mas torna-se mais difícil de usar.
Se você simplificar, qualquer um pode tocar. Mas então haverá pessoas que se sentirão insatisfeitas.&lt;/p>
&lt;p>Para não nos dizerem: &amp;ldquo;Ferramentas low-code são brinquedos, não são?&amp;rdquo;.
Mas também não quero que digam: &amp;ldquo;No final, não adianta se você não escrever código&amp;rdquo;.&lt;/p>
&lt;p>&lt;strong>Eu estava sempre lutando na linha tênue entre intuição e expressividade.&lt;/strong>&lt;/p>
&lt;p>Eu reconstruí a interface do usuário muitas e muitas vezes, a descartei muitas e muitas vezes,
E quando finalmente me aproximei de uma forma em que pensei &amp;ldquo;Isso vai funcionar&amp;rdquo;, fiquei muito feliz.&lt;/p>
&lt;hr>
&lt;h2 id="fui-salvo-pelas-palavras-da-minha-primeira-usuária">Fui salvo pelas palavras da minha primeira &amp;ldquo;usuária&amp;rdquo;
&lt;/h2>&lt;p>A primeira vez que entreguei o LogicPad foi para uma ex-colega.
Ela não é boa em TI e tem medo de código. Mas é boa em lógica.&lt;/p>
&lt;p>Depois de explicar um pouco e deixá-la tocar&amp;hellip; Não consigo esquecer as palavras que ela disse alguns minutos depois.&lt;/p>
&lt;blockquote>
&lt;p>&lt;strong>&amp;ldquo;Com isso, até eu acho que consigo fazer!&amp;rdquo;&lt;/strong>&lt;/p>
&lt;/blockquote>
&lt;p>Nesse momento, quase chorei.
Isso era o que eu queria dar a ela.&lt;/p>
&lt;p>Não uma ferramenta que funciona, mas a &lt;strong>sensação de &amp;ldquo;Eu mesma consegui construir!&amp;rdquo;&lt;/strong> .
Tive certeza de que esse era o verdadeiro valor do LogicPad.&lt;/p>
&lt;hr>
&lt;h2 id="quando-o-número-de-pessoas-que-podem-construir-aumenta-a-sociedade-se-torna-muito-mais-interessante">Quando o número de pessoas que podem construir aumenta, a sociedade se torna muito mais interessante
&lt;/h2>&lt;p>Eu acho que a &amp;ldquo;democratização da tecnologia&amp;rdquo; é realmente importante.&lt;/p>
&lt;p>A tecnologia tem o poder de mudar o mundo.
Mas as pessoas que podem lidar com isso são limitadas.&lt;/p>
&lt;p>E se você pudesse construir um aplicativo apenas &amp;ldquo;entendendo a lógica&amp;rdquo;?&lt;/p>
&lt;p>&lt;strong>Mais pessoas poderão estar no &amp;ldquo;lado da criação&amp;rdquo;.&lt;/strong>
E acho que o que nascerá a partir daí superará a nossa imaginação atual.&lt;/p>
&lt;p>Se o LogicPad pudesse se tornar essa porta de entrada.
Eu quero que seja uma ferramenta que transforme &amp;ldquo;quero construir&amp;rdquo; em &amp;ldquo;posso construir&amp;rdquo;.&lt;/p>
&lt;p>Esse é o meu desejo.&lt;/p>
&lt;hr>
&lt;h2 id="conclusão">Conclusão
&lt;/h2>&lt;p>O LogicPad ainda está na versão beta e não está concluído.
Ainda há montanhas de coisas a melhorar e coisas que quero fazer.&lt;/p>
&lt;p>Mas, estou &lt;strong>colocando todos os &amp;ldquo;pontos&amp;rdquo; da minha vida nesta ferramenta.&lt;/strong>
Agora posso dizer com orgulho:&lt;/p>
&lt;p>&lt;strong>&amp;ldquo;Este é o produto que eu criei.&amp;rdquo;&lt;/strong>&lt;/p>
&lt;hr>
&lt;h3 id="-bônus-o-que-você-pode-fazer-com-o-logicpad">👇 Bônus: O que você pode fazer com o LogicPad
&lt;/h3>&lt;ul>
&lt;li>Construir processos com arrastar e soltar&lt;/li>
&lt;li>Ramificações condicionais e variáveis também podem ser tratadas na GUI&lt;/li>
&lt;li>Vários nós de integração de IA estão disponíveis&lt;/li>
&lt;li>Expansão para usuários avançados também é possível através da inserção de scripts&lt;/li>
&lt;li>Funções matemáticas e processamento de dados de alta precisão (como cálculos numéricos com precisão de dígitos infinitos)&lt;/li>
&lt;li>Uma riqueza de teclas de atalho para usuários avançados&lt;/li>
&lt;li>Suporta idiomas em mais de 90 países&lt;/li>
&lt;/ul>
&lt;hr>
&lt;h3 id="o-que-quero-fazer-a-partir-de-agora">O que quero fazer a partir de agora
&lt;/h3>&lt;ul>
&lt;li>Gerar lógica a partir de linguagem natural em colaboração com IA&lt;/li>
&lt;li>Um mecanismo que permite aos usuários criar nós personalizados&lt;/li>
&lt;li>Construir uma plataforma onde nós criados e lógicas possam ser compartilhados&lt;/li>
&lt;/ul>
&lt;hr>
&lt;h2 id="-pós-escrito">✍️ Pós-escrito
&lt;/h2>&lt;p>Muito obrigado por ler até aqui.
Isso não foi apenas um desenvolvimento de ferramenta, mas um desafio em que coloquei minha própria experiência, paixão e fragmentos da minha vida.&lt;/p>
&lt;p>&amp;ldquo;Não consigo escrever código, mas tenho lógica.&amp;rdquo;
Um futuro onde essas pessoas possam &lt;strong>&amp;ldquo;construir&amp;rdquo;&lt;/strong> com o seu próprio poder.
Eu gostaria de continuar almejando isso através do LogicPad.&lt;/p>
&lt;p>Ficaria muito feliz se você pensasse mesmo que um pouco &amp;ldquo;Quero usar isso&amp;rdquo;.
Se você se interessou, experimente o &lt;a class="link" href="https://logicpad.org" target="_blank" rel="noopener"
>LogicPad&lt;/a>.&lt;/p>
&lt;p>E se você tiver quaisquer pensamentos ou coisas que notou depois de usá-lo, por menor que seja, não importa.
Sua voz será um grande poder para dar o próximo passo deste produto.&lt;/p>
&lt;p>Obrigado pelo seu apoio contínuo.&lt;/p></description></item><item><title>Como remover em lote metadados (informações pessoais) do Excel, Word, etc. usando o PowerShell</title><link>http://kenji.blog/pt/p/como-remover-metadados-informa%C3%A7%C3%B5es-pessoais-do-excel-com-o-powershell/</link><pubDate>Wed, 30 Jul 2025 02:42:40 +0900</pubDate><guid>http://kenji.blog/pt/p/como-remover-metadados-informa%C3%A7%C3%B5es-pessoais-do-excel-com-o-powershell/</guid><description>&lt;img src="http://kenji.blog/p/powershell-%E3%81%A7-excel-%E3%81%AE%E3%83%A1%E3%82%BF%E3%83%87%E3%83%BC%E3%82%BF%E5%80%8B%E4%BA%BA%E6%83%85%E5%A0%B1%E3%82%92%E5%89%8A%E9%99%A4%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95/powershell_metadata_eyecatch_1788588033601.jpg" alt="Featured image of post Como remover em lote metadados (informações pessoais) do Excel, Word, etc. usando o PowerShell" />&lt;h1 id="como-remover-em-lote-metadados-informações-pessoais-do-excel-word-etc-usando-o-powershell">&amp;ldquo;Como remover em lote metadados (informações pessoais) do Excel, Word, etc. usando o PowerShell&amp;rdquo;
&lt;/h1>&lt;p>Arquivos do Office como o Excel salvam automaticamente &amp;ldquo;metadados (informações pessoais)&amp;rdquo;, como o criador, a última pessoa a modificar e o nome da empresa. Há muitos casos em que você deseja remover essas informações, como ao compartilhar um arquivo fora da empresa.&lt;/p>
&lt;p>Neste artigo, explicaremos em detalhes como remover os metadados do Excel usando o PowerShell, focando em ** processamento em lote em uma pasta ** e ** aplicação a outros arquivos do Office, como Word e PowerPoint ** .&lt;/p>
&lt;hr>
&lt;h2 id="1-remover-os-metadados-de-um-único-arquivo-do-excel">1. Remover os metadados de um único arquivo do Excel
&lt;/h2>&lt;p>Este é o script mais básico para remover informações pessoais de um único arquivo do Excel. Ele chama o objeto COM do Excel, define a propriedade &lt;code>RemovePersonalInformation&lt;/code> como &lt;code>$true&lt;/code> e salva sobrescrevendo o arquivo.&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt"> 1
&lt;/span>&lt;span class="lnt"> 2
&lt;/span>&lt;span class="lnt"> 3
&lt;/span>&lt;span class="lnt"> 4
&lt;/span>&lt;span class="lnt"> 5
&lt;/span>&lt;span class="lnt"> 6
&lt;/span>&lt;span class="lnt"> 7
&lt;/span>&lt;span class="lnt"> 8
&lt;/span>&lt;span class="lnt"> 9
&lt;/span>&lt;span class="lnt">10
&lt;/span>&lt;span class="lnt">11
&lt;/span>&lt;span class="lnt">12
&lt;/span>&lt;span class="lnt">13
&lt;/span>&lt;span class="lnt">14
&lt;/span>&lt;span class="lnt">15
&lt;/span>&lt;span class="lnt">16
&lt;/span>&lt;span class="lnt">17
&lt;/span>&lt;span class="lnt">18
&lt;/span>&lt;span class="lnt">19
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-powershell" data-lang="powershell">&lt;span class="line">&lt;span class="cl">&lt;span class="c"># Iniciar o aplicativo Excel de forma oculta&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nv">$excel&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="nb">New-Object&lt;/span> &lt;span class="n">-ComObject&lt;/span> &lt;span class="n">Excel&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="py">Application&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nv">$excel&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="py">Visible&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="vm">$false&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nv">$excel&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="py">DisplayAlerts&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="vm">$false&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c"># Abrir o arquivo (*especifique o caminho absoluto)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nv">$filePath&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="s2">&amp;#34;C:\Path\To\Your\File.xlsx&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nv">$wb&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="nv">$excel&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="py">Workbooks&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="py">Open&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="nv">$filePath&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c"># Ativar a configuração para remover metadados (informações pessoais)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nv">$wb&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="py">RemovePersonalInformation&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="vm">$true&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c"># Salvar e fechar&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nv">$wb&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="py">Save&lt;/span>&lt;span class="p">()&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nv">$wb&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="py">Close&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="vm">$false&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c"># Sair do Excel e liberar memória&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nv">$excel&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="py">Quit&lt;/span>&lt;span class="p">()&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">[&lt;/span>&lt;span class="no">System.Runtime.Interopservices.Marshal&lt;/span>&lt;span class="p">]::&lt;/span>&lt;span class="n">ReleaseComObject&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="nv">$excel&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="p">|&lt;/span> &lt;span class="nb">Out-Null&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;blockquote>
&lt;p>** Atenção: ** Certifique-se de especificar o ** caminho absoluto (caminho completo) ** para o caminho passado para &lt;code>Workbooks.Open()&lt;/code>. Um caminho relativo pode resultar em erro.&lt;/p>
&lt;/blockquote>
&lt;hr>
&lt;h2 id="2-processar-todos-os-arquivos-do-excel-em-uma-pasta-em-lote">2. Processar todos os arquivos do Excel em uma pasta em lote
&lt;/h2>&lt;p>Na prática, muitas vezes você deseja &amp;ldquo;excluir todos os metadados de dezenas de arquivos do Excel em uma pasta específica de uma vez&amp;rdquo;. Isso pode ser feito usando um loop em combinação com &lt;code>Get-ChildItem&lt;/code>.&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt"> 1
&lt;/span>&lt;span class="lnt"> 2
&lt;/span>&lt;span class="lnt"> 3
&lt;/span>&lt;span class="lnt"> 4
&lt;/span>&lt;span class="lnt"> 5
&lt;/span>&lt;span class="lnt"> 6
&lt;/span>&lt;span class="lnt"> 7
&lt;/span>&lt;span class="lnt"> 8
&lt;/span>&lt;span class="lnt"> 9
&lt;/span>&lt;span class="lnt">10
&lt;/span>&lt;span class="lnt">11
&lt;/span>&lt;span class="lnt">12
&lt;/span>&lt;span class="lnt">13
&lt;/span>&lt;span class="lnt">14
&lt;/span>&lt;span class="lnt">15
&lt;/span>&lt;span class="lnt">16
&lt;/span>&lt;span class="lnt">17
&lt;/span>&lt;span class="lnt">18
&lt;/span>&lt;span class="lnt">19
&lt;/span>&lt;span class="lnt">20
&lt;/span>&lt;span class="lnt">21
&lt;/span>&lt;span class="lnt">22
&lt;/span>&lt;span class="lnt">23
&lt;/span>&lt;span class="lnt">24
&lt;/span>&lt;span class="lnt">25
&lt;/span>&lt;span class="lnt">26
&lt;/span>&lt;span class="lnt">27
&lt;/span>&lt;span class="lnt">28
&lt;/span>&lt;span class="lnt">29
&lt;/span>&lt;span class="lnt">30
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-powershell" data-lang="powershell">&lt;span class="line">&lt;span class="cl">&lt;span class="nv">$targetFolder&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="s2">&amp;#34;C:\Path\To\Your\Folder&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c"># Obter todos os arquivos .xlsx e .xls na pasta&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nv">$excelFiles&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="nb">Get-ChildItem&lt;/span> &lt;span class="n">-Path&lt;/span> &lt;span class="nv">$targetFolder&lt;/span> &lt;span class="n">-Include&lt;/span> &lt;span class="s2">&amp;#34;*.xlsx&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="s2">&amp;#34;*.xls&amp;#34;&lt;/span> &lt;span class="n">-Recurse&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="k">if&lt;/span> &lt;span class="p">(&lt;/span>&lt;span class="nv">$excelFiles&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="py">Count&lt;/span> &lt;span class="o">-eq&lt;/span> &lt;span class="mf">0&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nb">Write-Host&lt;/span> &lt;span class="s2">&amp;#34;Nenhum arquivo do Excel encontrado.&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">exit&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nv">$excel&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="nb">New-Object&lt;/span> &lt;span class="n">-ComObject&lt;/span> &lt;span class="n">Excel&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="py">Application&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nv">$excel&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="py">Visible&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="vm">$false&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nv">$excel&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="py">DisplayAlerts&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="vm">$false&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="k">foreach&lt;/span> &lt;span class="p">(&lt;/span>&lt;span class="nv">$file&lt;/span> &lt;span class="k">in&lt;/span> &lt;span class="nv">$excelFiles&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nb">Write-Host&lt;/span> &lt;span class="s2">&amp;#34;Removendo metadados de &lt;/span>&lt;span class="p">$(&lt;/span>&lt;span class="nv">$file&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">Name&lt;/span>&lt;span class="p">)&lt;/span>&lt;span class="s2">...&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c"># Abrir o arquivo&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nv">$wb&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="nv">$excel&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="py">Workbooks&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="py">Open&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="nv">$file&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">FullName&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c"># Remover metadados e salvar&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nv">$wb&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="py">RemovePersonalInformation&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="vm">$true&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nv">$wb&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="py">Save&lt;/span>&lt;span class="p">()&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nv">$wb&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="py">Close&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="vm">$false&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nv">$excel&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="py">Quit&lt;/span>&lt;span class="p">()&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">[&lt;/span>&lt;span class="no">System.Runtime.Interopservices.Marshal&lt;/span>&lt;span class="p">]::&lt;/span>&lt;span class="n">ReleaseComObject&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="nv">$excel&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="p">|&lt;/span> &lt;span class="nb">Out-Null&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nb">Write-Host&lt;/span> &lt;span class="s2">&amp;#34;Todo o processamento foi concluído!&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;hr>
&lt;h2 id="3-remover-metadados-de-outros-arquivos-do-office-word--powerpoint">3. Remover metadados de outros arquivos do Office (Word / PowerPoint)
&lt;/h2>&lt;p>Os metadados podem ser removidos com exatamente a mesma lógica não apenas no Excel, mas também no Word e no PowerPoint. Apenas o nome do objeto COM a ser chamado é diferente, e é comum que a propriedade &lt;code>RemovePersonalInformation&lt;/code> seja fornecida.&lt;/p>
&lt;h3 id="para-o-word">Para o Word
&lt;/h3>&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt"> 1
&lt;/span>&lt;span class="lnt"> 2
&lt;/span>&lt;span class="lnt"> 3
&lt;/span>&lt;span class="lnt"> 4
&lt;/span>&lt;span class="lnt"> 5
&lt;/span>&lt;span class="lnt"> 6
&lt;/span>&lt;span class="lnt"> 7
&lt;/span>&lt;span class="lnt"> 8
&lt;/span>&lt;span class="lnt"> 9
&lt;/span>&lt;span class="lnt">10
&lt;/span>&lt;span class="lnt">11
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-powershell" data-lang="powershell">&lt;span class="line">&lt;span class="cl">&lt;span class="nv">$word&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="nb">New-Object&lt;/span> &lt;span class="n">-ComObject&lt;/span> &lt;span class="n">Word&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="py">Application&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nv">$word&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="py">Visible&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="vm">$false&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nv">$word&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="py">DisplayAlerts&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="mf">0&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nv">$doc&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="nv">$word&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="py">Documents&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="py">Open&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s2">&amp;#34;C:\Path\To\Your\File.docx&amp;#34;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nv">$doc&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="py">RemovePersonalInformation&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="vm">$true&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nv">$doc&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="py">Save&lt;/span>&lt;span class="p">()&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nv">$doc&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="py">Close&lt;/span>&lt;span class="p">()&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nv">$word&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="py">Quit&lt;/span>&lt;span class="p">()&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">[&lt;/span>&lt;span class="no">System.Runtime.Interopservices.Marshal&lt;/span>&lt;span class="p">]::&lt;/span>&lt;span class="n">ReleaseComObject&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="nv">$word&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="p">|&lt;/span> &lt;span class="nb">Out-Null&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h3 id="para-o-powerpoint">Para o PowerPoint
&lt;/h3>&lt;p>Para o PowerPoint, a configuração da propriedade &lt;code>RemovePersonalInformation&lt;/code> é semelhante, mas o comportamento da inicialização oculta é ligeiramente diferente.&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt"> 1
&lt;/span>&lt;span class="lnt"> 2
&lt;/span>&lt;span class="lnt"> 3
&lt;/span>&lt;span class="lnt"> 4
&lt;/span>&lt;span class="lnt"> 5
&lt;/span>&lt;span class="lnt"> 6
&lt;/span>&lt;span class="lnt"> 7
&lt;/span>&lt;span class="lnt"> 8
&lt;/span>&lt;span class="lnt"> 9
&lt;/span>&lt;span class="lnt">10
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-powershell" data-lang="powershell">&lt;span class="line">&lt;span class="cl">&lt;span class="nv">$ppt&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="nb">New-Object&lt;/span> &lt;span class="n">-ComObject&lt;/span> &lt;span class="n">PowerPoint&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="py">Application&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c"># Abrir especificando o modo oculto (msoFalse) etc. com os 2º a 4º argumentos&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nv">$presentation&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="nv">$ppt&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="py">Presentations&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="py">Open&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s2">&amp;#34;C:\Path\To\Your\File.pptx&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="vm">$false&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="vm">$false&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="vm">$false&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nv">$presentation&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="py">RemovePersonalInformation&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="vm">$true&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nv">$presentation&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="py">Save&lt;/span>&lt;span class="p">()&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nv">$presentation&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="py">Close&lt;/span>&lt;span class="p">()&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nv">$ppt&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="py">Quit&lt;/span>&lt;span class="p">()&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">[&lt;/span>&lt;span class="no">System.Runtime.Interopservices.Marshal&lt;/span>&lt;span class="p">]::&lt;/span>&lt;span class="n">ReleaseComObject&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="nv">$ppt&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="p">|&lt;/span> &lt;span class="nb">Out-Null&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;hr>
&lt;h2 id="conclusão">Conclusão
&lt;/h2>&lt;p>Ao utilizar o PowerShell e objetos COM, você pode automatizar completamente a remoção de metadados de arquivos do Office. É muito útil ter um script de processamento em lote em mãos antes da entrega, a fim de evitar o vazamento não intencional de informações confidenciais ou nomes pessoais.&lt;/p></description></item><item><title>Explicação Fácil da Conjectura de Kepler</title><link>http://kenji.blog/pt/p/explicacao-facil-da-conjectura-de-kepler/</link><pubDate>Mon, 21 Jul 2025 22:53:03 +0900</pubDate><guid>http://kenji.blog/pt/p/explicacao-facil-da-conjectura-de-kepler/</guid><description>&lt;img src="http://kenji.blog/p/%E3%82%B1%E3%83%97%E3%83%A9%E3%83%BC%E4%BA%88%E6%83%B3%E3%82%92%E3%82%8F%E3%81%8B%E3%82%8A%E3%82%84%E3%81%99%E3%81%8F%E8%A7%A3%E8%AA%AC/img.png" alt="Featured image of post Explicação Fácil da Conjectura de Kepler" />&lt;h1 id="explicação-fácil-da-conjectura-de-kepler-a-melhor-forma-de-empacotar-melancias">Explicação Fácil da Conjectura de Kepler! &lt;del>A melhor forma de empacotar melancias&lt;/del>
&lt;/h1>&lt;p>Olá, eu sou o kenji!&lt;/p>
&lt;p>Hoje gostaria de tentar explicar, da forma mais simples possível, uma teoria matemática com um nome que soa um pouco complicado: a &amp;ldquo;Conjectura de Kepler&amp;rdquo;.&lt;/p>
&lt;p>À primeira vista, pode parecer um assunto para nerds, mas também é um problema bem próximo da nossa realidade: &amp;ldquo;Como podemos empacotar melancias em uma caixa da forma mais eficiente?&amp;rdquo;. Isso também tem a ver com as geladeiras das lojas de conveniência e como as cargas são empilhadas.&lt;/p>
&lt;p>E, no mundo da matemática, há uma história super romântica por trás disso: que isso &lt;strong>não pôde ser provado por mais de 400 anos&lt;/strong> .&lt;/p>
&lt;p>Vamos lá!&lt;/p>
&lt;hr>
&lt;h2 id="quem-foi-kepler-afinal">Quem foi Kepler, afinal?
&lt;/h2>&lt;p>Primeiro, quem é o &amp;ldquo;Kepler&amp;rdquo; da &amp;ldquo;Conjectura de Kepler&amp;rdquo;?&lt;/p>
&lt;p>Trata-se do nome de um astrônomo e matemático alemão chamado &lt;strong>Johannes Kepler&lt;/strong> .&lt;/p>
&lt;p>Esse cara era incrível.
Por exemplo, foi ele quem descobriu que a órbita dos planetas é elíptica. Hoje isso é um conhecimento comum, mas na época (por volta de 1600), era uma era em que até o heliocentrismo mal era acreditado.&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Galileu = gênio da observação&lt;/strong>&lt;/li>
&lt;li>&lt;strong>Kepler = o gênio que explicou o universo com fórmulas matemáticas&lt;/strong>&lt;/li>
&lt;li>&lt;strong>Newton = o super gênio que resumiu essa teoria em leis da física&lt;/strong>&lt;/li>
&lt;/ul>
&lt;p>Com esse posicionamento, Kepler era um pioneiro em &amp;ldquo;explicar o universo com fórmulas matemáticas&amp;rdquo;.&lt;/p>
&lt;p>E, a certa altura, ele disse o seguinte:&lt;/p>
&lt;hr>
&lt;h2 id="o-que-é-a-conjectura-de-kepler">O que é a Conjectura de Kepler?
&lt;/h2>&lt;p>Resumidamente, a &amp;ldquo;Conjectura de Kepler&amp;rdquo; é o seguinte.&lt;/p>
&lt;hr>
&lt;blockquote>
&lt;p>&lt;strong>Ao empacotar esferas do mesmo tamanho (melancias ou laranjas) em uma caixa, qual é a disposição que permite o empacotamento mais denso?&lt;/strong>&lt;/p>
&lt;/blockquote>
&lt;hr>
&lt;p>Esse é o problema.&lt;/p>
&lt;p>E o que Kepler conjecturou nos anos 1600 foi:&lt;/p>
&lt;blockquote>
&lt;p>&lt;strong>Não seria mais eficiente empilhá-las como triângulos, igual quando empilham laranjas nas quitandas?&lt;/strong>&lt;/p>
&lt;/blockquote>
&lt;p>Na linguagem matemática, isso é chamado de &lt;strong>&amp;ldquo;problema do empacotamento mais denso&amp;rdquo;&lt;/strong> (Sphere Packing), que busca a maneira de empacotar esferas o mais densamente possível no espaço.&lt;/p>
&lt;p>Kepler conjecturou que o arranjo chamado &lt;strong>&amp;ldquo;estrutura cúbica de faces centradas (FCC)&amp;rdquo;&lt;/strong> (como empilhar melancias em um padrão triangular) seria o mais eficiente.&lt;/p>
&lt;p>Todo mundo pensava: &amp;ldquo;Ah, faz sentido&amp;hellip;&amp;rdquo;, mas provar matematicamente que &amp;ldquo;isso é absolutamente o melhor!&amp;rdquo; foi extremamente difícil.&lt;/p>
&lt;hr>
&lt;h2 id="400-anos-para-provar">400 anos para provar!?!
&lt;/h2>&lt;p>Então, quando isso foi realmente provado&amp;hellip;?&lt;/p>
&lt;p>Surpreendentemente, &lt;strong>entre 1998 e 2005&lt;/strong> .
Ou seja, &lt;strong>ninguém conseguiu provar isso por quase 400 anos&lt;/strong> . Muito louco.&lt;/p>
&lt;p>Além disso, quem provou foi um matemático americano chamado &lt;strong>Thomas Hales&lt;/strong> .&lt;/p>
&lt;p>Ele percebeu que seria impossível fazer isso apenas com cálculos manuais, então &lt;strong>usou computadores para provar&lt;/strong> .
No entanto, ocorreu o problema de a prova ser tão complexa que os humanos não podiam verificá-la adequadamente!&lt;/p>
&lt;p>Assim, surgiu um grande debate no mundo matemático: &amp;ldquo;Podemos realmente confiar em uma prova feita por computadores?&amp;rdquo;.&lt;/p>
&lt;p>Por fim, a prova (formalmente chamada de &amp;ldquo;prova formal&amp;rdquo;) que dizia &amp;ldquo;Verificamos rigorosamente, incluindo o uso de computadores!&amp;rdquo; foi concluída em &lt;strong>2014&lt;/strong> .&lt;/p>
&lt;p>Ou seja, &lt;strong>levou mais de 400 anos para provar que a intuição de Kepler estava correta&lt;/strong> . Um verdadeiro romance.&lt;/p>
&lt;hr>
&lt;h2 id="muito-usada-na-vida-real">Muito usada na vida real
&lt;/h2>&lt;p>Você pode pensar que &amp;ldquo;como arranjar esferas&amp;rdquo; é assunto só para nerds de matemática, mas, na verdade, é super prático.&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Para empilhar bebidas de forma eficiente em geladeiras de lojas de conveniência&lt;/strong>&lt;/li>
&lt;li>&lt;strong>Ao empilhar latas em paletes de transporte&lt;/strong>&lt;/li>
&lt;li>&lt;strong>Também é aplicada em comunicações (compressão de sinais digitais, etc.)&lt;/strong>&lt;/li>
&lt;li>&lt;strong>Usada no design de impressoras 3D e estruturas cristalinas&lt;/strong>&lt;/li>
&lt;/ul>
&lt;p>Enfim, na verdade, é uma teoria bastante usada nos bastidores da nossa vida.&lt;/p>
&lt;hr>
&lt;h2 id="conclusão-a-intuição-humana-é-incrível">Conclusão: a intuição humana é incrível
&lt;/h2>&lt;p>Então, para resumir:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Conjectura de Kepler&lt;/strong> = O problema de como empacotar esferas da maneira mais densa&lt;/li>
&lt;li>&lt;strong>Sr. Kepler&lt;/strong> = Matemático e astrônomo que descobriu as órbitas planetárias&lt;/li>
&lt;li>&lt;strong>Foi conjecturada nos anos 1600! Mas só foi provada nos anos 2000!&lt;/strong>&lt;/li>
&lt;li>&lt;strong>Muito aplicada na vida real!&lt;/strong>&lt;/li>
&lt;/ul>
&lt;p>E o mais interessante é que:
&lt;strong>&amp;ldquo;A forma de empilhar que os quitandeiros faziam por intuição era matematicamente a mais forte&amp;rdquo;&lt;/strong> .&lt;/p>
&lt;p>Em outras palavras, &lt;strong>a intuição humana é incrível&lt;/strong> .
E o fato de que &lt;strong>pode levar 400 anos para provar isso&lt;/strong> é uma história realmente romântica, não acha?&lt;/p>
&lt;hr>
&lt;p>Se você se interessou, não deixe de pesquisar por &amp;ldquo;Thomas Hales&amp;rdquo;, &amp;ldquo;prova formal&amp;rdquo; e &amp;ldquo;Sphere Packing&amp;rdquo;. Se aprofundar nisso é muito divertido.&lt;/p>
&lt;p>Até mais!&lt;/p>
&lt;hr>
&lt;p>[PR]&lt;/p>
&lt;div style="background:#fff;width:120px;height:215px;box-sizing:border-box;border:1px solid #ccc;display:flex;flex-direction:column;justify-content:flex-start;align-items:center;">&lt;div style="line-height:0;">&lt;img src="https://static.jp.mercari.com/assets/img/common/jp/logo_horizontal.png" width="105">&lt;/div>&lt;a href="https://jp.mercari.com/item/m71496725612?afid=1916658352" style="width:100px;height:100px;background:#eee;" target="_blank">&lt;img src="https://ambassador-system.mercari.com/v1/i?id=m71496725612&amp;svc=m" style="line-height:0;width:100px;height:100px;object-fit:contain;"/>&lt;/a>&lt;div style="padding:12px 0;width:100%;text-align:center;">&lt;a href="https://jp.mercari.com/item/m71496725612?afid=1916658352" style="width:100px;height:32px;background-color:#E32B36;border-radius:4px;line-height:14px;text-align:center;color:#fff;font-weight:bold;border:0;font-size:12px;display:inline-flex;justify-content:center;align-items:center;" target="_blank">今すぐ購入&lt;/a>&lt;/div>&lt;/div></description></item><item><title>A Barreira do Desenvolvimento de IA</title><link>http://kenji.blog/pt/p/barreira-do-desenvolvimento-de-ia/</link><pubDate>Sun, 20 Jul 2025 21:52:42 +0900</pubDate><guid>http://kenji.blog/pt/p/barreira-do-desenvolvimento-de-ia/</guid><description>&lt;img src="http://kenji.blog/p/ai%E9%96%8B%E7%99%BA%E3%81%AE%E5%A3%81/img_1.png" alt="Featured image of post A Barreira do Desenvolvimento de IA" />&lt;h1 id="a-barreira-do-desenvolvimento-de-ia">A Barreira do Desenvolvimento de IA
&lt;/h1>&lt;p>&lt;strong>~ Cheguei à 8ª estação, mas a partir daí foi um inferno ~&lt;/strong>&lt;/p>
&lt;p>Olá, aqui é o kenji.&lt;/p>
&lt;p>Ultimamente, tenho ouvido muito as pessoas dizerem: &amp;ldquo;Pedi à IA e consegui criar um aplicativo!&amp;rdquo;
Ultrapassamos a era do no-code e low-code, e entramos na fase do &amp;ldquo;vibe coding&amp;rdquo; (escrever código na intuição).&lt;/p>
&lt;p>Por exemplo, se você disser &amp;ldquo;crie um aplicativo que possa editar imagens e postar nas redes sociais&amp;rdquo;, a IA irá gerar o código e até a interface de usuário.
&lt;strong>Incrível, não precisamos mais de humanos, certo? Você poderia pensar assim.&lt;/strong>&lt;/p>
&lt;p>Mas, na verdade, isso é &lt;strong>como pousar na 8ª estação do Monte Fuji de chinelos&lt;/strong> .&lt;/p>
&lt;hr>
&lt;h2 id="parece-fácil-até-a-8ª-estação">Parece &amp;ldquo;Fácil&amp;rdquo; até a 8ª Estação
&lt;/h2>&lt;p>O desenvolvimento com IA é realmente fácil no começo.
File I/O? Simplesmente funciona.
Rede? Bem, conecta.
Banco de dados? JSON está bom.
UI? O ChatGPT gerou código React para mim.
Pagamento? A API do Stripe pode ser resolvida com copiar e colar.&lt;/p>
&lt;p>Aqui, você tem a ilusão de que &amp;ldquo;Eu já sou um engenheiro, não sou?&amp;rdquo;.
Mas o verdadeiro inferno começa a partir daqui.&lt;/p>
&lt;p>&lt;img src="http://kenji.blog/p/ai%E9%96%8B%E7%99%BA%E3%81%AE%E5%A3%81/img.png"
width="1024"
height="1024"
srcset="http://kenji.blog/p/ai%E9%96%8B%E7%99%BA%E3%81%AE%E5%A3%81/img_huf56c5201f3b1d8f8800773fd39442f1f_2016892_480x0_resize_box_3.png 480w, http://kenji.blog/p/ai%E9%96%8B%E7%99%BA%E3%81%AE%E5%A3%81/img_huf56c5201f3b1d8f8800773fd39442f1f_2016892_1024x0_resize_box_3.png 1024w"
loading="lazy"
alt="img.png"
class="gallery-image"
data-flex-grow="100"
data-flex-basis="240px"
>&lt;/p>
&lt;hr>
&lt;h2 id="por-que-você-fica-preso">Por Que Você Fica Preso?
&lt;/h2>&lt;p>A razão é simples: &amp;ldquo;A IA cria algo que parece concluído, mas os ajustes finais são deixados inteiramente para os humanos.&amp;rdquo;&lt;/p>
&lt;ul>
&lt;li>Dados desaparecem devido a File I/O&lt;/li>
&lt;li>A normalização do banco de dados é fraca e as buscas são lentas&lt;/li>
&lt;li>A UI não é intuitiva&lt;/li>
&lt;li>Falha ao testar a carga, causando travamento por picos de tráfego&lt;/li>
&lt;li>Rejeitado na revisão da Apple/Google&lt;/li>
&lt;li>Problemas com requisitos legais, quase causando um desastre&lt;/li>
&lt;/ul>
&lt;p>Em outras palavras, &lt;strong>a IA é boa em criar &amp;ldquo;protótipos que parecem produtos acabados&amp;rdquo;&lt;/strong> , mas
&lt;strong>transformá-lo em um &amp;ldquo;produto que funciona no mundo real&amp;rdquo; ainda é, hoje, trabalho humano&lt;/strong> .&lt;/p>
&lt;hr>
&lt;h2 id="mas-há-um-paradoxo">Mas Há um Paradoxo
&lt;/h2>&lt;p>Aqui, percebemos um &lt;strong>paradoxo&lt;/strong> .&lt;/p>
&lt;blockquote>
&lt;p>E se a IA puder fazer absolutamente tudo no futuro?
Em outras palavras, e se &amp;ldquo;segurança, cobrança e design forem perfeitamente tratados pela IA&amp;rdquo;?&lt;/p>
&lt;/blockquote>
&lt;p>Nesse momento, &lt;strong>a própria necessidade de humanos criarem aplicativos pode desaparecer&lt;/strong> .&lt;/p>
&lt;p>Porque se os usuários disserem diretamente à IA &amp;ldquo;eu quero fazer isso&amp;rdquo;,
as tarefas serão executadas instantaneamente sem a necessidade de um aplicativo.&lt;/p>
&lt;hr>
&lt;h3 id="-por-exemplo">🌀 Por Exemplo
&lt;/h3>&lt;p>No passado, &amp;ldquo;abríamos um aplicativo de calculadora para calcular&amp;rdquo;, mas
hoje em dia, só dizemos &amp;ldquo;Ei Siri, quanto é 12 x 32?&amp;rdquo; e acabou.&lt;/p>
&lt;p>Da mesma forma,
se você disser &amp;ldquo;Ei IA, edite e compartilhe esta foto&amp;rdquo;, a tarefa pode ser concluída sem passar pela interface ou API do aplicativo.&lt;/p>
&lt;p>Em suma,
&lt;strong>quando o objetivo de &amp;ldquo;criar aplicativos com IA&amp;rdquo; for alcançado, poderemos chegar a um mundo onde os próprios aplicativos sejam desnecessários&lt;/strong> .&lt;/p>
&lt;hr>
&lt;h2 id="afinal-o-que-podemos-fazer-agora">Afinal, O Que Podemos Fazer Agora?
&lt;/h2>&lt;p>Então, o que devemos fazer?&lt;/p>
&lt;ul>
&lt;li>Por enquanto, &amp;ldquo;da 8ª estação para cima&amp;rdquo; ainda é domínio humano, então vamos aprimorar isso.&lt;/li>
&lt;li>Concentre-se no entendimento essencial do usuário e no design de serviço.&lt;/li>
&lt;li>Pense sobre &amp;ldquo;o que tem valor&amp;rdquo; em vez de &amp;ldquo;o que pode ser criado&amp;rdquo;.&lt;/li>
&lt;li>Em vez disso, explore maneiras de fornecer valor &amp;ldquo;sem estar restrito ao formato de um aplicativo&amp;rdquo;.&lt;/li>
&lt;/ul>
&lt;p>A IA é uma ferramenta, um elevador e, às vezes, um concorrente.
Mas, &lt;strong>&amp;ldquo;o que criar&amp;rdquo; e &amp;ldquo;por que criar&amp;rdquo; continuam sendo questões para nós, humanos&lt;/strong> .&lt;/p>
&lt;hr>
&lt;h2 id="resumo">Resumo:
&lt;/h2>&lt;p>&lt;strong>A barreira do desenvolvimento de IA não é tecnológica, mas um paradoxo estrutural.&lt;/strong>&lt;/p>
&lt;p>Uma era em que qualquer um pode ir à 8ª estação do Monte Fuji.
Mas o verdadeiro desafio começa a partir daí.&lt;/p>
&lt;p>E quando chegarmos ao topo,
um futuro onde nos perguntaremos &amp;ldquo;Precisávamos mesmo escalar a montanha?&amp;rdquo; pode estar nos esperando.&lt;/p>
&lt;p>&lt;img src="http://kenji.blog/p/ai%E9%96%8B%E7%99%BA%E3%81%AE%E5%A3%81/img_1.png"
width="1024"
height="1024"
srcset="http://kenji.blog/p/ai%E9%96%8B%E7%99%BA%E3%81%AE%E5%A3%81/img_1_hu929f602c53dcc1c0d00e8a53b025b29e_1978511_480x0_resize_box_3.png 480w, http://kenji.blog/p/ai%E9%96%8B%E7%99%BA%E3%81%AE%E5%A3%81/img_1_hu929f602c53dcc1c0d00e8a53b025b29e_1978511_1024x0_resize_box_3.png 1024w"
loading="lazy"
alt="img_1.png"
class="gallery-image"
data-flex-grow="100"
data-flex-basis="240px"
>&lt;/p></description></item><item><title>Como chamar Microsoft.Windows.AI a partir de C++</title><link>http://kenji.blog/pt/p/como-chamar-microsoft-windows-ai-a-partir-de-cpp/</link><pubDate>Sat, 19 Jul 2025 10:03:51 +0900</pubDate><guid>http://kenji.blog/pt/p/como-chamar-microsoft-windows-ai-a-partir-de-cpp/</guid><description>&lt;img src="http://kenji.blog/p/c-%E3%81%8B%E3%82%89microsoft.windows.ai%E3%82%92%E5%91%BC%E3%81%B3%E5%87%BA%E3%81%99%E6%96%B9%E6%B3%95/img.png" alt="Featured image of post Como chamar Microsoft.Windows.AI a partir de C++" />&lt;h1 id="-como-chamar-microsoftwindowsai-a-partir-de-c-com-código-de-exemplo">🎯 Como chamar &lt;code>Microsoft.Windows.AI&lt;/code> a partir de C++ [Com código de exemplo]
&lt;/h1>&lt;p>A partir do Windows 10, o Windows inclui nativamente um ** runtime capaz de executar modelos de IA no formato ONNX **. Esse é o ** Windows ML (Windows.AI.MachineLearning) **.&lt;/p>
&lt;p>Neste artigo, explicarei de forma prática como chamar &lt;code>Microsoft.Windows.AI.MachineLearning&lt;/code> a partir de ** C++ (baseado em aplicativo Win32) **, com ** código de exemplo **.&lt;/p>
&lt;hr>
&lt;h2 id="-preparação">✅ Preparação
&lt;/h2>&lt;h3 id="-requisitos-do-ambiente">◾ Requisitos do Ambiente
&lt;/h3>&lt;ul>
&lt;li>Windows 10 (1809+) ou Windows 11&lt;/li>
&lt;li>Visual Studio 2019 ou posterior (A versão Community é suficiente)&lt;/li>
&lt;li>Suporte a C++/WinRT (&lt;code>Microsoft.Windows.CppWinRT&lt;/code>)&lt;/li>
&lt;li>Windows SDK 10.0.17763.0 ou superior&lt;/li>
&lt;/ul>
&lt;hr>
&lt;h2 id="-configuração-do-projeto">✅ Configuração do Projeto
&lt;/h2>&lt;p>Crie um projeto no Visual Studio com a seguinte configuração:&lt;/p>
&lt;ul>
&lt;li>
&lt;p>Tipo: Aplicativo de Área de Trabalho do Windows em C++ (Projeto Vazio)&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Subsistema: Windows (&lt;code>WinMain&lt;/code>)&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Adicione o seguinte pacote via NuGet:&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">Microsoft.Windows.CppWinRT
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;/li>
&lt;/ul>
&lt;hr>
&lt;h2 id="-código-de-exemplo">✅ Código de Exemplo
&lt;/h2>&lt;p>Abaixo está um exemplo de configuração mínima que usa &lt;code>WinMain&lt;/code> para combinar a API Win32 e &lt;code>Windows.AI.MachineLearning&lt;/code>.&lt;/p>
&lt;blockquote>
&lt;p>※ O modelo ONNX utilizado será chamado &lt;code>model.onnx&lt;/code> e deve ser colocado na mesma pasta que o arquivo executável.&lt;/p>
&lt;/blockquote>
&lt;h3 id="maincpp">&lt;code>main.cpp&lt;/code>
&lt;/h3>&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt"> 1
&lt;/span>&lt;span class="lnt"> 2
&lt;/span>&lt;span class="lnt"> 3
&lt;/span>&lt;span class="lnt"> 4
&lt;/span>&lt;span class="lnt"> 5
&lt;/span>&lt;span class="lnt"> 6
&lt;/span>&lt;span class="lnt"> 7
&lt;/span>&lt;span class="lnt"> 8
&lt;/span>&lt;span class="lnt"> 9
&lt;/span>&lt;span class="lnt">10
&lt;/span>&lt;span class="lnt">11
&lt;/span>&lt;span class="lnt">12
&lt;/span>&lt;span class="lnt">13
&lt;/span>&lt;span class="lnt">14
&lt;/span>&lt;span class="lnt">15
&lt;/span>&lt;span class="lnt">16
&lt;/span>&lt;span class="lnt">17
&lt;/span>&lt;span class="lnt">18
&lt;/span>&lt;span class="lnt">19
&lt;/span>&lt;span class="lnt">20
&lt;/span>&lt;span class="lnt">21
&lt;/span>&lt;span class="lnt">22
&lt;/span>&lt;span class="lnt">23
&lt;/span>&lt;span class="lnt">24
&lt;/span>&lt;span class="lnt">25
&lt;/span>&lt;span class="lnt">26
&lt;/span>&lt;span class="lnt">27
&lt;/span>&lt;span class="lnt">28
&lt;/span>&lt;span class="lnt">29
&lt;/span>&lt;span class="lnt">30
&lt;/span>&lt;span class="lnt">31
&lt;/span>&lt;span class="lnt">32
&lt;/span>&lt;span class="lnt">33
&lt;/span>&lt;span class="lnt">34
&lt;/span>&lt;span class="lnt">35
&lt;/span>&lt;span class="lnt">36
&lt;/span>&lt;span class="lnt">37
&lt;/span>&lt;span class="lnt">38
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-cpp" data-lang="cpp">&lt;span class="line">&lt;span class="cl">&lt;span class="cp">#include&lt;/span> &lt;span class="cpf">&amp;lt;windows.h&amp;gt;&lt;/span>&lt;span class="cp">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="cp">#include&lt;/span> &lt;span class="cpf">&amp;lt;winrt/Windows.AI.MachineLearning.h&amp;gt;&lt;/span>&lt;span class="cp">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="cp">#include&lt;/span> &lt;span class="cpf">&amp;lt;winrt/Windows.Storage.h&amp;gt;&lt;/span>&lt;span class="cp">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="cp">&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="cp">#pragma comment(lib, &amp;#34;windowsapp&amp;#34;) &lt;/span>&lt;span class="c1">// Para linkagem WinRT
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="k">using&lt;/span> &lt;span class="k">namespace&lt;/span> &lt;span class="n">winrt&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="k">using&lt;/span> &lt;span class="k">namespace&lt;/span> &lt;span class="n">Windows&lt;/span>&lt;span class="o">::&lt;/span>&lt;span class="n">AI&lt;/span>&lt;span class="o">::&lt;/span>&lt;span class="n">MachineLearning&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="k">using&lt;/span> &lt;span class="k">namespace&lt;/span> &lt;span class="n">Windows&lt;/span>&lt;span class="o">::&lt;/span>&lt;span class="n">Storage&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="kt">int&lt;/span> &lt;span class="n">WINAPI&lt;/span> &lt;span class="nf">WinMain&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">HINSTANCE&lt;/span> &lt;span class="n">hInstance&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">HINSTANCE&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">LPSTR&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="kt">int&lt;/span> &lt;span class="n">nCmdShow&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1">// Inicialização WinRT (MTA ou STA são válidos)
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">&lt;/span> &lt;span class="n">winrt&lt;/span>&lt;span class="o">::&lt;/span>&lt;span class="n">init_apartment&lt;/span>&lt;span class="p">();&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">try&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1">// Carregar o arquivo do modelo
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">&lt;/span> &lt;span class="k">auto&lt;/span> &lt;span class="n">modelFile&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">StorageFile&lt;/span>&lt;span class="o">::&lt;/span>&lt;span class="n">GetFileFromPathAsync&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="sa">L&lt;/span>&lt;span class="s">&amp;#34;model.onnx&amp;#34;&lt;/span>&lt;span class="p">).&lt;/span>&lt;span class="n">get&lt;/span>&lt;span class="p">();&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">LearningModel&lt;/span> &lt;span class="n">model&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">LearningModel&lt;/span>&lt;span class="o">::&lt;/span>&lt;span class="n">LoadFromStorageFileAsync&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">modelFile&lt;/span>&lt;span class="p">).&lt;/span>&lt;span class="n">get&lt;/span>&lt;span class="p">();&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1">// Criar uma sessão
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">&lt;/span> &lt;span class="n">LearningModelSession&lt;/span> &lt;span class="n">session&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">model&lt;/span>&lt;span class="p">);&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">LearningModelBinding&lt;/span> &lt;span class="n">binding&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">session&lt;/span>&lt;span class="p">);&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1">// Entrada e saída do modelo (aqui temporariamente entrada vazia)
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">&lt;/span> &lt;span class="c1">// Na prática, é necessário fazer bind com TensorFloat, etc.
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1">// Executar inferência
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">&lt;/span> &lt;span class="k">auto&lt;/span> &lt;span class="n">result&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">session&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">EvaluateAsync&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">binding&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="sa">L&lt;/span>&lt;span class="s">&amp;#34;&amp;#34;&lt;/span>&lt;span class="p">).&lt;/span>&lt;span class="n">get&lt;/span>&lt;span class="p">();&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">MessageBox&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="k">nullptr&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="sa">L&lt;/span>&lt;span class="s">&amp;#34;Inferência concluída&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="sa">L&lt;/span>&lt;span class="s">&amp;#34;Windows ML (C++)&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">MB_OK&lt;/span>&lt;span class="p">);&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">catch&lt;/span> &lt;span class="p">(&lt;/span>&lt;span class="n">winrt&lt;/span>&lt;span class="o">::&lt;/span>&lt;span class="n">hresult_error&lt;/span> &lt;span class="k">const&lt;/span>&lt;span class="o">&amp;amp;&lt;/span> &lt;span class="n">ex&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">MessageBox&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="k">nullptr&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">ex&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">message&lt;/span>&lt;span class="p">().&lt;/span>&lt;span class="n">c_str&lt;/span>&lt;span class="p">(),&lt;/span> &lt;span class="sa">L&lt;/span>&lt;span class="s">&amp;#34;Erro&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">MB_ICONERROR&lt;/span>&lt;span class="p">);&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">return&lt;/span> &lt;span class="mi">0&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;hr>
&lt;h2 id="-complemento-como-especificar-tensors-de-entradasaída">✅ Complemento: Como especificar Tensors de Entrada/Saída
&lt;/h2>&lt;p>Dependendo do modelo, ** a criação e o bind de Tensors ** são necessários antes da inferência.&lt;/p>
&lt;p>Exemplo:&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;span class="lnt">4
&lt;/span>&lt;span class="lnt">5
&lt;/span>&lt;span class="lnt">6
&lt;/span>&lt;span class="lnt">7
&lt;/span>&lt;span class="lnt">8
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-cpp" data-lang="cpp">&lt;span class="line">&lt;span class="cl">&lt;span class="c1">// Converter um array float unidimensional para Tensor
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">&lt;/span>&lt;span class="n">std&lt;/span>&lt;span class="o">::&lt;/span>&lt;span class="n">vector&lt;/span>&lt;span class="o">&amp;lt;&lt;/span>&lt;span class="kt">float&lt;/span>&lt;span class="o">&amp;gt;&lt;/span> &lt;span class="n">inputData&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="p">{&lt;/span>&lt;span class="mf">0.5f&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="mf">0.3f&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="mf">0.2f&lt;/span>&lt;span class="p">};&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">std&lt;/span>&lt;span class="o">::&lt;/span>&lt;span class="n">vector&lt;/span>&lt;span class="o">&amp;lt;&lt;/span>&lt;span class="kt">int64_t&lt;/span>&lt;span class="o">&amp;gt;&lt;/span> &lt;span class="n">shape&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="p">{&lt;/span>&lt;span class="mi">1&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="mi">3&lt;/span>&lt;span class="p">};&lt;/span> &lt;span class="c1">// Formato: [1, 3]
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="k">auto&lt;/span> &lt;span class="n">tensor&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">TensorFloat&lt;/span>&lt;span class="o">::&lt;/span>&lt;span class="n">CreateFromArray&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">shape&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">inputData&lt;/span>&lt;span class="p">);&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">// Bind de entrada (deve corresponder ao nome de entrada do modelo)
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">&lt;/span>&lt;span class="n">binding&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">Bind&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="sa">L&lt;/span>&lt;span class="s">&amp;#34;input_0&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">tensor&lt;/span>&lt;span class="p">);&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>A saída pode ser obtida de forma semelhante com &lt;code>result.Outputs().Lookup(L&amp;quot;output_0&amp;quot;)&lt;/code>.&lt;/p>
&lt;hr>
&lt;h2 id="-pontos-de-atenção-na-depuração">✅ Pontos de Atenção na Depuração
&lt;/h2>&lt;ul>
&lt;li>Se o arquivo do modelo não existir na pasta de execução, ocorrerá uma &lt;code>FileNotFoundException&lt;/code>.&lt;/li>
&lt;li>Se os nomes de entrada/saída não corresponderem, resultará em um erro &lt;code>invalid_argument&lt;/code>.&lt;/li>
&lt;li>As especificações exatas de E/S do modelo podem ser verificadas com ferramentas como o &lt;a class="link" href="https://netron.app" target="_blank" rel="noopener"
>Netron&lt;/a>.&lt;/li>
&lt;/ul>
&lt;hr>
&lt;h2 id="-resumo">✅ Resumo
&lt;/h2>&lt;table>
&lt;thead>
&lt;tr>
&lt;th>Item&lt;/th>
&lt;th>Descrição&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>API Usada&lt;/td>
&lt;td>Windows.AI.MachineLearning (WinRT)&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Linguagem&lt;/td>
&lt;td>C++ (baseado em Win32)&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Método Recomendado&lt;/td>
&lt;td>Através de cabeçalhos C++/WinRT&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Vantagens&lt;/td>
&lt;td>Modelos ONNX rodam nativamente, suporte a GPU disponível&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Atenção&lt;/td>
&lt;td>Cuidado com os nomes de entrada do modelo e formato do Tensor&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;hr>
&lt;h2 id="-alternativa-para-quem-não-quer-usar-winrt">✅ Alternativa: Para quem não quer usar WinRT
&lt;/h2>&lt;ul>
&lt;li>Usando o &lt;code>ONNX Runtime&lt;/code> da Microsoft, ** você pode lidar com modelos ONNX a partir de C++ de forma totalmente sem WinRT **.&lt;/li>
&lt;li>É multiplataforma, permitindo código comum entre Windows e Linux.&lt;/li>
&lt;/ul>
&lt;hr>
&lt;h2 id="-conclusão">📌 Conclusão
&lt;/h2>&lt;p>O Windows ML (Microsoft.Windows.AI) é um motor de inferência de IA poderoso que pode ser perfeitamente utilizado também a partir de C++. Se você precisa de inferência nativa no Windows, não deixe de experimentar.&lt;/p>
&lt;p>Para aqueles que desejam exemplos concretos de criação de modelos ONNX e binding de Tensor, explicaremos isso em artigos subsequentes!&lt;/p></description></item><item><title>Passos para chamar o TinyLLaMA a partir de C++ (usando llama.cpp)</title><link>http://kenji.blog/pt/p/passos-para-chamar-o-tinyllama-a-partir-de-c-usando-llama.cpp/</link><pubDate>Sat, 19 Jul 2025 09:40:53 +0900</pubDate><guid>http://kenji.blog/pt/p/passos-para-chamar-o-tinyllama-a-partir-de-c-usando-llama.cpp/</guid><description>&lt;img src="http://kenji.blog/p/tinyllama-%E3%82%92-c-%E3%81%8B%E3%82%89%E5%91%BC%E3%81%B3%E5%87%BA%E3%81%9B%E3%82%8B%E3%82%88%E3%81%86%E3%81%AB%E3%81%99%E3%82%8B%E6%89%8B%E9%A0%86llama.cpp%E4%BD%BF%E7%94%A8/img.png" alt="Featured image of post Passos para chamar o TinyLLaMA a partir de C++ (usando llama.cpp)" />&lt;h1 id="-configuração-do-tinyllama--c-usando-llamacpp">✅ Configuração do TinyLLaMA × C++ (usando &lt;code>llama.cpp&lt;/code>)
&lt;/h1>&lt;hr>
&lt;h2 id="-passo-1-preparar-o-llamacpp">🔧 Passo 1: Preparar o llama.cpp
&lt;/h2>&lt;h3 id="1-1-ambiente-necessário-mínimo">1-1. Ambiente necessário (Mínimo)
&lt;/h3>&lt;ul>
&lt;li>OS: Windows / Linux / macOS&lt;/li>
&lt;li>Ambiente de desenvolvimento: g++ / clang / MSVC&lt;/li>
&lt;li>Git / CMake&lt;/li>
&lt;/ul>
&lt;h3 id="1-2-obter-e-compilar-llamacpp">1-2. Obter e compilar llama.cpp
&lt;/h3>&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;span class="lnt">4
&lt;/span>&lt;span class="lnt">5
&lt;/span>&lt;span class="lnt">6
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">git clone https://github.com/ggerganov/llama.cpp
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nb">cd&lt;/span> llama.cpp
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">mkdir build
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nb">cd&lt;/span> build
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">cmake ..
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">cmake --build . --config Release
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;blockquote>
&lt;p>No Windows, é mais fácil usar &lt;code>Visual Studio Developer Command Prompt&lt;/code> com &lt;code>cmake --build . --config Release&lt;/code>.&lt;/p>
&lt;/blockquote>
&lt;hr>
&lt;h2 id="-passo-2-baixar-e-converter-o-modelo-tinyllama">📦 Passo 2: Baixar e converter o modelo TinyLLaMA
&lt;/h2>&lt;h3 id="2-1-obter-o-modelo-original-do-huggingface">2-1. Obter o modelo original do HuggingFace
&lt;/h3>&lt;p>Exemplo: &lt;a class="link" href="https://huggingface.co/openaccess-ai-collective/TinyLlama-1.1B-Chat-v1.0" target="_blank" rel="noopener"
>TinyLLaMA-1.1B&lt;/a>&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;span class="lnt">4
&lt;/span>&lt;span class="lnt">5
&lt;/span>&lt;span class="lnt">6
&lt;/span>&lt;span class="lnt">7
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># Instalar transformers para download, se necessário&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">pip install transformers huggingface_hub
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">python3 -m transformers.models.llama.convert_llama_weights_to_hf &lt;span class="se">\
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="se">&lt;/span> --input_dir ./TinyLlama-1.1B-Chat &lt;span class="se">\
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="se">&lt;/span> --model_size 1B &lt;span class="se">\
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="se">&lt;/span> --output_dir ./hf_model
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;blockquote>
&lt;p>Este é o passo para converter para o formato Hugging Face.&lt;/p>
&lt;/blockquote>
&lt;hr>
&lt;h3 id="2-2-converter-para-formato-gguf-para-llamacpp">2-2. Converter para formato GGUF (para &lt;code>llama.cpp&lt;/code>)
&lt;/h3>&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">&lt;span class="nb">cd&lt;/span> llama.cpp
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">python3 convert.py ./hf_model --outfile tinyllama.gguf
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h3 id="2-3-quantização-do-modelo-redução-de-tamanho">2-3. Quantização do modelo (redução de tamanho)
&lt;/h3>&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">./quantize ./tinyllama.gguf ./tinyllama-q4.gguf q4_0
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;blockquote>
&lt;p>&lt;code>q4_0&lt;/code> é a quantização em 4 bits. O tamanho do modelo será reduzido para cerca de ** 350MB ** .&lt;/p>
&lt;/blockquote>
&lt;hr>
&lt;h2 id="-passo-3-chamar-o-modelo-a-partir-do-c-exemplo-de-código">🧪 Passo 3: Chamar o modelo a partir do C++ (Exemplo de código)
&lt;/h2>&lt;h3 id="3-1-código-c-simples-inferência">3-1. Código C++ simples (Inferência)
&lt;/h3>&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt"> 1
&lt;/span>&lt;span class="lnt"> 2
&lt;/span>&lt;span class="lnt"> 3
&lt;/span>&lt;span class="lnt"> 4
&lt;/span>&lt;span class="lnt"> 5
&lt;/span>&lt;span class="lnt"> 6
&lt;/span>&lt;span class="lnt"> 7
&lt;/span>&lt;span class="lnt"> 8
&lt;/span>&lt;span class="lnt"> 9
&lt;/span>&lt;span class="lnt">10
&lt;/span>&lt;span class="lnt">11
&lt;/span>&lt;span class="lnt">12
&lt;/span>&lt;span class="lnt">13
&lt;/span>&lt;span class="lnt">14
&lt;/span>&lt;span class="lnt">15
&lt;/span>&lt;span class="lnt">16
&lt;/span>&lt;span class="lnt">17
&lt;/span>&lt;span class="lnt">18
&lt;/span>&lt;span class="lnt">19
&lt;/span>&lt;span class="lnt">20
&lt;/span>&lt;span class="lnt">21
&lt;/span>&lt;span class="lnt">22
&lt;/span>&lt;span class="lnt">23
&lt;/span>&lt;span class="lnt">24
&lt;/span>&lt;span class="lnt">25
&lt;/span>&lt;span class="lnt">26
&lt;/span>&lt;span class="lnt">27
&lt;/span>&lt;span class="lnt">28
&lt;/span>&lt;span class="lnt">29
&lt;/span>&lt;span class="lnt">30
&lt;/span>&lt;span class="lnt">31
&lt;/span>&lt;span class="lnt">32
&lt;/span>&lt;span class="lnt">33
&lt;/span>&lt;span class="lnt">34
&lt;/span>&lt;span class="lnt">35
&lt;/span>&lt;span class="lnt">36
&lt;/span>&lt;span class="lnt">37
&lt;/span>&lt;span class="lnt">38
&lt;/span>&lt;span class="lnt">39
&lt;/span>&lt;span class="lnt">40
&lt;/span>&lt;span class="lnt">41
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-cpp" data-lang="cpp">&lt;span class="line">&lt;span class="cl">&lt;span class="cp">#include&lt;/span> &lt;span class="cpf">&amp;#34;llama.h&amp;#34;&lt;/span>&lt;span class="cp">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="cp">#include&lt;/span> &lt;span class="cpf">&amp;lt;iostream&amp;gt;&lt;/span>&lt;span class="cp">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="cp">&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="kt">int&lt;/span> &lt;span class="nf">main&lt;/span>&lt;span class="p">()&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">llama_model_params&lt;/span> &lt;span class="n">model_params&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">llama_model_default_params&lt;/span>&lt;span class="p">();&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">llama_context_params&lt;/span> &lt;span class="n">ctx_params&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">llama_context_default_params&lt;/span>&lt;span class="p">();&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">llama_model&lt;/span> &lt;span class="o">*&lt;/span>&lt;span class="n">model&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">llama_load_model_from_file&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s">&amp;#34;tinyllama-q4.gguf&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">model_params&lt;/span>&lt;span class="p">);&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">llama_context&lt;/span> &lt;span class="o">*&lt;/span>&lt;span class="n">ctx&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">llama_new_context_with_model&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">model&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">ctx_params&lt;/span>&lt;span class="p">);&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">std&lt;/span>&lt;span class="o">::&lt;/span>&lt;span class="n">string&lt;/span> &lt;span class="n">prompt&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="s">&amp;#34;O utilizador diz que quer carregar dados do Excel, filtrá-los e guardá-los. Qual é a configuração dos nós?&amp;#34;&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">llama_batch&lt;/span> &lt;span class="n">batch&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">llama_batch_init&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="mi">512&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="mi">0&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="mi">1&lt;/span>&lt;span class="p">);&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">llama_token&lt;/span> &lt;span class="n">BOS&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">llama_token_bos&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">model&lt;/span>&lt;span class="p">);&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">batch&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">token&lt;/span>&lt;span class="p">[&lt;/span>&lt;span class="mi">0&lt;/span>&lt;span class="p">]&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">BOS&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1">// Tokenização
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">&lt;/span> &lt;span class="n">std&lt;/span>&lt;span class="o">::&lt;/span>&lt;span class="n">vector&lt;/span>&lt;span class="o">&amp;lt;&lt;/span>&lt;span class="n">llama_token&lt;/span>&lt;span class="o">&amp;gt;&lt;/span> &lt;span class="n">tokens&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">prompt&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">size&lt;/span>&lt;span class="p">()&lt;/span> &lt;span class="o">+&lt;/span> &lt;span class="mi">8&lt;/span>&lt;span class="p">);&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="kt">int&lt;/span> &lt;span class="n">n&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">llama_tokenize&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">model&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">prompt&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">c_str&lt;/span>&lt;span class="p">(),&lt;/span> &lt;span class="n">tokens&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">data&lt;/span>&lt;span class="p">(),&lt;/span> &lt;span class="n">tokens&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">size&lt;/span>&lt;span class="p">(),&lt;/span> &lt;span class="nb">true&lt;/span>&lt;span class="p">);&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">tokens&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">resize&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">n&lt;/span>&lt;span class="p">);&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">for&lt;/span> &lt;span class="p">(&lt;/span>&lt;span class="n">size_t&lt;/span> &lt;span class="n">i&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="mi">0&lt;/span>&lt;span class="p">;&lt;/span> &lt;span class="n">i&lt;/span> &lt;span class="o">&amp;lt;&lt;/span> &lt;span class="n">tokens&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">size&lt;/span>&lt;span class="p">();&lt;/span> &lt;span class="o">++&lt;/span>&lt;span class="n">i&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">batch&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">token&lt;/span>&lt;span class="p">[&lt;/span>&lt;span class="n">i&lt;/span> &lt;span class="o">+&lt;/span> &lt;span class="mi">1&lt;/span>&lt;span class="p">]&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">tokens&lt;/span>&lt;span class="p">[&lt;/span>&lt;span class="n">i&lt;/span>&lt;span class="p">];&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">batch&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">n_tokens&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">tokens&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">size&lt;/span>&lt;span class="p">()&lt;/span> &lt;span class="o">+&lt;/span> &lt;span class="mi">1&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">llama_decode&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">ctx&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">batch&lt;/span>&lt;span class="p">);&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1">// Obter resultado da inferência
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">&lt;/span> &lt;span class="k">for&lt;/span> &lt;span class="p">(&lt;/span>&lt;span class="kt">int&lt;/span> &lt;span class="n">i&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="mi">0&lt;/span>&lt;span class="p">;&lt;/span> &lt;span class="n">i&lt;/span> &lt;span class="o">&amp;lt;&lt;/span> &lt;span class="mi">50&lt;/span>&lt;span class="p">;&lt;/span> &lt;span class="o">++&lt;/span>&lt;span class="n">i&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">llama_token&lt;/span> &lt;span class="n">next&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">llama_sample_token&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">ctx&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="k">nullptr&lt;/span>&lt;span class="p">);&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">std&lt;/span>&lt;span class="o">::&lt;/span>&lt;span class="n">cout&lt;/span> &lt;span class="o">&amp;lt;&amp;lt;&lt;/span> &lt;span class="n">llama_token_to_str&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">model&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">next&lt;/span>&lt;span class="p">);&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">llama_batch&lt;/span> &lt;span class="n">next_batch&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">llama_batch_init&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="mi">1&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="mi">0&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="mi">1&lt;/span>&lt;span class="p">);&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">next_batch&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">token&lt;/span>&lt;span class="p">[&lt;/span>&lt;span class="mi">0&lt;/span>&lt;span class="p">]&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">next&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">next_batch&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">n_tokens&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="mi">1&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">llama_decode&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">ctx&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">next_batch&lt;/span>&lt;span class="p">);&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">llama_free&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">ctx&lt;/span>&lt;span class="p">);&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">llama_free_model&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">model&lt;/span>&lt;span class="p">);&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">return&lt;/span> &lt;span class="mi">0&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;hr>
&lt;h2 id="-passo-4-como-compilar-exemplo">🧱 Passo 4: Como compilar (Exemplo)
&lt;/h2>&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">g++ -I./llama.cpp main.cpp ./llama.cpp/build/libllama.a -o tiny_infer -pthread -std&lt;span class="o">=&lt;/span>c++11
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;blockquote>
&lt;p>&lt;code>libllama.a&lt;/code> será criado no diretório &lt;code>build/&lt;/code> após a compilação.&lt;/p>
&lt;/blockquote>
&lt;hr>
&lt;h2 id="-exemplo-de-estrutura-dos-artefactos-organização">✅ Exemplo de estrutura dos artefactos (Organização)
&lt;/h2>&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;span class="lnt">4
&lt;/span>&lt;span class="lnt">5
&lt;/span>&lt;span class="lnt">6
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">my_app/
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">├── tinyllama-q4.gguf # Modelo quantizado (~350MB)
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">├── main.cpp # Código C++ acima
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">├── llama.cpp/ # Diretório do llama.cpp
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">└── build/
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> └── libllama.a # Biblioteca compilada
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;hr>
&lt;h2 id="-notas-adicionais-para-aplicação-em-casos-de-uso">🧠 Notas adicionais para aplicação em casos de uso
&lt;/h2>&lt;ul>
&lt;li>Ter código em C++ para &lt;code>verificar e selecionar o modelo de nós&lt;/code> com base na saída&lt;/li>
&lt;li>Exemplo: Se contém &amp;ldquo;Excel&amp;rdquo;, &amp;ldquo;filtro&amp;rdquo;, &amp;ldquo;guardar&amp;rdquo; → gera os grupos de nós correspondentes&lt;/li>
&lt;li>Esta parte pode ter uma estrutura simples, como &lt;code>instruções if + carregamento de modelo JSON&lt;/code>&lt;/li>
&lt;/ul>
&lt;hr>
&lt;h2 id="-resumo">📌 Resumo
&lt;/h2>&lt;table>
&lt;thead>
&lt;tr>
&lt;th>Item&lt;/th>
&lt;th>Descrição&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>Modelo recomendado&lt;/td>
&lt;td>TinyLLaMA-1.1B-Chat v1.0 (GGUF + Quantização)&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Tamanho&lt;/td>
&lt;td>~350 a 450MB (Quantização 4bit)&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Integração C++&lt;/td>
&lt;td>Possível através de &lt;code>llama.cpp&lt;/code>, quase sem dependências externas&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Capacidade de processamento&lt;/td>
&lt;td>Suficiente para compreensão básica de intenções e geração de frases (Texto natural → Estrutura)&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Extensibilidade&lt;/td>
&lt;td>Pode tornar-se uma IA de geração de nós quando combinado com preenchimento de slots e chamadas de modelos&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table></description></item><item><title>Como postar uma mensagem no Slack usando Slack App + OAuth2</title><link>http://kenji.blog/pt/p/slack-app--oauth2-%E3%82%92%E4%BD%BF%E3%81%A3%E3%81%A6-slack-%E3%81%AB%E3%83%A1%E3%83%83%E3%82%BB%E3%83%BC%E3%82%B8%E3%82%92%E6%8A%95%E7%A8%BF%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95/</link><pubDate>Wed, 16 Jul 2025 23:36:27 +0900</pubDate><guid>http://kenji.blog/pt/p/slack-app--oauth2-%E3%82%92%E4%BD%BF%E3%81%A3%E3%81%A6-slack-%E3%81%AB%E3%83%A1%E3%83%83%E3%82%BB%E3%83%BC%E3%82%B8%E3%82%92%E6%8A%95%E7%A8%BF%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95/</guid><description>&lt;img src="http://kenji.blog/p/slack-app--oauth2-%E3%82%92%E4%BD%BF%E3%81%A3%E3%81%A6-slack-%E3%81%AB%E3%83%A1%E3%83%83%E3%82%BB%E3%83%BC%E3%82%B8%E3%82%92%E6%8A%95%E7%A8%BF%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95/img.png" alt="Featured image of post Como postar uma mensagem no Slack usando Slack App + OAuth2" />&lt;h2 id="-método-de-postagem-usando-token-de-acesso-slack-web-api">✅ Método de postagem usando token de acesso (Slack Web API)
&lt;/h2>&lt;p>O &amp;ldquo;OAuth Token&amp;rdquo; (como xoxb-&amp;hellip;) do Slack é uma chave para postar usando a &lt;a class="link" href="https://api.slack.com/methods/chat.postMessage" target="_blank" rel="noopener"
>Web API&lt;/a> do Slack.
Neste caso, diferentemente do Webhook, você faz um &lt;code>POST&lt;/code> no &lt;strong>Slack API Endpoint&lt;/strong> com um cabeçalho &lt;code>Authorization: Bearer&lt;/code>.&lt;/p>
&lt;hr>
&lt;h2 id="-pré-requisitos-necessários">🔑 Pré-requisitos necessários
&lt;/h2>&lt;p>É necessário incluir &lt;strong>&lt;code>chat:write&lt;/code> no escopo OAuth&lt;/strong> do aplicativo Slack:&lt;/p>
&lt;h3 id="procedimento-de-configuração">Procedimento de configuração
&lt;/h3>&lt;ol>
&lt;li>Acesse &lt;a class="link" href="https://api.slack.com/apps" target="_blank" rel="noopener"
>https://api.slack.com/apps&lt;/a>&lt;/li>
&lt;li>Crie um aplicativo ou selecione um aplicativo existente&lt;/li>
&lt;li>Em &amp;ldquo;OAuth &amp;amp; Permissions&amp;rdquo; &amp;gt; &lt;code>Scopes&lt;/code>
→ Adicione &lt;code>chat:write&lt;/code>&lt;/li>
&lt;li>Vá em &amp;ldquo;Install to Workspace&amp;rdquo; ou &amp;ldquo;Reinstall&amp;rdquo; e obtenha o &lt;code>Access Token&lt;/code> (ex: &lt;code>xoxb-xxxxxxxxxx&lt;/code>)&lt;/li>
&lt;/ol>
&lt;hr>
&lt;h2 id="-código-c-postando-para-a-slack-api-com-winhttp">💻 Código C++ (Postando para a Slack API com WinHTTP)
&lt;/h2>&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt"> 1
&lt;/span>&lt;span class="lnt"> 2
&lt;/span>&lt;span class="lnt"> 3
&lt;/span>&lt;span class="lnt"> 4
&lt;/span>&lt;span class="lnt"> 5
&lt;/span>&lt;span class="lnt"> 6
&lt;/span>&lt;span class="lnt"> 7
&lt;/span>&lt;span class="lnt"> 8
&lt;/span>&lt;span class="lnt"> 9
&lt;/span>&lt;span class="lnt">10
&lt;/span>&lt;span class="lnt">11
&lt;/span>&lt;span class="lnt">12
&lt;/span>&lt;span class="lnt">13
&lt;/span>&lt;span class="lnt">14
&lt;/span>&lt;span class="lnt">15
&lt;/span>&lt;span class="lnt">16
&lt;/span>&lt;span class="lnt">17
&lt;/span>&lt;span class="lnt">18
&lt;/span>&lt;span class="lnt">19
&lt;/span>&lt;span class="lnt">20
&lt;/span>&lt;span class="lnt">21
&lt;/span>&lt;span class="lnt">22
&lt;/span>&lt;span class="lnt">23
&lt;/span>&lt;span class="lnt">24
&lt;/span>&lt;span class="lnt">25
&lt;/span>&lt;span class="lnt">26
&lt;/span>&lt;span class="lnt">27
&lt;/span>&lt;span class="lnt">28
&lt;/span>&lt;span class="lnt">29
&lt;/span>&lt;span class="lnt">30
&lt;/span>&lt;span class="lnt">31
&lt;/span>&lt;span class="lnt">32
&lt;/span>&lt;span class="lnt">33
&lt;/span>&lt;span class="lnt">34
&lt;/span>&lt;span class="lnt">35
&lt;/span>&lt;span class="lnt">36
&lt;/span>&lt;span class="lnt">37
&lt;/span>&lt;span class="lnt">38
&lt;/span>&lt;span class="lnt">39
&lt;/span>&lt;span class="lnt">40
&lt;/span>&lt;span class="lnt">41
&lt;/span>&lt;span class="lnt">42
&lt;/span>&lt;span class="lnt">43
&lt;/span>&lt;span class="lnt">44
&lt;/span>&lt;span class="lnt">45
&lt;/span>&lt;span class="lnt">46
&lt;/span>&lt;span class="lnt">47
&lt;/span>&lt;span class="lnt">48
&lt;/span>&lt;span class="lnt">49
&lt;/span>&lt;span class="lnt">50
&lt;/span>&lt;span class="lnt">51
&lt;/span>&lt;span class="lnt">52
&lt;/span>&lt;span class="lnt">53
&lt;/span>&lt;span class="lnt">54
&lt;/span>&lt;span class="lnt">55
&lt;/span>&lt;span class="lnt">56
&lt;/span>&lt;span class="lnt">57
&lt;/span>&lt;span class="lnt">58
&lt;/span>&lt;span class="lnt">59
&lt;/span>&lt;span class="lnt">60
&lt;/span>&lt;span class="lnt">61
&lt;/span>&lt;span class="lnt">62
&lt;/span>&lt;span class="lnt">63
&lt;/span>&lt;span class="lnt">64
&lt;/span>&lt;span class="lnt">65
&lt;/span>&lt;span class="lnt">66
&lt;/span>&lt;span class="lnt">67
&lt;/span>&lt;span class="lnt">68
&lt;/span>&lt;span class="lnt">69
&lt;/span>&lt;span class="lnt">70
&lt;/span>&lt;span class="lnt">71
&lt;/span>&lt;span class="lnt">72
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-cpp" data-lang="cpp">&lt;span class="line">&lt;span class="cl">&lt;span class="cp">#include&lt;/span> &lt;span class="cpf">&amp;lt;windows.h&amp;gt;&lt;/span>&lt;span class="cp">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="cp">#include&lt;/span> &lt;span class="cpf">&amp;lt;winhttp.h&amp;gt;&lt;/span>&lt;span class="cp">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="cp">#include&lt;/span> &lt;span class="cpf">&amp;lt;iostream&amp;gt;&lt;/span>&lt;span class="cp">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="cp">&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="cp">#pragma comment(lib, &amp;#34;winhttp.lib&amp;#34;)
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="cp">&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="kt">bool&lt;/span> &lt;span class="nf">PostSlackMessage&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="k">const&lt;/span> &lt;span class="n">std&lt;/span>&lt;span class="o">::&lt;/span>&lt;span class="n">wstring&lt;/span>&lt;span class="o">&amp;amp;&lt;/span> &lt;span class="n">accessToken&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="k">const&lt;/span> &lt;span class="n">std&lt;/span>&lt;span class="o">::&lt;/span>&lt;span class="n">string&lt;/span>&lt;span class="o">&amp;amp;&lt;/span> &lt;span class="n">channel&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="k">const&lt;/span> &lt;span class="n">std&lt;/span>&lt;span class="o">::&lt;/span>&lt;span class="n">string&lt;/span>&lt;span class="o">&amp;amp;&lt;/span> &lt;span class="n">text&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">const&lt;/span> &lt;span class="kt">wchar_t&lt;/span>&lt;span class="o">*&lt;/span> &lt;span class="n">host&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="sa">L&lt;/span>&lt;span class="s">&amp;#34;slack.com&amp;#34;&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">const&lt;/span> &lt;span class="kt">wchar_t&lt;/span>&lt;span class="o">*&lt;/span> &lt;span class="n">path&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="sa">L&lt;/span>&lt;span class="s">&amp;#34;/api/chat.postMessage&amp;#34;&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">HINTERNET&lt;/span> &lt;span class="n">hSession&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">WinHttpOpen&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="sa">L&lt;/span>&lt;span class="s">&amp;#34;SlackPoster/1.0&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">WINHTTP_ACCESS_TYPE_DEFAULT_PROXY&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">WINHTTP_NO_PROXY_NAME&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">WINHTTP_NO_PROXY_BYPASS&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="mi">0&lt;/span>&lt;span class="p">);&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">if&lt;/span> &lt;span class="p">(&lt;/span>&lt;span class="o">!&lt;/span>&lt;span class="n">hSession&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="k">return&lt;/span> &lt;span class="nb">false&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">HINTERNET&lt;/span> &lt;span class="n">hConnect&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">WinHttpConnect&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">hSession&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">host&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">INTERNET_DEFAULT_HTTPS_PORT&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="mi">0&lt;/span>&lt;span class="p">);&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">if&lt;/span> &lt;span class="p">(&lt;/span>&lt;span class="o">!&lt;/span>&lt;span class="n">hConnect&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="k">return&lt;/span> &lt;span class="nb">false&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">HINTERNET&lt;/span> &lt;span class="n">hRequest&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">WinHttpOpenRequest&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">hConnect&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="sa">L&lt;/span>&lt;span class="s">&amp;#34;POST&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">path&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nb">NULL&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">WINHTTP_NO_REFERER&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">WINHTTP_DEFAULT_ACCEPT_TYPES&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">WINHTTP_FLAG_SECURE&lt;/span>&lt;span class="p">);&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1">// Cabeçalhos Authorization e Content-Type
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">&lt;/span> &lt;span class="n">std&lt;/span>&lt;span class="o">::&lt;/span>&lt;span class="n">wstring&lt;/span> &lt;span class="n">headers&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="sa">L&lt;/span>&lt;span class="s">&amp;#34;Content-Type: application/json&lt;/span>&lt;span class="se">\r\n&lt;/span>&lt;span class="s">&amp;#34;&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">headers&lt;/span> &lt;span class="o">+=&lt;/span> &lt;span class="sa">L&lt;/span>&lt;span class="s">&amp;#34;Authorization: Bearer &amp;#34;&lt;/span> &lt;span class="o">+&lt;/span> &lt;span class="n">accessToken&lt;/span> &lt;span class="o">+&lt;/span> &lt;span class="sa">L&lt;/span>&lt;span class="s">&amp;#34;&lt;/span>&lt;span class="se">\r\n&lt;/span>&lt;span class="s">&amp;#34;&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1">// Corpo JSON
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">&lt;/span> &lt;span class="n">std&lt;/span>&lt;span class="o">::&lt;/span>&lt;span class="n">string&lt;/span> &lt;span class="n">body&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">R&lt;/span>&lt;span class="s">&amp;#34;({&amp;#34;&lt;/span>&lt;span class="n">channel&lt;/span>&lt;span class="s">&amp;#34;:&amp;#34;&lt;/span>&lt;span class="p">)&lt;/span>&lt;span class="s">&amp;#34; + channel + R&amp;#34;&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s">&amp;#34;,&amp;#34;&lt;/span>&lt;span class="n">text&lt;/span>&lt;span class="s">&amp;#34;:&amp;#34;&lt;/span>&lt;span class="p">)&lt;/span>&lt;span class="s">&amp;#34; + text + R&amp;#34;&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s">&amp;#34;})&amp;#34;&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">BOOL&lt;/span> &lt;span class="n">result&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">WinHttpSendRequest&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">hRequest&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">headers&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">c_str&lt;/span>&lt;span class="p">(),&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">(&lt;/span>&lt;span class="n">DWORD&lt;/span>&lt;span class="p">)&lt;/span>&lt;span class="o">-&lt;/span>&lt;span class="mi">1&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">(&lt;/span>&lt;span class="n">LPVOID&lt;/span>&lt;span class="p">)&lt;/span>&lt;span class="n">body&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">c_str&lt;/span>&lt;span class="p">(),&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">body&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">length&lt;/span>&lt;span class="p">(),&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">body&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">length&lt;/span>&lt;span class="p">(),&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="mi">0&lt;/span>&lt;span class="p">);&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">if&lt;/span> &lt;span class="p">(&lt;/span>&lt;span class="o">!&lt;/span>&lt;span class="n">result&lt;/span> &lt;span class="o">||&lt;/span> &lt;span class="o">!&lt;/span>&lt;span class="n">WinHttpReceiveResponse&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">hRequest&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="nb">NULL&lt;/span>&lt;span class="p">))&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">std&lt;/span>&lt;span class="o">::&lt;/span>&lt;span class="n">cerr&lt;/span> &lt;span class="o">&amp;lt;&amp;lt;&lt;/span> &lt;span class="s">&amp;#34;Erro de envio&lt;/span>&lt;span class="se">\n&lt;/span>&lt;span class="s">&amp;#34;&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">return&lt;/span> &lt;span class="nb">false&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1">// Verificação do código de status
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">&lt;/span> &lt;span class="n">DWORD&lt;/span> &lt;span class="n">statusCode&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="mi">0&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">DWORD&lt;/span> &lt;span class="n">size&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="k">sizeof&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">statusCode&lt;/span>&lt;span class="p">);&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">WinHttpQueryHeaders&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">hRequest&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">WINHTTP_QUERY_STATUS_CODE&lt;/span> &lt;span class="o">|&lt;/span> &lt;span class="n">WINHTTP_QUERY_FLAG_NUMBER&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">WINHTTP_HEADER_NAME_BY_INDEX&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">&amp;amp;&lt;/span>&lt;span class="n">statusCode&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="o">&amp;amp;&lt;/span>&lt;span class="n">size&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">WINHTTP_NO_HEADER_INDEX&lt;/span>&lt;span class="p">);&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">WinHttpCloseHandle&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">hRequest&lt;/span>&lt;span class="p">);&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">WinHttpCloseHandle&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">hConnect&lt;/span>&lt;span class="p">);&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">WinHttpCloseHandle&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">hSession&lt;/span>&lt;span class="p">);&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">return&lt;/span> &lt;span class="p">(&lt;/span>&lt;span class="n">statusCode&lt;/span> &lt;span class="o">==&lt;/span> &lt;span class="mi">200&lt;/span>&lt;span class="p">);&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="kt">int&lt;/span> &lt;span class="nf">main&lt;/span>&lt;span class="p">()&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">std&lt;/span>&lt;span class="o">::&lt;/span>&lt;span class="n">wstring&lt;/span> &lt;span class="n">token&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="sa">L&lt;/span>&lt;span class="s">&amp;#34;xoxb-seu_token_de_acesso&amp;#34;&lt;/span>&lt;span class="p">;&lt;/span> &lt;span class="c1">// Token de acesso
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">&lt;/span> &lt;span class="n">std&lt;/span>&lt;span class="o">::&lt;/span>&lt;span class="n">string&lt;/span> &lt;span class="n">channel&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="s">&amp;#34;ID_DO_CANAL_ou_#general&amp;#34;&lt;/span>&lt;span class="p">;&lt;/span> &lt;span class="c1">// Ex: &amp;#34;#general&amp;#34; ou &amp;#34;C0123456789&amp;#34;
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">&lt;/span> &lt;span class="n">std&lt;/span>&lt;span class="o">::&lt;/span>&lt;span class="n">string&lt;/span> &lt;span class="n">message&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="s">&amp;#34;Testando postagem no Slack usando C++!&amp;#34;&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">if&lt;/span> &lt;span class="p">(&lt;/span>&lt;span class="n">PostSlackMessage&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">token&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">channel&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">message&lt;/span>&lt;span class="p">))&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">std&lt;/span>&lt;span class="o">::&lt;/span>&lt;span class="n">cout&lt;/span> &lt;span class="o">&amp;lt;&amp;lt;&lt;/span> &lt;span class="s">&amp;#34;Postagem bem-sucedida!&lt;/span>&lt;span class="se">\n&lt;/span>&lt;span class="s">&amp;#34;&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">}&lt;/span> &lt;span class="k">else&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">std&lt;/span>&lt;span class="o">::&lt;/span>&lt;span class="n">cerr&lt;/span> &lt;span class="o">&amp;lt;&amp;lt;&lt;/span> &lt;span class="s">&amp;#34;Falha na postagem.&lt;/span>&lt;span class="se">\n&lt;/span>&lt;span class="s">&amp;#34;&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">return&lt;/span> &lt;span class="mi">0&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;hr>
&lt;h2 id="-como-obter-o-id-do-canal">📌 Como obter o ID do canal
&lt;/h2>&lt;p>Apenas o nome do canal (ex: &lt;code>#general&lt;/code>) pode causar um erro.
A maneira confiável é usar o ID encontrado no URL da página do canal do Slack.&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">https://app.slack.com/client/Txxxxx/C0123456789
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> ↑Esta parte é o ID do canal
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;hr>
&lt;h2 id="-sobre-os-tipos-de-tokens-suplemento">✅ Sobre os tipos de tokens (Suplemento)
&lt;/h2>&lt;table>
&lt;thead>
&lt;tr>
&lt;th>Formato do Token&lt;/th>
&lt;th>Uso&lt;/th>
&lt;th>Exemplo&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>&lt;code>xoxb-...&lt;/code>&lt;/td>
&lt;td>Bot Token (Recomendado)&lt;/td>
&lt;td>Postar, editar, excluir&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>xoxp-...&lt;/code>&lt;/td>
&lt;td>User Token (Não recomendado)&lt;/td>
&lt;td>Operações não relacionadas a bot&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Refresh Token&lt;/td>
&lt;td>Para atualização de token a longo prazo&lt;/td>
&lt;td>Normalmente não utilizado&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;hr>
&lt;h2 id="-resumo">📝 Resumo
&lt;/h2>&lt;ul>
&lt;li>Para postar no Slack usando C++, o método da Slack Web API + Bearer Token é confiável&lt;/li>
&lt;li>Use o endpoint &lt;code>chat.postMessage&lt;/code> com HTTPS POST&lt;/li>
&lt;li>O token deve ser enviado no cabeçalho Bearer&lt;/li>
&lt;li>A &lt;strong>especificação de ID&lt;/strong> para o canal é confiável&lt;/li>
&lt;/ul></description></item><item><title>Como Postar Mensagens no Slack com C++ (Win32 API + WinHTTP) [Suporte a Webhook]</title><link>http://kenji.blog/pt/p/como-postar-mensagens-no-slack-com-cpp-win32-api-winhttp-webhook/</link><pubDate>Wed, 16 Jul 2025 19:42:56 +0900</pubDate><guid>http://kenji.blog/pt/p/como-postar-mensagens-no-slack-com-cpp-win32-api-winhttp-webhook/</guid><description>&lt;img src="http://kenji.blog/p/c-win32-api--winhttp%E3%81%A7slack%E3%81%AB%E3%83%A1%E3%83%83%E3%82%BB%E3%83%BC%E3%82%B8%E3%82%92%E6%8A%95%E7%A8%BF%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95webhook%E5%AF%BE%E5%BF%9C/img.png" alt="Featured image of post Como Postar Mensagens no Slack com C++ (Win32 API + WinHTTP) [Suporte a Webhook]" />&lt;h1 id="como-postar-mensagens-no-slack-com-c-win32-api--winhttp-suporte-a-webhook">Como Postar Mensagens no Slack com C++ (Win32 API + WinHTTP) [Suporte a Webhook]
&lt;/h1>&lt;p>Quero postar mensagens no Slack a partir do C++.
É muito comum em Node.js ou Python, mas os casos em que isso é feito com &amp;ldquo;C++ × Win32 API × WinHTTP&amp;rdquo; são raros, não é mesmo?&lt;/p>
&lt;p>Neste artigo, explicarei passo a passo &lt;strong>como enviar uma mensagem do C++ para o Slack usando a URL do Webhook&lt;/strong> de uma maneira fácil de entender.&lt;/p>
&lt;hr>
&lt;h2 id="-visão-geral">✅ Visão Geral
&lt;/h2>&lt;p>Para postar no Slack, siga as etapas abaixo.&lt;/p>
&lt;ol>
&lt;li>Obtenha a URL do Webhook (chave da API) do Slack&lt;/li>
&lt;li>Envie uma requisição &lt;code>POST&lt;/code> usando WinHTTP&lt;/li>
&lt;li>Construa o corpo da mensagem no formato JSON&lt;/li>
&lt;li>Verifique o resultado e pronto!&lt;/li>
&lt;/ol>
&lt;hr>
&lt;h2 id="-passo-1-como-obter-a-url-do-webhook-do-slack">🔑 Passo 1: Como Obter a URL do Webhook do Slack
&lt;/h2>&lt;p>No Slack, você pode postar facilmente mensagens de serviços externos usando o recurso Incoming Webhooks.&lt;/p>
&lt;h3 id="passos-para-obtenção">Passos para Obtenção
&lt;/h3>&lt;ol>
&lt;li>Acesse &lt;a class="link" href="https://api.slack.com/apps" target="_blank" rel="noopener"
>https://api.slack.com/apps&lt;/a>&lt;/li>
&lt;li>Clique em &lt;code>Create New App&lt;/code>&lt;/li>
&lt;li>Escolha &lt;code>From scratch&lt;/code>, defina o nome do aplicativo e selecione o workspace de destino&lt;/li>
&lt;li>No menu à esquerda, escolha &lt;strong>&amp;ldquo;Incoming Webhooks&amp;rdquo;&lt;/strong> e ative&lt;/li>
&lt;li>Clique em &lt;strong>&amp;ldquo;Add New Webhook to Workspace&amp;rdquo;&lt;/strong> e selecione um canal&lt;/li>
&lt;li>Copie a URL gerada (Exemplo: &lt;code>https://hooks.slack.com/services/xxx/yyy/zzz&lt;/code>)&lt;/li>
&lt;/ol>
&lt;p>Essa URL funcionará como uma chave de API.&lt;/p>
&lt;hr>
&lt;h2 id="-passo-2-enviar-mensagem-para-o-slack-com-código-c">💻 Passo 2: Enviar Mensagem para o Slack com Código C++
&lt;/h2>&lt;h3 id="tecnologias-utilizadas">Tecnologias Utilizadas
&lt;/h3>&lt;ul>
&lt;li>Win32 API&lt;/li>
&lt;li>WinHTTP (Biblioteca Padrão)&lt;/li>
&lt;li>Mensagem no formato JSON&lt;/li>
&lt;/ul>
&lt;h3 id="código-de-exemplo-postagem-no-slack">Código de Exemplo (Postagem no Slack)
&lt;/h3>&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt"> 1
&lt;/span>&lt;span class="lnt"> 2
&lt;/span>&lt;span class="lnt"> 3
&lt;/span>&lt;span class="lnt"> 4
&lt;/span>&lt;span class="lnt"> 5
&lt;/span>&lt;span class="lnt"> 6
&lt;/span>&lt;span class="lnt"> 7
&lt;/span>&lt;span class="lnt"> 8
&lt;/span>&lt;span class="lnt"> 9
&lt;/span>&lt;span class="lnt">10
&lt;/span>&lt;span class="lnt">11
&lt;/span>&lt;span class="lnt">12
&lt;/span>&lt;span class="lnt">13
&lt;/span>&lt;span class="lnt">14
&lt;/span>&lt;span class="lnt">15
&lt;/span>&lt;span class="lnt">16
&lt;/span>&lt;span class="lnt">17
&lt;/span>&lt;span class="lnt">18
&lt;/span>&lt;span class="lnt">19
&lt;/span>&lt;span class="lnt">20
&lt;/span>&lt;span class="lnt">21
&lt;/span>&lt;span class="lnt">22
&lt;/span>&lt;span class="lnt">23
&lt;/span>&lt;span class="lnt">24
&lt;/span>&lt;span class="lnt">25
&lt;/span>&lt;span class="lnt">26
&lt;/span>&lt;span class="lnt">27
&lt;/span>&lt;span class="lnt">28
&lt;/span>&lt;span class="lnt">29
&lt;/span>&lt;span class="lnt">30
&lt;/span>&lt;span class="lnt">31
&lt;/span>&lt;span class="lnt">32
&lt;/span>&lt;span class="lnt">33
&lt;/span>&lt;span class="lnt">34
&lt;/span>&lt;span class="lnt">35
&lt;/span>&lt;span class="lnt">36
&lt;/span>&lt;span class="lnt">37
&lt;/span>&lt;span class="lnt">38
&lt;/span>&lt;span class="lnt">39
&lt;/span>&lt;span class="lnt">40
&lt;/span>&lt;span class="lnt">41
&lt;/span>&lt;span class="lnt">42
&lt;/span>&lt;span class="lnt">43
&lt;/span>&lt;span class="lnt">44
&lt;/span>&lt;span class="lnt">45
&lt;/span>&lt;span class="lnt">46
&lt;/span>&lt;span class="lnt">47
&lt;/span>&lt;span class="lnt">48
&lt;/span>&lt;span class="lnt">49
&lt;/span>&lt;span class="lnt">50
&lt;/span>&lt;span class="lnt">51
&lt;/span>&lt;span class="lnt">52
&lt;/span>&lt;span class="lnt">53
&lt;/span>&lt;span class="lnt">54
&lt;/span>&lt;span class="lnt">55
&lt;/span>&lt;span class="lnt">56
&lt;/span>&lt;span class="lnt">57
&lt;/span>&lt;span class="lnt">58
&lt;/span>&lt;span class="lnt">59
&lt;/span>&lt;span class="lnt">60
&lt;/span>&lt;span class="lnt">61
&lt;/span>&lt;span class="lnt">62
&lt;/span>&lt;span class="lnt">63
&lt;/span>&lt;span class="lnt">64
&lt;/span>&lt;span class="lnt">65
&lt;/span>&lt;span class="lnt">66
&lt;/span>&lt;span class="lnt">67
&lt;/span>&lt;span class="lnt">68
&lt;/span>&lt;span class="lnt">69
&lt;/span>&lt;span class="lnt">70
&lt;/span>&lt;span class="lnt">71
&lt;/span>&lt;span class="lnt">72
&lt;/span>&lt;span class="lnt">73
&lt;/span>&lt;span class="lnt">74
&lt;/span>&lt;span class="lnt">75
&lt;/span>&lt;span class="lnt">76
&lt;/span>&lt;span class="lnt">77
&lt;/span>&lt;span class="lnt">78
&lt;/span>&lt;span class="lnt">79
&lt;/span>&lt;span class="lnt">80
&lt;/span>&lt;span class="lnt">81
&lt;/span>&lt;span class="lnt">82
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-cpp" data-lang="cpp">&lt;span class="line">&lt;span class="cl">&lt;span class="cp">#include&lt;/span> &lt;span class="cpf">&amp;lt;windows.h&amp;gt;&lt;/span>&lt;span class="cp">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="cp">#include&lt;/span> &lt;span class="cpf">&amp;lt;winhttp.h&amp;gt;&lt;/span>&lt;span class="cp">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="cp">#include&lt;/span> &lt;span class="cpf">&amp;lt;iostream&amp;gt;&lt;/span>&lt;span class="cp">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="cp">&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="cp">#pragma comment(lib, &amp;#34;winhttp.lib&amp;#34;)
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="cp">&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="kt">bool&lt;/span> &lt;span class="nf">PostToSlack&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="k">const&lt;/span> &lt;span class="n">std&lt;/span>&lt;span class="o">::&lt;/span>&lt;span class="n">wstring&lt;/span>&lt;span class="o">&amp;amp;&lt;/span> &lt;span class="n">webhookUrl&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="k">const&lt;/span> &lt;span class="n">std&lt;/span>&lt;span class="o">::&lt;/span>&lt;span class="n">string&lt;/span>&lt;span class="o">&amp;amp;&lt;/span> &lt;span class="n">messageJson&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1">// Decomposição da URL
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">&lt;/span> &lt;span class="n">URL_COMPONENTS&lt;/span> &lt;span class="n">urlComp&lt;/span>&lt;span class="p">{};&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="kt">wchar_t&lt;/span> &lt;span class="n">hostName&lt;/span>&lt;span class="p">[&lt;/span>&lt;span class="mi">256&lt;/span>&lt;span class="p">];&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="kt">wchar_t&lt;/span> &lt;span class="n">urlPath&lt;/span>&lt;span class="p">[&lt;/span>&lt;span class="mi">1024&lt;/span>&lt;span class="p">];&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">urlComp&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">dwStructSize&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="k">sizeof&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">urlComp&lt;/span>&lt;span class="p">);&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">urlComp&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">lpszHostName&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">hostName&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">urlComp&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">dwHostNameLength&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">_countof&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">hostName&lt;/span>&lt;span class="p">);&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">urlComp&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">lpszUrlPath&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">urlPath&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">urlComp&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">dwUrlPathLength&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">_countof&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">urlPath&lt;/span>&lt;span class="p">);&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">if&lt;/span> &lt;span class="p">(&lt;/span>&lt;span class="o">!&lt;/span>&lt;span class="n">WinHttpCrackUrl&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">webhookUrl&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">c_str&lt;/span>&lt;span class="p">(),&lt;/span> &lt;span class="mi">0&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="mi">0&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="o">&amp;amp;&lt;/span>&lt;span class="n">urlComp&lt;/span>&lt;span class="p">))&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">std&lt;/span>&lt;span class="o">::&lt;/span>&lt;span class="n">wcerr&lt;/span> &lt;span class="o">&amp;lt;&amp;lt;&lt;/span> &lt;span class="sa">L&lt;/span>&lt;span class="s">&amp;#34;Falha ao decompor a URL&lt;/span>&lt;span class="se">\n&lt;/span>&lt;span class="s">&amp;#34;&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">return&lt;/span> &lt;span class="nb">false&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1">// Conexão e Sessão HTTP
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">&lt;/span> &lt;span class="n">HINTERNET&lt;/span> &lt;span class="n">hSession&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">WinHttpOpen&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="sa">L&lt;/span>&lt;span class="s">&amp;#34;SlackPoster/1.0&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">WINHTTP_ACCESS_TYPE_DEFAULT_PROXY&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">WINHTTP_NO_PROXY_NAME&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">WINHTTP_NO_PROXY_BYPASS&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="mi">0&lt;/span>&lt;span class="p">);&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">HINTERNET&lt;/span> &lt;span class="n">hConnect&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">WinHttpConnect&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">hSession&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">hostName&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">urlComp&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">nPort&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="mi">0&lt;/span>&lt;span class="p">);&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">HINTERNET&lt;/span> &lt;span class="n">hRequest&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">WinHttpOpenRequest&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">hConnect&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="sa">L&lt;/span>&lt;span class="s">&amp;#34;POST&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">urlPath&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nb">NULL&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">WINHTTP_NO_REFERER&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">WINHTTP_DEFAULT_ACCEPT_TYPES&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">WINHTTP_FLAG_SECURE&lt;/span>&lt;span class="p">);&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">std&lt;/span>&lt;span class="o">::&lt;/span>&lt;span class="n">wstring&lt;/span> &lt;span class="n">headers&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="sa">L&lt;/span>&lt;span class="s">&amp;#34;Content-Type: application/json&lt;/span>&lt;span class="se">\r\n&lt;/span>&lt;span class="s">&amp;#34;&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">BOOL&lt;/span> &lt;span class="n">result&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">WinHttpSendRequest&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">hRequest&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">headers&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">c_str&lt;/span>&lt;span class="p">(),&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">-&lt;/span>&lt;span class="mi">1&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">(&lt;/span>&lt;span class="n">LPVOID&lt;/span>&lt;span class="p">)&lt;/span>&lt;span class="n">messageJson&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">c_str&lt;/span>&lt;span class="p">(),&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">messageJson&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">length&lt;/span>&lt;span class="p">(),&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">messageJson&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">length&lt;/span>&lt;span class="p">(),&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="mi">0&lt;/span>&lt;span class="p">);&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">if&lt;/span> &lt;span class="p">(&lt;/span>&lt;span class="o">!&lt;/span>&lt;span class="n">result&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">std&lt;/span>&lt;span class="o">::&lt;/span>&lt;span class="n">cerr&lt;/span> &lt;span class="o">&amp;lt;&amp;lt;&lt;/span> &lt;span class="s">&amp;#34;Falha na requisição de envio&lt;/span>&lt;span class="se">\n&lt;/span>&lt;span class="s">&amp;#34;&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">return&lt;/span> &lt;span class="nb">false&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">WinHttpReceiveResponse&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">hRequest&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="nb">NULL&lt;/span>&lt;span class="p">);&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">DWORD&lt;/span> &lt;span class="n">statusCode&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="mi">0&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">DWORD&lt;/span> &lt;span class="n">size&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="k">sizeof&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">statusCode&lt;/span>&lt;span class="p">);&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">WinHttpQueryHeaders&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">hRequest&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">WINHTTP_QUERY_STATUS_CODE&lt;/span> &lt;span class="o">|&lt;/span> &lt;span class="n">WINHTTP_QUERY_FLAG_NUMBER&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">WINHTTP_HEADER_NAME_BY_INDEX&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">&amp;amp;&lt;/span>&lt;span class="n">statusCode&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="o">&amp;amp;&lt;/span>&lt;span class="n">size&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">WINHTTP_NO_HEADER_INDEX&lt;/span>&lt;span class="p">);&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1">// Liberação de recursos
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">&lt;/span> &lt;span class="n">WinHttpCloseHandle&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">hRequest&lt;/span>&lt;span class="p">);&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">WinHttpCloseHandle&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">hConnect&lt;/span>&lt;span class="p">);&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">WinHttpCloseHandle&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">hSession&lt;/span>&lt;span class="p">);&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">return&lt;/span> &lt;span class="p">(&lt;/span>&lt;span class="n">statusCode&lt;/span> &lt;span class="o">==&lt;/span> &lt;span class="mi">200&lt;/span>&lt;span class="p">);&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="kt">int&lt;/span> &lt;span class="nf">main&lt;/span>&lt;span class="p">()&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">std&lt;/span>&lt;span class="o">::&lt;/span>&lt;span class="n">wstring&lt;/span> &lt;span class="n">webhookUrl&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="sa">L&lt;/span>&lt;span class="s">&amp;#34;https://hooks.slack.com/services/xxx/yyy/zzz&amp;#34;&lt;/span>&lt;span class="p">;&lt;/span> &lt;span class="c1">// Substitua pelo seu Webhook
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">std&lt;/span>&lt;span class="o">::&lt;/span>&lt;span class="n">string&lt;/span> &lt;span class="n">message&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">R&lt;/span>&lt;span class="s">&amp;#34;({&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="s">&amp;#34;text&amp;#34;&lt;/span>&lt;span class="o">:&lt;/span> &lt;span class="s">&amp;#34;Hello from C++ :rocket:&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="s">&amp;#34;username&amp;#34;&lt;/span>&lt;span class="o">:&lt;/span> &lt;span class="s">&amp;#34;C++ Bot&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="s">&amp;#34;icon_emoji&amp;#34;&lt;/span>&lt;span class="o">:&lt;/span> &lt;span class="s">&amp;#34;:robot_face:&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">})&lt;/span>&lt;span class="s">&amp;#34;;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">if&lt;/span> &lt;span class="p">(&lt;/span>&lt;span class="n">PostToSlack&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">webhookUrl&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">message&lt;/span>&lt;span class="p">))&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">std&lt;/span>&lt;span class="o">::&lt;/span>&lt;span class="n">cout&lt;/span> &lt;span class="o">&amp;lt;&amp;lt;&lt;/span> &lt;span class="s">&amp;#34;Postagem realizada com sucesso!&lt;/span>&lt;span class="se">\n&lt;/span>&lt;span class="s">&amp;#34;&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">}&lt;/span> &lt;span class="k">else&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">std&lt;/span>&lt;span class="o">::&lt;/span>&lt;span class="n">cerr&lt;/span> &lt;span class="o">&amp;lt;&amp;lt;&lt;/span> &lt;span class="s">&amp;#34;Falha na postagem.&lt;/span>&lt;span class="se">\n&lt;/span>&lt;span class="s">&amp;#34;&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">return&lt;/span> &lt;span class="mi">0&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;hr>
&lt;h2 id="-personalização-da-mensagem-json">🧪 Personalização da Mensagem JSON
&lt;/h2>&lt;p>No Webhook do Slack, você pode incluir os seguintes parâmetros:&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;span class="lnt">4
&lt;/span>&lt;span class="lnt">5
&lt;/span>&lt;span class="lnt">6
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-json" data-lang="json">&lt;span class="line">&lt;span class="cl">&lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;text&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;Conteúdo da notificação&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;username&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;Nome do Bot&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;icon_emoji&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;:rocket:&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;channel&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;#nome-do-canal-desejado&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;hr>
&lt;h2 id="-notas-adicionais">📌 Notas Adicionais
&lt;/h2>&lt;ul>
&lt;li>Certifique-se de especificar &lt;code>&amp;quot;application/json&amp;quot;&lt;/code> para o &lt;code>Content-Type&lt;/code>&lt;/li>
&lt;li>Passe a URL do Webhook como &lt;code>wstring&lt;/code> diretamente (sem necessidade de codificação de URL)&lt;/li>
&lt;li>Como é comunicação HTTPS, não se esqueça de usar &lt;code>WINHTTP_FLAG_SECURE&lt;/code>&lt;/li>
&lt;/ul>
&lt;hr>
&lt;h2 id="-bônus-exemplo-de-confirmação-de-postagem-no-slack">🎉 Bônus: Exemplo de Confirmação de Postagem no Slack
&lt;/h2>&lt;p>Ele será exibido no Slack assim:&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">[C++ Bot]
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">Hello from C++ :rocket:
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;hr>
&lt;h2 id="-resumo">✍️ Resumo
&lt;/h2>&lt;table>
&lt;thead>
&lt;tr>
&lt;th>Item&lt;/th>
&lt;th>Conteúdo&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>Método de postagem&lt;/td>
&lt;td>Webhook (Incoming Webhooks)&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Biblioteca de comunicação&lt;/td>
&lt;td>WinHTTP&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Formato de dados&lt;/td>
&lt;td>JSON&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Parâmetros disponíveis&lt;/td>
&lt;td>text, username, icon_emoji, channel, etc.&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;p>Se você pensou &amp;ldquo;&amp;hellip;Integração do Slack em C++?&amp;rdquo;, agora você pode incorporar um bot de notificações a partir de hoje!&lt;/p>
&lt;hr>
&lt;h2 id="-próxima-vez">🚀 Próxima Vez?
&lt;/h2>&lt;p>Se estiver interessado, na próxima vez:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Anexo de arquivos&lt;/strong>&lt;/li>
&lt;li>&lt;strong>UI com botões&lt;/strong>&lt;/li>
&lt;li>&lt;strong>Operações flexíveis de API com Slack App + OAuth2&lt;/strong>&lt;/li>
&lt;/ul>
&lt;p>Podemos apresentar uma integração ainda mais avançada com o Slack!&lt;/p></description></item><item><title>Market-in e Product-out</title><link>http://kenji.blog/pt/p/market-in-and-product-out/</link><pubDate>Tue, 15 Jul 2025 20:18:22 +0900</pubDate><guid>http://kenji.blog/pt/p/market-in-and-product-out/</guid><description>&lt;img src="http://kenji.blog/p/%E3%83%9E%E3%83%BC%E3%82%B1%E3%83%83%E3%83%88%E3%82%A4%E3%83%B3%E3%81%A8%E3%83%97%E3%83%AD%E3%83%80%E3%82%AF%E3%83%88%E3%82%A2%E3%82%A6%E3%83%88/img.png" alt="Featured image of post Market-in e Product-out" />&lt;h1 id="market-in-e-product-out">Market-in e Product-out
&lt;/h1>&lt;p>Olá, aqui é o kenji.&lt;/p>
&lt;p>Às vezes em livros de negócios ou propostas de projetos,&lt;/p>
&lt;blockquote>
&lt;p>&amp;ldquo;Nossa estratégia é market-in&amp;rdquo;
&amp;ldquo;Este é do tipo product-out&amp;rdquo;&lt;/p>
&lt;/blockquote>
&lt;p>Vejo coisas assim sendo ditas, mas&amp;hellip;&lt;/p>
&lt;p>&lt;strong>Espera, Market-in? Product-out? Qual é o melhor???&lt;/strong>&lt;/p>
&lt;p>Você não se pergunta isso?&lt;/p>
&lt;p>Então, desta vez, tentarei explicar esse tal de &amp;ldquo;market-in&amp;rdquo; e &amp;ldquo;product-out&amp;rdquo; de forma simples, com uma visão um pouco crítica.&lt;/p>
&lt;hr>
&lt;h2 id="resumindo">Resumindo&amp;hellip;
&lt;/h2>&lt;ul>
&lt;li>&lt;strong>Market-in&lt;/strong> : Ouvir a voz do mercado (market) e criar produtos que atendam a ela.&lt;/li>
&lt;li>&lt;strong>Product-out&lt;/strong> : Criar o que nós achamos bom (product) e lançar para o mundo.&lt;/li>
&lt;/ul>
&lt;p>É só isso. Simples.&lt;/p>
&lt;hr>
&lt;h2 id="por-exemplo-em-uma-loja-de-ramen">Por exemplo, em uma loja de ramen&amp;hellip;
&lt;/h2>&lt;p>Uma loja de ramen market-in diria:
&amp;ldquo;O ramen estilo Iekei está em alta ultimamente. Certo, vamos caprichar na gordura e no alho!&amp;rdquo;&lt;/p>
&lt;p>Uma loja de ramen product-out diria:
&amp;ldquo;Esse meu ramen de leite de soja, manjericão e sal é incrível, então coma!&amp;rdquo;&lt;/p>
&lt;hr>
&lt;h2 id="qual-é-a-resposta-certa-ambas-estão-certas">Qual é a resposta certa? Ambas estão certas.
&lt;/h2>&lt;p>O market-in tem uma &amp;ldquo;alta probabilidade de venda&amp;rdquo; porque se aproxima das necessidades do cliente, mas é difícil gerar ideias revolucionárias ou rupturas.&lt;/p>
&lt;p>O product-out é sobre &amp;ldquo;dar forma à justiça em que acreditamos&amp;rdquo;, por isso é ousado e atraente, mas se errar, não ressoa com ninguém.&lt;/p>
&lt;hr>
&lt;h2 id="o-iphone-parece-ser-product-out">O iPhone parece ser product-out
&lt;/h2>&lt;p>Na época em que as pessoas diziam &amp;ldquo;Não precisamos de smartphones&amp;rdquo;, a Apple lançou o iPhone.&lt;/p>
&lt;p>Isso é &lt;strong>totalmente product-out&lt;/strong> um exemplo de sucesso.&lt;/p>
&lt;p>Se tivessem ouvido a voz dos usuários, teria acabado com &amp;ldquo;Um celular sem teclado? Impossível.&amp;rdquo;&lt;/p>
&lt;hr>
&lt;h2 id="mas-product-out-pode-facilmente-virar-satisfação-pessoal">Mas product-out pode facilmente virar &amp;ldquo;satisfação pessoal&amp;rdquo;
&lt;/h2>&lt;p>Às vezes, algumas empresas ou pessoas dizem: &amp;ldquo;Nós somos do tipo product-out&amp;rdquo;, mas&amp;hellip;&lt;/p>
&lt;blockquote>
&lt;p>Espera, isso não é apenas ignorar o usuário?&lt;/p>
&lt;/blockquote>
&lt;p>Às vezes eu penso assim.&lt;/p>
&lt;p>&amp;ldquo;Criamos porque queríamos criar. Mas não vendeu.&amp;rdquo;
Isso não é product-out, é &amp;ldquo;egoísmo-out&amp;rdquo;.&lt;/p>
&lt;hr>
&lt;h2 id="market-in-também-tem-suas-armadilhas">Market-in também tem suas armadilhas
&lt;/h2>&lt;p>Por outro lado, o market-in também não é onipotente.&lt;/p>
&lt;p>Se você disser: &amp;ldquo;Vamos fazer tudo o que os usuários pedem!&amp;rdquo;, o núcleo do produto se perde e acaba não atraindo ninguém.&lt;/p>
&lt;p>Você continua adicionando recursos e, de repente, é uma ferramenta caótica. É esse tipo de coisa.&lt;/p>
&lt;hr>
&lt;h2 id="os-realmente-incríveis-são-os-que-fazem-ambos">Os realmente incríveis são &amp;ldquo;os que fazem ambos&amp;rdquo;
&lt;/h2>&lt;p>Produtos incríveis apresentam de forma brilhante &amp;ldquo;o que os usuários realmente queriam, mas não conseguiam expressar em palavras&amp;rdquo;.&lt;/p>
&lt;p>Ou seja, &amp;ldquo;obter empatia de forma market-in com uma mentalidade de product-out&amp;rdquo;.&lt;/p>
&lt;p>Parece fácil dizer, mas é extremamente difícil.
Mas, se conseguir, de repente se torna um &amp;ldquo;produto divino&amp;rdquo;.&lt;/p>
&lt;hr>
&lt;h2 id="conclusão-mais-do-que-palavras-a-reação-do-usuário-é-tudo">Conclusão: Mais do que palavras, a reação do usuário é tudo
&lt;/h2>&lt;p>Market-in ou product-out.
Qual é o certo é uma pergunta sem muito sentido.&lt;/p>
&lt;p>&lt;strong>&amp;ldquo;Chegou realmente ao coração do usuário?&amp;rdquo; é tudo&lt;/strong> o que importa, eu acho.&lt;/p>
&lt;p>&amp;ldquo;Com qual tipo de estratégia estamos trabalhando&amp;rdquo;
Eu acho que está tudo bem desde que você possa escrever isso nos materiais de marketing depois.&lt;/p>
&lt;hr>
&lt;p>Então, essa foi a história do market-in e product-out!&lt;/p>
&lt;p>Acho que o mais saudável é não se deixar levar por palavras difíceis e pensar &amp;ldquo;No final, como podemos deixar as pessoas felizes?&amp;rdquo;.&lt;/p>
&lt;p>Até mais~.&lt;/p></description></item><item><title>コラッツ予想</title><link>http://kenji.blog/pt/p/%E3%82%B3%E3%83%A9%E3%83%83%E3%83%84%E4%BA%88%E6%83%B3/</link><pubDate>Tue, 15 Jul 2025 18:03:03 +0900</pubDate><guid>http://kenji.blog/pt/p/%E3%82%B3%E3%83%A9%E3%83%83%E3%83%84%E4%BA%88%E6%83%B3/</guid><description>&lt;img src="http://kenji.blog/p/%E3%82%B3%E3%83%A9%E3%83%83%E3%83%84%E4%BA%88%E6%83%B3/img.png" alt="Featured image of post コラッツ予想" />&lt;h1 id="é-verdade-que-qualquer-número-termina-em-1--brincando-com-a-conjectura-de-collatz">&amp;ldquo;É verdade que qualquer número termina em 1?&amp;rdquo; ── Brincando com a Conjectura de Collatz
&lt;/h1>&lt;p>Olá! Aqui é o kenji.&lt;/p>
&lt;p>De repente, se você ouvir &amp;ldquo;uma regra em que qualquer número finalmente se torna 1&amp;rdquo;,
não parece um pouco estranho?&lt;/p>
&lt;blockquote>
&lt;p>Por exemplo, 19, 87 ou até 1000000.
Se você manipular os números de acordo com uma regra simples, por algum motivo, no final converge para &amp;ldquo;1&amp;rdquo;.&lt;/p>
&lt;/blockquote>
&lt;p>Essa história de sonho é a ** Conjectura de Collatz (Collatz Conjecture) **.&lt;/p>
&lt;hr>
&lt;h2 id="afinal-o-que-é-a-conjectura-de-collatz">Afinal, o que é a Conjectura de Collatz?
&lt;/h2>&lt;p>Primeiro, vou apresentar as regras.&lt;/p>
&lt;ul>
&lt;li>
&lt;p>Início: Escolha qualquer ** número inteiro positivo **.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Operação:&lt;/p>
&lt;ul>
&lt;li>Se for par → reduza pela metade (n → n / 2)&lt;/li>
&lt;li>Se for ímpar → multiplique por 3 e adicione 1 (n → 3n + 1)&lt;/li>
&lt;/ul>
&lt;/li>
&lt;/ul>
&lt;p>Repetindo isso várias vezes, é uma conjectura de que ** qualquer número finalmente chegará a 1 **.&lt;/p>
&lt;p>Por exemplo, começando com &lt;code>6&lt;/code>:&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">6 → 3 → 10 → 5 → 16 → 8 → 4 → 2 → 1
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>Tornou-se &amp;ldquo;1&amp;rdquo; direitinho. Bem-vindo de volta!&lt;/p>
&lt;hr>
&lt;h2 id="vamos-fazer-isso-com-código-collatz-em-python">Vamos fazer isso com código: Collatz em Python
&lt;/h2>&lt;p>Bem, nessas horas, é mais rápido testar com código!
Vamos imprimir a &amp;ldquo;Sequência de Collatz&amp;rdquo; em Python.&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt"> 1
&lt;/span>&lt;span class="lnt"> 2
&lt;/span>&lt;span class="lnt"> 3
&lt;/span>&lt;span class="lnt"> 4
&lt;/span>&lt;span class="lnt"> 5
&lt;/span>&lt;span class="lnt"> 6
&lt;/span>&lt;span class="lnt"> 7
&lt;/span>&lt;span class="lnt"> 8
&lt;/span>&lt;span class="lnt"> 9
&lt;/span>&lt;span class="lnt">10
&lt;/span>&lt;span class="lnt">11
&lt;/span>&lt;span class="lnt">12
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-python" data-lang="python">&lt;span class="line">&lt;span class="cl">&lt;span class="k">def&lt;/span> &lt;span class="nf">collatz&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">n&lt;/span>&lt;span class="p">):&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">steps&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="p">[&lt;/span>&lt;span class="n">n&lt;/span>&lt;span class="p">]&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">while&lt;/span> &lt;span class="n">n&lt;/span> &lt;span class="o">!=&lt;/span> &lt;span class="mi">1&lt;/span>&lt;span class="p">:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">if&lt;/span> &lt;span class="n">n&lt;/span> &lt;span class="o">%&lt;/span> &lt;span class="mi">2&lt;/span> &lt;span class="o">==&lt;/span> &lt;span class="mi">0&lt;/span>&lt;span class="p">:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">n&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">n&lt;/span> &lt;span class="o">//&lt;/span> &lt;span class="mi">2&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">else&lt;/span>&lt;span class="p">:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">n&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="mi">3&lt;/span> &lt;span class="o">*&lt;/span> &lt;span class="n">n&lt;/span> &lt;span class="o">+&lt;/span> &lt;span class="mi">1&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">steps&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">append&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">n&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">return&lt;/span> &lt;span class="n">steps&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># Exemplo: começar com 19&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nb">print&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">collatz&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="mi">19&lt;/span>&lt;span class="p">))&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>Ao executar:&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">[19, 58, 29, 88, 44, 22, 11, 34, 17, 52, 26, 13, 40, 20, 10, 5, 16, 8, 4, 2, 1]
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>Chega a 1 brilhantemente.
Embora faça muitos desvios, no final chega ao objetivo!&lt;/p>
&lt;p>A propósito, se você começar com 29, também chegará a 1 da mesma forma.&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-python" data-lang="python">&lt;span class="line">&lt;span class="cl">&lt;span class="nb">print&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">collatz&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="mi">29&lt;/span>&lt;span class="p">))&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>Ao executar:&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;span class="lnt">4
&lt;/span>&lt;span class="lnt">5
&lt;/span>&lt;span class="lnt">6
&lt;/span>&lt;span class="lnt">7
&lt;/span>&lt;span class="lnt">8
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">[27, 82, 41, 124, 62, 31, 94, 47, 142, 71, 214, 107, 322, 161, 484, 242,
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">121, 364, 182, 91, 274, 137, 412, 206, 103, 310, 155, 466, 233, 700, 350,
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">175, 526, 263, 790, 395, 1186, 593, 1780, 890, 445, 1336, 668, 334, 167,
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">502, 251, 754, 377, 1132, 566, 283, 850, 425, 1276, 638, 319, 958, 479,
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">1438, 719, 2158, 1079, 3238, 1619, 4858, 2429, 7288, 3644, 1822, 911,
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">2734, 1367, 4102, 2051, 6154, 3077, 9232, 4616, 2308, 1154, 577, 1732,
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">866, 433, 1300, 650, 325, 976, 488, 244, 122, 61, 184, 92, 46, 23, 70, 35,
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">106, 53, 160, 80, 40, 20, 10, 5, 16, 8, 4, 2, 1]
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>Uau, leva 111 passos!&lt;/p>
&lt;p>E também, há cenas em que infla para mais de 9000 no caminho.
É um padrão em que você faz um desvio insano antes de chegar ao fim.&lt;/p>
&lt;hr>
&lt;h2 id="e-então-o-que-é-tão-incrível-sobre-isso">E então, o que é tão incrível sobre isso?
&lt;/h2>&lt;p>O que é incrível sobre essa conjectura é,&lt;/p>
&lt;blockquote>
&lt;p>** Embora não tenha sido provado, parece que qualquer número que você tentar se tornará 1 **&lt;/p>
&lt;/blockquote>
&lt;p>É isso.&lt;/p>
&lt;p>Eh? Então, e 1 trilhão, ou 10 quatrilhões&amp;hellip;?&lt;/p>
&lt;p>Para quem pensou assim, muito perspicaz.
Na verdade, usando computadores, foi confirmado até cerca de &amp;ldquo;2 elevado a 68&amp;rdquo;,
e ** todos chegaram a 1 **. Inacreditável&amp;hellip;&lt;/p>
&lt;p>Mas, ** não foi provado teoricamente que &amp;ldquo;todos serão assim&amp;rdquo; **.
Este é o chamado &amp;ldquo;problema não resolvido&amp;rdquo; no mundo da matemática.&lt;/p>
&lt;hr>
&lt;h2 id="quem-é-o-sr-collatz">Quem é o Sr. Collatz?
&lt;/h2>&lt;p>Então, lendo até aqui, você provavelmente está pensando &amp;ldquo;Afinal, quem é Collatz?&amp;rdquo;.
Vou apresentá-lo adequadamente!&lt;/p>
&lt;ul>
&lt;li>Nome: ** Lothar Collatz (Lothar Collatz) **&lt;/li>
&lt;li>Nacionalidade: Alemanha&lt;/li>
&lt;li>Ano de nascimento: 1910 a 1990&lt;/li>
&lt;li>Título: Matemático (ativo nos campos da análise funcional e teoria dos números)&lt;/li>
&lt;/ul>
&lt;p>Ele propôs essa conjectura em 1937,
e desde então, por mais de 80 anos, ** ninguém foi capaz de prová-la ou refutá-la **.&lt;/p>
&lt;p>A propósito, este problema é tão simples, mas tão profundo que
até o Paul Erdős (matemático super famoso) disse algo assim.&lt;/p>
&lt;blockquote>
&lt;p>&amp;ldquo;A matemática ainda é imatura para lidar com Collatz&amp;rdquo;&lt;/p>
&lt;/blockquote>
&lt;p>Em outras palavras, a teoria de que a matemática da humanidade ainda não alcançou este mistério&amp;hellip;&lt;/p>
&lt;hr>
&lt;h2 id="fórmulas-matemáticas-difíceis-não-são-necessárias">&amp;ldquo;Fórmulas matemáticas difíceis&amp;rdquo; não são necessárias
&lt;/h2>&lt;p>A coisa boa sobre a Conjectura de Collatz é que ** qualquer um pode jogar **.&lt;/p>
&lt;p>Você pode fazer isso com papel e caneta.
Se você escrever o código em Python, pode testá-lo automaticamente.
E mesmo assim, ** os matemáticos de ponta estão levando isso a sério **.&lt;/p>
&lt;p>De alguma forma, não é emocionante?&lt;/p>
&lt;hr>
&lt;h2 id="bônus-código-para-testar-tudo-de-uma-vez">Bônus: Código para testar tudo de uma vez
&lt;/h2>&lt;p>Também postarei um código para testar vários números ao mesmo tempo.&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-python" data-lang="python">&lt;span class="line">&lt;span class="cl">&lt;span class="k">for&lt;/span> &lt;span class="n">n&lt;/span> &lt;span class="ow">in&lt;/span> &lt;span class="nb">range&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="mi">1&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="mi">21&lt;/span>&lt;span class="p">):&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">steps&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">collatz&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">n&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nb">print&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="sa">f&lt;/span>&lt;span class="s2">&amp;#34;&lt;/span>&lt;span class="si">{&lt;/span>&lt;span class="n">n&lt;/span>&lt;span class="si">}&lt;/span>&lt;span class="s2">: &lt;/span>&lt;span class="si">{&lt;/span>&lt;span class="n">steps&lt;/span>&lt;span class="si">}&lt;/span>&lt;span class="s2"> (Passos: &lt;/span>&lt;span class="si">{&lt;/span>&lt;span class="nb">len&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">steps&lt;/span>&lt;span class="p">)&lt;/span>&lt;span class="o">-&lt;/span>&lt;span class="mi">1&lt;/span>&lt;span class="si">}&lt;/span>&lt;span class="s2">)&amp;#34;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>Isso nos dará as Sequências de Collatz de &amp;ldquo;1 a 20&amp;rdquo; de uma só vez.&lt;/p>
&lt;hr>
&lt;h2 id="conclusão-este-mundo-é-afinal-misterioso">Conclusão: Este mundo é, afinal, misterioso
&lt;/h2>&lt;p>Então, essa é a Conjectura de Collatz.&lt;/p>
&lt;ul>
&lt;li>Embora seja super simples&lt;/li>
&lt;li>Ninguém pode provar&lt;/li>
&lt;li>Um grande problema no mundo da matemática&lt;/li>
&lt;/ul>
&lt;p>Era uma existência como uma massa de mistérios.&lt;/p>
&lt;p>Até mesmo iniciantes em programação podem tentar, então por favor, brinque com isso!&lt;/p>
&lt;hr>
&lt;h2 id="links-recomendados-para-os-interessados">Links recomendados (para os interessados)
&lt;/h2>&lt;ul>
&lt;li>&lt;a class="link" href="https://ja.wikipedia.org/wiki/%e3%82%b3%e3%83%a9%e3%83%83%e3%83%84%e4%ba%88%e6%83%b3" target="_blank" rel="noopener"
>Wikipedia: Conjectura de Collatz&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="https://arxiv.org/abs/1909.03562" target="_blank" rel="noopener"
>Artigo de Terence Tao (Inglês)&lt;/a>&lt;/li>
&lt;li>Também é divertido criar uma versão visualizada em Python! (Farei uma se houver demanda)&lt;/li>
&lt;/ul>
&lt;hr>
&lt;p>Se você quiser saber mais sobre esse tipo de material de &amp;ldquo;Matemática misteriosa x Programação&amp;rdquo;,
fique à vontade para solicitar e dizer &amp;ldquo;Me ensine mais&amp;rdquo;.
Eventualmente, apresentarei várias coisas, como a Hipótese de Riemann e números primos!&lt;/p>
&lt;hr>
&lt;p>📮Fim!&lt;/p>
&lt;hr></description></item><item><title>Como postar mensagens no Microsoft Teams a partir de C++ (WinHTTP + Graph API)</title><link>http://kenji.blog/pt/p/como-postar-mensagens-no-microsoft-teams-a-partir-de-cpp-winhttp-graph-api/</link><pubDate>Mon, 14 Jul 2025 23:40:15 +0900</pubDate><guid>http://kenji.blog/pt/p/como-postar-mensagens-no-microsoft-teams-a-partir-de-cpp-winhttp-graph-api/</guid><description>&lt;img src="http://kenji.blog/p/c-%E3%81%8B%E3%82%89-microsoft-teams-%E3%81%AB%E3%83%A1%E3%83%83%E3%82%BB%E3%83%BC%E3%82%B8%E3%82%92%E6%8A%95%E7%A8%BF%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95winhttp--graph-api/img.png" alt="Featured image of post Como postar mensagens no Microsoft Teams a partir de C++ (WinHTTP + Graph API)" />&lt;h1 id="como-postar-mensagens-no-microsoft-teams-a-partir-de-c-winhttp--graph-api">Como postar mensagens no Microsoft Teams a partir de C++ (WinHTTP + Graph API)
&lt;/h1>&lt;p>Quer postar automaticamente no chat do Microsoft Teams?&lt;br>
É aí que a &lt;strong>Microsoft Graph API&lt;/strong> entra em ação.&lt;br>
Neste artigo, apresentarei passo a passo um &lt;strong>exemplo de código em C++ usando WinHTTP&lt;/strong> e as &lt;strong>etapas necessárias de autenticação da API&lt;/strong>.&lt;/p>
&lt;hr>
&lt;h2 id="-preparações-necessárias-configuração-de-autenticação-da-microsoft-graph-api">🔧 Preparações necessárias (Configuração de autenticação da Microsoft Graph API)
&lt;/h2>&lt;h3 id="1-registrar-o-aplicativo-no-portal-do-azure">1. Registrar o aplicativo no portal do Azure
&lt;/h3>&lt;p>Primeiro, para usar a Microsoft Graph API, você precisa registrar um aplicativo no Azure.&lt;/p>
&lt;ol>
&lt;li>Acesse o &lt;a class="link" href="https://portal.azure.com" target="_blank" rel="noopener"
>Azure Portal&lt;/a>&lt;/li>
&lt;li>&lt;strong>&amp;ldquo;Microsoft Entra ID&amp;rdquo;&lt;/strong> &amp;gt; &lt;strong>&amp;quot;+ Adicionar&amp;quot;&lt;/strong> &amp;gt; &lt;strong>&amp;ldquo;Registro de aplicativo&amp;rdquo;&lt;/strong> &amp;gt; &lt;strong>&amp;ldquo;Novo registro&amp;rdquo;&lt;/strong>&lt;/li>
&lt;li>Insira qualquer nome para o aplicativo e clique em &amp;ldquo;Registrar&amp;rdquo;&lt;/li>
&lt;/ol>
&lt;h3 id="2-adicionar-permissões-da-api">2. Adicionar permissões da API
&lt;/h3>&lt;ol>
&lt;li>Vá para o menu esquerdo &amp;ldquo;Permissões de API&amp;rdquo;&lt;/li>
&lt;li>Em &lt;strong>&amp;ldquo;Microsoft Graph&amp;rdquo;&lt;/strong> &amp;gt; &lt;strong>&amp;ldquo;Adicionar uma permissão&amp;rdquo;&lt;/strong>, pesquise pelos seguintes escopos e clique em &lt;strong>&amp;ldquo;Atualizar permissões&amp;rdquo;&lt;/strong>&lt;/li>
&lt;/ol>
&lt;ul>
&lt;li>Chat.ReadWrite&lt;/li>
&lt;li>User.Read&lt;/li>
&lt;/ul>
&lt;blockquote>
&lt;p>※ Se você deseja postar em um canal, &lt;code>ChannelMessage.Send&lt;/code> também é necessário&lt;/p>
&lt;/blockquote>
&lt;h3 id="3-anote-o-id-do-cliente-e-o-id-do-locatário-tenant">3. Anote o ID do cliente e o ID do locatário (tenant)
&lt;/h3>&lt;p>Mantenha as seguintes 2 informações que aparecem na aba &amp;ldquo;Visão geral&amp;rdquo;:&lt;/p>
&lt;ul>
&lt;li>ID do aplicativo (cliente)&lt;/li>
&lt;li>ID do diretório (locatário)&lt;/li>
&lt;/ul>
&lt;h3 id="4-criar-o-segredo-do-cliente">4. Criar o segredo do cliente
&lt;/h3>&lt;ol>
&lt;li>Vá para a aba &amp;ldquo;Certificados e segredos&amp;rdquo;&lt;/li>
&lt;li>&amp;ldquo;Novo segredo do cliente&amp;rdquo; &amp;gt; Defina uma data de expiração e clique em &amp;ldquo;Adicionar&amp;rdquo;&lt;/li>
&lt;li>&lt;strong>Anote imediatamente&lt;/strong> o valor (segredo) exibido na tela&lt;/li>
&lt;/ol>
&lt;hr>
&lt;h2 id="-obtendo-o-token-de-acesso-oauth2">🔐 Obtendo o token de acesso (OAuth2)
&lt;/h2>&lt;p>Para obtê-lo, usaremos o fluxo &lt;code>client_credentials&lt;/code>.&lt;br>
Execute o comando abaixo com curl para obter o token de acesso.&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;span class="lnt">4
&lt;/span>&lt;span class="lnt">5
&lt;/span>&lt;span class="lnt">6
&lt;/span>&lt;span class="lnt">7
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">curl -X POST ^
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> https://login.microsoftonline.com/&lt;span class="o">{&lt;/span>ID_DO_LOCATARIO&lt;span class="o">}&lt;/span>/oauth2/v2.0/token ^
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> -H &lt;span class="s2">&amp;#34;Content-Type: application/x-www-form-urlencoded&amp;#34;&lt;/span> ^
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> -d &lt;span class="s2">&amp;#34;client_id={ID_DO_CLIENTE}&amp;#34;&lt;/span> ^
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> -d &lt;span class="s2">&amp;#34;scope=https%3A%2F%2Fgraph.microsoft.com%2F.default&amp;#34;&lt;/span> ^
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> -d &lt;span class="s2">&amp;#34;client_secret={SEGREDO_DO_CLIENTE}&amp;#34;&lt;/span> ^
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> -d &lt;span class="s2">&amp;#34;grant_type=client_credentials&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h3 id="exemplo-de-resposta">Exemplo de resposta
&lt;/h3>&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;span class="lnt">4
&lt;/span>&lt;span class="lnt">5
&lt;/span>&lt;span class="lnt">6
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-json" data-lang="json">&lt;span class="line">&lt;span class="cl">&lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;token_type&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="s2">&amp;#34;Bearer&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;expires_in&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="mi">3599&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;ext_expires_in&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="mi">3599&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;access_token&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;eyJ0eXAiOiJKV1QiLCJub... (omitido)&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>Usaremos este access_token para chamar a Microsoft Graph API.&lt;/p>
&lt;h2 id="-exemplo-em-c-para-postar-no-chat-do-teams">💬 Exemplo em C++ para postar no chat do Teams
&lt;/h2>&lt;p>Aqui está um exemplo em C++ para postar no chat usando WinHTTP.&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt"> 1
&lt;/span>&lt;span class="lnt"> 2
&lt;/span>&lt;span class="lnt"> 3
&lt;/span>&lt;span class="lnt"> 4
&lt;/span>&lt;span class="lnt"> 5
&lt;/span>&lt;span class="lnt"> 6
&lt;/span>&lt;span class="lnt"> 7
&lt;/span>&lt;span class="lnt"> 8
&lt;/span>&lt;span class="lnt"> 9
&lt;/span>&lt;span class="lnt">10
&lt;/span>&lt;span class="lnt">11
&lt;/span>&lt;span class="lnt">12
&lt;/span>&lt;span class="lnt">13
&lt;/span>&lt;span class="lnt">14
&lt;/span>&lt;span class="lnt">15
&lt;/span>&lt;span class="lnt">16
&lt;/span>&lt;span class="lnt">17
&lt;/span>&lt;span class="lnt">18
&lt;/span>&lt;span class="lnt">19
&lt;/span>&lt;span class="lnt">20
&lt;/span>&lt;span class="lnt">21
&lt;/span>&lt;span class="lnt">22
&lt;/span>&lt;span class="lnt">23
&lt;/span>&lt;span class="lnt">24
&lt;/span>&lt;span class="lnt">25
&lt;/span>&lt;span class="lnt">26
&lt;/span>&lt;span class="lnt">27
&lt;/span>&lt;span class="lnt">28
&lt;/span>&lt;span class="lnt">29
&lt;/span>&lt;span class="lnt">30
&lt;/span>&lt;span class="lnt">31
&lt;/span>&lt;span class="lnt">32
&lt;/span>&lt;span class="lnt">33
&lt;/span>&lt;span class="lnt">34
&lt;/span>&lt;span class="lnt">35
&lt;/span>&lt;span class="lnt">36
&lt;/span>&lt;span class="lnt">37
&lt;/span>&lt;span class="lnt">38
&lt;/span>&lt;span class="lnt">39
&lt;/span>&lt;span class="lnt">40
&lt;/span>&lt;span class="lnt">41
&lt;/span>&lt;span class="lnt">42
&lt;/span>&lt;span class="lnt">43
&lt;/span>&lt;span class="lnt">44
&lt;/span>&lt;span class="lnt">45
&lt;/span>&lt;span class="lnt">46
&lt;/span>&lt;span class="lnt">47
&lt;/span>&lt;span class="lnt">48
&lt;/span>&lt;span class="lnt">49
&lt;/span>&lt;span class="lnt">50
&lt;/span>&lt;span class="lnt">51
&lt;/span>&lt;span class="lnt">52
&lt;/span>&lt;span class="lnt">53
&lt;/span>&lt;span class="lnt">54
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-cpp" data-lang="cpp">&lt;span class="line">&lt;span class="cl">&lt;span class="cp">#include&lt;/span> &lt;span class="cpf">&amp;lt;windows.h&amp;gt;&lt;/span>&lt;span class="cp">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="cp">#include&lt;/span> &lt;span class="cpf">&amp;lt;winhttp.h&amp;gt;&lt;/span>&lt;span class="cp">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="cp">#include&lt;/span> &lt;span class="cpf">&amp;lt;iostream&amp;gt;&lt;/span>&lt;span class="cp">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="cp">#include&lt;/span> &lt;span class="cpf">&amp;lt;string&amp;gt;&lt;/span>&lt;span class="cp">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="cp">&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="cp">#pragma comment(lib, &amp;#34;winhttp.lib&amp;#34;)
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="cp">&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="kt">void&lt;/span> &lt;span class="nf">PostToTeamsChat&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="k">const&lt;/span> &lt;span class="n">std&lt;/span>&lt;span class="o">::&lt;/span>&lt;span class="n">wstring&lt;/span>&lt;span class="o">&amp;amp;&lt;/span> &lt;span class="n">accessToken&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="k">const&lt;/span> &lt;span class="n">std&lt;/span>&lt;span class="o">::&lt;/span>&lt;span class="n">wstring&lt;/span>&lt;span class="o">&amp;amp;&lt;/span> &lt;span class="n">chatId&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="k">const&lt;/span> &lt;span class="n">std&lt;/span>&lt;span class="o">::&lt;/span>&lt;span class="n">wstring&lt;/span>&lt;span class="o">&amp;amp;&lt;/span> &lt;span class="n">message&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">HINTERNET&lt;/span> &lt;span class="n">hSession&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">WinHttpOpen&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="sa">L&lt;/span>&lt;span class="s">&amp;#34;TeamsPoster/1.0&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">WINHTTP_ACCESS_TYPE_DEFAULT_PROXY&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">WINHTTP_NO_PROXY_NAME&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">WINHTTP_NO_PROXY_BYPASS&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="mi">0&lt;/span>&lt;span class="p">);&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">HINTERNET&lt;/span> &lt;span class="n">hConnect&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">WinHttpConnect&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">hSession&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="sa">L&lt;/span>&lt;span class="s">&amp;#34;graph.microsoft.com&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">INTERNET_DEFAULT_HTTPS_PORT&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="mi">0&lt;/span>&lt;span class="p">);&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">std&lt;/span>&lt;span class="o">::&lt;/span>&lt;span class="n">wstring&lt;/span> &lt;span class="n">endpoint&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="sa">L&lt;/span>&lt;span class="s">&amp;#34;/v1.0/chats/&amp;#34;&lt;/span> &lt;span class="o">+&lt;/span> &lt;span class="n">chatId&lt;/span> &lt;span class="o">+&lt;/span> &lt;span class="sa">L&lt;/span>&lt;span class="s">&amp;#34;/messages&amp;#34;&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">HINTERNET&lt;/span> &lt;span class="n">hRequest&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">WinHttpOpenRequest&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">hConnect&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="sa">L&lt;/span>&lt;span class="s">&amp;#34;POST&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">endpoint&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">c_str&lt;/span>&lt;span class="p">(),&lt;/span> &lt;span class="nb">NULL&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">WINHTTP_NO_REFERER&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">WINHTTP_DEFAULT_ACCEPT_TYPES&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">WINHTTP_FLAG_SECURE&lt;/span>&lt;span class="p">);&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">std&lt;/span>&lt;span class="o">::&lt;/span>&lt;span class="n">wstring&lt;/span> &lt;span class="n">jsonBody&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="sa">L&lt;/span>&lt;span class="s">&amp;#34;{&lt;/span>&lt;span class="se">\&amp;#34;&lt;/span>&lt;span class="s">body&lt;/span>&lt;span class="se">\&amp;#34;&lt;/span>&lt;span class="s">: {&lt;/span>&lt;span class="se">\&amp;#34;&lt;/span>&lt;span class="s">content&lt;/span>&lt;span class="se">\&amp;#34;&lt;/span>&lt;span class="s">: &lt;/span>&lt;span class="se">\&amp;#34;&lt;/span>&lt;span class="s">&amp;#34;&lt;/span> &lt;span class="o">+&lt;/span> &lt;span class="n">message&lt;/span> &lt;span class="o">+&lt;/span> &lt;span class="sa">L&lt;/span>&lt;span class="s">&amp;#34;&lt;/span>&lt;span class="se">\&amp;#34;&lt;/span>&lt;span class="s">}}&amp;#34;&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">std&lt;/span>&lt;span class="o">::&lt;/span>&lt;span class="n">wstring&lt;/span> &lt;span class="n">headers&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="sa">L&lt;/span>&lt;span class="s">&amp;#34;Authorization: Bearer &amp;#34;&lt;/span> &lt;span class="o">+&lt;/span> &lt;span class="n">accessToken&lt;/span> &lt;span class="o">+&lt;/span> &lt;span class="sa">L&lt;/span>&lt;span class="s">&amp;#34;&lt;/span>&lt;span class="se">\r\n&lt;/span>&lt;span class="s">Content-Type: application/json&lt;/span>&lt;span class="se">\r\n&lt;/span>&lt;span class="s">&amp;#34;&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">BOOL&lt;/span> &lt;span class="n">bResult&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">WinHttpSendRequest&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">hRequest&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">headers&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">c_str&lt;/span>&lt;span class="p">(),&lt;/span> &lt;span class="p">(&lt;/span>&lt;span class="n">DWORD&lt;/span>&lt;span class="p">)&lt;/span>&lt;span class="o">-&lt;/span>&lt;span class="mi">1L&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">(&lt;/span>&lt;span class="n">LPVOID&lt;/span>&lt;span class="p">)&lt;/span>&lt;span class="n">jsonBody&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">c_str&lt;/span>&lt;span class="p">(),&lt;/span> &lt;span class="p">(&lt;/span>&lt;span class="n">DWORD&lt;/span>&lt;span class="p">)(&lt;/span>&lt;span class="n">jsonBody&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">length&lt;/span>&lt;span class="p">()&lt;/span> &lt;span class="o">*&lt;/span> &lt;span class="k">sizeof&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="kt">wchar_t&lt;/span>&lt;span class="p">)),&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">(&lt;/span>&lt;span class="n">DWORD&lt;/span>&lt;span class="p">)(&lt;/span>&lt;span class="n">jsonBody&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">length&lt;/span>&lt;span class="p">()&lt;/span> &lt;span class="o">*&lt;/span> &lt;span class="k">sizeof&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="kt">wchar_t&lt;/span>&lt;span class="p">)),&lt;/span> &lt;span class="mi">0&lt;/span>&lt;span class="p">);&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">if&lt;/span> &lt;span class="p">(&lt;/span>&lt;span class="n">bResult&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">WinHttpReceiveResponse&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">hRequest&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="nb">NULL&lt;/span>&lt;span class="p">);&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">DWORD&lt;/span> &lt;span class="n">dwSize&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="mi">0&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">WinHttpQueryDataAvailable&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">hRequest&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="o">&amp;amp;&lt;/span>&lt;span class="n">dwSize&lt;/span>&lt;span class="p">);&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">if&lt;/span> &lt;span class="p">(&lt;/span>&lt;span class="n">dwSize&lt;/span> &lt;span class="o">&amp;gt;&lt;/span> &lt;span class="mi">0&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">std&lt;/span>&lt;span class="o">::&lt;/span>&lt;span class="n">wstring&lt;/span> &lt;span class="n">response&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">dwSize&lt;/span> &lt;span class="o">/&lt;/span> &lt;span class="k">sizeof&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="kt">wchar_t&lt;/span>&lt;span class="p">),&lt;/span> &lt;span class="mi">0&lt;/span>&lt;span class="p">);&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">DWORD&lt;/span> &lt;span class="n">dwDownloaded&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="mi">0&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">WinHttpReadData&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">hRequest&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="o">&amp;amp;&lt;/span>&lt;span class="n">response&lt;/span>&lt;span class="p">[&lt;/span>&lt;span class="mi">0&lt;/span>&lt;span class="p">],&lt;/span> &lt;span class="n">dwSize&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="o">&amp;amp;&lt;/span>&lt;span class="n">dwDownloaded&lt;/span>&lt;span class="p">);&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">std&lt;/span>&lt;span class="o">::&lt;/span>&lt;span class="n">wcout&lt;/span> &lt;span class="o">&amp;lt;&amp;lt;&lt;/span> &lt;span class="sa">L&lt;/span>&lt;span class="s">&amp;#34;Response: &amp;#34;&lt;/span> &lt;span class="o">&amp;lt;&amp;lt;&lt;/span> &lt;span class="n">response&lt;/span> &lt;span class="o">&amp;lt;&amp;lt;&lt;/span> &lt;span class="n">std&lt;/span>&lt;span class="o">::&lt;/span>&lt;span class="n">endl&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">WinHttpCloseHandle&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">hRequest&lt;/span>&lt;span class="p">);&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">WinHttpCloseHandle&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">hConnect&lt;/span>&lt;span class="p">);&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">WinHttpCloseHandle&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">hSession&lt;/span>&lt;span class="p">);&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="kt">int&lt;/span> &lt;span class="nf">main&lt;/span>&lt;span class="p">()&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">std&lt;/span>&lt;span class="o">::&lt;/span>&lt;span class="n">wstring&lt;/span> &lt;span class="n">access&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">std&lt;/span>&lt;span class="o">::&lt;/span>&lt;span class="n">wstring&lt;/span> &lt;span class="n">chatId&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="sa">L&lt;/span>&lt;span class="s">&amp;#34;19:&amp;#34;&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">std&lt;/span>&lt;span class="o">::&lt;/span>&lt;span class="n">wstring&lt;/span> &lt;span class="n">message&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="sa">L&lt;/span>&lt;span class="s">&amp;#34;Hello from C++!&amp;#34;&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">std&lt;/span>&lt;span class="o">::&lt;/span>&lt;span class="n">wcout&lt;/span> &lt;span class="o">&amp;lt;&amp;lt;&lt;/span> &lt;span class="sa">L&lt;/span>&lt;span class="s">&amp;#34;Enter your access token: &amp;#34;&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">std&lt;/span>&lt;span class="o">::&lt;/span>&lt;span class="n">getline&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">std&lt;/span>&lt;span class="o">::&lt;/span>&lt;span class="n">wcin&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">access&lt;/span>&lt;span class="p">);&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">std&lt;/span>&lt;span class="o">::&lt;/span>&lt;span class="n">wcout&lt;/span> &lt;span class="o">&amp;lt;&amp;lt;&lt;/span> &lt;span class="sa">L&lt;/span>&lt;span class="s">&amp;#34;Enter chat ID: &amp;#34;&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">std&lt;/span>&lt;span class="o">::&lt;/span>&lt;span class="n">getline&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">std&lt;/span>&lt;span class="o">::&lt;/span>&lt;span class="n">wcin&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">chatId&lt;/span>&lt;span class="p">);&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">PostToTeamsChat&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">access&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">chatId&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">message&lt;/span>&lt;span class="p">);&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">return&lt;/span> &lt;span class="mi">0&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h2 id="-como-obter-o-id-do-chat">🔍 Como obter o ID do chat
&lt;/h2>&lt;p>O ID do chat pode ser verificado em GET /v1.0/me/chats.&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;span class="lnt">4
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">curl -X GET ^
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> https://graph.microsoft.com/v1.0/me/chats ^
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> -H &amp;#34;Authorization: Bearer {access_token}&amp;#34; ^
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> -H &amp;#34;Content-Type: application/json&amp;#34;
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h3 id="exemplo-de-resposta-1">Exemplo de resposta
&lt;/h3>&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;span class="lnt">4
&lt;/span>&lt;span class="lnt">5
&lt;/span>&lt;span class="lnt">6
&lt;/span>&lt;span class="lnt">7
&lt;/span>&lt;span class="lnt">8
&lt;/span>&lt;span class="lnt">9
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-json" data-lang="json">&lt;span class="line">&lt;span class="cl">&lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;value&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="p">[&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;id&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;19:abc123xyz@thread.v2&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;topic&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="kc">null&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;chatType&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;oneOnOne&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">]&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h2 id="-pontos-de-atenção">📌 Pontos de atenção
&lt;/h2>&lt;ul>
&lt;li>Este exemplo é uma implementação mínima. Em produção:
&lt;ul>
&lt;li>Tratamento de expiração de token&lt;/li>
&lt;li>Verificação de certificado HTTPS&lt;/li>
&lt;li>Aprimoramento do tratamento de erros&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>Para postar em um canal, use teams/{team-id}/channels/{channel-id}/messages.&lt;/li>
&lt;li>Enviar arquivos anexos requer processamento multipart ou a API do Graph Drive.&lt;/li>
&lt;/ul>
&lt;h2 id="resumo">Resumo
&lt;/h2>&lt;h2 id="-resumo">📎 Resumo
&lt;/h2>&lt;table>
&lt;thead>
&lt;tr>
&lt;th>Funcionalidade&lt;/th>
&lt;th>Visão Geral&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>Graph API&lt;/td>
&lt;td>API oficial para interagir com o Teams&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Registro do aplicativo&lt;/td>
&lt;td>Procedimentos de autenticação necessários no Azure&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Token de acesso&lt;/td>
&lt;td>Obtido via OAuth2, usado para solicitações&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Implementação em C++&lt;/td>
&lt;td>Chama a Graph API usando WinHTTP&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;h2 id="-próximos-passos">🚀 Próximos passos
&lt;/h2>&lt;p>Como exemplos mais avançados, também é possível:&lt;/p>
&lt;ul>
&lt;li>Postagem no canal da equipe (&lt;code>/teams/{team-id}/channels/...&lt;/code>)&lt;/li>
&lt;li>Postagem com arquivos anexos&lt;/li>
&lt;li>Alternância entre conta de bot ou conta de usuário&lt;/li>
&lt;li>Implementação completa em C++ incluindo obtenção do token&lt;/li>
&lt;/ul>
&lt;p>Se você tiver alguma dúvida, sinta-se à vontade para comentar!&lt;/p></description></item><item><title>Sobre a Marca de Obrigatório em Formulários de Entrada</title><link>http://kenji.blog/pt/p/%E5%85%A5%E5%8A%9B%E3%83%95%E3%82%A9%E3%83%BC%E3%83%A0%E3%81%AE%E5%BF%85%E9%A0%88%E3%83%9E%E3%83%BC%E3%82%AF%E3%81%AB%E3%81%A4%E3%81%84%E3%81%A6/</link><pubDate>Mon, 14 Jul 2025 13:47:51 +0900</pubDate><guid>http://kenji.blog/pt/p/%E5%85%A5%E5%8A%9B%E3%83%95%E3%82%A9%E3%83%BC%E3%83%A0%E3%81%AE%E5%BF%85%E9%A0%88%E3%83%9E%E3%83%BC%E3%82%AF%E3%81%AB%E3%81%A4%E3%81%84%E3%81%A6/</guid><description>&lt;img src="http://kenji.blog/p/%E5%85%A5%E5%8A%9B%E3%83%95%E3%82%A9%E3%83%BC%E3%83%A0%E3%81%AE%E5%BF%85%E9%A0%88%E3%83%9E%E3%83%BC%E3%82%AF%E3%81%AB%E3%81%A4%E3%81%84%E3%81%A6/img.png" alt="Featured image of post Sobre a Marca de Obrigatório em Formulários de Entrada" />&lt;p>Organizamos informações sobre a marca de &amp;ldquo;obrigatório&amp;rdquo; na interface do usuário (formulários) no exterior, juntamente com materiais de diretrizes de UI.&lt;/p>
&lt;hr>
&lt;h2 id="-principais-marcas-de-obrigatório-e-melhores-práticas">📌 Principais Marcas de Obrigatório e Melhores Práticas
&lt;/h2>&lt;ol>
&lt;li>
&lt;p>&lt;strong>Uso do Asterisco (*)&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>Geralmente o mais difundido, adiciona-se &amp;ldquo;*&amp;rdquo; aos campos obrigatórios.&lt;/li>
&lt;li>No entanto, &lt;strong>uma explicação como &amp;quot; * é um campo obrigatório&amp;quot; no início do formulário é obrigatória&lt;/strong> (&lt;a class="link" href="https://www.nngroup.com/articles/required-fields/?utm_source=chatgpt.com" title="Marking Required Fields in Forms - NN/g"
target="_blank" rel="noopener"
>Nielsen Norman Group&lt;/a>, &lt;a class="link" href="https://www.csun.edu/universal-design-center/web-accessibility-criteria-required-fields?utm_source=chatgpt.com" title="Web Accessibility Criteria - Required Fields - CSUN"
target="_blank" rel="noopener"
>California State University, Northridge&lt;/a>).&lt;/li>
&lt;li>Também existem exemplos que usam cor para dar ênfase (como texto em vermelho).&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>Especificar &amp;ldquo;Required&amp;rdquo; ou &amp;ldquo;(required)&amp;rdquo; no rótulo&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>Ao incluir a palavra &amp;ldquo;Required&amp;rdquo; no rótulo, pode-se indicá-lo claramente para leitores de tela, melhorando a acessibilidade (&lt;a class="link" href="https://www.deque.com/blog/anatomy-of-accessible-forms-required-form-fields/?utm_source=chatgpt.com" title="The Anatomy of Accessible Forms: Required Form Fields"
target="_blank" rel="noopener"
>Deque&lt;/a>).&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>Uso combinado de atributos ARIA e do atributo &lt;code>required&lt;/code> do HTML5&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>Além da exibição visual, usando &lt;code>aria-required=&amp;quot;true&amp;quot;&lt;/code> e &lt;code>&amp;lt;input required&amp;gt;&lt;/code>, o campo também é comunicado como obrigatório de forma programática (&lt;a class="link" href="https://www.deque.com/blog/anatomy-of-accessible-forms-required-form-fields/?utm_source=chatgpt.com" title="The Anatomy of Accessible Forms: Required Form Fields"
target="_blank" rel="noopener"
>Deque&lt;/a>).&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>Especificar campos opcionais usando &amp;ldquo;(optional)&amp;rdquo;&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>Há também a abordagem de especificar os campos opcionais como &amp;ldquo;(optional)&amp;rdquo; em vez dos campos obrigatórios, o que é eficaz quando ambos estão misturados.&lt;/li>
&lt;li>No entanto, a Nielsen-Norman aponta que &amp;ldquo;é mais fácil de avaliar se os campos obrigatórios também forem especificados de forma clara&amp;rdquo; (&lt;a class="link" href="https://www.tpgi.com/doing-whats-required-indicating-mandatory-fields-in-an-accessible-way/?utm_source=chatgpt.com" title="Doing what&amp;#39;s required: Indicating mandatory fields in an accessible ..."
target="_blank" rel="noopener"
>TPGi&lt;/a>).&lt;/li>
&lt;/ul>
&lt;/li>
&lt;/ol>
&lt;hr>
&lt;h2 id="-resumo-de-materiais-de-diretrizes-de-ui">✅ Resumo de Materiais de Diretrizes de UI
&lt;/h2>&lt;table>
&lt;thead>
&lt;tr>
&lt;th>Fonte&lt;/th>
&lt;th>Conteúdo&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>&lt;strong>NN/g: Marking Required Fields in Forms&lt;/strong>&lt;/td>
&lt;td>A combinação de um asterisco com um texto explicativo é recomendada; exibir apenas os opcionais é considerado pouco amigável (&lt;a class="link" href="https://www.nngroup.com/articles/required-fields/?utm_source=chatgpt.com" title="Marking Required Fields in Forms - NN/g"
target="_blank" rel="noopener"
>Nielsen Norman Group&lt;/a>).&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;strong>Deque (Anatomy of Accessible Forms)&lt;/strong>&lt;/td>
&lt;td>・A palavra &amp;ldquo;Required&amp;rdquo; ou uma imagem é usada em combinação dentro do rótulo.&lt;br>・Afirma claramente que a indicação apenas com cores é insuficiente.&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;strong>W3C Techniques (H90)&lt;/strong>&lt;/td>
&lt;td>Há exemplos de inclusão de um asterisco ou &amp;ldquo;(required)&amp;rdquo; no rótulo e definição do seu significado no início do formulário.&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;strong>TPGi (Doing what&amp;rsquo;s required)&lt;/strong>&lt;/td>
&lt;td>Considerando a acessibilidade, a combinação de asterisco + atributos ARIA + inserção de texto no rótulo é avaliada como a melhor.&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;strong>Guia de UX de Formulários Contensis&lt;/strong>&lt;/td>
&lt;td>Organizado de forma concisa: uma marcação consistente (* ou (optional)) é importante.&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;hr>
&lt;h2 id="-abordagens-recomendadas-para-implementação">✅ Abordagens Recomendadas para Implementação
&lt;/h2>&lt;ul>
&lt;li>
&lt;p>Adicionar um texto explicativo no &lt;strong>início do formulário&lt;/strong> :&lt;/p>
&lt;blockquote>
&lt;p>Fields marked with * are required.
(Ou &amp;ldquo;All fields are required&amp;rdquo; para todos de uma vez, ou &amp;ldquo;unless marked optional&amp;rdquo; se houver campos opcionais)&lt;/p>
&lt;/blockquote>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>Atribuição de Rótulo&lt;/strong> :&lt;/p>
&lt;ul>
&lt;li>Escrito como &lt;code>First Name *&lt;/code> ou &lt;code>Email (required)&lt;/code>.&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>Atributos ARIA e Atributos HTML5&lt;/strong> :&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-html" data-lang="html">&lt;span class="line">&lt;span class="cl">&lt;span class="p">&amp;lt;&lt;/span>&lt;span class="nt">label&lt;/span> &lt;span class="na">for&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s">&amp;#34;email&amp;#34;&lt;/span>&lt;span class="p">&amp;gt;&lt;/span>Email &lt;span class="p">&amp;lt;&lt;/span>&lt;span class="nt">abbr&lt;/span> &lt;span class="na">title&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s">&amp;#34;required&amp;#34;&lt;/span>&lt;span class="p">&amp;gt;&lt;/span>*&lt;span class="p">&amp;lt;/&lt;/span>&lt;span class="nt">abbr&lt;/span>&lt;span class="p">&amp;gt;&amp;lt;/&lt;/span>&lt;span class="nt">label&lt;/span>&lt;span class="p">&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">&amp;lt;&lt;/span>&lt;span class="nt">input&lt;/span> &lt;span class="na">id&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s">&amp;#34;email&amp;#34;&lt;/span> &lt;span class="na">required&lt;/span> &lt;span class="na">aria-required&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s">&amp;#34;true&amp;#34;&lt;/span>&lt;span class="p">&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;/li>
&lt;li>
&lt;p>&lt;strong>Não confie apenas na cor&lt;/strong> : Suporte tanto visual quanto programaticamente.&lt;/p>
&lt;/li>
&lt;/ul>
&lt;hr>
&lt;h2 id="-links-de-referência-materiais-de-diretrizes-de-ui">🔗 Links de Referência (Materiais de Diretrizes de UI)
&lt;/h2>&lt;ul>
&lt;li>NN/g: &lt;em>Marking Required Fields in Forms&lt;/em> (&lt;a class="link" href="https://www.csun.edu/universal-design-center/web-accessibility-criteria-required-fields?utm_source=chatgpt.com" title="Web Accessibility Criteria - Required Fields - CSUN"
target="_blank" rel="noopener"
>California State University, Northridge&lt;/a>, &lt;a class="link" href="https://www.nngroup.com/articles/required-fields/?utm_source=chatgpt.com" title="Marking Required Fields in Forms - NN/g"
target="_blank" rel="noopener"
>Nielsen Norman Group&lt;/a>, &lt;a class="link" href="https://www.deque.com/blog/anatomy-of-accessible-forms-required-form-fields/?utm_source=chatgpt.com" title="The Anatomy of Accessible Forms: Required Form Fields"
target="_blank" rel="noopener"
>Deque&lt;/a>)&lt;/li>
&lt;li>Deque: &lt;em>Anatomy of Accessible Forms&lt;/em> (&lt;a class="link" href="https://www.deque.com/blog/anatomy-of-accessible-forms-required-form-fields/?utm_source=chatgpt.com" title="The Anatomy of Accessible Forms: Required Form Fields"
target="_blank" rel="noopener"
>Deque&lt;/a>)&lt;/li>
&lt;li>W3C Techniques: &lt;em>H90 Indicating required form controls&lt;/em> (&lt;a class="link" href="https://www.w3.org/TR/WCAG20-TECHS/H90.html?utm_source=chatgpt.com" title="H90: Indicating required form controls using label or legend - W3C"
target="_blank" rel="noopener"
>W3C&lt;/a>)&lt;/li>
&lt;li>TPGi: &lt;em>Indicating mandatory fields accessibly&lt;/em> (&lt;a class="link" href="https://www.tpgi.com/doing-whats-required-indicating-mandatory-fields-in-an-accessible-way/?utm_source=chatgpt.com" title="Doing what&amp;#39;s required: Indicating mandatory fields in an accessible ..."
target="_blank" rel="noopener"
>TPGi&lt;/a>)&lt;/li>
&lt;li>Contensis: &lt;em>UX Forms Guidelines&lt;/em> (&lt;a class="link" href="https://www.contensis.com/community/blog/ux-forms-guidelines?utm_source=chatgpt.com" title="Build better web forms: 15 UX guidelines that work - Contensis"
target="_blank" rel="noopener"
>Contensis&lt;/a>)&lt;/li>
&lt;/ul>
&lt;hr>
&lt;p>Se necessário, também posso fornecer exemplos específicos de código HTML/CSS, ou templates de design de componentes de UI para Sketch e Figma. Sinta-se à vontade para perguntar!&lt;/p></description></item><item><title>Como instalar o Gemini CLI no Windows</title><link>http://kenji.blog/pt/p/como-instalar-o-gemini-cli-no-windows/</link><pubDate>Sun, 13 Jul 2025 23:49:56 +0900</pubDate><guid>http://kenji.blog/pt/p/como-instalar-o-gemini-cli-no-windows/</guid><description>&lt;img src="http://kenji.blog/p/gemini-cli-%E3%82%92-windows-%E7%92%B0%E5%A2%83%E3%81%AB%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95/img.png" alt="Featured image of post Como instalar o Gemini CLI no Windows" />&lt;h1 id="para-iniciantes-como-instalar-o-gemini-cli-no-windows">[Para iniciantes] Como instalar o Gemini CLI no Windows
&lt;/h1>&lt;p>O &amp;ldquo;Gemini CLI&amp;rdquo; permite que você use a IA generativa do Google, &amp;ldquo;Gemini&amp;rdquo;, a partir da linha de comando.
Neste artigo, explicaremos as etapas para instalar o Gemini CLI em um ambiente Windows da forma mais simples possível.&lt;/p>
&lt;hr>
&lt;h2 id="1-preparação-instalar-o-nodejs-e-npm">1. Preparação: Instalar o Node.js e npm
&lt;/h2>&lt;p>Primeiro, como o Gemini CLI é executado em um ambiente chamado &amp;ldquo;Node.js&amp;rdquo;, você precisa instalar o seguinte:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Node.js&lt;/strong>&lt;/li>
&lt;li>&lt;strong>npm (Ferramenta de gerenciamento de pacotes incluída no Node.js)&lt;/strong>&lt;/li>
&lt;li>&lt;strong>npx (Ferramenta de execução de comandos incluída no npm)&lt;/strong>&lt;/li>
&lt;/ul>
&lt;p>Faça o download da versão do Node.js para Windows no site oficial abaixo (a versão LTS é recomendada):&lt;/p>
&lt;p>👉 &lt;a class="link" href="https://nodejs.org/" target="_blank" rel="noopener"
>Site Oficial do Node.js&lt;/a>&lt;/p>
&lt;p>Após a conclusão da instalação, verifique se foi instalado corretamente com os seguintes comandos:&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-powershell" data-lang="powershell">&lt;span class="line">&lt;span class="cl">&lt;span class="n">node&lt;/span> &lt;span class="n">-v&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">npm&lt;/span> &lt;span class="n">-v&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;hr>
&lt;h2 id="2-inicie-o-powershell">2. Inicie o PowerShell
&lt;/h2>&lt;p>Para usar o Gemini CLI no Windows, geralmente é usado o PowerShell.
Digite &amp;ldquo;PowerShell&amp;rdquo; no menu Iniciar para abri-lo.&lt;/p>
&lt;hr>
&lt;h2 id="3-instale-o-gemini-cli">3. Instale o Gemini CLI
&lt;/h2>&lt;p>Copie e cole o seguinte comando no PowerShell para executá-lo:&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">npx @google/gemini-cli
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>Este comando executa temporariamente o pacote Gemini CLI publicado pelo Google.
Você pode ser solicitado a realizar a configuração inicial e o login, se necessário.&lt;/p>
&lt;ul>
&lt;li>Observação: pode levar alguns minutos na primeira vez. Se ocorrer um erro, verifique novamente o Node.js e o seu ambiente de rede.&lt;/li>
&lt;/ul>
&lt;hr>
&lt;h2 id="4-instalação-completa-o-que-fazer-a-seguir">4. Instalação completa! O que fazer a seguir
&lt;/h2>&lt;p>O Gemini CLI agora está instalado no seu Windows.
A partir de agora, você poderá usar o Gemini na linha de comando para várias operações, como geração de texto e preenchimento de código.&lt;/p>
&lt;p>Se você quiser verificar a documentação oficial ou a ajuda, também pode usar comandos como este:&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">npx @google/gemini-cli --help
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;hr>
&lt;h2 id="resumo">Resumo
&lt;/h2>&lt;p>Vamos revisar as etapas para instalar o Gemini CLI no Windows:&lt;/p>
&lt;ol>
&lt;li>Instalar o Node.js e o npm&lt;/li>
&lt;li>Iniciar o PowerShell&lt;/li>
&lt;li>Executar &lt;code>npx @google/gemini-cli&lt;/code>&lt;/li>
&lt;/ol>
&lt;p>E você está pronto!
Se quiser usar a IA generativa localmente, experimente estas etapas como referência.&lt;/p></description></item><item><title>Fui premiado com o Microsoft MVP (2025-2026) novamente</title><link>http://kenji.blog/pt/p/fui-premiado-com-o-microsoft-mvp-2025-2026-novamente/</link><pubDate>Sun, 13 Jul 2025 22:01:15 +0900</pubDate><guid>http://kenji.blog/pt/p/fui-premiado-com-o-microsoft-mvp-2025-2026-novamente/</guid><description>&lt;img src="http://kenji.blog/p/microsoft-mvp2025-2026%E3%82%92%E5%86%8D%E5%8F%97%E8%B3%9E%E3%81%97%E3%81%BE%E3%81%97%E3%81%9F/img.png" alt="Featured image of post Fui premiado com o Microsoft MVP (2025-2026) novamente" />&lt;h1 id="fui-premiado-com-o-microsoft-mvp-2025-2026-novamente">Fui premiado com o Microsoft MVP (2025-2026) novamente!
&lt;/h1>&lt;p>Olá, eu sou o kenji.&lt;/p>
&lt;p>Tenho um anúncio a fazer. Fui premiado com o &lt;strong>Microsoft MVP (Most Valuable Professional)&lt;/strong> novamente este ano. Esta é a minha &lt;strong>9ª vez&lt;/strong> recebendo o prêmio.&lt;/p>
&lt;p>Muito obrigado a todos que sempre me apoiam.&lt;/p>
&lt;hr>
&lt;h2 id="o-que-é-o-microsoft-mvp">O que é o Microsoft MVP?
&lt;/h2>&lt;p>Quando você ouve &amp;ldquo;MVP&amp;rdquo;, muitos podem pensar no jogador mais valioso dos esportes, mas o MVP aqui é um &lt;strong>título concedido àqueles que contribuíram para a comunidade técnica da Microsoft&lt;/strong> .&lt;/p>
&lt;p>Especificamente,&lt;/p>
&lt;ul>
&lt;li>Disseminação de informações em blogs de tecnologia e redes sociais&lt;/li>
&lt;li>Publicação de código de exemplo no GitHub&lt;/li>
&lt;li>Palestras em grupos de estudo e conferências&lt;/li>
&lt;li>Respostas em sites de P&amp;amp;R&lt;/li>
&lt;li>Intercâmbio técnico e colaboração com desenvolvedores estrangeiros&lt;/li>
&lt;li>Participação e postagem em comunidades onde engenheiros se conectam&lt;/li>
&lt;/ul>
&lt;p>É um sistema que avalia atividades como &amp;ldquo;compartilhar o próprio conhecimento e experiência para o benefício de alguém&amp;rdquo;.&lt;/p>
&lt;p>Existem vencedores em todo o mundo, mas o número de pessoas selecionadas a cada ano é limitado, e receber o prêmio novamente não é fácil. É por isso que é uma verdadeira honra ser reconhecido dessa maneira.&lt;/p>
&lt;hr>
&lt;h2 id="o-que-foquei-neste-último-ano">O que foquei neste último ano
&lt;/h2>&lt;p>Este ano, concentrei-me em transmitir informações com foco na &lt;strong>&amp;ldquo;clareza&amp;rdquo; e &amp;ldquo;acessibilidade&amp;rdquo;&lt;/strong> da tecnologia.&lt;/p>
&lt;ul>
&lt;li>Publicação de código de exemplo prático no GitHub&lt;/li>
&lt;li>Palestras em grupos de estudo e conferências (nacionais e internacionais)&lt;/li>
&lt;li>Disseminação regular de informações através de blogs de tecnologia e redes sociais&lt;/li>
&lt;li>Atividades contínuas de resposta em sites de P&amp;amp;R&lt;/li>
&lt;li>Compartilhamento de conhecimento em sites de comunidades de engenheiros&lt;/li>
&lt;li>Interação e verificação conjunta com engenheiros estrangeiros&lt;/li>
&lt;/ul>
&lt;p>Em particular, a publicação de código no GitHub deixou uma forte impressão em mim porque recebi comentários como &amp;ldquo;Eu estava lutando com a mesma coisa, isso me salvou!&amp;rdquo;, e pude sentir que meus esforços estão ajudando o desenvolvimento de outras pessoas.&lt;/p>
&lt;p>Além disso, ao palestrar em eventos, às vezes recebi feedback de que &amp;ldquo;era fácil de entender, mesmo para iniciantes&amp;rdquo;, o que me deu uma boa oportunidade para pensar sobre &amp;ldquo;o que é uma explicação técnica que as pessoas entendem?&amp;rdquo;.&lt;/p>
&lt;hr>
&lt;h2 id="olhando-para-o-próximo-ano">Olhando para o próximo ano
&lt;/h2>&lt;p>A evolução da tecnologia é muito rápida e é difícil apenas acompanhá-la. Mesmo assim, acredito que há um grande valor em fornecer &lt;strong>conhecimento real como &amp;ldquo;informação primária&amp;rdquo;&lt;/strong> , como as experiências práticas que tive e os pontos em que tropecei ao tentar coisas sozinho.&lt;/p>
&lt;p>No próximo ano, gostaria de tentar publicar &lt;strong>&amp;ldquo;conteúdo técnico visualmente compreensível&amp;rdquo; que incorpore vídeos e diagramas&lt;/strong> . Espero aumentar meus resultados para que eu possa ajudar a resolver o sentimento de &amp;ldquo;estou preso!&amp;rdquo; de alguém, mesmo que seja apenas um pouco.&lt;/p>
&lt;hr>
&lt;h2 id="finalmente">Finalmente
&lt;/h2>&lt;p>O título de MVP é apenas um ponto de passagem.&lt;/p>
&lt;p>A partir de agora, sem exagerar, no meu próprio ritmo.
Mas de uma forma que seja adequadamente útil para alguém.&lt;/p>
&lt;p>&amp;ldquo;Fiquei salvo pesquisando sobre isso&amp;rdquo;
&amp;ldquo;Esta amostra funcionou!&amp;rdquo;
&amp;ldquo;Esta história foi fácil de entender&amp;rdquo;&lt;/p>
&lt;p>Gostaria de continuar sendo o tipo de engenheiro a quem dizem essas coisas.&lt;/p>
&lt;p>Muito obrigado pelo seu apoio contínuo.&lt;/p>
&lt;ul>
&lt;li>GitHub: &lt;a class="link" href="https://github.com/kenjinote" target="_blank" rel="noopener"
>https://github.com/kenjinote&lt;/a>&lt;/li>
&lt;li>Blog de tecnologia: &lt;a class="link" href="https://hack.jp" target="_blank" rel="noopener"
>https://hack.jp&lt;/a>&lt;/li>
&lt;li>X: &lt;a class="link" href="https://twitter.com/kenjinote" target="_blank" rel="noopener"
>https://twitter.com/kenjinote&lt;/a>&lt;/li>
&lt;/ul></description></item><item><title>Vantagens e Desvantagens de Criar Programas com Win32API + C++</title><link>http://kenji.blog/pt/p/win32api-c-%E3%81%A7%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%A0%E3%82%92%E4%BD%9C%E3%82%8B%E3%83%A1%E3%83%AA%E3%83%83%E3%83%88%E3%81%A8%E3%83%87%E3%83%A1%E3%83%AA%E3%83%83%E3%83%88/</link><pubDate>Sat, 12 Jul 2025 12:30:35 +0900</pubDate><guid>http://kenji.blog/pt/p/win32api-c-%E3%81%A7%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%A0%E3%82%92%E4%BD%9C%E3%82%8B%E3%83%A1%E3%83%AA%E3%83%83%E3%83%88%E3%81%A8%E3%83%87%E3%83%A1%E3%83%AA%E3%83%83%E3%83%88/</guid><description>&lt;img src="http://kenji.blog/p/win32api-c-%E3%81%A7%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%A0%E3%82%92%E4%BD%9C%E3%82%8B%E3%83%A1%E3%83%AA%E3%83%83%E3%83%88%E3%81%A8%E3%83%87%E3%83%A1%E3%83%AA%E3%83%83%E3%83%88/img_1.png" alt="Featured image of post Vantagens e Desvantagens de Criar Programas com Win32API + C++" />&lt;h1 id="o-fascínio-e-os-desafios-de-desenvolver-com-win32api--c">O Fascínio e os Desafios de Desenvolver com Win32API + C++
&lt;/h1>&lt;p>Para aqueles que desejam dominar o desenvolvimento de aplicativos do Windows, &lt;strong>Win32API + C++&lt;/strong> ainda é uma opção poderosa.
Esta combinação, que permite a interação mais próxima possível com o sistema operacional, oferece velocidade e flexibilidade.&lt;/p>
&lt;p>Por outro lado, requer determinação para ser dominada, pois difere significativamente dos estilos de desenvolvimento modernos.&lt;/p>
&lt;p>Nesta página, explicaremos de forma clara as vantagens e desvantagens a partir da &lt;strong>perspectiva de um desenvolvedor ativo de aplicativos do Windows&lt;/strong> .&lt;/p>
&lt;hr>
&lt;h2 id="vantagens">Vantagens
&lt;/h2>&lt;h3 id="execução-nativa-ultrarrápida">Execução Nativa Ultrarrápida
&lt;/h3>&lt;p>Como o C++ e a Win32API operam na camada mais próxima do sistema operacional, há muito pouca sobrecarga desnecessária.
O uso de CPU e memória é extremamente eficiente, ostentando uma &lt;strong>velocidade de execução esmagadora&lt;/strong> .&lt;/p>
&lt;h3 id="alta-flexibilidade-e-liberdade">Alta Flexibilidade e Liberdade
&lt;/h3>&lt;p>Você pode &lt;strong>controlar finamente por conta própria&lt;/strong> todos os comportamentos do aplicativo, como controle de janelas, processamento assíncrono, integração COM e gerenciamento de processos.
Também é possível construir ferramentas especializadas e seus próprios frameworks originais.&lt;/p>
&lt;h3 id="fácil-de-distribuir-sem-necessidade-de-runtime">Fácil de Distribuir sem Necessidade de Runtime
&lt;/h3>&lt;p>Como não são necessários runtimes externos como .NET ou Java, ele &lt;strong>pode ser distribuído como um único arquivo executável&lt;/strong> .
É menos propenso a problemas durante a redistribuição e é fácil de executar sem um instalador.&lt;/p>
&lt;h3 id="pode-criar-aplicativos-leves">Pode Criar Aplicativos Leves
&lt;/h3>&lt;p>Como requer apenas a configuração mínima necessária, sua característica é ter uma &lt;strong>pegada de memória muito pequena&lt;/strong> .
Ele funciona confortavelmente mesmo em PCs de baixas especificações ou ambientes de máquinas virtuais.&lt;/p>
&lt;h3 id="controle-avançado-em-nível-de-so-possível">Controle Avançado em Nível de SO Possível
&lt;/h3>&lt;p>Você também pode obter &lt;strong>controles que são difíceis com linguagens e bibliotecas normais&lt;/strong> , como ganchos globais de mouse e teclado, ajuste fino de estilos de janelas e operações do menu do sistema.&lt;/p>
&lt;hr>
&lt;h2 id="desvantagens">Desvantagens
&lt;/h2>&lt;h3 id="baixa-eficiência-de-desenvolvimento">Baixa Eficiência de Desenvolvimento
&lt;/h3>&lt;p>Até a construção da GUI deve ser feita inteiramente em código, e às vezes &lt;strong>dezenas de linhas de código são necessárias apenas para criar um único botão&lt;/strong> .
Modificar o design também é complicado, e a produtividade é menor em comparação ao desenvolvimento usando frameworks de UI.&lt;/p>
&lt;h3 id="fácil-de-reduzir-a-manutenibilidade">Fácil de Reduzir a Manutenibilidade
&lt;/h3>&lt;p>Existem muitos &lt;strong>códigos com estruturas especiais&lt;/strong> , como loops de mensagens e procedimentos de janelas, dificultando a legibilidade e a reutilização.
Também tem aspectos inadequados para desenvolvimento em equipe e manutenção a longo prazo.&lt;/p>
&lt;h3 id="difícil-de-suportar-ui-moderna">Difícil de Suportar UI Moderna
&lt;/h3>&lt;p>É &lt;strong>difícil suportar a UX exigida nos últimos anos&lt;/strong> , como suporte a alto DPI, interfaces de toque, acessibilidade e modo escuro.
Você precisa lidar com cada um manualmente, o que exige muito esforço.&lt;/p>
&lt;h3 id="não-suporta-multiplataforma">Não Suporta Multiplataforma
&lt;/h3>&lt;p>Como é uma API completamente exclusiva do Windows, &lt;strong>não pode ser portada para macOS ou Linux&lt;/strong> .
Se você planeja implantação em várias plataformas, precisará selecionar outras tecnologias.&lt;/p>
&lt;h3 id="custo-de-aprendizado-extremamente-alto">Custo de Aprendizado Extremamente Alto
&lt;/h3>&lt;p>Você deve entender &lt;strong>conceitos e mecanismos raramente usados hoje&lt;/strong> , como manipuladores, GDI, COM e OLE.
Muitos documentos são antigos, exigindo tempo e paciência para aprender.&lt;/p>
&lt;hr>
&lt;h2 id="usos-adequados">Usos Adequados
&lt;/h2>&lt;ul>
&lt;li>&lt;strong>Ferramentas leves&lt;/strong> , como iniciadores de arquivos e suportes de teclas de atalho&lt;/li>
&lt;li>&lt;strong>Utilitários do sistema&lt;/strong> , como manipulação da área de transferência e controle de IME&lt;/li>
&lt;li>&lt;strong>Aplicativos baseados em controle nativo&lt;/strong> , como ganchos globais e captura de janelas&lt;/li>
&lt;li>&lt;strong>Ferramentas de suporte de driver&lt;/strong> intimamente ligadas ao hardware&lt;/li>
&lt;/ul>
&lt;hr>
&lt;h2 id="usos-inadequados">Usos Inadequados
&lt;/h2>&lt;ul>
&lt;li>&lt;strong>Aplicativos voltados para o consumidor em geral&lt;/strong> onde UI / UX modernos são importantes&lt;/li>
&lt;li>&lt;strong>Desenvolvimento de protótipos e MVP&lt;/strong> construídos com velocidade em mente&lt;/li>
&lt;li>&lt;strong>Projetos de grande escala&lt;/strong> baseados em operação de longo prazo e desenvolvimento em equipe&lt;/li>
&lt;li>&lt;strong>Produtos multiplataforma&lt;/strong> que precisam suportar vários sistemas operacionais&lt;/li>
&lt;/ul>
&lt;hr>
&lt;h2 id="resumo-da-avaliação">Resumo da Avaliação
&lt;/h2>&lt;table>
&lt;thead>
&lt;tr>
&lt;th>Ponto de Vista&lt;/th>
&lt;th>Avaliação&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>Velocidade de Execução&lt;/td>
&lt;td>◎ Muito Rápido&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Eficiência de Memória&lt;/td>
&lt;td>◎ Excelente&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Velocidade de Desenvolvimento&lt;/td>
&lt;td>× Lenta&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Manutenibilidade&lt;/td>
&lt;td>× Baixa&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Suporte Multiplateforma&lt;/td>
&lt;td>× Não Suportado&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Suporte UI Moderna&lt;/td>
&lt;td>× Fraco&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Liberdade de Controle do SO&lt;/td>
&lt;td>◎ Esmagadoramente Alta&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;hr>
&lt;h2 id="conclusão">Conclusão
&lt;/h2>&lt;p>&lt;strong>Win32API + C++ é uma ferramenta para desenvolvedores que &amp;ldquo;desejam lidar com tudo no sistema operacional por conta própria&amp;rdquo;.&lt;/strong>
Embora seu poder seja imenso, o aprendizado e a operação exigem uma quantidade correspondente de determinação.&lt;/p>
&lt;blockquote>
&lt;p>Se vale a pena &amp;ldquo;escolher ousadamente&amp;rdquo; depende da natureza do aplicativo que você pretende.&lt;/p>
&lt;/blockquote>
&lt;hr>
&lt;p>Mergulhar no mundo de &lt;code>#include &amp;lt;windows.h&amp;gt;&lt;/code> sem depender de frameworks de GUI ou linguagens modernas ――
Essa escolha ainda é significativa hoje.&lt;/p></description></item><item><title>【Para Iniciantes】Guia para Instalar libcurl (com suporte a OpenSSL) no Visual Studio usando vcpkg</title><link>http://kenji.blog/pt/p/vcpkg-%E3%82%92%E4%BD%BF%E3%81%A3%E3%81%A6-visual-studio-%E3%81%AB-curl-%E3%82%92%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB/</link><pubDate>Mon, 07 Jul 2025 21:46:08 +0900</pubDate><guid>http://kenji.blog/pt/p/vcpkg-%E3%82%92%E4%BD%BF%E3%81%A3%E3%81%A6-visual-studio-%E3%81%AB-curl-%E3%82%92%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB/</guid><description>&lt;img src="http://kenji.blog/p/vcpkg-%E3%82%92%E4%BD%BF%E3%81%A3%E3%81%A6-visual-studio-%E3%81%AB-curl-%E3%82%92%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB/img.png" alt="Featured image of post 【Para Iniciantes】Guia para Instalar libcurl (com suporte a OpenSSL) no Visual Studio usando vcpkg" />&lt;h2 id="se-você-for-usar-libcurl-com-suporte-a-openssl-no-visual-studio-a-instalação-do-vcpkg-é-fácil-e-recomendada">Se você for usar libcurl (com suporte a OpenSSL) no Visual Studio, a instalação do vcpkg é fácil e recomendada
&lt;/h2>&lt;p>Quando se quer lidar com comunicação HTTP em C++, libcurl é frequentemente usado. Mas a compilação e o ajuste de dependências são surpreendentemente difíceis, não é mesmo?&lt;/p>
&lt;p>O que é útil em momentos como esse é a ferramenta de gerenciamento de bibliotecas C++ da Microsoft, ** &amp;ldquo;vcpkg&amp;rdquo; ** .
Desta vez, introduziremos as etapas desde a introdução de libcurl (compatível com OpenSSL) usando cpkg até torná-lo fácil de usar no Visual Studio.&lt;/p>
&lt;hr>
&lt;h3 id="instalação-do-vcpkg-apenas-para-quem-ainda-não-instalou">Instalação do vcpkg (apenas para quem ainda não instalou)
&lt;/h3>&lt;p>Primeiro, vamos instalar o cpkg. Execute as etapas a seguir no PowerShell.&lt;/p>
&lt;p>&lt;code>powershell git clone https://github.com/microsoft/vcpkg cd vcpkg .ootstrap-vcpkg.bat &lt;/code>&lt;/p>
&lt;p>※Se você ainda não tem o Git instalado, instale-o a partir do &lt;a class="link" href="https://git-scm.com/" target="_blank" rel="noopener"
>Site oficial do Git&lt;/a>.&lt;/p>
&lt;hr>
&lt;h3 id="instalação-de-libcurl-compatível-com-openssl">Instalação de libcurl (compatível com OpenSSL)
&lt;/h3>&lt;p>Em seguida, use vcpkg para instalar o libcurl. Para especificar a versão de 64 bits compatível com OpenSSL, execute o comando a seguir.&lt;/p>
&lt;p>&lt;code>powershell vcpkg install curl[ssl] --triplet x64-windows &lt;/code>&lt;/p>
&lt;p>Ao executar este comando, as dependências necessárias (como OpenSSL) também são configuradas automaticamente.&lt;/p>
&lt;hr>
&lt;h3 id="configuração-de-integração-com-o-visual-studio">Configuração de integração com o Visual Studio
&lt;/h3>&lt;p>Para facilitar o uso de bibliotecas instaladas com vcpkg a partir do seu projeto do Visual Studio, defina as configurações de integração com o comando a seguir.&lt;/p>
&lt;p>&lt;code>powershell vcpkg integrate install &lt;/code>&lt;/p>
&lt;p>Depois de configurado, #include &amp;lt;curl/curl.h&amp;gt; ficará automaticamente disponível nos seus projetos do Visual Studio e você não precisará mais definir caminhos de bibliotecas ou configurações de vinculador manualmente.&lt;/p>
&lt;hr>
&lt;h2 id="conclusão">Conclusão
&lt;/h2>&lt;p>Com isso, a preparação para instalar libcurl (compatível com OpenSSL) no Visual Studio está concluída.&lt;/p>
&lt;ul>
&lt;li>Ao usar vcpkg, você pode gerenciar dependências difíceis de uma só vez&lt;/li>
&lt;li>Instale facilmente libcurl com cpkg install curl[ssl] &amp;ndash;triplet x64-windows&lt;/li>
&lt;li>A integração automática com o Visual Studio é possível com cpkg integrate install&lt;/li>
&lt;/ul>
&lt;p>Agora, basta incluir o cabeçalho no seu projeto e usar a API libcurl para iniciar o desenvolvimento.
Aproveite o útil vcpkg e aumente rapidamente a eficiência do seu desenvolvimento.&lt;/p></description></item><item><title>O que é necessário para não cair em teorias da conspiração</title><link>http://kenji.blog/pt/p/%E9%99%B0%E8%AC%80%E8%AB%96%E3%81%AB%E3%81%AF%E3%81%BE%E3%82%89%E3%81%AA%E3%81%84%E3%81%9F%E3%82%81%E3%81%AB%E4%BD%95%E3%81%8C%E5%BF%85%E8%A6%81%E3%81%8B/</link><pubDate>Mon, 26 May 2025 22:23:34 +0900</pubDate><guid>http://kenji.blog/pt/p/%E9%99%B0%E8%AC%80%E8%AB%96%E3%81%AB%E3%81%AF%E3%81%BE%E3%82%89%E3%81%AA%E3%81%84%E3%81%9F%E3%82%81%E3%81%AB%E4%BD%95%E3%81%8C%E5%BF%85%E8%A6%81%E3%81%8B/</guid><description>&lt;img src="http://kenji.blog/p/%E9%99%B0%E8%AC%80%E8%AB%96%E3%81%AB%E3%81%AF%E3%81%BE%E3%82%89%E3%81%AA%E3%81%84%E3%81%9F%E3%82%81%E3%81%AB%E4%BD%95%E3%81%8C%E5%BF%85%E8%A6%81%E3%81%8B/img.png" alt="Featured image of post O que é necessário para não cair em teorias da conspiração" />&lt;h2 id="a-segurança-mental-necessária-para-não-se-deixar-levar-por-teorias-da-conspiração">A &amp;ldquo;segurança mental&amp;rdquo; necessária para não se deixar levar por teorias da conspiração
&lt;/h2>&lt;p>Ao navegar na internet, às vezes nos deparamos com histórias do tipo &amp;ldquo;teoria da conspiração&amp;rdquo;.&lt;/p>
&lt;p>&amp;ldquo;Será que há alguém manipulando este evento nos bastidores?&amp;rdquo;
&amp;ldquo;Será que a verdadeira verdade está sendo ocultada?&amp;rdquo;
Muitos já devem ter visto discursos como esses se espalharem de forma plausível.&lt;/p>
&lt;p>Para evitar ser sugado demais por essas informações, não basta apenas &amp;ldquo;conhecimento&amp;rdquo; ou &amp;ldquo;capacidade de raciocínio&amp;rdquo;, é muito importante ajustar a &lt;strong>forma de ser da mente&lt;/strong> , ou seja, a &amp;ldquo;segurança mental&amp;rdquo;.&lt;/p>
&lt;p>Abaixo, apresentamos 6 formas de pensar eficazes para isso.&lt;/p>
&lt;hr>
&lt;h3 id="não-conecte-imediatamente-a-ansiedade-a-uma-resposta">Não conecte imediatamente a ansiedade a uma &amp;ldquo;resposta&amp;rdquo;
&lt;/h3>&lt;p>Uma grande característica das teorias da conspiração é que elas apresentam uma &amp;ldquo;resposta&amp;rdquo; clara e fácil de entender para ansiedades e dúvidas.&lt;/p>
&lt;p>Por exemplo, a perguntas como:&lt;/p>
&lt;ul>
&lt;li>&amp;ldquo;Por que incidentes como este acontecem?&amp;rdquo;&lt;/li>
&lt;li>&amp;ldquo;Quem está se beneficiando?&amp;rdquo;&lt;/li>
&lt;/ul>
&lt;p>Quando é apresentado um roteiro como &amp;ldquo;Na verdade, fulano está manipulando nos bastidores&amp;rdquo;, é fácil acabar se convencendo.&lt;/p>
&lt;p>Mas é exatamente quando sentimos ansiedade que é importante &lt;strong>manter as coisas em suspenso sem chegar imediatamente a uma conclusão&lt;/strong> .&lt;/p>
&lt;blockquote>
&lt;p>A &amp;ldquo;capacidade de permanecer sem saber&amp;rdquo; é também um sinal de maturidade intelectual.&lt;/p>
&lt;/blockquote>
&lt;hr>
&lt;h3 id="amplie-intencionalmente-suas-fontes-de-informação">Amplie intencionalmente suas fontes de informação
&lt;/h3>&lt;p>Muitos dos que mergulham em teorias da conspiração tendem a ver intensamente apenas &amp;ldquo;informações com ideias semelhantes&amp;rdquo;.&lt;/p>
&lt;p>Isso é chamado de &amp;ldquo;viés de confirmação&amp;rdquo;, uma tendência psicológica de focar apenas em informações que reforçam as crenças que já possuímos.&lt;/p>
&lt;p>Especialmente os algoritmos de redes sociais e sites de vídeo continuam recomendando postagens que parecem se adequar ao seu gosto, o que pode estreitar naturalmente o seu campo de visão.&lt;/p>
&lt;p>Conscientemente, tentar:&lt;/p>
&lt;ul>
&lt;li>Consumir mídia de perspectivas diferentes&lt;/li>
&lt;li>Ver notícias internacionais ou fontes acadêmicas&lt;/li>
&lt;li>Ouvir opiniões diferentes das suas&lt;/li>
&lt;/ul>
&lt;p>Tentar a &lt;strong>diversificação das fontes de informação&lt;/strong> leva a evitar riscos.&lt;/p>
&lt;hr>
&lt;h3 id="não-pense-eu-não-serei-enganado">Não pense &amp;ldquo;Eu não serei enganado&amp;rdquo;
&lt;/h3>&lt;p>Pessoas lógicas ou com muito conhecimento muitas vezes são, na verdade, fáceis de serem atraídas para teorias da conspiração.&lt;/p>
&lt;p>Isso porque acreditar que &amp;ldquo;Eu posso perceber a verdade que os outros não percebem&amp;rdquo; se torna um fator que obscurece o julgamento.&lt;/p>
&lt;p>Por mais cuidado que se tenha, os seres humanos cometem erros. Por isso, a atitude mais racional é &lt;strong>partir do princípio de que você também pode ser enganado&lt;/strong> .&lt;/p>
&lt;blockquote>
&lt;p>&amp;ldquo;Duvidar, mas não tirar conclusões precipitadas&amp;rdquo; torna-se seu poder de defesa.&lt;/p>
&lt;/blockquote>
&lt;hr>
&lt;h3 id="olhe-para-a-estrutura-sem-ser-puxado-pela-história">Olhe para a estrutura, sem ser puxado pela história
&lt;/h3>&lt;p>As teorias da conspiração sempre vêm acompanhadas de uma &amp;ldquo;história dramática&amp;rdquo;.&lt;/p>
&lt;p>Dicotomias simples como:&lt;/p>
&lt;ul>
&lt;li>A estrutura de conflito entre o bem e o mal&lt;/li>
&lt;li>Governantes e governados&lt;/li>
&lt;li>Eu desperto vs Os outros que sofreram lavagem cerebral&lt;/li>
&lt;/ul>
&lt;p>Mesmo que sejam atraentes como histórias, nem sempre refletem corretamente a realidade.&lt;/p>
&lt;p>Muitos fatores se entrelaçam nos eventos reais e nos movimentos sociais, como relações causais complexas, contextos históricos e estruturas institucionais.&lt;/p>
&lt;p>É importante não se deixar levar muito pelas emoções da história e ter a &lt;strong>perspectiva de entender estruturalmente&lt;/strong> &amp;ldquo;Por que isso está acontecendo?&amp;rdquo;.&lt;/p>
&lt;hr>
&lt;h3 id="não-deixe-a-solidão-sem-atenção">Não deixe a solidão sem atenção
&lt;/h3>&lt;p>Muitas vezes, por trás de uma forte atração por teorias da conspiração, esconde-se o &amp;ldquo;isolamento&amp;rdquo; e a &amp;ldquo;falta de um lugar ao qual pertencer&amp;rdquo;.&lt;/p>
&lt;p>Quando as pessoas se sentem solitárias, elas facilmente se tornam profundamente dependentes de grupos e pessoas que as compreendem. As comunidades de teorias da conspiração às vezes cumprem a função desse &amp;ldquo;lugar&amp;rdquo;.&lt;/p>
&lt;p>Por isso mesmo, o esforço para não ficar sozinho também se conecta à segurança mental.&lt;/p>
&lt;p>Por exemplo, ações como:&lt;/p>
&lt;ul>
&lt;li>Conversar regularmente com as pessoas&lt;/li>
&lt;li>Participar de comunidades onde se compartilham hobbies ou interesses&lt;/li>
&lt;li>Ter conexões offline, não apenas online&lt;/li>
&lt;/ul>
&lt;p>Levam à estabilidade mental.&lt;/p>
&lt;hr>
&lt;h3 id="foque-no-diálogo-em-vez-de-na-negação">Foque no diálogo, em vez de na negação
&lt;/h3>&lt;p>Mesmo que alguém próximo esteja inclinado a teorias da conspiração, &lt;strong>negar de forma categórica&lt;/strong> pode ter o efeito oposto.&lt;/p>
&lt;p>Quando as pessoas têm suas crenças negadas, a tendência psicológica de tentar protegê-las torna-se mais forte (isso é chamado de &amp;ldquo;cognição defensiva&amp;rdquo;).&lt;/p>
&lt;p>Em vez disso:&lt;/p>
&lt;ul>
&lt;li>Pergunte gentilmente: &amp;ldquo;Por que você pensou isso?&amp;rdquo;&lt;/li>
&lt;li>Mostre sua própria perspectiva de forma calma: &amp;ldquo;Também pode haver essa forma de pensar.&amp;rdquo;&lt;/li>
&lt;/ul>
&lt;p>Ao adotar uma &lt;strong>abordagem baseada no diálogo&lt;/strong> , surge a possibilidade de a perspectiva da outra pessoa se ampliar naturalmente.&lt;/p>
&lt;hr>
&lt;h2 id="conclusão-o-que-você-pode-fazer-para-manter-distância-das-teorias-da-conspiração">Conclusão: O que você pode fazer para manter distância das teorias da conspiração
&lt;/h2>&lt;ul>
&lt;li>Ter a capacidade de suspender as coisas sem conectar imediatamente a ansiedade a uma resposta&lt;/li>
&lt;li>Diversificar as fontes de informação e perceber os vieses&lt;/li>
&lt;li>Reconhecer que seu próprio julgamento não é absoluto&lt;/li>
&lt;li>Olhar para as coisas pela estrutura e relações causais, não pela história&lt;/li>
&lt;li>Evitar a solidão e manter conexões&lt;/li>
&lt;li>Enfrentar as teorias da conspiração de outras pessoas com diálogo em vez de negação&lt;/li>
&lt;/ul>
&lt;hr>
&lt;p>Diz-se que ser atraído por teorias da conspiração é mais influenciado pelo estado psicológico e pelo ambiente do que pela quantidade de conhecimento.&lt;/p>
&lt;p>Por isso mesmo, sem assumir que &amp;ldquo;Estou bem&amp;rdquo;, os esforços para &lt;strong>aumentar a segurança mental&lt;/strong> um pouco de cada vez no cotidiano certamente serão um grande apoio para viver de forma flexível na sociedade da informação do futuro.&lt;/p></description></item><item><title>História do No-Code em Ambientes Locais</title><link>http://kenji.blog/pt/p/historia-do-low-code-e-no-code/</link><pubDate>Sat, 26 Apr 2025 16:46:11 +0900</pubDate><guid>http://kenji.blog/pt/p/historia-do-low-code-e-no-code/</guid><description>&lt;img src="http://kenji.blog/p/%E3%83%AD%E3%83%BC%E3%82%B3%E3%83%BC%E3%83%89%E3%81%8A%E3%82%88%E3%81%B3%E3%83%8E%E3%83%BC%E3%82%B3%E3%83%BC%E3%83%89%E3%81%AE%E6%AD%B4%E5%8F%B2/img.png" alt="Featured image of post História do No-Code em Ambientes Locais" />&lt;h1 id="história-do-desenvolvimento-low-code--no-code-anos-1980---presente">História do Desenvolvimento Low-Code / No-Code (Anos 1980 - Presente)
&lt;/h1>&lt;p>O desenvolvimento low-code / no-code é uma abordagem que permite criar aplicativos, sites e bancos de dados sem a necessidade de conhecimento especializado em programação. Essa ideia começou na década de 1980 e, com a popularização dos PCs, a evolução da internet e a expansão das tecnologias em nuvem, evoluiu para uma variedade de plataformas. Neste artigo, apresentaremos ferramentas e serviços representativos de cada década, destacando suas características e preços.&lt;/p>
&lt;hr>
&lt;h2 id="anos-1980-os-primórdios">Anos 1980: Os Primórdios
&lt;/h2>&lt;ul>
&lt;li>
&lt;p>&lt;strong>HyperCard (Apple, 1987)&lt;/strong>
Ferramenta de criação de aplicativos para Macintosh. A tela era configurada em formato de cartão, e a interface gráfica (GUI) era criada arrastando e soltando elementos. Um controle de comportamento simples também era possível usando sua própria linguagem de script, &amp;ldquo;HyperTalk&amp;rdquo;. Era preferido para fins de prototipagem. O preço no lançamento era de 49,95 dólares e, mais tarde, foi fornecido gratuitamente aos novos compradores de Mac. A última versão foi em 1998 e não é compatível com Mac OS X ou superior.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>FileMaker (Claris/Apple, 1985)&lt;/strong>
Software de banco de dados gráfico. Além de exibir dados em formato de tabela, é uma ferramenta de banco de dados relacional com edição de layout flexível e recursos de script. Atualmente é oferecido como &amp;ldquo;Claris FileMaker Pro&amp;rdquo;, e a versão de licença completa custa 594 dólares (a partir de 2024).&lt;/p>
&lt;/li>
&lt;/ul>
&lt;hr>
&lt;h2 id="anos-1990-a-ascensão-dos-aplicativos-gui-e-desenvolvimento-de-negócios">Anos 1990: A Ascensão dos Aplicativos GUI e Desenvolvimento de Negócios
&lt;/h2>&lt;ul>
&lt;li>
&lt;p>&lt;strong>Visual Basic (Microsoft, 1991)&lt;/strong>
Um IDE dedicado ao desenvolvimento de aplicativos Windows. Ao arrastar e soltar componentes da GUI, como botões e rótulos, era possível construir facilmente aplicativos orientados a eventos. Com o VB6.0 em 1998 como a última versão, o foco mudou para a era .NET.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>Microsoft Access (1992)&lt;/strong>
Ferramenta de desenvolvimento de banco de dados para Windows. Permitia o design de bancos de dados relacionais e a criação de formulários via GUI, sendo amplamente utilizado para o desenvolvimento de aplicativos de negócios em geral. Atualmente oferecido como parte do Microsoft 365.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>PowerBuilder (PowerSoft/Sybase, 1991)&lt;/strong>
Ferramenta de desenvolvimento 4GL para aplicativos de negócios. Suportava arquitetura cliente/servidor e tinha pontos fortes na integração de bancos de dados. Atualmente continua sendo fornecido sob a marca SAP.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>Dreamweaver (Macromedia, 1997)&lt;/strong>
Uma ferramenta WYSIWYG que permitia a criação visual de páginas da web. Possibilitava alternar entre edição HTML e visualização de design, e também suportava ASP e PHP. Atualmente é fornecido pela Adobe e está disponível por assinatura (cerca de 34,49 dólares por mês).&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>Flash (Macromedia, 1996)&lt;/strong>
Originalmente desenvolvido como FutureSplash Animator, uma ferramenta de criação de animação vetorial. Mais tarde, foi utilizado para a criação de conteúdo interativo para a web, mas o suporte terminou em 2020 devido a preocupações de segurança.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>GameMaker (1999)&lt;/strong>
Ferramenta de criação de jogos 2D para iniciantes. A colocação de objetos e o controle de eventos podem ser feitos arrastando e soltando. Posteriormente também suportou scripts (GML), e atualmente vários planos são oferecidos para uso comercial.&lt;/p>
&lt;/li>
&lt;/ul>
&lt;hr>
&lt;h2 id="anos-2000-base-na-web-e-expansão-do-código-aberto">Anos 2000: Base na Web e Expansão do Código Aberto
&lt;/h2>&lt;ul>
&lt;li>
&lt;p>&lt;strong>WordPress (2003)&lt;/strong>
CMS de código aberto usando PHP e MySQL. Permite construir blogs e sites corporativos usando temas e plugins sem conhecimento de programação. É distribuído gratuitamente e é um dos CMS mais utilizados no mundo.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>Wix (2006)&lt;/strong>
Um serviço no-code que permite a construção de sites no navegador. Você pode escolher um modelo e editar arrastando e soltando. Além do plano gratuito, planos pagos permitem o uso de domínios personalizados e recursos de e-commerce.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>OutSystems (2001)&lt;/strong>
Plataforma low-code para empresas. Como permite o rápido desenvolvimento de sistemas de negócios, sua adoção está progredindo em grandes empresas e agências governamentais. Suporta tanto nuvem quanto infraestrutura local (on-premises).&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>Scratch (MIT, 2007)&lt;/strong>
Ferramenta de aprendizado de programação desenvolvida para crianças. Ao combinar blocos coloridos, jogos e animações podem ser criados, e é amplamente utilizado em ambientes educacionais. Fornecido gratuitamente.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>Airtable (2013)&lt;/strong>
Um serviço em nuvem que combina planilhas e bancos de dados. A aparência é semelhante ao Excel, mas permite relações, exibição Kanban e integração de API. É amplamente utilizado por indivíduos a corporações.&lt;/p>
&lt;/li>
&lt;/ul>
&lt;hr>
&lt;h2 id="anos-2010---2020-a-era-da-nuvem-e-automação">Anos 2010 - 2020: A Era da Nuvem e Automação
&lt;/h2>&lt;p>Nos últimos anos, as ferramentas low-code / no-code baseadas em nuvem evoluíram rapidamente.&lt;/p>
&lt;ul>
&lt;li>
&lt;p>&lt;strong>Power Platform (Microsoft)&lt;/strong>
Uma plataforma integrada de desenvolvimento e automação de aplicativos de negócios que inclui &amp;ldquo;Power Apps&amp;rdquo;, &amp;ldquo;Power Automate&amp;rdquo;, etc. Os processos de negócios corporativos podem ser construídos visualmente arrastando e soltando.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>Salesforce Lightning Platform&lt;/strong>
A base de desenvolvimento de aplicativos fornecida pela Salesforce, um CRM. Aplicativos de negócios podem ser criados via GUI e a integração com outros serviços da Salesforce é fácil.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>Zapier / IFTTT&lt;/strong>
Ferramentas de automação que permitem construir conexões entre vários serviços em nuvem sem codificação. Por exemplo, fluxos de trabalho como &amp;ldquo;Notificar o Slack quando algo for inserido no Google Forms&amp;rdquo; podem ser facilmente implementados.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>Notion (Anos 2010)&lt;/strong>
Um espaço de trabalho completo que integra gerenciamento de documentos, gerenciamento de tarefas, Wiki, etc. Também possui uma função de banco de dados personalizada, útil para a melhoria de negócios sem código.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>Construct 3 / GameSalad&lt;/strong>
Ferramentas para criar jogos arrastando e soltando. O Construct 3 é compatível com HTML5 e também funciona em um navegador, sendo popular em ambientes educacionais e entre desenvolvedores indie.&lt;/p>
&lt;/li>
&lt;/ul>
&lt;hr>
&lt;h2 id="fontes-de-informação-e-complementos">Fontes de Informação e Complementos
&lt;/h2>&lt;p>Este artigo foi estruturado com base nos sites oficiais de cada produto, Wikipedia e materiais/artigos confiáveis (Apple, Microsoft, Adobe, etc.). As informações de preços referem-se à época ou às informações oficiais mais recentes possíveis (listadas principalmente em dólares americanos). Muitas das ferramentas desde os anos 2000 são baseadas em assinaturas, e as taxas variam dependendo do plano.&lt;/p></description></item><item><title>FizzBuzz</title><link>http://kenji.blog/pt/p/fizzbuzz/</link><pubDate>Fri, 18 Apr 2025 00:58:11 +0900</pubDate><guid>http://kenji.blog/pt/p/fizzbuzz/</guid><description>&lt;img src="http://kenji.blog/p/fizzbuzz/img.png" alt="Featured image of post FizzBuzz" />&lt;h2 id="afinal-o-que-é-fizzbuzz">Afinal, o que é FizzBuzz?
&lt;/h2>&lt;p>Olá!&lt;/p>
&lt;p>Hoje eu gostaria de escrever sobre &amp;ldquo;FizzBuzz&amp;rdquo;.&lt;/p>
&lt;p>Tanto para aqueles que pensam &amp;ldquo;Ah, eu conheço isso!&amp;rdquo;, quanto para aqueles que dizem &amp;ldquo;Já ouvi falar, mas não entendo muito bem&amp;rdquo;, por favor, fiquem comigo um pouquinho. Pode ser lido em poucos minutos, e talvez você pense &amp;ldquo;Faz sentido&amp;rdquo;.&lt;/p>
&lt;hr>
&lt;h3 id="é-verdade-que-se-você-não-consegue-escrever-fizzbuzz-você-é-um-fracasso-como-programador">É verdade que &amp;ldquo;se você não consegue escrever FizzBuzz, você é um fracasso como programador&amp;rdquo;?
&lt;/h3>&lt;p>O FizzBuzz, em resumo, é assim.&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;span class="lnt">4
&lt;/span>&lt;span class="lnt">5
&lt;/span>&lt;span class="lnt">6
&lt;/span>&lt;span class="lnt">7
&lt;/span>&lt;span class="lnt">8
&lt;/span>&lt;span class="lnt">9
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-python" data-lang="python">&lt;span class="line">&lt;span class="cl">&lt;span class="k">for&lt;/span> &lt;span class="n">i&lt;/span> &lt;span class="ow">in&lt;/span> &lt;span class="nb">range&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="mi">1&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="mi">101&lt;/span>&lt;span class="p">):&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">if&lt;/span> &lt;span class="n">i&lt;/span> &lt;span class="o">%&lt;/span> &lt;span class="mi">15&lt;/span> &lt;span class="o">==&lt;/span> &lt;span class="mi">0&lt;/span>&lt;span class="p">:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nb">print&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s2">&amp;#34;FizzBuzz&amp;#34;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">elif&lt;/span> &lt;span class="n">i&lt;/span> &lt;span class="o">%&lt;/span> &lt;span class="mi">3&lt;/span> &lt;span class="o">==&lt;/span> &lt;span class="mi">0&lt;/span>&lt;span class="p">:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nb">print&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s2">&amp;#34;Fizz&amp;#34;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">elif&lt;/span> &lt;span class="n">i&lt;/span> &lt;span class="o">%&lt;/span> &lt;span class="mi">5&lt;/span> &lt;span class="o">==&lt;/span> &lt;span class="mi">0&lt;/span>&lt;span class="p">:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nb">print&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s2">&amp;#34;Buzz&amp;#34;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">else&lt;/span>&lt;span class="p">:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nb">print&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">i&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>Sim, este é o famoso &amp;ldquo;Problema FizzBuzz&amp;rdquo;.&lt;/p>
&lt;p>Você analisa os números de 1 a 100 em ordem,&lt;br>
se for um múltiplo de 3, exibe &amp;ldquo;Fizz&amp;rdquo;, se for um múltiplo de 5, exibe &amp;ldquo;Buzz&amp;rdquo;,&lt;br>
se for um múltiplo de ambos, exibe &amp;ldquo;FizzBuzz&amp;rdquo; - é algo muito simples.&lt;/p>
&lt;p>E, no entanto, por algum motivo, costuma ser tratado como &amp;ldquo;o teste mínimo para um programador&amp;rdquo;. Aparece em entrevistas, e nas redes sociais você vê comentários do tipo &amp;ldquo;Alguém que não consegue nem escrever FizzBuzz&amp;hellip;&amp;rdquo;.&lt;/p>
&lt;p>Mas, espere um minuto.&lt;/p>
&lt;p>Podemos realmente dizer que &amp;ldquo;não conseguir escrever FizzBuzz = não conseguir programar&amp;rdquo;?&lt;/p>
&lt;hr>
&lt;h3 id="não-é-sobre-poder-ou-não-mas-se-você-tem-o-estado-para-poder">Não é sobre poder ou não, mas se você tem o &amp;ldquo;estado&amp;rdquo; para poder
&lt;/h3>&lt;p>É verdade que o FizzBuzz exige compreensão da sintaxe e pensamento lógico básico. Portanto, faz sentido que seja usado para &amp;ldquo;verificar os fundamentos&amp;rdquo;.&lt;/p>
&lt;p>Mas, veja bem.&lt;/p>
&lt;p>Se o ambiente for diferente, os resultados serão diferentes.&lt;/p>
&lt;p>Por exemplo,&lt;/p>
&lt;ul>
&lt;li>Quando você está nervoso na frente de um entrevistador que acabou de conhecer&lt;/li>
&lt;li>Quando você recebe um quadro branco de repente e não tem um editor à mão&lt;/li>
&lt;li>Quando você não consegue se lembrar imediatamente de &amp;ldquo;Ei, o que é modulo?&amp;rdquo;&lt;/li>
&lt;/ul>
&lt;p>&amp;hellip;Isso não acontece? Somos humanos. Eu acho que acontece.&lt;/p>
&lt;p>Portanto, em vez de &amp;ldquo;conseguir escrever FizzBuzz&amp;rdquo;, acho que &amp;ldquo;conseguir se colocar em um estado em que consiga escrever FizzBuzz&amp;rdquo; é, na verdade, muito mais importante.&lt;/p>
&lt;hr>
&lt;h3 id="a-armadilha-do-conselho-comum-de-basta-treinar-e-ficará-tudo-bem">A armadilha do conselho comum de &amp;ldquo;Basta treinar e ficará tudo bem&amp;rdquo;
&lt;/h3>&lt;p>Quando se trata desse assunto, o conselho &amp;ldquo;Então pratique todos os dias!&amp;rdquo; tende a surgir.&lt;/p>
&lt;p>É verdade que a prática repetida fará com que você o escreva com fluência, e isso em si é bom. Mas se partirmos da premissa de que &amp;ldquo;se você não conseguir escrever FizzBuzz, você é um fracasso&amp;rdquo;, isso pode se transformar em mero medo.&lt;/p>
&lt;p>Em outras palavras, tende a criar uma estrutura onde você sente &amp;ldquo;Eu cometi um erro = sou inútil&amp;rdquo;.&lt;/p>
&lt;p>Por exemplo, quando você acorda tarde, você não tende a pensar &amp;ldquo;Eu sou preguiçoso&amp;hellip;&amp;rdquo;? Mas pode ser apenas que seu corpo estivesse cansado naquele momento.&lt;/p>
&lt;p>O FizzBuzz é a mesma coisa.&lt;/p>
&lt;hr>
&lt;h3 id="dito-isto-o-fizzbuzz-ainda-é-uma-boa-pergunta">Dito isto, o FizzBuzz ainda é uma boa pergunta
&lt;/h3>&lt;p>Dito isto, o FizzBuzz não é ruim.&lt;/p>
&lt;p>Em vez disso, acho que é uma pergunta muito bem elaborada. As regras são simples e é fácil de expandir. Por exemplo, se você mudá-lo assim, seu pensamento se aprofundará.&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;span class="lnt">4
&lt;/span>&lt;span class="lnt">5
&lt;/span>&lt;span class="lnt">6
&lt;/span>&lt;span class="lnt">7
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-python" data-lang="python">&lt;span class="line">&lt;span class="cl">&lt;span class="k">for&lt;/span> &lt;span class="n">i&lt;/span> &lt;span class="ow">in&lt;/span> &lt;span class="nb">range&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="mi">1&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="mi">101&lt;/span>&lt;span class="p">):&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">output&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="s2">&amp;#34;&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">if&lt;/span> &lt;span class="n">i&lt;/span> &lt;span class="o">%&lt;/span> &lt;span class="mi">3&lt;/span> &lt;span class="o">==&lt;/span> &lt;span class="mi">0&lt;/span>&lt;span class="p">:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">output&lt;/span> &lt;span class="o">+=&lt;/span> &lt;span class="s2">&amp;#34;Fizz&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">if&lt;/span> &lt;span class="n">i&lt;/span> &lt;span class="o">%&lt;/span> &lt;span class="mi">5&lt;/span> &lt;span class="o">==&lt;/span> &lt;span class="mi">0&lt;/span>&lt;span class="p">:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">output&lt;/span> &lt;span class="o">+=&lt;/span> &lt;span class="s2">&amp;#34;Buzz&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nb">print&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">output&lt;/span> &lt;span class="ow">or&lt;/span> &lt;span class="n">i&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>Este é um exemplo de &amp;ldquo;Você pode escrever isso mesmo sem usar if-elif-else&amp;rdquo;. É meio inteligente, não é?&lt;/p>
&lt;p>Em outras palavras, o FizzBuzz não trata apenas de &amp;ldquo;se você conseguiu fazer&amp;rdquo;, mas também serve como ponto de partida para ver &amp;ldquo;como você o escreve&amp;rdquo; e &amp;ldquo;o quanto você entende&amp;rdquo;.&lt;/p>
&lt;hr>
&lt;h3 id="por-tanto">Por tanto
&lt;/h3>&lt;p>Acho que não devemos atribuir muito significado excessivo a se você consegue ou não fazer o FizzBuzz.&lt;/p>
&lt;p>Mesmo que você não tenha conseguido escrever, pode ser apenas que &amp;ldquo;você não estava se sentindo bem agora&amp;rdquo;, e muitas vezes você conseguirá se pensar com cuidado mais tarde.&lt;/p>
&lt;p>Não se apresse, vamos avançar devagar.&lt;/p>
&lt;p>O código é escrito por humanos. Porque somos humanos, às vezes esquecemos coisas e ficamos nervosos. Aceitando isso, acho que basta se pudermos avançar pouco a pouco.&lt;/p>
&lt;p>Então, vamos escrever o código de maneira descontraída hoje.&lt;/p></description></item><item><title>Torre de Hanói</title><link>http://kenji.blog/pt/p/torre-de-hanoi/</link><pubDate>Thu, 17 Apr 2025 22:23:14 +0900</pubDate><guid>http://kenji.blog/pt/p/torre-de-hanoi/</guid><description>&lt;img src="http://kenji.blog/p/%E3%83%8F%E3%83%8E%E3%82%A4%E3%81%AE%E5%A1%94/img.png" alt="Featured image of post Torre de Hanói" />&lt;h1 id="torre-de-hanói">Torre de Hanói
&lt;/h1>&lt;p>Olá!&lt;/p>
&lt;p>Hoje, gostaria de explicar sobre a &amp;ldquo;Torre de Hanói&amp;rdquo;, usando um programa de exemplo em Python.&lt;/p>
&lt;hr>
&lt;h2 id="o-que-é-a-torre-de-hanói">O que é a Torre de Hanói?
&lt;/h2>&lt;p>A Torre de Hanói é um quebra-cabeça que usa 3 hastes e vários discos. Os discos têm tamanhos diferentes e, no início, estão empilhados em uma haste em ordem decrescente de tamanho. As regras são as seguintes:&lt;/p>
&lt;ol>
&lt;li>Apenas um disco pode ser movido por vez.&lt;/li>
&lt;li>Não é possível colocar um disco maior em cima de um disco menor.&lt;/li>
&lt;/ol>
&lt;p>Este quebra-cabeça é considerado um excelente material de ensino para aprender o pensamento recursivo. A recursividade é um método de resolver um problema dividindo-o em problemas menores do mesmo tipo. Na Torre de Hanói, para mover n discos, repete-se a operação de mover n-1 discos.&lt;/p>
&lt;hr>
&lt;h2 id="vamos-resolver-a-torre-de-hanói-com-python">Vamos resolver a Torre de Hanói com Python
&lt;/h2>&lt;p>Abaixo está um código de exemplo para resolver a Torre de Hanói em Python.&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt"> 1
&lt;/span>&lt;span class="lnt"> 2
&lt;/span>&lt;span class="lnt"> 3
&lt;/span>&lt;span class="lnt"> 4
&lt;/span>&lt;span class="lnt"> 5
&lt;/span>&lt;span class="lnt"> 6
&lt;/span>&lt;span class="lnt"> 7
&lt;/span>&lt;span class="lnt"> 8
&lt;/span>&lt;span class="lnt"> 9
&lt;/span>&lt;span class="lnt">10
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-python" data-lang="python">&lt;span class="line">&lt;span class="cl">&lt;span class="k">def&lt;/span> &lt;span class="nf">hanoi&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">n&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">source&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">target&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">auxiliary&lt;/span>&lt;span class="p">):&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">if&lt;/span> &lt;span class="n">n&lt;/span> &lt;span class="o">==&lt;/span> &lt;span class="mi">1&lt;/span>&lt;span class="p">:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nb">print&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="sa">f&lt;/span>&lt;span class="s2">&amp;#34;Move disk 1 from &lt;/span>&lt;span class="si">{&lt;/span>&lt;span class="n">source&lt;/span>&lt;span class="si">}&lt;/span>&lt;span class="s2"> to &lt;/span>&lt;span class="si">{&lt;/span>&lt;span class="n">target&lt;/span>&lt;span class="si">}&lt;/span>&lt;span class="s2">&amp;#34;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">return&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">hanoi&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">n&lt;/span> &lt;span class="o">-&lt;/span> &lt;span class="mi">1&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">source&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">auxiliary&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">target&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nb">print&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="sa">f&lt;/span>&lt;span class="s2">&amp;#34;Move disk &lt;/span>&lt;span class="si">{&lt;/span>&lt;span class="n">n&lt;/span>&lt;span class="si">}&lt;/span>&lt;span class="s2"> from &lt;/span>&lt;span class="si">{&lt;/span>&lt;span class="n">source&lt;/span>&lt;span class="si">}&lt;/span>&lt;span class="s2"> to &lt;/span>&lt;span class="si">{&lt;/span>&lt;span class="n">target&lt;/span>&lt;span class="si">}&lt;/span>&lt;span class="s2">&amp;#34;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">hanoi&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">n&lt;/span> &lt;span class="o">-&lt;/span> &lt;span class="mi">1&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">auxiliary&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">target&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">source&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># Exemplo: Mover 3 discos de A para C&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">hanoi&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="mi">3&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="s1">&amp;#39;A&amp;#39;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="s1">&amp;#39;C&amp;#39;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="s1">&amp;#39;B&amp;#39;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>Neste código, a função &lt;code>hanoi&lt;/code> é chamada recursivamente e os passos para mover os discos são exibidos. Por exemplo, no caso de 3 discos, a seguinte saída é obtida:&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;span class="lnt">4
&lt;/span>&lt;span class="lnt">5
&lt;/span>&lt;span class="lnt">6
&lt;/span>&lt;span class="lnt">7
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">Move disk 1 from A to C
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">Move disk 2 from A to B
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">Move disk 1 from C to B
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">Move disk 3 from A to C
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">Move disk 1 from B to A
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">Move disk 2 from B to C
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">Move disk 1 from A to C
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>Desta forma, ao usar uma abordagem recursiva, problemas complexos podem ser resolvidos de forma simples.&lt;/p>
&lt;hr>
&lt;h2 id="quanto-tempo-leva-para-mover-64-discos">Quanto tempo leva para mover 64 discos?
&lt;/h2>&lt;p>O número de movimentos na Torre de Hanói requer no mínimo 2^n - 1 vezes. Ou seja, para mover 64 discos, são necessários 2^64 - 1 movimentos, o que dá aproximadamente 1,84×10^19 movimentos. Mesmo que você pudesse mover um por segundo, levaria cerca de 584 bilhões de anos. Isso é cerca de 42 vezes a idade do universo (aproximadamente 13,7 bilhões de anos).&lt;/p>
&lt;p>Desta forma, conforme o número de discos aumenta, o número necessário de movimentos aumenta exponencialmente. Portanto, mover 64 discos na prática não é realista.&lt;/p>
&lt;hr>
&lt;h2 id="resumo">Resumo
&lt;/h2>&lt;p>A Torre de Hanói é um quebra-cabeça perfeito para aprender o pensamento recursivo. Com Python, você pode facilmente implementar a sua solução. No entanto, é preciso ter cuidado, pois à medida que o número de discos aumenta, o número de movimentos necessários aumenta drasticamente.&lt;/p>
&lt;p>Ao entender a abordagem recursiva e tentar escrever código de fato, você pode melhorar suas habilidades de programação. Por favor, experimente enfrentar o desafio da Torre de Hanói.&lt;/p>
&lt;hr></description></item><item><title>Número de Linhas de Código-Fonte</title><link>http://kenji.blog/pt/p/numero-de-linhas-de-codigo-fonte/</link><pubDate>Thu, 17 Apr 2025 10:33:02 +0900</pubDate><guid>http://kenji.blog/pt/p/numero-de-linhas-de-codigo-fonte/</guid><description>&lt;img src="http://kenji.blog/p/%E3%82%BD%E3%83%BC%E3%82%B9%E3%82%B3%E3%83%BC%E3%83%89%E3%81%AE%E8%A1%8C%E6%95%B0/img_1.png" alt="Featured image of post Número de Linhas de Código-Fonte" />&lt;h1 id="número-de-linhas-de-código-fonte">Número de Linhas de Código-Fonte
&lt;/h1>&lt;p>Olá!&lt;/p>
&lt;p>Hoje eu gostaria de falar sobre um tema um pouco diferente.&lt;/p>
&lt;p>O assunto é: &amp;ldquo;O quanto o número de linhas de código-fonte aumentou em comparação com o passado?&amp;rdquo;&lt;/p>
&lt;p>Por exemplo, o software do Ônibus Espacial consistia em cerca de 420.000 linhas de código. Esse código foi desenvolvido sob um processo muito rigoroso para atender aos altos padrões de qualidade da NASA. Por outro lado, em projetos de software modernos em grande escala, não é incomum que o número de linhas de código ultrapasse dezenas de milhões. Por exemplo, diz-se que a base de código do Google chega a cerca de 2 bilhões de linhas.&lt;/p>
&lt;p>Como podemos ver, a escala do software tem crescido com o tempo.&lt;/p>
&lt;p>Mas, espere um minuto.&lt;/p>
&lt;p>Um aumento no número de linhas de código não é necessariamente uma coisa ruim. É natural que o código aumente para adicionar novos recursos e atender às necessidades do usuário. No entanto, à medida que o código aumenta, o risco de bugs também aumenta. De fato, algumas pesquisas mostram que projetos de código aberto tendem a ter um aumento na taxa de bugs quando ultrapassam 1 milhão de linhas.&lt;/p>
&lt;p>Mesmo assim, nem todos os projetos estão aumentando seu código da mesma maneira.&lt;/p>
&lt;p>Por exemplo, o kernel do Linux tinha cerca de 200.000 linhas na versão 1.0 em 1994, mas cresceu para cerca de 20 milhões de linhas na versão 4.2 em 2015. Esse aumento se deve à necessidade de suportar evoluções de hardware e a adição de novos recursos.&lt;/p>
&lt;p>Portanto, o número de linhas de código-fonte varia muito dependendo do tamanho e propósito do projeto, e do contexto da época.&lt;/p>
&lt;p>O aumento nas linhas de código por si só não é um problema, mas requer gerenciamento adequado para manter a qualidade e a capacidade de manutenção. É importante entender os riscos associados ao aumento de código e tomar as medidas apropriadas.&lt;/p>
&lt;p>Por fim, acho importante não ficar muito focado apenas nas linhas de código, mas sim enfatizar o propósito e a qualidade do projeto.&lt;/p>
&lt;p>Bem, vejo vocês na próxima vez!&lt;/p></description></item><item><title>Princípio de Kerckhoffs</title><link>http://kenji.blog/pt/p/principio-de-kerckhoffs/</link><pubDate>Wed, 16 Apr 2025 23:53:08 +0900</pubDate><guid>http://kenji.blog/pt/p/principio-de-kerckhoffs/</guid><description>&lt;img src="http://kenji.blog/p/%E3%82%B1%E3%83%AB%E3%82%AF%E3%83%9B%E3%83%95%E3%82%B9%E3%81%AE%E5%8E%9F%E7%90%86/img_2.png" alt="Featured image of post Princípio de Kerckhoffs" />&lt;h1 id="princípio-de-kerckhoffs">&amp;ldquo;Princípio de Kerckhoffs&amp;rdquo;
&lt;/h1>&lt;hr>
&lt;p>Olá!&lt;/p>
&lt;p>Hoje eu gostaria de falar sobre algo um pouco interessante e, na verdade, extremamente importante chamado &amp;ldquo;Princípio de Kerckhoffs&amp;rdquo;.&lt;/p>
&lt;p>Ah, espere, espere.&lt;br>
Alguns de vocês podem pensar: &amp;ldquo;Nunca ouvi falar do &amp;lsquo;Princípio de Kerckhoffs&amp;rsquo; e tem muitos termos técnicos&amp;hellip;&amp;rdquo;. Não se preocupe. Este artigo é exatamente o que eu quero que pessoas como você leiam.&lt;/p>
&lt;hr>
&lt;h2 id="o-que-significa-criptografia-segura">O que significa &amp;ldquo;criptografia segura&amp;rdquo;?
&lt;/h2>&lt;p>Por exemplo, digamos que alguém diga: &amp;ldquo;Este cofre só pode ser aberto por alguém que saiba a maneira secreta de abri-lo&amp;rdquo;.&lt;/p>
&lt;p>À primeira vista, isso parece muito seguro, não é?&lt;br>
Mas, se você pensar bem, não é um pouco preocupante?&lt;/p>
&lt;p>Como, &amp;ldquo;Se o segredo for revelado, é o fim?&amp;rdquo;.&lt;/p>
&lt;p>Na verdade, foi isso que desencadeou o surgimento do Princípio de Kerckhoffs.&lt;/p>
&lt;hr>
&lt;h2 id="o-que-é-o-princípio-de-kerckhoffs-afinal">O que é o &amp;ldquo;Princípio de Kerckhoffs&amp;rdquo; afinal?
&lt;/h2>&lt;p>Explicando de forma bem simples, é a ideia de que&lt;/p>
&lt;p>&lt;strong>&amp;ldquo;A criptografia deve ser segura mesmo se o seu funcionamento for descoberto&amp;rdquo;&lt;/strong> .&lt;/p>
&lt;p>Em outras palavras, &amp;ldquo;A segurança deve depender apenas da &amp;lsquo;chave secreta&amp;rsquo;, e o método de criptografia em si pode ser público!&amp;rdquo;.&lt;/p>
&lt;p>Por outro lado, &amp;ldquo;Um estado em que o algoritmo (mecanismo) de criptografia é mantido em segredo é considerado de baixa confiabilidade&amp;rdquo;.&lt;/p>
&lt;hr>
&lt;h2 id="se-o-mecanismo-for-secreto-é-seguro-pode-ser-um-pouco-perigoso">&amp;ldquo;Se o mecanismo for secreto, é seguro&amp;rdquo; pode ser um pouco perigoso
&lt;/h2>&lt;p>Essa é uma maneira comum de pensar:&lt;/p>
&lt;blockquote>
&lt;p>&amp;ldquo;Não mostrei o interior deste aplicativo a ninguém, então a segurança está ok&amp;rdquo;&lt;/p>
&lt;/blockquote>
&lt;p>Eu entendo o sentimento.&lt;br>
Mas isso é o mesmo que dizer: &amp;ldquo;Ninguém está olhando, então nenhum ponto fraco será encontrado, certo?&amp;rdquo;.&lt;/p>
&lt;p>Na realidade, o próprio fato de que &amp;ldquo;ninguém está olhando&amp;rdquo; pode se tornar um risco.&lt;/p>
&lt;hr>
&lt;h2 id="mas-por-que-esse-princípio-é-importante">Mas por que esse princípio é importante?
&lt;/h2>&lt;p>Porque, se alguém colocar as mãos no mecanismo e puder decifrá-lo facilmente, essa criptografia está acabada.&lt;/p>
&lt;p>Para usar uma analogia, é como se a fechadura de uma porta tivesse um mecanismo muito complexo, mas na verdade pudesse ser aberta com uma chave reserva feita em uma loja de artigos de um dólar.&lt;/p>
&lt;p>O importante não é &amp;ldquo;A chave é secreta, então está tudo bem&amp;rdquo;, mas &amp;ldquo;Mesmo se você mostrar todo o mecanismo, ele não pode ser aberto sem a chave certa&amp;rdquo;.&lt;/p>
&lt;hr>
&lt;h2 id="a-sensação-de-mas-isso-não-é-um-pouco-assustador">A sensação de &amp;ldquo;Mas isso não é um pouco assustador?&amp;rdquo;
&lt;/h2>&lt;p>O que muitas pessoas sentem aqui é a ansiedade de&lt;/p>
&lt;blockquote>
&lt;p>&amp;ldquo;Não é meio assustador expor todo o mecanismo?&amp;rdquo;&lt;/p>
&lt;/blockquote>
&lt;p>Eu entendo.&lt;br>
Porque você pensa: &amp;ldquo;Se eu mostrar o interior inteiro, não será imitado ou usado para o mal?&amp;rdquo;.&lt;/p>
&lt;p>Mas esse é exatamente o cerne do Princípio de Kerckhoffs.&lt;br>
A &amp;ldquo;força que não entra em colapso mesmo quando o interior é mostrado&amp;rdquo; é a verdadeira segurança.&lt;/p>
&lt;hr>
&lt;h2 id="dito-isso-requer-um-pouco-de-coragem-no-começo">Dito isso, requer um pouco de coragem no começo
&lt;/h2>&lt;p>Colocando-se no lugar do desenvolvedor, parece que &amp;ldquo;publicar o mecanismo = revelar suas fraquezas&amp;rdquo;, então é claro que é de dar frio na barriga.&lt;/p>
&lt;p>Mas pense sobre isso.&lt;/p>
&lt;p>Algo que você pode mostrar adequadamente e dizer: &amp;ldquo;Qualquer um pode verificar&amp;rdquo;, acabará sendo mais confiável.&lt;/p>
&lt;p>Isso é semelhante às relações humanas.&lt;/p>
&lt;p>Você pode se sentir mais seguro com &amp;ldquo;uma pessoa que se dá bem com você depois de mostrar o seu verdadeiro eu&amp;rdquo;.&lt;/p>
&lt;hr>
&lt;h2 id="conclusão">Conclusão
&lt;/h2>&lt;p>O Princípio de Kerckhoffs pode soar um pouco teórico, mas sua essência é muito simples.&lt;/p>
&lt;p>É apenas uma questão de &lt;strong>&amp;ldquo;Vamos criar um sistema que não quebre, não importa para quem você o mostre&amp;rdquo;&lt;/strong> .&lt;/p>
&lt;p>Um design adequado em vez de segredos superficiais.&lt;br>
Código do qual você não se envergonha de mostrar, em vez de código que você não quer que ninguém veja.&lt;/p>
&lt;p>Talvez esse tipo de &amp;ldquo;força&amp;rdquo; seja cada vez mais necessário na próxima era.&lt;/p>
&lt;hr>
&lt;p>Muito obrigado por ler!&lt;/p>
&lt;p>A segurança é um assunto um pouco difícil, mas há partes que se conectam a &amp;ldquo;relacionamentos com pessoas&amp;rdquo; e &amp;ldquo;paz de espírito cotidiana&amp;rdquo;.&lt;br>
Se você aprender um pouco de cada vez sem se sentir sobrecarregado, tenho certeza de que coisas boas acontecerão.&lt;/p>
&lt;hr>
&lt;p>&lt;img src="http://kenji.blog/p/%E3%82%B1%E3%83%AB%E3%82%AF%E3%83%9B%E3%83%95%E3%82%B9%E3%81%AE%E5%8E%9F%E7%90%86/img.png"
width="189"
height="282"
srcset="http://kenji.blog/p/%E3%82%B1%E3%83%AB%E3%82%AF%E3%83%9B%E3%83%95%E3%82%B9%E3%81%AE%E5%8E%9F%E7%90%86/img_hu715032b7fe5224f655ebb7d29b676305_77325_480x0_resize_box_3.png 480w, http://kenji.blog/p/%E3%82%B1%E3%83%AB%E3%82%AF%E3%83%9B%E3%83%95%E3%82%B9%E3%81%AE%E5%8E%9F%E7%90%86/img_hu715032b7fe5224f655ebb7d29b676305_77325_1024x0_resize_box_3.png 1024w"
loading="lazy"
alt="Auguste Kerckhoffs"
class="gallery-image"
data-flex-grow="67"
data-flex-basis="160px"
>&lt;/p></description></item><item><title>Passos para Executar o PowerShell a partir de C++ via DLL C++/CLI</title><link>http://kenji.blog/pt/p/c-%E3%81%8B%E3%82%89-powershell-%E3%82%92-c-cli-dll-%E7%B5%8C%E7%94%B1%E3%81%A7%E5%AE%9F%E8%A1%8C%E3%81%99%E3%82%8B%E6%89%8B%E9%A0%86/</link><pubDate>Wed, 16 Apr 2025 01:58:03 +0900</pubDate><guid>http://kenji.blog/pt/p/c-%E3%81%8B%E3%82%89-powershell-%E3%82%92-c-cli-dll-%E7%B5%8C%E7%94%B1%E3%81%A7%E5%AE%9F%E8%A1%8C%E3%81%99%E3%82%8B%E6%89%8B%E9%A0%86/</guid><description>&lt;img src="http://kenji.blog/p/c-%E3%81%8B%E3%82%89-powershell-%E3%82%92-c-cli-dll-%E7%B5%8C%E7%94%B1%E3%81%A7%E5%AE%9F%E8%A1%8C%E3%81%99%E3%82%8B%E6%89%8B%E9%A0%86/img.png" alt="Featured image of post Passos para Executar o PowerShell a partir de C++ via DLL C++/CLI" />&lt;h1 id="-passos-para-executar-o-powershell-a-partir-de-c-via-dll-ccli-visual-studio-2022--c">🎯 Passos para Executar o PowerShell a partir de C++ via DLL C++/CLI (Visual Studio 2022 / C++)
&lt;/h1>&lt;h2 id="-visão-geral-da-arquitetura">✅ Visão Geral da Arquitetura
&lt;/h2>&lt;h3 id="--dll-wrapper-cli-ccli">🔹 ① DLL Wrapper CLI (C++/CLI)
&lt;/h3>&lt;p>Fornece a funcionalidade para executar scripts do PowerShell.&lt;/p>
&lt;h3 id="--chamador-nativo-c">🔹 ② Chamador Nativo C++
&lt;/h3>&lt;p>Chama a DLL CLI para executar o script do PowerShell.&lt;/p>
&lt;hr>
&lt;h2 id="-passo-1-criando-o-projeto-dll-wrapper-cli">🔧 Passo 1: Criando o Projeto DLL Wrapper CLI
&lt;/h2>&lt;h3 id="1-criar-o-projeto">1. Criar o Projeto
&lt;/h3>&lt;ul>
&lt;li>[Criar um novo projeto] → [C++] → &lt;strong>Biblioteca de Classes CLR (.NET Framework)&lt;/strong>&lt;/li>
&lt;li>Nome: &lt;code>PowerShellWrapper&lt;/code>&lt;/li>
&lt;/ul>
&lt;blockquote>
&lt;p>💡 Se este modelo não for exibido, instale a carga de trabalho &amp;ldquo;Desenvolvimento para desktop com .NET&amp;rdquo;.&lt;/p>
&lt;/blockquote>
&lt;hr>
&lt;h3 id="2-adicionar-o-pacote-nuget">2. Adicionar o Pacote NuGet
&lt;/h3>&lt;ol>
&lt;li>Clique com o botão direito no projeto → [Gerenciar Pacotes NuGet]&lt;/li>
&lt;li>Pesquise e instale &lt;code>System.Management.Automation&lt;/code>&lt;br>
(Versão 5.x ou 7.x)&lt;/li>
&lt;/ol>
&lt;hr>
&lt;h3 id="3-implementação-do-código-cli">3. Implementação do Código CLI
&lt;/h3>&lt;h4 id="powershellwrapperh">PowerShellWrapper.h
&lt;/h4>&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt"> 1
&lt;/span>&lt;span class="lnt"> 2
&lt;/span>&lt;span class="lnt"> 3
&lt;/span>&lt;span class="lnt"> 4
&lt;/span>&lt;span class="lnt"> 5
&lt;/span>&lt;span class="lnt"> 6
&lt;/span>&lt;span class="lnt"> 7
&lt;/span>&lt;span class="lnt"> 8
&lt;/span>&lt;span class="lnt"> 9
&lt;/span>&lt;span class="lnt">10
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-cpp" data-lang="cpp">&lt;span class="line">&lt;span class="cl">&lt;span class="cp">#pragma once
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="cp">&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="k">using&lt;/span> &lt;span class="k">namespace&lt;/span> &lt;span class="n">System&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="k">namespace&lt;/span> &lt;span class="n">PowerShellWrapper&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">public&lt;/span> &lt;span class="n">ref&lt;/span> &lt;span class="k">class&lt;/span> &lt;span class="nc">PowerShellExecutor&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">public&lt;/span>&lt;span class="o">:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">String&lt;/span>&lt;span class="o">^&lt;/span> &lt;span class="n">Execute&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">String&lt;/span>&lt;span class="o">^&lt;/span> &lt;span class="n">script&lt;/span>&lt;span class="p">);&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">};&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h4 id="powershellwrappercpp">PowerShellWrapper.cpp
&lt;/h4>&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt"> 1
&lt;/span>&lt;span class="lnt"> 2
&lt;/span>&lt;span class="lnt"> 3
&lt;/span>&lt;span class="lnt"> 4
&lt;/span>&lt;span class="lnt"> 5
&lt;/span>&lt;span class="lnt"> 6
&lt;/span>&lt;span class="lnt"> 7
&lt;/span>&lt;span class="lnt"> 8
&lt;/span>&lt;span class="lnt"> 9
&lt;/span>&lt;span class="lnt">10
&lt;/span>&lt;span class="lnt">11
&lt;/span>&lt;span class="lnt">12
&lt;/span>&lt;span class="lnt">13
&lt;/span>&lt;span class="lnt">14
&lt;/span>&lt;span class="lnt">15
&lt;/span>&lt;span class="lnt">16
&lt;/span>&lt;span class="lnt">17
&lt;/span>&lt;span class="lnt">18
&lt;/span>&lt;span class="lnt">19
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-cpp" data-lang="cpp">&lt;span class="line">&lt;span class="cl">&lt;span class="cp">#include&lt;/span> &lt;span class="cpf">&amp;#34;PowerShellWrapper.h&amp;#34;&lt;/span>&lt;span class="cp">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="cp">&lt;/span>&lt;span class="k">using&lt;/span> &lt;span class="k">namespace&lt;/span> &lt;span class="n">System&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="k">using&lt;/span> &lt;span class="k">namespace&lt;/span> &lt;span class="n">System&lt;/span>&lt;span class="o">::&lt;/span>&lt;span class="n">Management&lt;/span>&lt;span class="o">::&lt;/span>&lt;span class="n">Automation&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="k">using&lt;/span> &lt;span class="k">namespace&lt;/span> &lt;span class="n">System&lt;/span>&lt;span class="o">::&lt;/span>&lt;span class="n">Collections&lt;/span>&lt;span class="o">::&lt;/span>&lt;span class="n">ObjectModel&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">String&lt;/span>&lt;span class="o">^&lt;/span> &lt;span class="n">PowerShellWrapper&lt;/span>&lt;span class="o">::&lt;/span>&lt;span class="n">PowerShellExecutor&lt;/span>&lt;span class="o">::&lt;/span>&lt;span class="n">Execute&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">String&lt;/span>&lt;span class="o">^&lt;/span> &lt;span class="n">script&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">PowerShell&lt;/span>&lt;span class="o">^&lt;/span> &lt;span class="n">ps&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">PowerShell&lt;/span>&lt;span class="o">::&lt;/span>&lt;span class="n">Create&lt;/span>&lt;span class="p">();&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">ps&lt;/span>&lt;span class="o">-&amp;gt;&lt;/span>&lt;span class="n">AddScript&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">script&lt;/span>&lt;span class="p">);&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">Collection&lt;/span>&lt;span class="o">&amp;lt;&lt;/span>&lt;span class="n">PSObject&lt;/span>&lt;span class="o">^&amp;gt;^&lt;/span> &lt;span class="n">results&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">ps&lt;/span>&lt;span class="o">-&amp;gt;&lt;/span>&lt;span class="n">Invoke&lt;/span>&lt;span class="p">();&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">System&lt;/span>&lt;span class="o">::&lt;/span>&lt;span class="n">Text&lt;/span>&lt;span class="o">::&lt;/span>&lt;span class="n">StringBuilder&lt;/span>&lt;span class="o">^&lt;/span> &lt;span class="n">sb&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">gcnew&lt;/span> &lt;span class="n">System&lt;/span>&lt;span class="o">::&lt;/span>&lt;span class="n">Text&lt;/span>&lt;span class="o">::&lt;/span>&lt;span class="n">StringBuilder&lt;/span>&lt;span class="p">();&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">for&lt;/span> &lt;span class="nf">each&lt;/span> &lt;span class="p">(&lt;/span>&lt;span class="n">PSObject&lt;/span>&lt;span class="o">^&lt;/span> &lt;span class="n">result&lt;/span> &lt;span class="n">in&lt;/span> &lt;span class="n">results&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">sb&lt;/span>&lt;span class="o">-&amp;gt;&lt;/span>&lt;span class="n">AppendLine&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">result&lt;/span>&lt;span class="o">-&amp;gt;&lt;/span>&lt;span class="n">ToString&lt;/span>&lt;span class="p">());&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">return&lt;/span> &lt;span class="n">sb&lt;/span>&lt;span class="o">-&amp;gt;&lt;/span>&lt;span class="n">ToString&lt;/span>&lt;span class="p">();&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;hr>
&lt;h2 id="-passo-2-chamando-a-partir-do-c-nativo">🔧 Passo 2: Chamando a partir do C++ Nativo
&lt;/h2>&lt;h3 id="1-criar-o-projeto-de-aplicativo-de-console-c">1. Criar o Projeto de Aplicativo de Console C++
&lt;/h3>&lt;ul>
&lt;li>Nome: &lt;code>NativeApp&lt;/code>&lt;/li>
&lt;/ul>
&lt;h3 id="2-adicionar-referência">2. Adicionar Referência
&lt;/h3>&lt;ul>
&lt;li>Clique com o botão direito no projeto → [Adicionar] → [Referência] → Projetos → Adicione &lt;code>PowerShellWrapper&lt;/code>&lt;/li>
&lt;li>[Propriedades] → [C/C++] → [Suporte a Common Language Runtime] → Mude para &lt;strong>/clr&lt;/strong>&lt;/li>
&lt;/ul>
&lt;hr>
&lt;h3 id="3-código-de-execução-maincpp">3. Código de Execução (main.cpp)
&lt;/h3>&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt"> 1
&lt;/span>&lt;span class="lnt"> 2
&lt;/span>&lt;span class="lnt"> 3
&lt;/span>&lt;span class="lnt"> 4
&lt;/span>&lt;span class="lnt"> 5
&lt;/span>&lt;span class="lnt"> 6
&lt;/span>&lt;span class="lnt"> 7
&lt;/span>&lt;span class="lnt"> 8
&lt;/span>&lt;span class="lnt"> 9
&lt;/span>&lt;span class="lnt">10
&lt;/span>&lt;span class="lnt">11
&lt;/span>&lt;span class="lnt">12
&lt;/span>&lt;span class="lnt">13
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-cpp" data-lang="cpp">&lt;span class="line">&lt;span class="cl">&lt;span class="cp">#using &amp;lt;System.dll&amp;gt;
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="cp">#using &amp;#34;..\\PowerShellWrapper\\Debug\\PowerShellWrapper.dll&amp;#34;
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="cp">&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="k">using&lt;/span> &lt;span class="k">namespace&lt;/span> &lt;span class="n">System&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="k">using&lt;/span> &lt;span class="k">namespace&lt;/span> &lt;span class="n">PowerShellWrapper&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="kt">int&lt;/span> &lt;span class="nf">main&lt;/span>&lt;span class="p">()&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">PowerShellExecutor&lt;/span>&lt;span class="o">^&lt;/span> &lt;span class="n">executor&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">gcnew&lt;/span> &lt;span class="n">PowerShellExecutor&lt;/span>&lt;span class="p">();&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">String&lt;/span>&lt;span class="o">^&lt;/span> &lt;span class="n">result&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">executor&lt;/span>&lt;span class="o">-&amp;gt;&lt;/span>&lt;span class="n">Execute&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s">&amp;#34;Get-Process | Select-Object -First 1&amp;#34;&lt;/span>&lt;span class="p">);&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">Console&lt;/span>&lt;span class="o">::&lt;/span>&lt;span class="n">WriteLine&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">result&lt;/span>&lt;span class="p">);&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">return&lt;/span> &lt;span class="mi">0&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;hr>
&lt;h2 id="-informações-adicionais-idl--tlb--registro-com">💡 Informações Adicionais (IDL / TLB / Registro COM)
&lt;/h2>&lt;ul>
&lt;li>Esta configuração faz referência direta à DLL .NET em vez de usar COM, portanto, &lt;strong>IDL, TLB ou registro COM não são necessários&lt;/strong> .&lt;/li>
&lt;/ul>
&lt;hr>
&lt;h2 id="-estrutura-final">✅ Estrutura Final
&lt;/h2>&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;span class="lnt">4
&lt;/span>&lt;span class="lnt">5
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">Solution
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">├── PowerShellWrapper (C++/CLI DLL)
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">│ └── PowerShellExecutor
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">├── NativeApp (C++ EXE)
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> └── main.cpp → Chamada de DLL
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;hr></description></item><item><title>Comando para verificar o status da licença do Windows</title><link>http://kenji.blog/pt/p/windows-%E3%81%AE%E3%83%A9%E3%82%A4%E3%82%BB%E3%83%B3%E3%82%B9%E3%81%AE%E7%8A%B6%E6%85%8B%E3%82%92%E7%A2%BA%E8%AA%8D%E3%81%99%E3%82%8B%E3%82%B3%E3%83%9E%E3%83%B3%E3%83%89/</link><pubDate>Mon, 14 Apr 2025 00:41:45 +0900</pubDate><guid>http://kenji.blog/pt/p/windows-%E3%81%AE%E3%83%A9%E3%82%A4%E3%82%BB%E3%83%B3%E3%82%B9%E3%81%AE%E7%8A%B6%E6%85%8B%E3%82%92%E7%A2%BA%E8%AA%8D%E3%81%99%E3%82%8B%E3%82%B3%E3%83%9E%E3%83%B3%E3%83%89/</guid><description>&lt;img src="http://kenji.blog/p/windows-%E3%81%AE%E3%83%A9%E3%82%A4%E3%82%BB%E3%83%B3%E3%82%B9%E3%81%AE%E7%8A%B6%E6%85%8B%E3%82%92%E7%A2%BA%E8%AA%8D%E3%81%99%E3%82%8B%E3%82%B3%E3%83%9E%E3%83%B3%E3%83%89/img_1.png" alt="Featured image of post Comando para verificar o status da licença do Windows" />&lt;h1 id="windowscomo-verificar-o-status-da-licença-ok-com-1-comando">【Windows】Como verificar o status da licença (OK com 1 comando)
&lt;/h1>&lt;p>Você já se perguntou se a sua licença do Windows está autenticada corretamente?&lt;/p>
&lt;p>Para esses momentos, uma forma conveniente é o &lt;strong>método de verificar as informações da licença com um único comando&lt;/strong> . Você pode verificar facilmente o status atual da sua licença simplesmente executando os passos abaixo.&lt;/p>
&lt;h2 id="comando-para-verificar-o-status-da-licença">Comando para verificar o status da licença
&lt;/h2>&lt;p>Você pode exibir as informações da sua licença usando uma ferramenta de script embutida no Windows. O comando a ser usado está aqui:&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">slmgr /dli
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>Quando você executa este comando, algumas informações sobre a sua licença serão exibidas em uma janela.&lt;/p>
&lt;h2 id="como-executar">Como executar
&lt;/h2>&lt;ol>
&lt;li>
&lt;p>&lt;strong>Abra o &amp;ldquo;Menu Iniciar&amp;rdquo;, digite &amp;ldquo;cmd&amp;rdquo;, clique com o botão direito em Prompt de Comando → &amp;ldquo;Executar como administrador&amp;rdquo;&lt;/strong> .&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Digite o seguinte no Prompt de Comando e pressione Enter:&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">slmgr /dli
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;/li>
&lt;li>
&lt;p>Após esperar alguns segundos, informações da licença como as seguintes serão exibidas.&lt;/p>
&lt;p>&lt;img src="http://kenji.blog/p/windows-%E3%81%AE%E3%83%A9%E3%82%A4%E3%82%BB%E3%83%B3%E3%82%B9%E3%81%AE%E7%8A%B6%E6%85%8B%E3%82%92%E7%A2%BA%E8%AA%8D%E3%81%99%E3%82%8B%E3%82%B3%E3%83%9E%E3%83%B3%E3%83%89/img.png"
width="346"
height="198"
srcset="http://kenji.blog/p/windows-%E3%81%AE%E3%83%A9%E3%82%A4%E3%82%BB%E3%83%B3%E3%82%B9%E3%81%AE%E7%8A%B6%E6%85%8B%E3%82%92%E7%A2%BA%E8%AA%8D%E3%81%99%E3%82%8B%E3%82%B3%E3%83%9E%E3%83%B3%E3%83%89/img_hu36ac086b0626fce0cec542003390f65d_5495_480x0_resize_box_3.png 480w, http://kenji.blog/p/windows-%E3%81%AE%E3%83%A9%E3%82%A4%E3%82%BB%E3%83%B3%E3%82%B9%E3%81%AE%E7%8A%B6%E6%85%8B%E3%82%92%E7%A2%BA%E8%AA%8D%E3%81%99%E3%82%8B%E3%82%B3%E3%83%9E%E3%83%B3%E3%83%89/img_hu36ac086b0626fce0cec542003390f65d_5495_1024x0_resize_box_3.png 1024w"
loading="lazy"
alt="Tela de verificação de licença do Windows"
class="gallery-image"
data-flex-grow="174"
data-flex-basis="419px"
>&lt;/p>
&lt;/li>
&lt;/ol>
&lt;h2 id="principais-informações-exibidas">Principais informações exibidas
&lt;/h2>&lt;ul>
&lt;li>Parte da chave do produto&lt;/li>
&lt;li>Tipo de licença (Varejo, OEM, etc.)&lt;/li>
&lt;li>Status da licença (Ativa, expirada, não autenticada, etc.)&lt;/li>
&lt;/ul>
&lt;h2 id="e-se-você-quiser-saber-informações-mais-detalhadas">E se você quiser saber informações mais detalhadas?
&lt;/h2>&lt;p>Também existem comandos como os seguintes:&lt;/p>
&lt;ul>
&lt;li>&lt;code>slmgr /dlv&lt;/code> : Exibe informações mais detalhadas da licença&lt;/li>
&lt;li>&lt;code>slmgr /xpr&lt;/code> : Exibe a data de expiração da licença (se é permanente, etc.)&lt;/li>
&lt;/ul>
&lt;h2 id="resumo">Resumo
&lt;/h2>&lt;p>O status da licença do Windows pode ser facilmente verificado com um único comando.&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Verificação simples&lt;/strong> : &lt;code>slmgr /dli&lt;/code>&lt;/li>
&lt;li>&lt;strong>Verificação detalhada&lt;/strong> : &lt;code>slmgr /dlv&lt;/code>&lt;/li>
&lt;li>&lt;strong>Verificação da data de expiração&lt;/strong> : &lt;code>slmgr /xpr&lt;/code>&lt;/li>
&lt;/ul>
&lt;p>Se houver um problema com a sua licença, pode haver restrições em atualizações e certos recursos, por isso é seguro verificá-la periodicamente.&lt;/p></description></item><item><title>Parâmetros do ffmpeg para iOS</title><link>http://kenji.blog/pt/p/ios-%E5%90%91%E3%81%91%E3%81%AE-ffmpeg-%E3%83%91%E3%83%A9%E3%83%A1%E3%83%BC%E3%82%BF/</link><pubDate>Sun, 02 Mar 2025 04:16:07 +0900</pubDate><guid>http://kenji.blog/pt/p/ios-%E5%90%91%E3%81%91%E3%81%AE-ffmpeg-%E3%83%91%E3%83%A9%E3%83%A1%E3%83%BC%E3%82%BF/</guid><description>&lt;img src="http://kenji.blog/p/ios-%E5%90%91%E3%81%91%E3%81%AE-ffmpeg-%E3%83%91%E3%83%A9%E3%83%A1%E3%83%BC%E3%82%BF/img.png" alt="Featured image of post Parâmetros do ffmpeg para iOS" />&lt;h1 id="parâmetros-de-conversão-do-ffmpeg-otimizados-para-ios">Parâmetros de conversão do ffmpeg otimizados para iOS
&lt;/h1>&lt;p>Apresentamos o comando &lt;code>ffmpeg&lt;/code> para converter vídeos para que possam ser reproduzidos sem problemas em dispositivos iOS (iPhone e iPad).&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;span class="lnt">4
&lt;/span>&lt;span class="lnt">5
&lt;/span>&lt;span class="lnt">6
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">ffmpeg -i input.mp4 &lt;span class="se">\
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="se">&lt;/span>-c:v libx264 -profile:v high -level 4.1 &lt;span class="se">\
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="se">&lt;/span>-vf &lt;span class="s2">&amp;#34;scale=1920:-2&amp;#34;&lt;/span> -r &lt;span class="m">30&lt;/span> &lt;span class="se">\
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="se">&lt;/span>-crf &lt;span class="m">20&lt;/span> -preset slow &lt;span class="se">\
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="se">&lt;/span>-c:a aac -b:a 128k -ar &lt;span class="m">48000&lt;/span> &lt;span class="se">\
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="se">&lt;/span>-movflags +faststart output.mp4
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h3 id="significado-de-cada-opção-breve-explicação">Significado de cada opção (breve explicação)
&lt;/h3>&lt;table>
&lt;thead>
&lt;tr>
&lt;th>Opção&lt;/th>
&lt;th>Descrição&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>&lt;code>-i input.mp4&lt;/code>&lt;/td>
&lt;td>Arquivo de entrada (vídeo a ser convertido)&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>-c:v libx264&lt;/code>&lt;/td>
&lt;td>Codificar vídeo com H.264 (compatível com iOS)&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>-profile:v high -level 4.1&lt;/code>&lt;/td>
&lt;td>Perfil e nível amplamente compatíveis com iOS&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>-vf &amp;quot;scale=1920:-2&amp;quot;&lt;/code>&lt;/td>
&lt;td>Redimensionar para 1920px de largura, a altura é ajustada automaticamente mantendo a proporção&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>-r 30&lt;/code>&lt;/td>
&lt;td>Converter a taxa de quadros para 30fps&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>-crf 20&lt;/code>&lt;/td>
&lt;td>Qualidade de vídeo (números menores significam maior qualidade, recomendado 18–23)&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>-preset slow&lt;/code>&lt;/td>
&lt;td>Equilíbrio entre velocidade de codificação e taxa de compressão (slow significa alta compressão e alta qualidade)&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>-c:a aac&lt;/code>&lt;/td>
&lt;td>O áudio é codificado no formato AAC&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>-b:a 128k&lt;/code>&lt;/td>
&lt;td>Definir taxa de bits de áudio para 128kbps&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>-ar 48000&lt;/code>&lt;/td>
&lt;td>Definir taxa de amostragem de áudio para 48kHz (recomendado para iOS)&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>-movflags +faststart&lt;/code>&lt;/td>
&lt;td>Coloca um índice no início do vídeo para &lt;strong>acelerar a reprodução por streaming na Web e no iOS&lt;/strong>&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;hr>
&lt;p>Espera-se que os vídeos convertidos com essas configurações tenham alta compatibilidade e reprodução suave em dispositivos da Apple, como iPhone e iPad.&lt;/p>
&lt;hr>
&lt;p>Se necessário, você pode ajustar o tamanho do arquivo e a qualidade da imagem alterando a resolução e a taxa de bits. Se precisar de alta qualidade de imagem, tente definir o &lt;code>-crf&lt;/code> para cerca de 18; se quiser reduzir o tamanho do arquivo, defina-o para 22–25.&lt;/p></description></item><item><title>Procedimento de Restauração de Software (Inicialização/Reparo) para Dispositivos Android (Google Pixel)</title><link>http://kenji.blog/pt/p/androidgoogle-pixel%E7%AB%AF%E6%9C%AB%E3%81%AE%E5%BE%A9%E5%85%83%E6%89%8B%E9%A0%86/</link><pubDate>Fri, 28 Feb 2025 01:20:41 +0900</pubDate><guid>http://kenji.blog/pt/p/androidgoogle-pixel%E7%AB%AF%E6%9C%AB%E3%81%AE%E5%BE%A9%E5%85%83%E6%89%8B%E9%A0%86/</guid><description>&lt;img src="http://kenji.blog/p/androidgoogle-pixel%E7%AB%AF%E6%9C%AB%E3%81%AE%E5%BE%A9%E5%85%83%E6%89%8B%E9%A0%86/pixel_restore_eyecatch_1788588727945.jpg" alt="Featured image of post Procedimento de Restauração de Software (Inicialização/Reparo) para Dispositivos Android (Google Pixel)" />&lt;h1 id="procedimento-de-restauração-para-dispositivos-android-google-pixel">Procedimento de Restauração para Dispositivos Android (Google Pixel)
&lt;/h1>&lt;p>Se o seu dispositivo Google Pixel sofrer problemas graves de sistema, como &amp;ldquo;reinicializações contínuas (bootloop)&amp;rdquo;, &amp;ldquo;travamento na tela do logotipo&amp;rdquo; ou &amp;ldquo;funcionamento extremamente instável&amp;rdquo;, você pode reparar (restaurar) o software do dispositivo de forma segura pelo navegador, usando a ferramenta oficial &lt;strong>&amp;ldquo;Pixel Update and Software Repair&amp;rdquo;&lt;/strong> fornecida pelo Google.&lt;/p>
&lt;p>Neste artigo, explicaremos detalhadamente os procedimentos específicos e os pontos de atenção.&lt;/p>
&lt;hr>
&lt;h2 id="1-acessando-a-ferramenta-de-restauração">1. Acessando a Ferramenta de Restauração
&lt;/h2>&lt;p>Primeiro, acesse a página oficial da ferramenta de reparo pelo navegador do seu PC (Windows ou Mac) (recomenda-se Google Chrome ou Microsoft Edge):&lt;/p>
&lt;p>🔗 &lt;strong>&lt;a class="link" href="https://pixelrepair.withgoogle.com/carrier_selection" target="_blank" rel="noopener"
>Site Oficial Pixel Update and Software Repair&lt;/a>&lt;/strong>&lt;/p>
&lt;blockquote>
&lt;p>&lt;strong>※ Atenção ※&lt;/strong>
Quando você executa o processo de restauração, os dados no dispositivo (fotos, aplicativos, contatos, etc.) podem ser &lt;strong>totalmente apagados (inicializados)&lt;/strong> . Se o dispositivo estiver operável, certifique-se de fazer um backup no Google Drive ou semelhante com antecedência.&lt;/p>
&lt;/blockquote>
&lt;hr>
&lt;h2 id="2-preparação-prévia-para-a-restauração">2. Preparação Prévia para a Restauração
&lt;/h2>&lt;p>Para garantir que o processo ocorra sem problemas, prepare o seguinte:&lt;/p>
&lt;ol>
&lt;li>&lt;strong>Carga da Bateria&lt;/strong>
Se a energia acabar no meio do processo, o dispositivo corre o risco de virar um peso de papel (quebrar completamente). Carregue pelo menos 50% ou, idealmente, o máximo possível.&lt;/li>
&lt;li>&lt;strong>Uso do Cabo USB Original&lt;/strong>
Para garantir uma transferência de dados estável, é altamente recomendável usar o cabo USB-C original que veio com o dispositivo.&lt;/li>
&lt;li>&lt;strong>Instalação de Drivers (se necessário)&lt;/strong>
Se estiver usando um PC com Windows, o dispositivo pode não ser reconhecido corretamente. Nesse caso, instale os &lt;a class="link" href="https://developer.android.com/studio/run/win-usb?hl=pt-br" target="_blank" rel="noopener"
>Drivers USB do Google&lt;/a>.&lt;/li>
&lt;/ol>
&lt;hr>
&lt;h2 id="3-passos-específicos-de-restauração">3. Passos Específicos de Restauração
&lt;/h2>&lt;p>Quando estiver pronto, siga as instruções na tela para prosseguir com a restauração.&lt;/p>
&lt;h3 id="passo-1-seleção-da-operadora-e-conexão-do-dispositivo">Passo 1: Seleção da Operadora e Conexão do Dispositivo
&lt;/h3>&lt;p>Ao abrir o site, a tela de seleção de operadora (empresa de telefonia móvel) aparecerá primeiro. Se for desbloqueado ou sem operadora, selecione &amp;ldquo;Outro (Other)&amp;rdquo;, etc.
Em seguida, conecte o PC e o dispositivo Pixel usando um cabo USB.&lt;/p>
&lt;h3 id="passo-2-colocar-o-dispositivo-no-modo-de-resgate-modo-fastboot">Passo 2: Colocar o Dispositivo no &amp;ldquo;Modo de Resgate (Modo Fastboot)&amp;rdquo;
&lt;/h3>&lt;p>Siga as instruções na tela. Com o dispositivo desligado, &lt;strong>pressione e segure o botão de energia e o botão de diminuir volume ao mesmo tempo&lt;/strong> para iniciar o modo Fastboot (uma tela preta com o robô Android deitado).&lt;/p>
&lt;h3 id="passo-3-reconhecimento-do-dispositivo-no-pc">Passo 3: Reconhecimento do Dispositivo no PC
&lt;/h3>&lt;p>Ao clicar no botão &amp;ldquo;Conectar dispositivo&amp;rdquo; no navegador, um pop-up abrirá mostrando o dispositivo Pixel conectado na lista. Selecione o dispositivo de destino e permita a conexão.&lt;/p>
&lt;h3 id="passo-4-download-e-instalação-do-software">Passo 4: Download e Instalação do Software
&lt;/h3>&lt;p>Assim que o dispositivo for reconhecido, a versão ideal do Android OS (firmware) será selecionada automaticamente. Ao clicar em &amp;ldquo;Instalar&amp;rdquo;, o software será baixado para o PC e a gravação (flash) no dispositivo começará.&lt;/p>
&lt;blockquote>
&lt;p>⚠️ &lt;strong>Aviso:&lt;/strong> Durante esse processo, &lt;strong>nunca desconecte o cabo USB ou desligue o PC.&lt;/strong>&lt;/p>
&lt;/blockquote>
&lt;h3 id="passo-5-conclusão-e-configuração-inicial">Passo 5: Conclusão e Configuração Inicial
&lt;/h3>&lt;p>Quando a barra de progresso chegar a 100% e a mensagem &amp;ldquo;Concluído&amp;rdquo; aparecer, a restauração foi bem-sucedida. O dispositivo será reiniciado automaticamente e a tela de configuração inicial (a tela &amp;ldquo;Olá&amp;rdquo;), igual à de quando você o comprou, será exibida.&lt;/p>
&lt;hr>
&lt;h2 id="resumo">Resumo
&lt;/h2>&lt;p>A ferramenta de reparo oficial do Google Pixel é uma excelente ferramenta que permite gravar firmwares de forma segura apenas clicando no navegador, sem precisar executar comandos especiais (adb ou fastboot) diretamente.&lt;/p>
&lt;p>Antes de levar seu dispositivo a uma loja por mau funcionamento, tentar este procedimento pode resolver o problema facilmente. Esperamos que este guia seja útil!&lt;/p></description></item><item><title>Enviar Gmail com curl</title><link>http://kenji.blog/pt/p/enviar-gmail-com-curl/</link><pubDate>Thu, 27 Feb 2025 02:13:31 +0900</pubDate><guid>http://kenji.blog/pt/p/enviar-gmail-com-curl/</guid><description>&lt;img src="http://kenji.blog/p/gmail%E3%82%92curl%E3%81%8B%E3%82%89%E9%80%81%E3%82%8B/img.png" alt="Featured image of post Enviar Gmail com curl" />&lt;h1 id="enviar-gmail-com-curl">Enviar Gmail com curl
&lt;/h1>&lt;h2 id="1-obter-uma-senha-de-aplicativo">1. Obter uma senha de aplicativo
&lt;/h2>&lt;p>&lt;a class="link" href="https://myaccount.google.com/apppasswords" target="_blank" rel="noopener"
>https://myaccount.google.com/apppasswords&lt;/a>
Clique no link acima e insira o nome do aplicativo.
Salve a senha gerada.&lt;/p>
&lt;h2 id="2-enviar-email-com-o-comando-curl">2. Enviar email com o comando curl
&lt;/h2>&lt;p>Execute o seguinte comando.&lt;/p>
&lt;p>No exemplo abaixo, o conteúdo do email está escrito em mail.txt.&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;span class="lnt">4
&lt;/span>&lt;span class="lnt">5
&lt;/span>&lt;span class="lnt">6
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-mail.txt" data-lang="mail.txt">&lt;span class="line">&lt;span class="cl">From: from@gmail.com
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">To: to@gmail.com
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">Subject: Email de teste
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">Content-Type: text/plain; charset=&amp;#34;UTF-8&amp;#34;
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">Este é um email de teste.
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>Crie o arquivo acima e execute o seguinte comando.&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">curl --url &lt;span class="s2">&amp;#34;smtps://smtp.gmail.com:465&amp;#34;&lt;/span> --ssl-reqd --mail-from &lt;span class="s2">&amp;#34;from@gmail.com&amp;#34;&lt;/span> --mail-rcpt &lt;span class="s2">&amp;#34;to@gmail.com&amp;#34;&lt;/span> --user &lt;span class="s2">&amp;#34;from@gmail.com:xxxxxxxxxxxxxxxx&amp;#34;&lt;/span> --upload-file mail.txt
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>※ Substitua xxxxxxxxxxxxxxxx pela sua senha de aplicativo.&lt;/p></description></item><item><title>Trechos de código Python</title><link>http://kenji.blog/pt/p/python%E3%82%B3%E3%83%BC%E3%83%89%E7%89%87/</link><pubDate>Mon, 24 Feb 2025 18:21:14 +0900</pubDate><guid>http://kenji.blog/pt/p/python%E3%82%B3%E3%83%BC%E3%83%89%E7%89%87/</guid><description>&lt;img src="http://kenji.blog/p/python%E3%82%B3%E3%83%BC%E3%83%89%E7%89%87/img.png" alt="Featured image of post Trechos de código Python" />&lt;p>Apresentação de códigos de exemplo usando a biblioteca padrão.&lt;/p>
&lt;h1 id="baixar-e-exibir-uma-imagem">Baixar e exibir uma imagem
&lt;/h1>&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt"> 1
&lt;/span>&lt;span class="lnt"> 2
&lt;/span>&lt;span class="lnt"> 3
&lt;/span>&lt;span class="lnt"> 4
&lt;/span>&lt;span class="lnt"> 5
&lt;/span>&lt;span class="lnt"> 6
&lt;/span>&lt;span class="lnt"> 7
&lt;/span>&lt;span class="lnt"> 8
&lt;/span>&lt;span class="lnt"> 9
&lt;/span>&lt;span class="lnt">10
&lt;/span>&lt;span class="lnt">11
&lt;/span>&lt;span class="lnt">12
&lt;/span>&lt;span class="lnt">13
&lt;/span>&lt;span class="lnt">14
&lt;/span>&lt;span class="lnt">15
&lt;/span>&lt;span class="lnt">16
&lt;/span>&lt;span class="lnt">17
&lt;/span>&lt;span class="lnt">18
&lt;/span>&lt;span class="lnt">19
&lt;/span>&lt;span class="lnt">20
&lt;/span>&lt;span class="lnt">21
&lt;/span>&lt;span class="lnt">22
&lt;/span>&lt;span class="lnt">23
&lt;/span>&lt;span class="lnt">24
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-python" data-lang="python">&lt;span class="line">&lt;span class="cl">&lt;span class="kn">import&lt;/span> &lt;span class="nn">urllib.request&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="kn">import&lt;/span> &lt;span class="nn">tempfile&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="kn">import&lt;/span> &lt;span class="nn">os&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="kn">import&lt;/span> &lt;span class="nn">webbrowser&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="kn">import&lt;/span> &lt;span class="nn">time&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">url&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="s2">&amp;#34;https://www.aomori-ringo.or.jp/kids/wp-content/uploads/2021/11/apple.png&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="k">try&lt;/span>&lt;span class="p">:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">with&lt;/span> &lt;span class="n">urllib&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">request&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">urlopen&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">url&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="k">as&lt;/span> &lt;span class="n">response&lt;/span>&lt;span class="p">:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">img_data&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">response&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">read&lt;/span>&lt;span class="p">()&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1"># Salvar em um arquivo temporário e exibir&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">with&lt;/span> &lt;span class="n">tempfile&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">NamedTemporaryFile&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">delete&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="kc">False&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">suffix&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s2">&amp;#34;.png&amp;#34;&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="k">as&lt;/span> &lt;span class="n">tmp&lt;/span>&lt;span class="p">:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">tmp&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">write&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">img_data&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nb">print&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="sa">f&lt;/span>&lt;span class="s2">&amp;#34;file://&lt;/span>&lt;span class="si">{&lt;/span>&lt;span class="n">tmp&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">name&lt;/span>&lt;span class="si">}&lt;/span>&lt;span class="s2">&amp;#34;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">webbrowser&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">open&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="sa">f&lt;/span>&lt;span class="s2">&amp;#34;file://&lt;/span>&lt;span class="si">{&lt;/span>&lt;span class="n">tmp&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">name&lt;/span>&lt;span class="si">}&lt;/span>&lt;span class="s2">&amp;#34;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">time&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">sleep&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="mi">3&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="k">except&lt;/span> &lt;span class="ne">Exception&lt;/span> &lt;span class="k">as&lt;/span> &lt;span class="n">e&lt;/span>&lt;span class="p">:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nb">print&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="sa">f&lt;/span>&lt;span class="s2">&amp;#34;Ocorreu um erro: &lt;/span>&lt;span class="si">{&lt;/span>&lt;span class="n">e&lt;/span>&lt;span class="si">}&lt;/span>&lt;span class="s2">&amp;#34;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="k">finally&lt;/span>&lt;span class="p">:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">if&lt;/span> &lt;span class="s1">&amp;#39;tmp&amp;#39;&lt;/span> &lt;span class="ow">in&lt;/span> &lt;span class="nb">locals&lt;/span>&lt;span class="p">():&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">os&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">unlink&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">tmp&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">name&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="c1"># Excluir arquivo temporário&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div></description></item><item><title>Chamar a API do ChatGPT pelo curl</title><link>http://kenji.blog/pt/p/chatgpt-api%E3%82%92curl%E3%81%8B%E3%82%89%E5%91%BC%E3%81%B3%E5%87%BA%E3%81%99/</link><pubDate>Sat, 01 Feb 2025 17:15:34 +0900</pubDate><guid>http://kenji.blog/pt/p/chatgpt-api%E3%82%92curl%E3%81%8B%E3%82%89%E5%91%BC%E3%81%B3%E5%87%BA%E3%81%99/</guid><description>&lt;img src="http://kenji.blog/p/chatgpt-api%E3%82%92curl%E3%81%8B%E3%82%89%E5%91%BC%E3%81%B3%E5%87%BA%E3%81%99/img.png" alt="Featured image of post Chamar a API do ChatGPT pelo curl" />&lt;h1 id="chamar-a-api-do-chatgpt-pelo-curl">Chamar a API do ChatGPT pelo curl
&lt;/h1>&lt;p>Presume-se que a chamada seja feita a partir do prompt de comando do Windows.&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">curl https://api.openai.com/v1/chat/completions -H &amp;#34;Content-Type: application/json&amp;#34; -H &amp;#34;Authorization: Bearer sk-proj-XXXXXXXXXXXXXXXXXXXX&amp;#34; -d &amp;#34;{&amp;#34;&amp;#34;model&amp;#34;&amp;#34;: &amp;#34;&amp;#34;gpt-3.5-turbo&amp;#34;&amp;#34;,&amp;#34;&amp;#34;messages&amp;#34;&amp;#34;: [{&amp;#34;&amp;#34;role&amp;#34;&amp;#34;: &amp;#34;&amp;#34;system&amp;#34;&amp;#34;, &amp;#34;&amp;#34;content&amp;#34;&amp;#34;: &amp;#34;&amp;#34;Responda em dialeto Kansai.&amp;#34;&amp;#34;}, {&amp;#34;&amp;#34;role&amp;#34;&amp;#34;: &amp;#34;&amp;#34;user&amp;#34;&amp;#34;, &amp;#34;&amp;#34;content&amp;#34;&amp;#34;: &amp;#34;&amp;#34;Insira a mensagem que deseja enviar aqui&amp;#34;&amp;#34;}]}&amp;#34;
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div></description></item><item><title>Resumo de Ações com Altos Dividendos</title><link>http://kenji.blog/pt/p/%E9%AB%98%E9%85%8D%E5%BD%93%E6%A0%AA%E3%81%BE%E3%81%A8%E3%82%81/</link><pubDate>Sun, 22 Dec 2024 00:56:14 +0900</pubDate><guid>http://kenji.blog/pt/p/%E9%AB%98%E9%85%8D%E5%BD%93%E6%A0%AA%E3%81%BE%E3%81%A8%E3%82%81/</guid><description>&lt;img src="http://kenji.blog/p/%E9%AB%98%E9%85%8D%E5%BD%93%E6%A0%AA%E3%81%BE%E3%81%A8%E3%82%81/img.png" alt="Featured image of post Resumo de Ações com Altos Dividendos" />&lt;h1 id="resumo-de-ações-com-altos-dividendos">Resumo de Ações com Altos Dividendos
&lt;/h1>&lt;ol>
&lt;li>Mitsubishi UFJ Financial Group (8306)&lt;/li>
&lt;li>Sumitomo Mitsui Financial Group (8316)&lt;/li>
&lt;li>Mitsubishi Corporation (8058)&lt;/li>
&lt;li>Itochu Corporation (8001)&lt;/li>
&lt;li>NTT (9432)&lt;/li>
&lt;li>KDDI (9433)&lt;/li>
&lt;li>Okinawa Cellular Telephone (9436)&lt;/li>
&lt;li>Tokio Marine Holdings (8766)&lt;/li>
&lt;li>Toyota Motor (7203)&lt;/li>
&lt;li>Yamaha Motor (7272)&lt;/li>
&lt;li>Asahi Group Holdings (2502)&lt;/li>
&lt;li>Kirin Holdings (2503)&lt;/li>
&lt;li>JT (2914)&lt;/li>
&lt;li>Bridgestone (5108)&lt;/li>
&lt;li>Daiwa House Industry (1925)&lt;/li>
&lt;li>Sekisui House (1928)&lt;/li>
&lt;li>Kyocera (6971)&lt;/li>
&lt;li>Shin-Etsu Chemical (4063)&lt;/li>
&lt;li>Nitto Denko (6988)&lt;/li>
&lt;li>Orix (8591)&lt;/li>
&lt;li>Mitsubishi HC Capital (8593)&lt;/li>
&lt;li>Hulic (3003)&lt;/li>
&lt;/ol></description></item><item><title>Objetivos</title><link>http://kenji.blog/pt/p/objetivos/</link><pubDate>Sun, 08 Dec 2024 03:32:34 +0900</pubDate><guid>http://kenji.blog/pt/p/objetivos/</guid><description>&lt;img src="http://kenji.blog/p/%E7%9B%AE%E6%A8%99/img.png" alt="Featured image of post Objetivos" />&lt;h1 id="objetivos-de-longo-prazo">Objetivos de Longo Prazo
&lt;/h1>&lt;ul>
&lt;li>1 ano depois
&lt;ul>
&lt;li>Iniciar o negócio&lt;/li>
&lt;li>Criar um site e lançar software (gratuito)&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>2 anos depois
&lt;ul>
&lt;li>Faturamento anual de 10 milhões de ienes&lt;/li>
&lt;li>Publicar um livro&lt;/li>
&lt;li>Lançar software (pago)&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>3 anos depois
&lt;ul>
&lt;li>Faturamento anual de 100 milhões de ienes&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>5 anos depois
&lt;ul>
&lt;li>Faturamento anual de 1 bilhão de ienes&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>10 anos depois
&lt;ul>
&lt;li>Faturamento anual de 10 bilhões de ienes&lt;/li>
&lt;/ul>
&lt;/li>
&lt;/ul>
&lt;h1 id="objetivos-de-curto-prazo">Objetivos de Curto Prazo
&lt;/h1>&lt;ul>
&lt;li>Após 1 mês
&lt;ul>
&lt;li>Criar um plano de negócios&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>Após 3 meses
&lt;ul>
&lt;li>Arrecadar fundos para iniciar o negócio (cerca de 5 milhões de ienes)&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>Após 6 meses
&lt;ul>
&lt;li>Iniciar o negócio&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>Após 1 ano
&lt;ul>
&lt;li>Colocar o negócio nos trilhos&lt;/li>
&lt;/ul>
&lt;/li>
&lt;/ul>
&lt;h1 id="tarefas-recentes">Tarefas Recentes
&lt;/h1>&lt;ol>
&lt;li>Esclarecimento de Objetivos e Visão&lt;br>
Objetivo: Por que criar o software?
Exemplo: Resolver um problema, fornecer novo valor, focar em um nicho de mercado específico, etc.
Visão: Que tipo de futuro deseja alcançar com o software?
Exemplo: Eficiência nos negócios, maior conforto no dia a dia, melhoria da qualidade educacional, etc.&lt;/li>
&lt;li>Pesquisa de Mercado e Análise de Necessidades&lt;br>
Público-alvo: Quem usará o software? Especifique faixa etária, profissão, interesses, etc.
Análise da concorrência: Existem concorrentes no mesmo campo? Analise seus pontos fortes e fracos.
Identificação de necessidades: Entenda os problemas e solicitações não resolvidos do público-alvo.&lt;/li>
&lt;li>Design e Recursos do Software&lt;br>
Recursos básicos: Liste os recursos essenciais. Exemplo: autenticação de usuário, armazenamento de dados, funções de análise, etc.
Pontos de diferenciação: Esclareça o que o torna único em relação aos produtos de outras empresas. Exemplo: UI simples, uso de IA, alto grau de personalização.
Especificações técnicas: Linguagem de programação a ser usada, framework, banco de dados, etc.&lt;/li>
&lt;li>Plano de Desenvolvimento e Alocação de Recursos&lt;br>
Cronograma de desenvolvimento: Defina um cronograma para cada etapa do projeto. Exemplo: desenvolvimento de protótipo, testes, lançamento oficial.
Composição da equipe: Talentos e habilidades necessárias (programador, designer, profissional de marketing, etc.).
Orçamento: Estime os custos de desenvolvimento, custos de marketing e custos operacionais.&lt;/li>
&lt;li>Marketing e Modelo de Receita&lt;br>
Métodos de promoção: Utilize redes sociais, sites, anúncios, etc., para aumentar o reconhecimento.
Estratégia de monetização: Considere opções como versão gratuita + paga, assinatura mensal, receita de publicidade, etc.
Estratégia de aquisição de usuários: Ofereça testes gratuitos, incentive o boca a boca, crie uma comunidade de usuários, etc.&lt;/li>
&lt;li>Operação e Escalabilidade&lt;br>
Operação pós-lançamento: Coleta de feedback dos usuários, correção de bugs, adição de novos recursos.
Estratégia de crescimento: Planeje como aumentar o número de usuários, expandir para outros países e desenvolver novos recursos.
Gestão de riscos: Prepare contramedidas para problemas legais e técnicos.&lt;/li>
&lt;/ol></description></item><item><title>Sobre</title><link>http://kenji.blog/pt/sobre/</link><pubDate>Sat, 07 Dec 2024 00:00:00 +0000</pubDate><guid>http://kenji.blog/pt/sobre/</guid><description>&lt;p>&lt;img src="http://kenji.blog/about/img_1.png"
width="400"
height="328"
srcset="http://kenji.blog/about/img_1_huacf3b85c792452cf72c6344c4d0caf3d_104793_480x0_resize_box_3.png 480w, http://kenji.blog/about/img_1_huacf3b85c792452cf72c6344c4d0caf3d_104793_1024x0_resize_box_3.png 1024w"
loading="lazy"
class="gallery-image"
data-flex-grow="121"
data-flex-basis="292px"
>&lt;/p>
&lt;h1 id="o-que-está-escrito-neste-blog">O que está escrito neste blog?
&lt;/h1>&lt;p>Olá!&lt;/p>
&lt;p>Hoje, gostaria de falar sobre uma pergunta um pouco simples, mas que me fazem com frequência: &amp;ldquo;O que você escreve neste blog?&amp;rdquo;&lt;/p>
&lt;p>Como é comum, as pessoas tendem a pensar que um blog é &amp;ldquo;um lugar para publicar informações especializadas&amp;rdquo;. Por exemplo, coisas como &amp;ldquo;Se é técnico, deve escrever apenas sobre tecnologia de forma objetiva&amp;rdquo;, ou &amp;ldquo;O diário é diário, o trabalho é trabalho&amp;rdquo; e deve-se separar.&lt;/p>
&lt;p>Mas, se traçarmos limites tão rígidos, não acha que se torna um pouco sufocante tanto para quem escreve quanto para quem lê?&lt;/p>
&lt;p>Neste blog, o foco principal é, sem dúvida, a tecnologia. Programação, pequenas descobertas relacionadas ao desenvolvimento, etc. Acredito que quem gosta desses assuntos vai se divertir.&lt;/p>
&lt;p>No entanto, não é só isso.&lt;/p>
&lt;p>Também escrevo de vez em quando sobre pequenas percepções do dia a dia ou sobre meus hobbies. Por exemplo, coisas que me vêm à mente durante uma caminhada ou sobre um mangá que li recentemente. É interessante porque essas coisas podem surpreendentemente ajudar alguém.&lt;/p>
&lt;p>Pode ser que algumas pessoas pensem: &amp;ldquo;É um blog de tecnologia, tudo bem falar de coisas não relacionadas?&amp;rdquo; Mas esse é o ponto.&lt;/p>
&lt;p>Acredito que trabalho, hobbies e as preocupações diárias estão todos conectados. E é por isso que escrevo este blog dentro dessa &amp;ldquo;conexão&amp;rdquo; e &amp;ldquo;fluxo&amp;rdquo;.&lt;/p>
&lt;p>Portanto, se você tiver alguma dúvida ou curiosidade, sinta-se à vontade para comentar. Qualquer pensamento ou breve impressão é muito bem-vindo.&lt;/p>
&lt;p>Espero que este blog possa ser um espaço para esse tipo de comunicação descontraída.&lt;/p></description></item><item><title>Manutenção de Produtos de Couro</title><link>http://kenji.blog/pt/p/manutencao-de-produtos-de-couro/</link><pubDate>Wed, 30 Oct 2024 00:31:46 +0900</pubDate><guid>http://kenji.blog/pt/p/manutencao-de-produtos-de-couro/</guid><description>&lt;img src="http://kenji.blog/p/%E9%9D%A9%E8%A3%BD%E5%93%81%E3%81%AE%E3%83%A1%E3%83%B3%E3%83%86%E3%83%8A%E3%83%B3%E3%82%B9/img.png" alt="Featured image of post Manutenção de Produtos de Couro" />&lt;p>Recentemente, fiquei interessado em produtos de couro e tenho comprado vários itens. Nisso, meu interesse pela manutenção de produtos de couro também cresceu, e preparei alguns itens relacionados para apresentar a vocês.&lt;/p>
&lt;h1 id="produtos-de-manutenção-de-couro-comprados-recentemente">Produtos de Manutenção de Couro Comprados Recentemente
&lt;/h1>&lt;h2 id="mmowbray-delicate-cream">M.MOWBRAY DELICATE CREAM
&lt;/h2>&lt;p>&lt;img src="http://kenji.blog/p/%E9%9D%A9%E8%A3%BD%E5%93%81%E3%81%AE%E3%83%A1%E3%83%B3%E3%83%86%E3%83%8A%E3%83%B3%E3%82%B9/image1.JPEG"
width="2048"
height="1536"
srcset="http://kenji.blog/p/%E9%9D%A9%E8%A3%BD%E5%93%81%E3%81%AE%E3%83%A1%E3%83%B3%E3%83%86%E3%83%8A%E3%83%B3%E3%82%B9/image1_hu2baa2860805224f535a5049b0f15689e_521448_480x0_resize_q75_box.JPEG 480w, http://kenji.blog/p/%E9%9D%A9%E8%A3%BD%E5%93%81%E3%81%AE%E3%83%A1%E3%83%B3%E3%83%86%E3%83%8A%E3%83%B3%E3%82%B9/image1_hu2baa2860805224f535a5049b0f15689e_521448_1024x0_resize_q75_box.JPEG 1024w"
loading="lazy"
alt="image1.JPEG"
class="gallery-image"
data-flex-grow="133"
data-flex-basis="320px"
>&lt;/p>
&lt;p>Preço: cerca de 1.320 ienes&lt;/p>
&lt;p>Este creme fornece nutrição, hidratação e efeito de flexibilidade.
Não dá brilho, mas é adequado para couro que precisa de muita hidratação e umidade.
Não tem um cheiro ruim, mas tem um leve odor.
Por ser incolor, acredito que tenha alta versatilidade. Como é um creme mais fluido,
pode ser bom usar um pouco mais em comparação com outros cremes.&lt;/p>
&lt;h2 id="collonil-1909-supreme-creme-de-luxe">Collonil 1909 Supreme Creme de Luxe
&lt;/h2>&lt;p>&lt;img src="http://kenji.blog/p/%E9%9D%A9%E8%A3%BD%E5%93%81%E3%81%AE%E3%83%A1%E3%83%B3%E3%83%86%E3%83%8A%E3%83%B3%E3%82%B9/image3.JPEG"
width="1536"
height="1456"
srcset="http://kenji.blog/p/%E9%9D%A9%E8%A3%BD%E5%93%81%E3%81%AE%E3%83%A1%E3%83%B3%E3%83%86%E3%83%8A%E3%83%B3%E3%82%B9/image3_hu2e2775357ae6e9cda8b3181ed1a2c625_440198_480x0_resize_q75_box.JPEG 480w, http://kenji.blog/p/%E9%9D%A9%E8%A3%BD%E5%93%81%E3%81%AE%E3%83%A1%E3%83%B3%E3%83%86%E3%83%8A%E3%83%B3%E3%82%B9/image3_hu2e2775357ae6e9cda8b3181ed1a2c625_440198_1024x0_resize_q75_box.JPEG 1024w"
loading="lazy"
alt="image3.JPEG"
class="gallery-image"
data-flex-grow="105"
data-flex-basis="253px"
>&lt;/p>
&lt;p>Preço: cerca de 1.777 ienes&lt;/p>
&lt;p>Um creme famoso, padrão e versátil que dificilmente causa manchas. É um creme que restaura a cor do couro e o deixa hidratado.
Dá um pouco de brilho. Sendo branco, também parece oferecer efeito repelente à água.&lt;/p>
&lt;h2 id="mmowbray-shoe-cream-preto">M.MOWBRAY SHOE CREAM (Preto)
&lt;/h2>&lt;p>&lt;img src="http://kenji.blog/p/%E9%9D%A9%E8%A3%BD%E5%93%81%E3%81%AE%E3%83%A1%E3%83%B3%E3%83%86%E3%83%8A%E3%83%B3%E3%82%B9/image2.JPEG"
width="1536"
height="1295"
srcset="http://kenji.blog/p/%E9%9D%A9%E8%A3%BD%E5%93%81%E3%81%AE%E3%83%A1%E3%83%B3%E3%83%86%E3%83%8A%E3%83%B3%E3%82%B9/image2_hu613b0f0cd2dd5531cf18353d93b52d95_368912_480x0_resize_q75_box.JPEG 480w, http://kenji.blog/p/%E9%9D%A9%E8%A3%BD%E5%93%81%E3%81%AE%E3%83%A1%E3%83%B3%E3%83%86%E3%83%8A%E3%83%B3%E3%82%B9/image2_hu613b0f0cd2dd5531cf18353d93b52d95_368912_1024x0_resize_q75_box.JPEG 1024w"
loading="lazy"
alt="image2.JPEG"
class="gallery-image"
data-flex-grow="118"
data-flex-basis="284px"
>&lt;/p>
&lt;p>Preço: cerca de 1.000 ienes&lt;/p>
&lt;p>Creme para sapatos. Contém cera, óleo e solventes orgânicos.
Restaura a cor do couro e dá brilho. Como é preto, aplica-se em couro preto.
Eu o utilizo em sapatos de terno.&lt;/p>
&lt;h2 id="mmowbray-stain-remover">M.MOWBRAY STAIN REMOVER
&lt;/h2>&lt;p>Preço: cerca de 700 ienes&lt;/p>
&lt;p>&lt;img src="http://kenji.blog/p/%E9%9D%A9%E8%A3%BD%E5%93%81%E3%81%AE%E3%83%A1%E3%83%B3%E3%83%86%E3%83%8A%E3%83%B3%E3%82%B9/image4.JPEG"
width="983"
height="1239"
srcset="http://kenji.blog/p/%E9%9D%A9%E8%A3%BD%E5%93%81%E3%81%AE%E3%83%A1%E3%83%B3%E3%83%86%E3%83%8A%E3%83%B3%E3%82%B9/image4_hu683aba9e78ed7fba9d59872956b612e1_217713_480x0_resize_q75_box.JPEG 480w, http://kenji.blog/p/%E9%9D%A9%E8%A3%BD%E5%93%81%E3%81%AE%E3%83%A1%E3%83%B3%E3%83%86%E3%83%8A%E3%83%B3%E3%82%B9/image4_hu683aba9e78ed7fba9d59872956b612e1_217713_1024x0_resize_q75_box.JPEG 1024w"
loading="lazy"
alt="image4.JPEG"
class="gallery-image"
data-flex-grow="79"
data-flex-basis="190px"
>&lt;/p>
&lt;p>Foi algo que veio junto quando comprei uma escova.
Limpador à base de água para sapatos. Remove sujeira do couro.
Ao umedecer bem um pano e esfregar suavemente no couro, a sujeira é removida.&lt;/p></description></item><item><title>A Navalha de Hanlon</title><link>http://kenji.blog/pt/p/a-navalha-de-hanlon/</link><pubDate>Tue, 24 Sep 2024 18:14:34 +0900</pubDate><guid>http://kenji.blog/pt/p/a-navalha-de-hanlon/</guid><description>&lt;img src="http://kenji.blog/p/%E3%83%8F%E3%83%B3%E3%83%AD%E3%83%B3%E3%81%AE%E5%89%83%E5%88%80/img.png" alt="Featured image of post A Navalha de Hanlon" />&lt;h1 id="olá-hoje-a-história-é-sobre-a-navalha-de-hanlon">Olá! Hoje a história é sobre &amp;ldquo;A Navalha de Hanlon&amp;rdquo;
&lt;/h1>&lt;p>Hoje gostaria de escrever sobre uma maneira de pensar com um nome um pouco incomum chamada &amp;ldquo;A Navalha de Hanlon&amp;rdquo;. Só de ouvir o nome, você pode pensar: &amp;ldquo;Parece assustador&amp;hellip;?&amp;rdquo;, mas, na verdade, é uma ideia que nos dá uma perspectiva muito familiar e gentil.&lt;/p>
&lt;hr>
&lt;h1 id="você-já-pensou-acho-que-aquela-pessoa-não-gosta-de-mim">Você já pensou: &amp;ldquo;Acho que aquela pessoa não gosta de mim&amp;hellip;&amp;rdquo;?
&lt;/h1>&lt;p>Por exemplo, você já passou por isso?&lt;/p>
&lt;ul>
&lt;li>Demora para responder&lt;/li>
&lt;li>Fizemos contato visual, mas não fui cumprimentado&lt;/li>
&lt;li>Fui ignorado quando pedi algo&lt;/li>
&lt;/ul>
&lt;p>Nessas horas, ficamos ansiosos pensando: &amp;ldquo;Será que eles me odeiam?&amp;rdquo;.
Isso acontece muito comigo também. E acabo ficando triste à toa.&lt;/p>
&lt;hr>
&lt;h1 id="o-que-é-a-navalha-de-hanlon">O que é a Navalha de Hanlon?
&lt;/h1>&lt;p>É aí que entra &amp;ldquo;A Navalha de Hanlon&amp;rdquo;.&lt;/p>
&lt;p>O termo originalmente em inglês é &amp;ldquo;Hanlon&amp;rsquo;s Razor&amp;rdquo;.
O significado, de forma geral, é este:&lt;/p>
&lt;blockquote>
&lt;p>&amp;ldquo;Nunca atribua à malícia o que pode ser adequadamente explicado pela estupidez.&amp;rdquo;&lt;/p>
&lt;/blockquote>
&lt;p>&amp;hellip;É um jeito meio duro de dizer, não acha?
Dizendo de uma forma um pouco mais suave:&lt;/p>
&lt;blockquote>
&lt;p>&amp;ldquo;Mesmo que pareça que a outra pessoa está sendo malvada, pode ser apenas um descuido ou desatenção.&amp;rdquo;&lt;/p>
&lt;/blockquote>
&lt;p>É essa a ideia.&lt;/p>
&lt;hr>
&lt;h1 id="quem-inventou-isso-quem-é-robert-j-hanlon">Quem inventou isso? Quem é Robert J. Hanlon?
&lt;/h1>&lt;p>Diz-se que esse termo apareceu pela primeira vez no livro &amp;ldquo;Murphy&amp;rsquo;s Law Book Two&amp;rdquo;, publicado em 1980.&lt;/p>
&lt;p>A ideia foi enviada por um dos autores, &lt;strong>Robert J. Hanlon&lt;/strong> , e foi usada exatamente como ele enviou, ganhando o nome de &amp;ldquo;A Navalha de Hanlon&amp;rdquo;.&lt;/p>
&lt;p>A propósito, essa &amp;ldquo;Navalha&amp;rdquo; (Razor) é usada no sentido de uma ferramenta filosófica para &amp;ldquo;cortar o desnecessário e pensar de forma simples&amp;rdquo;, e é uma expressão usada para organizar pensamentos, ao lado da Navalha de Ockham e outras.&lt;/p>
&lt;hr>
&lt;h1 id="pensar-que-houve-má-intenção-nos-deixa-exaustos">Pensar que &amp;ldquo;houve má intenção&amp;rdquo; nos deixa exaustos
&lt;/h1>&lt;p>Por exemplo, quando um e-mail é ignorado no trabalho.&lt;/p>
&lt;p>Se você pensar: &amp;ldquo;Por que não me respondem? Será que me odeiam?&amp;rdquo;, você vai ficando cada vez mais negativo.&lt;/p>
&lt;p>Mas, pensando bem:&lt;/p>
&lt;ul>
&lt;li>A pessoa simplesmente não viu&lt;/li>
&lt;li>Escreveu a resposta, mas esqueceu de enviar&lt;/li>
&lt;li>A notificação no celular ficou perdida no meio de outras&lt;/li>
&lt;/ul>
&lt;p>Razões como essas são surpreendentemente comuns.
E nós mesmos também cometemos esses erros.&lt;/p>
&lt;hr>
&lt;h1 id="o-estranho-caso-de-sermos-tolerantes-com-nossos-erros-mas-severos-com-os-dos-outros">O estranho caso de sermos tolerantes com nossos erros, mas severos com os dos outros
&lt;/h1>&lt;p>Por exemplo, quando esquecemos de responder a mensagem de um amigo.&lt;/p>
&lt;p>Nós respondemos com um tom sem qualquer malícia: &amp;ldquo;Ah, desculpe! Não vi a notificação~&amp;rdquo;.&lt;/p>
&lt;p>Mas quando a outra pessoa faz o mesmo com a gente, pensamos: &amp;ldquo;Fui ignorado&amp;rdquo;.&lt;/p>
&lt;p>Isso é muito comum.
As pessoas costumam ser muito compreensivas com suas próprias circunstâncias, mas têm dificuldade em ver as dos outros.&lt;/p>
&lt;hr>
&lt;h1 id="acreditar-que-há-má-intenção-é-na-verdade-uma-perda">Acreditar que &amp;ldquo;há má intenção&amp;rdquo; é, na verdade, uma perda
&lt;/h1>&lt;p>Quando alguém faz algo, se você presumir que &amp;ldquo;houve má intenção&amp;rdquo;, você transforma essa pessoa em uma inimiga em sua mente.&lt;/p>
&lt;p>Mas, na verdade, ela pode ser apenas desajeitada ou estar sobrecarregada com outras coisas.&lt;/p>
&lt;p>Claro, há pessoas que são realmente rudes, e é natural se sentir magoado se for tratado mal.&lt;/p>
&lt;p>Mas, não presumir que &amp;ldquo;certamente é malícia&amp;rdquo; torna o seu próprio coração um pouco mais leve.&lt;/p>
&lt;hr>
&lt;h1 id="dito-isso-não-significa-que-devemos-tolerar-tudo">Dito isso, não significa que devemos tolerar tudo
&lt;/h1>&lt;p>O que não quero que você entenda mal aqui é: não estou dizendo que &amp;ldquo;é tudo você se preocupando demais&amp;rdquo;.&lt;/p>
&lt;p>Quando fazem algo ruim com você, não há problema em pensar: &amp;ldquo;Isso foi horrível&amp;rdquo;.&lt;/p>
&lt;p>No entanto, em vez de presumir que &amp;ldquo;aquela pessoa tem uma personalidade ruim&amp;rdquo; ou &amp;ldquo;ela tentou me machucar de propósito&amp;rdquo;,&lt;/p>
&lt;p>a proposta é ter um pouco de flexibilidade e pensar: &amp;ldquo;Talvez ela tivesse seus motivos&amp;rdquo;.&lt;/p>
&lt;hr>
&lt;h1 id="então-ver-as-coisas-com-um-pouco-mais-de-gentileza-pode-mudar-o-seu-mundo">Então: Ver as coisas com um pouco mais de gentileza pode mudar o seu mundo
&lt;/h1>&lt;p>Acredito que a Navalha de Hanlon seja menos sobre &amp;ldquo;ser gentil com os outros&amp;rdquo; e mais sobre &amp;ldquo;uma maneira de proteger o seu próprio coração&amp;rdquo;.&lt;/p>
&lt;p>Quando você sente malícia nas ações das pessoas, seus próprios sentimentos ficam tensos.&lt;/p>
&lt;p>Mas, se você conseguir pensar: &amp;ldquo;Talvez tenha sido apenas um erro ou eles estavam sem tempo&amp;rdquo;, você se sentirá um pouco melhor.&lt;/p>
&lt;p>É uma forma de pensar que você pode usar para o seu próprio bem.&lt;/p>
&lt;hr>
&lt;h1 id="por-fim-por-favor-compartilhe-sua-experiência-também">Por fim: Por favor, compartilhe sua experiência também
&lt;/h1>&lt;p>Muito obrigado por ler até aqui.&lt;/p>
&lt;p>Se você tiver alguma história de &amp;ldquo;já me senti incomodado em momentos assim&amp;rdquo;, por favor, me conte.&lt;/p>
&lt;p>Apenas colocar sua experiência em palavras já pode trazer um pouco de alívio, não é mesmo?&lt;/p>
&lt;p>Até a próxima!&lt;/p>
&lt;hr></description></item><item><title>Conhecimentos Básicos de Computador</title><link>http://kenji.blog/pt/p/%E3%82%B3%E3%83%B3%E3%83%94%E3%83%A5%E3%83%BC%E3%82%BF%E3%81%AE%E5%9F%BA%E6%9C%AC%E7%9F%A5%E8%AD%98/</link><pubDate>Thu, 19 Sep 2024 01:10:20 +0900</pubDate><guid>http://kenji.blog/pt/p/%E3%82%B3%E3%83%B3%E3%83%94%E3%83%A5%E3%83%BC%E3%82%BF%E3%81%AE%E5%9F%BA%E6%9C%AC%E7%9F%A5%E8%AD%98/</guid><description>&lt;img src="http://kenji.blog/p/%E3%82%B3%E3%83%B3%E3%83%94%E3%83%A5%E3%83%BC%E3%82%BF%E3%81%AE%E5%9F%BA%E6%9C%AC%E7%9F%A5%E8%AD%98/img.png" alt="Featured image of post Conhecimentos Básicos de Computador" />&lt;h1 id="conhecimentos-básicos-de-computador">Conhecimentos Básicos de Computador
&lt;/h1>&lt;p>Esta página explica o que é um computador.&lt;/p>
&lt;h2 id="definição-de-computador">Definição de Computador
&lt;/h2>&lt;p>Um computador é uma máquina que possui os seguintes 5 dispositivos:&lt;/p>
&lt;ol>
&lt;li>Dispositivo de entrada&lt;/li>
&lt;li>Dispositivo de saída&lt;/li>
&lt;li>Dispositivo de armazenamento&lt;/li>
&lt;li>Dispositivo de controle&lt;/li>
&lt;li>Dispositivo lógico e aritmético&lt;/li>
&lt;/ol>
&lt;p>Resumidamente, um computador é uma máquina que realiza um &lt;code>processamento&lt;/code> específico para uma dada &lt;code>entrada&lt;/code> e &lt;code>produz&lt;/code> o resultado.
Ele pode &lt;code>armazenar&lt;/code> dados inseridos como &lt;code>entrada&lt;/code>, realizar &lt;code>operações aritméticas&lt;/code> e &lt;code>produzir saídas&lt;/code>. O &lt;code>controle&lt;/code> tem o papel de controlar os 4 dispositivos mencionados acima.&lt;/p>
&lt;h2 id="o-que-é-necessário-para-operar-um-computador">O que é necessário para operar um computador
&lt;/h2>&lt;p>Para operar um computador, são necessários programas (software) além dos dispositivos (hardware).&lt;/p>
&lt;p>Os programas instruem o computador sobre o tipo de processamento a ser realizado. Eles são escritos num formato que o computador possa compreender.&lt;/p>
&lt;p>Um exemplo de programa é mostrado abaixo:
Um programa que calcula a soma de 1 até um número inteiro fornecido.&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt"> 1
&lt;/span>&lt;span class="lnt"> 2
&lt;/span>&lt;span class="lnt"> 3
&lt;/span>&lt;span class="lnt"> 4
&lt;/span>&lt;span class="lnt"> 5
&lt;/span>&lt;span class="lnt"> 6
&lt;/span>&lt;span class="lnt"> 7
&lt;/span>&lt;span class="lnt"> 8
&lt;/span>&lt;span class="lnt"> 9
&lt;/span>&lt;span class="lnt">10
&lt;/span>&lt;span class="lnt">11
&lt;/span>&lt;span class="lnt">12
&lt;/span>&lt;span class="lnt">13
&lt;/span>&lt;span class="lnt">14
&lt;/span>&lt;span class="lnt">15
&lt;/span>&lt;span class="lnt">16
&lt;/span>&lt;span class="lnt">17
&lt;/span>&lt;span class="lnt">18
&lt;/span>&lt;span class="lnt">19
&lt;/span>&lt;span class="lnt">20
&lt;/span>&lt;span class="lnt">21
&lt;/span>&lt;span class="lnt">22
&lt;/span>&lt;span class="lnt">23
&lt;/span>&lt;span class="lnt">24
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-c++" data-lang="c++">&lt;span class="line">&lt;span class="cl">&lt;span class="cp">#include&lt;/span> &lt;span class="cpf">&amp;lt;iostream&amp;gt;&lt;/span>&lt;span class="cp">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="cp">&lt;/span>&lt;span class="k">using&lt;/span> &lt;span class="k">namespace&lt;/span> &lt;span class="n">std&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="kt">int&lt;/span> &lt;span class="nf">main&lt;/span>&lt;span class="p">()&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1">// Alocação de memória necessária
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">&lt;/span> &lt;span class="kt">int&lt;/span> &lt;span class="n">n&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">sum&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="mi">0&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1">// Saída
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">&lt;/span> &lt;span class="n">cout&lt;/span> &lt;span class="o">&amp;lt;&amp;lt;&lt;/span> &lt;span class="s">&amp;#34;Digite um número inteiro: &amp;#34;&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1">// Entrada
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">&lt;/span> &lt;span class="n">cin&lt;/span> &lt;span class="o">&amp;gt;&amp;gt;&lt;/span> &lt;span class="n">n&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1">// Operação
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">&lt;/span> &lt;span class="k">for&lt;/span> &lt;span class="p">(&lt;/span>&lt;span class="kt">int&lt;/span> &lt;span class="n">i&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="mi">1&lt;/span>&lt;span class="p">;&lt;/span> &lt;span class="n">i&lt;/span> &lt;span class="o">&amp;lt;=&lt;/span> &lt;span class="n">n&lt;/span>&lt;span class="p">;&lt;/span> &lt;span class="n">i&lt;/span>&lt;span class="o">++&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="p">{&lt;/span> &lt;span class="c1">// Operação
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">&lt;/span> &lt;span class="n">sum&lt;/span> &lt;span class="o">+=&lt;/span> &lt;span class="n">i&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1">// Saída
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">&lt;/span> &lt;span class="n">cout&lt;/span> &lt;span class="o">&amp;lt;&amp;lt;&lt;/span> &lt;span class="s">&amp;#34;A soma de 1 até &amp;#34;&lt;/span> &lt;span class="o">&amp;lt;&amp;lt;&lt;/span> &lt;span class="n">n&lt;/span> &lt;span class="o">&amp;lt;&amp;lt;&lt;/span> &lt;span class="s">&amp;#34; é &amp;#34;&lt;/span> &lt;span class="o">&amp;lt;&amp;lt;&lt;/span> &lt;span class="n">sum&lt;/span> &lt;span class="o">&amp;lt;&amp;lt;&lt;/span> &lt;span class="s">&amp;#34;.&amp;#34;&lt;/span> &lt;span class="o">&amp;lt;&amp;lt;&lt;/span> &lt;span class="n">endl&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1">// Fim
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">&lt;/span> &lt;span class="k">return&lt;/span> &lt;span class="mi">0&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>O programa é convertido em código de máquina por um compilador e transformado num formato que o computador possa executar.&lt;/p></description></item><item><title>Aplicativos iOS Recomendados</title><link>http://kenji.blog/pt/p/aplicativos-ios-recomendados/</link><pubDate>Wed, 18 Sep 2024 23:31:20 +0900</pubDate><guid>http://kenji.blog/pt/p/aplicativos-ios-recomendados/</guid><description>&lt;img src="http://kenji.blog/p/%E3%81%8A%E3%81%99%E3%81%99%E3%82%81ios%E3%82%A2%E3%83%97%E3%83%AA/img.png" alt="Featured image of post Aplicativos iOS Recomendados" />&lt;h2 id="aplicativos-ios-recomendados">Aplicativos iOS Recomendados
&lt;/h2>&lt;h3 id="xhttpsappsapplecomjpappxid333903271">&lt;a class="link" href="https://apps.apple.com/jp/app/x/id333903271" target="_blank" rel="noopener"
>X&lt;/a>
&lt;/h3>&lt;p>&lt;img src="http://kenji.blog/p/%E3%81%8A%E3%81%99%E3%81%99%E3%82%81ios%E3%82%A2%E3%83%97%E3%83%AA/img_2.png"
width="72"
height="72"
srcset="http://kenji.blog/p/%E3%81%8A%E3%81%99%E3%81%99%E3%82%81ios%E3%82%A2%E3%83%97%E3%83%AA/img_2_hu462c57ec387ca409298a502f8a8b2494_3092_480x0_resize_box_3.png 480w, http://kenji.blog/p/%E3%81%8A%E3%81%99%E3%81%99%E3%82%81ios%E3%82%A2%E3%83%97%E3%83%AA/img_2_hu462c57ec387ca409298a502f8a8b2494_3092_1024x0_resize_box_3.png 1024w"
loading="lazy"
alt="img_2.png"
class="gallery-image"
data-flex-grow="100"
data-flex-basis="240px"
>&lt;/p>
&lt;h3 id="instagramhttpsappsapplecomjpappinstagramid389801252">&lt;a class="link" href="https://apps.apple.com/jp/app/instagram/id389801252" target="_blank" rel="noopener"
>Instagram&lt;/a>
&lt;/h3>&lt;p>&lt;img src="http://kenji.blog/p/%E3%81%8A%E3%81%99%E3%81%99%E3%82%81ios%E3%82%A2%E3%83%97%E3%83%AA/img_1.png"
width="72"
height="72"
srcset="http://kenji.blog/p/%E3%81%8A%E3%81%99%E3%81%99%E3%82%81ios%E3%82%A2%E3%83%97%E3%83%AA/img_1_huaee4f1dda91fcc48cb464b6a8341c51b_12480_480x0_resize_box_3.png 480w, http://kenji.blog/p/%E3%81%8A%E3%81%99%E3%81%99%E3%82%81ios%E3%82%A2%E3%83%97%E3%83%AA/img_1_huaee4f1dda91fcc48cb464b6a8341c51b_12480_1024x0_resize_box_3.png 1024w"
loading="lazy"
alt="img_1.png"
class="gallery-image"
data-flex-grow="100"
data-flex-basis="240px"
>&lt;/p>
&lt;h3 id="facebookhttpsappsapplecomjpappfacebookid284882215">&lt;a class="link" href="https://apps.apple.com/jp/app/facebook/id284882215" target="_blank" rel="noopener"
>facebook&lt;/a>
&lt;/h3>&lt;p>&lt;img src="http://kenji.blog/p/%E3%81%8A%E3%81%99%E3%81%99%E3%82%81ios%E3%82%A2%E3%83%97%E3%83%AA/img_3.png"
width="72"
height="72"
srcset="http://kenji.blog/p/%E3%81%8A%E3%81%99%E3%81%99%E3%82%81ios%E3%82%A2%E3%83%97%E3%83%AA/img_3_huc2d1e97510f3a51dfaec535717039904_6505_480x0_resize_box_3.png 480w, http://kenji.blog/p/%E3%81%8A%E3%81%99%E3%81%99%E3%82%81ios%E3%82%A2%E3%83%97%E3%83%AA/img_3_huc2d1e97510f3a51dfaec535717039904_6505_1024x0_resize_box_3.png 1024w"
loading="lazy"
alt="img_3.png"
class="gallery-image"
data-flex-grow="100"
data-flex-basis="240px"
>&lt;/p>
&lt;h3 id="youtubehttpsappsapplecomjpappyoutubeid544007664">&lt;a class="link" href="https://apps.apple.com/jp/app/youtube/id544007664" target="_blank" rel="noopener"
>youtube&lt;/a>
&lt;/h3>&lt;p>&lt;img src="http://kenji.blog/p/%E3%81%8A%E3%81%99%E3%81%99%E3%82%81ios%E3%82%A2%E3%83%97%E3%83%AA/img_4.png"
width="72"
height="72"
srcset="http://kenji.blog/p/%E3%81%8A%E3%81%99%E3%81%99%E3%82%81ios%E3%82%A2%E3%83%97%E3%83%AA/img_4_huc7ff17a9037ee459ec076969231732ff_2217_480x0_resize_box_3.png 480w, http://kenji.blog/p/%E3%81%8A%E3%81%99%E3%81%99%E3%82%81ios%E3%82%A2%E3%83%97%E3%83%AA/img_4_huc7ff17a9037ee459ec076969231732ff_2217_1024x0_resize_box_3.png 1024w"
loading="lazy"
alt="img_4.png"
class="gallery-image"
data-flex-grow="100"
data-flex-basis="240px"
>&lt;/p>
&lt;h3 id="tiktokhttpsappsapplecomjpapptiktok-e38386e382a3e38383e382afe38388e38383e382afid1235601864">&lt;a class="link" href="https://apps.apple.com/jp/app/tiktok-%E3%83%86%E3%82%A3%E3%83%83%E3%82%AF%E3%83%88%E3%83%83%E3%82%AF/id1235601864" target="_blank" rel="noopener"
>TikTok&lt;/a>
&lt;/h3>&lt;p>&lt;img src="http://kenji.blog/p/%E3%81%8A%E3%81%99%E3%81%99%E3%82%81ios%E3%82%A2%E3%83%97%E3%83%AA/img_5.png"
width="72"
height="72"
srcset="http://kenji.blog/p/%E3%81%8A%E3%81%99%E3%81%99%E3%82%81ios%E3%82%A2%E3%83%97%E3%83%AA/img_5_hu586229f9b4cfff262ba6fda24e7ea241_6643_480x0_resize_box_3.png 480w, http://kenji.blog/p/%E3%81%8A%E3%81%99%E3%81%99%E3%82%81ios%E3%82%A2%E3%83%97%E3%83%AA/img_5_hu586229f9b4cfff262ba6fda24e7ea241_6643_1024x0_resize_box_3.png 1024w"
loading="lazy"
alt="img_5.png"
class="gallery-image"
data-flex-grow="100"
data-flex-basis="240px"
>&lt;/p>
&lt;h3 id="microsoft-edgehttpsappsapplecomjpappmicrosoft-edge-ai-e38396e383a9e382a6e382b6id1288723196">&lt;a class="link" href="https://apps.apple.com/jp/app/microsoft-edge-ai-%E3%83%96%E3%83%A9%E3%82%A6%E3%82%B6/id1288723196" target="_blank" rel="noopener"
>Microsoft Edge&lt;/a>
&lt;/h3>&lt;p>&lt;img src="http://kenji.blog/p/%E3%81%8A%E3%81%99%E3%81%99%E3%82%81ios%E3%82%A2%E3%83%97%E3%83%AA/img_6.png"
width="72"
height="72"
srcset="http://kenji.blog/p/%E3%81%8A%E3%81%99%E3%81%99%E3%82%81ios%E3%82%A2%E3%83%97%E3%83%AA/img_6_hu29f80384ce66070f1c4b087b84d37b0b_8950_480x0_resize_box_3.png 480w, http://kenji.blog/p/%E3%81%8A%E3%81%99%E3%81%99%E3%82%81ios%E3%82%A2%E3%83%97%E3%83%AA/img_6_hu29f80384ce66070f1c4b087b84d37b0b_8950_1024x0_resize_box_3.png 1024w"
loading="lazy"
alt="img_6.png"
class="gallery-image"
data-flex-grow="100"
data-flex-basis="240px"
>&lt;/p>
&lt;h3 id="firefoxhttpsappsapplecomjpappfirefox-private-safe-browserid989804926">&lt;a class="link" href="https://apps.apple.com/jp/app/firefox-private-safe-browser/id989804926" target="_blank" rel="noopener"
>Firefox&lt;/a>
&lt;/h3>&lt;p>&lt;img src="http://kenji.blog/p/%E3%81%8A%E3%81%99%E3%81%99%E3%82%81ios%E3%82%A2%E3%83%97%E3%83%AA/img_7.png"
width="72"
height="72"
srcset="http://kenji.blog/p/%E3%81%8A%E3%81%99%E3%81%99%E3%82%81ios%E3%82%A2%E3%83%97%E3%83%AA/img_7_hud4c8d2e9de7d5a057069e1bb8fe7a15f_8457_480x0_resize_box_3.png 480w, http://kenji.blog/p/%E3%81%8A%E3%81%99%E3%81%99%E3%82%81ios%E3%82%A2%E3%83%97%E3%83%AA/img_7_hud4c8d2e9de7d5a057069e1bb8fe7a15f_8457_1024x0_resize_box_3.png 1024w"
loading="lazy"
alt="img_7.png"
class="gallery-image"
data-flex-grow="100"
data-flex-basis="240px"
>&lt;/p>
&lt;h3 id="google-chromehttpsappsapplecomjpappgoogle-chromeid535886823">&lt;a class="link" href="https://apps.apple.com/jp/app/google-chrome/id535886823" target="_blank" rel="noopener"
>Google Chrome&lt;/a>
&lt;/h3>&lt;p>&lt;img src="http://kenji.blog/p/%E3%81%8A%E3%81%99%E3%81%99%E3%82%81ios%E3%82%A2%E3%83%97%E3%83%AA/img_8.png"
width="72"
height="72"
srcset="http://kenji.blog/p/%E3%81%8A%E3%81%99%E3%81%99%E3%82%81ios%E3%82%A2%E3%83%97%E3%83%AA/img_8_hucdf12dcf4c62afc76470aea9f650b47a_6392_480x0_resize_box_3.png 480w, http://kenji.blog/p/%E3%81%8A%E3%81%99%E3%81%99%E3%82%81ios%E3%82%A2%E3%83%97%E3%83%AA/img_8_hucdf12dcf4c62afc76470aea9f650b47a_6392_1024x0_resize_box_3.png 1024w"
loading="lazy"
alt="img_8.png"
class="gallery-image"
data-flex-grow="100"
data-flex-basis="240px"
>&lt;/p>
&lt;h3 id="chatgpthttpsappsapplecomjpappchatgptid6448311069">&lt;a class="link" href="https://apps.apple.com/jp/app/chatgpt/id6448311069" target="_blank" rel="noopener"
>ChatGPT&lt;/a>
&lt;/h3>&lt;p>&lt;img src="http://kenji.blog/p/%E3%81%8A%E3%81%99%E3%81%99%E3%82%81ios%E3%82%A2%E3%83%97%E3%83%AA/img_9.png"
width="72"
height="72"
srcset="http://kenji.blog/p/%E3%81%8A%E3%81%99%E3%81%99%E3%82%81ios%E3%82%A2%E3%83%97%E3%83%AA/img_9_hu159cd7f606ee564b08e18b29673e8c8f_3046_480x0_resize_box_3.png 480w, http://kenji.blog/p/%E3%81%8A%E3%81%99%E3%81%99%E3%82%81ios%E3%82%A2%E3%83%97%E3%83%AA/img_9_hu159cd7f606ee564b08e18b29673e8c8f_3046_1024x0_resize_box_3.png 1024w"
loading="lazy"
alt="img_9.png"
class="gallery-image"
data-flex-grow="100"
data-flex-basis="240px"
>&lt;/p>
&lt;h3 id="linehttpsappsapplecomjpapplineid443904275">&lt;a class="link" href="https://apps.apple.com/jp/app/line/id443904275" target="_blank" rel="noopener"
>LINE&lt;/a>
&lt;/h3>&lt;p>&lt;img src="http://kenji.blog/p/%E3%81%8A%E3%81%99%E3%81%99%E3%82%81ios%E3%82%A2%E3%83%97%E3%83%AA/img_10.png"
width="72"
height="72"
srcset="http://kenji.blog/p/%E3%81%8A%E3%81%99%E3%81%99%E3%82%81ios%E3%82%A2%E3%83%97%E3%83%AA/img_10_hud6f51ba0429c4e9ba264927e068700c9_3739_480x0_resize_box_3.png 480w, http://kenji.blog/p/%E3%81%8A%E3%81%99%E3%81%99%E3%82%81ios%E3%82%A2%E3%83%97%E3%83%AA/img_10_hud6f51ba0429c4e9ba264927e068700c9_3739_1024x0_resize_box_3.png 1024w"
loading="lazy"
alt="img_10.png"
class="gallery-image"
data-flex-grow="100"
data-flex-basis="240px"
>&lt;/p>
&lt;h3 id="microsoft-teamshttpsappsapplecomjpappmicrosoft-teamsid1113153706">&lt;a class="link" href="https://apps.apple.com/jp/app/microsoft-teams/id1113153706" target="_blank" rel="noopener"
>Microsoft Teams&lt;/a>
&lt;/h3>&lt;p>&lt;img src="http://kenji.blog/p/%E3%81%8A%E3%81%99%E3%81%99%E3%82%81ios%E3%82%A2%E3%83%97%E3%83%AA/img_18.png"
width="72"
height="72"
srcset="http://kenji.blog/p/%E3%81%8A%E3%81%99%E3%81%99%E3%82%81ios%E3%82%A2%E3%83%97%E3%83%AA/img_18_hue85e52cfe63c3e9fd5f8f47daf0356e9_5147_480x0_resize_box_3.png 480w, http://kenji.blog/p/%E3%81%8A%E3%81%99%E3%81%99%E3%82%81ios%E3%82%A2%E3%83%97%E3%83%AA/img_18_hue85e52cfe63c3e9fd5f8f47daf0356e9_5147_1024x0_resize_box_3.png 1024w"
loading="lazy"
alt="img_18.png"
class="gallery-image"
data-flex-grow="100"
data-flex-basis="240px"
>&lt;/p>
&lt;h3 id="notionhttpsappsapplecomjpappnotion-e383a1e383a2-e382bfe382b9e382af-aiid1232780281">&lt;a class="link" href="https://apps.apple.com/jp/app/notion-%E3%83%A1%E3%83%A2-%E3%82%BF%E3%82%B9%E3%82%AF-ai/id1232780281" target="_blank" rel="noopener"
>Notion&lt;/a>
&lt;/h3>&lt;p>&lt;img src="http://kenji.blog/p/%E3%81%8A%E3%81%99%E3%81%99%E3%82%81ios%E3%82%A2%E3%83%97%E3%83%AA/img_19.png"
width="72"
height="72"
srcset="http://kenji.blog/p/%E3%81%8A%E3%81%99%E3%81%99%E3%82%81ios%E3%82%A2%E3%83%97%E3%83%AA/img_19_huc41ff98efdf43db453238da8a6120bce_2546_480x0_resize_box_3.png 480w, http://kenji.blog/p/%E3%81%8A%E3%81%99%E3%81%99%E3%82%81ios%E3%82%A2%E3%83%97%E3%83%AA/img_19_huc41ff98efdf43db453238da8a6120bce_2546_1024x0_resize_box_3.png 1024w"
loading="lazy"
alt="img_19.png"
class="gallery-image"
data-flex-grow="100"
data-flex-basis="240px"
>&lt;/p>
&lt;h3 id="goodnotes-6httpsappsapplecomjpappgoodnotes-6id1444383602">&lt;a class="link" href="https://apps.apple.com/jp/app/goodnotes-6/id1444383602" target="_blank" rel="noopener"
>Goodnotes 6&lt;/a>
&lt;/h3>&lt;p>&lt;img src="http://kenji.blog/p/%E3%81%8A%E3%81%99%E3%81%99%E3%82%81ios%E3%82%A2%E3%83%97%E3%83%AA/img_20.png"
width="72"
height="72"
srcset="http://kenji.blog/p/%E3%81%8A%E3%81%99%E3%81%99%E3%82%81ios%E3%82%A2%E3%83%97%E3%83%AA/img_20_hu6abe5128292adbcb18b1e181c0e5636a_3192_480x0_resize_box_3.png 480w, http://kenji.blog/p/%E3%81%8A%E3%81%99%E3%81%99%E3%82%81ios%E3%82%A2%E3%83%97%E3%83%AA/img_20_hu6abe5128292adbcb18b1e181c0e5636a_3192_1024x0_resize_box_3.png 1024w"
loading="lazy"
alt="img_20.png"
class="gallery-image"
data-flex-grow="100"
data-flex-basis="240px"
>&lt;/p>
&lt;h3 id="teamviewerhttpsappsapplecomjpappteamviewere381a7e383aae383a2e383bce38388e382b3e383b3e38388e383ade383bce383abid692035811">&lt;a class="link" href="https://apps.apple.com/jp/app/teamviewer%E3%81%A7%E3%83%AA%E3%83%A2%E3%83%BC%E3%83%88%E3%82%B3%E3%83%B3%E3%83%88%E3%83%AD%E3%83%BC%E3%83%AB/id692035811" target="_blank" rel="noopener"
>TeamViewer&lt;/a>
&lt;/h3>&lt;p>&lt;img src="http://kenji.blog/p/%E3%81%8A%E3%81%99%E3%81%99%E3%82%81ios%E3%82%A2%E3%83%97%E3%83%AA/img_11.png"
width="72"
height="72"
srcset="http://kenji.blog/p/%E3%81%8A%E3%81%99%E3%81%99%E3%82%81ios%E3%82%A2%E3%83%97%E3%83%AA/img_11_hu8d24bed80552a75708e386fd8f8d80c0_5132_480x0_resize_box_3.png 480w, http://kenji.blog/p/%E3%81%8A%E3%81%99%E3%81%99%E3%82%81ios%E3%82%A2%E3%83%97%E3%83%AA/img_11_hu8d24bed80552a75708e386fd8f8d80c0_5132_1024x0_resize_box_3.png 1024w"
loading="lazy"
alt="img_11.png"
class="gallery-image"
data-flex-grow="100"
data-flex-basis="240px"
>&lt;/p>
&lt;h3 id="dropboxhttpsappsapplecomjpappdropboxid327630330">&lt;a class="link" href="https://apps.apple.com/jp/app/dropbox/id327630330" target="_blank" rel="noopener"
>DropBox&lt;/a>
&lt;/h3>&lt;p>&lt;img src="http://kenji.blog/p/%E3%81%8A%E3%81%99%E3%81%99%E3%82%81ios%E3%82%A2%E3%83%97%E3%83%AA/img_12.png"
width="72"
height="72"
srcset="http://kenji.blog/p/%E3%81%8A%E3%81%99%E3%81%99%E3%82%81ios%E3%82%A2%E3%83%97%E3%83%AA/img_12_hu87adf821381dd24af677cb81324f5e4d_3950_480x0_resize_box_3.png 480w, http://kenji.blog/p/%E3%81%8A%E3%81%99%E3%81%99%E3%82%81ios%E3%82%A2%E3%83%97%E3%83%AA/img_12_hu87adf821381dd24af677cb81324f5e4d_3950_1024x0_resize_box_3.png 1024w"
loading="lazy"
alt="img_12.png"
class="gallery-image"
data-flex-grow="100"
data-flex-basis="240px"
>&lt;/p>
&lt;h3 id="githubhttpsappsapplecomjpappgithubid1477376905">&lt;a class="link" href="https://apps.apple.com/jp/app/github/id1477376905" target="_blank" rel="noopener"
>GitHub&lt;/a>
&lt;/h3>&lt;p>&lt;img src="http://kenji.blog/p/%E3%81%8A%E3%81%99%E3%81%99%E3%82%81ios%E3%82%A2%E3%83%97%E3%83%AA/img_13.png"
width="72"
height="72"
srcset="http://kenji.blog/p/%E3%81%8A%E3%81%99%E3%81%99%E3%82%81ios%E3%82%A2%E3%83%97%E3%83%AA/img_13_hu20dbed9536873940b5fb2888a85a5348_4157_480x0_resize_box_3.png 480w, http://kenji.blog/p/%E3%81%8A%E3%81%99%E3%81%99%E3%82%81ios%E3%82%A2%E3%83%97%E3%83%AA/img_13_hu20dbed9536873940b5fb2888a85a5348_4157_1024x0_resize_box_3.png 1024w"
loading="lazy"
alt="img_13.png"
class="gallery-image"
data-flex-grow="100"
data-flex-basis="240px"
>&lt;/p>
&lt;h3 id="amazonhttpsappsapplecomjpappamazon-e382b7e383a7e38383e38394e383b3e382b0e382a2e38397e383aaid374254473">&lt;a class="link" href="https://apps.apple.com/jp/app/amazon-%E3%82%B7%E3%83%A7%E3%83%83%E3%83%94%E3%83%B3%E3%82%B0%E3%82%A2%E3%83%97%E3%83%AA/id374254473" target="_blank" rel="noopener"
>Amazon&lt;/a>
&lt;/h3>&lt;p>&lt;img src="http://kenji.blog/p/%E3%81%8A%E3%81%99%E3%81%99%E3%82%81ios%E3%82%A2%E3%83%97%E3%83%AA/img_14.png"
width="72"
height="72"
srcset="http://kenji.blog/p/%E3%81%8A%E3%81%99%E3%81%99%E3%82%81ios%E3%82%A2%E3%83%97%E3%83%AA/img_14_hu76d651bea9048b09443a642f4f41ce86_4111_480x0_resize_box_3.png 480w, http://kenji.blog/p/%E3%81%8A%E3%81%99%E3%81%99%E3%82%81ios%E3%82%A2%E3%83%97%E3%83%AA/img_14_hu76d651bea9048b09443a642f4f41ce86_4111_1024x0_resize_box_3.png 1024w"
loading="lazy"
alt="img_14.png"
class="gallery-image"
data-flex-grow="100"
data-flex-basis="240px"
>&lt;/p>
&lt;h3 id="paypayhttpsappsapplecomjpapppaypay-e3839ae382a4e3839ae382a4id1435783608">&lt;a class="link" href="https://apps.apple.com/jp/app/paypay-%E3%83%9A%E3%82%A4%E3%83%9A%E3%82%A4/id1435783608" target="_blank" rel="noopener"
>PayPay&lt;/a>
&lt;/h3>&lt;p>&lt;img src="http://kenji.blog/p/%E3%81%8A%E3%81%99%E3%81%99%E3%82%81ios%E3%82%A2%E3%83%97%E3%83%AA/img_15.png"
width="72"
height="72"
srcset="http://kenji.blog/p/%E3%81%8A%E3%81%99%E3%81%99%E3%82%81ios%E3%82%A2%E3%83%97%E3%83%AA/img_15_huaf4d4b4494b29706fb9cd3ac68c9ce38_4285_480x0_resize_box_3.png 480w, http://kenji.blog/p/%E3%81%8A%E3%81%99%E3%81%99%E3%82%81ios%E3%82%A2%E3%83%97%E3%83%AA/img_15_huaf4d4b4494b29706fb9cd3ac68c9ce38_4285_1024x0_resize_box_3.png 1024w"
loading="lazy"
alt="img_15.png"
class="gallery-image"
data-flex-grow="100"
data-flex-basis="240px"
>&lt;/p>
&lt;h3 id="wolframalphahttpsappsapplecomjpappwolframalphaid548861535">&lt;a class="link" href="https://apps.apple.com/jp/app/wolframalpha/id548861535" target="_blank" rel="noopener"
>WolframAlpha&lt;/a>
&lt;/h3>&lt;p>&lt;img src="http://kenji.blog/p/%E3%81%8A%E3%81%99%E3%81%99%E3%82%81ios%E3%82%A2%E3%83%97%E3%83%AA/img_16.png"
width="72"
height="72"
srcset="http://kenji.blog/p/%E3%81%8A%E3%81%99%E3%81%99%E3%82%81ios%E3%82%A2%E3%83%97%E3%83%AA/img_16_hu5eb819bf483304fdad0cb7e0cd72a169_6819_480x0_resize_box_3.png 480w, http://kenji.blog/p/%E3%81%8A%E3%81%99%E3%81%99%E3%82%81ios%E3%82%A2%E3%83%97%E3%83%AA/img_16_hu5eb819bf483304fdad0cb7e0cd72a169_6819_1024x0_resize_box_3.png 1024w"
loading="lazy"
alt="img_16.png"
class="gallery-image"
data-flex-grow="100"
data-flex-basis="240px"
>&lt;/p>
&lt;h3 id="mercarihttpsappsapplecomjpappe38395e383aae3839ee382a2e38397e383aae381afe383a1e383abe382abe383aa-e383a1e383abe3839ae382a4e381aee382b9e3839ee3839be6b1bae6b888e381a7e38282e381a3e381a8e3818ae5be97id667861049">&lt;a class="link" href="https://apps.apple.com/jp/app/%E3%83%95%E3%83%AA%E3%83%9E%E3%82%A2%E3%83%97%E3%83%AA%E3%81%AF%E3%83%A1%E3%83%AB%E3%82%AB%E3%83%AA-%E3%83%A1%E3%83%AB%E3%83%9A%E3%82%A4%E3%81%AE%E3%82%B9%E3%83%9E%E3%83%9B%E6%B1%BA%E6%B8%88%E3%81%A7%E3%82%82%E3%81%A3%E3%81%A8%E3%81%8A%E5%BE%97/id667861049" target="_blank" rel="noopener"
>Mercari&lt;/a>
&lt;/h3>&lt;p>&lt;img src="http://kenji.blog/p/%E3%81%8A%E3%81%99%E3%81%99%E3%82%81ios%E3%82%A2%E3%83%97%E3%83%AA/img_17.png"
width="72"
height="72"
srcset="http://kenji.blog/p/%E3%81%8A%E3%81%99%E3%81%99%E3%82%81ios%E3%82%A2%E3%83%97%E3%83%AA/img_17_hu9a243187d206781377b6a667e678a3bf_3431_480x0_resize_box_3.png 480w, http://kenji.blog/p/%E3%81%8A%E3%81%99%E3%81%99%E3%82%81ios%E3%82%A2%E3%83%97%E3%83%AA/img_17_hu9a243187d206781377b6a667e678a3bf_3431_1024x0_resize_box_3.png 1024w"
loading="lazy"
alt="img_17.png"
class="gallery-image"
data-flex-grow="100"
data-flex-basis="240px"
>&lt;/p></description></item><item><title>A História do Casal de Idosos e do Burro</title><link>http://kenji.blog/pt/p/a-historia-do-casal-de-idosos-e-do-burro/</link><pubDate>Wed, 18 Sep 2024 00:56:59 +0900</pubDate><guid>http://kenji.blog/pt/p/a-historia-do-casal-de-idosos-e-do-burro/</guid><description>&lt;img src="http://kenji.blog/p/%E8%80%81%E5%A4%AB%E5%A9%A6%E3%81%A8%E3%83%AD%E3%83%90%E3%81%AE%E8%A9%B1/img.png" alt="Featured image of post A História do Casal de Idosos e do Burro" />&lt;h2 id="o-casal-de-idosos-o-burro-e-o-nosso-problema-de-quem-escutar">O casal de idosos, o burro e o nosso problema de &amp;ldquo;quem escutar&amp;rdquo;
&lt;/h2>&lt;p>Olá!&lt;/p>
&lt;p>Hoje quero falar sobre algo que me fez pensar depois de ouvir a &amp;ldquo;História do Casal de Idosos e do Burro&amp;rdquo;.&lt;/p>
&lt;p>Tenho certeza de que muitos de vocês já ouviram falar. É uma daquelas fábulas famosas.&lt;/p>
&lt;hr>
&lt;h3 id="o-que-é-a-história-do-casal-de-idosos-e-do-burro">O que é a &amp;ldquo;História do Casal de Idosos e do Burro&amp;rdquo;?
&lt;/h3>&lt;p>Era uma vez um casal de idosos e um burro.&lt;/p>
&lt;p>No começo, o homem mais velho estava montado no burro e sua esposa estava andando. Então, alguém que passava disse:&lt;/p>
&lt;p>&amp;ldquo;Que homem, fazendo sua velha esposa andar enquanto só ele monta!&amp;rdquo;&lt;/p>
&lt;p>Ao ouvir isso, o casal decidiu que a esposa deveria montar no burro. Então, outra pessoa disse:&lt;/p>
&lt;p>&amp;ldquo;É um absurdo que a mulher monte no burro e faça o homem andar!&amp;rdquo;&lt;/p>
&lt;p>Então, eles decidiram que ambos deveriam montar no burro. E ouviram:&lt;/p>
&lt;p>&amp;ldquo;Pobre burro, é muito pesado com duas pessoas!&amp;rdquo;&lt;/p>
&lt;p>Se for assim, os dois desceram do burro e começaram a andar. Mas aí&amp;hellip;&lt;/p>
&lt;p>&amp;ldquo;Por que ninguém está montando, se vocês têm um burro?&amp;rdquo;&lt;/p>
&lt;p>No final, o casal ficou perdido, sem saber o que fazer.&lt;/p>
&lt;hr>
&lt;h3 id="escutar-a-opinião-de-todos-é-um-argumento-válido-mas">&amp;ldquo;Escutar a opinião de todos&amp;rdquo; é um argumento válido, mas&amp;hellip;
&lt;/h3>&lt;p>Essa história muitas vezes é interpretada como uma lição: &amp;ldquo;Se você se importar demais com o que os outros pensam, não haverá fim.&amp;rdquo;&lt;/p>
&lt;p>Mas a realidade não é tão simples assim.&lt;/p>
&lt;p>Há muitas pessoas que dizem: &amp;ldquo;Não se importe com o que os outros pensam!&amp;rdquo;&lt;/p>
&lt;p>No entanto, ignorar tudo é um pouco difícil. Por exemplo, ao postar algo nas redes sociais. Ao pensar no que falar na festa da empresa. Você, invariavelmente, se importa com a reação de alguém.&lt;/p>
&lt;p>Isso porque as &amp;ldquo;opiniões dos outros&amp;rdquo; muitas vezes dizem respeito à nossa segurança e avaliação.&lt;/p>
&lt;hr>
&lt;h3 id="ainda-assim-ser-influenciado-demais-torna-a-vida-difícil">Ainda assim, ser influenciado demais torna a vida difícil
&lt;/h3>&lt;p>Acho que, no começo, esse casal só estava pensando &amp;ldquo;o que devemos fazer?&amp;rdquo;.&lt;/p>
&lt;p>Mas não importa até onde fossem, alguém iria reclamar.&lt;/p>
&lt;p>E então começaram a girar em círculos pensando: &amp;ldquo;Então vamos tentar assim&amp;rdquo;, &amp;ldquo;Talvez isso seja melhor?&amp;rdquo;, e antes que percebessem, perderam de vista o que realmente queriam fazer.&lt;/p>
&lt;p>Isso é algo que também acontece muito em nosso dia a dia.&lt;/p>
&lt;p>As expectativas do chefe, as palavras dos pais, a quantidade de &amp;ldquo;curtidas&amp;rdquo; nas redes sociais. Ao se ajustar a essas coisas, você não sente que às vezes perde a noção do que realmente quer fazer?&lt;/p>
&lt;hr>
&lt;h3 id="o-importante-é-escolher-quem-escutar">O importante é escolher &amp;ldquo;quem escutar&amp;rdquo;
&lt;/h3>&lt;p>Então, o que devemos fazer? Não há uma resposta certa.&lt;/p>
&lt;p>Porém, &amp;ldquo;seguir a opinião de todos&amp;rdquo; é realisticamente impossível.&lt;/p>
&lt;p>É por isso que acredito que é importante escolher por si mesmo &amp;ldquo;quem escutar&amp;rdquo;.&lt;/p>
&lt;p>Por exemplo, &amp;ldquo;ouvir apenas os conselhos das pessoas que você respeita&amp;rdquo; ou &amp;ldquo;usar como critério o que o seu &amp;rsquo;eu&amp;rsquo; do passado entenderia&amp;rdquo;.&lt;/p>
&lt;p>Se você tiver apenas um critério no qual possa pensar: &amp;ldquo;Eu quero acreditar nisso&amp;rdquo;, o ruído do mundo diminuirá um pouco.&lt;/p>
&lt;hr>
&lt;h3 id="e-assim-quando-você-se-sentir-um-pouco-cansado">E assim, quando você se sentir um pouco cansado
&lt;/h3>&lt;p>Talvez seja bom se lembrar da história do &amp;ldquo;Casal de Idosos e do Burro&amp;rdquo;.&lt;/p>
&lt;p>É fácil acabar se importando com os olhares dos outros.&lt;/p>
&lt;p>Mas se você tentar agradar a todos, acabará descendo do burro também.&lt;/p>
&lt;p>Às vezes, pensar: &amp;ldquo;Talvez seja bom priorizar os meus próprios sentimentos&amp;rdquo; pode aliviar um pouco o coração.&lt;/p>
&lt;hr></description></item><item><title>Por que era quase impossível criar o LED azul</title><link>http://kenji.blog/pt/p/%E3%81%AA%E3%81%9C%E9%9D%92%E8%89%B2led%E3%82%92%E4%BD%9C%E3%82%8B%E3%81%93%E3%81%A8%E3%81%8C%E3%81%BB%E3%81%BC%E4%B8%8D%E5%8F%AF%E8%83%BD%E3%81%A0%E3%81%A3%E3%81%9F%E3%81%AE%E3%81%8B/</link><pubDate>Sun, 15 Sep 2024 00:43:52 +0900</pubDate><guid>http://kenji.blog/pt/p/%E3%81%AA%E3%81%9C%E9%9D%92%E8%89%B2led%E3%82%92%E4%BD%9C%E3%82%8B%E3%81%93%E3%81%A8%E3%81%8C%E3%81%BB%E3%81%BC%E4%B8%8D%E5%8F%AF%E8%83%BD%E3%81%A0%E3%81%A3%E3%81%9F%E3%81%AE%E3%81%8B/</guid><description>&lt;img src="http://kenji.blog/p/%E3%81%AA%E3%81%9C%E9%9D%92%E8%89%B2led%E3%82%92%E4%BD%9C%E3%82%8B%E3%81%93%E3%81%A8%E3%81%8C%E3%81%BB%E3%81%BC%E4%B8%8D%E5%8F%AF%E8%83%BD%E3%81%A0%E3%81%A3%E3%81%9F%E3%81%AE%E3%81%8B/img.png" alt="Featured image of post Por que era quase impossível criar o LED azul" />&lt;h2 id="por-que-era-quase-impossível-criar-o-led-azul">Por que era quase impossível criar o LED azul
&lt;/h2>&lt;p>Introdução a um documentário em inglês. Muito interessante. Há uma forte impressão de que o japonês que resolveu esse problema extremamente difícil não foi muito valorizado no Japão no início.&lt;/p>
&lt;div class="video-wrapper">
&lt;iframe loading="lazy"
src="https://www.youtube.com/embed/AF8d72mA41M"
allowfullscreen
title="YouTube Video"
>
&lt;/iframe>
&lt;/div></description></item><item><title>Tentando instalar o Qt Extension Pack no Visual Studio Code</title><link>http://kenji.blog/pt/p/visual-studio-code-%E3%81%AB-qt-extension-pack-%E3%82%92%E5%85%A5%E3%82%8C%E3%81%A6%E3%81%BF%E3%81%9F/</link><pubDate>Fri, 13 Sep 2024 00:53:53 +0900</pubDate><guid>http://kenji.blog/pt/p/visual-studio-code-%E3%81%AB-qt-extension-pack-%E3%82%92%E5%85%A5%E3%82%8C%E3%81%A6%E3%81%BF%E3%81%9F/</guid><description>&lt;img src="http://kenji.blog/p/visual-studio-code-%E3%81%AB-qt-extension-pack-%E3%82%92%E5%85%A5%E3%82%8C%E3%81%A6%E3%81%BF%E3%81%9F/img_1.png" alt="Featured image of post Tentando instalar o Qt Extension Pack no Visual Studio Code" />&lt;h1 id="iniciando-o-desenvolvimento-qt-no-vscode-como-instalar-o-qt-extension-pack">Iniciando o desenvolvimento Qt no VSCode: Como instalar o Qt Extension Pack
&lt;/h1>&lt;p>Olá, aqui é o Kenji.
Desta vez, apresentarei &amp;ldquo;como configurar o ambiente de desenvolvimento Qt no Visual Studio Code (doravante VSCode)&amp;rdquo;.&lt;/p>
&lt;p>Recentemente, além do Qt Creator oficial, há um número crescente de pessoas que desejam desenvolver aplicativos Qt usando o VSCode, que é leve e altamente extensível.
Para essas pessoas, recomendo o &lt;strong>&amp;ldquo;Qt Extension Pack&amp;rdquo;&lt;/strong> .
Basta instalar este pacote de extensões e você terá as principais extensões relacionadas ao Qt de uma só vez.&lt;/p>
&lt;hr>
&lt;h2 id="público-alvo">Público-alvo
&lt;/h2>&lt;ul>
&lt;li>Aqueles que desejam iniciar o desenvolvimento de aplicativos GUI usando Qt&lt;/li>
&lt;li>Aqueles que desejam desenvolver no VSCode em vez do Qt Creator&lt;/li>
&lt;li>Aqueles que têm preguiça de procurar extensões uma por uma&lt;/li>
&lt;/ul>
&lt;hr>
&lt;h2 id="pré-requisitos">Pré-requisitos
&lt;/h2>&lt;ul>
&lt;li>O VSCode deve estar instalado
(&lt;a class="link" href="https://code.visualstudio.com/" target="_blank" rel="noopener"
>Você pode baixá-lo gratuitamente no site oficial&lt;/a>)&lt;/li>
&lt;li>A própria biblioteca Qt deve estar instalada (&lt;a class="link" href="https://www.qt.io/" target="_blank" rel="noopener"
>Site oficial do Qt&lt;/a>)&lt;/li>
&lt;/ul>
&lt;hr>
&lt;h2 id="o-que-é-o-qt-extension-pack">O que é o Qt Extension Pack?
&lt;/h2>&lt;p>O Qt Extension Pack é um pacote de extensões para o VSCode.
Ao instalá-lo, os seguintes recursos são adicionados automaticamente:&lt;/p>
&lt;ul>
&lt;li>Suporte para arquivos &lt;code>.ui&lt;/code> (Qt Designer)&lt;/li>
&lt;li>Destaque de sintaxe para arquivos &lt;code>.pro&lt;/code> e &lt;code>.qrc&lt;/code>&lt;/li>
&lt;li>Conclusão de código C++, compilação e suporte a depuração para Qt&lt;/li>
&lt;li>Qt Resource Browser (referência de recursos)&lt;/li>
&lt;/ul>
&lt;hr>
&lt;h2 id="instruções-de-instalação">Instruções de Instalação
&lt;/h2>&lt;h3 id="1-abra-o-vscode">1. Abra o VSCode
&lt;/h3>&lt;p>Primeiro, inicie o VSCode.&lt;/p>
&lt;h3 id="2-abra-a-visualização-de-extensões">2. Abra a visualização de Extensões
&lt;/h3>&lt;p>Clique na barra de atividades no lado esquerdo (ícone de blocos quadrados) para exibir as &amp;ldquo;Extensões&amp;rdquo;.&lt;/p>
&lt;p>Ou você pode pressionar o atalho
&lt;code>Ctrl + Shift + X&lt;/code>.&lt;/p>
&lt;h3 id="3-pesquise-por-qt-extension-pack">3. Pesquise por &amp;ldquo;Qt Extension Pack&amp;rdquo;
&lt;/h3>&lt;p>Digite a seguinte palavra-chave na barra de pesquisa:&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">Qt Extension Pack
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>&lt;img src="http://kenji.blog/p/visual-studio-code-%E3%81%AB-qt-extension-pack-%E3%82%92%E5%85%A5%E3%82%8C%E3%81%A6%E3%81%BF%E3%81%9F/img.png"
width="867"
height="228"
srcset="http://kenji.blog/p/visual-studio-code-%E3%81%AB-qt-extension-pack-%E3%82%92%E5%85%A5%E3%82%8C%E3%81%A6%E3%81%BF%E3%81%9F/img_hua3a606fe260b4f1c55a0f37b6ed054ec_30325_480x0_resize_box_3.png 480w, http://kenji.blog/p/visual-studio-code-%E3%81%AB-qt-extension-pack-%E3%82%92%E5%85%A5%E3%82%8C%E3%81%A6%E3%81%BF%E3%81%9F/img_hua3a606fe260b4f1c55a0f37b6ed054ec_30325_1024x0_resize_box_3.png 1024w"
loading="lazy"
alt="img.png"
class="gallery-image"
data-flex-grow="380"
data-flex-basis="912px"
>&lt;/p>
&lt;h3 id="4-clique-no-botão-de-instalação">4. Clique no botão de Instalação
&lt;/h3>&lt;p>Quando o pacote de destino for exibido, clique no botão &amp;ldquo;Instalar&amp;rdquo;.
Isso instalará várias extensões de uma só vez, como as seguintes:&lt;/p>
&lt;ul>
&lt;li>Qt Language Support&lt;/li>
&lt;li>QML Support&lt;/li>
&lt;li>Qt Designer Integration&lt;/li>
&lt;li>CMake Tools (essencial para desenvolvimento Qt compatível com CMake)&lt;/li>
&lt;/ul>
&lt;hr>
&lt;h2 id="configuração-adicional-do-projeto-exemplo-cmake--qt">Configuração adicional do projeto (Exemplo CMake + Qt)
&lt;/h2>&lt;p>Se você usar o Qt baseado no CMake, recomendamos combiná-lo com as seguintes extensões:&lt;/p>
&lt;ul>
&lt;li>&lt;a class="link" href="https://marketplace.visualstudio.com/items?itemName=ms-vscode.cmake-tools" target="_blank" rel="noopener"
>CMake Tools&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="https://marketplace.visualstudio.com/items?itemName=twxs.cmake" target="_blank" rel="noopener"
>CMake Language Support&lt;/a>&lt;/li>
&lt;/ul>
&lt;p>Além disso, se você incluir a seguinte descrição em CMakeLists.txt, a integração com o Qt será tranquila:&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-cmake" data-lang="cmake">&lt;span class="line">&lt;span class="cl">&lt;span class="nb">find_package&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s">Qt6&lt;/span> &lt;span class="s">REQUIRED&lt;/span> &lt;span class="s">COMPONENTS&lt;/span> &lt;span class="s">Widgets&lt;/span>&lt;span class="p">)&lt;/span>&lt;span class="err">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="err">&lt;/span>&lt;span class="nb">target_link_libraries&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s">MyApp&lt;/span> &lt;span class="s">PRIVATE&lt;/span> &lt;span class="s">Qt6::Widgets&lt;/span>&lt;span class="p">)&lt;/span>&lt;span class="err">
&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;hr>
&lt;h2 id="bônus-como-abro-os-arquivos-ui">Bônus: Como abro os arquivos .ui?
&lt;/h2>&lt;p>Os arquivos &lt;code>.ui&lt;/code> podem ser editados no Qt Designer.
No VSCode, você poderá clicar com o botão direito do mouse no arquivo &lt;code>.ui&lt;/code> → selecionar &lt;code>Open with Qt Designer&lt;/code> (o Qt Designer deve estar incluído na variável de ambiente &lt;code>PATH&lt;/code>).&lt;/p>
&lt;hr>
&lt;h2 id="resumo">Resumo
&lt;/h2>&lt;table>
&lt;thead>
&lt;tr>
&lt;th>Passo&lt;/th>
&lt;th>Conteúdo&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>1&lt;/td>
&lt;td>Iniciar o VSCode&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>2&lt;/td>
&lt;td>Abrir o painel de extensões&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>3&lt;/td>
&lt;td>Pesquisar por &amp;ldquo;Qt Extension Pack&amp;rdquo;&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>4&lt;/td>
&lt;td>Clicar no botão de Instalação&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;p>Construir um ambiente Qt no VSCode tornou-se muito mais fácil do que antes.
Ele tem recursos suficientes como uma alternativa ao Qt Creator e é recomendado para quem quer trabalhar com leveza.&lt;/p>
&lt;hr>
&lt;h2 id="coleção-de-links-recomendados">Coleção de links recomendados
&lt;/h2>&lt;ul>
&lt;li>&lt;a class="link" href="https://www.qt.io/" target="_blank" rel="noopener"
>Site oficial do Qt&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="https://marketplace.visualstudio.com/items?itemName=TheQtCompany.qt" target="_blank" rel="noopener"
>Qt Extension Pack - Visual Studio Marketplace&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="https://code.visualstudio.com/" target="_blank" rel="noopener"
>Site oficial do VSCode&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="https://marketplace.visualstudio.com/items?itemName=ms-vscode.cmake-tools" target="_blank" rel="noopener"
>Extensão CMake Tools&lt;/a>&lt;/li>
&lt;/ul>
&lt;hr>
&lt;h2 id="por-fim">Por fim
&lt;/h2>&lt;p>No futuro, planejo prosseguir com o desenvolvimento utilizando ferramentas de UI do Qt e QML neste ambiente.
Na próxima vez, explicarei &lt;strong>como compilar e executar um aplicativo Hello World em Qt a partir do VSCode&lt;/strong> .&lt;/p>
&lt;p>Até logo!&lt;/p></description></item><item><title>Como verificar se o seu iPhone está com bloqueio de SIM</title><link>http://kenji.blog/pt/p/iphone%E3%81%ABsim%E3%83%AD%E3%83%83%E3%82%AF%E3%81%8C%E3%81%8B%E3%81%8B%E3%81%A3%E3%81%A6%E3%81%84%E3%82%8B%E3%81%8B%E7%A2%BA%E8%AA%8D%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95/</link><pubDate>Thu, 12 Sep 2024 00:32:11 +0900</pubDate><guid>http://kenji.blog/pt/p/iphone%E3%81%ABsim%E3%83%AD%E3%83%83%E3%82%AF%E3%81%8C%E3%81%8B%E3%81%8B%E3%81%A3%E3%81%A6%E3%81%84%E3%82%8B%E3%81%8B%E7%A2%BA%E8%AA%8D%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95/</guid><description>&lt;img src="http://kenji.blog/p/iphone%E3%81%ABsim%E3%83%AD%E3%83%83%E3%82%AF%E3%81%8C%E3%81%8B%E3%81%8B%E3%81%A3%E3%81%A6%E3%81%84%E3%82%8B%E3%81%8B%E7%A2%BA%E8%AA%8D%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95/img.png" alt="Featured image of post Como verificar se o seu iPhone está com bloqueio de SIM" />&lt;h1 id="como-verificar-se-o-seu-iphone-está-com-bloqueio-de-sim">Como verificar se o seu iPhone está com bloqueio de SIM
&lt;/h1>&lt;p>&lt;code>Tela Inicial&lt;/code> &amp;gt; &lt;code>Ajustes&lt;/code> &amp;gt; &lt;code>Geral&lt;/code> &amp;gt; &lt;code>Sobre&lt;/code> &amp;gt; &lt;code>Bloqueio de Operadora&lt;/code>&lt;/p>
&lt;p>Verifique se é exibido &amp;ldquo;Sem Restrições de SIM&amp;rdquo; ou se há algum bloqueio.&lt;/p></description></item><item><title>Conjectura P≠NP</title><link>http://kenji.blog/pt/p/pnp%E4%BA%88%E6%83%B3/</link><pubDate>Wed, 11 Sep 2024 02:22:39 +0900</pubDate><guid>http://kenji.blog/pt/p/pnp%E4%BA%88%E6%83%B3/</guid><description>&lt;h1 id="visão-geral">Visão Geral
&lt;/h1>&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">A classe P é a classe de problemas que podem ser decididos em tempo polinomial por uma máquina de Turing determinística, e a classe NP é a classe de problemas em que, dada uma evidência (chamada Testemunha) de que a resposta é Sim, a validade da Testemunha pode ser julgada (isso é chamado de verificação) em tempo polinomial. Como os problemas decidíveis em tempo polinomial podem ser verificados em tempo polinomial, é claro que P⊆NP, mas não está claro se P é um subconjunto próprio de NP. Ainda não há prova, mas muitos pesquisadores acreditam que P≠NP. E a conjectura de que esta classe P e a classe NP não são iguais é chamada de &amp;#34;Conjectura P≠NP&amp;#34;.
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>Site de referência : &lt;a class="link" href="https://daigakudenki.com/np-hard/" target="_blank" rel="noopener"
>https://daigakudenki.com/np-hard/&lt;/a>&lt;/p></description></item><item><title>Fui premiado novamente como Microsoft MVP (2024-2025)</title><link>http://kenji.blog/pt/p/fui-premiado-novamente-como-microsoft-mvp-2024-2025/</link><pubDate>Tue, 03 Sep 2024 21:25:20 +0900</pubDate><guid>http://kenji.blog/pt/p/fui-premiado-novamente-como-microsoft-mvp-2024-2025/</guid><description>&lt;img src="http://kenji.blog/p/microsoft-mvp2024-2025%E3%82%92%E5%86%8D%E5%8F%97%E8%B3%9E%E3%81%97%E3%81%BE%E3%81%97%E3%81%9F/img.png" alt="Featured image of post Fui premiado novamente como Microsoft MVP (2024-2025)" />&lt;h1 id="fui-premiado-novamente-como-microsoft-mvp-2024-2025">Fui premiado novamente como Microsoft MVP (2024-2025)
&lt;/h1>&lt;p>&lt;img src="http://kenji.blog/p/microsoft-mvp2024-2025%E3%82%92%E5%86%8D%E5%8F%97%E8%B3%9E%E3%81%97%E3%81%BE%E3%81%97%E3%81%9F/img_1.png"
width="510"
height="680"
srcset="http://kenji.blog/p/microsoft-mvp2024-2025%E3%82%92%E5%86%8D%E5%8F%97%E8%B3%9E%E3%81%97%E3%81%BE%E3%81%97%E3%81%9F/img_1_hu43fc94f004bc47efe4ebeb44e3c1c9ff_744182_480x0_resize_box_3.png 480w, http://kenji.blog/p/microsoft-mvp2024-2025%E3%82%92%E5%86%8D%E5%8F%97%E8%B3%9E%E3%81%97%E3%81%BE%E3%81%97%E3%81%9F/img_1_hu43fc94f004bc47efe4ebeb44e3c1c9ff_744182_1024x0_resize_box_3.png 1024w"
loading="lazy"
alt="img\_1.png"
class="gallery-image"
data-flex-grow="75"
data-flex-basis="180px"
>&lt;/p>
&lt;p>Olá, eu sou o kenji.
É com grande satisfação que anuncio que fui novamente premiado como &lt;strong>Microsoft MVP (Most Valuable Professional)&lt;/strong> este ano. Esta é a minha 8ª vez recebendo o prêmio.&lt;/p>
&lt;p>Aproveitando a oportunidade, gostaria de escrever um pouco sobre o que é o MVP.&lt;/p>
&lt;hr>
&lt;h2 id="o-que-é-o-microsoft-mvp">O que é o Microsoft MVP?
&lt;/h2>&lt;p>Mesmo sendo chamado de MVP, não estamos falando do melhor jogador nos esportes (embora às vezes me perguntem isso&amp;hellip;).
O &lt;strong>Microsoft MVP (Most Valuable Professional)&lt;/strong> é um título concedido àqueles que ativamente compartilham seus conhecimentos e experiências sobre as tecnologias da Microsoft com a comunidade.&lt;/p>
&lt;p>Escrever blogs técnicos, responder perguntas em sites de Q&amp;amp;A, publicar códigos de exemplo ou fazer apresentações em eventos.
&amp;ldquo;Compartilhar o que você sabe de uma forma que seja útil para os outros&amp;rdquo; ―― atividades constantes como essa são avaliadas.&lt;/p>
&lt;p>Existem premiados em todo o mundo, mas o número é limitado a cada ano, e ser premiado novamente não é fácil.
Dadas essas circunstâncias, sou muito grato por ter sido reconhecido novamente.&lt;/p>
&lt;hr>
&lt;h2 id="motivo-do-prêmio">Motivo do Prêmio
&lt;/h2>&lt;p>Este prêmio é uma renovação na categoria &amp;ldquo;Developer Technologies&amp;rdquo;.
No último ano, estive envolvido em atividades como:&lt;/p>
&lt;ul>
&lt;li>Escrever artigos no blog sobre tecnologias relacionadas à Microsoft&lt;/li>
&lt;li>Responder perguntas em sites técnicos de Q&amp;amp;A&lt;/li>
&lt;li>Publicar códigos de exemplo no GitHub&lt;/li>
&lt;li>Palestrar em grupos de estudo e eventos de tecnologia&lt;/li>
&lt;/ul>
&lt;p>Nenhuma delas é uma atividade extraordinária, mas sempre tentei compartilhar &amp;ldquo;o que eu tentei e funcionou&amp;rdquo; e &amp;ldquo;onde eu tropecei, mas consegui resolver&amp;rdquo; de uma forma que seja ao menos um pouco útil.&lt;/p>
&lt;p>Estou honestamente feliz que isso tenha tomado forma dessa maneira.&lt;/p>
&lt;hr>
&lt;h2 id="olhando-para-o-futuro">Olhando para o Futuro
&lt;/h2>&lt;p>O mundo da tecnologia avança tão rápido que só de tentar acompanhar já é difícil.
Mas, por causa disso, acredito que compartilhar &amp;ldquo;informações reais&amp;rdquo; — como foi usar na prática e o que foi difícil de entender — tem um grande significado.&lt;/p>
&lt;p>Pretendo continuar no meu próprio ritmo, sem me esforçar demais.
Ficarei feliz se puder continuar fornecendo informações que façam alguém pensar, &amp;ldquo;Ah, isso ajudou&amp;rdquo;.&lt;/p>
&lt;p>Muito obrigado pelo seu apoio contínuo.&lt;/p></description></item><item><title>Como baixar vídeos do YouTube com yt-dlp.exe</title><link>http://kenji.blog/pt/p/yt-dlp.exe-%E3%81%AB%E3%82%88%E3%82%8B-youtube-%E5%8B%95%E7%94%BB%E3%81%AE%E3%83%80%E3%82%A6%E3%83%B3%E3%83%AD%E3%83%BC%E3%83%89%E6%96%B9%E6%B3%95/</link><pubDate>Tue, 03 Sep 2024 14:09:26 +0900</pubDate><guid>http://kenji.blog/pt/p/yt-dlp.exe-%E3%81%AB%E3%82%88%E3%82%8B-youtube-%E5%8B%95%E7%94%BB%E3%81%AE%E3%83%80%E3%82%A6%E3%83%B3%E3%83%AD%E3%83%BC%E3%83%89%E6%96%B9%E6%B3%95/</guid><description>&lt;img src="http://kenji.blog/p/yt-dlp.exe-%E3%81%AB%E3%82%88%E3%82%8B-youtube-%E5%8B%95%E7%94%BB%E3%81%AE%E3%83%80%E3%82%A6%E3%83%B3%E3%83%AD%E3%83%BC%E3%83%89%E6%96%B9%E6%B3%95/img_1.png" alt="Featured image of post Como baixar vídeos do YouTube com yt-dlp.exe" />&lt;h1 id="o-que-é-o-yt-dlp">O que é o yt-dlp
&lt;/h1>&lt;p>O &lt;code>yt-dlp&lt;/code> é uma ferramenta de linha de comando para baixar vídeos do YouTube.
Além de baixar vídeos, você também pode baixá-los como arquivos de música no formato mp3.&lt;/p>
&lt;h2 id="download-e-instalação">Download e Instalação
&lt;/h2>&lt;ol>
&lt;li>Baixe o yt-dlp.exe mais recente da &lt;a class="link" href="https://github.com/yt-dlp/yt-dlp/releases" target="_blank" rel="noopener"
>página de lançamentos do yt-dlp&lt;/a>.&lt;/li>
&lt;li>Coloque o yt-dlp.exe em qualquer pasta.&lt;/li>
&lt;li>Adicione o caminho da pasta do yt-dlp.exe à variável de ambiente Path.&lt;/li>
&lt;/ol>
&lt;h2 id="como-usar">Como Usar
&lt;/h2>&lt;p>Execute o yt-dlp.exe no prompt de comando e especifique a URL do vídeo do YouTube.&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">yt-dlp.exe &amp;#34;https://www.youtube.com/watch?v=VIDEO_ID&amp;#34;
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>※ O argumento pode ser apenas a parte do VIDEO_ID.&lt;/p>
&lt;p>Para baixar como um arquivo de música mp3, execute o seguinte comando:&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">yt-dlp.exe --extract-audio --audio-format mp3 --embed-thumbnail --add-metadata &amp;#34;https://www.youtube.com/watch?v=VIDEO_ID&amp;#34;
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>Com isso, o vídeo será baixado no diretório atual de onde o comando foi executado.&lt;/p>
&lt;p>Isso é tudo.&lt;/p></description></item><item><title>Links de vídeos curtos</title><link>http://kenji.blog/pt/p/links-de-videos-curtos/</link><pubDate>Sun, 25 Aug 2024 16:24:35 +0900</pubDate><guid>http://kenji.blog/pt/p/links-de-videos-curtos/</guid><description>&lt;img src="http://kenji.blog/p/%E3%82%B7%E3%83%A7%E3%83%BC%E3%83%88%E5%8B%95%E7%94%BB%E3%83%AA%E3%83%B3%E3%82%AF/img.png" alt="Featured image of post Links de vídeos curtos" />&lt;ol>
&lt;li>Futebol Gandula&lt;/li>
&lt;/ol>
&lt;blockquote class="tiktok-embed" cite="https://www.tiktok.com/@gg211204/video/7398347526975294738" data-video-id="7398347526975294738" style="max-width: 605px;min-width: 325px;" > &lt;section> &lt;a target="_blank" title="@gg211204" href="https://www.tiktok.com/@gg211204?refer=embed">@gg211204&lt;/a> 『O dia em que o gandula virou herói』 O gandula que salvou o time neste dia foi convidado para o clube depois e jantou com os jogadores. &lt;a title="トッテナム" target="_blank" href="https://www.tiktok.com/tag/%E3%83%88%E3%83%83%E3%83%86%E3%83%8A%E3%83%A0?refer=embed">#トッテナム&lt;/a> &lt;a title="スパーズ" target="_blank" href="https://www.tiktok.com/tag/%E3%82%B9%E3%83%91%E3%83%BC%E3%82%BA?refer=embed">#スパーズ&lt;/a> &lt;a title="モウリーニョ" target="_blank" href="https://www.tiktok.com/tag/%E3%83%A2%E3%82%A6%E3%83%AA%E3%83%BC%E3%83%8B%E3%83%A7?refer=embed">#モウリーニョ&lt;/a> &lt;a title="ボールボーイ" target="_blank" href="https://www.tiktok.com/tag/%E3%83%9C%E3%83%BC%E3%83%AB%E3%83%9C%E3%83%BC%E3%82%A4?refer=embed">#ボールボーイ&lt;/a> &lt;a target="_blank" title="♬ original sound - じょり" href="https://www.tiktok.com/music/original-sound-じょり-7398347563419601680?refer=embed">♬ original sound - じょり&lt;/a> &lt;/section> &lt;/blockquote> &lt;script async src="https://www.tiktok.com/embed.js">&lt;/script>
&lt;ol start="2">
&lt;li>Starbucks
&lt;div class="video-wrapper">
&lt;iframe loading="lazy"
src="https://www.youtube.com/embed/P3pSGIWng-E"
allowfullscreen
title="YouTube Video"
>
&lt;/iframe>
&lt;/div>
&lt;/li>
&lt;/ol></description></item><item><title>Citações de Einstein</title><link>http://kenji.blog/pt/p/citacoes-de-einstein/</link><pubDate>Sat, 24 Aug 2024 18:38:47 +0900</pubDate><guid>http://kenji.blog/pt/p/citacoes-de-einstein/</guid><description>&lt;img src="http://kenji.blog/p/%E3%82%A2%E3%82%A4%E3%83%B3%E3%82%B7%E3%83%A5%E3%82%BF%E3%82%A4%E3%83%B3%E3%81%AE%E5%90%8D%E8%A8%80/Solvay_conference_1927.jpg" alt="Featured image of post Citações de Einstein" />&lt;p>Olá!&lt;/p>
&lt;p>Hoje, gostaria de falar sobre as citações de Einstein.&lt;/p>
&lt;hr>
&lt;h2 id="o-mundo-não-valoriza-suas-boas-ações">O mundo não valoriza suas boas ações?
&lt;/h2>&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;span class="lnt">4
&lt;/span>&lt;span class="lnt">5
&lt;/span>&lt;span class="lnt">6
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">O mundo nunca avaliará o milhão de coisas boas que você faz.
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">Mas eles vão criticar a única coisa errada que você faz...
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">Mas não desanime.
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&amp;#34;Eleve-se sempre acima de todo riso e crítica. Permaneça forte.&amp;#34;
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">- Albert Einstein
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>Estas são palavras que se dizem ter sido proferidas por Einstein. Elas apontam de forma contundente para a dureza da sociedade que sentimos todos os dias e o viés nas avaliações das pessoas.&lt;/p>
&lt;hr>
&lt;h2 id="ainda-assim-continue-a-se-levantar">Ainda assim, continue a se levantar
&lt;/h2>&lt;p>&amp;ldquo;Eleve-se sempre acima de todo riso e crítica. Permaneça forte.&amp;rdquo;&lt;/p>
&lt;p>Essas palavras a seguir podem ser consideradas a resposta de Einstein à dura realidade mencionada acima. Elas nos ensinam a importância de não ceder à crítica ou ao ridículo e de continuar avançando com fé em nós mesmos.&lt;/p>
&lt;hr>
&lt;h2 id="aplicando-os-ensinamentos-de-einstein-à-vida-diária">Aplicando os ensinamentos de Einstein à vida diária
&lt;/h2>&lt;p>Esta citação está profundamente relacionada às nossas vidas diárias. Por exemplo, pode haver momentos em que seus esforços no trabalho não são reconhecidos e apenas erros triviais se destacam. Além disso, suas declarações nas redes sociais podem ser tiradas de contexto e criticadas.&lt;/p>
&lt;p>Nesses momentos, tente lembrar as palavras de Einstein. É importante manter suas próprias crenças em vez de ficar feliz ou triste com as avaliações de outras pessoas.&lt;/p>
&lt;hr>
&lt;h2 id="conclusão">Conclusão
&lt;/h2>&lt;p>Esta citação de Einstein nos ensina a importância de &amp;ldquo;viver acreditando em si mesmo sem ser influenciado pelas avaliações dos outros&amp;rdquo;. Tenhamos a coragem de seguir o caminho em que acreditamos, sem sucumbir à crítica ou ao ridículo.&lt;/p>
&lt;p>Finalmente, as palavras de Einstein mais uma vez.&lt;/p>
&lt;blockquote>
&lt;p>&lt;strong>&amp;ldquo;Eleve-se sempre acima de todo riso e crítica. Permaneça forte.&amp;rdquo;&lt;/strong>&lt;/p>
&lt;/blockquote>
&lt;p>Espero que essas palavras ressoem em seu coração e o inspirem a dar um passo positivo à frente.&lt;/p></description></item><item><title>Código C para gerar números primos</title><link>http://kenji.blog/pt/p/codigo-c-para-gerar-numeros-primos/</link><pubDate>Sat, 24 Aug 2024 09:38:10 +0900</pubDate><guid>http://kenji.blog/pt/p/codigo-c-para-gerar-numeros-primos/</guid><description>&lt;img src="http://kenji.blog/p/%E7%B4%A0%E6%95%B0%E3%82%92%E7%94%9F%E6%88%90%E3%81%99%E3%82%8Bc%E8%A8%80%E8%AA%9E%E3%82%B3%E3%83%BC%E3%83%89/img.png" alt="Featured image of post Código C para gerar números primos" />&lt;p>Abaixo está um código C simples que gera números primos dentro de um intervalo especificado. Neste exemplo, enumeramos números primos de 1 a n.&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt"> 1
&lt;/span>&lt;span class="lnt"> 2
&lt;/span>&lt;span class="lnt"> 3
&lt;/span>&lt;span class="lnt"> 4
&lt;/span>&lt;span class="lnt"> 5
&lt;/span>&lt;span class="lnt"> 6
&lt;/span>&lt;span class="lnt"> 7
&lt;/span>&lt;span class="lnt"> 8
&lt;/span>&lt;span class="lnt"> 9
&lt;/span>&lt;span class="lnt">10
&lt;/span>&lt;span class="lnt">11
&lt;/span>&lt;span class="lnt">12
&lt;/span>&lt;span class="lnt">13
&lt;/span>&lt;span class="lnt">14
&lt;/span>&lt;span class="lnt">15
&lt;/span>&lt;span class="lnt">16
&lt;/span>&lt;span class="lnt">17
&lt;/span>&lt;span class="lnt">18
&lt;/span>&lt;span class="lnt">19
&lt;/span>&lt;span class="lnt">20
&lt;/span>&lt;span class="lnt">21
&lt;/span>&lt;span class="lnt">22
&lt;/span>&lt;span class="lnt">23
&lt;/span>&lt;span class="lnt">24
&lt;/span>&lt;span class="lnt">25
&lt;/span>&lt;span class="lnt">26
&lt;/span>&lt;span class="lnt">27
&lt;/span>&lt;span class="lnt">28
&lt;/span>&lt;span class="lnt">29
&lt;/span>&lt;span class="lnt">30
&lt;/span>&lt;span class="lnt">31
&lt;/span>&lt;span class="lnt">32
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-cpp" data-lang="cpp">&lt;span class="line">&lt;span class="cl">&lt;span class="cp">#include&lt;/span> &lt;span class="cpf">&amp;lt;stdio.h&amp;gt;&lt;/span>&lt;span class="cp">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="cp">#include&lt;/span> &lt;span class="cpf">&amp;lt;stdbool.h&amp;gt;&lt;/span>&lt;span class="cp">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="cp">&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="kt">bool&lt;/span> &lt;span class="nf">isPrime&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="kt">int&lt;/span> &lt;span class="n">num&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">if&lt;/span> &lt;span class="p">(&lt;/span>&lt;span class="n">num&lt;/span> &lt;span class="o">&amp;lt;=&lt;/span> &lt;span class="mi">1&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="k">return&lt;/span> &lt;span class="nb">false&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">if&lt;/span> &lt;span class="p">(&lt;/span>&lt;span class="n">num&lt;/span> &lt;span class="o">&amp;lt;=&lt;/span> &lt;span class="mi">3&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="k">return&lt;/span> &lt;span class="nb">true&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">if&lt;/span> &lt;span class="p">(&lt;/span>&lt;span class="n">num&lt;/span> &lt;span class="o">%&lt;/span> &lt;span class="mi">2&lt;/span> &lt;span class="o">==&lt;/span> &lt;span class="mi">0&lt;/span> &lt;span class="o">||&lt;/span> &lt;span class="n">num&lt;/span> &lt;span class="o">%&lt;/span> &lt;span class="mi">3&lt;/span> &lt;span class="o">==&lt;/span> &lt;span class="mi">0&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="k">return&lt;/span> &lt;span class="nb">false&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">for&lt;/span> &lt;span class="p">(&lt;/span>&lt;span class="kt">int&lt;/span> &lt;span class="n">i&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="mi">5&lt;/span>&lt;span class="p">;&lt;/span> &lt;span class="n">i&lt;/span> &lt;span class="o">*&lt;/span> &lt;span class="n">i&lt;/span> &lt;span class="o">&amp;lt;=&lt;/span> &lt;span class="n">num&lt;/span>&lt;span class="p">;&lt;/span> &lt;span class="n">i&lt;/span> &lt;span class="o">+=&lt;/span> &lt;span class="mi">6&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">if&lt;/span> &lt;span class="p">(&lt;/span>&lt;span class="n">num&lt;/span> &lt;span class="o">%&lt;/span> &lt;span class="n">i&lt;/span> &lt;span class="o">==&lt;/span> &lt;span class="mi">0&lt;/span> &lt;span class="o">||&lt;/span> &lt;span class="n">num&lt;/span> &lt;span class="o">%&lt;/span> &lt;span class="p">(&lt;/span>&lt;span class="n">i&lt;/span> &lt;span class="o">+&lt;/span> &lt;span class="mi">2&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="o">==&lt;/span> &lt;span class="mi">0&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="k">return&lt;/span> &lt;span class="nb">false&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">return&lt;/span> &lt;span class="nb">true&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="kt">void&lt;/span> &lt;span class="nf">printPrimes&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="kt">int&lt;/span> &lt;span class="n">n&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">printf&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s">&amp;#34;2 &amp;#34;&lt;/span>&lt;span class="p">);&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">for&lt;/span> &lt;span class="p">(&lt;/span>&lt;span class="kt">int&lt;/span> &lt;span class="n">i&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="mi">3&lt;/span>&lt;span class="p">;&lt;/span> &lt;span class="n">i&lt;/span> &lt;span class="o">&amp;lt;=&lt;/span> &lt;span class="n">n&lt;/span>&lt;span class="p">;&lt;/span> &lt;span class="n">i&lt;/span> &lt;span class="o">+=&lt;/span> &lt;span class="mi">2&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">if&lt;/span> &lt;span class="p">(&lt;/span>&lt;span class="n">isPrime&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">i&lt;/span>&lt;span class="p">))&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">printf&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s">&amp;#34;%d &amp;#34;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">i&lt;/span>&lt;span class="p">);&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">printf&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s">&amp;#34;&lt;/span>&lt;span class="se">\n&lt;/span>&lt;span class="s">&amp;#34;&lt;/span>&lt;span class="p">);&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="kt">int&lt;/span> &lt;span class="nf">main&lt;/span>&lt;span class="p">()&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="kt">int&lt;/span> &lt;span class="n">n&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">printf&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s">&amp;#34;Digite o valor máximo do intervalo para gerar números primos: &amp;#34;&lt;/span>&lt;span class="p">);&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">scanf&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s">&amp;#34;%d&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="o">&amp;amp;&lt;/span>&lt;span class="n">n&lt;/span>&lt;span class="p">);&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">printf&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s">&amp;#34;Os números primos de 1 a %d são:&lt;/span>&lt;span class="se">\n&lt;/span>&lt;span class="s">&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">n&lt;/span>&lt;span class="p">);&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">printPrimes&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">n&lt;/span>&lt;span class="p">);&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">return&lt;/span> &lt;span class="mi">0&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>Este código funciona da seguinte forma:&lt;/p>
&lt;ol>
&lt;li>Função isPrime: Determina se um determinado número é primo. Por uma questão de eficiência, primeiro verifica-se se é divisível por 2 e 3 e, em seguida, prossegue verificando em múltiplos de 6.&lt;/li>
&lt;li>Função printPrimes: Gera números primos dentro de um intervalo especificado. O 2 é impresso primeiro e, em seguida, apenas os números ímpares são verificados.&lt;/li>
&lt;li>Função main: Solicita que o usuário insira o valor máximo do intervalo e imprime os números primos dentro desse intervalo.&lt;/li>
&lt;/ol>
&lt;p>Se você compilar e executar este código, os números primos dentro do intervalo especificado serão exibidos.&lt;/p></description></item><item><title>Não dês a tua vida</title><link>http://kenji.blog/pt/p/nao-des-a-tua-vida/</link><pubDate>Thu, 25 Jul 2024 13:16:47 +0900</pubDate><guid>http://kenji.blog/pt/p/nao-des-a-tua-vida/</guid><description>&lt;p>&lt;img src="http://kenji.blog/p/%E5%90%9B%E6%AD%BB%E3%81%AB%E3%81%9F%E3%81%BE%E3%81%B5%E3%81%93%E3%81%A8%E3%81%AA%E3%81%8B%E3%82%8C/img.png"
width="1080"
height="1080"
srcset="http://kenji.blog/p/%E5%90%9B%E6%AD%BB%E3%81%AB%E3%81%9F%E3%81%BE%E3%81%B5%E3%81%93%E3%81%A8%E3%81%AA%E3%81%8B%E3%82%8C/img_hub1fb50838efd9b9ec0f364c86e062d91_1677486_480x0_resize_box_3.png 480w, http://kenji.blog/p/%E5%90%9B%E6%AD%BB%E3%81%AB%E3%81%9F%E3%81%BE%E3%81%B5%E3%81%93%E3%81%A8%E3%81%AA%E3%81%8B%E3%82%8C/img_hub1fb50838efd9b9ec0f364c86e062d91_1677486_1024x0_resize_box_3.png 1024w"
loading="lazy"
alt="img.png"
class="gallery-image"
data-flex-grow="100"
data-flex-basis="240px"
>&lt;/p>
&lt;h1 id="akiko-yosano">Akiko Yosano
&lt;/h1>&lt;p>** &amp;ldquo;Não dês a tua vida&amp;rdquo; **&lt;/p>
&lt;p>―― Chorando por meu irmão mais novo no exército de cerco a Port Arthur&lt;/p>
&lt;p>Ah, meu irmão, eu choro por ti,&lt;br>
Não dês a tua vida,&lt;br>
Sendo tu o mais novo&lt;br>
O amor de nossos pais por ti foi maior,&lt;br>
Acaso nossos pais te fizeram empunhar uma lâmina&lt;br>
E te ensinaram a matar pessoas?&lt;br>
Acaso te criaram até aos vinte e quatro anos&lt;br>
Para que matasses e morresses?&lt;/p>
&lt;p>Sendo tu o herdeiro do nome de nossos pais&lt;br>
Como mestre orgulhoso da antiga casa&lt;br>
Dos mercadores da cidade de Sakai,&lt;br>
Não dês a tua vida,&lt;br>
Mesmo que a fortaleza de Port Arthur caia,&lt;br>
Ou não caia, que importa?&lt;br>
Tu não deves saber,&lt;br>
Mas isso não existe nas leis da casa de um mercador.&lt;/p>
&lt;p>Não dês a tua vida,&lt;br>
O Imperador não vai ele mesmo&lt;br>
Para a batalha,&lt;br>
Fazer com que as pessoas derramem o sangue umas das outras,&lt;br>
Morram no caminho das bestas,&lt;br>
E que morrer seja a glória de um homem,&lt;br>
Sendo o Seu Grande Coração profundo,&lt;br>
Como poderia Ele pensar tal coisa?&lt;/p>
&lt;p>Ah, meu irmão, na batalha&lt;br>
Não dês a tua vida,&lt;br>
A nossa mãe que perdeu&lt;br>
O nosso pai no outono passado,&lt;br>
No meio do seu luto, dolorosamente&lt;br>
Teve o seu filho convocado, guarda a casa,&lt;br>
E mesmo nesta era de paz que nos dizem,&lt;br>
Os cabelos brancos da mãe só aumentaram.&lt;/p>
&lt;p>Chorando prostrada à sombra da cortina&lt;br>
A jovem e frágil nova esposa,&lt;br>
Tu a esqueces? Tu pensas nela?&lt;br>
Pensa no coração da jovem&lt;br>
Que se separou antes mesmo de dez meses juntos,&lt;br>
Para além de ti, o único neste mundo,&lt;br>
Ah, em quem mais pode ela confiar?&lt;br>
Não dês a tua vida.&lt;/p></description></item><item><title>Sobre Yosano Akiko</title><link>http://kenji.blog/pt/p/sobre-yosano-akiko/</link><pubDate>Thu, 25 Jul 2024 13:08:36 +0900</pubDate><guid>http://kenji.blog/pt/p/sobre-yosano-akiko/</guid><description>&lt;p>&lt;img src="http://kenji.blog/p/%E4%B8%8E%E8%AC%9D%E9%87%8E%E6%99%B6%E5%AD%90%E3%81%AB%E3%81%A4%E3%81%84%E3%81%A6/img.png"
width="1080"
height="1080"
srcset="http://kenji.blog/p/%E4%B8%8E%E8%AC%9D%E9%87%8E%E6%99%B6%E5%AD%90%E3%81%AB%E3%81%A4%E3%81%84%E3%81%A6/img_hub1fb50838efd9b9ec0f364c86e062d91_1677486_480x0_resize_box_3.png 480w, http://kenji.blog/p/%E4%B8%8E%E8%AC%9D%E9%87%8E%E6%99%B6%E5%AD%90%E3%81%AB%E3%81%A4%E3%81%84%E3%81%A6/img_hub1fb50838efd9b9ec0f364c86e062d91_1677486_1024x0_resize_box_3.png 1024w"
loading="lazy"
alt="img.png"
class="gallery-image"
data-flex-grow="100"
data-flex-basis="240px"
>&lt;/p>
&lt;h2 id="-resumo-do-perfil">🔹 Resumo do Perfil
&lt;/h2>&lt;p>Yosano Akiko (1878–1942) foi uma poeta, escritora e pensadora japonesa ativa do período Meiji ao início do período Showa. Ela é especialmente conhecida por seus apaixonados e singulares poemas tanka, e é uma figura que abriu novos horizontes para a independência das mulheres e para a expressão do amor na literatura japonesa moderna.&lt;/p>
&lt;ul>
&lt;li>
&lt;p>&lt;strong>Nome verdadeiro&lt;/strong> : Yosano (nome de solteira: Ho) Shō&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>Local de nascimento&lt;/strong> : Sakai (cidade de Sakai, prefeitura de Osaka)&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>Marido&lt;/strong> : Yosano Tekkan (poeta)&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>Período de atividade principal&lt;/strong> : Final do período Meiji até o início do período Showa&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>Características&lt;/strong> :&lt;/p>
&lt;ul>
&lt;li>Notável por seus tankas que expressavam francamente os sentimentos românticos das mulheres&lt;/li>
&lt;li>Possuía ideais feministas, promovendo a educação e a independência das mulheres&lt;/li>
&lt;li>Demonstrou uma postura pacifista, criticando a Guerra Russo-Japonesa&lt;/li>
&lt;li>Membro central da revista literária &amp;ldquo;Myōjō&amp;rdquo;&lt;/li>
&lt;/ul>
&lt;/li>
&lt;/ul>
&lt;hr>
&lt;h2 id="-principais-obras-sinopses-e-características">🔹 Principais Obras, Sinopses e Características
&lt;/h2>&lt;h3 id="1-midaregami-1901">1. &amp;ldquo;Midaregami&amp;rdquo; (1901)
&lt;/h3>&lt;ul>
&lt;li>&lt;strong>Visão geral&lt;/strong> : Sua primeira coleção de poemas. Publicada quando tinha pouco mais de 20 anos, causou grande impacto no mundo literário japonês.&lt;/li>
&lt;li>&lt;strong>Características&lt;/strong> : Expressou os sentimentos amorosos e desejos físicos de forma franca a partir da perspectiva feminina.&lt;/li>
&lt;li>&lt;strong>Poema famoso&lt;/strong> :&lt;/li>
&lt;/ul>
&lt;blockquote>
&lt;p>Yawa hada no
atsuki chishio ni fure mo mide
sabishikarazu ya michi o toku kimi&lt;/p>
&lt;/blockquote>
&lt;p>→ Tornou-se um tema muito discutido por expressar visões de amor, consideradas ousadas para a ética da época, nas palavras da própria mulher.&lt;/p>
&lt;hr>
&lt;h3 id="2-kimi-shinitamō-koto-nakare-1904">2. &amp;ldquo;Kimi Shinitamō Koto Nakare&amp;rdquo; (1904)
&lt;/h3>&lt;ul>
&lt;li>&lt;strong>Formato&lt;/strong> : Poesia (poesia de estilo livre, não tanka)&lt;/li>
&lt;li>&lt;strong>Conteúdo&lt;/strong> : Poema antiguerra dirigido a seu irmão mais novo que havia ido para a Guerra Russo-Japonesa.&lt;/li>
&lt;li>&lt;strong>Trecho&lt;/strong> :&lt;/li>
&lt;/ul>
&lt;blockquote>
&lt;p>Kimi shinitamō koto nakare
sue ni umareshi kimi nareba
hahaue namida shigeku shite
kimi no tamoto o shiboritsutsu&amp;hellip;&amp;hellip;&lt;/p>
&lt;/blockquote>
&lt;ul>
&lt;li>&lt;strong>Significado&lt;/strong> : Inovador por apelar contra a guerra do ponto de vista de uma mulher temendo a morte de seu irmão, em uma época em que a tendência de glorificar a guerra era forte.&lt;/li>
&lt;/ul>
&lt;hr>
&lt;h2 id="-influência-e-avaliação">🔹 Influência e Avaliação
&lt;/h2>&lt;ul>
&lt;li>Realizou atividades socialmente avançadas, como a libertação das mulheres, o pacifismo e a promoção da educação.&lt;/li>
&lt;li>Em seus últimos anos, dedicou-se à educação feminina e esteve envolvida na fundação de uma universidade para mulheres (como o Bunka Gakuin).&lt;/li>
&lt;li>Uma das mais importantes mulheres intelectuais e figuras literárias no Japão antes da guerra.&lt;/li>
&lt;/ul>
&lt;hr>
&lt;h2 id="-resumo">🔹 Resumo
&lt;/h2>&lt;table>
&lt;thead>
&lt;tr>
&lt;th>Item&lt;/th>
&lt;th>Conteúdo&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>Nome&lt;/td>
&lt;td>Yosano Akiko&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Áreas de atividade&lt;/td>
&lt;td>Tanka, poesia, crítica, educação&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Principais obras&lt;/td>
&lt;td>&amp;ldquo;Midaregami&amp;rdquo;, &amp;ldquo;Kimi Shinitamō Koto Nakare&amp;rdquo;&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Características&lt;/td>
&lt;td>Liberdade no amor, independência feminina, expressão de pacifismo&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Influência moderna&lt;/td>
&lt;td>Literatura feminista, inovação no tanka moderno, pioneira da poesia antiguerra&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;hr></description></item><item><title>Introdução ao Mathematica</title><link>http://kenji.blog/pt/p/mathematica%E5%85%A5%E9%96%80/</link><pubDate>Thu, 25 Jul 2024 01:36:19 +0900</pubDate><guid>http://kenji.blog/pt/p/mathematica%E5%85%A5%E9%96%80/</guid><description>&lt;img src="http://kenji.blog/p/mathematica%E5%85%A5%E9%96%80/img.png" alt="Featured image of post Introdução ao Mathematica" />&lt;h1 id="introdução-ao-mathematica">Introdução ao Mathematica
&lt;/h1>&lt;h2 id="resolver-equações">Resolver equações
&lt;/h2>&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">Solve[x^2 - 3 x + 2 == 0, x]
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>Saída&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">{{x -&amp;gt; 1}, {x -&amp;gt; 2}}
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h2 id="encontrar-raízes-de-equações-no-intervalo-de-inteiros">Encontrar raízes de equações no intervalo de inteiros
&lt;/h2>&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">Solve[x^2 - 3 x + 2 == 0 &amp;amp;&amp;amp; 0 &amp;lt;= x &amp;lt;= 2, x, Integers]
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>Saída&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">{{x -&amp;gt; 1}, {x -&amp;gt; 2}}
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h2 id="resolver-sistema-de-equações">Resolver sistema de equações
&lt;/h2>&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">Solve[{x + y == 3, x - y == 1}, {x, y}]
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>Saída&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">{{x -&amp;gt; 2, y -&amp;gt; 1}}
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h2 id="resolver-desigualdades">Resolver desigualdades
&lt;/h2>&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">Reduce[x^2 - 3 x + 2 &amp;gt; 0, x]
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>Saída&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">x &amp;lt; 1 || x &amp;gt; 2
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h2 id="derivar">Derivar
&lt;/h2>&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">D[x^2, x]
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>Saída&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">2 x
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h2 id="integrar">Integrar
&lt;/h2>&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">Integrate[x^2, x]
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>Saída&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">x^3/3
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h2 id="encontrar-limites">Encontrar limites
&lt;/h2>&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">Limit[1/x, x -&amp;gt; 0]
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>Saída&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">Infinity
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h2 id="encontrar-séries">Encontrar séries
&lt;/h2>&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">Sum[1/n^2, {n, 1, Infinity}]
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>Saída&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">π^2/6
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h2 id="criar-matriz">Criar matriz
&lt;/h2>&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">m = {{1, 2}, {3, 4}}
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h2 id="encontrar-produto-de-matrizes">Encontrar produto de matrizes
&lt;/h2>&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">m . m
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>Saída&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">{{7, 10}, {15, 22}}
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h2 id="encontrar-matriz-inversa">Encontrar matriz inversa
&lt;/h2>&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">Inverse[m]
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>Saída&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">{{-2, 1}, {1.5, -0.5}}
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h2 id="encontrar-autovalores-e-autovetores">Encontrar autovalores e autovetores
&lt;/h2>&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">Eigensystem[m]
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>Saída&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">{{5, 0}, {{1, 1}, {1, -1}}}
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h2 id="encontrar-produto-escalar-de-vetores">Encontrar produto escalar de vetores
&lt;/h2>&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">{1, 2} . {3, 4}
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>Saída&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">11
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h2 id="encontrar-produto-vetorial">Encontrar produto vetorial
&lt;/h2>&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">Cross[{1, 2, 3}, {4, 5, 6}]
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>Saída&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">{-3, 6, -3}
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h2 id="encontrar-magnitude-de-um-vetor">Encontrar magnitude de um vetor
&lt;/h2>&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">Norm[{1, 2, 3}]
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>Saída&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">√14
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h2 id="encontrar-o-ângulo-de-vetores">Encontrar o ângulo de vetores
&lt;/h2>&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">ArcCos[{1, 2} . {3, 4}/(Norm[{1, 2}] Norm[{3, 4}])]
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>Saída&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">ArcCos[11/(√5 √25)]
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h2 id="encontrar-projeção-de-vetor">Encontrar projeção de vetor
&lt;/h2>&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">{1, 2} . {3, 4}/Norm[{3, 4}] {3, 4}/Norm[{3, 4}]
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>Saída&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">{11/5, 22/5}
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h2 id="encontrar-rotação-de-vetor">Encontrar rotação de vetor
&lt;/h2>&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">RotationMatrix[π/2].{1, 0}
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>Saída&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">{0, 1}
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h2 id="encontrar-translação-de-vetor">Encontrar translação de vetor
&lt;/h2>&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">TranslationTransform[{1, 2}][{3, 4}]
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>Saída&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">{4, 6}
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h2 id="encontrar-escala-de-vetor">Encontrar escala de vetor
&lt;/h2>&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">ScalingTransform[{2, 3}][{1, 1}]
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>Saída&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">{2, 3}
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h2 id="encontrar-reflexão-de-vetor">Encontrar reflexão de vetor
&lt;/h2>&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">ReflectionTransform[{1, 1}][{1, 1}]
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>Saída&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">{0, 0}
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h2 id="gerar-números-aleatórios">Gerar números aleatórios
&lt;/h2>&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">RandomReal[]
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>Saída&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">0.123456
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h2 id="gerar-números-aleatórios-inteiros">Gerar números aleatórios (inteiros)
&lt;/h2>&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">RandomInteger[]
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>Saída&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">123456
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h2 id="gerar-números-aleatórios-com-intervalo">Gerar números aleatórios (com intervalo)
&lt;/h2>&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">RandomReal[{1, 10}]
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>Saída&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">5.6789
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h2 id="gerar-números-aleatórios-inteiros-com-intervalo">Gerar números aleatórios (inteiros, com intervalo)
&lt;/h2>&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">RandomInteger[{1, 10}]
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>Saída&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">5
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h2 id="gerar-números-aleatórios-com-distribuição">Gerar números aleatórios (com distribuição)
&lt;/h2>&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">RandomVariate[NormalDistribution[0, 1]]
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>Saída&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">0.123456
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h2 id="gerar-números-aleatórios-distribuição-quantidade">Gerar números aleatórios (distribuição, quantidade)
&lt;/h2>&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">RandomVariate[NormalDistribution[0, 1], 10]
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>Saída&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">{0.123456, 0.234567, ..., 0.987654}
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h2 id="gerar-números-aleatórios-distribuição-quantidade-semente">Gerar números aleatórios (distribuição, quantidade, semente)
&lt;/h2>&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">SeedRandom[12345]
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">RandomVariate[NormalDistribution[0, 1], 10]
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>Saída&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">{0.123456, 0.234567, ..., 0.987654}
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h2 id="aplicar-função-aos-elementos-do-array">Aplicar função aos elementos do array
&lt;/h2>&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">Map[Sqrt, {1, 4, 9}]
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">Sqrt /@ {1, 4, 9}
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">Map[#^(1/2)&amp;amp;, {1, 4, 9}]
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>Saída&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">{1, 2, 3}
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h2 id="definir-função-com-expressões-lambda">Definir função com expressões lambda
&lt;/h2>&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">f = Function[x, x^2]
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">f[3]
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>Saída&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">9
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h2 id="compor-funções">Compor funções
&lt;/h2>&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;span class="lnt">4
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">f = Function[x, x^2]
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">g = Function[x, x + 1]
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">h = Function[x, f[g[x]]]
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">h[3]
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>Saída&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">16
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h2 id="referenciar-o-resultado-do-cálculo-anterior">Referenciar o resultado do cálculo anterior
&lt;/h2>&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">% + 1
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>Saída&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">17
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h2 id="funções-puras">Funções puras
&lt;/h2>&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">(#+3)&amp;amp;[5]
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>Saída&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">8
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h2 id="extrair-arrays">Extrair arrays
&lt;/h2>&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">Select[{1, 2, 3, 4, 5}, EvenQ]
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">Select[{1, 2, 3, 4, 5}, Mod[#,2]==0&amp;amp;]
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>Saída&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">{2, 4}
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div></description></item><item><title>Lista de Comandos Hugo</title><link>http://kenji.blog/pt/p/hugo%E3%82%B3%E3%83%9E%E3%83%B3%E3%83%89%E4%B8%80%E8%A6%A7/</link><pubDate>Fri, 31 May 2024 01:36:00 +0900</pubDate><guid>http://kenji.blog/pt/p/hugo%E3%82%B3%E3%83%9E%E3%83%B3%E3%83%89%E4%B8%80%E8%A6%A7/</guid><description>&lt;img src="http://kenji.blog/p/hugo%E3%82%B3%E3%83%9E%E3%83%B3%E3%83%89%E4%B8%80%E8%A6%A7/img.png" alt="Featured image of post Lista de Comandos Hugo" />&lt;h1 id="o-que-é-o-hugo">O que é o Hugo
&lt;/h1>&lt;p>O Hugo é um dos geradores de sites estáticos. Você pode criar um site convertendo arquivos Markdown em HTML. O Hugo é escrito na linguagem Go e roda muito rápido.&lt;/p>
&lt;p>Este blog também é criado com o Hugo.&lt;/p>
&lt;h1 id="instalação-da-cli-do-hugo">Instalação da CLI do Hugo
&lt;/h1>&lt;p>Para instalar a CLI do Hugo, execute o comando abaixo.&lt;/p>
&lt;p>※ Exemplo para o caso do macOS. Para outros sistemas operacionais, consulte a documentação oficial.&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">brew install hugo
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>Você pode instalar usando o Homebrew.&lt;/p>
&lt;h1 id="lista-de-comandos-hugo">Lista de Comandos Hugo
&lt;/h1>&lt;p>O Hugo oferece vários comandos. Abaixo estão resumidos os comandos usados com mais frequência.&lt;/p>
&lt;h2 id="criar-um-novo-site">Criar um novo site
&lt;/h2>&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">hugo new site &amp;lt;nome-do-site&amp;gt;
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>Comando para criar um novo site. Em &lt;code>&amp;lt;nome-do-site&amp;gt;&lt;/code>, especifique o nome do site.&lt;/p>
&lt;h2 id="criar-um-novo-artigo">Criar um novo artigo
&lt;/h2>&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">hugo new &amp;lt;nome-do-artigo&amp;gt;.md
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>Comando para criar um novo artigo. Em &lt;code>&amp;lt;nome-do-artigo&amp;gt;&lt;/code>, especifique o nome do artigo.&lt;/p>
&lt;h2 id="iniciar-o-servidor">Iniciar o servidor
&lt;/h2>&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">hugo server
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>Comando para iniciar o servidor local. Pode ser acessado em &lt;code>http://localhost:1313&lt;/code>.&lt;/p>
&lt;h2 id="fazer-o-build">Fazer o build
&lt;/h2>&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">hugo
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>Comando para compilar o site. Arquivos HTML serão gerados no diretório &lt;code>public&lt;/code>.&lt;/p>
&lt;h2 id="fazer-o-deploy">Fazer o deploy
&lt;/h2>&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">hugo deploy
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>Comando para fazer o deploy do site. As configurações do destino de deploy são feitas no arquivo &lt;code>config.toml&lt;/code>.&lt;/p>
&lt;h2 id="exibir-a-lista-de-artigos">Exibir a lista de artigos
&lt;/h2>&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">hugo list all
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>Comando para exibir a lista de artigos.&lt;/p>
&lt;h2 id="verificar-configurações">Verificar configurações
&lt;/h2>&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">hugo config
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>Comando para verificar as configurações.&lt;/p>
&lt;h2 id="exibir-ajuda">Exibir ajuda
&lt;/h2>&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">hugo &lt;span class="nb">help&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>Comando para exibir a ajuda.&lt;/p>
&lt;h2 id="exibir-versão">Exibir versão
&lt;/h2>&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">hugo version
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>Comando para exibir a versão.&lt;/p>
&lt;p>Essa é a lista de comandos do Hugo. Como existem muitos outros comandos disponíveis, consulte a documentação oficial.&lt;/p>
&lt;h1 id="referência">Referência
&lt;/h1>&lt;ul>
&lt;li>&lt;a class="link" href="https://gohugo.io/documentation/" target="_blank" rel="noopener"
>Documentação Oficial do Hugo&lt;/a>&lt;/li>
&lt;/ul></description></item><item><title>Extensões Recomendadas para Visual Studio Code</title><link>http://kenji.blog/pt/p/visual-studio-code%E3%81%8A%E3%81%99%E3%81%99%E3%82%81%E6%8B%A1%E5%BC%B5%E6%A9%9F%E8%83%BD/</link><pubDate>Wed, 29 May 2024 17:20:19 +0900</pubDate><guid>http://kenji.blog/pt/p/visual-studio-code%E3%81%8A%E3%81%99%E3%81%99%E3%82%81%E6%8B%A1%E5%BC%B5%E6%A9%9F%E8%83%BD/</guid><description>&lt;img src="http://kenji.blog/p/visual-studio-code%E3%81%8A%E3%81%99%E3%81%99%E3%82%81%E6%8B%A1%E5%BC%B5%E6%A9%9F%E8%83%BD/img.png" alt="Featured image of post Extensões Recomendadas para Visual Studio Code" />&lt;h1 id="lista-de-extensões-recomendadas-para-visual-studio-code">Lista de Extensões Recomendadas para Visual Studio Code
&lt;/h1>&lt;table>
&lt;thead>
&lt;tr>
&lt;th>Categoria&lt;/th>
&lt;th>Nome&lt;/th>
&lt;th>Fornecedor&lt;/th>
&lt;th>Descrição&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>Gestão de Máquinas Virtuais e Contentores&lt;/td>
&lt;td>Remote Devlopment&lt;/td>
&lt;td>Microsoft&lt;/td>
&lt;td>Suporta desenvolvimento remoto ao conectar a contentores virtuais/WSL via SSH&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Gestão de Máquinas Virtuais e Contentores&lt;/td>
&lt;td>Docker&lt;/td>
&lt;td>Microsoft&lt;/td>
&lt;td>Suporta a gestão de contentores Docker&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Gestão de Código&lt;/td>
&lt;td>GitHub Pull Requests&lt;/td>
&lt;td>GitHub&lt;/td>
&lt;td>Gere os Pull Requests do GitHub no VSCode&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Gestão de Código&lt;/td>
&lt;td>GitHub Copilot&lt;/td>
&lt;td>GitHub&lt;/td>
&lt;td>Suporta a conclusão de código por IA&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Gestão de Código&lt;/td>
&lt;td>Git Graph&lt;/td>
&lt;td>mhutchie&lt;/td>
&lt;td>Exibe graficamente os ramos e commits do Git&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Gestão de Código&lt;/td>
&lt;td>Git History&lt;/td>
&lt;td>Don Jayamanne&lt;/td>
&lt;td>Exibe o histórico do Git&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Navegador e Desenvolvimento Web&lt;/td>
&lt;td>Debugger for Firefox&lt;/td>
&lt;td>Firefox DevTools&lt;/td>
&lt;td>Utiliza o depurador do Firefox no VSCode&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Navegador e Desenvolvimento Web&lt;/td>
&lt;td>Microsoft Edge Tool For VScode&lt;/td>
&lt;td>Microsoft&lt;/td>
&lt;td>Utiliza as ferramentas de desenvolvedor do Edge no VSCode&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Navegador e Desenvolvimento Web&lt;/td>
&lt;td>Vue Language Features(Volar)&lt;/td>
&lt;td>Vue&lt;/td>
&lt;td>Suporta as funcionalidades de linguagem do Vue&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Navegador e Desenvolvimento Web&lt;/td>
&lt;td>JavaScript (ES6) code snippets&lt;/td>
&lt;td>charalampos karypidis&lt;/td>
&lt;td>Fornece snippets de JavaScript&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Navegador e Desenvolvimento Web&lt;/td>
&lt;td>Tailwind CSS IntelliSense&lt;/td>
&lt;td>Tailwind Labs&lt;/td>
&lt;td>Fornece snippets de Tailwind CSS&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Desenvolvimento na Cloud&lt;/td>
&lt;td>AWS Toolkit&lt;/td>
&lt;td>Amazon Web Services&lt;/td>
&lt;td>Suporta o desenvolvimento na AWS&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Desenvolvimento na Cloud&lt;/td>
&lt;td>Azure Tools&lt;/td>
&lt;td>Microsoft&lt;/td>
&lt;td>Suporta o desenvolvimento no Azure&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Desenvolvimento na Cloud&lt;/td>
&lt;td>Google Cloud Tools&lt;/td>
&lt;td>Google Cloud&lt;/td>
&lt;td>Suporta o desenvolvimento no Google Cloud&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Base de Dados&lt;/td>
&lt;td>MySQL&lt;/td>
&lt;td>Jun Han&lt;/td>
&lt;td>Suporta o desenvolvimento em MySQL&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Base de Dados&lt;/td>
&lt;td>SQL Server(mssql)&lt;/td>
&lt;td>Microsoft&lt;/td>
&lt;td>Suporta o desenvolvimento em SQL Server&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Base de Dados&lt;/td>
&lt;td>PostgreSQL&lt;/td>
&lt;td>Chris Kolkman&lt;/td>
&lt;td>Suporta o desenvolvimento em PostgreSQL&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Sistemas Embutidos&lt;/td>
&lt;td>PlatformIO&lt;/td>
&lt;td>PlatformIO&lt;/td>
&lt;td>Suporta o desenvolvimento no PlatformIO&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Sistemas Embutidos&lt;/td>
&lt;td>Arduino&lt;/td>
&lt;td>Microsoft&lt;/td>
&lt;td>Suporta o desenvolvimento em Arduino&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Sistemas Embutidos&lt;/td>
&lt;td>WorkBench&lt;/td>
&lt;td>Particle&lt;/td>
&lt;td>Suporta desenvolvimento para IoT, incluindo o ambiente de desenvolvimento fornecido pela Particle, firmware, bibliotecas e integração cloud&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>C/C++&lt;/td>
&lt;td>C/C++ Extension Pack&lt;/td>
&lt;td>Microsoft&lt;/td>
&lt;td>Suporta o desenvolvimento em C/C++&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>C/C++&lt;/td>
&lt;td>C/C++ Runner&lt;/td>
&lt;td>franneck94&lt;/td>
&lt;td>Executa código C/C++ (suporta compiladores gcc, msvc e cuda nvcc)&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>C/C++&lt;/td>
&lt;td>Cortex-Debug&lt;/td>
&lt;td>marus25&lt;/td>
&lt;td>Suporta a depuração de microcontroladores Cortex-A/R/M&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Python&lt;/td>
&lt;td>Python Extension Pack&lt;/td>
&lt;td>Microsoft&lt;/td>
&lt;td>Suporta o desenvolvimento em Python&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Python&lt;/td>
&lt;td>jupyter&lt;/td>
&lt;td>Microsoft&lt;/td>
&lt;td>Suporta o desenvolvimento em Jupyter Notebook&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Utilitários e Extensões de UI&lt;/td>
&lt;td>Makrdown All in One&lt;/td>
&lt;td>Yu Zhang&lt;/td>
&lt;td>Suporta a escrita em Markdown&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Utilitários e Extensões de UI&lt;/td>
&lt;td>Hex Editor&lt;/td>
&lt;td>Microsoft&lt;/td>
&lt;td>Edita ficheiros binários&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Utilitários e Extensões de UI&lt;/td>
&lt;td>vscode-pdf&lt;/td>
&lt;td>tomoki1207&lt;/td>
&lt;td>Exibe ficheiros PDF&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Utilitários e Extensões de UI&lt;/td>
&lt;td>Rainbow CSV&lt;/td>
&lt;td>mechatroner&lt;/td>
&lt;td>Exibe ficheiros CSV de forma colorida&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Utilitários e Extensões de UI&lt;/td>
&lt;td>Draw.io Integration&lt;/td>
&lt;td>Henning Dieterichs&lt;/td>
&lt;td>Utiliza o Draw.io no VSCode&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Utilitários e Extensões de UI&lt;/td>
&lt;td>Japanese Language Pack for Visual Studio Code&lt;/td>
&lt;td>Microsoft&lt;/td>
&lt;td>Pacote de idioma Japonês&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Utilitários e Extensões de UI&lt;/td>
&lt;td>Live Share&lt;/td>
&lt;td>Microsoft&lt;/td>
&lt;td>Suporta colaboração em tempo real&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table></description></item><item><title>Experimentando o mermaid.js</title><link>http://kenji.blog/pt/p/mermaid.js%E3%82%92%E8%A9%A6%E3%81%97%E3%81%A6%E3%81%BF%E3%82%8B/</link><pubDate>Sat, 25 May 2024 02:18:09 +0900</pubDate><guid>http://kenji.blog/pt/p/mermaid.js%E3%82%92%E8%A9%A6%E3%81%97%E3%81%A6%E3%81%BF%E3%82%8B/</guid><description>&lt;img src="http://kenji.blog/p/mermaid.js%E3%82%92%E8%A9%A6%E3%81%97%E3%81%A6%E3%81%BF%E3%82%8B/img_2.png" alt="Featured image of post Experimentando o mermaid.js" />&lt;h2 id="o-que-é-o-mermaidjs">O que é o mermaid.js
&lt;/h2>&lt;p>mermaid.js é uma biblioteca JavaScript que permite exibir graficamente diagramas complexos, como fluxogramas, diagramas e gráficos de Gantt, escrevendo uma sintaxe original baseada em texto (sintaxe Mermaid).
Também é adotado em vários serviços como GitHub, Qiita e Notion. Desta vez, vamos tentar usar o mermaid.js no hugo.&lt;/p>
&lt;h2 id="habilitando-o-mermaidjs-no-hugo">Habilitando o mermaid.js no hugo
&lt;/h2>&lt;p>Os passos são os seguintes:&lt;/p>
&lt;ol>
&lt;li>Adicione o seguinte em layouts/partials/extend_footer.html.&lt;/li>
&lt;/ol>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt"> 1
&lt;/span>&lt;span class="lnt"> 2
&lt;/span>&lt;span class="lnt"> 3
&lt;/span>&lt;span class="lnt"> 4
&lt;/span>&lt;span class="lnt"> 5
&lt;/span>&lt;span class="lnt"> 6
&lt;/span>&lt;span class="lnt"> 7
&lt;/span>&lt;span class="lnt"> 8
&lt;/span>&lt;span class="lnt"> 9
&lt;/span>&lt;span class="lnt">10
&lt;/span>&lt;span class="lnt">11
&lt;/span>&lt;span class="lnt">12
&lt;/span>&lt;span class="lnt">13
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-html" data-lang="html">&lt;span class="line">&lt;span class="cl">{{ if or .Params.mermaid .Site.Params.mermaid }}
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">&amp;lt;&lt;/span>&lt;span class="nt">script&lt;/span> &lt;span class="na">src&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s">&amp;#34;https://cdn.jsdelivr.net/npm/mermaid@10.3.0/dist/mermaid.min.js&amp;#34;&lt;/span>&lt;span class="p">&amp;gt;&amp;lt;/&lt;/span>&lt;span class="nt">script&lt;/span>&lt;span class="p">&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">{{- $loadmermaid := resources.Get &amp;#34;js/load-mermaid.js&amp;#34; }}
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">&amp;lt;&lt;/span>&lt;span class="nt">script&lt;/span> &lt;span class="na">src&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s">&amp;#34;{{ $loadmermaid.RelPermalink }}&amp;#34;&lt;/span>&lt;span class="p">&amp;gt;&amp;lt;/&lt;/span>&lt;span class="nt">script&lt;/span>&lt;span class="p">&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">&amp;lt;&lt;/span>&lt;span class="nt">script&lt;/span>&lt;span class="p">&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nb">window&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="nx">initMermaid&lt;/span>&lt;span class="p">();&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">if&lt;/span> &lt;span class="p">(&lt;/span>&lt;span class="nx">isDarkTheme&lt;/span>&lt;span class="p">())&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nx">setPrefTheme&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s1">&amp;#39;dark&amp;#39;&lt;/span>&lt;span class="p">);&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">}&lt;/span> &lt;span class="k">else&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nx">setPrefTheme&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s1">&amp;#39;light&amp;#39;&lt;/span>&lt;span class="p">);&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">&amp;lt;/&lt;/span>&lt;span class="nt">script&lt;/span>&lt;span class="p">&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">{{ end }}
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>※ O &lt;code>mermaid.min.js&lt;/code> é carregado apenas quando &lt;code>mermaid: true&lt;/code> está definido na declaração if. Esta biblioteca tem cerca de 3MB e é surpreendentemente grande.&lt;/p>
&lt;ol start="3">
&lt;li>Crie assets/js/load-mermaid.js. Este processo é usado para inicializar e redesenhar dinamicamente quando o tema é alterado.&lt;/li>
&lt;/ol>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt"> 1
&lt;/span>&lt;span class="lnt"> 2
&lt;/span>&lt;span class="lnt"> 3
&lt;/span>&lt;span class="lnt"> 4
&lt;/span>&lt;span class="lnt"> 5
&lt;/span>&lt;span class="lnt"> 6
&lt;/span>&lt;span class="lnt"> 7
&lt;/span>&lt;span class="lnt"> 8
&lt;/span>&lt;span class="lnt"> 9
&lt;/span>&lt;span class="lnt">10
&lt;/span>&lt;span class="lnt">11
&lt;/span>&lt;span class="lnt">12
&lt;/span>&lt;span class="lnt">13
&lt;/span>&lt;span class="lnt">14
&lt;/span>&lt;span class="lnt">15
&lt;/span>&lt;span class="lnt">16
&lt;/span>&lt;span class="lnt">17
&lt;/span>&lt;span class="lnt">18
&lt;/span>&lt;span class="lnt">19
&lt;/span>&lt;span class="lnt">20
&lt;/span>&lt;span class="lnt">21
&lt;/span>&lt;span class="lnt">22
&lt;/span>&lt;span class="lnt">23
&lt;/span>&lt;span class="lnt">24
&lt;/span>&lt;span class="lnt">25
&lt;/span>&lt;span class="lnt">26
&lt;/span>&lt;span class="lnt">27
&lt;/span>&lt;span class="lnt">28
&lt;/span>&lt;span class="lnt">29
&lt;/span>&lt;span class="lnt">30
&lt;/span>&lt;span class="lnt">31
&lt;/span>&lt;span class="lnt">32
&lt;/span>&lt;span class="lnt">33
&lt;/span>&lt;span class="lnt">34
&lt;/span>&lt;span class="lnt">35
&lt;/span>&lt;span class="lnt">36
&lt;/span>&lt;span class="lnt">37
&lt;/span>&lt;span class="lnt">38
&lt;/span>&lt;span class="lnt">39
&lt;/span>&lt;span class="lnt">40
&lt;/span>&lt;span class="lnt">41
&lt;/span>&lt;span class="lnt">42
&lt;/span>&lt;span class="lnt">43
&lt;/span>&lt;span class="lnt">44
&lt;/span>&lt;span class="lnt">45
&lt;/span>&lt;span class="lnt">46
&lt;/span>&lt;span class="lnt">47
&lt;/span>&lt;span class="lnt">48
&lt;/span>&lt;span class="lnt">49
&lt;/span>&lt;span class="lnt">50
&lt;/span>&lt;span class="lnt">51
&lt;/span>&lt;span class="lnt">52
&lt;/span>&lt;span class="lnt">53
&lt;/span>&lt;span class="lnt">54
&lt;/span>&lt;span class="lnt">55
&lt;/span>&lt;span class="lnt">56
&lt;/span>&lt;span class="lnt">57
&lt;/span>&lt;span class="lnt">58
&lt;/span>&lt;span class="lnt">59
&lt;/span>&lt;span class="lnt">60
&lt;/span>&lt;span class="lnt">61
&lt;/span>&lt;span class="lnt">62
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-javascript" data-lang="javascript">&lt;span class="line">&lt;span class="cl">&lt;span class="p">(&lt;/span>&lt;span class="kd">function&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="nb">window&lt;/span>&lt;span class="p">){&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s1">&amp;#39;use strict&amp;#39;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="kr">const&lt;/span> &lt;span class="nx">elementCode&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="s1">&amp;#39;.mermaid&amp;#39;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="kr">const&lt;/span> &lt;span class="nx">loadMermaid&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="kd">function&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="nx">theme&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nb">window&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="nx">mermaid&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="nx">initialize&lt;/span>&lt;span class="p">({&lt;/span>&lt;span class="nx">theme&lt;/span>&lt;span class="p">})&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nb">window&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="nx">mermaid&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="nx">init&lt;/span>&lt;span class="p">({&lt;/span>&lt;span class="nx">theme&lt;/span>&lt;span class="p">},&lt;/span> &lt;span class="nb">document&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="nx">querySelectorAll&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="nx">elementCode&lt;/span>&lt;span class="p">))&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="kr">const&lt;/span> &lt;span class="nx">saveOriginalData&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="kd">function&lt;/span>&lt;span class="p">(){&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">return&lt;/span> &lt;span class="k">new&lt;/span> &lt;span class="nb">Promise&lt;/span>&lt;span class="p">((&lt;/span>&lt;span class="nx">resolve&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="nx">reject&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="p">=&amp;gt;&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">try&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="kd">var&lt;/span> &lt;span class="nx">els&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="nb">document&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="nx">querySelectorAll&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="nx">elementCode&lt;/span>&lt;span class="p">),&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nx">count&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="nx">els&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="nx">length&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nx">els&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="nx">forEach&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="nx">element&lt;/span> &lt;span class="p">=&amp;gt;&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nx">element&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="nx">setAttribute&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s1">&amp;#39;data-original-code&amp;#39;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="nx">element&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="nx">innerHTML&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nx">count&lt;/span>&lt;span class="o">--&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">if&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="nx">count&lt;/span> &lt;span class="o">==&lt;/span> &lt;span class="mi">0&lt;/span>&lt;span class="p">){&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nx">resolve&lt;/span>&lt;span class="p">()&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">});&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">}&lt;/span> &lt;span class="k">catch&lt;/span> &lt;span class="p">(&lt;/span>&lt;span class="nx">error&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nx">reject&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="nx">error&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">})&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="kr">const&lt;/span> &lt;span class="nx">resetProcessed&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="kd">function&lt;/span>&lt;span class="p">(){&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">return&lt;/span> &lt;span class="k">new&lt;/span> &lt;span class="nb">Promise&lt;/span>&lt;span class="p">((&lt;/span>&lt;span class="nx">resolve&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="nx">reject&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="p">=&amp;gt;&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">try&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="kd">var&lt;/span> &lt;span class="nx">els&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="nb">document&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="nx">querySelectorAll&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="nx">elementCode&lt;/span>&lt;span class="p">),&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nx">count&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="nx">els&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="nx">length&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nx">els&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="nx">forEach&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="nx">element&lt;/span> &lt;span class="p">=&amp;gt;&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">if&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="nx">element&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="nx">getAttribute&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s1">&amp;#39;data-original-code&amp;#39;&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="o">!=&lt;/span> &lt;span class="kc">null&lt;/span>&lt;span class="p">){&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nx">element&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="nx">removeAttribute&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s1">&amp;#39;data-processed&amp;#39;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nx">element&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="nx">innerHTML&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="nx">element&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="nx">getAttribute&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s1">&amp;#39;data-original-code&amp;#39;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nx">count&lt;/span>&lt;span class="o">--&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">if&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="nx">count&lt;/span> &lt;span class="o">==&lt;/span> &lt;span class="mi">0&lt;/span>&lt;span class="p">){&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nx">resolve&lt;/span>&lt;span class="p">()&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">});&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">}&lt;/span> &lt;span class="k">catch&lt;/span> &lt;span class="p">(&lt;/span>&lt;span class="nx">error&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nx">reject&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="nx">error&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">})&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="kr">const&lt;/span> &lt;span class="nx">init&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="p">()=&amp;gt;{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nx">saveOriginalData&lt;/span>&lt;span class="p">()&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">.&lt;/span>&lt;span class="k">catch&lt;/span>&lt;span class="p">(&lt;/span> &lt;span class="nx">console&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="nx">error&lt;/span> &lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nb">document&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="nx">body&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="nx">addEventListener&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s1">&amp;#39;dark-theme-set&amp;#39;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="p">()=&amp;gt;{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nx">resetProcessed&lt;/span>&lt;span class="p">()&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">.&lt;/span>&lt;span class="nx">then&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="nx">loadMermaid&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s1">&amp;#39;dark&amp;#39;&lt;/span>&lt;span class="p">))&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">.&lt;/span>&lt;span class="k">catch&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="nx">console&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="nx">error&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">})&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nb">document&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="nx">body&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="nx">addEventListener&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s1">&amp;#39;light-theme-set&amp;#39;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="p">()=&amp;gt;{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nx">resetProcessed&lt;/span>&lt;span class="p">()&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">.&lt;/span>&lt;span class="nx">then&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="nx">loadMermaid&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s1">&amp;#39;default&amp;#39;&lt;/span>&lt;span class="p">))&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">.&lt;/span>&lt;span class="k">catch&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="nx">console&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="nx">error&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">})&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nb">window&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="nx">initMermaid&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="nx">init&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">})(&lt;/span>&lt;span class="nb">window&lt;/span>&lt;span class="p">);&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>O código base para isso foi referenciado a partir do seguinte:&lt;/p>
&lt;ul>
&lt;li>&lt;a class="link" href="https://github.com/mermaid-js/mermaid/issues/1945" target="_blank" rel="noopener"
>Reinitialize with new theme #1945&lt;/a>&lt;/li>
&lt;/ul>
&lt;ol start="3">
&lt;li>Modifique o processo ao alterar temas no header.html&lt;/li>
&lt;/ol>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt"> 1
&lt;/span>&lt;span class="lnt"> 2
&lt;/span>&lt;span class="lnt"> 3
&lt;/span>&lt;span class="lnt"> 4
&lt;/span>&lt;span class="lnt"> 5
&lt;/span>&lt;span class="lnt"> 6
&lt;/span>&lt;span class="lnt"> 7
&lt;/span>&lt;span class="lnt"> 8
&lt;/span>&lt;span class="lnt"> 9
&lt;/span>&lt;span class="lnt">10
&lt;/span>&lt;span class="lnt">11
&lt;/span>&lt;span class="lnt">12
&lt;/span>&lt;span class="lnt">13
&lt;/span>&lt;span class="lnt">14
&lt;/span>&lt;span class="lnt">15
&lt;/span>&lt;span class="lnt">16
&lt;/span>&lt;span class="lnt">17
&lt;/span>&lt;span class="lnt">18
&lt;/span>&lt;span class="lnt">19
&lt;/span>&lt;span class="lnt">20
&lt;/span>&lt;span class="lnt">21
&lt;/span>&lt;span class="lnt">22
&lt;/span>&lt;span class="lnt">23
&lt;/span>&lt;span class="lnt">24
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-javascript" data-lang="javascript">&lt;span class="line">&lt;span class="cl">&lt;span class="kd">function&lt;/span> &lt;span class="nx">switchTheme&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="nx">theme&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">switch&lt;/span> &lt;span class="p">(&lt;/span>&lt;span class="nx">theme&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">case&lt;/span> &lt;span class="s1">&amp;#39;light&amp;#39;&lt;/span>&lt;span class="o">:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">{{&lt;/span> &lt;span class="k">if&lt;/span> &lt;span class="nx">or&lt;/span> &lt;span class="p">.&lt;/span>&lt;span class="nx">Params&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="nx">mermaid&lt;/span> &lt;span class="p">.&lt;/span>&lt;span class="nx">Site&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="nx">Params&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="nx">mermaid&lt;/span> &lt;span class="p">}}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nb">document&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="nx">body&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="nx">dispatchEvent&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="k">new&lt;/span> &lt;span class="nx">CustomEvent&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s1">&amp;#39;light-theme-set&amp;#39;&lt;/span>&lt;span class="p">));&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">{{&lt;/span> &lt;span class="nx">end&lt;/span> &lt;span class="p">}}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nb">document&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="nx">body&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="nx">classList&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="nx">remove&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s1">&amp;#39;dark&amp;#39;&lt;/span>&lt;span class="p">);&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">break&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">case&lt;/span> &lt;span class="s1">&amp;#39;dark&amp;#39;&lt;/span>&lt;span class="o">:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">{{&lt;/span> &lt;span class="k">if&lt;/span> &lt;span class="nx">or&lt;/span> &lt;span class="p">.&lt;/span>&lt;span class="nx">Params&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="nx">mermaid&lt;/span> &lt;span class="p">.&lt;/span>&lt;span class="nx">Site&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="nx">Params&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="nx">mermaid&lt;/span> &lt;span class="p">}}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nb">document&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="nx">body&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="nx">dispatchEvent&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="k">new&lt;/span> &lt;span class="nx">CustomEvent&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s1">&amp;#39;dark-theme-set&amp;#39;&lt;/span>&lt;span class="p">));&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">{{&lt;/span> &lt;span class="nx">end&lt;/span> &lt;span class="p">}}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nb">document&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="nx">body&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="nx">classList&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="nx">add&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s1">&amp;#39;dark&amp;#39;&lt;/span>&lt;span class="p">);&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">break&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1">// auto
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">&lt;/span> &lt;span class="k">default&lt;/span>&lt;span class="o">:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">if&lt;/span> &lt;span class="p">(&lt;/span>&lt;span class="nb">window&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="nx">matchMedia&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s1">&amp;#39;(prefers-color-scheme: dark)&amp;#39;&lt;/span>&lt;span class="p">).&lt;/span>&lt;span class="nx">matches&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">{{&lt;/span> &lt;span class="k">if&lt;/span> &lt;span class="nx">or&lt;/span> &lt;span class="p">.&lt;/span>&lt;span class="nx">Params&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="nx">mermaid&lt;/span> &lt;span class="p">.&lt;/span>&lt;span class="nx">Site&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="nx">Params&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="nx">mermaid&lt;/span> &lt;span class="p">}}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nb">document&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="nx">body&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="nx">dispatchEvent&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="k">new&lt;/span> &lt;span class="nx">CustomEvent&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s1">&amp;#39;dark-theme-set&amp;#39;&lt;/span>&lt;span class="p">));&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">{{&lt;/span> &lt;span class="nx">end&lt;/span> &lt;span class="p">}}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nb">document&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="nx">body&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="nx">classList&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="nx">add&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s1">&amp;#39;dark&amp;#39;&lt;/span>&lt;span class="p">);&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;ol start="4">
&lt;li>Crie layouts/shortcodes/mermaid.html&lt;/li>
&lt;/ol>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-html" data-lang="html">&lt;span class="line">&lt;span class="cl">&lt;span class="p">&amp;lt;&lt;/span>&lt;span class="nt">div&lt;/span> &lt;span class="na">class&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s">&amp;#34;mermaid&amp;#34;&lt;/span> &lt;span class="na">align&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s">&amp;#34;{{ if .Get &amp;#34;&lt;/span>&lt;span class="na">align&lt;/span>&lt;span class="err">&amp;#34;&lt;/span> &lt;span class="err">}}{{&lt;/span> &lt;span class="err">.&lt;/span>&lt;span class="na">Get&lt;/span> &lt;span class="err">&amp;#34;&lt;/span>&lt;span class="na">align&lt;/span>&lt;span class="err">&amp;#34;&lt;/span> &lt;span class="err">}}{{&lt;/span> &lt;span class="na">else&lt;/span> &lt;span class="err">}}&lt;/span>&lt;span class="na">center&lt;/span>&lt;span class="err">{{&lt;/span> &lt;span class="na">end&lt;/span> &lt;span class="err">}}&amp;#34;&lt;/span>&lt;span class="p">&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> {{ safeHTML .Inner }}
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">&amp;lt;/&lt;/span>&lt;span class="nt">div&lt;/span>&lt;span class="p">&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>Com os passos acima, a preparação para usar o mermaid.js está completa.&lt;/p>
&lt;h2 id="tentando-o-mermaidjs">Tentando o mermaid.js
&lt;/h2>&lt;ol>
&lt;li>Adicione o seguinte à definição do artigo&lt;/li>
&lt;/ol>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-dtd" data-lang="dtd">&lt;span class="line">&lt;span class="cl">&lt;span class="err">marmaid:&lt;/span> &lt;span class="err">true&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;ol start="2">
&lt;li>Adicione o seguinte ao corpo do artigo&lt;/li>
&lt;/ol>
&lt;p>&lt;strong>Fluxograma&lt;/strong>&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;span class="lnt">4
&lt;/span>&lt;span class="lnt">5
&lt;/span>&lt;span class="lnt">6
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-markdown" data-lang="markdown">&lt;span class="line">&lt;span class="cl">{{&lt;span class="p">&amp;lt;&lt;/span>&lt;span class="nt">mermaid&lt;/span> &lt;span class="na">align&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s">&amp;#34;center&amp;#34;&lt;/span>&lt;span class="p">&amp;gt;&lt;/span>}}
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">graph TD
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> A[Início] --&amp;gt;|Condição 1| B(Condição 2)
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> B --&amp;gt; C{Condição 3}
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> C --&amp;gt;|Condição 4| D[Fim]
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">{{&lt;span class="p">&amp;lt;/&lt;/span>&lt;span class="nt">mermaid&lt;/span>&lt;span class="p">&amp;gt;&lt;/span>}}
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>&lt;strong>Resultado da saída&lt;/strong>&lt;/p>
&lt;div class="mermaid" align="center">
graph TD
A[Início] -->|Condição 1| B(Condição 2)
B --> C{Condição 3}
C -->|Condição 4| D[Fim]
&lt;/div>
&lt;p>&lt;strong>Gráfico de Gantt&lt;/strong>&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt"> 1
&lt;/span>&lt;span class="lnt"> 2
&lt;/span>&lt;span class="lnt"> 3
&lt;/span>&lt;span class="lnt"> 4
&lt;/span>&lt;span class="lnt"> 5
&lt;/span>&lt;span class="lnt"> 6
&lt;/span>&lt;span class="lnt"> 7
&lt;/span>&lt;span class="lnt"> 8
&lt;/span>&lt;span class="lnt"> 9
&lt;/span>&lt;span class="lnt">10
&lt;/span>&lt;span class="lnt">11
&lt;/span>&lt;span class="lnt">12
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-markdown" data-lang="markdown">&lt;span class="line">&lt;span class="cl">{{&lt;span class="p">&amp;lt;&lt;/span>&lt;span class="nt">mermaid&lt;/span> &lt;span class="na">align&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s">&amp;#34;center&amp;#34;&lt;/span>&lt;span class="p">&amp;gt;&lt;/span>}}
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">gantt
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> section Project
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> Definição de Requisitos :done, a, 2024-05-25, 5d
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> Design Básico :done, b, after a, 5d
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> Design Detalhado :done, c, after b, 5d
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> Fabricação :active, d, after c, 10d
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> Teste Unitário :crit, e, after d, 5d
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> Teste de Integração : f, after e, 5d
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> Teste de Sistema : g, after f, 5d
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> Lançamento :milestone, h, after g, 1d
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">{{&lt;span class="p">&amp;lt;/&lt;/span>&lt;span class="nt">mermaid&lt;/span>&lt;span class="p">&amp;gt;&lt;/span>}}
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>&lt;strong>Resultado da saída&lt;/strong>&lt;/p>
&lt;div class="mermaid" align="center">
gantt
section Project
Definição de Requisitos :done, a, 2024-05-25, 5d
Design Básico :done, b, after a, 5d
Design Detalhado :done, c, after b, 5d
Fabricação :active, d, after c, 10d
Teste Unitário :crit, e, after d, 5d
Teste de Integração : f, after e, 5d
Teste de Sistema : g, after f, 5d
Lançamento :milestone, h, after g, 1d
&lt;/div>
&lt;p>&lt;strong>Diagrama de Sequência&lt;/strong>&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt"> 1
&lt;/span>&lt;span class="lnt"> 2
&lt;/span>&lt;span class="lnt"> 3
&lt;/span>&lt;span class="lnt"> 4
&lt;/span>&lt;span class="lnt"> 5
&lt;/span>&lt;span class="lnt"> 6
&lt;/span>&lt;span class="lnt"> 7
&lt;/span>&lt;span class="lnt"> 8
&lt;/span>&lt;span class="lnt"> 9
&lt;/span>&lt;span class="lnt">10
&lt;/span>&lt;span class="lnt">11
&lt;/span>&lt;span class="lnt">12
&lt;/span>&lt;span class="lnt">13
&lt;/span>&lt;span class="lnt">14
&lt;/span>&lt;span class="lnt">15
&lt;/span>&lt;span class="lnt">16
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-markdown" data-lang="markdown">&lt;span class="line">&lt;span class="cl">{{&lt;span class="p">&amp;lt;&lt;/span>&lt;span class="nt">mermaid&lt;/span> &lt;span class="na">align&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s">&amp;#34;center&amp;#34;&lt;/span>&lt;span class="p">&amp;gt;&lt;/span>}}
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">sequenceDiagram
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> participant user
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> participant view
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> participant controller
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> participant model
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> participant database
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> user-&amp;gt;&amp;gt;view: Inserir ID/PW
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> view-&amp;gt;&amp;gt;controller: Solicitação de autenticação
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> controller-&amp;gt;&amp;gt;model: Solicitação de autenticação
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> model-&amp;gt;&amp;gt;database: Solicitação de autenticação
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> database--&amp;gt;&amp;gt;model: Retornar resultado da autenticação
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> model--&amp;gt;&amp;gt;controller: Retornar resultado da autenticação
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> controller--&amp;gt;&amp;gt;view: Retornar resultado da autenticação
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> view--&amp;gt;&amp;gt;user: Exibir resultado da autenticação
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">{{&lt;span class="p">&amp;lt;/&lt;/span>&lt;span class="nt">mermaid&lt;/span>&lt;span class="p">&amp;gt;&lt;/span>}}
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>&lt;strong>Resultado da saída&lt;/strong>&lt;/p>
&lt;div class="mermaid" align="center">
sequenceDiagram
participant user
participant view
participant controller
participant model
participant database
user->>view: Inserir ID/PW
view->>controller: consulta ajax
controller->>model: Solicitação de autenticação
model->>database: Emissão de SQL
database-->>model: Retornar resultado SQL
model-->>controller: Retornar resultado da solicitação
controller-->>view: Retornar resultado da consulta ajax
view-->>user: Exibir resultado da autenticação
&lt;/div>
&lt;p>Isso é tudo.&lt;/p>
&lt;h3 id="referências">Referências
&lt;/h3>&lt;ul>
&lt;li>&lt;a class="link" href="https://mermaid.js.org/#/" target="_blank" rel="noopener"
>Site oficial do mermaid.js&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="https://mermaid.live/" target="_blank" rel="noopener"
>Site de demonstração onde você pode visualizar a sintaxe Mermaid&lt;/a>&lt;/li>
&lt;/ul></description></item><item><title>Como desfazer um git reset</title><link>http://kenji.blog/pt/p/como-desfazer-git-reset/</link><pubDate>Wed, 15 May 2024 23:32:43 +0900</pubDate><guid>http://kenji.blog/pt/p/como-desfazer-git-reset/</guid><description>&lt;img src="http://kenji.blog/p/git-reset%E3%82%92%E5%8F%96%E3%82%8A%E6%B6%88%E3%81%99%E6%96%B9%E6%B3%95/img.png" alt="Featured image of post Como desfazer um git reset" />&lt;h1 id="como-desfazer-um-git-reset">Como desfazer um git reset
&lt;/h1>&lt;p>Após realizar um git commit, se você executar acidentalmente um git reset, veja como desfazer o git reset (como restaurar o estado do git commit).&lt;/p>
&lt;ol>
&lt;li>Verifique o ID do commit antes do reset com &lt;code>git reflog&lt;/code>&lt;/li>
&lt;li>Volte para o estado antes do reset com &lt;code>git reset --hard HEAD@{número}&lt;/code>&lt;/li>
&lt;/ol>
&lt;p>Isso é tudo sobre como desfazer um git reset.&lt;/p></description></item><item><title>Abertura do código-fonte do MS-DOS 4.0</title><link>http://kenji.blog/pt/p/ms-dos-4.0-%E3%81%AE%E3%82%AA%E3%83%BC%E3%83%97%E3%83%B3%E3%82%BD%E3%83%BC%E3%82%B9%E5%8C%96/</link><pubDate>Sun, 05 May 2024 16:44:28 +0900</pubDate><guid>http://kenji.blog/pt/p/ms-dos-4.0-%E3%81%AE%E3%82%AA%E3%83%BC%E3%83%97%E3%83%B3%E3%82%BD%E3%83%BC%E3%82%B9%E5%8C%96/</guid><description>&lt;img src="http://kenji.blog/p/ms-dos-4.0-%E3%81%AE%E3%82%AA%E3%83%BC%E3%83%97%E3%83%B3%E3%82%BD%E3%83%BC%E3%82%B9%E5%8C%96/img.png" alt="Featured image of post Abertura do código-fonte do MS-DOS 4.0" />&lt;h2 id="abertura-do-código-fonte-do-ms-dos-40">Abertura do código-fonte do MS-DOS 4.0
&lt;/h2>&lt;p>A Microsoft lançou o código fonte do MS-DOS 4.0, lançado há quase 40 anos.
É escrito quase inteiramente em código de montagem 8086.&lt;/p>
&lt;h2 id="repositório-no-github">Repositório no GitHub
&lt;/h2>&lt;p>&lt;a class="link" href="https://github.com/microsoft/MS-DOS" target="_blank" rel="noopener"
>https://github.com/microsoft/MS-DOS&lt;/a>&lt;/p>
&lt;h2 id="site-de-referência">Site de Referência
&lt;/h2>&lt;ul>
&lt;li>&lt;a class="link" href="https://cloudblogs.microsoft.com/opensource/2024/04/25/open-sourcing-ms-dos-4-0/" target="_blank" rel="noopener"
>Open Sourcing MS-DOS 4.0&lt;/a>&lt;/li>
&lt;/ul></description></item><item><title>Livros recomendados para engenheiros iniciantes</title><link>http://kenji.blog/pt/p/livros-recomendados-para-engenheiros-iniciantes/</link><pubDate>Sun, 05 May 2024 16:03:33 +0900</pubDate><guid>http://kenji.blog/pt/p/livros-recomendados-para-engenheiros-iniciantes/</guid><description>&lt;img src="http://kenji.blog/p/%E3%82%A8%E3%83%B3%E3%82%B8%E3%83%8B%E3%82%A2%E5%88%9D%E5%AD%A6%E8%80%85%E3%81%AB%E3%81%8A%E3%81%99%E3%81%99%E3%82%81%E3%81%AE%E6%9B%B8%E7%B1%8D/img.png" alt="Featured image of post Livros recomendados para engenheiros iniciantes" />&lt;ol>
&lt;li>Código Legível
&lt;img src="http://kenji.blog/p/%E3%82%A8%E3%83%B3%E3%82%B8%E3%83%8B%E3%82%A2%E5%88%9D%E5%AD%A6%E8%80%85%E3%81%AB%E3%81%8A%E3%81%99%E3%81%99%E3%82%81%E3%81%AE%E6%9B%B8%E7%B1%8D/img_15.png"
width="1057"
height="1500"
srcset="http://kenji.blog/p/%E3%82%A8%E3%83%B3%E3%82%B8%E3%83%8B%E3%82%A2%E5%88%9D%E5%AD%A6%E8%80%85%E3%81%AB%E3%81%8A%E3%81%99%E3%81%99%E3%82%81%E3%81%AE%E6%9B%B8%E7%B1%8D/img_15_huc95b138ee3dcf3e01c804919bb0a2951_1439618_480x0_resize_box_3.png 480w, http://kenji.blog/p/%E3%82%A8%E3%83%B3%E3%82%B8%E3%83%8B%E3%82%A2%E5%88%9D%E5%AD%A6%E8%80%85%E3%81%AB%E3%81%8A%E3%81%99%E3%81%99%E3%82%81%E3%81%AE%E6%9B%B8%E7%B1%8D/img_15_huc95b138ee3dcf3e01c804919bb0a2951_1439618_1024x0_resize_box_3.png 1024w"
loading="lazy"
alt="img_15.png"
class="gallery-image"
data-flex-grow="70"
data-flex-basis="169px"
>&lt;/li>
&lt;li>Princípios de Programação
&lt;img src="http://kenji.blog/p/%E3%82%A8%E3%83%B3%E3%82%B8%E3%83%8B%E3%82%A2%E5%88%9D%E5%AD%A6%E8%80%85%E3%81%AB%E3%81%8A%E3%81%99%E3%81%99%E3%82%81%E3%81%AE%E6%9B%B8%E7%B1%8D/img_14.png"
width="1057"
height="1500"
srcset="http://kenji.blog/p/%E3%82%A8%E3%83%B3%E3%82%B8%E3%83%8B%E3%82%A2%E5%88%9D%E5%AD%A6%E8%80%85%E3%81%AB%E3%81%8A%E3%81%99%E3%81%99%E3%82%81%E3%81%AE%E6%9B%B8%E7%B1%8D/img_14_hu2ef10bf97b3341f50f5ce872bb9819ce_858111_480x0_resize_box_3.png 480w, http://kenji.blog/p/%E3%82%A8%E3%83%B3%E3%82%B8%E3%83%8B%E3%82%A2%E5%88%9D%E5%AD%A6%E8%80%85%E3%81%AB%E3%81%8A%E3%81%99%E3%81%99%E3%82%81%E3%81%AE%E6%9B%B8%E7%B1%8D/img_14_hu2ef10bf97b3341f50f5ce872bb9819ce_858111_1024x0_resize_box_3.png 1024w"
loading="lazy"
alt="img_14.png"
class="gallery-image"
data-flex-grow="70"
data-flex-basis="169px"
>&lt;/li>
&lt;li>O Programador Pragmático
&lt;img src="http://kenji.blog/p/%E3%82%A8%E3%83%B3%E3%82%B8%E3%83%8B%E3%82%A2%E5%88%9D%E5%AD%A6%E8%80%85%E3%81%AB%E3%81%8A%E3%81%99%E3%81%99%E3%82%81%E3%81%AE%E6%9B%B8%E7%B1%8D/img_13.png"
width="1057"
height="1500"
srcset="http://kenji.blog/p/%E3%82%A8%E3%83%B3%E3%82%B8%E3%83%8B%E3%82%A2%E5%88%9D%E5%AD%A6%E8%80%85%E3%81%AB%E3%81%8A%E3%81%99%E3%81%99%E3%82%81%E3%81%AE%E6%9B%B8%E7%B1%8D/img_13_hued43a825a7cef0e2f2f134925c5c929d_2826767_480x0_resize_box_3.png 480w, http://kenji.blog/p/%E3%82%A8%E3%83%B3%E3%82%B8%E3%83%8B%E3%82%A2%E5%88%9D%E5%AD%A6%E8%80%85%E3%81%AB%E3%81%8A%E3%81%99%E3%81%99%E3%82%81%E3%81%AE%E6%9B%B8%E7%B1%8D/img_13_hued43a825a7cef0e2f2f134925c5c929d_2826767_1024x0_resize_box_3.png 1024w"
loading="lazy"
alt="img_13.png"
class="gallery-image"
data-flex-grow="70"
data-flex-basis="169px"
>&lt;/li>
&lt;li>Tecnologias que Suportam a Web
&lt;img src="http://kenji.blog/p/%E3%82%A8%E3%83%B3%E3%82%B8%E3%83%8B%E3%82%A2%E5%88%9D%E5%AD%A6%E8%80%85%E3%81%AB%E3%81%8A%E3%81%99%E3%81%99%E3%82%81%E3%81%AE%E6%9B%B8%E7%B1%8D/img_12.png"
width="706"
height="1000"
srcset="http://kenji.blog/p/%E3%82%A8%E3%83%B3%E3%82%B8%E3%83%8B%E3%82%A2%E5%88%9D%E5%AD%A6%E8%80%85%E3%81%AB%E3%81%8A%E3%81%99%E3%81%99%E3%82%81%E3%81%AE%E6%9B%B8%E7%B1%8D/img_12_hu38f3f9fa330cdace274fc1d65dae56ad_542421_480x0_resize_box_3.png 480w, http://kenji.blog/p/%E3%82%A8%E3%83%B3%E3%82%B8%E3%83%8B%E3%82%A2%E5%88%9D%E5%AD%A6%E8%80%85%E3%81%AB%E3%81%8A%E3%81%99%E3%81%99%E3%82%81%E3%81%AE%E6%9B%B8%E7%B1%8D/img_12_hu38f3f9fa330cdace274fc1d65dae56ad_542421_1024x0_resize_box_3.png 1024w"
loading="lazy"
alt="img_12.png"
class="gallery-image"
data-flex-grow="70"
data-flex-basis="169px"
>&lt;/li>
&lt;li>Como Construir Aplicações Web Seguras
&lt;img src="http://kenji.blog/p/%E3%82%A8%E3%83%B3%E3%82%B8%E3%83%8B%E3%82%A2%E5%88%9D%E5%AD%A6%E8%80%85%E3%81%AB%E3%81%8A%E3%81%99%E3%81%99%E3%82%81%E3%81%AE%E6%9B%B8%E7%B1%8D/img_11.png"
width="930"
height="1184"
srcset="http://kenji.blog/p/%E3%82%A8%E3%83%B3%E3%82%B8%E3%83%8B%E3%82%A2%E5%88%9D%E5%AD%A6%E8%80%85%E3%81%AB%E3%81%8A%E3%81%99%E3%81%99%E3%82%81%E3%81%AE%E6%9B%B8%E7%B1%8D/img_11_hu261da33dc4cf509479817847be63b78a_1062282_480x0_resize_box_3.png 480w, http://kenji.blog/p/%E3%82%A8%E3%83%B3%E3%82%B8%E3%83%8B%E3%82%A2%E5%88%9D%E5%AD%A6%E8%80%85%E3%81%AB%E3%81%8A%E3%81%99%E3%81%99%E3%82%81%E3%81%AE%E6%9B%B8%E7%B1%8D/img_11_hu261da33dc4cf509479817847be63b78a_1062282_1024x0_resize_box_3.png 1024w"
loading="lazy"
alt="img_11.png"
class="gallery-image"
data-flex-grow="78"
data-flex-basis="188px"
>&lt;/li>
&lt;li>Por Que as Redes se Conectam
&lt;img src="http://kenji.blog/p/%E3%82%A8%E3%83%B3%E3%82%B8%E3%83%8B%E3%82%A2%E5%88%9D%E5%AD%A6%E8%80%85%E3%81%AB%E3%81%8A%E3%81%99%E3%81%99%E3%82%81%E3%81%AE%E6%9B%B8%E7%B1%8D/img_10.png"
width="1060"
height="1500"
srcset="http://kenji.blog/p/%E3%82%A8%E3%83%B3%E3%82%B8%E3%83%8B%E3%82%A2%E5%88%9D%E5%AD%A6%E8%80%85%E3%81%AB%E3%81%8A%E3%81%99%E3%81%99%E3%82%81%E3%81%AE%E6%9B%B8%E7%B1%8D/img_10_hu648160deb00f1ab01a6a1e5bf748893c_1757585_480x0_resize_box_3.png 480w, http://kenji.blog/p/%E3%82%A8%E3%83%B3%E3%82%B8%E3%83%8B%E3%82%A2%E5%88%9D%E5%AD%A6%E8%80%85%E3%81%AB%E3%81%8A%E3%81%99%E3%81%99%E3%82%81%E3%81%AE%E6%9B%B8%E7%B1%8D/img_10_hu648160deb00f1ab01a6a1e5bf748893c_1757585_1024x0_resize_box_3.png 1024w"
loading="lazy"
alt="img_10.png"
class="gallery-image"
data-flex-grow="70"
data-flex-basis="169px"
>&lt;/li>
&lt;li>Guia Completo de SQL por Especialistas
&lt;img src="http://kenji.blog/p/%E3%82%A8%E3%83%B3%E3%82%B8%E3%83%8B%E3%82%A2%E5%88%9D%E5%AD%A6%E8%80%85%E3%81%AB%E3%81%8A%E3%81%99%E3%81%99%E3%82%81%E3%81%AE%E6%9B%B8%E7%B1%8D/img_9.png"
width="1058"
height="1500"
srcset="http://kenji.blog/p/%E3%82%A8%E3%83%B3%E3%82%B8%E3%83%8B%E3%82%A2%E5%88%9D%E5%AD%A6%E8%80%85%E3%81%AB%E3%81%8A%E3%81%99%E3%81%99%E3%82%81%E3%81%AE%E6%9B%B8%E7%B1%8D/img_9_hu22594e93e209e80bffc86bee1328466c_2717668_480x0_resize_box_3.png 480w, http://kenji.blog/p/%E3%82%A8%E3%83%B3%E3%82%B8%E3%83%8B%E3%82%A2%E5%88%9D%E5%AD%A6%E8%80%85%E3%81%AB%E3%81%8A%E3%81%99%E3%81%99%E3%82%81%E3%81%AE%E6%9B%B8%E7%B1%8D/img_9_hu22594e93e209e80bffc86bee1328466c_2717668_1024x0_resize_box_3.png 1024w"
loading="lazy"
alt="img_9.png"
class="gallery-image"
data-flex-grow="70"
data-flex-basis="169px"
>&lt;/li>
&lt;li>Guia Prático do Docker
&lt;img src="http://kenji.blog/p/%E3%82%A8%E3%83%B3%E3%82%B8%E3%83%8B%E3%82%A2%E5%88%9D%E5%AD%A6%E8%80%85%E3%81%AB%E3%81%8A%E3%81%99%E3%81%99%E3%82%81%E3%81%AE%E6%9B%B8%E7%B1%8D/img_8.png"
width="1090"
height="1389"
srcset="http://kenji.blog/p/%E3%82%A8%E3%83%B3%E3%82%B8%E3%83%8B%E3%82%A2%E5%88%9D%E5%AD%A6%E8%80%85%E3%81%AB%E3%81%8A%E3%81%99%E3%81%99%E3%82%81%E3%81%AE%E6%9B%B8%E7%B1%8D/img_8_hu41a2f5f4345654e7bc83a15eefe34981_1727526_480x0_resize_box_3.png 480w, http://kenji.blog/p/%E3%82%A8%E3%83%B3%E3%82%B8%E3%83%8B%E3%82%A2%E5%88%9D%E5%AD%A6%E8%80%85%E3%81%AB%E3%81%8A%E3%81%99%E3%81%99%E3%82%81%E3%81%AE%E6%9B%B8%E7%B1%8D/img_8_hu41a2f5f4345654e7bc83a15eefe34981_1727526_1024x0_resize_box_3.png 1024w"
loading="lazy"
alt="img_8.png"
class="gallery-image"
data-flex-grow="78"
data-flex-basis="188px"
>&lt;/li>
&lt;li>Guia Completo do Kubernetes
&lt;img src="http://kenji.blog/p/%E3%82%A8%E3%83%B3%E3%82%B8%E3%83%8B%E3%82%A2%E5%88%9D%E5%AD%A6%E8%80%85%E3%81%AB%E3%81%8A%E3%81%99%E3%81%99%E3%82%81%E3%81%AE%E6%9B%B8%E7%B1%8D/img_7.png"
width="1177"
height="1500"
srcset="http://kenji.blog/p/%E3%82%A8%E3%83%B3%E3%82%B8%E3%83%8B%E3%82%A2%E5%88%9D%E5%AD%A6%E8%80%85%E3%81%AB%E3%81%8A%E3%81%99%E3%81%99%E3%82%81%E3%81%AE%E6%9B%B8%E7%B1%8D/img_7_hu8dd85a224029593fc5dc9a13ef20f0cd_3843087_480x0_resize_box_3.png 480w, http://kenji.blog/p/%E3%82%A8%E3%83%B3%E3%82%B8%E3%83%8B%E3%82%A2%E5%88%9D%E5%AD%A6%E8%80%85%E3%81%AB%E3%81%8A%E3%81%99%E3%81%99%E3%82%81%E3%81%AE%E6%9B%B8%E7%B1%8D/img_7_hu8dd85a224029593fc5dc9a13ef20f0cd_3843087_1024x0_resize_box_3.png 1024w"
loading="lazy"
alt="img_7.png"
class="gallery-image"
data-flex-grow="78"
data-flex-basis="188px"
>&lt;/li>
&lt;li>Code Complete 2ª Edição
&lt;img src="http://kenji.blog/p/%E3%82%A8%E3%83%B3%E3%82%B8%E3%83%8B%E3%82%A2%E5%88%9D%E5%AD%A6%E8%80%85%E3%81%AB%E3%81%8A%E3%81%99%E3%81%99%E3%82%81%E3%81%AE%E6%9B%B8%E7%B1%8D/img_5.png"
width="386"
height="500"
srcset="http://kenji.blog/p/%E3%82%A8%E3%83%B3%E3%82%B8%E3%83%8B%E3%82%A2%E5%88%9D%E5%AD%A6%E8%80%85%E3%81%AB%E3%81%8A%E3%81%99%E3%81%99%E3%82%81%E3%81%AE%E6%9B%B8%E7%B1%8D/img_5_hucc61503c023b43658f514cad763aa5d4_337603_480x0_resize_box_3.png 480w, http://kenji.blog/p/%E3%82%A8%E3%83%B3%E3%82%B8%E3%83%8B%E3%82%A2%E5%88%9D%E5%AD%A6%E8%80%85%E3%81%AB%E3%81%8A%E3%81%99%E3%81%99%E3%82%81%E3%81%AE%E6%9B%B8%E7%B1%8D/img_5_hucc61503c023b43658f514cad763aa5d4_337603_1024x0_resize_box_3.png 1024w"
loading="lazy"
alt="img_5.png"
class="gallery-image"
data-flex-grow="77"
data-flex-basis="185px"
>
&lt;img src="http://kenji.blog/p/%E3%82%A8%E3%83%B3%E3%82%B8%E3%83%8B%E3%82%A2%E5%88%9D%E5%AD%A6%E8%80%85%E3%81%AB%E3%81%8A%E3%81%99%E3%81%99%E3%82%81%E3%81%AE%E6%9B%B8%E7%B1%8D/img_6.png"
width="386"
height="500"
srcset="http://kenji.blog/p/%E3%82%A8%E3%83%B3%E3%82%B8%E3%83%8B%E3%82%A2%E5%88%9D%E5%AD%A6%E8%80%85%E3%81%AB%E3%81%8A%E3%81%99%E3%81%99%E3%82%81%E3%81%AE%E6%9B%B8%E7%B1%8D/img_6_hu61c8fa1a50334de472b3f02d2e9b5d94_341513_480x0_resize_box_3.png 480w, http://kenji.blog/p/%E3%82%A8%E3%83%B3%E3%82%B8%E3%83%8B%E3%82%A2%E5%88%9D%E5%AD%A6%E8%80%85%E3%81%AB%E3%81%8A%E3%81%99%E3%81%99%E3%82%81%E3%81%AE%E6%9B%B8%E7%B1%8D/img_6_hu61c8fa1a50334de472b3f02d2e9b5d94_341513_1024x0_resize_box_3.png 1024w"
loading="lazy"
alt="img_6.png"
class="gallery-image"
data-flex-grow="77"
data-flex-basis="185px"
>&lt;/li>
&lt;li>Clean Code: Habilidades de Software Ágil
&lt;img src="http://kenji.blog/p/%E3%82%A8%E3%83%B3%E3%82%B8%E3%83%8B%E3%82%A2%E5%88%9D%E5%AD%A6%E8%80%85%E3%81%AB%E3%81%8A%E3%81%99%E3%81%99%E3%82%81%E3%81%AE%E6%9B%B8%E7%B1%8D/img_4.png"
width="1151"
height="1500"
srcset="http://kenji.blog/p/%E3%82%A8%E3%83%B3%E3%82%B8%E3%83%8B%E3%82%A2%E5%88%9D%E5%AD%A6%E8%80%85%E3%81%AB%E3%81%8A%E3%81%99%E3%81%99%E3%82%81%E3%81%AE%E6%9B%B8%E7%B1%8D/img_4_hue4b240787121702069b25a9b17aebafc_1187914_480x0_resize_box_3.png 480w, http://kenji.blog/p/%E3%82%A8%E3%83%B3%E3%82%B8%E3%83%8B%E3%82%A2%E5%88%9D%E5%AD%A6%E8%80%85%E3%81%AB%E3%81%8A%E3%81%99%E3%81%99%E3%82%81%E3%81%AE%E6%9B%B8%E7%B1%8D/img_4_hue4b240787121702069b25a9b17aebafc_1187914_1024x0_resize_box_3.png 1024w"
loading="lazy"
alt="img_4.png"
class="gallery-image"
data-flex-grow="76"
data-flex-basis="184px"
>&lt;/li>
&lt;li>Clean Architecture: Estrutura e Design de Software
&lt;img src="http://kenji.blog/p/%E3%82%A8%E3%83%B3%E3%82%B8%E3%83%8B%E3%82%A2%E5%88%9D%E5%AD%A6%E8%80%85%E3%81%AB%E3%81%8A%E3%81%99%E3%81%99%E3%82%81%E3%81%AE%E6%9B%B8%E7%B1%8D/img_3.png"
width="1136"
height="1500"
srcset="http://kenji.blog/p/%E3%82%A8%E3%83%B3%E3%82%B8%E3%83%8B%E3%82%A2%E5%88%9D%E5%AD%A6%E8%80%85%E3%81%AB%E3%81%8A%E3%81%99%E3%81%99%E3%82%81%E3%81%AE%E6%9B%B8%E7%B1%8D/img_3_hu14a1d1f632f80003cac638b75db73255_1099307_480x0_resize_box_3.png 480w, http://kenji.blog/p/%E3%82%A8%E3%83%B3%E3%82%B8%E3%83%8B%E3%82%A2%E5%88%9D%E5%AD%A6%E8%80%85%E3%81%AB%E3%81%8A%E3%81%99%E3%81%99%E3%82%81%E3%81%AE%E6%9B%B8%E7%B1%8D/img_3_hu14a1d1f632f80003cac638b75db73255_1099307_1024x0_resize_box_3.png 1024w"
loading="lazy"
alt="img_3.png"
class="gallery-image"
data-flex-grow="75"
data-flex-basis="181px"
>&lt;/li>
&lt;li>Tecnologias para Conhecer Antes de se Tornar um Programador de Jogos
&lt;img src="http://kenji.blog/p/%E3%82%A8%E3%83%B3%E3%82%B8%E3%83%8B%E3%82%A2%E5%88%9D%E5%AD%A6%E8%80%85%E3%81%AB%E3%81%8A%E3%81%99%E3%81%99%E3%82%81%E3%81%AE%E6%9B%B8%E7%B1%8D/img_2.png"
width="387"
height="500"
srcset="http://kenji.blog/p/%E3%82%A8%E3%83%B3%E3%82%B8%E3%83%8B%E3%82%A2%E5%88%9D%E5%AD%A6%E8%80%85%E3%81%AB%E3%81%8A%E3%81%99%E3%81%99%E3%82%81%E3%81%AE%E6%9B%B8%E7%B1%8D/img_2_hub093cdb3288ee25756912df1d9ec1a1d_177794_480x0_resize_box_3.png 480w, http://kenji.blog/p/%E3%82%A8%E3%83%B3%E3%82%B8%E3%83%8B%E3%82%A2%E5%88%9D%E5%AD%A6%E8%80%85%E3%81%AB%E3%81%8A%E3%81%99%E3%81%99%E3%82%81%E3%81%AE%E6%9B%B8%E7%B1%8D/img_2_hub093cdb3288ee25756912df1d9ec1a1d_177794_1024x0_resize_box_3.png 1024w"
loading="lazy"
alt="img_2.png"
class="gallery-image"
data-flex-grow="77"
data-flex-basis="185px"
>&lt;/li>
&lt;li>Being Geek
&lt;img src="http://kenji.blog/p/%E3%82%A8%E3%83%B3%E3%82%B8%E3%83%8B%E3%82%A2%E5%88%9D%E5%AD%A6%E8%80%85%E3%81%AB%E3%81%8A%E3%81%99%E3%81%99%E3%82%81%E3%81%AE%E6%9B%B8%E7%B1%8D/img_1.png"
width="352"
height="500"
srcset="http://kenji.blog/p/%E3%82%A8%E3%83%B3%E3%82%B8%E3%83%8B%E3%82%A2%E5%88%9D%E5%AD%A6%E8%80%85%E3%81%AB%E3%81%8A%E3%81%99%E3%81%99%E3%82%81%E3%81%AE%E6%9B%B8%E7%B1%8D/img_1_hub3e512c89bba46a5fcb37114a89f0140_168953_480x0_resize_box_3.png 480w, http://kenji.blog/p/%E3%82%A8%E3%83%B3%E3%82%B8%E3%83%8B%E3%82%A2%E5%88%9D%E5%AD%A6%E8%80%85%E3%81%AB%E3%81%8A%E3%81%99%E3%81%99%E3%82%81%E3%81%AE%E6%9B%B8%E7%B1%8D/img_1_hub3e512c89bba46a5fcb37114a89f0140_168953_1024x0_resize_box_3.png 1024w"
loading="lazy"
alt="img_1.png"
class="gallery-image"
data-flex-grow="70"
data-flex-basis="168px"
>&lt;/li>
&lt;li>Por Que Criar com Orientação a Objetos?
&lt;img src="http://kenji.blog/p/%E3%82%A8%E3%83%B3%E3%82%B8%E3%83%8B%E3%82%A2%E5%88%9D%E5%AD%A6%E8%80%85%E3%81%AB%E3%81%8A%E3%81%99%E3%81%99%E3%82%81%E3%81%AE%E6%9B%B8%E7%B1%8D/img_16.png"
width="1057"
height="1500"
srcset="http://kenji.blog/p/%E3%82%A8%E3%83%B3%E3%82%B8%E3%83%8B%E3%82%A2%E5%88%9D%E5%AD%A6%E8%80%85%E3%81%AB%E3%81%8A%E3%81%99%E3%81%99%E3%82%81%E3%81%AE%E6%9B%B8%E7%B1%8D/img_16_hu55ba229358890270c55ec54f21a37dbc_1487603_480x0_resize_box_3.png 480w, http://kenji.blog/p/%E3%82%A8%E3%83%B3%E3%82%B8%E3%83%8B%E3%82%A2%E5%88%9D%E5%AD%A6%E8%80%85%E3%81%AB%E3%81%8A%E3%81%99%E3%81%99%E3%82%81%E3%81%AE%E6%9B%B8%E7%B1%8D/img_16_hu55ba229358890270c55ec54f21a37dbc_1487603_1024x0_resize_box_3.png 1024w"
loading="lazy"
alt="img_16.png"
class="gallery-image"
data-flex-grow="70"
data-flex-basis="169px"
>&lt;/li>
&lt;/ol></description></item><item><title>Template de Calendário Excel (Versão com Suporte a Feriados)</title><link>http://kenji.blog/pt/p/excel%E3%81%AE%E3%82%AB%E3%83%AC%E3%83%B3%E3%83%80%E3%83%BC%E3%83%86%E3%83%B3%E3%83%97%E3%83%AC%E3%83%BC%E3%83%88%E4%BC%91%E6%97%A5%E5%AF%BE%E5%BF%9C%E7%89%88/</link><pubDate>Wed, 01 May 2024 00:15:57 +0900</pubDate><guid>http://kenji.blog/pt/p/excel%E3%81%AE%E3%82%AB%E3%83%AC%E3%83%B3%E3%83%80%E3%83%BC%E3%83%86%E3%83%B3%E3%83%97%E3%83%AC%E3%83%BC%E3%83%88%E4%BC%91%E6%97%A5%E5%AF%BE%E5%BF%9C%E7%89%88/</guid><description>&lt;img src="http://kenji.blog/p/excel%E3%81%AE%E3%82%AB%E3%83%AC%E3%83%B3%E3%83%80%E3%83%BC%E3%83%86%E3%83%B3%E3%83%97%E3%83%AC%E3%83%BC%E3%83%88%E4%BC%91%E6%97%A5%E5%AF%BE%E5%BF%9C%E7%89%88/img.png" alt="Featured image of post Template de Calendário Excel (Versão com Suporte a Feriados)" />&lt;h2 id="criei-um-template-de-calendário-no-excel-versão-com-feriados">Criei um Template de Calendário no Excel (Versão com Feriados)!
&lt;/h2>&lt;p>Criei um template no Excel onde, ao inserir o ano e o mês, os feriados desse mês são exibidos no calendário.&lt;/p>
&lt;p>Faça o download e use à vontade.
&lt;a class="link" href="%e3%82%ab%e3%83%ac%e3%83%b3%e3%83%80%e3%83%bc.xlsx" >Calendário.xlsx&lt;/a>&lt;/p></description></item><item><title>Como corrigir as configurações de DPI sendo redefinidas na inicialização com vários monitores</title><link>http://kenji.blog/pt/p/como-corrigir-configuracoes-dpi-redefinidas-inicializacao-varios-monitores/</link><pubDate>Mon, 29 Apr 2024 19:42:20 +0900</pubDate><guid>http://kenji.blog/pt/p/como-corrigir-configuracoes-dpi-redefinidas-inicializacao-varios-monitores/</guid><description>&lt;img src="http://kenji.blog/p/%E3%83%9E%E3%83%AB%E3%83%81%E3%83%A2%E3%83%8B%E3%82%BF%E3%81%A7%E6%AF%8E%E5%9B%9E%E8%B5%B7%E5%8B%95%E6%99%82%E3%81%ABdpi%E3%81%AE%E8%A8%AD%E5%AE%9A%E3%81%8C%E3%83%AA%E3%82%BB%E3%83%83%E3%83%88%E3%81%95%E3%82%8C%E3%81%A6%E3%81%97%E3%81%BE%E3%81%86%E3%81%A8%E3%81%8D%E3%81%AE%E5%AF%BE%E5%87%A6%E6%B3%95/img.png" alt="Featured image of post Como corrigir as configurações de DPI sendo redefinidas na inicialização com vários monitores" />&lt;p>※ Este é o procedimento de configuração para o Windows 11.&lt;/p>
&lt;ol>
&lt;li>Abra o Painel de Controle&lt;/li>
&lt;li>Selecione Opções de Energia&lt;/li>
&lt;li>Clique em &amp;ldquo;Escolher a função dos botões de energia&amp;rdquo;&lt;/li>
&lt;li>Clique em &amp;ldquo;Alterar configurações não disponíveis no momento&amp;rdquo;&lt;/li>
&lt;li>Desmarque &amp;ldquo;Ligar inicialização rápida (recomendado)&amp;rdquo;&lt;/li>
&lt;li>Clique em &amp;ldquo;Salvar alterações&amp;rdquo;&lt;/li>
&lt;/ol>
&lt;h3 id="referência">Referência
&lt;/h3>&lt;p>&lt;a class="link" href="https://www.fmworld.net/cs/azbyclub/qanavi/jsp/qacontents.jsp?PID=6010-9312" target="_blank" rel="noopener"
>\[Windows 10\] Como desativar a inicialização rápida.&lt;/a>&lt;/p></description></item><item><title>Obter apenas a versão mais recente do repositório git</title><link>http://kenji.blog/pt/p/obter-apenas-a-versao-mais-recente-do-repositorio-git/</link><pubDate>Sat, 27 Apr 2024 02:54:12 +0900</pubDate><guid>http://kenji.blog/pt/p/obter-apenas-a-versao-mais-recente-do-repositorio-git/</guid><description>&lt;img src="http://kenji.blog/p/git%E3%83%AA%E3%83%9D%E3%82%B8%E3%83%88%E3%83%AA%E3%81%AE%E6%9C%80%E6%96%B0%E3%81%A0%E3%81%91%E5%8F%96%E5%BE%97%E3%81%99%E3%82%8B/img.png" alt="Featured image of post Obter apenas a versão mais recente do repositório git" />&lt;h1 id="obter-apenas-a-versão-mais-recente-do-repositório-git">Obter apenas a versão mais recente do repositório git
&lt;/h1>&lt;p>Você pode obter apenas a versão mais recente do repositório com o comando a seguir.
Isso é útil quando você deseja obter o repositório rapidamente para economizar espaço em disco.&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">git clone --depth 1 &amp;lt;URL do repositório&amp;gt;
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div></description></item><item><title>Como resolver o erro de certificado quando o GitHub Copilot para de funcionar</title><link>http://kenji.blog/pt/p/como-resolver-erro-certificado-github-copilot/</link><pubDate>Sun, 21 Apr 2024 18:47:26 +0900</pubDate><guid>http://kenji.blog/pt/p/como-resolver-erro-certificado-github-copilot/</guid><description>&lt;img src="http://kenji.blog/p/%E8%A8%BC%E6%98%8E%E6%9B%B8%E3%82%A8%E3%83%A9%E3%83%BC%E3%81%A7github-copilot%E3%81%8C%E4%BD%BF%E3%81%88%E3%81%AA%E3%81%8F%E3%81%AA%E3%81%A3%E3%81%9F%E5%A0%B4%E5%90%88%E3%81%AE%E5%AF%BE%E5%87%A6%E6%96%B9%E6%B3%95/img.png" alt="Featured image of post Como resolver o erro de certificado quando o GitHub Copilot para de funcionar" />&lt;h1 id="o-que-fazer-quando-o-seguinte-erro-é-exibido-no-github-copilot">O que fazer quando o seguinte erro é exibido no GitHub Copilot
&lt;/h1>&lt;p>A partir de 19/04/2024, o GitHub Copilot parou de funcionar. A mensagem de erro é a seguinte:&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">[ERROR] [ghostText] [2024-04-21T04:06:46.900Z] Error on ghost text request: (FetchError) unable to verify the first certificate
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">[ERROR] [certificates] [2024-04-21T04:06:46.901Z] Your current Copilot license doesn&amp;#39;t support proxy connections with custom certificates. Please visit https://gh.io/copilot-network-errors to learn more. Original cause: {&amp;#34;type&amp;#34;:&amp;#34;system&amp;#34;,&amp;#34;_name&amp;#34;:&amp;#34;FetchError&amp;#34;,&amp;#34;code&amp;#34;:&amp;#34;UNABLE_TO_VERIFY_LEAF_SIGNATURE&amp;#34;}
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h2 id="solução">Solução
&lt;/h2>&lt;p>Parece ser um bug do ESET. Nas configurações avançadas do ESET, desative a opção &amp;ldquo;Ativar SSL/TLS&amp;rdquo;.
&lt;img src="http://kenji.blog/p/%E8%A8%BC%E6%98%8E%E6%9B%B8%E3%82%A8%E3%83%A9%E3%83%BC%E3%81%A7github-copilot%E3%81%8C%E4%BD%BF%E3%81%88%E3%81%AA%E3%81%8F%E3%81%AA%E3%81%A3%E3%81%9F%E5%A0%B4%E5%90%88%E3%81%AE%E5%AF%BE%E5%87%A6%E6%96%B9%E6%B3%95/img_1.png"
width="679"
height="468"
srcset="http://kenji.blog/p/%E8%A8%BC%E6%98%8E%E6%9B%B8%E3%82%A8%E3%83%A9%E3%83%BC%E3%81%A7github-copilot%E3%81%8C%E4%BD%BF%E3%81%88%E3%81%AA%E3%81%8F%E3%81%AA%E3%81%A3%E3%81%9F%E5%A0%B4%E5%90%88%E3%81%AE%E5%AF%BE%E5%87%A6%E6%96%B9%E6%B3%95/img_1_hu79798d24a79f4dc94eb7f8ca51727896_114738_480x0_resize_box_3.png 480w, http://kenji.blog/p/%E8%A8%BC%E6%98%8E%E6%9B%B8%E3%82%A8%E3%83%A9%E3%83%BC%E3%81%A7github-copilot%E3%81%8C%E4%BD%BF%E3%81%88%E3%81%AA%E3%81%8F%E3%81%AA%E3%81%A3%E3%81%9F%E5%A0%B4%E5%90%88%E3%81%AE%E5%AF%BE%E5%87%A6%E6%96%B9%E6%B3%95/img_1_hu79798d24a79f4dc94eb7f8ca51727896_114738_1024x0_resize_box_3.png 1024w"
loading="lazy"
alt="img_1.png"
class="gallery-image"
data-flex-grow="145"
data-flex-basis="348px"
>&lt;/p>
&lt;h2 id="referência">Referência
&lt;/h2>&lt;p>Parece que o mesmo erro está ocorrendo no AWS CDK.&lt;/p>
&lt;ul>
&lt;li>&lt;a class="link" href="https://repost.aws/questions/QU2H94hF04SIuEVejK_a1mtQ/aws-cdk-bootstrap-certificate-warning-error" target="_blank" rel="noopener"
>AWS CDK bootstrap certificate warning-error&lt;/a>&lt;/li>
&lt;/ul></description></item><item><title>Introdução ao vim</title><link>http://kenji.blog/pt/p/vim%E5%85%A5%E9%96%80/</link><pubDate>Fri, 19 Apr 2024 22:06:34 +0900</pubDate><guid>http://kenji.blog/pt/p/vim%E5%85%A5%E9%96%80/</guid><description>&lt;img src="http://kenji.blog/p/vim%E5%85%A5%E9%96%80/img.png" alt="Featured image of post Introdução ao vim" />&lt;p>&lt;img src="http://kenji.blog/p/vim%E5%85%A5%E9%96%80/img_1.png"
width="1920"
height="1080"
srcset="http://kenji.blog/p/vim%E5%85%A5%E9%96%80/img_1_hue190cb5546151f3c9f61d693ae541095_45716_480x0_resize_box_3.png 480w, http://kenji.blog/p/vim%E5%85%A5%E9%96%80/img_1_hue190cb5546151f3c9f61d693ae541095_45716_1024x0_resize_box_3.png 1024w"
loading="lazy"
alt="img_1.png"
class="gallery-image"
data-flex-grow="177"
data-flex-basis="426px"
>&lt;/p>
&lt;h1 id="introdução-ao-vim">Introdução ao vim
&lt;/h1>&lt;h2 id="download-e-instalação">Download e Instalação
&lt;/h2>&lt;p>&lt;a class="link" href="https://www.vim.org/download.php" target="_blank" rel="noopener"
>https://www.vim.org/download.php&lt;/a>&lt;/p>
&lt;p>No site acima, baixe e instale o módulo apropriado para o seu sistema operacional.&lt;/p>
&lt;p>Para Windows, escolher &lt;code>gvim_X.X.X_x64_signed.exe&lt;/code> é uma boa opção.&lt;/p>
&lt;h2 id="como-iniciar">Como Iniciar
&lt;/h2>&lt;p>No Windows, é necessário registrar a pasta onde &lt;code>vim.exe&lt;/code> está localizado na variável de ambiente Path.&lt;/p>
&lt;p>Como iniciar:&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">vim
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>Para iniciar especificando um nome de arquivo:&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">vim filename.txt
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h2 id="como-sair">Como Sair
&lt;/h2>&lt;p>Para sair, digite &lt;code>:&lt;/code> (dois pontos), depois &lt;code>q&lt;/code> e pressione Enter.&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">:q
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>Se o arquivo foi modificado, será exibido &lt;code>Nenhuma gravação desde a última alteração (adicione ! para forçar)&lt;/code>.
Você pode forçar a saída descartando as alterações.&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">:q!
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>Para salvar e sair do arquivo:&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">:wq
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>O seguinte também tem o mesmo significado:&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">:x
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>Você também pode sair pressionando &lt;code>Shift&lt;/code> e apertando &lt;code>z&lt;/code> duas vezes. (O mesmo que :wq)&lt;/p>
&lt;h2 id="modos">Modos
&lt;/h2>&lt;p>O vim possui um &lt;code>Modo de Comando&lt;/code> e um &lt;code>Modo de Inserção&lt;/code>. Ao iniciar o vim, ele está no &lt;code>Modo de Comando&lt;/code>. Pressionar a tecla &lt;code>i&lt;/code> muda para o &lt;code>Modo de Inserção&lt;/code>.&lt;/p>
&lt;p>No &lt;code>Modo de Inserção&lt;/code>, como o nome sugere, você pode digitar texto. Para voltar do &lt;code>Modo de Inserção&lt;/code> para o &lt;code>Modo de Comando&lt;/code>, pressione a tecla &lt;code>ESC&lt;/code>.&lt;/p>
&lt;p>A alternância entre esses modos é uma característica fundamental do vim.&lt;/p>
&lt;h2 id="movimentação-do-cursor-e-rolagem">Movimentação do Cursor e Rolagem
&lt;/h2>&lt;p>Resumo da movimentação do cursor e rolagem no &lt;code>Modo de Comando&lt;/code>.&lt;/p>
&lt;table>
&lt;thead>
&lt;tr>
&lt;th>Tecla&lt;/th>
&lt;th>Descrição&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>&lt;code>h&lt;/code> (ou &lt;code>Ctrl&lt;/code>+&lt;code>H&lt;/code>, &lt;code>BackSpace&lt;/code>, &lt;code>←&lt;/code>)&lt;/td>
&lt;td>Mover para a esquerda&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>j&lt;/code> (ou &lt;code>Ctrl&lt;/code>+&lt;code>J&lt;/code> / &lt;code>N&lt;/code>, &lt;code>↓&lt;/code>)&lt;/td>
&lt;td>Mover para baixo&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>k&lt;/code> (ou &lt;code>Ctrl&lt;/code>+&lt;code>P&lt;/code>, &lt;code>↑&lt;/code>)&lt;/td>
&lt;td>Mover para cima&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>l&lt;/code> (ou &lt;code>Space&lt;/code>, &lt;code>→&lt;/code>)&lt;/td>
&lt;td>Mover para a direita&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>+&lt;/code> (ou &lt;code>Enter&lt;/code>)&lt;/td>
&lt;td>Mover para o início da próxima linha&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>-&lt;/code>&lt;/td>
&lt;td>Mover para o início da linha anterior&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>Ctrl&lt;/code>+&lt;code>B&lt;/code> (ou &lt;code>PageUp&lt;/code>)&lt;/td>
&lt;td>Rolar para cima (página)&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>Ctrl&lt;/code>+&lt;code>F&lt;/code> (ou &lt;code>PageDown&lt;/code>)&lt;/td>
&lt;td>Rolar para baixo (página)&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>Ctrl&lt;/code>+&lt;code>U&lt;/code>&lt;/td>
&lt;td>Rolar para cima (meia página)&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>Ctrl&lt;/code>+&lt;code>D&lt;/code>&lt;/td>
&lt;td>Rolar para baixo (meia página)&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>Ctrl&lt;/code>+&lt;code>Y&lt;/code>&lt;/td>
&lt;td>Rolar para cima (uma linha)&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>Ctrl&lt;/code>+&lt;code>E&lt;/code>&lt;/td>
&lt;td>Rolar para baixo (uma linha)&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>z&lt;/code> &lt;code>Enter&lt;/code>&lt;/td>
&lt;td>Rolar linha do cursor para o topo&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>z&lt;/code> &lt;code>.&lt;/code>&lt;/td>
&lt;td>Rolar linha do cursor para o centro&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>z&lt;/code> &lt;code>-&lt;/code>&lt;/td>
&lt;td>Rolar linha do cursor para a base&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>0&lt;/code> (ou &lt;code>|&lt;/code>)&lt;/td>
&lt;td>Mover o cursor para o início da linha&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>$&lt;/code>&lt;/td>
&lt;td>Mover o cursor para o fim da linha&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>^&lt;/code> (ou &lt;code>_&lt;/code>)&lt;/td>
&lt;td>Mover o cursor para o primeiro caractere não em branco da linha&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>G&lt;/code> (ou &lt;code>:$&lt;/code>)&lt;/td>
&lt;td>Mover o cursor para a última linha&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>:número_da_linha&lt;/code> &lt;code>Enter&lt;/code>&lt;/td>
&lt;td>Mover para a linha especificada&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;p>Ao digitar um &lt;code>número&lt;/code> antes das teclas de movimento acima, você pode mover várias vezes por essa quantidade.
(Por exemplo, digitar &lt;code>3j&lt;/code> moverá 3 linhas para baixo a partir da posição atual do cursor.)&lt;/p>
&lt;h2 id="outros-comandos">Outros Comandos
&lt;/h2>&lt;table>
&lt;thead>
&lt;tr>
&lt;th>Tecla&lt;/th>
&lt;th>Descrição&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>&lt;code>Ctrl&lt;/code>+&lt;code>L&lt;/code>&lt;/td>
&lt;td>Redesenhar a tela&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>Ctrl&lt;/code>+&lt;code>G&lt;/code>&lt;/td>
&lt;td>Mostrar número de linhas e a posição do cursor&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table></description></item><item><title>LoadIcon não precisa chamar DestroyIcon</title><link>http://kenji.blog/pt/p/loadicon-nao-precisa-chamar-destroyicon/</link><pubDate>Fri, 19 Apr 2024 01:55:17 +0900</pubDate><guid>http://kenji.blog/pt/p/loadicon-nao-precisa-chamar-destroyicon/</guid><description>&lt;h1 id="sobre-a-necessidade-de-chamar-destroyicon">Sobre a necessidade de chamar DestroyIcon
&lt;/h1>&lt;p>É necessário chamar DestroyIcon nos seguintes casos:&lt;/p>
&lt;ul>
&lt;li>CreateIconFromResourceEx (se chamado sem a flag LR_SHARED)&lt;/li>
&lt;li>CreateIconIndirect&lt;/li>
&lt;li>CopyIcon&lt;/li>
&lt;/ul>
&lt;p>Quando criado pelas funções acima.&lt;/p>
&lt;ul>
&lt;li>LoadIcon&lt;/li>
&lt;li>LoadImage (se usar a flag LR_SHARED)&lt;/li>
&lt;li>CopyImage (se usar a flag LR_COPYRETURNORG e o parâmetro hImage for um ícone compartilhado)&lt;/li>
&lt;li>CreateIconFromResource&lt;/li>
&lt;li>CreateIconFromResourceEx (se usar a flag LR_SHARED)&lt;/li>
&lt;/ul>
&lt;p>Ícones criados e carregados nos casos acima não devem chamar DestroyIcon.&lt;/p>
&lt;h3 id="referência">Referência
&lt;/h3>&lt;ul>
&lt;li>&lt;a class="link" href="https://learn.microsoft.com/pt-br/windows/win32/api/winuser/nf-winuser-destroyicon" target="_blank" rel="noopener"
>Função DestroyIcon (winuser.h)&lt;/a>&lt;/li>
&lt;/ul></description></item><item><title>Sobre a IA Generativa</title><link>http://kenji.blog/pt/p/sobre-a-ia-generativa/</link><pubDate>Tue, 16 Apr 2024 02:13:56 +0900</pubDate><guid>http://kenji.blog/pt/p/sobre-a-ia-generativa/</guid><description>&lt;img src="http://kenji.blog/p/%E7%94%9F%E6%88%90ai%E3%81%AB%E3%81%A4%E3%81%84%E3%81%A6/img.png" alt="Featured image of post Sobre a IA Generativa" />&lt;h2 id="vídeos-de-palestras-sobre-ia-generativa">Vídeos de Palestras sobre IA Generativa
&lt;/h2>&lt;ul>
&lt;li>&amp;ldquo;IA Generativa&amp;rdquo; (1) Masayuki Nakao, Professor da Universidade de Tóquio 2023.9.8&lt;/li>
&lt;/ul>
&lt;div class="video-wrapper">
&lt;iframe loading="lazy"
src="https://www.youtube.com/embed/uN0eilnXl4E"
allowfullscreen
title="YouTube Video"
>
&lt;/iframe>
&lt;/div>
&lt;ul>
&lt;li>&amp;ldquo;IA Generativa&amp;rdquo; (2) Kuniyoshi Sakai, Professor da Universidade de Tóquio 2023.10.11&lt;/li>
&lt;/ul>
&lt;div class="video-wrapper">
&lt;iframe loading="lazy"
src="https://www.youtube.com/embed/wz1-DOZoQt0"
allowfullscreen
title="YouTube Video"
>
&lt;/iframe>
&lt;/div>
&lt;ul>
&lt;li>&amp;ldquo;IA Generativa&amp;rdquo; (3) Yutaka Matsuo, Professor da Universidade de Tóquio 2024.3.15&lt;/li>
&lt;/ul>
&lt;div class="video-wrapper">
&lt;iframe loading="lazy"
src="https://www.youtube.com/embed/U9vhGvFxKu0"
allowfullscreen
title="YouTube Video"
>
&lt;/iframe>
&lt;/div></description></item><item><title>Gerar código QR com curl</title><link>http://kenji.blog/pt/p/curl%E3%81%A7qr%E3%82%B3%E3%83%BC%E3%83%89%E7%94%9F%E6%88%90/</link><pubDate>Tue, 16 Apr 2024 00:42:27 +0900</pubDate><guid>http://kenji.blog/pt/p/curl%E3%81%A7qr%E3%82%B3%E3%83%BC%E3%83%89%E7%94%9F%E6%88%90/</guid><description>&lt;img src="http://kenji.blog/p/curl%E3%81%A7qr%E3%82%B3%E3%83%BC%E3%83%89%E7%94%9F%E6%88%90/img.png" alt="Featured image of post Gerar código QR com curl" />&lt;h2 id="gerar-código-qr-com-curl">Gerar código QR com curl
&lt;/h2>&lt;p>Aviso: Os métodos apresentados retornam um código QR gerado no lado do servidor, portanto, pode haver registro de logs. Tenha cuidado ao converter informações confidenciais, como informações pessoais, em um código QR.&lt;/p>
&lt;h3 id="método-1">Método 1
&lt;/h3>&lt;p>Este é um método para gerar um código QR no prompt de comando.
O &lt;code>qrenco.de&lt;/code> retorna a resposta em formato de texto.&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">curl qrenco.de/kenji.blog
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;ul>
&lt;li>Resultado da saída&lt;/li>
&lt;/ul>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt"> 1
&lt;/span>&lt;span class="lnt"> 2
&lt;/span>&lt;span class="lnt"> 3
&lt;/span>&lt;span class="lnt"> 4
&lt;/span>&lt;span class="lnt"> 5
&lt;/span>&lt;span class="lnt"> 6
&lt;/span>&lt;span class="lnt"> 7
&lt;/span>&lt;span class="lnt"> 8
&lt;/span>&lt;span class="lnt"> 9
&lt;/span>&lt;span class="lnt">10
&lt;/span>&lt;span class="lnt">11
&lt;/span>&lt;span class="lnt">12
&lt;/span>&lt;span class="lnt">13
&lt;/span>&lt;span class="lnt">14
&lt;/span>&lt;span class="lnt">15
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">█████████████████████████████
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">█████████████████████████████
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">████ ▄▄▄▄▄ █ ▄ ▄ █ ▄▄▄▄▄ ████
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">████ █ █ █ ▀▀▀██ █ █ ████
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">████ █▄▄▄█ █▀▀█▀▄█ █▄▄▄█ ████
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">████▄▄▄▄▄▄▄█▄▀ ▀ █▄▄▄▄▄▄▄████
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">████▄ █▀▄ ▄▀█▄▀ ▀██▄▀ ▄████
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">████▀▀▀█ ▄▄ ▄█▄█▀█▀▄██ ▀████
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">████▄▄▄██▄▄█ █▀█ ▄██▀▀█ █████
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">████ ▄▄▄▄▄ █▀█ ▀ ▄▀▄▄▄ ▀████
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">████ █ █ █▄▄ ▄▀▄▀▄ ██ ▀████
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">████ █▄▄▄█ █▀▀█ ▀▄▄▄ ▄▄██████
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">████▄▄▄▄▄▄▄█▄▄███▄▄█▄███▄████
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">█████████████████████████████
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">█████████████████████████████
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h4 id="referência">Referência
&lt;/h4>&lt;ul>
&lt;li>&lt;a class="link" href="https://qrenco.de/" target="_blank" rel="noopener"
>qrenco.de&lt;/a>&lt;/li>
&lt;/ul>
&lt;h3 id="método-2">Método 2
&lt;/h3>&lt;p>O &lt;code>api.qrserver.com&lt;/code> retorna uma imagem.&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">curl -o qr.png &amp;#34;https://api.qrserver.com/v1/create-qr-code/?size=150x150&amp;amp;data=HelloWorld&amp;#34;
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;ul>
&lt;li>Resultado da saída
&lt;img src="http://kenji.blog/p/curl%E3%81%A7qr%E3%82%B3%E3%83%BC%E3%83%89%E7%94%9F%E6%88%90/qr.png"
width="250"
height="250"
srcset="http://kenji.blog/p/curl%E3%81%A7qr%E3%82%B3%E3%83%BC%E3%83%89%E7%94%9F%E6%88%90/qr_hud34111b99823e39dfc62f9ba667fd5f9_390_480x0_resize_box_3.png 480w, http://kenji.blog/p/curl%E3%81%A7qr%E3%82%B3%E3%83%BC%E3%83%89%E7%94%9F%E6%88%90/qr_hud34111b99823e39dfc62f9ba667fd5f9_390_1024x0_resize_box_3.png 1024w"
loading="lazy"
class="gallery-image"
data-flex-grow="100"
data-flex-basis="240px"
>&lt;/li>
&lt;/ul>
&lt;h4 id="referência-1">Referência
&lt;/h4>&lt;ul>
&lt;li>&lt;a class="link" href="https://goqr.me/api/doc/create-qr-code/" target="_blank" rel="noopener"
>QR Code Generator&lt;/a>&lt;/li>
&lt;/ul></description></item><item><title>Lista de Atalhos do Microsoft Word</title><link>http://kenji.blog/pt/p/microsoft-word%E3%81%AE%E3%82%B7%E3%83%A7%E3%83%BC%E3%83%88%E3%82%AB%E3%83%83%E3%83%88%E4%B8%80%E8%A6%A7/</link><pubDate>Sun, 07 Apr 2024 14:18:51 +0900</pubDate><guid>http://kenji.blog/pt/p/microsoft-word%E3%81%AE%E3%82%B7%E3%83%A7%E3%83%BC%E3%83%88%E3%82%AB%E3%83%83%E3%83%88%E4%B8%80%E8%A6%A7/</guid><description>&lt;img src="http://kenji.blog/p/microsoft-word%E3%81%AE%E3%82%B7%E3%83%A7%E3%83%BC%E3%83%88%E3%82%AB%E3%83%83%E3%83%88%E4%B8%80%E8%A6%A7/img.png" alt="Featured image of post Lista de Atalhos do Microsoft Word" />&lt;h2 id="lista-de-atalhos">Lista de Atalhos
&lt;/h2>&lt;table>
&lt;thead>
&lt;tr>
&lt;th>Tecla de Atalho&lt;/th>
&lt;th>Descrição&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>&lt;code>Ctrl&lt;/code> + &lt;code>B&lt;/code>&lt;/td>
&lt;td>Negrito&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>Ctrl&lt;/code> + &lt;code>I&lt;/code>&lt;/td>
&lt;td>Itálico&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>Ctrl&lt;/code> + &lt;code>U&lt;/code>&lt;/td>
&lt;td>Sublinhado&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>Ctrl&lt;/code> + &lt;code>E&lt;/code>&lt;/td>
&lt;td>Alinhar ao centro&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>Ctrl&lt;/code> + &lt;code>L&lt;/code>&lt;/td>
&lt;td>Alinhar à esquerda&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>Ctrl&lt;/code> + &lt;code>R&lt;/code>&lt;/td>
&lt;td>Alinhar à direita&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>Ctrl&lt;/code> + &lt;code>]&lt;/code>&lt;/td>
&lt;td>Aumentar o tamanho da fonte&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>Ctrl&lt;/code> + &lt;code>[&lt;/code>&lt;/td>
&lt;td>Diminuir o tamanho da fonte&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>Ctrl&lt;/code> + &lt;code>C&lt;/code>&lt;/td>
&lt;td>Copiar&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>Ctrl&lt;/code> + &lt;code>V&lt;/code>&lt;/td>
&lt;td>Colar&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>Ctrl&lt;/code> + &lt;code>X&lt;/code>&lt;/td>
&lt;td>Recortar&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>Ctrl&lt;/code> + &lt;code>Z&lt;/code>&lt;/td>
&lt;td>Desfazer&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>Ctrl&lt;/code> + &lt;code>Y&lt;/code>&lt;/td>
&lt;td>Refazer a ação desfeita&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>Ctrl&lt;/code> + &lt;code>A&lt;/code>&lt;/td>
&lt;td>Selecionar tudo&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>Shift&lt;/code> + &lt;code>Teclas de Seta&lt;/code>&lt;/td>
&lt;td>Selecionar um intervalo&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>Ctrl&lt;/code> + &lt;code>F&lt;/code>&lt;/td>
&lt;td>Pesquisar texto&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>Ctrl&lt;/code> + &lt;code>H&lt;/code>&lt;/td>
&lt;td>Substituir texto&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>Ctrl&lt;/code> + &lt;code>P&lt;/code>&lt;/td>
&lt;td>Exibir visualização de impressão&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>Ctrl&lt;/code> + &lt;code>S&lt;/code>&lt;/td>
&lt;td>Salvar o documento&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>F12&lt;/code>&lt;/td>
&lt;td>Salvar como&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>Ctrl&lt;/code> + &lt;code>Home&lt;/code>&lt;/td>
&lt;td>Mover para o início do documento&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>Ctrl&lt;/code> + &lt;code>End&lt;/code>&lt;/td>
&lt;td>Mover para o final do documento&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;h2 id="referência">Referência
&lt;/h2>&lt;ul>
&lt;li>&lt;a class="link" href="https://support.microsoft.com/pt-br/office/word-%E3%81%AE%E3%82%AD%E3%83%BC%E3%83%9C%E3%83%BC%E3%83%89-%E3%82%B7%E3%83%A7%E3%83%BC%E3%83%88%E3%82%AB%E3%83%83%E3%83%88-95ef89dd-7142-4b50-afb2-f762f663ceb2" target="_blank" rel="noopener"
>Atalhos de teclado do Word&lt;/a>&lt;/li>
&lt;/ul></description></item><item><title>Extensão de atualização automática de páginas web (Add-on Edge)</title><link>http://kenji.blog/pt/p/web%E3%83%9A%E3%83%BC%E3%82%B8%E3%81%AE%E8%87%AA%E5%8B%95%E6%9B%B4%E6%96%B0%E3%83%96%E3%83%A9%E3%82%A6%E3%82%B6%E6%8B%A1%E5%BC%B5edge%E3%82%A2%E3%83%89%E3%82%AA%E3%83%B3/</link><pubDate>Sat, 06 Apr 2024 15:36:54 +0900</pubDate><guid>http://kenji.blog/pt/p/web%E3%83%9A%E3%83%BC%E3%82%B8%E3%81%AE%E8%87%AA%E5%8B%95%E6%9B%B4%E6%96%B0%E3%83%96%E3%83%A9%E3%82%A6%E3%82%B6%E6%8B%A1%E5%BC%B5edge%E3%82%A2%E3%83%89%E3%82%AA%E3%83%B3/</guid><description>&lt;img src="http://kenji.blog/p/web%E3%83%9A%E3%83%BC%E3%82%B8%E3%81%AE%E8%87%AA%E5%8B%95%E6%9B%B4%E6%96%B0%E3%83%96%E3%83%A9%E3%82%A6%E3%82%B6%E6%8B%A1%E5%BC%B5edge%E3%82%A2%E3%83%89%E3%82%AA%E3%83%B3/img.png" alt="Featured image of post Extensão de atualização automática de páginas web (Add-on Edge)" />&lt;p>Apresentamos o &amp;ldquo;Tab Auto Refresh&amp;rdquo;, uma extensão do navegador Edge que atualiza automaticamente as páginas web.&lt;/p>
&lt;h2 id="instalação-do-tab-auto-refresh">Instalação do Tab Auto Refresh
&lt;/h2>&lt;p>&lt;a class="link" href="https://microsoftedge.microsoft.com/addons/detail/%E3%82%BF%E3%83%96%E3%81%AE%E8%87%AA%E5%8B%95%E6%9B%B4%E6%96%B0/bicjibdndeejemialpbohjpiimehbapb" target="_blank" rel="noopener"
>Tab Auto Refresh&lt;/a>&lt;/p>
&lt;p>Acesse o site acima e clique em &lt;code>Instalar&lt;/code>.&lt;/p>
&lt;p>&lt;img src="http://kenji.blog/p/web%E3%83%9A%E3%83%BC%E3%82%B8%E3%81%AE%E8%87%AA%E5%8B%95%E6%9B%B4%E6%96%B0%E3%83%96%E3%83%A9%E3%82%A6%E3%82%B6%E6%8B%A1%E5%BC%B5edge%E3%82%A2%E3%83%89%E3%82%AA%E3%83%B3/img_2.png"
width="1273"
height="293"
srcset="http://kenji.blog/p/web%E3%83%9A%E3%83%BC%E3%82%B8%E3%81%AE%E8%87%AA%E5%8B%95%E6%9B%B4%E6%96%B0%E3%83%96%E3%83%A9%E3%82%A6%E3%82%B6%E6%8B%A1%E5%BC%B5edge%E3%82%A2%E3%83%89%E3%82%AA%E3%83%B3/img_2_hub66f442627eafd2aa9852e4d513af28c_23623_480x0_resize_box_3.png 480w, http://kenji.blog/p/web%E3%83%9A%E3%83%BC%E3%82%B8%E3%81%AE%E8%87%AA%E5%8B%95%E6%9B%B4%E6%96%B0%E3%83%96%E3%83%A9%E3%82%A6%E3%82%B6%E6%8B%A1%E5%BC%B5edge%E3%82%A2%E3%83%89%E3%82%AA%E3%83%B3/img_2_hub66f442627eafd2aa9852e4d513af28c_23623_1024x0_resize_box_3.png 1024w"
loading="lazy"
alt="img_2.png"
class="gallery-image"
data-flex-grow="434"
data-flex-basis="1042px"
>&lt;/p>
&lt;p>Clique em &lt;code>Adicionar extensão&lt;/code>.&lt;/p>
&lt;p>&lt;img src="http://kenji.blog/p/web%E3%83%9A%E3%83%BC%E3%82%B8%E3%81%AE%E8%87%AA%E5%8B%95%E6%9B%B4%E6%96%B0%E3%83%96%E3%83%A9%E3%82%A6%E3%82%B6%E6%8B%A1%E5%BC%B5edge%E3%82%A2%E3%83%89%E3%82%AA%E3%83%B3/img_3.png"
width="451"
height="117"
srcset="http://kenji.blog/p/web%E3%83%9A%E3%83%BC%E3%82%B8%E3%81%AE%E8%87%AA%E5%8B%95%E6%9B%B4%E6%96%B0%E3%83%96%E3%83%A9%E3%82%A6%E3%82%B6%E6%8B%A1%E5%BC%B5edge%E3%82%A2%E3%83%89%E3%82%AA%E3%83%B3/img_3_hu76927d4adfd21a9bc7e2622ce89ec4f1_7963_480x0_resize_box_3.png 480w, http://kenji.blog/p/web%E3%83%9A%E3%83%BC%E3%82%B8%E3%81%AE%E8%87%AA%E5%8B%95%E6%9B%B4%E6%96%B0%E3%83%96%E3%83%A9%E3%82%A6%E3%82%B6%E6%8B%A1%E5%BC%B5edge%E3%82%A2%E3%83%89%E3%82%AA%E3%83%B3/img_3_hu76927d4adfd21a9bc7e2622ce89ec4f1_7963_1024x0_resize_box_3.png 1024w"
loading="lazy"
alt="img_3.png"
class="gallery-image"
data-flex-grow="385"
data-flex-basis="925px"
>&lt;/p>
&lt;h2 id="como-usar">Como usar
&lt;/h2>&lt;p>Após a instalação, um ícone será adicionado no canto superior direito do Edge.&lt;/p>
&lt;p>&lt;img src="http://kenji.blog/p/web%E3%83%9A%E3%83%BC%E3%82%B8%E3%81%AE%E8%87%AA%E5%8B%95%E6%9B%B4%E6%96%B0%E3%83%96%E3%83%A9%E3%82%A6%E3%82%B6%E6%8B%A1%E5%BC%B5edge%E3%82%A2%E3%83%89%E3%82%AA%E3%83%B3/img_4.png"
width="67"
height="37"
srcset="http://kenji.blog/p/web%E3%83%9A%E3%83%BC%E3%82%B8%E3%81%AE%E8%87%AA%E5%8B%95%E6%9B%B4%E6%96%B0%E3%83%96%E3%83%A9%E3%82%A6%E3%82%B6%E6%8B%A1%E5%BC%B5edge%E3%82%A2%E3%83%89%E3%82%AA%E3%83%B3/img_4_hu2426c2158830cf89cd3747985b808d16_425_480x0_resize_box_3.png 480w, http://kenji.blog/p/web%E3%83%9A%E3%83%BC%E3%82%B8%E3%81%AE%E8%87%AA%E5%8B%95%E6%9B%B4%E6%96%B0%E3%83%96%E3%83%A9%E3%82%A6%E3%82%B6%E6%8B%A1%E5%BC%B5edge%E3%82%A2%E3%83%89%E3%82%AA%E3%83%B3/img_4_hu2426c2158830cf89cd3747985b808d16_425_1024x0_resize_box_3.png 1024w"
loading="lazy"
alt="img_4.png"
class="gallery-image"
data-flex-grow="181"
data-flex-basis="434px"
>&lt;/p>
&lt;p>Abra a página web que deseja atualizar automaticamente e clique no ícone para iniciar a atualização automática.&lt;/p>
&lt;p>&lt;img src="http://kenji.blog/p/web%E3%83%9A%E3%83%BC%E3%82%B8%E3%81%AE%E8%87%AA%E5%8B%95%E6%9B%B4%E6%96%B0%E3%83%96%E3%83%A9%E3%82%A6%E3%82%B6%E6%8B%A1%E5%BC%B5edge%E3%82%A2%E3%83%89%E3%82%AA%E3%83%B3/img_1.png"
width="565"
height="345"
srcset="http://kenji.blog/p/web%E3%83%9A%E3%83%BC%E3%82%B8%E3%81%AE%E8%87%AA%E5%8B%95%E6%9B%B4%E6%96%B0%E3%83%96%E3%83%A9%E3%82%A6%E3%82%B6%E6%8B%A1%E5%BC%B5edge%E3%82%A2%E3%83%89%E3%82%AA%E3%83%B3/img_1_hu36cf9795d5097e9109b83445e7aae628_79361_480x0_resize_box_3.png 480w, http://kenji.blog/p/web%E3%83%9A%E3%83%BC%E3%82%B8%E3%81%AE%E8%87%AA%E5%8B%95%E6%9B%B4%E6%96%B0%E3%83%96%E3%83%A9%E3%82%A6%E3%82%B6%E6%8B%A1%E5%BC%B5edge%E3%82%A2%E3%83%89%E3%82%AA%E3%83%B3/img_1_hu36cf9795d5097e9109b83445e7aae628_79361_1024x0_resize_box_3.png 1024w"
loading="lazy"
alt="img_1.png"
class="gallery-image"
data-flex-grow="163"
data-flex-basis="393px"
>&lt;/p>
&lt;p>A área destacada em verde é o intervalo de atualização automática. Selecione o momento em que deseja que a atualização automática ocorra.&lt;/p>
&lt;p>Para parar a atualização automática, clique no ícone e depois clique em &lt;code>Stop reloading this tab&lt;/code>.&lt;/p>
&lt;p>&lt;img src="http://kenji.blog/p/web%E3%83%9A%E3%83%BC%E3%82%B8%E3%81%AE%E8%87%AA%E5%8B%95%E6%9B%B4%E6%96%B0%E3%83%96%E3%83%A9%E3%82%A6%E3%82%B6%E6%8B%A1%E5%BC%B5edge%E3%82%A2%E3%83%89%E3%82%AA%E3%83%B3/img_5.png"
width="565"
height="395"
srcset="http://kenji.blog/p/web%E3%83%9A%E3%83%BC%E3%82%B8%E3%81%AE%E8%87%AA%E5%8B%95%E6%9B%B4%E6%96%B0%E3%83%96%E3%83%A9%E3%82%A6%E3%82%B6%E6%8B%A1%E5%BC%B5edge%E3%82%A2%E3%83%89%E3%82%AA%E3%83%B3/img_5_hud3ff5692d970d8f2ac1fd8633c8cc9ef_79989_480x0_resize_box_3.png 480w, http://kenji.blog/p/web%E3%83%9A%E3%83%BC%E3%82%B8%E3%81%AE%E8%87%AA%E5%8B%95%E6%9B%B4%E6%96%B0%E3%83%96%E3%83%A9%E3%82%A6%E3%82%B6%E6%8B%A1%E5%BC%B5edge%E3%82%A2%E3%83%89%E3%82%AA%E3%83%B3/img_5_hud3ff5692d970d8f2ac1fd8633c8cc9ef_79989_1024x0_resize_box_3.png 1024w"
loading="lazy"
alt="img_5.png"
class="gallery-image"
data-flex-grow="143"
data-flex-basis="343px"
>&lt;/p></description></item><item><title>Lista de Atalhos do Visual Studio</title><link>http://kenji.blog/pt/p/lista-de-atalhos-do-visual-studio/</link><pubDate>Sat, 06 Apr 2024 11:27:37 +0900</pubDate><guid>http://kenji.blog/pt/p/lista-de-atalhos-do-visual-studio/</guid><description>&lt;img src="http://kenji.blog/p/visual-studio-%E3%82%B7%E3%83%A7%E3%83%BC%E3%83%88%E3%82%AB%E3%83%83%E3%83%88%E4%B8%80%E8%A6%A7/img.png" alt="Featured image of post Lista de Atalhos do Visual Studio" />&lt;h1 id="lista-de-atalhos-do-visual-studio">Lista de Atalhos do Visual Studio
&lt;/h1>&lt;p>Fiz uma lista dos atalhos do Visual Studio que uso com frequência pessoalmente.
Ao memorizar os atalhos de teclado do Visual Studio, você pode trabalhar no desenvolvimento de forma mais eficiente. Por favor, tente usá-los.&lt;/p>
&lt;p>※Verificado no Visual Studio 2022.&lt;/p>
&lt;table>
&lt;thead>
&lt;tr>
&lt;th>Tecla de atalho&lt;/th>
&lt;th>Descrição&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>&lt;code>F1&lt;/code>&lt;/td>
&lt;td>Exibir ajuda da palavra selecionada&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>F2&lt;/code>&lt;/td>
&lt;td>Ir para o marcador&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>Ctrl&lt;/code> + &lt;code>F2&lt;/code>&lt;/td>
&lt;td>Adicionar um marcador&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>Ctrl&lt;/code> + &lt;code>Shift&lt;/code> + &lt;code>F2&lt;/code>&lt;/td>
&lt;td>Remover todos os marcadores&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>F5&lt;/code>&lt;/td>
&lt;td>Compilar e executar (com depuração)&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>Ctrl&lt;/code> + &lt;code>F5&lt;/code>&lt;/td>
&lt;td>Compilar e executar (sem depuração)&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>F7&lt;/code>&lt;/td>
&lt;td>Compilar&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>F9&lt;/code>&lt;/td>
&lt;td>Adicionar ponto de interrupção na linha atual&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>Ctrl&lt;/code> + &lt;code>F9&lt;/code>&lt;/td>
&lt;td>Desativar ponto de interrupção na linha atual&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>Shift&lt;/code> + &lt;code>Ctrl&lt;/code> + &lt;code>F9&lt;/code>&lt;/td>
&lt;td>Remover todos os pontos de interrupção&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>F10&lt;/code>&lt;/td>
&lt;td>Passar por cima (Step over)&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>F11&lt;/code>&lt;/td>
&lt;td>Entrar (Step in)&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>F12&lt;/code>&lt;/td>
&lt;td>Ir para definição&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>Ctrl&lt;/code> + &lt;code>D&lt;/code>&lt;/td>
&lt;td>Duplicar a linha atual&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>Ctrl&lt;/code> + &lt;code>X&lt;/code>&lt;/td>
&lt;td>Cortar a linha (quando não houver seleção)&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>Ctrl&lt;/code> + &lt;code>Shift&lt;/code> + &lt;code>]&lt;/code>&lt;/td>
&lt;td>Selecionar até o par correspondente do parêntese/chave na posição do cursor&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>Alt&lt;/code> + &lt;code>Setas para cima/baixo&lt;/code>&lt;/td>
&lt;td>Mover a linha atual para cima ou para baixo&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>Alt&lt;/code> + &lt;code>Shift&lt;/code> + &lt;code>Setas&lt;/code>&lt;/td>
&lt;td>Multi-cursor/seleção em bloco&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>Ctrl&lt;/code> + &lt;code>Tab&lt;/code>&lt;/td>
&lt;td>Alternar exibição do código-fonte/janela&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>Ctrl&lt;/code> + &lt;code>Shift&lt;/code> + &lt;code>V&lt;/code>&lt;/td>
&lt;td>Exibir histórico da área de transferência&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>Ctrl&lt;/code> + &lt;code>K&lt;/code> e depois &lt;code>Ctrl&lt;/code> + &lt;code>C&lt;/code>&lt;/td>
&lt;td>Comentar a linha atual&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>Ctrl&lt;/code> + &lt;code>K&lt;/code> e depois &lt;code>Ctrl&lt;/code> + &lt;code>U&lt;/code>&lt;/td>
&lt;td>Descomentar a linha atual&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>Ctrl&lt;/code> + &lt;code>G&lt;/code>&lt;/td>
&lt;td>Ir para a linha especificada&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>Ctrl&lt;/code> + &lt;code>F&lt;/code>&lt;/td>
&lt;td>Pesquisar&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>Ctrl&lt;/code> + &lt;code>Shift&lt;/code> + &lt;code>F&lt;/code>&lt;/td>
&lt;td>Pesquisa global&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>Ctrl&lt;/code> + &lt;code>H&lt;/code>&lt;/td>
&lt;td>Substituir&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>Ctrl&lt;/code> + &lt;code>Shift&lt;/code> + &lt;code>F&lt;/code>&lt;/td>
&lt;td>Substituição global&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>Ctrl&lt;/code> + &lt;code>Tab&lt;/code>&lt;/td>
&lt;td>Alternar exibição do código-fonte/janela&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>Ctrl&lt;/code> + &lt;code>Space&lt;/code>&lt;/td>
&lt;td>Autocompletar palavras&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>Ctrl&lt;/code> + &lt;code>Alt&lt;/code> + &lt;code>L&lt;/code>&lt;/td>
&lt;td>Abrir a janela do Gerenciador de Soluções&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>Ctrl&lt;/code> + &lt;code>Shift&lt;/code> + &lt;code>E&lt;/code>&lt;/td>
&lt;td>Abrir a janela de Exibição de Recursos&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>Ctrl&lt;/code> + &lt;code>0&lt;/code> e depois &lt;code>Ctrl&lt;/code> + &lt;code>G&lt;/code>&lt;/td>
&lt;td>Abrir a janela de Commit do Git&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;h2 id="referência">Referência
&lt;/h2>&lt;ul>
&lt;li>&lt;a class="link" href="https://learn.microsoft.com/ja-jp/visualstudio/ide/default-keyboard-shortcuts-in-visual-studio?view=vs-2022&amp;amp;utm_source=vshelp&amp;amp;wt.mc_id=visualstudio_inproduct_shortcuts_csaapp" target="_blank" rel="noopener"
>Atalhos de teclado padrão no Visual Studio&lt;/a>&lt;/li>
&lt;/ul>
&lt;p>&lt;img src="http://kenji.blog/p/visual-studio-%E3%82%B7%E3%83%A7%E3%83%BC%E3%83%88%E3%82%AB%E3%83%83%E3%83%88%E4%B8%80%E8%A6%A7/img_1.png"
width="1094"
height="823"
srcset="http://kenji.blog/p/visual-studio-%E3%82%B7%E3%83%A7%E3%83%BC%E3%83%88%E3%82%AB%E3%83%83%E3%83%88%E4%B8%80%E8%A6%A7/img_1_hu4eaca85d6437d1dd6b23efd21afacc82_582969_480x0_resize_box_3.png 480w, http://kenji.blog/p/visual-studio-%E3%82%B7%E3%83%A7%E3%83%BC%E3%83%88%E3%82%AB%E3%83%83%E3%83%88%E4%B8%80%E8%A6%A7/img_1_hu4eaca85d6437d1dd6b23efd21afacc82_582969_1024x0_resize_box_3.png 1024w"
loading="lazy"
alt="img_1.png"
class="gallery-image"
data-flex-grow="132"
data-flex-basis="319px"
>&lt;/p></description></item><item><title>Adicionar o Hidemaru Editor grep ao menu de contexto do Explorer</title><link>http://kenji.blog/pt/p/adicionar-hidemaru-editor-grep-ao-menu-de-contexto-do-explorer/</link><pubDate>Wed, 03 Apr 2024 00:00:46 +0900</pubDate><guid>http://kenji.blog/pt/p/adicionar-hidemaru-editor-grep-ao-menu-de-contexto-do-explorer/</guid><description>&lt;img src="http://kenji.blog/p/%E3%82%A8%E3%82%AF%E3%82%B9%E3%83%97%E3%83%AD%E3%83%BC%E3%83%A9%E3%83%BC%E3%81%AE%E5%8F%B3%E3%82%AF%E3%83%AA%E3%83%83%E3%82%AF%E3%83%A1%E3%83%8B%E3%83%A5%E3%83%BC%E3%81%AB%E7%A7%80%E4%B8%B8%E3%82%A8%E3%83%87%E3%82%A3%E3%82%BFgrep%E3%82%92%E8%BF%BD%E5%8A%A0%E3%81%99%E3%82%8B/img.png" alt="Featured image of post Adicionar o Hidemaru Editor grep ao menu de contexto do Explorer" />&lt;p>Aqui mostramos como adicionar o grep do Hidemaru Editor ao menu de contexto (clique com o botão direito) do Explorer no Windows 10/11.&lt;/p>
&lt;p>&lt;strong>Aviso: O procedimento a seguir altera o registro. Faça por sua própria conta e risco.&lt;/strong>&lt;/p>
&lt;h2 id="procedimento">Procedimento
&lt;/h2>&lt;ol>
&lt;li>Abra o link abaixo e salve em qualquer pasta.&lt;/li>
&lt;/ol>
&lt;p>&lt;a class="link" href="%e7%a7%80%e4%b8%b8%e3%83%ac%e3%82%b8%e3%82%b9%e3%83%88%e3%83%aa%e7%99%bb%e9%8c%b2.reg" >秀丸レジストリ登録.reg&lt;/a>&lt;/p>
&lt;ol start="2">
&lt;li>Dê um duplo clique no arquivo &lt;code>秀丸レジストリ登録.reg&lt;/code> para adicioná-lo ao registro.&lt;/li>
&lt;/ol>
&lt;h2 id="referência">Referência
&lt;/h2>&lt;ul>
&lt;li>&lt;a class="link" href="https://aimek-developer.blogspot.com/2019/02/grep.html" target="_blank" rel="noopener"
>秀丸grepをフォルダの右クリックメニューから行う&lt;/a>&lt;/li>
&lt;/ul></description></item><item><title>O que é o Paradoxo do Aniversário?</title><link>http://kenji.blog/pt/p/%E3%83%90%E3%83%BC%E3%82%B9%E3%83%87%E3%82%A4%E3%83%91%E3%83%A9%E3%83%89%E3%83%83%E3%82%AF%E3%82%B9%E3%81%A8%E3%81%AF/</link><pubDate>Tue, 02 Apr 2024 01:20:50 +0900</pubDate><guid>http://kenji.blog/pt/p/%E3%83%90%E3%83%BC%E3%82%B9%E3%83%87%E3%82%A4%E3%83%91%E3%83%A9%E3%83%89%E3%83%83%E3%82%AF%E3%82%B9%E3%81%A8%E3%81%AF/</guid><description>&lt;img src="http://kenji.blog/p/%E3%83%90%E3%83%BC%E3%82%B9%E3%83%87%E3%82%A4%E3%83%91%E3%83%A9%E3%83%89%E3%83%83%E3%82%AF%E3%82%B9%E3%81%A8%E3%81%AF/img.png" alt="Featured image of post O que é o Paradoxo do Aniversário?" />&lt;h2 id="você-conhece-o-paradoxo-do-aniversário">Você conhece o Paradoxo do Aniversário?
&lt;/h2>&lt;p>Vou contar uma história um pouco intrigante.
Para a &amp;ldquo;probabilidade de haver pessoas com o mesmo aniversário&amp;rdquo; ser alta, quantas pessoas você acha que precisam se reunir?&lt;/p>
&lt;p>Por exemplo, um ano tem 365 dias, então quando dizem que &amp;ldquo;se 23 pessoas se reunirem, a probabilidade de alguém compartilhar o aniversário é superior a 50%&amp;rdquo;&amp;hellip; de alguma forma, parece ir contra a intuição.&lt;/p>
&lt;p>Mas isso &lt;strong>realmente é mais de 50%.&lt;/strong>&lt;/p>
&lt;hr>
&lt;h2 id="por-que-isso-acontece">Por que isso acontece?
&lt;/h2>&lt;p>Esse fenômeno é chamado de &amp;ldquo;Paradoxo do Aniversário&amp;rdquo;.
O nome diz &amp;ldquo;paradoxo&amp;rdquo; (contra-senso), mas há uma razão matemática sólida.&lt;/p>
&lt;p>Quando o número de pessoas é &amp;ldquo;n&amp;rdquo;, &lt;strong>a probabilidade de ninguém compartilhar o aniversário&lt;/strong> é calculada pela seguinte fórmula:&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">P(ninguém compartilha) = 365/365 × 364/365 × 363/365 × ... × (365 - n + 1)/365
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>Subtraindo isso de 1, obtemos a &amp;ldquo;probabilidade de compartilhar com alguém&amp;rdquo;.&lt;/p>
&lt;hr>
&lt;h2 id="observando-os-resultados">Observando os resultados&amp;hellip;
&lt;/h2>&lt;table>
&lt;thead>
&lt;tr>
&lt;th>Número de Pessoas&lt;/th>
&lt;th>Probabilidade de haver pessoas com o mesmo aniversário&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>10 pessoas&lt;/td>
&lt;td>Cerca de 11.7%&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>20 pessoas&lt;/td>
&lt;td>Cerca de 41.1%&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>23 pessoas&lt;/td>
&lt;td>&lt;strong>Cerca de 50.7% (Preste atenção aqui!)&lt;/strong>&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>30 pessoas&lt;/td>
&lt;td>Cerca de 70.6%&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>70 pessoas&lt;/td>
&lt;td>&lt;strong>Incríveis 99.9%!&lt;/strong>&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;p>Em outras palavras, com apenas &lt;strong>23 pessoas&lt;/strong> , há mais de 50% de chance de alguém compartilhar o aniversário.
Isso se aplica facilmente a uma sala de aula ou a uma reunião de trabalho.&lt;/p>
&lt;hr>
&lt;h2 id="resumo-a-diferença-entre-a-intuição-e-a-matemática-é-fascinante">Resumo: A diferença entre a intuição e a matemática é fascinante
&lt;/h2>&lt;p>O &amp;ldquo;Paradoxo do Aniversário&amp;rdquo; é um exemplo interessante de como nossa intuição e a probabilidade matemática real divergem.
Saber sobre coisas assim pode animar pequenas conversas e quizzes!&lt;/p>
&lt;hr>
&lt;h2 id="links-de-referência">Links de Referência
&lt;/h2>&lt;ul>
&lt;li>&lt;a class="link" href="https://ja.wikipedia.org/wiki/%E8%AA%95%E7%94%9F%E6%97%A5%E3%81%AE%E3%83%91%E3%83%A9%E3%83%89%E3%83%83%E3%82%AF%E3%82%B9" target="_blank" rel="noopener"
>Paradoxo do Aniversário (Wikipedia)&lt;/a>&lt;/li>
&lt;/ul></description></item><item><title>Como usar a Ferramenta de Captura</title><link>http://kenji.blog/pt/p/como-usar-a-ferramenta-de-captura/</link><pubDate>Mon, 01 Apr 2024 23:19:45 +0900</pubDate><guid>http://kenji.blog/pt/p/como-usar-a-ferramenta-de-captura/</guid><description>&lt;img src="http://kenji.blog/p/snipping-tool%E3%81%AE%E4%BD%BF%E3%81%84%E6%96%B9/img.png" alt="Featured image of post Como usar a Ferramenta de Captura" />&lt;h2 id="o-que-é-a-ferramenta-de-captura">O que é a Ferramenta de Captura
&lt;/h2>&lt;p>A Ferramenta de Captura (Snipping Tool) é uma ferramenta de captura de tela integrada ao Windows. Você pode usá-la para recortar e salvar uma parte da tela, capturar a tela inteira ou gravar a tela.&lt;/p>
&lt;h2 id="como-iniciar-a-ferramenta-de-captura">Como iniciar a Ferramenta de Captura
&lt;/h2>&lt;p>Existem principalmente 3 maneiras de iniciá-la:&lt;/p>
&lt;ul>
&lt;li>Pressione a tecla &lt;code>Win&lt;/code>, digite &lt;code>Snipping Tool&lt;/code> e pressione a tecla &lt;code>Enter&lt;/code>.&lt;/li>
&lt;li>Pressione as teclas &lt;code>Win&lt;/code> + &lt;code>Shift&lt;/code> + &lt;code>S&lt;/code>.&lt;/li>
&lt;li>Pressione as teclas &lt;code>Win&lt;/code> + &lt;code>R&lt;/code>, digite &lt;code>snippingtool&lt;/code> e pressione a tecla &lt;code>Enter&lt;/code>.&lt;/li>
&lt;/ul>
&lt;h2 id="como-usar-a-ferramenta-de-captura">Como usar a Ferramenta de Captura
&lt;/h2>&lt;p>&lt;img src="http://kenji.blog/p/snipping-tool%E3%81%AE%E4%BD%BF%E3%81%84%E6%96%B9/img_1.png"
width="502"
height="233"
srcset="http://kenji.blog/p/snipping-tool%E3%81%AE%E4%BD%BF%E3%81%84%E6%96%B9/img_1_hu247f0b306a45625cfd47c1bc5c2f693d_7300_480x0_resize_box_3.png 480w, http://kenji.blog/p/snipping-tool%E3%81%AE%E4%BD%BF%E3%81%84%E6%96%B9/img_1_hu247f0b306a45625cfd47c1bc5c2f693d_7300_1024x0_resize_box_3.png 1024w"
loading="lazy"
alt="img_1.png"
class="gallery-image"
data-flex-grow="215"
data-flex-basis="517px"
>&lt;/p>
&lt;h3 id="as-etapas-para-salvar-uma-imagem-capturada-são-as-seguintes">As etapas para salvar uma imagem capturada são as seguintes:
&lt;/h3>&lt;ol>
&lt;li>Selecione o ícone de &lt;code>Câmera&lt;/code>.&lt;/li>
&lt;li>Clique no botão &lt;code>Novo&lt;/code>.&lt;/li>
&lt;li>Selecione a área que deseja capturar.&lt;/li>
&lt;li>Clique no botão &lt;code>Salvar como&lt;/code>.&lt;/li>
&lt;li>Insira o local de salvamento e o nome do arquivo, e salve.&lt;/li>
&lt;/ol>
&lt;h3 id="as-etapas-para-gravar-e-salvar-um-vídeo-capturado-são-as-seguintes">As etapas para gravar e salvar um vídeo capturado são as seguintes:
&lt;/h3>&lt;ol>
&lt;li>Selecione o ícone de &lt;code>Vídeo&lt;/code>.&lt;/li>
&lt;li>Clique no botão &lt;code>Novo&lt;/code>.&lt;/li>
&lt;li>Selecione a área que deseja capturar.&lt;/li>
&lt;li>Clique no botão &lt;code>Iniciar&lt;/code>.&lt;/li>
&lt;li>Grave a tela.&lt;/li>
&lt;li>Clique no botão &lt;code>Parar&lt;/code>.&lt;/li>
&lt;li>Clique no botão &lt;code>Salvar como&lt;/code>.&lt;/li>
&lt;li>Insira o local de salvamento e o nome do arquivo, e salve.&lt;/li>
&lt;/ol>
&lt;h2 id="referência">Referência
&lt;/h2>&lt;ul>
&lt;li>&lt;a class="link" href="https://support.microsoft.com/ja-jp/windows/snipping-tool-%E3%82%92%E4%BD%BF%E3%81%A3%E3%81%A6%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3-%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88%E3%82%92%E3%82%AD%E3%83%A3%E3%83%97%E3%83%81%E3%83%A3%E3%81%99%E3%82%8B-00246869-1843-655f-f220-97299b865f6b" target="_blank" rel="noopener"
>Usar a Ferramenta de Captura para capturar capturas de tela&lt;/a>&lt;/li>
&lt;/ul></description></item><item><title>Como criar um atalho para bloquear o computador</title><link>http://kenji.blog/pt/p/como-criar-um-atalho-para-bloquear-o-computador/</link><pubDate>Mon, 01 Apr 2024 01:37:49 +0900</pubDate><guid>http://kenji.blog/pt/p/como-criar-um-atalho-para-bloquear-o-computador/</guid><description>&lt;img src="http://kenji.blog/p/%E3%82%B3%E3%83%B3%E3%83%94%E3%83%A5%E3%83%BC%E3%82%BF%E3%83%BC%E3%82%92%E3%83%AD%E3%83%83%E3%82%AF%E3%81%99%E3%82%8B%E3%82%B7%E3%83%A7%E3%83%BC%E3%83%88%E3%82%AB%E3%83%83%E3%83%88%E3%82%92%E4%BD%9C%E6%88%90%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95/img.png" alt="Featured image of post Como criar um atalho para bloquear o computador" />&lt;p>Aqui está como criar um atalho para bloquear o computador.&lt;/p>
&lt;p>É conveniente porque você pode bloquear seu computador apenas clicando duas vezes no atalho criado em sua área de trabalho.&lt;/p>
&lt;h2 id="como-criar">Como criar
&lt;/h2>&lt;h4 id="1-clique-com-o-botão-direito-na-área-de-trabalho-selecione-novo--atalho">1. Clique com o botão direito na área de trabalho, selecione &lt;code>Novo&lt;/code> &amp;gt; &lt;code>Atalho&lt;/code>
&lt;/h4>&lt;p>&lt;img src="http://kenji.blog/p/%E3%82%B3%E3%83%B3%E3%83%94%E3%83%A5%E3%83%BC%E3%82%BF%E3%83%BC%E3%82%92%E3%83%AD%E3%83%83%E3%82%AF%E3%81%99%E3%82%8B%E3%82%B7%E3%83%A7%E3%83%BC%E3%83%88%E3%82%AB%E3%83%83%E3%83%88%E3%82%92%E4%BD%9C%E6%88%90%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95/img_2.png"
width="497"
height="310"
srcset="http://kenji.blog/p/%E3%82%B3%E3%83%B3%E3%83%94%E3%83%A5%E3%83%BC%E3%82%BF%E3%83%BC%E3%82%92%E3%83%AD%E3%83%83%E3%82%AF%E3%81%99%E3%82%8B%E3%82%B7%E3%83%A7%E3%83%BC%E3%83%88%E3%82%AB%E3%83%83%E3%83%88%E3%82%92%E4%BD%9C%E6%88%90%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95/img_2_hu68fc7215f5b611a42509ec28239f03ed_82746_480x0_resize_box_3.png 480w, http://kenji.blog/p/%E3%82%B3%E3%83%B3%E3%83%94%E3%83%A5%E3%83%BC%E3%82%BF%E3%83%BC%E3%82%92%E3%83%AD%E3%83%83%E3%82%AF%E3%81%99%E3%82%8B%E3%82%B7%E3%83%A7%E3%83%BC%E3%83%88%E3%82%AB%E3%83%83%E3%83%88%E3%82%92%E4%BD%9C%E6%88%90%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95/img_2_hu68fc7215f5b611a42509ec28239f03ed_82746_1024x0_resize_box_3.png 1024w"
loading="lazy"
alt="img_2.png"
class="gallery-image"
data-flex-grow="160"
data-flex-basis="384px"
>&lt;/p>
&lt;h4 id="2-a-tela-de-criação-de-atalho-aparecerá-digite-rundll32exe-user32dlllockworkstation-e-clique-em-avançar">2. A tela de criação de atalho aparecerá, digite &lt;code>rundll32.exe user32.dll,LockWorkStation&lt;/code> e clique em &lt;code>Avançar&lt;/code>
&lt;/h4>&lt;p>&lt;img src="http://kenji.blog/p/%E3%82%B3%E3%83%B3%E3%83%94%E3%83%A5%E3%83%BC%E3%82%BF%E3%83%BC%E3%82%92%E3%83%AD%E3%83%83%E3%82%AF%E3%81%99%E3%82%8B%E3%82%B7%E3%83%A7%E3%83%BC%E3%83%88%E3%82%AB%E3%83%83%E3%83%88%E3%82%92%E4%BD%9C%E6%88%90%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95/img_1.png"
width="614"
height="454"
srcset="http://kenji.blog/p/%E3%82%B3%E3%83%B3%E3%83%94%E3%83%A5%E3%83%BC%E3%82%BF%E3%83%BC%E3%82%92%E3%83%AD%E3%83%83%E3%82%AF%E3%81%99%E3%82%8B%E3%82%B7%E3%83%A7%E3%83%BC%E3%83%88%E3%82%AB%E3%83%83%E3%83%88%E3%82%92%E4%BD%9C%E6%88%90%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95/img_1_hu0d4835ef465704aabd38109d760b63eb_14728_480x0_resize_box_3.png 480w, http://kenji.blog/p/%E3%82%B3%E3%83%B3%E3%83%94%E3%83%A5%E3%83%BC%E3%82%BF%E3%83%BC%E3%82%92%E3%83%AD%E3%83%83%E3%82%AF%E3%81%99%E3%82%8B%E3%82%B7%E3%83%A7%E3%83%BC%E3%83%88%E3%82%AB%E3%83%83%E3%83%88%E3%82%92%E4%BD%9C%E6%88%90%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95/img_1_hu0d4835ef465704aabd38109d760b63eb_14728_1024x0_resize_box_3.png 1024w"
loading="lazy"
alt="img_1.png"
class="gallery-image"
data-flex-grow="135"
data-flex-basis="324px"
>&lt;/p>
&lt;h4 id="3-digite-o-nome-do-atalho-bloquear-computador-e-clique-em-concluir">3. Digite o nome do atalho &lt;code>Bloquear Computador&lt;/code> e clique em &lt;code>Concluir&lt;/code>
&lt;/h4>&lt;p>&lt;img src="http://kenji.blog/p/%E3%82%B3%E3%83%B3%E3%83%94%E3%83%A5%E3%83%BC%E3%82%BF%E3%83%BC%E3%82%92%E3%83%AD%E3%83%83%E3%82%AF%E3%81%99%E3%82%8B%E3%82%B7%E3%83%A7%E3%83%BC%E3%83%88%E3%82%AB%E3%83%83%E3%83%88%E3%82%92%E4%BD%9C%E6%88%90%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95/img_3.png"
width="614"
height="454"
srcset="http://kenji.blog/p/%E3%82%B3%E3%83%B3%E3%83%94%E3%83%A5%E3%83%BC%E3%82%BF%E3%83%BC%E3%82%92%E3%83%AD%E3%83%83%E3%82%AF%E3%81%99%E3%82%8B%E3%82%B7%E3%83%A7%E3%83%BC%E3%83%88%E3%82%AB%E3%83%83%E3%83%88%E3%82%92%E4%BD%9C%E6%88%90%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95/img_3_hu44e1aec8e86c339d674a378757ec4650_12577_480x0_resize_box_3.png 480w, http://kenji.blog/p/%E3%82%B3%E3%83%B3%E3%83%94%E3%83%A5%E3%83%BC%E3%82%BF%E3%83%BC%E3%82%92%E3%83%AD%E3%83%83%E3%82%AF%E3%81%99%E3%82%8B%E3%82%B7%E3%83%A7%E3%83%BC%E3%83%88%E3%82%AB%E3%83%83%E3%83%88%E3%82%92%E4%BD%9C%E6%88%90%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95/img_3_hu44e1aec8e86c339d674a378757ec4650_12577_1024x0_resize_box_3.png 1024w"
loading="lazy"
alt="img_3.png"
class="gallery-image"
data-flex-grow="135"
data-flex-basis="324px"
>&lt;/p>
&lt;h4 id="4-altere-o-ícone-do-atalho-criado">4. Altere o ícone do atalho criado
&lt;/h4>&lt;p>Clique com o botão direito no atalho criado e selecione &lt;code>Propriedades&lt;/code>&lt;/p>
&lt;p>&lt;img src="http://kenji.blog/p/%E3%82%B3%E3%83%B3%E3%83%94%E3%83%A5%E3%83%BC%E3%82%BF%E3%83%BC%E3%82%92%E3%83%AD%E3%83%83%E3%82%AF%E3%81%99%E3%82%8B%E3%82%B7%E3%83%A7%E3%83%BC%E3%83%88%E3%82%AB%E3%83%83%E3%83%88%E3%82%92%E4%BD%9C%E6%88%90%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95/img_4.png"
width="368"
height="376"
srcset="http://kenji.blog/p/%E3%82%B3%E3%83%B3%E3%83%94%E3%83%A5%E3%83%BC%E3%82%BF%E3%83%BC%E3%82%92%E3%83%AD%E3%83%83%E3%82%AF%E3%81%99%E3%82%8B%E3%82%B7%E3%83%A7%E3%83%BC%E3%83%88%E3%82%AB%E3%83%83%E3%83%88%E3%82%92%E4%BD%9C%E6%88%90%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95/img_4_hufea304b74b77df48eaf897c362c80395_24161_480x0_resize_box_3.png 480w, http://kenji.blog/p/%E3%82%B3%E3%83%B3%E3%83%94%E3%83%A5%E3%83%BC%E3%82%BF%E3%83%BC%E3%82%92%E3%83%AD%E3%83%83%E3%82%AF%E3%81%99%E3%82%8B%E3%82%B7%E3%83%A7%E3%83%BC%E3%83%88%E3%82%AB%E3%83%83%E3%83%88%E3%82%92%E4%BD%9C%E6%88%90%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95/img_4_hufea304b74b77df48eaf897c362c80395_24161_1024x0_resize_box_3.png 1024w"
loading="lazy"
alt="img_4.png"
class="gallery-image"
data-flex-grow="97"
data-flex-basis="234px"
>&lt;/p>
&lt;p>Clique em &lt;code>Alterar Ícone&lt;/code>&lt;/p>
&lt;p>&lt;img src="http://kenji.blog/p/%E3%82%B3%E3%83%B3%E3%83%94%E3%83%A5%E3%83%BC%E3%82%BF%E3%83%BC%E3%82%92%E3%83%AD%E3%83%83%E3%82%AF%E3%81%99%E3%82%8B%E3%82%B7%E3%83%A7%E3%83%BC%E3%83%88%E3%82%AB%E3%83%83%E3%83%88%E3%82%92%E4%BD%9C%E6%88%90%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95/img_6.png"
width="421"
height="580"
srcset="http://kenji.blog/p/%E3%82%B3%E3%83%B3%E3%83%94%E3%83%A5%E3%83%BC%E3%82%BF%E3%83%BC%E3%82%92%E3%83%AD%E3%83%83%E3%82%AF%E3%81%99%E3%82%8B%E3%82%B7%E3%83%A7%E3%83%BC%E3%83%88%E3%82%AB%E3%83%83%E3%83%88%E3%82%92%E4%BD%9C%E6%88%90%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95/img_6_hua3af668a56a5a3efe3d9cfc5e6b2ac17_19464_480x0_resize_box_3.png 480w, http://kenji.blog/p/%E3%82%B3%E3%83%B3%E3%83%94%E3%83%A5%E3%83%BC%E3%82%BF%E3%83%BC%E3%82%92%E3%83%AD%E3%83%83%E3%82%AF%E3%81%99%E3%82%8B%E3%82%B7%E3%83%A7%E3%83%BC%E3%83%88%E3%82%AB%E3%83%83%E3%83%88%E3%82%92%E4%BD%9C%E6%88%90%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95/img_6_hua3af668a56a5a3efe3d9cfc5e6b2ac17_19464_1024x0_resize_box_3.png 1024w"
loading="lazy"
alt="img_6.png"
class="gallery-image"
data-flex-grow="72"
data-flex-basis="174px"
>&lt;/p>
&lt;p>Selecione o ícone do cadeado amarelo e clique em &lt;code>OK&lt;/code>, então clique em &lt;code>OK&lt;/code> novamente para fechar as propriedades&lt;/p>
&lt;p>&lt;img src="http://kenji.blog/p/%E3%82%B3%E3%83%B3%E3%83%94%E3%83%A5%E3%83%BC%E3%82%BF%E3%83%BC%E3%82%92%E3%83%AD%E3%83%83%E3%82%AF%E3%81%99%E3%82%8B%E3%82%B7%E3%83%A7%E3%83%BC%E3%83%88%E3%82%AB%E3%83%83%E3%83%88%E3%82%92%E4%BD%9C%E6%88%90%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95/img_5.png"
width="340"
height="420"
srcset="http://kenji.blog/p/%E3%82%B3%E3%83%B3%E3%83%94%E3%83%A5%E3%83%BC%E3%82%BF%E3%83%BC%E3%82%92%E3%83%AD%E3%83%83%E3%82%AF%E3%81%99%E3%82%8B%E3%82%B7%E3%83%A7%E3%83%BC%E3%83%88%E3%82%AB%E3%83%83%E3%83%88%E3%82%92%E4%BD%9C%E6%88%90%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95/img_5_hud49e429cd2963712e519c6e541751db5_41795_480x0_resize_box_3.png 480w, http://kenji.blog/p/%E3%82%B3%E3%83%B3%E3%83%94%E3%83%A5%E3%83%BC%E3%82%BF%E3%83%BC%E3%82%92%E3%83%AD%E3%83%83%E3%82%AF%E3%81%99%E3%82%8B%E3%82%B7%E3%83%A7%E3%83%BC%E3%83%88%E3%82%AB%E3%83%83%E3%83%88%E3%82%92%E4%BD%9C%E6%88%90%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95/img_5_hud49e429cd2963712e519c6e541751db5_41795_1024x0_resize_box_3.png 1024w"
loading="lazy"
alt="img_5.png"
class="gallery-image"
data-flex-grow="80"
data-flex-basis="194px"
>&lt;/p>
&lt;p>É isso.&lt;/p>
&lt;p>&lt;img src="http://kenji.blog/p/%E3%82%B3%E3%83%B3%E3%83%94%E3%83%A5%E3%83%BC%E3%82%BF%E3%83%BC%E3%82%92%E3%83%AD%E3%83%83%E3%82%AF%E3%81%99%E3%82%8B%E3%82%B7%E3%83%A7%E3%83%BC%E3%83%88%E3%82%AB%E3%83%83%E3%83%88%E3%82%92%E4%BD%9C%E6%88%90%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95/img_7.png"
width="79"
height="95"
srcset="http://kenji.blog/p/%E3%82%B3%E3%83%B3%E3%83%94%E3%83%A5%E3%83%BC%E3%82%BF%E3%83%BC%E3%82%92%E3%83%AD%E3%83%83%E3%82%AF%E3%81%99%E3%82%8B%E3%82%B7%E3%83%A7%E3%83%BC%E3%83%88%E3%82%AB%E3%83%83%E3%83%88%E3%82%92%E4%BD%9C%E6%88%90%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95/img_7_hub726554b64c896d5f41210824d4f60e8_7903_480x0_resize_box_3.png 480w, http://kenji.blog/p/%E3%82%B3%E3%83%B3%E3%83%94%E3%83%A5%E3%83%BC%E3%82%BF%E3%83%BC%E3%82%92%E3%83%AD%E3%83%83%E3%82%AF%E3%81%99%E3%82%8B%E3%82%B7%E3%83%A7%E3%83%BC%E3%83%88%E3%82%AB%E3%83%83%E3%83%88%E3%82%92%E4%BD%9C%E6%88%90%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95/img_7_hub726554b64c896d5f41210824d4f60e8_7903_1024x0_resize_box_3.png 1024w"
loading="lazy"
alt="img_7.png"
class="gallery-image"
data-flex-grow="83"
data-flex-basis="199px"
>&lt;/p>
&lt;p>Clicar duas vezes no atalho criado bloqueará o computador.&lt;/p>
&lt;p>Você também pode pressionar &lt;code>Tecla Win&lt;/code> + &lt;code>L&lt;/code> para bloquear o computador da mesma forma.&lt;/p>
&lt;p>※ Nota: Nenhuma caixa de diálogo de confirmação será exibida ao bloquear o computador.&lt;/p></description></item><item><title>O Problema de Monty Hall</title><link>http://kenji.blog/pt/p/%E3%83%A2%E3%83%B3%E3%83%86%E3%82%A3%E3%83%9B%E3%83%BC%E3%83%AB%E5%95%8F%E9%A1%8C/</link><pubDate>Sun, 31 Mar 2024 23:41:51 +0900</pubDate><guid>http://kenji.blog/pt/p/%E3%83%A2%E3%83%B3%E3%83%86%E3%82%A3%E3%83%9B%E3%83%BC%E3%83%AB%E5%95%8F%E9%A1%8C/</guid><description>&lt;img src="http://kenji.blog/p/%E3%83%A2%E3%83%B3%E3%83%86%E3%82%A3%E3%83%9B%E3%83%BC%E3%83%AB%E5%95%8F%E9%A1%8C/img_1.png" alt="Featured image of post O Problema de Monty Hall" />&lt;h2 id="o-que-é-o-problema-de-monty-hall">O que é o Problema de Monty Hall?
&lt;/h2>&lt;p>O Problema de Monty Hall é um dos jogos apresentados no programa de televisão americano &amp;ldquo;Let&amp;rsquo;s Make a Deal&amp;rdquo;, e consiste no seguinte problema:&lt;/p>
&lt;p>Pré-requisitos: Atrás de uma das 3 portas há um prêmio, e as outras 2 estão vazias (prêmios de consolação).&lt;/p>
&lt;ol>
&lt;li>O participante escolhe uma das 3 portas.&lt;/li>
&lt;li>O apresentador abre uma das 2 portas não escolhidas pelo participante, revelando que ela está vazia.&lt;/li>
&lt;li>Ao participante é perguntado se ele deseja trocar a porta escolhida.&lt;/li>
&lt;/ol>
&lt;p>O problema é determinar se é melhor para o participante trocar de porta ou não.&lt;/p>
&lt;h2 id="solução">Solução
&lt;/h2>&lt;p>A solução para o Problema de Monty Hall é a seguinte:&lt;/p>
&lt;ol>
&lt;li>
&lt;p>Se o participante não trocar a porta escolhida inicialmente:&lt;/p>
&lt;ul>
&lt;li>Probabilidade de ganhar: 1/3&lt;/li>
&lt;li>Probabilidade de perder: 2/3&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>
&lt;p>Após o apresentador abrir uma porta vazia:&lt;/p>
&lt;ul>
&lt;li>Se não trocar, a probabilidade de ganhar: 1/3 (permanece a mesma probabilidade do passo 1)&lt;/li>
&lt;li>Se trocar, a probabilidade de ganhar: 2/3 (a probabilidade de qualquer outra porta do passo 1)&lt;/li>
&lt;/ul>
&lt;/li>
&lt;/ol>
&lt;p>Portanto, a probabilidade de ganhar é maior se o participante trocar de porta.&lt;/p>
&lt;h2 id="referência">Referência
&lt;/h2>&lt;ul>
&lt;li>Wikipedia &lt;a class="link" href="https://en.wikipedia.org/wiki/Monty_Hall_problem" target="_blank" rel="noopener"
>Monty Hall problem&lt;/a>&lt;/li>
&lt;/ul></description></item><item><title>Como instalar o editor de texto micro no Windows</title><link>http://kenji.blog/pt/p/como-instalar-o-editor-de-texto-micro-no-windows/</link><pubDate>Sun, 31 Mar 2024 21:50:39 +0900</pubDate><guid>http://kenji.blog/pt/p/como-instalar-o-editor-de-texto-micro-no-windows/</guid><description>&lt;img src="http://kenji.blog/p/%E3%83%86%E3%82%AD%E3%82%B9%E3%83%88%E3%82%A8%E3%83%87%E3%82%A3%E3%82%BFmicro%E3%82%92windows%E3%81%AB%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95/img.png" alt="Featured image of post Como instalar o editor de texto micro no Windows" />&lt;h2 id="baixar-o-micro">Baixar o micro
&lt;/h2>&lt;p>&lt;a class="link" href="https://github.com/zyedidia/micro/releases" target="_blank" rel="noopener"
>https://github.com/zyedidia/micro/releases&lt;/a>&lt;/p>
&lt;p>Abra o link acima, clique em &lt;code>Show all XX assets&lt;/code> (onde X é um número) e baixe o &lt;code>micro-X.X.XX-win64.zip&lt;/code> (onde X é um número).
Extraia o arquivo zip e coloque todos os arquivos em uma pasta de sua escolha.&lt;/p>
&lt;h2 id="configurar-as-variáveis-de-ambiente">Configurar as variáveis de ambiente
&lt;/h2>&lt;p>Para usar o &lt;code>micro.exe&lt;/code> pelo Prompt de Comando, você precisa configurar as variáveis de ambiente.&lt;/p>
&lt;ol>
&lt;li>Pressione a &lt;code>tecla Win&lt;/code> + &lt;code>tecla R&lt;/code>, digite &lt;code>sysdm.cpl&lt;/code> e pressione &lt;code>Enter&lt;/code>.&lt;/li>
&lt;li>Clique em &lt;code>Configurações avançadas do sistema&lt;/code> nas &lt;code>Propriedades do Sistema&lt;/code>.&lt;/li>
&lt;li>Clique em &lt;code>Variáveis de Ambiente&lt;/code>.&lt;/li>
&lt;li>Selecione &lt;code>Path&lt;/code> em &lt;code>Variáveis do sistema&lt;/code> e clique em &lt;code>Editar&lt;/code>.&lt;/li>
&lt;li>Clique em &lt;code>Novo&lt;/code> e adicione o caminho para a pasta que contém o &lt;code>micro.exe&lt;/code>.&lt;/li>
&lt;li>Clique em &lt;code>OK&lt;/code> para fechar todas as caixas de diálogo.&lt;/li>
&lt;li>Reinicie o Prompt de Comando e digite &lt;code>nano&lt;/code> para verificar se ele pode ser executado.&lt;/li>
&lt;/ol>
&lt;h2 id="como-usar-o-micro">Como usar o micro
&lt;/h2>&lt;p>Ao digitar &lt;code>micro&lt;/code> no Prompt de Comando e executá-lo, a seguinte tela será exibida.
&lt;img src="http://kenji.blog/p/%E3%83%86%E3%82%AD%E3%82%B9%E3%83%88%E3%82%A8%E3%83%87%E3%82%A3%E3%82%BFmicro%E3%82%92windows%E3%81%AB%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95/img_3.png"
width="962"
height="512"
srcset="http://kenji.blog/p/%E3%83%86%E3%82%AD%E3%82%B9%E3%83%88%E3%82%A8%E3%83%87%E3%82%A3%E3%82%BFmicro%E3%82%92windows%E3%81%AB%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95/img_3_hucac22a4d580735ddd83b1fd5173c3197_6852_480x0_resize_box_3.png 480w, http://kenji.blog/p/%E3%83%86%E3%82%AD%E3%82%B9%E3%83%88%E3%82%A8%E3%83%87%E3%82%A3%E3%82%BFmicro%E3%82%92windows%E3%81%AB%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95/img_3_hucac22a4d580735ddd83b1fd5173c3197_6852_1024x0_resize_box_3.png 1024w"
loading="lazy"
alt="img_3.png"
class="gallery-image"
data-flex-grow="187"
data-flex-basis="450px"
>&lt;/p>
&lt;p>As principais operações e teclas de atalho são as seguintes:&lt;/p>
&lt;table>
&lt;thead>
&lt;tr>
&lt;th>Tecla de atalho&lt;/th>
&lt;th>Operação&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>Ctrl+Q&lt;/td>
&lt;td>Fechar arquivo&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Ctrl+S&lt;/td>
&lt;td>Salvar arquivo&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Ctrl+O&lt;/td>
&lt;td>Abrir arquivo&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Ctrl+A&lt;/td>
&lt;td>Selecionar tudo&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Ctrl+X&lt;/td>
&lt;td>Cortar seleção&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Ctrl+C&lt;/td>
&lt;td>Copiar seleção&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Ctrl+V&lt;/td>
&lt;td>Colar&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Ctrl+Z&lt;/td>
&lt;td>Desfazer&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Ctrl+Y&lt;/td>
&lt;td>Refazer&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Ctrl+E&lt;/td>
&lt;td>Executar comando do editor&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;h2 id="referência">Referência
&lt;/h2>&lt;ul>
&lt;li>&lt;a class="link" href="https://micro-editor.github.io/" target="_blank" rel="noopener"
>micro&lt;/a>&lt;/li>
&lt;/ul></description></item><item><title>Como instalar o editor de texto CLI nano no Windows</title><link>http://kenji.blog/pt/p/cli%E3%83%86%E3%82%AD%E3%82%B9%E3%83%88%E3%82%A8%E3%83%87%E3%82%A3%E3%82%BFnano%E3%82%92windows%E3%81%AB%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95/</link><pubDate>Sun, 31 Mar 2024 18:09:32 +0900</pubDate><guid>http://kenji.blog/pt/p/cli%E3%83%86%E3%82%AD%E3%82%B9%E3%83%88%E3%82%A8%E3%83%87%E3%82%A3%E3%82%BFnano%E3%82%92windows%E3%81%AB%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95/</guid><description>&lt;img src="http://kenji.blog/p/cli%E3%83%86%E3%82%AD%E3%82%B9%E3%83%88%E3%82%A8%E3%83%87%E3%82%A3%E3%82%BFnano%E3%82%92windows%E3%81%AB%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95/img_1.png" alt="Featured image of post Como instalar o editor de texto CLI nano no Windows" />&lt;h2 id="baixar-o-nanoexe">Baixar o nano.exe
&lt;/h2>&lt;p>&lt;a class="link" href="https://sourceforge.net/projects/nano-for-windows/" target="_blank" rel="noopener"
>https://sourceforge.net/projects/nano-for-windows/&lt;/a>&lt;/p>
&lt;p>Abra o link acima, clique em &lt;code>Download&lt;/code> e baixe o &lt;code>GNU-Nano_Win32(static).zip&lt;/code>.
Extraia o arquivo zip e coloque o &lt;code>nano.exe&lt;/code> em qualquer pasta.&lt;/p>
&lt;ul>
&lt;li>A entrada de texto em japonês não é suportada (em 31/03/2024).&lt;/li>
&lt;/ul>
&lt;h2 id="configurar-variáveis-de-ambiente">Configurar variáveis de ambiente
&lt;/h2>&lt;p>Para usar o &lt;code>nano.exe&lt;/code> no Prompt de Comando, você precisa configurar as variáveis de ambiente.&lt;/p>
&lt;ol>
&lt;li>Pressione a &lt;code>tecla Win&lt;/code> + &lt;code>tecla R&lt;/code>, digite &lt;code>sysdm.cpl&lt;/code> e pressione &lt;code>Enter&lt;/code>.&lt;/li>
&lt;li>Clique em &lt;code>Propriedades do Sistema&lt;/code> na janela de Propriedades do Sistema.&lt;/li>
&lt;li>Clique em &lt;code>Variáveis de Ambiente&lt;/code>.&lt;/li>
&lt;li>Selecione &lt;code>Path&lt;/code> em &lt;code>Variáveis de sistema&lt;/code> e clique em &lt;code>Editar&lt;/code>.&lt;/li>
&lt;li>Clique em &lt;code>Novo&lt;/code> e adicione o caminho do &lt;code>nano.exe&lt;/code>.&lt;/li>
&lt;li>Clique em &lt;code>OK&lt;/code> para fechar todas as caixas de diálogo.&lt;/li>
&lt;li>Reinicie o Prompt de Comando, digite &lt;code>nano&lt;/code> e verifique se ele é executado.&lt;/li>
&lt;/ol>
&lt;h2 id="como-usar-o-nano">Como usar o nano
&lt;/h2>&lt;p>Ao digitar &lt;code>nano&lt;/code> e executar, a seguinte tela será exibida:&lt;/p>
&lt;p>&lt;img src="http://kenji.blog/p/cli%E3%83%86%E3%82%AD%E3%82%B9%E3%83%88%E3%82%A8%E3%83%87%E3%82%A3%E3%82%BFnano%E3%82%92windows%E3%81%AB%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95/img_2.png"
width="1082"
height="632"
srcset="http://kenji.blog/p/cli%E3%83%86%E3%82%AD%E3%82%B9%E3%83%88%E3%82%A8%E3%83%87%E3%82%A3%E3%82%BFnano%E3%82%92windows%E3%81%AB%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95/img_2_hucb9efcdf08d2eda99abffd0a9502a2c3_16316_480x0_resize_box_3.png 480w, http://kenji.blog/p/cli%E3%83%86%E3%82%AD%E3%82%B9%E3%83%88%E3%82%A8%E3%83%87%E3%82%A3%E3%82%BFnano%E3%82%92windows%E3%81%AB%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95/img_2_hucb9efcdf08d2eda99abffd0a9502a2c3_16316_1024x0_resize_box_3.png 1024w"
loading="lazy"
alt="img_2.png"
class="gallery-image"
data-flex-grow="171"
data-flex-basis="410px"
>&lt;/p>
&lt;p>As descrições dos atalhos são exibidas na parte inferior da tela.&lt;/p>
&lt;p>O significado dos símbolos é o seguinte:&lt;/p>
&lt;ul>
&lt;li>&lt;code>^&lt;/code> representa a tecla &lt;code>Ctrl&lt;/code>.&lt;/li>
&lt;li>&lt;code>M-&lt;/code> representa a tecla &lt;code>Alt&lt;/code>.&lt;/li>
&lt;/ul>
&lt;p>Para salvar e fechar, pressione &lt;code>Ctrl&lt;/code> + &lt;code>S&lt;/code> e depois &lt;code>Ctrl&lt;/code> + &lt;code>X&lt;/code>.&lt;/p>
&lt;h2 id="referência">Referência
&lt;/h2>&lt;ul>
&lt;li>&lt;a class="link" href="https://www.nano-editor.org/" target="_blank" rel="noopener"
>GNU nano&lt;/a>&lt;/li>
&lt;/ul></description></item><item><title>Como resolver o erro 'Temporary failure resolving...' no wsl</title><link>http://kenji.blog/pt/p/wsl-%E3%81%A7temporary-failure-resolving%E3%81%A8%E8%A1%A8%E7%A4%BA%E3%81%95%E3%82%8C%E3%82%8B%E5%A0%B4%E5%90%88%E3%81%AE%E5%AF%BE%E5%87%A6%E6%96%B9%E6%B3%95/</link><pubDate>Sun, 31 Mar 2024 16:57:33 +0900</pubDate><guid>http://kenji.blog/pt/p/wsl-%E3%81%A7temporary-failure-resolving%E3%81%A8%E8%A1%A8%E7%A4%BA%E3%81%95%E3%82%8C%E3%82%8B%E5%A0%B4%E5%90%88%E3%81%AE%E5%AF%BE%E5%87%A6%E6%96%B9%E6%B3%95/</guid><description>&lt;img src="http://kenji.blog/p/wsl-%E3%81%A7temporary-failure-resolving%E3%81%A8%E8%A1%A8%E7%A4%BA%E3%81%95%E3%82%8C%E3%82%8B%E5%A0%B4%E5%90%88%E3%81%AE%E5%AF%BE%E5%87%A6%E6%96%B9%E6%B3%95/img.png" alt="Featured image of post Como resolver o erro 'Temporary failure resolving...' no wsl" />&lt;h1 id="como-resolver-o-erro-temporary-failure-resolving-no-wsl">Como resolver o erro &amp;lsquo;Temporary failure resolving&amp;hellip;&amp;rsquo; no wsl
&lt;/h1>&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;span class="lnt">4
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">kenji@MyComputer:~$ sudo apt update
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">[sudo] password for kenji:
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">Err:1 http://archive.ubuntu.com/ubuntu focal InRelease
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> Temporary failure resolving &amp;#39;archive.ubuntu.com&amp;#39;
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>Quando o erro acima é exibido no wsl, as configurações do servidor DNS podem estar incorretas.
No meu ambiente, foi resolvido com os seguintes passos.&lt;/p>
&lt;ol>
&lt;li>Inicie o wsl.&lt;/li>
&lt;li>Execute &lt;code>sudo nano /etc/resolv.conf&lt;/code>.&lt;/li>
&lt;li>Altere a linha &lt;code>nameserver&lt;/code> da seguinte forma:&lt;/li>
&lt;/ol>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">nameserver 8.8.8.8
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;ol start="4">
&lt;li>Salve com &lt;code>Ctrl&lt;/code> + &lt;code>S&lt;/code> e saia com &lt;code>Ctrl&lt;/code> + &lt;code>X&lt;/code>.&lt;/li>
&lt;li>Execute &lt;code>sudo apt update&lt;/code>.&lt;/li>
&lt;li>Se o erro não for exibido, está resolvido.&lt;/li>
&lt;/ol>
&lt;h2 id="se-não-for-resolvido-com-os-passos-acima">Se não for resolvido com os passos acima
&lt;/h2>&lt;p>Parece que há casos em que não é resolvido com os passos acima. Consulte o artigo a seguir.&lt;/p>
&lt;ul>
&lt;li>&lt;a class="link" href="https://qiita.com/ryosukeYamazaki/items/c04ec3ff78aac6eb8d26" target="_blank" rel="noopener"
>Como resolver &amp;lsquo;Temporary failure resolving&amp;hellip;&amp;rsquo; durante o apt update no WSL&lt;/a>&lt;/li>
&lt;/ul></description></item><item><title>Como fechar e reiniciar o Explorador de Arquivos</title><link>http://kenji.blog/pt/p/%E3%82%A8%E3%82%AF%E3%82%B9%E3%83%97%E3%83%AD%E3%83%BC%E3%83%A9%E3%83%BC%E3%81%AE%E7%B5%82%E4%BA%86%E5%86%8D%E8%B5%B7%E5%8B%95%E6%96%B9%E6%B3%95/</link><pubDate>Sat, 30 Mar 2024 15:40:24 +0900</pubDate><guid>http://kenji.blog/pt/p/%E3%82%A8%E3%82%AF%E3%82%B9%E3%83%97%E3%83%AD%E3%83%BC%E3%83%A9%E3%83%BC%E3%81%AE%E7%B5%82%E4%BA%86%E5%86%8D%E8%B5%B7%E5%8B%95%E6%96%B9%E6%B3%95/</guid><description>&lt;img src="http://kenji.blog/p/%E3%82%A8%E3%82%AF%E3%82%B9%E3%83%97%E3%83%AD%E3%83%BC%E3%83%A9%E3%83%BC%E3%81%AE%E7%B5%82%E4%BA%86%E5%86%8D%E8%B5%B7%E5%8B%95%E6%96%B9%E6%B3%95/img_2.png" alt="Featured image of post Como fechar e reiniciar o Explorador de Arquivos" />&lt;h2 id="como-fechar-usando-o-botão-direito-na-barra-de-tarefas">Como fechar usando o botão direito na barra de tarefas
&lt;/h2>&lt;p>Este método funciona no Windows 10. Parece que o menu não aparece no Windows 11.
Se você segurar as teclas &lt;code>Shift&lt;/code> e &lt;code>Ctrl&lt;/code> e clicar com o botão direito na barra de tarefas, &lt;code>Sair do Explorer&lt;/code> aparecerá no menu.&lt;/p>
&lt;p>&lt;img src="http://kenji.blog/p/%E3%82%A8%E3%82%AF%E3%82%B9%E3%83%97%E3%83%AD%E3%83%BC%E3%83%A9%E3%83%BC%E3%81%AE%E7%B5%82%E4%BA%86%E5%86%8D%E8%B5%B7%E5%8B%95%E6%96%B9%E6%B3%95/img.png"
width="492"
height="849"
srcset="http://kenji.blog/p/%E3%82%A8%E3%82%AF%E3%82%B9%E3%83%97%E3%83%AD%E3%83%BC%E3%83%A9%E3%83%BC%E3%81%AE%E7%B5%82%E4%BA%86%E5%86%8D%E8%B5%B7%E5%8B%95%E6%96%B9%E6%B3%95/img_hu25fa4fd28e26e648c7df7b34d330fb4a_26017_480x0_resize_box_3.png 480w, http://kenji.blog/p/%E3%82%A8%E3%82%AF%E3%82%B9%E3%83%97%E3%83%AD%E3%83%BC%E3%83%A9%E3%83%BC%E3%81%AE%E7%B5%82%E4%BA%86%E5%86%8D%E8%B5%B7%E5%8B%95%E6%96%B9%E6%B3%95/img_hu25fa4fd28e26e648c7df7b34d330fb4a_26017_1024x0_resize_box_3.png 1024w"
loading="lazy"
alt="img.png"
class="gallery-image"
data-flex-grow="57"
data-flex-basis="139px"
>&lt;/p>
&lt;h2 id="como-fechar-usando-o-gerenciador-de-tarefas">Como fechar usando o Gerenciador de Tarefas
&lt;/h2>&lt;ol>
&lt;li>Pressione as teclas &lt;code>Ctrl&lt;/code> + &lt;code>Shift&lt;/code> + &lt;code>Esc&lt;/code> para abrir o Gerenciador de Tarefas.&lt;/li>
&lt;li>Selecione &lt;code>Detalhes&lt;/code>.&lt;/li>
&lt;/ol>
&lt;p>&lt;img src="http://kenji.blog/p/%E3%82%A8%E3%82%AF%E3%82%B9%E3%83%97%E3%83%AD%E3%83%BC%E3%83%A9%E3%83%BC%E3%81%AE%E7%B5%82%E4%BA%86%E5%86%8D%E8%B5%B7%E5%8B%95%E6%96%B9%E6%B3%95/img_3.png"
width="675"
height="439"
srcset="http://kenji.blog/p/%E3%82%A8%E3%82%AF%E3%82%B9%E3%83%97%E3%83%AD%E3%83%BC%E3%83%A9%E3%83%BC%E3%81%AE%E7%B5%82%E4%BA%86%E5%86%8D%E8%B5%B7%E5%8B%95%E6%96%B9%E6%B3%95/img_3_hu94dd07716acd73c3bf3a07b52949d73b_34688_480x0_resize_box_3.png 480w, http://kenji.blog/p/%E3%82%A8%E3%82%AF%E3%82%B9%E3%83%97%E3%83%AD%E3%83%BC%E3%83%A9%E3%83%BC%E3%81%AE%E7%B5%82%E4%BA%86%E5%86%8D%E8%B5%B7%E5%8B%95%E6%96%B9%E6%B3%95/img_3_hu94dd07716acd73c3bf3a07b52949d73b_34688_1024x0_resize_box_3.png 1024w"
loading="lazy"
alt="img_3.png"
class="gallery-image"
data-flex-grow="153"
data-flex-basis="369px"
>&lt;/p>
&lt;ol start="3">
&lt;li>Selecione &lt;code>explorer.exe&lt;/code>, pressione a tecla &lt;code>Delete&lt;/code>, e quando perguntado &lt;code>Deseja finalizar o explorer.exe?&lt;/code>, selecione &lt;code>Finalizar processo&lt;/code>.&lt;/li>
&lt;/ol>
&lt;p>&lt;img src="http://kenji.blog/p/%E3%82%A8%E3%82%AF%E3%82%B9%E3%83%97%E3%83%AD%E3%83%BC%E3%83%A9%E3%83%BC%E3%81%AE%E7%B5%82%E4%BA%86%E5%86%8D%E8%B5%B7%E5%8B%95%E6%96%B9%E6%B3%95/img_1.png"
width="529"
height="304"
srcset="http://kenji.blog/p/%E3%82%A8%E3%82%AF%E3%82%B9%E3%83%97%E3%83%AD%E3%83%BC%E3%83%A9%E3%83%BC%E3%81%AE%E7%B5%82%E4%BA%86%E5%86%8D%E8%B5%B7%E5%8B%95%E6%96%B9%E6%B3%95/img_1_hu9ea0cd188ab9aa2b045ca3bb921a75d4_17142_480x0_resize_box_3.png 480w, http://kenji.blog/p/%E3%82%A8%E3%82%AF%E3%82%B9%E3%83%97%E3%83%AD%E3%83%BC%E3%83%A9%E3%83%BC%E3%81%AE%E7%B5%82%E4%BA%86%E5%86%8D%E8%B5%B7%E5%8B%95%E6%96%B9%E6%B3%95/img_1_hu9ea0cd188ab9aa2b045ca3bb921a75d4_17142_1024x0_resize_box_3.png 1024w"
loading="lazy"
alt="img_1.png"
class="gallery-image"
data-flex-grow="174"
data-flex-basis="417px"
>&lt;/p>
&lt;h2 id="como-fechar-usando-o-prompt-de-comando">Como fechar usando o Prompt de Comando
&lt;/h2>&lt;ol>
&lt;li>Pressione as teclas &lt;code>Win&lt;/code> + &lt;code>R&lt;/code>, digite &lt;code>cmd&lt;/code> e pressione &lt;code>Enter&lt;/code>.&lt;/li>
&lt;li>Digite &lt;code>taskkill /f /im explorer.exe&lt;/code> e pressione &lt;code>Enter&lt;/code>.&lt;/li>
&lt;/ol>
&lt;h2 id="como-iniciar-o-explorer-a-partir-do-gerenciador-de-tarefas">Como iniciar o Explorer a partir do Gerenciador de Tarefas
&lt;/h2>&lt;ol>
&lt;li>Pressione as teclas &lt;code>Ctrl&lt;/code> + &lt;code>Shift&lt;/code> + &lt;code>Esc&lt;/code> para abrir o Gerenciador de Tarefas.&lt;/li>
&lt;li>No menu Arquivo, selecione &lt;code>Executar nova tarefa&lt;/code>.&lt;/li>
&lt;li>Digite &lt;code>explorer.exe&lt;/code> e pressione &lt;code>Enter&lt;/code>.&lt;/li>
&lt;/ol></description></item><item><title>Como restaurar o menu de contexto clássico no Windows 11</title><link>http://kenji.blog/pt/p/como-restaurar-o-menu-de-contexto-classico-no-windows-11/</link><pubDate>Sat, 30 Mar 2024 13:13:36 +0900</pubDate><guid>http://kenji.blog/pt/p/como-restaurar-o-menu-de-contexto-classico-no-windows-11/</guid><description>&lt;img src="http://kenji.blog/p/windows-11%E3%81%AE%E5%8F%B3%E3%82%AF%E3%83%AA%E3%83%83%E3%82%AF%E3%83%A1%E3%83%8B%E3%83%A5%E3%83%BC%E3%82%92%E5%BE%93%E6%9D%A5%E7%89%88%E3%81%AB%E6%88%BB%E3%81%99%E6%96%B9%E6%B3%95/img.png" alt="Featured image of post Como restaurar o menu de contexto clássico no Windows 11" />&lt;h1 id="como-restaurar-o-menu-de-contexto-clássico-no-windows-11">Como restaurar o menu de contexto clássico no Windows 11
&lt;/h1>&lt;p>Aqui está como restaurar o menu de contexto clássico (menu do botão direito) no Windows 11.&lt;/p>
&lt;ol>
&lt;li>Abra o Editor do Registro.&lt;/li>
&lt;/ol>
&lt;p>Pressione &lt;code>Tecla Win&lt;/code> + &lt;code>R&lt;/code>, digite &lt;code>regedit&lt;/code> e pressione &lt;code>Enter&lt;/code>.
&lt;img src="http://kenji.blog/p/windows-11%E3%81%AE%E5%8F%B3%E3%82%AF%E3%83%AA%E3%83%83%E3%82%AF%E3%83%A1%E3%83%8B%E3%83%A5%E3%83%BC%E3%82%92%E5%BE%93%E6%9D%A5%E7%89%88%E3%81%AB%E6%88%BB%E3%81%99%E6%96%B9%E6%B3%95/img_1.png"
width="399"
height="206"
srcset="http://kenji.blog/p/windows-11%E3%81%AE%E5%8F%B3%E3%82%AF%E3%83%AA%E3%83%83%E3%82%AF%E3%83%A1%E3%83%8B%E3%83%A5%E3%83%BC%E3%82%92%E5%BE%93%E6%9D%A5%E7%89%88%E3%81%AB%E6%88%BB%E3%81%99%E6%96%B9%E6%B3%95/img_1_hu57f8ec9d7413c1dd616d892c3bf497ce_10532_480x0_resize_box_3.png 480w, http://kenji.blog/p/windows-11%E3%81%AE%E5%8F%B3%E3%82%AF%E3%83%AA%E3%83%83%E3%82%AF%E3%83%A1%E3%83%8B%E3%83%A5%E3%83%BC%E3%82%92%E5%BE%93%E6%9D%A5%E7%89%88%E3%81%AB%E6%88%BB%E3%81%99%E6%96%B9%E6%B3%95/img_1_hu57f8ec9d7413c1dd616d892c3bf497ce_10532_1024x0_resize_box_3.png 1024w"
loading="lazy"
alt="img_1.png"
class="gallery-image"
data-flex-grow="193"
data-flex-basis="464px"
>　&lt;/p>
&lt;ol start="2">
&lt;li>
&lt;p>Navegue até &lt;code>HKEY_CURRENT_USER\Software\Classes\CLSID\{86ca1aa0-34aa-4e8b-a509-50c905bae2a2}&lt;/code>. Se esta chave não existir, crie-a.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Navegue até &lt;code>HKEY_CURRENT_USER\Software\Classes\CLSID\{86ca1aa0-34aa-4e8b-a509-50c905bae2a2}\InprocServer32&lt;/code>. Se esta chave não existir, crie-a.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Verifique se &lt;code>(Padrão)&lt;/code> em &lt;code>InprocServer32&lt;/code> não possui valor.&lt;/p>
&lt;/li>
&lt;/ol>
&lt;p>&lt;img src="http://kenji.blog/p/windows-11%E3%81%AE%E5%8F%B3%E3%82%AF%E3%83%AA%E3%83%83%E3%82%AF%E3%83%A1%E3%83%8B%E3%83%A5%E3%83%BC%E3%82%92%E5%BE%93%E6%9D%A5%E7%89%88%E3%81%AB%E6%88%BB%E3%81%99%E6%96%B9%E6%B3%95/img_2.png"
width="770"
height="746"
srcset="http://kenji.blog/p/windows-11%E3%81%AE%E5%8F%B3%E3%82%AF%E3%83%AA%E3%83%83%E3%82%AF%E3%83%A1%E3%83%8B%E3%83%A5%E3%83%BC%E3%82%92%E5%BE%93%E6%9D%A5%E7%89%88%E3%81%AB%E6%88%BB%E3%81%99%E6%96%B9%E6%B3%95/img_2_hu825cb5788fa7c4fef725a65d032e0e06_65034_480x0_resize_box_3.png 480w, http://kenji.blog/p/windows-11%E3%81%AE%E5%8F%B3%E3%82%AF%E3%83%AA%E3%83%83%E3%82%AF%E3%83%A1%E3%83%8B%E3%83%A5%E3%83%BC%E3%82%92%E5%BE%93%E6%9D%A5%E7%89%88%E3%81%AB%E6%88%BB%E3%81%99%E6%96%B9%E6%B3%95/img_2_hu825cb5788fa7c4fef725a65d032e0e06_65034_1024x0_resize_box_3.png 1024w"
loading="lazy"
alt="img_2.png"
class="gallery-image"
data-flex-grow="103"
data-flex-basis="247px"
>&lt;/p>
&lt;ol start="6">
&lt;li>Reinicie o computador.&lt;/li>
&lt;li>Confirme se o menu de contexto retornou à versão clássica.&lt;/li>
&lt;/ol></description></item><item><title>Coleção de Fontes para Programação</title><link>http://kenji.blog/pt/p/colecao-de-fontes-para-programacao/</link><pubDate>Sat, 30 Mar 2024 02:21:31 +0900</pubDate><guid>http://kenji.blog/pt/p/colecao-de-fontes-para-programacao/</guid><description>&lt;img src="http://kenji.blog/p/%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0%E3%81%A7%E4%BD%BF%E3%81%88%E3%82%8B%E3%83%95%E3%82%A9%E3%83%B3%E3%83%88%E9%9B%86/img.png" alt="Featured image of post Coleção de Fontes para Programação" />&lt;h2 id="jetbrains-mono">JetBrains Mono
&lt;/h2>&lt;p>É uma fonte de programação de código aberto fornecida pela JetBrains.&lt;/p>
&lt;p>Download: &lt;a class="link" href="https://www.jetbrains.com/ja-jp/lp/mono/" target="_blank" rel="noopener"
>https://www.jetbrains.com/ja-jp/lp/mono/&lt;/a>&lt;/p>
&lt;h2 id="hackgen">HackGen
&lt;/h2>&lt;p>Hakugen (HackGen) é uma fonte de programação que combina a fonte inglesa para programação Hack com a fonte GenJyuu Gothic, que é um derivado da Source Han Sans.&lt;/p>
&lt;p>Download: &lt;a class="link" href="https://github.com/yuru7/HackGen/releases" target="_blank" rel="noopener"
>https://github.com/yuru7/HackGen/releases&lt;/a>&lt;/p>
&lt;h2 id="ricty-diminished">Ricty Diminished
&lt;/h2>&lt;p>&lt;code>Ricty Diminished&lt;/code> é uma fonte irmã da &lt;code>Ricty&lt;/code>, criada combinando &lt;code>Inconsolata&lt;/code> e &lt;code>Circle M+ 1m&lt;/code> com o script de geração da &lt;code>Ricty&lt;/code>, em vez de &lt;code>Inconsolata&lt;/code> e &lt;code>Migu 1M&lt;/code>. Como não inclui glifos da fonte IPA Gothic, ela possui menos glifos de kanji disponíveis, mas em compensação pode ser distribuída sob a &lt;code>SIL Open Font License&lt;/code>.&lt;/p>
&lt;p>Download: &lt;a class="link" href="https://rictyfonts.github.io/diminished" target="_blank" rel="noopener"
>https://rictyfonts.github.io/diminished&lt;/a>&lt;/p>
&lt;h2 id="cica">Cica
&lt;/h2>&lt;p>Caracteres alfanuméricos e símbolos usam &lt;code>Hack&lt;/code> + &lt;code>DejaVu Sans Mono&lt;/code>.
Para outros caracteres, é uma fonte de programação que usa &lt;code>Rounded Mgen+&lt;/code>.&lt;/p>
&lt;p>Download: &lt;a class="link" href="https://github.com/miiton/Cica/releases" target="_blank" rel="noopener"
>https://github.com/miiton/Cica/releases&lt;/a>&lt;/p>
&lt;p>Referência:&lt;/p>
&lt;ul>
&lt;li>&lt;a class="link" href="https://sourcefoundry.org/hack/" target="_blank" rel="noopener"
>Hack&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="https://dejavu-fonts.github.io/" target="_blank" rel="noopener"
>DejaVu Sans Mono&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="http://jikasei.me/font/rounded-mgenplus/" target="_blank" rel="noopener"
>Rounded Mgen+&lt;/a>&lt;/li>
&lt;/ul>
&lt;h2 id="migu">Migu
&lt;/h2>&lt;p>É uma fonte composta de M+ e IPA.&lt;/p>
&lt;p>Download: &lt;a class="link" href="https://itouhiro.github.io/mixfont-mplus-ipa/migu/" target="_blank" rel="noopener"
>https://itouhiro.github.io/mixfont-mplus-ipa/migu/&lt;/a>&lt;/p>
&lt;h2 id="osaka">Osaka
&lt;/h2>&lt;p>É uma fonte que permite usar a fonte padrão do Mac OS, &lt;code>Osaka&lt;/code>, no Windows.&lt;/p>
&lt;p>Download: &lt;a class="link" href="http://ifs.nog.cc/osakattf.hp.infoseek.co.jp/" target="_blank" rel="noopener"
>http://ifs.nog.cc/osakattf.hp.infoseek.co.jp/&lt;/a>&lt;/p>
&lt;h2 id="plemoljp">PlemolJP
&lt;/h2>&lt;p>É uma fonte de programação que combina a fonte japonesa de código aberto &lt;code>IBM Plex Sans JP&lt;/code> lançada pela IBM com a &lt;code>IBM Plex Mono&lt;/code> da série Plex também da IBM.&lt;/p>
&lt;p>Download: &lt;a class="link" href="https://github.com/yuru7/PlemolJP/releases" target="_blank" rel="noopener"
>https://github.com/yuru7/PlemolJP/releases&lt;/a>&lt;/p></description></item><item><title>Como iniciar o Hidemaru Editor com o comando 'hide'</title><link>http://kenji.blog/pt/p/como-iniciar-o-hidemaru-editor-com-o-comando-hide/</link><pubDate>Fri, 29 Mar 2024 23:45:37 +0900</pubDate><guid>http://kenji.blog/pt/p/como-iniciar-o-hidemaru-editor-com-o-comando-hide/</guid><description>&lt;img src="http://kenji.blog/p/%E3%82%B3%E3%83%9E%E3%83%B3%E3%83%89hide%E3%81%A7%E7%A7%80%E4%B8%B8%E3%82%A8%E3%83%87%E3%82%A3%E3%82%BF%E3%82%92%E7%AB%8B%E3%81%A1%E4%B8%8A%E3%81%92%E3%82%8B%E6%96%B9%E6%B3%95/img_2.png" alt="Featured image of post Como iniciar o Hidemaru Editor com o comando 'hide'" />&lt;h2 id="aqui-está-como-iniciar-o-hidemaru-editor-com-o-comando-hide">Aqui está como iniciar o Hidemaru Editor com o comando &amp;lsquo;hide&amp;rsquo;.
&lt;/h2>&lt;p>Nota: Este método foi testado no &lt;code>Windows 10/11&lt;/code>.&lt;/p>
&lt;ol>
&lt;li>Abra o Editor do Registro.&lt;/li>
&lt;li>Navegue até &lt;code>HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths&lt;/code>.&lt;/li>
&lt;li>Crie uma chave chamada &lt;code>hide.exe&lt;/code> em &lt;code>App Paths&lt;/code>. &lt;strong>A parte antes de &lt;code>.exe&lt;/code> no nome desta chave se torna o nome do comando.&lt;/strong>&lt;/li>
&lt;li>Defina o valor &lt;code>(Padrão)&lt;/code> da chave &lt;code>hide.exe&lt;/code> para o caminho do arquivo executável do Hidemaru Editor. No meu ambiente, era &lt;code>&amp;quot;C:\Program Files (x86)\Hidemaru\Hidemaru.exe&amp;quot;&lt;/code>.&lt;/li>
&lt;li>Crie um valor de String chamado &lt;code>Path&lt;/code> na chave &lt;code>hide.exe&lt;/code>.&lt;/li>
&lt;li>Defina os dados do &lt;code>Path&lt;/code> para o caminho da pasta contendo o arquivo executável do Hidemaru Editor. No meu ambiente, era &lt;code>&amp;quot;C:\Program Files (x86)\Hidemaru&amp;quot;&lt;/code>.&lt;/li>
&lt;li>Agora, na caixa de diálogo &lt;strong>Executar&lt;/strong> (pressione a tecla &lt;code>Win&lt;/code> + &lt;code>R&lt;/code>), você pode iniciar o Hidemaru Editor digitando o comando &lt;code>hide&lt;/code>. Além disso, no Prompt de Comando, você pode iniciá-lo com o comando &lt;code>start hide&lt;/code>.&lt;/li>
&lt;/ol>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;span class="lnt">4
&lt;/span>&lt;span class="lnt">5
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">Windows Registry Editor Version 5.00
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\hide.exe]
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">@=&amp;#34;\&amp;#34;C:\\Program Files (x86)\\Hidemaru\\Hidemaru.exe\&amp;#34;&amp;#34;
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&amp;#34;Path&amp;#34;=&amp;#34;\&amp;#34;C:\\Program Files (x86)\\Hidemaru\\\&amp;#34;&amp;#34;
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>Se você salvar o conteúdo acima em um arquivo &lt;code>.reg&lt;/code> e executá-lo, as configurações serão adicionadas ao registro.&lt;/p>
&lt;p>&lt;img src="http://kenji.blog/p/%E3%82%B3%E3%83%9E%E3%83%B3%E3%83%89hide%E3%81%A7%E7%A7%80%E4%B8%B8%E3%82%A8%E3%83%87%E3%82%A3%E3%82%BF%E3%82%92%E7%AB%8B%E3%81%A1%E4%B8%8A%E3%81%92%E3%82%8B%E6%96%B9%E6%B3%95/img_1.png"
width="399"
height="206"
srcset="http://kenji.blog/p/%E3%82%B3%E3%83%9E%E3%83%B3%E3%83%89hide%E3%81%A7%E7%A7%80%E4%B8%B8%E3%82%A8%E3%83%87%E3%82%A3%E3%82%BF%E3%82%92%E7%AB%8B%E3%81%A1%E4%B8%8A%E3%81%92%E3%82%8B%E6%96%B9%E6%B3%95/img_1_hue374203b955e2a50cac4186ada52cd43_10600_480x0_resize_box_3.png 480w, http://kenji.blog/p/%E3%82%B3%E3%83%9E%E3%83%B3%E3%83%89hide%E3%81%A7%E7%A7%80%E4%B8%B8%E3%82%A8%E3%83%87%E3%82%A3%E3%82%BF%E3%82%92%E7%AB%8B%E3%81%A1%E4%B8%8A%E3%81%92%E3%82%8B%E6%96%B9%E6%B3%95/img_1_hue374203b955e2a50cac4186ada52cd43_10600_1024x0_resize_box_3.png 1024w"
loading="lazy"
alt="img_1.png"
class="gallery-image"
data-flex-grow="193"
data-flex-basis="464px"
>&lt;/p></description></item><item><title>Problemas Não Resolvidos da Matemática</title><link>http://kenji.blog/pt/p/problemas-nao-resolvidos-da-matematica/</link><pubDate>Sat, 02 Mar 2024 22:57:36 +0900</pubDate><guid>http://kenji.blog/pt/p/problemas-nao-resolvidos-da-matematica/</guid><description>&lt;img src="http://kenji.blog/p/%E6%95%B0%E5%AD%A6%E3%81%AE%E6%9C%AA%E8%A7%A3%E6%B1%BA%E5%95%8F%E9%A1%8C/img.png" alt="Featured image of post Problemas Não Resolvidos da Matemática" />&lt;h1 id="problemas-não-resolvidos-da-matemática">Problemas Não Resolvidos da Matemática
&lt;/h1>&lt;p>Explicarei sobre os problemas não resolvidos da matemática. Embora os problemas em si sejam simples, ainda há muitos que não foram provados.&lt;/p>
&lt;h2 id="existem-infinitos-números-perfeitos">Existem infinitos números perfeitos?
&lt;/h2>&lt;p>Um número perfeito é um número natural cuja soma de seus divisores positivos, excluindo ele mesmo, é igual a ele mesmo.
Por exemplo,&lt;/p>
&lt;ul>
&lt;li>Os divisores de 6 são 1, 2, 3 e, como 1+2+3=6, é um número perfeito.&lt;/li>
&lt;li>Os divisores de 28 são 1, 2, 4, 7, 14 e, como 1+2+4+7+14=28, é um número perfeito.&lt;/li>
&lt;/ul>
&lt;p>Atualmente, apenas 51 foram descobertos, e espera-se que existam infinitos,
mas isso ainda não foi provado.&lt;/p>
&lt;h2 id="conjectura-de-goldbach">Conjectura de Goldbach
&lt;/h2>&lt;p>A conjectura de Goldbach é a conjectura de que todo número par maior que 2 pode ser expresso como a soma de dois números primos.
(Aqui, um número primo é um número natural que não tem outros divisores além de 1 e ele mesmo.)&lt;/p>
&lt;p>Por exemplo,&lt;/p>
&lt;ul>
&lt;li>4=2+2&lt;/li>
&lt;li>6=3+3&lt;/li>
&lt;li>8=3+5&lt;/li>
&lt;li>10=3+7=5+5&lt;/li>
&lt;/ul>
&lt;p>O problema em si é muito simples, mas ainda não foi provado.&lt;/p>
&lt;h2 id="hipótese-de-riemann">Hipótese de Riemann
&lt;/h2>&lt;p>A hipótese de Riemann é a conjectura de que os zeros da função zeta de Riemann estão restritos a números pares negativos e números complexos com parte real igual a 1/2.&lt;/p>
&lt;p>A função zeta de Riemann é, quando $s$ é um número complexo e $n$ é um número natural,&lt;/p>
$$\zeta(s):=\sum _{n=1}^{\infty }{\frac {1}{n^{s}}}=1+{\frac {1}{2^{s}}}+{\frac {1}{3^{s}}}+{\frac {1}{4^{s}}}+\cdots$$
&lt;p>a função $\zeta$ definida por.&lt;/p></description></item><item><title>Tentei coletar várias caixas de diálogo de informações de versão</title><link>http://kenji.blog/pt/p/%E3%81%84%E3%82%8D%E3%82%93%E3%81%AA%E3%83%90%E3%83%BC%E3%82%B8%E3%83%A7%E3%83%B3%E6%83%85%E5%A0%B1%E3%83%80%E3%82%A4%E3%82%A2%E3%83%AD%E3%82%B0%E9%9B%86%E3%82%81%E3%81%A6%E3%81%BF%E3%81%9F/</link><pubDate>Sat, 02 Mar 2024 21:32:11 +0900</pubDate><guid>http://kenji.blog/pt/p/%E3%81%84%E3%82%8D%E3%82%93%E3%81%AA%E3%83%90%E3%83%BC%E3%82%B8%E3%83%A7%E3%83%B3%E6%83%85%E5%A0%B1%E3%83%80%E3%82%A4%E3%82%A2%E3%83%AD%E3%82%B0%E9%9B%86%E3%82%81%E3%81%A6%E3%81%BF%E3%81%9F/</guid><description>&lt;img src="http://kenji.blog/p/%E3%81%84%E3%82%8D%E3%82%93%E3%81%AA%E3%83%90%E3%83%BC%E3%82%B8%E3%83%A7%E3%83%B3%E6%83%85%E5%A0%B1%E3%83%80%E3%82%A4%E3%82%A2%E3%83%AD%E3%82%B0%E9%9B%86%E3%82%81%E3%81%A6%E3%81%BF%E3%81%9F/img.png" alt="Featured image of post Tentei coletar várias caixas de diálogo de informações de versão" />&lt;h1 id="tentei-coletar-várias-caixas-de-diálogo-de-informações-de-versão">Tentei coletar várias caixas de diálogo de informações de versão
&lt;/h1>&lt;h2 id="windows-11">Windows 11
&lt;/h2>&lt;p>Em primeiro lugar, aqui estão as informações da versão do Windows 11 que estou usando agora.
&lt;img src="http://kenji.blog/p/%E3%81%84%E3%82%8D%E3%82%93%E3%81%AA%E3%83%90%E3%83%BC%E3%82%B8%E3%83%A7%E3%83%B3%E6%83%85%E5%A0%B1%E3%83%80%E3%82%A4%E3%82%A2%E3%83%AD%E3%82%B0%E9%9B%86%E3%82%81%E3%81%A6%E3%81%BF%E3%81%9F/img.png"
width="536"
height="472"
srcset="http://kenji.blog/p/%E3%81%84%E3%82%8D%E3%82%93%E3%81%AA%E3%83%90%E3%83%BC%E3%82%B8%E3%83%A7%E3%83%B3%E6%83%85%E5%A0%B1%E3%83%80%E3%82%A4%E3%82%A2%E3%83%AD%E3%82%B0%E9%9B%86%E3%82%81%E3%81%A6%E3%81%BF%E3%81%9F/img_hub829fc9858068bdd622cbafca10cd245_20954_480x0_resize_box_3.png 480w, http://kenji.blog/p/%E3%81%84%E3%82%8D%E3%82%93%E3%81%AA%E3%83%90%E3%83%BC%E3%82%B8%E3%83%A7%E3%83%B3%E6%83%85%E5%A0%B1%E3%83%80%E3%82%A4%E3%82%A2%E3%83%AD%E3%82%B0%E9%9B%86%E3%82%81%E3%81%A6%E3%81%BF%E3%81%9F/img_hub829fc9858068bdd622cbafca10cd245_20954_1024x0_resize_box_3.png 1024w"
loading="lazy"
alt="img.png"
class="gallery-image"
data-flex-grow="113"
data-flex-basis="272px"
>&lt;/p>
&lt;h2 id="intellij-idea-community-edition">IntelliJ IDEA (Community Edition)
&lt;/h2>&lt;p>Este é o ambiente no qual estou escrevendo este blog.
&lt;img src="http://kenji.blog/p/%E3%81%84%E3%82%8D%E3%82%93%E3%81%AA%E3%83%90%E3%83%BC%E3%82%B8%E3%83%A7%E3%83%B3%E6%83%85%E5%A0%B1%E3%83%80%E3%82%A4%E3%82%A2%E3%83%AD%E3%82%B0%E9%9B%86%E3%82%81%E3%81%A6%E3%81%BF%E3%81%9F/img_1.png"
width="430"
height="280"
srcset="http://kenji.blog/p/%E3%81%84%E3%82%8D%E3%82%93%E3%81%AA%E3%83%90%E3%83%BC%E3%82%B8%E3%83%A7%E3%83%B3%E6%83%85%E5%A0%B1%E3%83%80%E3%82%A4%E3%82%A2%E3%83%AD%E3%82%B0%E9%9B%86%E3%82%81%E3%81%A6%E3%81%BF%E3%81%9F/img_1_hua5367752a804b207b533162809f32018_16224_480x0_resize_box_3.png 480w, http://kenji.blog/p/%E3%81%84%E3%82%8D%E3%82%93%E3%81%AA%E3%83%90%E3%83%BC%E3%82%B8%E3%83%A7%E3%83%B3%E6%83%85%E5%A0%B1%E3%83%80%E3%82%A4%E3%82%A2%E3%83%AD%E3%82%B0%E9%9B%86%E3%82%81%E3%81%A6%E3%81%BF%E3%81%9F/img_1_hua5367752a804b207b533162809f32018_16224_1024x0_resize_box_3.png 1024w"
loading="lazy"
alt="img_1.png"
class="gallery-image"
data-flex-grow="153"
data-flex-basis="368px"
>&lt;/p>
&lt;h2 id="visual-studio-code">Visual Studio Code
&lt;/h2>&lt;p>Este também é um editor que uso frequentemente. É surpreendentemente simples.
&lt;img src="http://kenji.blog/p/%E3%81%84%E3%82%8D%E3%82%93%E3%81%AA%E3%83%90%E3%83%BC%E3%82%B8%E3%83%A7%E3%83%B3%E6%83%85%E5%A0%B1%E3%83%80%E3%82%A4%E3%82%A2%E3%83%AD%E3%82%B0%E9%9B%86%E3%82%81%E3%81%A6%E3%81%BF%E3%81%9F/img_2.png"
width="369"
height="279"
srcset="http://kenji.blog/p/%E3%81%84%E3%82%8D%E3%82%93%E3%81%AA%E3%83%90%E3%83%BC%E3%82%B8%E3%83%A7%E3%83%B3%E6%83%85%E5%A0%B1%E3%83%80%E3%82%A4%E3%82%A2%E3%83%AD%E3%82%B0%E9%9B%86%E3%82%81%E3%81%A6%E3%81%BF%E3%81%9F/img_2_hu6f1ad03ad750bb1606eb1362d5adbc93_13862_480x0_resize_box_3.png 480w, http://kenji.blog/p/%E3%81%84%E3%82%8D%E3%82%93%E3%81%AA%E3%83%90%E3%83%BC%E3%82%B8%E3%83%A7%E3%83%B3%E6%83%85%E5%A0%B1%E3%83%80%E3%82%A4%E3%82%A2%E3%83%AD%E3%82%B0%E9%9B%86%E3%82%81%E3%81%A6%E3%81%BF%E3%81%9F/img_2_hu6f1ad03ad750bb1606eb1362d5adbc93_13862_1024x0_resize_box_3.png 1024w"
loading="lazy"
alt="img_2.png"
class="gallery-image"
data-flex-grow="132"
data-flex-basis="317px"
>&lt;/p>
&lt;h2 id="visual-studio">Visual Studio
&lt;/h2>&lt;p>Este é o ambiente de desenvolvimento que eu uso para C++.
&lt;img src="http://kenji.blog/p/%E3%81%84%E3%82%8D%E3%82%93%E3%81%AA%E3%83%90%E3%83%BC%E3%82%B8%E3%83%A7%E3%83%B3%E6%83%85%E5%A0%B1%E3%83%80%E3%82%A4%E3%82%A2%E3%83%AD%E3%82%B0%E9%9B%86%E3%82%81%E3%81%A6%E3%81%BF%E3%81%9F/img_3.png"
width="766"
height="558"
srcset="http://kenji.blog/p/%E3%81%84%E3%82%8D%E3%82%93%E3%81%AA%E3%83%90%E3%83%BC%E3%82%B8%E3%83%A7%E3%83%B3%E6%83%85%E5%A0%B1%E3%83%80%E3%82%A4%E3%82%A2%E3%83%AD%E3%82%B0%E9%9B%86%E3%82%81%E3%81%A6%E3%81%BF%E3%81%9F/img_3_hue2937726cf71daf9e61d0319a27b00f9_40495_480x0_resize_box_3.png 480w, http://kenji.blog/p/%E3%81%84%E3%82%8D%E3%82%93%E3%81%AA%E3%83%90%E3%83%BC%E3%82%B8%E3%83%A7%E3%83%B3%E6%83%85%E5%A0%B1%E3%83%80%E3%82%A4%E3%82%A2%E3%83%AD%E3%82%B0%E9%9B%86%E3%82%81%E3%81%A6%E3%81%BF%E3%81%9F/img_3_hue2937726cf71daf9e61d0319a27b00f9_40495_1024x0_resize_box_3.png 1024w"
loading="lazy"
alt="img_3.png"
class="gallery-image"
data-flex-grow="137"
data-flex-basis="329px"
>&lt;/p>
&lt;h2 id="line-windows">LINE (Windows)
&lt;/h2>&lt;p>Esta é a versão do LINE para Windows.
&lt;img src="http://kenji.blog/p/%E3%81%84%E3%82%8D%E3%82%93%E3%81%AA%E3%83%90%E3%83%BC%E3%82%B8%E3%83%A7%E3%83%B3%E6%83%85%E5%A0%B1%E3%83%80%E3%82%A4%E3%82%A2%E3%83%AD%E3%82%B0%E9%9B%86%E3%82%81%E3%81%A6%E3%81%BF%E3%81%9F/img_4.png"
width="657"
height="494"
srcset="http://kenji.blog/p/%E3%81%84%E3%82%8D%E3%82%93%E3%81%AA%E3%83%90%E3%83%BC%E3%82%B8%E3%83%A7%E3%83%B3%E6%83%85%E5%A0%B1%E3%83%80%E3%82%A4%E3%82%A2%E3%83%AD%E3%82%B0%E9%9B%86%E3%82%81%E3%81%A6%E3%81%BF%E3%81%9F/img_4_hu8581061934b0bb5022cd7a96525141a7_21285_480x0_resize_box_3.png 480w, http://kenji.blog/p/%E3%81%84%E3%82%8D%E3%82%93%E3%81%AA%E3%83%90%E3%83%BC%E3%82%B8%E3%83%A7%E3%83%B3%E6%83%85%E5%A0%B1%E3%83%80%E3%82%A4%E3%82%A2%E3%83%AD%E3%82%B0%E9%9B%86%E3%82%81%E3%81%A6%E3%81%BF%E3%81%9F/img_4_hu8581061934b0bb5022cd7a96525141a7_21285_1024x0_resize_box_3.png 1024w"
loading="lazy"
alt="img_4.png"
class="gallery-image"
data-flex-grow="132"
data-flex-basis="319px"
>&lt;/p>
&lt;h2 id="paintnet">Paint.NET
&lt;/h2>&lt;p>Este é um software de edição de imagens.
&lt;img src="http://kenji.blog/p/%E3%81%84%E3%82%8D%E3%82%93%E3%81%AA%E3%83%90%E3%83%BC%E3%82%B8%E3%83%A7%E3%83%B3%E6%83%85%E5%A0%B1%E3%83%80%E3%82%A4%E3%82%A2%E3%83%AD%E3%82%B0%E9%9B%86%E3%82%81%E3%81%A6%E3%81%BF%E3%81%9F/img_5.png"
width="497"
height="444"
srcset="http://kenji.blog/p/%E3%81%84%E3%82%8D%E3%82%93%E3%81%AA%E3%83%90%E3%83%BC%E3%82%B8%E3%83%A7%E3%83%B3%E6%83%85%E5%A0%B1%E3%83%80%E3%82%A4%E3%82%A2%E3%83%AD%E3%82%B0%E9%9B%86%E3%82%81%E3%81%A6%E3%81%BF%E3%81%9F/img_5_huea1c283c954d5aa522490bb5fd418a17_41055_480x0_resize_box_3.png 480w, http://kenji.blog/p/%E3%81%84%E3%82%8D%E3%82%93%E3%81%AA%E3%83%90%E3%83%BC%E3%82%B8%E3%83%A7%E3%83%B3%E6%83%85%E5%A0%B1%E3%83%80%E3%82%A4%E3%82%A2%E3%83%AD%E3%82%B0%E9%9B%86%E3%82%81%E3%81%A6%E3%81%BF%E3%81%9F/img_5_huea1c283c954d5aa522490bb5fd418a17_41055_1024x0_resize_box_3.png 1024w"
loading="lazy"
alt="img_5.png"
class="gallery-image"
data-flex-grow="111"
data-flex-basis="268px"
>&lt;/p>
&lt;h2 id="sakura-editor">sakura editor
&lt;/h2>&lt;p>Este é um editor de texto.
&lt;img src="http://kenji.blog/p/%E3%81%84%E3%82%8D%E3%82%93%E3%81%AA%E3%83%90%E3%83%BC%E3%82%B8%E3%83%A7%E3%83%B3%E6%83%85%E5%A0%B1%E3%83%80%E3%82%A4%E3%82%A2%E3%83%AD%E3%82%B0%E9%9B%86%E3%82%81%E3%81%A6%E3%81%BF%E3%81%9F/img_6.png"
width="457"
height="374"
srcset="http://kenji.blog/p/%E3%81%84%E3%82%8D%E3%82%93%E3%81%AA%E3%83%90%E3%83%BC%E3%82%B8%E3%83%A7%E3%83%B3%E6%83%85%E5%A0%B1%E3%83%80%E3%82%A4%E3%82%A2%E3%83%AD%E3%82%B0%E9%9B%86%E3%82%81%E3%81%A6%E3%81%BF%E3%81%9F/img_6_hu30dd12ad135ab6e1e97018cf29903ec0_25090_480x0_resize_box_3.png 480w, http://kenji.blog/p/%E3%81%84%E3%82%8D%E3%82%93%E3%81%AA%E3%83%90%E3%83%BC%E3%82%B8%E3%83%A7%E3%83%B3%E6%83%85%E5%A0%B1%E3%83%80%E3%82%A4%E3%82%A2%E3%83%AD%E3%82%B0%E9%9B%86%E3%82%81%E3%81%A6%E3%81%BF%E3%81%9F/img_6_hu30dd12ad135ab6e1e97018cf29903ec0_25090_1024x0_resize_box_3.png 1024w"
loading="lazy"
alt="img_6.png"
class="gallery-image"
data-flex-grow="122"
data-flex-basis="293px"
>&lt;/p>
&lt;h2 id="google-chrome">Google Chrome
&lt;/h2>&lt;p>Este é o Google Chrome. Desde a introdução do Edge, não o uso muito.
&lt;img src="http://kenji.blog/p/%E3%81%84%E3%82%8D%E3%82%93%E3%81%AA%E3%83%90%E3%83%BC%E3%82%B8%E3%83%A7%E3%83%B3%E6%83%85%E5%A0%B1%E3%83%80%E3%82%A4%E3%82%A2%E3%83%AD%E3%82%B0%E9%9B%86%E3%82%81%E3%81%A6%E3%81%BF%E3%81%9F/img_7.png"
width="716"
height="550"
srcset="http://kenji.blog/p/%E3%81%84%E3%82%8D%E3%82%93%E3%81%AA%E3%83%90%E3%83%BC%E3%82%B8%E3%83%A7%E3%83%B3%E6%83%85%E5%A0%B1%E3%83%80%E3%82%A4%E3%82%A2%E3%83%AD%E3%82%B0%E9%9B%86%E3%82%81%E3%81%A6%E3%81%BF%E3%81%9F/img_7_hu7711134ce22b051fae7bc05ca532351f_20474_480x0_resize_box_3.png 480w, http://kenji.blog/p/%E3%81%84%E3%82%8D%E3%82%93%E3%81%AA%E3%83%90%E3%83%BC%E3%82%B8%E3%83%A7%E3%83%B3%E6%83%85%E5%A0%B1%E3%83%80%E3%82%A4%E3%82%A2%E3%83%AD%E3%82%B0%E9%9B%86%E3%82%81%E3%81%A6%E3%81%BF%E3%81%9F/img_7_hu7711134ce22b051fae7bc05ca532351f_20474_1024x0_resize_box_3.png 1024w"
loading="lazy"
alt="img_7.png"
class="gallery-image"
data-flex-grow="130"
data-flex-basis="312px"
>&lt;/p>
&lt;h2 id="firefox">Firefox
&lt;/h2>&lt;p>Este é o Firefox. Ultimamente, não o uso muito.
&lt;img src="http://kenji.blog/p/%E3%81%84%E3%82%8D%E3%82%93%E3%81%AA%E3%83%90%E3%83%BC%E3%82%B8%E3%83%A7%E3%83%B3%E6%83%85%E5%A0%B1%E3%83%80%E3%82%A4%E3%82%A2%E3%83%AD%E3%82%B0%E9%9B%86%E3%82%81%E3%81%A6%E3%81%BF%E3%81%9F/img_8.png"
width="732"
height="399"
srcset="http://kenji.blog/p/%E3%81%84%E3%82%8D%E3%82%93%E3%81%AA%E3%83%90%E3%83%BC%E3%82%B8%E3%83%A7%E3%83%B3%E6%83%85%E5%A0%B1%E3%83%80%E3%82%A4%E3%82%A2%E3%83%AD%E3%82%B0%E9%9B%86%E3%82%81%E3%81%A6%E3%81%BF%E3%81%9F/img_8_hue61323b7348180f9bdf1b2fdcc2598aa_71867_480x0_resize_box_3.png 480w, http://kenji.blog/p/%E3%81%84%E3%82%8D%E3%82%93%E3%81%AA%E3%83%90%E3%83%BC%E3%82%B8%E3%83%A7%E3%83%B3%E6%83%85%E5%A0%B1%E3%83%80%E3%82%A4%E3%82%A2%E3%83%AD%E3%82%B0%E9%9B%86%E3%82%81%E3%81%A6%E3%81%BF%E3%81%9F/img_8_hue61323b7348180f9bdf1b2fdcc2598aa_71867_1024x0_resize_box_3.png 1024w"
loading="lazy"
alt="img_8.png"
class="gallery-image"
data-flex-grow="183"
data-flex-basis="440px"
>&lt;/p>
&lt;h2 id="microsoft-edge">Microsoft Edge
&lt;/h2>&lt;p>Este é o Microsoft Edge. Ultimamente, costumo usar mais este.
&lt;img src="http://kenji.blog/p/%E3%81%84%E3%82%8D%E3%82%93%E3%81%AA%E3%83%90%E3%83%BC%E3%82%B8%E3%83%A7%E3%83%B3%E6%83%85%E5%A0%B1%E3%83%80%E3%82%A4%E3%82%A2%E3%83%AD%E3%82%B0%E9%9B%86%E3%82%81%E3%81%A6%E3%81%BF%E3%81%9F/img_9.png"
width="862"
height="813"
srcset="http://kenji.blog/p/%E3%81%84%E3%82%8D%E3%82%93%E3%81%AA%E3%83%90%E3%83%BC%E3%82%B8%E3%83%A7%E3%83%B3%E6%83%85%E5%A0%B1%E3%83%80%E3%82%A4%E3%82%A2%E3%83%AD%E3%82%B0%E9%9B%86%E3%82%81%E3%81%A6%E3%81%BF%E3%81%9F/img_9_hu45c417f9fcbb634e734d206de2b56aca_107279_480x0_resize_box_3.png 480w, http://kenji.blog/p/%E3%81%84%E3%82%8D%E3%82%93%E3%81%AA%E3%83%90%E3%83%BC%E3%82%B8%E3%83%A7%E3%83%B3%E6%83%85%E5%A0%B1%E3%83%80%E3%82%A4%E3%82%A2%E3%83%AD%E3%82%B0%E9%9B%86%E3%82%81%E3%81%A6%E3%81%BF%E3%81%9F/img_9_hu45c417f9fcbb634e734d206de2b56aca_107279_1024x0_resize_box_3.png 1024w"
loading="lazy"
alt="img_9.png"
class="gallery-image"
data-flex-grow="106"
data-flex-basis="254px"
>&lt;/p>
&lt;h2 id="obs-studio">OBS Studio
&lt;/h2>&lt;p>Este é o OBS Studio. Ultimamente, não o uso muito.
&lt;img src="http://kenji.blog/p/%E3%81%84%E3%82%8D%E3%82%93%E3%81%AA%E3%83%90%E3%83%BC%E3%82%B8%E3%83%A7%E3%83%B3%E6%83%85%E5%A0%B1%E3%83%80%E3%82%A4%E3%82%A2%E3%83%AD%E3%82%B0%E9%9B%86%E3%82%81%E3%81%A6%E3%81%BF%E3%81%9F/img_10.png"
width="842"
height="551"
srcset="http://kenji.blog/p/%E3%81%84%E3%82%8D%E3%82%93%E3%81%AA%E3%83%90%E3%83%BC%E3%82%B8%E3%83%A7%E3%83%B3%E6%83%85%E5%A0%B1%E3%83%80%E3%82%A4%E3%82%A2%E3%83%AD%E3%82%B0%E9%9B%86%E3%82%81%E3%81%A6%E3%81%BF%E3%81%9F/img_10_hu180a6e2acbef184b6ad8a3fffb45c90c_39675_480x0_resize_box_3.png 480w, http://kenji.blog/p/%E3%81%84%E3%82%8D%E3%82%93%E3%81%AA%E3%83%90%E3%83%BC%E3%82%B8%E3%83%A7%E3%83%B3%E6%83%85%E5%A0%B1%E3%83%80%E3%82%A4%E3%82%A2%E3%83%AD%E3%82%B0%E9%9B%86%E3%82%81%E3%81%A6%E3%81%BF%E3%81%9F/img_10_hu180a6e2acbef184b6ad8a3fffb45c90c_39675_1024x0_resize_box_3.png 1024w"
loading="lazy"
alt="img_10.png"
class="gallery-image"
data-flex-grow="152"
data-flex-basis="366px"
>&lt;/p>
&lt;h2 id="tradingview">TradingView
&lt;/h2>&lt;p>Este é o TradingView. Ultimamente, tenho o usado para ver o gráfico do par dólar-iene.
&lt;img src="http://kenji.blog/p/%E3%81%84%E3%82%8D%E3%82%93%E3%81%AA%E3%83%90%E3%83%BC%E3%82%B8%E3%83%A7%E3%83%B3%E6%83%85%E5%A0%B1%E3%83%80%E3%82%A4%E3%82%A2%E3%83%AD%E3%82%B0%E9%9B%86%E3%82%81%E3%81%A6%E3%81%BF%E3%81%9F/img_11.png"
width="633"
height="650"
srcset="http://kenji.blog/p/%E3%81%84%E3%82%8D%E3%82%93%E3%81%AA%E3%83%90%E3%83%BC%E3%82%B8%E3%83%A7%E3%83%B3%E6%83%85%E5%A0%B1%E3%83%80%E3%82%A4%E3%82%A2%E3%83%AD%E3%82%B0%E9%9B%86%E3%82%81%E3%81%A6%E3%81%BF%E3%81%9F/img_11_hu53621cc6fc47bf074deb3028d86cf3c0_19381_480x0_resize_box_3.png 480w, http://kenji.blog/p/%E3%81%84%E3%82%8D%E3%82%93%E3%81%AA%E3%83%90%E3%83%BC%E3%82%B8%E3%83%A7%E3%83%B3%E6%83%85%E5%A0%B1%E3%83%80%E3%82%A4%E3%82%A2%E3%83%AD%E3%82%B0%E9%9B%86%E3%82%81%E3%81%A6%E3%81%BF%E3%81%9F/img_11_hu53621cc6fc47bf074deb3028d86cf3c0_19381_1024x0_resize_box_3.png 1024w"
loading="lazy"
alt="img_11.png"
class="gallery-image"
data-flex-grow="97"
data-flex-basis="233px"
>&lt;/p>
&lt;h2 id="spy">Spy++
&lt;/h2>&lt;p>Este é o Spy++. É uma ferramenta incluída no Windows SDK.
&lt;img src="http://kenji.blog/p/%E3%81%84%E3%82%8D%E3%82%93%E3%81%AA%E3%83%90%E3%83%BC%E3%82%B8%E3%83%A7%E3%83%B3%E6%83%85%E5%A0%B1%E3%83%80%E3%82%A4%E3%82%A2%E3%83%AD%E3%82%B0%E9%9B%86%E3%82%81%E3%81%A6%E3%81%BF%E3%81%9F/img_12.png"
width="492"
height="218"
srcset="http://kenji.blog/p/%E3%81%84%E3%82%8D%E3%82%93%E3%81%AA%E3%83%90%E3%83%BC%E3%82%B8%E3%83%A7%E3%83%B3%E6%83%85%E5%A0%B1%E3%83%80%E3%82%A4%E3%82%A2%E3%83%AD%E3%82%B0%E9%9B%86%E3%82%81%E3%81%A6%E3%81%BF%E3%81%9F/img_12_hu637d3cfc5948f4a10326a7ffccf8ce5f_10468_480x0_resize_box_3.png 480w, http://kenji.blog/p/%E3%81%84%E3%82%8D%E3%82%93%E3%81%AA%E3%83%90%E3%83%BC%E3%82%B8%E3%83%A7%E3%83%B3%E6%83%85%E5%A0%B1%E3%83%80%E3%82%A4%E3%82%A2%E3%83%AD%E3%82%B0%E9%9B%86%E3%82%81%E3%81%A6%E3%81%BF%E3%81%9F/img_12_hu637d3cfc5948f4a10326a7ffccf8ce5f_10468_1024x0_resize_box_3.png 1024w"
loading="lazy"
alt="img_12.png"
class="gallery-image"
data-flex-grow="225"
data-flex-basis="541px"
>&lt;/p>
&lt;h2 id="dependency-walker">dependency walker
&lt;/h2>&lt;p>Este é o dependency walker. É uma ferramenta incluída no Windows SDK.
&lt;img src="http://kenji.blog/p/%E3%81%84%E3%82%8D%E3%82%93%E3%81%AA%E3%83%90%E3%83%BC%E3%82%B8%E3%83%A7%E3%83%B3%E6%83%85%E5%A0%B1%E3%83%80%E3%82%A4%E3%82%A2%E3%83%AD%E3%82%B0%E9%9B%86%E3%82%81%E3%81%A6%E3%81%BF%E3%81%9F/img_13.png"
width="352"
height="209"
srcset="http://kenji.blog/p/%E3%81%84%E3%82%8D%E3%82%93%E3%81%AA%E3%83%90%E3%83%BC%E3%82%B8%E3%83%A7%E3%83%B3%E6%83%85%E5%A0%B1%E3%83%80%E3%82%A4%E3%82%A2%E3%83%AD%E3%82%B0%E9%9B%86%E3%82%81%E3%81%A6%E3%81%BF%E3%81%9F/img_13_hu842e211dd17745aa6a8fb1c0bbdff9f5_6341_480x0_resize_box_3.png 480w, http://kenji.blog/p/%E3%81%84%E3%82%8D%E3%82%93%E3%81%AA%E3%83%90%E3%83%BC%E3%82%B8%E3%83%A7%E3%83%B3%E6%83%85%E5%A0%B1%E3%83%80%E3%82%A4%E3%82%A2%E3%83%AD%E3%82%B0%E9%9B%86%E3%82%81%E3%81%A6%E3%81%BF%E3%81%9F/img_13_hu842e211dd17745aa6a8fb1c0bbdff9f5_6341_1024x0_resize_box_3.png 1024w"
loading="lazy"
alt="img_13.png"
class="gallery-image"
data-flex-grow="168"
data-flex-basis="404px"
>&lt;/p>
&lt;h2 id="resource-hacker">resource hacker
&lt;/h2>&lt;p>Este é o resource hacker. É uma ferramenta para editar e extrair recursos de arquivos executáveis.
&lt;img src="http://kenji.blog/p/%E3%81%84%E3%82%8D%E3%82%93%E3%81%AA%E3%83%90%E3%83%BC%E3%82%B8%E3%83%A7%E3%83%B3%E6%83%85%E5%A0%B1%E3%83%80%E3%82%A4%E3%82%A2%E3%83%AD%E3%82%B0%E9%9B%86%E3%82%81%E3%81%A6%E3%81%BF%E3%81%9F/img_14.png"
width="338"
height="246"
srcset="http://kenji.blog/p/%E3%81%84%E3%82%8D%E3%82%93%E3%81%AA%E3%83%90%E3%83%BC%E3%82%B8%E3%83%A7%E3%83%B3%E6%83%85%E5%A0%B1%E3%83%80%E3%82%A4%E3%82%A2%E3%83%AD%E3%82%B0%E9%9B%86%E3%82%81%E3%81%A6%E3%81%BF%E3%81%9F/img_14_huc57d60e163fd0bcc8f075dec24a49f89_36267_480x0_resize_box_3.png 480w, http://kenji.blog/p/%E3%81%84%E3%82%8D%E3%82%93%E3%81%AA%E3%83%90%E3%83%BC%E3%82%B8%E3%83%A7%E3%83%B3%E6%83%85%E5%A0%B1%E3%83%80%E3%82%A4%E3%82%A2%E3%83%AD%E3%82%B0%E9%9B%86%E3%82%81%E3%81%A6%E3%81%BF%E3%81%9F/img_14_huc57d60e163fd0bcc8f075dec24a49f89_36267_1024x0_resize_box_3.png 1024w"
loading="lazy"
alt="img_14.png"
class="gallery-image"
data-flex-grow="137"
data-flex-basis="329px"
>&lt;/p>
&lt;h2 id="microsoft-excel">Microsoft Excel
&lt;/h2>&lt;p>Este é o Microsoft Excel.
&lt;img src="http://kenji.blog/p/%E3%81%84%E3%82%8D%E3%82%93%E3%81%AA%E3%83%90%E3%83%BC%E3%82%B8%E3%83%A7%E3%83%B3%E6%83%85%E5%A0%B1%E3%83%80%E3%82%A4%E3%82%A2%E3%83%AD%E3%82%B0%E9%9B%86%E3%82%81%E3%81%A6%E3%81%BF%E3%81%9F/img_15.png"
width="768"
height="618"
srcset="http://kenji.blog/p/%E3%81%84%E3%82%8D%E3%82%93%E3%81%AA%E3%83%90%E3%83%BC%E3%82%B8%E3%83%A7%E3%83%B3%E6%83%85%E5%A0%B1%E3%83%80%E3%82%A4%E3%82%A2%E3%83%AD%E3%82%B0%E9%9B%86%E3%82%81%E3%81%A6%E3%81%BF%E3%81%9F/img_15_hu8a9136a150d5d639659ac9ceca75f4b3_91079_480x0_resize_box_3.png 480w, http://kenji.blog/p/%E3%81%84%E3%82%8D%E3%82%93%E3%81%AA%E3%83%90%E3%83%BC%E3%82%B8%E3%83%A7%E3%83%B3%E6%83%85%E5%A0%B1%E3%83%80%E3%82%A4%E3%82%A2%E3%83%AD%E3%82%B0%E9%9B%86%E3%82%81%E3%81%A6%E3%81%BF%E3%81%9F/img_15_hu8a9136a150d5d639659ac9ceca75f4b3_91079_1024x0_resize_box_3.png 1024w"
loading="lazy"
alt="img_15.png"
class="gallery-image"
data-flex-grow="124"
data-flex-basis="298px"
>&lt;/p>
&lt;h2 id="bandicam">bandicam
&lt;/h2>&lt;p>Este é o Bandicam. É uma ferramenta de captura de vídeo.
&lt;img src="http://kenji.blog/p/%E3%81%84%E3%82%8D%E3%82%93%E3%81%AA%E3%83%90%E3%83%BC%E3%82%B8%E3%83%A7%E3%83%B3%E6%83%85%E5%A0%B1%E3%83%80%E3%82%A4%E3%82%A2%E3%83%AD%E3%82%B0%E9%9B%86%E3%82%81%E3%81%A6%E3%81%BF%E3%81%9F/img_16.png"
width="620"
height="570"
srcset="http://kenji.blog/p/%E3%81%84%E3%82%8D%E3%82%93%E3%81%AA%E3%83%90%E3%83%BC%E3%82%B8%E3%83%A7%E3%83%B3%E6%83%85%E5%A0%B1%E3%83%80%E3%82%A4%E3%82%A2%E3%83%AD%E3%82%B0%E9%9B%86%E3%82%81%E3%81%A6%E3%81%BF%E3%81%9F/img_16_hu3e31361df9b5deb62846e4b96bf6b125_70140_480x0_resize_box_3.png 480w, http://kenji.blog/p/%E3%81%84%E3%82%8D%E3%82%93%E3%81%AA%E3%83%90%E3%83%BC%E3%82%B8%E3%83%A7%E3%83%B3%E6%83%85%E5%A0%B1%E3%83%80%E3%82%A4%E3%82%A2%E3%83%AD%E3%82%B0%E9%9B%86%E3%82%81%E3%81%A6%E3%81%BF%E3%81%9F/img_16_hu3e31361df9b5deb62846e4b96bf6b125_70140_1024x0_resize_box_3.png 1024w"
loading="lazy"
alt="img_16.png"
class="gallery-image"
data-flex-grow="108"
data-flex-basis="261px"
>&lt;/p>
&lt;h2 id="winmerge">winmerge
&lt;/h2>&lt;p>Este é o WinMerge. É uma ferramenta para verificar diferenças entre arquivos.
&lt;img src="http://kenji.blog/p/%E3%81%84%E3%82%8D%E3%82%93%E3%81%AA%E3%83%90%E3%83%BC%E3%82%B8%E3%83%A7%E3%83%B3%E6%83%85%E5%A0%B1%E3%83%80%E3%82%A4%E3%82%A2%E3%83%AD%E3%82%B0%E9%9B%86%E3%82%81%E3%81%A6%E3%81%BF%E3%81%9F/img_17.png"
width="551"
height="409"
srcset="http://kenji.blog/p/%E3%81%84%E3%82%8D%E3%82%93%E3%81%AA%E3%83%90%E3%83%BC%E3%82%B8%E3%83%A7%E3%83%B3%E6%83%85%E5%A0%B1%E3%83%80%E3%82%A4%E3%82%A2%E3%83%AD%E3%82%B0%E9%9B%86%E3%82%81%E3%81%A6%E3%81%BF%E3%81%9F/img_17_hud946a2eea7a4d661d773b263a8824288_229090_480x0_resize_box_3.png 480w, http://kenji.blog/p/%E3%81%84%E3%82%8D%E3%82%93%E3%81%AA%E3%83%90%E3%83%BC%E3%82%B8%E3%83%A7%E3%83%B3%E6%83%85%E5%A0%B1%E3%83%80%E3%82%A4%E3%82%A2%E3%83%AD%E3%82%B0%E9%9B%86%E3%82%81%E3%81%A6%E3%81%BF%E3%81%9F/img_17_hud946a2eea7a4d661d773b263a8824288_229090_1024x0_resize_box_3.png 1024w"
loading="lazy"
alt="img_17.png"
class="gallery-image"
data-flex-grow="134"
data-flex-basis="323px"
>&lt;/p>
&lt;h2 id="itunes">iTunes
&lt;/h2>&lt;p>Este é o iTunes. Ultimamente, não o uso muito.
&lt;img src="http://kenji.blog/p/%E3%81%84%E3%82%8D%E3%82%93%E3%81%AA%E3%83%90%E3%83%BC%E3%82%B8%E3%83%A7%E3%83%B3%E6%83%85%E5%A0%B1%E3%83%80%E3%82%A4%E3%82%A2%E3%83%AD%E3%82%B0%E9%9B%86%E3%82%81%E3%81%A6%E3%81%BF%E3%81%9F/img_18.png"
width="602"
height="352"
srcset="http://kenji.blog/p/%E3%81%84%E3%82%8D%E3%82%93%E3%81%AA%E3%83%90%E3%83%BC%E3%82%B8%E3%83%A7%E3%83%B3%E6%83%85%E5%A0%B1%E3%83%80%E3%82%A4%E3%82%A2%E3%83%AD%E3%82%B0%E9%9B%86%E3%82%81%E3%81%A6%E3%81%BF%E3%81%9F/img_18_hu2285c1c196750773901fc479753d8d52_62514_480x0_resize_box_3.png 480w, http://kenji.blog/p/%E3%81%84%E3%82%8D%E3%82%93%E3%81%AA%E3%83%90%E3%83%BC%E3%82%B8%E3%83%A7%E3%83%B3%E6%83%85%E5%A0%B1%E3%83%80%E3%82%A4%E3%82%A2%E3%83%AD%E3%82%B0%E9%9B%86%E3%82%81%E3%81%A6%E3%81%BF%E3%81%9F/img_18_hu2285c1c196750773901fc479753d8d52_62514_1024x0_resize_box_3.png 1024w"
loading="lazy"
alt="img_18.png"
class="gallery-image"
data-flex-grow="171"
data-flex-basis="410px"
>&lt;/p>
&lt;h2 id="hidemaru-editor">Hidemaru Editor
&lt;/h2>&lt;p>Este é o Hidemaru Editor. É um editor de texto.
&lt;img src="http://kenji.blog/p/%E3%81%84%E3%82%8D%E3%82%93%E3%81%AA%E3%83%90%E3%83%BC%E3%82%B8%E3%83%A7%E3%83%B3%E6%83%85%E5%A0%B1%E3%83%80%E3%82%A4%E3%82%A2%E3%83%AD%E3%82%B0%E9%9B%86%E3%82%81%E3%81%A6%E3%81%BF%E3%81%9F/img_19.png"
width="364"
height="362"
srcset="http://kenji.blog/p/%E3%81%84%E3%82%8D%E3%82%93%E3%81%AA%E3%83%90%E3%83%BC%E3%82%B8%E3%83%A7%E3%83%B3%E6%83%85%E5%A0%B1%E3%83%80%E3%82%A4%E3%82%A2%E3%83%AD%E3%82%B0%E9%9B%86%E3%82%81%E3%81%A6%E3%81%BF%E3%81%9F/img_19_hu64b6fe4a78cf41bc83a36608446a6a6f_12142_480x0_resize_box_3.png 480w, http://kenji.blog/p/%E3%81%84%E3%82%8D%E3%82%93%E3%81%AA%E3%83%90%E3%83%BC%E3%82%B8%E3%83%A7%E3%83%B3%E6%83%85%E5%A0%B1%E3%83%80%E3%82%A4%E3%82%A2%E3%83%AD%E3%82%B0%E9%9B%86%E3%82%81%E3%81%A6%E3%81%BF%E3%81%9F/img_19_hu64b6fe4a78cf41bc83a36608446a6a6f_12142_1024x0_resize_box_3.png 1024w"
loading="lazy"
alt="img_19.png"
class="gallery-image"
data-flex-grow="100"
data-flex-basis="241px"
>&lt;/p>
&lt;h2 id="adobe-photoshop-cs6">Adobe Photoshop CS6
&lt;/h2>&lt;p>Este é o Adobe Photoshop CS6.
&lt;img src="http://kenji.blog/p/%E3%81%84%E3%82%8D%E3%82%93%E3%81%AA%E3%83%90%E3%83%BC%E3%82%B8%E3%83%A7%E3%83%B3%E6%83%85%E5%A0%B1%E3%83%80%E3%82%A4%E3%82%A2%E3%83%AD%E3%82%B0%E9%9B%86%E3%82%81%E3%81%A6%E3%81%BF%E3%81%9F/img_20.png"
width="684"
height="526"
srcset="http://kenji.blog/p/%E3%81%84%E3%82%8D%E3%82%93%E3%81%AA%E3%83%90%E3%83%BC%E3%82%B8%E3%83%A7%E3%83%B3%E6%83%85%E5%A0%B1%E3%83%80%E3%82%A4%E3%82%A2%E3%83%AD%E3%82%B0%E9%9B%86%E3%82%81%E3%81%A6%E3%81%BF%E3%81%9F/img_20_hu0e5417f24efe83fe850895cbdc3ee6bd_33925_480x0_resize_box_3.png 480w, http://kenji.blog/p/%E3%81%84%E3%82%8D%E3%82%93%E3%81%AA%E3%83%90%E3%83%BC%E3%82%B8%E3%83%A7%E3%83%B3%E6%83%85%E5%A0%B1%E3%83%80%E3%82%A4%E3%82%A2%E3%83%AD%E3%82%B0%E9%9B%86%E3%82%81%E3%81%A6%E3%81%BF%E3%81%9F/img_20_hu0e5417f24efe83fe850895cbdc3ee6bd_33925_1024x0_resize_box_3.png 1024w"
loading="lazy"
alt="img_20.png"
class="gallery-image"
data-flex-grow="130"
data-flex-basis="312px"
>&lt;/p>
&lt;h2 id="adobe-illustrator-cs6">Adobe Illustrator CS6
&lt;/h2>&lt;p>Este é o Adobe Illustrator CS6.
&lt;img src="http://kenji.blog/p/%E3%81%84%E3%82%8D%E3%82%93%E3%81%AA%E3%83%90%E3%83%BC%E3%82%B8%E3%83%A7%E3%83%B3%E6%83%85%E5%A0%B1%E3%83%80%E3%82%A4%E3%82%A2%E3%83%AD%E3%82%B0%E9%9B%86%E3%82%81%E3%81%A6%E3%81%BF%E3%81%9F/img_21.png"
width="688"
height="510"
srcset="http://kenji.blog/p/%E3%81%84%E3%82%8D%E3%82%93%E3%81%AA%E3%83%90%E3%83%BC%E3%82%B8%E3%83%A7%E3%83%B3%E6%83%85%E5%A0%B1%E3%83%80%E3%82%A4%E3%82%A2%E3%83%AD%E3%82%B0%E9%9B%86%E3%82%81%E3%81%A6%E3%81%BF%E3%81%9F/img_21_hu75d0b46d92a40a63b233ebe509de2aef_34525_480x0_resize_box_3.png 480w, http://kenji.blog/p/%E3%81%84%E3%82%8D%E3%82%93%E3%81%AA%E3%83%90%E3%83%BC%E3%82%B8%E3%83%A7%E3%83%B3%E6%83%85%E5%A0%B1%E3%83%80%E3%82%A4%E3%82%A2%E3%83%AD%E3%82%B0%E9%9B%86%E3%82%81%E3%81%A6%E3%81%BF%E3%81%9F/img_21_hu75d0b46d92a40a63b233ebe509de2aef_34525_1024x0_resize_box_3.png 1024w"
loading="lazy"
alt="img_21.png"
class="gallery-image"
data-flex-grow="134"
data-flex-basis="323px"
>&lt;/p>
&lt;h2 id="eset-nod32">ESET NOD32
&lt;/h2>&lt;p>Este é o ESET NOD32.
&lt;img src="http://kenji.blog/p/%E3%81%84%E3%82%8D%E3%82%93%E3%81%AA%E3%83%90%E3%83%BC%E3%82%B8%E3%83%A7%E3%83%B3%E6%83%85%E5%A0%B1%E3%83%80%E3%82%A4%E3%82%A2%E3%83%AD%E3%82%B0%E9%9B%86%E3%82%81%E3%81%A6%E3%81%BF%E3%81%9F/img_22.png"
width="1024"
height="670"
srcset="http://kenji.blog/p/%E3%81%84%E3%82%8D%E3%82%93%E3%81%AA%E3%83%90%E3%83%BC%E3%82%B8%E3%83%A7%E3%83%B3%E6%83%85%E5%A0%B1%E3%83%80%E3%82%A4%E3%82%A2%E3%83%AD%E3%82%B0%E9%9B%86%E3%82%81%E3%81%A6%E3%81%BF%E3%81%9F/img_22_hu56c202fdeac0311855a721ca11397713_49037_480x0_resize_box_3.png 480w, http://kenji.blog/p/%E3%81%84%E3%82%8D%E3%82%93%E3%81%AA%E3%83%90%E3%83%BC%E3%82%B8%E3%83%A7%E3%83%B3%E6%83%85%E5%A0%B1%E3%83%80%E3%82%A4%E3%82%A2%E3%83%AD%E3%82%B0%E9%9B%86%E3%82%81%E3%81%A6%E3%81%BF%E3%81%9F/img_22_hu56c202fdeac0311855a721ca11397713_49037_1024x0_resize_box_3.png 1024w"
loading="lazy"
alt="img_22.png"
class="gallery-image"
data-flex-grow="152"
data-flex-basis="366px"
>&lt;/p>
&lt;h2 id="notepad">NotePad++
&lt;/h2>&lt;p>Este é o NotePad++. É um editor de texto.
&lt;img src="http://kenji.blog/p/%E3%81%84%E3%82%8D%E3%82%93%E3%81%AA%E3%83%90%E3%83%BC%E3%82%B8%E3%83%A7%E3%83%B3%E6%83%85%E5%A0%B1%E3%83%80%E3%82%A4%E3%82%A2%E3%83%AD%E3%82%B0%E9%9B%86%E3%82%81%E3%81%A6%E3%81%BF%E3%81%9F/img_23.png"
width="407"
height="392"
srcset="http://kenji.blog/p/%E3%81%84%E3%82%8D%E3%82%93%E3%81%AA%E3%83%90%E3%83%BC%E3%82%B8%E3%83%A7%E3%83%B3%E6%83%85%E5%A0%B1%E3%83%80%E3%82%A4%E3%82%A2%E3%83%AD%E3%82%B0%E9%9B%86%E3%82%81%E3%81%A6%E3%81%BF%E3%81%9F/img_23_hu6eb2f3dbf16fa243605b7d0ac832471c_23159_480x0_resize_box_3.png 480w, http://kenji.blog/p/%E3%81%84%E3%82%8D%E3%82%93%E3%81%AA%E3%83%90%E3%83%BC%E3%82%B8%E3%83%A7%E3%83%B3%E6%83%85%E5%A0%B1%E3%83%80%E3%82%A4%E3%82%A2%E3%83%AD%E3%82%B0%E9%9B%86%E3%82%81%E3%81%A6%E3%81%BF%E3%81%9F/img_23_hu6eb2f3dbf16fa243605b7d0ac832471c_23159_1024x0_resize_box_3.png 1024w"
loading="lazy"
alt="img_23.png"
class="gallery-image"
data-flex-grow="103"
data-flex-basis="249px"
>&lt;/p>
&lt;h2 id="mifes">MIFES
&lt;/h2>&lt;p>Este é o MIFES. Ultimamente, não o uso muito.
&lt;img src="http://kenji.blog/p/%E3%81%84%E3%82%8D%E3%82%93%E3%81%AA%E3%83%90%E3%83%BC%E3%82%B8%E3%83%A7%E3%83%B3%E6%83%85%E5%A0%B1%E3%83%80%E3%82%A4%E3%82%A2%E3%83%AD%E3%82%B0%E9%9B%86%E3%82%81%E3%81%A6%E3%81%BF%E3%81%9F/img_24.png"
width="454"
height="353"
srcset="http://kenji.blog/p/%E3%81%84%E3%82%8D%E3%82%93%E3%81%AA%E3%83%90%E3%83%BC%E3%82%B8%E3%83%A7%E3%83%B3%E6%83%85%E5%A0%B1%E3%83%80%E3%82%A4%E3%82%A2%E3%83%AD%E3%82%B0%E9%9B%86%E3%82%81%E3%81%A6%E3%81%BF%E3%81%9F/img_24_hu78d7832f427554a574352f83766204e1_11395_480x0_resize_box_3.png 480w, http://kenji.blog/p/%E3%81%84%E3%82%8D%E3%82%93%E3%81%AA%E3%83%90%E3%83%BC%E3%82%B8%E3%83%A7%E3%83%B3%E6%83%85%E5%A0%B1%E3%83%80%E3%82%A4%E3%82%A2%E3%83%AD%E3%82%B0%E9%9B%86%E3%82%81%E3%81%A6%E3%81%BF%E3%81%9F/img_24_hu78d7832f427554a574352f83766204e1_11395_1024x0_resize_box_3.png 1024w"
loading="lazy"
alt="img_24.png"
class="gallery-image"
data-flex-grow="128"
data-flex-basis="308px"
>&lt;/p></description></item><item><title>Ferramenta de gravação de tela em GIF animado</title><link>http://kenji.blog/pt/p/ferramenta-de-grava%C3%A7%C3%A3o-de-tela-em-gif-animado/</link><pubDate>Thu, 08 Feb 2024 01:23:01 +0900</pubDate><guid>http://kenji.blog/pt/p/ferramenta-de-grava%C3%A7%C3%A3o-de-tela-em-gif-animado/</guid><description>&lt;img src="http://kenji.blog/p/gif%E3%82%A2%E3%83%8B%E3%83%A1%E7%94%BB%E9%9D%A2%E9%8C%B2%E7%94%BB%E3%83%84%E3%83%BC%E3%83%AB/img.png" alt="Featured image of post Ferramenta de gravação de tela em GIF animado" />&lt;h1 id="ferramenta-de-gravação-de-tela-em-gif-animado">Ferramenta de gravação de tela em GIF animado
&lt;/h1>&lt;p>Fiz uma ferramenta para gravar a tela e transformar em um GIF animado.
Com esta ferramenta, você pode gravar operações na tela e compartilhá-las em ferramentas de comunicação como o Microsoft Teams.&lt;/p>
&lt;h2 id="como-usar">Como usar
&lt;/h2>&lt;ol>
&lt;li>Inicie a ferramenta&lt;/li>
&lt;li>Especifique a área a ser gravada. Se não for especificada, a tela inteira será gravada.&lt;/li>
&lt;li>Pressione o botão de gravar&lt;/li>
&lt;li>Pressione o botão de parar gravação&lt;/li>
&lt;li>O GIF animado será gerado no mesmo local do arquivo executável&lt;/li>
&lt;/ol>
&lt;h2 id="download">Download
&lt;/h2>&lt;p>&lt;a class="link" href="https://github.com/kenjinote/GifScreenRecorder/releases" target="_blank" rel="noopener"
>Download&lt;/a>&lt;/p>
&lt;p>Abra o link acima, clique no link &lt;code>GIFScreenRecorder.exe&lt;/code> para baixar o arquivo executável.&lt;/p>
&lt;h2 id="código-fonte">Código-fonte
&lt;/h2>&lt;p>&lt;a class="link" href="https://github.com/kenjinote/GifScreenRecorder" target="_blank" rel="noopener"
>GitHub&lt;/a>&lt;/p></description></item><item><title>Estudo PMP</title><link>http://kenji.blog/pt/p/pmp%E5%8B%89%E5%BC%B7/</link><pubDate>Sun, 04 Feb 2024 18:41:31 +0900</pubDate><guid>http://kenji.blog/pt/p/pmp%E5%8B%89%E5%BC%B7/</guid><description>&lt;img src="http://kenji.blog/p/pmp%E5%8B%89%E5%BC%B7/img.png" alt="Featured image of post Estudo PMP" />&lt;h1 id="resumo-do-estudo-para-o-exame-pmp">Resumo do Estudo para o Exame PMP
&lt;/h1>&lt;p>Este é um resumo do estudo para o exame PMP.&lt;/p>
&lt;h2 id="visão-geral">Visão Geral
&lt;/h2>&lt;p>PMP é uma certificação em gerenciamento de projetos. É uma certificação baseada no guia PMBOK (atualmente na 7ª edição).
O exame PMP dura 230 minutos com 180 questões, mas como 5 questões são perguntas de teste (dummy), você passa se acertar 106 ou mais das 175 questões restantes.
As respostas são de múltipla escolha e a maioria tem 4 opções, mas algumas têm 5 opções ou múltipla seleção.&lt;/p>
&lt;h2 id="liderança-servidora-servant-leadership">Liderança Servidora (Servant Leadership)
&lt;/h2>&lt;p>Um estilo de liderança que apoia de baixo para cima, em vez de dar ordens de cima para baixo.&lt;/p>
&lt;h3 id="10-princípios-características-da-liderança-servidora">10 Princípios (Características) da Liderança Servidora
&lt;/h3>&lt;ol>
&lt;li>Escuta&lt;/li>
&lt;li>Empatia&lt;/li>
&lt;li>Cura&lt;/li>
&lt;li>Conscientização&lt;/li>
&lt;li>Persuasão&lt;/li>
&lt;li>Conceituação&lt;/li>
&lt;li>Previsão&lt;/li>
&lt;li>Mordomia&lt;/li>
&lt;li>Compromisso com o crescimento das pessoas&lt;/li>
&lt;li>Construção de comunidade&lt;/li>
&lt;/ol>
&lt;h2 id="4-valores-do-manifesto-ágil">4 Valores do Manifesto Ágil
&lt;/h2>&lt;p>Estamos descobrindo maneiras melhores de desenvolver software
fazendo-o e ajudando outros a fazê-lo.
Através deste trabalho, passamos a valorizar:&lt;/p>
&lt;ol>
&lt;li>Indivíduos e interações mais que processos e ferramentas,&lt;/li>
&lt;li>Software em funcionamento mais que documentação abrangente,&lt;/li>
&lt;li>Colaboração com o cliente mais que negociação de contratos,&lt;/li>
&lt;li>Responder a mudanças mais que seguir um plano,&lt;/li>
&lt;/ol>
&lt;p>Ou seja, mesmo havendo valor nos itens à direita,
nós valorizamos mais os itens à esquerda.&lt;/p>
&lt;p>&lt;a class="link" href="https://agilemanifesto.org/iso/ja/manifesto.html" target="_blank" rel="noopener"
>Manifesto Ágil&lt;/a>&lt;/p>
&lt;h2 id="ágil-12-princípios-por-trás-do-manifesto-ágil">Ágil: 12 Princípios por trás do Manifesto Ágil
&lt;/h2>&lt;ol>
&lt;li>Nossa maior prioridade é satisfazer o cliente através da entrega contínua e adiantada de software com valor.&lt;/li>
&lt;li>Aceitar mudanças de requisitos, mesmo no fim do desenvolvimento. Processos ágeis se adequam a mudanças, para que o cliente possa tirar vantagens competitivas.&lt;/li>
&lt;li>Entregar software em funcionamento com frequência, na escala de semanas até meses, com preferência aos períodos mais curtos.&lt;/li>
&lt;li>Pessoas de negócios e desenvolvedores devem trabalhar em conjunto e diariamente, durante todo o curso do projeto.&lt;/li>
&lt;li>Construir projetos em torno de indivíduos motivados. Dando-lhes o ambiente e o suporte necessário e confiando neles para fazer o trabalho.&lt;/li>
&lt;li>O método mais eficiente e eficaz de transmitir informações para e entre uma equipe de desenvolvimento é através de conversa face a face.&lt;/li>
&lt;li>Software em funcionamento é a medida primária de progresso.&lt;/li>
&lt;li>Os processos ágeis promovem o desenvolvimento sustentável. Os patrocinadores, desenvolvedores e usuários devem ser capazes de manter um ritmo constante indefinidamente.&lt;/li>
&lt;li>Contínua atenção à excelência técnica e bom design aumenta a agilidade.&lt;/li>
&lt;li>Simplicidade (a arte de maximizar a quantidade de trabalho não realizado) é essencial.&lt;/li>
&lt;li>As melhores arquiteturas, requisitos e designs emergem de equipes auto-organizáveis.&lt;/li>
&lt;li>Em intervalos regulares, a equipe reflete sobre como se tornar mais eficaz e então refina e ajusta seu comportamento de acordo.&lt;/li>
&lt;/ol>
&lt;p>&lt;a class="link" href="https://agilemanifesto.org/iso/ja/principles.html" target="_blank" rel="noopener"
>Princípios por trás do Manifesto Ágil&lt;/a>&lt;/p>
&lt;h3 id="terminologia">Terminologia
&lt;/h3>&lt;ul>
&lt;li>Épico (Visão geral)&lt;/li>
&lt;li>História de Usuário (Unidade registrada no backlog do produto, unidade para priorização)&lt;/li>
&lt;li>Tarefa (Item de trabalho técnico, alvo para estimativa de tempo)&lt;/li>
&lt;li>Backlog do Produto / Item do Backlog do Produto&lt;/li>
&lt;li>Product Owner (Dono do Produto)&lt;/li>
&lt;li>Stakeholder (Parte Interessada)&lt;/li>
&lt;li>Guia Prático Ágil (Livro)&lt;/li>
&lt;li>Desenvolvimento Lean&lt;/li>
&lt;li>Kanban&lt;/li>
&lt;li>Cadeia de Valor (Value Chain)&lt;/li>
&lt;li>AC (Custo Real - Actual Cost)&lt;/li>
&lt;li>EV (Valor Agregado - Earned Value)&lt;/li>
&lt;li>PV (Valor Planejado - Planned Value)&lt;/li>
&lt;li>EVA (Análise de Valor Agregado - Earned Value Analysis)&lt;/li>
&lt;li>SPI (Índice de Desempenho de Prazos = EV / PV)&lt;/li>
&lt;li>CPI (Índice de Desempenho de Custos = EV / AC)&lt;/li>
&lt;li>EVM (Gerenciamento de Valor Agregado - Earned Value Management)?&lt;/li>
&lt;li>BAC (Orçamento no Término - Budget at Completion)&lt;/li>
&lt;li>ETC (Estimativa para Terminar - Estimate to Complete)&lt;/li>
&lt;li>EAC (Estimativa no Término - Estimate at Completion)&lt;/li>
&lt;li>Estrutura Funcional&lt;/li>
&lt;li>Estrutura Matricial&lt;/li>
&lt;li>Estrutura Projetizada&lt;/li>
&lt;li>Liderança Servidora (Servant Leadership)&lt;/li>
&lt;li>Modelo de Tuckman (Formação, Tormenta, Normalização, Desempenho, Dissolução)&lt;/li>
&lt;li>Termo de Abertura da Equipe (Team Charter)&lt;/li>
&lt;li>Planning Poker (Sequência de Fibonacci)&lt;/li>
&lt;li>Retrospectiva (Atividade de reflexão)&lt;/li>
&lt;li>Equipe Virtual&lt;/li>
&lt;li>Termo de Abertura do Projeto (Project Charter)&lt;/li>
&lt;li>Conflito (6 métodos de resolução: Confrontar/Resolver o Problema, Colaborar, Compromisso, Suavizar/Acomodar, Forçar, Retirar/Evitar)&lt;/li>
&lt;li>Mapeamento do Fluxo de Valor (Value Stream Mapping)&lt;/li>
&lt;li>Mentoria&lt;/li>
&lt;li>Coaching&lt;/li>
&lt;li>Treinamento&lt;/li>
&lt;li>Teoria X e Y de Douglas McGregor&lt;/li>
&lt;li>Análise SWOT: Strengths (Forças), Weaknesses (Fraquezas), Opportunities (Oportunidades), Threats (Ameaças)&lt;/li>
&lt;li>Modelo SECI (Socialização, Externalização, Combinação, Internalização)&lt;/li>
&lt;li>PDCA, PDSA&lt;/li>
&lt;li>PESTLE (Político, Econômico, Social, Tecnológico, Legal, Ambiental)&lt;/li>
&lt;li>VUCA (Volatilidade, Incerteza, Complexidade, Ambiguidade)&lt;/li>
&lt;li>Método de Monte Carlo&lt;/li>
&lt;li>Análise de Árvore de Decisão&lt;/li>
&lt;li>Valor Monetário Esperado (VME / EMV)&lt;/li>
&lt;li>Net Promoter Score (NPS)&lt;/li>
&lt;li>Análise de Custo-Benefício&lt;/li>
&lt;li>Revisão da Sprint (Sprint Review)&lt;/li>
&lt;li>Gerenciamento de Lançamento (Release Management)&lt;/li>
&lt;li>SOW (Declaração de Trabalho - Statement of Work) &amp;ldquo;Documento que inclui a descrição detalhada do escopo, objetivos, entregas, prazos, recursos etc. do projeto&amp;rdquo;&lt;/li>
&lt;li>P-SOW (Declaração de Trabalho de Aquisição - Procurement SOW)&lt;/li>
&lt;li>RFI (Request For Information - Solicitação de Informações)&lt;/li>
&lt;li>RFP (Request For Proposal - Solicitação de Proposta)&lt;/li>
&lt;li>Contrato de Preço Fixo (FP - Fixed Price)&lt;/li>
&lt;li>Contrato de Tempo e Material (T&amp;amp;M - Time and Material)&lt;/li>
&lt;li>Contrato de Custos Reembolsáveis (CR - Cost Reimbursable)&lt;/li>
&lt;li>Preço Fixo com Remuneração de Incentivo (FPIF)&lt;/li>
&lt;li>Aumento do Escopo (Scope Creep)&lt;/li>
&lt;li>Modelo Kano&lt;/li>
&lt;li>Método de Distribuição de Financiamento&lt;/li>
&lt;li>Método de 100 Pontos&lt;/li>
&lt;li>Método MoSCoW (Must, Should, Could, Would)&lt;/li>
&lt;li>Matriz de Rastreabilidade&lt;/li>
&lt;li>Dicionário da EAP (WBS Dictionary)&lt;/li>
&lt;li>Velocidade (Número de story points alcançados em cada iteração)&lt;/li>
&lt;li>Gráfico de Velocidade (Velocity Chart)&lt;/li>
&lt;li>Matriz de Engajamento das Partes Interessadas (Desinformado, Resistente, Neutro, Apoiador, Liderança)&lt;/li>
&lt;li>Revisão de Fase (Phase Gate)&lt;/li>
&lt;li>Radiador de Informações (Information Radiator)&lt;/li>
&lt;li>Gráfico Burndown (Burndown Chart)&lt;/li>
&lt;li>Gráfico Burnup (Burnup Chart)&lt;/li>
&lt;li>Diagrama de Fluxo Cumulativo (Cumulative Flow Diagram)&lt;/li>
&lt;li>QCD (Qualidade, Custo, Entrega - Quality, Cost, Delivery)&lt;/li>
&lt;li>Modelo Espiral&lt;/li>
&lt;li>Corrente Crítica (Critical Chain)&lt;/li>
&lt;li>Funcionalidade (Feature)&lt;/li>
&lt;li>Iteração / Sprint&lt;/li>
&lt;li>Iterativo&lt;/li>
&lt;li>Incremental&lt;/li>
&lt;li>Incremento (Entrega adicional de valor)&lt;/li>
&lt;li>Resiliência&lt;/li>
&lt;li>Mordomia (Stewardship) Comportamento honesto e confiável, e ações (tomadas de decisão) responsáveis&lt;/li>
&lt;li>Escalonamento (Escalation)&lt;/li>
&lt;li>KPT (Keep, Problem, Try)&lt;/li>
&lt;li>Matriz RACI (Responsible, Accountable, Consulted, Informed)&lt;/li>
&lt;li>PMO (Escritório de Gerenciamento de Projetos): Suporte, Controle, Diretivo&lt;/li>
&lt;li>Cadência (Cadence)&lt;/li>
&lt;li>Adaptação (Tailoring)&lt;/li>
&lt;li>Níveis Neurológicos (Ambiente, Comportamento, Capacidades, Crenças/Valores, Identidade)&lt;/li>
&lt;li>Business Case (Documento que descreve os objetivos, benefícios, riscos e retorno do investimento de um projeto)&lt;/li>
&lt;li>Análise de Tendências (Realizada usando um gráfico de execução e técnicas matemáticas para prever resultados futuros com base no desempenho histórico)&lt;/li>
&lt;li>Plano de Gerenciamento da Qualidade (Define a estratégia e a abordagem para a qualidade dos entregáveis do projeto)&lt;/li>
&lt;li>Processo de Governança&lt;/li>
&lt;li>Product Owner (Visão do produto, priorização do backlog do produto, lançamento do produto)&lt;/li>
&lt;li>Project Owner / Patrocinador do Projeto (Contratante do projeto)&lt;/li>
&lt;li>Gerente de Projeto (Gerencia todo o projeto)&lt;/li>
&lt;li>Líder de Projeto (Dirige o trabalho no campo)&lt;/li>
&lt;li>Membro do Projeto (Promove o projeto)&lt;/li>
&lt;li>Abordagem Híbrida&lt;/li>
&lt;li>Produto Mínimo Viável (MVP)&lt;/li>
&lt;li>Revisão da Iteração&lt;/li>
&lt;li>Workshop&lt;/li>
&lt;li>Plano de Gerenciamento de Benefícios do Projeto (Benefícios alvo do projeto, meios estratégicos para alcançá-los e cronograma para realizá-los)&lt;/li>
&lt;li>Indicadores-Chave de Desempenho (KPI)&lt;/li>
&lt;li>On-site (No local, no campo)&lt;/li>
&lt;li>Estimativa Análoga&lt;/li>
&lt;li>Estimativa de Três Pontos&lt;/li>
&lt;li>Estimativa Paramétrica&lt;/li>
&lt;li>Revisão do Projeto&lt;/li>
&lt;li>Abordagem Big Bang&lt;/li>
&lt;li>DSDM (Método de Desenvolvimento de Sistemas Dinâmicos)&lt;/li>
&lt;li>Lei de Brooks&lt;/li>
&lt;li>Abordagem Big Bang (Implementar tudo simultaneamente de uma vez)&lt;/li>
&lt;li>Registro de Riscos (Documento usado como ferramenta de gerenciamento de riscos para identificar potenciais contratempos no projeto)&lt;/li>
&lt;li>Registro de Riscos&lt;/li>
&lt;li>Teoria SL (Liderança Situacional - 4 comportamentos adaptados à situação da outra pessoa)&lt;/li>
&lt;li>Competência&lt;/li>
&lt;li>Comprometimento&lt;/li>
&lt;/ul>
&lt;h2 id="referências">Referências
&lt;/h2>&lt;ul>
&lt;li>&lt;a class="link" href="https://scrumguides.org/docs/scrumguide/v2020/2020-Scrum-Guide-Japanese.pdf" target="_blank" rel="noopener"
>Guia do Scrum (Ken Schwaber &amp;amp; Jeff Sutherland)&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="https://www.pmi.org/-/media/pmi/documents/public/pdf/certifications/pmp-examination-content-outline.pdf?sc_lang_temp=ja-JP" target="_blank" rel="noopener"
>Página do PMI ECO (versão japonesa)&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="https://www.agilealliance.org/wp-content/uploads/2018/07/AgilePG_JAP.pdf" target="_blank" rel="noopener"
>Guia Prático Ágil&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="https://www.pmi.org/-/media/pmi/documents/public/pdf/ethics/pmi-code-of-ethics.pdf?sc_lang_temp=ja-JP" target="_blank" rel="noopener"
>Código de Ética e Conduta Profissional do PMI&lt;/a>&lt;/li>
&lt;/ul>
&lt;h2 id="material-de-estudo">Material de Estudo
&lt;/h2>&lt;ul>
&lt;li>&lt;a class="link" href="https://www.udemy.com/course/ace-the-pmp" target="_blank" rel="noopener"
>Visando passar de primeira no &amp;ldquo;Exame de Certificação PMP®&amp;rdquo;! Curso estratégico para preparação eficiente para o exame (2021) Compatível com Ágil&lt;/a>&lt;/li>
&lt;/ul></description></item><item><title>Desastres no Japão</title><link>http://kenji.blog/pt/p/%E6%97%A5%E6%9C%AC%E3%81%AE%E7%81%BD%E5%AE%B3/</link><pubDate>Sun, 07 Jan 2024 00:50:09 +0900</pubDate><guid>http://kenji.blog/pt/p/%E6%97%A5%E6%9C%AC%E3%81%AE%E7%81%BD%E5%AE%B3/</guid><description>&lt;img src="http://kenji.blog/p/%E6%97%A5%E6%9C%AC%E3%81%AE%E7%81%BD%E5%AE%B3/img.png" alt="Featured image of post Desastres no Japão" />&lt;h1 id="visão-geral">Visão Geral
&lt;/h1>&lt;p>Notas sobre desastres naturais que ocorreram no Japão.&lt;/p>
&lt;h2 id="1-de-janeiro-de-2024---terremoto-na-península-de-noto">1 de janeiro de 2024 - Terremoto na Península de Noto
&lt;/h2>&lt;p>&lt;img src="http://kenji.blog/p/%E6%97%A5%E6%9C%AC%E3%81%AE%E7%81%BD%E5%AE%B3/img.png"
width="474"
height="266"
srcset="http://kenji.blog/p/%E6%97%A5%E6%9C%AC%E3%81%AE%E7%81%BD%E5%AE%B3/img_hue649e8d0b3bd837ea85e155e108b15fd_273208_480x0_resize_box_3.png 480w, http://kenji.blog/p/%E6%97%A5%E6%9C%AC%E3%81%AE%E7%81%BD%E5%AE%B3/img_hue649e8d0b3bd837ea85e155e108b15fd_273208_1024x0_resize_box_3.png 1024w"
loading="lazy"
alt="img.png"
class="gallery-image"
data-flex-grow="178"
data-flex-basis="427px"
>&lt;/p></description></item><item><title>Receita de Mingau das Sete Ervas</title><link>http://kenji.blog/pt/p/receita-de-mingau-das-sete-ervas/</link><pubDate>Sat, 06 Jan 2024 22:22:00 +0900</pubDate><guid>http://kenji.blog/pt/p/receita-de-mingau-das-sete-ervas/</guid><description>&lt;img src="http://kenji.blog/p/%E4%B8%83%E8%8D%89%E7%B2%A5%E3%81%AE%E3%83%AC%E3%82%B7%E3%83%94/img.png" alt="Featured image of post Receita de Mingau das Sete Ervas" />&lt;h1 id="as-sete-ervas">As Sete Ervas
&lt;/h1>&lt;ul>
&lt;li>Oenanthe javanica (Seri)&lt;/li>
&lt;li>Bolsa-de-pastor (Nazuna)&lt;/li>
&lt;li>Gnaphalium affine (Gogyo)&lt;/li>
&lt;li>Morugem (Hakobera)&lt;/li>
&lt;li>Lapsana (Hotokenoza)&lt;/li>
&lt;li>Nabo (Suzuna)&lt;/li>
&lt;li>Rabanete (Suzushiro)&lt;/li>
&lt;/ul></description></item><item><title>Música Japonesa Favorita</title><link>http://kenji.blog/pt/p/musica-japonesa-favorita/</link><pubDate>Sat, 06 Jan 2024 04:11:01 +0900</pubDate><guid>http://kenji.blog/pt/p/musica-japonesa-favorita/</guid><description>&lt;img src="http://kenji.blog/p/%E5%A5%BD%E3%81%8D%E3%81%AA%E9%82%A6%E6%A5%BD/img.png" alt="Featured image of post Música Japonesa Favorita" />&lt;h1 id="música-japonesa-recomendada">Música Japonesa Recomendada
&lt;/h1>&lt;ol>
&lt;li>チューリップ - 青春の影
&lt;div class="video-wrapper">
&lt;iframe loading="lazy"
src="https://www.youtube.com/embed/k9UJs3TR_KU"
allowfullscreen
title="YouTube Video"
>
&lt;/iframe>
&lt;/div>
&lt;/li>
&lt;li>イルカ - なごり雪
&lt;div class="video-wrapper">
&lt;iframe loading="lazy"
src="https://www.youtube.com/embed/H2TR3oEA13o"
allowfullscreen
title="YouTube Video"
>
&lt;/iframe>
&lt;/div>
&lt;/li>
&lt;li>河島英五 - 酒と泪と男と女
&lt;div class="video-wrapper">
&lt;iframe loading="lazy"
src="https://www.youtube.com/embed/Uxy9Keo_KVc"
allowfullscreen
title="YouTube Video"
>
&lt;/iframe>
&lt;/div>
&lt;/li>
&lt;li>Orangestar - Surges
&lt;div class="video-wrapper">
&lt;iframe loading="lazy"
src="https://www.youtube.com/embed/QvWsAIc5mO8"
allowfullscreen
title="YouTube Video"
>
&lt;/iframe>
&lt;/div>
&lt;/li>
&lt;li>竹内まりや - Plastic Love
&lt;div class="video-wrapper">
&lt;iframe loading="lazy"
src="https://www.youtube.com/embed/T_lC2O1oIew"
allowfullscreen
title="YouTube Video"
>
&lt;/iframe>
&lt;/div>
&lt;/li>
&lt;li>RADWIMPS - 前前前世
&lt;div class="video-wrapper">
&lt;iframe loading="lazy"
src="https://www.youtube.com/embed/PDSkFeMVNFs"
allowfullscreen
title="YouTube Video"
>
&lt;/iframe>
&lt;/div>
&lt;/li>
&lt;li>BEGIN - 島人ぬ宝
&lt;div class="video-wrapper">
&lt;iframe loading="lazy"
src="https://www.youtube.com/embed/7iZ4-4EYNnk"
allowfullscreen
title="YouTube Video"
>
&lt;/iframe>
&lt;/div>
&lt;/li>
&lt;li>ザ・ブルーハーツ - 情熱の薔薇
&lt;div class="video-wrapper">
&lt;iframe loading="lazy"
src="https://www.youtube.com/embed/-p0Yqcx53O8"
allowfullscreen
title="YouTube Video"
>
&lt;/iframe>
&lt;/div>
&lt;/li>
&lt;li>荒井由実 - ルージュの伝言
&lt;div class="video-wrapper">
&lt;iframe loading="lazy"
src="https://www.youtube.com/embed/MH-P4mXvDPE"
allowfullscreen
title="YouTube Video"
>
&lt;/iframe>
&lt;/div>
&lt;/li>
&lt;li>Begin - 海の声
&lt;div class="video-wrapper">
&lt;iframe loading="lazy"
src="https://www.youtube.com/embed/qV91xBo1Vxc"
allowfullscreen
title="YouTube Video"
>
&lt;/iframe>
&lt;/div>
&lt;/li>
&lt;li>荒井由実 - ひこうき雲
&lt;div class="video-wrapper">
&lt;iframe loading="lazy"
src="https://www.youtube.com/embed/9HInQDjCCRc"
allowfullscreen
title="YouTube Video"
>
&lt;/iframe>
&lt;/div>
&lt;/li>
&lt;li>Love is Over - 欧陽菲菲
&lt;div class="video-wrapper">
&lt;iframe loading="lazy"
src="https://www.youtube.com/embed/T5Te_czLFCw"
allowfullscreen
title="YouTube Video"
>
&lt;/iframe>
&lt;/div>
&lt;/li>
&lt;li>クラムボン - 波よせて
&lt;div class="video-wrapper">
&lt;iframe loading="lazy"
src="https://www.youtube.com/embed/kfvZZKm3gA0"
allowfullscreen
title="YouTube Video"
>
&lt;/iframe>
&lt;/div>
&lt;/li>
&lt;li>RADWIMPS - スパークル
&lt;div class="video-wrapper">
&lt;iframe loading="lazy"
src="https://www.youtube.com/embed/a2GujJZfXpg"
allowfullscreen
title="YouTube Video"
>
&lt;/iframe>
&lt;/div>
&lt;/li>
&lt;li>かりゆし58 - アンマー
&lt;div class="video-wrapper">
&lt;iframe loading="lazy"
src="https://www.youtube.com/embed/4_OKI91h3tw"
allowfullscreen
title="YouTube Video"
>
&lt;/iframe>
&lt;/div>
&lt;/li>
&lt;li>かりゆし58 - オワリはじまり
&lt;div class="video-wrapper">
&lt;iframe loading="lazy"
src="https://www.youtube.com/embed/Vb50GwvHH14"
allowfullscreen
title="YouTube Video"
>
&lt;/iframe>
&lt;/div>
&lt;/li>
&lt;li>テレサ・テン - 時の流れに身をまかせ
&lt;div class="video-wrapper">
&lt;iframe loading="lazy"
src="https://www.youtube.com/embed/8g9B-iWsO-o"
allowfullscreen
title="YouTube Video"
>
&lt;/iframe>
&lt;/div>
&lt;/li>
&lt;li>宇多田ヒカル『One Last Kiss』
&lt;div class="video-wrapper">
&lt;iframe loading="lazy"
src="https://www.youtube.com/embed/0Uhh62MUEic"
allowfullscreen
title="YouTube Video"
>
&lt;/iframe>
&lt;/div>
&lt;/li>
&lt;li>不可思議/wonderboy - Pellicule (Official Music Video)
&lt;div class="video-wrapper">
&lt;iframe loading="lazy"
src="https://www.youtube.com/embed/ueq2QFIIpu0"
allowfullscreen
title="YouTube Video"
>
&lt;/iframe>
&lt;/div>
&lt;/li>
&lt;/ol>
&lt;iframe allow="autoplay *; encrypted-media *;" frameborder="0" height="150" style="width:100%;max-width:660px;overflow:hidden;background:transparent;" sandbox="allow-forms allow-popups allow-same-origin allow-scripts allow-storage-access-by-user-activation allow-top-navigation-by-user-activation" src="https://embed.music.apple.com/jp/album/pellicule/1480825458?i=1480825460">&lt;/iframe>
&lt;ol start="20">
&lt;li>Kamen Rider Black RX - Opening Song
&lt;div class="video-wrapper">
&lt;iframe loading="lazy"
src="https://www.youtube.com/embed/tV5l-Nt18o4"
allowfullscreen
title="YouTube Video"
>
&lt;/iframe>
&lt;/div>
&lt;/li>
&lt;li>たしかなこと / 小田和正 - Covered by パクユナ
&lt;div class="video-wrapper">
&lt;iframe loading="lazy"
src="https://www.youtube.com/embed/q3myGl1PZgU"
allowfullscreen
title="YouTube Video"
>
&lt;/iframe>
&lt;/div>
&lt;/li>
&lt;li>【Japanese healing song】Hana／Kosuke Atari（covered by Leah）
&lt;div class="video-wrapper">
&lt;iframe loading="lazy"
src="https://www.youtube.com/embed/FpdrS6YGP4o"
allowfullscreen
title="YouTube Video"
>
&lt;/iframe>
&lt;/div>
&lt;/li>
&lt;li>「真夜中のドア〜stay with me」/ 松原みき Official Lyric Video
&lt;div class="video-wrapper">
&lt;iframe loading="lazy"
src="https://www.youtube.com/embed/nuU2YHtxMik"
allowfullscreen
title="YouTube Video"
>
&lt;/iframe>
&lt;/div>
&lt;/li>
&lt;li>Midnight Pretenders
&lt;div class="video-wrapper">
&lt;iframe loading="lazy"
src="https://www.youtube.com/embed/7pPb5fmumNo"
allowfullscreen
title="YouTube Video"
>
&lt;/iframe>
&lt;/div>
&lt;/li>
&lt;li>Anri - Last Summer Whisper
&lt;div class="video-wrapper">
&lt;iframe loading="lazy"
src="https://www.youtube.com/embed/BlvOAd10kJo"
allowfullscreen
title="YouTube Video"
>
&lt;/iframe>
&lt;/div>
&lt;/li>
&lt;li>1985 - The Blue Hearts
&lt;div class="video-wrapper">
&lt;iframe loading="lazy"
src="https://www.youtube.com/embed/sKarAUhTWMw"
allowfullscreen
title="YouTube Video"
>
&lt;/iframe>
&lt;/div>
&lt;/li>
&lt;li>BUMP OF CHICKEN - supernova
&lt;div class="video-wrapper">
&lt;iframe loading="lazy"
src="https://www.youtube.com/embed/0EpQ40X_r0Q"
allowfullscreen
title="YouTube Video"
>
&lt;/iframe>
&lt;/div>
&lt;/li>
&lt;li>チューリップ　心の旅　1972
&lt;div class="video-wrapper">
&lt;iframe loading="lazy"
src="https://www.youtube.com/embed/AFBPJW7wsho"
allowfullscreen
title="YouTube Video"
>
&lt;/iframe>
&lt;/div>
&lt;/li>
&lt;li>小さな恋のうた
&lt;div class="video-wrapper">
&lt;iframe loading="lazy"
src="https://www.youtube.com/embed/u8EkSB9zSpE"
allowfullscreen
title="YouTube Video"
>
&lt;/iframe>
&lt;/div>
&lt;/li>
&lt;li>ASKA - はじまりはいつも雨 (Official Music Video)
&lt;div class="video-wrapper">
&lt;iframe loading="lazy"
src="https://www.youtube.com/embed/74IKR0WeKXY"
allowfullscreen
title="YouTube Video"
>
&lt;/iframe>
&lt;/div>
&lt;/li>
&lt;li>キリンジ - エイリアンズ
&lt;div class="video-wrapper">
&lt;iframe loading="lazy"
src="https://www.youtube.com/embed/w05Q_aZKkFw"
allowfullscreen
title="YouTube Video"
>
&lt;/iframe>
&lt;/div>
&lt;/li>
&lt;li>あの日の空よ - 南こうせつ
&lt;div class="video-wrapper">
&lt;iframe loading="lazy"
src="https://www.youtube.com/embed/xC7o4N3Zb1U"
allowfullscreen
title="YouTube Video"
>
&lt;/iframe>
&lt;/div>
&lt;/li>
&lt;/ol></description></item><item><title>Músicas Ocidentais Favoritas</title><link>http://kenji.blog/pt/p/%E5%A5%BD%E3%81%8D%E3%81%AA%E6%B4%8B%E6%A5%BD/</link><pubDate>Fri, 05 Jan 2024 00:14:22 +0900</pubDate><guid>http://kenji.blog/pt/p/%E5%A5%BD%E3%81%8D%E3%81%AA%E6%B4%8B%E6%A5%BD/</guid><description>&lt;img src="http://kenji.blog/p/%E5%A5%BD%E3%81%8D%E3%81%AA%E6%B4%8B%E6%A5%BD/img.png" alt="Featured image of post Músicas Ocidentais Favoritas" />&lt;h1 id="músicas-ocidentais-recomendadas">Músicas Ocidentais Recomendadas
&lt;/h1>&lt;ol>
&lt;li>Keane - Somewhere Only We Know
&lt;div class="video-wrapper">
&lt;iframe loading="lazy"
src="https://www.youtube.com/embed/Oextk-If8HQ"
allowfullscreen
title="YouTube Video"
>
&lt;/iframe>
&lt;/div>
&lt;/li>
&lt;li>Ben E. King - Stand By Me
&lt;div class="video-wrapper">
&lt;iframe loading="lazy"
src="https://www.youtube.com/embed/hwZNL7QVJjE"
allowfullscreen
title="YouTube Video"
>
&lt;/iframe>
&lt;/div>
&lt;/li>
&lt;li>The Beatles - Hey Jude
&lt;div class="video-wrapper">
&lt;iframe loading="lazy"
src="https://www.youtube.com/embed/A_MjCqQoLLA"
allowfullscreen
title="YouTube Video"
>
&lt;/iframe>
&lt;/div>
&lt;/li>
&lt;li>The Mamas &amp;amp; The Papas - California Dreamin'
&lt;div class="video-wrapper">
&lt;iframe loading="lazy"
src="https://www.youtube.com/embed/N-aK6JnyFmk"
allowfullscreen
title="YouTube Video"
>
&lt;/iframe>
&lt;/div>
&lt;/li>
&lt;li>Ed Sheeran - Shape of You
&lt;div class="video-wrapper">
&lt;iframe loading="lazy"
src="https://www.youtube.com/embed/JGwWNGJdvx8"
allowfullscreen
title="YouTube Video"
>
&lt;/iframe>
&lt;/div>
&lt;/li>
&lt;li>Mark Ronson ft. Bruno Mars – Uptown Funk
&lt;div class="video-wrapper">
&lt;iframe loading="lazy"
src="https://www.youtube.com/embed/OPf0YbXqDm0"
allowfullscreen
title="YouTube Video"
>
&lt;/iframe>
&lt;/div>
&lt;/li>
&lt;li>Sugar - Maroon 5
&lt;div class="video-wrapper">
&lt;iframe loading="lazy"
src="https://www.youtube.com/embed/09R8_2nJtjg"
allowfullscreen
title="YouTube Video"
>
&lt;/iframe>
&lt;/div>
&lt;/li>
&lt;li>Bette Midler - The Rose
&lt;div class="video-wrapper">
&lt;iframe loading="lazy"
src="https://www.youtube.com/embed/CB4EgdpYlnk"
allowfullscreen
title="YouTube Video"
>
&lt;/iframe>
&lt;/div>
&lt;/li>
&lt;li>Green Day - Basket Case
&lt;div class="video-wrapper">
&lt;iframe loading="lazy"
src="https://www.youtube.com/embed/NUTGr5t3MoY"
allowfullscreen
title="YouTube Video"
>
&lt;/iframe>
&lt;/div>
&lt;/li>
&lt;li>Coldplay - Viva La VidaViva La Vida
&lt;div class="video-wrapper">
&lt;iframe loading="lazy"
src="https://www.youtube.com/embed/dvgZkm1xWPE"
allowfullscreen
title="YouTube Video"
>
&lt;/iframe>
&lt;/div>
&lt;/li>
&lt;li>Maroon 5 - Memories (Lyrics)
&lt;div class="video-wrapper">
&lt;iframe loading="lazy"
src="https://www.youtube.com/embed/SlPhMPnQ58k"
allowfullscreen
title="YouTube Video"
>
&lt;/iframe>
&lt;/div>
&lt;/li>
&lt;li>Dido - Thank You (Official Video)
&lt;div class="video-wrapper">
&lt;iframe loading="lazy"
src="https://www.youtube.com/embed/1TO48Cnl66w"
allowfullscreen
title="YouTube Video"
>
&lt;/iframe>
&lt;/div>
&lt;/li>
&lt;li>Bob Dylan - Blowin&amp;rsquo;The Wind(Soprando no Vento)
&lt;div class="video-wrapper">
&lt;iframe loading="lazy"
src="https://www.youtube.com/embed/MMFj8uDubsE"
allowfullscreen
title="YouTube Video"
>
&lt;/iframe>
&lt;/div>
&lt;/li>
&lt;li>Coldplay - Yellow
&lt;div class="video-wrapper">
&lt;iframe loading="lazy"
src="https://www.youtube.com/embed/yKNxeF4KMsY"
allowfullscreen
title="YouTube Video"
>
&lt;/iframe>
&lt;/div>
&lt;/li>
&lt;li>Eric Clapton - Tears In Heaven
&lt;div class="video-wrapper">
&lt;iframe loading="lazy"
src="https://www.youtube.com/embed/JxPj3GAYYZ0"
allowfullscreen
title="YouTube Video"
>
&lt;/iframe>
&lt;/div>
&lt;/li>
&lt;li>B. J. Thomas - Raindrops Keep Fallin&amp;rsquo; on My Head (Stereo / Lyrics)
&lt;div class="video-wrapper">
&lt;iframe loading="lazy"
src="https://www.youtube.com/embed/_VyA2f6hGW4"
allowfullscreen
title="YouTube Video"
>
&lt;/iframe>
&lt;/div>
&lt;/li>
&lt;li>Take Me Home, Country Roads
&lt;div class="video-wrapper">
&lt;iframe loading="lazy"
src="https://www.youtube.com/embed/1vrEljMfXYo"
allowfullscreen
title="YouTube Video"
>
&lt;/iframe>
&lt;/div>
&lt;/li>
&lt;li>Simon &amp;amp; Garfunkel - Mrs. Robinson (Audio)
&lt;div class="video-wrapper">
&lt;iframe loading="lazy"
src="https://www.youtube.com/embed/9C1BCAgu2I8"
allowfullscreen
title="YouTube Video"
>
&lt;/iframe>
&lt;/div>
&lt;/li>
&lt;li>Taylor Swift - Love Story (Live on Letterman)
&lt;div class="video-wrapper">
&lt;iframe loading="lazy"
src="https://www.youtube.com/embed/mNLVMDF9mUo"
allowfullscreen
title="YouTube Video"
>
&lt;/iframe>
&lt;/div>
&lt;/li>
&lt;li>Wiz Khalifa - See You Again ft. Charlie Puth [Official Video] Furious 7 Soundtrack
&lt;div class="video-wrapper">
&lt;iframe loading="lazy"
src="https://www.youtube.com/embed/RgKAFK5djSk"
allowfullscreen
title="YouTube Video"
>
&lt;/iframe>
&lt;/div>
&lt;/li>
&lt;li>The Top (Extended Mix)
&lt;div class="video-wrapper">
&lt;iframe loading="lazy"
src="https://www.youtube.com/embed/aeKCKIwDnwI"
allowfullscreen
title="YouTube Video"
>
&lt;/iframe>
&lt;/div>
&lt;/li>
&lt;li>Something Just Like This
&lt;div class="video-wrapper">
&lt;iframe loading="lazy"
src="https://www.youtube.com/embed/Y1Nip-y0BcQ"
allowfullscreen
title="YouTube Video"
>
&lt;/iframe>
&lt;/div>
&lt;/li>
&lt;li>Feelings
&lt;div class="video-wrapper">
&lt;iframe loading="lazy"
src="https://www.youtube.com/embed/27cedsZpN4w"
allowfullscreen
title="YouTube Video"
>
&lt;/iframe>
&lt;/div>
&lt;/li>
&lt;li>Yesterday Once More
&lt;div class="video-wrapper">
&lt;iframe loading="lazy"
src="https://www.youtube.com/embed/-sltNGgjU_4"
allowfullscreen
title="YouTube Video"
>
&lt;/iframe>
&lt;/div>
&lt;/li>
&lt;li>Carpenters - Top Of The World
&lt;div class="video-wrapper">
&lt;iframe loading="lazy"
src="https://www.youtube.com/embed/3hyFB6SA7b4"
allowfullscreen
title="YouTube Video"
>
&lt;/iframe>
&lt;/div>
&lt;/li>
&lt;li>I Need To Be In Love [Com tradução em japonês] Carpenters
&lt;div class="video-wrapper">
&lt;iframe loading="lazy"
src="https://www.youtube.com/embed/EmFiOb0To7w"
allowfullscreen
title="YouTube Video"
>
&lt;/iframe>
&lt;/div>
&lt;/li>
&lt;li>Bob Marley &amp;amp; The Wailers &amp;ldquo;Three Little Birds&amp;rdquo;
&lt;div class="video-wrapper">
&lt;iframe loading="lazy"
src="https://www.youtube.com/embed/HNBCVM4KbUM"
allowfullscreen
title="YouTube Video"
>
&lt;/iframe>
&lt;/div>
&lt;/li>
&lt;li>Alan Walker - All Falls Down (feat. Noah Cyrus with Digital Farm Animals)
&lt;div class="video-wrapper">
&lt;iframe loading="lazy"
src="https://www.youtube.com/embed/6RLLOEzdxsM"
allowfullscreen
title="YouTube Video"
>
&lt;/iframe>
&lt;/div>
&lt;/li>
&lt;li>Alan Walker - Darkside (feat. Au/Ra and Tomine Harket)
&lt;div class="video-wrapper">
&lt;iframe loading="lazy"
src="https://www.youtube.com/embed/M-P4QBt-FWw"
allowfullscreen
title="YouTube Video"
>
&lt;/iframe>
&lt;/div>
&lt;/li>
&lt;li>Alan Walker - Alone
&lt;div class="video-wrapper">
&lt;iframe loading="lazy"
src="https://www.youtube.com/embed/1-xGerv5FOk"
allowfullscreen
title="YouTube Video"
>
&lt;/iframe>
&lt;/div>
&lt;/li>
&lt;li>Alan Walker - Sing Me To Sleep
&lt;div class="video-wrapper">
&lt;iframe loading="lazy"
src="https://www.youtube.com/embed/2i2khp_npdE"
allowfullscreen
title="YouTube Video"
>
&lt;/iframe>
&lt;/div>
&lt;/li>
&lt;li>Alan Walker - Faded
&lt;div class="video-wrapper">
&lt;iframe loading="lazy"
src="https://www.youtube.com/embed/60ItHLz5WEA"
allowfullscreen
title="YouTube Video"
>
&lt;/iframe>
&lt;/div>
&lt;/li>
&lt;li>killing me softly with his song
&lt;div class="video-wrapper">
&lt;iframe loading="lazy"
src="https://www.youtube.com/embed/oKOtzIo-uYw"
allowfullscreen
title="YouTube Video"
>
&lt;/iframe>
&lt;/div>
&lt;/li>
&lt;li>a-ha - Take On Me (Official Video)
&lt;div class="video-wrapper">
&lt;iframe loading="lazy"
src="https://www.youtube.com/embed/djV11Xbc914"
allowfullscreen
title="YouTube Video"
>
&lt;/iframe>
&lt;/div>
&lt;/li>
&lt;/ol></description></item><item><title>Instalar PowerToys no Prompt de Comando</title><link>http://kenji.blog/pt/p/powertoys%E3%81%AE%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB/</link><pubDate>Sat, 30 Sep 2023 21:23:00 +0900</pubDate><guid>http://kenji.blog/pt/p/powertoys%E3%81%AE%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB/</guid><description>&lt;img src="http://kenji.blog/p/powertoys%E3%81%AE%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB/img.png" alt="Featured image of post Instalar PowerToys no Prompt de Comando" />&lt;h1 id="instalar-powertoys-no-prompt-de-comando">Instalar PowerToys no Prompt de Comando
&lt;/h1>&lt;p>Abaixo está como instalar o PowerToys usando o Prompt de Comando.&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">winget install Microsoft.PowerToys --source winget
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h1 id="desinstalar-powertoys-no-prompt-de-comando">Desinstalar PowerToys no Prompt de Comando
&lt;/h1>&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">winget uninstall --name PowerToys
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div></description></item><item><title>Vamos respeitar aqueles que podem fazer o que nós não podemos</title><link>http://kenji.blog/pt/p/vamos-respeitar-aqueles-que-podem-fazer-o-que-nos-nao-podemos/</link><pubDate>Tue, 01 Aug 2023 23:42:31 +0900</pubDate><guid>http://kenji.blog/pt/p/vamos-respeitar-aqueles-que-podem-fazer-o-que-nos-nao-podemos/</guid><description>&lt;img src="http://kenji.blog/p/%E8%87%AA%E5%88%86%E3%81%AB%E3%81%A7%E3%81%8D%E3%81%AA%E3%81%84%E3%81%93%E3%81%A8%E3%81%8C%E3%81%A7%E3%81%8D%E3%82%8B%E4%BA%BA%E3%81%AB%E6%95%AC%E6%84%8F%E3%82%92%E6%89%95%E3%81%8A%E3%81%86/img.png" alt="Featured image of post Vamos respeitar aqueles que podem fazer o que nós não podemos" />&lt;h1 id="vamos-mostrar-respeito">Vamos mostrar respeito
&lt;/h1>&lt;p>Vamos respeitar as pessoas que podem fazer coisas que não conseguimos.&lt;/p>
&lt;p>Na sociedade, há surpreendentemente muitas pessoas que classificam trabalhos e posições, e não conseguem demonstrar respeito.&lt;/p>
&lt;p>Vamos mostrar respeito àqueles que realizam trabalhos que não somos capazes de fazer, não importa qual seja o trabalho.&lt;/p>
&lt;p>Quero manter isso em mente.&lt;/p></description></item><item><title>Splatoon 2</title><link>http://kenji.blog/pt/p/splatoon-2/</link><pubDate>Tue, 01 Aug 2023 00:26:30 +0900</pubDate><guid>http://kenji.blog/pt/p/splatoon-2/</guid><description>&lt;img src="http://kenji.blog/p/%E3%82%B9%E3%83%97%E3%83%A9%E3%83%88%E3%82%A5%E3%83%BC%E3%83%B32/img.png" alt="Featured image of post Splatoon 2" />&lt;h1 id="splatoon-2">Splatoon 2
&lt;/h1>&lt;p>Provavelmente, o jogo que joguei por mais tempo na minha vida é o Splatoon 2.
Quase não joguei o modo história, mas o matchmaking online 4 contra 4 é muito bem feito, permitindo jogar contra pessoas do mesmo nível que eu, o que traz uma diversão que nunca cansa. Além disso, é muito divertido ler os padrões de movimento de aliados e inimigos para pensar em estratégias para vencer.&lt;/p>
&lt;h1 id="armas">Armas
&lt;/h1>&lt;p>As armas que mais uso, em ordem, são: &amp;ldquo;Foil Squeezer&amp;rdquo;, &amp;ldquo;Splattershot Jr.&amp;rdquo;, &amp;ldquo;Splat Roller&amp;rdquo; e &amp;ldquo;Foil Flingza Roller&amp;rdquo;.
O &amp;ldquo;Splattershot Jr.&amp;rdquo; é uma arma para iniciantes, e eu usava muito no começo.&lt;/p>
&lt;p>Os pontos de pintura para cada um são os seguintes:&lt;/p>
&lt;table>
&lt;thead>
&lt;tr>
&lt;th>Arma&lt;/th>
&lt;th>Pontos de Pintura&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>Foil Flingza Roller&lt;/td>
&lt;td>6,636,594p&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Splat Roller&lt;/td>
&lt;td>6,200,629p&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Splattershot Jr.&lt;/td>
&lt;td>4,211,759p&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Foil Squeezer&lt;/td>
&lt;td>744,678p&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Splattershot&lt;/td>
&lt;td>301,238p&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;h1 id="sobre-o-nível">Sobre o Nível
&lt;/h1>&lt;p>Sinto que estou indo e voltando entre A+ e S+, e faz um tempo que não consigo alcançar o topo do rank S+, mas estou mais jogando pela diversão das partidas do que para subir de rank.
(Se subir muito, os oponentes ficam mais fortes e as partidas ficam mais tensas, o que tira um pouco da diversão)&lt;/p>
&lt;h1 id="tempo-de-jogo">Tempo de Jogo
&lt;/h1>&lt;p>Meu tempo de jogo já ultrapassou as 2500 horas.&lt;/p>
&lt;h1 id="objetivos-futuros">Objetivos Futuros
&lt;/h1>&lt;p>Meu objetivo é manter meu nível no jogo e continuar me divertindo, mas também gostaria de chegar ao limite máximo (cap) de dinheiro e equipamentos.
Desde o lançamento do Splatoon 3, o tempo de matchmaking aumentou e, às vezes, é difícil encontrar partidas, então espero continuar jogando torcendo para que a quantidade de jogadores não diminua mais.&lt;/p></description></item><item><title>Sobre o Prêmio Microsoft MVP (2023-2024)</title><link>http://kenji.blog/pt/p/sobre-o-pr%C3%AAmio-microsoft-mvp-2023-2024/</link><pubDate>Mon, 31 Jul 2023 19:15:14 +0900</pubDate><guid>http://kenji.blog/pt/p/sobre-o-pr%C3%AAmio-microsoft-mvp-2023-2024/</guid><description>&lt;img src="http://kenji.blog/p/microsoft-mvp%E5%8F%97%E8%B3%9E%E3%81%AB%E3%81%A4%E3%81%84%E3%81%A62023-2024/img.png" alt="Featured image of post Sobre o Prêmio Microsoft MVP (2023-2024)" />&lt;h1 id="sobre-o-prêmio-microsoft-mvp-2023-2024">Sobre o Prêmio Microsoft MVP (2023-2024)
&lt;/h1>&lt;p>Tenho o prazer de anunciar que recebi o prêmio Microsoft MVP (2023-2024).
Este é o meu 7º ano consecutivo recebendo este prêmio desde 2017.&lt;/p>
&lt;p>A categoria premiada é &lt;strong>Developer Technologies&lt;/strong> .&lt;/p>
&lt;p>Relembrando minhas atividades anteriores, estive envolvido nas seguintes áreas:&lt;/p>
&lt;ul>
&lt;li>Publicação de código no &lt;a class="link" href="https://github.com/kenjinote" target="_blank" rel="noopener"
>GitHub&lt;/a>&lt;/li>
&lt;li>Compartilhamento de informações técnicas no blog e em &lt;a class="link" href="https://twitter.com/kenjinote" target="_blank" rel="noopener"
>redes sociais (como o Twitter)&lt;/a>&lt;/li>
&lt;li>Contribuições no &lt;a class="link" href="https://social.msdn.microsoft.com/Forums/ja-JP/home" target="_blank" rel="noopener"
>fórum MSDN&lt;/a>&lt;/li>
&lt;li>Feedback sobre produtos da Microsoft&lt;/li>
&lt;/ul>
&lt;p>Continuarei me esforçando para escrever artigos melhores e compartilhar informações no futuro.&lt;/p>
&lt;p>Agradeço pelo seu apoio contínuo.&lt;/p></description></item><item><title>História da Matemática</title><link>http://kenji.blog/pt/p/historia-da-matematica/</link><pubDate>Sat, 22 Jul 2023 15:25:10 +0900</pubDate><guid>http://kenji.blog/pt/p/historia-da-matematica/</guid><description>&lt;img src="http://kenji.blog/p/%E6%95%B0%E5%AD%A6%E3%81%AE%E6%AD%B4%E5%8F%B2/img.png" alt="Featured image of post História da Matemática" />&lt;h3 id="três-problemas-clássicos-da-grécia-antiga">Três Problemas Clássicos da Grécia Antiga
&lt;/h3>&lt;ol>
&lt;li>Dado um círculo, construir um quadrado com a mesma área (Quadratura do círculo)&lt;/li>
&lt;li>Dado um ângulo arbitrário, dividi-lo em três partes iguais (Trissecção do ângulo)&lt;/li>
&lt;li>Dado um cubo, construir um cubo com o dobro do volume (Duplicação do cubo)&lt;/li>
&lt;/ol>
&lt;h3 id="espiral-de-arquimedes">Espiral de Arquimedes
&lt;/h3>&lt;p>Em um plano, uma semirreta OB gira em torno de um ponto fixo O com velocidade uniforme. Se a posição inicial for OA, e simultaneamente um ponto P partir de O e se mover ao longo de OB com velocidade constante, a curva traçada pelo ponto P é a Espiral de Arquimedes.&lt;/p>
&lt;h3 id="teorema-de-pappus">Teorema de Pappus
&lt;/h3>&lt;ul>
&lt;li>Cicloide&lt;/li>
&lt;li>Concoide de Nicomedes&lt;/li>
&lt;li>Cissoide de Diocles&lt;/li>
&lt;li>Método das tangentes de Fermat&lt;/li>
&lt;li>Método das normais de Descartes&lt;/li>
&lt;/ul>
&lt;h3 id="cronologia">Cronologia
&lt;/h3>&lt;table>
&lt;thead>
&lt;tr>
&lt;th>Ano&lt;/th>
&lt;th>Evento&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>c. 3400 a.C.&lt;/td>
&lt;td>Sumérios usam fichas de argila para contabilidade&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>c. 3000 a.C.&lt;/td>
&lt;td>Matemática hieroglífica surge no Egito&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>c. 2800 a.C.&lt;/td>
&lt;td>Civilização do Vale do Indo usa pesos e medidas decimais&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>c. 2700 a.C.&lt;/td>
&lt;td>Egípcios usam cordas e trios pitagóricos para verificar ângulos&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>c. 2500 a.C.&lt;/td>
&lt;td>Invenção do ábaco para cálculos&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>c. 2500 a.C.&lt;/td>
&lt;td>&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;h3 id="referência">Referência
&lt;/h3>&lt;ul>
&lt;li>&lt;a class="link" href="https://ja.wikipedia.org/wiki/%E6%95%B0%E5%AD%A6%E3%81%AE%E6%AD%B4%E5%8F%B2" target="_blank" rel="noopener"
>História da Matemática&lt;/a>&lt;/li>
&lt;/ul></description></item><item><title>Recomendação do Trackball Deft Pro (M-DPT1MRBK)</title><link>http://kenji.blog/pt/p/recomendacao-do-trackball-deft-pro-m-dpt1mrbk/</link><pubDate>Tue, 02 May 2023 23:28:33 +0900</pubDate><guid>http://kenji.blog/pt/p/recomendacao-do-trackball-deft-pro-m-dpt1mrbk/</guid><description>&lt;img src="http://kenji.blog/p/%E3%83%88%E3%83%A9%E3%83%83%E3%82%AF%E3%83%9C%E3%83%BC%E3%83%ABdeft-prom-dpt1mrbk%E3%81%AE%E3%81%99%E3%81%99%E3%82%81/img.png" alt="Featured image of post Recomendação do Trackball Deft Pro (M-DPT1MRBK)" />&lt;h1 id="sobre-o-trackball-elecom-deft-pro-m-dpt1mrbk">Sobre o Trackball Elecom Deft Pro M-DPT1MRBK
&lt;/h1>&lt;p>Faz cerca de uma semana que comprei o trackball &amp;ldquo;Deft Pro M-DPT1MRBK&amp;rdquo; da Elecom, então farei uma análise das minhas impressões de uso.&lt;/p>
&lt;p>&lt;strong>Principais características&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>Possui um grande número de botões: 8&lt;/li>
&lt;li>Conexão de três maneiras: com fio, receptor sem fio e Bluetooth&lt;/li>
&lt;li>Tamanho grande da bola (diâmetro médio de 44 mm)&lt;/li>
&lt;li>Preço de compra na Amazon: ￥7.012 (em 2 de maio de 2021)&lt;/li>
&lt;/ul>
&lt;h2 id="pontos-positivos">Pontos Positivos
&lt;/h2>&lt;ul>
&lt;li>Como não há necessidade de mover o pulso em comparação com um mouse, a tensão no pulso é reduzida.&lt;/li>
&lt;li>Como o número de botões é grande, você pode atribuir várias funções a eles.
&lt;img src="http://kenji.blog/p/%E3%83%88%E3%83%A9%E3%83%83%E3%82%AF%E3%83%9C%E3%83%BC%E3%83%ABdeft-prom-dpt1mrbk%E3%81%AE%E3%81%99%E3%81%99%E3%82%81/img_1.png"
width="767"
height="686"
srcset="http://kenji.blog/p/%E3%83%88%E3%83%A9%E3%83%83%E3%82%AF%E3%83%9C%E3%83%BC%E3%83%ABdeft-prom-dpt1mrbk%E3%81%AE%E3%81%99%E3%81%99%E3%82%81/img_1_hu552d9af378dc908f7eb4fb5eb2e28a90_78909_480x0_resize_box_3.png 480w, http://kenji.blog/p/%E3%83%88%E3%83%A9%E3%83%83%E3%82%AF%E3%83%9C%E3%83%BC%E3%83%ABdeft-prom-dpt1mrbk%E3%81%AE%E3%81%99%E3%81%99%E3%82%81/img_1_hu552d9af378dc908f7eb4fb5eb2e28a90_78909_1024x0_resize_box_3.png 1024w"
loading="lazy"
alt="img_1.png"
class="gallery-image"
data-flex-grow="111"
data-flex-basis="268px"
>
Atualmente, estão atribuídas como acima. Você também pode alterar a atribuição dos botões para cada aplicativo.&lt;/li>
&lt;/ul>
&lt;ul>
&lt;li>É necessário instalar um software dedicado para atribuir botões.&lt;/li>
&lt;/ul>
&lt;ul>
&lt;li>Como a bola é grande, é relativamente fácil fazer movimentos finos para um trackball.&lt;/li>
&lt;/ul>
&lt;h2 id="pontos-negativos">Pontos Negativos
&lt;/h2>&lt;ul>
&lt;li>A sujeira se acumula ao redor do trackball, então é necessário remover a bola e limpá-la regularmente (cerca de uma vez a cada poucos dias).&lt;/li>
&lt;li>Demora um pouco para se acostumar porque a sensação de operação é diferente de um mouse: move-se o cursor com o dedo indicador ou médio, e opera-se a roda do mouse com o polegar.&lt;/li>
&lt;li>Embora eu tenha escrito acima que é fácil fazer movimentos finos, ainda é difícil mover o cursor pixel por pixel com um trackball.&lt;/li>
&lt;li>Não é possível operar a roda de rolagem enquanto pressiona o botão esquerdo (por exemplo, se você quiser aumentar/diminuir o zoom enquanto seleciona uma área no Paint).&lt;/li>
&lt;/ul>
&lt;p>No geral, embora eu ache que é um trackball caro, ele é bastante fácil de operar em geral e sinto que meu trabalho se tornou mais produtivo.
Espero que isso seja útil para quem está considerando comprar.&lt;/p></description></item><item><title>Exemplo usando wxWidgets</title><link>http://kenji.blog/pt/p/wxwidgets-%E3%82%92%E4%BD%BF%E3%81%A3%E3%81%9F%E3%82%B5%E3%83%B3%E3%83%97%E3%83%AB/</link><pubDate>Tue, 18 Apr 2023 00:18:22 +0900</pubDate><guid>http://kenji.blog/pt/p/wxwidgets-%E3%82%92%E4%BD%BF%E3%81%A3%E3%81%9F%E3%82%B5%E3%83%B3%E3%83%97%E3%83%AB/</guid><description>&lt;img src="http://kenji.blog/p/wxwidgets-%E3%82%92%E4%BD%BF%E3%81%A3%E3%81%9F%E3%82%B5%E3%83%B3%E3%83%97%E3%83%AB/img.png" alt="Featured image of post Exemplo usando wxWidgets" />&lt;h2 id="o-que-é-wxwidgets">O que é wxWidgets
&lt;/h2>&lt;p>wxWidgets é uma biblioteca GUI C++ que funciona em plataformas como Windows, Mac, Linux, Android, iOS, etc.&lt;/p>
&lt;h2 id="instalação-do-wxwidgets">Instalação do wxWidgets
&lt;/h2>&lt;ol>
&lt;li>Abra &lt;a class="link" href="https://www.wxwidgets.org/downloads/" target="_blank" rel="noopener"
>https://www.wxwidgets.org/downloads/&lt;/a> e baixe o &lt;code>Windows Installer&lt;/code>.&lt;/li>
&lt;li>Execute &lt;code>wxMSW-3.2.2.1-Setup.exe&lt;/code> para instalar.&lt;/li>
&lt;li>Abra &amp;ldquo;C:\wxWidgets-3.2.2.1\build\msw\wx_vc17.sln&amp;rdquo; a partir da pasta instalada.&lt;/li>
&lt;li>Após abrir &lt;code>wx_vc17.sln&lt;/code>, selecione &lt;code>Build&lt;/code> &amp;gt; &lt;code>Batch Build&lt;/code>.&lt;/li>
&lt;li>Pressione o botão &lt;code>Select All&lt;/code> e, em seguida, o botão &lt;code>Rebuild&lt;/code>.&lt;/li>
&lt;li>Após a conclusão da compilação, feche o Visual Studio temporariamente.&lt;/li>
&lt;/ol>
&lt;h2 id="criação-do-projeto-de-exemplo">Criação do projeto de exemplo
&lt;/h2>&lt;ol>
&lt;li>Abra o Visual Studio.&lt;/li>
&lt;li>Selecione &lt;code>File&lt;/code> &amp;gt; &lt;code>New&lt;/code> &amp;gt; &lt;code>Project&lt;/code>.&lt;/li>
&lt;li>Selecione &lt;code>Windows Desktop Application&lt;/code> (as guias são &lt;code>C++&lt;/code>, &lt;code>Windows&lt;/code>, &lt;code>Desktop&lt;/code>).&lt;/li>
&lt;li>Insira &lt;code>wxWidgetsSample&lt;/code> em &lt;code>Project name&lt;/code>.&lt;/li>
&lt;li>Clique em &lt;code>Create&lt;/code>.&lt;/li>
&lt;li>Clique com o botão direito em &lt;code>wxWidgetsSample&lt;/code> e selecione &lt;code>Properties&lt;/code>.&lt;/li>
&lt;li>Em &lt;code>Configuration Properties&lt;/code> &amp;gt; &lt;code>C/C++&lt;/code> &amp;gt; &lt;code>Additional Include Directories&lt;/code>, adicione &lt;code>C:\wxWidgets-3.2.2.1\include&lt;/code> e &lt;code>C:\wxWidgets-3.2.2.1\include\msvc&lt;/code>.&lt;/li>
&lt;li>Em &lt;code>Configuration Properties&lt;/code> &amp;gt; &lt;code>Linker&lt;/code> &amp;gt; &lt;code>Additional Library Directories&lt;/code>, adicione &lt;code>C:\wxWidgets-3.2.2.1\lib\vc_x64_lib&lt;/code>.&lt;/li>
&lt;li>Abra &lt;code>wxWidgetsSample.cpp&lt;/code> e substitua pelo código abaixo.&lt;/li>
&lt;/ol>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt"> 1
&lt;/span>&lt;span class="lnt"> 2
&lt;/span>&lt;span class="lnt"> 3
&lt;/span>&lt;span class="lnt"> 4
&lt;/span>&lt;span class="lnt"> 5
&lt;/span>&lt;span class="lnt"> 6
&lt;/span>&lt;span class="lnt"> 7
&lt;/span>&lt;span class="lnt"> 8
&lt;/span>&lt;span class="lnt"> 9
&lt;/span>&lt;span class="lnt">10
&lt;/span>&lt;span class="lnt">11
&lt;/span>&lt;span class="lnt">12
&lt;/span>&lt;span class="lnt">13
&lt;/span>&lt;span class="lnt">14
&lt;/span>&lt;span class="lnt">15
&lt;/span>&lt;span class="lnt">16
&lt;/span>&lt;span class="lnt">17
&lt;/span>&lt;span class="lnt">18
&lt;/span>&lt;span class="lnt">19
&lt;/span>&lt;span class="lnt">20
&lt;/span>&lt;span class="lnt">21
&lt;/span>&lt;span class="lnt">22
&lt;/span>&lt;span class="lnt">23
&lt;/span>&lt;span class="lnt">24
&lt;/span>&lt;span class="lnt">25
&lt;/span>&lt;span class="lnt">26
&lt;/span>&lt;span class="lnt">27
&lt;/span>&lt;span class="lnt">28
&lt;/span>&lt;span class="lnt">29
&lt;/span>&lt;span class="lnt">30
&lt;/span>&lt;span class="lnt">31
&lt;/span>&lt;span class="lnt">32
&lt;/span>&lt;span class="lnt">33
&lt;/span>&lt;span class="lnt">34
&lt;/span>&lt;span class="lnt">35
&lt;/span>&lt;span class="lnt">36
&lt;/span>&lt;span class="lnt">37
&lt;/span>&lt;span class="lnt">38
&lt;/span>&lt;span class="lnt">39
&lt;/span>&lt;span class="lnt">40
&lt;/span>&lt;span class="lnt">41
&lt;/span>&lt;span class="lnt">42
&lt;/span>&lt;span class="lnt">43
&lt;/span>&lt;span class="lnt">44
&lt;/span>&lt;span class="lnt">45
&lt;/span>&lt;span class="lnt">46
&lt;/span>&lt;span class="lnt">47
&lt;/span>&lt;span class="lnt">48
&lt;/span>&lt;span class="lnt">49
&lt;/span>&lt;span class="lnt">50
&lt;/span>&lt;span class="lnt">51
&lt;/span>&lt;span class="lnt">52
&lt;/span>&lt;span class="lnt">53
&lt;/span>&lt;span class="lnt">54
&lt;/span>&lt;span class="lnt">55
&lt;/span>&lt;span class="lnt">56
&lt;/span>&lt;span class="lnt">57
&lt;/span>&lt;span class="lnt">58
&lt;/span>&lt;span class="lnt">59
&lt;/span>&lt;span class="lnt">60
&lt;/span>&lt;span class="lnt">61
&lt;/span>&lt;span class="lnt">62
&lt;/span>&lt;span class="lnt">63
&lt;/span>&lt;span class="lnt">64
&lt;/span>&lt;span class="lnt">65
&lt;/span>&lt;span class="lnt">66
&lt;/span>&lt;span class="lnt">67
&lt;/span>&lt;span class="lnt">68
&lt;/span>&lt;span class="lnt">69
&lt;/span>&lt;span class="lnt">70
&lt;/span>&lt;span class="lnt">71
&lt;/span>&lt;span class="lnt">72
&lt;/span>&lt;span class="lnt">73
&lt;/span>&lt;span class="lnt">74
&lt;/span>&lt;span class="lnt">75
&lt;/span>&lt;span class="lnt">76
&lt;/span>&lt;span class="lnt">77
&lt;/span>&lt;span class="lnt">78
&lt;/span>&lt;span class="lnt">79
&lt;/span>&lt;span class="lnt">80
&lt;/span>&lt;span class="lnt">81
&lt;/span>&lt;span class="lnt">82
&lt;/span>&lt;span class="lnt">83
&lt;/span>&lt;span class="lnt">84
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-cpp" data-lang="cpp">&lt;span class="line">&lt;span class="cl">&lt;span class="cp">#pragma comment(linker,&amp;#34;\&amp;#34;/manifestdependency:type=&amp;#39;win32&amp;#39; name=&amp;#39;Microsoft.Windows.Common-Controls&amp;#39; version=&amp;#39;6.0.0.0&amp;#39; processorArchitecture=&amp;#39;*&amp;#39; publicKeyToken=&amp;#39;6595b64144ccf1df&amp;#39; language=&amp;#39;*&amp;#39;\&amp;#34;&amp;#34;)
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="cp">&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="cp">#include&lt;/span> &lt;span class="cpf">&amp;lt;wx/wxprec.h&amp;gt;&lt;/span>&lt;span class="cp">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="cp">&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="cp">#ifndef WX_PRECOMP
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="cp">#include&lt;/span> &lt;span class="cpf">&amp;lt;wx/wx.h&amp;gt;&lt;/span>&lt;span class="cp">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="cp">#endif
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="cp">&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="k">class&lt;/span> &lt;span class="nc">MyApp&lt;/span> &lt;span class="o">:&lt;/span> &lt;span class="k">public&lt;/span> &lt;span class="n">wxApp&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="k">public&lt;/span>&lt;span class="o">:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">virtual&lt;/span> &lt;span class="kt">bool&lt;/span> &lt;span class="n">OnInit&lt;/span>&lt;span class="p">();&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">};&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="k">class&lt;/span> &lt;span class="nc">MyFrame&lt;/span> &lt;span class="o">:&lt;/span> &lt;span class="k">public&lt;/span> &lt;span class="n">wxFrame&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="k">public&lt;/span>&lt;span class="o">:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">MyFrame&lt;/span>&lt;span class="p">();&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="k">private&lt;/span>&lt;span class="o">:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="kt">void&lt;/span> &lt;span class="n">OnHello&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">wxCommandEvent&lt;/span>&lt;span class="o">&amp;amp;&lt;/span> &lt;span class="n">event&lt;/span>&lt;span class="p">);&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="kt">void&lt;/span> &lt;span class="nf">OnExit&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">wxCommandEvent&lt;/span>&lt;span class="o">&amp;amp;&lt;/span> &lt;span class="n">event&lt;/span>&lt;span class="p">);&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="kt">void&lt;/span> &lt;span class="nf">OnAbout&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">wxCommandEvent&lt;/span>&lt;span class="o">&amp;amp;&lt;/span> &lt;span class="n">event&lt;/span>&lt;span class="p">);&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">};&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="k">enum&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">ID_Hello&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="mi">1&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">};&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">wxIMPLEMENT_APP&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">MyApp&lt;/span>&lt;span class="p">);&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="kt">bool&lt;/span> &lt;span class="n">MyApp&lt;/span>&lt;span class="o">::&lt;/span>&lt;span class="n">OnInit&lt;/span>&lt;span class="p">()&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">MyFrame&lt;/span>&lt;span class="o">*&lt;/span> &lt;span class="n">frame&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="k">new&lt;/span> &lt;span class="n">MyFrame&lt;/span>&lt;span class="p">();&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">frame&lt;/span>&lt;span class="o">-&amp;gt;&lt;/span>&lt;span class="n">Show&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="nb">true&lt;/span>&lt;span class="p">);&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">return&lt;/span> &lt;span class="nb">true&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">MyFrame&lt;/span>&lt;span class="o">::&lt;/span>&lt;span class="n">MyFrame&lt;/span>&lt;span class="p">()&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">:&lt;/span> &lt;span class="n">wxFrame&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="nb">NULL&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">wxID_ANY&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="s">&amp;#34;Hello World&amp;#34;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">wxMenu&lt;/span>&lt;span class="o">*&lt;/span> &lt;span class="n">menuFile&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="k">new&lt;/span> &lt;span class="n">wxMenu&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">menuFile&lt;/span>&lt;span class="o">-&amp;gt;&lt;/span>&lt;span class="n">Append&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">ID_Hello&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="s">&amp;#34;&amp;amp;Hello...&lt;/span>&lt;span class="se">\t&lt;/span>&lt;span class="s">Ctrl-H&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="s">&amp;#34;Help string shown in status bar for this menu item&amp;#34;&lt;/span>&lt;span class="p">);&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">menuFile&lt;/span>&lt;span class="o">-&amp;gt;&lt;/span>&lt;span class="n">AppendSeparator&lt;/span>&lt;span class="p">();&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">menuFile&lt;/span>&lt;span class="o">-&amp;gt;&lt;/span>&lt;span class="n">Append&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">wxID_EXIT&lt;/span>&lt;span class="p">);&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">wxMenu&lt;/span>&lt;span class="o">*&lt;/span> &lt;span class="n">menuHelp&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="k">new&lt;/span> &lt;span class="n">wxMenu&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">menuHelp&lt;/span>&lt;span class="o">-&amp;gt;&lt;/span>&lt;span class="n">Append&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">wxID_ABOUT&lt;/span>&lt;span class="p">);&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">wxMenuBar&lt;/span>&lt;span class="o">*&lt;/span> &lt;span class="n">menuBar&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="k">new&lt;/span> &lt;span class="n">wxMenuBar&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">menuBar&lt;/span>&lt;span class="o">-&amp;gt;&lt;/span>&lt;span class="n">Append&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">menuFile&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="s">&amp;#34;&amp;amp;File&amp;#34;&lt;/span>&lt;span class="p">);&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">menuBar&lt;/span>&lt;span class="o">-&amp;gt;&lt;/span>&lt;span class="n">Append&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">menuHelp&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="s">&amp;#34;&amp;amp;Help&amp;#34;&lt;/span>&lt;span class="p">);&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">SetMenuBar&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">menuBar&lt;/span>&lt;span class="p">);&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">wxButton&lt;/span>&lt;span class="o">*&lt;/span> &lt;span class="n">button1&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="k">new&lt;/span> &lt;span class="n">wxButton&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="k">this&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">ID_Hello&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">_&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s">&amp;#34;Hello&amp;#34;&lt;/span>&lt;span class="p">),&lt;/span> &lt;span class="n">wxPoint&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="mi">20&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="mi">20&lt;/span>&lt;span class="p">),&lt;/span> &lt;span class="n">wxSize&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="mi">100&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="mi">32&lt;/span>&lt;span class="p">));&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">Connect&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">ID_Hello&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">wxEVT_COMMAND_BUTTON_CLICKED&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">wxCommandEventHandler&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">MyFrame&lt;/span>&lt;span class="o">::&lt;/span>&lt;span class="n">OnHello&lt;/span>&lt;span class="p">));&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">wxButton&lt;/span>&lt;span class="o">*&lt;/span> &lt;span class="n">button2&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="k">new&lt;/span> &lt;span class="n">wxButton&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="k">this&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">wxID_ABOUT&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">_&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s">&amp;#34;About&amp;#34;&lt;/span>&lt;span class="p">),&lt;/span> &lt;span class="n">wxPoint&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="mi">20&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="mi">60&lt;/span>&lt;span class="p">),&lt;/span> &lt;span class="n">wxSize&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="mi">100&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="mi">32&lt;/span>&lt;span class="p">));&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">Connect&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">wxID_ABOUT&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">wxEVT_COMMAND_BUTTON_CLICKED&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">wxCommandEventHandler&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">MyFrame&lt;/span>&lt;span class="o">::&lt;/span>&lt;span class="n">OnAbout&lt;/span>&lt;span class="p">));&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">wxButton&lt;/span>&lt;span class="o">*&lt;/span> &lt;span class="n">button3&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="k">new&lt;/span> &lt;span class="n">wxButton&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="k">this&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">wxID_EXIT&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">_&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s">&amp;#34;Exit&amp;#34;&lt;/span>&lt;span class="p">),&lt;/span> &lt;span class="n">wxPoint&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="mi">20&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="mi">100&lt;/span>&lt;span class="p">),&lt;/span> &lt;span class="n">wxSize&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="mi">100&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="mi">32&lt;/span>&lt;span class="p">));&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">Connect&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">wxID_EXIT&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">wxEVT_COMMAND_BUTTON_CLICKED&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">wxCommandEventHandler&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">MyFrame&lt;/span>&lt;span class="o">::&lt;/span>&lt;span class="n">OnExit&lt;/span>&lt;span class="p">));&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">CreateStatusBar&lt;/span>&lt;span class="p">();&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">SetStatusText&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s">&amp;#34;Welcome to wxWidgets!&amp;#34;&lt;/span>&lt;span class="p">);&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">Bind&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">wxEVT_MENU&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="o">&amp;amp;&lt;/span>&lt;span class="n">MyFrame&lt;/span>&lt;span class="o">::&lt;/span>&lt;span class="n">OnHello&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="k">this&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">ID_Hello&lt;/span>&lt;span class="p">);&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">Bind&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">wxEVT_MENU&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="o">&amp;amp;&lt;/span>&lt;span class="n">MyFrame&lt;/span>&lt;span class="o">::&lt;/span>&lt;span class="n">OnAbout&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="k">this&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">wxID_ABOUT&lt;/span>&lt;span class="p">);&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">Bind&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">wxEVT_MENU&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="o">&amp;amp;&lt;/span>&lt;span class="n">MyFrame&lt;/span>&lt;span class="o">::&lt;/span>&lt;span class="n">OnExit&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="k">this&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">wxID_EXIT&lt;/span>&lt;span class="p">);&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="kt">void&lt;/span> &lt;span class="n">MyFrame&lt;/span>&lt;span class="o">::&lt;/span>&lt;span class="n">OnExit&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">wxCommandEvent&lt;/span>&lt;span class="o">&amp;amp;&lt;/span> &lt;span class="n">event&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">Close&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="nb">true&lt;/span>&lt;span class="p">);&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="kt">void&lt;/span> &lt;span class="n">MyFrame&lt;/span>&lt;span class="o">::&lt;/span>&lt;span class="n">OnAbout&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">wxCommandEvent&lt;/span>&lt;span class="o">&amp;amp;&lt;/span> &lt;span class="n">event&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">wxMessageBox&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s">&amp;#34;This is a wxWidgets&amp;#39; Hello world sample&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="s">&amp;#34;About Hello World&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">wxOK&lt;/span> &lt;span class="o">|&lt;/span> &lt;span class="n">wxICON_INFORMATION&lt;/span>&lt;span class="p">);&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="kt">void&lt;/span> &lt;span class="n">MyFrame&lt;/span>&lt;span class="o">::&lt;/span>&lt;span class="n">OnHello&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">wxCommandEvent&lt;/span>&lt;span class="o">&amp;amp;&lt;/span> &lt;span class="n">event&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">wxLogMessage&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s">&amp;#34;Hello world from wxWidgets!&amp;#34;&lt;/span>&lt;span class="p">);&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;ol start="10">
&lt;li>Ao compilar e executar, uma janela como a abaixo será aberta.&lt;/li>
&lt;/ol>
&lt;p>&lt;img src="http://kenji.blog/p/wxwidgets-%E3%82%92%E4%BD%BF%E3%81%A3%E3%81%9F%E3%82%B5%E3%83%B3%E3%83%97%E3%83%AB/img_1.png"
width="386"
height="243"
srcset="http://kenji.blog/p/wxwidgets-%E3%82%92%E4%BD%BF%E3%81%A3%E3%81%9F%E3%82%B5%E3%83%B3%E3%83%97%E3%83%AB/img_1_hu5f63ad1505c8497f33a78280f704873d_5545_480x0_resize_box_3.png 480w, http://kenji.blog/p/wxwidgets-%E3%82%92%E4%BD%BF%E3%81%A3%E3%81%9F%E3%82%B5%E3%83%B3%E3%83%97%E3%83%AB/img_1_hu5f63ad1505c8497f33a78280f704873d_5545_1024x0_resize_box_3.png 1024w"
loading="lazy"
alt="img_1.png"
class="gallery-image"
data-flex-grow="158"
data-flex-basis="381px"
>&lt;/p>
&lt;h2 id="referências">Referências
&lt;/h2>&lt;p>O projeto de exemplo está disponível abaixo.
&lt;a class="link" href="https://github.com/kenjinote/wxWidgetsSample" target="_blank" rel="noopener"
>wxWidgetsSample&lt;/a>&lt;/p>
&lt;ul>
&lt;li>&lt;a class="link" href="https://www.wxwidgets.org" target="_blank" rel="noopener"
>Site oficial&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="https://ken-ohwada.hatenadiary.org/entry/2022/07/14/165213" target="_blank" rel="noopener"
>Jogos usando C++ e wxWidgets&lt;/a>&lt;/li>
&lt;/ul>
&lt;p>É isso.&lt;/p></description></item><item><title>Lista de Filmes TODO</title><link>http://kenji.blog/pt/p/%E6%98%A0%E7%94%BBtodo%E3%83%AA%E3%82%B9%E3%83%88/</link><pubDate>Mon, 17 Apr 2023 00:34:13 +0900</pubDate><guid>http://kenji.blog/pt/p/%E6%98%A0%E7%94%BBtodo%E3%83%AA%E3%82%B9%E3%83%88/</guid><description>&lt;img src="http://kenji.blog/p/%E6%98%A0%E7%94%BBtodo%E3%83%AA%E3%82%B9%E3%83%88/image.jpg" alt="Featured image of post Lista de Filmes TODO" />&lt;h1 id="filmes-para-assistir-marcar-quando-assistir">Filmes para assistir (marcar quando assistir)
&lt;/h1>&lt;ul>
&lt;li>&lt;input disabled="" type="checkbox"> Maquia: Quando a Flor Prometida Floresce&lt;/li>
&lt;li>&lt;input disabled="" type="checkbox"> A Fórmula Preferida do Professor&lt;/li>
&lt;li>&lt;input checked="" disabled="" type="checkbox"> Summer Wars&lt;/li>
&lt;li>&lt;input disabled="" type="checkbox"> Estrelas Além do Tempo&lt;/li>
&lt;li>&lt;input checked="" disabled="" type="checkbox"> Gênio Indomável&lt;/li>
&lt;li>&lt;input checked="" disabled="" type="checkbox"> Uma Mente Brilhante&lt;/li>
&lt;li>&lt;input disabled="" type="checkbox"> A Teoria de Tudo&lt;/li>
&lt;li>&lt;input disabled="" type="checkbox"> O Homem Que Viu o Infinito&lt;/li>
&lt;li>&lt;input disabled="" type="checkbox"> Hawking (Benedict Cumberbatch)&lt;/li>
&lt;li>&lt;input checked="" disabled="" type="checkbox"> Tenchi Meisatsu&lt;/li>
&lt;li>&lt;input disabled="" type="checkbox"> Pi&lt;/li>
&lt;li>&lt;input disabled="" type="checkbox"> Quebrando a Banca&lt;/li>
&lt;li>&lt;input disabled="" type="checkbox"> A Teoria do Amor&lt;/li>
&lt;li>&lt;input disabled="" type="checkbox"> A Prova&lt;/li>
&lt;li>&lt;input disabled="" type="checkbox"> 3 Idiotas&lt;/li>
&lt;li>&lt;input disabled="" type="checkbox"> Buffalo &amp;lsquo;66&lt;/li>
&lt;li>&lt;input disabled="" type="checkbox"> Laranja Mecânica&lt;/li>
&lt;li>&lt;input disabled="" type="checkbox"> Cortina de Fogo&lt;/li>
&lt;li>&lt;input disabled="" type="checkbox"> Asakusa Kid&lt;/li>
&lt;li>&lt;input disabled="" type="checkbox"> Top Gun&lt;/li>
&lt;li>&lt;input disabled="" type="checkbox"> Matrix Resurrections&lt;/li>
&lt;li>&lt;input checked="" disabled="" type="checkbox"> Eu Sou a Lenda&lt;/li>
&lt;li>&lt;input disabled="" type="checkbox"> O Código Da Vinci&lt;/li>
&lt;li>&lt;input checked="" disabled="" type="checkbox"> A Rede Social&lt;/li>
&lt;li>&lt;input disabled="" type="checkbox"> STEINS;GATE&lt;/li>
&lt;li>&lt;input disabled="" type="checkbox"> Planetes&lt;/li>
&lt;li>&lt;input checked="" disabled="" type="checkbox"> Gravidade&lt;/li>
&lt;li>&lt;input disabled="" type="checkbox"> Violet Evergarden&lt;/li>
&lt;li>&lt;input checked="" disabled="" type="checkbox"> Psycho-Pass&lt;/li>
&lt;li>&lt;input disabled="" type="checkbox"> Demon Slayer&lt;/li>
&lt;li>&lt;input checked="" disabled="" type="checkbox"> Princesa Mononoke&lt;/li>
&lt;li>&lt;input disabled="" type="checkbox"> Winny&lt;/li>
&lt;li>&lt;input checked="" disabled="" type="checkbox"> Ponto Zero&lt;/li>
&lt;li>&lt;input checked="" disabled="" type="checkbox"> Zootopia&lt;/li>
&lt;li>&lt;input checked="" disabled="" type="checkbox"> Your Name&lt;/li>
&lt;li>&lt;input checked="" disabled="" type="checkbox"> O Tempo com Você&lt;/li>
&lt;li>&lt;input checked="" disabled="" type="checkbox"> De Volta para o Futuro (1, 2, 3)&lt;/li>
&lt;li>&lt;input disabled="" type="checkbox"> Shin Godzilla&lt;/li>
&lt;li>&lt;input disabled="" type="checkbox"> Shin Ultraman&lt;/li>
&lt;li>&lt;input disabled="" type="checkbox"> Shin Kamen Rider&lt;/li>
&lt;li>&lt;input disabled="" type="checkbox"> Suzume&lt;/li>
&lt;li>&lt;input disabled="" type="checkbox"> THE FIRST SLAM DUNK&lt;/li>
&lt;/ul></description></item><item><title>Template de página da Web legal (html5up)</title><link>http://kenji.blog/pt/p/%E3%81%8B%E3%81%A3%E3%81%93%E3%81%84%E3%81%84-web-%E3%83%9A%E3%83%BC%E3%82%B8%E3%83%86%E3%83%B3%E3%83%97%E3%83%AC%E3%83%BC%E3%83%88html5up/</link><pubDate>Mon, 17 Apr 2023 00:26:55 +0900</pubDate><guid>http://kenji.blog/pt/p/%E3%81%8B%E3%81%A3%E3%81%93%E3%81%84%E3%81%84-web-%E3%83%9A%E3%83%BC%E3%82%B8%E3%83%86%E3%83%B3%E3%83%97%E3%83%AC%E3%83%BC%E3%83%88html5up/</guid><description>&lt;img src="http://kenji.blog/p/%E3%81%8B%E3%81%A3%E3%81%93%E3%81%84%E3%81%84-web-%E3%83%9A%E3%83%BC%E3%82%B8%E3%83%86%E3%83%B3%E3%83%97%E3%83%AC%E3%83%BC%E3%83%88html5up/img.png" alt="Featured image of post Template de página da Web legal (html5up)" />&lt;p>Template de página da Web legal&lt;/p>
&lt;ul>
&lt;li>html5up
&lt;a class="link" href="https://html5up.net/" target="_blank" rel="noopener"
>https://html5up.net/&lt;/a>&lt;/li>
&lt;/ul>
&lt;p>Eu pensei que gostaria de usá-lo, então aqui está uma nota.&lt;/p></description></item><item><title>Como imprimir a hora atual no formato ISO 8601 em C++</title><link>http://kenji.blog/pt/p/c-%E3%81%A7%E7%8F%BE%E5%9C%A8%E6%99%82%E5%88%BB%E3%82%92iso8601%E3%83%95%E3%82%A9%E3%83%BC%E3%83%9E%E3%83%83%E3%83%88%E3%81%A7%E5%87%BA%E5%8A%9B%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95/</link><pubDate>Sat, 15 Apr 2023 19:35:27 +0900</pubDate><guid>http://kenji.blog/pt/p/c-%E3%81%A7%E7%8F%BE%E5%9C%A8%E6%99%82%E5%88%BB%E3%82%92iso8601%E3%83%95%E3%82%A9%E3%83%BC%E3%83%9E%E3%83%83%E3%83%88%E3%81%A7%E5%87%BA%E5%8A%9B%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95/</guid><description>&lt;img src="http://kenji.blog/p/c-%E3%81%A7%E7%8F%BE%E5%9C%A8%E6%99%82%E5%88%BB%E3%82%92iso8601%E3%83%95%E3%82%A9%E3%83%BC%E3%83%9E%E3%83%83%E3%83%88%E3%81%A7%E5%87%BA%E5%8A%9B%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95/img.png" alt="Featured image of post Como imprimir a hora atual no formato ISO 8601 em C++" />&lt;h3 id="pré-requisitos">Pré-requisitos
&lt;/h3>&lt;ul>
&lt;li>Padrão ISO C++ 20 (/std:c++20)&lt;/li>
&lt;/ul>
&lt;h3 id="código">Código
&lt;/h3>&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;span class="lnt">4
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-c++" data-lang="c++">&lt;span class="line">&lt;span class="cl">&lt;span class="cp">#include&lt;/span> &lt;span class="cpf">&amp;lt;chrono&amp;gt;&lt;/span>&lt;span class="cp">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="cp">#include&lt;/span> &lt;span class="cpf">&amp;lt;format&amp;gt;&lt;/span>&lt;span class="cp">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="cp">&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">std&lt;/span>&lt;span class="o">::&lt;/span>&lt;span class="n">string&lt;/span> &lt;span class="n">datetime&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">std&lt;/span>&lt;span class="o">::&lt;/span>&lt;span class="n">format&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s">&amp;#34;{:%FT%TZ}&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">system_clock&lt;/span>&lt;span class="o">::&lt;/span>&lt;span class="n">now&lt;/span>&lt;span class="p">());&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>É assim que você imprime a hora atual no formato ISO 8601 em C++.&lt;/p>
&lt;h3 id="referências">Referências
&lt;/h3>&lt;ul>
&lt;li>&lt;a class="link" href="https://eel.is/c&amp;#43;&amp;#43;draft/time.format" target="_blank" rel="noopener"
>std::format&lt;/a>&lt;/li>
&lt;/ul></description></item><item><title>Como criar um atalho para desligar o Windows</title><link>http://kenji.blog/pt/p/como-criar-um-atalho-para-desligar-o-windows/</link><pubDate>Tue, 11 Apr 2023 17:03:32 +0900</pubDate><guid>http://kenji.blog/pt/p/como-criar-um-atalho-para-desligar-o-windows/</guid><description>&lt;img src="http://kenji.blog/p/windows-%E3%82%92%E3%82%B7%E3%83%A3%E3%83%83%E3%83%88%E3%83%80%E3%82%A6%E3%83%B3%E3%81%99%E3%82%8B%E3%82%B7%E3%83%A7%E3%83%BC%E3%83%88%E3%82%AB%E3%83%83%E3%83%88%E3%82%92%E4%BD%9C%E6%88%90%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95/img.png" alt="Featured image of post Como criar um atalho para desligar o Windows" />&lt;p>Aqui mostramos como criar um atalho para desligar o Windows.&lt;/p>
&lt;p>É conveniente, pois você pode desligar o computador simplesmente clicando duas vezes no atalho criado, caso ele esteja na área de trabalho, por exemplo.&lt;/p>
&lt;h2 id="como-criar">Como criar
&lt;/h2>&lt;h4 id="1-clique-com-o-botão-direito-na-área-de-trabalho-e-selecione-novo--atalho">1. Clique com o botão direito na área de trabalho e selecione &lt;code>Novo&lt;/code> &amp;gt; &lt;code>Atalho&lt;/code>
&lt;/h4>&lt;p>&lt;img src="http://kenji.blog/p/windows-%E3%82%92%E3%82%B7%E3%83%A3%E3%83%83%E3%83%88%E3%83%80%E3%82%A6%E3%83%B3%E3%81%99%E3%82%8B%E3%82%B7%E3%83%A7%E3%83%BC%E3%83%88%E3%82%AB%E3%83%83%E3%83%88%E3%82%92%E4%BD%9C%E6%88%90%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95/img_1.png"
width="568"
height="601"
srcset="http://kenji.blog/p/windows-%E3%82%92%E3%82%B7%E3%83%A3%E3%83%83%E3%83%88%E3%83%80%E3%82%A6%E3%83%B3%E3%81%99%E3%82%8B%E3%82%B7%E3%83%A7%E3%83%BC%E3%83%88%E3%82%AB%E3%83%83%E3%83%88%E3%82%92%E4%BD%9C%E6%88%90%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95/img_1_hu34071110105a0a7e05ea19b3faf627f0_58330_480x0_resize_box_3.png 480w, http://kenji.blog/p/windows-%E3%82%92%E3%82%B7%E3%83%A3%E3%83%83%E3%83%88%E3%83%80%E3%82%A6%E3%83%B3%E3%81%99%E3%82%8B%E3%82%B7%E3%83%A7%E3%83%BC%E3%83%88%E3%82%AB%E3%83%83%E3%83%88%E3%82%92%E4%BD%9C%E6%88%90%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95/img_1_hu34071110105a0a7e05ea19b3faf627f0_58330_1024x0_resize_box_3.png 1024w"
loading="lazy"
alt="img_1.png"
class="gallery-image"
data-flex-grow="94"
data-flex-basis="226px"
>&lt;/p>
&lt;h4 id="2-a-tela-de-criação-de-atalho-será-exibida-digite-shutdownexe--s--f--t-0-e-clique-em-avançar">2. A tela de criação de atalho será exibida. Digite &lt;code>shutdown.exe -s -f -t 0&lt;/code> e clique em &lt;code>Avançar&lt;/code>
&lt;/h4>&lt;p>&lt;img src="http://kenji.blog/p/windows-%E3%82%92%E3%82%B7%E3%83%A3%E3%83%83%E3%83%88%E3%83%80%E3%82%A6%E3%83%B3%E3%81%99%E3%82%8B%E3%82%B7%E3%83%A7%E3%83%BC%E3%83%88%E3%82%AB%E3%83%83%E3%83%88%E3%82%92%E4%BD%9C%E6%88%90%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95/img_2.png"
width="614"
height="454"
srcset="http://kenji.blog/p/windows-%E3%82%92%E3%82%B7%E3%83%A3%E3%83%83%E3%83%88%E3%83%80%E3%82%A6%E3%83%B3%E3%81%99%E3%82%8B%E3%82%B7%E3%83%A7%E3%83%BC%E3%83%88%E3%82%AB%E3%83%83%E3%83%88%E3%82%92%E4%BD%9C%E6%88%90%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95/img_2_hu0fdb01c392b6fac60e6bb98f573f8713_17593_480x0_resize_box_3.png 480w, http://kenji.blog/p/windows-%E3%82%92%E3%82%B7%E3%83%A3%E3%83%83%E3%83%88%E3%83%80%E3%82%A6%E3%83%B3%E3%81%99%E3%82%8B%E3%82%B7%E3%83%A7%E3%83%BC%E3%83%88%E3%82%AB%E3%83%83%E3%83%88%E3%82%92%E4%BD%9C%E6%88%90%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95/img_2_hu0fdb01c392b6fac60e6bb98f573f8713_17593_1024x0_resize_box_3.png 1024w"
loading="lazy"
alt="img_2.png"
class="gallery-image"
data-flex-grow="135"
data-flex-basis="324px"
>&lt;/p>
&lt;h4 id="3-digite-o-nome-do-atalho-por-exemplo-desligar-e-clique-em-concluir">3. Digite o nome do atalho, por exemplo, &lt;code>Desligar&lt;/code>, e clique em &lt;code>Concluir&lt;/code>
&lt;/h4>&lt;p>&lt;img src="http://kenji.blog/p/windows-%E3%82%92%E3%82%B7%E3%83%A3%E3%83%83%E3%83%88%E3%83%80%E3%82%A6%E3%83%B3%E3%81%99%E3%82%8B%E3%82%B7%E3%83%A7%E3%83%BC%E3%83%88%E3%82%AB%E3%83%83%E3%83%88%E3%82%92%E4%BD%9C%E6%88%90%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95/img_3.png"
width="614"
height="454"
srcset="http://kenji.blog/p/windows-%E3%82%92%E3%82%B7%E3%83%A3%E3%83%83%E3%83%88%E3%83%80%E3%82%A6%E3%83%B3%E3%81%99%E3%82%8B%E3%82%B7%E3%83%A7%E3%83%BC%E3%83%88%E3%82%AB%E3%83%83%E3%83%88%E3%82%92%E4%BD%9C%E6%88%90%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95/img_3_hub638dd79dd16a877bb5fea8c6f2bf142_11979_480x0_resize_box_3.png 480w, http://kenji.blog/p/windows-%E3%82%92%E3%82%B7%E3%83%A3%E3%83%83%E3%83%88%E3%83%80%E3%82%A6%E3%83%B3%E3%81%99%E3%82%8B%E3%82%B7%E3%83%A7%E3%83%BC%E3%83%88%E3%82%AB%E3%83%83%E3%83%88%E3%82%92%E4%BD%9C%E6%88%90%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95/img_3_hub638dd79dd16a877bb5fea8c6f2bf142_11979_1024x0_resize_box_3.png 1024w"
loading="lazy"
alt="img_3.png"
class="gallery-image"
data-flex-grow="135"
data-flex-basis="324px"
>&lt;/p>
&lt;h4 id="4-altere-o-ícone-do-atalho-criado">4. Altere o ícone do atalho criado
&lt;/h4>&lt;p>&lt;img src="http://kenji.blog/p/windows-%E3%82%92%E3%82%B7%E3%83%A3%E3%83%83%E3%83%88%E3%83%80%E3%82%A6%E3%83%B3%E3%81%99%E3%82%8B%E3%82%B7%E3%83%A7%E3%83%BC%E3%83%88%E3%82%AB%E3%83%83%E3%83%88%E3%82%92%E4%BD%9C%E6%88%90%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95/img_4.png"
width="419"
height="469"
srcset="http://kenji.blog/p/windows-%E3%82%92%E3%82%B7%E3%83%A3%E3%83%83%E3%83%88%E3%83%80%E3%82%A6%E3%83%B3%E3%81%99%E3%82%8B%E3%82%B7%E3%83%A7%E3%83%BC%E3%83%88%E3%82%AB%E3%83%83%E3%83%88%E3%82%92%E4%BD%9C%E6%88%90%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95/img_4_hua5d649daacdf0dbdf4f93bd3239c3858_27168_480x0_resize_box_3.png 480w, http://kenji.blog/p/windows-%E3%82%92%E3%82%B7%E3%83%A3%E3%83%83%E3%83%88%E3%83%80%E3%82%A6%E3%83%B3%E3%81%99%E3%82%8B%E3%82%B7%E3%83%A7%E3%83%BC%E3%83%88%E3%82%AB%E3%83%83%E3%83%88%E3%82%92%E4%BD%9C%E6%88%90%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95/img_4_hua5d649daacdf0dbdf4f93bd3239c3858_27168_1024x0_resize_box_3.png 1024w"
loading="lazy"
alt="img_4.png"
class="gallery-image"
data-flex-grow="89"
data-flex-basis="214px"
>&lt;/p>
&lt;p>Clique com o botão direito no atalho criado e selecione &lt;code>Propriedades&lt;/code>&lt;/p>
&lt;p>&lt;img src="http://kenji.blog/p/windows-%E3%82%92%E3%82%B7%E3%83%A3%E3%83%83%E3%83%88%E3%83%80%E3%82%A6%E3%83%B3%E3%81%99%E3%82%8B%E3%82%B7%E3%83%A7%E3%83%BC%E3%83%88%E3%82%AB%E3%83%83%E3%83%88%E3%82%92%E4%BD%9C%E6%88%90%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95/img_5.png"
width="432"
height="600"
srcset="http://kenji.blog/p/windows-%E3%82%92%E3%82%B7%E3%83%A3%E3%83%83%E3%83%88%E3%83%80%E3%82%A6%E3%83%B3%E3%81%99%E3%82%8B%E3%82%B7%E3%83%A7%E3%83%BC%E3%83%88%E3%82%AB%E3%83%83%E3%83%88%E3%82%92%E4%BD%9C%E6%88%90%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95/img_5_hu313a9d69197efb75a0725e0e6793e592_24420_480x0_resize_box_3.png 480w, http://kenji.blog/p/windows-%E3%82%92%E3%82%B7%E3%83%A3%E3%83%83%E3%83%88%E3%83%80%E3%82%A6%E3%83%B3%E3%81%99%E3%82%8B%E3%82%B7%E3%83%A7%E3%83%BC%E3%83%88%E3%82%AB%E3%83%83%E3%83%88%E3%82%92%E4%BD%9C%E6%88%90%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95/img_5_hu313a9d69197efb75a0725e0e6793e592_24420_1024x0_resize_box_3.png 1024w"
loading="lazy"
alt="img_5.png"
class="gallery-image"
data-flex-grow="72"
data-flex-basis="172px"
>&lt;/p>
&lt;p>Clique em &lt;code>Alterar Ícone&lt;/code>&lt;/p>
&lt;p>&lt;img src="http://kenji.blog/p/windows-%E3%82%92%E3%82%B7%E3%83%A3%E3%83%83%E3%83%88%E3%83%80%E3%82%A6%E3%83%B3%E3%81%99%E3%82%8B%E3%82%B7%E3%83%A7%E3%83%BC%E3%83%88%E3%82%AB%E3%83%83%E3%83%88%E3%82%92%E4%BD%9C%E6%88%90%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95/img_6.png"
width="340"
height="420"
srcset="http://kenji.blog/p/windows-%E3%82%92%E3%82%B7%E3%83%A3%E3%83%83%E3%83%88%E3%83%80%E3%82%A6%E3%83%B3%E3%81%99%E3%82%8B%E3%82%B7%E3%83%A7%E3%83%BC%E3%83%88%E3%82%AB%E3%83%83%E3%83%88%E3%82%92%E4%BD%9C%E6%88%90%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95/img_6_hud40ff43810cbe8f07802320fab97e1e8_45995_480x0_resize_box_3.png 480w, http://kenji.blog/p/windows-%E3%82%92%E3%82%B7%E3%83%A3%E3%83%83%E3%83%88%E3%83%80%E3%82%A6%E3%83%B3%E3%81%99%E3%82%8B%E3%82%B7%E3%83%A7%E3%83%BC%E3%83%88%E3%82%AB%E3%83%83%E3%83%88%E3%82%92%E4%BD%9C%E6%88%90%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95/img_6_hud40ff43810cbe8f07802320fab97e1e8_45995_1024x0_resize_box_3.png 1024w"
loading="lazy"
alt="img_6.png"
class="gallery-image"
data-flex-grow="80"
data-flex-basis="194px"
>&lt;/p>
&lt;p>Selecione o ícone quadrado vermelho e clique em &lt;code>OK&lt;/code>. Em seguida, clique em &lt;code>OK&lt;/code> novamente para fechar as propriedades.&lt;/p>
&lt;p>Isso é tudo.&lt;/p>
&lt;p>&lt;img src="http://kenji.blog/p/windows-%E3%82%92%E3%82%B7%E3%83%A3%E3%83%83%E3%83%88%E3%83%80%E3%82%A6%E3%83%B3%E3%81%99%E3%82%8B%E3%82%B7%E3%83%A7%E3%83%BC%E3%83%88%E3%82%AB%E3%83%83%E3%83%88%E3%82%92%E4%BD%9C%E6%88%90%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95/img.png"
width="126"
height="122"
srcset="http://kenji.blog/p/windows-%E3%82%92%E3%82%B7%E3%83%A3%E3%83%83%E3%83%88%E3%83%80%E3%82%A6%E3%83%B3%E3%81%99%E3%82%8B%E3%82%B7%E3%83%A7%E3%83%BC%E3%83%88%E3%82%AB%E3%83%83%E3%83%88%E3%82%92%E4%BD%9C%E6%88%90%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95/img_hu9b7c59b017f6e7ad15ccc41a6e668b14_6147_480x0_resize_box_3.png 480w, http://kenji.blog/p/windows-%E3%82%92%E3%82%B7%E3%83%A3%E3%83%83%E3%83%88%E3%83%80%E3%82%A6%E3%83%B3%E3%81%99%E3%82%8B%E3%82%B7%E3%83%A7%E3%83%BC%E3%83%88%E3%82%AB%E3%83%83%E3%83%88%E3%82%92%E4%BD%9C%E6%88%90%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95/img_hu9b7c59b017f6e7ad15ccc41a6e668b14_6147_1024x0_resize_box_3.png 1024w"
loading="lazy"
alt="img.png"
class="gallery-image"
data-flex-grow="103"
data-flex-basis="247px"
>&lt;/p>
&lt;p>O Windows será desligado quando você clicar duas vezes no atalho criado.&lt;/p>
&lt;p>※ Nota: Nenhuma caixa de diálogo de confirmação de desligamento será exibida.&lt;/p></description></item><item><title>Como aplicar mosaico em áreas específicas de uma imagem usando paint.net</title><link>http://kenji.blog/pt/p/paint.net%E3%81%A7%E7%94%BB%E5%83%8F%E3%81%AE%E7%89%B9%E5%AE%9A%E5%80%8B%E6%89%80%E3%81%AB%E3%83%A2%E3%82%B6%E3%82%A4%E3%82%AF%E3%82%92%E3%81%8B%E3%81%91%E3%82%8B%E6%96%B9%E6%B3%95/</link><pubDate>Tue, 11 Apr 2023 16:33:10 +0900</pubDate><guid>http://kenji.blog/pt/p/paint.net%E3%81%A7%E7%94%BB%E5%83%8F%E3%81%AE%E7%89%B9%E5%AE%9A%E5%80%8B%E6%89%80%E3%81%AB%E3%83%A2%E3%82%B6%E3%82%A4%E3%82%AF%E3%82%92%E3%81%8B%E3%81%91%E3%82%8B%E6%96%B9%E6%B3%95/</guid><description>&lt;img src="http://kenji.blog/p/paint.net%E3%81%A7%E7%94%BB%E5%83%8F%E3%81%AE%E7%89%B9%E5%AE%9A%E5%80%8B%E6%89%80%E3%81%AB%E3%83%A2%E3%82%B6%E3%82%A4%E3%82%AF%E3%82%92%E3%81%8B%E3%81%91%E3%82%8B%E6%96%B9%E6%B3%95/img.png" alt="Featured image of post Como aplicar mosaico em áreas específicas de uma imagem usando paint.net" />&lt;p>Vou apresentar como aplicar mosaico em partes específicas de uma imagem usando o paint.net.&lt;/p>
&lt;p>Ao fazer upload de imagens na internet, pode haver casos em que você queira aplicar mosaico a partes específicas da imagem. Com o paint.net, você pode processar as imagens rapidamente.&lt;/p>
&lt;h2 id="procedimento">Procedimento
&lt;/h2>&lt;h4 id="1-abra-a-imagem-na-qual-deseja-aplicar-o-mosaico-no-paintnet">1. Abra a imagem na qual deseja aplicar o mosaico no paint.net
&lt;/h4>&lt;h4 id="2-use-a-ferramenta-de-seleção-para-selecionar-a-área-que-deseja-aplicar-o-mosaico-é-possível-selecionar-várias-áreas">2. Use a ferramenta de seleção para selecionar a área que deseja aplicar o mosaico (é possível selecionar várias áreas)
&lt;/h4>&lt;p>&lt;img src="http://kenji.blog/p/paint.net%E3%81%A7%E7%94%BB%E5%83%8F%E3%81%AE%E7%89%B9%E5%AE%9A%E5%80%8B%E6%89%80%E3%81%AB%E3%83%A2%E3%82%B6%E3%82%A4%E3%82%AF%E3%82%92%E3%81%8B%E3%81%91%E3%82%8B%E6%96%B9%E6%B3%95/img_2.png"
width="380"
height="344"
srcset="http://kenji.blog/p/paint.net%E3%81%A7%E7%94%BB%E5%83%8F%E3%81%AE%E7%89%B9%E5%AE%9A%E5%80%8B%E6%89%80%E3%81%AB%E3%83%A2%E3%82%B6%E3%82%A4%E3%82%AF%E3%82%92%E3%81%8B%E3%81%91%E3%82%8B%E6%96%B9%E6%B3%95/img_2_hub2f9dbafba1021c88614fe95fc580d3f_11592_480x0_resize_box_3.png 480w, http://kenji.blog/p/paint.net%E3%81%A7%E7%94%BB%E5%83%8F%E3%81%AE%E7%89%B9%E5%AE%9A%E5%80%8B%E6%89%80%E3%81%AB%E3%83%A2%E3%82%B6%E3%82%A4%E3%82%AF%E3%82%92%E3%81%8B%E3%81%91%E3%82%8B%E6%96%B9%E6%B3%95/img_2_hub2f9dbafba1021c88614fe95fc580d3f_11592_1024x0_resize_box_3.png 1024w"
loading="lazy"
alt="img_2.png"
class="gallery-image"
data-flex-grow="110"
data-flex-basis="265px"
>&lt;/p>
&lt;h4 id="3-selecione-menu--efeitos--distorcer--mosaico">3. Selecione Menu &amp;gt; Efeitos &amp;gt; Distorcer &amp;gt; Mosaico
&lt;/h4>&lt;p>&lt;img src="http://kenji.blog/p/paint.net%E3%81%A7%E7%94%BB%E5%83%8F%E3%81%AE%E7%89%B9%E5%AE%9A%E5%80%8B%E6%89%80%E3%81%AB%E3%83%A2%E3%82%B6%E3%82%A4%E3%82%AF%E3%82%92%E3%81%8B%E3%81%91%E3%82%8B%E6%96%B9%E6%B3%95/img_1.png"
width="347"
height="197"
srcset="http://kenji.blog/p/paint.net%E3%81%A7%E7%94%BB%E5%83%8F%E3%81%AE%E7%89%B9%E5%AE%9A%E5%80%8B%E6%89%80%E3%81%AB%E3%83%A2%E3%82%B6%E3%82%A4%E3%82%AF%E3%82%92%E3%81%8B%E3%81%91%E3%82%8B%E6%96%B9%E6%B3%95/img_1_hu9217e3f3ef9abeb3d05f81497cc9e2c6_7552_480x0_resize_box_3.png 480w, http://kenji.blog/p/paint.net%E3%81%A7%E7%94%BB%E5%83%8F%E3%81%AE%E7%89%B9%E5%AE%9A%E5%80%8B%E6%89%80%E3%81%AB%E3%83%A2%E3%82%B6%E3%82%A4%E3%82%AF%E3%82%92%E3%81%8B%E3%81%91%E3%82%8B%E6%96%B9%E6%B3%95/img_1_hu9217e3f3ef9abeb3d05f81497cc9e2c6_7552_1024x0_resize_box_3.png 1024w"
loading="lazy"
alt="img_1.png"
class="gallery-image"
data-flex-grow="176"
data-flex-basis="422px"
>&lt;/p>
&lt;ul>
&lt;li>Defina a aspereza do mosaico pelo tamanho da célula. Quanto maior o número, maior a ocultação.&lt;/li>
&lt;li>[Reduzir] Selecione &lt;code>Multisampling Bilinear&lt;/code>&lt;/li>
&lt;li>[Ampliar] Selecione &lt;code>Nearest Neighbor&lt;/code>&lt;/li>
&lt;/ul>
&lt;p>Feche a caixa de diálogo com &lt;code>OK&lt;/code>.&lt;/p>
&lt;h4 id="4-a-imagem-será-processada-com-mosaico-em-seguida-salve-a-imagem">4. A imagem será processada com mosaico, em seguida, salve a imagem.
&lt;/h4>&lt;p>&lt;img src="http://kenji.blog/p/paint.net%E3%81%A7%E7%94%BB%E5%83%8F%E3%81%AE%E7%89%B9%E5%AE%9A%E5%80%8B%E6%89%80%E3%81%AB%E3%83%A2%E3%82%B6%E3%82%A4%E3%82%AF%E3%82%92%E3%81%8B%E3%81%91%E3%82%8B%E6%96%B9%E6%B3%95/img.png"
width="380"
height="344"
srcset="http://kenji.blog/p/paint.net%E3%81%A7%E7%94%BB%E5%83%8F%E3%81%AE%E7%89%B9%E5%AE%9A%E5%80%8B%E6%89%80%E3%81%AB%E3%83%A2%E3%82%B6%E3%82%A4%E3%82%AF%E3%82%92%E3%81%8B%E3%81%91%E3%82%8B%E6%96%B9%E6%B3%95/img_huffa96a6cc9046fae85e7535d0c0f77f3_7385_480x0_resize_box_3.png 480w, http://kenji.blog/p/paint.net%E3%81%A7%E7%94%BB%E5%83%8F%E3%81%AE%E7%89%B9%E5%AE%9A%E5%80%8B%E6%89%80%E3%81%AB%E3%83%A2%E3%82%B6%E3%82%A4%E3%82%AF%E3%82%92%E3%81%8B%E3%81%91%E3%82%8B%E6%96%B9%E6%B3%95/img_huffa96a6cc9046fae85e7535d0c0f77f3_7385_1024x0_resize_box_3.png 1024w"
loading="lazy"
alt="img.png"
class="gallery-image"
data-flex-grow="110"
data-flex-basis="265px"
>&lt;/p>
&lt;p>É isso.&lt;/p></description></item><item><title>Como adicionar uma borda a uma imagem usando paint.net</title><link>http://kenji.blog/pt/p/como-adicionar-uma-borda-a-uma-imagem-usando-paint-net/</link><pubDate>Tue, 11 Apr 2023 14:31:59 +0900</pubDate><guid>http://kenji.blog/pt/p/como-adicionar-uma-borda-a-uma-imagem-usando-paint-net/</guid><description>&lt;img src="http://kenji.blog/p/paint.net%E3%82%92%E4%BD%BF%E3%81%A3%E3%81%A6%E7%94%BB%E5%83%8F%E3%81%AB%E6%9E%A0%E7%B7%9A%E3%82%92%E3%81%A4%E3%81%91%E3%82%8B%E6%96%B9%E6%B3%95/img_3.png" alt="Featured image of post Como adicionar uma borda a uma imagem usando paint.net" />&lt;p>Vou mostrar como adicionar uma borda a uma imagem usando o paint.net.&lt;/p>
&lt;h2 id="procedimento">Procedimento
&lt;/h2>&lt;h4 id="1-abra-a-imagem-à-qual-deseja-adicionar-uma-borda-no-paintnet">1. Abra a imagem à qual deseja adicionar uma borda no paint.net
&lt;/h4>&lt;h4 id="2-defina-a-cor-secundária-esta-será-a-cor-da-borda">2. Defina a cor secundária (esta será a cor da borda)
&lt;/h4>&lt;p>&lt;img src="http://kenji.blog/p/paint.net%E3%82%92%E4%BD%BF%E3%81%A3%E3%81%A6%E7%94%BB%E5%83%8F%E3%81%AB%E6%9E%A0%E7%B7%9A%E3%82%92%E3%81%A4%E3%81%91%E3%82%8B%E6%96%B9%E6%B3%95/img.png"
width="211"
height="249"
srcset="http://kenji.blog/p/paint.net%E3%82%92%E4%BD%BF%E3%81%A3%E3%81%A6%E7%94%BB%E5%83%8F%E3%81%AB%E6%9E%A0%E7%B7%9A%E3%82%92%E3%81%A4%E3%81%91%E3%82%8B%E6%96%B9%E6%B3%95/img_hua62af0f7d67e0ed0c246e20a82fe1998_44893_480x0_resize_box_3.png 480w, http://kenji.blog/p/paint.net%E3%82%92%E4%BD%BF%E3%81%A3%E3%81%A6%E7%94%BB%E5%83%8F%E3%81%AB%E6%9E%A0%E7%B7%9A%E3%82%92%E3%81%A4%E3%81%91%E3%82%8B%E6%96%B9%E6%B3%95/img_hua62af0f7d67e0ed0c246e20a82fe1998_44893_1024x0_resize_box_3.png 1024w"
loading="lazy"
alt="img.png"
class="gallery-image"
data-flex-grow="84"
data-flex-basis="203px"
>&lt;/p>
&lt;p>Se a paleta de cores não estiver visível, pressione a tecla &lt;code>F8&lt;/code> no teclado.&lt;/p>
&lt;p>Para definir como preto, clique em &lt;img src="http://kenji.blog/p/paint.net%E3%82%92%E4%BD%BF%E3%81%A3%E3%81%A6%E7%94%BB%E5%83%8F%E3%81%AB%E6%9E%A0%E7%B7%9A%E3%82%92%E3%81%A4%E3%81%91%E3%82%8B%E6%96%B9%E6%B3%95/img_1.png"
width="15"
height="13"
srcset="http://kenji.blog/p/paint.net%E3%82%92%E4%BD%BF%E3%81%A3%E3%81%A6%E7%94%BB%E5%83%8F%E3%81%AB%E6%9E%A0%E7%B7%9A%E3%82%92%E3%81%A4%E3%81%91%E3%82%8B%E6%96%B9%E6%B3%95/img_1_huaca51541d504c6afa3b8c1f00eff82f6_257_480x0_resize_box_3.png 480w, http://kenji.blog/p/paint.net%E3%82%92%E4%BD%BF%E3%81%A3%E3%81%A6%E7%94%BB%E5%83%8F%E3%81%AB%E6%9E%A0%E7%B7%9A%E3%82%92%E3%81%A4%E3%81%91%E3%82%8B%E6%96%B9%E6%B3%95/img_1_huaca51541d504c6afa3b8c1f00eff82f6_257_1024x0_resize_box_3.png 1024w"
loading="lazy"
alt="img_1.png"
class="gallery-image"
data-flex-grow="115"
data-flex-basis="276px"
>.&lt;/p>
&lt;h4 id="3-selecione-menu--imagem--alterar-o-tamanho-da-tela">3. Selecione Menu &amp;gt; Imagem &amp;gt; Alterar o tamanho da tela
&lt;/h4>&lt;p>&lt;img src="http://kenji.blog/p/paint.net%E3%82%92%E4%BD%BF%E3%81%A3%E3%81%A6%E7%94%BB%E5%83%8F%E3%81%AB%E6%9E%A0%E7%B7%9A%E3%82%92%E3%81%A4%E3%81%91%E3%82%8B%E6%96%B9%E6%B3%95/img_2.png"
width="277"
height="467"
srcset="http://kenji.blog/p/paint.net%E3%82%92%E4%BD%BF%E3%81%A3%E3%81%A6%E7%94%BB%E5%83%8F%E3%81%AB%E6%9E%A0%E7%B7%9A%E3%82%92%E3%81%A4%E3%81%91%E3%82%8B%E6%96%B9%E6%B3%95/img_2_huc4c336e94d4deff61f9c52eb8a834089_23405_480x0_resize_box_3.png 480w, http://kenji.blog/p/paint.net%E3%82%92%E4%BD%BF%E3%81%A3%E3%81%A6%E7%94%BB%E5%83%8F%E3%81%AB%E6%9E%A0%E7%B7%9A%E3%82%92%E3%81%A4%E3%81%91%E3%82%8B%E6%96%B9%E6%B3%95/img_2_huc4c336e94d4deff61f9c52eb8a834089_23405_1024x0_resize_box_3.png 1024w"
loading="lazy"
alt="img_2.png"
class="gallery-image"
data-flex-grow="59"
data-flex-basis="142px"
>&lt;/p>
&lt;p>Aumente a largura e a altura em 2 pixels cada. Aumentar em 2 pixels resultará em uma borda de 1 pixel.
Se quiser uma borda de 5 pixels, aumente a largura e a altura em 10 pixels cada.&lt;/p>
&lt;p>Selecione &amp;ldquo;Centro&amp;rdquo; para a âncora e clique em OK.&lt;/p>
&lt;h4 id="4-uma-borda-será-adicionada-à-imagem-então-salve-a-imagem">4. Uma borda será adicionada à imagem, então salve a imagem.
&lt;/h4>&lt;p>É isso.&lt;/p></description></item><item><title>Como obter e colocar o ranking de páginas populares do Google Analytics</title><link>http://kenji.blog/pt/p/google%E3%82%A2%E3%83%8A%E3%83%AA%E3%83%86%E3%82%A3%E3%82%AF%E3%82%B9%E3%81%8B%E3%82%89%E4%BA%BA%E6%B0%97%E3%83%9A%E3%83%BC%E3%82%B8%E3%83%A9%E3%83%B3%E3%82%AD%E3%83%B3%E3%82%B0%E3%82%92%E5%8F%96%E5%BE%97%E3%81%97%E3%81%A6%E9%85%8D%E7%BD%AE%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95/</link><pubDate>Mon, 10 Apr 2023 20:26:57 +0900</pubDate><guid>http://kenji.blog/pt/p/google%E3%82%A2%E3%83%8A%E3%83%AA%E3%83%86%E3%82%A3%E3%82%AF%E3%82%B9%E3%81%8B%E3%82%89%E4%BA%BA%E6%B0%97%E3%83%9A%E3%83%BC%E3%82%B8%E3%83%A9%E3%83%B3%E3%82%AD%E3%83%B3%E3%82%B0%E3%82%92%E5%8F%96%E5%BE%97%E3%81%97%E3%81%A6%E9%85%8D%E7%BD%AE%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95/</guid><description>&lt;img src="http://kenji.blog/p/google%E3%82%A2%E3%83%8A%E3%83%AA%E3%83%86%E3%82%A3%E3%82%AF%E3%82%B9%E3%81%8B%E3%82%89%E4%BA%BA%E6%B0%97%E3%83%9A%E3%83%BC%E3%82%B8%E3%83%A9%E3%83%B3%E3%82%AD%E3%83%B3%E3%82%B0%E3%82%92%E5%8F%96%E5%BE%97%E3%81%97%E3%81%A6%E9%85%8D%E7%BD%AE%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95/img.png" alt="Featured image of post Como obter e colocar o ranking de páginas populares do Google Analytics" />&lt;h2 id="introdução">Introdução
&lt;/h2>&lt;p>Usando um serviço chamado &lt;code>Ranklet&lt;/code>, você pode facilmente obter o ranking de páginas populares do Google Analytics e colocá-lo em seu site.&lt;/p>
&lt;p>Neste artigo, apresentamos como adicioná-lo a um blog HUGO.&lt;/p>
&lt;h2 id="exemplo-de-funcionamento">Exemplo de funcionamento
&lt;/h2>&lt;p>&lt;img src="http://kenji.blog/p/google%E3%82%A2%E3%83%8A%E3%83%AA%E3%83%86%E3%82%A3%E3%82%AF%E3%82%B9%E3%81%8B%E3%82%89%E4%BA%BA%E6%B0%97%E3%83%9A%E3%83%BC%E3%82%B8%E3%83%A9%E3%83%B3%E3%82%AD%E3%83%B3%E3%82%B0%E3%82%92%E5%8F%96%E5%BE%97%E3%81%97%E3%81%A6%E9%85%8D%E7%BD%AE%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95/img_1.png"
width="769"
height="759"
srcset="http://kenji.blog/p/google%E3%82%A2%E3%83%8A%E3%83%AA%E3%83%86%E3%82%A3%E3%82%AF%E3%82%B9%E3%81%8B%E3%82%89%E4%BA%BA%E6%B0%97%E3%83%9A%E3%83%BC%E3%82%B8%E3%83%A9%E3%83%B3%E3%82%AD%E3%83%B3%E3%82%B0%E3%82%92%E5%8F%96%E5%BE%97%E3%81%97%E3%81%A6%E9%85%8D%E7%BD%AE%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95/img_1_hu717de7196f67be0249dafd2187915cbc_172896_480x0_resize_box_3.png 480w, http://kenji.blog/p/google%E3%82%A2%E3%83%8A%E3%83%AA%E3%83%86%E3%82%A3%E3%82%AF%E3%82%B9%E3%81%8B%E3%82%89%E4%BA%BA%E6%B0%97%E3%83%9A%E3%83%BC%E3%82%B8%E3%83%A9%E3%83%B3%E3%82%AD%E3%83%B3%E3%82%B0%E3%82%92%E5%8F%96%E5%BE%97%E3%81%97%E3%81%A6%E9%85%8D%E7%BD%AE%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95/img_1_hu717de7196f67be0249dafd2187915cbc_172896_1024x0_resize_box_3.png 1024w"
loading="lazy"
alt="img_1.png"
class="gallery-image"
data-flex-grow="101"
data-flex-basis="243px"
>&lt;/p>
&lt;h2 id="preparação">Preparação
&lt;/h2>&lt;ul>
&lt;li>Ter o Google Analytics configurado em seu site&lt;/li>
&lt;/ul>
&lt;h2 id="passos">Passos
&lt;/h2>&lt;ol>
&lt;li>Acesse o &lt;code>Ranklet&lt;/code>&lt;/li>
&lt;li>Clique em &lt;code>Sign in with Google&lt;/code> e faça login com sua conta do Google (ela deve estar vinculada à sua conta do Google Analytics)
&lt;img src="http://kenji.blog/p/google%E3%82%A2%E3%83%8A%E3%83%AA%E3%83%86%E3%82%A3%E3%82%AF%E3%82%B9%E3%81%8B%E3%82%89%E4%BA%BA%E6%B0%97%E3%83%9A%E3%83%BC%E3%82%B8%E3%83%A9%E3%83%B3%E3%82%AD%E3%83%B3%E3%82%B0%E3%82%92%E5%8F%96%E5%BE%97%E3%81%97%E3%81%A6%E9%85%8D%E7%BD%AE%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95/img_2.png"
width="478"
height="834"
srcset="http://kenji.blog/p/google%E3%82%A2%E3%83%8A%E3%83%AA%E3%83%86%E3%82%A3%E3%82%AF%E3%82%B9%E3%81%8B%E3%82%89%E4%BA%BA%E6%B0%97%E3%83%9A%E3%83%BC%E3%82%B8%E3%83%A9%E3%83%B3%E3%82%AD%E3%83%B3%E3%82%B0%E3%82%92%E5%8F%96%E5%BE%97%E3%81%97%E3%81%A6%E9%85%8D%E7%BD%AE%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95/img_2_hufd6a9cea0728a6881e82fafb17789865_36794_480x0_resize_box_3.png 480w, http://kenji.blog/p/google%E3%82%A2%E3%83%8A%E3%83%AA%E3%83%86%E3%82%A3%E3%82%AF%E3%82%B9%E3%81%8B%E3%82%89%E4%BA%BA%E6%B0%97%E3%83%9A%E3%83%BC%E3%82%B8%E3%83%A9%E3%83%B3%E3%82%AD%E3%83%B3%E3%82%B0%E3%82%92%E5%8F%96%E5%BE%97%E3%81%97%E3%81%A6%E9%85%8D%E7%BD%AE%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95/img_2_hufd6a9cea0728a6881e82fafb17789865_36794_1024x0_resize_box_3.png 1024w"
loading="lazy"
alt="img_2.png"
class="gallery-image"
data-flex-grow="57"
data-flex-basis="137px"
>&lt;/li>
&lt;/ol>
&lt;p>Clique em &lt;code>Permitir&lt;/code> (&lt;code>許可&lt;/code>)&lt;/p>
&lt;ol start="3">
&lt;li>Configure as informações básicas&lt;/li>
&lt;/ol>
&lt;p>&lt;img src="http://kenji.blog/p/google%E3%82%A2%E3%83%8A%E3%83%AA%E3%83%86%E3%82%A3%E3%82%AF%E3%82%B9%E3%81%8B%E3%82%89%E4%BA%BA%E6%B0%97%E3%83%9A%E3%83%BC%E3%82%B8%E3%83%A9%E3%83%B3%E3%82%AD%E3%83%B3%E3%82%B0%E3%82%92%E5%8F%96%E5%BE%97%E3%81%97%E3%81%A6%E9%85%8D%E7%BD%AE%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95/img_3.png"
width="669"
height="849"
srcset="http://kenji.blog/p/google%E3%82%A2%E3%83%8A%E3%83%AA%E3%83%86%E3%82%A3%E3%82%AF%E3%82%B9%E3%81%8B%E3%82%89%E4%BA%BA%E6%B0%97%E3%83%9A%E3%83%BC%E3%82%B8%E3%83%A9%E3%83%B3%E3%82%AD%E3%83%B3%E3%82%B0%E3%82%92%E5%8F%96%E5%BE%97%E3%81%97%E3%81%A6%E9%85%8D%E7%BD%AE%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95/img_3_hu8c23b62b71c084f37537f97908add2df_53340_480x0_resize_box_3.png 480w, http://kenji.blog/p/google%E3%82%A2%E3%83%8A%E3%83%AA%E3%83%86%E3%82%A3%E3%82%AF%E3%82%B9%E3%81%8B%E3%82%89%E4%BA%BA%E6%B0%97%E3%83%9A%E3%83%BC%E3%82%B8%E3%83%A9%E3%83%B3%E3%82%AD%E3%83%B3%E3%82%B0%E3%82%92%E5%8F%96%E5%BE%97%E3%81%97%E3%81%A6%E9%85%8D%E7%BD%AE%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95/img_3_hu8c23b62b71c084f37537f97908add2df_53340_1024x0_resize_box_3.png 1024w"
loading="lazy"
alt="img_3.png"
class="gallery-image"
data-flex-grow="78"
data-flex-basis="189px"
>
Configurei como mostrado acima.&lt;/p>
&lt;ul>
&lt;li>Em &lt;code>Google Analytics ビュー&lt;/code> (Visualização do Google Analytics), selecione a visualização da qual deseja obter o ranking.&lt;/li>
&lt;/ul>
&lt;ol start="4">
&lt;li>Configure a substituição de texto&lt;/li>
&lt;/ol>
&lt;p>&lt;img src="http://kenji.blog/p/google%E3%82%A2%E3%83%8A%E3%83%AA%E3%83%86%E3%82%A3%E3%82%AF%E3%82%B9%E3%81%8B%E3%82%89%E4%BA%BA%E6%B0%97%E3%83%9A%E3%83%BC%E3%82%B8%E3%83%A9%E3%83%B3%E3%82%AD%E3%83%B3%E3%82%B0%E3%82%92%E5%8F%96%E5%BE%97%E3%81%97%E3%81%A6%E9%85%8D%E7%BD%AE%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95/img_4.png"
width="663"
height="359"
srcset="http://kenji.blog/p/google%E3%82%A2%E3%83%8A%E3%83%AA%E3%83%86%E3%82%A3%E3%82%AF%E3%82%B9%E3%81%8B%E3%82%89%E4%BA%BA%E6%B0%97%E3%83%9A%E3%83%BC%E3%82%B8%E3%83%A9%E3%83%B3%E3%82%AD%E3%83%B3%E3%82%B0%E3%82%92%E5%8F%96%E5%BE%97%E3%81%97%E3%81%A6%E9%85%8D%E7%BD%AE%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95/img_4_hu31425455692dc059183478d4c88b4e60_14253_480x0_resize_box_3.png 480w, http://kenji.blog/p/google%E3%82%A2%E3%83%8A%E3%83%AA%E3%83%86%E3%82%A3%E3%82%AF%E3%82%B9%E3%81%8B%E3%82%89%E4%BA%BA%E6%B0%97%E3%83%9A%E3%83%BC%E3%82%B8%E3%83%A9%E3%83%B3%E3%82%AD%E3%83%B3%E3%82%B0%E3%82%92%E5%8F%96%E5%BE%97%E3%81%97%E3%81%A6%E9%85%8D%E7%BD%AE%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95/img_4_hu31425455692dc059183478d4c88b4e60_14253_1024x0_resize_box_3.png 1024w"
loading="lazy"
alt="img_4.png"
class="gallery-image"
data-flex-grow="184"
data-flex-basis="443px"
>
Configurei como mostrado acima.
Esta configuração serve para remover &lt;code> | kenji.blog&lt;/code> do título da página.&lt;/p>
&lt;ol start="5">
&lt;li>Configure o template&lt;/li>
&lt;/ol>
&lt;ul>
&lt;li>HTML (os números do ranking foram ocultados)&lt;/li>
&lt;/ul>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt"> 1
&lt;/span>&lt;span class="lnt"> 2
&lt;/span>&lt;span class="lnt"> 3
&lt;/span>&lt;span class="lnt"> 4
&lt;/span>&lt;span class="lnt"> 5
&lt;/span>&lt;span class="lnt"> 6
&lt;/span>&lt;span class="lnt"> 7
&lt;/span>&lt;span class="lnt"> 8
&lt;/span>&lt;span class="lnt"> 9
&lt;/span>&lt;span class="lnt">10
&lt;/span>&lt;span class="lnt">11
&lt;/span>&lt;span class="lnt">12
&lt;/span>&lt;span class="lnt">13
&lt;/span>&lt;span class="lnt">14
&lt;/span>&lt;span class="lnt">15
&lt;/span>&lt;span class="lnt">16
&lt;/span>&lt;span class="lnt">17
&lt;/span>&lt;span class="lnt">18
&lt;/span>&lt;span class="lnt">19
&lt;/span>&lt;span class="lnt">20
&lt;/span>&lt;span class="lnt">21
&lt;/span>&lt;span class="lnt">22
&lt;/span>&lt;span class="lnt">23
&lt;/span>&lt;span class="lnt">24
&lt;/span>&lt;span class="lnt">25
&lt;/span>&lt;span class="lnt">26
&lt;/span>&lt;span class="lnt">27
&lt;/span>&lt;span class="lnt">28
&lt;/span>&lt;span class="lnt">29
&lt;/span>&lt;span class="lnt">30
&lt;/span>&lt;span class="lnt">31
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-html" data-lang="html">&lt;span class="line">&lt;span class="cl">&lt;span class="p">&amp;lt;&lt;/span>&lt;span class="nt">div&lt;/span> &lt;span class="na">class&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s">&amp;#34;ranklet ranklet-reset&amp;#34;&lt;/span>&lt;span class="p">&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">&amp;lt;&lt;/span>&lt;span class="nt">table&lt;/span> &lt;span class="na">class&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s">&amp;#34;ranklet-table&amp;#34;&lt;/span>&lt;span class="p">&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">&amp;lt;&lt;/span>&lt;span class="nt">tbody&lt;/span> &lt;span class="na">class&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s">&amp;#34;ranklet-pages&amp;#34;&lt;/span>&lt;span class="p">&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> {{#context.pages}}
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">&amp;lt;&lt;/span>&lt;span class="nt">tr&lt;/span> &lt;span class="na">class&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s">&amp;#34;ranklet-page&amp;#34;&lt;/span>&lt;span class="p">&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">&amp;lt;&lt;/span>&lt;span class="nt">td&lt;/span> &lt;span class="na">class&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s">&amp;#34;ranklet-image&amp;#34;&lt;/span>&lt;span class="p">&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> {{#image}}
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">&amp;lt;&lt;/span>&lt;span class="nt">a&lt;/span> &lt;span class="na">href&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s">&amp;#34;{{url}}&amp;#34;&lt;/span> &lt;span class="na">class&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s">&amp;#34;ranklet-link&amp;#34;&lt;/span>&lt;span class="p">&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">&amp;lt;&lt;/span>&lt;span class="nt">img&lt;/span> &lt;span class="na">class&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s">&amp;#34;ranklet-img&amp;#34;&lt;/span> &lt;span class="na">src&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s">&amp;#34;{{image}}&amp;#34;&lt;/span> &lt;span class="p">/&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">&amp;lt;/&lt;/span>&lt;span class="nt">a&lt;/span>&lt;span class="p">&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> {{/image}}
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">&amp;lt;/&lt;/span>&lt;span class="nt">td&lt;/span>&lt;span class="p">&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">&amp;lt;&lt;/span>&lt;span class="nt">td&lt;/span> &lt;span class="na">class&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s">&amp;#34;ranklet-meta&amp;#34;&lt;/span>&lt;span class="p">&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">&amp;lt;&lt;/span>&lt;span class="nt">div&lt;/span> &lt;span class="na">class&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s">&amp;#34;ranklet-title&amp;#34;&lt;/span>&lt;span class="p">&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">&amp;lt;&lt;/span>&lt;span class="nt">a&lt;/span> &lt;span class="na">href&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s">&amp;#34;{{url}}&amp;#34;&lt;/span> &lt;span class="na">class&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s">&amp;#34;ranklet-link&amp;#34;&lt;/span>&lt;span class="p">&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> {{title}}
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">&amp;lt;/&lt;/span>&lt;span class="nt">a&lt;/span>&lt;span class="p">&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">&amp;lt;/&lt;/span>&lt;span class="nt">div&lt;/span>&lt;span class="p">&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> {{#description}}
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">&amp;lt;&lt;/span>&lt;span class="nt">div&lt;/span> &lt;span class="na">class&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s">&amp;#34;ranklet-description&amp;#34;&lt;/span>&lt;span class="p">&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">&amp;lt;&lt;/span>&lt;span class="nt">a&lt;/span> &lt;span class="na">href&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s">&amp;#34;{{url}}&amp;#34;&lt;/span> &lt;span class="na">class&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s">&amp;#34;ranklet-link&amp;#34;&lt;/span>&lt;span class="p">&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> {{description}}
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">&amp;lt;/&lt;/span>&lt;span class="nt">a&lt;/span>&lt;span class="p">&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">&amp;lt;/&lt;/span>&lt;span class="nt">div&lt;/span>&lt;span class="p">&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> {{/description}}
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">&amp;lt;/&lt;/span>&lt;span class="nt">td&lt;/span>&lt;span class="p">&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">&amp;lt;/&lt;/span>&lt;span class="nt">tr&lt;/span>&lt;span class="p">&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> {{/context.pages}}
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">&amp;lt;/&lt;/span>&lt;span class="nt">tbody&lt;/span>&lt;span class="p">&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">&amp;lt;/&lt;/span>&lt;span class="nt">table&lt;/span>&lt;span class="p">&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">&amp;lt;/&lt;/span>&lt;span class="nt">div&lt;/span>&lt;span class="p">&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;ul>
&lt;li>CSS (o tamanho da fonte foi alterado e o texto da descrição foi configurado para ser exibido em até 3 linhas)&lt;/li>
&lt;/ul>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt"> 1
&lt;/span>&lt;span class="lnt"> 2
&lt;/span>&lt;span class="lnt"> 3
&lt;/span>&lt;span class="lnt"> 4
&lt;/span>&lt;span class="lnt"> 5
&lt;/span>&lt;span class="lnt"> 6
&lt;/span>&lt;span class="lnt"> 7
&lt;/span>&lt;span class="lnt"> 8
&lt;/span>&lt;span class="lnt"> 9
&lt;/span>&lt;span class="lnt">10
&lt;/span>&lt;span class="lnt">11
&lt;/span>&lt;span class="lnt">12
&lt;/span>&lt;span class="lnt">13
&lt;/span>&lt;span class="lnt">14
&lt;/span>&lt;span class="lnt">15
&lt;/span>&lt;span class="lnt">16
&lt;/span>&lt;span class="lnt">17
&lt;/span>&lt;span class="lnt">18
&lt;/span>&lt;span class="lnt">19
&lt;/span>&lt;span class="lnt">20
&lt;/span>&lt;span class="lnt">21
&lt;/span>&lt;span class="lnt">22
&lt;/span>&lt;span class="lnt">23
&lt;/span>&lt;span class="lnt">24
&lt;/span>&lt;span class="lnt">25
&lt;/span>&lt;span class="lnt">26
&lt;/span>&lt;span class="lnt">27
&lt;/span>&lt;span class="lnt">28
&lt;/span>&lt;span class="lnt">29
&lt;/span>&lt;span class="lnt">30
&lt;/span>&lt;span class="lnt">31
&lt;/span>&lt;span class="lnt">32
&lt;/span>&lt;span class="lnt">33
&lt;/span>&lt;span class="lnt">34
&lt;/span>&lt;span class="lnt">35
&lt;/span>&lt;span class="lnt">36
&lt;/span>&lt;span class="lnt">37
&lt;/span>&lt;span class="lnt">38
&lt;/span>&lt;span class="lnt">39
&lt;/span>&lt;span class="lnt">40
&lt;/span>&lt;span class="lnt">41
&lt;/span>&lt;span class="lnt">42
&lt;/span>&lt;span class="lnt">43
&lt;/span>&lt;span class="lnt">44
&lt;/span>&lt;span class="lnt">45
&lt;/span>&lt;span class="lnt">46
&lt;/span>&lt;span class="lnt">47
&lt;/span>&lt;span class="lnt">48
&lt;/span>&lt;span class="lnt">49
&lt;/span>&lt;span class="lnt">50
&lt;/span>&lt;span class="lnt">51
&lt;/span>&lt;span class="lnt">52
&lt;/span>&lt;span class="lnt">53
&lt;/span>&lt;span class="lnt">54
&lt;/span>&lt;span class="lnt">55
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-css" data-lang="css">&lt;span class="line">&lt;span class="cl">&lt;span class="p">#&lt;/span>&lt;span class="nn">ranklet-&lt;/span>&lt;span class="p">{&lt;/span>&lt;span class="err">{context.id&lt;/span>&lt;span class="p">}&lt;/span>&lt;span class="err">}&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="err">.ranklet-reset&lt;/span> &lt;span class="err">{&lt;/span> &lt;span class="err">//&lt;/span> &lt;span class="err">リセット&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="err">table,&lt;/span> &lt;span class="err">tr,&lt;/span> &lt;span class="err">td,&lt;/span> &lt;span class="err">div,&lt;/span> &lt;span class="err">span&lt;/span> &lt;span class="err">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">margin&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="mi">0&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">padding&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="mi">0&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">border&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="mi">0&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">font-size&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="mi">100&lt;/span>&lt;span class="kt">%&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">font&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="kc">inherit&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">vertical-align&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="kc">baseline&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">line-height&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="mi">1&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">box-sizing&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="kc">border-box&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="err">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">.&lt;/span>&lt;span class="nc">ranklet-table&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">border-collapse&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="kc">separate&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">border-spacing&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="mi">8&lt;/span>&lt;span class="kt">px&lt;/span> &lt;span class="mi">24&lt;/span>&lt;span class="kt">px&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">width&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="mi">100&lt;/span>&lt;span class="kt">%&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">word-break&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="n">break-all&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="err">td&lt;/span> &lt;span class="err">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">vertical-align&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="kc">middle&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">.&lt;/span>&lt;span class="nc">ranklet-rank&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">text-align&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="kc">center&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">font-size&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="mi">120&lt;/span>&lt;span class="kt">%&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">.&lt;/span>&lt;span class="nc">ranklet-image&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">text-align&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="kc">center&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="err">img&lt;/span> &lt;span class="err">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">max-width&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="mi">128&lt;/span>&lt;span class="kt">px&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">max-height&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="mi">128&lt;/span>&lt;span class="kt">px&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="err">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">.&lt;/span>&lt;span class="nc">ranklet-meta&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="err">.ranklet-title&lt;/span> &lt;span class="err">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">font-size&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="mi">20&lt;/span>&lt;span class="kt">px&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">line-height&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="mi">125&lt;/span>&lt;span class="kt">%&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">.&lt;/span>&lt;span class="nc">ranklet-description&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">font-size&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="mi">16&lt;/span>&lt;span class="kt">px&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">margin-top&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="mi">8&lt;/span>&lt;span class="kt">px&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">line-height&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="mi">125&lt;/span>&lt;span class="kt">%&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">display&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="kp">-webkit-&lt;/span>&lt;span class="n">box&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">overflow&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="kc">hidden&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="kp">-webkit-&lt;/span>&lt;span class="n">box-orient&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="kc">vertical&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="kp">-webkit-&lt;/span>&lt;span class="n">line-clamp&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="mi">3&lt;/span>&lt;span class="p">;&lt;/span> &lt;span class="c">/* 行数 */&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="err">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="err">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="err">}&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;ul>
&lt;li>JavaScript sem alterações&lt;/li>
&lt;/ul>
&lt;ol start="6">
&lt;li>Copie o HTML da seção de publicação no site&lt;/li>
&lt;/ol>
&lt;p>&lt;img src="http://kenji.blog/p/google%E3%82%A2%E3%83%8A%E3%83%AA%E3%83%86%E3%82%A3%E3%82%AF%E3%82%B9%E3%81%8B%E3%82%89%E4%BA%BA%E6%B0%97%E3%83%9A%E3%83%BC%E3%82%B8%E3%83%A9%E3%83%B3%E3%82%AD%E3%83%B3%E3%82%B0%E3%82%92%E5%8F%96%E5%BE%97%E3%81%97%E3%81%A6%E9%85%8D%E7%BD%AE%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95/img_5.png"
width="1136"
height="210"
srcset="http://kenji.blog/p/google%E3%82%A2%E3%83%8A%E3%83%AA%E3%83%86%E3%82%A3%E3%82%AF%E3%82%B9%E3%81%8B%E3%82%89%E4%BA%BA%E6%B0%97%E3%83%9A%E3%83%BC%E3%82%B8%E3%83%A9%E3%83%B3%E3%82%AD%E3%83%B3%E3%82%B0%E3%82%92%E5%8F%96%E5%BE%97%E3%81%97%E3%81%A6%E9%85%8D%E7%BD%AE%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95/img_5_hu69f0184a74d22d1d54f42ee4dc3de643_22304_480x0_resize_box_3.png 480w, http://kenji.blog/p/google%E3%82%A2%E3%83%8A%E3%83%AA%E3%83%86%E3%82%A3%E3%82%AF%E3%82%B9%E3%81%8B%E3%82%89%E4%BA%BA%E6%B0%97%E3%83%9A%E3%83%BC%E3%82%B8%E3%83%A9%E3%83%B3%E3%82%AD%E3%83%B3%E3%82%B0%E3%82%92%E5%8F%96%E5%BE%97%E3%81%97%E3%81%A6%E9%85%8D%E7%BD%AE%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95/img_5_hu69f0184a74d22d1d54f42ee4dc3de643_22304_1024x0_resize_box_3.png 1024w"
loading="lazy"
alt="img_5.png"
class="gallery-image"
data-flex-grow="540"
data-flex-basis="1298px"
>&lt;/p>
&lt;p>Copie o HTML exibido&lt;/p>
&lt;ol start="7">
&lt;li>Cole no template do HUGO&lt;/li>
&lt;/ol>
&lt;ul>
&lt;li>Crie &lt;code>layouts/partials/ranklet.html&lt;/code> e cole o HTML copiado&lt;/li>
&lt;/ul>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-html" data-lang="html">&lt;span class="line">&lt;span class="cl">&lt;span class="p">&amp;lt;&lt;/span>&lt;span class="nt">div&lt;/span> &lt;span class="na">id&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s">&amp;#34;ranklet-11958&amp;#34;&lt;/span>&lt;span class="p">&amp;gt;&amp;lt;/&lt;/span>&lt;span class="nt">div&lt;/span>&lt;span class="p">&amp;gt;&amp;lt;&lt;/span>&lt;span class="nt">script&lt;/span> &lt;span class="na">src&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s">&amp;#34;//widget.ranklet.com/v1/ranklet/s3/widgets/11958/widget.js&amp;#34;&lt;/span>&lt;span class="p">&amp;gt;&amp;lt;/&lt;/span>&lt;span class="nt">script&lt;/span>&lt;span class="p">&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;ul>
&lt;li>Cole o código abaixo na linha antes de &lt;code>&amp;lt;/footer&amp;gt;&lt;/code> em &lt;code>layouts/_default/single.html&lt;/code>&lt;/li>
&lt;/ul>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-html" data-lang="html">&lt;span class="line">&lt;span class="cl">{{- partial &amp;#34;ranklet.html&amp;#34; . }}
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>É isso. Agora o ranking será exibido na parte inferior da página, como mostrado abaixo.&lt;/p></description></item><item><title>[Por Linguagem] Resumo de Ambientes de Execução de Código Online</title><link>http://kenji.blog/pt/p/%E3%82%AA%E3%83%B3%E3%83%A9%E3%82%A4%E3%83%B3%E3%81%AE%E3%82%B3%E3%83%BC%E3%83%89%E5%AE%9F%E8%A1%8C%E7%92%B0%E5%A2%83%E3%81%BE%E3%81%A8%E3%82%81/</link><pubDate>Sun, 09 Apr 2023 14:01:00 +0900</pubDate><guid>http://kenji.blog/pt/p/%E3%82%AA%E3%83%B3%E3%83%A9%E3%82%A4%E3%83%B3%E3%81%AE%E3%82%B3%E3%83%BC%E3%83%89%E5%AE%9F%E8%A1%8C%E7%92%B0%E5%A2%83%E3%81%BE%E3%81%A8%E3%82%81/</guid><description>&lt;img src="http://kenji.blog/p/%E3%82%AA%E3%83%B3%E3%83%A9%E3%82%A4%E3%83%B3%E3%81%AE%E3%82%B3%E3%83%BC%E3%83%89%E5%AE%9F%E8%A1%8C%E7%92%B0%E5%A2%83%E3%81%BE%E3%81%A8%E3%82%81/img.png" alt="Featured image of post [Por Linguagem] Resumo de Ambientes de Execução de Código Online" />&lt;h2 id="python">Python
&lt;/h2>&lt;ul>
&lt;li>&lt;a class="link" href="https://colab.research.google.com/#create=true" target="_blank" rel="noopener"
>Google Colaboratory&lt;/a>&lt;/li>
&lt;/ul>
&lt;p>Google Colaboratory é um ambiente de execução de código Python online.&lt;/p>
&lt;ul>
&lt;li>O uso de GPU também é possível.&lt;/li>
&lt;li>Usando os notebooks do Colab, você pode escrever código executável e rich text (incluindo imagens, HTML, LaTeX, etc.) em um único documento.&lt;/li>
&lt;/ul>
&lt;p>É baseado no Jupyter Notebook.&lt;/p>
&lt;h2 id="rust">Rust
&lt;/h2>&lt;ul>
&lt;li>&lt;a class="link" href="https://play.rust-lang.org/?version=stable&amp;amp;mode=debug&amp;amp;edition=2021" target="_blank" rel="noopener"
>Rust Playground&lt;/a>&lt;/li>
&lt;/ul>
&lt;h2 id="javascript">JavaScript
&lt;/h2>&lt;ul>
&lt;li>&lt;a class="link" href="https://playcode.io/" target="_blank" rel="noopener"
>Javascript Playground&lt;/a>&lt;/li>
&lt;/ul>
&lt;h2 id="java">Java
&lt;/h2>&lt;ul>
&lt;li>&lt;a class="link" href="https://paiza.io/ja/projects/new?language=java" target="_blank" rel="noopener"
>paiza.IO Online Java compiler&lt;/a>&lt;/li>
&lt;/ul>
&lt;h2 id="haskell">Haskell
&lt;/h2>&lt;ul>
&lt;li>&lt;a class="link" href="https://play.haskell.org/" target="_blank" rel="noopener"
>Haskell Playground&lt;/a>&lt;/li>
&lt;/ul>
&lt;h2 id="swift">Swift
&lt;/h2>&lt;ul>
&lt;li>&lt;a class="link" href="https://online.swiftplayground.run/" target="_blank" rel="noopener"
>Online Swift Playground&lt;/a>&lt;/li>
&lt;/ul>
&lt;h2 id="c">C++
&lt;/h2>&lt;ul>
&lt;li>&lt;a class="link" href="https://www.onlinegdb.com/online_c&amp;#43;&amp;#43;_compiler" target="_blank" rel="noopener"
>C++ 14&lt;/a>&lt;/li>
&lt;/ul>
&lt;h2 id="outros">Outros
&lt;/h2>&lt;ul>
&lt;li>&lt;a class="link" href="https://aws.amazon.com/jp/cloud9/" target="_blank" rel="noopener"
>AWS Cloud9&lt;/a>&lt;/li>
&lt;/ul>
&lt;p>Um ambiente de desenvolvimento integrado (IDE) online fornecido pela Amazon AWS. Ferramentas para mais de 40 linguagens de programação como Node.js, JavaScript, Python, PHP, Ruby, Go, C++, etc. já vêm empacotadas.&lt;/p>
&lt;ul>
&lt;li>&lt;a class="link" href="https://vscode.dev/" target="_blank" rel="noopener"
>Visual Studio Code for the Web&lt;/a>&lt;/li>
&lt;/ul>
&lt;p>Um ambiente de desenvolvimento online fornecido pela Microsoft. No entanto, linguagens que requerem compilação não podem ser executadas ou depuradas.&lt;/p>
&lt;ul>
&lt;li>&lt;a class="link" href="https://paiza.io/projects/CGAcQLfW-IOXYy8Dq2OHBw?locale=ja-jp" target="_blank" rel="noopener"
>paiza.IO&lt;/a>&lt;/li>
&lt;/ul>
&lt;p>Um ambiente de execução online que suporta 24 linguagens principais como C, C++, Java, Ruby, Python, PHP, Perl, etc.&lt;/p>
&lt;ul>
&lt;li>&lt;a class="link" href="https://codepen.io/" target="_blank" rel="noopener"
>CodePen&lt;/a>&lt;/li>
&lt;/ul>
&lt;p>Um ambiente de execução online para HTML, CSS e JavaScript.&lt;/p>
&lt;ul>
&lt;li>&lt;a class="link" href="https://codeanywhere.com/" target="_blank" rel="noopener"
>codeanywhere&lt;/a>&lt;/li>
&lt;/ul>
&lt;p>Um IDE online. Permite compartilhamento de código e chat.&lt;/p></description></item><item><title>Como listar números primos menores que 1000 usando o Crivo de Eratóstenes</title><link>http://kenji.blog/pt/p/como-listar-n%C3%BAmeros-primos-menores-que-1000-usando-o-crivo-de-erat%C3%B3stenes/</link><pubDate>Sun, 09 Apr 2023 12:54:24 +0900</pubDate><guid>http://kenji.blog/pt/p/como-listar-n%C3%BAmeros-primos-menores-que-1000-usando-o-crivo-de-erat%C3%B3stenes/</guid><description>&lt;img src="http://kenji.blog/p/%E3%82%A8%E3%83%A9%E3%83%88%E3%82%B9%E3%83%86%E3%83%8D%E3%82%B9%E3%81%AE%E7%AF%A9%E3%82%92%E4%BD%BF%E3%81%A3%E3%81%A61000%E4%BB%A5%E4%B8%8B%E3%81%AE%E7%B4%A0%E6%95%B0%E3%82%92%E5%88%97%E6%8C%99%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95/img.png" alt="Featured image of post Como listar números primos menores que 1000 usando o Crivo de Eratóstenes" />&lt;h2 id="o-que-é-o-crivo-de-eratóstenes">O que é o Crivo de Eratóstenes?
&lt;/h2>&lt;p>O Crivo de Eratóstenes é um algoritmo para encontrar todos os números primos até um determinado limite.
O algoritmo é simples e pode ser implementado através das seguintes etapas:&lt;/p>
&lt;ol>
&lt;li>Crie um array booleano com N elementos e inicialize todos os elementos como verdadeiros (true).&lt;/li>
&lt;li>Defina os elementos nas posições 0 e 1 do array como falsos (pois 0 e 1 não são números primos).&lt;/li>
&lt;li>Se o 2º elemento do array for verdadeiro, imprima 2 como número primo.&lt;/li>
&lt;li>Defina todos os múltiplos de 2 a partir de $2^2$ como falsos (*).&lt;/li>
&lt;li>Se o 3º elemento do array for verdadeiro, imprima 3 como número primo.&lt;/li>
&lt;li>Defina todos os múltiplos de 3 a partir de $3^2$ como falsos.&lt;/li>
&lt;li>Repita o mesmo processo para o 4º, 5º, &amp;hellip;, e N-ésimo elementos.&lt;/li>
&lt;/ol>
&lt;ul>
&lt;li>O motivo de começar a definir como falsos os múltiplos a partir do quadrado (ex: $2^2$) é que os números menores que o quadrado já foram processados (já foram marcados ou listados).&lt;/li>
&lt;/ul>
&lt;p>&lt;img src="http://kenji.blog/p/%E3%82%A8%E3%83%A9%E3%83%88%E3%82%B9%E3%83%86%E3%83%8D%E3%82%B9%E3%81%AE%E7%AF%A9%E3%82%92%E4%BD%BF%E3%81%A3%E3%81%A61000%E4%BB%A5%E4%B8%8B%E3%81%AE%E7%B4%A0%E6%95%B0%E3%82%92%E5%88%97%E6%8C%99%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95/Animation_Sieb_des_Eratosthenes.gif"
width="445"
height="369"
srcset="http://kenji.blog/p/%E3%82%A8%E3%83%A9%E3%83%88%E3%82%B9%E3%83%86%E3%83%8D%E3%82%B9%E3%81%AE%E7%AF%A9%E3%82%92%E4%BD%BF%E3%81%A3%E3%81%A61000%E4%BB%A5%E4%B8%8B%E3%81%AE%E7%B4%A0%E6%95%B0%E3%82%92%E5%88%97%E6%8C%99%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95/Animation_Sieb_des_Eratosthenes_hua63c6218ac9f9cdba93ccb20db392e0e_206214_480x0_resize_box_1.gif 480w, http://kenji.blog/p/%E3%82%A8%E3%83%A9%E3%83%88%E3%82%B9%E3%83%86%E3%83%8D%E3%82%B9%E3%81%AE%E7%AF%A9%E3%82%92%E4%BD%BF%E3%81%A3%E3%81%A61000%E4%BB%A5%E4%B8%8B%E3%81%AE%E7%B4%A0%E6%95%B0%E3%82%92%E5%88%97%E6%8C%99%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95/Animation_Sieb_des_Eratosthenes_hua63c6218ac9f9cdba93ccb20db392e0e_206214_1024x0_resize_box_1.gif 1024w"
loading="lazy"
class="gallery-image"
data-flex-grow="120"
data-flex-basis="289px"
>&lt;/p>
&lt;h2 id="implementação-em-rust">Implementação em Rust
&lt;/h2>&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt"> 1
&lt;/span>&lt;span class="lnt"> 2
&lt;/span>&lt;span class="lnt"> 3
&lt;/span>&lt;span class="lnt"> 4
&lt;/span>&lt;span class="lnt"> 5
&lt;/span>&lt;span class="lnt"> 6
&lt;/span>&lt;span class="lnt"> 7
&lt;/span>&lt;span class="lnt"> 8
&lt;/span>&lt;span class="lnt"> 9
&lt;/span>&lt;span class="lnt">10
&lt;/span>&lt;span class="lnt">11
&lt;/span>&lt;span class="lnt">12
&lt;/span>&lt;span class="lnt">13
&lt;/span>&lt;span class="lnt">14
&lt;/span>&lt;span class="lnt">15
&lt;/span>&lt;span class="lnt">16
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">fn main() {
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> let n = 1000;
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> let mut is_prime = vec![true; n+1];
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> is_prime[0] = false;
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> is_prime[1] = false;
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> for i in 2..=n {
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> if is_prime[i] {
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> println!(&amp;#34;{}&amp;#34;, i);
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> let mut j = i * i;
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> while j &amp;lt;= n {
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> is_prime[j] = false;
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> j += i;
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> }
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> }
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> }
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">}
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h2 id="versão-levemente-otimizada">Versão levemente otimizada
&lt;/h2>&lt;p>Podemos otimizar um pouco a implementação considerando os seguintes pontos:&lt;/p>
&lt;ul>
&lt;li>Inicializar o array com falso (false) em vez de verdadeiro (true) (isso é mais rápido).&lt;/li>
&lt;li>Uma vez que múltiplos de 2 não são números primos, pule o processo de definir múltiplos de 2 como falso.&lt;/li>
&lt;li>Não é necessário iterar até n; listar os números primos até a raiz quadrada de n é suficiente para encontrar todos os primos menores ou iguais a n.&lt;/li>
&lt;/ul>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt"> 1
&lt;/span>&lt;span class="lnt"> 2
&lt;/span>&lt;span class="lnt"> 3
&lt;/span>&lt;span class="lnt"> 4
&lt;/span>&lt;span class="lnt"> 5
&lt;/span>&lt;span class="lnt"> 6
&lt;/span>&lt;span class="lnt"> 7
&lt;/span>&lt;span class="lnt"> 8
&lt;/span>&lt;span class="lnt"> 9
&lt;/span>&lt;span class="lnt">10
&lt;/span>&lt;span class="lnt">11
&lt;/span>&lt;span class="lnt">12
&lt;/span>&lt;span class="lnt">13
&lt;/span>&lt;span class="lnt">14
&lt;/span>&lt;span class="lnt">15
&lt;/span>&lt;span class="lnt">16
&lt;/span>&lt;span class="lnt">17
&lt;/span>&lt;span class="lnt">18
&lt;/span>&lt;span class="lnt">19
&lt;/span>&lt;span class="lnt">20
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">fn main() {
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> let n = 1000;
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> let mut is_prime = vec![false; n+1];
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> is_prime[2] = true;
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> for i in (3..=n).step_by(2) {
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> is_prime[i] = true;
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> }
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> for i in 3..=((n as f64).sqrt() as usize) {
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> if is_prime[i] {
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> let mut j = i * i;
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> while j &amp;lt;= n {
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> is_prime[j] = false;
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> j += i * 2;
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> }
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> }
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> }
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> for i in (2..=n).filter(|&amp;amp;x| is_prime[x]) {
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> println!(&amp;#34;{}&amp;#34;, i);
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> }
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">}
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h2 id="referência">Referência
&lt;/h2>&lt;ul>
&lt;li>&lt;a class="link" href="https://ja.wikipedia.org/wiki/%E3%82%A8%E3%83%A9%E3%83%88%E3%82%B9%E3%83%86%E3%83%8D%E3%82%B9%E3%81%AE%E7%AF%A9" target="_blank" rel="noopener"
>Crivo de Eratóstenes (Wikipedia)&lt;/a>&lt;/li>
&lt;/ul></description></item><item><title>Como instalar o CocoaPods no mac</title><link>http://kenji.blog/pt/p/mac%E3%81%ABcocoapods%E3%82%92%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95/</link><pubDate>Sun, 09 Apr 2023 03:25:54 +0900</pubDate><guid>http://kenji.blog/pt/p/mac%E3%81%ABcocoapods%E3%82%92%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95/</guid><description>&lt;img src="http://kenji.blog/p/mac%E3%81%ABcocoapods%E3%82%92%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95/img_1.png" alt="Featured image of post Como instalar o CocoaPods no mac" />&lt;h1 id="instalação-pelo-terminal">Instalação pelo Terminal
&lt;/h1>&lt;ol>
&lt;li>Abra o Terminal&lt;/li>
&lt;li>Execute &lt;code>sudo gem install cocoapods&lt;/code>
→ Por alguma razão, a seguinte mensagem de erro apareceu e a instalação falhou.&lt;/li>
&lt;/ol>
&lt;details>
&lt;summary>Saída&lt;/summary>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">ERROR: Error installing cocoapods:
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> The last version of activesupport (&amp;gt;= 5.0, &amp;lt; 8) to support your Ruby &amp;amp; RubyGems was 6.1.7.3. Try installing it with `gem install activesupport -v 6.1.7.3` and then running the current command again
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> activesupport requires Ruby version &amp;gt;= 2.7.0. The current ruby version is 2.6.10.210.
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;/details>
&lt;ol start="3">
&lt;li>Então, pesquisei a mensagem de erro na web (veja &amp;ldquo;Referências&amp;rdquo; abaixo) e executei o seguinte comando:&lt;/li>
&lt;/ol>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">/bin/bash -c &amp;#34;$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)&amp;#34;
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;details>
&lt;summary>Saída&lt;/summary>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt"> 1
&lt;/span>&lt;span class="lnt"> 2
&lt;/span>&lt;span class="lnt"> 3
&lt;/span>&lt;span class="lnt"> 4
&lt;/span>&lt;span class="lnt"> 5
&lt;/span>&lt;span class="lnt"> 6
&lt;/span>&lt;span class="lnt"> 7
&lt;/span>&lt;span class="lnt"> 8
&lt;/span>&lt;span class="lnt"> 9
&lt;/span>&lt;span class="lnt"> 10
&lt;/span>&lt;span class="lnt"> 11
&lt;/span>&lt;span class="lnt"> 12
&lt;/span>&lt;span class="lnt"> 13
&lt;/span>&lt;span class="lnt"> 14
&lt;/span>&lt;span class="lnt"> 15
&lt;/span>&lt;span class="lnt"> 16
&lt;/span>&lt;span class="lnt"> 17
&lt;/span>&lt;span class="lnt"> 18
&lt;/span>&lt;span class="lnt"> 19
&lt;/span>&lt;span class="lnt"> 20
&lt;/span>&lt;span class="lnt"> 21
&lt;/span>&lt;span class="lnt"> 22
&lt;/span>&lt;span class="lnt"> 23
&lt;/span>&lt;span class="lnt"> 24
&lt;/span>&lt;span class="lnt"> 25
&lt;/span>&lt;span class="lnt"> 26
&lt;/span>&lt;span class="lnt"> 27
&lt;/span>&lt;span class="lnt"> 28
&lt;/span>&lt;span class="lnt"> 29
&lt;/span>&lt;span class="lnt"> 30
&lt;/span>&lt;span class="lnt"> 31
&lt;/span>&lt;span class="lnt"> 32
&lt;/span>&lt;span class="lnt"> 33
&lt;/span>&lt;span class="lnt"> 34
&lt;/span>&lt;span class="lnt"> 35
&lt;/span>&lt;span class="lnt"> 36
&lt;/span>&lt;span class="lnt"> 37
&lt;/span>&lt;span class="lnt"> 38
&lt;/span>&lt;span class="lnt"> 39
&lt;/span>&lt;span class="lnt"> 40
&lt;/span>&lt;span class="lnt"> 41
&lt;/span>&lt;span class="lnt"> 42
&lt;/span>&lt;span class="lnt"> 43
&lt;/span>&lt;span class="lnt"> 44
&lt;/span>&lt;span class="lnt"> 45
&lt;/span>&lt;span class="lnt"> 46
&lt;/span>&lt;span class="lnt"> 47
&lt;/span>&lt;span class="lnt"> 48
&lt;/span>&lt;span class="lnt"> 49
&lt;/span>&lt;span class="lnt"> 50
&lt;/span>&lt;span class="lnt"> 51
&lt;/span>&lt;span class="lnt"> 52
&lt;/span>&lt;span class="lnt"> 53
&lt;/span>&lt;span class="lnt"> 54
&lt;/span>&lt;span class="lnt"> 55
&lt;/span>&lt;span class="lnt"> 56
&lt;/span>&lt;span class="lnt"> 57
&lt;/span>&lt;span class="lnt"> 58
&lt;/span>&lt;span class="lnt"> 59
&lt;/span>&lt;span class="lnt"> 60
&lt;/span>&lt;span class="lnt"> 61
&lt;/span>&lt;span class="lnt"> 62
&lt;/span>&lt;span class="lnt"> 63
&lt;/span>&lt;span class="lnt"> 64
&lt;/span>&lt;span class="lnt"> 65
&lt;/span>&lt;span class="lnt"> 66
&lt;/span>&lt;span class="lnt"> 67
&lt;/span>&lt;span class="lnt"> 68
&lt;/span>&lt;span class="lnt"> 69
&lt;/span>&lt;span class="lnt"> 70
&lt;/span>&lt;span class="lnt"> 71
&lt;/span>&lt;span class="lnt"> 72
&lt;/span>&lt;span class="lnt"> 73
&lt;/span>&lt;span class="lnt"> 74
&lt;/span>&lt;span class="lnt"> 75
&lt;/span>&lt;span class="lnt"> 76
&lt;/span>&lt;span class="lnt"> 77
&lt;/span>&lt;span class="lnt"> 78
&lt;/span>&lt;span class="lnt"> 79
&lt;/span>&lt;span class="lnt"> 80
&lt;/span>&lt;span class="lnt"> 81
&lt;/span>&lt;span class="lnt"> 82
&lt;/span>&lt;span class="lnt"> 83
&lt;/span>&lt;span class="lnt"> 84
&lt;/span>&lt;span class="lnt"> 85
&lt;/span>&lt;span class="lnt"> 86
&lt;/span>&lt;span class="lnt"> 87
&lt;/span>&lt;span class="lnt"> 88
&lt;/span>&lt;span class="lnt"> 89
&lt;/span>&lt;span class="lnt"> 90
&lt;/span>&lt;span class="lnt"> 91
&lt;/span>&lt;span class="lnt"> 92
&lt;/span>&lt;span class="lnt"> 93
&lt;/span>&lt;span class="lnt"> 94
&lt;/span>&lt;span class="lnt"> 95
&lt;/span>&lt;span class="lnt"> 96
&lt;/span>&lt;span class="lnt"> 97
&lt;/span>&lt;span class="lnt"> 98
&lt;/span>&lt;span class="lnt"> 99
&lt;/span>&lt;span class="lnt">100
&lt;/span>&lt;span class="lnt">101
&lt;/span>&lt;span class="lnt">102
&lt;/span>&lt;span class="lnt">103
&lt;/span>&lt;span class="lnt">104
&lt;/span>&lt;span class="lnt">105
&lt;/span>&lt;span class="lnt">106
&lt;/span>&lt;span class="lnt">107
&lt;/span>&lt;span class="lnt">108
&lt;/span>&lt;span class="lnt">109
&lt;/span>&lt;span class="lnt">110
&lt;/span>&lt;span class="lnt">111
&lt;/span>&lt;span class="lnt">112
&lt;/span>&lt;span class="lnt">113
&lt;/span>&lt;span class="lnt">114
&lt;/span>&lt;span class="lnt">115
&lt;/span>&lt;span class="lnt">116
&lt;/span>&lt;span class="lnt">117
&lt;/span>&lt;span class="lnt">118
&lt;/span>&lt;span class="lnt">119
&lt;/span>&lt;span class="lnt">120
&lt;/span>&lt;span class="lnt">121
&lt;/span>&lt;span class="lnt">122
&lt;/span>&lt;span class="lnt">123
&lt;/span>&lt;span class="lnt">124
&lt;/span>&lt;span class="lnt">125
&lt;/span>&lt;span class="lnt">126
&lt;/span>&lt;span class="lnt">127
&lt;/span>&lt;span class="lnt">128
&lt;/span>&lt;span class="lnt">129
&lt;/span>&lt;span class="lnt">130
&lt;/span>&lt;span class="lnt">131
&lt;/span>&lt;span class="lnt">132
&lt;/span>&lt;span class="lnt">133
&lt;/span>&lt;span class="lnt">134
&lt;/span>&lt;span class="lnt">135
&lt;/span>&lt;span class="lnt">136
&lt;/span>&lt;span class="lnt">137
&lt;/span>&lt;span class="lnt">138
&lt;/span>&lt;span class="lnt">139
&lt;/span>&lt;span class="lnt">140
&lt;/span>&lt;span class="lnt">141
&lt;/span>&lt;span class="lnt">142
&lt;/span>&lt;span class="lnt">143
&lt;/span>&lt;span class="lnt">144
&lt;/span>&lt;span class="lnt">145
&lt;/span>&lt;span class="lnt">146
&lt;/span>&lt;span class="lnt">147
&lt;/span>&lt;span class="lnt">148
&lt;/span>&lt;span class="lnt">149
&lt;/span>&lt;span class="lnt">150
&lt;/span>&lt;span class="lnt">151
&lt;/span>&lt;span class="lnt">152
&lt;/span>&lt;span class="lnt">153
&lt;/span>&lt;span class="lnt">154
&lt;/span>&lt;span class="lnt">155
&lt;/span>&lt;span class="lnt">156
&lt;/span>&lt;span class="lnt">157
&lt;/span>&lt;span class="lnt">158
&lt;/span>&lt;span class="lnt">159
&lt;/span>&lt;span class="lnt">160
&lt;/span>&lt;span class="lnt">161
&lt;/span>&lt;span class="lnt">162
&lt;/span>&lt;span class="lnt">163
&lt;/span>&lt;span class="lnt">164
&lt;/span>&lt;span class="lnt">165
&lt;/span>&lt;span class="lnt">166
&lt;/span>&lt;span class="lnt">167
&lt;/span>&lt;span class="lnt">168
&lt;/span>&lt;span class="lnt">169
&lt;/span>&lt;span class="lnt">170
&lt;/span>&lt;span class="lnt">171
&lt;/span>&lt;span class="lnt">172
&lt;/span>&lt;span class="lnt">173
&lt;/span>&lt;span class="lnt">174
&lt;/span>&lt;span class="lnt">175
&lt;/span>&lt;span class="lnt">176
&lt;/span>&lt;span class="lnt">177
&lt;/span>&lt;span class="lnt">178
&lt;/span>&lt;span class="lnt">179
&lt;/span>&lt;span class="lnt">180
&lt;/span>&lt;span class="lnt">181
&lt;/span>&lt;span class="lnt">182
&lt;/span>&lt;span class="lnt">183
&lt;/span>&lt;span class="lnt">184
&lt;/span>&lt;span class="lnt">185
&lt;/span>&lt;span class="lnt">186
&lt;/span>&lt;span class="lnt">187
&lt;/span>&lt;span class="lnt">188
&lt;/span>&lt;span class="lnt">189
&lt;/span>&lt;span class="lnt">190
&lt;/span>&lt;span class="lnt">191
&lt;/span>&lt;span class="lnt">192
&lt;/span>&lt;span class="lnt">193
&lt;/span>&lt;span class="lnt">194
&lt;/span>&lt;span class="lnt">195
&lt;/span>&lt;span class="lnt">196
&lt;/span>&lt;span class="lnt">197
&lt;/span>&lt;span class="lnt">198
&lt;/span>&lt;span class="lnt">199
&lt;/span>&lt;span class="lnt">200
&lt;/span>&lt;span class="lnt">201
&lt;/span>&lt;span class="lnt">202
&lt;/span>&lt;span class="lnt">203
&lt;/span>&lt;span class="lnt">204
&lt;/span>&lt;span class="lnt">205
&lt;/span>&lt;span class="lnt">206
&lt;/span>&lt;span class="lnt">207
&lt;/span>&lt;span class="lnt">208
&lt;/span>&lt;span class="lnt">209
&lt;/span>&lt;span class="lnt">210
&lt;/span>&lt;span class="lnt">211
&lt;/span>&lt;span class="lnt">212
&lt;/span>&lt;span class="lnt">213
&lt;/span>&lt;span class="lnt">214
&lt;/span>&lt;span class="lnt">215
&lt;/span>&lt;span class="lnt">216
&lt;/span>&lt;span class="lnt">217
&lt;/span>&lt;span class="lnt">218
&lt;/span>&lt;span class="lnt">219
&lt;/span>&lt;span class="lnt">220
&lt;/span>&lt;span class="lnt">221
&lt;/span>&lt;span class="lnt">222
&lt;/span>&lt;span class="lnt">223
&lt;/span>&lt;span class="lnt">224
&lt;/span>&lt;span class="lnt">225
&lt;/span>&lt;span class="lnt">226
&lt;/span>&lt;span class="lnt">227
&lt;/span>&lt;span class="lnt">228
&lt;/span>&lt;span class="lnt">229
&lt;/span>&lt;span class="lnt">230
&lt;/span>&lt;span class="lnt">231
&lt;/span>&lt;span class="lnt">232
&lt;/span>&lt;span class="lnt">233
&lt;/span>&lt;span class="lnt">234
&lt;/span>&lt;span class="lnt">235
&lt;/span>&lt;span class="lnt">236
&lt;/span>&lt;span class="lnt">237
&lt;/span>&lt;span class="lnt">238
&lt;/span>&lt;span class="lnt">239
&lt;/span>&lt;span class="lnt">240
&lt;/span>&lt;span class="lnt">241
&lt;/span>&lt;span class="lnt">242
&lt;/span>&lt;span class="lnt">243
&lt;/span>&lt;span class="lnt">244
&lt;/span>&lt;span class="lnt">245
&lt;/span>&lt;span class="lnt">246
&lt;/span>&lt;span class="lnt">247
&lt;/span>&lt;span class="lnt">248
&lt;/span>&lt;span class="lnt">249
&lt;/span>&lt;span class="lnt">250
&lt;/span>&lt;span class="lnt">251
&lt;/span>&lt;span class="lnt">252
&lt;/span>&lt;span class="lnt">253
&lt;/span>&lt;span class="lnt">254
&lt;/span>&lt;span class="lnt">255
&lt;/span>&lt;span class="lnt">256
&lt;/span>&lt;span class="lnt">257
&lt;/span>&lt;span class="lnt">258
&lt;/span>&lt;span class="lnt">259
&lt;/span>&lt;span class="lnt">260
&lt;/span>&lt;span class="lnt">261
&lt;/span>&lt;span class="lnt">262
&lt;/span>&lt;span class="lnt">263
&lt;/span>&lt;span class="lnt">264
&lt;/span>&lt;span class="lnt">265
&lt;/span>&lt;span class="lnt">266
&lt;/span>&lt;span class="lnt">267
&lt;/span>&lt;span class="lnt">268
&lt;/span>&lt;span class="lnt">269
&lt;/span>&lt;span class="lnt">270
&lt;/span>&lt;span class="lnt">271
&lt;/span>&lt;span class="lnt">272
&lt;/span>&lt;span class="lnt">273
&lt;/span>&lt;span class="lnt">274
&lt;/span>&lt;span class="lnt">275
&lt;/span>&lt;span class="lnt">276
&lt;/span>&lt;span class="lnt">277
&lt;/span>&lt;span class="lnt">278
&lt;/span>&lt;span class="lnt">279
&lt;/span>&lt;span class="lnt">280
&lt;/span>&lt;span class="lnt">281
&lt;/span>&lt;span class="lnt">282
&lt;/span>&lt;span class="lnt">283
&lt;/span>&lt;span class="lnt">284
&lt;/span>&lt;span class="lnt">285
&lt;/span>&lt;span class="lnt">286
&lt;/span>&lt;span class="lnt">287
&lt;/span>&lt;span class="lnt">288
&lt;/span>&lt;span class="lnt">289
&lt;/span>&lt;span class="lnt">290
&lt;/span>&lt;span class="lnt">291
&lt;/span>&lt;span class="lnt">292
&lt;/span>&lt;span class="lnt">293
&lt;/span>&lt;span class="lnt">294
&lt;/span>&lt;span class="lnt">295
&lt;/span>&lt;span class="lnt">296
&lt;/span>&lt;span class="lnt">297
&lt;/span>&lt;span class="lnt">298
&lt;/span>&lt;span class="lnt">299
&lt;/span>&lt;span class="lnt">300
&lt;/span>&lt;span class="lnt">301
&lt;/span>&lt;span class="lnt">302
&lt;/span>&lt;span class="lnt">303
&lt;/span>&lt;span class="lnt">304
&lt;/span>&lt;span class="lnt">305
&lt;/span>&lt;span class="lnt">306
&lt;/span>&lt;span class="lnt">307
&lt;/span>&lt;span class="lnt">308
&lt;/span>&lt;span class="lnt">309
&lt;/span>&lt;span class="lnt">310
&lt;/span>&lt;span class="lnt">311
&lt;/span>&lt;span class="lnt">312
&lt;/span>&lt;span class="lnt">313
&lt;/span>&lt;span class="lnt">314
&lt;/span>&lt;span class="lnt">315
&lt;/span>&lt;span class="lnt">316
&lt;/span>&lt;span class="lnt">317
&lt;/span>&lt;span class="lnt">318
&lt;/span>&lt;span class="lnt">319
&lt;/span>&lt;span class="lnt">320
&lt;/span>&lt;span class="lnt">321
&lt;/span>&lt;span class="lnt">322
&lt;/span>&lt;span class="lnt">323
&lt;/span>&lt;span class="lnt">324
&lt;/span>&lt;span class="lnt">325
&lt;/span>&lt;span class="lnt">326
&lt;/span>&lt;span class="lnt">327
&lt;/span>&lt;span class="lnt">328
&lt;/span>&lt;span class="lnt">329
&lt;/span>&lt;span class="lnt">330
&lt;/span>&lt;span class="lnt">331
&lt;/span>&lt;span class="lnt">332
&lt;/span>&lt;span class="lnt">333
&lt;/span>&lt;span class="lnt">334
&lt;/span>&lt;span class="lnt">335
&lt;/span>&lt;span class="lnt">336
&lt;/span>&lt;span class="lnt">337
&lt;/span>&lt;span class="lnt">338
&lt;/span>&lt;span class="lnt">339
&lt;/span>&lt;span class="lnt">340
&lt;/span>&lt;span class="lnt">341
&lt;/span>&lt;span class="lnt">342
&lt;/span>&lt;span class="lnt">343
&lt;/span>&lt;span class="lnt">344
&lt;/span>&lt;span class="lnt">345
&lt;/span>&lt;span class="lnt">346
&lt;/span>&lt;span class="lnt">347
&lt;/span>&lt;span class="lnt">348
&lt;/span>&lt;span class="lnt">349
&lt;/span>&lt;span class="lnt">350
&lt;/span>&lt;span class="lnt">351
&lt;/span>&lt;span class="lnt">352
&lt;/span>&lt;span class="lnt">353
&lt;/span>&lt;span class="lnt">354
&lt;/span>&lt;span class="lnt">355
&lt;/span>&lt;span class="lnt">356
&lt;/span>&lt;span class="lnt">357
&lt;/span>&lt;span class="lnt">358
&lt;/span>&lt;span class="lnt">359
&lt;/span>&lt;span class="lnt">360
&lt;/span>&lt;span class="lnt">361
&lt;/span>&lt;span class="lnt">362
&lt;/span>&lt;span class="lnt">363
&lt;/span>&lt;span class="lnt">364
&lt;/span>&lt;span class="lnt">365
&lt;/span>&lt;span class="lnt">366
&lt;/span>&lt;span class="lnt">367
&lt;/span>&lt;span class="lnt">368
&lt;/span>&lt;span class="lnt">369
&lt;/span>&lt;span class="lnt">370
&lt;/span>&lt;span class="lnt">371
&lt;/span>&lt;span class="lnt">372
&lt;/span>&lt;span class="lnt">373
&lt;/span>&lt;span class="lnt">374
&lt;/span>&lt;span class="lnt">375
&lt;/span>&lt;span class="lnt">376
&lt;/span>&lt;span class="lnt">377
&lt;/span>&lt;span class="lnt">378
&lt;/span>&lt;span class="lnt">379
&lt;/span>&lt;span class="lnt">380
&lt;/span>&lt;span class="lnt">381
&lt;/span>&lt;span class="lnt">382
&lt;/span>&lt;span class="lnt">383
&lt;/span>&lt;span class="lnt">384
&lt;/span>&lt;span class="lnt">385
&lt;/span>&lt;span class="lnt">386
&lt;/span>&lt;span class="lnt">387
&lt;/span>&lt;span class="lnt">388
&lt;/span>&lt;span class="lnt">389
&lt;/span>&lt;span class="lnt">390
&lt;/span>&lt;span class="lnt">391
&lt;/span>&lt;span class="lnt">392
&lt;/span>&lt;span class="lnt">393
&lt;/span>&lt;span class="lnt">394
&lt;/span>&lt;span class="lnt">395
&lt;/span>&lt;span class="lnt">396
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-gdscript3" data-lang="gdscript3">&lt;span class="line">&lt;span class="cl">&lt;span class="o">==&amp;gt;&lt;/span> &lt;span class="n">Checking&lt;/span> &lt;span class="k">for&lt;/span> &lt;span class="err">`&lt;/span>&lt;span class="n">sudo&lt;/span>&lt;span class="err">`&lt;/span> &lt;span class="n">access&lt;/span> &lt;span class="p">(&lt;/span>&lt;span class="n">which&lt;/span> &lt;span class="n">may&lt;/span> &lt;span class="n">request&lt;/span> &lt;span class="n">your&lt;/span> &lt;span class="n">password&lt;/span>&lt;span class="p">)&lt;/span>&lt;span class="o">...&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="o">==&amp;gt;&lt;/span> &lt;span class="n">This&lt;/span> &lt;span class="n">script&lt;/span> &lt;span class="n">will&lt;/span> &lt;span class="n">install&lt;/span>&lt;span class="p">:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="o">/&lt;/span>&lt;span class="n">usr&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">local&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">bin&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">brew&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="o">/&lt;/span>&lt;span class="n">usr&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">local&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">share&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">doc&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">homebrew&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="o">/&lt;/span>&lt;span class="n">usr&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">local&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">share&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">man&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">man1&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">brew&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">1&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="o">/&lt;/span>&lt;span class="n">usr&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">local&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">share&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">zsh&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">site&lt;/span>&lt;span class="o">-&lt;/span>&lt;span class="n">functions&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">_brew&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="o">/&lt;/span>&lt;span class="n">usr&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">local&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">etc&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">bash_completion&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">d&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">brew&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="o">/&lt;/span>&lt;span class="n">usr&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">local&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">Homebrew&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="o">==&amp;gt;&lt;/span> &lt;span class="n">The&lt;/span> &lt;span class="n">following&lt;/span> &lt;span class="n">new&lt;/span> &lt;span class="n">directories&lt;/span> &lt;span class="n">will&lt;/span> &lt;span class="n">be&lt;/span> &lt;span class="n">created&lt;/span>&lt;span class="p">:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="o">/&lt;/span>&lt;span class="n">usr&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">local&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">bin&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="o">/&lt;/span>&lt;span class="n">usr&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">local&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">etc&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="o">/&lt;/span>&lt;span class="n">usr&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">local&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">include&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="o">/&lt;/span>&lt;span class="n">usr&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">local&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">lib&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="o">/&lt;/span>&lt;span class="n">usr&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">local&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">sbin&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="o">/&lt;/span>&lt;span class="n">usr&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">local&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">share&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="o">/&lt;/span>&lt;span class="n">usr&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">local&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="k">var&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="o">/&lt;/span>&lt;span class="n">usr&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">local&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">opt&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="o">/&lt;/span>&lt;span class="n">usr&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">local&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">share&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">zsh&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="o">/&lt;/span>&lt;span class="n">usr&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">local&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">share&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">zsh&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">site&lt;/span>&lt;span class="o">-&lt;/span>&lt;span class="n">functions&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="o">/&lt;/span>&lt;span class="n">usr&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">local&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="k">var&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">homebrew&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="o">/&lt;/span>&lt;span class="n">usr&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">local&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="k">var&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">homebrew&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">linked&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="o">/&lt;/span>&lt;span class="n">usr&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">local&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">Cellar&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="o">/&lt;/span>&lt;span class="n">usr&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">local&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">Caskroom&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="o">/&lt;/span>&lt;span class="n">usr&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">local&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">Frameworks&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="o">==&amp;gt;&lt;/span> &lt;span class="n">The&lt;/span> &lt;span class="n">Xcode&lt;/span> &lt;span class="n">Command&lt;/span> &lt;span class="n">Line&lt;/span> &lt;span class="n">Tools&lt;/span> &lt;span class="n">will&lt;/span> &lt;span class="n">be&lt;/span> &lt;span class="n">installed&lt;/span>&lt;span class="o">.&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">Press&lt;/span> &lt;span class="n">RETURN&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">ENTER&lt;/span> &lt;span class="n">to&lt;/span> &lt;span class="k">continue&lt;/span> &lt;span class="ow">or&lt;/span> &lt;span class="n">any&lt;/span> &lt;span class="n">other&lt;/span> &lt;span class="n">key&lt;/span> &lt;span class="n">to&lt;/span> &lt;span class="n">abort&lt;/span>&lt;span class="p">:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="o">==&amp;gt;&lt;/span> &lt;span class="o">/&lt;/span>&lt;span class="n">usr&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">bin&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">sudo&lt;/span> &lt;span class="o">/&lt;/span>&lt;span class="n">bin&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">mkdir&lt;/span> &lt;span class="o">-&lt;/span>&lt;span class="n">p&lt;/span> &lt;span class="o">/&lt;/span>&lt;span class="n">usr&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">local&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">bin&lt;/span> &lt;span class="o">/&lt;/span>&lt;span class="n">usr&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">local&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">etc&lt;/span> &lt;span class="o">/&lt;/span>&lt;span class="n">usr&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">local&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">include&lt;/span> &lt;span class="o">/&lt;/span>&lt;span class="n">usr&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">local&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">lib&lt;/span> &lt;span class="o">/&lt;/span>&lt;span class="n">usr&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">local&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">sbin&lt;/span> &lt;span class="o">/&lt;/span>&lt;span class="n">usr&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">local&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">share&lt;/span> &lt;span class="o">/&lt;/span>&lt;span class="n">usr&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">local&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="k">var&lt;/span> &lt;span class="o">/&lt;/span>&lt;span class="n">usr&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">local&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">opt&lt;/span> &lt;span class="o">/&lt;/span>&lt;span class="n">usr&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">local&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">share&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">zsh&lt;/span> &lt;span class="o">/&lt;/span>&lt;span class="n">usr&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">local&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">share&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">zsh&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">site&lt;/span>&lt;span class="o">-&lt;/span>&lt;span class="n">functions&lt;/span> &lt;span class="o">/&lt;/span>&lt;span class="n">usr&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">local&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="k">var&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">homebrew&lt;/span> &lt;span class="o">/&lt;/span>&lt;span class="n">usr&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">local&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="k">var&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">homebrew&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">linked&lt;/span> &lt;span class="o">/&lt;/span>&lt;span class="n">usr&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">local&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">Cellar&lt;/span> &lt;span class="o">/&lt;/span>&lt;span class="n">usr&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">local&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">Caskroom&lt;/span> &lt;span class="o">/&lt;/span>&lt;span class="n">usr&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">local&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">Frameworks&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="o">==&amp;gt;&lt;/span> &lt;span class="o">/&lt;/span>&lt;span class="n">usr&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">bin&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">sudo&lt;/span> &lt;span class="o">/&lt;/span>&lt;span class="n">bin&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">chmod&lt;/span> &lt;span class="n">ug&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="n">rwx&lt;/span> &lt;span class="o">/&lt;/span>&lt;span class="n">usr&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">local&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">bin&lt;/span> &lt;span class="o">/&lt;/span>&lt;span class="n">usr&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">local&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">etc&lt;/span> &lt;span class="o">/&lt;/span>&lt;span class="n">usr&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">local&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">include&lt;/span> &lt;span class="o">/&lt;/span>&lt;span class="n">usr&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">local&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">lib&lt;/span> &lt;span class="o">/&lt;/span>&lt;span class="n">usr&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">local&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">sbin&lt;/span> &lt;span class="o">/&lt;/span>&lt;span class="n">usr&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">local&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">share&lt;/span> &lt;span class="o">/&lt;/span>&lt;span class="n">usr&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">local&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="k">var&lt;/span> &lt;span class="o">/&lt;/span>&lt;span class="n">usr&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">local&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">opt&lt;/span> &lt;span class="o">/&lt;/span>&lt;span class="n">usr&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">local&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">share&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">zsh&lt;/span> &lt;span class="o">/&lt;/span>&lt;span class="n">usr&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">local&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">share&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">zsh&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">site&lt;/span>&lt;span class="o">-&lt;/span>&lt;span class="n">functions&lt;/span> &lt;span class="o">/&lt;/span>&lt;span class="n">usr&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">local&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="k">var&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">homebrew&lt;/span> &lt;span class="o">/&lt;/span>&lt;span class="n">usr&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">local&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="k">var&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">homebrew&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">linked&lt;/span> &lt;span class="o">/&lt;/span>&lt;span class="n">usr&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">local&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">Cellar&lt;/span> &lt;span class="o">/&lt;/span>&lt;span class="n">usr&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">local&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">Caskroom&lt;/span> &lt;span class="o">/&lt;/span>&lt;span class="n">usr&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">local&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">Frameworks&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="o">==&amp;gt;&lt;/span> &lt;span class="o">/&lt;/span>&lt;span class="n">usr&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">bin&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">sudo&lt;/span> &lt;span class="o">/&lt;/span>&lt;span class="n">bin&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">chmod&lt;/span> &lt;span class="n">go&lt;/span>&lt;span class="o">-&lt;/span>&lt;span class="n">w&lt;/span> &lt;span class="o">/&lt;/span>&lt;span class="n">usr&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">local&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">share&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">zsh&lt;/span> &lt;span class="o">/&lt;/span>&lt;span class="n">usr&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">local&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">share&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">zsh&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">site&lt;/span>&lt;span class="o">-&lt;/span>&lt;span class="n">functions&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="o">==&amp;gt;&lt;/span> &lt;span class="o">/&lt;/span>&lt;span class="n">usr&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">bin&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">sudo&lt;/span> &lt;span class="o">/&lt;/span>&lt;span class="n">usr&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">sbin&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">chown&lt;/span> &lt;span class="n">kenji&lt;/span> &lt;span class="o">/&lt;/span>&lt;span class="n">usr&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">local&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">bin&lt;/span> &lt;span class="o">/&lt;/span>&lt;span class="n">usr&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">local&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">etc&lt;/span> &lt;span class="o">/&lt;/span>&lt;span class="n">usr&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">local&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">include&lt;/span> &lt;span class="o">/&lt;/span>&lt;span class="n">usr&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">local&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">lib&lt;/span> &lt;span class="o">/&lt;/span>&lt;span class="n">usr&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">local&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">sbin&lt;/span> &lt;span class="o">/&lt;/span>&lt;span class="n">usr&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">local&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">share&lt;/span> &lt;span class="o">/&lt;/span>&lt;span class="n">usr&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">local&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="k">var&lt;/span> &lt;span class="o">/&lt;/span>&lt;span class="n">usr&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">local&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">opt&lt;/span> &lt;span class="o">/&lt;/span>&lt;span class="n">usr&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">local&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">share&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">zsh&lt;/span> &lt;span class="o">/&lt;/span>&lt;span class="n">usr&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">local&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">share&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">zsh&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">site&lt;/span>&lt;span class="o">-&lt;/span>&lt;span class="n">functions&lt;/span> &lt;span class="o">/&lt;/span>&lt;span class="n">usr&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">local&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="k">var&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">homebrew&lt;/span> &lt;span class="o">/&lt;/span>&lt;span class="n">usr&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">local&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="k">var&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">homebrew&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">linked&lt;/span> &lt;span class="o">/&lt;/span>&lt;span class="n">usr&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">local&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">Cellar&lt;/span> &lt;span class="o">/&lt;/span>&lt;span class="n">usr&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">local&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">Caskroom&lt;/span> &lt;span class="o">/&lt;/span>&lt;span class="n">usr&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">local&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">Frameworks&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="o">==&amp;gt;&lt;/span> &lt;span class="o">/&lt;/span>&lt;span class="n">usr&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">bin&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">sudo&lt;/span> &lt;span class="o">/&lt;/span>&lt;span class="n">usr&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">bin&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">chgrp&lt;/span> &lt;span class="n">admin&lt;/span> &lt;span class="o">/&lt;/span>&lt;span class="n">usr&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">local&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">bin&lt;/span> &lt;span class="o">/&lt;/span>&lt;span class="n">usr&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">local&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">etc&lt;/span> &lt;span class="o">/&lt;/span>&lt;span class="n">usr&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">local&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">include&lt;/span> &lt;span class="o">/&lt;/span>&lt;span class="n">usr&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">local&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">lib&lt;/span> &lt;span class="o">/&lt;/span>&lt;span class="n">usr&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">local&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">sbin&lt;/span> &lt;span class="o">/&lt;/span>&lt;span class="n">usr&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">local&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">share&lt;/span> &lt;span class="o">/&lt;/span>&lt;span class="n">usr&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">local&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="k">var&lt;/span> &lt;span class="o">/&lt;/span>&lt;span class="n">usr&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">local&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">opt&lt;/span> &lt;span class="o">/&lt;/span>&lt;span class="n">usr&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">local&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">share&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">zsh&lt;/span> &lt;span class="o">/&lt;/span>&lt;span class="n">usr&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">local&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">share&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">zsh&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">site&lt;/span>&lt;span class="o">-&lt;/span>&lt;span class="n">functions&lt;/span> &lt;span class="o">/&lt;/span>&lt;span class="n">usr&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">local&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="k">var&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">homebrew&lt;/span> &lt;span class="o">/&lt;/span>&lt;span class="n">usr&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">local&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="k">var&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">homebrew&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">linked&lt;/span> &lt;span class="o">/&lt;/span>&lt;span class="n">usr&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">local&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">Cellar&lt;/span> &lt;span class="o">/&lt;/span>&lt;span class="n">usr&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">local&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">Caskroom&lt;/span> &lt;span class="o">/&lt;/span>&lt;span class="n">usr&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">local&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">Frameworks&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="o">==&amp;gt;&lt;/span> &lt;span class="o">/&lt;/span>&lt;span class="n">usr&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">bin&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">sudo&lt;/span> &lt;span class="o">/&lt;/span>&lt;span class="n">bin&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">mkdir&lt;/span> &lt;span class="o">-&lt;/span>&lt;span class="n">p&lt;/span> &lt;span class="o">/&lt;/span>&lt;span class="n">usr&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">local&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">Homebrew&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="o">==&amp;gt;&lt;/span> &lt;span class="o">/&lt;/span>&lt;span class="n">usr&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">bin&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">sudo&lt;/span> &lt;span class="o">/&lt;/span>&lt;span class="n">usr&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">sbin&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">chown&lt;/span> &lt;span class="o">-&lt;/span>&lt;span class="n">R&lt;/span> &lt;span class="n">kenji&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="n">admin&lt;/span> &lt;span class="o">/&lt;/span>&lt;span class="n">usr&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">local&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">Homebrew&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="o">==&amp;gt;&lt;/span> &lt;span class="o">/&lt;/span>&lt;span class="n">usr&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">bin&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">sudo&lt;/span> &lt;span class="o">/&lt;/span>&lt;span class="n">bin&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">mkdir&lt;/span> &lt;span class="o">-&lt;/span>&lt;span class="n">p&lt;/span> &lt;span class="o">/&lt;/span>&lt;span class="n">Users&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">kenji&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">Library&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">Caches&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">Homebrew&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="o">==&amp;gt;&lt;/span> &lt;span class="o">/&lt;/span>&lt;span class="n">usr&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">bin&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">sudo&lt;/span> &lt;span class="o">/&lt;/span>&lt;span class="n">bin&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">chmod&lt;/span> &lt;span class="n">g&lt;/span>&lt;span class="o">+&lt;/span>&lt;span class="n">rwx&lt;/span> &lt;span class="o">/&lt;/span>&lt;span class="n">Users&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">kenji&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">Library&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">Caches&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">Homebrew&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="o">==&amp;gt;&lt;/span> &lt;span class="o">/&lt;/span>&lt;span class="n">usr&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">bin&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">sudo&lt;/span> &lt;span class="o">/&lt;/span>&lt;span class="n">usr&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">sbin&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">chown&lt;/span> &lt;span class="o">-&lt;/span>&lt;span class="n">R&lt;/span> &lt;span class="n">kenji&lt;/span> &lt;span class="o">/&lt;/span>&lt;span class="n">Users&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">kenji&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">Library&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">Caches&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">Homebrew&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="o">==&amp;gt;&lt;/span> &lt;span class="n">Searching&lt;/span> &lt;span class="n">online&lt;/span> &lt;span class="k">for&lt;/span> &lt;span class="n">the&lt;/span> &lt;span class="n">Command&lt;/span> &lt;span class="n">Line&lt;/span> &lt;span class="n">Tools&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="o">==&amp;gt;&lt;/span> &lt;span class="o">/&lt;/span>&lt;span class="n">usr&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">bin&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">sudo&lt;/span> &lt;span class="o">/&lt;/span>&lt;span class="n">usr&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">bin&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">touch&lt;/span> &lt;span class="o">/&lt;/span>&lt;span class="n">tmp&lt;/span>&lt;span class="o">/.&lt;/span>&lt;span class="n">com&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">apple&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">dt&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">CommandLineTools&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">installondemand&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="ow">in&lt;/span>&lt;span class="o">-&lt;/span>&lt;span class="n">progress&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="o">==&amp;gt;&lt;/span> &lt;span class="n">Installing&lt;/span> &lt;span class="n">Command&lt;/span> &lt;span class="n">Line&lt;/span> &lt;span class="n">Tools&lt;/span> &lt;span class="k">for&lt;/span> &lt;span class="n">Xcode&lt;/span>&lt;span class="o">-&lt;/span>&lt;span class="mf">14.3&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="o">==&amp;gt;&lt;/span> &lt;span class="o">/&lt;/span>&lt;span class="n">usr&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">bin&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">sudo&lt;/span> &lt;span class="o">/&lt;/span>&lt;span class="n">usr&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">sbin&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">softwareupdate&lt;/span> &lt;span class="o">-&lt;/span>&lt;span class="n">i&lt;/span> &lt;span class="n">Command&lt;/span>\ &lt;span class="n">Line&lt;/span>\ &lt;span class="n">Tools&lt;/span>\ &lt;span class="k">for&lt;/span>\ &lt;span class="n">Xcode&lt;/span>&lt;span class="o">-&lt;/span>&lt;span class="mf">14.3&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">Software&lt;/span> &lt;span class="n">Update&lt;/span> &lt;span class="n">Tool&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">Finding&lt;/span> &lt;span class="n">available&lt;/span> &lt;span class="n">software&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">Downloading&lt;/span> &lt;span class="n">Command&lt;/span> &lt;span class="n">Line&lt;/span> &lt;span class="n">Tools&lt;/span> &lt;span class="k">for&lt;/span> &lt;span class="n">Xcode&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">Downloaded&lt;/span> &lt;span class="n">Command&lt;/span> &lt;span class="n">Line&lt;/span> &lt;span class="n">Tools&lt;/span> &lt;span class="k">for&lt;/span> &lt;span class="n">Xcode&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">Installing&lt;/span> &lt;span class="n">Command&lt;/span> &lt;span class="n">Line&lt;/span> &lt;span class="n">Tools&lt;/span> &lt;span class="k">for&lt;/span> &lt;span class="n">Xcode&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">Done&lt;/span> &lt;span class="n">with&lt;/span> &lt;span class="n">Command&lt;/span> &lt;span class="n">Line&lt;/span> &lt;span class="n">Tools&lt;/span> &lt;span class="k">for&lt;/span> &lt;span class="n">Xcode&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">Done&lt;/span>&lt;span class="o">.&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="o">==&amp;gt;&lt;/span> &lt;span class="o">/&lt;/span>&lt;span class="n">usr&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">bin&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">sudo&lt;/span> &lt;span class="o">/&lt;/span>&lt;span class="n">usr&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">bin&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">xcode&lt;/span>&lt;span class="o">-&lt;/span>&lt;span class="n">select&lt;/span> &lt;span class="o">--&lt;/span>&lt;span class="k">switch&lt;/span> &lt;span class="o">/&lt;/span>&lt;span class="n">Library&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">Developer&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">CommandLineTools&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="o">==&amp;gt;&lt;/span> &lt;span class="o">/&lt;/span>&lt;span class="n">usr&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">bin&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">sudo&lt;/span> &lt;span class="o">/&lt;/span>&lt;span class="n">bin&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">rm&lt;/span> &lt;span class="o">-&lt;/span>&lt;span class="n">f&lt;/span> &lt;span class="o">/&lt;/span>&lt;span class="n">tmp&lt;/span>&lt;span class="o">/.&lt;/span>&lt;span class="n">com&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">apple&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">dt&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">CommandLineTools&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">installondemand&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="ow">in&lt;/span>&lt;span class="o">-&lt;/span>&lt;span class="n">progress&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="o">==&amp;gt;&lt;/span> &lt;span class="n">Downloading&lt;/span> &lt;span class="ow">and&lt;/span> &lt;span class="n">installing&lt;/span> &lt;span class="n">Homebrew&lt;/span>&lt;span class="o">...&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">remote&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="n">Enumerating&lt;/span> &lt;span class="n">objects&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="mi">236191&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">done&lt;/span>&lt;span class="o">.&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">remote&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="n">Counting&lt;/span> &lt;span class="n">objects&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="mi">100&lt;/span>&lt;span class="o">%&lt;/span> &lt;span class="p">(&lt;/span>&lt;span class="mi">504&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="mi">504&lt;/span>&lt;span class="p">),&lt;/span> &lt;span class="n">done&lt;/span>&lt;span class="o">.&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">remote&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="n">Compressing&lt;/span> &lt;span class="n">objects&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="mi">100&lt;/span>&lt;span class="o">%&lt;/span> &lt;span class="p">(&lt;/span>&lt;span class="mi">327&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="mi">327&lt;/span>&lt;span class="p">),&lt;/span> &lt;span class="n">done&lt;/span>&lt;span class="o">.&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">remote&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="n">Total&lt;/span> &lt;span class="mi">236191&lt;/span> &lt;span class="p">(&lt;/span>&lt;span class="n">delta&lt;/span> &lt;span class="mi">176&lt;/span>&lt;span class="p">),&lt;/span> &lt;span class="n">reused&lt;/span> &lt;span class="mi">468&lt;/span> &lt;span class="p">(&lt;/span>&lt;span class="n">delta&lt;/span> &lt;span class="mi">158&lt;/span>&lt;span class="p">),&lt;/span> &lt;span class="n">pack&lt;/span>&lt;span class="o">-&lt;/span>&lt;span class="n">reused&lt;/span> &lt;span class="mi">235687&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">Receiving&lt;/span> &lt;span class="n">objects&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="mi">100&lt;/span>&lt;span class="o">%&lt;/span> &lt;span class="p">(&lt;/span>&lt;span class="mi">236191&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="mi">236191&lt;/span>&lt;span class="p">),&lt;/span> &lt;span class="mf">68.37&lt;/span> &lt;span class="n">MiB&lt;/span> &lt;span class="o">|&lt;/span> &lt;span class="mf">15.51&lt;/span> &lt;span class="n">MiB&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">s&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">done&lt;/span>&lt;span class="o">.&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">Resolving&lt;/span> &lt;span class="n">deltas&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="mi">100&lt;/span>&lt;span class="o">%&lt;/span> &lt;span class="p">(&lt;/span>&lt;span class="mi">173058&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="mi">173058&lt;/span>&lt;span class="p">),&lt;/span> &lt;span class="n">done&lt;/span>&lt;span class="o">.&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">From&lt;/span> &lt;span class="n">https&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="o">//&lt;/span>&lt;span class="n">github&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">com&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">Homebrew&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">brew&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">*&lt;/span> &lt;span class="p">[&lt;/span>&lt;span class="n">new&lt;/span> &lt;span class="n">branch&lt;/span>&lt;span class="p">]&lt;/span> &lt;span class="n">master&lt;/span> &lt;span class="o">-&amp;gt;&lt;/span> &lt;span class="n">origin&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">master&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">*&lt;/span> &lt;span class="p">[&lt;/span>&lt;span class="n">new&lt;/span> &lt;span class="n">branch&lt;/span>&lt;span class="p">]&lt;/span> &lt;span class="n">test&lt;/span>&lt;span class="o">-&lt;/span>&lt;span class="n">runners&lt;/span> &lt;span class="o">-&amp;gt;&lt;/span> &lt;span class="n">origin&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">test&lt;/span>&lt;span class="o">-&lt;/span>&lt;span class="n">runners&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">*&lt;/span> &lt;span class="p">[&lt;/span>&lt;span class="n">new&lt;/span> &lt;span class="n">tag&lt;/span>&lt;span class="p">]&lt;/span> &lt;span class="mf">0.1&lt;/span> &lt;span class="o">-&amp;gt;&lt;/span> &lt;span class="mf">0.1&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">*&lt;/span> &lt;span class="p">[&lt;/span>&lt;span class="n">new&lt;/span> &lt;span class="n">tag&lt;/span>&lt;span class="p">]&lt;/span> &lt;span class="mf">0.2&lt;/span> &lt;span class="o">-&amp;gt;&lt;/span> &lt;span class="mf">0.2&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">*&lt;/span> &lt;span class="p">[&lt;/span>&lt;span class="n">new&lt;/span> &lt;span class="n">tag&lt;/span>&lt;span class="p">]&lt;/span> &lt;span class="mf">0.3&lt;/span> &lt;span class="o">-&amp;gt;&lt;/span> &lt;span class="mf">0.3&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">*&lt;/span> &lt;span class="p">[&lt;/span>&lt;span class="n">new&lt;/span> &lt;span class="n">tag&lt;/span>&lt;span class="p">]&lt;/span> &lt;span class="mf">0.4&lt;/span> &lt;span class="o">-&amp;gt;&lt;/span> &lt;span class="mf">0.4&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">*&lt;/span> &lt;span class="p">[&lt;/span>&lt;span class="n">new&lt;/span> &lt;span class="n">tag&lt;/span>&lt;span class="p">]&lt;/span> &lt;span class="mf">0.5&lt;/span> &lt;span class="o">-&amp;gt;&lt;/span> &lt;span class="mf">0.5&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">*&lt;/span> &lt;span class="p">[&lt;/span>&lt;span class="n">new&lt;/span> &lt;span class="n">tag&lt;/span>&lt;span class="p">]&lt;/span> &lt;span class="mf">0.6&lt;/span> &lt;span class="o">-&amp;gt;&lt;/span> &lt;span class="mf">0.6&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">*&lt;/span> &lt;span class="p">[&lt;/span>&lt;span class="n">new&lt;/span> &lt;span class="n">tag&lt;/span>&lt;span class="p">]&lt;/span> &lt;span class="mf">0.7&lt;/span> &lt;span class="o">-&amp;gt;&lt;/span> &lt;span class="mf">0.7&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">*&lt;/span> &lt;span class="p">[&lt;/span>&lt;span class="n">new&lt;/span> &lt;span class="n">tag&lt;/span>&lt;span class="p">]&lt;/span> &lt;span class="mf">0.7&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">1&lt;/span> &lt;span class="o">-&amp;gt;&lt;/span> &lt;span class="mf">0.7&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">1&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">*&lt;/span> &lt;span class="p">[&lt;/span>&lt;span class="n">new&lt;/span> &lt;span class="n">tag&lt;/span>&lt;span class="p">]&lt;/span> &lt;span class="mf">0.8&lt;/span> &lt;span class="o">-&amp;gt;&lt;/span> &lt;span class="mf">0.8&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">*&lt;/span> &lt;span class="p">[&lt;/span>&lt;span class="n">new&lt;/span> &lt;span class="n">tag&lt;/span>&lt;span class="p">]&lt;/span> &lt;span class="mf">0.8&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">1&lt;/span> &lt;span class="o">-&amp;gt;&lt;/span> &lt;span class="mf">0.8&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">1&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">*&lt;/span> &lt;span class="p">[&lt;/span>&lt;span class="n">new&lt;/span> &lt;span class="n">tag&lt;/span>&lt;span class="p">]&lt;/span> &lt;span class="mf">0.9&lt;/span> &lt;span class="o">-&amp;gt;&lt;/span> &lt;span class="mf">0.9&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">*&lt;/span> &lt;span class="p">[&lt;/span>&lt;span class="n">new&lt;/span> &lt;span class="n">tag&lt;/span>&lt;span class="p">]&lt;/span> &lt;span class="mf">0.9&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">1&lt;/span> &lt;span class="o">-&amp;gt;&lt;/span> &lt;span class="mf">0.9&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">1&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">*&lt;/span> &lt;span class="p">[&lt;/span>&lt;span class="n">new&lt;/span> &lt;span class="n">tag&lt;/span>&lt;span class="p">]&lt;/span> &lt;span class="mf">0.9&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">2&lt;/span> &lt;span class="o">-&amp;gt;&lt;/span> &lt;span class="mf">0.9&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">2&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">*&lt;/span> &lt;span class="p">[&lt;/span>&lt;span class="n">new&lt;/span> &lt;span class="n">tag&lt;/span>&lt;span class="p">]&lt;/span> &lt;span class="mf">0.9&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">3&lt;/span> &lt;span class="o">-&amp;gt;&lt;/span> &lt;span class="mf">0.9&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">3&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">*&lt;/span> &lt;span class="p">[&lt;/span>&lt;span class="n">new&lt;/span> &lt;span class="n">tag&lt;/span>&lt;span class="p">]&lt;/span> &lt;span class="mf">0.9&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">4&lt;/span> &lt;span class="o">-&amp;gt;&lt;/span> &lt;span class="mf">0.9&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">4&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">*&lt;/span> &lt;span class="p">[&lt;/span>&lt;span class="n">new&lt;/span> &lt;span class="n">tag&lt;/span>&lt;span class="p">]&lt;/span> &lt;span class="mf">0.9&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">5&lt;/span> &lt;span class="o">-&amp;gt;&lt;/span> &lt;span class="mf">0.9&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">5&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">*&lt;/span> &lt;span class="p">[&lt;/span>&lt;span class="n">new&lt;/span> &lt;span class="n">tag&lt;/span>&lt;span class="p">]&lt;/span> &lt;span class="mf">0.9&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">8&lt;/span> &lt;span class="o">-&amp;gt;&lt;/span> &lt;span class="mf">0.9&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">8&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">*&lt;/span> &lt;span class="p">[&lt;/span>&lt;span class="n">new&lt;/span> &lt;span class="n">tag&lt;/span>&lt;span class="p">]&lt;/span> &lt;span class="mf">0.9&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">9&lt;/span> &lt;span class="o">-&amp;gt;&lt;/span> &lt;span class="mf">0.9&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">9&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">*&lt;/span> &lt;span class="p">[&lt;/span>&lt;span class="n">new&lt;/span> &lt;span class="n">tag&lt;/span>&lt;span class="p">]&lt;/span> &lt;span class="mf">1.0&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">0&lt;/span> &lt;span class="o">-&amp;gt;&lt;/span> &lt;span class="mf">1.0&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">0&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">*&lt;/span> &lt;span class="p">[&lt;/span>&lt;span class="n">new&lt;/span> &lt;span class="n">tag&lt;/span>&lt;span class="p">]&lt;/span> &lt;span class="mf">1.0&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">1&lt;/span> &lt;span class="o">-&amp;gt;&lt;/span> &lt;span class="mf">1.0&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">1&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">*&lt;/span> &lt;span class="p">[&lt;/span>&lt;span class="n">new&lt;/span> &lt;span class="n">tag&lt;/span>&lt;span class="p">]&lt;/span> &lt;span class="mf">1.0&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">2&lt;/span> &lt;span class="o">-&amp;gt;&lt;/span> &lt;span class="mf">1.0&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">2&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">*&lt;/span> &lt;span class="p">[&lt;/span>&lt;span class="n">new&lt;/span> &lt;span class="n">tag&lt;/span>&lt;span class="p">]&lt;/span> &lt;span class="mf">1.0&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">3&lt;/span> &lt;span class="o">-&amp;gt;&lt;/span> &lt;span class="mf">1.0&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">3&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">*&lt;/span> &lt;span class="p">[&lt;/span>&lt;span class="n">new&lt;/span> &lt;span class="n">tag&lt;/span>&lt;span class="p">]&lt;/span> &lt;span class="mf">1.0&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">4&lt;/span> &lt;span class="o">-&amp;gt;&lt;/span> &lt;span class="mf">1.0&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">4&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">*&lt;/span> &lt;span class="p">[&lt;/span>&lt;span class="n">new&lt;/span> &lt;span class="n">tag&lt;/span>&lt;span class="p">]&lt;/span> &lt;span class="mf">1.0&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">5&lt;/span> &lt;span class="o">-&amp;gt;&lt;/span> &lt;span class="mf">1.0&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">5&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">*&lt;/span> &lt;span class="p">[&lt;/span>&lt;span class="n">new&lt;/span> &lt;span class="n">tag&lt;/span>&lt;span class="p">]&lt;/span> &lt;span class="mf">1.0&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">6&lt;/span> &lt;span class="o">-&amp;gt;&lt;/span> &lt;span class="mf">1.0&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">6&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">*&lt;/span> &lt;span class="p">[&lt;/span>&lt;span class="n">new&lt;/span> &lt;span class="n">tag&lt;/span>&lt;span class="p">]&lt;/span> &lt;span class="mf">1.0&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">7&lt;/span> &lt;span class="o">-&amp;gt;&lt;/span> &lt;span class="mf">1.0&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">7&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">*&lt;/span> &lt;span class="p">[&lt;/span>&lt;span class="n">new&lt;/span> &lt;span class="n">tag&lt;/span>&lt;span class="p">]&lt;/span> &lt;span class="mf">1.0&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">8&lt;/span> &lt;span class="o">-&amp;gt;&lt;/span> &lt;span class="mf">1.0&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">8&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">*&lt;/span> &lt;span class="p">[&lt;/span>&lt;span class="n">new&lt;/span> &lt;span class="n">tag&lt;/span>&lt;span class="p">]&lt;/span> &lt;span class="mf">1.0&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">9&lt;/span> &lt;span class="o">-&amp;gt;&lt;/span> &lt;span class="mf">1.0&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">9&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">*&lt;/span> &lt;span class="p">[&lt;/span>&lt;span class="n">new&lt;/span> &lt;span class="n">tag&lt;/span>&lt;span class="p">]&lt;/span> &lt;span class="mf">1.1&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">0&lt;/span> &lt;span class="o">-&amp;gt;&lt;/span> &lt;span class="mf">1.1&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">0&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">*&lt;/span> &lt;span class="p">[&lt;/span>&lt;span class="n">new&lt;/span> &lt;span class="n">tag&lt;/span>&lt;span class="p">]&lt;/span> &lt;span class="mf">1.1&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">1&lt;/span> &lt;span class="o">-&amp;gt;&lt;/span> &lt;span class="mf">1.1&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">1&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">*&lt;/span> &lt;span class="p">[&lt;/span>&lt;span class="n">new&lt;/span> &lt;span class="n">tag&lt;/span>&lt;span class="p">]&lt;/span> &lt;span class="mf">1.1&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">10&lt;/span> &lt;span class="o">-&amp;gt;&lt;/span> &lt;span class="mf">1.1&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">10&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">*&lt;/span> &lt;span class="p">[&lt;/span>&lt;span class="n">new&lt;/span> &lt;span class="n">tag&lt;/span>&lt;span class="p">]&lt;/span> &lt;span class="mf">1.1&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">11&lt;/span> &lt;span class="o">-&amp;gt;&lt;/span> &lt;span class="mf">1.1&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">11&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">*&lt;/span> &lt;span class="p">[&lt;/span>&lt;span class="n">new&lt;/span> &lt;span class="n">tag&lt;/span>&lt;span class="p">]&lt;/span> &lt;span class="mf">1.1&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">12&lt;/span> &lt;span class="o">-&amp;gt;&lt;/span> &lt;span class="mf">1.1&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">12&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">*&lt;/span> &lt;span class="p">[&lt;/span>&lt;span class="n">new&lt;/span> &lt;span class="n">tag&lt;/span>&lt;span class="p">]&lt;/span> &lt;span class="mf">1.1&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">13&lt;/span> &lt;span class="o">-&amp;gt;&lt;/span> &lt;span class="mf">1.1&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">13&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">*&lt;/span> &lt;span class="p">[&lt;/span>&lt;span class="n">new&lt;/span> &lt;span class="n">tag&lt;/span>&lt;span class="p">]&lt;/span> &lt;span class="mf">1.1&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">2&lt;/span> &lt;span class="o">-&amp;gt;&lt;/span> &lt;span class="mf">1.1&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">2&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">*&lt;/span> &lt;span class="p">[&lt;/span>&lt;span class="n">new&lt;/span> &lt;span class="n">tag&lt;/span>&lt;span class="p">]&lt;/span> &lt;span class="mf">1.1&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">3&lt;/span> &lt;span class="o">-&amp;gt;&lt;/span> &lt;span class="mf">1.1&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">3&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">*&lt;/span> &lt;span class="p">[&lt;/span>&lt;span class="n">new&lt;/span> &lt;span class="n">tag&lt;/span>&lt;span class="p">]&lt;/span> &lt;span class="mf">1.1&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">4&lt;/span> &lt;span class="o">-&amp;gt;&lt;/span> &lt;span class="mf">1.1&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">4&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">*&lt;/span> &lt;span class="p">[&lt;/span>&lt;span class="n">new&lt;/span> &lt;span class="n">tag&lt;/span>&lt;span class="p">]&lt;/span> &lt;span class="mf">1.1&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">5&lt;/span> &lt;span class="o">-&amp;gt;&lt;/span> &lt;span class="mf">1.1&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">5&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">*&lt;/span> &lt;span class="p">[&lt;/span>&lt;span class="n">new&lt;/span> &lt;span class="n">tag&lt;/span>&lt;span class="p">]&lt;/span> &lt;span class="mf">1.1&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">6&lt;/span> &lt;span class="o">-&amp;gt;&lt;/span> &lt;span class="mf">1.1&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">6&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">*&lt;/span> &lt;span class="p">[&lt;/span>&lt;span class="n">new&lt;/span> &lt;span class="n">tag&lt;/span>&lt;span class="p">]&lt;/span> &lt;span class="mf">1.1&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">7&lt;/span> &lt;span class="o">-&amp;gt;&lt;/span> &lt;span class="mf">1.1&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">7&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">*&lt;/span> &lt;span class="p">[&lt;/span>&lt;span class="n">new&lt;/span> &lt;span class="n">tag&lt;/span>&lt;span class="p">]&lt;/span> &lt;span class="mf">1.1&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">8&lt;/span> &lt;span class="o">-&amp;gt;&lt;/span> &lt;span class="mf">1.1&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">8&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">*&lt;/span> &lt;span class="p">[&lt;/span>&lt;span class="n">new&lt;/span> &lt;span class="n">tag&lt;/span>&lt;span class="p">]&lt;/span> &lt;span class="mf">1.1&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">9&lt;/span> &lt;span class="o">-&amp;gt;&lt;/span> &lt;span class="mf">1.1&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">9&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">*&lt;/span> &lt;span class="p">[&lt;/span>&lt;span class="n">new&lt;/span> &lt;span class="n">tag&lt;/span>&lt;span class="p">]&lt;/span> &lt;span class="mf">1.2&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">0&lt;/span> &lt;span class="o">-&amp;gt;&lt;/span> &lt;span class="mf">1.2&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">0&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">*&lt;/span> &lt;span class="p">[&lt;/span>&lt;span class="n">new&lt;/span> &lt;span class="n">tag&lt;/span>&lt;span class="p">]&lt;/span> &lt;span class="mf">1.2&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">1&lt;/span> &lt;span class="o">-&amp;gt;&lt;/span> &lt;span class="mf">1.2&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">1&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">*&lt;/span> &lt;span class="p">[&lt;/span>&lt;span class="n">new&lt;/span> &lt;span class="n">tag&lt;/span>&lt;span class="p">]&lt;/span> &lt;span class="mf">1.2&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">2&lt;/span> &lt;span class="o">-&amp;gt;&lt;/span> &lt;span class="mf">1.2&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">2&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">*&lt;/span> &lt;span class="p">[&lt;/span>&lt;span class="n">new&lt;/span> &lt;span class="n">tag&lt;/span>&lt;span class="p">]&lt;/span> &lt;span class="mf">1.2&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">3&lt;/span> &lt;span class="o">-&amp;gt;&lt;/span> &lt;span class="mf">1.2&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">3&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">*&lt;/span> &lt;span class="p">[&lt;/span>&lt;span class="n">new&lt;/span> &lt;span class="n">tag&lt;/span>&lt;span class="p">]&lt;/span> &lt;span class="mf">1.2&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">4&lt;/span> &lt;span class="o">-&amp;gt;&lt;/span> &lt;span class="mf">1.2&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">4&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">*&lt;/span> &lt;span class="p">[&lt;/span>&lt;span class="n">new&lt;/span> &lt;span class="n">tag&lt;/span>&lt;span class="p">]&lt;/span> &lt;span class="mf">1.2&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">5&lt;/span> &lt;span class="o">-&amp;gt;&lt;/span> &lt;span class="mf">1.2&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">5&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">*&lt;/span> &lt;span class="p">[&lt;/span>&lt;span class="n">new&lt;/span> &lt;span class="n">tag&lt;/span>&lt;span class="p">]&lt;/span> &lt;span class="mf">1.2&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">6&lt;/span> &lt;span class="o">-&amp;gt;&lt;/span> &lt;span class="mf">1.2&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">6&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">*&lt;/span> &lt;span class="p">[&lt;/span>&lt;span class="n">new&lt;/span> &lt;span class="n">tag&lt;/span>&lt;span class="p">]&lt;/span> &lt;span class="mf">1.3&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">0&lt;/span> &lt;span class="o">-&amp;gt;&lt;/span> &lt;span class="mf">1.3&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">0&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">*&lt;/span> &lt;span class="p">[&lt;/span>&lt;span class="n">new&lt;/span> &lt;span class="n">tag&lt;/span>&lt;span class="p">]&lt;/span> &lt;span class="mf">1.3&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">1&lt;/span> &lt;span class="o">-&amp;gt;&lt;/span> &lt;span class="mf">1.3&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">1&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">*&lt;/span> &lt;span class="p">[&lt;/span>&lt;span class="n">new&lt;/span> &lt;span class="n">tag&lt;/span>&lt;span class="p">]&lt;/span> &lt;span class="mf">1.3&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">2&lt;/span> &lt;span class="o">-&amp;gt;&lt;/span> &lt;span class="mf">1.3&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">2&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">*&lt;/span> &lt;span class="p">[&lt;/span>&lt;span class="n">new&lt;/span> &lt;span class="n">tag&lt;/span>&lt;span class="p">]&lt;/span> &lt;span class="mf">1.3&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">3&lt;/span> &lt;span class="o">-&amp;gt;&lt;/span> &lt;span class="mf">1.3&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">3&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">*&lt;/span> &lt;span class="p">[&lt;/span>&lt;span class="n">new&lt;/span> &lt;span class="n">tag&lt;/span>&lt;span class="p">]&lt;/span> &lt;span class="mf">1.3&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">4&lt;/span> &lt;span class="o">-&amp;gt;&lt;/span> &lt;span class="mf">1.3&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">4&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">*&lt;/span> &lt;span class="p">[&lt;/span>&lt;span class="n">new&lt;/span> &lt;span class="n">tag&lt;/span>&lt;span class="p">]&lt;/span> &lt;span class="mf">1.3&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">5&lt;/span> &lt;span class="o">-&amp;gt;&lt;/span> &lt;span class="mf">1.3&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">5&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">*&lt;/span> &lt;span class="p">[&lt;/span>&lt;span class="n">new&lt;/span> &lt;span class="n">tag&lt;/span>&lt;span class="p">]&lt;/span> &lt;span class="mf">1.3&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">6&lt;/span> &lt;span class="o">-&amp;gt;&lt;/span> &lt;span class="mf">1.3&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">6&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">*&lt;/span> &lt;span class="p">[&lt;/span>&lt;span class="n">new&lt;/span> &lt;span class="n">tag&lt;/span>&lt;span class="p">]&lt;/span> &lt;span class="mf">1.3&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">7&lt;/span> &lt;span class="o">-&amp;gt;&lt;/span> &lt;span class="mf">1.3&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">7&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">*&lt;/span> &lt;span class="p">[&lt;/span>&lt;span class="n">new&lt;/span> &lt;span class="n">tag&lt;/span>&lt;span class="p">]&lt;/span> &lt;span class="mf">1.3&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">8&lt;/span> &lt;span class="o">-&amp;gt;&lt;/span> &lt;span class="mf">1.3&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">8&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">*&lt;/span> &lt;span class="p">[&lt;/span>&lt;span class="n">new&lt;/span> &lt;span class="n">tag&lt;/span>&lt;span class="p">]&lt;/span> &lt;span class="mf">1.3&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">9&lt;/span> &lt;span class="o">-&amp;gt;&lt;/span> &lt;span class="mf">1.3&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">9&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">*&lt;/span> &lt;span class="p">[&lt;/span>&lt;span class="n">new&lt;/span> &lt;span class="n">tag&lt;/span>&lt;span class="p">]&lt;/span> &lt;span class="mf">1.4&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">0&lt;/span> &lt;span class="o">-&amp;gt;&lt;/span> &lt;span class="mf">1.4&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">0&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">*&lt;/span> &lt;span class="p">[&lt;/span>&lt;span class="n">new&lt;/span> &lt;span class="n">tag&lt;/span>&lt;span class="p">]&lt;/span> &lt;span class="mf">1.4&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">1&lt;/span> &lt;span class="o">-&amp;gt;&lt;/span> &lt;span class="mf">1.4&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">1&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">*&lt;/span> &lt;span class="p">[&lt;/span>&lt;span class="n">new&lt;/span> &lt;span class="n">tag&lt;/span>&lt;span class="p">]&lt;/span> &lt;span class="mf">1.4&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">2&lt;/span> &lt;span class="o">-&amp;gt;&lt;/span> &lt;span class="mf">1.4&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">2&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">*&lt;/span> &lt;span class="p">[&lt;/span>&lt;span class="n">new&lt;/span> &lt;span class="n">tag&lt;/span>&lt;span class="p">]&lt;/span> &lt;span class="mf">1.4&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">3&lt;/span> &lt;span class="o">-&amp;gt;&lt;/span> &lt;span class="mf">1.4&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">3&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">*&lt;/span> &lt;span class="p">[&lt;/span>&lt;span class="n">new&lt;/span> &lt;span class="n">tag&lt;/span>&lt;span class="p">]&lt;/span> &lt;span class="mf">1.5&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">0&lt;/span> &lt;span class="o">-&amp;gt;&lt;/span> &lt;span class="mf">1.5&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">0&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">*&lt;/span> &lt;span class="p">[&lt;/span>&lt;span class="n">new&lt;/span> &lt;span class="n">tag&lt;/span>&lt;span class="p">]&lt;/span> &lt;span class="mf">1.5&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">1&lt;/span> &lt;span class="o">-&amp;gt;&lt;/span> &lt;span class="mf">1.5&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">1&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">*&lt;/span> &lt;span class="p">[&lt;/span>&lt;span class="n">new&lt;/span> &lt;span class="n">tag&lt;/span>&lt;span class="p">]&lt;/span> &lt;span class="mf">1.5&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">10&lt;/span> &lt;span class="o">-&amp;gt;&lt;/span> &lt;span class="mf">1.5&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">10&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">*&lt;/span> &lt;span class="p">[&lt;/span>&lt;span class="n">new&lt;/span> &lt;span class="n">tag&lt;/span>&lt;span class="p">]&lt;/span> &lt;span class="mf">1.5&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">11&lt;/span> &lt;span class="o">-&amp;gt;&lt;/span> &lt;span class="mf">1.5&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">11&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">*&lt;/span> &lt;span class="p">[&lt;/span>&lt;span class="n">new&lt;/span> &lt;span class="n">tag&lt;/span>&lt;span class="p">]&lt;/span> &lt;span class="mf">1.5&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">12&lt;/span> &lt;span class="o">-&amp;gt;&lt;/span> &lt;span class="mf">1.5&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">12&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">*&lt;/span> &lt;span class="p">[&lt;/span>&lt;span class="n">new&lt;/span> &lt;span class="n">tag&lt;/span>&lt;span class="p">]&lt;/span> &lt;span class="mf">1.5&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">13&lt;/span> &lt;span class="o">-&amp;gt;&lt;/span> &lt;span class="mf">1.5&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">13&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">*&lt;/span> &lt;span class="p">[&lt;/span>&lt;span class="n">new&lt;/span> &lt;span class="n">tag&lt;/span>&lt;span class="p">]&lt;/span> &lt;span class="mf">1.5&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">14&lt;/span> &lt;span class="o">-&amp;gt;&lt;/span> &lt;span class="mf">1.5&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">14&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">*&lt;/span> &lt;span class="p">[&lt;/span>&lt;span class="n">new&lt;/span> &lt;span class="n">tag&lt;/span>&lt;span class="p">]&lt;/span> &lt;span class="mf">1.5&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">2&lt;/span> &lt;span class="o">-&amp;gt;&lt;/span> &lt;span class="mf">1.5&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">2&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">*&lt;/span> &lt;span class="p">[&lt;/span>&lt;span class="n">new&lt;/span> &lt;span class="n">tag&lt;/span>&lt;span class="p">]&lt;/span> &lt;span class="mf">1.5&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">3&lt;/span> &lt;span class="o">-&amp;gt;&lt;/span> &lt;span class="mf">1.5&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">3&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">*&lt;/span> &lt;span class="p">[&lt;/span>&lt;span class="n">new&lt;/span> &lt;span class="n">tag&lt;/span>&lt;span class="p">]&lt;/span> &lt;span class="mf">1.5&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">4&lt;/span> &lt;span class="o">-&amp;gt;&lt;/span> &lt;span class="mf">1.5&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">4&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">*&lt;/span> &lt;span class="p">[&lt;/span>&lt;span class="n">new&lt;/span> &lt;span class="n">tag&lt;/span>&lt;span class="p">]&lt;/span> &lt;span class="mf">1.5&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">5&lt;/span> &lt;span class="o">-&amp;gt;&lt;/span> &lt;span class="mf">1.5&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">5&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">*&lt;/span> &lt;span class="p">[&lt;/span>&lt;span class="n">new&lt;/span> &lt;span class="n">tag&lt;/span>&lt;span class="p">]&lt;/span> &lt;span class="mf">1.5&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">6&lt;/span> &lt;span class="o">-&amp;gt;&lt;/span> &lt;span class="mf">1.5&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">6&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">*&lt;/span> &lt;span class="p">[&lt;/span>&lt;span class="n">new&lt;/span> &lt;span class="n">tag&lt;/span>&lt;span class="p">]&lt;/span> &lt;span class="mf">1.5&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">7&lt;/span> &lt;span class="o">-&amp;gt;&lt;/span> &lt;span class="mf">1.5&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">7&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">*&lt;/span> &lt;span class="p">[&lt;/span>&lt;span class="n">new&lt;/span> &lt;span class="n">tag&lt;/span>&lt;span class="p">]&lt;/span> &lt;span class="mf">1.5&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">8&lt;/span> &lt;span class="o">-&amp;gt;&lt;/span> &lt;span class="mf">1.5&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">8&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">*&lt;/span> &lt;span class="p">[&lt;/span>&lt;span class="n">new&lt;/span> &lt;span class="n">tag&lt;/span>&lt;span class="p">]&lt;/span> &lt;span class="mf">1.5&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">9&lt;/span> &lt;span class="o">-&amp;gt;&lt;/span> &lt;span class="mf">1.5&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">9&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">*&lt;/span> &lt;span class="p">[&lt;/span>&lt;span class="n">new&lt;/span> &lt;span class="n">tag&lt;/span>&lt;span class="p">]&lt;/span> &lt;span class="mf">1.6&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">0&lt;/span> &lt;span class="o">-&amp;gt;&lt;/span> &lt;span class="mf">1.6&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">0&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">*&lt;/span> &lt;span class="p">[&lt;/span>&lt;span class="n">new&lt;/span> &lt;span class="n">tag&lt;/span>&lt;span class="p">]&lt;/span> &lt;span class="mf">1.6&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">1&lt;/span> &lt;span class="o">-&amp;gt;&lt;/span> &lt;span class="mf">1.6&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">1&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">*&lt;/span> &lt;span class="p">[&lt;/span>&lt;span class="n">new&lt;/span> &lt;span class="n">tag&lt;/span>&lt;span class="p">]&lt;/span> &lt;span class="mf">1.6&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">10&lt;/span> &lt;span class="o">-&amp;gt;&lt;/span> &lt;span class="mf">1.6&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">10&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">*&lt;/span> &lt;span class="p">[&lt;/span>&lt;span class="n">new&lt;/span> &lt;span class="n">tag&lt;/span>&lt;span class="p">]&lt;/span> &lt;span class="mf">1.6&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">11&lt;/span> &lt;span class="o">-&amp;gt;&lt;/span> &lt;span class="mf">1.6&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">11&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">*&lt;/span> &lt;span class="p">[&lt;/span>&lt;span class="n">new&lt;/span> &lt;span class="n">tag&lt;/span>&lt;span class="p">]&lt;/span> &lt;span class="mf">1.6&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">12&lt;/span> &lt;span class="o">-&amp;gt;&lt;/span> &lt;span class="mf">1.6&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">12&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">*&lt;/span> &lt;span class="p">[&lt;/span>&lt;span class="n">new&lt;/span> &lt;span class="n">tag&lt;/span>&lt;span class="p">]&lt;/span> &lt;span class="mf">1.6&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">13&lt;/span> &lt;span class="o">-&amp;gt;&lt;/span> &lt;span class="mf">1.6&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">13&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">*&lt;/span> &lt;span class="p">[&lt;/span>&lt;span class="n">new&lt;/span> &lt;span class="n">tag&lt;/span>&lt;span class="p">]&lt;/span> &lt;span class="mf">1.6&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">14&lt;/span> &lt;span class="o">-&amp;gt;&lt;/span> &lt;span class="mf">1.6&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">14&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">*&lt;/span> &lt;span class="p">[&lt;/span>&lt;span class="n">new&lt;/span> &lt;span class="n">tag&lt;/span>&lt;span class="p">]&lt;/span> &lt;span class="mf">1.6&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">15&lt;/span> &lt;span class="o">-&amp;gt;&lt;/span> &lt;span class="mf">1.6&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">15&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">*&lt;/span> &lt;span class="p">[&lt;/span>&lt;span class="n">new&lt;/span> &lt;span class="n">tag&lt;/span>&lt;span class="p">]&lt;/span> &lt;span class="mf">1.6&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">16&lt;/span> &lt;span class="o">-&amp;gt;&lt;/span> &lt;span class="mf">1.6&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">16&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">*&lt;/span> &lt;span class="p">[&lt;/span>&lt;span class="n">new&lt;/span> &lt;span class="n">tag&lt;/span>&lt;span class="p">]&lt;/span> &lt;span class="mf">1.6&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">17&lt;/span> &lt;span class="o">-&amp;gt;&lt;/span> &lt;span class="mf">1.6&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">17&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">*&lt;/span> &lt;span class="p">[&lt;/span>&lt;span class="n">new&lt;/span> &lt;span class="n">tag&lt;/span>&lt;span class="p">]&lt;/span> &lt;span class="mf">1.6&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">2&lt;/span> &lt;span class="o">-&amp;gt;&lt;/span> &lt;span class="mf">1.6&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">2&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">*&lt;/span> &lt;span class="p">[&lt;/span>&lt;span class="n">new&lt;/span> &lt;span class="n">tag&lt;/span>&lt;span class="p">]&lt;/span> &lt;span class="mf">1.6&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">3&lt;/span> &lt;span class="o">-&amp;gt;&lt;/span> &lt;span class="mf">1.6&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">3&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">*&lt;/span> &lt;span class="p">[&lt;/span>&lt;span class="n">new&lt;/span> &lt;span class="n">tag&lt;/span>&lt;span class="p">]&lt;/span> &lt;span class="mf">1.6&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">4&lt;/span> &lt;span class="o">-&amp;gt;&lt;/span> &lt;span class="mf">1.6&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">4&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">*&lt;/span> &lt;span class="p">[&lt;/span>&lt;span class="n">new&lt;/span> &lt;span class="n">tag&lt;/span>&lt;span class="p">]&lt;/span> &lt;span class="mf">1.6&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">5&lt;/span> &lt;span class="o">-&amp;gt;&lt;/span> &lt;span class="mf">1.6&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">5&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">*&lt;/span> &lt;span class="p">[&lt;/span>&lt;span class="n">new&lt;/span> &lt;span class="n">tag&lt;/span>&lt;span class="p">]&lt;/span> &lt;span class="mf">1.6&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">6&lt;/span> &lt;span class="o">-&amp;gt;&lt;/span> &lt;span class="mf">1.6&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">6&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">*&lt;/span> &lt;span class="p">[&lt;/span>&lt;span class="n">new&lt;/span> &lt;span class="n">tag&lt;/span>&lt;span class="p">]&lt;/span> &lt;span class="mf">1.6&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">7&lt;/span> &lt;span class="o">-&amp;gt;&lt;/span> &lt;span class="mf">1.6&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">7&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">*&lt;/span> &lt;span class="p">[&lt;/span>&lt;span class="n">new&lt;/span> &lt;span class="n">tag&lt;/span>&lt;span class="p">]&lt;/span> &lt;span class="mf">1.6&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">8&lt;/span> &lt;span class="o">-&amp;gt;&lt;/span> &lt;span class="mf">1.6&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">8&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">*&lt;/span> &lt;span class="p">[&lt;/span>&lt;span class="n">new&lt;/span> &lt;span class="n">tag&lt;/span>&lt;span class="p">]&lt;/span> &lt;span class="mf">1.6&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">9&lt;/span> &lt;span class="o">-&amp;gt;&lt;/span> &lt;span class="mf">1.6&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">9&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">*&lt;/span> &lt;span class="p">[&lt;/span>&lt;span class="n">new&lt;/span> &lt;span class="n">tag&lt;/span>&lt;span class="p">]&lt;/span> &lt;span class="mf">1.7&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">0&lt;/span> &lt;span class="o">-&amp;gt;&lt;/span> &lt;span class="mf">1.7&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">0&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">*&lt;/span> &lt;span class="p">[&lt;/span>&lt;span class="n">new&lt;/span> &lt;span class="n">tag&lt;/span>&lt;span class="p">]&lt;/span> &lt;span class="mf">1.7&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">1&lt;/span> &lt;span class="o">-&amp;gt;&lt;/span> &lt;span class="mf">1.7&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">1&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">*&lt;/span> &lt;span class="p">[&lt;/span>&lt;span class="n">new&lt;/span> &lt;span class="n">tag&lt;/span>&lt;span class="p">]&lt;/span> &lt;span class="mf">1.7&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">2&lt;/span> &lt;span class="o">-&amp;gt;&lt;/span> &lt;span class="mf">1.7&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">2&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">*&lt;/span> &lt;span class="p">[&lt;/span>&lt;span class="n">new&lt;/span> &lt;span class="n">tag&lt;/span>&lt;span class="p">]&lt;/span> &lt;span class="mf">1.7&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">3&lt;/span> &lt;span class="o">-&amp;gt;&lt;/span> &lt;span class="mf">1.7&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">3&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">*&lt;/span> &lt;span class="p">[&lt;/span>&lt;span class="n">new&lt;/span> &lt;span class="n">tag&lt;/span>&lt;span class="p">]&lt;/span> &lt;span class="mf">1.7&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">4&lt;/span> &lt;span class="o">-&amp;gt;&lt;/span> &lt;span class="mf">1.7&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">4&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">*&lt;/span> &lt;span class="p">[&lt;/span>&lt;span class="n">new&lt;/span> &lt;span class="n">tag&lt;/span>&lt;span class="p">]&lt;/span> &lt;span class="mf">1.7&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">5&lt;/span> &lt;span class="o">-&amp;gt;&lt;/span> &lt;span class="mf">1.7&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">5&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">*&lt;/span> &lt;span class="p">[&lt;/span>&lt;span class="n">new&lt;/span> &lt;span class="n">tag&lt;/span>&lt;span class="p">]&lt;/span> &lt;span class="mf">1.7&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">6&lt;/span> &lt;span class="o">-&amp;gt;&lt;/span> &lt;span class="mf">1.7&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">6&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">*&lt;/span> &lt;span class="p">[&lt;/span>&lt;span class="n">new&lt;/span> &lt;span class="n">tag&lt;/span>&lt;span class="p">]&lt;/span> &lt;span class="mf">1.7&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">7&lt;/span> &lt;span class="o">-&amp;gt;&lt;/span> &lt;span class="mf">1.7&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">7&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">*&lt;/span> &lt;span class="p">[&lt;/span>&lt;span class="n">new&lt;/span> &lt;span class="n">tag&lt;/span>&lt;span class="p">]&lt;/span> &lt;span class="mf">1.8&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">0&lt;/span> &lt;span class="o">-&amp;gt;&lt;/span> &lt;span class="mf">1.8&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">0&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">*&lt;/span> &lt;span class="p">[&lt;/span>&lt;span class="n">new&lt;/span> &lt;span class="n">tag&lt;/span>&lt;span class="p">]&lt;/span> &lt;span class="mf">1.8&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">1&lt;/span> &lt;span class="o">-&amp;gt;&lt;/span> &lt;span class="mf">1.8&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">1&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">*&lt;/span> &lt;span class="p">[&lt;/span>&lt;span class="n">new&lt;/span> &lt;span class="n">tag&lt;/span>&lt;span class="p">]&lt;/span> &lt;span class="mf">1.8&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">2&lt;/span> &lt;span class="o">-&amp;gt;&lt;/span> &lt;span class="mf">1.8&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">2&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">*&lt;/span> &lt;span class="p">[&lt;/span>&lt;span class="n">new&lt;/span> &lt;span class="n">tag&lt;/span>&lt;span class="p">]&lt;/span> &lt;span class="mf">1.8&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">3&lt;/span> &lt;span class="o">-&amp;gt;&lt;/span> &lt;span class="mf">1.8&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">3&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">*&lt;/span> &lt;span class="p">[&lt;/span>&lt;span class="n">new&lt;/span> &lt;span class="n">tag&lt;/span>&lt;span class="p">]&lt;/span> &lt;span class="mf">1.8&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">4&lt;/span> &lt;span class="o">-&amp;gt;&lt;/span> &lt;span class="mf">1.8&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">4&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">*&lt;/span> &lt;span class="p">[&lt;/span>&lt;span class="n">new&lt;/span> &lt;span class="n">tag&lt;/span>&lt;span class="p">]&lt;/span> &lt;span class="mf">1.8&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">5&lt;/span> &lt;span class="o">-&amp;gt;&lt;/span> &lt;span class="mf">1.8&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">5&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">*&lt;/span> &lt;span class="p">[&lt;/span>&lt;span class="n">new&lt;/span> &lt;span class="n">tag&lt;/span>&lt;span class="p">]&lt;/span> &lt;span class="mf">1.8&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">6&lt;/span> &lt;span class="o">-&amp;gt;&lt;/span> &lt;span class="mf">1.8&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">6&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">*&lt;/span> &lt;span class="p">[&lt;/span>&lt;span class="n">new&lt;/span> &lt;span class="n">tag&lt;/span>&lt;span class="p">]&lt;/span> &lt;span class="mf">1.9&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">0&lt;/span> &lt;span class="o">-&amp;gt;&lt;/span> &lt;span class="mf">1.9&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">0&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">*&lt;/span> &lt;span class="p">[&lt;/span>&lt;span class="n">new&lt;/span> &lt;span class="n">tag&lt;/span>&lt;span class="p">]&lt;/span> &lt;span class="mf">1.9&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">1&lt;/span> &lt;span class="o">-&amp;gt;&lt;/span> &lt;span class="mf">1.9&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">1&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">*&lt;/span> &lt;span class="p">[&lt;/span>&lt;span class="n">new&lt;/span> &lt;span class="n">tag&lt;/span>&lt;span class="p">]&lt;/span> &lt;span class="mf">1.9&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">2&lt;/span> &lt;span class="o">-&amp;gt;&lt;/span> &lt;span class="mf">1.9&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">2&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">*&lt;/span> &lt;span class="p">[&lt;/span>&lt;span class="n">new&lt;/span> &lt;span class="n">tag&lt;/span>&lt;span class="p">]&lt;/span> &lt;span class="mf">1.9&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">3&lt;/span> &lt;span class="o">-&amp;gt;&lt;/span> &lt;span class="mf">1.9&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">3&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">*&lt;/span> &lt;span class="p">[&lt;/span>&lt;span class="n">new&lt;/span> &lt;span class="n">tag&lt;/span>&lt;span class="p">]&lt;/span> &lt;span class="mf">2.0&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">0&lt;/span> &lt;span class="o">-&amp;gt;&lt;/span> &lt;span class="mf">2.0&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">0&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">*&lt;/span> &lt;span class="p">[&lt;/span>&lt;span class="n">new&lt;/span> &lt;span class="n">tag&lt;/span>&lt;span class="p">]&lt;/span> &lt;span class="mf">2.0&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">1&lt;/span> &lt;span class="o">-&amp;gt;&lt;/span> &lt;span class="mf">2.0&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">1&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">*&lt;/span> &lt;span class="p">[&lt;/span>&lt;span class="n">new&lt;/span> &lt;span class="n">tag&lt;/span>&lt;span class="p">]&lt;/span> &lt;span class="mf">2.0&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">2&lt;/span> &lt;span class="o">-&amp;gt;&lt;/span> &lt;span class="mf">2.0&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">2&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">*&lt;/span> &lt;span class="p">[&lt;/span>&lt;span class="n">new&lt;/span> &lt;span class="n">tag&lt;/span>&lt;span class="p">]&lt;/span> &lt;span class="mf">2.0&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">3&lt;/span> &lt;span class="o">-&amp;gt;&lt;/span> &lt;span class="mf">2.0&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">3&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">*&lt;/span> &lt;span class="p">[&lt;/span>&lt;span class="n">new&lt;/span> &lt;span class="n">tag&lt;/span>&lt;span class="p">]&lt;/span> &lt;span class="mf">2.0&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">4&lt;/span> &lt;span class="o">-&amp;gt;&lt;/span> &lt;span class="mf">2.0&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">4&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">*&lt;/span> &lt;span class="p">[&lt;/span>&lt;span class="n">new&lt;/span> &lt;span class="n">tag&lt;/span>&lt;span class="p">]&lt;/span> &lt;span class="mf">2.0&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">5&lt;/span> &lt;span class="o">-&amp;gt;&lt;/span> &lt;span class="mf">2.0&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">5&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">*&lt;/span> &lt;span class="p">[&lt;/span>&lt;span class="n">new&lt;/span> &lt;span class="n">tag&lt;/span>&lt;span class="p">]&lt;/span> &lt;span class="mf">2.0&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">6&lt;/span> &lt;span class="o">-&amp;gt;&lt;/span> &lt;span class="mf">2.0&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">6&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">*&lt;/span> &lt;span class="p">[&lt;/span>&lt;span class="n">new&lt;/span> &lt;span class="n">tag&lt;/span>&lt;span class="p">]&lt;/span> &lt;span class="mf">2.1&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">0&lt;/span> &lt;span class="o">-&amp;gt;&lt;/span> &lt;span class="mf">2.1&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">0&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">*&lt;/span> &lt;span class="p">[&lt;/span>&lt;span class="n">new&lt;/span> &lt;span class="n">tag&lt;/span>&lt;span class="p">]&lt;/span> &lt;span class="mf">2.1&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">1&lt;/span> &lt;span class="o">-&amp;gt;&lt;/span> &lt;span class="mf">2.1&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">1&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">*&lt;/span> &lt;span class="p">[&lt;/span>&lt;span class="n">new&lt;/span> &lt;span class="n">tag&lt;/span>&lt;span class="p">]&lt;/span> &lt;span class="mf">2.1&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">10&lt;/span> &lt;span class="o">-&amp;gt;&lt;/span> &lt;span class="mf">2.1&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">10&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">*&lt;/span> &lt;span class="p">[&lt;/span>&lt;span class="n">new&lt;/span> &lt;span class="n">tag&lt;/span>&lt;span class="p">]&lt;/span> &lt;span class="mf">2.1&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">11&lt;/span> &lt;span class="o">-&amp;gt;&lt;/span> &lt;span class="mf">2.1&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">11&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">*&lt;/span> &lt;span class="p">[&lt;/span>&lt;span class="n">new&lt;/span> &lt;span class="n">tag&lt;/span>&lt;span class="p">]&lt;/span> &lt;span class="mf">2.1&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">12&lt;/span> &lt;span class="o">-&amp;gt;&lt;/span> &lt;span class="mf">2.1&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">12&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">*&lt;/span> &lt;span class="p">[&lt;/span>&lt;span class="n">new&lt;/span> &lt;span class="n">tag&lt;/span>&lt;span class="p">]&lt;/span> &lt;span class="mf">2.1&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">13&lt;/span> &lt;span class="o">-&amp;gt;&lt;/span> &lt;span class="mf">2.1&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">13&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">*&lt;/span> &lt;span class="p">[&lt;/span>&lt;span class="n">new&lt;/span> &lt;span class="n">tag&lt;/span>&lt;span class="p">]&lt;/span> &lt;span class="mf">2.1&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">14&lt;/span> &lt;span class="o">-&amp;gt;&lt;/span> &lt;span class="mf">2.1&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">14&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">*&lt;/span> &lt;span class="p">[&lt;/span>&lt;span class="n">new&lt;/span> &lt;span class="n">tag&lt;/span>&lt;span class="p">]&lt;/span> &lt;span class="mf">2.1&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">15&lt;/span> &lt;span class="o">-&amp;gt;&lt;/span> &lt;span class="mf">2.1&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">15&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">*&lt;/span> &lt;span class="p">[&lt;/span>&lt;span class="n">new&lt;/span> &lt;span class="n">tag&lt;/span>&lt;span class="p">]&lt;/span> &lt;span class="mf">2.1&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">16&lt;/span> &lt;span class="o">-&amp;gt;&lt;/span> &lt;span class="mf">2.1&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">16&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">*&lt;/span> &lt;span class="p">[&lt;/span>&lt;span class="n">new&lt;/span> &lt;span class="n">tag&lt;/span>&lt;span class="p">]&lt;/span> &lt;span class="mf">2.1&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">2&lt;/span> &lt;span class="o">-&amp;gt;&lt;/span> &lt;span class="mf">2.1&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">2&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">*&lt;/span> &lt;span class="p">[&lt;/span>&lt;span class="n">new&lt;/span> &lt;span class="n">tag&lt;/span>&lt;span class="p">]&lt;/span> &lt;span class="mf">2.1&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">3&lt;/span> &lt;span class="o">-&amp;gt;&lt;/span> &lt;span class="mf">2.1&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">3&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">*&lt;/span> &lt;span class="p">[&lt;/span>&lt;span class="n">new&lt;/span> &lt;span class="n">tag&lt;/span>&lt;span class="p">]&lt;/span> &lt;span class="mf">2.1&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">4&lt;/span> &lt;span class="o">-&amp;gt;&lt;/span> &lt;span class="mf">2.1&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">4&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">*&lt;/span> &lt;span class="p">[&lt;/span>&lt;span class="n">new&lt;/span> &lt;span class="n">tag&lt;/span>&lt;span class="p">]&lt;/span> &lt;span class="mf">2.1&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">5&lt;/span> &lt;span class="o">-&amp;gt;&lt;/span> &lt;span class="mf">2.1&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">5&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">*&lt;/span> &lt;span class="p">[&lt;/span>&lt;span class="n">new&lt;/span> &lt;span class="n">tag&lt;/span>&lt;span class="p">]&lt;/span> &lt;span class="mf">2.1&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">6&lt;/span> &lt;span class="o">-&amp;gt;&lt;/span> &lt;span class="mf">2.1&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">6&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">*&lt;/span> &lt;span class="p">[&lt;/span>&lt;span class="n">new&lt;/span> &lt;span class="n">tag&lt;/span>&lt;span class="p">]&lt;/span> &lt;span class="mf">2.1&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">7&lt;/span> &lt;span class="o">-&amp;gt;&lt;/span> &lt;span class="mf">2.1&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">7&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">*&lt;/span> &lt;span class="p">[&lt;/span>&lt;span class="n">new&lt;/span> &lt;span class="n">tag&lt;/span>&lt;span class="p">]&lt;/span> &lt;span class="mf">2.1&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">8&lt;/span> &lt;span class="o">-&amp;gt;&lt;/span> &lt;span class="mf">2.1&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">8&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">*&lt;/span> &lt;span class="p">[&lt;/span>&lt;span class="n">new&lt;/span> &lt;span class="n">tag&lt;/span>&lt;span class="p">]&lt;/span> &lt;span class="mf">2.1&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">9&lt;/span> &lt;span class="o">-&amp;gt;&lt;/span> &lt;span class="mf">2.1&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">9&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">*&lt;/span> &lt;span class="p">[&lt;/span>&lt;span class="n">new&lt;/span> &lt;span class="n">tag&lt;/span>&lt;span class="p">]&lt;/span> &lt;span class="mf">2.2&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">0&lt;/span> &lt;span class="o">-&amp;gt;&lt;/span> &lt;span class="mf">2.2&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">0&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">*&lt;/span> &lt;span class="p">[&lt;/span>&lt;span class="n">new&lt;/span> &lt;span class="n">tag&lt;/span>&lt;span class="p">]&lt;/span> &lt;span class="mf">2.2&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">1&lt;/span> &lt;span class="o">-&amp;gt;&lt;/span> &lt;span class="mf">2.2&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">1&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">*&lt;/span> &lt;span class="p">[&lt;/span>&lt;span class="n">new&lt;/span> &lt;span class="n">tag&lt;/span>&lt;span class="p">]&lt;/span> &lt;span class="mf">2.2&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">10&lt;/span> &lt;span class="o">-&amp;gt;&lt;/span> &lt;span class="mf">2.2&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">10&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">*&lt;/span> &lt;span class="p">[&lt;/span>&lt;span class="n">new&lt;/span> &lt;span class="n">tag&lt;/span>&lt;span class="p">]&lt;/span> &lt;span class="mf">2.2&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">11&lt;/span> &lt;span class="o">-&amp;gt;&lt;/span> &lt;span class="mf">2.2&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">11&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">*&lt;/span> &lt;span class="p">[&lt;/span>&lt;span class="n">new&lt;/span> &lt;span class="n">tag&lt;/span>&lt;span class="p">]&lt;/span> &lt;span class="mf">2.2&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">12&lt;/span> &lt;span class="o">-&amp;gt;&lt;/span> &lt;span class="mf">2.2&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">12&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">*&lt;/span> &lt;span class="p">[&lt;/span>&lt;span class="n">new&lt;/span> &lt;span class="n">tag&lt;/span>&lt;span class="p">]&lt;/span> &lt;span class="mf">2.2&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">13&lt;/span> &lt;span class="o">-&amp;gt;&lt;/span> &lt;span class="mf">2.2&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">13&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">*&lt;/span> &lt;span class="p">[&lt;/span>&lt;span class="n">new&lt;/span> &lt;span class="n">tag&lt;/span>&lt;span class="p">]&lt;/span> &lt;span class="mf">2.2&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">14&lt;/span> &lt;span class="o">-&amp;gt;&lt;/span> &lt;span class="mf">2.2&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">14&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">*&lt;/span> &lt;span class="p">[&lt;/span>&lt;span class="n">new&lt;/span> &lt;span class="n">tag&lt;/span>&lt;span class="p">]&lt;/span> &lt;span class="mf">2.2&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">15&lt;/span> &lt;span class="o">-&amp;gt;&lt;/span> &lt;span class="mf">2.2&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">15&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">*&lt;/span> &lt;span class="p">[&lt;/span>&lt;span class="n">new&lt;/span> &lt;span class="n">tag&lt;/span>&lt;span class="p">]&lt;/span> &lt;span class="mf">2.2&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">16&lt;/span> &lt;span class="o">-&amp;gt;&lt;/span> &lt;span class="mf">2.2&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">16&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">*&lt;/span> &lt;span class="p">[&lt;/span>&lt;span class="n">new&lt;/span> &lt;span class="n">tag&lt;/span>&lt;span class="p">]&lt;/span> &lt;span class="mf">2.2&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">17&lt;/span> &lt;span class="o">-&amp;gt;&lt;/span> &lt;span class="mf">2.2&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">17&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">*&lt;/span> &lt;span class="p">[&lt;/span>&lt;span class="n">new&lt;/span> &lt;span class="n">tag&lt;/span>&lt;span class="p">]&lt;/span> &lt;span class="mf">2.2&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">2&lt;/span> &lt;span class="o">-&amp;gt;&lt;/span> &lt;span class="mf">2.2&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">2&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">*&lt;/span> &lt;span class="p">[&lt;/span>&lt;span class="n">new&lt;/span> &lt;span class="n">tag&lt;/span>&lt;span class="p">]&lt;/span> &lt;span class="mf">2.2&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">3&lt;/span> &lt;span class="o">-&amp;gt;&lt;/span> &lt;span class="mf">2.2&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">3&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">*&lt;/span> &lt;span class="p">[&lt;/span>&lt;span class="n">new&lt;/span> &lt;span class="n">tag&lt;/span>&lt;span class="p">]&lt;/span> &lt;span class="mf">2.2&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">4&lt;/span> &lt;span class="o">-&amp;gt;&lt;/span> &lt;span class="mf">2.2&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">4&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">*&lt;/span> &lt;span class="p">[&lt;/span>&lt;span class="n">new&lt;/span> &lt;span class="n">tag&lt;/span>&lt;span class="p">]&lt;/span> &lt;span class="mf">2.2&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">5&lt;/span> &lt;span class="o">-&amp;gt;&lt;/span> &lt;span class="mf">2.2&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">5&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">*&lt;/span> &lt;span class="p">[&lt;/span>&lt;span class="n">new&lt;/span> &lt;span class="n">tag&lt;/span>&lt;span class="p">]&lt;/span> &lt;span class="mf">2.2&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">6&lt;/span> &lt;span class="o">-&amp;gt;&lt;/span> &lt;span class="mf">2.2&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">6&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">*&lt;/span> &lt;span class="p">[&lt;/span>&lt;span class="n">new&lt;/span> &lt;span class="n">tag&lt;/span>&lt;span class="p">]&lt;/span> &lt;span class="mf">2.2&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">7&lt;/span> &lt;span class="o">-&amp;gt;&lt;/span> &lt;span class="mf">2.2&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">7&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">*&lt;/span> &lt;span class="p">[&lt;/span>&lt;span class="n">new&lt;/span> &lt;span class="n">tag&lt;/span>&lt;span class="p">]&lt;/span> &lt;span class="mf">2.2&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">8&lt;/span> &lt;span class="o">-&amp;gt;&lt;/span> &lt;span class="mf">2.2&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">8&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">*&lt;/span> &lt;span class="p">[&lt;/span>&lt;span class="n">new&lt;/span> &lt;span class="n">tag&lt;/span>&lt;span class="p">]&lt;/span> &lt;span class="mf">2.2&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">9&lt;/span> &lt;span class="o">-&amp;gt;&lt;/span> &lt;span class="mf">2.2&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">9&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">*&lt;/span> &lt;span class="p">[&lt;/span>&lt;span class="n">new&lt;/span> &lt;span class="n">tag&lt;/span>&lt;span class="p">]&lt;/span> &lt;span class="mf">2.3&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">0&lt;/span> &lt;span class="o">-&amp;gt;&lt;/span> &lt;span class="mf">2.3&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">0&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">*&lt;/span> &lt;span class="p">[&lt;/span>&lt;span class="n">new&lt;/span> &lt;span class="n">tag&lt;/span>&lt;span class="p">]&lt;/span> &lt;span class="mf">2.4&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">0&lt;/span> &lt;span class="o">-&amp;gt;&lt;/span> &lt;span class="mf">2.4&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">0&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">*&lt;/span> &lt;span class="p">[&lt;/span>&lt;span class="n">new&lt;/span> &lt;span class="n">tag&lt;/span>&lt;span class="p">]&lt;/span> &lt;span class="mf">2.4&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">1&lt;/span> &lt;span class="o">-&amp;gt;&lt;/span> &lt;span class="mf">2.4&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">1&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">*&lt;/span> &lt;span class="p">[&lt;/span>&lt;span class="n">new&lt;/span> &lt;span class="n">tag&lt;/span>&lt;span class="p">]&lt;/span> &lt;span class="mf">2.4&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">10&lt;/span> &lt;span class="o">-&amp;gt;&lt;/span> &lt;span class="mf">2.4&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">10&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">*&lt;/span> &lt;span class="p">[&lt;/span>&lt;span class="n">new&lt;/span> &lt;span class="n">tag&lt;/span>&lt;span class="p">]&lt;/span> &lt;span class="mf">2.4&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">11&lt;/span> &lt;span class="o">-&amp;gt;&lt;/span> &lt;span class="mf">2.4&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">11&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">*&lt;/span> &lt;span class="p">[&lt;/span>&lt;span class="n">new&lt;/span> &lt;span class="n">tag&lt;/span>&lt;span class="p">]&lt;/span> &lt;span class="mf">2.4&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">12&lt;/span> &lt;span class="o">-&amp;gt;&lt;/span> &lt;span class="mf">2.4&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">12&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">*&lt;/span> &lt;span class="p">[&lt;/span>&lt;span class="n">new&lt;/span> &lt;span class="n">tag&lt;/span>&lt;span class="p">]&lt;/span> &lt;span class="mf">2.4&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">13&lt;/span> &lt;span class="o">-&amp;gt;&lt;/span> &lt;span class="mf">2.4&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">13&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">*&lt;/span> &lt;span class="p">[&lt;/span>&lt;span class="n">new&lt;/span> &lt;span class="n">tag&lt;/span>&lt;span class="p">]&lt;/span> &lt;span class="mf">2.4&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">14&lt;/span> &lt;span class="o">-&amp;gt;&lt;/span> &lt;span class="mf">2.4&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">14&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">*&lt;/span> &lt;span class="p">[&lt;/span>&lt;span class="n">new&lt;/span> &lt;span class="n">tag&lt;/span>&lt;span class="p">]&lt;/span> &lt;span class="mf">2.4&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">15&lt;/span> &lt;span class="o">-&amp;gt;&lt;/span> &lt;span class="mf">2.4&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">15&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">*&lt;/span> &lt;span class="p">[&lt;/span>&lt;span class="n">new&lt;/span> &lt;span class="n">tag&lt;/span>&lt;span class="p">]&lt;/span> &lt;span class="mf">2.4&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">16&lt;/span> &lt;span class="o">-&amp;gt;&lt;/span> &lt;span class="mf">2.4&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">16&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">*&lt;/span> &lt;span class="p">[&lt;/span>&lt;span class="n">new&lt;/span> &lt;span class="n">tag&lt;/span>&lt;span class="p">]&lt;/span> &lt;span class="mf">2.4&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">2&lt;/span> &lt;span class="o">-&amp;gt;&lt;/span> &lt;span class="mf">2.4&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">2&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">*&lt;/span> &lt;span class="p">[&lt;/span>&lt;span class="n">new&lt;/span> &lt;span class="n">tag&lt;/span>&lt;span class="p">]&lt;/span> &lt;span class="mf">2.4&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">3&lt;/span> &lt;span class="o">-&amp;gt;&lt;/span> &lt;span class="mf">2.4&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">3&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">*&lt;/span> &lt;span class="p">[&lt;/span>&lt;span class="n">new&lt;/span> &lt;span class="n">tag&lt;/span>&lt;span class="p">]&lt;/span> &lt;span class="mf">2.4&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">4&lt;/span> &lt;span class="o">-&amp;gt;&lt;/span> &lt;span class="mf">2.4&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">4&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">*&lt;/span> &lt;span class="p">[&lt;/span>&lt;span class="n">new&lt;/span> &lt;span class="n">tag&lt;/span>&lt;span class="p">]&lt;/span> &lt;span class="mf">2.4&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">5&lt;/span> &lt;span class="o">-&amp;gt;&lt;/span> &lt;span class="mf">2.4&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">5&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">*&lt;/span> &lt;span class="p">[&lt;/span>&lt;span class="n">new&lt;/span> &lt;span class="n">tag&lt;/span>&lt;span class="p">]&lt;/span> &lt;span class="mf">2.4&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">6&lt;/span> &lt;span class="o">-&amp;gt;&lt;/span> &lt;span class="mf">2.4&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">6&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">*&lt;/span> &lt;span class="p">[&lt;/span>&lt;span class="n">new&lt;/span> &lt;span class="n">tag&lt;/span>&lt;span class="p">]&lt;/span> &lt;span class="mf">2.4&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">7&lt;/span> &lt;span class="o">-&amp;gt;&lt;/span> &lt;span class="mf">2.4&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">7&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">*&lt;/span> &lt;span class="p">[&lt;/span>&lt;span class="n">new&lt;/span> &lt;span class="n">tag&lt;/span>&lt;span class="p">]&lt;/span> &lt;span class="mf">2.4&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">8&lt;/span> &lt;span class="o">-&amp;gt;&lt;/span> &lt;span class="mf">2.4&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">8&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">*&lt;/span> &lt;span class="p">[&lt;/span>&lt;span class="n">new&lt;/span> &lt;span class="n">tag&lt;/span>&lt;span class="p">]&lt;/span> &lt;span class="mf">2.4&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">9&lt;/span> &lt;span class="o">-&amp;gt;&lt;/span> &lt;span class="mf">2.4&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">9&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">*&lt;/span> &lt;span class="p">[&lt;/span>&lt;span class="n">new&lt;/span> &lt;span class="n">tag&lt;/span>&lt;span class="p">]&lt;/span> &lt;span class="mf">2.5&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">0&lt;/span> &lt;span class="o">-&amp;gt;&lt;/span> &lt;span class="mf">2.5&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">0&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">*&lt;/span> &lt;span class="p">[&lt;/span>&lt;span class="n">new&lt;/span> &lt;span class="n">tag&lt;/span>&lt;span class="p">]&lt;/span> &lt;span class="mf">2.5&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">1&lt;/span> &lt;span class="o">-&amp;gt;&lt;/span> &lt;span class="mf">2.5&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">1&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">*&lt;/span> &lt;span class="p">[&lt;/span>&lt;span class="n">new&lt;/span> &lt;span class="n">tag&lt;/span>&lt;span class="p">]&lt;/span> &lt;span class="mf">2.5&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">10&lt;/span> &lt;span class="o">-&amp;gt;&lt;/span> &lt;span class="mf">2.5&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">10&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">*&lt;/span> &lt;span class="p">[&lt;/span>&lt;span class="n">new&lt;/span> &lt;span class="n">tag&lt;/span>&lt;span class="p">]&lt;/span> &lt;span class="mf">2.5&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">11&lt;/span> &lt;span class="o">-&amp;gt;&lt;/span> &lt;span class="mf">2.5&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">11&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">*&lt;/span> &lt;span class="p">[&lt;/span>&lt;span class="n">new&lt;/span> &lt;span class="n">tag&lt;/span>&lt;span class="p">]&lt;/span> &lt;span class="mf">2.5&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">12&lt;/span> &lt;span class="o">-&amp;gt;&lt;/span> &lt;span class="mf">2.5&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">12&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">*&lt;/span> &lt;span class="p">[&lt;/span>&lt;span class="n">new&lt;/span> &lt;span class="n">tag&lt;/span>&lt;span class="p">]&lt;/span> &lt;span class="mf">2.5&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">2&lt;/span> &lt;span class="o">-&amp;gt;&lt;/span> &lt;span class="mf">2.5&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">2&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">*&lt;/span> &lt;span class="p">[&lt;/span>&lt;span class="n">new&lt;/span> &lt;span class="n">tag&lt;/span>&lt;span class="p">]&lt;/span> &lt;span class="mf">2.5&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">3&lt;/span> &lt;span class="o">-&amp;gt;&lt;/span> &lt;span class="mf">2.5&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">3&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">*&lt;/span> &lt;span class="p">[&lt;/span>&lt;span class="n">new&lt;/span> &lt;span class="n">tag&lt;/span>&lt;span class="p">]&lt;/span> &lt;span class="mf">2.5&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">4&lt;/span> &lt;span class="o">-&amp;gt;&lt;/span> &lt;span class="mf">2.5&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">4&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">*&lt;/span> &lt;span class="p">[&lt;/span>&lt;span class="n">new&lt;/span> &lt;span class="n">tag&lt;/span>&lt;span class="p">]&lt;/span> &lt;span class="mf">2.5&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">5&lt;/span> &lt;span class="o">-&amp;gt;&lt;/span> &lt;span class="mf">2.5&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">5&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">*&lt;/span> &lt;span class="p">[&lt;/span>&lt;span class="n">new&lt;/span> &lt;span class="n">tag&lt;/span>&lt;span class="p">]&lt;/span> &lt;span class="mf">2.5&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">6&lt;/span> &lt;span class="o">-&amp;gt;&lt;/span> &lt;span class="mf">2.5&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">6&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">*&lt;/span> &lt;span class="p">[&lt;/span>&lt;span class="n">new&lt;/span> &lt;span class="n">tag&lt;/span>&lt;span class="p">]&lt;/span> &lt;span class="mf">2.5&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">7&lt;/span> &lt;span class="o">-&amp;gt;&lt;/span> &lt;span class="mf">2.5&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">7&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">*&lt;/span> &lt;span class="p">[&lt;/span>&lt;span class="n">new&lt;/span> &lt;span class="n">tag&lt;/span>&lt;span class="p">]&lt;/span> &lt;span class="mf">2.5&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">8&lt;/span> &lt;span class="o">-&amp;gt;&lt;/span> &lt;span class="mf">2.5&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">8&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">*&lt;/span> &lt;span class="p">[&lt;/span>&lt;span class="n">new&lt;/span> &lt;span class="n">tag&lt;/span>&lt;span class="p">]&lt;/span> &lt;span class="mf">2.5&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">9&lt;/span> &lt;span class="o">-&amp;gt;&lt;/span> &lt;span class="mf">2.5&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">9&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">*&lt;/span> &lt;span class="p">[&lt;/span>&lt;span class="n">new&lt;/span> &lt;span class="n">tag&lt;/span>&lt;span class="p">]&lt;/span> &lt;span class="mf">2.6&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">0&lt;/span> &lt;span class="o">-&amp;gt;&lt;/span> &lt;span class="mf">2.6&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">0&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">*&lt;/span> &lt;span class="p">[&lt;/span>&lt;span class="n">new&lt;/span> &lt;span class="n">tag&lt;/span>&lt;span class="p">]&lt;/span> &lt;span class="mf">2.6&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">1&lt;/span> &lt;span class="o">-&amp;gt;&lt;/span> &lt;span class="mf">2.6&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">1&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">*&lt;/span> &lt;span class="p">[&lt;/span>&lt;span class="n">new&lt;/span> &lt;span class="n">tag&lt;/span>&lt;span class="p">]&lt;/span> &lt;span class="mf">2.6&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">2&lt;/span> &lt;span class="o">-&amp;gt;&lt;/span> &lt;span class="mf">2.6&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">2&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">*&lt;/span> &lt;span class="p">[&lt;/span>&lt;span class="n">new&lt;/span> &lt;span class="n">tag&lt;/span>&lt;span class="p">]&lt;/span> &lt;span class="mf">2.7&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">0&lt;/span> &lt;span class="o">-&amp;gt;&lt;/span> &lt;span class="mf">2.7&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">0&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">*&lt;/span> &lt;span class="p">[&lt;/span>&lt;span class="n">new&lt;/span> &lt;span class="n">tag&lt;/span>&lt;span class="p">]&lt;/span> &lt;span class="mf">2.7&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">1&lt;/span> &lt;span class="o">-&amp;gt;&lt;/span> &lt;span class="mf">2.7&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">1&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">*&lt;/span> &lt;span class="p">[&lt;/span>&lt;span class="n">new&lt;/span> &lt;span class="n">tag&lt;/span>&lt;span class="p">]&lt;/span> &lt;span class="mf">2.7&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">2&lt;/span> &lt;span class="o">-&amp;gt;&lt;/span> &lt;span class="mf">2.7&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">2&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">*&lt;/span> &lt;span class="p">[&lt;/span>&lt;span class="n">new&lt;/span> &lt;span class="n">tag&lt;/span>&lt;span class="p">]&lt;/span> &lt;span class="mf">2.7&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">3&lt;/span> &lt;span class="o">-&amp;gt;&lt;/span> &lt;span class="mf">2.7&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">3&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">*&lt;/span> &lt;span class="p">[&lt;/span>&lt;span class="n">new&lt;/span> &lt;span class="n">tag&lt;/span>&lt;span class="p">]&lt;/span> &lt;span class="mf">2.7&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">4&lt;/span> &lt;span class="o">-&amp;gt;&lt;/span> &lt;span class="mf">2.7&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">4&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">*&lt;/span> &lt;span class="p">[&lt;/span>&lt;span class="n">new&lt;/span> &lt;span class="n">tag&lt;/span>&lt;span class="p">]&lt;/span> &lt;span class="mf">2.7&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">5&lt;/span> &lt;span class="o">-&amp;gt;&lt;/span> &lt;span class="mf">2.7&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">5&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">*&lt;/span> &lt;span class="p">[&lt;/span>&lt;span class="n">new&lt;/span> &lt;span class="n">tag&lt;/span>&lt;span class="p">]&lt;/span> &lt;span class="mf">2.7&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">6&lt;/span> &lt;span class="o">-&amp;gt;&lt;/span> &lt;span class="mf">2.7&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">6&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">*&lt;/span> &lt;span class="p">[&lt;/span>&lt;span class="n">new&lt;/span> &lt;span class="n">tag&lt;/span>&lt;span class="p">]&lt;/span> &lt;span class="mf">2.7&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">7&lt;/span> &lt;span class="o">-&amp;gt;&lt;/span> &lt;span class="mf">2.7&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">7&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">*&lt;/span> &lt;span class="p">[&lt;/span>&lt;span class="n">new&lt;/span> &lt;span class="n">tag&lt;/span>&lt;span class="p">]&lt;/span> &lt;span class="mf">3.0&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">0&lt;/span> &lt;span class="o">-&amp;gt;&lt;/span> &lt;span class="mf">3.0&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">0&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">*&lt;/span> &lt;span class="p">[&lt;/span>&lt;span class="n">new&lt;/span> &lt;span class="n">tag&lt;/span>&lt;span class="p">]&lt;/span> &lt;span class="mf">3.0&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">1&lt;/span> &lt;span class="o">-&amp;gt;&lt;/span> &lt;span class="mf">3.0&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">1&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">*&lt;/span> &lt;span class="p">[&lt;/span>&lt;span class="n">new&lt;/span> &lt;span class="n">tag&lt;/span>&lt;span class="p">]&lt;/span> &lt;span class="mf">3.0&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">10&lt;/span> &lt;span class="o">-&amp;gt;&lt;/span> &lt;span class="mf">3.0&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">10&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">*&lt;/span> &lt;span class="p">[&lt;/span>&lt;span class="n">new&lt;/span> &lt;span class="n">tag&lt;/span>&lt;span class="p">]&lt;/span> &lt;span class="mf">3.0&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">11&lt;/span> &lt;span class="o">-&amp;gt;&lt;/span> &lt;span class="mf">3.0&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">11&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">*&lt;/span> &lt;span class="p">[&lt;/span>&lt;span class="n">new&lt;/span> &lt;span class="n">tag&lt;/span>&lt;span class="p">]&lt;/span> &lt;span class="mf">3.0&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">2&lt;/span> &lt;span class="o">-&amp;gt;&lt;/span> &lt;span class="mf">3.0&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">2&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">*&lt;/span> &lt;span class="p">[&lt;/span>&lt;span class="n">new&lt;/span> &lt;span class="n">tag&lt;/span>&lt;span class="p">]&lt;/span> &lt;span class="mf">3.0&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">3&lt;/span> &lt;span class="o">-&amp;gt;&lt;/span> &lt;span class="mf">3.0&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">3&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">*&lt;/span> &lt;span class="p">[&lt;/span>&lt;span class="n">new&lt;/span> &lt;span class="n">tag&lt;/span>&lt;span class="p">]&lt;/span> &lt;span class="mf">3.0&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">4&lt;/span> &lt;span class="o">-&amp;gt;&lt;/span> &lt;span class="mf">3.0&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">4&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">*&lt;/span> &lt;span class="p">[&lt;/span>&lt;span class="n">new&lt;/span> &lt;span class="n">tag&lt;/span>&lt;span class="p">]&lt;/span> &lt;span class="mf">3.0&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">5&lt;/span> &lt;span class="o">-&amp;gt;&lt;/span> &lt;span class="mf">3.0&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">5&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">*&lt;/span> &lt;span class="p">[&lt;/span>&lt;span class="n">new&lt;/span> &lt;span class="n">tag&lt;/span>&lt;span class="p">]&lt;/span> &lt;span class="mf">3.0&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">6&lt;/span> &lt;span class="o">-&amp;gt;&lt;/span> &lt;span class="mf">3.0&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">6&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">*&lt;/span> &lt;span class="p">[&lt;/span>&lt;span class="n">new&lt;/span> &lt;span class="n">tag&lt;/span>&lt;span class="p">]&lt;/span> &lt;span class="mf">3.0&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">7&lt;/span> &lt;span class="o">-&amp;gt;&lt;/span> &lt;span class="mf">3.0&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">7&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">*&lt;/span> &lt;span class="p">[&lt;/span>&lt;span class="n">new&lt;/span> &lt;span class="n">tag&lt;/span>&lt;span class="p">]&lt;/span> &lt;span class="mf">3.0&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">8&lt;/span> &lt;span class="o">-&amp;gt;&lt;/span> &lt;span class="mf">3.0&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">8&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">*&lt;/span> &lt;span class="p">[&lt;/span>&lt;span class="n">new&lt;/span> &lt;span class="n">tag&lt;/span>&lt;span class="p">]&lt;/span> &lt;span class="mf">3.0&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">9&lt;/span> &lt;span class="o">-&amp;gt;&lt;/span> &lt;span class="mf">3.0&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">9&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">*&lt;/span> &lt;span class="p">[&lt;/span>&lt;span class="n">new&lt;/span> &lt;span class="n">tag&lt;/span>&lt;span class="p">]&lt;/span> &lt;span class="mf">3.1&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">0&lt;/span> &lt;span class="o">-&amp;gt;&lt;/span> &lt;span class="mf">3.1&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">0&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">*&lt;/span> &lt;span class="p">[&lt;/span>&lt;span class="n">new&lt;/span> &lt;span class="n">tag&lt;/span>&lt;span class="p">]&lt;/span> &lt;span class="mf">3.1&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">1&lt;/span> &lt;span class="o">-&amp;gt;&lt;/span> &lt;span class="mf">3.1&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">1&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">*&lt;/span> &lt;span class="p">[&lt;/span>&lt;span class="n">new&lt;/span> &lt;span class="n">tag&lt;/span>&lt;span class="p">]&lt;/span> &lt;span class="mf">3.1&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">10&lt;/span> &lt;span class="o">-&amp;gt;&lt;/span> &lt;span class="mf">3.1&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">10&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">*&lt;/span> &lt;span class="p">[&lt;/span>&lt;span class="n">new&lt;/span> &lt;span class="n">tag&lt;/span>&lt;span class="p">]&lt;/span> &lt;span class="mf">3.1&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">11&lt;/span> &lt;span class="o">-&amp;gt;&lt;/span> &lt;span class="mf">3.1&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">11&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">*&lt;/span> &lt;span class="p">[&lt;/span>&lt;span class="n">new&lt;/span> &lt;span class="n">tag&lt;/span>&lt;span class="p">]&lt;/span> &lt;span class="mf">3.1&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">12&lt;/span> &lt;span class="o">-&amp;gt;&lt;/span> &lt;span class="mf">3.1&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">12&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">*&lt;/span> &lt;span class="p">[&lt;/span>&lt;span class="n">new&lt;/span> &lt;span class="n">tag&lt;/span>&lt;span class="p">]&lt;/span> &lt;span class="mf">3.1&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">2&lt;/span> &lt;span class="o">-&amp;gt;&lt;/span> &lt;span class="mf">3.1&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">2&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">*&lt;/span> &lt;span class="p">[&lt;/span>&lt;span class="n">new&lt;/span> &lt;span class="n">tag&lt;/span>&lt;span class="p">]&lt;/span> &lt;span class="mf">3.1&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">3&lt;/span> &lt;span class="o">-&amp;gt;&lt;/span> &lt;span class="mf">3.1&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">3&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">*&lt;/span> &lt;span class="p">[&lt;/span>&lt;span class="n">new&lt;/span> &lt;span class="n">tag&lt;/span>&lt;span class="p">]&lt;/span> &lt;span class="mf">3.1&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">4&lt;/span> &lt;span class="o">-&amp;gt;&lt;/span> &lt;span class="mf">3.1&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">4&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">*&lt;/span> &lt;span class="p">[&lt;/span>&lt;span class="n">new&lt;/span> &lt;span class="n">tag&lt;/span>&lt;span class="p">]&lt;/span> &lt;span class="mf">3.1&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">5&lt;/span> &lt;span class="o">-&amp;gt;&lt;/span> &lt;span class="mf">3.1&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">5&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">*&lt;/span> &lt;span class="p">[&lt;/span>&lt;span class="n">new&lt;/span> &lt;span class="n">tag&lt;/span>&lt;span class="p">]&lt;/span> &lt;span class="mf">3.1&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">6&lt;/span> &lt;span class="o">-&amp;gt;&lt;/span> &lt;span class="mf">3.1&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">6&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">*&lt;/span> &lt;span class="p">[&lt;/span>&lt;span class="n">new&lt;/span> &lt;span class="n">tag&lt;/span>&lt;span class="p">]&lt;/span> &lt;span class="mf">3.1&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">7&lt;/span> &lt;span class="o">-&amp;gt;&lt;/span> &lt;span class="mf">3.1&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">7&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">*&lt;/span> &lt;span class="p">[&lt;/span>&lt;span class="n">new&lt;/span> &lt;span class="n">tag&lt;/span>&lt;span class="p">]&lt;/span> &lt;span class="mf">3.1&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">8&lt;/span> &lt;span class="o">-&amp;gt;&lt;/span> &lt;span class="mf">3.1&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">8&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">*&lt;/span> &lt;span class="p">[&lt;/span>&lt;span class="n">new&lt;/span> &lt;span class="n">tag&lt;/span>&lt;span class="p">]&lt;/span> &lt;span class="mf">3.1&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">9&lt;/span> &lt;span class="o">-&amp;gt;&lt;/span> &lt;span class="mf">3.1&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">9&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">*&lt;/span> &lt;span class="p">[&lt;/span>&lt;span class="n">new&lt;/span> &lt;span class="n">tag&lt;/span>&lt;span class="p">]&lt;/span> &lt;span class="mf">3.2&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">0&lt;/span> &lt;span class="o">-&amp;gt;&lt;/span> &lt;span class="mf">3.2&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">0&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">*&lt;/span> &lt;span class="p">[&lt;/span>&lt;span class="n">new&lt;/span> &lt;span class="n">tag&lt;/span>&lt;span class="p">]&lt;/span> &lt;span class="mf">3.2&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">1&lt;/span> &lt;span class="o">-&amp;gt;&lt;/span> &lt;span class="mf">3.2&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">1&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">*&lt;/span> &lt;span class="p">[&lt;/span>&lt;span class="n">new&lt;/span> &lt;span class="n">tag&lt;/span>&lt;span class="p">]&lt;/span> &lt;span class="mf">3.2&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">10&lt;/span> &lt;span class="o">-&amp;gt;&lt;/span> &lt;span class="mf">3.2&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">10&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">*&lt;/span> &lt;span class="p">[&lt;/span>&lt;span class="n">new&lt;/span> &lt;span class="n">tag&lt;/span>&lt;span class="p">]&lt;/span> &lt;span class="mf">3.2&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">11&lt;/span> &lt;span class="o">-&amp;gt;&lt;/span> &lt;span class="mf">3.2&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">11&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">*&lt;/span> &lt;span class="p">[&lt;/span>&lt;span class="n">new&lt;/span> &lt;span class="n">tag&lt;/span>&lt;span class="p">]&lt;/span> &lt;span class="mf">3.2&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">12&lt;/span> &lt;span class="o">-&amp;gt;&lt;/span> &lt;span class="mf">3.2&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">12&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">*&lt;/span> &lt;span class="p">[&lt;/span>&lt;span class="n">new&lt;/span> &lt;span class="n">tag&lt;/span>&lt;span class="p">]&lt;/span> &lt;span class="mf">3.2&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">13&lt;/span> &lt;span class="o">-&amp;gt;&lt;/span> &lt;span class="mf">3.2&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">13&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">*&lt;/span> &lt;span class="p">[&lt;/span>&lt;span class="n">new&lt;/span> &lt;span class="n">tag&lt;/span>&lt;span class="p">]&lt;/span> &lt;span class="mf">3.2&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">14&lt;/span> &lt;span class="o">-&amp;gt;&lt;/span> &lt;span class="mf">3.2&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">14&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">*&lt;/span> &lt;span class="p">[&lt;/span>&lt;span class="n">new&lt;/span> &lt;span class="n">tag&lt;/span>&lt;span class="p">]&lt;/span> &lt;span class="mf">3.2&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">15&lt;/span> &lt;span class="o">-&amp;gt;&lt;/span> &lt;span class="mf">3.2&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">15&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">*&lt;/span> &lt;span class="p">[&lt;/span>&lt;span class="n">new&lt;/span> &lt;span class="n">tag&lt;/span>&lt;span class="p">]&lt;/span> &lt;span class="mf">3.2&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">16&lt;/span> &lt;span class="o">-&amp;gt;&lt;/span> &lt;span class="mf">3.2&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">16&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">*&lt;/span> &lt;span class="p">[&lt;/span>&lt;span class="n">new&lt;/span> &lt;span class="n">tag&lt;/span>&lt;span class="p">]&lt;/span> &lt;span class="mf">3.2&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">17&lt;/span> &lt;span class="o">-&amp;gt;&lt;/span> &lt;span class="mf">3.2&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">17&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">*&lt;/span> &lt;span class="p">[&lt;/span>&lt;span class="n">new&lt;/span> &lt;span class="n">tag&lt;/span>&lt;span class="p">]&lt;/span> &lt;span class="mf">3.2&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">2&lt;/span> &lt;span class="o">-&amp;gt;&lt;/span> &lt;span class="mf">3.2&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">2&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">*&lt;/span> &lt;span class="p">[&lt;/span>&lt;span class="n">new&lt;/span> &lt;span class="n">tag&lt;/span>&lt;span class="p">]&lt;/span> &lt;span class="mf">3.2&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">3&lt;/span> &lt;span class="o">-&amp;gt;&lt;/span> &lt;span class="mf">3.2&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">3&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">*&lt;/span> &lt;span class="p">[&lt;/span>&lt;span class="n">new&lt;/span> &lt;span class="n">tag&lt;/span>&lt;span class="p">]&lt;/span> &lt;span class="mf">3.2&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">4&lt;/span> &lt;span class="o">-&amp;gt;&lt;/span> &lt;span class="mf">3.2&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">4&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">*&lt;/span> &lt;span class="p">[&lt;/span>&lt;span class="n">new&lt;/span> &lt;span class="n">tag&lt;/span>&lt;span class="p">]&lt;/span> &lt;span class="mf">3.2&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">5&lt;/span> &lt;span class="o">-&amp;gt;&lt;/span> &lt;span class="mf">3.2&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">5&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">*&lt;/span> &lt;span class="p">[&lt;/span>&lt;span class="n">new&lt;/span> &lt;span class="n">tag&lt;/span>&lt;span class="p">]&lt;/span> &lt;span class="mf">3.2&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">6&lt;/span> &lt;span class="o">-&amp;gt;&lt;/span> &lt;span class="mf">3.2&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">6&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">*&lt;/span> &lt;span class="p">[&lt;/span>&lt;span class="n">new&lt;/span> &lt;span class="n">tag&lt;/span>&lt;span class="p">]&lt;/span> &lt;span class="mf">3.2&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">7&lt;/span> &lt;span class="o">-&amp;gt;&lt;/span> &lt;span class="mf">3.2&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">7&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">*&lt;/span> &lt;span class="p">[&lt;/span>&lt;span class="n">new&lt;/span> &lt;span class="n">tag&lt;/span>&lt;span class="p">]&lt;/span> &lt;span class="mf">3.2&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">8&lt;/span> &lt;span class="o">-&amp;gt;&lt;/span> &lt;span class="mf">3.2&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">8&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">*&lt;/span> &lt;span class="p">[&lt;/span>&lt;span class="n">new&lt;/span> &lt;span class="n">tag&lt;/span>&lt;span class="p">]&lt;/span> &lt;span class="mf">3.2&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">9&lt;/span> &lt;span class="o">-&amp;gt;&lt;/span> &lt;span class="mf">3.2&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">9&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">*&lt;/span> &lt;span class="p">[&lt;/span>&lt;span class="n">new&lt;/span> &lt;span class="n">tag&lt;/span>&lt;span class="p">]&lt;/span> &lt;span class="mf">3.3&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">0&lt;/span> &lt;span class="o">-&amp;gt;&lt;/span> &lt;span class="mf">3.3&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">0&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">*&lt;/span> &lt;span class="p">[&lt;/span>&lt;span class="n">new&lt;/span> &lt;span class="n">tag&lt;/span>&lt;span class="p">]&lt;/span> &lt;span class="mf">3.3&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">1&lt;/span> &lt;span class="o">-&amp;gt;&lt;/span> &lt;span class="mf">3.3&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">1&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">*&lt;/span> &lt;span class="p">[&lt;/span>&lt;span class="n">new&lt;/span> &lt;span class="n">tag&lt;/span>&lt;span class="p">]&lt;/span> &lt;span class="mf">3.3&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">10&lt;/span> &lt;span class="o">-&amp;gt;&lt;/span> &lt;span class="mf">3.3&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">10&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">*&lt;/span> &lt;span class="p">[&lt;/span>&lt;span class="n">new&lt;/span> &lt;span class="n">tag&lt;/span>&lt;span class="p">]&lt;/span> &lt;span class="mf">3.3&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">11&lt;/span> &lt;span class="o">-&amp;gt;&lt;/span> &lt;span class="mf">3.3&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">11&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">*&lt;/span> &lt;span class="p">[&lt;/span>&lt;span class="n">new&lt;/span> &lt;span class="n">tag&lt;/span>&lt;span class="p">]&lt;/span> &lt;span class="mf">3.3&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">12&lt;/span> &lt;span class="o">-&amp;gt;&lt;/span> &lt;span class="mf">3.3&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">12&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">*&lt;/span> &lt;span class="p">[&lt;/span>&lt;span class="n">new&lt;/span> &lt;span class="n">tag&lt;/span>&lt;span class="p">]&lt;/span> &lt;span class="mf">3.3&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">13&lt;/span> &lt;span class="o">-&amp;gt;&lt;/span> &lt;span class="mf">3.3&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">13&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">*&lt;/span> &lt;span class="p">[&lt;/span>&lt;span class="n">new&lt;/span> &lt;span class="n">tag&lt;/span>&lt;span class="p">]&lt;/span> &lt;span class="mf">3.3&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">14&lt;/span> &lt;span class="o">-&amp;gt;&lt;/span> &lt;span class="mf">3.3&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">14&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">*&lt;/span> &lt;span class="p">[&lt;/span>&lt;span class="n">new&lt;/span> &lt;span class="n">tag&lt;/span>&lt;span class="p">]&lt;/span> &lt;span class="mf">3.3&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">15&lt;/span> &lt;span class="o">-&amp;gt;&lt;/span> &lt;span class="mf">3.3&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">15&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">*&lt;/span> &lt;span class="p">[&lt;/span>&lt;span class="n">new&lt;/span> &lt;span class="n">tag&lt;/span>&lt;span class="p">]&lt;/span> &lt;span class="mf">3.3&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">16&lt;/span> &lt;span class="o">-&amp;gt;&lt;/span> &lt;span class="mf">3.3&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">16&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">*&lt;/span> &lt;span class="p">[&lt;/span>&lt;span class="n">new&lt;/span> &lt;span class="n">tag&lt;/span>&lt;span class="p">]&lt;/span> &lt;span class="mf">3.3&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">2&lt;/span> &lt;span class="o">-&amp;gt;&lt;/span> &lt;span class="mf">3.3&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">2&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">*&lt;/span> &lt;span class="p">[&lt;/span>&lt;span class="n">new&lt;/span> &lt;span class="n">tag&lt;/span>&lt;span class="p">]&lt;/span> &lt;span class="mf">3.3&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">3&lt;/span> &lt;span class="o">-&amp;gt;&lt;/span> &lt;span class="mf">3.3&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">3&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">*&lt;/span> &lt;span class="p">[&lt;/span>&lt;span class="n">new&lt;/span> &lt;span class="n">tag&lt;/span>&lt;span class="p">]&lt;/span> &lt;span class="mf">3.3&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">4&lt;/span> &lt;span class="o">-&amp;gt;&lt;/span> &lt;span class="mf">3.3&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">4&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">*&lt;/span> &lt;span class="p">[&lt;/span>&lt;span class="n">new&lt;/span> &lt;span class="n">tag&lt;/span>&lt;span class="p">]&lt;/span> &lt;span class="mf">3.3&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">5&lt;/span> &lt;span class="o">-&amp;gt;&lt;/span> &lt;span class="mf">3.3&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">5&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">*&lt;/span> &lt;span class="p">[&lt;/span>&lt;span class="n">new&lt;/span> &lt;span class="n">tag&lt;/span>&lt;span class="p">]&lt;/span> &lt;span class="mf">3.3&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">6&lt;/span> &lt;span class="o">-&amp;gt;&lt;/span> &lt;span class="mf">3.3&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">6&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">*&lt;/span> &lt;span class="p">[&lt;/span>&lt;span class="n">new&lt;/span> &lt;span class="n">tag&lt;/span>&lt;span class="p">]&lt;/span> &lt;span class="mf">3.3&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">7&lt;/span> &lt;span class="o">-&amp;gt;&lt;/span> &lt;span class="mf">3.3&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">7&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">*&lt;/span> &lt;span class="p">[&lt;/span>&lt;span class="n">new&lt;/span> &lt;span class="n">tag&lt;/span>&lt;span class="p">]&lt;/span> &lt;span class="mf">3.3&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">8&lt;/span> &lt;span class="o">-&amp;gt;&lt;/span> &lt;span class="mf">3.3&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">8&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">*&lt;/span> &lt;span class="p">[&lt;/span>&lt;span class="n">new&lt;/span> &lt;span class="n">tag&lt;/span>&lt;span class="p">]&lt;/span> &lt;span class="mf">3.3&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">9&lt;/span> &lt;span class="o">-&amp;gt;&lt;/span> &lt;span class="mf">3.3&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">9&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">*&lt;/span> &lt;span class="p">[&lt;/span>&lt;span class="n">new&lt;/span> &lt;span class="n">tag&lt;/span>&lt;span class="p">]&lt;/span> &lt;span class="mf">3.4&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">0&lt;/span> &lt;span class="o">-&amp;gt;&lt;/span> &lt;span class="mf">3.4&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">0&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">*&lt;/span> &lt;span class="p">[&lt;/span>&lt;span class="n">new&lt;/span> &lt;span class="n">tag&lt;/span>&lt;span class="p">]&lt;/span> &lt;span class="mf">3.4&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">1&lt;/span> &lt;span class="o">-&amp;gt;&lt;/span> &lt;span class="mf">3.4&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">1&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">*&lt;/span> &lt;span class="p">[&lt;/span>&lt;span class="n">new&lt;/span> &lt;span class="n">tag&lt;/span>&lt;span class="p">]&lt;/span> &lt;span class="mf">3.4&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">10&lt;/span> &lt;span class="o">-&amp;gt;&lt;/span> &lt;span class="mf">3.4&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">10&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">*&lt;/span> &lt;span class="p">[&lt;/span>&lt;span class="n">new&lt;/span> &lt;span class="n">tag&lt;/span>&lt;span class="p">]&lt;/span> &lt;span class="mf">3.4&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">11&lt;/span> &lt;span class="o">-&amp;gt;&lt;/span> &lt;span class="mf">3.4&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">11&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">*&lt;/span> &lt;span class="p">[&lt;/span>&lt;span class="n">new&lt;/span> &lt;span class="n">tag&lt;/span>&lt;span class="p">]&lt;/span> &lt;span class="mf">3.4&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">2&lt;/span> &lt;span class="o">-&amp;gt;&lt;/span> &lt;span class="mf">3.4&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">2&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">*&lt;/span> &lt;span class="p">[&lt;/span>&lt;span class="n">new&lt;/span> &lt;span class="n">tag&lt;/span>&lt;span class="p">]&lt;/span> &lt;span class="mf">3.4&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">3&lt;/span> &lt;span class="o">-&amp;gt;&lt;/span> &lt;span class="mf">3.4&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">3&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">*&lt;/span> &lt;span class="p">[&lt;/span>&lt;span class="n">new&lt;/span> &lt;span class="n">tag&lt;/span>&lt;span class="p">]&lt;/span> &lt;span class="mf">3.4&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">4&lt;/span> &lt;span class="o">-&amp;gt;&lt;/span> &lt;span class="mf">3.4&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">4&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">*&lt;/span> &lt;span class="p">[&lt;/span>&lt;span class="n">new&lt;/span> &lt;span class="n">tag&lt;/span>&lt;span class="p">]&lt;/span> &lt;span class="mf">3.4&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">5&lt;/span> &lt;span class="o">-&amp;gt;&lt;/span> &lt;span class="mf">3.4&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">5&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">*&lt;/span> &lt;span class="p">[&lt;/span>&lt;span class="n">new&lt;/span> &lt;span class="n">tag&lt;/span>&lt;span class="p">]&lt;/span> &lt;span class="mf">3.4&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">6&lt;/span> &lt;span class="o">-&amp;gt;&lt;/span> &lt;span class="mf">3.4&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">6&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">*&lt;/span> &lt;span class="p">[&lt;/span>&lt;span class="n">new&lt;/span> &lt;span class="n">tag&lt;/span>&lt;span class="p">]&lt;/span> &lt;span class="mf">3.4&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">7&lt;/span> &lt;span class="o">-&amp;gt;&lt;/span> &lt;span class="mf">3.4&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">7&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">*&lt;/span> &lt;span class="p">[&lt;/span>&lt;span class="n">new&lt;/span> &lt;span class="n">tag&lt;/span>&lt;span class="p">]&lt;/span> &lt;span class="mf">3.4&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">8&lt;/span> &lt;span class="o">-&amp;gt;&lt;/span> &lt;span class="mf">3.4&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">8&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">*&lt;/span> &lt;span class="p">[&lt;/span>&lt;span class="n">new&lt;/span> &lt;span class="n">tag&lt;/span>&lt;span class="p">]&lt;/span> &lt;span class="mf">3.4&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">9&lt;/span> &lt;span class="o">-&amp;gt;&lt;/span> &lt;span class="mf">3.4&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">9&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">*&lt;/span> &lt;span class="p">[&lt;/span>&lt;span class="n">new&lt;/span> &lt;span class="n">tag&lt;/span>&lt;span class="p">]&lt;/span> &lt;span class="mf">3.5&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">0&lt;/span> &lt;span class="o">-&amp;gt;&lt;/span> &lt;span class="mf">3.5&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">0&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">*&lt;/span> &lt;span class="p">[&lt;/span>&lt;span class="n">new&lt;/span> &lt;span class="n">tag&lt;/span>&lt;span class="p">]&lt;/span> &lt;span class="mf">3.5&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">1&lt;/span> &lt;span class="o">-&amp;gt;&lt;/span> &lt;span class="mf">3.5&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">1&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">*&lt;/span> &lt;span class="p">[&lt;/span>&lt;span class="n">new&lt;/span> &lt;span class="n">tag&lt;/span>&lt;span class="p">]&lt;/span> &lt;span class="mf">3.5&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">10&lt;/span> &lt;span class="o">-&amp;gt;&lt;/span> &lt;span class="mf">3.5&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">10&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">*&lt;/span> &lt;span class="p">[&lt;/span>&lt;span class="n">new&lt;/span> &lt;span class="n">tag&lt;/span>&lt;span class="p">]&lt;/span> &lt;span class="mf">3.5&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">2&lt;/span> &lt;span class="o">-&amp;gt;&lt;/span> &lt;span class="mf">3.5&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">2&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">*&lt;/span> &lt;span class="p">[&lt;/span>&lt;span class="n">new&lt;/span> &lt;span class="n">tag&lt;/span>&lt;span class="p">]&lt;/span> &lt;span class="mf">3.5&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">3&lt;/span> &lt;span class="o">-&amp;gt;&lt;/span> &lt;span class="mf">3.5&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">3&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">*&lt;/span> &lt;span class="p">[&lt;/span>&lt;span class="n">new&lt;/span> &lt;span class="n">tag&lt;/span>&lt;span class="p">]&lt;/span> &lt;span class="mf">3.5&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">4&lt;/span> &lt;span class="o">-&amp;gt;&lt;/span> &lt;span class="mf">3.5&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">4&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">*&lt;/span> &lt;span class="p">[&lt;/span>&lt;span class="n">new&lt;/span> &lt;span class="n">tag&lt;/span>&lt;span class="p">]&lt;/span> &lt;span class="mf">3.5&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">5&lt;/span> &lt;span class="o">-&amp;gt;&lt;/span> &lt;span class="mf">3.5&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">5&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">*&lt;/span> &lt;span class="p">[&lt;/span>&lt;span class="n">new&lt;/span> &lt;span class="n">tag&lt;/span>&lt;span class="p">]&lt;/span> &lt;span class="mf">3.5&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">6&lt;/span> &lt;span class="o">-&amp;gt;&lt;/span> &lt;span class="mf">3.5&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">6&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">*&lt;/span> &lt;span class="p">[&lt;/span>&lt;span class="n">new&lt;/span> &lt;span class="n">tag&lt;/span>&lt;span class="p">]&lt;/span> &lt;span class="mf">3.5&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">7&lt;/span> &lt;span class="o">-&amp;gt;&lt;/span> &lt;span class="mf">3.5&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">7&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">*&lt;/span> &lt;span class="p">[&lt;/span>&lt;span class="n">new&lt;/span> &lt;span class="n">tag&lt;/span>&lt;span class="p">]&lt;/span> &lt;span class="mf">3.5&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">8&lt;/span> &lt;span class="o">-&amp;gt;&lt;/span> &lt;span class="mf">3.5&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">8&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">*&lt;/span> &lt;span class="p">[&lt;/span>&lt;span class="n">new&lt;/span> &lt;span class="n">tag&lt;/span>&lt;span class="p">]&lt;/span> &lt;span class="mf">3.5&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">9&lt;/span> &lt;span class="o">-&amp;gt;&lt;/span> &lt;span class="mf">3.5&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">9&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">*&lt;/span> &lt;span class="p">[&lt;/span>&lt;span class="n">new&lt;/span> &lt;span class="n">tag&lt;/span>&lt;span class="p">]&lt;/span> &lt;span class="mf">3.6&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">0&lt;/span> &lt;span class="o">-&amp;gt;&lt;/span> &lt;span class="mf">3.6&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">0&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">*&lt;/span> &lt;span class="p">[&lt;/span>&lt;span class="n">new&lt;/span> &lt;span class="n">tag&lt;/span>&lt;span class="p">]&lt;/span> &lt;span class="mf">3.6&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">1&lt;/span> &lt;span class="o">-&amp;gt;&lt;/span> &lt;span class="mf">3.6&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">1&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">*&lt;/span> &lt;span class="p">[&lt;/span>&lt;span class="n">new&lt;/span> &lt;span class="n">tag&lt;/span>&lt;span class="p">]&lt;/span> &lt;span class="mf">3.6&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">10&lt;/span> &lt;span class="o">-&amp;gt;&lt;/span> &lt;span class="mf">3.6&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">10&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">*&lt;/span> &lt;span class="p">[&lt;/span>&lt;span class="n">new&lt;/span> &lt;span class="n">tag&lt;/span>&lt;span class="p">]&lt;/span> &lt;span class="mf">3.6&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">11&lt;/span> &lt;span class="o">-&amp;gt;&lt;/span> &lt;span class="mf">3.6&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">11&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">*&lt;/span> &lt;span class="p">[&lt;/span>&lt;span class="n">new&lt;/span> &lt;span class="n">tag&lt;/span>&lt;span class="p">]&lt;/span> &lt;span class="mf">3.6&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">12&lt;/span> &lt;span class="o">-&amp;gt;&lt;/span> &lt;span class="mf">3.6&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">12&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">*&lt;/span> &lt;span class="p">[&lt;/span>&lt;span class="n">new&lt;/span> &lt;span class="n">tag&lt;/span>&lt;span class="p">]&lt;/span> &lt;span class="mf">3.6&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">13&lt;/span> &lt;span class="o">-&amp;gt;&lt;/span> &lt;span class="mf">3.6&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">13&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">*&lt;/span> &lt;span class="p">[&lt;/span>&lt;span class="n">new&lt;/span> &lt;span class="n">tag&lt;/span>&lt;span class="p">]&lt;/span> &lt;span class="mf">3.6&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">14&lt;/span> &lt;span class="o">-&amp;gt;&lt;/span> &lt;span class="mf">3.6&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">14&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">*&lt;/span> &lt;span class="p">[&lt;/span>&lt;span class="n">new&lt;/span> &lt;span class="n">tag&lt;/span>&lt;span class="p">]&lt;/span> &lt;span class="mf">3.6&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">15&lt;/span> &lt;span class="o">-&amp;gt;&lt;/span> &lt;span class="mf">3.6&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">15&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">*&lt;/span> &lt;span class="p">[&lt;/span>&lt;span class="n">new&lt;/span> &lt;span class="n">tag&lt;/span>&lt;span class="p">]&lt;/span> &lt;span class="mf">3.6&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">16&lt;/span> &lt;span class="o">-&amp;gt;&lt;/span> &lt;span class="mf">3.6&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">16&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">*&lt;/span> &lt;span class="p">[&lt;/span>&lt;span class="n">new&lt;/span> &lt;span class="n">tag&lt;/span>&lt;span class="p">]&lt;/span> &lt;span class="mf">3.6&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">17&lt;/span> &lt;span class="o">-&amp;gt;&lt;/span> &lt;span class="mf">3.6&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">17&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">*&lt;/span> &lt;span class="p">[&lt;/span>&lt;span class="n">new&lt;/span> &lt;span class="n">tag&lt;/span>&lt;span class="p">]&lt;/span> &lt;span class="mf">3.6&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">18&lt;/span> &lt;span class="o">-&amp;gt;&lt;/span> &lt;span class="mf">3.6&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">18&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">*&lt;/span> &lt;span class="p">[&lt;/span>&lt;span class="n">new&lt;/span> &lt;span class="n">tag&lt;/span>&lt;span class="p">]&lt;/span> &lt;span class="mf">3.6&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">19&lt;/span> &lt;span class="o">-&amp;gt;&lt;/span> &lt;span class="mf">3.6&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">19&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">*&lt;/span> &lt;span class="p">[&lt;/span>&lt;span class="n">new&lt;/span> &lt;span class="n">tag&lt;/span>&lt;span class="p">]&lt;/span> &lt;span class="mf">3.6&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">2&lt;/span> &lt;span class="o">-&amp;gt;&lt;/span> &lt;span class="mf">3.6&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">2&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">*&lt;/span> &lt;span class="p">[&lt;/span>&lt;span class="n">new&lt;/span> &lt;span class="n">tag&lt;/span>&lt;span class="p">]&lt;/span> &lt;span class="mf">3.6&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">20&lt;/span> &lt;span class="o">-&amp;gt;&lt;/span> &lt;span class="mf">3.6&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">20&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">*&lt;/span> &lt;span class="p">[&lt;/span>&lt;span class="n">new&lt;/span> &lt;span class="n">tag&lt;/span>&lt;span class="p">]&lt;/span> &lt;span class="mf">3.6&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">21&lt;/span> &lt;span class="o">-&amp;gt;&lt;/span> &lt;span class="mf">3.6&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">21&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">*&lt;/span> &lt;span class="p">[&lt;/span>&lt;span class="n">new&lt;/span> &lt;span class="n">tag&lt;/span>&lt;span class="p">]&lt;/span> &lt;span class="mf">3.6&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">3&lt;/span> &lt;span class="o">-&amp;gt;&lt;/span> &lt;span class="mf">3.6&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">3&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">*&lt;/span> &lt;span class="p">[&lt;/span>&lt;span class="n">new&lt;/span> &lt;span class="n">tag&lt;/span>&lt;span class="p">]&lt;/span> &lt;span class="mf">3.6&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">4&lt;/span> &lt;span class="o">-&amp;gt;&lt;/span> &lt;span class="mf">3.6&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">4&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">*&lt;/span> &lt;span class="p">[&lt;/span>&lt;span class="n">new&lt;/span> &lt;span class="n">tag&lt;/span>&lt;span class="p">]&lt;/span> &lt;span class="mf">3.6&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">5&lt;/span> &lt;span class="o">-&amp;gt;&lt;/span> &lt;span class="mf">3.6&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">5&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">*&lt;/span> &lt;span class="p">[&lt;/span>&lt;span class="n">new&lt;/span> &lt;span class="n">tag&lt;/span>&lt;span class="p">]&lt;/span> &lt;span class="mf">3.6&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">6&lt;/span> &lt;span class="o">-&amp;gt;&lt;/span> &lt;span class="mf">3.6&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">6&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">*&lt;/span> &lt;span class="p">[&lt;/span>&lt;span class="n">new&lt;/span> &lt;span class="n">tag&lt;/span>&lt;span class="p">]&lt;/span> &lt;span class="mf">3.6&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">7&lt;/span> &lt;span class="o">-&amp;gt;&lt;/span> &lt;span class="mf">3.6&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">7&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">*&lt;/span> &lt;span class="p">[&lt;/span>&lt;span class="n">new&lt;/span> &lt;span class="n">tag&lt;/span>&lt;span class="p">]&lt;/span> &lt;span class="mf">3.6&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">8&lt;/span> &lt;span class="o">-&amp;gt;&lt;/span> &lt;span class="mf">3.6&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">8&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">*&lt;/span> &lt;span class="p">[&lt;/span>&lt;span class="n">new&lt;/span> &lt;span class="n">tag&lt;/span>&lt;span class="p">]&lt;/span> &lt;span class="mf">3.6&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">9&lt;/span> &lt;span class="o">-&amp;gt;&lt;/span> &lt;span class="mf">3.6&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">9&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">*&lt;/span> &lt;span class="p">[&lt;/span>&lt;span class="n">new&lt;/span> &lt;span class="n">tag&lt;/span>&lt;span class="p">]&lt;/span> &lt;span class="mf">4.0&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">0&lt;/span> &lt;span class="o">-&amp;gt;&lt;/span> &lt;span class="mf">4.0&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">0&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">*&lt;/span> &lt;span class="p">[&lt;/span>&lt;span class="n">new&lt;/span> &lt;span class="n">tag&lt;/span>&lt;span class="p">]&lt;/span> &lt;span class="mf">4.0&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">1&lt;/span> &lt;span class="o">-&amp;gt;&lt;/span> &lt;span class="mf">4.0&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">1&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">*&lt;/span> &lt;span class="p">[&lt;/span>&lt;span class="n">new&lt;/span> &lt;span class="n">tag&lt;/span>&lt;span class="p">]&lt;/span> &lt;span class="mf">4.0&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">10&lt;/span> &lt;span class="o">-&amp;gt;&lt;/span> &lt;span class="mf">4.0&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">10&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">*&lt;/span> &lt;span class="p">[&lt;/span>&lt;span class="n">new&lt;/span> &lt;span class="n">tag&lt;/span>&lt;span class="p">]&lt;/span> &lt;span class="mf">4.0&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">11&lt;/span> &lt;span class="o">-&amp;gt;&lt;/span> &lt;span class="mf">4.0&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">11&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">*&lt;/span> &lt;span class="p">[&lt;/span>&lt;span class="n">new&lt;/span> &lt;span class="n">tag&lt;/span>&lt;span class="p">]&lt;/span> &lt;span class="mf">4.0&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">2&lt;/span> &lt;span class="o">-&amp;gt;&lt;/span> &lt;span class="mf">4.0&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">2&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">*&lt;/span> &lt;span class="p">[&lt;/span>&lt;span class="n">new&lt;/span> &lt;span class="n">tag&lt;/span>&lt;span class="p">]&lt;/span> &lt;span class="mf">4.0&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">3&lt;/span> &lt;span class="o">-&amp;gt;&lt;/span> &lt;span class="mf">4.0&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">3&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">*&lt;/span> &lt;span class="p">[&lt;/span>&lt;span class="n">new&lt;/span> &lt;span class="n">tag&lt;/span>&lt;span class="p">]&lt;/span> &lt;span class="mf">4.0&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">4&lt;/span> &lt;span class="o">-&amp;gt;&lt;/span> &lt;span class="mf">4.0&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">4&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">*&lt;/span> &lt;span class="p">[&lt;/span>&lt;span class="n">new&lt;/span> &lt;span class="n">tag&lt;/span>&lt;span class="p">]&lt;/span> &lt;span class="mf">4.0&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">5&lt;/span> &lt;span class="o">-&amp;gt;&lt;/span> &lt;span class="mf">4.0&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">5&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">*&lt;/span> &lt;span class="p">[&lt;/span>&lt;span class="n">new&lt;/span> &lt;span class="n">tag&lt;/span>&lt;span class="p">]&lt;/span> &lt;span class="mf">4.0&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">6&lt;/span> &lt;span class="o">-&amp;gt;&lt;/span> &lt;span class="mf">4.0&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">6&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">*&lt;/span> &lt;span class="p">[&lt;/span>&lt;span class="n">new&lt;/span> &lt;span class="n">tag&lt;/span>&lt;span class="p">]&lt;/span> &lt;span class="mf">4.0&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">7&lt;/span> &lt;span class="o">-&amp;gt;&lt;/span> &lt;span class="mf">4.0&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">7&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">*&lt;/span> &lt;span class="p">[&lt;/span>&lt;span class="n">new&lt;/span> &lt;span class="n">tag&lt;/span>&lt;span class="p">]&lt;/span> &lt;span class="mf">4.0&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">8&lt;/span> &lt;span class="o">-&amp;gt;&lt;/span> &lt;span class="mf">4.0&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">8&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">*&lt;/span> &lt;span class="p">[&lt;/span>&lt;span class="n">new&lt;/span> &lt;span class="n">tag&lt;/span>&lt;span class="p">]&lt;/span> &lt;span class="mf">4.0&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">9&lt;/span> &lt;span class="o">-&amp;gt;&lt;/span> &lt;span class="mf">4.0&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">9&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">HEAD&lt;/span> &lt;span class="n">is&lt;/span> &lt;span class="n">now&lt;/span> &lt;span class="n">at&lt;/span> &lt;span class="n">c51687009&lt;/span> &lt;span class="n">Merge&lt;/span> &lt;span class="n">pull&lt;/span> &lt;span class="n">request&lt;/span> &lt;span class="c1">#15168 from reitermarkus/api-ruby-source-path&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="o">==&amp;gt;&lt;/span> &lt;span class="n">Installation&lt;/span> &lt;span class="n">successful&lt;/span>&lt;span class="o">!&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="o">==&amp;gt;&lt;/span> &lt;span class="n">Homebrew&lt;/span> &lt;span class="n">has&lt;/span> &lt;span class="n">enabled&lt;/span> &lt;span class="n">anonymous&lt;/span> &lt;span class="n">aggregate&lt;/span> &lt;span class="n">formulae&lt;/span> &lt;span class="ow">and&lt;/span> &lt;span class="n">cask&lt;/span> &lt;span class="n">analytics&lt;/span>&lt;span class="o">.&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">Read&lt;/span> &lt;span class="n">the&lt;/span> &lt;span class="n">analytics&lt;/span> &lt;span class="n">documentation&lt;/span> &lt;span class="p">(&lt;/span>&lt;span class="ow">and&lt;/span> &lt;span class="n">how&lt;/span> &lt;span class="n">to&lt;/span> &lt;span class="n">opt&lt;/span>&lt;span class="o">-&lt;/span>&lt;span class="n">out&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="n">here&lt;/span>&lt;span class="p">:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">https&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="o">//&lt;/span>&lt;span class="n">docs&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">brew&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">sh&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">Analytics&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">No&lt;/span> &lt;span class="n">analytics&lt;/span> &lt;span class="n">data&lt;/span> &lt;span class="n">has&lt;/span> &lt;span class="n">been&lt;/span> &lt;span class="n">sent&lt;/span> &lt;span class="n">yet&lt;/span> &lt;span class="p">(&lt;/span>&lt;span class="n">nor&lt;/span> &lt;span class="n">will&lt;/span> &lt;span class="n">any&lt;/span> &lt;span class="n">be&lt;/span> &lt;span class="n">during&lt;/span> &lt;span class="n">this&lt;/span> &lt;span class="n">install&lt;/span> &lt;span class="n">run&lt;/span>&lt;span class="p">)&lt;/span>&lt;span class="o">.&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="o">==&amp;gt;&lt;/span> &lt;span class="n">Homebrew&lt;/span> &lt;span class="n">is&lt;/span> &lt;span class="n">run&lt;/span> &lt;span class="n">entirely&lt;/span> &lt;span class="n">by&lt;/span> &lt;span class="n">unpaid&lt;/span> &lt;span class="n">volunteers&lt;/span>&lt;span class="o">.&lt;/span> &lt;span class="n">Please&lt;/span> &lt;span class="n">consider&lt;/span> &lt;span class="n">donating&lt;/span>&lt;span class="p">:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">https&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="o">//&lt;/span>&lt;span class="n">github&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">com&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">Homebrew&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">brew&lt;/span>&lt;span class="c1">#donations&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="o">==&amp;gt;&lt;/span> &lt;span class="n">Next&lt;/span> &lt;span class="n">steps&lt;/span>&lt;span class="p">:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="o">-&lt;/span> &lt;span class="n">Run&lt;/span> &lt;span class="n">these&lt;/span> &lt;span class="n">two&lt;/span> &lt;span class="n">commands&lt;/span> &lt;span class="ow">in&lt;/span> &lt;span class="n">your&lt;/span> &lt;span class="n">terminal&lt;/span> &lt;span class="n">to&lt;/span> &lt;span class="n">add&lt;/span> &lt;span class="n">Homebrew&lt;/span> &lt;span class="n">to&lt;/span> &lt;span class="n">your&lt;/span> &lt;span class="n">PATH&lt;/span>&lt;span class="p">:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">(&lt;/span>&lt;span class="n">echo&lt;/span>&lt;span class="p">;&lt;/span> &lt;span class="n">echo&lt;/span> &lt;span class="s1">&amp;#39;eval &amp;#34;$(/usr/local/bin/brew shellenv)&amp;#34;&amp;#39;&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="o">&amp;gt;&amp;gt;&lt;/span> &lt;span class="o">/&lt;/span>&lt;span class="n">Users&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">kenji&lt;/span>&lt;span class="o">/.&lt;/span>&lt;span class="n">zprofile&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">eval&lt;/span> &lt;span class="s2">&amp;#34;$(/usr/local/bin/brew shellenv)&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="o">-&lt;/span> &lt;span class="n">Run&lt;/span> &lt;span class="n">brew&lt;/span> &lt;span class="n">help&lt;/span> &lt;span class="n">to&lt;/span> &lt;span class="n">get&lt;/span> &lt;span class="n">started&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="o">-&lt;/span> &lt;span class="n">Further&lt;/span> &lt;span class="n">documentation&lt;/span>&lt;span class="p">:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">https&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="o">//&lt;/span>&lt;span class="n">docs&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">brew&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">sh&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;/details>
&lt;ol start="4">
&lt;li>Execute &lt;code>brew install cocoapods&lt;/code>&lt;/li>
&lt;/ol>
&lt;details>
&lt;summary>Saída&lt;/summary>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt"> 1
&lt;/span>&lt;span class="lnt"> 2
&lt;/span>&lt;span class="lnt"> 3
&lt;/span>&lt;span class="lnt"> 4
&lt;/span>&lt;span class="lnt"> 5
&lt;/span>&lt;span class="lnt"> 6
&lt;/span>&lt;span class="lnt"> 7
&lt;/span>&lt;span class="lnt"> 8
&lt;/span>&lt;span class="lnt"> 9
&lt;/span>&lt;span class="lnt">10
&lt;/span>&lt;span class="lnt">11
&lt;/span>&lt;span class="lnt">12
&lt;/span>&lt;span class="lnt">13
&lt;/span>&lt;span class="lnt">14
&lt;/span>&lt;span class="lnt">15
&lt;/span>&lt;span class="lnt">16
&lt;/span>&lt;span class="lnt">17
&lt;/span>&lt;span class="lnt">18
&lt;/span>&lt;span class="lnt">19
&lt;/span>&lt;span class="lnt">20
&lt;/span>&lt;span class="lnt">21
&lt;/span>&lt;span class="lnt">22
&lt;/span>&lt;span class="lnt">23
&lt;/span>&lt;span class="lnt">24
&lt;/span>&lt;span class="lnt">25
&lt;/span>&lt;span class="lnt">26
&lt;/span>&lt;span class="lnt">27
&lt;/span>&lt;span class="lnt">28
&lt;/span>&lt;span class="lnt">29
&lt;/span>&lt;span class="lnt">30
&lt;/span>&lt;span class="lnt">31
&lt;/span>&lt;span class="lnt">32
&lt;/span>&lt;span class="lnt">33
&lt;/span>&lt;span class="lnt">34
&lt;/span>&lt;span class="lnt">35
&lt;/span>&lt;span class="lnt">36
&lt;/span>&lt;span class="lnt">37
&lt;/span>&lt;span class="lnt">38
&lt;/span>&lt;span class="lnt">39
&lt;/span>&lt;span class="lnt">40
&lt;/span>&lt;span class="lnt">41
&lt;/span>&lt;span class="lnt">42
&lt;/span>&lt;span class="lnt">43
&lt;/span>&lt;span class="lnt">44
&lt;/span>&lt;span class="lnt">45
&lt;/span>&lt;span class="lnt">46
&lt;/span>&lt;span class="lnt">47
&lt;/span>&lt;span class="lnt">48
&lt;/span>&lt;span class="lnt">49
&lt;/span>&lt;span class="lnt">50
&lt;/span>&lt;span class="lnt">51
&lt;/span>&lt;span class="lnt">52
&lt;/span>&lt;span class="lnt">53
&lt;/span>&lt;span class="lnt">54
&lt;/span>&lt;span class="lnt">55
&lt;/span>&lt;span class="lnt">56
&lt;/span>&lt;span class="lnt">57
&lt;/span>&lt;span class="lnt">58
&lt;/span>&lt;span class="lnt">59
&lt;/span>&lt;span class="lnt">60
&lt;/span>&lt;span class="lnt">61
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-gdscript3" data-lang="gdscript3">&lt;span class="line">&lt;span class="cl">&lt;span class="n">Warning&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="n">Treating&lt;/span> &lt;span class="n">cocoapods&lt;/span> &lt;span class="n">as&lt;/span> &lt;span class="n">a&lt;/span> &lt;span class="n">formula&lt;/span>&lt;span class="o">.&lt;/span> &lt;span class="n">For&lt;/span> &lt;span class="n">the&lt;/span> &lt;span class="n">cask&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">use&lt;/span> &lt;span class="n">homebrew&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">cask&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">cocoapods&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="o">==&amp;gt;&lt;/span> &lt;span class="n">Fetching&lt;/span> &lt;span class="n">dependencies&lt;/span> &lt;span class="k">for&lt;/span> &lt;span class="n">cocoapods&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="n">libyaml&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">ca&lt;/span>&lt;span class="o">-&lt;/span>&lt;span class="n">certificates&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">openssl&lt;/span>&lt;span class="err">@&lt;/span>&lt;span class="mf">1.1&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">readline&lt;/span> &lt;span class="ow">and&lt;/span> &lt;span class="n">ruby&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="o">==&amp;gt;&lt;/span> &lt;span class="n">Fetching&lt;/span> &lt;span class="n">libyaml&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="o">==&amp;gt;&lt;/span> &lt;span class="n">Downloading&lt;/span> &lt;span class="n">https&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="o">//&lt;/span>&lt;span class="n">ghcr&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">io&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">v2&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">homebrew&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">core&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">libyaml&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">manifests&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="mf">0.2&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">5&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">######################################################################## 100.0%&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="o">==&amp;gt;&lt;/span> &lt;span class="n">Downloading&lt;/span> &lt;span class="n">https&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="o">//&lt;/span>&lt;span class="n">ghcr&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">io&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">v2&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">homebrew&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">core&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">libyaml&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">blobs&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">sha256&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="n">b49e62f014&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="o">==&amp;gt;&lt;/span> &lt;span class="n">Downloading&lt;/span> &lt;span class="n">from&lt;/span> &lt;span class="n">https&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="o">//&lt;/span>&lt;span class="n">pkg&lt;/span>&lt;span class="o">-&lt;/span>&lt;span class="n">containers&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">githubusercontent&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">com&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">ghcr1&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">blobs&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">sh&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">######################################################################## 100.0%&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="o">==&amp;gt;&lt;/span> &lt;span class="n">Fetching&lt;/span> &lt;span class="n">ca&lt;/span>&lt;span class="o">-&lt;/span>&lt;span class="n">certificates&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="o">==&amp;gt;&lt;/span> &lt;span class="n">Downloading&lt;/span> &lt;span class="n">https&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="o">//&lt;/span>&lt;span class="n">ghcr&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">io&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">v2&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">homebrew&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">core&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">ca&lt;/span>&lt;span class="o">-&lt;/span>&lt;span class="n">certificates&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">manifests&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="mi">2023&lt;/span>&lt;span class="o">-&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">######################################################################## 100.0%&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="o">==&amp;gt;&lt;/span> &lt;span class="n">Downloading&lt;/span> &lt;span class="n">https&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="o">//&lt;/span>&lt;span class="n">ghcr&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">io&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">v2&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">homebrew&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">core&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">ca&lt;/span>&lt;span class="o">-&lt;/span>&lt;span class="n">certificates&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">blobs&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">sha256&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="mi">11&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="o">==&amp;gt;&lt;/span> &lt;span class="n">Downloading&lt;/span> &lt;span class="n">from&lt;/span> &lt;span class="n">https&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="o">//&lt;/span>&lt;span class="n">pkg&lt;/span>&lt;span class="o">-&lt;/span>&lt;span class="n">containers&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">githubusercontent&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">com&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">ghcr1&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">blobs&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">sh&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">######################################################################## 100.0%&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="o">==&amp;gt;&lt;/span> &lt;span class="n">Fetching&lt;/span> &lt;span class="n">openssl&lt;/span>&lt;span class="err">@&lt;/span>&lt;span class="mf">1.1&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="o">==&amp;gt;&lt;/span> &lt;span class="n">Downloading&lt;/span> &lt;span class="n">https&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="o">//&lt;/span>&lt;span class="n">ghcr&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">io&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">v2&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">homebrew&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">core&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">openssl&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="mf">1.1&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">manifests&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="mf">1.1&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">1&lt;/span>&lt;span class="n">t&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">######################################################################## 100.0%&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="o">==&amp;gt;&lt;/span> &lt;span class="n">Downloading&lt;/span> &lt;span class="n">https&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="o">//&lt;/span>&lt;span class="n">ghcr&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">io&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">v2&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">homebrew&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">core&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">openssl&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="mf">1.1&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">blobs&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">sha256&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="mi">97676&lt;/span>&lt;span class="n">d&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="o">==&amp;gt;&lt;/span> &lt;span class="n">Downloading&lt;/span> &lt;span class="n">from&lt;/span> &lt;span class="n">https&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="o">//&lt;/span>&lt;span class="n">pkg&lt;/span>&lt;span class="o">-&lt;/span>&lt;span class="n">containers&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">githubusercontent&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">com&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">ghcr1&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">blobs&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">sh&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">######################################################################## 100.0%&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="o">==&amp;gt;&lt;/span> &lt;span class="n">Fetching&lt;/span> &lt;span class="n">readline&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="o">==&amp;gt;&lt;/span> &lt;span class="n">Downloading&lt;/span> &lt;span class="n">https&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="o">//&lt;/span>&lt;span class="n">ghcr&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">io&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">v2&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">homebrew&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">core&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">readline&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">manifests&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="mf">8.2&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">1&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">######################################################################## 100.0%&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="o">==&amp;gt;&lt;/span> &lt;span class="n">Downloading&lt;/span> &lt;span class="n">https&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="o">//&lt;/span>&lt;span class="n">ghcr&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">io&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">v2&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">homebrew&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">core&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">readline&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">blobs&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">sha256&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="n">abe9d3f3e&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="o">==&amp;gt;&lt;/span> &lt;span class="n">Downloading&lt;/span> &lt;span class="n">from&lt;/span> &lt;span class="n">https&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="o">//&lt;/span>&lt;span class="n">pkg&lt;/span>&lt;span class="o">-&lt;/span>&lt;span class="n">containers&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">githubusercontent&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">com&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">ghcr1&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">blobs&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">sh&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">######################################################################## 100.0%&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="o">==&amp;gt;&lt;/span> &lt;span class="n">Fetching&lt;/span> &lt;span class="n">ruby&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="o">==&amp;gt;&lt;/span> &lt;span class="n">Downloading&lt;/span> &lt;span class="n">https&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="o">//&lt;/span>&lt;span class="n">ghcr&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">io&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">v2&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">homebrew&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">core&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">ruby&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">manifests&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="mf">3.2&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">2&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">######################################################################## 100.0%&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="o">==&amp;gt;&lt;/span> &lt;span class="n">Downloading&lt;/span> &lt;span class="n">https&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="o">//&lt;/span>&lt;span class="n">ghcr&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">io&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">v2&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">homebrew&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">core&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">ruby&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">blobs&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">sha256&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="n">a4ac080688e87&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="o">==&amp;gt;&lt;/span> &lt;span class="n">Downloading&lt;/span> &lt;span class="n">from&lt;/span> &lt;span class="n">https&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="o">//&lt;/span>&lt;span class="n">pkg&lt;/span>&lt;span class="o">-&lt;/span>&lt;span class="n">containers&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">githubusercontent&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">com&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">ghcr1&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">blobs&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">sh&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">######################################################################## 100.0%&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="o">==&amp;gt;&lt;/span> &lt;span class="n">Fetching&lt;/span> &lt;span class="n">cocoapods&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="o">==&amp;gt;&lt;/span> &lt;span class="n">Downloading&lt;/span> &lt;span class="n">https&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="o">//&lt;/span>&lt;span class="n">ghcr&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">io&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">v2&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">homebrew&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">core&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">cocoapods&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">manifests&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="mf">1.12&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">0&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">######################################################################## 100.0%&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="o">==&amp;gt;&lt;/span> &lt;span class="n">Downloading&lt;/span> &lt;span class="n">https&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="o">//&lt;/span>&lt;span class="n">ghcr&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">io&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">v2&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">homebrew&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">core&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">cocoapods&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">blobs&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">sha256&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="mi">11226288&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="o">==&amp;gt;&lt;/span> &lt;span class="n">Downloading&lt;/span> &lt;span class="n">from&lt;/span> &lt;span class="n">https&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="o">//&lt;/span>&lt;span class="n">pkg&lt;/span>&lt;span class="o">-&lt;/span>&lt;span class="n">containers&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">githubusercontent&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">com&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">ghcr1&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">blobs&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">sh&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">######################################################################## 100.0%&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="o">==&amp;gt;&lt;/span> &lt;span class="n">Installing&lt;/span> &lt;span class="n">dependencies&lt;/span> &lt;span class="k">for&lt;/span> &lt;span class="n">cocoapods&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="n">libyaml&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">ca&lt;/span>&lt;span class="o">-&lt;/span>&lt;span class="n">certificates&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">openssl&lt;/span>&lt;span class="err">@&lt;/span>&lt;span class="mf">1.1&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">readline&lt;/span> &lt;span class="ow">and&lt;/span> &lt;span class="n">ruby&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="o">==&amp;gt;&lt;/span> &lt;span class="n">Installing&lt;/span> &lt;span class="n">cocoapods&lt;/span> &lt;span class="n">dependency&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="n">libyaml&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="o">==&amp;gt;&lt;/span> &lt;span class="n">Pouring&lt;/span> &lt;span class="n">libyaml&lt;/span>&lt;span class="o">--&lt;/span>&lt;span class="mf">0.2&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mf">5.&lt;/span>&lt;span class="n">ventura&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">bottle&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">tar&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">gz&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="err">🍺&lt;/span> &lt;span class="o">/&lt;/span>&lt;span class="n">usr&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">local&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">Cellar&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">libyaml&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="mf">0.2&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">5&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="mi">10&lt;/span> &lt;span class="n">files&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="mi">330&lt;/span>&lt;span class="n">KB&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="o">==&amp;gt;&lt;/span> &lt;span class="n">Installing&lt;/span> &lt;span class="n">cocoapods&lt;/span> &lt;span class="n">dependency&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="n">ca&lt;/span>&lt;span class="o">-&lt;/span>&lt;span class="n">certificates&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="o">==&amp;gt;&lt;/span> &lt;span class="n">Pouring&lt;/span> &lt;span class="n">ca&lt;/span>&lt;span class="o">-&lt;/span>&lt;span class="n">certificates&lt;/span>&lt;span class="o">--&lt;/span>&lt;span class="mi">2023&lt;/span>&lt;span class="o">-&lt;/span>&lt;span class="mi">01&lt;/span>&lt;span class="o">-&lt;/span>&lt;span class="mf">10.&lt;/span>&lt;span class="n">all&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">bottle&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">tar&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">gz&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="o">==&amp;gt;&lt;/span> &lt;span class="n">Regenerating&lt;/span> &lt;span class="n">CA&lt;/span> &lt;span class="n">certificate&lt;/span> &lt;span class="n">bundle&lt;/span> &lt;span class="n">from&lt;/span> &lt;span class="n">keychain&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">this&lt;/span> &lt;span class="n">may&lt;/span> &lt;span class="n">take&lt;/span> &lt;span class="n">a&lt;/span> &lt;span class="k">while&lt;/span>&lt;span class="o">...&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="err">🍺&lt;/span> &lt;span class="o">/&lt;/span>&lt;span class="n">usr&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">local&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">Cellar&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">ca&lt;/span>&lt;span class="o">-&lt;/span>&lt;span class="n">certificates&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="mi">2023&lt;/span>&lt;span class="o">-&lt;/span>&lt;span class="mi">01&lt;/span>&lt;span class="o">-&lt;/span>&lt;span class="mi">10&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="mi">3&lt;/span> &lt;span class="n">files&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="mf">216.9&lt;/span>&lt;span class="n">KB&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="o">==&amp;gt;&lt;/span> &lt;span class="n">Installing&lt;/span> &lt;span class="n">cocoapods&lt;/span> &lt;span class="n">dependency&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="n">openssl&lt;/span>&lt;span class="err">@&lt;/span>&lt;span class="mf">1.1&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="o">==&amp;gt;&lt;/span> &lt;span class="n">Pouring&lt;/span> &lt;span class="n">openssl&lt;/span>&lt;span class="err">@&lt;/span>&lt;span class="mf">1.1&lt;/span>&lt;span class="o">--&lt;/span>&lt;span class="mf">1.1&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">1&lt;/span>&lt;span class="n">t&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">ventura&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">bottle&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">tar&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">gz&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="err">🍺&lt;/span> &lt;span class="o">/&lt;/span>&lt;span class="n">usr&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">local&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">Cellar&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">openssl&lt;/span>&lt;span class="err">@&lt;/span>&lt;span class="mf">1.1&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="mf">1.1&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">1&lt;/span>&lt;span class="n">t&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="mi">8&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="mi">101&lt;/span> &lt;span class="n">files&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="mf">18.5&lt;/span>&lt;span class="n">MB&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="o">==&amp;gt;&lt;/span> &lt;span class="n">Installing&lt;/span> &lt;span class="n">cocoapods&lt;/span> &lt;span class="n">dependency&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="n">readline&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="o">==&amp;gt;&lt;/span> &lt;span class="n">Pouring&lt;/span> &lt;span class="n">readline&lt;/span>&lt;span class="o">--&lt;/span>&lt;span class="mf">8.2&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mf">1.&lt;/span>&lt;span class="n">ventura&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">bottle&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">tar&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">gz&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="err">🍺&lt;/span> &lt;span class="o">/&lt;/span>&lt;span class="n">usr&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">local&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">Cellar&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">readline&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="mf">8.2&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">1&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="mi">50&lt;/span> &lt;span class="n">files&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="mf">1.7&lt;/span>&lt;span class="n">MB&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="o">==&amp;gt;&lt;/span> &lt;span class="n">Installing&lt;/span> &lt;span class="n">cocoapods&lt;/span> &lt;span class="n">dependency&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="n">ruby&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="o">==&amp;gt;&lt;/span> &lt;span class="n">Pouring&lt;/span> &lt;span class="n">ruby&lt;/span>&lt;span class="o">--&lt;/span>&lt;span class="mf">3.2&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mf">2.&lt;/span>&lt;span class="n">ventura&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">bottle&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">tar&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">gz&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="err">🍺&lt;/span> &lt;span class="o">/&lt;/span>&lt;span class="n">usr&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">local&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">Cellar&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">ruby&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="mf">3.2&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">2&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="mi">16&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="mi">605&lt;/span> &lt;span class="n">files&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="mf">46.3&lt;/span>&lt;span class="n">MB&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="o">==&amp;gt;&lt;/span> &lt;span class="n">Installing&lt;/span> &lt;span class="n">cocoapods&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="o">==&amp;gt;&lt;/span> &lt;span class="n">Pouring&lt;/span> &lt;span class="n">cocoapods&lt;/span>&lt;span class="o">--&lt;/span>&lt;span class="mf">1.12&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mf">0.&lt;/span>&lt;span class="n">ventura&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">bottle&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">tar&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">gz&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="err">🍺&lt;/span> &lt;span class="o">/&lt;/span>&lt;span class="n">usr&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">local&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">Cellar&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">cocoapods&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="mf">1.12&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">0&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="mi">13&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="mi">436&lt;/span> &lt;span class="n">files&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="mf">27.8&lt;/span>&lt;span class="n">MB&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="o">==&amp;gt;&lt;/span> &lt;span class="n">Running&lt;/span> &lt;span class="err">`&lt;/span>&lt;span class="n">brew&lt;/span> &lt;span class="n">cleanup&lt;/span> &lt;span class="n">cocoapods&lt;/span>&lt;span class="err">`&lt;/span>&lt;span class="o">...&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">Disable&lt;/span> &lt;span class="n">this&lt;/span> &lt;span class="n">behaviour&lt;/span> &lt;span class="n">by&lt;/span> &lt;span class="n">setting&lt;/span> &lt;span class="n">HOMEBREW_NO_INSTALL_CLEANUP&lt;/span>&lt;span class="o">.&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">Hide&lt;/span> &lt;span class="n">these&lt;/span> &lt;span class="n">hints&lt;/span> &lt;span class="n">with&lt;/span> &lt;span class="n">HOMEBREW_NO_ENV_HINTS&lt;/span> &lt;span class="p">(&lt;/span>&lt;span class="n">see&lt;/span> &lt;span class="err">`&lt;/span>&lt;span class="n">man&lt;/span> &lt;span class="n">brew&lt;/span>&lt;span class="err">`&lt;/span>&lt;span class="p">)&lt;/span>&lt;span class="o">.&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;/details>
&lt;ol start="5">
&lt;li>Execute &lt;code>pod --version&lt;/code>&lt;/li>
&lt;/ol>
&lt;details>
&lt;summary>Saída&lt;/summary>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">1.12.0
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;/details>
&lt;p>Parece que foi instalado com sucesso.&lt;/p>
&lt;h1 id="referências">Referências
&lt;/h1>&lt;ul>
&lt;li>&lt;a class="link" href="https://stackoverflow.com/questions/75755162/installing-cocoapods" target="_blank" rel="noopener"
>Installing &amp;ldquo;CocoaPods&amp;rdquo;&lt;/a>&lt;/li>
&lt;/ul></description></item><item><title>Como obter o número de registros criados por dia usando SOQL do Salesforce</title><link>http://kenji.blog/pt/p/como-obter-o-n%C3%BAmero-de-registros-criados-por-dia-usando-soql-do-salesforce/</link><pubDate>Sun, 09 Apr 2023 02:50:30 +0900</pubDate><guid>http://kenji.blog/pt/p/como-obter-o-n%C3%BAmero-de-registros-criados-por-dia-usando-soql-do-salesforce/</guid><description>&lt;img src="http://kenji.blog/p/salesforce%E3%81%AEsoql%E3%82%92%E5%88%A9%E7%94%A8%E3%81%97%E3%81%A6%E6%97%A5%E5%88%A5%E3%81%AE%E3%83%AC%E3%82%B3%E3%83%BC%E3%83%89%E4%BD%9C%E6%88%90%E6%95%B0%E3%82%92%E5%8F%96%E5%BE%97%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95/img.png" alt="Featured image of post Como obter o número de registros criados por dia usando SOQL do Salesforce" />&lt;h1 id="como-obter-o-número-de-registros-criados-por-dia-usando-soql-do-salesforce">Como obter o número de registros criados por dia usando SOQL do Salesforce
&lt;/h1>&lt;ol>
&lt;li>Abra o Developer Console.&lt;/li>
&lt;li>Abra a aba &lt;code>Query Editor&lt;/code>.&lt;/li>
&lt;li>Cole e execute o seguinte SOQL.&lt;/li>
&lt;/ol>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-sql" data-lang="sql">&lt;span class="line">&lt;span class="cl">&lt;span class="k">select&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">day_only&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">createdDate&lt;/span>&lt;span class="p">),&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="k">count&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">createdDate&lt;/span>&lt;span class="p">)&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="k">from&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">account&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="k">group&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="k">by&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">day_only&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">createdDate&lt;/span>&lt;span class="p">)&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="k">order&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="k">by&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="k">count&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">createdDate&lt;/span>&lt;span class="p">)&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="k">desc&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="k">limit&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="mi">10&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>Altere &lt;code>account&lt;/code> para qualquer nome de objeto que você deseja obter e execute.&lt;/p>
&lt;h1 id="referência">Referência
&lt;/h1>&lt;ul>
&lt;li>&lt;a class="link" href="https://stackoverflow.com/questions/9187737/is-there-a-way-to-group-by-the-date-portion-of-a-datetime-field-in-soql" target="_blank" rel="noopener"
>Is there a way to group by the date portion of a datetime field in SOQL?&lt;/a>&lt;/li>
&lt;/ul></description></item><item><title>Como desenhar gráficos usando Python (matplotlib.pyplot)</title><link>http://kenji.blog/pt/p/como-desenhar-gr%C3%A1ficos-usando-python-matplotlib.pyplot/</link><pubDate>Sun, 09 Apr 2023 01:02:19 +0900</pubDate><guid>http://kenji.blog/pt/p/como-desenhar-gr%C3%A1ficos-usando-python-matplotlib.pyplot/</guid><description>&lt;img src="http://kenji.blog/p/pythonmatplotlib.pyplot%E3%82%92%E4%BD%BF%E3%81%A3%E3%81%A6%E3%82%B0%E3%83%A9%E3%83%95%E3%82%92%E6%8F%8F%E7%94%BB%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95/img.png" alt="Featured image of post Como desenhar gráficos usando Python (matplotlib.pyplot)" />&lt;p>&lt;img src="http://kenji.blog/p/pythonmatplotlib.pyplot%E3%82%92%E4%BD%BF%E3%81%A3%E3%81%A6%E3%82%B0%E3%83%A9%E3%83%95%E3%82%92%E6%8F%8F%E7%94%BB%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95/img_1.png"
width="1200"
height="288"
srcset="http://kenji.blog/p/pythonmatplotlib.pyplot%E3%82%92%E4%BD%BF%E3%81%A3%E3%81%A6%E3%82%B0%E3%83%A9%E3%83%95%E3%82%92%E6%8F%8F%E7%94%BB%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95/img_1_hue3f23818eeeec9c43d6452cc0f61fb52_43864_480x0_resize_box_3.png 480w, http://kenji.blog/p/pythonmatplotlib.pyplot%E3%82%92%E4%BD%BF%E3%81%A3%E3%81%A6%E3%82%B0%E3%83%A9%E3%83%95%E3%82%92%E6%8F%8F%E7%94%BB%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95/img_1_hue3f23818eeeec9c43d6452cc0f61fb52_43864_1024x0_resize_box_3.png 1024w"
loading="lazy"
alt="img_1.png"
class="gallery-image"
data-flex-grow="416"
data-flex-basis="1000px"
>&lt;/p>
&lt;h1 id="o-que-você-precisa">O que você precisa
&lt;/h1>&lt;ul>
&lt;li>Conta do Google&lt;/li>
&lt;/ul>
&lt;h1 id="passos">Passos
&lt;/h1>&lt;ol>
&lt;li>Acesse &lt;a class="link" href="https://colab.research.google.com/" target="_blank" rel="noopener"
>https://colab.research.google.com/&lt;/a>&lt;/li>
&lt;li>Selecione &amp;ldquo;Arquivo&amp;rdquo; -&amp;gt; &amp;ldquo;Novo notebook&amp;rdquo;&lt;/li>
&lt;li>Cole e execute o código abaixo&lt;/li>
&lt;/ol>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;span class="lnt">4
&lt;/span>&lt;span class="lnt">5
&lt;/span>&lt;span class="lnt">6
&lt;/span>&lt;span class="lnt">7
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-python" data-lang="python">&lt;span class="line">&lt;span class="cl">&lt;span class="kn">import&lt;/span> &lt;span class="nn">matplotlib.pyplot&lt;/span> &lt;span class="k">as&lt;/span> &lt;span class="nn">plt&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="kn">import&lt;/span> &lt;span class="nn">numpy&lt;/span> &lt;span class="k">as&lt;/span> &lt;span class="nn">np&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">x&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">np&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">linspace&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="mi">0&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="mi">2&lt;/span>&lt;span class="o">*&lt;/span>&lt;span class="n">np&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">pi&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="mi">500&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">plt&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">plot&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">x&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">np&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">sin&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">x&lt;/span>&lt;span class="p">),&lt;/span> &lt;span class="n">label&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s2">&amp;#34;sin curve&amp;#34;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">plt&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">plot&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">x&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">np&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">cos&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">x&lt;/span>&lt;span class="p">),&lt;/span> &lt;span class="n">label&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s2">&amp;#34;cos curve&amp;#34;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">plt&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">legend&lt;/span>&lt;span class="p">()&lt;/span> &lt;span class="c1"># Mostrar legenda&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">plt&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">show&lt;/span>&lt;span class="p">()&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h1 id="resultado-da-execução">Resultado da execução
&lt;/h1>&lt;p>&lt;img src="http://kenji.blog/p/pythonmatplotlib.pyplot%E3%82%92%E4%BD%BF%E3%81%A3%E3%81%A6%E3%82%B0%E3%83%A9%E3%83%95%E3%82%92%E6%8F%8F%E7%94%BB%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95/img.png"
width="568"
height="413"
srcset="http://kenji.blog/p/pythonmatplotlib.pyplot%E3%82%92%E4%BD%BF%E3%81%A3%E3%81%A6%E3%82%B0%E3%83%A9%E3%83%95%E3%82%92%E6%8F%8F%E7%94%BB%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95/img_hucdb24ab588d845f9f7a56ef99be2c709_27745_480x0_resize_box_3.png 480w, http://kenji.blog/p/pythonmatplotlib.pyplot%E3%82%92%E4%BD%BF%E3%81%A3%E3%81%A6%E3%82%B0%E3%83%A9%E3%83%95%E3%82%92%E6%8F%8F%E7%94%BB%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95/img_hucdb24ab588d845f9f7a56ef99be2c709_27745_1024x0_resize_box_3.png 1024w"
loading="lazy"
alt="img.png"
class="gallery-image"
data-flex-grow="137"
data-flex-basis="330px"
>&lt;/p>
&lt;h1 id="referências">Referências
&lt;/h1>&lt;ul>
&lt;li>&lt;a class="link" href="https://matplotlib.org/3.5.3/api/_as_gen/matplotlib.pyplot.html" target="_blank" rel="noopener"
>matplotlib.pyplot — Matplotlib 3.5.3 documentation&lt;/a>&lt;/li>
&lt;/ul></description></item><item><title>Como twittar usando a API do Twitter e o Google Colaboratory</title><link>http://kenji.blog/pt/p/como-twittar-usando-a-api-do-twitter-e-o-google-colaboratory/</link><pubDate>Sat, 08 Apr 2023 18:48:32 +0900</pubDate><guid>http://kenji.blog/pt/p/como-twittar-usando-a-api-do-twitter-e-o-google-colaboratory/</guid><description>&lt;img src="http://kenji.blog/p/twitter-api%E3%81%A8google-colaboratory%E3%82%92%E4%BD%BF%E3%81%A3%E3%81%A6tweet%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95/img.png" alt="Featured image of post Como twittar usando a API do Twitter e o Google Colaboratory" />&lt;h1 id="o-que-você-precisa">O que você precisa
&lt;/h1>&lt;ul>
&lt;li>Twitter API&lt;/li>
&lt;li>Twitter API SECRET&lt;/li>
&lt;li>Twitter ACCESS TOKEN&lt;/li>
&lt;li>Twitter ACCESS TOKEN SECRET&lt;/li>
&lt;li>Conta do Google&lt;/li>
&lt;/ul>
&lt;p>Consulte o site de referência para saber como obter a API do Twitter.&lt;/p>
&lt;h1 id="passos-para-twittar-usando-a-api">Passos para twittar usando a API
&lt;/h1>&lt;ol>
&lt;li>Acesse &lt;a class="link" href="https://colab.research.google.com/" target="_blank" rel="noopener"
>https://colab.research.google.com/&lt;/a>&lt;/li>
&lt;li>Selecione &amp;ldquo;Arquivo&amp;rdquo; -&amp;gt; &amp;ldquo;Novo notebook&amp;rdquo;&lt;/li>
&lt;li>Cole e execute o código abaixo (use seus próprios valores reais obtidos)&lt;/li>
&lt;/ol>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;span class="lnt">4
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">API_KEY = &amp;#39;9Smu2f2RoLqbVQHQq6n79Z2JW&amp;#39;
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">API_SECRET = &amp;#39;uGVRIkLL2l8sRyPv2Lr4mXxXppnQF1isMoRnvktcXCtFgAK2R8&amp;#39;
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">ACCESS_TOKEN = &amp;#39;0367292979164670705-7hSErDoQbO6fkFtnn5UY0vqpvecy0O&amp;#39;
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">ACCESS_TOKEN_SECRET = &amp;#39;pUv81U9GVzZirz5g4AxZPHAJ4GpSXnBo8GUcZ1egtjw9q&amp;#39;
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;ol start="3">
&lt;li>Cole e execute o código abaixo&lt;/li>
&lt;/ol>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">import tweepy
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;ol start="4">
&lt;li>Cole e execute o código abaixo (API v1.1)&lt;/li>
&lt;/ol>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;span class="lnt">4
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">auth = tweepy.OAuthHandler(API_KEY, API_SECRET)
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">auth.set_access_token(ACCESS_TOKEN, ACCESS_TOKEN_SECRET)
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">api = tweepy.API(auth)
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">api.update_status(&amp;#34;hello&amp;#34;)
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>→ Um tweet dizendo &lt;code>hello&lt;/code> será postado.&lt;/p>
&lt;ol start="5">
&lt;li>Cole e execute o código abaixo (API v2.0)&lt;/li>
&lt;/ol>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">client = tweepy.Client(consumer_key=API_KEY, consumer_secret=API_SECRET, access_token=ACCESS_TOKEN, access_token_secret=ACCESS_TOKEN_SECRET)
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">client.create_tweet(text=&amp;#39;hello v2&amp;#39;)
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>→ Um tweet dizendo &lt;code>hello v2&lt;/code> será postado.&lt;/p>
&lt;p>É isso.&lt;/p>
&lt;h1 id="referência">Referência
&lt;/h1>&lt;ul>
&lt;li>&lt;a class="link" href="https://bloomtectec.com/twitter-api-application-procedure/" target="_blank" rel="noopener"
>【A partir de abril de 2021】Explicação detalhada da solicitação de uso da API do Twitter com frases de exemplo de uso e capturas de tela&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="https://bloomtectec.com/use-twitter-api-in-google-colab/" target="_blank" rel="noopener"
>【Sem necessidade de configurações complicadas!】O Google Colaboratory é recomendado como um ambiente de teste para a API do Twitter 【Código-fonte também compartilhado】&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="https://3pysci.com/tweepy-28/" target="_blank" rel="noopener"
>【Tweepy】Twitter API v2: Tweets, respostas, tweets com enquetes, tweets com mídia (v1.1) [Python]&lt;/a>&lt;/li>
&lt;/ul></description></item><item><title>Como compilar o OpenSSL no Windows</title><link>http://kenji.blog/pt/p/windows-%E3%81%A7-openssl-%E3%82%92%E3%83%93%E3%83%AB%E3%83%89%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95/</link><pubDate>Fri, 07 Apr 2023 21:06:32 +0900</pubDate><guid>http://kenji.blog/pt/p/windows-%E3%81%A7-openssl-%E3%82%92%E3%83%93%E3%83%AB%E3%83%89%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95/</guid><description>&lt;img src="http://kenji.blog/p/windows-%E3%81%A7-openssl-%E3%82%92%E3%83%93%E3%83%AB%E3%83%89%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95/img.png" alt="Featured image of post Como compilar o OpenSSL no Windows" />&lt;h1 id="o-que-é-o-openssl">O que é o OpenSSL?
&lt;/h1>&lt;p>É uma biblioteca de código aberto que fornece o processamento necessário para realizar comunicação criptografada.&lt;/p>
&lt;p>Para usá-lo a partir de um programa, como o código-fonte em C é publicado, você precisa compilá-lo para criar uma biblioteca.&lt;/p>
&lt;p>Abaixo, apresentamos o procedimento de compilação.&lt;/p>
&lt;h1 id="preparação-do-ambiente-de-compilação">Preparação do ambiente de compilação
&lt;/h1>&lt;ul>
&lt;li>
&lt;p>&lt;strong>Perl&lt;/strong>&lt;/p>
&lt;p>Baixe o &lt;code>strawberry-perl-5.32.1.1-64bit.msi&lt;/code> de &lt;a class="link" href="https://strawberryperl.com/" target="_blank" rel="noopener"
>https://strawberryperl.com/&lt;/a>. A versão mais recente deve servir.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>NASM&lt;/strong>&lt;/p>
&lt;p>Baixe o &lt;code>2.16.01/nasm-2.16.01-win64.zip&lt;/code> em &lt;code>Download&lt;/code> no site &lt;a class="link" href="https://www.nasm.us/" target="_blank" rel="noopener"
>https://www.nasm.us/&lt;/a>. A versão não-RC mais recente deve servir.
Após a instalação, você precisa registrar a pasta onde o NASM está instalado na variável de ambiente PATH.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>Visual Studio 2022&lt;/strong> ou &lt;strong>Build Tools for Visual Studio 2022&lt;/strong>&lt;/p>
&lt;p>Instale o &lt;code>Visual Studio 2022 Community&lt;/code> ou o &lt;code>Build Tools for Visual Studio 2022&lt;/code> a partir de &lt;a class="link" href="https://visualstudio.microsoft.com/ja/downloads/" target="_blank" rel="noopener"
>https://visualstudio.microsoft.com/ja/downloads/&lt;/a>.&lt;/p>
&lt;/li>
&lt;/ul>
&lt;h1 id="procedimento-de-compilação-do-openssl-no-windows">Procedimento de compilação do OpenSSL no Windows
&lt;/h1>&lt;ol>
&lt;li>Baixe o &lt;code>openssl-3.1.0.tar.gz&lt;/code> de &lt;a class="link" href="https://www.openssl.org/source/" target="_blank" rel="noopener"
>https://www.openssl.org/source/&lt;/a> e extraia-o. Se não conseguir extrair, execute &lt;code>tar -xzf openssl-3.1.0.tar.gz&lt;/code> no prompt de comando.&lt;/li>
&lt;li>Inicie o prompt de comando &lt;strong>com privilégios de administrador&lt;/strong>.&lt;/li>
&lt;li>Abra a pasta extraída.&lt;/li>
&lt;li>Execute o seguinte comando. *Altere a parte &lt;code>Community&lt;/code> para corresponder à versão instalada do Visual Studio.&lt;/li>
&lt;/ol>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-gdscript3" data-lang="gdscript3">&lt;span class="line">&lt;span class="cl">&lt;span class="s2">&amp;#34;C:\Program Files\Microsoft Visual Studio&lt;/span>&lt;span class="se">\202&lt;/span>&lt;span class="s2">2\Community\VC\Auxiliary\Build&lt;/span>&lt;span class="se">\v&lt;/span>&lt;span class="s2">cvarsall.bat&amp;#34;&lt;/span> &lt;span class="n">x64&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;ol start="5">
&lt;li>Execute o seguinte comando:&lt;/li>
&lt;/ol>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">perl Configure VC-WIN64A
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;ol start="6">
&lt;li>Execute o seguinte comando (leva bastante tempo):&lt;/li>
&lt;/ol>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">nmake
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;ol start="7">
&lt;li>Execute o seguinte comando (leva bastante tempo):&lt;/li>
&lt;/ol>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">nmake test
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;ol start="8">
&lt;li>Execute o seguinte comando:&lt;/li>
&lt;/ol>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">nmake install
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>Se for bem-sucedido, o OpenSSL será instalado em &lt;code>C:\Program Files\OpenSSL&lt;/code>.&lt;/p>
&lt;p>Isso é tudo.&lt;/p>
&lt;h1 id="referências">Referências
&lt;/h1>&lt;p>&lt;a class="link" href="https://ja.wikipedia.org/wiki/OpenSSL" target="_blank" rel="noopener"
>https://ja.wikipedia.org/wiki/OpenSSL&lt;/a>&lt;/p></description></item><item><title>O que é i18n?</title><link>http://kenji.blog/pt/p/i18n%E3%81%A8%E3%81%AF/</link><pubDate>Fri, 07 Apr 2023 00:42:02 +0900</pubDate><guid>http://kenji.blog/pt/p/i18n%E3%81%A8%E3%81%AF/</guid><description>&lt;img src="http://kenji.blog/p/i18n%E3%81%A8%E3%81%AF/img.png" alt="Featured image of post O que é i18n?" />&lt;h1 id="o-que-é-i18n">O que é i18n?
&lt;/h1>&lt;p>&lt;code>i18n&lt;/code> é a abreviação de &lt;code>Internationalization&lt;/code>, que significa internacionalização. Como &lt;code>Internationalization&lt;/code> é longo,
é abreviado como &lt;code>i18n&lt;/code> porque há 18 letras entre o primeiro &lt;code>i&lt;/code> e o último &lt;code>n&lt;/code>.&lt;/p>
&lt;p>É frequentemente usado no contexto da internacionalização de software.&lt;/p>
&lt;p>Os principais itens a serem considerados na internacionalização incluem o seguinte: &lt;sup id="fnref:1">&lt;a href="#fn:1" class="footnote-ref" role="doc-noteref">1&lt;/a>&lt;/sup>&lt;/p>
&lt;ul>
&lt;li>Conjunto de caracteres (código de caractere padrão, etc.)&lt;/li>
&lt;li>Direção do texto (da esquerda para a direita, da direita para a esquerda, de cima para baixo em direção à esquerda, etc.)&lt;/li>
&lt;li>Idioma / Texto&lt;/li>
&lt;li>Fontes&lt;/li>
&lt;li>Formatos
&lt;ul>
&lt;li>Números (caractere de ponto decimal, caractere de separador de milhares, número de dígitos a agrupar, etc.)&lt;/li>
&lt;li>Data e hora (formato da data, diferenças nos calendários usados, como Islâmico / Gregoriano / Judaico / Japonês, etc.)&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>Diferenças de fuso horário em informações de data e hora&lt;/li>
&lt;li>Informações sobre moeda&lt;/li>
&lt;/ul>
&lt;div class="footnotes" role="doc-endnotes">
&lt;hr>
&lt;ol>
&lt;li id="fn:1">
&lt;p>&lt;a class="link" href="https://pt.wikipedia.org/wiki/Internacionaliza%C3%A7%C3%A3o_e_localiza%C3%A7%C3%A3o" target="_blank" rel="noopener"
>Internacionalização e localização - Wikipedia&lt;/a>&amp;#160;&lt;a href="#fnref:1" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;/ol>
&lt;/div></description></item><item><title>Como criar apresentações com HTML (reveal.js)</title><link>http://kenji.blog/pt/p/html%E3%81%A7%E3%83%97%E3%83%AC%E3%82%BC%E3%83%B3%E8%B3%87%E6%96%99%E3%82%92%E4%BD%9C%E3%82%8B%E6%96%B9%E6%B3%95reveal.js/</link><pubDate>Thu, 06 Apr 2023 23:23:46 +0900</pubDate><guid>http://kenji.blog/pt/p/html%E3%81%A7%E3%83%97%E3%83%AC%E3%82%BC%E3%83%B3%E8%B3%87%E6%96%99%E3%82%92%E4%BD%9C%E3%82%8B%E6%96%B9%E6%B3%95reveal.js/</guid><description>&lt;img src="http://kenji.blog/p/html%E3%81%A7%E3%83%97%E3%83%AC%E3%82%BC%E3%83%B3%E8%B3%87%E6%96%99%E3%82%92%E4%BD%9C%E3%82%8B%E6%96%B9%E6%B3%95reveal.js/img.png" alt="Featured image of post Como criar apresentações com HTML (reveal.js)" />&lt;h1 id="como-criar-apresentações-com-html">Como criar apresentações com HTML
&lt;/h1>&lt;p>reveal.js é uma ferramenta de criação de apresentações usando HTML e Markdown, que possui as seguintes funções:&lt;/p>
&lt;ul>
&lt;li>Várias funções de apresentação, como fórmulas matemáticas, animações e operações de deslizar&lt;/li>
&lt;li>Temas e layouts personalizáveis&lt;/li>
&lt;li>Funções de navegação suportadas por vários dispositivos, como mouse, teclado e touchpad&lt;/li>
&lt;li>Funções avançadas, como reprodução automática de slides e vídeos incorporados&lt;/li>
&lt;li>Pode ser exportado no formato PDF&lt;/li>
&lt;/ul>
&lt;p>Com esses recursos, os usuários podem criar facilmente apresentações interativas e atraentes.&lt;/p>
&lt;h1 id="instalação-e-uso-do-revealjs">Instalação e uso do reveal.js
&lt;/h1>&lt;p>A maneira mais fácil de usá-lo é baixar e extrair o ZIP inteiro da página a seguir.&lt;/p>
&lt;ol>
&lt;li>Abra &lt;a class="link" href="https://revealjs.com/installation" target="_blank" rel="noopener"
>https://revealjs.com/installation&lt;/a> e baixe o &lt;code>master.zip&lt;/code> no link&lt;/li>
&lt;li>Abra o arquivo index.html na pasta extraída em um navegador&lt;/li>
&lt;li>Reescreva o index.html para criar sua própria apresentação&lt;/li>
&lt;/ol>
&lt;p>※ Como o código HTML de demonstração está escrito em demo.html, você pode usá-lo como referência.&lt;/p>
&lt;h1 id="como-utilizar">Como utilizar
&lt;/h1>&lt;p>As apresentações que você criar podem ser publicadas como páginas da web ou exportadas como PDFs.
Além disso, como a fonte da apresentação é texto, é fácil gerenciá-la com um sistema de controle de versão.&lt;/p>
&lt;p>Também parece ser possível criar materiais de apresentação no formato Markdown.&lt;/p>
&lt;h1 id="referências">Referências
&lt;/h1>&lt;ul>
&lt;li>&lt;a class="link" href="https://qiita.com/Targityen/items/40ae4795e2cb77c1adc6" target="_blank" rel="noopener"
>Vamos usar reveal.js para materiais de apresentação no futuro&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="https://qiita.com/jkjoluvjlajelljicvjzojieoaid/items/01cd7ff819bc2e69b652" target="_blank" rel="noopener"
>Lista de exemplos de sintaxe Markdown&lt;/a>&lt;/li>
&lt;/ul></description></item><item><title>Como gerar imagens de ilustração usando IA (Stable Diffusion)</title><link>http://kenji.blog/pt/p/aistablediffusion%E3%82%92%E4%BD%BF%E3%81%A3%E3%81%A6%E3%82%A4%E3%83%A9%E3%82%B9%E3%83%88%E7%94%BB%E5%83%8F%E7%94%9F%E6%88%90%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95/</link><pubDate>Thu, 06 Apr 2023 00:43:19 +0900</pubDate><guid>http://kenji.blog/pt/p/aistablediffusion%E3%82%92%E4%BD%BF%E3%81%A3%E3%81%A6%E3%82%A4%E3%83%A9%E3%82%B9%E3%83%88%E7%94%BB%E5%83%8F%E7%94%9F%E6%88%90%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95/</guid><description>&lt;img src="http://kenji.blog/p/aistablediffusion%E3%82%92%E4%BD%BF%E3%81%A3%E3%81%A6%E3%82%A4%E3%83%A9%E3%82%B9%E3%83%88%E7%94%BB%E5%83%8F%E7%94%9F%E6%88%90%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95/img.png" alt="Featured image of post Como gerar imagens de ilustração usando IA (Stable Diffusion)" />&lt;h1 id="o-que-é-o-stable-diffusion">O que é o Stable diffusion
&lt;/h1>&lt;p>O Stable diffusion é uma IA desenvolvida por uma equipe de pesquisa da Universidade de Munique, na Alemanha, que gera imagens a partir de informações de texto fornecidas.
Ao treinar com várias imagens, ele pode gerar uma variedade de imagens, desde fotografias até ilustrações.&lt;/p>
&lt;p>Desta vez, apresentarei como gerar imagens de ilustração usando os dados pré-treinados do Stable diffusion.&lt;/p>
&lt;h1 id="o-que-você-vai-precisar">O que você vai precisar
&lt;/h1>&lt;ul>
&lt;li>Conta do Google&lt;/li>
&lt;/ul>
&lt;p>Apenas isso&lt;/p>
&lt;h1 id="procedimento-de-geração">Procedimento de geração
&lt;/h1>&lt;ol>
&lt;li>Abra &lt;a class="link" href="https://colab.research.google.com" target="_blank" rel="noopener"
>https://colab.research.google.com&lt;/a>&lt;/li>
&lt;li>Selecione &lt;code>Arquivo&lt;/code> no canto superior esquerdo e depois &lt;code>Novo notebook&lt;/code>&lt;/li>
&lt;li>Selecione &lt;code>Editar&lt;/code> e depois &lt;code>Configurações do notebook&lt;/code>&lt;/li>
&lt;li>Altere o &lt;code>Acelerador de hardware&lt;/code> para &lt;code>GPU&lt;/code>
&lt;img src="http://kenji.blog/p/aistablediffusion%E3%82%92%E4%BD%BF%E3%81%A3%E3%81%A6%E3%82%A4%E3%83%A9%E3%82%B9%E3%83%88%E7%94%BB%E5%83%8F%E7%94%9F%E6%88%90%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95/img_2.png"
width="627"
height="324"
srcset="http://kenji.blog/p/aistablediffusion%E3%82%92%E4%BD%BF%E3%81%A3%E3%81%A6%E3%82%A4%E3%83%A9%E3%82%B9%E3%83%88%E7%94%BB%E5%83%8F%E7%94%9F%E6%88%90%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95/img_2_hud7bbdf6a24e33b2b36528d9e25b016c8_23961_480x0_resize_box_3.png 480w, http://kenji.blog/p/aistablediffusion%E3%82%92%E4%BD%BF%E3%81%A3%E3%81%A6%E3%82%A4%E3%83%A9%E3%82%B9%E3%83%88%E7%94%BB%E5%83%8F%E7%94%9F%E6%88%90%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95/img_2_hud7bbdf6a24e33b2b36528d9e25b016c8_23961_1024x0_resize_box_3.png 1024w"
loading="lazy"
alt="img_2.png"
class="gallery-image"
data-flex-grow="193"
data-flex-basis="464px"
>&lt;/li>
&lt;li>Cole o código abaixo e execute&lt;/li>
&lt;/ol>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">!pip install diffusers==0.8.0 transformers
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;ol start="6">
&lt;li>Cole o código abaixo e execute&lt;/li>
&lt;/ol>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">from diffusers import StableDiffusionPipeline
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;ol start="7">
&lt;li>Cole o código abaixo e execute&lt;/li>
&lt;/ol>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">pipe = StableDiffusionPipeline.from_pretrained(&amp;#34;gsdf/Counterfeit-V2.5&amp;#34;)
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">pipe.to(&amp;#34;cuda&amp;#34;)
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;ol start="8">
&lt;li>Cole o código abaixo e execute&lt;/li>
&lt;/ol>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;span class="lnt">4
&lt;/span>&lt;span class="lnt">5
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">prompt = &amp;#34;((masterpiece,best quality)),1girl, solo, animal ears, rabbit, barefoot, knees up, dress, sitting, rabbit ears, short sleeves, looking at viewer, grass, short hair, smile, white hair, puffy sleeves, outdoors, puffy short sleeves, bangs, on ground, full body, animal, white dress, sunlight, brown eyes, dappled sunlight, day, depth of field&amp;#34;
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">n_prompt = &amp;#34;EasyNegative, extra fingers,fewer fingers&amp;#34;
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">image = pipe(prompt, negative_prompt = n_prompt).images[0]
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">image
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>O &lt;code>Prompt&lt;/code> usado aqui é baseado no &lt;code>Prompt&lt;/code> de &lt;a class="link" href="https://huggingface.co/gsdf/Counterfeit-V2.5" target="_blank" rel="noopener"
>https://huggingface.co/gsdf/Counterfeit-V2.5&lt;/a>.&lt;/p>
&lt;h2 id="resultados-gerados-alguns">Resultados gerados (alguns)
&lt;/h2>&lt;p>&lt;img src="http://kenji.blog/p/aistablediffusion%E3%82%92%E4%BD%BF%E3%81%A3%E3%81%A6%E3%82%A4%E3%83%A9%E3%82%B9%E3%83%88%E7%94%BB%E5%83%8F%E7%94%9F%E6%88%90%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95/img_1.png"
width="512"
height="512"
srcset="http://kenji.blog/p/aistablediffusion%E3%82%92%E4%BD%BF%E3%81%A3%E3%81%A6%E3%82%A4%E3%83%A9%E3%82%B9%E3%83%88%E7%94%BB%E5%83%8F%E7%94%9F%E6%88%90%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95/img_1_hu1ec19e515fd7538067cc14f2c3c8bddf_594392_480x0_resize_box_3.png 480w, http://kenji.blog/p/aistablediffusion%E3%82%92%E4%BD%BF%E3%81%A3%E3%81%A6%E3%82%A4%E3%83%A9%E3%82%B9%E3%83%88%E7%94%BB%E5%83%8F%E7%94%9F%E6%88%90%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95/img_1_hu1ec19e515fd7538067cc14f2c3c8bddf_594392_1024x0_resize_box_3.png 1024w"
loading="lazy"
alt="img_1.png"
class="gallery-image"
data-flex-grow="100"
data-flex-basis="240px"
>&lt;/p>
&lt;p>&lt;img src="http://kenji.blog/p/aistablediffusion%E3%82%92%E4%BD%BF%E3%81%A3%E3%81%A6%E3%82%A4%E3%83%A9%E3%82%B9%E3%83%88%E7%94%BB%E5%83%8F%E7%94%9F%E6%88%90%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95/img_3.png"
width="512"
height="512"
srcset="http://kenji.blog/p/aistablediffusion%E3%82%92%E4%BD%BF%E3%81%A3%E3%81%A6%E3%82%A4%E3%83%A9%E3%82%B9%E3%83%88%E7%94%BB%E5%83%8F%E7%94%9F%E6%88%90%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95/img_3_hu67e673668e1b02812ead4fb15912ac36_533749_480x0_resize_box_3.png 480w, http://kenji.blog/p/aistablediffusion%E3%82%92%E4%BD%BF%E3%81%A3%E3%81%A6%E3%82%A4%E3%83%A9%E3%82%B9%E3%83%88%E7%94%BB%E5%83%8F%E7%94%9F%E6%88%90%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95/img_3_hu67e673668e1b02812ead4fb15912ac36_533749_1024x0_resize_box_3.png 1024w"
loading="lazy"
alt="img_3.png"
class="gallery-image"
data-flex-grow="100"
data-flex-basis="240px"
>&lt;/p>
&lt;p>&lt;img src="http://kenji.blog/p/aistablediffusion%E3%82%92%E4%BD%BF%E3%81%A3%E3%81%A6%E3%82%A4%E3%83%A9%E3%82%B9%E3%83%88%E7%94%BB%E5%83%8F%E7%94%9F%E6%88%90%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95/img_4.png"
width="512"
height="512"
srcset="http://kenji.blog/p/aistablediffusion%E3%82%92%E4%BD%BF%E3%81%A3%E3%81%A6%E3%82%A4%E3%83%A9%E3%82%B9%E3%83%88%E7%94%BB%E5%83%8F%E7%94%9F%E6%88%90%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95/img_4_hu2b826ec3ad4d7685d995efaa40aac0c5_597506_480x0_resize_box_3.png 480w, http://kenji.blog/p/aistablediffusion%E3%82%92%E4%BD%BF%E3%81%A3%E3%81%A6%E3%82%A4%E3%83%A9%E3%82%B9%E3%83%88%E7%94%BB%E5%83%8F%E7%94%9F%E6%88%90%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95/img_4_hu2b826ec3ad4d7685d995efaa40aac0c5_597506_1024x0_resize_box_3.png 1024w"
loading="lazy"
alt="img_4.png"
class="gallery-image"
data-flex-grow="100"
data-flex-basis="240px"
>&lt;/p>
&lt;h2 id="referências">Referências
&lt;/h2>&lt;ul>
&lt;li>&lt;a class="link" href="https://huggingface.co/gsdf/Counterfeit-V2.5" target="_blank" rel="noopener"
>https://huggingface.co/gsdf/Counterfeit-V2.5&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="https://www.youtube.com/watch?v=l8-fVSM2PVQ" target="_blank" rel="noopener"
>Criei um programa de geração de imagens usando Inteligência Artificial (IA) em 15 minutos 【Programação ao vivo】&lt;/a>&lt;/li>
&lt;/ul></description></item><item><title>Ferramentas para analisar o conteúdo de arquivos executáveis (exe)</title><link>http://kenji.blog/pt/p/ferramentas-para-analisar-o-conteudo-de-arquivos-executaveis-exe/</link><pubDate>Wed, 05 Apr 2023 23:31:06 +0900</pubDate><guid>http://kenji.blog/pt/p/ferramentas-para-analisar-o-conteudo-de-arquivos-executaveis-exe/</guid><description>&lt;img src="http://kenji.blog/p/%E5%AE%9F%E8%A1%8C%E3%83%95%E3%82%A1%E3%82%A4%E3%83%ABexe%E3%81%AE%E4%B8%AD%E8%BA%AB%E3%82%92%E8%A7%A3%E6%9E%90%E3%81%99%E3%82%8B%E3%83%84%E3%83%BC%E3%83%AB/img_1.png" alt="Featured image of post Ferramentas para analisar o conteúdo de arquivos executáveis (exe)" />&lt;h1 id="o-que-é-um-arquivo-executável-exe">O que é um arquivo executável (exe)
&lt;/h1>&lt;p>Um arquivo que pode ser executado no Windows. Basicamente, ele é escrito em um formato chamado formato PE.
Ele contém o código de linguagem de máquina para execução e recursos como ícones e imagens.&lt;/p>
&lt;p>Existem várias ferramentas para analisar arquivos executáveis, e nós as apresentaremos desta vez.&lt;/p>
&lt;h2 id="7-zip">7-Zip
&lt;/h2>&lt;p>&lt;img src="http://kenji.blog/p/%E5%AE%9F%E8%A1%8C%E3%83%95%E3%82%A1%E3%82%A4%E3%83%ABexe%E3%81%AE%E4%B8%AD%E8%BA%AB%E3%82%92%E8%A7%A3%E6%9E%90%E3%81%99%E3%82%8B%E3%83%84%E3%83%BC%E3%83%AB/img.png"
width="297"
height="170"
srcset="http://kenji.blog/p/%E5%AE%9F%E8%A1%8C%E3%83%95%E3%82%A1%E3%82%A4%E3%83%ABexe%E3%81%AE%E4%B8%AD%E8%BA%AB%E3%82%92%E8%A7%A3%E6%9E%90%E3%81%99%E3%82%8B%E3%83%84%E3%83%BC%E3%83%AB/img_hu9085a5feff69a2c6829ff5c46ff00393_6059_480x0_resize_box_3.png 480w, http://kenji.blog/p/%E5%AE%9F%E8%A1%8C%E3%83%95%E3%82%A1%E3%82%A4%E3%83%ABexe%E3%81%AE%E4%B8%AD%E8%BA%AB%E3%82%92%E8%A7%A3%E6%9E%90%E3%81%99%E3%82%8B%E3%83%84%E3%83%BC%E3%83%AB/img_hu9085a5feff69a2c6829ff5c46ff00393_6059_1024x0_resize_box_3.png 1024w"
loading="lazy"
alt="img.png"
class="gallery-image"
data-flex-grow="174"
data-flex-basis="419px"
>&lt;/p>
&lt;p>Como os arquivos EXE tendem a ser grandes, eles podem ser criados por compactação de arquivo. Nesse caso, ao usar o 7-Zip, um software de compactação e descompactação de arquivos, você pode extrair o arquivo executável e examinar seu conteúdo. Também existe uma ferramenta chamada WinRAR que pode ser extraída da mesma maneira.&lt;/p>
&lt;h2 id="resource-hacker">Resource Hacker
&lt;/h2>&lt;p>&lt;img src="http://kenji.blog/p/%E5%AE%9F%E8%A1%8C%E3%83%95%E3%82%A1%E3%82%A4%E3%83%ABexe%E3%81%AE%E4%B8%AD%E8%BA%AB%E3%82%92%E8%A7%A3%E6%9E%90%E3%81%99%E3%82%8B%E3%83%84%E3%83%BC%E3%83%AB/img_2.png"
width="186"
height="186"
srcset="http://kenji.blog/p/%E5%AE%9F%E8%A1%8C%E3%83%95%E3%82%A1%E3%82%A4%E3%83%ABexe%E3%81%AE%E4%B8%AD%E8%BA%AB%E3%82%92%E8%A7%A3%E6%9E%90%E3%81%99%E3%82%8B%E3%83%84%E3%83%BC%E3%83%AB/img_2_hu79aaf5f76ad7c56f4d42723e7059a469_60178_480x0_resize_box_3.png 480w, http://kenji.blog/p/%E5%AE%9F%E8%A1%8C%E3%83%95%E3%82%A1%E3%82%A4%E3%83%ABexe%E3%81%AE%E4%B8%AD%E8%BA%AB%E3%82%92%E8%A7%A3%E6%9E%90%E3%81%99%E3%82%8B%E3%83%84%E3%83%BC%E3%83%AB/img_2_hu79aaf5f76ad7c56f4d42723e7059a469_60178_1024x0_resize_box_3.png 1024w"
loading="lazy"
alt="img_2.png"
class="gallery-image"
data-flex-grow="100"
data-flex-basis="240px"
>&lt;/p>
&lt;p>Você pode extrair recursos (ícones, bitmaps, caixas de diálogo, strings, etc.) em um arquivo EXE. Ele também funciona como um editor hexadecimal, portanto, você pode editar e reescrever o conteúdo do arquivo EXE.&lt;/p>
&lt;h2 id="pe-explorer">PE Explorer
&lt;/h2>&lt;p>&lt;img src="http://kenji.blog/p/%E5%AE%9F%E8%A1%8C%E3%83%95%E3%82%A1%E3%82%A4%E3%83%ABexe%E3%81%AE%E4%B8%AD%E8%BA%AB%E3%82%92%E8%A7%A3%E6%9E%90%E3%81%99%E3%82%8B%E3%83%84%E3%83%BC%E3%83%AB/img_3.png"
width="186"
height="186"
srcset="http://kenji.blog/p/%E5%AE%9F%E8%A1%8C%E3%83%95%E3%82%A1%E3%82%A4%E3%83%ABexe%E3%81%AE%E4%B8%AD%E8%BA%AB%E3%82%92%E8%A7%A3%E6%9E%90%E3%81%99%E3%82%8B%E3%83%84%E3%83%BC%E3%83%AB/img_3_hueb15d1af1c62b25c13fb3d7dc03fc6df_64201_480x0_resize_box_3.png 480w, http://kenji.blog/p/%E5%AE%9F%E8%A1%8C%E3%83%95%E3%82%A1%E3%82%A4%E3%83%ABexe%E3%81%AE%E4%B8%AD%E8%BA%AB%E3%82%92%E8%A7%A3%E6%9E%90%E3%81%99%E3%82%8B%E3%83%84%E3%83%BC%E3%83%AB/img_3_hueb15d1af1c62b25c13fb3d7dc03fc6df_64201_1024x0_resize_box_3.png 1024w"
loading="lazy"
alt="img_3.png"
class="gallery-image"
data-flex-grow="100"
data-flex-basis="240px"
>&lt;/p>
&lt;p>Você pode analisar arquivos PE (EXE, DLL, OCX, SYS, drivers) para Windows. O PE Explorer oferece vários recursos de análise, como visualização da estrutura do arquivo, visualização do cabeçalho do arquivo, visualização das entradas do diretório e visualização das funções e símbolos exportados.&lt;/p>
&lt;h2 id="dependency-walker">Dependency Walker
&lt;/h2>&lt;p>&lt;img src="http://kenji.blog/p/%E5%AE%9F%E8%A1%8C%E3%83%95%E3%82%A1%E3%82%A4%E3%83%ABexe%E3%81%AE%E4%B8%AD%E8%BA%AB%E3%82%92%E8%A7%A3%E6%9E%90%E3%81%99%E3%82%8B%E3%83%84%E3%83%BC%E3%83%AB/img_4.png"
width="200"
height="200"
srcset="http://kenji.blog/p/%E5%AE%9F%E8%A1%8C%E3%83%95%E3%82%A1%E3%82%A4%E3%83%ABexe%E3%81%AE%E4%B8%AD%E8%BA%AB%E3%82%92%E8%A7%A3%E6%9E%90%E3%81%99%E3%82%8B%E3%83%84%E3%83%BC%E3%83%AB/img_4_hub63c69aff9d8b5946247e847a7ad1fc0_3219_480x0_resize_box_3.png 480w, http://kenji.blog/p/%E5%AE%9F%E8%A1%8C%E3%83%95%E3%82%A1%E3%82%A4%E3%83%ABexe%E3%81%AE%E4%B8%AD%E8%BA%AB%E3%82%92%E8%A7%A3%E6%9E%90%E3%81%99%E3%82%8B%E3%83%84%E3%83%BC%E3%83%AB/img_4_hub63c69aff9d8b5946247e847a7ad1fc0_3219_1024x0_resize_box_3.png 1024w"
loading="lazy"
alt="img_4.png"
class="gallery-image"
data-flex-grow="100"
data-flex-basis="240px"
>&lt;/p>
&lt;p>Você pode descobrir de quais arquivos DLL o arquivo EXE depende e verificar se eles foram carregados corretamente. Você também pode rastrear chamadas de função de arquivos DLL.&lt;/p>
&lt;h2 id="ghidra">Ghidra
&lt;/h2>&lt;p>&lt;img src="http://kenji.blog/p/%E5%AE%9F%E8%A1%8C%E3%83%95%E3%82%A1%E3%82%A4%E3%83%ABexe%E3%81%AE%E4%B8%AD%E8%BA%AB%E3%82%92%E8%A7%A3%E6%9E%90%E3%81%99%E3%82%8B%E3%83%84%E3%83%BC%E3%83%AB/img_5.png"
width="498"
height="337"
srcset="http://kenji.blog/p/%E5%AE%9F%E8%A1%8C%E3%83%95%E3%82%A1%E3%82%A4%E3%83%ABexe%E3%81%AE%E4%B8%AD%E8%BA%AB%E3%82%92%E8%A7%A3%E6%9E%90%E3%81%99%E3%82%8B%E3%83%84%E3%83%BC%E3%83%AB/img_5_hu5dc3fee7c4c873ff8adc099ca0ffbefc_53940_480x0_resize_box_3.png 480w, http://kenji.blog/p/%E5%AE%9F%E8%A1%8C%E3%83%95%E3%82%A1%E3%82%A4%E3%83%ABexe%E3%81%AE%E4%B8%AD%E8%BA%AB%E3%82%92%E8%A7%A3%E6%9E%90%E3%81%99%E3%82%8B%E3%83%84%E3%83%BC%E3%83%AB/img_5_hu5dc3fee7c4c873ff8adc099ca0ffbefc_53940_1024x0_resize_box_3.png 1024w"
loading="lazy"
alt="img_5.png"
class="gallery-image"
data-flex-grow="147"
data-flex-basis="354px"
>&lt;/p>
&lt;p>É uma poderosa ferramenta de engenharia reversa desenvolvida pela NSA (Agência de Segurança Nacional dos EUA) e lançada gratuitamente como código aberto. É muito popular porque não só desmonta arquivos EXE (os converte para linguagem assembly), mas também tem uma função de descompilação para um formato próximo à linguagem C.&lt;/p>
&lt;h2 id="ida-free--ida-pro">IDA Free / IDA Pro
&lt;/h2>&lt;p>&lt;img src="http://kenji.blog/p/%E5%AE%9F%E8%A1%8C%E3%83%95%E3%82%A1%E3%82%A4%E3%83%ABexe%E3%81%AE%E4%B8%AD%E8%BA%AB%E3%82%92%E8%A7%A3%E6%9E%90%E3%81%99%E3%82%8B%E3%83%84%E3%83%BC%E3%83%AB/img_6.png"
width="256"
height="256"
srcset="http://kenji.blog/p/%E5%AE%9F%E8%A1%8C%E3%83%95%E3%82%A1%E3%82%A4%E3%83%ABexe%E3%81%AE%E4%B8%AD%E8%BA%AB%E3%82%92%E8%A7%A3%E6%9E%90%E3%81%99%E3%82%8B%E3%83%84%E3%83%BC%E3%83%AB/img_6_hu960ac9a27bf840a560548c99c16556b4_3581_480x0_resize_box_3.png 480w, http://kenji.blog/p/%E5%AE%9F%E8%A1%8C%E3%83%95%E3%82%A1%E3%82%A4%E3%83%ABexe%E3%81%AE%E4%B8%AD%E8%BA%AB%E3%82%92%E8%A7%A3%E6%9E%90%E3%81%99%E3%82%8B%E3%83%84%E3%83%BC%E3%83%AB/img_6_hu960ac9a27bf840a560548c99c16556b4_3581_1024x0_resize_box_3.png 1024w"
loading="lazy"
alt="img_6.png"
class="gallery-image"
data-flex-grow="100"
data-flex-basis="240px"
>&lt;/p>
&lt;p>É um desmontador e descompilador de alto desempenho que se tornou o padrão global da indústria em análise de malware e engenharia reversa. A versão Pro é muito cara, mas se for para uso pessoal ou não comercial, você pode usar a versão de função limitada &amp;ldquo;IDA Free&amp;rdquo; gratuitamente.&lt;/p>
&lt;h2 id="x64dbg-x32dbg">x64dbg (x32dbg)
&lt;/h2>&lt;p>&lt;img src="http://kenji.blog/p/%E5%AE%9F%E8%A1%8C%E3%83%95%E3%82%A1%E3%82%A4%E3%83%ABexe%E3%81%AE%E4%B8%AD%E8%BA%AB%E3%82%92%E8%A7%A3%E6%9E%90%E3%81%99%E3%82%8B%E3%83%84%E3%83%BC%E3%83%AB/img_7.png"
width="479"
height="430"
srcset="http://kenji.blog/p/%E5%AE%9F%E8%A1%8C%E3%83%95%E3%82%A1%E3%82%A4%E3%83%ABexe%E3%81%AE%E4%B8%AD%E8%BA%AB%E3%82%92%E8%A7%A3%E6%9E%90%E3%81%99%E3%82%8B%E3%83%84%E3%83%BC%E3%83%AB/img_7_hube21c1a0d75785c568f5805ce2a13d30_21845_480x0_resize_box_3.png 480w, http://kenji.blog/p/%E5%AE%9F%E8%A1%8C%E3%83%95%E3%82%A1%E3%82%A4%E3%83%ABexe%E3%81%AE%E4%B8%AD%E8%BA%AB%E3%82%92%E8%A7%A3%E6%9E%90%E3%81%99%E3%82%8B%E3%83%84%E3%83%BC%E3%83%AB/img_7_hube21c1a0d75785c568f5805ce2a13d30_21845_1024x0_resize_box_3.png 1024w"
loading="lazy"
alt="img_7.png"
class="gallery-image"
data-flex-grow="111"
data-flex-basis="267px"
>&lt;/p>
&lt;p>É um depurador de código aberto para Windows. Ele é especializado em &amp;ldquo;análise dinâmica&amp;rdquo;, onde o conteúdo e o estado da memória são analisados passo a passo enquanto o arquivo executável é executado, e é frequentemente usado para decifrar crackmes (programas de desafio para análise) e investigar o comportamento de malware.&lt;/p>
&lt;h2 id="ilspy--dotpeek">ILSpy / dotPeek
&lt;/h2>&lt;p>&lt;img src="http://kenji.blog/p/%E5%AE%9F%E8%A1%8C%E3%83%95%E3%82%A1%E3%82%A4%E3%83%ABexe%E3%81%AE%E4%B8%AD%E8%BA%AB%E3%82%92%E8%A7%A3%E6%9E%90%E3%81%99%E3%82%8B%E3%83%84%E3%83%BC%E3%83%AB/img_8.png"
width="256"
height="256"
srcset="http://kenji.blog/p/%E5%AE%9F%E8%A1%8C%E3%83%95%E3%82%A1%E3%82%A4%E3%83%ABexe%E3%81%AE%E4%B8%AD%E8%BA%AB%E3%82%92%E8%A7%A3%E6%9E%90%E3%81%99%E3%82%8B%E3%83%84%E3%83%BC%E3%83%AB/img_8_hu85c069d4379e159e6158cf86ba41fdc9_34476_480x0_resize_box_3.png 480w, http://kenji.blog/p/%E5%AE%9F%E8%A1%8C%E3%83%95%E3%82%A1%E3%82%A4%E3%83%ABexe%E3%81%AE%E4%B8%AD%E8%BA%AB%E3%82%92%E8%A7%A3%E6%9E%90%E3%81%99%E3%82%8B%E3%83%84%E3%83%BC%E3%83%AB/img_8_hu85c069d4379e159e6158cf86ba41fdc9_34476_1024x0_resize_box_3.png 1024w"
loading="lazy"
alt="img_8.png"
class="gallery-image"
data-flex-grow="100"
data-flex-basis="240px"
>&lt;/p>
&lt;p>Se o arquivo EXE alvo for criado em uma linguagem .NET como C#, usando essas ferramentas, você pode descompilar o arquivo para um estado quase idêntico ao código-fonte original e ver o que está dentro.&lt;/p>
&lt;p>Essas ferramentas são úteis para descobrir o que está dentro de um arquivo EXE, mas você precisa ter cuidado. Editar o arquivo ou usá-lo para fins maliciosos pode causar problemas de direitos autorais ou de segurança, portanto, certifique-se de entender isso completamente antes de usá-las.&lt;/p></description></item><item><title>Como alternar aplicativos no Mac como no Windows (Alt+Tab)</title><link>http://kenji.blog/pt/p/mac%E3%81%A7windows%E3%83%A9%E3%82%A4%E3%82%AFalt-tab%E3%81%AB%E3%82%A2%E3%83%97%E3%83%AA%E3%82%B1%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3%E5%88%87%E3%82%8A%E6%9B%BF%E3%81%88%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95/</link><pubDate>Wed, 05 Apr 2023 02:20:12 +0900</pubDate><guid>http://kenji.blog/pt/p/mac%E3%81%A7windows%E3%83%A9%E3%82%A4%E3%82%AFalt-tab%E3%81%AB%E3%82%A2%E3%83%97%E3%83%AA%E3%82%B1%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3%E5%88%87%E3%82%8A%E6%9B%BF%E3%81%88%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95/</guid><description>&lt;img src="http://kenji.blog/p/mac%E3%81%A7windows%E3%83%A9%E3%82%A4%E3%82%AFalt-tab%E3%81%AB%E3%82%A2%E3%83%97%E3%83%AA%E3%82%B1%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3%E5%88%87%E3%82%8A%E6%9B%BF%E3%81%88%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95/img.png" alt="Featured image of post Como alternar aplicativos no Mac como no Windows (Alt+Tab)" />&lt;h1 id="introdução">Introdução
&lt;/h1>&lt;p>Aqui mostrarei como alternar aplicativos no Mac de forma semelhante ao Windows (Alt+Tab).&lt;/p>
&lt;p>Como é difícil conseguir isso alterando as configurações padrão, este método envolve a instalação de um aplicativo.&lt;/p>
&lt;h1 id="imagem-de-demonstração">Imagem de demonstração
&lt;/h1>&lt;p>&lt;img src="http://kenji.blog/p/mac%E3%81%A7windows%E3%83%A9%E3%82%A4%E3%82%AFalt-tab%E3%81%AB%E3%82%A2%E3%83%97%E3%83%AA%E3%82%B1%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3%E5%88%87%E3%82%8A%E6%9B%BF%E3%81%88%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95/animation.gif"
width="640"
height="200"
srcset="http://kenji.blog/p/mac%E3%81%A7windows%E3%83%A9%E3%82%A4%E3%82%AFalt-tab%E3%81%AB%E3%82%A2%E3%83%97%E3%83%AA%E3%82%B1%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3%E5%88%87%E3%82%8A%E6%9B%BF%E3%81%88%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95/animation_hu0429bb2e6c44af4c82057c8719de4732_563361_480x0_resize_box_1.gif 480w, http://kenji.blog/p/mac%E3%81%A7windows%E3%83%A9%E3%82%A4%E3%82%AFalt-tab%E3%81%AB%E3%82%A2%E3%83%97%E3%83%AA%E3%82%B1%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3%E5%88%87%E3%82%8A%E6%9B%BF%E3%81%88%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95/animation_hu0429bb2e6c44af4c82057c8719de4732_563361_1024x0_resize_box_1.gif 1024w"
loading="lazy"
alt="animation.gif"
class="gallery-image"
data-flex-grow="320"
data-flex-basis="768px"
>&lt;/p>
&lt;h1 id="método-de-configuração-macos-ventura">Método de configuração (macOS Ventura)
&lt;/h1>&lt;ol>
&lt;li>Abra &lt;a class="link" href="https://alt-tab-macos.netlify.app" target="_blank" rel="noopener"
>https://alt-tab-macos.netlify.app&lt;/a>&lt;/li>
&lt;li>Clique em &lt;code>Download the latest release&lt;/code>&lt;/li>
&lt;li>Abra o aplicativo baixado&lt;/li>
&lt;li>Siga as instruções para instalá-lo&lt;/li>
&lt;/ol>
&lt;p>Agora, você poderá alternar entre aplicativos usando Alt+Tab, assim como no Windows.&lt;/p>
&lt;p>Isso é tudo&lt;/p></description></item><item><title>Como combinar a tecla de atalho de copiar e colar no mac com o Windows</title><link>http://kenji.blog/pt/p/mac%E3%81%A7%E3%82%B3%E3%83%94%E3%83%BC%E3%83%9A%E3%83%BC%E3%82%B9%E3%83%88%E3%81%AE%E3%82%B7%E3%83%A7%E3%83%BC%E3%83%88%E3%82%AB%E3%83%83%E3%83%88%E3%82%AD%E3%83%BC%E3%82%92windows%E3%81%A8%E5%90%88%E3%82%8F%E3%81%9B%E3%82%8B%E6%96%B9%E6%B3%95/</link><pubDate>Wed, 05 Apr 2023 00:49:02 +0900</pubDate><guid>http://kenji.blog/pt/p/mac%E3%81%A7%E3%82%B3%E3%83%94%E3%83%BC%E3%83%9A%E3%83%BC%E3%82%B9%E3%83%88%E3%81%AE%E3%82%B7%E3%83%A7%E3%83%BC%E3%83%88%E3%82%AB%E3%83%83%E3%83%88%E3%82%AD%E3%83%BC%E3%82%92windows%E3%81%A8%E5%90%88%E3%82%8F%E3%81%9B%E3%82%8B%E6%96%B9%E6%B3%95/</guid><description>&lt;img src="http://kenji.blog/p/mac%E3%81%A7%E3%82%B3%E3%83%94%E3%83%BC%E3%83%9A%E3%83%BC%E3%82%B9%E3%83%88%E3%81%AE%E3%82%B7%E3%83%A7%E3%83%BC%E3%83%88%E3%82%AB%E3%83%83%E3%83%88%E3%82%AD%E3%83%BC%E3%82%92windows%E3%81%A8%E5%90%88%E3%82%8F%E3%81%9B%E3%82%8B%E6%96%B9%E6%B3%95/img.png" alt="Featured image of post Como combinar a tecla de atalho de copiar e colar no mac com o Windows" />&lt;h1 id="introdução">Introdução
&lt;/h1>&lt;p>Ao alternar entre o Windows e o mac, as teclas frequentemente usadas para copiar, colar e desfazer por atalho de teclado são diferentes, por isso vou mostrar como combiná-las.&lt;/p>
&lt;h1 id="método-de-configuração-macos-ventura">Método de configuração (macOS Ventura)
&lt;/h1>&lt;ol>
&lt;li>Abra as Configurações do Sistema&lt;/li>
&lt;li>Selecione Teclado&lt;/li>
&lt;li>Selecione Atalhos de Teclado&lt;/li>
&lt;li>Selecione Teclas Modificadoras&lt;/li>
&lt;li>Atribua a tecla Control(^) para &amp;ldquo;⌘ Command&amp;rdquo;&lt;/li>
&lt;li>Atribua a tecla Command(⌘) para &amp;ldquo;^ Control&amp;rdquo;&lt;/li>
&lt;li>Clique em Concluído&lt;/li>
&lt;/ol>
&lt;p>Fim&lt;/p></description></item><item><title>Como alterar o atalho de teclado para alternar a entrada entre japonês e inglês no mac</title><link>http://kenji.blog/pt/p/mac%E3%81%A7%E6%97%A5%E6%9C%AC%E8%AA%9E%E8%8B%B1%E8%AA%9E%E5%85%A5%E5%8A%9B%E5%88%87%E3%82%8A%E6%9B%BF%E3%81%88%E3%81%AE%E3%82%B7%E3%83%A7%E3%83%BC%E3%83%88%E3%82%AB%E3%83%83%E3%83%88%E3%82%AD%E3%83%BC%E3%82%92%E5%A4%89%E6%9B%B4%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95/</link><pubDate>Tue, 04 Apr 2023 23:02:12 +0900</pubDate><guid>http://kenji.blog/pt/p/mac%E3%81%A7%E6%97%A5%E6%9C%AC%E8%AA%9E%E8%8B%B1%E8%AA%9E%E5%85%A5%E5%8A%9B%E5%88%87%E3%82%8A%E6%9B%BF%E3%81%88%E3%81%AE%E3%82%B7%E3%83%A7%E3%83%BC%E3%83%88%E3%82%AB%E3%83%83%E3%83%88%E3%82%AD%E3%83%BC%E3%82%92%E5%A4%89%E6%9B%B4%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95/</guid><description>&lt;img src="http://kenji.blog/p/mac%E3%81%A7%E6%97%A5%E6%9C%AC%E8%AA%9E%E8%8B%B1%E8%AA%9E%E5%85%A5%E5%8A%9B%E5%88%87%E3%82%8A%E6%9B%BF%E3%81%88%E3%81%AE%E3%82%B7%E3%83%A7%E3%83%BC%E3%83%88%E3%82%AB%E3%83%83%E3%83%88%E3%82%AD%E3%83%BC%E3%82%92%E5%A4%89%E6%9B%B4%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95/img.png" alt="Featured image of post Como alterar o atalho de teclado para alternar a entrada entre japonês e inglês no mac" />&lt;h1 id="introdução">Introdução
&lt;/h1>&lt;p>Eu uso um teclado US e no Windows eu alterno a entrada de japonês com &lt;code>Alt + `&lt;/code>.
Eu queria alternar com a mesma tecla no mac, e pesquisando descobri que é possível alterar isso nas configurações.&lt;/p>
&lt;h1 id="método-de-configuração-macos-ventura">Método de configuração (macOS Ventura)
&lt;/h1>&lt;ol>
&lt;li>Abra as Preferências do Sistema&lt;/li>
&lt;li>Selecione Teclado&lt;/li>
&lt;li>Selecione Atalhos de Teclado&lt;/li>
&lt;li>Selecione Fontes de Entrada&lt;/li>
&lt;li>Clique duas vezes no atalho à direita de &amp;ldquo;Selecionar a fonte seguinte no menu de entrada&amp;rdquo;&lt;/li>
&lt;li>Pressione &lt;code>Alt + `&lt;/code>&lt;/li>
&lt;li>Clique em Concluído&lt;/li>
&lt;/ol>
&lt;p>Com isso, você pode alternar entre inglês ⇔ japonês com &lt;code>Alt + `&lt;/code>.
No entanto, por padrão, o Katakana é incluído na alternância, então removi o Katakana da fonte de entrada seguindo os passos abaixo.&lt;/p>
&lt;ol>
&lt;li>Abra as Preferências do Sistema&lt;/li>
&lt;li>Selecione Teclado&lt;/li>
&lt;li>Clique em Editar à direita de &lt;code>Japonês - Romaji&lt;/code> nas Fontes de Entrada&lt;/li>
&lt;li>Clique em &lt;code>Japonês - Romaji&lt;/code>&lt;/li>
&lt;li>Desmarque a opção Katakana no Modo de Entrada&lt;/li>
&lt;li>Clique em Concluído&lt;/li>
&lt;/ol>
&lt;p>Fim&lt;/p></description></item><item><title>Como encontrar a localização de um arquivo executável no PATH do Windows</title><link>http://kenji.blog/pt/p/windows-%E3%81%A7%E3%83%91%E3%82%B9%E3%81%AE%E9%80%9A%E3%81%A3%E3%81%9F%E5%AE%9F%E8%A1%8C%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%81%AE%E5%A0%B4%E6%89%80%E3%82%92%E8%A6%8B%E3%81%A4%E3%81%91%E3%82%8B%E6%96%B9%E6%B3%95/</link><pubDate>Mon, 03 Apr 2023 00:02:55 +0900</pubDate><guid>http://kenji.blog/pt/p/windows-%E3%81%A7%E3%83%91%E3%82%B9%E3%81%AE%E9%80%9A%E3%81%A3%E3%81%9F%E5%AE%9F%E8%A1%8C%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%81%AE%E5%A0%B4%E6%89%80%E3%82%92%E8%A6%8B%E3%81%A4%E3%81%91%E3%82%8B%E6%96%B9%E6%B3%95/</guid><description>&lt;img src="http://kenji.blog/p/windows-%E3%81%A7%E3%83%91%E3%82%B9%E3%81%AE%E9%80%9A%E3%81%A3%E3%81%9F%E5%AE%9F%E8%A1%8C%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%81%AE%E5%A0%B4%E6%89%80%E3%82%92%E8%A6%8B%E3%81%A4%E3%81%91%E3%82%8B%E6%96%B9%E6%B3%95/img.png" alt="Featured image of post Como encontrar a localização de um arquivo executável no PATH do Windows" />&lt;h1 id="como-encontrar-a-localização-de-um-arquivo-executável-no-path-do-windows">Como encontrar a localização de um arquivo executável no PATH do Windows
&lt;/h1>&lt;p>Quando você executa um comando especificando um arquivo executável, há momentos em que deseja saber onde esse arquivo executável está localizado. Nesses casos, você pode descobrir a localização do arquivo executável com o seguinte comando.&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-powershell" data-lang="powershell">&lt;span class="line">&lt;span class="cl">&lt;span class="nb">where &lt;/span>&lt;span class="p">&amp;lt;&lt;/span>&lt;span class="n">nome_do_arquivo_executável&lt;/span>&lt;span class="p">&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>Por exemplo, se você quiser saber a localização do Paint (mspaint.exe), faça o seguinte:&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-powershell" data-lang="powershell">&lt;span class="line">&lt;span class="cl">&lt;span class="nb">where &lt;/span>&lt;span class="n">mspaint&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="py">exe&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h1 id="referências">Referências
&lt;/h1>&lt;ul>
&lt;li>&lt;a class="link" href="https://superuser.com/questions/49104/how-do-i-find-the-location-of-an-executable-in-windows" target="_blank" rel="noopener"
>How do I find the location of an executable in Windows?&lt;/a>&lt;/li>
&lt;/ul></description></item><item><title>Comprei um mac mini (2018)</title><link>http://kenji.blog/pt/p/mac-mini2018%E3%82%92%E8%B3%BC%E5%85%A5/</link><pubDate>Sun, 02 Apr 2023 18:05:30 +0900</pubDate><guid>http://kenji.blog/pt/p/mac-mini2018%E3%82%92%E8%B3%BC%E5%85%A5/</guid><description>&lt;img src="http://kenji.blog/p/mac-mini2018%E3%82%92%E8%B3%BC%E5%85%A5/img.png" alt="Featured image of post Comprei um mac mini (2018)" />&lt;h1 id="comprei-um-mac-mini-2018">Comprei um mac mini (2018)
&lt;/h1>&lt;p>Comprei um mac mini (2018) usado no Mercari. As especificações são as seguintes.&lt;/p>
&lt;ul>
&lt;li>CPU: Intel Core i7 de 6 núcleos e 3,2 GHz&lt;/li>
&lt;li>Memória: 32 GB&lt;/li>
&lt;li>Armazenamento: SSD de 1 TB&lt;/li>
&lt;/ul>
&lt;p>O preço foi de ￥ 77.000&lt;/p>
&lt;h1 id="motivo-da-compra">Motivo da compra
&lt;/h1>&lt;ul>
&lt;li>Uso um mac mini com especificações quase idênticas no trabalho para desenvolver aplicativos móveis, mas também queria configurar um ambiente de desenvolvimento em casa (especialmente para executar o xcode).&lt;/li>
&lt;li>Tenho um macbook pro, mas como o comprei há 9 anos, é muito lento e quase não o uso.&lt;/li>
&lt;li>Queria desenvolver pessoalmente aplicativos para iOS.&lt;/li>
&lt;/ul>
&lt;h1 id="instalando-o-xcode-e-o-intelij-idea-imediatamente">Instalando o xcode e o inteliJ IDEA imediatamente
&lt;/h1>&lt;p>A versão do xcode é a Versão 14.3 (14E222b)
&lt;img src="http://kenji.blog/p/mac-mini2018%E3%82%92%E8%B3%BC%E5%85%A5/img_1.png"
width="642"
height="331"
srcset="http://kenji.blog/p/mac-mini2018%E3%82%92%E8%B3%BC%E5%85%A5/img_1_hu62db0034d30abaeb581954f95aa17251_77271_480x0_resize_box_3.png 480w, http://kenji.blog/p/mac-mini2018%E3%82%92%E8%B3%BC%E5%85%A5/img_1_hu62db0034d30abaeb581954f95aa17251_77271_1024x0_resize_box_3.png 1024w"
loading="lazy"
alt="img_1.png"
class="gallery-image"
data-flex-grow="193"
data-flex-basis="465px"
>&lt;/p>
&lt;p>A versão do inteliJ IDEA é a 2023.1
&lt;img src="http://kenji.blog/p/mac-mini2018%E3%82%92%E8%B3%BC%E5%85%A5/img_2.png"
width="570"
height="386"
srcset="http://kenji.blog/p/mac-mini2018%E3%82%92%E8%B3%BC%E5%85%A5/img_2_hud92d5f30e3391929dea80140d8f5dfb2_79324_480x0_resize_box_3.png 480w, http://kenji.blog/p/mac-mini2018%E3%82%92%E8%B3%BC%E5%85%A5/img_2_hud92d5f30e3391929dea80140d8f5dfb2_79324_1024x0_resize_box_3.png 1024w"
loading="lazy"
alt="img_2.png"
class="gallery-image"
data-flex-grow="147"
data-flex-basis="354px"
>&lt;/p>
&lt;p>Vamos começar a desenvolver!&lt;/p></description></item><item><title>Sobre o site de material fotográfico para blogs "Unsplash"</title><link>http://kenji.blog/pt/p/sobre-o-site-de-material-fotografico-para-blogs-unsplash/</link><pubDate>Sun, 02 Apr 2023 14:44:17 +0900</pubDate><guid>http://kenji.blog/pt/p/sobre-o-site-de-material-fotografico-para-blogs-unsplash/</guid><description>&lt;img src="http://kenji.blog/p/%E3%83%96%E3%83%AD%E3%82%B0%E3%81%A7%E4%BD%BF%E3%81%88%E3%82%8B%E5%86%99%E7%9C%9F%E7%B4%A0%E6%9D%90%E3%82%B5%E3%82%A4%E3%83%88unsplash%E3%81%AB%E3%81%A4%E3%81%84%E3%81%A6/img_1.png" alt="Featured image of post Sobre o site de material fotográfico para blogs "Unsplash"" />&lt;h2 id="sobre-o-unsplash">Sobre o &amp;ldquo;Unsplash&amp;rdquo;
&lt;/h2>&lt;p>&lt;a class="link" href="https://unsplash.com/ja/" target="_blank" rel="noopener"
>https://unsplash.com/ja/&lt;/a>&lt;/p>
&lt;p>O site de material fotográfico &amp;ldquo;Unsplash&amp;rdquo; pode ser resumido da seguinte forma:&lt;/p>
&lt;ul>
&lt;li>Todas as imagens podem ser usadas gratuitamente&lt;/li>
&lt;li>Uso comercial permitido&lt;/li>
&lt;li>Modificação de imagem permitida&lt;/li>
&lt;li>Nenhuma permissão é necessária&lt;/li>
&lt;li>Não requer atribuição de crédito&lt;/li>
&lt;/ul>
&lt;p>É muito fácil de usar ao escrever artigos para blogs, então não deixe de experimentar.&lt;/p>
&lt;p>※ Para obter informações sobre a licença, consulte a &amp;ldquo;Nota de rodapé&amp;rdquo; abaixo. &lt;sup id="fnref:1">&lt;a href="#fn:1" class="footnote-ref" role="doc-noteref">1&lt;/a>&lt;/sup>&lt;/p>
&lt;p>Também usaremos este site.&lt;/p>
&lt;div class="footnotes" role="doc-endnotes">
&lt;hr>
&lt;ol>
&lt;li id="fn:1">
&lt;p>&lt;a class="link" href="https://unsplash.com/ja/%E3%83%A9%E3%82%A4%E3%82%BB%E3%83%B3%E3%82%B9" target="_blank" rel="noopener"
>Licença do Unsplash&lt;/a>&amp;#160;&lt;a href="#fnref:1" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;/ol>
&lt;/div></description></item><item><title>Como exibir japonês no egui</title><link>http://kenji.blog/pt/p/como-exibir-japones-no-egui/</link><pubDate>Sat, 01 Apr 2023 03:17:52 +0900</pubDate><guid>http://kenji.blog/pt/p/como-exibir-japones-no-egui/</guid><description>&lt;img src="http://kenji.blog/p/egui%E3%81%A7%E6%97%A5%E6%9C%AC%E8%AA%9E%E3%82%92%E8%A1%A8%E7%A4%BA%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95/img.png" alt="Featured image of post Como exibir japonês no egui" />&lt;h2 id="obtenha-a-amostra-do-egui">Obtenha a amostra do egui
&lt;/h2>&lt;p>Você pode executar a amostra do egui com o seguinte comando.&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">git clone https://github.com/emilk/eframe_template/ egui_test
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">cd egui_test
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">cargo run
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h2 id="carregue-uma-fonte-compatível-com-japonês">Carregue uma fonte compatível com japonês
&lt;/h2>&lt;p>Para exibir texto em japonês, você deve carregar uma fonte que suporte o idioma japonês.&lt;/p>
&lt;p>No arquivo &lt;code>src/app.rs&lt;/code>, adicione as seguintes linhas dentro do método &lt;code>pub fn new&lt;/code>.&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt"> 1
&lt;/span>&lt;span class="lnt"> 2
&lt;/span>&lt;span class="lnt"> 3
&lt;/span>&lt;span class="lnt"> 4
&lt;/span>&lt;span class="lnt"> 5
&lt;/span>&lt;span class="lnt"> 6
&lt;/span>&lt;span class="lnt"> 7
&lt;/span>&lt;span class="lnt"> 8
&lt;/span>&lt;span class="lnt"> 9
&lt;/span>&lt;span class="lnt">10
&lt;/span>&lt;span class="lnt">11
&lt;/span>&lt;span class="lnt">12
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-rust" data-lang="rust">&lt;span class="line">&lt;span class="cl">&lt;span class="c1">// Carregar a fonte compatível com japonês
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">&lt;/span>&lt;span class="kd">let&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="k">mut&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">fonts&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">egui&lt;/span>::&lt;span class="n">FontDefinitions&lt;/span>::&lt;span class="n">default&lt;/span>&lt;span class="p">();&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">&lt;/span>&lt;span class="n">fonts&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">font_data&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">insert&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="s">&amp;#34;Meiryo&amp;#34;&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">to_owned&lt;/span>&lt;span class="p">(),&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="n">egui&lt;/span>::&lt;span class="n">FontData&lt;/span>::&lt;span class="n">from_static&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="fm">include_bytes!&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s">&amp;#34;C:/Windows/Fonts/Meiryo.ttc&amp;#34;&lt;/span>&lt;span class="p">)),&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">&lt;/span>&lt;span class="p">);&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">&lt;/span>&lt;span class="n">fonts&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">families&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">entry&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">egui&lt;/span>::&lt;span class="n">FontFamily&lt;/span>::&lt;span class="n">Proportional&lt;/span>&lt;span class="p">)&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">or_default&lt;/span>&lt;span class="p">()&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">insert&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="mi">0&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="s">&amp;#34;Meiryo&amp;#34;&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">to_owned&lt;/span>&lt;span class="p">());&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">&lt;/span>&lt;span class="n">cc&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">egui_ctx&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">set_fonts&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">fonts&lt;/span>&lt;span class="p">);&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h2 id="agora-você-pode-exibir-japonês">Agora você pode exibir japonês.
&lt;/h2>&lt;p>&lt;img src="http://kenji.blog/p/egui%E3%81%A7%E6%97%A5%E6%9C%AC%E8%AA%9E%E3%82%92%E8%A1%A8%E7%A4%BA%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95/img.png"
width="279"
height="120"
srcset="http://kenji.blog/p/egui%E3%81%A7%E6%97%A5%E6%9C%AC%E8%AA%9E%E3%82%92%E8%A1%A8%E7%A4%BA%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95/img_hu6798dc327f7454fc6cd8b8de1315ab03_5786_480x0_resize_box_3.png 480w, http://kenji.blog/p/egui%E3%81%A7%E6%97%A5%E6%9C%AC%E8%AA%9E%E3%82%92%E8%A1%A8%E7%A4%BA%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95/img_hu6798dc327f7454fc6cd8b8de1315ab03_5786_1024x0_resize_box_3.png 1024w"
loading="lazy"
alt="img.png"
class="gallery-image"
data-flex-grow="232"
data-flex-basis="558px"
>&lt;/p></description></item><item><title>Como habilitar KaTeX (exibição de fórmulas no estilo LaTeX) no hugo</title><link>http://kenji.blog/pt/p/como-habilitar-katex-no-hugo/</link><pubDate>Fri, 31 Mar 2023 23:11:26 +0900</pubDate><guid>http://kenji.blog/pt/p/como-habilitar-katex-no-hugo/</guid><description>&lt;img src="http://kenji.blog/p/hugo%E3%81%A7katexlatex%E9%A2%A8%E6%95%B0%E5%BC%8F%E8%A1%A8%E7%A4%BA%E3%82%92%E6%9C%89%E5%8A%B9%E3%81%AB%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95/img.png" alt="Featured image of post Como habilitar KaTeX (exibição de fórmulas no estilo LaTeX) no hugo" />&lt;h1 id="o-que-é-katex">O que é KaTeX
&lt;/h1>&lt;p>KaTeX é uma biblioteca javascript para exibir fórmulas no estilo LaTeX em HTML.&lt;/p>
&lt;p>Especificamente, você pode exibir fórmulas como a abaixo.&lt;/p>
$$f(x) = x^2 + x + 41$$
&lt;p>Parece haver outras bibliotecas de exibição de fórmulas no estilo LaTeX, mas o KaTeX tem a reputação de ser simples e rápido.&lt;/p>
&lt;h1 id="como-introduzir-no-hugo">Como introduzir no hugo
&lt;/h1>&lt;ol>
&lt;li>Crie um novo &lt;code>layouts/partials/math.html&lt;/code> na hierarquia de pastas do hugo.&lt;/li>
&lt;/ol>
&lt;p>O conteúdo deve ser o seguinte.&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt"> 1
&lt;/span>&lt;span class="lnt"> 2
&lt;/span>&lt;span class="lnt"> 3
&lt;/span>&lt;span class="lnt"> 4
&lt;/span>&lt;span class="lnt"> 5
&lt;/span>&lt;span class="lnt"> 6
&lt;/span>&lt;span class="lnt"> 7
&lt;/span>&lt;span class="lnt"> 8
&lt;/span>&lt;span class="lnt"> 9
&lt;/span>&lt;span class="lnt">10
&lt;/span>&lt;span class="lnt">11
&lt;/span>&lt;span class="lnt">12
&lt;/span>&lt;span class="lnt">13
&lt;/span>&lt;span class="lnt">14
&lt;/span>&lt;span class="lnt">15
&lt;/span>&lt;span class="lnt">16
&lt;/span>&lt;span class="lnt">17
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">&amp;lt;link rel=&amp;#34;stylesheet&amp;#34; href=&amp;#34;https://cdn.jsdelivr.net/npm/katex@0.16.4/dist/katex.min.css&amp;#34; integrity=&amp;#34;sha384-vKruj+a13U8yHIkAyGgK1J3ArTLzrFGBbBc0tDp4ad/EyewESeXE/Iv67Aj8gKZ0&amp;#34; crossorigin=&amp;#34;anonymous&amp;#34;&amp;gt;
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&amp;lt;script defer src=&amp;#34;https://cdn.jsdelivr.net/npm/katex@0.16.4/dist/katex.min.js&amp;#34; integrity=&amp;#34;sha384-PwRUT/YqbnEjkZO0zZxNqcxACrXe+j766U2amXcgMg5457rve2Y7I6ZJSm2A0mS4&amp;#34; crossorigin=&amp;#34;anonymous&amp;#34;&amp;gt;&amp;lt;/script&amp;gt;
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&amp;lt;script defer src=&amp;#34;https://cdn.jsdelivr.net/npm/katex@0.16.4/dist/contrib/auto-render.min.js&amp;#34; integrity=&amp;#34;sha384-+VBxd3r6XgURycqtZ117nYw44OOcIax56Z4dCRWbxyPt0Koah1uHoK0o4+/RRE05&amp;#34; crossorigin=&amp;#34;anonymous&amp;#34;&amp;gt;&amp;lt;/script&amp;gt;
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&amp;lt;script&amp;gt;
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">document.addEventListener(&amp;#34;DOMContentLoaded&amp;#34;, function() {
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> renderMathInElement(
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> document.body,
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> {
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> delimiters: [
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> {left: &amp;#34;$$&amp;#34;, right: &amp;#34;$$&amp;#34;, display: true},
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> {left: &amp;#34;\\[&amp;#34;, right: &amp;#34;\\]&amp;#34;, display: true},
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> {left: &amp;#34;$&amp;#34;, right: &amp;#34;$&amp;#34;, display: false},
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> {left: &amp;#34;\\(&amp;#34;, right: &amp;#34;\\)&amp;#34;, display: false}
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> ]
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> });
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> });
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&amp;lt;/script&amp;gt;
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;ol start="2">
&lt;li>Em seguida, adicione o código abaixo ao arquivo existente &lt;code>layouts/partials/extend_head.html&lt;/code>.&lt;/li>
&lt;/ol>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">{{ if or .Params.math .Site.Params.math }}
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">{{ partial &amp;#34;math.html&amp;#34; . }}
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">{{ end }}
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;ol start="3">
&lt;li>Agora você está pronto para usar o KaTeX.&lt;/li>
&lt;/ol>
&lt;p>Você pode habilitar o KaTeX adicionando &lt;code>math: true&lt;/code> ao front matter da página.&lt;/p>
&lt;ol start="4">
&lt;li>Tudo o que resta é escrever a fórmula no estilo LaTeX no corpo do artigo da página.&lt;/li>
&lt;/ol>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">$$ e^{i \pi} = -1 $$
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>Ao escrever como acima, será exibido como abaixo.&lt;/p>
$$ e^{i \pi} = -1 $$
&lt;h1 id="referência">Referência
&lt;/h1>&lt;ul>
&lt;li>&lt;a class="link" href="https://reorx.github.io/hugo-PaperModX/docs/math-typesetting/" target="_blank" rel="noopener"
>Math Typesetting | PaperModX&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="https://katex.org/docs/autorender.html" target="_blank" rel="noopener"
>KaTex Auto-render Extension&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="https://www.storange.jp/2017/02/katex.html" target="_blank" rel="noopener"
>Introdução ao KaTeX | The Strange Storage&lt;/a>&lt;/li>
&lt;/ul></description></item><item><title>Livros de Negócios Recomendados</title><link>http://kenji.blog/pt/p/livros-de-negocios-recomendados/</link><pubDate>Sun, 19 Mar 2023 18:13:14 +0900</pubDate><guid>http://kenji.blog/pt/p/livros-de-negocios-recomendados/</guid><description>&lt;img src="http://kenji.blog/p/%E3%81%8A%E3%81%99%E3%81%99%E3%82%81%E3%81%AE%E3%83%93%E3%82%B8%E3%83%8D%E3%82%B9%E6%9B%B8/img.png" alt="Featured image of post Livros de Negócios Recomendados" />&lt;h2 id="como-fazer-amigos-e-influenciar-pessoas">Como Fazer Amigos e Influenciar Pessoas
&lt;/h2>&lt;p>&lt;a class="link" href="https://amzn.to/3YTv0Dr" target="_blank" rel="noopener"
>https://amzn.to/3YTv0Dr&lt;/a>&lt;/p>
&lt;p>&lt;img src="http://kenji.blog/p/%E3%81%8A%E3%81%99%E3%81%99%E3%82%81%E3%81%AE%E3%83%93%E3%82%B8%E3%83%8D%E3%82%B9%E6%9B%B8/img_1.png"
width="158"
height="218"
srcset="http://kenji.blog/p/%E3%81%8A%E3%81%99%E3%81%99%E3%82%81%E3%81%AE%E3%83%93%E3%82%B8%E3%83%8D%E3%82%B9%E6%9B%B8/img_1_hu0b4e8b3b2e8876499a2f9254f3b03b70_47860_480x0_resize_box_3.png 480w, http://kenji.blog/p/%E3%81%8A%E3%81%99%E3%81%99%E3%82%81%E3%81%AE%E3%83%93%E3%82%B8%E3%83%8D%E3%82%B9%E6%9B%B8/img_1_hu0b4e8b3b2e8876499a2f9254f3b03b70_47860_1024x0_resize_box_3.png 1024w"
loading="lazy"
alt="img_1.png"
class="gallery-image"
data-flex-grow="72"
data-flex-basis="173px"
>&lt;/p>
&lt;h2 id="a-coragem-de-não-agradar">A Coragem de Não Agradar
&lt;/h2>&lt;p>&lt;a class="link" href="https://amzn.to/3n3SVCQ" target="_blank" rel="noopener"
>https://amzn.to/3n3SVCQ&lt;/a>&lt;/p>
&lt;p>&lt;img src="http://kenji.blog/p/%E3%81%8A%E3%81%99%E3%81%99%E3%82%81%E3%81%AE%E3%83%93%E3%82%B8%E3%83%8D%E3%82%B9%E6%9B%B8/img_4.png"
width="154"
height="218"
srcset="http://kenji.blog/p/%E3%81%8A%E3%81%99%E3%81%99%E3%82%81%E3%81%AE%E3%83%93%E3%82%B8%E3%83%8D%E3%82%B9%E6%9B%B8/img_4_huda24c6b40e214f1b3d7c78666e957c42_67528_480x0_resize_box_3.png 480w, http://kenji.blog/p/%E3%81%8A%E3%81%99%E3%81%99%E3%82%81%E3%81%AE%E3%83%93%E3%82%B8%E3%83%8D%E3%82%B9%E6%9B%B8/img_4_huda24c6b40e214f1b3d7c78666e957c42_67528_1024x0_resize_box_3.png 1024w"
loading="lazy"
alt="img_4.png"
class="gallery-image"
data-flex-grow="70"
data-flex-basis="169px"
>&lt;/p>
&lt;h2 id="life-shift-a-estratégia-de-vida-para-a-era-dos-100-anos">LIFE SHIFT A Estratégia de Vida para a Era dos 100 Anos
&lt;/h2>&lt;p>&lt;a class="link" href="https://amzn.to/3TtKUDf" target="_blank" rel="noopener"
>https://amzn.to/3TtKUDf&lt;/a>&lt;/p>
&lt;p>&lt;img src="http://kenji.blog/p/%E3%81%8A%E3%81%99%E3%81%99%E3%82%81%E3%81%AE%E3%83%93%E3%82%B8%E3%83%8D%E3%82%B9%E6%9B%B8/img_3.png"
width="163"
height="218"
srcset="http://kenji.blog/p/%E3%81%8A%E3%81%99%E3%81%99%E3%82%81%E3%81%AE%E3%83%93%E3%82%B8%E3%83%8D%E3%82%B9%E6%9B%B8/img_3_hu8ca572c69f660691f78f4503d6e98a90_44702_480x0_resize_box_3.png 480w, http://kenji.blog/p/%E3%81%8A%E3%81%99%E3%81%99%E3%82%81%E3%81%AE%E3%83%93%E3%82%B8%E3%83%8D%E3%82%B9%E6%9B%B8/img_3_hu8ca572c69f660691f78f4503d6e98a90_44702_1024x0_resize_box_3.png 1024w"
loading="lazy"
alt="img_3.png"
class="gallery-image"
data-flex-grow="74"
data-flex-basis="179px"
>&lt;/p>
&lt;h2 id="os-7-hábitos-das-pessoas-altamente-eficazes">Os 7 Hábitos das Pessoas Altamente Eficazes
&lt;/h2>&lt;p>&lt;a class="link" href="https://amzn.to/3TqfjSO" target="_blank" rel="noopener"
>https://amzn.to/3TqfjSO&lt;/a>&lt;/p>
&lt;p>&lt;img src="http://kenji.blog/p/%E3%81%8A%E3%81%99%E3%81%99%E3%82%81%E3%81%AE%E3%83%93%E3%82%B8%E3%83%8D%E3%82%B9%E6%9B%B8/img_2.png"
width="140"
height="218"
srcset="http://kenji.blog/p/%E3%81%8A%E3%81%99%E3%81%99%E3%82%81%E3%81%AE%E3%83%93%E3%82%B8%E3%83%8D%E3%82%B9%E6%9B%B8/img_2_hu532c5c80cffe57a2c6e7fc7e8a9fb9dc_33323_480x0_resize_box_3.png 480w, http://kenji.blog/p/%E3%81%8A%E3%81%99%E3%81%99%E3%82%81%E3%81%AE%E3%83%93%E3%82%B8%E3%83%8D%E3%82%B9%E6%9B%B8/img_2_hu532c5c80cffe57a2c6e7fc7e8a9fb9dc_33323_1024x0_resize_box_3.png 1024w"
loading="lazy"
alt="img_2.png"
class="gallery-image"
data-flex-grow="64"
data-flex-basis="154px"
>&lt;/p></description></item><item><title>Extensões Recomendadas do Chrome</title><link>http://kenji.blog/pt/p/%E3%81%8A%E3%81%99%E3%81%99%E3%82%81%E3%81%AE-chorme-%E6%8B%A1%E5%BC%B5/</link><pubDate>Sun, 19 Mar 2023 02:54:30 +0900</pubDate><guid>http://kenji.blog/pt/p/%E3%81%8A%E3%81%99%E3%81%99%E3%82%81%E3%81%AE-chorme-%E6%8B%A1%E5%BC%B5/</guid><description>&lt;img src="http://kenji.blog/p/%E3%81%8A%E3%81%99%E3%81%99%E3%82%81%E3%81%AE-chorme-%E6%8B%A1%E5%BC%B5/img_4.png" alt="Featured image of post Extensões Recomendadas do Chrome" />&lt;h1 id="extensões-recomendadas-do-chrome">Extensões Recomendadas do Chrome
&lt;/h1>&lt;p>Aqui estão as extensões do Chrome que uso atualmente. Apesar de serem para o Chrome, também podem ser usadas no Microsoft Edge.&lt;/p>
&lt;h2 id="1-simplegestures">1. simpleGestures
&lt;/h2>&lt;p>&lt;img src="http://kenji.blog/p/%E3%81%8A%E3%81%99%E3%81%99%E3%82%81%E3%81%AE-chorme-%E6%8B%A1%E5%BC%B5/img_2.png"
width="640"
height="400"
srcset="http://kenji.blog/p/%E3%81%8A%E3%81%99%E3%81%99%E3%82%81%E3%81%AE-chorme-%E6%8B%A1%E5%BC%B5/img_2_hu4bcd797593a745b5f9b4cb285de52b24_52497_480x0_resize_box_3.png 480w, http://kenji.blog/p/%E3%81%8A%E3%81%99%E3%81%99%E3%82%81%E3%81%AE-chorme-%E6%8B%A1%E5%BC%B5/img_2_hu4bcd797593a745b5f9b4cb285de52b24_52497_1024x0_resize_box_3.png 1024w"
loading="lazy"
alt="img_2.png"
class="gallery-image"
data-flex-grow="160"
data-flex-basis="384px"
>&lt;/p>
&lt;p>É uma extensão que permite usar gestos do mouse.
Você pode operar o navegador sem usar o teclado ou mirar nos botões da barra de ferramentas.&lt;/p>
&lt;p>Por exemplo, você pode voltar deslizando o mouse para a esquerda enquanto segura o botão direito, ou avançar deslizando para a direita enquanto segura o botão direito.&lt;/p>
&lt;p>Como também é de código aberto, é altamente confiável.&lt;/p>
&lt;ul>
&lt;li>&lt;a class="link" href="https://chrome.google.com/webstore/detail/simplegestures/flfminafiamnggnldfpilnfnmbgmiegn" target="_blank" rel="noopener"
>simpleGestures&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="https://github.com/RyutaKojima/simpleGestures" target="_blank" rel="noopener"
>github&lt;/a>&lt;/li>
&lt;/ul>
&lt;h2 id="2-ublock-origin">2. uBlock Origin
&lt;/h2>&lt;p>&lt;img src="http://kenji.blog/p/%E3%81%8A%E3%81%99%E3%81%99%E3%82%81%E3%81%AE-chorme-%E6%8B%A1%E5%BC%B5/img_3.png"
width="100"
height="100"
srcset="http://kenji.blog/p/%E3%81%8A%E3%81%99%E3%81%99%E3%82%81%E3%81%AE-chorme-%E6%8B%A1%E5%BC%B5/img_3_hu67a45412a01a15e955f073af8a67274e_3982_480x0_resize_box_3.png 480w, http://kenji.blog/p/%E3%81%8A%E3%81%99%E3%81%99%E3%82%81%E3%81%AE-chorme-%E6%8B%A1%E5%BC%B5/img_3_hu67a45412a01a15e955f073af8a67274e_3982_1024x0_resize_box_3.png 1024w"
loading="lazy"
alt="img_3.png"
class="gallery-image"
data-flex-grow="100"
data-flex-basis="240px"
>&lt;/p>
&lt;p>Uma extensão para bloquear anúncios. Por ser de código aberto, é altamente confiável. Além disso, usa pouca CPU e memória, funcionando de forma rápida e confortável.&lt;/p>
&lt;ul>
&lt;li>&lt;a class="link" href="https://microsoftedge.microsoft.com/addons/detail/ublock-origin/odfafepnkmbhccpbejgmiehpchacaeak" target="_blank" rel="noopener"
>uBlock Origin&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="https://github.com/gorhill/uBlock/" target="_blank" rel="noopener"
>github&lt;/a>&lt;/li>
&lt;/ul>
&lt;h2 id="3-tradutor-deepl">3. Tradutor DeepL
&lt;/h2>&lt;p>&lt;img src="http://kenji.blog/p/%E3%81%8A%E3%81%99%E3%81%99%E3%82%81%E3%81%AE-chorme-%E6%8B%A1%E5%BC%B5/img.png"
width="640"
height="400"
srcset="http://kenji.blog/p/%E3%81%8A%E3%81%99%E3%81%99%E3%82%81%E3%81%AE-chorme-%E6%8B%A1%E5%BC%B5/img_hub3c737317700497686769948a4bd0d5d_91291_480x0_resize_box_3.png 480w, http://kenji.blog/p/%E3%81%8A%E3%81%99%E3%81%99%E3%82%81%E3%81%AE-chorme-%E6%8B%A1%E5%BC%B5/img_hub3c737317700497686769948a4bd0d5d_91291_1024x0_resize_box_3.png 1024w"
loading="lazy"
alt="img.png"
class="gallery-image"
data-flex-grow="160"
data-flex-basis="384px"
>&lt;/p>
&lt;p>Uma extensão do Chrome que permite traduzir a página usando o mundialmente famoso serviço de tradução DeepL. Quando você seleciona o texto que deseja traduzir no navegador, o ícone do DeepL aparece e, ao clicar, ele é traduzido automaticamente.&lt;/p>
&lt;ul>
&lt;li>&lt;a class="link" href="https://chrome.google.com/webstore/detail/deepl-translate-reading-w/cofdbpoegempjloogbagkncekinflcnj?hl=ja" target="_blank" rel="noopener"
>DeepL Translator&lt;/a>&lt;/li>
&lt;/ul>
&lt;h2 id="4-chatgpt-sidebar">4. ChatGPT Sidebar
&lt;/h2>&lt;p>&lt;img src="http://kenji.blog/p/%E3%81%8A%E3%81%99%E3%81%99%E3%82%81%E3%81%AE-chorme-%E6%8B%A1%E5%BC%B5/img_5.png"
width="640"
height="400"
srcset="http://kenji.blog/p/%E3%81%8A%E3%81%99%E3%81%99%E3%82%81%E3%81%AE-chorme-%E6%8B%A1%E5%BC%B5/img_5_hu10d1b065dcac4fe890e2b430c09f6a86_129788_480x0_resize_box_3.png 480w, http://kenji.blog/p/%E3%81%8A%E3%81%99%E3%81%99%E3%82%81%E3%81%AE-chorme-%E6%8B%A1%E5%BC%B5/img_5_hu10d1b065dcac4fe890e2b430c09f6a86_129788_1024x0_resize_box_3.png 1024w"
loading="lazy"
alt="img_5.png"
class="gallery-image"
data-flex-grow="160"
data-flex-basis="384px"
>&lt;/p>
&lt;p>Uma extensão para usar o ChatGPT em uma barra lateral. Você pode exibir a barra lateral com Ctrl+P e fazer perguntas à IA imediatamente.
Se houver texto selecionado na página, ele será copiado diretamente para a pergunta, então você pode perguntar imediatamente com Ctrl+Enter.&lt;/p>
&lt;ul>
&lt;li>&lt;a class="link" href="https://chrome.google.com/webstore/detail/chatgpt-sidebar-support-g/difoiogjjojoaoomphldepapgpbgkhkb" target="_blank" rel="noopener"
>ChatGPT Sidebar&lt;/a>&lt;/li>
&lt;/ul>
&lt;h2 id="5-salesforce-devtools">5. Salesforce DevTools
&lt;/h2>&lt;p>&lt;img src="http://kenji.blog/p/%E3%81%8A%E3%81%99%E3%81%99%E3%82%81%E3%81%AE-chorme-%E6%8B%A1%E5%BC%B5/img_1.png"
width="640"
height="400"
srcset="http://kenji.blog/p/%E3%81%8A%E3%81%99%E3%81%99%E3%82%81%E3%81%AE-chorme-%E6%8B%A1%E5%BC%B5/img_1_hue339a6462b95e183512b6c5779072273_131133_480x0_resize_box_3.png 480w, http://kenji.blog/p/%E3%81%8A%E3%81%99%E3%81%99%E3%82%81%E3%81%AE-chorme-%E6%8B%A1%E5%BC%B5/img_1_hue339a6462b95e183512b6c5779072273_131133_1024x0_resize_box_3.png 1024w"
loading="lazy"
alt="img_1.png"
class="gallery-image"
data-flex-grow="160"
data-flex-basis="384px"
>&lt;/p>
&lt;p>Uma extensão que adiciona recursos úteis para o desenvolvimento no Salesforce.
Acredito que não seja necessária para quem não usa o Salesforce.&lt;/p>
&lt;ul>
&lt;li>&lt;a class="link" href="https://chrome.google.com/webstore/detail/salesforce-devtools/ehgmhinnhggigkogkbhnbodhbfjgncjf" target="_blank" rel="noopener"
>Salesforce DevTools&lt;/a>&lt;/li>
&lt;/ul></description></item><item><title>Como atualizar o rustc</title><link>http://kenji.blog/pt/p/rustc%E3%82%92%E3%82%A2%E3%83%83%E3%83%97%E3%83%87%E3%83%BC%E3%83%88%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95/</link><pubDate>Sat, 18 Mar 2023 10:27:02 +0900</pubDate><guid>http://kenji.blog/pt/p/rustc%E3%82%92%E3%82%A2%E3%83%83%E3%83%97%E3%83%87%E3%83%BC%E3%83%88%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95/</guid><description>&lt;img src="http://kenji.blog/p/rustc%E3%82%92%E3%82%A2%E3%83%83%E3%83%97%E3%83%87%E3%83%BC%E3%83%88%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95/img.png" alt="Featured image of post Como atualizar o rustc" />&lt;h1 id="como-atualizar-o-rustc">Como atualizar o rustc
&lt;/h1>&lt;p>Basta executar a seguinte linha de comando.&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">rustup update
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h1 id="referência-de-saída">Referência de saída
&lt;/h1>&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt"> 1
&lt;/span>&lt;span class="lnt"> 2
&lt;/span>&lt;span class="lnt"> 3
&lt;/span>&lt;span class="lnt"> 4
&lt;/span>&lt;span class="lnt"> 5
&lt;/span>&lt;span class="lnt"> 6
&lt;/span>&lt;span class="lnt"> 7
&lt;/span>&lt;span class="lnt"> 8
&lt;/span>&lt;span class="lnt"> 9
&lt;/span>&lt;span class="lnt">10
&lt;/span>&lt;span class="lnt">11
&lt;/span>&lt;span class="lnt">12
&lt;/span>&lt;span class="lnt">13
&lt;/span>&lt;span class="lnt">14
&lt;/span>&lt;span class="lnt">15
&lt;/span>&lt;span class="lnt">16
&lt;/span>&lt;span class="lnt">17
&lt;/span>&lt;span class="lnt">18
&lt;/span>&lt;span class="lnt">19
&lt;/span>&lt;span class="lnt">20
&lt;/span>&lt;span class="lnt">21
&lt;/span>&lt;span class="lnt">22
&lt;/span>&lt;span class="lnt">23
&lt;/span>&lt;span class="lnt">24
&lt;/span>&lt;span class="lnt">25
&lt;/span>&lt;span class="lnt">26
&lt;/span>&lt;span class="lnt">27
&lt;/span>&lt;span class="lnt">28
&lt;/span>&lt;span class="lnt">29
&lt;/span>&lt;span class="lnt">30
&lt;/span>&lt;span class="lnt">31
&lt;/span>&lt;span class="lnt">32
&lt;/span>&lt;span class="lnt">33
&lt;/span>&lt;span class="lnt">34
&lt;/span>&lt;span class="lnt">35
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-gdscript3" data-lang="gdscript3">&lt;span class="line">&lt;span class="cl">&lt;span class="n">rustup&lt;/span> &lt;span class="n">update&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">info&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="n">syncing&lt;/span> &lt;span class="n">channel&lt;/span> &lt;span class="n">updates&lt;/span> &lt;span class="k">for&lt;/span> &lt;span class="s1">&amp;#39;stable-x86_64-pc-windows-msvc&amp;#39;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">warning&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="n">Signature&lt;/span> &lt;span class="n">verification&lt;/span> &lt;span class="n">failed&lt;/span> &lt;span class="k">for&lt;/span> &lt;span class="s1">&amp;#39;https://static.rust-lang.org/dist/channel-rust-stable.toml&amp;#39;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">info&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="n">latest&lt;/span> &lt;span class="n">update&lt;/span> &lt;span class="n">on&lt;/span> &lt;span class="mi">2023&lt;/span>&lt;span class="o">-&lt;/span>&lt;span class="mi">03&lt;/span>&lt;span class="o">-&lt;/span>&lt;span class="mi">09&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">rust&lt;/span> &lt;span class="n">version&lt;/span> &lt;span class="mf">1.68&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">0&lt;/span> &lt;span class="p">(&lt;/span>&lt;span class="mi">2&lt;/span>&lt;span class="n">c8cc3432&lt;/span> &lt;span class="mi">2023&lt;/span>&lt;span class="o">-&lt;/span>&lt;span class="mi">03&lt;/span>&lt;span class="o">-&lt;/span>&lt;span class="mi">06&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">info&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="n">downloading&lt;/span> &lt;span class="n">component&lt;/span> &lt;span class="s1">&amp;#39;rust-src&amp;#39;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">info&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="n">downloading&lt;/span> &lt;span class="n">component&lt;/span> &lt;span class="s1">&amp;#39;cargo&amp;#39;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">info&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="n">downloading&lt;/span> &lt;span class="n">component&lt;/span> &lt;span class="s1">&amp;#39;clippy&amp;#39;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">info&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="n">downloading&lt;/span> &lt;span class="n">component&lt;/span> &lt;span class="s1">&amp;#39;rust-docs&amp;#39;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">info&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="n">downloading&lt;/span> &lt;span class="n">component&lt;/span> &lt;span class="s1">&amp;#39;rust-std&amp;#39;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">info&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="n">downloading&lt;/span> &lt;span class="n">component&lt;/span> &lt;span class="s1">&amp;#39;rustc&amp;#39;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="mf">63.9&lt;/span> &lt;span class="n">MiB&lt;/span> &lt;span class="o">/&lt;/span> &lt;span class="mf">63.9&lt;/span> &lt;span class="n">MiB&lt;/span> &lt;span class="p">(&lt;/span>&lt;span class="mi">100&lt;/span> &lt;span class="o">%&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="mf">37.5&lt;/span> &lt;span class="n">MiB&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">s&lt;/span> &lt;span class="ow">in&lt;/span> &lt;span class="mi">1&lt;/span>&lt;span class="n">s&lt;/span> &lt;span class="n">ETA&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="mi">0&lt;/span>&lt;span class="n">s&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">info&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="n">downloading&lt;/span> &lt;span class="n">component&lt;/span> &lt;span class="s1">&amp;#39;rustfmt&amp;#39;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">info&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="n">removing&lt;/span> &lt;span class="n">previous&lt;/span> &lt;span class="n">version&lt;/span> &lt;span class="n">of&lt;/span> &lt;span class="n">component&lt;/span> &lt;span class="s1">&amp;#39;rust-src&amp;#39;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">info&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="n">removing&lt;/span> &lt;span class="n">previous&lt;/span> &lt;span class="n">version&lt;/span> &lt;span class="n">of&lt;/span> &lt;span class="n">component&lt;/span> &lt;span class="s1">&amp;#39;cargo&amp;#39;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">info&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="n">removing&lt;/span> &lt;span class="n">previous&lt;/span> &lt;span class="n">version&lt;/span> &lt;span class="n">of&lt;/span> &lt;span class="n">component&lt;/span> &lt;span class="s1">&amp;#39;clippy&amp;#39;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">info&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="n">removing&lt;/span> &lt;span class="n">previous&lt;/span> &lt;span class="n">version&lt;/span> &lt;span class="n">of&lt;/span> &lt;span class="n">component&lt;/span> &lt;span class="s1">&amp;#39;rust-docs&amp;#39;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">info&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="n">removing&lt;/span> &lt;span class="n">previous&lt;/span> &lt;span class="n">version&lt;/span> &lt;span class="n">of&lt;/span> &lt;span class="n">component&lt;/span> &lt;span class="s1">&amp;#39;rust-std&amp;#39;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">info&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="n">removing&lt;/span> &lt;span class="n">previous&lt;/span> &lt;span class="n">version&lt;/span> &lt;span class="n">of&lt;/span> &lt;span class="n">component&lt;/span> &lt;span class="s1">&amp;#39;rustc&amp;#39;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">info&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="n">removing&lt;/span> &lt;span class="n">previous&lt;/span> &lt;span class="n">version&lt;/span> &lt;span class="n">of&lt;/span> &lt;span class="n">component&lt;/span> &lt;span class="s1">&amp;#39;rustfmt&amp;#39;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">info&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="n">installing&lt;/span> &lt;span class="n">component&lt;/span> &lt;span class="s1">&amp;#39;rust-src&amp;#39;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">info&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="n">installing&lt;/span> &lt;span class="n">component&lt;/span> &lt;span class="s1">&amp;#39;cargo&amp;#39;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">info&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="n">installing&lt;/span> &lt;span class="n">component&lt;/span> &lt;span class="s1">&amp;#39;clippy&amp;#39;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">info&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="n">installing&lt;/span> &lt;span class="n">component&lt;/span> &lt;span class="s1">&amp;#39;rust-docs&amp;#39;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="mf">19.4&lt;/span> &lt;span class="n">MiB&lt;/span> &lt;span class="o">/&lt;/span> &lt;span class="mf">19.4&lt;/span> &lt;span class="n">MiB&lt;/span> &lt;span class="p">(&lt;/span>&lt;span class="mi">100&lt;/span> &lt;span class="o">%&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="mf">2.4&lt;/span> &lt;span class="n">MiB&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">s&lt;/span> &lt;span class="ow">in&lt;/span> &lt;span class="mi">6&lt;/span>&lt;span class="n">s&lt;/span> &lt;span class="n">ETA&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="mi">0&lt;/span>&lt;span class="n">s&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">info&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="n">installing&lt;/span> &lt;span class="n">component&lt;/span> &lt;span class="s1">&amp;#39;rust-std&amp;#39;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="mf">27.6&lt;/span> &lt;span class="n">MiB&lt;/span> &lt;span class="o">/&lt;/span> &lt;span class="mf">27.6&lt;/span> &lt;span class="n">MiB&lt;/span> &lt;span class="p">(&lt;/span>&lt;span class="mi">100&lt;/span> &lt;span class="o">%&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="mf">12.7&lt;/span> &lt;span class="n">MiB&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">s&lt;/span> &lt;span class="ow">in&lt;/span> &lt;span class="mi">2&lt;/span>&lt;span class="n">s&lt;/span> &lt;span class="n">ETA&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="mi">0&lt;/span>&lt;span class="n">s&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">info&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="n">installing&lt;/span> &lt;span class="n">component&lt;/span> &lt;span class="s1">&amp;#39;rustc&amp;#39;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="mf">63.9&lt;/span> &lt;span class="n">MiB&lt;/span> &lt;span class="o">/&lt;/span> &lt;span class="mf">63.9&lt;/span> &lt;span class="n">MiB&lt;/span> &lt;span class="p">(&lt;/span>&lt;span class="mi">100&lt;/span> &lt;span class="o">%&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="mf">13.8&lt;/span> &lt;span class="n">MiB&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">s&lt;/span> &lt;span class="ow">in&lt;/span> &lt;span class="mi">4&lt;/span>&lt;span class="n">s&lt;/span> &lt;span class="n">ETA&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="mi">0&lt;/span>&lt;span class="n">s&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">info&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="n">installing&lt;/span> &lt;span class="n">component&lt;/span> &lt;span class="s1">&amp;#39;rustfmt&amp;#39;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">info&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="n">checking&lt;/span> &lt;span class="k">for&lt;/span> &lt;span class="bp">self&lt;/span>&lt;span class="o">-&lt;/span>&lt;span class="n">updates&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">info&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="n">downloading&lt;/span> &lt;span class="bp">self&lt;/span>&lt;span class="o">-&lt;/span>&lt;span class="n">update&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">stable&lt;/span>&lt;span class="o">-&lt;/span>&lt;span class="n">x86_64&lt;/span>&lt;span class="o">-&lt;/span>&lt;span class="n">pc&lt;/span>&lt;span class="o">-&lt;/span>&lt;span class="n">windows&lt;/span>&lt;span class="o">-&lt;/span>&lt;span class="n">msvc&lt;/span> &lt;span class="n">updated&lt;/span> &lt;span class="o">-&lt;/span> &lt;span class="n">rustc&lt;/span> &lt;span class="mf">1.68&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">0&lt;/span> &lt;span class="p">(&lt;/span>&lt;span class="mi">2&lt;/span>&lt;span class="n">c8cc3432&lt;/span> &lt;span class="mi">2023&lt;/span>&lt;span class="o">-&lt;/span>&lt;span class="mi">03&lt;/span>&lt;span class="o">-&lt;/span>&lt;span class="mi">06&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="p">(&lt;/span>&lt;span class="n">from&lt;/span> &lt;span class="n">rustc&lt;/span> &lt;span class="mf">1.64&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">0&lt;/span> &lt;span class="p">(&lt;/span>&lt;span class="n">a55dd71d5&lt;/span> &lt;span class="mi">2022&lt;/span>&lt;span class="o">-&lt;/span>&lt;span class="mi">09&lt;/span>&lt;span class="o">-&lt;/span>&lt;span class="mi">19&lt;/span>&lt;span class="p">))&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">info&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="n">cleaning&lt;/span> &lt;span class="n">up&lt;/span> &lt;span class="n">downloads&lt;/span> &lt;span class="o">&amp;amp;&lt;/span> &lt;span class="n">tmp&lt;/span> &lt;span class="n">directories&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div></description></item><item><title>Experimentando o egui</title><link>http://kenji.blog/pt/p/egui%E3%82%92%E4%BD%BF%E3%81%A3%E3%81%A6%E3%81%BF%E3%82%8B/</link><pubDate>Sat, 18 Mar 2023 10:27:02 +0900</pubDate><guid>http://kenji.blog/pt/p/egui%E3%82%92%E4%BD%BF%E3%81%A3%E3%81%A6%E3%81%BF%E3%82%8B/</guid><description>&lt;img src="http://kenji.blog/p/egui%E3%82%92%E4%BD%BF%E3%81%A3%E3%81%A6%E3%81%BF%E3%82%8B/demo.gif" alt="Featured image of post Experimentando o egui" />&lt;h1 id="o-que-é-o-egui">O que é o egui
&lt;/h1>&lt;p>É uma biblioteca GUI que pode ser usada no Rust.&lt;/p>
&lt;h1 id="experimentando-o-egui">Experimentando o egui
&lt;/h1>&lt;p>Você pode executar o exemplo do egui com os seguintes comandos.&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">git clone https://github.com/emilk/eframe_template/ egui_test
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">cd egui_test
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">cargo run
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>Depois, você pode experimentar várias coisas enquanto brinca com o código de exemplo.&lt;/p>
&lt;h1 id="referência">Referência
&lt;/h1>&lt;p>&lt;a class="link" href="https://github.com/emilk/egui" target="_blank" rel="noopener"
>GitHub oficial&lt;/a>&lt;/p></description></item><item><title>Como eliminar o ruído no AG03</title><link>http://kenji.blog/pt/p/ag03%E3%83%8E%E3%82%A4%E3%82%BA%E8%A7%A3%E6%B6%88%E6%96%B9%E6%B3%95/</link><pubDate>Sat, 18 Mar 2023 01:17:10 +0900</pubDate><guid>http://kenji.blog/pt/p/ag03%E3%83%8E%E3%82%A4%E3%82%BA%E8%A7%A3%E6%B6%88%E6%96%B9%E6%B3%95/</guid><description>&lt;img src="http://kenji.blog/p/ag03%E3%83%8E%E3%82%A4%E3%82%BA%E8%A7%A3%E6%B6%88%E6%96%B9%E6%B3%95/img.png" alt="Featured image of post Como eliminar o ruído no AG03" />&lt;h1 id="como-eliminar-o-ruído-no-yamaha-ag03">Como eliminar o ruído no YAMAHA AG03
&lt;/h1>&lt;p>Ao ouvir o áudio do PC através do monitor do AG03, notava-se um ruído de estática periodicamente (cerca de 1 a 3 minutos).
Ao pesquisar, descobri que o seguinte método pode resolver problemas de ruído no AG03.&lt;/p>
&lt;p>&lt;a class="link" href="https://jp.yamaha.com/support/updates/yamaha_steinberg_usb_driver_for_win.html" target="_blank" rel="noopener"
>https://jp.yamaha.com/support/updates/yamaha_steinberg_usb_driver_for_win.html&lt;/a>&lt;/p>
&lt;p>Depois de baixar e instalar o Yamaha Steinberg USB Driver a partir do site acima, o ruído desapareceu.&lt;/p>
&lt;div style="background:#fff;width:120px;height:215px;box-sizing:border-box;border:1px solid #ccc;display:flex;flex-direction:column;justify-content:flex-start;align-items:center;">&lt;div style="line-height:0;">&lt;img src="https://static.jp.mercari.com/assets/img/common/jp/logo_horizontal.png" width="105">&lt;/div>&lt;a href="https://jp.mercari.com/item/m10570024971?afid=1916658352" style="width:100px;height:100px;background:#eee;" target="_self">&lt;img src="https://ambassador-system.mercari.com/v1/i?id=m10570024971&amp;svc=m" style="line-height:0;width:100px;height:100px;object-fit:contain;"/>&lt;/a>&lt;div style="padding:12px 0;width:100%;text-align:center;">&lt;a href="https://jp.mercari.com/item/m10570024971?afid=1916658352" style="width:100px;height:32px;background-color:#E32B36;border-radius:4px;line-height:14px;text-align:center;color:#fff;font-weight:bold;border:0;font-size:12px;display:inline-flex;justify-content:center;align-items:center;" target="_self">今すぐ購入&lt;/a>&lt;/div>&lt;/div>
&lt;h1 id="referências">Referências
&lt;/h1>&lt;p>&lt;a class="link" href="https://web.archive.org/web/20201003230738/http://yamaha.custhelp.com/app/answers/detail/a_id/7202" target="_blank" rel="noopener"
>https://web.archive.org/web/20201003230738/http://yamaha.custhelp.com/app/answers/detail/a_id/7202&lt;/a>&lt;/p></description></item><item><title>Equipamentos de PC Recomendados</title><link>http://kenji.blog/pt/p/%E3%81%8A%E3%81%99%E3%81%99%E3%82%81%E3%81%AEpc%E5%91%A8%E8%BE%BA%E6%A9%9F%E5%99%A8/</link><pubDate>Tue, 28 Feb 2023 00:51:49 +0900</pubDate><guid>http://kenji.blog/pt/p/%E3%81%8A%E3%81%99%E3%81%99%E3%82%81%E3%81%AEpc%E5%91%A8%E8%BE%BA%E6%A9%9F%E5%99%A8/</guid><description>&lt;img src="http://kenji.blog/p/%E3%81%8A%E3%81%99%E3%81%99%E3%82%81%E3%81%AEpc%E5%91%A8%E8%BE%BA%E6%A9%9F%E5%99%A8/img.png" alt="Featured image of post Equipamentos de PC Recomendados" />&lt;h1 id="equipamentos-de-pc-recomendados-e-desejados-por-um-engenheiro-ativo">Equipamentos de PC Recomendados e Desejados por um Engenheiro Ativo
&lt;/h1>&lt;h2 id="teclado">Teclado
&lt;/h2>&lt;p>Sem dúvida, os teclados com chave capacitiva sem contato são altamente recomendados, pois são muito duráveis.
Eu tenho um &lt;a class="link" href="https://amzn.to/3IzOOFO" target="_blank" rel="noopener"
>RealForce&lt;/a> há mais de 10 anos e ainda o uso no meu dia a dia.
O tipo que estou usando é o layout em inglês, silencioso.&lt;/p>
&lt;p>No entanto, recentemente, o teclado &lt;a class="link" href="https://amzn.to/3Z5skmR" target="_blank" rel="noopener"
>Logitech MX Keys&lt;/a> também chamou a minha atenção.&lt;/p>
&lt;h2 id="trackball">Trackball
&lt;/h2>&lt;p>Para dispositivos apontadores, os trackballs são recomendados em vez de mouses, pois ajudam a reduzir a fadiga.&lt;/p>
&lt;p>O que eu uso é o &lt;a class="link" href="https://amzn.to/3IYOwtf" target="_blank" rel="noopener"
>Logitech MX Ergo&lt;/a>. Este é um dispositivo caro, custando mais de 10 mil ienes, mas acredito que vale mais do que esse valor.&lt;/p>
&lt;p>Também estou interessado no &lt;a class="link" href="https://amzn.to/3Zu5tB8" target="_blank" rel="noopener"
>DEFT PRO(M-DPT1MRXBK)&lt;/a>, que é operado com o dedo indicador e médio com uma bola maior.
&lt;img src="http://kenji.blog/p/%E3%81%8A%E3%81%99%E3%81%99%E3%82%81%E3%81%AEpc%E5%91%A8%E8%BE%BA%E6%A9%9F%E5%99%A8/img_1.png"
width="700"
height="680"
srcset="http://kenji.blog/p/%E3%81%8A%E3%81%99%E3%81%99%E3%82%81%E3%81%AEpc%E5%91%A8%E8%BE%BA%E6%A9%9F%E5%99%A8/img_1_hu930fae58f4873e2ed261c55e6b025235_528450_480x0_resize_box_3.png 480w, http://kenji.blog/p/%E3%81%8A%E3%81%99%E3%81%99%E3%82%81%E3%81%AEpc%E5%91%A8%E8%BE%BA%E6%A9%9F%E5%99%A8/img_1_hu930fae58f4873e2ed261c55e6b025235_528450_1024x0_resize_box_3.png 1024w"
loading="lazy"
alt="img_1.png"
class="gallery-image"
data-flex-grow="102"
data-flex-basis="247px"
>&lt;/p>
&lt;h2 id="monitor">Monitor
&lt;/h2>&lt;p>Qualquer monitor serve, mas monitores 4K de alta resolução são recomendados.&lt;/p>
&lt;p>Atualmente uso um &lt;a class="link" href="https://amzn.to/3y0ViIW" target="_blank" rel="noopener"
>monitor 4K da DELL&lt;/a>.&lt;/p>
&lt;p>Agora, eu gostaria de ter um monitor widescreen como o &lt;a class="link" href="https://amzn.to/3kz7BZH" target="_blank" rel="noopener"
>monitor da EIZO&lt;/a> ou o &lt;a class="link" href="https://amzn.to/3xZleo1" target="_blank" rel="noopener"
>monitor da DELL&lt;/a>.&lt;/p></description></item><item><title>Sobre fontplus.jp</title><link>http://kenji.blog/pt/p/fontplus.jp/</link><pubDate>Tue, 07 Feb 2023 20:59:01 +0900</pubDate><guid>http://kenji.blog/pt/p/fontplus.jp/</guid><description>&lt;img src="http://kenji.blog/p/fontplus.jp/img.png" alt="Featured image of post Sobre fontplus.jp" />&lt;h1 id="serviço-para-usar-web-fonts-pagas-fontplusjp">Serviço para usar web fonts pagas fontplus.jp
&lt;/h1>&lt;p>&lt;a class="link" href="https://fontplus.jp/" target="_blank" rel="noopener"
>https://fontplus.jp/&lt;/a>&lt;/p>
&lt;p>Por 1.100 ienes por mês, todas as fontes podem ser usadas e há suporte para uso em vários sites.&lt;/p></description></item><item><title>Usando tags HTML no HUGO</title><link>http://kenji.blog/pt/p/usando-tags-html-no-hugo/</link><pubDate>Tue, 17 Jan 2023 19:20:32 +0900</pubDate><guid>http://kenji.blog/pt/p/usando-tags-html-no-hugo/</guid><description>&lt;img src="http://kenji.blog/p/hugo%E3%81%A7html%E3%82%BF%E3%82%B0%E3%82%92%E4%BD%BF%E3%81%86/img.png" alt="Featured image of post Usando tags HTML no HUGO" />&lt;p>Por padrão, o HUGO não permite o uso de tags HTML em artigos, mas você pode ativá-lo adicionando a seguinte descrição ao config.toml.&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-toml" data-lang="toml">&lt;span class="line">&lt;span class="cl">&lt;span class="p">[&lt;/span>&lt;span class="nx">markup&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="nx">goldmark&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="nx">renderer&lt;/span>&lt;span class="p">]&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nx">unsafe&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="kc">true&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>Referência: &lt;a class="link" href="https://gohugo.io/getting-started/configuration-markup" target="_blank" rel="noopener"
>Configure Markup&lt;/a>&lt;/p></description></item><item><title>Procurando por Patrocinadores no GitHub</title><link>http://kenji.blog/pt/p/procurando-por-patrocinadores-no-github/</link><pubDate>Tue, 17 Jan 2023 18:13:56 +0900</pubDate><guid>http://kenji.blog/pt/p/procurando-por-patrocinadores-no-github/</guid><description>&lt;img src="http://kenji.blog/p/github%E3%82%B9%E3%83%9D%E3%83%B3%E3%82%B5%E3%83%BC%E5%8B%9F%E9%9B%86/img.png" alt="Featured image of post Procurando por Patrocinadores no GitHub" />&lt;h1 id="procurando-por-patrocinadores-no-github">Procurando por Patrocinadores no GitHub
&lt;/h1>&lt;p>Ficaria muito feliz se você pudesse se tornar um patrocinador no GitHub através do botão abaixo.&lt;/p>
&lt;iframe src="https://github.com/sponsors/kenjinote/button" title="Sponsor kenjinote" height="35" width="116" style="border: 0;">&lt;/iframe>
&lt;p>Será utilizado para o desenvolvimento de ferramentas, etc.&lt;/p>
&lt;p>Quero me esforçar até conseguir obter um certificado de assinatura de código!&lt;/p></description></item><item><title>Sobre o Botão</title><link>http://kenji.blog/pt/p/%E3%83%9C%E3%82%BF%E3%83%B3%E3%81%A4%E3%81%84%E3%81%A6/</link><pubDate>Sat, 14 Jan 2023 20:24:00 +0900</pubDate><guid>http://kenji.blog/pt/p/%E3%83%9C%E3%82%BF%E3%83%B3%E3%81%A4%E3%81%84%E3%81%A6/</guid><description>&lt;img src="http://kenji.blog/p/%E3%83%9C%E3%82%BF%E3%83%B3%E3%81%A4%E3%81%84%E3%81%A6/img.png" alt="Featured image of post Sobre o Botão" />&lt;h1 id="o-que-é-um-botão">O que é um botão
&lt;/h1>&lt;p>Um botão é um dos controles de GUI e pode ser implementado usando a API padrão do Windows.
Ao clicar em uma área da tela (pressionar e soltar o botão esquerdo do mouse),
você pode executar um processo especificado no programa.&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt"> 1
&lt;/span>&lt;span class="lnt"> 2
&lt;/span>&lt;span class="lnt"> 3
&lt;/span>&lt;span class="lnt"> 4
&lt;/span>&lt;span class="lnt"> 5
&lt;/span>&lt;span class="lnt"> 6
&lt;/span>&lt;span class="lnt"> 7
&lt;/span>&lt;span class="lnt"> 8
&lt;/span>&lt;span class="lnt"> 9
&lt;/span>&lt;span class="lnt">10
&lt;/span>&lt;span class="lnt">11
&lt;/span>&lt;span class="lnt">12
&lt;/span>&lt;span class="lnt">13
&lt;/span>&lt;span class="lnt">14
&lt;/span>&lt;span class="lnt">15
&lt;/span>&lt;span class="lnt">16
&lt;/span>&lt;span class="lnt">17
&lt;/span>&lt;span class="lnt">18
&lt;/span>&lt;span class="lnt">19
&lt;/span>&lt;span class="lnt">20
&lt;/span>&lt;span class="lnt">21
&lt;/span>&lt;span class="lnt">22
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">// Criando um botão
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">CreateWindow(
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> TEXT(&amp;#34;BUTTON&amp;#34;),
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> TEXT(&amp;#34;Close&amp;#34;),
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> WS_CHILD|WS_VISIBLE,
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> 10,10,128,30,
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> hWnd,
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> (HMENU)ID_BUTTON1,
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> ((LPCREATESTRUCT)lParam)-&amp;gt;hInstance,
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> 0);
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> ...
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> // Uma mensagem WM_COMMAND é enviada pelo SO para a janela quando clicado.
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> case WM_COMMAND:
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> switch(LOWORD(wParam))
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> {
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> case ID_BUTTON1:
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> SendMessage(hWnd,WM_CLOSE,0,0);
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> break;
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> }
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> break;
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>O código de amostra está postado abaixo.
&lt;a class="link" href="https://github.com/kenjinote/button" target="_blank" rel="noopener"
>button&lt;/a>&lt;/p></description></item><item><title>Comprei um ThinkPad (Usado)</title><link>http://kenji.blog/pt/p/thinkpad%E4%B8%AD%E5%8F%A4%E3%82%92%E8%B2%B7%E3%81%A3%E3%81%9F/</link><pubDate>Fri, 13 Jan 2023 19:07:00 +0900</pubDate><guid>http://kenji.blog/pt/p/thinkpad%E4%B8%AD%E5%8F%A4%E3%82%92%E8%B2%B7%E3%81%A3%E3%81%9F/</guid><description>&lt;img src="http://kenji.blog/p/thinkpad%E4%B8%AD%E5%8F%A4%E3%82%92%E8%B2%B7%E3%81%A3%E3%81%9F/img.png" alt="Featured image of post Comprei um ThinkPad (Usado)" />&lt;h1 id="comprei-um-laptop-thinkpad-usado">Comprei um Laptop ThinkPad (Usado)
&lt;/h1>&lt;p>A maior parte do meu trabalho em laptops é feita acessando outros terminais através de conexão de área de trabalho remota, então não preciso de um PC de alta especificação. Um ChromeBook teria sido bom, mas como não havia designs bons ou altas resoluções, comprei um ThinkPad.&lt;/p>
&lt;p>As especificações estão abaixo e o preço foi em torno de 55.000 ienes usando vários pontos.&lt;/p>
&lt;h2 id="thinkpad-t470s">ThinkPad T470s
&lt;/h2>&lt;ul>
&lt;li>CPU: Intel Core i7 7600U&lt;/li>
&lt;li>RAM: 24GB&lt;/li>
&lt;li>SSD: 512GB&lt;/li>
&lt;li>OS: Windows 10 Pro 64bit&lt;/li>
&lt;li>Tela: 14,0 polegadas wide (painel antirreflexo)&lt;/li>
&lt;li>Resolução: LCD WQHD 2560×1440&lt;/li>
&lt;li>Peso: Aprox. 1,32 kg&lt;/li>
&lt;li>Notas: Teclado em inglês&lt;/li>
&lt;/ul>
&lt;p>Como é usado, pensei que pudesse haver sinais de uso ou arranhões, mas não há nenhum problema, o que é ótimo.
A bateria está funcionando sem problemas até agora.&lt;/p>
&lt;h2 id="insatisfações-atuais">Insatisfações atuais
&lt;/h2>&lt;ul>
&lt;li>Faltam as teclas &lt;code>Pause&lt;/code> e &lt;code>App&lt;/code>. Eu usava a tecla &lt;code>Pause&lt;/code> como atalho para abrir as configurações do sistema. Além disso, eu usava a tecla &lt;code>App&lt;/code> para abrir o menu pop-up, por isso é inconveniente não tê-la.&lt;/li>
&lt;li>As teclas &lt;code>PageUp&lt;/code> e &lt;code>PageDown&lt;/code> estão bem próximas das teclas de seta do teclado, então costumo pressioná-las por engano. Isso pode ser uma questão de costume.&lt;/li>
&lt;/ul>
&lt;h2 id="outros-pcs-que-considerei-mas-não-comprei">Outros PCs que considerei, mas não comprei
&lt;/h2>&lt;ul>
&lt;li>ASUS Chromebook Flip C436FA (C436FA-ENG)&lt;/li>
&lt;li>Laptop HP HP15s-fq&lt;/li>
&lt;/ul>
&lt;p>Referências: &lt;a class="link" href="https://www.lenovojp.com/business/product/note/pdf/thinkpad_t470s.pdf" target="_blank" rel="noopener"
>ThinkPad T470s&lt;/a>&lt;/p></description></item><item><title>Conexão Remota Fácil com TeamViewer</title><link>http://kenji.blog/pt/p/conex%C3%A3o-remota-f%C3%A1cil-com-teamviewer/</link><pubDate>Fri, 13 Jan 2023 01:45:00 +0900</pubDate><guid>http://kenji.blog/pt/p/conex%C3%A3o-remota-f%C3%A1cil-com-teamviewer/</guid><description>&lt;img src="http://kenji.blog/p/teamviewer%E3%81%A7%E7%B0%A1%E5%8D%98%E3%83%AA%E3%83%A2%E3%83%BC%E3%83%88%E6%8E%A5%E7%B6%9A/img.png" alt="Featured image of post Conexão Remota Fácil com TeamViewer" />&lt;h1 id="conexão-remota-fácil-com-teamviewer">Conexão Remota Fácil com TeamViewer
&lt;/h1>&lt;p>Com o TeamViewer, a conexão de área de trabalho remota pode ser feita facilmente.&lt;/p>
&lt;p>Inicie o TeamViewer no destino e na origem remotas,
e insira o ID e a senha do destino na origem para realizar a conexão remota.&lt;/p>
&lt;p>Para conectar remotamente usando a linha de comando, faça o seguinte:&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">%ProgramFiles%\TeamViewer\TeamViewer.exe -i &amp;lt;ID&amp;gt; -P &amp;lt;Password&amp;gt;
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>Em &lt;code>&amp;lt;ID&amp;gt;&lt;/code>, insira o ID de destino e em &lt;code>&amp;lt;Password&amp;gt;&lt;/code>, a senha de destino.&lt;/p>
&lt;p>Se você criar um arquivo de atalho com o comando acima, é conveniente pois você pode omitir a entrada do ID e da senha.&lt;/p>
&lt;p>Site de referência: &lt;a class="link" href="https://community.teamviewer.com/English/kb/articles/34447-command-line-parameters" target="_blank" rel="noopener"
>Command line parameters&lt;/a>&lt;/p></description></item><item><title>Coleção de Citações</title><link>http://kenji.blog/pt/p/%E5%90%8D%E8%A8%80%E9%9B%86/</link><pubDate>Sat, 15 Oct 2022 17:00:43 +0900</pubDate><guid>http://kenji.blog/pt/p/%E5%90%8D%E8%A8%80%E9%9B%86/</guid><description>&lt;img src="http://kenji.blog/p/%E5%90%8D%E8%A8%80%E9%9B%86/img.png" alt="Featured image of post Coleção de Citações" />&lt;blockquote>
&lt;p>Os tolos aprendem com a experiência, os sábios aprendem com a história. (Otto von Bismarck)&lt;/p>
&lt;/blockquote>
&lt;blockquote>
&lt;p>Dê um peixe a um homem e você o alimentará por um dia; ensine-o a pescar e você o alimentará por toda a vida. (Laozi)&lt;/p>
&lt;/blockquote>
&lt;blockquote>
&lt;p>Continue faminto, continue tolo. (Steve Jobs)&lt;/p>
&lt;/blockquote>
&lt;blockquote>
&lt;p>Feito é melhor que perfeito. (Mark Zuckerberg)&lt;/p>
&lt;/blockquote>
&lt;blockquote>
&lt;p>Mantenha a simplicidade. (James Gosling)&lt;/p>
&lt;/blockquote>
&lt;blockquote>
&lt;p>Não tenho tempo para me preocupar com quem não gosta de mim. Estou muito ocupado amando as pessoas que me amam. (Snoopy)&lt;/p>
&lt;/blockquote>
&lt;blockquote>
&lt;p>A maior felicidade para um ser humano é encontrar um trabalho onde possa aproveitar ao máximo suas habilidades. (Karl Marx)&lt;/p>
&lt;/blockquote>
&lt;blockquote>
&lt;p>Se um pouco de conhecimento é perigoso, onde está o homem que tem tanto a ponto de estar fora de perigo? (Thomas Huxley, 1877)&lt;/p>
&lt;/blockquote>
&lt;blockquote>
&lt;p>&amp;lsquo;Ao contrário&amp;rsquo;, continuou Tweedledee, &amp;lsquo;se fosse assim, poderia ser; e se fosse, seria; mas como não é, não é. Isso é lógica.&amp;rsquo; (Lewis Carroll, Através do Espelho, 1872)&lt;/p>
&lt;/blockquote>
&lt;blockquote>
&lt;p>Não é exagero chamar Claude Shannon de o pai da era da informação, e suas conquistas acadêmicas estão entre as maiores do século XX. (Crítica da Sociedade Americana de Matemática)&lt;/p>
&lt;/blockquote>
&lt;blockquote>
&lt;p>Aqueles que conhecem o estado atual da teoria da Álgebra Simbólica sabem que a validade dos processos de análise não depende da interpretação dos símbolos empregados, mas exclusivamente das leis de sua combinação. (George Boole, no início de &amp;ldquo;A Análise Matemática da Lógica&amp;rdquo;, 1847)&lt;/p>
&lt;/blockquote>
&lt;p>&lt;img src="http://kenji.blog/p/%E5%90%8D%E8%A8%80%E9%9B%86/img_1.png"
width="621"
height="799"
srcset="http://kenji.blog/p/%E5%90%8D%E8%A8%80%E9%9B%86/img_1_hu404afed9786080ce0c01fe76d3eb48b9_374719_480x0_resize_box_3.png 480w, http://kenji.blog/p/%E5%90%8D%E8%A8%80%E9%9B%86/img_1_hu404afed9786080ce0c01fe76d3eb48b9_374719_1024x0_resize_box_3.png 1024w"
loading="lazy"
alt="img_1.png"
class="gallery-image"
data-flex-grow="77"
data-flex-basis="186px"
>&lt;/p></description></item><item><title>Editor de Grafos</title><link>http://kenji.blog/pt/p/%E3%82%B0%E3%83%A9%E3%83%95%E3%82%A8%E3%83%87%E3%82%A3%E3%82%BF/</link><pubDate>Thu, 13 Oct 2022 23:31:11 +0900</pubDate><guid>http://kenji.blog/pt/p/%E3%82%B0%E3%83%A9%E3%83%95%E3%82%A8%E3%83%87%E3%82%A3%E3%82%BF/</guid><description>&lt;img src="http://kenji.blog/p/%E3%82%B0%E3%83%A9%E3%83%95%E3%82%A8%E3%83%87%E3%82%A3%E3%82%BF/img.png" alt="Featured image of post Editor de Grafos" />&lt;h1 id="editor-de-grafos">Editor de Grafos
&lt;/h1>&lt;p>Apresentando uma página web onde você pode criar grafos simples.&lt;/p>
&lt;p>&lt;a class="link" href="https://csacademy.com/app/graph_editor/" target="_blank" rel="noopener"
>https://csacademy.com/app/graph_editor/&lt;/a>&lt;/p>
&lt;p>Você pode criar grafos inserindo valores numéricos.
Além disso, parece que você também pode mover os elementos com o mouse.&lt;/p>
&lt;p>Você também pode criar um grafo direcionado clicando em &lt;code>Directed&lt;/code>.&lt;/p>
&lt;p>&lt;img src="http://kenji.blog/p/%E3%82%B0%E3%83%A9%E3%83%95%E3%82%A8%E3%83%87%E3%82%A3%E3%82%BF/img_1.png"
width="300"
height="300"
srcset="http://kenji.blog/p/%E3%82%B0%E3%83%A9%E3%83%95%E3%82%A8%E3%83%87%E3%82%A3%E3%82%BF/img_1_hu8da2a7e6049b3e95e8ba3eb3a30bc8ba_14422_480x0_resize_box_3.png 480w, http://kenji.blog/p/%E3%82%B0%E3%83%A9%E3%83%95%E3%82%A8%E3%83%87%E3%82%A3%E3%82%BF/img_1_hu8da2a7e6049b3e95e8ba3eb3a30bc8ba_14422_1024x0_resize_box_3.png 1024w"
loading="lazy"
alt="img_1.png"
class="gallery-image"
data-flex-grow="100"
data-flex-basis="240px"
>&lt;/p>
&lt;p>Você pode salvar os grafos que criou como uma imagem usando &lt;code>Download as PNG&lt;/code>.&lt;/p></description></item><item><title>Resolvendo o Problema do Caixeiro Viajante com Mathematica</title><link>http://kenji.blog/pt/p/resolvendo-o-problema-do-caixeiro-viajante-com-mathematica/</link><pubDate>Wed, 12 Oct 2022 19:05:58 +0900</pubDate><guid>http://kenji.blog/pt/p/resolvendo-o-problema-do-caixeiro-viajante-com-mathematica/</guid><description>&lt;img src="http://kenji.blog/p/mathematica%E3%81%A7%E5%B7%A1%E5%9B%9E%E3%82%BB%E3%83%BC%E3%83%AB%E3%82%B9%E3%83%9E%E3%83%B3%E5%95%8F%E9%A1%8C%E3%82%92%E8%A7%A3%E3%81%8F/img.png" alt="Featured image of post Resolvendo o Problema do Caixeiro Viajante com Mathematica" />&lt;h1 id="resolvendo-o-problema-do-caixeiro-viajante-com-mathematica">Resolvendo o Problema do Caixeiro Viajante com Mathematica
&lt;/h1>&lt;h2 id="problema">Problema
&lt;/h2>&lt;blockquote class="twitter-tweet">&lt;p lang="ja" dir="ltr">電車でこんな広告を見かけました😁📸 &lt;a href="https://t.co/iXEgvtXrpL">pic.twitter.com/iXEgvtXrpL&lt;/a>&lt;/p>&amp;mdash; 早稲田大学 早水桃子研究室 (@hayamizu_lab) &lt;a href="https://x.com/hayamizu_lab/status/1579806418982825984?ref_src=twsrc%5Etfw">October 11, 2022&lt;/a>&lt;/blockquote>
&lt;script async src="https://platform.x.com/widgets.js" charset="utf-8">&lt;/script>
&lt;h2 id="solução">Solução
&lt;/h2>&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">d=SparseArray[{{1,2}-&amp;gt;10,{2,1}-&amp;gt;10,{1,5}-&amp;gt;15,{5,1}-&amp;gt;15,{1,4}-&amp;gt;12,{4,1}-&amp;gt;12,{1,3}-&amp;gt;20,{3,1}-&amp;gt;20,{2,5}-&amp;gt;10,{5,2}-&amp;gt;10,{3,4}-&amp;gt;10,{4,3}-&amp;gt;10,{3,8}-&amp;gt;30,{8,3}-&amp;gt;30,{3,7}-&amp;gt;20,{7,3}-&amp;gt;20,{3,6}-&amp;gt;25,{6,3}-&amp;gt;25,{4,5}-&amp;gt;15,{5,4}-&amp;gt;15,{4,8}-&amp;gt;20,{8,4}-&amp;gt;20,{5,9}-&amp;gt;18,{9,5}-&amp;gt;18,{5,8}-&amp;gt;15,{8,5}-&amp;gt;15,{6,7}-&amp;gt;5,{7,6}-&amp;gt;5,{7,8}-&amp;gt;35,{8,7}-&amp;gt;35,{8,9}-&amp;gt;12,{9,8}-&amp;gt;12},{9,9},Infinity];
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>Crie uma matriz usando a função SparseArray. Cada elemento representa a distância entre as cidades em sua respectiva linha e coluna. Por exemplo, o primeiro elemento &lt;code>{1,2}-&amp;gt;10&lt;/code> significa que a distância entre 1 e 2 é 10. O penúltimo elemento &lt;code>{9,9}&lt;/code> indica o tamanho da matriz, e o último elemento &lt;code>Infinity&lt;/code> significa que o comprimento do caminho entre cidades não especificadas é infinito, ou seja, não há caminho.&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">{len,tour}=FindShortestTour[{1,2,3,4,5,6,7,8,9},DistanceFunction-&amp;gt;(d[[#1,#2]]&amp;amp;)]
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>Com a função FindShortestTour, você pode resolver facilmente o problema do caixeiro viajante. &lt;code>{1,2,3,4,5,6,7,8,9}&lt;/code> representa os números das cidades. &lt;code>DistanceFunction-&amp;gt;(d[[#1,#2]]&amp;amp;)&lt;/code> passa a matriz d que representa a distância entre as cidades.&lt;/p>
&lt;h2 id="saída">Saída
&lt;/h2>&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">{137, {1, 2, 5, 9, 8, 7, 6, 3, 4}}
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>A saída mostra a distância mais curta e a rota correspondente. A distância mais curta é &lt;code>137&lt;/code>, e a rota é &lt;code>1→2→5→9→8→7→6→3→4→1&lt;/code>. Convertendo para ordem alfabética ABC, torna-se &lt;code>A, B, E, I, H, G, F, C, D&lt;/code>.&lt;/p></description></item><item><title>Marcar todas as caixas de seleção em uma página da web</title><link>http://kenji.blog/pt/p/marcar-todas-as-caixas-de-sele%C3%A7%C3%A3o-em-uma-p%C3%A1gina-da-web/</link><pubDate>Wed, 05 Oct 2022 20:07:06 +0900</pubDate><guid>http://kenji.blog/pt/p/marcar-todas-as-caixas-de-sele%C3%A7%C3%A3o-em-uma-p%C3%A1gina-da-web/</guid><description>&lt;img src="http://kenji.blog/p/web%E3%83%9A%E3%83%BC%E3%82%B8%E5%86%85%E3%81%AE%E3%81%99%E3%81%B9%E3%81%A6%E3%81%AE%E3%83%81%E3%82%A7%E3%83%83%E3%82%AF%E3%83%9C%E3%83%83%E3%82%AF%E3%82%B9%E3%82%92%E5%85%A8%E3%83%81%E3%82%A7%E3%83%83%E3%82%AF%E3%81%99%E3%82%8B/img.png" alt="Featured image of post Marcar todas as caixas de seleção em uma página da web" />&lt;p>Para marcar todas as caixas de seleção em uma página da web, abra o DevTools com F12, cole o seguinte código no console e execute-o.&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;span class="lnt">4
&lt;/span>&lt;span class="lnt">5
&lt;/span>&lt;span class="lnt">6
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-js" data-lang="js">&lt;span class="line">&lt;span class="cl">&lt;span class="kd">let&lt;/span> &lt;span class="nx">boxes&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="nb">document&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="nx">querySelectorAll&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s1">&amp;#39;input[type=&amp;#34;checkbox&amp;#34;]&amp;#39;&lt;/span>&lt;span class="p">);&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="k">for&lt;/span> &lt;span class="p">(&lt;/span>&lt;span class="kd">let&lt;/span> &lt;span class="nx">i&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="mi">0&lt;/span>&lt;span class="p">;&lt;/span> &lt;span class="nx">i&lt;/span> &lt;span class="o">&amp;lt;&lt;/span> &lt;span class="nx">boxes&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="nx">length&lt;/span>&lt;span class="p">;&lt;/span> &lt;span class="nx">i&lt;/span>&lt;span class="o">++&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">if&lt;/span> &lt;span class="p">(&lt;/span>&lt;span class="o">!&lt;/span>&lt;span class="nx">boxes&lt;/span>&lt;span class="p">[&lt;/span>&lt;span class="nx">i&lt;/span>&lt;span class="p">].&lt;/span>&lt;span class="nx">disabled&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nx">boxes&lt;/span>&lt;span class="p">[&lt;/span>&lt;span class="nx">i&lt;/span>&lt;span class="p">].&lt;/span>&lt;span class="nx">checked&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="kc">true&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>Ou,&lt;/p>
&lt;p>Crie um novo favorito e cole o seguinte código no endereço de registro (a parte onde você normalmente digita https://&amp;hellip;).
Exiba a página da web que deseja marcar e clique no favorito criado; todas as caixas de seleção serão marcadas.&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">javascript:(function(){let boxes=document.querySelectorAll(&amp;#39;input[type=&amp;#34;checkbox&amp;#34;]&amp;#39;);for(let i=0;i&amp;lt;boxes.length;i++){if(!boxes[i].disabled){boxes[i].checked=true;}}})();
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>Para desmarcar todas, altere a parte &lt;code>boxes[i].checked = true;&lt;/code> do script acima para &lt;code>boxes[i].checked = false;&lt;/code>.&lt;/p></description></item><item><title>Fórmulas Matemáticas Favoritas</title><link>http://kenji.blog/pt/p/%E5%A5%BD%E3%81%8D%E3%81%AA%E6%95%B0%E5%BC%8F/</link><pubDate>Wed, 05 Oct 2022 13:24:50 +0900</pubDate><guid>http://kenji.blog/pt/p/%E5%A5%BD%E3%81%8D%E3%81%AA%E6%95%B0%E5%BC%8F/</guid><description>&lt;img src="http://kenji.blog/p/%E5%A5%BD%E3%81%8D%E3%81%AA%E6%95%B0%E5%BC%8F/img.png" alt="Featured image of post Fórmulas Matemáticas Favoritas" />&lt;h2 id="teorema-de-wilson">Teorema de Wilson
&lt;/h2>&lt;p>Quando $p$ é um número primo, $(p−1)!≡−1 \pmod p$ é válido.&lt;/p>
&lt;h2 id="fórmula-de-euler">Fórmula de Euler
&lt;/h2>&lt;p>$e^{iπ}+1=0$&lt;/p>
&lt;h2 id="último-teorema-de-fermat">Último Teorema de Fermat
&lt;/h2>&lt;p>Para qualquer inteiro $n≥3$, não existem inteiros positivos $x,y,z$ que satisfaçam $x^n+y^n=z^n$.&lt;/p>
&lt;h2 id="problema-de-basileia">Problema de Basileia
&lt;/h2>&lt;p>$1/1^2+1/2^2+1/3^2+1/4^2+...=π^2/6$&lt;/p>
&lt;h2 id="polinômio-de-geração-de-primos-de-euler">Polinômio de geração de primos de Euler
&lt;/h2>&lt;p>$n^2+n+41$ resulta sempre em um número primo quando $n$ é um inteiro entre $0$ e $39$.&lt;/p></description></item><item><title>Instalar aplicativos via linha de comando usando o WinGet</title><link>http://kenji.blog/pt/p/winget-%E3%82%92%E4%BD%BF%E3%81%A3%E3%81%A6%E3%82%B3%E3%83%9E%E3%83%B3%E3%83%89%E3%81%A7%E3%82%A2%E3%83%97%E3%83%AA%E3%82%92%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB%E3%81%99%E3%82%8B/</link><pubDate>Wed, 05 Oct 2022 12:15:20 +0900</pubDate><guid>http://kenji.blog/pt/p/winget-%E3%82%92%E4%BD%BF%E3%81%A3%E3%81%A6%E3%82%B3%E3%83%9E%E3%83%B3%E3%83%89%E3%81%A7%E3%82%A2%E3%83%97%E3%83%AA%E3%82%92%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB%E3%81%99%E3%82%8B/</guid><description>&lt;img src="http://kenji.blog/p/winget-%E3%82%92%E4%BD%BF%E3%81%A3%E3%81%A6%E3%82%B3%E3%83%9E%E3%83%B3%E3%83%89%E3%81%A7%E3%82%A2%E3%83%97%E3%83%AA%E3%82%92%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB%E3%81%99%E3%82%8B/img.png" alt="Featured image of post Instalar aplicativos via linha de comando usando o WinGet" />&lt;h2 id="pré-requisitos">Pré-requisitos
&lt;/h2>&lt;p>Ter o Windows 11 instalado&lt;/p>
&lt;h2 id="procedimento">Procedimento
&lt;/h2>&lt;ol>
&lt;li>Instale o &lt;code>Instalador de Aplicativo&lt;/code> da Microsoft Store
&lt;a class="link" href="https://www.microsoft.com/store/productId/9NBLGGH4NNS1" target="_blank" rel="noopener"
>https://www.microsoft.com/store/productId/9NBLGGH4NNS1&lt;/a>&lt;/li>
&lt;li>Instale o aplicativo usando o Prompt de Comando
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-powershell" data-lang="powershell">&lt;span class="line">&lt;span class="cl">&lt;span class="n">winget&lt;/span> &lt;span class="n">install&lt;/span> &lt;span class="n">Google&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="py">Chrome&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;/li>
&lt;/ol>
&lt;h2 id="principais-aplicativos-que-podem-ser-instalados">Principais aplicativos que podem ser instalados
&lt;/h2>&lt;ul>
&lt;li>Google Chrome (Comando &lt;code>winget install Google.Chrome&lt;/code>)&lt;/li>
&lt;li>Microsoft Edge (Comando &lt;code>winget install Microsoft.Edge&lt;/code>)&lt;/li>
&lt;li>Microsoft Teams (Comando &lt;code>winget install Microsoft.Teams&lt;/code>)&lt;/li>
&lt;li>Microsoft Office (Comando &lt;code>winget install Microsoft.Office&lt;/code>)&lt;/li>
&lt;li>Visual Studio Code (Comando &lt;code>winget install vscode&lt;/code>)&lt;/li>
&lt;li>Slack (Comando &lt;code>winget install SlackTechnologies.Slack&lt;/code>)&lt;/li>
&lt;li>Discord (Comando &lt;code>winget install Discord.Discord&lt;/code>)&lt;/li>
&lt;li>Docker Desktop (Comando &lt;code>winget install Docker.DockerDesktop&lt;/code>)&lt;/li>
&lt;li>Git (Comando &lt;code>winget install Git&lt;/code>)&lt;/li>
&lt;li>7zip (Comando &lt;code>winget install 7zip&lt;/code>)&lt;/li>
&lt;li>VLC (Comando &lt;code>winget install VideoLAN.VLC&lt;/code>)&lt;/li>
&lt;/ul>
&lt;h2 id="referência">Referência
&lt;/h2>&lt;p>&lt;a class="link" href="https://learn.microsoft.com/pt-br/windows/package-manager/winget/" target="_blank" rel="noopener"
>Usar a ferramenta winget para instalar e gerenciar aplicativos&lt;/a>&lt;/p>
&lt;h3 id="nota-lateral">Nota lateral
&lt;/h3>&lt;p>Pensei que também poderia instalar o Paint.Net, mas não consegui.&lt;/p>
&lt;p>&lt;a class="link" href="https://forums.getpaint.net/topic/118574-please-add-paintnet-to-the-available-packages-for-windows-package-manager-winget/" target="_blank" rel="noopener"
>https://forums.getpaint.net/topic/118574-please-add-paintnet-to-the-available-packages-for-windows-package-manager-winget/&lt;/a>&lt;/p></description></item><item><title>Características do Rust</title><link>http://kenji.blog/pt/p/rust%E3%81%AE%E7%89%B9%E5%BE%B4/</link><pubDate>Mon, 03 Oct 2022 22:47:20 +0900</pubDate><guid>http://kenji.blog/pt/p/rust%E3%81%AE%E7%89%B9%E5%BE%B4/</guid><description>&lt;img src="http://kenji.blog/p/rust%E3%81%AE%E7%89%B9%E5%BE%B4/img.png" alt="Featured image of post Características do Rust" />&lt;h1 id="características-do-rust">Características do Rust
&lt;/h1>&lt;ul>
&lt;li>Uma linguagem de programação de código aberto relativamente nova desenvolvida pela Mozilla&lt;/li>
&lt;li>Linguagem rápida, sem coleta de lixo (garbage collection), especializada em programação de sistemas&lt;/li>
&lt;li>Garante a segurança de memória com mecanismos únicos de propriedade (ownership) e empréstimo (borrowing) como especificações da linguagem&lt;/li>
&lt;li>Funciona em multiplataformas&lt;/li>
&lt;li>Possui o excelente gerenciador de pacotes Cargo como padrão&lt;/li>
&lt;/ul></description></item><item><title>Definir variáveis dinamicamente no Github Actions</title><link>http://kenji.blog/pt/p/github-actions%E3%81%A7%E5%8B%95%E7%9A%84%E3%81%AB%E5%A4%89%E6%95%B0%E3%82%92%E8%A8%AD%E5%AE%9A%E3%81%99%E3%82%8B/</link><pubDate>Sun, 02 Oct 2022 02:33:35 +0900</pubDate><guid>http://kenji.blog/pt/p/github-actions%E3%81%A7%E5%8B%95%E7%9A%84%E3%81%AB%E5%A4%89%E6%95%B0%E3%82%92%E8%A8%AD%E5%AE%9A%E3%81%99%E3%82%8B/</guid><description>&lt;img src="http://kenji.blog/p/github-actions%E3%81%A7%E5%8B%95%E7%9A%84%E3%81%AB%E5%A4%89%E6%95%B0%E3%82%92%E8%A8%AD%E5%AE%9A%E3%81%99%E3%82%8B/img_1.png" alt="Featured image of post Definir variáveis dinamicamente no Github Actions" />&lt;p>Para definir variáveis dinamicamente no Github Actions, você pode fazer isso anexando a $env:GITHUB_ENV conforme abaixo.&lt;/p>
&lt;p>【No caso do Windows】&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt"> 1
&lt;/span>&lt;span class="lnt"> 2
&lt;/span>&lt;span class="lnt"> 3
&lt;/span>&lt;span class="lnt"> 4
&lt;/span>&lt;span class="lnt"> 5
&lt;/span>&lt;span class="lnt"> 6
&lt;/span>&lt;span class="lnt"> 7
&lt;/span>&lt;span class="lnt"> 8
&lt;/span>&lt;span class="lnt"> 9
&lt;/span>&lt;span class="lnt">10
&lt;/span>&lt;span class="lnt">11
&lt;/span>&lt;span class="lnt">12
&lt;/span>&lt;span class="lnt">13
&lt;/span>&lt;span class="lnt">14
&lt;/span>&lt;span class="lnt">15
&lt;/span>&lt;span class="lnt">16
&lt;/span>&lt;span class="lnt">17
&lt;/span>&lt;span class="lnt">18
&lt;/span>&lt;span class="lnt">19
&lt;/span>&lt;span class="lnt">20
&lt;/span>&lt;span class="lnt">21
&lt;/span>&lt;span class="lnt">22
&lt;/span>&lt;span class="lnt">23
&lt;/span>&lt;span class="lnt">24
&lt;/span>&lt;span class="lnt">25
&lt;/span>&lt;span class="lnt">26
&lt;/span>&lt;span class="lnt">27
&lt;/span>&lt;span class="lnt">28
&lt;/span>&lt;span class="lnt">29
&lt;/span>&lt;span class="lnt">30
&lt;/span>&lt;span class="lnt">31
&lt;/span>&lt;span class="lnt">32
&lt;/span>&lt;span class="lnt">33
&lt;/span>&lt;span class="lnt">34
&lt;/span>&lt;span class="lnt">35
&lt;/span>&lt;span class="lnt">36
&lt;/span>&lt;span class="lnt">37
&lt;/span>&lt;span class="lnt">38
&lt;/span>&lt;span class="lnt">39
&lt;/span>&lt;span class="lnt">40
&lt;/span>&lt;span class="lnt">41
&lt;/span>&lt;span class="lnt">42
&lt;/span>&lt;span class="lnt">43
&lt;/span>&lt;span class="lnt">44
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-mysql" data-lang="mysql">&lt;span class="line">&lt;span class="cl">&lt;span class="n">name&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">Rust&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">&lt;/span>&lt;span class="k">on&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="n">push&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="n">branches&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="p">[&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="s2">&amp;#34;master&amp;#34;&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="p">]&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="n">pull_request&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="n">branches&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="p">[&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="s2">&amp;#34;master&amp;#34;&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="p">]&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">&lt;/span>&lt;span class="n">env&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="n">CARGO_TERM_COLOR&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">always&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">&lt;/span>&lt;span class="n">jobs&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="n">build&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="n">runs&lt;/span>&lt;span class="o">-&lt;/span>&lt;span class="k">on&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">ubuntu&lt;/span>&lt;span class="o">-&lt;/span>&lt;span class="n">latest&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="n">steps&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="o">-&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">uses&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">actions&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">checkout&lt;/span>&lt;span class="o">@&lt;/span>&lt;span class="n">v3&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="o">-&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">name&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">Get&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">Environment&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="n">run&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="o">|&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="n">echo&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="s1">&amp;#39;VERSION=1.0.0&amp;#39;&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="o">&amp;gt;&amp;gt;&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="err">$&lt;/span>&lt;span class="n">GITHUB_ENV&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="n">echo&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="s1">&amp;#39;NAME=1.0.0&amp;#39;&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="o">&amp;gt;&amp;gt;&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="err">$&lt;/span>&lt;span class="n">GITHUB_ENV&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="o">-&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">name&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">Display&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">Environment&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="n">run&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="o">|&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="n">echo&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="err">$&lt;/span>&lt;span class="n">env&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="n">VERSION&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="n">echo&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="err">$&lt;/span>&lt;span class="n">env&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="n">NAME&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="o">-&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">name&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="k">Create&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="k">Release&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="n">id&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">create_release&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="n">uses&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">actions&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="k">create&lt;/span>&lt;span class="o">-&lt;/span>&lt;span class="k">release&lt;/span>&lt;span class="o">@&lt;/span>&lt;span class="n">v1&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="n">env&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="n">GITHUB_TOKEN&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="err">${{&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">secrets&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">GITHUB_TOKEN&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="err">}}&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="k">with&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="n">tag_name&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="err">${{&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">env&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">VERSION&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="err">}}&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="n">release_name&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="err">${{&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">env&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">VERSION&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="err">}}&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="n">draft&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="no">false&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="n">prerelease&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="no">false&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="o">-&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">name&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">Upload&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="k">Release&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">Asset&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="n">id&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">upload&lt;/span>&lt;span class="o">-&lt;/span>&lt;span class="k">release&lt;/span>&lt;span class="o">-&lt;/span>&lt;span class="n">asset&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="n">uses&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">actions&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">upload&lt;/span>&lt;span class="o">-&lt;/span>&lt;span class="k">release&lt;/span>&lt;span class="o">-&lt;/span>&lt;span class="n">asset&lt;/span>&lt;span class="o">@&lt;/span>&lt;span class="n">v1&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="n">env&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="n">GITHUB_TOKEN&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="err">${{&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">secrets&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">GITHUB_TOKEN&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="err">}}&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="k">with&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="n">upload_url&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="err">${{&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">steps&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">create_release&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">outputs&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">upload_url&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="err">}}&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="c1"># This pulls from the CREATE RELEASE step above, referencing it&amp;#39;s ID to get its outputs object, which include a `upload_url`. See this blog post for more info: https://jasonet.co/posts/new-features-of-github-actions/#passing-data-to-future-steps
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">asset_path&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">target&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="k">release&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="err">${{&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">env&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">NAME&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="err">}}&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">exe&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="n">asset_name&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="err">${{&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">env&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">NAME&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="err">}}&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">exe&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="n">asset_content_type&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">application&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">octet&lt;/span>&lt;span class="o">-&lt;/span>&lt;span class="n">stream&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>【No caso do Linux】&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt"> 1
&lt;/span>&lt;span class="lnt"> 2
&lt;/span>&lt;span class="lnt"> 3
&lt;/span>&lt;span class="lnt"> 4
&lt;/span>&lt;span class="lnt"> 5
&lt;/span>&lt;span class="lnt"> 6
&lt;/span>&lt;span class="lnt"> 7
&lt;/span>&lt;span class="lnt"> 8
&lt;/span>&lt;span class="lnt"> 9
&lt;/span>&lt;span class="lnt">10
&lt;/span>&lt;span class="lnt">11
&lt;/span>&lt;span class="lnt">12
&lt;/span>&lt;span class="lnt">13
&lt;/span>&lt;span class="lnt">14
&lt;/span>&lt;span class="lnt">15
&lt;/span>&lt;span class="lnt">16
&lt;/span>&lt;span class="lnt">17
&lt;/span>&lt;span class="lnt">18
&lt;/span>&lt;span class="lnt">19
&lt;/span>&lt;span class="lnt">20
&lt;/span>&lt;span class="lnt">21
&lt;/span>&lt;span class="lnt">22
&lt;/span>&lt;span class="lnt">23
&lt;/span>&lt;span class="lnt">24
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">name: Rust
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">on:
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> push:
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> branches: [ &amp;#34;main&amp;#34; ]
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> pull_request:
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> branches: [ &amp;#34;main&amp;#34; ]
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">env:
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> CARGO_TERM_COLOR: always
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">jobs:
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> build:
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> runs-on: ubuntu-latest
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> steps:
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> - uses: actions/checkout@v3
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> - name: Get Environment
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> run: |
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> echo &amp;#39;VERSION=1.0.0&amp;#39; &amp;gt;&amp;gt; $GITHUB_ENV
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> echo &amp;#39;NAME=hello&amp;#39; &amp;gt;&amp;gt; $GITHUB_ENV
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> - name: Display Environment
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> run: |
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> echo ${{ env.VERSION }}
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> echo ${{ env.NAME }}
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div></description></item><item><title>Excluir tags no git</title><link>http://kenji.blog/pt/p/git%E3%81%A7%E3%82%BF%E3%82%B0%E3%82%92%E6%B6%88%E3%81%99/</link><pubDate>Sun, 02 Oct 2022 02:18:04 +0900</pubDate><guid>http://kenji.blog/pt/p/git%E3%81%A7%E3%82%BF%E3%82%B0%E3%82%92%E6%B6%88%E3%81%99/</guid><description>&lt;img src="http://kenji.blog/p/git%E3%81%A7%E3%82%BF%E3%82%B0%E3%82%92%E6%B6%88%E3%81%99/img.png" alt="Featured image of post Excluir tags no git" />&lt;h1 id="excluir-uma-tag-local">Excluir uma tag local
&lt;/h1>&lt;ol>
&lt;li>Verifique as tags locais existentes com &lt;code>git tag&lt;/code>.&lt;/li>
&lt;li>Exclua a tag com &lt;code>git tag -d v0.1.0&lt;/code>. (Especifique a tag que você deseja excluir no lugar de &lt;code>v0.1.0&lt;/code>)&lt;/li>
&lt;/ol>
&lt;h1 id="excluir-uma-tag-remota">Excluir uma tag remota
&lt;/h1>&lt;ol>
&lt;li>Verifique as tags remotas existentes com &lt;code>git ls-remote --tags&lt;/code>.&lt;/li>
&lt;li>Exclua a tag remota existente com &lt;code>git push origin --delete v0.1.0&lt;/code>. (Especifique a tag que você deseja excluir no lugar de &lt;code>v0.1.0&lt;/code>)&lt;/li>
&lt;/ol>
&lt;h2 id="referência">Referência
&lt;/h2>&lt;p>&lt;a class="link" href="https://qumeru.com/magazine/528" target="_blank" rel="noopener"
>gitでtagをリモートとローカルで削除する方法！&lt;/a>&lt;/p></description></item><item><title>Exibir uma janela simples em Rust</title><link>http://kenji.blog/pt/p/rust%E3%81%A7%E3%82%B7%E3%83%B3%E3%83%97%E3%83%AB%E3%81%AA%E3%82%A6%E3%82%A3%E3%83%B3%E3%83%89%E3%82%A6%E3%82%92%E8%A1%A8%E7%A4%BA%E3%81%99%E3%82%8B/</link><pubDate>Sat, 01 Oct 2022 19:08:58 +0900</pubDate><guid>http://kenji.blog/pt/p/rust%E3%81%A7%E3%82%B7%E3%83%B3%E3%83%97%E3%83%AB%E3%81%AA%E3%82%A6%E3%82%A3%E3%83%B3%E3%83%89%E3%82%A6%E3%82%92%E8%A1%A8%E7%A4%BA%E3%81%99%E3%82%8B/</guid><description>&lt;img src="http://kenji.blog/p/rust%E3%81%A7%E3%82%B7%E3%83%B3%E3%83%97%E3%83%AB%E3%81%AA%E3%82%A6%E3%82%A3%E3%83%B3%E3%83%89%E3%82%A6%E3%82%92%E8%A1%A8%E7%A4%BA%E3%81%99%E3%82%8B/images/rust_logo.png" alt="Featured image of post Exibir uma janela simples em Rust" />&lt;p>Exibir uma janela simples em Rust&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt"> 1
&lt;/span>&lt;span class="lnt"> 2
&lt;/span>&lt;span class="lnt"> 3
&lt;/span>&lt;span class="lnt"> 4
&lt;/span>&lt;span class="lnt"> 5
&lt;/span>&lt;span class="lnt"> 6
&lt;/span>&lt;span class="lnt"> 7
&lt;/span>&lt;span class="lnt"> 8
&lt;/span>&lt;span class="lnt"> 9
&lt;/span>&lt;span class="lnt">10
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-Cargo.toml" data-lang="Cargo.toml">&lt;span class="line">&lt;span class="cl">&lt;span class="p">[&lt;/span>&lt;span class="nx">package&lt;/span>&lt;span class="p">]&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nx">name&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="s2">&amp;#34;win&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nx">version&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="s2">&amp;#34;0.1.0&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nx">edition&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="s2">&amp;#34;2021&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c"># See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">[&lt;/span>&lt;span class="nx">dependencies&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="nx">winapi&lt;/span>&lt;span class="p">]&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nx">version&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="s2">&amp;#34;0.3&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nx">features&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="p">[&lt;/span>&lt;span class="s2">&amp;#34;winuser&amp;#34;&lt;/span>&lt;span class="p">]&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>O código-fonte está abaixo&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt"> 1
&lt;/span>&lt;span class="lnt"> 2
&lt;/span>&lt;span class="lnt"> 3
&lt;/span>&lt;span class="lnt"> 4
&lt;/span>&lt;span class="lnt"> 5
&lt;/span>&lt;span class="lnt"> 6
&lt;/span>&lt;span class="lnt"> 7
&lt;/span>&lt;span class="lnt"> 8
&lt;/span>&lt;span class="lnt"> 9
&lt;/span>&lt;span class="lnt">10
&lt;/span>&lt;span class="lnt">11
&lt;/span>&lt;span class="lnt">12
&lt;/span>&lt;span class="lnt">13
&lt;/span>&lt;span class="lnt">14
&lt;/span>&lt;span class="lnt">15
&lt;/span>&lt;span class="lnt">16
&lt;/span>&lt;span class="lnt">17
&lt;/span>&lt;span class="lnt">18
&lt;/span>&lt;span class="lnt">19
&lt;/span>&lt;span class="lnt">20
&lt;/span>&lt;span class="lnt">21
&lt;/span>&lt;span class="lnt">22
&lt;/span>&lt;span class="lnt">23
&lt;/span>&lt;span class="lnt">24
&lt;/span>&lt;span class="lnt">25
&lt;/span>&lt;span class="lnt">26
&lt;/span>&lt;span class="lnt">27
&lt;/span>&lt;span class="lnt">28
&lt;/span>&lt;span class="lnt">29
&lt;/span>&lt;span class="lnt">30
&lt;/span>&lt;span class="lnt">31
&lt;/span>&lt;span class="lnt">32
&lt;/span>&lt;span class="lnt">33
&lt;/span>&lt;span class="lnt">34
&lt;/span>&lt;span class="lnt">35
&lt;/span>&lt;span class="lnt">36
&lt;/span>&lt;span class="lnt">37
&lt;/span>&lt;span class="lnt">38
&lt;/span>&lt;span class="lnt">39
&lt;/span>&lt;span class="lnt">40
&lt;/span>&lt;span class="lnt">41
&lt;/span>&lt;span class="lnt">42
&lt;/span>&lt;span class="lnt">43
&lt;/span>&lt;span class="lnt">44
&lt;/span>&lt;span class="lnt">45
&lt;/span>&lt;span class="lnt">46
&lt;/span>&lt;span class="lnt">47
&lt;/span>&lt;span class="lnt">48
&lt;/span>&lt;span class="lnt">49
&lt;/span>&lt;span class="lnt">50
&lt;/span>&lt;span class="lnt">51
&lt;/span>&lt;span class="lnt">52
&lt;/span>&lt;span class="lnt">53
&lt;/span>&lt;span class="lnt">54
&lt;/span>&lt;span class="lnt">55
&lt;/span>&lt;span class="lnt">56
&lt;/span>&lt;span class="lnt">57
&lt;/span>&lt;span class="lnt">58
&lt;/span>&lt;span class="lnt">59
&lt;/span>&lt;span class="lnt">60
&lt;/span>&lt;span class="lnt">61
&lt;/span>&lt;span class="lnt">62
&lt;/span>&lt;span class="lnt">63
&lt;/span>&lt;span class="lnt">64
&lt;/span>&lt;span class="lnt">65
&lt;/span>&lt;span class="lnt">66
&lt;/span>&lt;span class="lnt">67
&lt;/span>&lt;span class="lnt">68
&lt;/span>&lt;span class="lnt">69
&lt;/span>&lt;span class="lnt">70
&lt;/span>&lt;span class="lnt">71
&lt;/span>&lt;span class="lnt">72
&lt;/span>&lt;span class="lnt">73
&lt;/span>&lt;span class="lnt">74
&lt;/span>&lt;span class="lnt">75
&lt;/span>&lt;span class="lnt">76
&lt;/span>&lt;span class="lnt">77
&lt;/span>&lt;span class="lnt">78
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-main.rs" data-lang="main.rs">&lt;span class="line">&lt;span class="cl">&lt;span class="cp">#![windows_subsystem = &lt;/span>&lt;span class="s">&amp;#34;windows&amp;#34;&lt;/span>&lt;span class="cp">]&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">&lt;/span>&lt;span class="k">use&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">winapi&lt;/span>::&lt;span class="p">{&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="n">um&lt;/span>::&lt;span class="p">{&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="n">winuser&lt;/span>::&lt;span class="p">{&lt;/span>&lt;span class="n">RegisterClassW&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="no">WNDCLASSW&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="no">CS_HREDRAW&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="no">CS_VREDRAW&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="n">LoadIconW&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="no">IDI_APPLICATION&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">LoadCursorW&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="no">IDC_ARROW&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="n">CreateWindowExW&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">ShowWindow&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="no">SW_NORMAL&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">UpdateWindow&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="n">GetMessageW&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">TranslateMessage&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">DispatchMessageW&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="no">MSG&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="no">WM_DESTROY&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">PostQuitMessage&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">DefWindowProcW&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="no">WS_OVERLAPPEDWINDOW&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="no">CW_USEDEFAULT&lt;/span>&lt;span class="p">},&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="n">wingdi&lt;/span>::&lt;span class="p">{&lt;/span>&lt;span class="n">GetStockObject&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="no">WHITE_BRUSH&lt;/span>&lt;span class="p">},&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="p">},&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="n">shared&lt;/span>::&lt;span class="p">{&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="n">windef&lt;/span>::&lt;span class="p">{&lt;/span>&lt;span class="no">HWND&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="no">HBRUSH&lt;/span>&lt;span class="p">},&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="n">minwindef&lt;/span>::&lt;span class="p">{&lt;/span>&lt;span class="no">UINT&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="no">WPARAM&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="no">LPARAM&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="no">LRESULT&lt;/span>&lt;span class="p">},&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="p">},&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">&lt;/span>&lt;span class="p">};&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">&lt;/span>&lt;span class="k">use&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">std&lt;/span>::&lt;span class="n">ptr&lt;/span>&lt;span class="p">;&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">&lt;/span>&lt;span class="k">use&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">std&lt;/span>::&lt;span class="n">mem&lt;/span>&lt;span class="p">;&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">&lt;/span>&lt;span class="k">fn&lt;/span> &lt;span class="nf">main&lt;/span>&lt;span class="p">()&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="p">{&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="k">unsafe&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="p">{&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="kd">let&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">class_name&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">encode&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s">&amp;#34;my_window_class_name&amp;#34;&lt;/span>&lt;span class="p">);&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="k">if&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="o">!&lt;/span>&lt;span class="n">register_wndclass&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="o">&amp;amp;&lt;/span>&lt;span class="n">class_name&lt;/span>&lt;span class="p">)&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="p">{&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="k">return&lt;/span>&lt;span class="p">;&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="p">}&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="kd">let&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">hwnd&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">create_window&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="o">&amp;amp;&lt;/span>&lt;span class="n">class_name&lt;/span>&lt;span class="p">);&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="k">if&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">hwnd&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">is_null&lt;/span>&lt;span class="p">()&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="p">{&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="k">return&lt;/span>&lt;span class="p">;&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="p">}&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="n">ShowWindow&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">hwnd&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="no">SW_NORMAL&lt;/span>&lt;span class="p">);&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="n">UpdateWindow&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">hwnd&lt;/span>&lt;span class="p">);&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="kd">let&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="k">mut&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">msg&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">mem&lt;/span>::&lt;span class="n">uninitialized&lt;/span>::&lt;span class="o">&amp;lt;&lt;/span>&lt;span class="no">MSG&lt;/span>&lt;span class="o">&amp;gt;&lt;/span>&lt;span class="p">();&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="k">loop&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="p">{&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="k">if&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">GetMessageW&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="o">&amp;amp;&lt;/span>&lt;span class="k">mut&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">msg&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">ptr&lt;/span>::&lt;span class="n">null_mut&lt;/span>&lt;span class="p">(),&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="mi">0&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="mi">0&lt;/span>&lt;span class="p">)&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="o">==&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="mi">0&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="p">{&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="k">return&lt;/span>&lt;span class="p">;&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="p">}&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="n">TranslateMessage&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="o">&amp;amp;&lt;/span>&lt;span class="k">mut&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">msg&lt;/span>&lt;span class="p">);&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="n">DispatchMessageW&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="o">&amp;amp;&lt;/span>&lt;span class="k">mut&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">msg&lt;/span>&lt;span class="p">);&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="p">}&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="p">}&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">&lt;/span>&lt;span class="p">}&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">&lt;/span>&lt;span class="k">fn&lt;/span> &lt;span class="nf">encode&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">source&lt;/span>: &lt;span class="kp">&amp;amp;&lt;/span>&lt;span class="kt">str&lt;/span>&lt;span class="p">)&lt;/span>&lt;span class="w"> &lt;/span>-&amp;gt; &lt;span class="nb">Vec&lt;/span>&lt;span class="o">&amp;lt;&lt;/span>&lt;span class="kt">u16&lt;/span>&lt;span class="o">&amp;gt;&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="p">{&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="n">source&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">encode_utf16&lt;/span>&lt;span class="p">().&lt;/span>&lt;span class="n">chain&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="nb">Some&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="mi">0&lt;/span>&lt;span class="p">)).&lt;/span>&lt;span class="n">collect&lt;/span>&lt;span class="p">()&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">&lt;/span>&lt;span class="p">}&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">&lt;/span>&lt;span class="k">unsafe&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="k">fn&lt;/span> &lt;span class="nf">register_wndclass&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">class_name&lt;/span>: &lt;span class="kp">&amp;amp;&lt;/span>&lt;span class="p">[&lt;/span>&lt;span class="kt">u16&lt;/span>&lt;span class="p">])&lt;/span>&lt;span class="w"> &lt;/span>-&amp;gt; &lt;span class="kt">bool&lt;/span> &lt;span class="p">{&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="kd">let&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="k">mut&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">winc&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">mem&lt;/span>::&lt;span class="n">zeroed&lt;/span>::&lt;span class="o">&amp;lt;&lt;/span>&lt;span class="no">WNDCLASSW&lt;/span>&lt;span class="o">&amp;gt;&lt;/span>&lt;span class="p">();&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="n">winc&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">style&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="no">CS_HREDRAW&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="o">|&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="no">CS_VREDRAW&lt;/span>&lt;span class="p">;&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="n">winc&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">lpfnWndProc&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="nb">Some&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">win_proc&lt;/span>&lt;span class="p">);&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="n">winc&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">hIcon&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">LoadIconW&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">ptr&lt;/span>::&lt;span class="n">null_mut&lt;/span>&lt;span class="p">(),&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="no">IDI_APPLICATION&lt;/span>&lt;span class="p">);&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="n">winc&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">hCursor&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">LoadCursorW&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">ptr&lt;/span>::&lt;span class="n">null_mut&lt;/span>&lt;span class="p">(),&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="no">IDC_ARROW&lt;/span>&lt;span class="p">);&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="n">winc&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">hbrBackground&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">GetStockObject&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="no">WHITE_BRUSH&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="k">as&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="kt">i32&lt;/span>&lt;span class="p">)&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="k">as&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="no">HBRUSH&lt;/span>&lt;span class="p">;&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="n">winc&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">lpszClassName&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">class_name&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">as_ptr&lt;/span>&lt;span class="p">();&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="n">RegisterClassW&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="o">&amp;amp;&lt;/span>&lt;span class="n">winc&lt;/span>&lt;span class="p">)&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="o">&amp;gt;&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="mi">0&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">&lt;/span>&lt;span class="p">}&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">&lt;/span>&lt;span class="k">unsafe&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="k">fn&lt;/span> &lt;span class="nf">create_window&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">class_name&lt;/span>: &lt;span class="kp">&amp;amp;&lt;/span>&lt;span class="p">[&lt;/span>&lt;span class="kt">u16&lt;/span>&lt;span class="p">])&lt;/span>&lt;span class="w"> &lt;/span>-&amp;gt; &lt;span class="nc">HWND&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="p">{&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="n">CreateWindowExW&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="mi">0&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="n">class_name&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">as_ptr&lt;/span>&lt;span class="p">(),&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="n">encode&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s">&amp;#34;Hello, World!&amp;#34;&lt;/span>&lt;span class="p">).&lt;/span>&lt;span class="n">as_ptr&lt;/span>&lt;span class="p">(),&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="no">WS_OVERLAPPEDWINDOW&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="no">CW_USEDEFAULT&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="mi">0&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="no">CW_USEDEFAULT&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="mi">0&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="n">ptr&lt;/span>::&lt;span class="n">null_mut&lt;/span>&lt;span class="p">(),&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="n">ptr&lt;/span>::&lt;span class="n">null_mut&lt;/span>&lt;span class="p">(),&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="n">ptr&lt;/span>::&lt;span class="n">null_mut&lt;/span>&lt;span class="p">(),&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="n">ptr&lt;/span>::&lt;span class="n">null_mut&lt;/span>&lt;span class="p">(),&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="p">)&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">&lt;/span>&lt;span class="p">}&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">&lt;/span>&lt;span class="k">unsafe&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="k">extern&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="s">&amp;#34;system&amp;#34;&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="k">fn&lt;/span> &lt;span class="nf">win_proc&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">hwnd&lt;/span>: &lt;span class="nc">HWND&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">msg&lt;/span>: &lt;span class="nc">UINT&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">w_param&lt;/span>: &lt;span class="nc">WPARAM&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">l_param&lt;/span>: &lt;span class="nc">LPARAM&lt;/span>&lt;span class="p">)&lt;/span>&lt;span class="w"> &lt;/span>-&amp;gt; &lt;span class="nc">LRESULT&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="p">{&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="k">match&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">msg&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="p">{&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="no">WM_DESTROY&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="o">=&amp;gt;&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">PostQuitMessage&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="mi">0&lt;/span>&lt;span class="p">),&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="n">_&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="o">=&amp;gt;&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="k">return&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">DefWindowProcW&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">hwnd&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">msg&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">w_param&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">l_param&lt;/span>&lt;span class="p">),&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="p">};&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="mi">0&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">&lt;/span>&lt;span class="p">}&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h2 id="referências">Referências
&lt;/h2>&lt;p>&lt;a class="link" href="https://qiita.com/benki/items/c01f7da1e1a71cc91d11" target="_blank" rel="noopener"
>Programação Windows em Rust - CreateWindow&lt;/a>&lt;/p></description></item><item><title>Escrevendo testes em Rust</title><link>http://kenji.blog/pt/p/rust%E3%81%A7%E3%83%86%E3%82%B9%E3%83%88%E3%82%92%E6%9B%B8%E3%81%8F/</link><pubDate>Sat, 01 Oct 2022 02:00:59 +0900</pubDate><guid>http://kenji.blog/pt/p/rust%E3%81%A7%E3%83%86%E3%82%B9%E3%83%88%E3%82%92%E6%9B%B8%E3%81%8F/</guid><description>&lt;img src="http://kenji.blog/p/rust%E3%81%A7%E3%83%86%E3%82%B9%E3%83%88%E3%82%92%E6%9B%B8%E3%81%8F/images/rust_logo.png" alt="Featured image of post Escrevendo testes em Rust" />&lt;p>Para escrever um teste em Rust, adicione o atributo &lt;code>#[test]&lt;/code> uma linha acima da definição da função de teste.&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;span class="lnt">4
&lt;/span>&lt;span class="lnt">5
&lt;/span>&lt;span class="lnt">6
&lt;/span>&lt;span class="lnt">7
&lt;/span>&lt;span class="lnt">8
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-rust" data-lang="rust">&lt;span class="line">&lt;span class="cl">&lt;span class="k">fn&lt;/span> &lt;span class="nf">plus&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">a&lt;/span>:&lt;span class="kt">i32&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="n">b&lt;/span>:&lt;span class="kt">i32&lt;/span>&lt;span class="p">)&lt;/span>-&amp;gt;&lt;span class="kt">i32&lt;/span> &lt;span class="p">{&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="n">a&lt;/span>&lt;span class="o">+&lt;/span>&lt;span class="n">b&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">&lt;/span>&lt;span class="p">}&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">&lt;/span>&lt;span class="cp">#[test]&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">&lt;/span>&lt;span class="k">fn&lt;/span> &lt;span class="nf">plus_test&lt;/span>&lt;span class="p">()&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="p">{&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="fm">assert_eq!&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">plus&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="mi">1&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="mi">1&lt;/span>&lt;span class="p">),&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="mi">2&lt;/span>&lt;span class="p">);&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">&lt;/span>&lt;span class="p">}&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>O código de teste pode ser executado com &lt;code>cargo test&lt;/code>. Quando o teste for bem-sucedido, ele exibirá &lt;code>ok&lt;/code>.
Se falhar, exibirá &lt;code>FAILED&lt;/code>.&lt;/p>
&lt;p>Caso de sucesso&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;span class="lnt">4
&lt;/span>&lt;span class="lnt">5
&lt;/span>&lt;span class="lnt">6
&lt;/span>&lt;span class="lnt">7
&lt;/span>&lt;span class="lnt">8
&lt;/span>&lt;span class="lnt">9
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">C:&lt;span class="se">\U&lt;/span>sers&lt;span class="se">\a&lt;/span>dmin&lt;span class="se">\D&lt;/span>esktop&lt;span class="se">\t&lt;/span>est1&amp;gt;cargo &lt;span class="nb">test&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> Compiling test1 v0.1.0 &lt;span class="o">(&lt;/span>C:&lt;span class="se">\U&lt;/span>sers&lt;span class="se">\a&lt;/span>dmin&lt;span class="se">\D&lt;/span>esktop&lt;span class="se">\t&lt;/span>est1&lt;span class="o">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> Finished &lt;span class="nb">test&lt;/span> &lt;span class="o">[&lt;/span>unoptimized + debuginfo&lt;span class="o">]&lt;/span> target&lt;span class="o">(&lt;/span>s&lt;span class="o">)&lt;/span> in 0.35s
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> Running unittests src&lt;span class="se">\m&lt;/span>ain.rs &lt;span class="o">(&lt;/span>target&lt;span class="se">\d&lt;/span>ebug&lt;span class="se">\d&lt;/span>eps&lt;span class="se">\t&lt;/span>est1-be5d3118bc52cb3a.exe&lt;span class="o">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">running &lt;span class="m">1&lt;/span> &lt;span class="nb">test&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nb">test&lt;/span> plus_test ... ok
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nb">test&lt;/span> result: ok. &lt;span class="m">1&lt;/span> passed&lt;span class="p">;&lt;/span> &lt;span class="m">0&lt;/span> failed&lt;span class="p">;&lt;/span> &lt;span class="m">0&lt;/span> ignored&lt;span class="p">;&lt;/span> &lt;span class="m">0&lt;/span> measured&lt;span class="p">;&lt;/span> &lt;span class="m">0&lt;/span> filtered out&lt;span class="p">;&lt;/span> finished in 0.00s
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>Caso de falha&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt"> 1
&lt;/span>&lt;span class="lnt"> 2
&lt;/span>&lt;span class="lnt"> 3
&lt;/span>&lt;span class="lnt"> 4
&lt;/span>&lt;span class="lnt"> 5
&lt;/span>&lt;span class="lnt"> 6
&lt;/span>&lt;span class="lnt"> 7
&lt;/span>&lt;span class="lnt"> 8
&lt;/span>&lt;span class="lnt"> 9
&lt;/span>&lt;span class="lnt">10
&lt;/span>&lt;span class="lnt">11
&lt;/span>&lt;span class="lnt">12
&lt;/span>&lt;span class="lnt">13
&lt;/span>&lt;span class="lnt">14
&lt;/span>&lt;span class="lnt">15
&lt;/span>&lt;span class="lnt">16
&lt;/span>&lt;span class="lnt">17
&lt;/span>&lt;span class="lnt">18
&lt;/span>&lt;span class="lnt">19
&lt;/span>&lt;span class="lnt">20
&lt;/span>&lt;span class="lnt">21
&lt;/span>&lt;span class="lnt">22
&lt;/span>&lt;span class="lnt">23
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">C:&lt;span class="se">\U&lt;/span>sers&lt;span class="se">\a&lt;/span>dmin&lt;span class="se">\D&lt;/span>esktop&lt;span class="se">\t&lt;/span>est1&amp;gt;cargo &lt;span class="nb">test&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> Compiling test1 v0.1.0 &lt;span class="o">(&lt;/span>C:&lt;span class="se">\U&lt;/span>sers&lt;span class="se">\a&lt;/span>dmin&lt;span class="se">\D&lt;/span>esktop&lt;span class="se">\t&lt;/span>est1&lt;span class="o">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> Finished &lt;span class="nb">test&lt;/span> &lt;span class="o">[&lt;/span>unoptimized + debuginfo&lt;span class="o">]&lt;/span> target&lt;span class="o">(&lt;/span>s&lt;span class="o">)&lt;/span> in 0.33s
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> Running unittests src&lt;span class="se">\m&lt;/span>ain.rs &lt;span class="o">(&lt;/span>target&lt;span class="se">\d&lt;/span>ebug&lt;span class="se">\d&lt;/span>eps&lt;span class="se">\t&lt;/span>est1-be5d3118bc52cb3a.exe&lt;span class="o">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">running &lt;span class="m">1&lt;/span> &lt;span class="nb">test&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nb">test&lt;/span> plus_test ... FAILED
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">failures:
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">---- plus_test stdout ----
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">thread &lt;span class="s1">&amp;#39;plus_test&amp;#39;&lt;/span> panicked at &lt;span class="s1">&amp;#39;assertion failed: `(left == right)`
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s1"> left: `2`,
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s1"> right: `3`&amp;#39;&lt;/span>, src&lt;span class="se">\m&lt;/span>ain.rs:7:5
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">note: run with &lt;span class="sb">`&lt;/span>&lt;span class="nv">RUST_BACKTRACE&lt;/span>&lt;span class="o">=&lt;/span>1&lt;span class="sb">`&lt;/span> environment variable to display a backtrace
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">failures:
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> plus_test
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nb">test&lt;/span> result: FAILED. &lt;span class="m">0&lt;/span> passed&lt;span class="p">;&lt;/span> &lt;span class="m">1&lt;/span> failed&lt;span class="p">;&lt;/span> &lt;span class="m">0&lt;/span> ignored&lt;span class="p">;&lt;/span> &lt;span class="m">0&lt;/span> measured&lt;span class="p">;&lt;/span> &lt;span class="m">0&lt;/span> filtered out&lt;span class="p">;&lt;/span> finished in 0.00s
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">error: &lt;span class="nb">test&lt;/span> failed, to rerun pass &lt;span class="s1">&amp;#39;--bin test1&amp;#39;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div></description></item><item><title>Exibir um MessageBox em Rust</title><link>http://kenji.blog/pt/p/exibir-um-messagebox-em-rust/</link><pubDate>Fri, 30 Sep 2022 23:54:31 +0900</pubDate><guid>http://kenji.blog/pt/p/exibir-um-messagebox-em-rust/</guid><description>&lt;img src="http://kenji.blog/p/rust%E3%81%A7messagebox%E3%82%92%E8%A1%A8%E7%A4%BA%E3%81%99%E3%82%8B/images/rust_logo.png" alt="Featured image of post Exibir um MessageBox em Rust" />&lt;p>Você pode exibir um MessageBox em Rust seguindo os passos abaixo.&lt;/p>
&lt;ol>
&lt;li>Instale o Rust. Consulte &lt;a class="link" href="https://kenji.blog/posts/rust%E3%81%AE%E3%81%AF%E3%81%98%E3%82%81%E3%81%8B%E3%81%9F/" target="_blank" rel="noopener"
>Como começar com Rust&lt;/a>&lt;/li>
&lt;li>Execute &lt;code>cargo new --bin MessageBox&lt;/code> no prompt de comando.&lt;/li>
&lt;li>Vá para o diretório &lt;code>MessageBox&lt;/code>.&lt;/li>
&lt;li>Abra &lt;code>Cargo.toml&lt;/code> e modifique-o conforme abaixo.&lt;/li>
&lt;/ol>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt"> 1
&lt;/span>&lt;span class="lnt"> 2
&lt;/span>&lt;span class="lnt"> 3
&lt;/span>&lt;span class="lnt"> 4
&lt;/span>&lt;span class="lnt"> 5
&lt;/span>&lt;span class="lnt"> 6
&lt;/span>&lt;span class="lnt"> 7
&lt;/span>&lt;span class="lnt"> 8
&lt;/span>&lt;span class="lnt"> 9
&lt;/span>&lt;span class="lnt">10
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-toml" data-lang="toml">&lt;span class="line">&lt;span class="cl">&lt;span class="p">[&lt;/span>&lt;span class="nx">package&lt;/span>&lt;span class="p">]&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nx">name&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="s2">&amp;#34;hello_world&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nx">version&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="s2">&amp;#34;0.1.0&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nx">edition&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="s2">&amp;#34;2021&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c"># See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">[&lt;/span>&lt;span class="nx">dependencies&lt;/span>&lt;span class="p">]&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nx">winapi&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="s2">&amp;#34;0.2.7&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nx">user32-sys&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="s2">&amp;#34;0.2.0&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;ol start="5">
&lt;li>Abra &lt;code>src\main.rs&lt;/code> e modifique-o conforme abaixo.&lt;/li>
&lt;/ol>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt"> 1
&lt;/span>&lt;span class="lnt"> 2
&lt;/span>&lt;span class="lnt"> 3
&lt;/span>&lt;span class="lnt"> 4
&lt;/span>&lt;span class="lnt"> 5
&lt;/span>&lt;span class="lnt"> 6
&lt;/span>&lt;span class="lnt"> 7
&lt;/span>&lt;span class="lnt"> 8
&lt;/span>&lt;span class="lnt"> 9
&lt;/span>&lt;span class="lnt">10
&lt;/span>&lt;span class="lnt">11
&lt;/span>&lt;span class="lnt">12
&lt;/span>&lt;span class="lnt">13
&lt;/span>&lt;span class="lnt">14
&lt;/span>&lt;span class="lnt">15
&lt;/span>&lt;span class="lnt">16
&lt;/span>&lt;span class="lnt">17
&lt;/span>&lt;span class="lnt">18
&lt;/span>&lt;span class="lnt">19
&lt;/span>&lt;span class="lnt">20
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-main.rs" data-lang="main.rs">&lt;span class="line">&lt;span class="cl">&lt;span class="k">extern&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="k">crate&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">user32&lt;/span>&lt;span class="p">;&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">&lt;/span>&lt;span class="k">extern&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="k">crate&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">winapi&lt;/span>&lt;span class="p">;&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">&lt;/span>&lt;span class="k">use&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">std&lt;/span>::&lt;span class="n">ffi&lt;/span>::&lt;span class="n">CString&lt;/span>&lt;span class="p">;&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">&lt;/span>&lt;span class="k">use&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">user32&lt;/span>::&lt;span class="n">MessageBoxA&lt;/span>&lt;span class="p">;&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">&lt;/span>&lt;span class="k">use&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">winapi&lt;/span>::&lt;span class="n">winuser&lt;/span>::&lt;span class="p">{&lt;/span>&lt;span class="no">MB_OK&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="no">MB_ICONINFORMATION&lt;/span>&lt;span class="p">};&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">&lt;/span>&lt;span class="k">fn&lt;/span> &lt;span class="nf">main&lt;/span>&lt;span class="p">()&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="p">{&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="kd">let&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">lp_text&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">CString&lt;/span>::&lt;span class="n">new&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s">&amp;#34;Hello, world!&amp;#34;&lt;/span>&lt;span class="p">).&lt;/span>&lt;span class="n">unwrap&lt;/span>&lt;span class="p">();&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="kd">let&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">lp_caption&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">CString&lt;/span>::&lt;span class="n">new&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s">&amp;#34;MessageBox Example&amp;#34;&lt;/span>&lt;span class="p">).&lt;/span>&lt;span class="n">unwrap&lt;/span>&lt;span class="p">();&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="k">unsafe&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="p">{&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="n">MessageBoxA&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="n">std&lt;/span>::&lt;span class="n">ptr&lt;/span>::&lt;span class="n">null_mut&lt;/span>&lt;span class="p">(),&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="n">lp_text&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">as_ptr&lt;/span>&lt;span class="p">(),&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="n">lp_caption&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">as_ptr&lt;/span>&lt;span class="p">(),&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="no">MB_OK&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="o">|&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="no">MB_ICONINFORMATION&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="p">);&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="p">}&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">&lt;/span>&lt;span class="p">}&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;ol start="6">
&lt;li>
&lt;p>Execute &lt;code>cargo run&lt;/code> no prompt de comando.
&lt;img src="http://kenji.blog/p/rust%E3%81%A7messagebox%E3%82%92%E8%A1%A8%E7%A4%BA%E3%81%99%E3%82%8B/img.png"
width="160"
height="152"
srcset="http://kenji.blog/p/rust%E3%81%A7messagebox%E3%82%92%E8%A1%A8%E7%A4%BA%E3%81%99%E3%82%8B/img_hu634f1117052e2b61756baa5f3866eef5_4266_480x0_resize_box_3.png 480w, http://kenji.blog/p/rust%E3%81%A7messagebox%E3%82%92%E8%A1%A8%E7%A4%BA%E3%81%99%E3%82%8B/img_hu634f1117052e2b61756baa5f3866eef5_4266_1024x0_resize_box_3.png 1024w"
loading="lazy"
alt="img.png"
class="gallery-image"
data-flex-grow="105"
data-flex-basis="252px"
>&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Se você deseja fazer uma compilação de release, execute &lt;code>cargo build --release&lt;/code>.&lt;/p>
&lt;/li>
&lt;/ol>
&lt;h1 id="referência">Referência
&lt;/h1>&lt;p>&lt;a class="link" href="https://wesleywiser.github.io/post/rust-windows-messagebox-hello-world/" target="_blank" rel="noopener"
>Hello World MesssageBox example in Rust&lt;/a>&lt;/p></description></item><item><title>O que significa entender?</title><link>http://kenji.blog/pt/p/o-que-significa-entender/</link><pubDate>Sat, 24 Sep 2022 02:38:18 +0900</pubDate><guid>http://kenji.blog/pt/p/o-que-significa-entender/</guid><description>&lt;img src="http://kenji.blog/p/%E3%82%8F%E3%81%8B%E3%82%8B%E3%81%A3%E3%81%A6%E3%81%AA%E3%82%93%E3%81%A0%E3%82%8D%E3%81%86/img.png" alt="Featured image of post O que significa entender?" />&lt;h1 id="o-que-significa-entender">O que significa entender?
&lt;/h1>&lt;p>Olá!&lt;/p>
&lt;p>Hoje, gostaria de falar sobre o tema &amp;ldquo;O que significa entender?&amp;rdquo;.&lt;/p>
&lt;hr>
&lt;h2 id="o-entender-é-na-verdade-ambíguo">O &amp;ldquo;entender&amp;rdquo; é, na verdade, ambíguo?
&lt;/h2>&lt;p>Há momentos em nossa vida diária em que sentimos: &amp;ldquo;Entendi!&amp;rdquo;. Mas, se pensarmos bem, será que esse &amp;ldquo;entender&amp;rdquo; é realmente uma compreensão completa?&lt;/p>
&lt;p>Por exemplo, dirigir um carro. Se você pisa no acelerador, ele avança; se pisa no freio, ele para. Isso pode ser chamado de &amp;ldquo;entender&amp;rdquo;. No entanto, acho que há poucas pessoas que podem explicar detalhadamente o que está acontecendo dentro do motor.&lt;/p>
&lt;hr>
&lt;h2 id="a-compreensão-completa-é-necessária">A compreensão completa é necessária?
&lt;/h2>&lt;p>Na verdade, mesmo que não entendamos tudo completamente, isso muitas vezes não interfere na vida cotidiana. Você pode fazer chamadas telefônicas e enviar mensagens sem conhecer a estrutura interna de um smartphone.&lt;/p>
&lt;p>Ainda assim, não devemos menosprezar o ato de &amp;ldquo;entender&amp;rdquo;. Se nossa compreensão se aprofundar, novas descobertas e percepções podem surgir.&lt;/p>
&lt;hr>
&lt;h2 id="há-muitas-coisas-que-não-entendemos">Há muitas coisas que não entendemos
&lt;/h2>&lt;p>Existem muitas coisas no mundo que ainda não foram elucidadas. Por exemplo, os mecanismos das emoções e da consciência humanas, a origem do universo, entre outros. Esses são campos que ainda não são completamente &amp;ldquo;entendidos&amp;rdquo;, mesmo com o avanço da ciência.&lt;/p>
&lt;p>Mesmo no mundo da matemática, existem problemas não resolvidos que são simples, como a &amp;ldquo;Conjectura de Goldbach&amp;rdquo;.&lt;/p>
&lt;hr>
&lt;h2 id="o-valor-de-entender">O valor de &amp;ldquo;entender&amp;rdquo;
&lt;/h2>&lt;p>Quando &amp;ldquo;entendemos&amp;rdquo; mais coisas, podemos explicá-las com confiança e nos comunicar de maneira eficaz com os outros. Também há a vantagem de que ter conhecimento torna mais difícil ser enganado por informações incorretas.&lt;/p>
&lt;hr>
&lt;h2 id="uma-atitude-humilde-é-importante">Uma atitude humilde é importante
&lt;/h2>&lt;p>Reconhecer o que &amp;ldquo;não entendemos&amp;rdquo; leva à humildade. E é devido a esse reconhecimento que surge o desejo de continuar aprendendo.&lt;/p>
&lt;hr>
&lt;p>Portanto, embora &amp;ldquo;entender&amp;rdquo; seja importante, é difícil compreender tudo completamente. Acho que o importante é conhecer os limites do nosso próprio entendimento e manter a atitude de continuar aprendendo.&lt;/p></description></item><item><title>Por que gosto de matemática e computadores</title><link>http://kenji.blog/pt/p/%E3%81%AA%E3%81%9C%E6%95%B0%E5%AD%A6%E3%82%84%E8%A8%88%E7%AE%97%E6%A9%9F%E3%81%8C%E5%A5%BD%E3%81%8D%E3%81%AA%E3%82%93%E3%81%A0%E3%82%8D%E3%81%86/</link><pubDate>Fri, 23 Sep 2022 01:56:52 +0900</pubDate><guid>http://kenji.blog/pt/p/%E3%81%AA%E3%81%9C%E6%95%B0%E5%AD%A6%E3%82%84%E8%A8%88%E7%AE%97%E6%A9%9F%E3%81%8C%E5%A5%BD%E3%81%8D%E3%81%AA%E3%82%93%E3%81%A0%E3%82%8D%E3%81%86/</guid><description>&lt;img src="http://kenji.blog/p/%E3%81%AA%E3%81%9C%E6%95%B0%E5%AD%A6%E3%82%84%E8%A8%88%E7%AE%97%E6%A9%9F%E3%81%8C%E5%A5%BD%E3%81%8D%E3%81%AA%E3%82%93%E3%81%A0%E3%82%8D%E3%81%86/img.png" alt="Featured image of post Por que gosto de matemática e computadores" />&lt;h2 id="pensei-sobre-por-que-gosto-de-matemática-e-computadores">Pensei sobre por que gosto de matemática e computadores
&lt;/h2>&lt;h3 id="igualdade-para-todos">Igualdade para todos
&lt;/h3>&lt;p>Sempre retorna a mesma saída para a mesma entrada, independentemente da pessoa, posição ou local.&lt;/p>
&lt;h3 id="regras-claras">Regras claras
&lt;/h3>&lt;p>As regras são claramente definidas e não há absurdos ou injustiças.&lt;/p>
&lt;h3 id="as-respostas-e-teorias-derivadas-são-eternamente-corretas">As respostas e teorias derivadas são eternamente corretas
&lt;/h3>&lt;p>Não há necessidade de se preocupar se uma resposta calculada será reescrita mais tarde.&lt;/p>
&lt;h3 id="dificuldade-moderada">Dificuldade moderada
&lt;/h3>&lt;p>Sempre há problemas não resolvidos, e você pode se desafiar a resolvê-los a qualquer momento.&lt;/p></description></item><item><title>O que uma comunidade precisa</title><link>http://kenji.blog/pt/p/o-que-uma-comunidade-precisa/</link><pubDate>Fri, 23 Sep 2022 01:37:43 +0900</pubDate><guid>http://kenji.blog/pt/p/o-que-uma-comunidade-precisa/</guid><description>&lt;img src="http://kenji.blog/p/%E3%82%B3%E3%83%9F%E3%83%A5%E3%83%8B%E3%83%86%E3%82%A3%E3%81%AB%E5%BF%85%E8%A6%81%E3%81%AA%E3%81%93%E3%81%A8/img.png" alt="Featured image of post O que uma comunidade precisa" />&lt;h1 id="o-que-uma-comunidade-precisa">O que uma comunidade precisa
&lt;/h1>&lt;p>Senti que as diretrizes da comunidade do Scratch são muito refinadas e excelentes.
As seguintes coisas estavam escritas:&lt;/p>
&lt;blockquote>
&lt;p>Trate a todos com respeito.&lt;/p>
&lt;/blockquote>
&lt;blockquote>
&lt;p>Mantenha a segurança: Não revele informações pessoais ou de contato.&lt;/p>
&lt;/blockquote>
&lt;blockquote>
&lt;p>Faça comentários úteis.&lt;/p>
&lt;/blockquote>
&lt;blockquote>
&lt;p>Entenda a cultura do remix.&lt;/p>
&lt;/blockquote>
&lt;blockquote>
&lt;p>Seja honesto.&lt;/p>
&lt;/blockquote>
&lt;blockquote>
&lt;p>Torne o site um lugar agradável.&lt;/p>
&lt;/blockquote>
&lt;p>Acredito que essas perspectivas se aplicam a qualquer comunidade.&lt;/p>
&lt;p>&lt;a class="link" href="https://ja.scratch-wiki.info/wiki/%E3%82%B3%E3%83%9F%E3%83%A5%E3%83%8B%E3%83%86%E3%82%A3%E3%83%BC%E3%82%AC%E3%82%A4%E3%83%89%E3%83%A9%E3%82%A4%E3%83%B3" target="_blank" rel="noopener"
>https://ja.scratch-wiki.info/wiki/%E3%82%B3%E3%83%9F%E3%83%A5%E3%83%8B%E3%83%86%E3%82%A3%E3%83%BC%E3%82%AC%E3%82%A4%E3%83%89%E3%83%A9%E3%82%A4%E3%83%B3&lt;/a>&lt;/p></description></item><item><title>Os Grandes Gênios da Matemática</title><link>http://kenji.blog/pt/p/os-grandes-genios-da-matematica/</link><pubDate>Thu, 22 Sep 2022 23:06:37 +0900</pubDate><guid>http://kenji.blog/pt/p/os-grandes-genios-da-matematica/</guid><description>&lt;img src="http://kenji.blog/p/%E6%95%B0%E5%AD%A6%E3%81%AE%E5%81%89%E4%BA%BA%E3%81%9F%E3%81%A1/img.png" alt="Featured image of post Os Grandes Gênios da Matemática" />&lt;h3 id="fermat-p-de-fermat-1601-1665">Fermat (P. de Fermat, 1601-1665)
&lt;/h3>&lt;p>Um matemático francês que representou o século XVII. Estabeleceu os fundamentos da geometria analítica, teoria das probabilidades e cálculo diferencial. É também o fundador da teoria dos números.&lt;/p>
&lt;h3 id="diofanto-diophantus-cerca-de-207-291">Diofanto (Diophantus, cerca de 207-291)
&lt;/h3>&lt;p>Matemático grego. Famoso pela introdução de notação simbólica e pesquisa de soluções racionais. Seu livro &amp;ldquo;Aritmética&amp;rdquo; é sua obra-prima. O campo que busca soluções racionais para equações é chamado de análise diofantina.&lt;/p>
&lt;h3 id="euler-l-euler-1707-1783">Euler (L. Euler, 1707-1783)
&lt;/h3>&lt;p>O rei da matemática nascido na Suíça. Ele obteve conquistas em todas as áreas da matemática. Mais de 700 artigos e 45 livros foram deixados.&lt;/p>
&lt;h3 id="legendre-a-m-legendre-1752-1833">Legendre (A. M. Legendre, 1752-1833)
&lt;/h3>&lt;p>Matemático francês. Deixou inúmeras contribuições em teoria dos números, integrais elípticas e problemas de gravitação. A palavra &amp;ldquo;Teoria dos Números&amp;rdquo; (&amp;ldquo;Théorie des Nombres&amp;rdquo;) deriva de sua obra principal com este nome.&lt;/p>
&lt;h3 id="kummer-e-e-kummer-1810-1893">Kummer (E. E. Kummer, 1810-1893)
&lt;/h3>&lt;p>Matemático alemão. Ele aplicou a teoria dos números dos corpos ciclotômicos ao Último Teorema de Fermat e obteve grandes resultados.&lt;/p>
&lt;h3 id="descartes-r-descartes-1596-1650">Descartes (R. Descartes, 1596-1650)
&lt;/h3>&lt;p>O filósofo francês original. Obras representativas incluem &amp;ldquo;Discurso do Método&amp;rdquo;, &amp;ldquo;Geometria&amp;rdquo; e &amp;ldquo;O Mundo&amp;rdquo;.&lt;/p>
&lt;h3 id="pascal-b-pascal-1623-1662">Pascal (B. Pascal, 1623-1662)
&lt;/h3>&lt;p>Filósofo francês conhecido por seus estudos sobre probabilidade e fluidos. Mais tarde, ele se juntou aos jansenistas e se envolveu em atividades religiosas. Os &amp;ldquo;Pensamentos&amp;rdquo; (&amp;ldquo;Pensées&amp;rdquo;) é uma obra dessa época.&lt;/p>
&lt;h3 id="bachet-c-g-bachet-1581-1638">Bachet (C. G. Bachet, 1581-1638)
&lt;/h3>&lt;p>Um nobre francês que pesquisava quebra-cabeças numéricos como hobby. Ele publicou uma tradução latina da &amp;ldquo;Aritmética&amp;rdquo; de Diofanto, incluindo suas próprias anotações de pesquisa.&lt;/p>
&lt;h3 id="wallis-j-wallis-1616-1703">Wallis (J. Wallis, 1616-1703)
&lt;/h3>&lt;p>Matemático inglês. Em sua principal obra &amp;ldquo;Aritmética dos Infinitos&amp;rdquo;, ele deu uma forma matemática ao conceito de limite e contribuiu para a fundação do cálculo.&lt;/p>
&lt;h3 id="brouncker-w-brouncker-1620-1684">Brouncker (W. Brouncker, 1620-1684)
&lt;/h3>&lt;p>Nobre irlandês. O primeiro presidente da Royal Society (Academia Britânica de Ciências). Um entusiasta da matemática que interagia com Wallis e outros.&lt;/p>
&lt;h3 id="lagrange-j-l-lagrange-1736-1813">Lagrange (J. L. Lagrange, 1736-1813)
&lt;/h3>&lt;p>Matemático francês nascido na Itália. Sucedeu Euler como diretor de matemática na Academia de Berlim. Teve grandes conquistas em teoria dos números, mecânica analítica, etc.&lt;/p>
&lt;h3 id="siegel-c-l-siegel-1896-1981">Siegel (C. L. Siegel, 1896-1981)
&lt;/h3>&lt;p>Teórico dos números alemão. Fez inúmeras contribuições à teoria analítica dos números.&lt;/p>
&lt;h3 id="fibonacci-l-fibonacci-cerca-de-1175-1250">Fibonacci (L. Fibonacci, cerca de 1175-1250)
&lt;/h3>&lt;p>Matemático italiano. Em sua obra &amp;ldquo;Livro do Ábaco&amp;rdquo;, ele usou os numerais indo-arábicos e trabalhou para popularizá-los. Também discutiu números congruentes em &amp;ldquo;O Livro dos Quadrados&amp;rdquo;.&lt;/p>
&lt;h3 id="baker-a-baker-1939-">Baker (A. Baker, 1939-)
&lt;/h3>&lt;p>Teórico dos números britânico. Por sua contribuição à teoria dos números transcendentes, recebeu a Medalha Fields junto com Heisuke Hironaka.&lt;/p>
&lt;h3 id="poincaré-j-poincaré-1854-1912">Poincaré (J. Poincaré, 1854-1912)
&lt;/h3>&lt;p>O matemático francês chamado de o último matemático universal. Deixou obras notáveis não apenas em funções automórficas, geometria não-euclidiana, equações diferenciais, mecânica celeste e eletrodinâmica, mas também em críticas científicas.&lt;/p>
&lt;h3 id="mordell-l-j-mordell-1888-1972">Mordell (L. J. Mordell, 1888-1972)
&lt;/h3>&lt;p>Matemático americano. Seus pais eram imigrantes da Lituânia. Tem muitos artigos sobre a teoria das equações diofantinas, mas o Teorema de Mordell sobre curvas elípticas é particularmente famoso. Weil estendeu isso para o caso de curvas algébricas gerais, e a geometria algébrica aritmética passou por um desenvolvimento explosivo a partir daí.&lt;/p>
&lt;h3 id="weil-a-weil-1906-">Weil (A. Weil, 1906-)
&lt;/h3>&lt;p>Matemático francês de origem judaica. Quando jovem, interessou-se pelo problema de Fermat e, com o objetivo de aplicá-lo à teoria dos números, revisou fundamentalmente a geometria algébrica e forneceu-lhe fundamentos rigorosos. Também é conhecido por seus escritos sobre a história da matemática.&lt;/p>
&lt;h3 id="mersenne-m-mersenne-1588-1648">Mersenne (M. Mersenne, 1588-1648)
&lt;/h3>&lt;p>Padre francês da ordem dos Mínimos. Ele mediou a correspondência entre matemáticos de várias regiões. O número que leva seu nome, o número de Mersenne, foi na verdade concebido por Fermat.&lt;/p>
&lt;h3 id="roberval-g-p-de-roberval-1602-1675">Roberval (G. P. de Roberval, 1602-1675)
&lt;/h3>&lt;p>Matemático francês. Na época, ele era quase a única pessoa que havia obtido o cargo de professor como matemático, e é conhecido por sua pesquisa sobre a cicloide.&lt;/p>
&lt;h3 id="abel-n-h-abel-1802-1829">Abel (N. H. Abel, 1802-1829)
&lt;/h3>&lt;p>Matemático norueguês. Obteve excelentes conquistas na insolubilidade de equações gerais do 5º grau, teoria das funções elípticas, teoria das integrais abelianas, mas morreu jovem.&lt;/p>
&lt;h3 id="jacobi-k-g-jacob-1804-1851">Jacobi (K. G. Jacob, 1804-1851)
&lt;/h3>&lt;p>Matemático alemão de origem judaica. Deixou grandes conquistas na teoria das funções elípticas, funções teta, equações diferenciais, cálculo das variações, etc. Apresentou o trabalho de Abel ao mundo. Conhecido também por rejeitar o pragmatismo, afirmando que o propósito da ciência é &amp;ldquo;a honra do espírito humano&amp;rdquo;.&lt;/p>
&lt;h3 id="gauss-c-f-gauss-1777-1855">Gauss (C. F. Gauss, 1777-1855)
&lt;/h3>&lt;p>O rei da matemática nascido na Alemanha. Conhecido por suas pesquisas em teoria dos números, geometria não euclidiana, geodésia, séries hipergeométricas, teoria das superfícies e magnetismo terrestre. Era um perfeccionista, e diz-se que não publicava seus resultados a menos que fossem de uma perfeição tão alta que nenhum andaime pudesse ser visto. Sua principal obra é &amp;ldquo;Disquisitiones Arithmeticae&amp;rdquo;.&lt;/p>
&lt;h3 id="lamé-g-lamé-1795-1870">Lamé (G. Lamé, 1795-1870)
&lt;/h3>&lt;p>Matemático francês. Contribuiu para a mecânica elástica, teoria da condução de calor e outras áreas.&lt;/p>
&lt;h3 id="liouville-j-liouville-1809-1882">Liouville (J. Liouville, 1809-1882)
&lt;/h3>&lt;p>Matemático francês. Contribuiu para equações diferenciais, teoria dos números transcendentes e análise complexa.&lt;/p>
&lt;h3 id="cauchy-a-l-cauchy-1789-1857">Cauchy (A. L. Cauchy, 1789-1857)
&lt;/h3>&lt;p>Matemático francês. Muito produtivo, com inúmeras conquistas em física teórica e matemática. Na França, diz-se que é tão respeitado quanto Gauss.&lt;/p>
&lt;h3 id="galois-e-galois-1811-1832">Galois (E. Galois, 1811-1832)
&lt;/h3>&lt;p>Matemático francês. Ele esclareceu o teorema de Abel de que equações de grau 5 ou superior geralmente não podem ser resolvidas algebricamente introduzindo o conceito de grupo. Ele morreu jovem em um duelo, mas agora se sabe que foi desencadeado por um problema trivial com uma mulher.&lt;/p>
&lt;h3 id="hensel-k-hensel-1861-1941">Hensel (K. Hensel, 1861-1941)
&lt;/h3>&lt;p>Matemático alemão. Aluno de Kronecker. Ele introduziu o sistema p-ádico (análise p-ádica) na teoria dos números, aplicando métodos da teoria das funções.&lt;/p>
&lt;h3 id="hasse-h-hesse-1898-1979">Hasse (H. Hesse, 1898-1979)
&lt;/h3>&lt;p>Matemático alemão. Aluno de Hensel, contribuiu para os fundamentos da análise p-ádica e suas aplicações. Consolidação da teoria dos corpos de classes, estudo das funções L de curvas elípticas, etc.&lt;/p>
&lt;h3 id="kronecker-l-kronecker-1823-1891">Kronecker (L. Kronecker, 1823-1891)
&lt;/h3>&lt;p>Matemático alemão de origem judaica. Contribuiu para a teoria das funções elípticas, teoria dos números, etc. Ele também é conhecido por defender a fundamentação aritmética da matemática, mas sua personalidade fortemente subjetiva deu-lhe uma imagem negativa durante a vida por suas críticas irracionais ao seu colega da Universidade de Berlim, Weierstrass, e por impedir o emprego de Cantor.&lt;/p>
&lt;h3 id="hilbert-d-hilbert-1862-1943">Hilbert (D. Hilbert, 1862-1943)
&lt;/h3>&lt;p>Matemático alemão. Deixou marcas gigantescas em todas as áreas da matemática, incluindo teoria dos invariantes, teoria algébrica dos números e fundamentos da matemática. Os 23 problemas que ele propôs no Congresso Internacional de Matemáticos em Paris (1900) tiveram grande influência no desenvolvimento da matemática.&lt;/p>
&lt;h3 id="riemann-b-riemann-1826-1866">Riemann (B. Riemann, 1826-1866)
&lt;/h3>&lt;p>Matemático alemão. Obteve grandes resultados que tocam as raízes da matemática, como o conceito de superfície de Riemann na teoria das funções complexas e a geometria de Riemann.&lt;/p>
&lt;h3 id="faltings-g-faltings-1954-">Faltings (G. Faltings, 1954-)
&lt;/h3>&lt;p>Matemático alemão. Ele resolveu a conjectura de Mordell em 1983.&lt;/p>
&lt;h3 id="wiles-a-wiles-1953-">Wiles (A. Wiles, 1953-)
&lt;/h3>&lt;p>Matemático nascido no Reino Unido. Fez grandes contribuições em pesquisas como a conjectura principal de Iwasawa e a conjectura de Birch e Swinnerton-Dyer, sendo o líder nesta área.&lt;/p>
&lt;h3 id="referências">Referências
&lt;/h3>&lt;p>O Último Teorema de Fermat foi resolvido! Da prova de Euler à de Wiles. Kodansha.&lt;/p></description></item><item><title>Enumeração de Títulos de Janelas</title><link>http://kenji.blog/pt/p/enumera%C3%A7%C3%A3o-de-t%C3%ADtulos-de-janelas/</link><pubDate>Tue, 20 Sep 2022 17:03:15 +0900</pubDate><guid>http://kenji.blog/pt/p/enumera%C3%A7%C3%A3o-de-t%C3%ADtulos-de-janelas/</guid><description>&lt;img src="http://kenji.blog/p/%E3%82%A6%E3%82%A3%E3%83%B3%E3%83%89%E3%82%A6%E3%82%BF%E3%82%A4%E3%83%88%E3%83%AB%E3%81%AE%E5%88%97%E6%8C%99/img.png" alt="Featured image of post Enumeração de Títulos de Janelas" />&lt;h1 id="enumeração-de-títulos-de-janelas">Enumeração de Títulos de Janelas
&lt;/h1>&lt;p>Aqui está como enumerar os títulos das janelas abertas atualmente usando o PowerShell.&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-powershell" data-lang="powershell">&lt;span class="line">&lt;span class="cl">&lt;span class="nb">Get-Process&lt;/span>&lt;span class="p">|&lt;/span>&lt;span class="n">where&lt;/span>&lt;span class="p">{&lt;/span>&lt;span class="nv">$_&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">mainWindowTItle&lt;/span>&lt;span class="p">}|&lt;/span>&lt;span class="nb">Select-Object&lt;/span> &lt;span class="n">MainWindowTitle&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>Exemplo de saída&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;span class="lnt">4
&lt;/span>&lt;span class="lnt">5
&lt;/span>&lt;span class="lnt">6
&lt;/span>&lt;span class="lnt">7
&lt;/span>&lt;span class="lnt">8
&lt;/span>&lt;span class="lnt">9
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">MainWindowTitle
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">---------------
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">Windows PowerShell
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">Internet Explorer
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">Sem título - Paint
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">Sem título - Bloco de Notas
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">Gerenciador de Tarefas
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">Experiência de Entrada do Windows
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">Documento - WordPad
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div></description></item><item><title>Exclusão Rápida em Lote de Pastas Grandes</title><link>http://kenji.blog/pt/p/%E5%A4%A7%E3%81%8D%E3%81%AA%E3%83%95%E3%82%A9%E3%83%AB%E3%83%80%E3%83%BC%E3%82%92%E9%AB%98%E9%80%9F%E4%B8%80%E6%8B%AC%E5%89%8A%E9%99%A4/</link><pubDate>Tue, 20 Sep 2022 16:04:02 +0900</pubDate><guid>http://kenji.blog/pt/p/%E5%A4%A7%E3%81%8D%E3%81%AA%E3%83%95%E3%82%A9%E3%83%AB%E3%83%80%E3%83%BC%E3%82%92%E9%AB%98%E9%80%9F%E4%B8%80%E6%8B%AC%E5%89%8A%E9%99%A4/</guid><description>&lt;img src="http://kenji.blog/p/%E5%A4%A7%E3%81%8D%E3%81%AA%E3%83%95%E3%82%A9%E3%83%AB%E3%83%80%E3%83%BC%E3%82%92%E9%AB%98%E9%80%9F%E4%B8%80%E6%8B%AC%E5%89%8A%E9%99%A4/img.png" alt="Featured image of post Exclusão Rápida em Lote de Pastas Grandes" />&lt;h2 id="exclusão-rápida-em-lote-de-pastas-grandes">Exclusão Rápida em Lote de Pastas Grandes
&lt;/h2>&lt;p>Ao excluir pastas grandes com o Explorer, a velocidade é lenta porque o conteúdo da pasta é verificado primeiro antes da execução da exclusão.
Ao excluir com comandos como abaixo, a verificação e a exclusão são executadas ao mesmo tempo, permitindo a exclusão rápida de pastas grandes.&lt;/p>
&lt;ol>
&lt;li>No Prompt de Comando, navegue até a hierarquia da pasta de destino.&lt;/li>
&lt;li>Execute &lt;code>DEL /F /Q /S NomeDaPasta &amp;gt; NUL&lt;/code>.&lt;/li>
&lt;li>Execute &lt;code>RMDIR /Q /S NomeDaPasta&lt;/code>.&lt;/li>
&lt;/ol></description></item><item><title>Comando para Excluir Todo o Chatter do Salesforce</title><link>http://kenji.blog/pt/p/salesforce%E3%83%81%E3%83%A3%E3%83%83%E3%82%BF%E3%83%BC%E5%85%A8%E6%B6%88%E3%81%97%E3%82%B3%E3%83%9E%E3%83%B3%E3%83%89/</link><pubDate>Mon, 19 Sep 2022 21:59:14 +0900</pubDate><guid>http://kenji.blog/pt/p/salesforce%E3%83%81%E3%83%A3%E3%83%83%E3%82%BF%E3%83%BC%E5%85%A8%E6%B6%88%E3%81%97%E3%82%B3%E3%83%9E%E3%83%B3%E3%83%89/</guid><description>&lt;img src="http://kenji.blog/p/salesforce%E3%83%81%E3%83%A3%E3%83%83%E3%82%BF%E3%83%BC%E5%85%A8%E6%B6%88%E3%81%97%E3%82%B3%E3%83%9E%E3%83%B3%E3%83%89/img_1.png" alt="Featured image of post Comando para Excluir Todo o Chatter do Salesforce" />&lt;h1 id="comando-para-excluir-todo-o-chatter-do-salesforce">Comando para Excluir Todo o Chatter do Salesforce
&lt;/h1>&lt;p>Este é um comando para excluir todas as postagens e anexos no Salesforce Chatter.
Abra o Developer Console, selecione &amp;ldquo;Open Execute Anonymous Window&amp;rdquo; no menu Debug, cole o seguinte código e execute-o.
Pessoalmente, uso isso quando a capacidade de armazenamento da organização está acabando.&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;span class="lnt">4
&lt;/span>&lt;span class="lnt">5
&lt;/span>&lt;span class="lnt">6
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">delete [select id from FeedItem];
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">delete [select id from FeedAttachment];
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">delete [select id from ContentDocument];
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">// Esvaziar a lixeira
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">database.emptyRecycleBin([select id from ContentDocument where IsDeleted = true ALL ROWS]);
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div></description></item><item><title>Atalhos e Dicas do Windows</title><link>http://kenji.blog/pt/p/windows-%E3%81%AE%E3%82%B7%E3%83%A7%E3%83%BC%E3%83%88%E3%82%AB%E3%83%83%E3%83%88%E5%B0%8F%E6%8A%80%E9%9B%86/</link><pubDate>Sun, 18 Sep 2022 23:49:29 +0900</pubDate><guid>http://kenji.blog/pt/p/windows-%E3%81%AE%E3%82%B7%E3%83%A7%E3%83%BC%E3%83%88%E3%82%AB%E3%83%83%E3%83%88%E5%B0%8F%E6%8A%80%E9%9B%86/</guid><description>&lt;img src="http://kenji.blog/p/windows-%E3%81%AE%E3%82%B7%E3%83%A7%E3%83%BC%E3%83%88%E3%82%AB%E3%83%83%E3%83%88%E5%B0%8F%E6%8A%80%E9%9B%86/img.png" alt="Featured image of post Atalhos e Dicas do Windows" />&lt;p>Esta é uma coleção de pequenas dicas e atalhos úteis para o uso diário do Windows. Espero que seja útil para iniciantes.
Embora seja focado no Windows 11, a maioria também deve funcionar no Windows 10.&lt;/p>
&lt;h2 id="fechar-janela">Fechar janela
&lt;/h2>&lt;ul>
&lt;li>&lt;code>Alt + F4&lt;/code> com a janela ativa&lt;/li>
&lt;li>&lt;code>Ctrl + W&lt;/code> com a janela ativa. Fecha a aba ou janela (apenas em aplicativos suportados)&lt;/li>
&lt;li>Dê um duplo clique no ícone à esquerda da barra de título da janela&lt;/li>
&lt;li>Clique no &lt;code>×&lt;/code> na barra de título da janela&lt;/li>
&lt;/ul>
&lt;h2 id="mostrar-a-área-de-trabalho">Mostrar a área de trabalho
&lt;/h2>&lt;ul>
&lt;li>&lt;code>Win + D&lt;/code>. Pressione duas vezes para restaurar o estado original da janela. Muito útil quando você quer mostrar a área de trabalho por um instante.&lt;/li>
&lt;li>&lt;code>Win + M&lt;/code>. Minimiza todos os aplicativos. Pressionar duas vezes não restaura.&lt;/li>
&lt;/ul>
&lt;h2 id="digitação-por-voz">Digitação por voz
&lt;/h2>&lt;ul>
&lt;li>&lt;code>Win + H&lt;/code>. Inicia a digitação por voz. Para sair, pressione &lt;code>Esc&lt;/code> ou &lt;code>Win + H&lt;/code> novamente.&lt;/li>
&lt;/ul>
&lt;h2 id="mostrar-o-menu-de-contexto-clássico-no-explorer">Mostrar o menu de contexto clássico no Explorer
&lt;/h2>&lt;ul>
&lt;li>Pressione &lt;code>Shift + F10&lt;/code> ou a tecla de aplicativo. A tecla de aplicativo é a que fica no canto inferior direito do teclado.&lt;/li>
&lt;/ul>
&lt;h2 id="capturar-uma-área-da-tela">Capturar uma área da tela
&lt;/h2>&lt;ul>
&lt;li>Você pode capturar uma área selecionada com &lt;code>Win + Shift + S&lt;/code>.&lt;/li>
&lt;li>Você pode capturar a tela inteira com &lt;code>Win + Print Screen&lt;/code> ou apenas &lt;code>Print Screen&lt;/code>.
(Se você adicionar o &lt;code>Win&lt;/code>, a imagem capturada será salva em &lt;code>C:\Users\NomeDoUsuario\Pictures\Screenshots&lt;/code>.)&lt;/li>
&lt;li>Você pode capturar a janela atual com &lt;code>Alt + Print Screen&lt;/code>.&lt;/li>
&lt;/ul>
&lt;h2 id="iniciar-aplicativos-fixados-na-barra-de-tarefas">Iniciar aplicativos fixados na barra de tarefas
&lt;/h2>&lt;ul>
&lt;li>Você pode iniciar os aplicativos fixados na barra de tarefas com &lt;code>Win + Tecla numérica&lt;/code>.
Por exemplo, pressionar &lt;code>Win + 1&lt;/code> iniciará o primeiro aplicativo da esquerda na barra de tarefas.&lt;/li>
&lt;li>&lt;code>Win + T&lt;/code> move o foco para os ícones da barra de tarefas. Pressionar &lt;code>Win + T&lt;/code> várias vezes, ou usar &lt;code>←&lt;/code> ou &lt;code>→&lt;/code>, moverá a seleção, e pressionar &lt;code>Enter&lt;/code> iniciará o aplicativo selecionado.&lt;/li>
&lt;/ul>
&lt;h2 id="ampliarreduzir">Ampliar/Reduzir
&lt;/h2>&lt;ul>
&lt;li>&lt;code>Win + +&lt;/code> inicia a Lupa do Windows. Você pode ampliar/reduzir a tela usando &lt;code>Win + + ou -&lt;/code>.&lt;/li>
&lt;li>Você pode ampliar/reduzir no Bloco de Notas ou navegadores com &lt;code>Ctrl + + ou -&lt;/code> (apenas em aplicativos suportados).&lt;/li>
&lt;/ul>
&lt;h2 id="bloquear-o-windows">Bloquear o Windows
&lt;/h2>&lt;ul>
&lt;li>&lt;code>Win + L&lt;/code>&lt;/li>
&lt;li>&lt;code>Ctrl + Alt + Del&lt;/code> → &lt;code>Espaço&lt;/code> ou &lt;code>Enter&lt;/code>&lt;/li>
&lt;/ul>
&lt;h2 id="desligar-o-windows">Desligar o Windows
&lt;/h2>&lt;ul>
&lt;li>Com a área de trabalho visível (usando &lt;code>Win + M&lt;/code> ou &lt;code>Win + D&lt;/code>) ou a barra de tarefas ativa (&lt;code>Win + T&lt;/code> ou &lt;code>Win + B&lt;/code>), pressione &lt;code>Alt + F4&lt;/code>. Uma caixa de diálogo como a mostrada abaixo aparecerá; certifique-se de que &amp;ldquo;Desligar&amp;rdquo; esteja selecionado e pressione &lt;code>Enter&lt;/code>.
Também pode ser feito com &lt;code>Win + R&lt;/code> → &lt;code>Alt + F4&lt;/code> → &lt;code>Alt + F4&lt;/code>.
&lt;img src="http://kenji.blog/p/windows-%E3%81%AE%E3%82%B7%E3%83%A7%E3%83%BC%E3%83%88%E3%82%AB%E3%83%83%E3%83%88%E5%B0%8F%E6%8A%80%E9%9B%86/img_20.png"
width="482"
height="278"
srcset="http://kenji.blog/p/windows-%E3%81%AE%E3%82%B7%E3%83%A7%E3%83%BC%E3%83%88%E3%82%AB%E3%83%83%E3%83%88%E5%B0%8F%E6%8A%80%E9%9B%86/img_20_hu3f12d2ce7faedc7d3b710fa8f12c5de2_12927_480x0_resize_box_3.png 480w, http://kenji.blog/p/windows-%E3%81%AE%E3%82%B7%E3%83%A7%E3%83%BC%E3%83%88%E3%82%AB%E3%83%83%E3%83%88%E5%B0%8F%E6%8A%80%E9%9B%86/img_20_hu3f12d2ce7faedc7d3b710fa8f12c5de2_12927_1024x0_resize_box_3.png 1024w"
loading="lazy"
alt="img_20.png"
class="gallery-image"
data-flex-grow="173"
data-flex-basis="416px"
>&lt;/li>
&lt;li>Você pode desligar usando &lt;code>Win + X&lt;/code> → &lt;code>U&lt;/code> → &lt;code>U&lt;/code>.&lt;/li>
&lt;li>No Prompt de Comando ou em &amp;ldquo;Executar&amp;rdquo; (&lt;code>Win + R&lt;/code>), digite &lt;code>shutdown /s /t 0&lt;/code> para desligar. Adicionar &lt;code>/f&lt;/code> forçará o desligamento.&lt;/li>
&lt;/ul>
&lt;h2 id="reiniciar-o-windows">Reiniciar o Windows
&lt;/h2>&lt;ul>
&lt;li>Com a área de trabalho visível (usando &lt;code>Win + M&lt;/code> ou &lt;code>Win + D&lt;/code>) ou a barra de tarefas ativa (&lt;code>Win + T&lt;/code> ou &lt;code>Win + B&lt;/code>), pressione &lt;code>Alt + F4&lt;/code>. Uma caixa de diálogo aparecerá; pressione &lt;code>↓&lt;/code> uma vez para selecionar &amp;ldquo;Reiniciar&amp;rdquo; e pressione &lt;code>Enter&lt;/code>.
　Também pode ser feito com &lt;code>Win + R&lt;/code> → &lt;code>Alt + F4&lt;/code> → &lt;code>Alt + F4&lt;/code>.
&lt;img src="http://kenji.blog/p/windows-%E3%81%AE%E3%82%B7%E3%83%A7%E3%83%BC%E3%83%88%E3%82%AB%E3%83%83%E3%83%88%E5%B0%8F%E6%8A%80%E9%9B%86/img_21.png"
width="482"
height="278"
srcset="http://kenji.blog/p/windows-%E3%81%AE%E3%82%B7%E3%83%A7%E3%83%BC%E3%83%88%E3%82%AB%E3%83%83%E3%83%88%E5%B0%8F%E6%8A%80%E9%9B%86/img_21_hu7c3e02e460e465bf24597063ff70f70a_13423_480x0_resize_box_3.png 480w, http://kenji.blog/p/windows-%E3%81%AE%E3%82%B7%E3%83%A7%E3%83%BC%E3%83%88%E3%82%AB%E3%83%83%E3%83%88%E5%B0%8F%E6%8A%80%E9%9B%86/img_21_hu7c3e02e460e465bf24597063ff70f70a_13423_1024x0_resize_box_3.png 1024w"
loading="lazy"
alt="img_21.png"
class="gallery-image"
data-flex-grow="173"
data-flex-basis="416px"
>&lt;/li>
&lt;li>Você pode reiniciar usando &lt;code>Win + X&lt;/code> → &lt;code>U&lt;/code> → &lt;code>R&lt;/code>.&lt;/li>
&lt;li>Você pode reiniciar com &lt;code>shutdown /r /t 0&lt;/code>. Adicionar &lt;code>/f&lt;/code> forçará a reinicialização.&lt;/li>
&lt;/ul>
&lt;h2 id="suspender-dormir-o-windows">Suspender (Dormir) o Windows
&lt;/h2>&lt;ul>
&lt;li>Com a área de trabalho visível (usando &lt;code>Win + M&lt;/code> ou &lt;code>Win + D&lt;/code>) ou a barra de tarefas ativa (&lt;code>Win + T&lt;/code> ou &lt;code>Win + B&lt;/code>), pressione &lt;code>Alt + F4&lt;/code>. Uma caixa de diálogo aparecerá; pressione &lt;code>↑&lt;/code> uma vez para selecionar &amp;ldquo;Suspender&amp;rdquo; e pressione &lt;code>Enter&lt;/code>.
Também pode ser feito com &lt;code>Win + R&lt;/code> → &lt;code>Alt + F4&lt;/code> → &lt;code>Alt + F4&lt;/code>.
&lt;img src="http://kenji.blog/p/windows-%E3%81%AE%E3%82%B7%E3%83%A7%E3%83%BC%E3%83%88%E3%82%AB%E3%83%83%E3%83%88%E5%B0%8F%E6%8A%80%E9%9B%86/img_23.png"
width="482"
height="278"
srcset="http://kenji.blog/p/windows-%E3%81%AE%E3%82%B7%E3%83%A7%E3%83%BC%E3%83%88%E3%82%AB%E3%83%83%E3%83%88%E5%B0%8F%E6%8A%80%E9%9B%86/img_23_hub63f427cb79a50e4f112143a1cf4a9d1_14945_480x0_resize_box_3.png 480w, http://kenji.blog/p/windows-%E3%81%AE%E3%82%B7%E3%83%A7%E3%83%BC%E3%83%88%E3%82%AB%E3%83%83%E3%83%88%E5%B0%8F%E6%8A%80%E9%9B%86/img_23_hub63f427cb79a50e4f112143a1cf4a9d1_14945_1024x0_resize_box_3.png 1024w"
loading="lazy"
alt="img_23.png"
class="gallery-image"
data-flex-grow="173"
data-flex-basis="416px"
>&lt;/li>
&lt;li>Em &lt;code>Win + R&lt;/code> ou no Prompt de Comando, digite &lt;code>rundll32.exe powrprof.dll,SetSuspendState&lt;/code> para hibernar.&lt;/li>
&lt;/ul>
&lt;h2 id="sair-do-windows-logoff">Sair do Windows (Logoff)
&lt;/h2>&lt;ul>
&lt;li>Com a área de trabalho visível (usando &lt;code>Win + M&lt;/code> ou &lt;code>Win + D&lt;/code>) ou a barra de tarefas ativa (&lt;code>Win + T&lt;/code> ou &lt;code>Win + B&lt;/code>), pressione &lt;code>Alt + F4&lt;/code>. Uma caixa de diálogo aparecerá; pressione &lt;code>↑&lt;/code> duas vezes para selecionar &amp;ldquo;Sair&amp;rdquo; e pressione &lt;code>Enter&lt;/code>.
Também pode ser feito com &lt;code>Win + R&lt;/code> → &lt;code>Alt + F4&lt;/code> → &lt;code>Alt + F4&lt;/code>.
&lt;img src="http://kenji.blog/p/windows-%E3%81%AE%E3%82%B7%E3%83%A7%E3%83%BC%E3%83%88%E3%82%AB%E3%83%83%E3%83%88%E5%B0%8F%E6%8A%80%E9%9B%86/img_22.png"
width="482"
height="278"
srcset="http://kenji.blog/p/windows-%E3%81%AE%E3%82%B7%E3%83%A7%E3%83%BC%E3%83%88%E3%82%AB%E3%83%83%E3%83%88%E5%B0%8F%E6%8A%80%E9%9B%86/img_22_hu6a4b716975acad63f398b15e49c71e3e_12765_480x0_resize_box_3.png 480w, http://kenji.blog/p/windows-%E3%81%AE%E3%82%B7%E3%83%A7%E3%83%BC%E3%83%88%E3%82%AB%E3%83%83%E3%83%88%E5%B0%8F%E6%8A%80%E9%9B%86/img_22_hu6a4b716975acad63f398b15e49c71e3e_12765_1024x0_resize_box_3.png 1024w"
loading="lazy"
alt="img_22.png"
class="gallery-image"
data-flex-grow="173"
data-flex-basis="416px"
>&lt;/li>
&lt;li>&lt;code>Win + X&lt;/code> → &lt;code>U&lt;/code> → &lt;code>I&lt;/code>&lt;/li>
&lt;li>&lt;code>Ctrl + Alt + Del&lt;/code> → 2 vezes &lt;code>Tab&lt;/code> ou 2 vezes &lt;code>↓&lt;/code> → &lt;code>Enter&lt;/code> ou &lt;code>Espaço&lt;/code>&lt;/li>
&lt;li>Você pode sair (fazer logoff) digitando &lt;code>logoff&lt;/code>.&lt;/li>
&lt;/ul>
&lt;h2 id="mover-janelas-com-o-teclado">Mover janelas com o teclado
&lt;/h2>&lt;ul>
&lt;li>&lt;code>Win + ←&lt;/code>: Mover para a esquerda&lt;/li>
&lt;li>&lt;code>Win + →&lt;/code>: Mover para a direita&lt;/li>
&lt;li>&lt;code>Win + ↑&lt;/code>: Mover para cima/Maximizar&lt;/li>
&lt;li>&lt;code>Win + ↓&lt;/code>: Mover para baixo/Minimizar&lt;/li>
&lt;li>&lt;code>Win + Shift + ← ou →&lt;/code>: Mover entre múltiplos monitores&lt;/li>
&lt;li>&lt;code>Win + Alt + ← ou → ou ↑ ou ↓&lt;/code>: Mover a janela sem maximizar ou minimizar&lt;/li>
&lt;li>Com a janela não minimizada, pressione &lt;code>Alt + Espaço&lt;/code> seguido de &lt;code>M&lt;/code>, e então use as teclas de seta para mover.&lt;br>
※ Como a janela segue o cursor do mouse, você pode resgatá-la mesmo se ela estiver fora da tela visível.&lt;/li>
&lt;/ul>
&lt;h2 id="encerrar-processos-com-o-gerenciador-de-tarefas">Encerrar processos com o Gerenciador de Tarefas
&lt;/h2>&lt;p>&lt;img src="http://kenji.blog/p/windows-%E3%81%AE%E3%82%B7%E3%83%A7%E3%83%BC%E3%83%88%E3%82%AB%E3%83%83%E3%83%88%E5%B0%8F%E6%8A%80%E9%9B%86/img_24.png"
width="256"
height="192"
srcset="http://kenji.blog/p/windows-%E3%81%AE%E3%82%B7%E3%83%A7%E3%83%BC%E3%83%88%E3%82%AB%E3%83%83%E3%83%88%E5%B0%8F%E6%8A%80%E9%9B%86/img_24_hud914f1b692d77f8e130a72e443261168_30639_480x0_resize_box_3.png 480w, http://kenji.blog/p/windows-%E3%81%AE%E3%82%B7%E3%83%A7%E3%83%BC%E3%83%88%E3%82%AB%E3%83%83%E3%83%88%E5%B0%8F%E6%8A%80%E9%9B%86/img_24_hud914f1b692d77f8e130a72e443261168_30639_1024x0_resize_box_3.png 1024w"
loading="lazy"
alt="img_24.png"
class="gallery-image"
data-flex-grow="133"
data-flex-basis="320px"
>&lt;/p>
&lt;ol>
&lt;li>Você pode abrir o Gerenciador de Tarefas com &lt;code>Ctrl + Shift + Esc&lt;/code>.&lt;/li>
&lt;li>Alterne entre as abas usando &lt;code>Ctrl + Tab&lt;/code>.&lt;/li>
&lt;li>Na aba &lt;code>Detalhes&lt;/code>, após pressionar &lt;code>Tab&lt;/code>, você pode buscar o processo digitando letras iniciais no teclado.&lt;/li>
&lt;li>Com o nome do processo selecionado, pressione a tecla &lt;code>Delete&lt;/code> seguida de &lt;code>Enter&lt;/code> para encerrá-lo.&lt;/li>
&lt;/ol>
&lt;h2 id="encerrar-processos-por-nome-via-comando">Encerrar processos por nome via comando
&lt;/h2>&lt;ul>
&lt;li>Você pode encerrar um processo usando &lt;code>taskkill /f /im NomeDoProcesso&lt;/code>.
Por exemplo, &lt;code>taskkill /f /im explorer.exe&lt;/code> encerrará o Explorer.&lt;/li>
&lt;/ul>
&lt;h2 id="iniciar-várias-instâncias-do-mesmo-programa-a-partir-da-barra-de-tarefas">Iniciar várias instâncias do mesmo programa a partir da barra de tarefas
&lt;/h2>&lt;ul>
&lt;li>Segure &lt;code>Shift&lt;/code> e clique com o botão esquerdo do mouse em um ícone na barra de tarefas para abrir outra instância do mesmo programa (apenas para aplicativos que suportam múltiplas instâncias).&lt;/li>
&lt;/ul>
&lt;h2 id="executar-programas-como-administrador">Executar programas como Administrador
&lt;/h2>&lt;ul>
&lt;li>Segure &lt;code>Ctrl + Shift&lt;/code> ao clicar em um programa para executá-lo com privilégios de Administrador.&lt;/li>
&lt;/ul>
&lt;h2 id="abrir-o-explorador-de-arquivos-explorer">Abrir o Explorador de Arquivos (Explorer)
&lt;/h2>&lt;ul>
&lt;li>Pressione &lt;code>Win + E&lt;/code> para abrir o Explorador de Arquivos.&lt;/li>
&lt;li>Pressione &lt;code>Win + R&lt;/code> para abrir &amp;ldquo;Executar&amp;rdquo;, digite &lt;code>explorer&lt;/code> e pressione &lt;code>Enter&lt;/code>.&lt;/li>
&lt;li>Pressione &lt;code>Ctrl + Shift + N&lt;/code> para criar uma nova pasta.&lt;/li>
&lt;/ul>
&lt;h2 id="abrir-o-prompt-de-comando-no-local-atual-no-explorer">Abrir o Prompt de Comando no local atual no Explorer
&lt;/h2>&lt;ul>
&lt;li>No Windows 11, você pode abrir o Prompt de Comando selecionando &amp;ldquo;Abrir no Terminal&amp;rdquo; no menu do botão direito.&lt;/li>
&lt;li>Alternativamente, digite &lt;code>cmd&lt;/code> na barra de endereços do Explorer e pressione &lt;code>Enter&lt;/code> para abrir o Prompt de Comando.&lt;/li>
&lt;/ul>
&lt;h2 id="mostrar-histórico-da-área-de-clipboard-área-de-transferência">Mostrar histórico da área de clipboard (área de transferência)
&lt;/h2>&lt;ul>
&lt;li>&lt;code>Win + V&lt;/code> mostra o histórico da área de transferência.
Você pode selecionar textos ou imagens copiados anteriormente para copiá-los novamente.&lt;/li>
&lt;/ul>
&lt;h2 id="executar-arquivo">Executar (Arquivo)
&lt;/h2>&lt;p>&lt;img src="http://kenji.blog/p/windows-%E3%81%AE%E3%82%B7%E3%83%A7%E3%83%BC%E3%83%88%E3%82%AB%E3%83%83%E3%83%88%E5%B0%8F%E6%8A%80%E9%9B%86/img_28.png"
width="399"
height="206"
srcset="http://kenji.blog/p/windows-%E3%81%AE%E3%82%B7%E3%83%A7%E3%83%BC%E3%83%88%E3%82%AB%E3%83%83%E3%83%88%E5%B0%8F%E6%8A%80%E9%9B%86/img_28_hu5bd9c2c0efc8db87c1a7be24174584ba_8257_480x0_resize_box_3.png 480w, http://kenji.blog/p/windows-%E3%81%AE%E3%82%B7%E3%83%A7%E3%83%BC%E3%83%88%E3%82%AB%E3%83%83%E3%83%88%E5%B0%8F%E6%8A%80%E9%9B%86/img_28_hu5bd9c2c0efc8db87c1a7be24174584ba_8257_1024x0_resize_box_3.png 1024w"
loading="lazy"
alt="img_28.png"
class="gallery-image"
data-flex-grow="193"
data-flex-basis="464px"
>&lt;/p>
&lt;ul>
&lt;li>&lt;code>Win + R&lt;/code> abre a caixa de diálogo &amp;ldquo;Executar&amp;rdquo;.&lt;/li>
&lt;/ul>
&lt;p>Abaixo estão alguns comandos que podem ser usados em &amp;ldquo;Executar&amp;rdquo; ou no Prompt de Comando.&lt;/p>
&lt;h2 id="abrir-o-edge">Abrir o Edge
&lt;/h2>&lt;p>&lt;img src="http://kenji.blog/p/windows-%E3%81%AE%E3%82%B7%E3%83%A7%E3%83%BC%E3%83%88%E3%82%AB%E3%83%83%E3%83%88%E5%B0%8F%E6%8A%80%E9%9B%86/img_18.png"
width="256"
height="256"
srcset="http://kenji.blog/p/windows-%E3%81%AE%E3%82%B7%E3%83%A7%E3%83%BC%E3%83%88%E3%82%AB%E3%83%83%E3%83%88%E5%B0%8F%E6%8A%80%E9%9B%86/img_18_hu2d7f1fd1a05d0eb8d4cb2a622c92fc65_40033_480x0_resize_box_3.png 480w, http://kenji.blog/p/windows-%E3%81%AE%E3%82%B7%E3%83%A7%E3%83%BC%E3%83%88%E3%82%AB%E3%83%83%E3%83%88%E5%B0%8F%E6%8A%80%E9%9B%86/img_18_hu2d7f1fd1a05d0eb8d4cb2a622c92fc65_40033_1024x0_resize_box_3.png 1024w"
loading="lazy"
alt="img_18.png"
class="gallery-image"
data-flex-grow="100"
data-flex-basis="240px"
>&lt;/p>
&lt;ul>
&lt;li>Digite &lt;code>msedge&lt;/code> e pressione &lt;code>Enter&lt;/code>&lt;/li>
&lt;/ul>
&lt;h2 id="abrir-o-internet-explorer-11-ie11">Abrir o Internet Explorer 11 (IE11)
&lt;/h2>&lt;p>&lt;img src="http://kenji.blog/p/windows-%E3%81%AE%E3%82%B7%E3%83%A7%E3%83%BC%E3%83%88%E3%82%AB%E3%83%83%E3%83%88%E5%B0%8F%E6%8A%80%E9%9B%86/img_25.png"
width="244"
height="228"
srcset="http://kenji.blog/p/windows-%E3%81%AE%E3%82%B7%E3%83%A7%E3%83%BC%E3%83%88%E3%82%AB%E3%83%83%E3%83%88%E5%B0%8F%E6%8A%80%E9%9B%86/img_25_hub8b3dcd80a8b22b84e862a37d10a8d82_67766_480x0_resize_box_3.png 480w, http://kenji.blog/p/windows-%E3%81%AE%E3%82%B7%E3%83%A7%E3%83%BC%E3%83%88%E3%82%AB%E3%83%83%E3%83%88%E5%B0%8F%E6%8A%80%E9%9B%86/img_25_hub8b3dcd80a8b22b84e862a37d10a8d82_67766_1024x0_resize_box_3.png 1024w"
loading="lazy"
alt="img_25.png"
class="gallery-image"
data-flex-grow="107"
data-flex-basis="256px"
>&lt;/p>
&lt;ul>
&lt;li>Digite &lt;code>powershell.exe -Command &amp;quot;(New-Object -ComObject InternetExplorer.Application).Visible = $true&amp;quot;&lt;/code> e pressione &lt;code>Enter&lt;/code>&lt;/li>
&lt;/ul>
&lt;h2 id="abrir-o-terminal">Abrir o Terminal
&lt;/h2>&lt;p>&lt;img src="http://kenji.blog/p/windows-%E3%81%AE%E3%82%B7%E3%83%A7%E3%83%BC%E3%83%88%E3%82%AB%E3%83%83%E3%83%88%E5%B0%8F%E6%8A%80%E9%9B%86/img_19.png"
width="256"
height="192"
srcset="http://kenji.blog/p/windows-%E3%81%AE%E3%82%B7%E3%83%A7%E3%83%BC%E3%83%88%E3%82%AB%E3%83%83%E3%83%88%E5%B0%8F%E6%8A%80%E9%9B%86/img_19_huba670cecd7c1e41d044624c4278dce95_12032_480x0_resize_box_3.png 480w, http://kenji.blog/p/windows-%E3%81%AE%E3%82%B7%E3%83%A7%E3%83%BC%E3%83%88%E3%82%AB%E3%83%83%E3%83%88%E5%B0%8F%E6%8A%80%E9%9B%86/img_19_huba670cecd7c1e41d044624c4278dce95_12032_1024x0_resize_box_3.png 1024w"
loading="lazy"
alt="img_19.png"
class="gallery-image"
data-flex-grow="133"
data-flex-basis="320px"
>&lt;/p>
&lt;ul>
&lt;li>Digite &lt;code>wt&lt;/code> e pressione &lt;code>Enter&lt;/code>&lt;/li>
&lt;/ul>
&lt;h2 id="abrir-o-painel-de-controle">Abrir o Painel de Controle
&lt;/h2>&lt;p>&lt;img src="http://kenji.blog/p/windows-%E3%81%AE%E3%82%B7%E3%83%A7%E3%83%BC%E3%83%88%E3%82%AB%E3%83%83%E3%83%88%E5%B0%8F%E6%8A%80%E9%9B%86/img_15.png"
width="256"
height="192"
srcset="http://kenji.blog/p/windows-%E3%81%AE%E3%82%B7%E3%83%A7%E3%83%BC%E3%83%88%E3%82%AB%E3%83%83%E3%83%88%E5%B0%8F%E6%8A%80%E9%9B%86/img_15_hua164d31c327d40ccd81ec7cd0798a08c_37353_480x0_resize_box_3.png 480w, http://kenji.blog/p/windows-%E3%81%AE%E3%82%B7%E3%83%A7%E3%83%BC%E3%83%88%E3%82%AB%E3%83%83%E3%83%88%E5%B0%8F%E6%8A%80%E9%9B%86/img_15_hua164d31c327d40ccd81ec7cd0798a08c_37353_1024x0_resize_box_3.png 1024w"
loading="lazy"
alt="img_15.png"
class="gallery-image"
data-flex-grow="133"
data-flex-basis="320px"
>&lt;/p>
&lt;ul>
&lt;li>Digite &lt;code>control&lt;/code> e pressione &lt;code>Enter&lt;/code>&lt;/li>
&lt;li>Também pode ser aberto com &lt;code>explorer.exe shell:::{26EE0668-A00A-44D7-9371-BEB064C98683}&lt;/code>.&lt;/li>
&lt;/ul>
&lt;h2 id="iniciar-o-bloco-de-notas">Iniciar o Bloco de Notas
&lt;/h2>&lt;p>&lt;img src="http://kenji.blog/p/windows-%E3%81%AE%E3%82%B7%E3%83%A7%E3%83%BC%E3%83%88%E3%82%AB%E3%83%83%E3%83%88%E5%B0%8F%E6%8A%80%E9%9B%86/img_4.png"
width="192"
height="256"
srcset="http://kenji.blog/p/windows-%E3%81%AE%E3%82%B7%E3%83%A7%E3%83%BC%E3%83%88%E3%82%AB%E3%83%83%E3%83%88%E5%B0%8F%E6%8A%80%E9%9B%86/img_4_hu8fd04f5788375cf1e91ec94379e2e218_17267_480x0_resize_box_3.png 480w, http://kenji.blog/p/windows-%E3%81%AE%E3%82%B7%E3%83%A7%E3%83%BC%E3%83%88%E3%82%AB%E3%83%83%E3%83%88%E5%B0%8F%E6%8A%80%E9%9B%86/img_4_hu8fd04f5788375cf1e91ec94379e2e218_17267_1024x0_resize_box_3.png 1024w"
loading="lazy"
alt="img_4.png"
class="gallery-image"
data-flex-grow="75"
data-flex-basis="180px"
>&lt;/p>
&lt;ul>
&lt;li>Digite &lt;code>notepad&lt;/code> e pressione &lt;code>Enter&lt;/code>&lt;/li>
&lt;/ul>
&lt;h2 id="iniciar-a-calculadora">Iniciar a Calculadora
&lt;/h2>&lt;p>&lt;img src="http://kenji.blog/p/windows-%E3%81%AE%E3%82%B7%E3%83%A7%E3%83%BC%E3%83%88%E3%82%AB%E3%83%83%E3%83%88%E5%B0%8F%E6%8A%80%E9%9B%86/img_5.png"
width="192"
height="256"
srcset="http://kenji.blog/p/windows-%E3%81%AE%E3%82%B7%E3%83%A7%E3%83%BC%E3%83%88%E3%82%AB%E3%83%83%E3%83%88%E5%B0%8F%E6%8A%80%E9%9B%86/img_5_hud38bddc861d08a6c0e618a52fbfadb9d_18242_480x0_resize_box_3.png 480w, http://kenji.blog/p/windows-%E3%81%AE%E3%82%B7%E3%83%A7%E3%83%BC%E3%83%88%E3%82%AB%E3%83%83%E3%83%88%E5%B0%8F%E6%8A%80%E9%9B%86/img_5_hud38bddc861d08a6c0e618a52fbfadb9d_18242_1024x0_resize_box_3.png 1024w"
loading="lazy"
alt="img_5.png"
class="gallery-image"
data-flex-grow="75"
data-flex-basis="180px"
>&lt;/p>
&lt;ul>
&lt;li>Digite &lt;code>calc&lt;/code> e pressione &lt;code>Enter&lt;/code>&lt;/li>
&lt;/ul>
&lt;h2 id="iniciar-o-paint">Iniciar o Paint
&lt;/h2>&lt;p>&lt;img src="http://kenji.blog/p/windows-%E3%81%AE%E3%82%B7%E3%83%A7%E3%83%BC%E3%83%88%E3%82%AB%E3%83%83%E3%83%88%E5%B0%8F%E6%8A%80%E9%9B%86/img_6.png"
width="236"
height="246"
srcset="http://kenji.blog/p/windows-%E3%81%AE%E3%82%B7%E3%83%A7%E3%83%BC%E3%83%88%E3%82%AB%E3%83%83%E3%83%88%E5%B0%8F%E6%8A%80%E9%9B%86/img_6_huaf13165ac0572566abd830a37f5d0cef_37772_480x0_resize_box_3.png 480w, http://kenji.blog/p/windows-%E3%81%AE%E3%82%B7%E3%83%A7%E3%83%BC%E3%83%88%E3%82%AB%E3%83%83%E3%83%88%E5%B0%8F%E6%8A%80%E9%9B%86/img_6_huaf13165ac0572566abd830a37f5d0cef_37772_1024x0_resize_box_3.png 1024w"
loading="lazy"
alt="img_6.png"
class="gallery-image"
data-flex-grow="95"
data-flex-basis="230px"
>&lt;/p>
&lt;ul>
&lt;li>Digite &lt;code>mspaint&lt;/code> e pressione &lt;code>Enter&lt;/code>&lt;/li>
&lt;/ul>
&lt;h2 id="iniciar-o-powershell">Iniciar o PowerShell
&lt;/h2>&lt;p>&lt;img src="http://kenji.blog/p/windows-%E3%81%AE%E3%82%B7%E3%83%A7%E3%83%BC%E3%83%88%E3%82%AB%E3%83%83%E3%83%88%E5%B0%8F%E6%8A%80%E9%9B%86/img_7.png"
width="238"
height="180"
srcset="http://kenji.blog/p/windows-%E3%81%AE%E3%82%B7%E3%83%A7%E3%83%BC%E3%83%88%E3%82%AB%E3%83%83%E3%83%88%E5%B0%8F%E6%8A%80%E9%9B%86/img_7_huc312ccf5dbdb1b6edae5dc06174466bf_18265_480x0_resize_box_3.png 480w, http://kenji.blog/p/windows-%E3%81%AE%E3%82%B7%E3%83%A7%E3%83%BC%E3%83%88%E3%82%AB%E3%83%83%E3%83%88%E5%B0%8F%E6%8A%80%E9%9B%86/img_7_huc312ccf5dbdb1b6edae5dc06174466bf_18265_1024x0_resize_box_3.png 1024w"
loading="lazy"
alt="img_7.png"
class="gallery-image"
data-flex-grow="132"
data-flex-basis="317px"
>&lt;/p>
&lt;ul>
&lt;li>Digite &lt;code>powershell&lt;/code> e pressione &lt;code>Enter&lt;/code>&lt;/li>
&lt;/ul>
&lt;h2 id="iniciar-o-visual-studio-code">Iniciar o Visual Studio Code
&lt;/h2>&lt;p>&lt;img src="http://kenji.blog/p/windows-%E3%81%AE%E3%82%B7%E3%83%A7%E3%83%BC%E3%83%88%E3%82%AB%E3%83%83%E3%83%88%E5%B0%8F%E6%8A%80%E9%9B%86/img_8.png"
width="256"
height="256"
srcset="http://kenji.blog/p/windows-%E3%81%AE%E3%82%B7%E3%83%A7%E3%83%BC%E3%83%88%E3%82%AB%E3%83%83%E3%83%88%E5%B0%8F%E6%8A%80%E9%9B%86/img_8_hu819451b32a2c272ab10c72dbab15e316_9360_480x0_resize_box_3.png 480w, http://kenji.blog/p/windows-%E3%81%AE%E3%82%B7%E3%83%A7%E3%83%BC%E3%83%88%E3%82%AB%E3%83%83%E3%83%88%E5%B0%8F%E6%8A%80%E9%9B%86/img_8_hu819451b32a2c272ab10c72dbab15e316_9360_1024x0_resize_box_3.png 1024w"
loading="lazy"
alt="img_8.png"
class="gallery-image"
data-flex-grow="100"
data-flex-basis="240px"
>&lt;/p>
&lt;ul>
&lt;li>Digite &lt;code>code&lt;/code> e pressione &lt;code>Enter&lt;/code>&lt;/li>
&lt;/ul>
&lt;h2 id="iniciar-o-excel">Iniciar o Excel
&lt;/h2>&lt;p>&lt;img src="http://kenji.blog/p/windows-%E3%81%AE%E3%82%B7%E3%83%A7%E3%83%BC%E3%83%88%E3%82%AB%E3%83%83%E3%83%88%E5%B0%8F%E6%8A%80%E9%9B%86/img_9.png"
width="256"
height="256"
srcset="http://kenji.blog/p/windows-%E3%81%AE%E3%82%B7%E3%83%A7%E3%83%BC%E3%83%88%E3%82%AB%E3%83%83%E3%83%88%E5%B0%8F%E6%8A%80%E9%9B%86/img_9_hufe95cb8f1915673ee373611cd0239b90_12403_480x0_resize_box_3.png 480w, http://kenji.blog/p/windows-%E3%81%AE%E3%82%B7%E3%83%A7%E3%83%BC%E3%83%88%E3%82%AB%E3%83%83%E3%83%88%E5%B0%8F%E6%8A%80%E9%9B%86/img_9_hufe95cb8f1915673ee373611cd0239b90_12403_1024x0_resize_box_3.png 1024w"
loading="lazy"
alt="img_9.png"
class="gallery-image"
data-flex-grow="100"
data-flex-basis="240px"
>&lt;/p>
&lt;ul>
&lt;li>Digite &lt;code>excel&lt;/code> e pressione &lt;code>Enter&lt;/code>&lt;br>
※ Apenas se o Excel estiver instalado.&lt;/li>
&lt;/ul>
&lt;h2 id="abrir-o-word">Abrir o Word
&lt;/h2>&lt;p>&lt;img src="http://kenji.blog/p/windows-%E3%81%AE%E3%82%B7%E3%83%A7%E3%83%BC%E3%83%88%E3%82%AB%E3%83%83%E3%83%88%E5%B0%8F%E6%8A%80%E9%9B%86/img_10.png"
width="256"
height="256"
srcset="http://kenji.blog/p/windows-%E3%81%AE%E3%82%B7%E3%83%A7%E3%83%BC%E3%83%88%E3%82%AB%E3%83%83%E3%83%88%E5%B0%8F%E6%8A%80%E9%9B%86/img_10_hu66f202be8d6fd020b50c8768fa2e6a4c_12479_480x0_resize_box_3.png 480w, http://kenji.blog/p/windows-%E3%81%AE%E3%82%B7%E3%83%A7%E3%83%BC%E3%83%88%E3%82%AB%E3%83%83%E3%83%88%E5%B0%8F%E6%8A%80%E9%9B%86/img_10_hu66f202be8d6fd020b50c8768fa2e6a4c_12479_1024x0_resize_box_3.png 1024w"
loading="lazy"
alt="img_10.png"
class="gallery-image"
data-flex-grow="100"
data-flex-basis="240px"
>&lt;/p>
&lt;ul>
&lt;li>Digite &lt;code>winword&lt;/code> e pressione &lt;code>Enter&lt;/code>&lt;br>
※ Apenas se o Word estiver instalado.&lt;/li>
&lt;/ul>
&lt;h2 id="abrir-o-powerpoint">Abrir o PowerPoint
&lt;/h2>&lt;p>&lt;img src="http://kenji.blog/p/windows-%E3%81%AE%E3%82%B7%E3%83%A7%E3%83%BC%E3%83%88%E3%82%AB%E3%83%83%E3%83%88%E5%B0%8F%E6%8A%80%E9%9B%86/img_11.png"
width="256"
height="256"
srcset="http://kenji.blog/p/windows-%E3%81%AE%E3%82%B7%E3%83%A7%E3%83%BC%E3%83%88%E3%82%AB%E3%83%83%E3%83%88%E5%B0%8F%E6%8A%80%E9%9B%86/img_11_hue1fee55e2f89dec256779909b6e45e73_16603_480x0_resize_box_3.png 480w, http://kenji.blog/p/windows-%E3%81%AE%E3%82%B7%E3%83%A7%E3%83%BC%E3%83%88%E3%82%AB%E3%83%83%E3%83%88%E5%B0%8F%E6%8A%80%E9%9B%86/img_11_hue1fee55e2f89dec256779909b6e45e73_16603_1024x0_resize_box_3.png 1024w"
loading="lazy"
alt="img_11.png"
class="gallery-image"
data-flex-grow="100"
data-flex-basis="240px"
>&lt;/p>
&lt;ul>
&lt;li>Digite &lt;code>powerpnt&lt;/code> e pressione &lt;code>Enter&lt;/code>&lt;br>
※ Apenas se o PowerPoint estiver instalado.&lt;/li>
&lt;/ul>
&lt;h2 id="abrir-a-configuração-do-sistema">Abrir a Configuração do Sistema
&lt;/h2>&lt;p>&lt;img src="http://kenji.blog/p/windows-%E3%81%AE%E3%82%B7%E3%83%A7%E3%83%BC%E3%83%88%E3%82%AB%E3%83%83%E3%83%88%E5%B0%8F%E6%8A%80%E9%9B%86/img_1.png"
width="665"
height="437"
srcset="http://kenji.blog/p/windows-%E3%81%AE%E3%82%B7%E3%83%A7%E3%83%BC%E3%83%88%E3%82%AB%E3%83%83%E3%83%88%E5%B0%8F%E6%8A%80%E9%9B%86/img_1_hu9eac5a45f3cec150f6d24f7cc9194bcc_17777_480x0_resize_box_3.png 480w, http://kenji.blog/p/windows-%E3%81%AE%E3%82%B7%E3%83%A7%E3%83%BC%E3%83%88%E3%82%AB%E3%83%83%E3%83%88%E5%B0%8F%E6%8A%80%E9%9B%86/img_1_hu9eac5a45f3cec150f6d24f7cc9194bcc_17777_1024x0_resize_box_3.png 1024w"
loading="lazy"
alt="img_1.png"
class="gallery-image"
data-flex-grow="152"
data-flex-basis="365px"
>&lt;/p>
&lt;ul>
&lt;li>Digite &lt;code>msconfig&lt;/code> e pressione &lt;code>Enter&lt;/code>&lt;/li>
&lt;/ul>
&lt;h2 id="abrir-as-propriedades-do-sistema">Abrir as Propriedades do Sistema
&lt;/h2>&lt;p>&lt;img src="http://kenji.blog/p/windows-%E3%81%AE%E3%82%B7%E3%83%A7%E3%83%BC%E3%83%88%E3%82%AB%E3%83%83%E3%83%88%E5%B0%8F%E6%8A%80%E9%9B%86/img_2.png"
width="479"
height="533"
srcset="http://kenji.blog/p/windows-%E3%81%AE%E3%82%B7%E3%83%A7%E3%83%BC%E3%83%88%E3%82%AB%E3%83%83%E3%83%88%E5%B0%8F%E6%8A%80%E9%9B%86/img_2_hu3929e3da9eca5e07cd9c2d5cc64dbd1e_20161_480x0_resize_box_3.png 480w, http://kenji.blog/p/windows-%E3%81%AE%E3%82%B7%E3%83%A7%E3%83%BC%E3%83%88%E3%82%AB%E3%83%83%E3%83%88%E5%B0%8F%E6%8A%80%E9%9B%86/img_2_hu3929e3da9eca5e07cd9c2d5cc64dbd1e_20161_1024x0_resize_box_3.png 1024w"
loading="lazy"
alt="img_2.png"
class="gallery-image"
data-flex-grow="89"
data-flex-basis="215px"
>&lt;/p>
&lt;ul>
&lt;li>Digite &lt;code>sysdm.cpl&lt;/code> e pressione &lt;code>Enter&lt;/code>&lt;/li>
&lt;/ul>
&lt;h2 id="abrir-informações-sobre-o-windows">Abrir informações sobre o Windows
&lt;/h2>&lt;p>&lt;img src="http://kenji.blog/p/windows-%E3%81%AE%E3%82%B7%E3%83%A7%E3%83%BC%E3%83%88%E3%82%AB%E3%83%83%E3%83%88%E5%B0%8F%E6%8A%80%E9%9B%86/img_27.png"
width="536"
height="472"
srcset="http://kenji.blog/p/windows-%E3%81%AE%E3%82%B7%E3%83%A7%E3%83%BC%E3%83%88%E3%82%AB%E3%83%83%E3%83%88%E5%B0%8F%E6%8A%80%E9%9B%86/img_27_hue408b4bef2bf493ba35bfd5153ef0069_18050_480x0_resize_box_3.png 480w, http://kenji.blog/p/windows-%E3%81%AE%E3%82%B7%E3%83%A7%E3%83%BC%E3%83%88%E3%82%AB%E3%83%83%E3%83%88%E5%B0%8F%E6%8A%80%E9%9B%86/img_27_hue408b4bef2bf493ba35bfd5153ef0069_18050_1024x0_resize_box_3.png 1024w"
loading="lazy"
alt="img_27.png"
class="gallery-image"
data-flex-grow="113"
data-flex-basis="272px"
>&lt;/p>
&lt;ul>
&lt;li>Digite &lt;code>winver&lt;/code> e pressione &lt;code>Enter&lt;/code>&lt;/li>
&lt;/ul>
&lt;h2 id="abrir-o-teclado-virtual">Abrir o Teclado Virtual
&lt;/h2>&lt;p>&lt;img src="http://kenji.blog/p/windows-%E3%81%AE%E3%82%B7%E3%83%A7%E3%83%BC%E3%83%88%E3%82%AB%E3%83%83%E3%83%88%E5%B0%8F%E6%8A%80%E9%9B%86/img_14.png"
width="248"
height="197"
srcset="http://kenji.blog/p/windows-%E3%81%AE%E3%82%B7%E3%83%A7%E3%83%BC%E3%83%88%E3%82%AB%E3%83%83%E3%83%88%E5%B0%8F%E6%8A%80%E9%9B%86/img_14_hu1a8155193c62d74a0ebaff13a210723b_38736_480x0_resize_box_3.png 480w, http://kenji.blog/p/windows-%E3%81%AE%E3%82%B7%E3%83%A7%E3%83%BC%E3%83%88%E3%82%AB%E3%83%83%E3%83%88%E5%B0%8F%E6%8A%80%E9%9B%86/img_14_hu1a8155193c62d74a0ebaff13a210723b_38736_1024x0_resize_box_3.png 1024w"
loading="lazy"
alt="img_14.png"
class="gallery-image"
data-flex-grow="125"
data-flex-basis="302px"
>&lt;/p>
&lt;ul>
&lt;li>Digite &lt;code>osk&lt;/code> e pressione &lt;code>Enter&lt;/code>&lt;/li>
&lt;/ul>
&lt;h2 id="abrir-o-wordpad">Abrir o WordPad
&lt;/h2>&lt;p>&lt;img src="http://kenji.blog/p/windows-%E3%81%AE%E3%82%B7%E3%83%A7%E3%83%BC%E3%83%88%E3%82%AB%E3%83%83%E3%83%88%E5%B0%8F%E6%8A%80%E9%9B%86/img_12.png"
width="191"
height="232"
srcset="http://kenji.blog/p/windows-%E3%81%AE%E3%82%B7%E3%83%A7%E3%83%BC%E3%83%88%E3%82%AB%E3%83%83%E3%83%88%E5%B0%8F%E6%8A%80%E9%9B%86/img_12_hu6fb1edb2f260aa83d67ca8cca1dd668a_38511_480x0_resize_box_3.png 480w, http://kenji.blog/p/windows-%E3%81%AE%E3%82%B7%E3%83%A7%E3%83%BC%E3%83%88%E3%82%AB%E3%83%83%E3%83%88%E5%B0%8F%E6%8A%80%E9%9B%86/img_12_hu6fb1edb2f260aa83d67ca8cca1dd668a_38511_1024x0_resize_box_3.png 1024w"
loading="lazy"
alt="img_12.png"
class="gallery-image"
data-flex-grow="82"
data-flex-basis="197px"
>&lt;/p>
&lt;ul>
&lt;li>Digite &lt;code>wordpad&lt;/code> ou &lt;code>write&lt;/code> e pressione &lt;code>Enter&lt;/code>&lt;/li>
&lt;/ul>
&lt;h2 id="abrir-o-editor-do-registro">Abrir o Editor do Registro
&lt;/h2>&lt;p>&lt;img src="http://kenji.blog/p/windows-%E3%81%AE%E3%82%B7%E3%83%A7%E3%83%BC%E3%83%88%E3%82%AB%E3%83%83%E3%83%88%E5%B0%8F%E6%8A%80%E9%9B%86/img_13.png"
width="212"
height="224"
srcset="http://kenji.blog/p/windows-%E3%81%AE%E3%82%B7%E3%83%A7%E3%83%BC%E3%83%88%E3%82%AB%E3%83%83%E3%83%88%E5%B0%8F%E6%8A%80%E9%9B%86/img_13_hu32fb6574ff10cc1f2401fc64ed114687_7891_480x0_resize_box_3.png 480w, http://kenji.blog/p/windows-%E3%81%AE%E3%82%B7%E3%83%A7%E3%83%BC%E3%83%88%E3%82%AB%E3%83%83%E3%83%88%E5%B0%8F%E6%8A%80%E9%9B%86/img_13_hu32fb6574ff10cc1f2401fc64ed114687_7891_1024x0_resize_box_3.png 1024w"
loading="lazy"
alt="img_13.png"
class="gallery-image"
data-flex-grow="94"
data-flex-basis="227px"
>&lt;/p>
&lt;ul>
&lt;li>Digite &lt;code>regedit&lt;/code> e pressione &lt;code>Enter&lt;/code>&lt;/li>
&lt;/ul>
&lt;h2 id="abrir-programas-e-recursos">Abrir Programas e Recursos
&lt;/h2>&lt;ul>
&lt;li>Digite &lt;code>explorer.exe shell:::{7b81be6a-ce2b-4676-a29e-eb907a5126c5}&lt;/code> e pressione &lt;code>Enter&lt;/code>&lt;/li>
&lt;/ul>
&lt;h2 id="abrir-propriedades-do-teclado">Abrir Propriedades do Teclado
&lt;/h2>&lt;ul>
&lt;li>Digite &lt;code>explorer.exe shell:::{725BE8F7-668E-4C7B-8F90-46BDB0936430}&lt;/code> e pressione &lt;code>Enter&lt;/code>&lt;/li>
&lt;/ul>
&lt;h2 id="abrir-propriedades-do-mouse">Abrir Propriedades do Mouse
&lt;/h2>&lt;p>&lt;img src="http://kenji.blog/p/windows-%E3%81%AE%E3%82%B7%E3%83%A7%E3%83%BC%E3%83%88%E3%82%AB%E3%83%83%E3%83%88%E5%B0%8F%E6%8A%80%E9%9B%86/img_16.png"
width="465"
height="518"
srcset="http://kenji.blog/p/windows-%E3%81%AE%E3%82%B7%E3%83%A7%E3%83%BC%E3%83%88%E3%82%AB%E3%83%83%E3%83%88%E5%B0%8F%E6%8A%80%E9%9B%86/img_16_hu4b8368d82eda62c47aa07a16e184c48d_28920_480x0_resize_box_3.png 480w, http://kenji.blog/p/windows-%E3%81%AE%E3%82%B7%E3%83%A7%E3%83%BC%E3%83%88%E3%82%AB%E3%83%83%E3%83%88%E5%B0%8F%E6%8A%80%E9%9B%86/img_16_hu4b8368d82eda62c47aa07a16e184c48d_28920_1024x0_resize_box_3.png 1024w"
loading="lazy"
alt="img_16.png"
class="gallery-image"
data-flex-grow="89"
data-flex-basis="215px"
>&lt;/p>
&lt;ul>
&lt;li>Digite &lt;code>explorer.exe shell:::{6C8EEC18-8D75-41B2-A177-8831D59D2D50}&lt;/code> e pressione &lt;code>Enter&lt;/code>&lt;/li>
&lt;/ul>
&lt;h2 id="abrir-configurações-de-som">Abrir Configurações de Som
&lt;/h2>&lt;p>&lt;img src="http://kenji.blog/p/windows-%E3%81%AE%E3%82%B7%E3%83%A7%E3%83%BC%E3%83%88%E3%82%AB%E3%83%83%E3%83%88%E5%B0%8F%E6%8A%80%E9%9B%86/img_3.png"
width="465"
height="518"
srcset="http://kenji.blog/p/windows-%E3%81%AE%E3%82%B7%E3%83%A7%E3%83%BC%E3%83%88%E3%82%AB%E3%83%83%E3%83%88%E5%B0%8F%E6%8A%80%E9%9B%86/img_3_hu07d343f29d286da7b6e29fffcdf11463_27424_480x0_resize_box_3.png 480w, http://kenji.blog/p/windows-%E3%81%AE%E3%82%B7%E3%83%A7%E3%83%BC%E3%83%88%E3%82%AB%E3%83%83%E3%83%88%E5%B0%8F%E6%8A%80%E9%9B%86/img_3_hu07d343f29d286da7b6e29fffcdf11463_27424_1024x0_resize_box_3.png 1024w"
loading="lazy"
alt="img_3.png"
class="gallery-image"
data-flex-grow="89"
data-flex-basis="215px"
>&lt;/p>
&lt;ul>
&lt;li>Digite &lt;code>explorer.exe shell:::{F2DDFC82-8F12-4CDD-B7DC-D4FE1425AA4D}&lt;/code> e pressione &lt;code>Enter&lt;/code>&lt;/li>
&lt;/ul>
&lt;h2 id="abrir-contas-de-usuário">Abrir Contas de Usuário
&lt;/h2>&lt;ul>
&lt;li>Digite &lt;code>explorer.exe shell:::{60632754-c523-4b62-b45c-4172da012619}&lt;/code> e pressione &lt;code>Enter&lt;/code>&lt;/li>
&lt;/ul>
&lt;h2 id="copiar-o-texto-de-caixas-de-mensagem-padrão">Copiar o texto de caixas de mensagem padrão
&lt;/h2>&lt;p>&lt;img src="http://kenji.blog/p/windows-%E3%81%AE%E3%82%B7%E3%83%A7%E3%83%BC%E3%83%88%E3%82%AB%E3%83%83%E3%83%88%E5%B0%8F%E6%8A%80%E9%9B%86/img_26.png"
width="352"
height="134"
srcset="http://kenji.blog/p/windows-%E3%81%AE%E3%82%B7%E3%83%A7%E3%83%BC%E3%83%88%E3%82%AB%E3%83%83%E3%83%88%E5%B0%8F%E6%8A%80%E9%9B%86/img_26_hu8464019115eff050aa2f4030d8b469e9_4904_480x0_resize_box_3.png 480w, http://kenji.blog/p/windows-%E3%81%AE%E3%82%B7%E3%83%A7%E3%83%BC%E3%83%88%E3%82%AB%E3%83%83%E3%83%88%E5%B0%8F%E6%8A%80%E9%9B%86/img_26_hu8464019115eff050aa2f4030d8b469e9_4904_1024x0_resize_box_3.png 1024w"
loading="lazy"
alt="img_26.png"
class="gallery-image"
data-flex-grow="262"
data-flex-basis="630px"
>&lt;/p>
&lt;ul>
&lt;li>Você pode copiar o texto de uma caixa de mensagem padrão com &lt;code>Ctrl + C&lt;/code>.
Se você copiar a caixa de mensagem acima, o seguinte será copiado para a área de transferência:&lt;/li>
&lt;/ul>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;span class="lnt">4
&lt;/span>&lt;span class="lnt">5
&lt;/span>&lt;span class="lnt">6
&lt;/span>&lt;span class="lnt">7
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-gdscript3" data-lang="gdscript3">&lt;span class="line">&lt;span class="cl">&lt;span class="p">[&lt;/span>&lt;span class="n">Window&lt;/span> &lt;span class="n">Title&lt;/span>&lt;span class="p">]&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">WordPad&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">[&lt;/span>&lt;span class="n">Main&lt;/span> &lt;span class="n">Instruction&lt;/span>&lt;span class="p">]&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">Deseja&lt;/span> &lt;span class="n">salvar&lt;/span> &lt;span class="n">as&lt;/span> &lt;span class="n">alterações&lt;/span> &lt;span class="n">em&lt;/span> &lt;span class="n">Documento&lt;/span>&lt;span class="err">?&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">[&lt;/span>&lt;span class="n">Salvar&lt;/span> &lt;span class="p">(&lt;/span>&lt;span class="n">S&lt;/span>&lt;span class="p">)]&lt;/span> &lt;span class="p">[&lt;/span>&lt;span class="n">Não&lt;/span> &lt;span class="n">Salvar&lt;/span> &lt;span class="p">(&lt;/span>&lt;span class="n">N&lt;/span>&lt;span class="p">)]&lt;/span> &lt;span class="p">[&lt;/span>&lt;span class="n">Cancelar&lt;/span>&lt;span class="p">]&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h2 id="armazenar-a-saída-do-prompt-de-comando-na-área-de-transferência">Armazenar a saída do Prompt de Comando na área de transferência
&lt;/h2>&lt;p>Adicionar &lt;code> | clip&lt;/code> (pipe+clip) ao final de um comando, como &lt;code>echo &amp;quot;hello&amp;quot; | clip&lt;/code>, copia a saída padrão para a área de transferência.&lt;/p>
&lt;h2 id="saída-de-texto-da-hierarquia-de-pastas">Saída de texto da hierarquia de pastas
&lt;/h2>&lt;p>No Prompt de Comando, você pode gerar a hierarquia de pastas em formato de árvore usando o comando &lt;code>tree&lt;/code>.&lt;/p>
&lt;p>Exemplo de saída:&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt"> 1
&lt;/span>&lt;span class="lnt"> 2
&lt;/span>&lt;span class="lnt"> 3
&lt;/span>&lt;span class="lnt"> 4
&lt;/span>&lt;span class="lnt"> 5
&lt;/span>&lt;span class="lnt"> 6
&lt;/span>&lt;span class="lnt"> 7
&lt;/span>&lt;span class="lnt"> 8
&lt;/span>&lt;span class="lnt"> 9
&lt;/span>&lt;span class="lnt">10
&lt;/span>&lt;span class="lnt">11
&lt;/span>&lt;span class="lnt">12
&lt;/span>&lt;span class="lnt">13
&lt;/span>&lt;span class="lnt">14
&lt;/span>&lt;span class="lnt">15
&lt;/span>&lt;span class="lnt">16
&lt;/span>&lt;span class="lnt">17
&lt;/span>&lt;span class="lnt">18
&lt;/span>&lt;span class="lnt">19
&lt;/span>&lt;span class="lnt">20
&lt;/span>&lt;span class="lnt">21
&lt;/span>&lt;span class="lnt">22
&lt;/span>&lt;span class="lnt">23
&lt;/span>&lt;span class="lnt">24
&lt;/span>&lt;span class="lnt">25
&lt;/span>&lt;span class="lnt">26
&lt;/span>&lt;span class="lnt">27
&lt;/span>&lt;span class="lnt">28
&lt;/span>&lt;span class="lnt">29
&lt;/span>&lt;span class="lnt">30
&lt;/span>&lt;span class="lnt">31
&lt;/span>&lt;span class="lnt">32
&lt;/span>&lt;span class="lnt">33
&lt;/span>&lt;span class="lnt">34
&lt;/span>&lt;span class="lnt">35
&lt;/span>&lt;span class="lnt">36
&lt;/span>&lt;span class="lnt">37
&lt;/span>&lt;span class="lnt">38
&lt;/span>&lt;span class="lnt">39
&lt;/span>&lt;span class="lnt">40
&lt;/span>&lt;span class="lnt">41
&lt;/span>&lt;span class="lnt">42
&lt;/span>&lt;span class="lnt">43
&lt;/span>&lt;span class="lnt">44
&lt;/span>&lt;span class="lnt">45
&lt;/span>&lt;span class="lnt">46
&lt;/span>&lt;span class="lnt">47
&lt;/span>&lt;span class="lnt">48
&lt;/span>&lt;span class="lnt">49
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">C:.
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">├─.idea
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">│ └─libraries
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">├─binaryeditorbz
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">├─blog
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">│ ├─archetypes
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">│ ├─content
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">│ ├─data
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">│ ├─layouts
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">│ ├─static
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">│ └─themes
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">│ └─PaperMod
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">│ ├─.git
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">│ │ ├─branches
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">│ │ ├─hooks
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">│ │ ├─info
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">│ │ ├─logs
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">│ │ │ └─refs
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">│ │ │ ├─heads
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">│ │ │ └─remotes
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">│ │ │ └─origin
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">│ │ ├─objects
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">│ │ │ ├─info
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">│ │ │ └─pack
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">│ │ └─refs
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">│ │ ├─heads
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">│ │ ├─remotes
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">│ │ │ └─origin
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">│ │ └─tags
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">│ ├─.github
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">│ │ ├─ISSUE_TEMPLATE
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">│ │ └─workflows
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">│ ├─assets
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">│ │ ├─css
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">│ │ │ ├─common
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">│ │ │ ├─core
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">│ │ │ ├─extended
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">│ │ │ ├─hljs
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">│ │ │ └─includes
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">│ │ └─js
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">│ ├─i18n
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">│ ├─images
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">│ └─layouts
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">│ ├─partials
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">│ │ └─templates
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">│ ├─shortcodes
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">│ └─_default
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">│ └─_markup
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">(omitido)
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h2 id="referências">Referências
&lt;/h2>&lt;ul>
&lt;li>&lt;a class="link" href="https://support.microsoft.com/ja-jp/windows/windows-%E3%81%AE%E3%82%AD%E3%83%BC%E3%83%9C%E3%83%BC%E3%83%89-%E3%82%B7%E3%83%A7%E3%83%BC%E3%83%88%E3%82%AB%E3%83%83%E3%83%88-dcc61a57-8ff0-cffe-9796-cb9706c75eec" target="_blank" rel="noopener"
>Atalhos de teclado no Windows&lt;/a>&lt;/li>
&lt;/ul></description></item><item><title>O encanto do paint.net</title><link>http://kenji.blog/pt/p/paint.net%E3%81%AE%E9%AD%85%E5%8A%9B/</link><pubDate>Wed, 14 Sep 2022 19:33:31 +0900</pubDate><guid>http://kenji.blog/pt/p/paint.net%E3%81%AE%E9%AD%85%E5%8A%9B/</guid><description>&lt;img src="http://kenji.blog/p/paint.net%E3%81%AE%E9%AD%85%E5%8A%9B/img.png" alt="Featured image of post O encanto do paint.net" />&lt;p>Apresentarei o software de edição de imagens paint.net, que costumo usar no meu trabalho de desenvolvimento.&lt;/p>
&lt;p>&lt;img src="http://kenji.blog/p/paint.net%E3%81%AE%E9%AD%85%E5%8A%9B/img_1.png"
width="986"
height="793"
srcset="http://kenji.blog/p/paint.net%E3%81%AE%E9%AD%85%E5%8A%9B/img_1_hu7b03baa3250c24dbfc5edac442a5c4c7_981205_480x0_resize_box_3.png 480w, http://kenji.blog/p/paint.net%E3%81%AE%E9%AD%85%E5%8A%9B/img_1_hu7b03baa3250c24dbfc5edac442a5c4c7_981205_1024x0_resize_box_3.png 1024w"
loading="lazy"
alt="img_1.png"
class="gallery-image"
data-flex-grow="124"
data-flex-basis="298px"
>&lt;/p>
&lt;h1 id="pontos-úteis-que-o-paint-padrão-do-windows-não-faz">Pontos úteis que o Paint padrão do Windows não faz
&lt;/h1>&lt;ul>
&lt;li>Pode lidar com transparência e opacidade&lt;/li>
&lt;li>Pode fazer seleção automática de formas de área complexas&lt;/li>
&lt;li>Pode lidar com camadas&lt;/li>
&lt;li>Pode ajustar correção de nível, brilho, contraste, etc.&lt;/li>
&lt;li>Pode aplicar vários efeitos (desfoque, distorção, ruído, etc.)&lt;/li>
&lt;/ul>
&lt;h1 id="outras-características">Outras características
&lt;/h1>&lt;ul>
&lt;li>Gratuito para usar&lt;/li>
&lt;li>Operação relativamente leve&lt;/li>
&lt;li>Intuitivo de usar e não tem muitas peculiaridades&lt;/li>
&lt;li>Japonês (suporte multilíngue)&lt;/li>
&lt;/ul>
&lt;p>É um software altamente funcional, mas fácil de usar. Eu mesmo ainda não domino todos os recursos.&lt;/p>
&lt;h1 id="instale-aqui">Instale aqui
&lt;/h1>&lt;p>&lt;a class="link" href="https://www.getpaint.net/download.html" target="_blank" rel="noopener"
>https://www.getpaint.net/download.html&lt;/a>&lt;/p>
&lt;p>Se você escolher a versão gratuita, clique na parte circulada em vermelho abaixo no link.&lt;/p>
&lt;p>&lt;img src="http://kenji.blog/p/paint.net%E3%81%AE%E9%AD%85%E5%8A%9B/img_2.png"
width="754"
height="275"
srcset="http://kenji.blog/p/paint.net%E3%81%AE%E9%AD%85%E5%8A%9B/img_2_hu81a3dce724a3d5bbc649f5ff4fffc8aa_30455_480x0_resize_box_3.png 480w, http://kenji.blog/p/paint.net%E3%81%AE%E9%AD%85%E5%8A%9B/img_2_hu81a3dce724a3d5bbc649f5ff4fffc8aa_30455_1024x0_resize_box_3.png 1024w"
loading="lazy"
alt="img_2.png"
class="gallery-image"
data-flex-grow="274"
data-flex-basis="658px"
>&lt;/p>
&lt;p>Parece que se você instalar pela Microsoft Store, será pago, mas em troca receberá atualizações automáticas.
Mesmo com a versão gratuita, você será notificado sobre as atualizações mais recentes, para que possa atualizar sem problemas.&lt;/p></description></item><item><title>Como configurar um domínio personalizado em um repositório Github</title><link>http://kenji.blog/pt/p/como-configurar-um-dom%C3%ADnio-personalizado-em-um-reposit%C3%B3rio-github/</link><pubDate>Tue, 13 Sep 2022 01:16:40 +0900</pubDate><guid>http://kenji.blog/pt/p/como-configurar-um-dom%C3%ADnio-personalizado-em-um-reposit%C3%B3rio-github/</guid><description>&lt;img src="http://kenji.blog/p/github%E3%83%AA%E3%83%9D%E3%82%B8%E3%83%88%E3%83%AA%E3%81%AB%E3%82%AB%E3%82%B9%E3%82%BF%E3%83%A0%E3%83%89%E3%83%A1%E3%82%A4%E3%83%B3%E3%82%92%E8%A8%AD%E5%AE%9A%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95/images/octocat.png" alt="Featured image of post Como configurar um domínio personalizado em um repositório Github" />&lt;p>Para configurar um domínio personalizado em um repositório Github, você precisa alterar as configurações de DNS do seu domínio.
Aqui, explicaremos assumindo que você gerencia seu domínio com &lt;a href="https://px.a8.net/svt/ejp?a8mat=3TJBXA+BKRHS2+50+2HHVNM" rel="nofollow">Onamae.com&lt;/a>.
&lt;img border="0" width="1" height="1" src="https://www19.a8.net/0.gif?a8mat=3TJBXA+BKRHS2+50+2HHVNM" alt="">
Você pode fazer configurações semelhantes reescrevendo os registros A com outros registradores.&lt;/p>
&lt;h2 id="alterar-as-configurações-de-dns-no-onamaecom">Alterar as configurações de DNS no Onamae.com
&lt;/h2>&lt;p>Para alterar as configurações de DNS do seu domínio, faça login na tela de gerenciamento do &lt;a href="https://px.a8.net/svt/ejp?a8mat=3TJBXA+BKRHS2+50+2HHVNM" rel="nofollow">Onamae.com&lt;/a>.
&lt;img border="0" width="1" height="1" src="https://www19.a8.net/0.gif?a8mat=3TJBXA+BKRHS2+50+2HHVNM" alt="">
Após o login, vá para a tela de gerenciamento de domínio.
Quando estiver na tela de gerenciamento de domínio, altere as configurações de DNS.
Para alterar as configurações de DNS, configure da seguinte forma:&lt;/p>
&lt;ol>
&lt;li>Acesse &lt;a class="link" href="https://www.onamae.com/" target="_blank" rel="noopener"
>https://www.onamae.com/&lt;/a> e clique em &amp;ldquo;Login Onamae.com Navi&amp;rdquo;&lt;/li>
&lt;li>Insira sua &amp;ldquo;ID Onamae (ID de membro)&amp;rdquo; e &amp;ldquo;Senha&amp;rdquo; e clique no botão de login&lt;/li>
&lt;li>Clique em &amp;ldquo;Configurações do servidor de nomes&amp;rdquo;&lt;/li>
&lt;li>Clique em &amp;ldquo;Configurações de DNS do domínio&amp;rdquo;&lt;/li>
&lt;li>Selecione o domínio que deseja configurar e clique em &amp;ldquo;Avançar&amp;rdquo;&lt;/li>
&lt;li>Clique em &amp;ldquo;Configurar&amp;rdquo; à direita de &amp;ldquo;Usar configuração de registro DNS&amp;rdquo;&lt;/li>
&lt;li>Selecione A para TYPE, insira 3600 para TTL e &amp;ldquo;185.199.108.153&amp;rdquo; para VALUE e clique em &amp;ldquo;Adicionar&amp;rdquo;&lt;/li>
&lt;li>Semelhante a 7., adicione também para &amp;ldquo;185.199.109.153&amp;rdquo;, &amp;ldquo;185.199.110.153&amp;rdquo; e &amp;ldquo;185.199.111.153&amp;rdquo;&lt;/li>
&lt;li>Certifique-se de que a caixa de seleção está marcada em &amp;ldquo;Confirmação de alteração do servidor de nomes para configuração de registro DNS&amp;rdquo; e clique em &amp;ldquo;Ir para a tela de configuração&amp;rdquo;&lt;/li>
&lt;li>Se for exibida uma tela dizendo &amp;ldquo;Para evitar alterações não intencionais nas configurações de DNS&amp;rdquo;, clique em &amp;ldquo;Não configurar&amp;rdquo; (selecione conforme necessário)&lt;/li>
&lt;li>Verifique os detalhes da configuração e clique em &amp;ldquo;Configurar&amp;rdquo;
&lt;img src="http://kenji.blog/p/github%E3%83%AA%E3%83%9D%E3%82%B8%E3%83%88%E3%83%AA%E3%81%AB%E3%82%AB%E3%82%B9%E3%82%BF%E3%83%A0%E3%83%89%E3%83%A1%E3%82%A4%E3%83%B3%E3%82%92%E8%A8%AD%E5%AE%9A%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95/images/img.png"
width="656"
height="140"
srcset="http://kenji.blog/p/github%E3%83%AA%E3%83%9D%E3%82%B8%E3%83%88%E3%83%AA%E3%81%AB%E3%82%AB%E3%82%B9%E3%82%BF%E3%83%A0%E3%83%89%E3%83%A1%E3%82%A4%E3%83%B3%E3%82%92%E8%A8%AD%E5%AE%9A%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95/images/img_hu4809a0e7ac5f7d8dfe8c6643786c9385_7354_480x0_resize_box_3.png 480w, http://kenji.blog/p/github%E3%83%AA%E3%83%9D%E3%82%B8%E3%83%88%E3%83%AA%E3%81%AB%E3%82%AB%E3%82%B9%E3%82%BF%E3%83%A0%E3%83%89%E3%83%A1%E3%82%A4%E3%83%B3%E3%82%92%E8%A8%AD%E5%AE%9A%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95/images/img_hu4809a0e7ac5f7d8dfe8c6643786c9385_7354_1024x0_resize_box_3.png 1024w"
loading="lazy"
alt="img.png"
class="gallery-image"
data-flex-grow="468"
data-flex-basis="1124px"
>&lt;/li>
&lt;li>Isso conclui as configurações de DNS. Pode levar até cerca de 72 horas para que a reflexão seja concluída.&lt;/li>
&lt;li>Se não for refletido após 72 horas, tente entrar em contato com o suporte do Onamae.com.&lt;/li>
&lt;/ol>
&lt;p>Para verificar se as configurações estão refletidas no seu ambiente local, tente executar o seguinte comando.
Substitua a parte &lt;code>example.com&lt;/code> pelo domínio que você deseja verificar.&lt;/p>
&lt;h3 id="para-linux-mac">Para Linux, Mac
&lt;/h3>&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">dig example.com +noall +answer -t A
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>Se o resultado for o seguinte, a configuração foi refletida.&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;span class="lnt">4
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">example.com. &lt;span class="m">0&lt;/span> IN A 185.199.108.153
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">example.com. &lt;span class="m">0&lt;/span> IN A 185.199.109.153
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">example.com. &lt;span class="m">0&lt;/span> IN A 185.199.110.153
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">example.com. &lt;span class="m">0&lt;/span> IN A 185.199.111.153
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h3 id="para-windows">Para Windows
&lt;/h3>&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">nslookup -q&lt;span class="o">=&lt;/span>a example.com 8.8.8.8
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>Se o resultado for o seguinte, a configuração foi refletida.&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;span class="lnt">4
&lt;/span>&lt;span class="lnt">5
&lt;/span>&lt;span class="lnt">6
&lt;/span>&lt;span class="lnt">7
&lt;/span>&lt;span class="lnt">8
&lt;/span>&lt;span class="lnt">9
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">Servidor: dns.google
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">Address: 8.8.8.8
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">Resposta não autoritativa:
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">Nome: example.com
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">Addresses: 185.199.108.153
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> 185.199.109.153
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> 185.199.110.153
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> 185.199.111.153
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h2 id="configurar-um-domínio-personalizado-em-um-repositório-github">Configurar um domínio personalizado em um repositório Github
&lt;/h2>&lt;ol>
&lt;li>Abra a página do repositório e clique em Settings&lt;/li>
&lt;li>Clique em Pages&lt;/li>
&lt;li>Se você estiver publicando o código-fonte do repositório como está, selecione &amp;ldquo;Deploy from a branch&amp;rdquo; em Source. Se você estiver compilando o código-fonte, como HUGO, selecione &amp;ldquo;GitHub Actions&amp;rdquo;.&lt;/li>
&lt;li>Selecione a branch a publicar em Branch e clique em Save&lt;/li>
&lt;li>Insira o domínio que você obteve em Custom domain e clique em Save.&lt;/li>
&lt;li>Se necessário, marque a caixa &amp;ldquo;Enforce HTTPS&amp;rdquo; para ativar o suporte HTTPS&lt;/li>
&lt;/ol>
&lt;p>[PR]
&lt;a href="https://px.a8.net/svt/ejp?a8mat=3TJBXA+BKRHS2+50+2HQGAP" rel="nofollow">
&lt;img border="0" width="468" height="60" alt="" src="https://www24.a8.net/svt/bgt?aid=231009310700&amp;wid=003&amp;eno=01&amp;mid=s00000000018015072000&amp;mc=1">&lt;/a>
&lt;img border="0" width="1" height="1" src="https://www14.a8.net/0.gif?a8mat=3TJBXA+BKRHS2+50+2HQGAP" alt="">&lt;/p></description></item><item><title>Gerar .gitignore com o comando dotnet</title><link>http://kenji.blog/pt/p/dotnet%E3%82%B3%E3%83%9E%E3%83%B3%E3%83%89%E3%81%A7.gitignore%E3%82%92%E7%94%9F%E6%88%90%E3%81%99%E3%82%8B/</link><pubDate>Tue, 13 Sep 2022 00:25:12 +0900</pubDate><guid>http://kenji.blog/pt/p/dotnet%E3%82%B3%E3%83%9E%E3%83%B3%E3%83%89%E3%81%A7.gitignore%E3%82%92%E7%94%9F%E6%88%90%E3%81%99%E3%82%8B/</guid><description>&lt;img src="http://kenji.blog/p/dotnet%E3%82%B3%E3%83%9E%E3%83%B3%E3%83%89%E3%81%A7.gitignore%E3%82%92%E7%94%9F%E6%88%90%E3%81%99%E3%82%8B/img_1.png" alt="Featured image of post Gerar .gitignore com o comando dotnet" />&lt;p>O comando dotnet.exe é útil para se ter à mão, pois permite até mesmo construir programas simples.&lt;/p>
&lt;h2 id="instalação-do-net-sdk">Instalação do .NET SDK
&lt;/h2>&lt;p>O dotnet.exe está incluído no .NET SDK, portanto, primeiro instalamos o .NET SDK.
Inicie o cmd.exe com privilégios de administrador e execute o seguinte comando.&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-cmd" data-lang="cmd">&lt;span class="line">&lt;span class="cl">winget install Microsoft.DotNet.SDK.6
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h2 id="gerar-gitignore">Gerar .gitignore
&lt;/h2>&lt;p>O comando para gerar o .gitignore com o dotnet.exe é o seguinte.&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">dotnet new gitignore
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>O .gitignore gerado é o seguinte.&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt"> 1
&lt;/span>&lt;span class="lnt"> 2
&lt;/span>&lt;span class="lnt"> 3
&lt;/span>&lt;span class="lnt"> 4
&lt;/span>&lt;span class="lnt"> 5
&lt;/span>&lt;span class="lnt"> 6
&lt;/span>&lt;span class="lnt"> 7
&lt;/span>&lt;span class="lnt"> 8
&lt;/span>&lt;span class="lnt"> 9
&lt;/span>&lt;span class="lnt"> 10
&lt;/span>&lt;span class="lnt"> 11
&lt;/span>&lt;span class="lnt"> 12
&lt;/span>&lt;span class="lnt"> 13
&lt;/span>&lt;span class="lnt"> 14
&lt;/span>&lt;span class="lnt"> 15
&lt;/span>&lt;span class="lnt"> 16
&lt;/span>&lt;span class="lnt"> 17
&lt;/span>&lt;span class="lnt"> 18
&lt;/span>&lt;span class="lnt"> 19
&lt;/span>&lt;span class="lnt"> 20
&lt;/span>&lt;span class="lnt"> 21
&lt;/span>&lt;span class="lnt"> 22
&lt;/span>&lt;span class="lnt"> 23
&lt;/span>&lt;span class="lnt"> 24
&lt;/span>&lt;span class="lnt"> 25
&lt;/span>&lt;span class="lnt"> 26
&lt;/span>&lt;span class="lnt"> 27
&lt;/span>&lt;span class="lnt"> 28
&lt;/span>&lt;span class="lnt"> 29
&lt;/span>&lt;span class="lnt"> 30
&lt;/span>&lt;span class="lnt"> 31
&lt;/span>&lt;span class="lnt"> 32
&lt;/span>&lt;span class="lnt"> 33
&lt;/span>&lt;span class="lnt"> 34
&lt;/span>&lt;span class="lnt"> 35
&lt;/span>&lt;span class="lnt"> 36
&lt;/span>&lt;span class="lnt"> 37
&lt;/span>&lt;span class="lnt"> 38
&lt;/span>&lt;span class="lnt"> 39
&lt;/span>&lt;span class="lnt"> 40
&lt;/span>&lt;span class="lnt"> 41
&lt;/span>&lt;span class="lnt"> 42
&lt;/span>&lt;span class="lnt"> 43
&lt;/span>&lt;span class="lnt"> 44
&lt;/span>&lt;span class="lnt"> 45
&lt;/span>&lt;span class="lnt"> 46
&lt;/span>&lt;span class="lnt"> 47
&lt;/span>&lt;span class="lnt"> 48
&lt;/span>&lt;span class="lnt"> 49
&lt;/span>&lt;span class="lnt"> 50
&lt;/span>&lt;span class="lnt"> 51
&lt;/span>&lt;span class="lnt"> 52
&lt;/span>&lt;span class="lnt"> 53
&lt;/span>&lt;span class="lnt"> 54
&lt;/span>&lt;span class="lnt"> 55
&lt;/span>&lt;span class="lnt"> 56
&lt;/span>&lt;span class="lnt"> 57
&lt;/span>&lt;span class="lnt"> 58
&lt;/span>&lt;span class="lnt"> 59
&lt;/span>&lt;span class="lnt"> 60
&lt;/span>&lt;span class="lnt"> 61
&lt;/span>&lt;span class="lnt"> 62
&lt;/span>&lt;span class="lnt"> 63
&lt;/span>&lt;span class="lnt"> 64
&lt;/span>&lt;span class="lnt"> 65
&lt;/span>&lt;span class="lnt"> 66
&lt;/span>&lt;span class="lnt"> 67
&lt;/span>&lt;span class="lnt"> 68
&lt;/span>&lt;span class="lnt"> 69
&lt;/span>&lt;span class="lnt"> 70
&lt;/span>&lt;span class="lnt"> 71
&lt;/span>&lt;span class="lnt"> 72
&lt;/span>&lt;span class="lnt"> 73
&lt;/span>&lt;span class="lnt"> 74
&lt;/span>&lt;span class="lnt"> 75
&lt;/span>&lt;span class="lnt"> 76
&lt;/span>&lt;span class="lnt"> 77
&lt;/span>&lt;span class="lnt"> 78
&lt;/span>&lt;span class="lnt"> 79
&lt;/span>&lt;span class="lnt"> 80
&lt;/span>&lt;span class="lnt"> 81
&lt;/span>&lt;span class="lnt"> 82
&lt;/span>&lt;span class="lnt"> 83
&lt;/span>&lt;span class="lnt"> 84
&lt;/span>&lt;span class="lnt"> 85
&lt;/span>&lt;span class="lnt"> 86
&lt;/span>&lt;span class="lnt"> 87
&lt;/span>&lt;span class="lnt"> 88
&lt;/span>&lt;span class="lnt"> 89
&lt;/span>&lt;span class="lnt"> 90
&lt;/span>&lt;span class="lnt"> 91
&lt;/span>&lt;span class="lnt"> 92
&lt;/span>&lt;span class="lnt"> 93
&lt;/span>&lt;span class="lnt"> 94
&lt;/span>&lt;span class="lnt"> 95
&lt;/span>&lt;span class="lnt"> 96
&lt;/span>&lt;span class="lnt"> 97
&lt;/span>&lt;span class="lnt"> 98
&lt;/span>&lt;span class="lnt"> 99
&lt;/span>&lt;span class="lnt">100
&lt;/span>&lt;span class="lnt">101
&lt;/span>&lt;span class="lnt">102
&lt;/span>&lt;span class="lnt">103
&lt;/span>&lt;span class="lnt">104
&lt;/span>&lt;span class="lnt">105
&lt;/span>&lt;span class="lnt">106
&lt;/span>&lt;span class="lnt">107
&lt;/span>&lt;span class="lnt">108
&lt;/span>&lt;span class="lnt">109
&lt;/span>&lt;span class="lnt">110
&lt;/span>&lt;span class="lnt">111
&lt;/span>&lt;span class="lnt">112
&lt;/span>&lt;span class="lnt">113
&lt;/span>&lt;span class="lnt">114
&lt;/span>&lt;span class="lnt">115
&lt;/span>&lt;span class="lnt">116
&lt;/span>&lt;span class="lnt">117
&lt;/span>&lt;span class="lnt">118
&lt;/span>&lt;span class="lnt">119
&lt;/span>&lt;span class="lnt">120
&lt;/span>&lt;span class="lnt">121
&lt;/span>&lt;span class="lnt">122
&lt;/span>&lt;span class="lnt">123
&lt;/span>&lt;span class="lnt">124
&lt;/span>&lt;span class="lnt">125
&lt;/span>&lt;span class="lnt">126
&lt;/span>&lt;span class="lnt">127
&lt;/span>&lt;span class="lnt">128
&lt;/span>&lt;span class="lnt">129
&lt;/span>&lt;span class="lnt">130
&lt;/span>&lt;span class="lnt">131
&lt;/span>&lt;span class="lnt">132
&lt;/span>&lt;span class="lnt">133
&lt;/span>&lt;span class="lnt">134
&lt;/span>&lt;span class="lnt">135
&lt;/span>&lt;span class="lnt">136
&lt;/span>&lt;span class="lnt">137
&lt;/span>&lt;span class="lnt">138
&lt;/span>&lt;span class="lnt">139
&lt;/span>&lt;span class="lnt">140
&lt;/span>&lt;span class="lnt">141
&lt;/span>&lt;span class="lnt">142
&lt;/span>&lt;span class="lnt">143
&lt;/span>&lt;span class="lnt">144
&lt;/span>&lt;span class="lnt">145
&lt;/span>&lt;span class="lnt">146
&lt;/span>&lt;span class="lnt">147
&lt;/span>&lt;span class="lnt">148
&lt;/span>&lt;span class="lnt">149
&lt;/span>&lt;span class="lnt">150
&lt;/span>&lt;span class="lnt">151
&lt;/span>&lt;span class="lnt">152
&lt;/span>&lt;span class="lnt">153
&lt;/span>&lt;span class="lnt">154
&lt;/span>&lt;span class="lnt">155
&lt;/span>&lt;span class="lnt">156
&lt;/span>&lt;span class="lnt">157
&lt;/span>&lt;span class="lnt">158
&lt;/span>&lt;span class="lnt">159
&lt;/span>&lt;span class="lnt">160
&lt;/span>&lt;span class="lnt">161
&lt;/span>&lt;span class="lnt">162
&lt;/span>&lt;span class="lnt">163
&lt;/span>&lt;span class="lnt">164
&lt;/span>&lt;span class="lnt">165
&lt;/span>&lt;span class="lnt">166
&lt;/span>&lt;span class="lnt">167
&lt;/span>&lt;span class="lnt">168
&lt;/span>&lt;span class="lnt">169
&lt;/span>&lt;span class="lnt">170
&lt;/span>&lt;span class="lnt">171
&lt;/span>&lt;span class="lnt">172
&lt;/span>&lt;span class="lnt">173
&lt;/span>&lt;span class="lnt">174
&lt;/span>&lt;span class="lnt">175
&lt;/span>&lt;span class="lnt">176
&lt;/span>&lt;span class="lnt">177
&lt;/span>&lt;span class="lnt">178
&lt;/span>&lt;span class="lnt">179
&lt;/span>&lt;span class="lnt">180
&lt;/span>&lt;span class="lnt">181
&lt;/span>&lt;span class="lnt">182
&lt;/span>&lt;span class="lnt">183
&lt;/span>&lt;span class="lnt">184
&lt;/span>&lt;span class="lnt">185
&lt;/span>&lt;span class="lnt">186
&lt;/span>&lt;span class="lnt">187
&lt;/span>&lt;span class="lnt">188
&lt;/span>&lt;span class="lnt">189
&lt;/span>&lt;span class="lnt">190
&lt;/span>&lt;span class="lnt">191
&lt;/span>&lt;span class="lnt">192
&lt;/span>&lt;span class="lnt">193
&lt;/span>&lt;span class="lnt">194
&lt;/span>&lt;span class="lnt">195
&lt;/span>&lt;span class="lnt">196
&lt;/span>&lt;span class="lnt">197
&lt;/span>&lt;span class="lnt">198
&lt;/span>&lt;span class="lnt">199
&lt;/span>&lt;span class="lnt">200
&lt;/span>&lt;span class="lnt">201
&lt;/span>&lt;span class="lnt">202
&lt;/span>&lt;span class="lnt">203
&lt;/span>&lt;span class="lnt">204
&lt;/span>&lt;span class="lnt">205
&lt;/span>&lt;span class="lnt">206
&lt;/span>&lt;span class="lnt">207
&lt;/span>&lt;span class="lnt">208
&lt;/span>&lt;span class="lnt">209
&lt;/span>&lt;span class="lnt">210
&lt;/span>&lt;span class="lnt">211
&lt;/span>&lt;span class="lnt">212
&lt;/span>&lt;span class="lnt">213
&lt;/span>&lt;span class="lnt">214
&lt;/span>&lt;span class="lnt">215
&lt;/span>&lt;span class="lnt">216
&lt;/span>&lt;span class="lnt">217
&lt;/span>&lt;span class="lnt">218
&lt;/span>&lt;span class="lnt">219
&lt;/span>&lt;span class="lnt">220
&lt;/span>&lt;span class="lnt">221
&lt;/span>&lt;span class="lnt">222
&lt;/span>&lt;span class="lnt">223
&lt;/span>&lt;span class="lnt">224
&lt;/span>&lt;span class="lnt">225
&lt;/span>&lt;span class="lnt">226
&lt;/span>&lt;span class="lnt">227
&lt;/span>&lt;span class="lnt">228
&lt;/span>&lt;span class="lnt">229
&lt;/span>&lt;span class="lnt">230
&lt;/span>&lt;span class="lnt">231
&lt;/span>&lt;span class="lnt">232
&lt;/span>&lt;span class="lnt">233
&lt;/span>&lt;span class="lnt">234
&lt;/span>&lt;span class="lnt">235
&lt;/span>&lt;span class="lnt">236
&lt;/span>&lt;span class="lnt">237
&lt;/span>&lt;span class="lnt">238
&lt;/span>&lt;span class="lnt">239
&lt;/span>&lt;span class="lnt">240
&lt;/span>&lt;span class="lnt">241
&lt;/span>&lt;span class="lnt">242
&lt;/span>&lt;span class="lnt">243
&lt;/span>&lt;span class="lnt">244
&lt;/span>&lt;span class="lnt">245
&lt;/span>&lt;span class="lnt">246
&lt;/span>&lt;span class="lnt">247
&lt;/span>&lt;span class="lnt">248
&lt;/span>&lt;span class="lnt">249
&lt;/span>&lt;span class="lnt">250
&lt;/span>&lt;span class="lnt">251
&lt;/span>&lt;span class="lnt">252
&lt;/span>&lt;span class="lnt">253
&lt;/span>&lt;span class="lnt">254
&lt;/span>&lt;span class="lnt">255
&lt;/span>&lt;span class="lnt">256
&lt;/span>&lt;span class="lnt">257
&lt;/span>&lt;span class="lnt">258
&lt;/span>&lt;span class="lnt">259
&lt;/span>&lt;span class="lnt">260
&lt;/span>&lt;span class="lnt">261
&lt;/span>&lt;span class="lnt">262
&lt;/span>&lt;span class="lnt">263
&lt;/span>&lt;span class="lnt">264
&lt;/span>&lt;span class="lnt">265
&lt;/span>&lt;span class="lnt">266
&lt;/span>&lt;span class="lnt">267
&lt;/span>&lt;span class="lnt">268
&lt;/span>&lt;span class="lnt">269
&lt;/span>&lt;span class="lnt">270
&lt;/span>&lt;span class="lnt">271
&lt;/span>&lt;span class="lnt">272
&lt;/span>&lt;span class="lnt">273
&lt;/span>&lt;span class="lnt">274
&lt;/span>&lt;span class="lnt">275
&lt;/span>&lt;span class="lnt">276
&lt;/span>&lt;span class="lnt">277
&lt;/span>&lt;span class="lnt">278
&lt;/span>&lt;span class="lnt">279
&lt;/span>&lt;span class="lnt">280
&lt;/span>&lt;span class="lnt">281
&lt;/span>&lt;span class="lnt">282
&lt;/span>&lt;span class="lnt">283
&lt;/span>&lt;span class="lnt">284
&lt;/span>&lt;span class="lnt">285
&lt;/span>&lt;span class="lnt">286
&lt;/span>&lt;span class="lnt">287
&lt;/span>&lt;span class="lnt">288
&lt;/span>&lt;span class="lnt">289
&lt;/span>&lt;span class="lnt">290
&lt;/span>&lt;span class="lnt">291
&lt;/span>&lt;span class="lnt">292
&lt;/span>&lt;span class="lnt">293
&lt;/span>&lt;span class="lnt">294
&lt;/span>&lt;span class="lnt">295
&lt;/span>&lt;span class="lnt">296
&lt;/span>&lt;span class="lnt">297
&lt;/span>&lt;span class="lnt">298
&lt;/span>&lt;span class="lnt">299
&lt;/span>&lt;span class="lnt">300
&lt;/span>&lt;span class="lnt">301
&lt;/span>&lt;span class="lnt">302
&lt;/span>&lt;span class="lnt">303
&lt;/span>&lt;span class="lnt">304
&lt;/span>&lt;span class="lnt">305
&lt;/span>&lt;span class="lnt">306
&lt;/span>&lt;span class="lnt">307
&lt;/span>&lt;span class="lnt">308
&lt;/span>&lt;span class="lnt">309
&lt;/span>&lt;span class="lnt">310
&lt;/span>&lt;span class="lnt">311
&lt;/span>&lt;span class="lnt">312
&lt;/span>&lt;span class="lnt">313
&lt;/span>&lt;span class="lnt">314
&lt;/span>&lt;span class="lnt">315
&lt;/span>&lt;span class="lnt">316
&lt;/span>&lt;span class="lnt">317
&lt;/span>&lt;span class="lnt">318
&lt;/span>&lt;span class="lnt">319
&lt;/span>&lt;span class="lnt">320
&lt;/span>&lt;span class="lnt">321
&lt;/span>&lt;span class="lnt">322
&lt;/span>&lt;span class="lnt">323
&lt;/span>&lt;span class="lnt">324
&lt;/span>&lt;span class="lnt">325
&lt;/span>&lt;span class="lnt">326
&lt;/span>&lt;span class="lnt">327
&lt;/span>&lt;span class="lnt">328
&lt;/span>&lt;span class="lnt">329
&lt;/span>&lt;span class="lnt">330
&lt;/span>&lt;span class="lnt">331
&lt;/span>&lt;span class="lnt">332
&lt;/span>&lt;span class="lnt">333
&lt;/span>&lt;span class="lnt">334
&lt;/span>&lt;span class="lnt">335
&lt;/span>&lt;span class="lnt">336
&lt;/span>&lt;span class="lnt">337
&lt;/span>&lt;span class="lnt">338
&lt;/span>&lt;span class="lnt">339
&lt;/span>&lt;span class="lnt">340
&lt;/span>&lt;span class="lnt">341
&lt;/span>&lt;span class="lnt">342
&lt;/span>&lt;span class="lnt">343
&lt;/span>&lt;span class="lnt">344
&lt;/span>&lt;span class="lnt">345
&lt;/span>&lt;span class="lnt">346
&lt;/span>&lt;span class="lnt">347
&lt;/span>&lt;span class="lnt">348
&lt;/span>&lt;span class="lnt">349
&lt;/span>&lt;span class="lnt">350
&lt;/span>&lt;span class="lnt">351
&lt;/span>&lt;span class="lnt">352
&lt;/span>&lt;span class="lnt">353
&lt;/span>&lt;span class="lnt">354
&lt;/span>&lt;span class="lnt">355
&lt;/span>&lt;span class="lnt">356
&lt;/span>&lt;span class="lnt">357
&lt;/span>&lt;span class="lnt">358
&lt;/span>&lt;span class="lnt">359
&lt;/span>&lt;span class="lnt">360
&lt;/span>&lt;span class="lnt">361
&lt;/span>&lt;span class="lnt">362
&lt;/span>&lt;span class="lnt">363
&lt;/span>&lt;span class="lnt">364
&lt;/span>&lt;span class="lnt">365
&lt;/span>&lt;span class="lnt">366
&lt;/span>&lt;span class="lnt">367
&lt;/span>&lt;span class="lnt">368
&lt;/span>&lt;span class="lnt">369
&lt;/span>&lt;span class="lnt">370
&lt;/span>&lt;span class="lnt">371
&lt;/span>&lt;span class="lnt">372
&lt;/span>&lt;span class="lnt">373
&lt;/span>&lt;span class="lnt">374
&lt;/span>&lt;span class="lnt">375
&lt;/span>&lt;span class="lnt">376
&lt;/span>&lt;span class="lnt">377
&lt;/span>&lt;span class="lnt">378
&lt;/span>&lt;span class="lnt">379
&lt;/span>&lt;span class="lnt">380
&lt;/span>&lt;span class="lnt">381
&lt;/span>&lt;span class="lnt">382
&lt;/span>&lt;span class="lnt">383
&lt;/span>&lt;span class="lnt">384
&lt;/span>&lt;span class="lnt">385
&lt;/span>&lt;span class="lnt">386
&lt;/span>&lt;span class="lnt">387
&lt;/span>&lt;span class="lnt">388
&lt;/span>&lt;span class="lnt">389
&lt;/span>&lt;span class="lnt">390
&lt;/span>&lt;span class="lnt">391
&lt;/span>&lt;span class="lnt">392
&lt;/span>&lt;span class="lnt">393
&lt;/span>&lt;span class="lnt">394
&lt;/span>&lt;span class="lnt">395
&lt;/span>&lt;span class="lnt">396
&lt;/span>&lt;span class="lnt">397
&lt;/span>&lt;span class="lnt">398
&lt;/span>&lt;span class="lnt">399
&lt;/span>&lt;span class="lnt">400
&lt;/span>&lt;span class="lnt">401
&lt;/span>&lt;span class="lnt">402
&lt;/span>&lt;span class="lnt">403
&lt;/span>&lt;span class="lnt">404
&lt;/span>&lt;span class="lnt">405
&lt;/span>&lt;span class="lnt">406
&lt;/span>&lt;span class="lnt">407
&lt;/span>&lt;span class="lnt">408
&lt;/span>&lt;span class="lnt">409
&lt;/span>&lt;span class="lnt">410
&lt;/span>&lt;span class="lnt">411
&lt;/span>&lt;span class="lnt">412
&lt;/span>&lt;span class="lnt">413
&lt;/span>&lt;span class="lnt">414
&lt;/span>&lt;span class="lnt">415
&lt;/span>&lt;span class="lnt">416
&lt;/span>&lt;span class="lnt">417
&lt;/span>&lt;span class="lnt">418
&lt;/span>&lt;span class="lnt">419
&lt;/span>&lt;span class="lnt">420
&lt;/span>&lt;span class="lnt">421
&lt;/span>&lt;span class="lnt">422
&lt;/span>&lt;span class="lnt">423
&lt;/span>&lt;span class="lnt">424
&lt;/span>&lt;span class="lnt">425
&lt;/span>&lt;span class="lnt">426
&lt;/span>&lt;span class="lnt">427
&lt;/span>&lt;span class="lnt">428
&lt;/span>&lt;span class="lnt">429
&lt;/span>&lt;span class="lnt">430
&lt;/span>&lt;span class="lnt">431
&lt;/span>&lt;span class="lnt">432
&lt;/span>&lt;span class="lnt">433
&lt;/span>&lt;span class="lnt">434
&lt;/span>&lt;span class="lnt">435
&lt;/span>&lt;span class="lnt">436
&lt;/span>&lt;span class="lnt">437
&lt;/span>&lt;span class="lnt">438
&lt;/span>&lt;span class="lnt">439
&lt;/span>&lt;span class="lnt">440
&lt;/span>&lt;span class="lnt">441
&lt;/span>&lt;span class="lnt">442
&lt;/span>&lt;span class="lnt">443
&lt;/span>&lt;span class="lnt">444
&lt;/span>&lt;span class="lnt">445
&lt;/span>&lt;span class="lnt">446
&lt;/span>&lt;span class="lnt">447
&lt;/span>&lt;span class="lnt">448
&lt;/span>&lt;span class="lnt">449
&lt;/span>&lt;span class="lnt">450
&lt;/span>&lt;span class="lnt">451
&lt;/span>&lt;span class="lnt">452
&lt;/span>&lt;span class="lnt">453
&lt;/span>&lt;span class="lnt">454
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-gdscript3" data-lang="gdscript3">&lt;span class="line">&lt;span class="cl">&lt;span class="c1">## Ignore Visual Studio temporary files, build results, and&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">## files generated by popular Visual Studio add-ons.&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">##&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">## Get latest from https://github.com/github/gitignore/blob/master/VisualStudio.gitignore&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># User-specific files&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="o">*.&lt;/span>&lt;span class="n">rsuser&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="o">*.&lt;/span>&lt;span class="n">suo&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="o">*.&lt;/span>&lt;span class="n">user&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="o">*.&lt;/span>&lt;span class="n">userosscache&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="o">*.&lt;/span>&lt;span class="n">sln&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">docstates&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># User-specific files (MonoDevelop/Xamarin Studio)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="o">*.&lt;/span>&lt;span class="n">userprefs&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># Mono auto generated files&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">mono_crash&lt;/span>&lt;span class="o">.*&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># Build results&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">[&lt;/span>&lt;span class="n">Dd&lt;/span>&lt;span class="p">]&lt;/span>&lt;span class="n">ebug&lt;/span>&lt;span class="o">/&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">[&lt;/span>&lt;span class="n">Dd&lt;/span>&lt;span class="p">]&lt;/span>&lt;span class="n">ebugPublic&lt;/span>&lt;span class="o">/&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">[&lt;/span>&lt;span class="n">Rr&lt;/span>&lt;span class="p">]&lt;/span>&lt;span class="n">elease&lt;/span>&lt;span class="o">/&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">[&lt;/span>&lt;span class="n">Rr&lt;/span>&lt;span class="p">]&lt;/span>&lt;span class="n">eleases&lt;/span>&lt;span class="o">/&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">x64&lt;/span>&lt;span class="o">/&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">x86&lt;/span>&lt;span class="o">/&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">[&lt;/span>&lt;span class="n">Ww&lt;/span>&lt;span class="p">][&lt;/span>&lt;span class="n">Ii&lt;/span>&lt;span class="p">][&lt;/span>&lt;span class="n">Nn&lt;/span>&lt;span class="p">]&lt;/span>&lt;span class="mi">32&lt;/span>&lt;span class="o">/&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">[&lt;/span>&lt;span class="n">Aa&lt;/span>&lt;span class="p">][&lt;/span>&lt;span class="n">Rr&lt;/span>&lt;span class="p">][&lt;/span>&lt;span class="n">Mm&lt;/span>&lt;span class="p">]&lt;/span>&lt;span class="o">/&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">[&lt;/span>&lt;span class="n">Aa&lt;/span>&lt;span class="p">][&lt;/span>&lt;span class="n">Rr&lt;/span>&lt;span class="p">][&lt;/span>&lt;span class="n">Mm&lt;/span>&lt;span class="p">]&lt;/span>&lt;span class="mi">64&lt;/span>&lt;span class="o">/&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">bld&lt;/span>&lt;span class="o">/&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">[&lt;/span>&lt;span class="n">Bb&lt;/span>&lt;span class="p">]&lt;/span>&lt;span class="ow">in&lt;/span>&lt;span class="o">/&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">[&lt;/span>&lt;span class="n">Oo&lt;/span>&lt;span class="p">]&lt;/span>&lt;span class="n">bj&lt;/span>&lt;span class="o">/&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">[&lt;/span>&lt;span class="n">Ll&lt;/span>&lt;span class="p">]&lt;/span>&lt;span class="n">og&lt;/span>&lt;span class="o">/&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">[&lt;/span>&lt;span class="n">Ll&lt;/span>&lt;span class="p">]&lt;/span>&lt;span class="n">ogs&lt;/span>&lt;span class="o">/&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># Visual Studio 2015/2017 cache/options directory&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="o">.&lt;/span>&lt;span class="n">vs&lt;/span>&lt;span class="o">/&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># Uncomment if you have tasks that create the project&amp;#39;s static files in wwwroot&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">#wwwroot/&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># Visual Studio 2017 auto generated files&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">Generated&lt;/span>\ &lt;span class="n">Files&lt;/span>&lt;span class="o">/&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># MSTest test Results&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">[&lt;/span>&lt;span class="n">Tt&lt;/span>&lt;span class="p">]&lt;/span>&lt;span class="n">est&lt;/span>&lt;span class="p">[&lt;/span>&lt;span class="n">Rr&lt;/span>&lt;span class="p">]&lt;/span>&lt;span class="n">esult&lt;/span>&lt;span class="o">*/&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">[&lt;/span>&lt;span class="n">Bb&lt;/span>&lt;span class="p">]&lt;/span>&lt;span class="n">uild&lt;/span>&lt;span class="p">[&lt;/span>&lt;span class="n">Ll&lt;/span>&lt;span class="p">]&lt;/span>&lt;span class="n">og&lt;/span>&lt;span class="o">.*&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># NUnit&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="o">*.&lt;/span>&lt;span class="n">VisualState&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">xml&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">TestResult&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">xml&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">nunit&lt;/span>&lt;span class="o">-*.&lt;/span>&lt;span class="n">xml&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># Build Results of an ATL Project&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">[&lt;/span>&lt;span class="n">Dd&lt;/span>&lt;span class="p">]&lt;/span>&lt;span class="n">ebugPS&lt;/span>&lt;span class="o">/&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">[&lt;/span>&lt;span class="n">Rr&lt;/span>&lt;span class="p">]&lt;/span>&lt;span class="n">eleasePS&lt;/span>&lt;span class="o">/&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">dlldata&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">c&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># Benchmark Results&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">BenchmarkDotNet&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">Artifacts&lt;/span>&lt;span class="o">/&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># .NET&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">project&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">lock&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">json&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">project&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">fragment&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">lock&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">json&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">artifacts&lt;/span>&lt;span class="o">/&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># Tye&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="o">.&lt;/span>&lt;span class="n">tye&lt;/span>&lt;span class="o">/&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># ASP.NET Scaffolding&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">ScaffoldingReadMe&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">txt&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># StyleCop&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">StyleCopReport&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">xml&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># Files built by Visual Studio&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="o">*&lt;/span>&lt;span class="n">_i&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">c&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="o">*&lt;/span>&lt;span class="n">_p&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">c&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="o">*&lt;/span>&lt;span class="n">_h&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">h&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="o">*.&lt;/span>&lt;span class="n">ilk&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="o">*.&lt;/span>&lt;span class="n">meta&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="o">*.&lt;/span>&lt;span class="n">obj&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="o">*.&lt;/span>&lt;span class="n">iobj&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="o">*.&lt;/span>&lt;span class="n">pch&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="o">*.&lt;/span>&lt;span class="n">pdb&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="o">*.&lt;/span>&lt;span class="n">ipdb&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="o">*.&lt;/span>&lt;span class="n">pgc&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="o">*.&lt;/span>&lt;span class="n">pgd&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="o">*.&lt;/span>&lt;span class="n">rsp&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="o">*.&lt;/span>&lt;span class="n">sbr&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="o">*.&lt;/span>&lt;span class="n">tlb&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="o">*.&lt;/span>&lt;span class="n">tli&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="o">*.&lt;/span>&lt;span class="n">tlh&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="o">*.&lt;/span>&lt;span class="n">tmp&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="o">*.&lt;/span>&lt;span class="n">tmp_proj&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="o">*&lt;/span>&lt;span class="n">_wpftmp&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">csproj&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="o">*.&lt;/span>&lt;span class="n">log&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="o">*.&lt;/span>&lt;span class="n">vspscc&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="o">*.&lt;/span>&lt;span class="n">vssscc&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="o">.&lt;/span>&lt;span class="n">builds&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="o">*.&lt;/span>&lt;span class="n">pidb&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="o">*.&lt;/span>&lt;span class="n">svclog&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="o">*.&lt;/span>&lt;span class="n">scc&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># Chutzpah Test files&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">_Chutzpah&lt;/span>&lt;span class="o">*&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># Visual C++ cache files&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">ipch&lt;/span>&lt;span class="o">/&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="o">*.&lt;/span>&lt;span class="n">aps&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="o">*.&lt;/span>&lt;span class="n">ncb&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="o">*.&lt;/span>&lt;span class="n">opendb&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="o">*.&lt;/span>&lt;span class="n">opensdf&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="o">*.&lt;/span>&lt;span class="n">sdf&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="o">*.&lt;/span>&lt;span class="n">cachefile&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="o">*.&lt;/span>&lt;span class="n">VC&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">db&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="o">*.&lt;/span>&lt;span class="n">VC&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">VC&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">opendb&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># Visual Studio profiler&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="o">*.&lt;/span>&lt;span class="n">psess&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="o">*.&lt;/span>&lt;span class="n">vsp&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="o">*.&lt;/span>&lt;span class="n">vspx&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="o">*.&lt;/span>&lt;span class="n">sap&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># Visual Studio Trace Files&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="o">*.&lt;/span>&lt;span class="n">e2e&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># TFS 2012 Local Workspace&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="o">$&lt;/span>&lt;span class="n">tf&lt;/span>&lt;span class="o">/&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># Guidance Automation Toolkit&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="o">*.&lt;/span>&lt;span class="n">gpState&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># ReSharper is a .NET coding add-in&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">_ReSharper&lt;/span>&lt;span class="o">*/&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="o">*.&lt;/span>&lt;span class="p">[&lt;/span>&lt;span class="n">Rr&lt;/span>&lt;span class="p">]&lt;/span>&lt;span class="n">e&lt;/span>&lt;span class="p">[&lt;/span>&lt;span class="n">Ss&lt;/span>&lt;span class="p">]&lt;/span>&lt;span class="n">harper&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="o">*.&lt;/span>&lt;span class="n">DotSettings&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">user&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># TeamCity is a build add-in&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">_TeamCity&lt;/span>&lt;span class="o">*&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># DotCover is a Code Coverage Tool&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="o">*.&lt;/span>&lt;span class="n">dotCover&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># AxoCover is a Code Coverage Tool&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="o">.&lt;/span>&lt;span class="n">axoCover&lt;/span>&lt;span class="o">/*&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="o">!.&lt;/span>&lt;span class="n">axoCover&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">settings&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">json&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># Coverlet is a free, cross platform Code Coverage Tool&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">coverage&lt;/span>&lt;span class="o">*.&lt;/span>&lt;span class="n">json&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">coverage&lt;/span>&lt;span class="o">*.&lt;/span>&lt;span class="n">xml&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">coverage&lt;/span>&lt;span class="o">*.&lt;/span>&lt;span class="n">info&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># Visual Studio code coverage results&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="o">*.&lt;/span>&lt;span class="n">coverage&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="o">*.&lt;/span>&lt;span class="n">coveragexml&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># NCrunch&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">_NCrunch_&lt;/span>&lt;span class="o">*&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="o">.*&lt;/span>&lt;span class="n">crunch&lt;/span>&lt;span class="o">*.&lt;/span>&lt;span class="n">local&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">xml&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">nCrunchTemp_&lt;/span>&lt;span class="o">*&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># MightyMoose&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="o">*.&lt;/span>&lt;span class="n">mm&lt;/span>&lt;span class="o">.*&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">AutoTest&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">Net&lt;/span>&lt;span class="o">/&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># Web workbench (sass)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="o">.&lt;/span>&lt;span class="n">sass&lt;/span>&lt;span class="o">-&lt;/span>&lt;span class="n">cache&lt;/span>&lt;span class="o">/&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># Installshield output folder&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">[&lt;/span>&lt;span class="n">Ee&lt;/span>&lt;span class="p">]&lt;/span>&lt;span class="n">xpress&lt;/span>&lt;span class="o">/&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># DocProject is a documentation generator add-in&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">DocProject&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">buildhelp&lt;/span>&lt;span class="o">/&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">DocProject&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">Help&lt;/span>&lt;span class="o">/*.&lt;/span>&lt;span class="n">HxT&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">DocProject&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">Help&lt;/span>&lt;span class="o">/*.&lt;/span>&lt;span class="n">HxC&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">DocProject&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">Help&lt;/span>&lt;span class="o">/*.&lt;/span>&lt;span class="n">hhc&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">DocProject&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">Help&lt;/span>&lt;span class="o">/*.&lt;/span>&lt;span class="n">hhk&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">DocProject&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">Help&lt;/span>&lt;span class="o">/*.&lt;/span>&lt;span class="n">hhp&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">DocProject&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">Help&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">Html2&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">DocProject&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">Help&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">html&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># Click-Once directory&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">publish&lt;/span>&lt;span class="o">/&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># Publish Web Output&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="o">*.&lt;/span>&lt;span class="p">[&lt;/span>&lt;span class="n">Pp&lt;/span>&lt;span class="p">]&lt;/span>&lt;span class="n">ublish&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">xml&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="o">*.&lt;/span>&lt;span class="n">azurePubxml&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># Note: Comment the next line if you want to checkin your web deploy settings,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># but database connection strings (with potential passwords) will be unencrypted&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="o">*.&lt;/span>&lt;span class="n">pubxml&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="o">*.&lt;/span>&lt;span class="n">publishproj&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># Microsoft Azure Web App publish settings. Comment the next line if you want to&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># checkin your Azure Web App publish settings, but sensitive information contained&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># in these scripts will be unencrypted&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">PublishScripts&lt;/span>&lt;span class="o">/&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># NuGet Packages&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="o">*.&lt;/span>&lt;span class="n">nupkg&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># NuGet Symbol Packages&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="o">*.&lt;/span>&lt;span class="n">snupkg&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># The packages folder can be ignored because of Package Restore&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="o">**/&lt;/span>&lt;span class="p">[&lt;/span>&lt;span class="n">Pp&lt;/span>&lt;span class="p">]&lt;/span>&lt;span class="n">ackages&lt;/span>&lt;span class="o">/*&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># except build/, which is used as an MSBuild target.&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="o">!**/&lt;/span>&lt;span class="p">[&lt;/span>&lt;span class="n">Pp&lt;/span>&lt;span class="p">]&lt;/span>&lt;span class="n">ackages&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">build&lt;/span>&lt;span class="o">/&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># Uncomment if necessary however generally it will be regenerated when needed&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">#!**/[Pp]ackages/repositories.config&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># NuGet v3&amp;#39;s project.json files produces more ignorable files&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="o">*.&lt;/span>&lt;span class="n">nuget&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">props&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="o">*.&lt;/span>&lt;span class="n">nuget&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">targets&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># Microsoft Azure Build Output&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">csx&lt;/span>&lt;span class="o">/&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="o">*.&lt;/span>&lt;span class="n">build&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">csdef&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># Microsoft Azure Emulator&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">ecf&lt;/span>&lt;span class="o">/&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">rcf&lt;/span>&lt;span class="o">/&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># Windows Store app package directories and files&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">AppPackages&lt;/span>&lt;span class="o">/&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">BundleArtifacts&lt;/span>&lt;span class="o">/&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">Package&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">StoreAssociation&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">xml&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">_pkginfo&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">txt&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="o">*.&lt;/span>&lt;span class="n">appx&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="o">*.&lt;/span>&lt;span class="n">appxbundle&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="o">*.&lt;/span>&lt;span class="n">appxupload&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># Visual Studio cache files&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># files ending in .cache can be ignored&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="o">*.&lt;/span>&lt;span class="p">[&lt;/span>&lt;span class="n">Cc&lt;/span>&lt;span class="p">]&lt;/span>&lt;span class="n">ache&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># but keep track of directories ending in .cache&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="o">!&lt;/span>&lt;span class="err">?&lt;/span>&lt;span class="o">*.&lt;/span>&lt;span class="p">[&lt;/span>&lt;span class="n">Cc&lt;/span>&lt;span class="p">]&lt;/span>&lt;span class="n">ache&lt;/span>&lt;span class="o">/&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># Others&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">ClientBin&lt;/span>&lt;span class="o">/&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="o">~$*&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="o">*~&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="o">*.&lt;/span>&lt;span class="n">dbmdl&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="o">*.&lt;/span>&lt;span class="n">dbproj&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">schemaview&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="o">*.&lt;/span>&lt;span class="n">jfm&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="o">*.&lt;/span>&lt;span class="n">pfx&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="o">*.&lt;/span>&lt;span class="n">publishsettings&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">orleans&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">codegen&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">cs&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># Including strong name files can present a security risk&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># (https://github.com/github/gitignore/pull/2483#issue-259490424)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">#*.snk&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># Since there are multiple workflows, uncomment next line to ignore bower_components&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># (https://github.com/github/gitignore/pull/1529#issuecomment-104372622)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">#bower_components/&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># RIA/Silverlight projects&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">Generated_Code&lt;/span>&lt;span class="o">/&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># Backup &amp;amp; report files from converting an old project file&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># to a newer Visual Studio version. Backup files are not needed,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># because we have git ;-)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">_UpgradeReport_Files&lt;/span>&lt;span class="o">/&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">Backup&lt;/span>&lt;span class="o">*/&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">UpgradeLog&lt;/span>&lt;span class="o">*.&lt;/span>&lt;span class="n">XML&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">UpgradeLog&lt;/span>&lt;span class="o">*.&lt;/span>&lt;span class="n">htm&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">ServiceFabricBackup&lt;/span>&lt;span class="o">/&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="o">*.&lt;/span>&lt;span class="n">rptproj&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">bak&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># SQL Server files&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="o">*.&lt;/span>&lt;span class="n">mdf&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="o">*.&lt;/span>&lt;span class="n">ldf&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="o">*.&lt;/span>&lt;span class="n">ndf&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># Business Intelligence projects&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="o">*.&lt;/span>&lt;span class="n">rdl&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">data&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="o">*.&lt;/span>&lt;span class="n">bim&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">layout&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="o">*.&lt;/span>&lt;span class="n">bim_&lt;/span>&lt;span class="o">*.&lt;/span>&lt;span class="n">settings&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="o">*.&lt;/span>&lt;span class="n">rptproj&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">rsuser&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="o">*-&lt;/span> &lt;span class="p">[&lt;/span>&lt;span class="n">Bb&lt;/span>&lt;span class="p">]&lt;/span>&lt;span class="n">ackup&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">rdl&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="o">*-&lt;/span> &lt;span class="p">[&lt;/span>&lt;span class="n">Bb&lt;/span>&lt;span class="p">]&lt;/span>&lt;span class="n">ackup&lt;/span> &lt;span class="p">([&lt;/span>&lt;span class="mi">0&lt;/span>&lt;span class="o">-&lt;/span>&lt;span class="mi">9&lt;/span>&lt;span class="p">])&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">rdl&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="o">*-&lt;/span> &lt;span class="p">[&lt;/span>&lt;span class="n">Bb&lt;/span>&lt;span class="p">]&lt;/span>&lt;span class="n">ackup&lt;/span> &lt;span class="p">([&lt;/span>&lt;span class="mi">0&lt;/span>&lt;span class="o">-&lt;/span>&lt;span class="mi">9&lt;/span>&lt;span class="p">][&lt;/span>&lt;span class="mi">0&lt;/span>&lt;span class="o">-&lt;/span>&lt;span class="mi">9&lt;/span>&lt;span class="p">])&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">rdl&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># Microsoft Fakes&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">FakesAssemblies&lt;/span>&lt;span class="o">/&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># GhostDoc plugin setting file&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="o">*.&lt;/span>&lt;span class="n">GhostDoc&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">xml&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># Node.js Tools for Visual Studio&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="o">.&lt;/span>&lt;span class="n">ntvs_analysis&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">dat&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">node_modules&lt;/span>&lt;span class="o">/&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># Visual Studio 6 build log&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="o">*.&lt;/span>&lt;span class="n">plg&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># Visual Studio 6 workspace options file&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="o">*.&lt;/span>&lt;span class="n">opt&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># Visual Studio 6 auto-generated workspace file (contains which files were open etc.)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="o">*.&lt;/span>&lt;span class="n">vbw&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># Visual Studio LightSwitch build output&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="o">**/*.&lt;/span>&lt;span class="n">HTMLClient&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">GeneratedArtifacts&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="o">**/*.&lt;/span>&lt;span class="n">DesktopClient&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">GeneratedArtifacts&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="o">**/*.&lt;/span>&lt;span class="n">DesktopClient&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">ModelManifest&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">xml&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="o">**/*.&lt;/span>&lt;span class="n">Server&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">GeneratedArtifacts&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="o">**/*.&lt;/span>&lt;span class="n">Server&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">ModelManifest&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">xml&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">_Pvt_Extensions&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># Paket dependency manager&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="o">.&lt;/span>&lt;span class="n">paket&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">paket&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">exe&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">paket&lt;/span>&lt;span class="o">-&lt;/span>&lt;span class="n">files&lt;/span>&lt;span class="o">/&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># FAKE - F# Make&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="o">.&lt;/span>&lt;span class="n">fake&lt;/span>&lt;span class="o">/&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># CodeRush personal settings&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="o">.&lt;/span>&lt;span class="n">cr&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">personal&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># Python Tools for Visual Studio (PTVS)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">__pycache__&lt;/span>&lt;span class="o">/&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="o">*.&lt;/span>&lt;span class="n">pyc&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># Cake - Uncomment if you are using it&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># tools/**&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># !tools/packages.config&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># Tabs Studio&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="o">*.&lt;/span>&lt;span class="n">tss&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># Telerik&amp;#39;s JustMock configuration file&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="o">*.&lt;/span>&lt;span class="n">jmconfig&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># BizTalk build output&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="o">*.&lt;/span>&lt;span class="n">btp&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">cs&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="o">*.&lt;/span>&lt;span class="n">btm&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">cs&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="o">*.&lt;/span>&lt;span class="n">odx&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">cs&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="o">*.&lt;/span>&lt;span class="n">xsd&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">cs&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># OpenCover UI analysis results&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">OpenCover&lt;/span>&lt;span class="o">/&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># Azure Stream Analytics local run output&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">ASALocalRun&lt;/span>&lt;span class="o">/&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># MSBuild Binary and Structured Log&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="o">*.&lt;/span>&lt;span class="n">binlog&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># NVidia Nsight GPU debugger configuration file&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="o">*.&lt;/span>&lt;span class="n">nvuser&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># MFractors (Xamarin productivity tool) working folder&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="o">.&lt;/span>&lt;span class="n">mfractor&lt;/span>&lt;span class="o">/&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># Local History for Visual Studio&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="o">.&lt;/span>&lt;span class="n">localhistory&lt;/span>&lt;span class="o">/&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># BeatPulse healthcheck temp database&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">healthchecksdb&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># Backup folder for Package Reference Convert tool in Visual Studio 2017&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">MigrationBackup&lt;/span>&lt;span class="o">/&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># Ionide (cross platform F# VS Code tools) working folder&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="o">.&lt;/span>&lt;span class="n">ionide&lt;/span>&lt;span class="o">/&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># Fody - auto-generated XML schema&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">FodyWeavers&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">xsd&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">##&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">## Visual studio for Mac&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">##&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># globs&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">Makefile&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="ow">in&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="o">*.&lt;/span>&lt;span class="n">userprefs&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="o">*.&lt;/span>&lt;span class="n">usertasks&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">config&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">make&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">config&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">status&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">aclocal&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">m4&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">install&lt;/span>&lt;span class="o">-&lt;/span>&lt;span class="n">sh&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">autom4te&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">cache&lt;/span>&lt;span class="o">/&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="o">*.&lt;/span>&lt;span class="n">tar&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">gz&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">tarballs&lt;/span>&lt;span class="o">/&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">test&lt;/span>&lt;span class="o">-&lt;/span>&lt;span class="n">results&lt;/span>&lt;span class="o">/&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># Mac bundle stuff&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="o">*.&lt;/span>&lt;span class="n">dmg&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="o">*.&lt;/span>&lt;span class="n">app&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># content below from: https://github.com/github/gitignore/blob/master/Global/macOS.gitignore&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># General&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="o">.&lt;/span>&lt;span class="n">DS_Store&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="o">.&lt;/span>&lt;span class="n">AppleDouble&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="o">.&lt;/span>&lt;span class="n">LSOverride&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># Icon must end with two \r&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">Icon&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># Thumbnails&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="o">.&lt;/span>&lt;span class="n">_&lt;/span>&lt;span class="o">*&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># Files that might appear in the root of a volume&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="o">.&lt;/span>&lt;span class="n">DocumentRevisions&lt;/span>&lt;span class="o">-&lt;/span>&lt;span class="n">V100&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="o">.&lt;/span>&lt;span class="n">fseventsd&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="o">.&lt;/span>&lt;span class="n">Spotlight&lt;/span>&lt;span class="o">-&lt;/span>&lt;span class="n">V100&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="o">.&lt;/span>&lt;span class="n">TemporaryItems&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="o">.&lt;/span>&lt;span class="n">Trashes&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="o">.&lt;/span>&lt;span class="n">VolumeIcon&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">icns&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="o">.&lt;/span>&lt;span class="n">com&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">apple&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">timemachine&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">donotpresent&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># Directories potentially created on remote AFP share&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="o">.&lt;/span>&lt;span class="n">AppleDB&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="o">.&lt;/span>&lt;span class="n">AppleDesktop&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">Network&lt;/span> &lt;span class="n">Trash&lt;/span> &lt;span class="n">Folder&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">Temporary&lt;/span> &lt;span class="n">Items&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="o">.&lt;/span>&lt;span class="n">apdisk&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># content below from: https://github.com/github/gitignore/blob/master/Global/Windows.gitignore&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># Windows thumbnail cache files&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">Thumbs&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">db&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">ehthumbs&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">db&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">ehthumbs_vista&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">db&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># Dump file&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="o">*.&lt;/span>&lt;span class="n">stackdump&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># Folder config file&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">[&lt;/span>&lt;span class="n">Dd&lt;/span>&lt;span class="p">]&lt;/span>&lt;span class="n">esktop&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">ini&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># Recycle Bin used on file shares&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="o">$&lt;/span>&lt;span class="n">RECYCLE&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">BIN&lt;/span>&lt;span class="o">/&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># Windows Installer files&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="o">*.&lt;/span>&lt;span class="n">cab&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="o">*.&lt;/span>&lt;span class="n">msi&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="o">*.&lt;/span>&lt;span class="n">msix&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="o">*.&lt;/span>&lt;span class="n">msm&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="o">*.&lt;/span>&lt;span class="n">msp&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># Windows shortcuts&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="o">*.&lt;/span>&lt;span class="n">lnk&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># JetBrains Rider&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="o">.&lt;/span>&lt;span class="n">idea&lt;/span>&lt;span class="o">/&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="o">*.&lt;/span>&lt;span class="n">sln&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">iml&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">##&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">## Visual Studio Code&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">##&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="o">.&lt;/span>&lt;span class="n">vscode&lt;/span>&lt;span class="o">/*&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="o">!.&lt;/span>&lt;span class="n">vscode&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">settings&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">json&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="o">!.&lt;/span>&lt;span class="n">vscode&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">tasks&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">json&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="o">!.&lt;/span>&lt;span class="n">vscode&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">launch&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">json&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="o">!.&lt;/span>&lt;span class="n">vscode&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">extensions&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">json&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>Existem muitos arquivos para o Visual Studio, mas também inclui itens que geralmente não precisam ser gerenciados no git, como o &lt;code>.DS_Store&lt;/code> do Mac.&lt;/p>
&lt;h2 id="sites-de-referência">Sites de Referência
&lt;/h2>&lt;ul>
&lt;li>&lt;a class="link" href="https://docs.microsoft.com/ja-jp/dotnet/core/install/windows?tabs=net60" target="_blank" rel="noopener"
>Instalar o .NET no Windows&lt;/a>&lt;/li>
&lt;/ul></description></item><item><title>11 Jogos Favoritos</title><link>http://kenji.blog/pt/p/11-jogos-favoritos/</link><pubDate>Mon, 12 Sep 2022 19:28:50 +0900</pubDate><guid>http://kenji.blog/pt/p/11-jogos-favoritos/</guid><description>&lt;img src="http://kenji.blog/p/%E5%A5%BD%E3%81%8D%E3%81%AA%E3%82%B2%E3%83%BC%E3%83%A011%E9%81%B8/img_12.png" alt="Featured image of post 11 Jogos Favoritos" />&lt;p>Quando me lembrei dos meus jogos favoritos, a lista acabou sendo só de clássicos consagrados.
Como muitos são antigos, se você ainda não jogou, por favor, experimente.&lt;/p>
&lt;h2 id="game-boy">Game Boy
&lt;/h2>&lt;p>&lt;img src="http://kenji.blog/p/%E5%A5%BD%E3%81%8D%E3%81%AA%E3%82%B2%E3%83%BC%E3%83%A011%E9%81%B8/img_1.png"
width="300"
height="365"
srcset="http://kenji.blog/p/%E5%A5%BD%E3%81%8D%E3%81%AA%E3%82%B2%E3%83%BC%E3%83%A011%E9%81%B8/img_1_hu3e93850260927d2ca0508aaabeb65e85_100200_480x0_resize_box_3.png 480w, http://kenji.blog/p/%E5%A5%BD%E3%81%8D%E3%81%AA%E3%82%B2%E3%83%BC%E3%83%A011%E9%81%B8/img_1_hu3e93850260927d2ca0508aaabeb65e85_100200_1024x0_resize_box_3.png 1024w"
loading="lazy"
alt="img_1.png"
class="gallery-image"
data-flex-grow="82"
data-flex-basis="197px"
>
O Game Boy original é um console portátil lançado pela Nintendo em 1989.
Posteriormente, foram lançados sucessores como o Game Boy Color e o Game Boy Advance.&lt;/p>
&lt;h3 id="-saga-2-hihou-densetsu">① Sa・Ga 2: Hihou Densetsu
&lt;/h3>&lt;p>&lt;img src="http://kenji.blog/p/%E5%A5%BD%E3%81%8D%E3%81%AA%E3%82%B2%E3%83%BC%E3%83%A011%E9%81%B8/img_2.png"
width="300"
height="419"
srcset="http://kenji.blog/p/%E5%A5%BD%E3%81%8D%E3%81%AA%E3%82%B2%E3%83%BC%E3%83%A011%E9%81%B8/img_2_hu43aa9545e862274f62403fd117d11c30_247115_480x0_resize_box_3.png 480w, http://kenji.blog/p/%E5%A5%BD%E3%81%8D%E3%81%AA%E3%82%B2%E3%83%BC%E3%83%A011%E9%81%B8/img_2_hu43aa9545e862274f62403fd117d11c30_247115_1024x0_resize_box_3.png 1024w"
loading="lazy"
alt="img_2.png"
class="gallery-image"
data-flex-grow="71"
data-flex-basis="171px"
>
Um jogo de RPG lançado pela Square (agora Square Enix) em 1990.
É uma história onde você coleta relíquias escondidas em várias fases.
Foi o primeiro jogo de RPG que eu joguei.&lt;/p>
&lt;h3 id="-kirbys-dream-land">② Kirby&amp;rsquo;s Dream Land
&lt;/h3>&lt;p>&lt;img src="http://kenji.blog/p/%E5%A5%BD%E3%81%8D%E3%81%AA%E3%82%B2%E3%83%BC%E3%83%A011%E9%81%B8/img_3.png"
width="300"
height="350"
srcset="http://kenji.blog/p/%E5%A5%BD%E3%81%8D%E3%81%AA%E3%82%B2%E3%83%BC%E3%83%A011%E9%81%B8/img_3_hu0e2b5ac71ca0bd227f71e503dbe94bc6_170917_480x0_resize_box_3.png 480w, http://kenji.blog/p/%E5%A5%BD%E3%81%8D%E3%81%AA%E3%82%B2%E3%83%BC%E3%83%A011%E9%81%B8/img_3_hu0e2b5ac71ca0bd227f71e503dbe94bc6_170917_1024x0_resize_box_3.png 1024w"
loading="lazy"
alt="img_3.png"
class="gallery-image"
data-flex-grow="85"
data-flex-basis="205px"
>
Um jogo de ação lançado pela Nintendo em 1992. Desenvolvido pela HAL Laboratory.
Um jogo onde você avança sugando inimigos e flutuando no ar sugando ar.
A música e os efeitos sonoros são muito bem feitos, tornando-o um jogo rítmico.&lt;/p>
&lt;h3 id="-pokémon-red-e-green">③ Pokémon Red e Green
&lt;/h3>&lt;p>&lt;img src="http://kenji.blog/p/%E5%A5%BD%E3%81%8D%E3%81%AA%E3%82%B2%E3%83%BC%E3%83%A011%E9%81%B8/img_4.png"
width="600"
height="338"
srcset="http://kenji.blog/p/%E5%A5%BD%E3%81%8D%E3%81%AA%E3%82%B2%E3%83%BC%E3%83%A011%E9%81%B8/img_4_hu7ba0e1f65107e5c20a30c245d9f58ae1_369551_480x0_resize_box_3.png 480w, http://kenji.blog/p/%E5%A5%BD%E3%81%8D%E3%81%AA%E3%82%B2%E3%83%BC%E3%83%A011%E9%81%B8/img_4_hu7ba0e1f65107e5c20a30c245d9f58ae1_369551_1024x0_resize_box_3.png 1024w"
loading="lazy"
alt="img_4.png"
class="gallery-image"
data-flex-grow="177"
data-flex-basis="426px"
>
Um jogo de RPG lançado pela Nintendo em 1996. Desenvolvido por Nintendo EAD, Game Freak e Creatures.
Depois disso, foi transformado em anime e ganhou popularidade explosiva, mas eu só joguei esta primeira geração.&lt;/p>
&lt;h2 id="super-famicom">Super Famicom
&lt;/h2>&lt;p>&lt;img src="http://kenji.blog/p/%E5%A5%BD%E3%81%8D%E3%81%AA%E3%82%B2%E3%83%BC%E3%83%A011%E9%81%B8/img_5.png"
width="600"
height="266"
srcset="http://kenji.blog/p/%E5%A5%BD%E3%81%8D%E3%81%AA%E3%82%B2%E3%83%BC%E3%83%A011%E9%81%B8/img_5_huad11a387bc527c77f3dc50722dcbe71e_95134_480x0_resize_box_3.png 480w, http://kenji.blog/p/%E5%A5%BD%E3%81%8D%E3%81%AA%E3%82%B2%E3%83%BC%E3%83%A011%E9%81%B8/img_5_huad11a387bc527c77f3dc50722dcbe71e_95134_1024x0_resize_box_3.png 1024w"
loading="lazy"
alt="img_5.png"
class="gallery-image"
data-flex-grow="225"
data-flex-basis="541px"
>
Um console de videogame doméstico lançado pela Nintendo em 1990. Conhecido no exterior como SNES (Super Nintendo Entertainment System).&lt;/p>
&lt;h3 id="-super-mario-kart">④ Super Mario Kart
&lt;/h3>&lt;p>&lt;img src="http://kenji.blog/p/%E5%A5%BD%E3%81%8D%E3%81%AA%E3%82%B2%E3%83%BC%E3%83%A011%E9%81%B8/img_6.png"
width="273"
height="500"
srcset="http://kenji.blog/p/%E5%A5%BD%E3%81%8D%E3%81%AA%E3%82%B2%E3%83%BC%E3%83%A011%E9%81%B8/img_6_hufd407ac1367cf89272f19478255c8fb8_345614_480x0_resize_box_3.png 480w, http://kenji.blog/p/%E5%A5%BD%E3%81%8D%E3%81%AA%E3%82%B2%E3%83%BC%E3%83%A011%E9%81%B8/img_6_hufd407ac1367cf89272f19478255c8fb8_345614_1024x0_resize_box_3.png 1024w"
loading="lazy"
alt="img_6.png"
class="gallery-image"
data-flex-grow="54"
data-flex-basis="131px"
>
Um jogo para Super Famicom lançado pela Nintendo em 1992.
Um jogo de corrida onde você compete pela posição enquanto atrapalha os oponentes jogando cascos e bananas.
Lembro-me de jogar junto com a família e amigos.&lt;/p>
&lt;h3 id="-dragon-quest-v-hand-of-the-heavenly-bride">⑤ Dragon Quest V: Hand of the Heavenly Bride
&lt;/h3>&lt;p>&lt;img src="http://kenji.blog/p/%E5%A5%BD%E3%81%8D%E3%81%AA%E3%82%B2%E3%83%BC%E3%83%A011%E9%81%B8/img_7.png"
width="300"
height="511"
srcset="http://kenji.blog/p/%E5%A5%BD%E3%81%8D%E3%81%AA%E3%82%B2%E3%83%BC%E3%83%A011%E9%81%B8/img_7_hua74c1fb9d68b702d91ef66bdb2d5d98b_299824_480x0_resize_box_3.png 480w, http://kenji.blog/p/%E5%A5%BD%E3%81%8D%E3%81%AA%E3%82%B2%E3%83%BC%E3%83%A011%E9%81%B8/img_7_hua74c1fb9d68b702d91ef66bdb2d5d98b_299824_1024x0_resize_box_3.png 1024w"
loading="lazy"
alt="img_7.png"
class="gallery-image"
data-flex-grow="58"
data-flex-basis="140px"
>
Um jogo de RPG lançado pela Enix em 1992.
É um jogo que também tem elementos de escolher uma parceira de casamento e fazer dos monstros derrotados seus aliados.
Joguei muito até conseguir recrutar vários Metal Slimes (Hagure Metal).&lt;/p>
&lt;h3 id="-final-fantasy-v">⑥ Final Fantasy V
&lt;/h3>&lt;p>&lt;img src="http://kenji.blog/p/%E5%A5%BD%E3%81%8D%E3%81%AA%E3%82%B2%E3%83%BC%E3%83%A011%E9%81%B8/img_8.png"
width="300"
height="168"
srcset="http://kenji.blog/p/%E5%A5%BD%E3%81%8D%E3%81%AA%E3%82%B2%E3%83%BC%E3%83%A011%E9%81%B8/img_8_hu436060f51fbe2bacd7e14a949683aa78_79328_480x0_resize_box_3.png 480w, http://kenji.blog/p/%E5%A5%BD%E3%81%8D%E3%81%AA%E3%82%B2%E3%83%BC%E3%83%A011%E9%81%B8/img_8_hu436060f51fbe2bacd7e14a949683aa78_79328_1024x0_resize_box_3.png 1024w"
loading="lazy"
alt="img_8.png"
class="gallery-image"
data-flex-grow="178"
data-flex-basis="428px"
>
Um jogo de RPG lançado pela Square em 1992.
Tem um elemento de repetição onde você escolhe trabalhos (jobs) e domina habilidades.
Assim como em Dragon Quest, lembro-me de subir de nível sem parar nas cavernas.&lt;/p>
&lt;h3 id="-tornekos-great-adventure-mystery-dungeon">⑦ Torneko&amp;rsquo;s Great Adventure: Mystery Dungeon
&lt;/h3>&lt;p>&lt;img src="http://kenji.blog/p/%E5%A5%BD%E3%81%8D%E3%81%AA%E3%82%B2%E3%83%BC%E3%83%A011%E9%81%B8/img_9.png"
width="300"
height="547"
srcset="http://kenji.blog/p/%E5%A5%BD%E3%81%8D%E3%81%AA%E3%82%B2%E3%83%BC%E3%83%A011%E9%81%B8/img_9_huf53b606ed61f5c15f0df49ad13e49ec8_318133_480x0_resize_box_3.png 480w, http://kenji.blog/p/%E5%A5%BD%E3%81%8D%E3%81%AA%E3%82%B2%E3%83%BC%E3%83%A011%E9%81%B8/img_9_huf53b606ed61f5c15f0df49ad13e49ec8_318133_1024x0_resize_box_3.png 1024w"
loading="lazy"
alt="img_9.png"
class="gallery-image"
data-flex-grow="54"
data-flex-basis="131px"
>
Um jogo roguelike lançado pela Chunsoft em 1993.
O predecessor da série Mystery Dungeon.
Sua característica é que o formato da masmorra muda aleatoriamente toda vez.
O slogan é &amp;ldquo;O RPG que você pode jogar 1000 vezes&amp;rdquo;.&lt;/p>
&lt;h3 id="-mystery-dungeon-2-shiren-the-wanderer">⑧ Mystery Dungeon 2: Shiren the Wanderer
&lt;/h3>&lt;p>&lt;img src="http://kenji.blog/p/%E5%A5%BD%E3%81%8D%E3%81%AA%E3%82%B2%E3%83%BC%E3%83%A011%E9%81%B8/img_15.png"
width="300"
height="538"
srcset="http://kenji.blog/p/%E5%A5%BD%E3%81%8D%E3%81%AA%E3%82%B2%E3%83%BC%E3%83%A011%E9%81%B8/img_15_hu20d7e1ac46b9aa246626c2316c605072_252589_480x0_resize_box_3.png 480w, http://kenji.blog/p/%E5%A5%BD%E3%81%8D%E3%81%AA%E3%82%B2%E3%83%BC%E3%83%A011%E9%81%B8/img_15_hu20d7e1ac46b9aa246626c2316c605072_252589_1024x0_resize_box_3.png 1024w"
loading="lazy"
alt="img_15.png"
class="gallery-image"
data-flex-grow="55"
data-flex-basis="133px"
>
Um jogo roguelike lançado pela Chunsoft em 1995.
Uma sequência de &amp;ldquo;Torneko&amp;rsquo;s Great Adventure&amp;rdquo; da série Mystery Dungeon.
Existem lojas dentro da masmorra onde você pode comprar itens.
(Se você sair da loja sem comprar, o lojista correrá atrás de você.)&lt;/p>
&lt;h3 id="-earthbound-mother-2">⑨ EarthBound (MOTHER 2)
&lt;/h3>&lt;p>&lt;img src="http://kenji.blog/p/%E5%A5%BD%E3%81%8D%E3%81%AA%E3%82%B2%E3%83%BC%E3%83%A011%E9%81%B8/img_11.png"
width="277"
height="500"
srcset="http://kenji.blog/p/%E5%A5%BD%E3%81%8D%E3%81%AA%E3%82%B2%E3%83%BC%E3%83%A011%E9%81%B8/img_11_huc9569cdf9793ce314b2038283529730d_132246_480x0_resize_box_3.png 480w, http://kenji.blog/p/%E5%A5%BD%E3%81%8D%E3%81%AA%E3%82%B2%E3%83%BC%E3%83%A011%E9%81%B8/img_11_huc9569cdf9793ce314b2038283529730d_132246_1024x0_resize_box_3.png 1024w"
loading="lazy"
alt="img_11.png"
class="gallery-image"
data-flex-grow="55"
data-flex-basis="132px"
>
O segundo jogo da série MOTHER, lançado pela Nintendo em 1994. Desenvolvido por Ape e HAL Laboratory.
Mais tarde, em 2006, MOTHER 3 foi lançado. É uma obra produzida por Shigesato Itoi,
e está repleta de uma visão de mundo única e palavras filosóficas.&lt;/p>
&lt;h3 id="-the-legend-of-zelda-a-link-to-the-past">⑩ The Legend of Zelda: A Link to the Past
&lt;/h3>&lt;p>&lt;img src="http://kenji.blog/p/%E5%A5%BD%E3%81%8D%E3%81%AA%E3%82%B2%E3%83%BC%E3%83%A011%E9%81%B8/img_14.png"
width="276"
height="498"
srcset="http://kenji.blog/p/%E5%A5%BD%E3%81%8D%E3%81%AA%E3%82%B2%E3%83%BC%E3%83%A011%E9%81%B8/img_14_hu224d656baa1b4164cdd4a067c6d88d26_298137_480x0_resize_box_3.png 480w, http://kenji.blog/p/%E5%A5%BD%E3%81%8D%E3%81%AA%E3%82%B2%E3%83%BC%E3%83%A011%E9%81%B8/img_14_hu224d656baa1b4164cdd4a067c6d88d26_298137_1024x0_resize_box_3.png 1024w"
loading="lazy"
alt="img_14.png"
class="gallery-image"
data-flex-grow="55"
data-flex-basis="133px"
>
Um jogo de ação e aventura lançado pela Nintendo em 1991.
Um jogo onde você avança coletando vários itens e resolvendo pequenos quebra-cabeças.
Várias sequências foram lançadas depois. (&lt;a class="link" href="https://ja.wikipedia.org/wiki/%E3%82%BC%E3%83%AB%E3%83%80%E3%81%AE%E4%BC%9D%E8%AA%AC%E3%82%B7%E3%83%AA%E3%83%BC%E3%82%BA%E3%81%AE%E4%BD%9C%E5%93%81%E3%83%BB%E9%96%A2%E9%80%A3%E4%BD%9C%E5%93%81%E3%81%AE%E4%B8%80%E8%A6%A7" target="_blank" rel="noopener"
>Referência&lt;/a>)&lt;/p>
&lt;h2 id="nintendo-switch">Nintendo Switch
&lt;/h2>&lt;p>&lt;img src="http://kenji.blog/p/%E5%A5%BD%E3%81%8D%E3%81%AA%E3%82%B2%E3%83%BC%E3%83%A011%E9%81%B8/img_13.png"
width="600"
height="324"
srcset="http://kenji.blog/p/%E5%A5%BD%E3%81%8D%E3%81%AA%E3%82%B2%E3%83%BC%E3%83%A011%E9%81%B8/img_13_huf5d97a9af892bf0a7a6a5b9a9eb646da_154207_480x0_resize_box_3.png 480w, http://kenji.blog/p/%E5%A5%BD%E3%81%8D%E3%81%AA%E3%82%B2%E3%83%BC%E3%83%A011%E9%81%B8/img_13_huf5d97a9af892bf0a7a6a5b9a9eb646da_154207_1024x0_resize_box_3.png 1024w"
loading="lazy"
alt="img_13.png"
class="gallery-image"
data-flex-grow="185"
data-flex-basis="444px"
>
Um console de videogame doméstico lançado pela Nintendo em 2017.&lt;/p>
&lt;h3 id="-splatoon-2">⑪ Splatoon 2
&lt;/h3>&lt;p>&lt;img src="http://kenji.blog/p/%E5%A5%BD%E3%81%8D%E3%81%AA%E3%82%B2%E3%83%BC%E3%83%A011%E9%81%B8/img_12.png"
width="340"
height="550"
srcset="http://kenji.blog/p/%E5%A5%BD%E3%81%8D%E3%81%AA%E3%82%B2%E3%83%BC%E3%83%A011%E9%81%B8/img_12_hu03b5dadc912359ffea73dab76258d285_471079_480x0_resize_box_3.png 480w, http://kenji.blog/p/%E5%A5%BD%E3%81%8D%E3%81%AA%E3%82%B2%E3%83%BC%E3%83%A011%E9%81%B8/img_12_hu03b5dadc912359ffea73dab76258d285_471079_1024x0_resize_box_3.png 1024w"
loading="lazy"
alt="img_12.png"
class="gallery-image"
data-flex-grow="61"
data-flex-basis="148px"
>
Um jogo de tiro e ação lançado pela Nintendo em 2017.
Um jogo onde você usa tinta para garantir território ou derrotar oponentes para vencer.
Em 2022, a sequência Splatoon 3 foi lançada.&lt;/p></description></item><item><title>Comando para evitar a geração automática de .DS_Store no macOS</title><link>http://kenji.blog/pt/p/comando-para-evitar-a-geracao-automatica-de-ds-store-no-macos/</link><pubDate>Mon, 12 Sep 2022 16:03:42 +0900</pubDate><guid>http://kenji.blog/pt/p/comando-para-evitar-a-geracao-automatica-de-ds-store-no-macos/</guid><description>&lt;img src="http://kenji.blog/p/macos%E3%81%A7.ds_store%E3%82%92%E8%87%AA%E5%8B%95%E7%94%9F%E6%88%90%E3%81%97%E3%81%AA%E3%81%84%E3%82%88%E3%81%86%E3%81%AB%E3%81%99%E3%82%8B%E3%82%B3%E3%83%9E%E3%83%B3%E3%83%89/img.png" alt="Featured image of post Comando para evitar a geração automática de .DS_Store no macOS" />&lt;p>O comando para evitar a geração automática do .DS_Store no macOS é o seguinte.
Por favor, execute-o no terminal.&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">defaults write com.apple.desktopservices DSDontWriteNetworkStores &lt;span class="nb">true&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>Após executar o comando, reinicie o Finder.&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">killall Finder
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>Para restaurar a configuração original, execute o seguinte comando.&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">defaults delete com.apple.desktopservices DSDontWriteNetworkStores &lt;span class="nb">false&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>Assim como acima, se você alterar a configuração, reinicie o Finder.&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">killall Finder
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div></description></item><item><title>Excluir .DS_Store em lote com PowerShell</title><link>http://kenji.blog/pt/p/excluir-.ds_store-em-lote-com-powershell/</link><pubDate>Mon, 12 Sep 2022 10:11:42 +0900</pubDate><guid>http://kenji.blog/pt/p/excluir-.ds_store-em-lote-com-powershell/</guid><description>&lt;img src="http://kenji.blog/p/powershell%E3%81%A7.ds_store%E3%82%92%E4%B8%80%E6%8B%AC%E5%89%8A%E9%99%A4%E3%81%99%E3%82%8B/img.png" alt="Featured image of post Excluir .DS_Store em lote com PowerShell" />&lt;p>Mova o diretório atual para a pasta de destino e execute o seguinte comando para excluir em lote os arquivos .DS_Store, incluindo aqueles em subpastas.&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-powershell" data-lang="powershell">&lt;span class="line">&lt;span class="cl">&lt;span class="nb">Get-ChildItem&lt;/span> &lt;span class="p">.&lt;/span> &lt;span class="n">-include&lt;/span> &lt;span class="s1">&amp;#39;.DS_Store&amp;#39;&lt;/span> &lt;span class="n">-Recurse&lt;/span> &lt;span class="n">-Force&lt;/span> &lt;span class="p">|&lt;/span> &lt;span class="nb">Remove-Item&lt;/span> &lt;span class="n">-Force&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div></description></item><item><title>Shortcodes úteis no HUGO</title><link>http://kenji.blog/pt/p/hugo%E3%81%A7%E4%BD%BF%E3%81%88%E3%82%8B%E3%82%B7%E3%83%A7%E3%83%BC%E3%83%88%E3%82%B3%E3%83%BC%E3%83%89/</link><pubDate>Sun, 11 Sep 2022 22:59:52 +0900</pubDate><guid>http://kenji.blog/pt/p/hugo%E3%81%A7%E4%BD%BF%E3%81%88%E3%82%8B%E3%82%B7%E3%83%A7%E3%83%BC%E3%83%88%E3%82%B3%E3%83%BC%E3%83%89/</guid><description>&lt;img src="http://kenji.blog/p/hugo%E3%81%A7%E4%BD%BF%E3%81%88%E3%82%8B%E3%82%B7%E3%83%A7%E3%83%BC%E3%83%88%E3%82%B3%E3%83%BC%E3%83%89/img.png" alt="Featured image of post Shortcodes úteis no HUGO" />&lt;h1 id="shortcodes-úteis-no-hugo">Shortcodes úteis no HUGO
&lt;/h1>&lt;h2 id="youtube">YouTube
&lt;/h2>&lt;p>&lt;code>{{&amp;lt;youtube 123456abc&amp;gt;}}&lt;/code>&lt;/p>
&lt;h2 id="twitter">Twitter
&lt;/h2>&lt;p>&lt;code>{{&amp;lt;twitter 123456abc&amp;gt;}}&lt;/code>&lt;/p>
&lt;h2 id="instagram">Instagram
&lt;/h2>&lt;p>&lt;code>{{&amp;lt;instagram 123456abc&amp;gt;}}&lt;/code>&lt;/p>
&lt;h2 id="flickr">Flickr
&lt;/h2>&lt;p>&lt;code>{{&amp;lt;flickr 123456abc&amp;gt;}}&lt;/code>&lt;/p>
&lt;h2 id="vimeo">Vimeo
&lt;/h2>&lt;p>&lt;code>{{&amp;lt;vimeo 123456abc&amp;gt;}}&lt;/code>&lt;/p>
&lt;h2 id="outros">Outros
&lt;/h2>&lt;p>&lt;a class="link" href="https://gohugo.io/content-management/shortcodes/" target="_blank" rel="noopener"
>Shortcodes&lt;/a>&lt;/p>
&lt;h2 id="nota-adicional">Nota adicional
&lt;/h2>&lt;p>Para exibir &lt;code>{{&amp;lt; foo &amp;gt;}}&lt;/code> no site, você precisa escrever &lt;code>{{&amp;lt;/* foo */&amp;gt;}}&lt;/code>.&lt;/p></description></item><item><title>Alterar o Layout da Imagem no PaperMod</title><link>http://kenji.blog/pt/p/alterar-o-layout-da-imagem-no-papermod/</link><pubDate>Sun, 11 Sep 2022 18:50:40 +0900</pubDate><guid>http://kenji.blog/pt/p/alterar-o-layout-da-imagem-no-papermod/</guid><description>&lt;img src="http://kenji.blog/p/papermod%E3%81%AE%E7%94%BB%E5%83%8F%E3%81%AE%E9%85%8D%E7%BD%AE%E5%A4%89%E6%9B%B4/images/img.png" alt="Featured image of post Alterar o Layout da Imagem no PaperMod" />&lt;p>O layout padrão posiciona a imagem no centro com 100% de largura,
mas como às vezes parecia um pouco grande, tentei fazer a imagem contornar abaixo do título,
e mudei a largura para cerca de 150px.&lt;/p>
&lt;p>As alterações nos arquivos são as seguintes.&lt;/p>
&lt;h2 id="blankcss">blank.css
&lt;/h2>&lt;p>Para alterar as margens, tamanho da imagem e linhas de exibição do texto, adicionamos a seguinte descrição em blank.css.&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt"> 1
&lt;/span>&lt;span class="lnt"> 2
&lt;/span>&lt;span class="lnt"> 3
&lt;/span>&lt;span class="lnt"> 4
&lt;/span>&lt;span class="lnt"> 5
&lt;/span>&lt;span class="lnt"> 6
&lt;/span>&lt;span class="lnt"> 7
&lt;/span>&lt;span class="lnt"> 8
&lt;/span>&lt;span class="lnt"> 9
&lt;/span>&lt;span class="lnt">10
&lt;/span>&lt;span class="lnt">11
&lt;/span>&lt;span class="lnt">12
&lt;/span>&lt;span class="lnt">13
&lt;/span>&lt;span class="lnt">14
&lt;/span>&lt;span class="lnt">15
&lt;/span>&lt;span class="lnt">16
&lt;/span>&lt;span class="lnt">17
&lt;/span>&lt;span class="lnt">18
&lt;/span>&lt;span class="lnt">19
&lt;/span>&lt;span class="lnt">20
&lt;/span>&lt;span class="lnt">21
&lt;/span>&lt;span class="lnt">22
&lt;/span>&lt;span class="lnt">23
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-css:blank.css" data-lang="css:blank.css">&lt;span class="line">&lt;span class="cl">&lt;span class="p">.&lt;/span>&lt;span class="nc">entry-content&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="kp">-webkit-&lt;/span>&lt;span class="n">line-clamp&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="mi">4&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">.&lt;/span>&lt;span class="nc">entry-footer&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">text-align&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="kc">right&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">.&lt;/span>&lt;span class="nc">entry-cover&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">margin-bottom&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="kc">initial&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">text-align&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="kc">center&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">.&lt;/span>&lt;span class="nc">entry-cover&lt;/span> &lt;span class="nt">img&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">border-radius&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="mi">4&lt;/span>&lt;span class="kt">px&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">display&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="kc">inline&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">max-width&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="mi">100&lt;/span>&lt;span class="kt">%&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">.&lt;/span>&lt;span class="nc">post-meta&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">display&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="kc">block&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">text-align&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="kc">right&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h2 id="post-entrycss">post-entry.css
&lt;/h2>&lt;p>Como não pude remover a definição no blank.css, excluí 1 linha no seguinte local em post-entry.css.&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;span class="lnt">4
&lt;/span>&lt;span class="lnt">5
&lt;/span>&lt;span class="lnt">6
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-css:post-entry.css" data-lang="css:post-entry.css">&lt;span class="line">&lt;span class="cl">&lt;span class="p">.&lt;/span>&lt;span class="nc">entry-cover&lt;/span> &lt;span class="nt">img&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">border-radius&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="nf">var&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="o">--&lt;/span>&lt;span class="n">radius&lt;/span>&lt;span class="p">);&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">pointer-events&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="kc">none&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c">/* width: 100%; */&lt;/span> &lt;span class="err">←&lt;/span> &lt;span class="err">Remover&lt;/span> &lt;span class="err">esta&lt;/span> &lt;span class="err">linha&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">height&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="kc">auto&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h2 id="listhtml">list.html
&lt;/h2>&lt;p>Para alterar o layout da imagem, modifiquei o seguinte local em list.html.&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt"> 1
&lt;/span>&lt;span class="lnt"> 2
&lt;/span>&lt;span class="lnt"> 3
&lt;/span>&lt;span class="lnt"> 4
&lt;/span>&lt;span class="lnt"> 5
&lt;/span>&lt;span class="lnt"> 6
&lt;/span>&lt;span class="lnt"> 7
&lt;/span>&lt;span class="lnt"> 8
&lt;/span>&lt;span class="lnt"> 9
&lt;/span>&lt;span class="lnt">10
&lt;/span>&lt;span class="lnt">11
&lt;/span>&lt;span class="lnt">12
&lt;/span>&lt;span class="lnt">13
&lt;/span>&lt;span class="lnt">14
&lt;/span>&lt;span class="lnt">15
&lt;/span>&lt;span class="lnt">16
&lt;/span>&lt;span class="lnt">17
&lt;/span>&lt;span class="lnt">18
&lt;/span>&lt;span class="lnt">19
&lt;/span>&lt;span class="lnt">20
&lt;/span>&lt;span class="lnt">21
&lt;/span>&lt;span class="lnt">22
&lt;/span>&lt;span class="lnt">23
&lt;/span>&lt;span class="lnt">24
&lt;/span>&lt;span class="lnt">25
&lt;/span>&lt;span class="lnt">26
&lt;/span>&lt;span class="lnt">27
&lt;/span>&lt;span class="lnt">28
&lt;/span>&lt;span class="lnt">29
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-html:list.html" data-lang="html:list.html">&lt;span class="line">&lt;span class="cl">&lt;span class="p">&amp;lt;&lt;/span>&lt;span class="nt">article&lt;/span> &lt;span class="na">class&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s">&amp;#34;{{ $class }}&amp;#34;&lt;/span>&lt;span class="p">&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c">&amp;lt;!-- {{- $isHidden := (site.Params.cover.hidden | default site.Params.cover.hiddenInList) }} --&amp;gt;&amp;lt;!-- Movido para baixo --&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c">&amp;lt;!-- {{- partial &amp;#34;cover.html&amp;#34; (dict &amp;#34;cxt&amp;#34; . &amp;#34;IsHome&amp;#34; true &amp;#34;isHidden&amp;#34; $isHidden) }} --&amp;gt;&amp;lt;!-- Movido para baixo --&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">&amp;lt;&lt;/span>&lt;span class="nt">header&lt;/span> &lt;span class="na">class&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s">&amp;#34;entry-header&amp;#34;&lt;/span>&lt;span class="p">&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">&amp;lt;&lt;/span>&lt;span class="nt">h2&lt;/span>&lt;span class="p">&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> {{- .Title }}
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> {{- if .Draft }}&lt;span class="p">&amp;lt;&lt;/span>&lt;span class="nt">sup&lt;/span>&lt;span class="p">&amp;gt;&amp;lt;&lt;/span>&lt;span class="nt">span&lt;/span> &lt;span class="na">class&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s">&amp;#34;entry-isdraft&amp;#34;&lt;/span>&lt;span class="p">&amp;gt;&lt;/span>&lt;span class="ni">&amp;amp;nbsp;&amp;amp;nbsp;&lt;/span>[draft]&lt;span class="p">&amp;lt;/&lt;/span>&lt;span class="nt">span&lt;/span>&lt;span class="p">&amp;gt;&amp;lt;/&lt;/span>&lt;span class="nt">sup&lt;/span>&lt;span class="p">&amp;gt;&lt;/span>{{- end }}
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">&amp;lt;/&lt;/span>&lt;span class="nt">h2&lt;/span>&lt;span class="p">&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">&amp;lt;/&lt;/span>&lt;span class="nt">header&lt;/span>&lt;span class="p">&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">&amp;lt;&lt;/span>&lt;span class="nt">div&lt;/span> &lt;span class="na">style&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s">&amp;#34;display:flex;&amp;#34;&lt;/span>&lt;span class="p">&amp;gt;&lt;/span>&lt;span class="c">&amp;lt;!-- Adicionado --&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">&amp;lt;&lt;/span>&lt;span class="nt">div&lt;/span> &lt;span class="na">style&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s">&amp;#34;max-width:150px;margin:11px 15px 0px 0px;&amp;#34;&lt;/span>&lt;span class="p">&amp;gt;&lt;/span>&lt;span class="c">&amp;lt;!-- Adicionado --&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> {{- $isHidden := (site.Params.cover.hidden | default site.Params.cover.hiddenInList) }}&lt;span class="c">&amp;lt;!-- Movido de cima --&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> {{- partial &amp;#34;cover.html&amp;#34; (dict &amp;#34;cxt&amp;#34; . &amp;#34;IsHome&amp;#34; true &amp;#34;isHidden&amp;#34; $isHidden) }}&lt;span class="c">&amp;lt;!-- Movido de cima --&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">&amp;lt;/&lt;/span>&lt;span class="nt">div&lt;/span>&lt;span class="p">&amp;gt;&lt;/span>&lt;span class="c">&amp;lt;!-- Adicionado --&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">&amp;lt;&lt;/span>&lt;span class="nt">div&lt;/span> &lt;span class="na">style&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s">&amp;#34;width:100%;&amp;#34;&lt;/span>&lt;span class="p">&amp;gt;&lt;/span>&lt;span class="c">&amp;lt;!-- Adicionado --&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> {{- if (ne (.Param &amp;#34;hideSummary&amp;#34;) true) }}
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">&amp;lt;&lt;/span>&lt;span class="nt">div&lt;/span> &lt;span class="na">class&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s">&amp;#34;entry-content&amp;#34;&lt;/span>&lt;span class="p">&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">&amp;lt;&lt;/span>&lt;span class="nt">p&lt;/span>&lt;span class="p">&amp;gt;&lt;/span>{{ .Summary | plainify | htmlUnescape }}{{ if .Truncated }}...{{ end }}&lt;span class="p">&amp;lt;/&lt;/span>&lt;span class="nt">p&lt;/span>&lt;span class="p">&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">&amp;lt;/&lt;/span>&lt;span class="nt">div&lt;/span>&lt;span class="p">&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> {{- end }}
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> {{- if not (.Param &amp;#34;hideMeta&amp;#34;) }}
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">&amp;lt;&lt;/span>&lt;span class="nt">footer&lt;/span> &lt;span class="na">class&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s">&amp;#34;entry-footer&amp;#34;&lt;/span>&lt;span class="p">&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> {{- partial &amp;#34;post_meta.html&amp;#34; . -}}
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">&amp;lt;/&lt;/span>&lt;span class="nt">footer&lt;/span>&lt;span class="p">&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> {{- end }}
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">&amp;lt;&lt;/span>&lt;span class="nt">a&lt;/span> &lt;span class="na">class&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s">&amp;#34;entry-link&amp;#34;&lt;/span> &lt;span class="na">aria-label&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s">&amp;#34;post link to {{ .Title | plainify }}&amp;#34;&lt;/span> &lt;span class="na">href&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s">&amp;#34;{{ .Permalink }}&amp;#34;&lt;/span>&lt;span class="p">&amp;gt;&amp;lt;/&lt;/span>&lt;span class="nt">a&lt;/span>&lt;span class="p">&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">&amp;lt;/&lt;/span>&lt;span class="nt">div&lt;/span>&lt;span class="p">&amp;gt;&lt;/span>&lt;span class="c">&amp;lt;!-- Adicionado --&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">&amp;lt;/&lt;/span>&lt;span class="nt">div&lt;/span>&lt;span class="p">&amp;gt;&lt;/span>&lt;span class="c">&amp;lt;!-- Adicionado --&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">&amp;lt;/&lt;/span>&lt;span class="nt">article&lt;/span>&lt;span class="p">&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>Parece que não são poucos os pedidos semelhantes.&lt;/p>
&lt;p>&lt;a class="link" href="https://github.com/adityatelange/hugo-PaperMod/discussions/159#discussioncomment-247844" target="_blank" rel="noopener"
>https://github.com/adityatelange/hugo-PaperMod/discussions/159#discussioncomment-247844&lt;/a>&lt;/p>
&lt;p>Seria bom se os desenvolvedores originais também pudessem suportar isso.&lt;/p></description></item><item><title>Como Configurar o Twitter Card com o PaperMod</title><link>http://kenji.blog/pt/p/papermod%E3%81%A7twitter-card%E3%82%92%E8%A8%AD%E5%AE%9A%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95/</link><pubDate>Sat, 10 Sep 2022 18:41:22 +0900</pubDate><guid>http://kenji.blog/pt/p/papermod%E3%81%A7twitter-card%E3%82%92%E8%A8%AD%E5%AE%9A%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95/</guid><description>&lt;img src="http://kenji.blog/p/papermod%E3%81%A7twitter-card%E3%82%92%E8%A8%AD%E5%AE%9A%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95/images/img.png" alt="Featured image of post Como Configurar o Twitter Card com o PaperMod" />&lt;h1 id="introdução">Introdução
&lt;/h1>&lt;p>O tema PaperMod suporta Twitter Cards.
No entanto, as configurações do Twitter Card devem ser descritas no &lt;code>config.toml&lt;/code> ou nas informações de cabeçalho de &lt;code>*.md&lt;/code> de cada artigo.
Se você configurar em cada artigo e no &lt;code>config.toml&lt;/code>, as informações de cabeçalho de cada artigo terão prioridade.&lt;/p>
&lt;h1 id="como-configurar">Como Configurar
&lt;/h1>&lt;h2 id="configtoml">config.toml
&lt;/h2>&lt;p>No &lt;code>config.toml&lt;/code>, adicione um item chamado &lt;code>images&lt;/code> em &lt;code>[params]&lt;/code>.
Em &lt;code>images&lt;/code>, descreva o caminho da imagem para exibir no Twitter Card.
Se você colocar a imagem na pasta &lt;code>static&lt;/code>, especificar apenas o nome do arquivo é o suficiente.&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">[params]
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> images = [&amp;#34;twitter_card.jpg&amp;#34;]
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>Estrutura de Pastas&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt"> 1
&lt;/span>&lt;span class="lnt"> 2
&lt;/span>&lt;span class="lnt"> 3
&lt;/span>&lt;span class="lnt"> 4
&lt;/span>&lt;span class="lnt"> 5
&lt;/span>&lt;span class="lnt"> 6
&lt;/span>&lt;span class="lnt"> 7
&lt;/span>&lt;span class="lnt"> 8
&lt;/span>&lt;span class="lnt"> 9
&lt;/span>&lt;span class="lnt">10
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">root
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">│ config.toml (Escreva aqui)
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">├─content
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">│ └─posts
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">│ └─Pasta do artigo
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">│ │ index.md (Escreva aqui)
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">│ └─images
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">│ cover.png (Coloque aqui)
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">└─static
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> twitter_card.jpg (Coloque aqui)
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h2 id="informações-de-cabeçalho-de-cada-artigo">Informações de Cabeçalho de Cada Artigo
&lt;/h2>&lt;p>Nas informações de cabeçalho de cada artigo, adicione um item chamado &lt;code>image&lt;/code> sob &lt;code>cover&lt;/code>.
Se você definir &lt;code>relative&lt;/code> como &lt;code>true&lt;/code>, poderá especificar com um caminho relativo a partir do &lt;code>*.md&lt;/code> do artigo.&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">cover:
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> image: &amp;#34;images/cover.jpg&amp;#34;
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> relative: true
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h3 id="se-você-não-quiser-exibir-na-parte-superior-do-artigo">Se você não quiser exibir na parte superior do artigo
&lt;/h3>&lt;p>Se você não deseja exibir a imagem de capa na parte superior do artigo, adicione um item chamado &lt;code>hidden&lt;/code> sob &lt;code>cover&lt;/code> e defina-o como &lt;code>true&lt;/code>.&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;span class="lnt">4
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">cover:
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> image: &amp;#34;images/cover.jpg&amp;#34;
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> relative: true
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> hidden: true
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h1 id="sobre-o-tamanho-da-imagem">Sobre o Tamanho da Imagem
&lt;/h1>&lt;p>Na especificação atual do PaperMod, parece que o tamanho do Twitter Card suporta apenas &lt;code>summary_large_image&lt;/code>.
O tamanho adequado (resolução) de &lt;code>summary_large_image&lt;/code> tem várias teorias, mas cerca de &lt;code>800 x 418&lt;/code> (proporção de imagem 1.91:1) parece bom.&lt;/p>
&lt;p>&lt;a class="link" href="https://developer.twitter.com/en/docs/twitter-for-websites/cards/overview/summary-card-with-large-image" target="_blank" rel="noopener"
>Site de referência 1&lt;/a>
&lt;a class="link" href="https://developers.facebook.com/docs/sharing/best-practices" target="_blank" rel="noopener"
>Site de referência 2&lt;/a>&lt;/p>
&lt;p>Recomendamos redimensionar o tamanho da imagem antes de postar, se possível.&lt;/p>
&lt;h1 id="como-verificar-as-configurações">Como Verificar as Configurações
&lt;/h1>&lt;p>Para verificar as configurações do Twitter Card, use o &lt;a class="link" href="https://cards-dev.twitter.com/validator" target="_blank" rel="noopener"
>Twitter Card Validator&lt;/a>.
No entanto, como a pré-visualização não foi exibida corretamente no meu ambiente, se a pré-visualização não aparecer, recomendo que você verifique uma vez antes de postar usando uma conta privada ou similar.&lt;/p></description></item><item><title>Usando o GitHub Copilot no IntelliJ IDEA</title><link>http://kenji.blog/pt/p/usando-github-copilot-no-intellij-idea/</link><pubDate>Sat, 10 Sep 2022 09:44:55 +0900</pubDate><guid>http://kenji.blog/pt/p/usando-github-copilot-no-intellij-idea/</guid><description>&lt;img src="http://kenji.blog/p/intellij-idea%E3%81%A7github-copilot%E3%82%92%E4%BD%BF%E3%81%86/images/img.png" alt="Featured image of post Usando o GitHub Copilot no IntelliJ IDEA" />&lt;h1 id="introdução">Introdução
&lt;/h1>&lt;p>O GitHub Copilot é uma ferramenta de autocompletar código baseada em IA desenvolvida pelo GitHub.
Você pode usar o GitHub Copilot no IntelliJ IDEA instalando o plugin GitHub Copilot no ambiente de desenvolvimento IntelliJ IDEA.
É necessária uma conta do GitHub para a ativação.&lt;/p>
&lt;h1 id="como-instalar">Como instalar
&lt;/h1>&lt;ol>
&lt;li>Selecione Settings (Configurações) no menu File (Arquivo) do IntelliJ IDEA&lt;/li>
&lt;li>Selecione Plugins e procure por &amp;ldquo;GitHub Copilot&amp;rdquo; na busca
&lt;img src="http://kenji.blog/p/intellij-idea%E3%81%A7github-copilot%E3%82%92%E4%BD%BF%E3%81%86/images/img_0.png"
width="984"
height="713"
srcset="http://kenji.blog/p/intellij-idea%E3%81%A7github-copilot%E3%82%92%E4%BD%BF%E3%81%86/images/img_0_hu1a17f06d84f4c3bc905993428da2585e_52443_480x0_resize_box_3.png 480w, http://kenji.blog/p/intellij-idea%E3%81%A7github-copilot%E3%82%92%E4%BD%BF%E3%81%86/images/img_0_hu1a17f06d84f4c3bc905993428da2585e_52443_1024x0_resize_box_3.png 1024w"
loading="lazy"
alt="img.png"
class="gallery-image"
data-flex-grow="138"
data-flex-basis="331px"
>&lt;/li>
&lt;li>Instale a partir do botão de instalação
&lt;img src="http://kenji.blog/p/intellij-idea%E3%81%A7github-copilot%E3%82%92%E4%BD%BF%E3%81%86/images/img_1.png"
width="440"
height="288"
srcset="http://kenji.blog/p/intellij-idea%E3%81%A7github-copilot%E3%82%92%E4%BD%BF%E3%81%86/images/img_1_hu760c08385147deb656e4c3f97738e20a_11542_480x0_resize_box_3.png 480w, http://kenji.blog/p/intellij-idea%E3%81%A7github-copilot%E3%82%92%E4%BD%BF%E3%81%86/images/img_1_hu760c08385147deb656e4c3f97738e20a_11542_1024x0_resize_box_3.png 1024w"
loading="lazy"
alt="img_1.png"
class="gallery-image"
data-flex-grow="152"
data-flex-basis="366px"
>&lt;/li>
&lt;li>Pressione o botão Restart IDE para reiniciar o IntelliJ IDEA
&lt;img src="http://kenji.blog/p/intellij-idea%E3%81%A7github-copilot%E3%82%92%E4%BD%BF%E3%81%86/images/img_2.png"
width="984"
height="713"
srcset="http://kenji.blog/p/intellij-idea%E3%81%A7github-copilot%E3%82%92%E4%BD%BF%E3%81%86/images/img_2_hue7ac4db80b402fe88ff676c2505b2e26_63613_480x0_resize_box_3.png 480w, http://kenji.blog/p/intellij-idea%E3%81%A7github-copilot%E3%82%92%E4%BD%BF%E3%81%86/images/img_2_hue7ac4db80b402fe88ff676c2505b2e26_63613_1024x0_resize_box_3.png 1024w"
loading="lazy"
alt="img_2.png"
class="gallery-image"
data-flex-grow="138"
data-flex-basis="331px"
>
&lt;img src="http://kenji.blog/p/intellij-idea%E3%81%A7github-copilot%E3%82%92%E4%BD%BF%E3%81%86/images/img_3.png"
width="370"
height="128"
srcset="http://kenji.blog/p/intellij-idea%E3%81%A7github-copilot%E3%82%92%E4%BD%BF%E3%81%86/images/img_3_huf684fa748633ae887c193539a3f1f778_4849_480x0_resize_box_3.png 480w, http://kenji.blog/p/intellij-idea%E3%81%A7github-copilot%E3%82%92%E4%BD%BF%E3%81%86/images/img_3_huf684fa748633ae887c193539a3f1f778_4849_1024x0_resize_box_3.png 1024w"
loading="lazy"
alt="img_3.png"
class="gallery-image"
data-flex-grow="289"
data-flex-basis="693px"
>
A instalação estará completa quando o IntelliJ IDEA for reiniciado.&lt;/li>
&lt;/ol>
&lt;h1 id="ativação">Ativação
&lt;/h1>&lt;ol>
&lt;li>Clique no ícone no canto inferior direito&lt;/li>
&lt;li>Clique em Login to Github
&lt;img src="http://kenji.blog/p/intellij-idea%E3%81%A7github-copilot%E3%82%92%E4%BD%BF%E3%81%86/images/img_4.png"
width="179"
height="97"
srcset="http://kenji.blog/p/intellij-idea%E3%81%A7github-copilot%E3%82%92%E4%BD%BF%E3%81%86/images/img_4_huda05efd9621c0a19fb78fc4f90866e22_2661_480x0_resize_box_3.png 480w, http://kenji.blog/p/intellij-idea%E3%81%A7github-copilot%E3%82%92%E4%BD%BF%E3%81%86/images/img_4_huda05efd9621c0a19fb78fc4f90866e22_2661_1024x0_resize_box_3.png 1024w"
loading="lazy"
alt="img_4.png"
class="gallery-image"
data-flex-grow="184"
data-flex-basis="442px"
>&lt;/li>
&lt;li>Clique no botão Copy and Open
&lt;img src="http://kenji.blog/p/intellij-idea%E3%81%A7github-copilot%E3%82%92%E4%BD%BF%E3%81%86/images/img_6.png"
width="422"
height="199"
srcset="http://kenji.blog/p/intellij-idea%E3%81%A7github-copilot%E3%82%92%E4%BD%BF%E3%81%86/images/img_6_hua124fecdd3632e6b95f8259e5e606e1a_8284_480x0_resize_box_3.png 480w, http://kenji.blog/p/intellij-idea%E3%81%A7github-copilot%E3%82%92%E4%BD%BF%E3%81%86/images/img_6_hua124fecdd3632e6b95f8259e5e606e1a_8284_1024x0_resize_box_3.png 1024w"
loading="lazy"
alt="img_6.png"
class="gallery-image"
data-flex-grow="212"
data-flex-basis="508px"
>&lt;/li>
&lt;li>O navegador será aberto. Se você não estiver logado no GitHub, faça o login, cole o código com Ctrl+V e clique no botão Continue
&lt;img src="http://kenji.blog/p/intellij-idea%E3%81%A7github-copilot%E3%82%92%E4%BD%BF%E3%81%86/images/img_7.png"
width="579"
height="530"
srcset="http://kenji.blog/p/intellij-idea%E3%81%A7github-copilot%E3%82%92%E4%BD%BF%E3%81%86/images/img_7_hub4e276df82537681adc4331944f40166_19231_480x0_resize_box_3.png 480w, http://kenji.blog/p/intellij-idea%E3%81%A7github-copilot%E3%82%92%E4%BD%BF%E3%81%86/images/img_7_hub4e276df82537681adc4331944f40166_19231_1024x0_resize_box_3.png 1024w"
loading="lazy"
alt="img_7.png"
class="gallery-image"
data-flex-grow="109"
data-flex-basis="262px"
>&lt;/li>
&lt;li>Clique no botão Authorize GitHub Copilot Plugin
&lt;img src="http://kenji.blog/p/intellij-idea%E3%81%A7github-copilot%E3%82%92%E4%BD%BF%E3%81%86/images/img_8.png"
width="546"
height="689"
srcset="http://kenji.blog/p/intellij-idea%E3%81%A7github-copilot%E3%82%92%E4%BD%BF%E3%81%86/images/img_8_hu1e48fa0fb5989dc3e0616b0ee84b6476_33153_480x0_resize_box_3.png 480w, http://kenji.blog/p/intellij-idea%E3%81%A7github-copilot%E3%82%92%E4%BD%BF%E3%81%86/images/img_8_hu1e48fa0fb5989dc3e0616b0ee84b6476_33153_1024x0_resize_box_3.png 1024w"
loading="lazy"
alt="img_8.png"
class="gallery-image"
data-flex-grow="79"
data-flex-basis="190px"
>
&lt;img src="http://kenji.blog/p/intellij-idea%E3%81%A7github-copilot%E3%82%92%E4%BD%BF%E3%81%86/images/img_9.png"
width="454"
height="337"
srcset="http://kenji.blog/p/intellij-idea%E3%81%A7github-copilot%E3%82%92%E4%BD%BF%E3%81%86/images/img_9_hu73bf5cd6f6a7ddf7aa8e1b63387b9c7d_7965_480x0_resize_box_3.png 480w, http://kenji.blog/p/intellij-idea%E3%81%A7github-copilot%E3%82%92%E4%BD%BF%E3%81%86/images/img_9_hu73bf5cd6f6a7ddf7aa8e1b63387b9c7d_7965_1024x0_resize_box_3.png 1024w"
loading="lazy"
alt="img_9.png"
class="gallery-image"
data-flex-grow="134"
data-flex-basis="323px"
>
Se a tela acima for exibida, a ativação está completa.&lt;/li>
&lt;/ol>
&lt;h1 id="como-usar">Como usar
&lt;/h1>&lt;p>&lt;img src="http://kenji.blog/p/intellij-idea%E3%81%A7github-copilot%E3%82%92%E4%BD%BF%E3%81%86/images/img_10.png"
width="330"
height="136"
srcset="http://kenji.blog/p/intellij-idea%E3%81%A7github-copilot%E3%82%92%E4%BD%BF%E3%81%86/images/img_10_hu25143f366631b8ce9af8689b387ca520_6039_480x0_resize_box_3.png 480w, http://kenji.blog/p/intellij-idea%E3%81%A7github-copilot%E3%82%92%E4%BD%BF%E3%81%86/images/img_10_hu25143f366631b8ce9af8689b387ca520_6039_1024x0_resize_box_3.png 1024w"
loading="lazy"
alt="img_10.png"
class="gallery-image"
data-flex-grow="242"
data-flex-basis="582px"
>
Quando você digita alguns caracteres no editor do IntelliJ IDEA, o GitHub Copilot começa a propor continuações para o seu código.
Aproveite o poderoso recurso de autocompletar da IA!&lt;/p></description></item><item><title>Como instalar o Go</title><link>http://kenji.blog/pt/p/como-instalar-o-go/</link><pubDate>Sat, 10 Sep 2022 00:48:17 +0900</pubDate><guid>http://kenji.blog/pt/p/como-instalar-o-go/</guid><description>&lt;img src="http://kenji.blog/p/go%E3%82%92%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95/images/cover.png" alt="Featured image of post Como instalar o Go" />&lt;h1 id="introdução">Introdução
&lt;/h1>&lt;p>Go é uma linguagem de programação relativamente nova lançada pelo Google em 2009.
O compilador, ferramentas e bibliotecas do Go são de código aberto.
Além disso, Go é uma linguagem estaticamente tipada como C e Java, mas não usa ponteiros da mesma forma que a linguagem C.&lt;/p>
&lt;h1 id="método-de-instalação">Método de instalação
&lt;/h1>&lt;p>&lt;a class="link" href="https://go.dev/dl/" target="_blank" rel="noopener"
>Instalar o Go&lt;/a>&lt;/p>
&lt;p>Instaladores para cada plataforma estão publicados no site acima.&lt;/p>
&lt;p>Siga as telas para prosseguir com a instalação.
&lt;img src="http://kenji.blog/p/go%E3%82%92%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95/images/img.png"
width="495"
height="387"
srcset="http://kenji.blog/p/go%E3%82%92%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95/images/img_hudec02a4f1dfaca9415d58a56d502b14f_18782_480x0_resize_box_3.png 480w, http://kenji.blog/p/go%E3%82%92%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95/images/img_hudec02a4f1dfaca9415d58a56d502b14f_18782_1024x0_resize_box_3.png 1024w"
loading="lazy"
alt="img.png"
class="gallery-image"
data-flex-grow="127"
data-flex-basis="306px"
>&lt;/p>
&lt;p>&lt;img src="http://kenji.blog/p/go%E3%82%92%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95/images/img_1.png"
width="495"
height="387"
srcset="http://kenji.blog/p/go%E3%82%92%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95/images/img_1_hu803f0fb268a2cf0fa74e4e36a5b3a765_20314_480x0_resize_box_3.png 480w, http://kenji.blog/p/go%E3%82%92%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95/images/img_1_hu803f0fb268a2cf0fa74e4e36a5b3a765_20314_1024x0_resize_box_3.png 1024w"
loading="lazy"
alt="img_1.png"
class="gallery-image"
data-flex-grow="127"
data-flex-basis="306px"
>&lt;/p>
&lt;p>&lt;img src="http://kenji.blog/p/go%E3%82%92%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95/images/img_2.png"
width="495"
height="387"
srcset="http://kenji.blog/p/go%E3%82%92%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95/images/img_2_hu05fb3923212918b7539badd0200ea75c_11067_480x0_resize_box_3.png 480w, http://kenji.blog/p/go%E3%82%92%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95/images/img_2_hu05fb3923212918b7539badd0200ea75c_11067_1024x0_resize_box_3.png 1024w"
loading="lazy"
alt="img_2.png"
class="gallery-image"
data-flex-grow="127"
data-flex-basis="306px"
>&lt;/p>
&lt;p>&lt;img src="http://kenji.blog/p/go%E3%82%92%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95/images/img_3.png"
width="495"
height="387"
srcset="http://kenji.blog/p/go%E3%82%92%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95/images/img_3_hu316d63501ec24e1e74dc3cb674d4cc1f_11612_480x0_resize_box_3.png 480w, http://kenji.blog/p/go%E3%82%92%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95/images/img_3_hu316d63501ec24e1e74dc3cb674d4cc1f_11612_1024x0_resize_box_3.png 1024w"
loading="lazy"
alt="img_3.png"
class="gallery-image"
data-flex-grow="127"
data-flex-basis="306px"
>&lt;/p>
&lt;p>&lt;img src="http://kenji.blog/p/go%E3%82%92%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95/images/img_5.png"
width="495"
height="387"
srcset="http://kenji.blog/p/go%E3%82%92%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95/images/img_5_hu8bb188f8700bed3c70acaed6e511012d_14167_480x0_resize_box_3.png 480w, http://kenji.blog/p/go%E3%82%92%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95/images/img_5_hu8bb188f8700bed3c70acaed6e511012d_14167_1024x0_resize_box_3.png 1024w"
loading="lazy"
alt="img_5.png"
class="gallery-image"
data-flex-grow="127"
data-flex-basis="306px"
>&lt;/p>
&lt;p>&lt;img src="http://kenji.blog/p/go%E3%82%92%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95/images/img_6.png"
width="495"
height="387"
srcset="http://kenji.blog/p/go%E3%82%92%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95/images/img_6_hu0a1b7e9cf2cb725ed5a7ea7685880608_16796_480x0_resize_box_3.png 480w, http://kenji.blog/p/go%E3%82%92%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95/images/img_6_hu0a1b7e9cf2cb725ed5a7ea7685880608_16796_1024x0_resize_box_3.png 1024w"
loading="lazy"
alt="img_6.png"
class="gallery-image"
data-flex-grow="127"
data-flex-basis="306px"
>&lt;/p>
&lt;p>Instalação concluída. É simples, não é?&lt;/p>
&lt;h1 id="primeiro-programa">Primeiro programa
&lt;/h1>&lt;p>Salve o seguinte programa como &lt;code>hello.go&lt;/code>.&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;span class="lnt">4
&lt;/span>&lt;span class="lnt">5
&lt;/span>&lt;span class="lnt">6
&lt;/span>&lt;span class="lnt">7
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-go" data-lang="go">&lt;span class="line">&lt;span class="cl">&lt;span class="kn">package&lt;/span> &lt;span class="nx">main&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="kn">import&lt;/span> &lt;span class="s">&amp;#34;fmt&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="kd">func&lt;/span> &lt;span class="nf">main&lt;/span>&lt;span class="p">()&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nx">fmt&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="nf">Printf&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s">&amp;#34;Hello World\n&amp;#34;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>Ao executar &lt;code>go run hello.go&lt;/code> no prompt de comando ou terminal, será exibido &lt;code>Hello, world!&lt;/code>.&lt;/p>
&lt;p>Ao compilar, executar &lt;code>go build hello.go&lt;/code> irá gerar &lt;code>hello.exe&lt;/code>.
Executar &lt;code>hello.exe&lt;/code> exibirá &lt;code>Hello, world!&lt;/code>.&lt;/p>
&lt;h1 id="você-também-pode-executar-código-na-página-da-web">Você também pode executar código na página da Web
&lt;/h1>&lt;p>&lt;a class="link" href="https://go.dev/play/" target="_blank" rel="noopener"
>https://go.dev/play/&lt;/a>&lt;/p>
&lt;p>&lt;img src="http://kenji.blog/p/go%E3%82%92%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95/images/img_7.png"
width="793"
height="668"
srcset="http://kenji.blog/p/go%E3%82%92%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95/images/img_7_hu4549f097b6cd8fd929d9562692076ffb_15605_480x0_resize_box_3.png 480w, http://kenji.blog/p/go%E3%82%92%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95/images/img_7_hu4549f097b6cd8fd929d9562692076ffb_15605_1024x0_resize_box_3.png 1024w"
loading="lazy"
alt="img_7.png"
class="gallery-image"
data-flex-grow="118"
data-flex-basis="284px"
>&lt;/p>
&lt;h1 id="documentação-japonesa">Documentação Japonesa
&lt;/h1>&lt;p>&lt;a class="link" href="http://go.shibu.jp/" target="_blank" rel="noopener"
>http://go.shibu.jp/&lt;/a>&lt;/p>
&lt;p>As explicações necessárias para aprender Go estão reunidas no link acima (versão traduzida em japonês).
A tecnologia relacionada ao Go é tão aberta e rica que quase não há necessidade de comprar textos em papel.&lt;/p>
&lt;p>Então, aproveite sua vida com Go!&lt;/p></description></item><item><title>A Dialética de Hegel</title><link>http://kenji.blog/pt/p/a-dialetica-de-hegel/</link><pubDate>Fri, 09 Sep 2022 23:13:19 +0900</pubDate><guid>http://kenji.blog/pt/p/a-dialetica-de-hegel/</guid><description>&lt;img src="http://kenji.blog/p/%E3%83%98%E3%83%BC%E3%82%B2%E3%83%AB%E3%81%AE%E5%BC%81%E8%A8%BC%E6%B3%95/images/img.png" alt="Featured image of post A Dialética de Hegel" />&lt;h2 id="o-que-é-a-dialética-de-hegel">O que é a Dialética de Hegel
&lt;/h2>&lt;blockquote>
&lt;p>Hegel captou o significado positivo da contradição na qual a razão cai, e argumentou que todas as coisas finitas em geral geram seus opostos movidas pela contradição inerente a si mesmas, e através dessa mediação, ambas são superadas para um estágio superior. Ele fez disso o princípio de todo movimento no mundo real.
(Do Kotobank)&lt;/p>
&lt;/blockquote>
&lt;p>Minha interpretação é que nenhuma ideologia ou ideia no mundo real está simplesmente correta de forma unilateral;
elas sempre contêm contradições internamente, e é compreendendo ou incorporando essas estruturas opostas que
nosso reconhecimento se desenvolve para um nível superior.&lt;/p>
&lt;p>Acredito que isso se aplica não apenas à forma como as pessoas pensam, mas também a todos os fenômenos no mundo natural.&lt;/p>
&lt;p>Para toda matéria, se há uma ação, há uma reação; se um objeto se move, há atrito; a atração gravitacional afeta não apenas o sol e a terra, mas todas as substâncias que interagem umas com as outras.
O fluxo dos rios e do vento não flui apenas em uma direção, mas sofre a ação de várias forças, mudando a cada momento.&lt;/p>
&lt;p>Em termos técnicos, os programas de computador também sempre contêm bugs internamente, e ao removê-los, eles se tornam programas de nível superior.
Acho seguro dizer que um programa sem bugs é um programa desinteressante que parou de se desenvolver. Ele inevitavelmente se tornará obsoleto.&lt;/p>
&lt;p>O ambiente ao nosso redor está mudando constantemente com os tempos. Em vez de ignorar ou justificar de forma estranha as autocontradições, ou fixar nosso modo de pensar,
devemos rever constantemente a forma como pensamos e percebemos as coisas, e mudar nossos pensamentos de forma flexível.&lt;/p></description></item><item><title>Kamukura (Ramen) pela primeira vez em anos</title><link>http://kenji.blog/pt/p/%E4%BD%95%E5%B9%B4%E3%81%8B%E3%81%B6%E3%82%8A%E3%81%AE%E7%A5%9E%E5%BA%A7%E3%81%8B%E3%82%80%E3%81%8F%E3%82%89%E3%83%A9%E3%83%BC%E3%83%A1%E3%83%B3/</link><pubDate>Fri, 09 Sep 2022 21:45:19 +0900</pubDate><guid>http://kenji.blog/pt/p/%E4%BD%95%E5%B9%B4%E3%81%8B%E3%81%B6%E3%82%8A%E3%81%AE%E7%A5%9E%E5%BA%A7%E3%81%8B%E3%82%80%E3%81%8F%E3%82%89%E3%83%A9%E3%83%BC%E3%83%A1%E3%83%B3/</guid><description>&lt;img src="http://kenji.blog/p/%E4%BD%95%E5%B9%B4%E3%81%8B%E3%81%B6%E3%82%8A%E3%81%AE%E7%A5%9E%E5%BA%A7%E3%81%8B%E3%82%80%E3%81%8F%E3%82%89%E3%83%A9%E3%83%BC%E3%83%A1%E3%83%B3/images/img2.jpg" alt="Featured image of post Kamukura (Ramen) pela primeira vez em anos" />&lt;p>Fui ao Kamukura (Ramen) pela primeira vez em anos.&lt;/p>
&lt;p>&lt;strong>Ramen de Kimchi e Cebolinha&lt;/strong>&lt;/p>
&lt;p>&lt;img src="http://kenji.blog/p/%E4%BD%95%E5%B9%B4%E3%81%8B%E3%81%B6%E3%82%8A%E3%81%AE%E7%A5%9E%E5%BA%A7%E3%81%8B%E3%82%80%E3%81%8F%E3%82%89%E3%83%A9%E3%83%BC%E3%83%A1%E3%83%B3/images/img1.jpg"
width="595"
height="603"
srcset="http://kenji.blog/p/%E4%BD%95%E5%B9%B4%E3%81%8B%E3%81%B6%E3%82%8A%E3%81%AE%E7%A5%9E%E5%BA%A7%E3%81%8B%E3%82%80%E3%81%8F%E3%82%89%E3%83%A9%E3%83%BC%E3%83%A1%E3%83%B3/images/img1_hufe42115e5b5ea70b27ae9218e3ddeca1_358776_480x0_resize_q75_box.jpg 480w, http://kenji.blog/p/%E4%BD%95%E5%B9%B4%E3%81%8B%E3%81%B6%E3%82%8A%E3%81%AE%E7%A5%9E%E5%BA%A7%E3%81%8B%E3%82%80%E3%81%8F%E3%82%89%E3%83%A9%E3%83%BC%E3%83%A1%E3%83%B3/images/img1_hufe42115e5b5ea70b27ae9218e3ddeca1_358776_1024x0_resize_q75_box.jpg 1024w"
loading="lazy"
alt="img1.jpg"
class="gallery-image"
data-flex-grow="98"
data-flex-basis="236px"
>&lt;/p>
&lt;p>&lt;img src="http://kenji.blog/p/%E4%BD%95%E5%B9%B4%E3%81%8B%E3%81%B6%E3%82%8A%E3%81%AE%E7%A5%9E%E5%BA%A7%E3%81%8B%E3%82%80%E3%81%8F%E3%82%89%E3%83%A9%E3%83%BC%E3%83%A1%E3%83%B3/images/img2.jpg"
width="593"
height="646"
srcset="http://kenji.blog/p/%E4%BD%95%E5%B9%B4%E3%81%8B%E3%81%B6%E3%82%8A%E3%81%AE%E7%A5%9E%E5%BA%A7%E3%81%8B%E3%82%80%E3%81%8F%E3%82%89%E3%83%A9%E3%83%BC%E3%83%A1%E3%83%B3/images/img2_hu5b1c55ddd3b998ef9e1e7da203dc1109_434676_480x0_resize_q75_box.jpg 480w, http://kenji.blog/p/%E4%BD%95%E5%B9%B4%E3%81%8B%E3%81%B6%E3%82%8A%E3%81%AE%E7%A5%9E%E5%BA%A7%E3%81%8B%E3%82%80%E3%81%8F%E3%82%89%E3%83%A9%E3%83%BC%E3%83%A1%E3%83%B3/images/img2_hu5b1c55ddd3b998ef9e1e7da203dc1109_434676_1024x0_resize_q75_box.jpg 1024w"
loading="lazy"
alt="img2.png"
class="gallery-image"
data-flex-grow="91"
data-flex-basis="220px"
>&lt;/p>
&lt;p>Estava delicioso. É um sabor que às vezes dá vontade de comer.&lt;/p></description></item><item><title>Enumerando Números Primos em Rust</title><link>http://kenji.blog/pt/p/enumerando-n%C3%BAmeros-primos-em-rust/</link><pubDate>Fri, 09 Sep 2022 07:08:49 +0900</pubDate><guid>http://kenji.blog/pt/p/enumerando-n%C3%BAmeros-primos-em-rust/</guid><description>&lt;img src="http://kenji.blog/p/rust%E3%81%A7%E7%B4%A0%E6%95%B0%E3%82%92%E5%88%97%E6%8C%99%E3%81%99%E3%82%8B/images/img.png" alt="Featured image of post Enumerando Números Primos em Rust" />&lt;p>Escrevi um programa para enumerar números primos em Rust.&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt"> 1
&lt;/span>&lt;span class="lnt"> 2
&lt;/span>&lt;span class="lnt"> 3
&lt;/span>&lt;span class="lnt"> 4
&lt;/span>&lt;span class="lnt"> 5
&lt;/span>&lt;span class="lnt"> 6
&lt;/span>&lt;span class="lnt"> 7
&lt;/span>&lt;span class="lnt"> 8
&lt;/span>&lt;span class="lnt"> 9
&lt;/span>&lt;span class="lnt">10
&lt;/span>&lt;span class="lnt">11
&lt;/span>&lt;span class="lnt">12
&lt;/span>&lt;span class="lnt">13
&lt;/span>&lt;span class="lnt">14
&lt;/span>&lt;span class="lnt">15
&lt;/span>&lt;span class="lnt">16
&lt;/span>&lt;span class="lnt">17
&lt;/span>&lt;span class="lnt">18
&lt;/span>&lt;span class="lnt">19
&lt;/span>&lt;span class="lnt">20
&lt;/span>&lt;span class="lnt">21
&lt;/span>&lt;span class="lnt">22
&lt;/span>&lt;span class="lnt">23
&lt;/span>&lt;span class="lnt">24
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-rust" data-lang="rust">&lt;span class="line">&lt;span class="cl">&lt;span class="k">fn&lt;/span> &lt;span class="nf">main&lt;/span>&lt;span class="p">()&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="p">{&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="kd">let&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">max&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="mi">1000&lt;/span>&lt;span class="p">;&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="kd">let&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="k">mut&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">primes&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="fm">vec!&lt;/span>&lt;span class="p">[&lt;/span>&lt;span class="mi">2&lt;/span>&lt;span class="p">];&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="kd">let&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="k">mut&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">n&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="mi">3&lt;/span>&lt;span class="p">;&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="k">loop&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="p">{&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="kd">let&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="k">mut&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">is_prime&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="kc">true&lt;/span>&lt;span class="p">;&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="k">for&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">p&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="k">in&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="o">&amp;amp;&lt;/span>&lt;span class="n">primes&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="p">{&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="k">if&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">n&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="o">%&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">p&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="o">==&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="mi">0&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="p">{&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="n">is_prime&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="kc">false&lt;/span>&lt;span class="p">;&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="k">break&lt;/span>&lt;span class="p">;&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="p">}&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="p">}&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="k">if&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">is_prime&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="p">{&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="n">primes&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">push&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">n&lt;/span>&lt;span class="p">);&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="p">}&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="n">n&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="o">+=&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="mi">2&lt;/span>&lt;span class="p">;&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="k">if&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">n&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="o">&amp;gt;&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">max&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="p">{&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="k">break&lt;/span>&lt;span class="p">;&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="p">}&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="p">}&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="k">for&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">p&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="k">in&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="o">&amp;amp;&lt;/span>&lt;span class="n">primes&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="p">{&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="fm">println!&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s">&amp;#34;&lt;/span>&lt;span class="si">{}&lt;/span>&lt;span class="s">&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">p&lt;/span>&lt;span class="p">);&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="p">}&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">&lt;/span>&lt;span class="p">}&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div></description></item><item><title>Jazz Calmo</title><link>http://kenji.blog/pt/p/jazz-calmo/</link><pubDate>Thu, 08 Sep 2022 17:40:26 +0900</pubDate><guid>http://kenji.blog/pt/p/jazz-calmo/</guid><description>&lt;img src="http://kenji.blog/p/%E8%90%BD%E3%81%A1%E7%9D%80%E3%81%84%E3%81%9F%E3%82%B8%E3%83%A3%E3%82%BA/images/img.png" alt="Featured image of post Jazz Calmo" />&lt;p>&lt;strong>Playlist de Jazz Calmo&lt;/strong>
&lt;div class="video-wrapper">
&lt;iframe loading="lazy"
src="https://www.youtube.com/embed/hOJ76cZEt08"
allowfullscreen
title="YouTube Video"
>
&lt;/iframe>
&lt;/div>
&lt;/p></description></item><item><title>Música de Café</title><link>http://kenji.blog/pt/p/musica-de-cafe/</link><pubDate>Thu, 08 Sep 2022 08:39:03 +0900</pubDate><guid>http://kenji.blog/pt/p/musica-de-cafe/</guid><description>&lt;img src="http://kenji.blog/p/%E3%82%AB%E3%83%95%E3%82%A7%E9%9F%B3%E6%A5%BD/images/img.png" alt="Featured image of post Música de Café" />&lt;p>&lt;strong>Up-tempo&lt;/strong>&lt;/p>
&lt;p>&lt;strong>Electro Swing Collection&lt;/strong>
&lt;div class="video-wrapper">
&lt;iframe loading="lazy"
src="https://www.youtube.com/embed/bQXCx1F7nhs"
allowfullscreen
title="YouTube Video"
>
&lt;/iframe>
&lt;/div>
&lt;/p>
&lt;p>&lt;strong>Electro Swing Mix 2019 Vol.3&lt;/strong>
&lt;div class="video-wrapper">
&lt;iframe loading="lazy"
src="https://www.youtube.com/embed/1hY8f20tqlI"
allowfullscreen
title="YouTube Video"
>
&lt;/iframe>
&lt;/div>
&lt;/p>
&lt;p>&lt;strong>lofi hip hop radio(Live)&lt;/strong>
&lt;div class="video-wrapper">
&lt;iframe loading="lazy"
src="https://www.youtube.com/embed/jfKfPfyJRdk"
allowfullscreen
title="YouTube Video"
>
&lt;/iframe>
&lt;/div>
&lt;/p>
&lt;p>&lt;strong>LoFi Jazz&lt;/strong>
&lt;div class="video-wrapper">
&lt;iframe loading="lazy"
src="https://www.youtube.com/embed/bz5q5gl2uZA"
allowfullscreen
title="YouTube Video"
>
&lt;/iframe>
&lt;/div>
&lt;/p>
&lt;p>&lt;strong>Esta é a motivação para estudar muito todos os dias | 5 hour lofi hip hop / study / work / chill beats&lt;/strong>
&lt;div class="video-wrapper">
&lt;iframe loading="lazy"
src="https://www.youtube.com/embed/fWX8zsaTeTc"
allowfullscreen
title="YouTube Video"
>
&lt;/iframe>
&lt;/div>
&lt;/p></description></item><item><title>Vídeos que aumentam a sua motivação</title><link>http://kenji.blog/pt/p/%E3%83%A2%E3%83%81%E3%83%99%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3%E3%82%92%E4%B8%8A%E3%81%92%E3%81%A6%E3%81%8F%E3%82%8C%E3%82%8B%E5%8B%95%E7%94%BB/</link><pubDate>Thu, 08 Sep 2022 02:22:52 +0900</pubDate><guid>http://kenji.blog/pt/p/%E3%83%A2%E3%83%81%E3%83%99%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3%E3%82%92%E4%B8%8A%E3%81%92%E3%81%A6%E3%81%8F%E3%82%8C%E3%82%8B%E5%8B%95%E7%94%BB/</guid><description>&lt;img src="http://kenji.blog/p/%E3%83%A2%E3%83%81%E3%83%99%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3%E3%82%92%E4%B8%8A%E3%81%92%E3%81%A6%E3%81%8F%E3%82%8C%E3%82%8B%E5%8B%95%E7%94%BB/images/img.png" alt="Featured image of post Vídeos que aumentam a sua motivação" />&lt;h2 id="não-tem-problema-se-o-seu-esforço-não-for-reconhecido">Não tem problema se o seu esforço não for reconhecido
&lt;/h2>&lt;blockquote class="twitter-tweet">&lt;p lang="ja" dir="ltr">45年の人生で手に入れた。ぐずぐずした時、いつも背中を押してくれる言葉たち。 &lt;a href="https://t.co/EQgmujOSpg">pic.twitter.com/EQgmujOSpg&lt;/a>&lt;/p>&amp;mdash; いれぶん (@eleven_s_s) &lt;a href="https://x.com/eleven_s_s/status/1567256455836737544?ref_src=twsrc%5Etfw">September 6, 2022&lt;/a>&lt;/blockquote>
&lt;script async src="https://platform.x.com/widgets.js" charset="utf-8">&lt;/script>
&lt;h2 id="os-valores-são-muito-mais-diversos">Os valores são muito mais diversos
&lt;/h2>&lt;p>Yusuke Narita &amp;ldquo;Das infelicidades que os seres humanos carregam&amp;rdquo;&lt;/p>
&lt;div class="video-wrapper">
&lt;iframe loading="lazy"
src="https://www.youtube.com/embed/5WTldFIQ7E4"
allowfullscreen
title="YouTube Video"
>
&lt;/iframe>
&lt;/div>
&lt;h2 id="as-suas-ações-refletem-exatamente-quem-você-é">As suas ações refletem exatamente quem você é
&lt;/h2>&lt;div class="video-wrapper">
&lt;iframe loading="lazy"
src="https://www.youtube.com/embed/8ewxptSV66M"
allowfullscreen
title="YouTube Video"
>
&lt;/iframe>
&lt;/div>
&lt;h2 id="os-pensamentos-de-hayao-miyazaki">Os pensamentos de Hayao Miyazaki
&lt;/h2>&lt;div class="video-wrapper">
&lt;iframe loading="lazy"
src="https://www.youtube.com/embed/9-2YFldnWzg"
allowfullscreen
title="YouTube Video"
>
&lt;/iframe>
&lt;/div></description></item><item><title>Especificações do meu PC principal atual</title><link>http://kenji.blog/pt/p/especificacoes-do-meu-pc-principal-atual/</link><pubDate>Thu, 08 Sep 2022 01:55:00 +0900</pubDate><guid>http://kenji.blog/pt/p/especificacoes-do-meu-pc-principal-atual/</guid><description>&lt;img src="http://kenji.blog/p/%E4%BB%8A%E3%81%AE%E3%83%A1%E3%82%A4%E3%83%B3pc%E3%82%B9%E3%83%9A%E3%83%83%E3%82%AF/images/img.png" alt="Featured image of post Especificações do meu PC principal atual" />&lt;p>Vou escrever as especificações do meu PC principal.&lt;/p>
&lt;table>
&lt;thead>
&lt;tr>
&lt;th>Nome do item&lt;/th>
&lt;th>Valor&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>Processador&lt;/td>
&lt;td>Intel Core i7-8700K CPU @ 3.70GHz 3.70 GHz&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Memória&lt;/td>
&lt;td>32.0 GB&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Tipo de sistema&lt;/td>
&lt;td>Sistema operacional de 64 bits, processador baseado em x64&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>SO&lt;/td>
&lt;td>Windows 11 Enterprise (Versão 21H2, Build 22000.856)&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Fabricante&lt;/td>
&lt;td>Mouse Computer Co., Ltd.&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table></description></item><item><title>Sites de coleção de ícones simples</title><link>http://kenji.blog/pt/p/sites-de-colecao-de-icones-simples/</link><pubDate>Wed, 07 Sep 2022 16:46:56 +0900</pubDate><guid>http://kenji.blog/pt/p/sites-de-colecao-de-icones-simples/</guid><description>&lt;img src="http://kenji.blog/p/%E3%82%B7%E3%83%B3%E3%83%97%E3%83%AB%E3%81%AA%E3%82%A2%E3%82%A4%E3%82%B3%E3%83%B3%E9%9B%86%E3%82%B5%E3%82%A4%E3%83%88/img_2.png" alt="Featured image of post Sites de coleção de ícones simples" />&lt;h2 id="google-material-symbols-and-icons">Google Material Symbols and Icons
&lt;/h2>&lt;p>&lt;a class="link" href="https://fonts.google.com/icons" target="_blank" rel="noopener"
>https://fonts.google.com/icons&lt;/a>
&lt;img src="http://kenji.blog/p/%E3%82%B7%E3%83%B3%E3%83%97%E3%83%AB%E3%81%AA%E3%82%A2%E3%82%A4%E3%82%B3%E3%83%B3%E9%9B%86%E3%82%B5%E3%82%A4%E3%83%88/img.png"
width="630"
height="447"
srcset="http://kenji.blog/p/%E3%82%B7%E3%83%B3%E3%83%97%E3%83%AB%E3%81%AA%E3%82%A2%E3%82%A4%E3%82%B3%E3%83%B3%E9%9B%86%E3%82%B5%E3%82%A4%E3%83%88/img_hu2e790b3adfba32854ad71745e7545591_74194_480x0_resize_box_3.png 480w, http://kenji.blog/p/%E3%82%B7%E3%83%B3%E3%83%97%E3%83%AB%E3%81%AA%E3%82%A2%E3%82%A4%E3%82%B3%E3%83%B3%E9%9B%86%E3%82%B5%E3%82%A4%E3%83%88/img_hu2e790b3adfba32854ad71745e7545591_74194_1024x0_resize_box_3.png 1024w"
loading="lazy"
alt="img.png"
class="gallery-image"
data-flex-grow="140"
data-flex-basis="338px"
>&lt;/p>
&lt;h2 id="github-octicons">GitHub Octicons
&lt;/h2>&lt;p>&lt;a class="link" href="https://primer.style/octicons/" target="_blank" rel="noopener"
>https://primer.style/octicons/&lt;/a>
&lt;img src="http://kenji.blog/p/%E3%82%B7%E3%83%B3%E3%83%97%E3%83%AB%E3%81%AA%E3%82%A2%E3%82%A4%E3%82%B3%E3%83%B3%E9%9B%86%E3%82%B5%E3%82%A4%E3%83%88/images/img_4.png"
width="629"
height="458"
srcset="http://kenji.blog/p/%E3%82%B7%E3%83%B3%E3%83%97%E3%83%AB%E3%81%AA%E3%82%A2%E3%82%A4%E3%82%B3%E3%83%B3%E9%9B%86%E3%82%B5%E3%82%A4%E3%83%88/images/img_4_huac9afc30a59605ec9b88aeb00e9ca35a_16251_480x0_resize_box_3.png 480w, http://kenji.blog/p/%E3%82%B7%E3%83%B3%E3%83%97%E3%83%AB%E3%81%AA%E3%82%A2%E3%82%A4%E3%82%B3%E3%83%B3%E9%9B%86%E3%82%B5%E3%82%A4%E3%83%88/images/img_4_huac9afc30a59605ec9b88aeb00e9ca35a_16251_1024x0_resize_box_3.png 1024w"
loading="lazy"
alt="img.png"
class="gallery-image"
data-flex-grow="137"
data-flex-basis="329px"
>&lt;/p>
&lt;h2 id="sargam-icons">Sargam Icons
&lt;/h2>&lt;p>&lt;a class="link" href="https://sargamicons.com/" target="_blank" rel="noopener"
>https://sargamicons.com/&lt;/a>
&lt;img src="http://kenji.blog/p/%E3%82%B7%E3%83%B3%E3%83%97%E3%83%AB%E3%81%AA%E3%82%A2%E3%82%A4%E3%82%B3%E3%83%B3%E9%9B%86%E3%82%B5%E3%82%A4%E3%83%88/img_3.png"
width="630"
height="394"
srcset="http://kenji.blog/p/%E3%82%B7%E3%83%B3%E3%83%97%E3%83%AB%E3%81%AA%E3%82%A2%E3%82%A4%E3%82%B3%E3%83%B3%E9%9B%86%E3%82%B5%E3%82%A4%E3%83%88/img_3_hu0066a2e8d1a9197597bb942dc0458191_124040_480x0_resize_box_3.png 480w, http://kenji.blog/p/%E3%82%B7%E3%83%B3%E3%83%97%E3%83%AB%E3%81%AA%E3%82%A2%E3%82%A4%E3%82%B3%E3%83%B3%E9%9B%86%E3%82%B5%E3%82%A4%E3%83%88/img_3_hu0066a2e8d1a9197597bb942dc0458191_124040_1024x0_resize_box_3.png 1024w"
loading="lazy"
alt="img_3.png"
class="gallery-image"
data-flex-grow="159"
data-flex-basis="383px"
>&lt;/p>
&lt;h2 id="milhares-de-ícones-gratuitos">Milhares de ícones gratuitos
&lt;/h2>&lt;ul>
&lt;li>&lt;a class="link" href="https://icon-icons.com/" target="_blank" rel="noopener"
>https://icon-icons.com/&lt;/a>
&lt;img src="http://kenji.blog/p/%E3%82%B7%E3%83%B3%E3%83%97%E3%83%AB%E3%81%AA%E3%82%A2%E3%82%A4%E3%82%B3%E3%83%B3%E9%9B%86%E3%82%B5%E3%82%A4%E3%83%88/images/img.png"
width="630"
height="458"
srcset="http://kenji.blog/p/%E3%82%B7%E3%83%B3%E3%83%97%E3%83%AB%E3%81%AA%E3%82%A2%E3%82%A4%E3%82%B3%E3%83%B3%E9%9B%86%E3%82%B5%E3%82%A4%E3%83%88/images/img_hud4e59f23b65e922f3b125a8a3404b846_60034_480x0_resize_box_3.png 480w, http://kenji.blog/p/%E3%82%B7%E3%83%B3%E3%83%97%E3%83%AB%E3%81%AA%E3%82%A2%E3%82%A4%E3%82%B3%E3%83%B3%E9%9B%86%E3%82%B5%E3%82%A4%E3%83%88/images/img_hud4e59f23b65e922f3b125a8a3404b846_60034_1024x0_resize_box_3.png 1024w"
loading="lazy"
alt="img.png"
class="gallery-image"
data-flex-grow="137"
data-flex-basis="330px"
>&lt;/li>
&lt;/ul>
&lt;h2 id="flaticon">flaticon
&lt;/h2>&lt;p>&lt;a class="link" href="https://www.flaticon.com/" target="_blank" rel="noopener"
>https://www.flaticon.com/&lt;/a>
&lt;img src="http://kenji.blog/p/%E3%82%B7%E3%83%B3%E3%83%97%E3%83%AB%E3%81%AA%E3%82%A2%E3%82%A4%E3%82%B3%E3%83%B3%E9%9B%86%E3%82%B5%E3%82%A4%E3%83%88/images/img_1.png"
width="632"
height="457"
srcset="http://kenji.blog/p/%E3%82%B7%E3%83%B3%E3%83%97%E3%83%AB%E3%81%AA%E3%82%A2%E3%82%A4%E3%82%B3%E3%83%B3%E9%9B%86%E3%82%B5%E3%82%A4%E3%83%88/images/img_1_hudb7d87f05c11753d254c7b78aaefffc2_54756_480x0_resize_box_3.png 480w, http://kenji.blog/p/%E3%82%B7%E3%83%B3%E3%83%97%E3%83%AB%E3%81%AA%E3%82%A2%E3%82%A4%E3%82%B3%E3%83%B3%E9%9B%86%E3%82%B5%E3%82%A4%E3%83%88/images/img_1_hudb7d87f05c11753d254c7b78aaefffc2_54756_1024x0_resize_box_3.png 1024w"
loading="lazy"
alt="img_1.png"
class="gallery-image"
data-flex-grow="138"
data-flex-basis="331px"
>&lt;/p>
&lt;h2 id="iconfinder">ICONFINDER
&lt;/h2>&lt;p>&lt;a class="link" href="https://www.iconfinder.com/" target="_blank" rel="noopener"
>https://www.iconfinder.com/&lt;/a>
&lt;img src="http://kenji.blog/p/%E3%82%B7%E3%83%B3%E3%83%97%E3%83%AB%E3%81%AA%E3%82%A2%E3%82%A4%E3%82%B3%E3%83%B3%E9%9B%86%E3%82%B5%E3%82%A4%E3%83%88/images/img_2.png"
width="629"
height="457"
srcset="http://kenji.blog/p/%E3%82%B7%E3%83%B3%E3%83%97%E3%83%AB%E3%81%AA%E3%82%A2%E3%82%A4%E3%82%B3%E3%83%B3%E9%9B%86%E3%82%B5%E3%82%A4%E3%83%88/images/img_2_hu0dc800a470d49e22764252e0fa03fc17_23662_480x0_resize_box_3.png 480w, http://kenji.blog/p/%E3%82%B7%E3%83%B3%E3%83%97%E3%83%AB%E3%81%AA%E3%82%A2%E3%82%A4%E3%82%B3%E3%83%B3%E9%9B%86%E3%82%B5%E3%82%A4%E3%83%88/images/img_2_hu0dc800a470d49e22764252e0fa03fc17_23662_1024x0_resize_box_3.png 1024w"
loading="lazy"
alt="img_2.png"
class="gallery-image"
data-flex-grow="137"
data-flex-basis="330px"
>&lt;/p>
&lt;h2 id="iconfont">iconfont
&lt;/h2>&lt;p>&lt;a class="link" href="https://www.iconfont.cn/" target="_blank" rel="noopener"
>https://www.iconfont.cn/&lt;/a>
&lt;img src="http://kenji.blog/p/%E3%82%B7%E3%83%B3%E3%83%97%E3%83%AB%E3%81%AA%E3%82%A2%E3%82%A4%E3%82%B3%E3%83%B3%E9%9B%86%E3%82%B5%E3%82%A4%E3%83%88/images/img_3.png"
width="635"
height="460"
srcset="http://kenji.blog/p/%E3%82%B7%E3%83%B3%E3%83%97%E3%83%AB%E3%81%AA%E3%82%A2%E3%82%A4%E3%82%B3%E3%83%B3%E9%9B%86%E3%82%B5%E3%82%A4%E3%83%88/images/img_3_hu295bfcef20bd429ddd55b7aef56dd01b_108321_480x0_resize_box_3.png 480w, http://kenji.blog/p/%E3%82%B7%E3%83%B3%E3%83%97%E3%83%AB%E3%81%AA%E3%82%A2%E3%82%A4%E3%82%B3%E3%83%B3%E9%9B%86%E3%82%B5%E3%82%A4%E3%83%88/images/img_3_hu295bfcef20bd429ddd55b7aef56dd01b_108321_1024x0_resize_box_3.png 1024w"
loading="lazy"
alt="img_3.png"
class="gallery-image"
data-flex-grow="138"
data-flex-basis="331px"
>&lt;/p>
&lt;h2 id="open-iconic">open-iconic
&lt;/h2>&lt;ul>
&lt;li>&lt;a class="link" href="https://github.com/iconic/open-iconic" target="_blank" rel="noopener"
>https://github.com/iconic/open-iconic&lt;/a>
&lt;img src="http://kenji.blog/p/%E3%82%B7%E3%83%B3%E3%83%97%E3%83%AB%E3%81%AA%E3%82%A2%E3%82%A4%E3%82%B3%E3%83%B3%E9%9B%86%E3%82%B5%E3%82%A4%E3%83%88/img_1.png"
width="630"
height="429"
srcset="http://kenji.blog/p/%E3%82%B7%E3%83%B3%E3%83%97%E3%83%AB%E3%81%AA%E3%82%A2%E3%82%A4%E3%82%B3%E3%83%B3%E9%9B%86%E3%82%B5%E3%82%A4%E3%83%88/img_1_hu1d827bbc120ad9c667c26a03c4813010_114951_480x0_resize_box_3.png 480w, http://kenji.blog/p/%E3%82%B7%E3%83%B3%E3%83%97%E3%83%AB%E3%81%AA%E3%82%A2%E3%82%A4%E3%82%B3%E3%83%B3%E9%9B%86%E3%82%B5%E3%82%A4%E3%83%88/img_1_hu1d827bbc120ad9c667c26a03c4813010_114951_1024x0_resize_box_3.png 1024w"
loading="lazy"
alt="img_1.png"
class="gallery-image"
data-flex-grow="146"
data-flex-basis="352px"
>&lt;/li>
&lt;/ul></description></item><item><title>Alterando o esquema de cores do PaperMod</title><link>http://kenji.blog/pt/p/papermod%E3%81%AE%E9%85%8D%E8%89%B2%E5%A4%89%E6%9B%B4/</link><pubDate>Wed, 07 Sep 2022 15:30:21 +0900</pubDate><guid>http://kenji.blog/pt/p/papermod%E3%81%AE%E9%85%8D%E8%89%B2%E5%A4%89%E6%9B%B4/</guid><description>&lt;img src="http://kenji.blog/p/papermod%E3%81%AE%E9%85%8D%E8%89%B2%E5%A4%89%E6%9B%B4/img.png" alt="Featured image of post Alterando o esquema de cores do PaperMod" />&lt;p>Alterei o esquema de cores do tema PaperMod. Consultei o seguinte link para o método de alteração.&lt;/p>
&lt;p>&lt;a class="link" href="https://github.com/adityatelange/hugo-PaperMod/discussions/645" target="_blank" rel="noopener"
>https://github.com/adityatelange/hugo-PaperMod/discussions/645&lt;/a>&lt;/p>
&lt;p>O caminho do CSS é o seguinte.&lt;/p>
&lt;p>&lt;code>themes/PaperMod/assets/css/extended/blank.css&lt;/code>&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt"> 1
&lt;/span>&lt;span class="lnt"> 2
&lt;/span>&lt;span class="lnt"> 3
&lt;/span>&lt;span class="lnt"> 4
&lt;/span>&lt;span class="lnt"> 5
&lt;/span>&lt;span class="lnt"> 6
&lt;/span>&lt;span class="lnt"> 7
&lt;/span>&lt;span class="lnt"> 8
&lt;/span>&lt;span class="lnt"> 9
&lt;/span>&lt;span class="lnt">10
&lt;/span>&lt;span class="lnt">11
&lt;/span>&lt;span class="lnt">12
&lt;/span>&lt;span class="lnt">13
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">:root {
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> --entry: #fbf7ef;
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> --primary: rgba(113, 103, 91, 1.00);
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> --secondary: rgba(113, 103, 91, 0.95);
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> --tertiary: rgba(113, 103, 91, 0.50);
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> --content: rgba(113, 103, 91, 0.85);
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> --hljs-bg: #34231B;
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> --code-bg: #ebe4d7;
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> --border: #fdfaf5;
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> --theme: #fbf7ef;
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">}
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">.dark {
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">}
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>Nenhuma alteração para o modo escuro por enquanto.&lt;/p></description></item><item><title>Consideração de uma Criança</title><link>http://kenji.blog/pt/p/consideracao-de-uma-crianca/</link><pubDate>Wed, 07 Sep 2022 04:40:52 +0900</pubDate><guid>http://kenji.blog/pt/p/consideracao-de-uma-crianca/</guid><description>&lt;img src="http://kenji.blog/p/%E5%AD%90%E4%BE%9B%E3%81%AE%E3%81%9D%E3%82%93%E3%81%9F%E3%81%8F/images/img.png" alt="Featured image of post Consideração de uma Criança" />&lt;p>Quando a mãe ficou doente e estava de cama,
Ao preparar o jantar ou o banho, perguntei à minha filha (2 anos): &amp;ldquo;Devemos pedir à mãe para fazer isso?&amp;rdquo;,
Ela respondeu: &amp;ldquo;Não, ela está dormindo!&amp;rdquo; e pensei que, à sua maneira, ela estava sendo atenciosa.&lt;/p>
&lt;p>Fiquei feliz em ver que ela está se tornando alguém que se importa com os outros.&lt;/p></description></item><item><title>Notas de Gestão</title><link>http://kenji.blog/pt/p/notas-de-gestao/</link><pubDate>Wed, 07 Sep 2022 02:36:11 +0900</pubDate><guid>http://kenji.blog/pt/p/notas-de-gestao/</guid><description>&lt;img src="http://kenji.blog/p/%E7%B5%8C%E5%96%B6%E8%80%85%E3%83%A1%E3%83%A2/images/img.png" alt="Featured image of post Notas de Gestão" />&lt;h1 id="encontrar-negócios-que-estão-se-tornando-populares">Encontrar negócios que estão se tornando populares
&lt;/h1>&lt;ul>
&lt;li>Pergunte a pessoas de dentro do Hot Pepper e a contadores sobre negócios que estão em alta&lt;/li>
&lt;li>Não entre em negócios que já estão saturados e têm concorrentes fortes&lt;/li>
&lt;li>Só entre em negócios onde você tem certeza de que pode atrair clientes (não entre em negócios onde os concorrentes existentes usam métodos especiais (inimitáveis) de atração de clientes)&lt;/li>
&lt;/ul>
&lt;h1 id="imitar-minuciosamente">Imitar minuciosamente
&lt;/h1>&lt;ul>
&lt;li>Pesquise a lógica de negócios antes de entrar&lt;/li>
&lt;li>Copie minuciosamente&lt;/li>
&lt;li>Melhore com base nisso&lt;/li>
&lt;/ul>
&lt;h1 id="sistematizar">Sistematizar
&lt;/h1>&lt;ul>
&lt;li>Manualize tudo para que qualquer pessoa possa fazer sem esforço&lt;/li>
&lt;li>Pense em ideias para aumentar as vendas (aumento de clientes, valor por cliente) e reduzir custos (custos de pessoal, publicidade) e sistematize&lt;/li>
&lt;/ul>
&lt;h1 id="filosofia-da-gestão">Filosofia da gestão
&lt;/h1>&lt;ul>
&lt;li>A filosofia do gestor é &amp;ldquo;maximizar os lucros da empresa&amp;rdquo; e nada mais, nada menos&lt;/li>
&lt;li>Fazer contribuição social ou ser querido pelos funcionários não é uma boa filosofia para o gestor (pense que essas coisas virão naturalmente mais tarde)&lt;/li>
&lt;/ul>
&lt;!--
via https://www.youtube.com/watch?v=2TALYTLAke0
--></description></item><item><title>O que eu penso sobre o Japão</title><link>http://kenji.blog/pt/p/o-que-eu-penso-sobre-o-japao/</link><pubDate>Tue, 06 Sep 2022 02:24:11 +0900</pubDate><guid>http://kenji.blog/pt/p/o-que-eu-penso-sobre-o-japao/</guid><description>&lt;img src="http://kenji.blog/p/%E6%97%A5%E6%9C%AC%E3%81%AB%E3%81%A4%E3%81%84%E3%81%A6%E6%80%9D%E3%81%86%E3%81%93%E3%81%A8/images/img.png" alt="Featured image of post O que eu penso sobre o Japão" />&lt;p>Vou organizar o que eu acho estranho e o que penso sobre a sociedade japonesa.&lt;/p>
&lt;h1 id="sobre-as-bolsas-de-estudo">Sobre as bolsas de estudo
&lt;/h1>&lt;p>Quando se fala em bolsas de estudo no Japão, a maioria delas tem juros e devem ser devolvidas (empréstimos estudantis).
Além disso, as mensalidades universitárias têm aumentado constantemente desde 1950, e a taxa de recebimento de bolsas também está em tendência de aumento.&lt;/p>
&lt;p>&lt;img src="http://kenji.blog/images/japanese_tuition_fee.png"
loading="lazy"
alt="Evolução das mensalidades"
>
&lt;img src="http://kenji.blog/images/receipt_rate.png"
loading="lazy"
alt="Evolução da taxa de recebimento de bolsas"
>&lt;/p>
&lt;p>Por outro lado, parece que o valor médio total emprestado recentemente chega a 3,24 milhões de ienes.&lt;/p>
&lt;blockquote>
&lt;p>Entre os usuários de bolsas da Organização de Serviços Estudantis do Japão, o valor médio total emprestado é de 3.243.000 ienes. &lt;a class="link" href="https://magazine.aruhi-corp.co.jp/0000-5086/#:~:text=%E5%80%9F%E5%85%A5%E7%B7%8F%E9%A1%8D%E3%81%AA%E3%81%A9%E3%81%AE%E5%B9%B3%E5%9D%87%E9%A1%8D%E3%81%AF&amp;amp;text=%E6%97%A5%E6%9C%AC%E5%AD%A6%E7%94%9F%E6%94%AF%E6%8F%B4%E6%A9%9F%E6%A7%8B%E3%81%AE%E5%A5%A8%E5%AD%A6%E9%87%91%E5%88%A9%E7%94%A8%E8%80%85%E3%81%AB%E3%81%8A%E3%81%84%E3%81%A6,%E4%BB%A5%E4%B8%8A%E3%82%92%E5%8D%A0%E3%82%81%E3%81%A6%E3%81%84%E3%81%BE%E3%81%99%E3%80%82" target="_blank" rel="noopener"
>Referência&lt;/a>&lt;/p>
&lt;/blockquote>
&lt;p>Se alguém se formar na universidade aos 22 anos com uma dívida de até 3 milhões de ienes, naturalmente a idade de casamento será atrasada, e será mais difícil ter filhos, o que eu acredito ser uma das causas do problema do declínio da taxa de natalidade no Japão.&lt;/p>
&lt;h1 id="a-disseminação-da-responsabilidade-pessoal">A disseminação da responsabilidade pessoal
&lt;/h1>&lt;p>Isso pode ser mais uma percepção, mas acho que há uma atitude social fria de &amp;ldquo;o que é dos outros é dos outros&amp;rdquo;.
Com uma recessão durando décadas, pode ser inevitável que haja essa tendência, mas
mesmo com o problema das bolsas de estudo mencionado acima, ele não é tratado como um problema de toda a sociedade, e sinto que as vozes dos jovens, que têm menos votos, ou das minorias são ignoradas nas eleições.
Embora, a longo prazo, seja um problema muito importante para o Japão como um todo.&lt;/p>
&lt;p>Em vez de ir em direção a uma competição excessiva, a atitude de ajudar todos juntos se houver pessoas, gerações ou grupos em dificuldades é algo que eu acho muito importante para um país.
(No entanto, sinto um desconforto quando o governo insiste em &amp;ldquo;autoajuda e ajuda mútua&amp;rdquo;. Quero que eles tomem a iniciativa de ajudar os vulneráveis.)&lt;/p>
&lt;p>(Este artigo será atualizado periodicamente.)&lt;/p>
&lt;h2 id="características-dos-japoneses-sob-a-perspectiva-da-ia">Características dos japoneses sob a perspectiva da IA
&lt;/h2>&lt;p>Sim, aqui estão as características dos japoneses.&lt;/p>
&lt;p>【Pontos positivos】&lt;/p>
&lt;ul>
&lt;li>Os japoneses têm uma cultura de ser educados e de prestar atenção ao respeito e tratamento aos outros.&lt;/li>
&lt;li>A pontualidade é rigorosa, e manter o horário é muito respeitado.&lt;/li>
&lt;li>Há uma forte mentalidade coletivista, e o trabalho em equipe e a cooperação são valorizados.&lt;/li>
&lt;li>A limpeza é importante, e há uma tendência de ser diligente com a etiqueta em locais públicos e a limpeza.&lt;/li>
&lt;li>Os presentes e lembranças são valorizados, e a cultura do agradecimento é amplamente difundida.&lt;/li>
&lt;/ul>
&lt;p>【Pontos negativos】&lt;/p>
&lt;ul>
&lt;li>Às vezes, eles têm dificuldade em afirmar opiniões pessoais e tendem a evitar conflitos de opinião.&lt;/li>
&lt;li>É uma cultura de trabalho muito rigorosa, onde horas extras e morte por excesso de trabalho (karoshi) às vezes são vistas como problemas.&lt;/li>
&lt;li>Ainda existem problemas de discriminação e exclusão contra estrangeiros, e a harmonia com a comunidade internacional às vezes é questionada.&lt;/li>
&lt;li>Há uma tendência ao autoritarismo, e muitas vezes se aponta que aceitam as opiniões de chefes ou pessoas mais velhas incondicionalmente.&lt;/li>
&lt;li>Às vezes, são criticados por serem uma sociedade fechada com tendência a ter dificuldade em aceitar culturas ou valores externos.&lt;/li>
&lt;/ul></description></item><item><title>Como começar com Rust</title><link>http://kenji.blog/pt/p/como-come%C3%A7ar-com-rust/</link><pubDate>Tue, 06 Sep 2022 00:12:36 +0900</pubDate><guid>http://kenji.blog/pt/p/como-come%C3%A7ar-com-rust/</guid><description>&lt;img src="http://kenji.blog/p/rust%E3%81%AE%E3%81%AF%E3%81%98%E3%82%81%E3%81%8B%E3%81%9F/images/rust_logo.png" alt="Featured image of post Como começar com Rust" />&lt;h1 id="introdução">Introdução
&lt;/h1>&lt;p>Rust é uma linguagem de programação relativamente nova que permite escrever módulos rápidos e eficientes em memória com uma sintaxe moderna.
É compatível com várias plataformas e também é usada no mundo do WebAssembly e em sistemas embarcados.
De forma notável, foi adotada pelo Firefox, DropBox e Cloudflare.&lt;/p>
&lt;p>Também está atraindo atenção como uma alternativa ao C++.&lt;/p>
&lt;h1 id="como-instalar">Como instalar
&lt;/h1>&lt;p>&lt;a class="link" href="https://www.rust-lang.org/ja/tools/install" target="_blank" rel="noopener"
>Instalar o Rust&lt;/a>&lt;/p>
&lt;p>O site acima fornece instruções de instalação para cada plataforma.&lt;/p>
&lt;h1 id="primeiro-programa">Primeiro programa
&lt;/h1>&lt;p>Salve o seguinte programa como &lt;code>main.rs&lt;/code>.&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">fn main() {
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> println!(&amp;#34;Hello, world!&amp;#34;);
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">}
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>Ao executar &lt;code>rustc main.rs&lt;/code> no prompt de comando ou terminal, ele será compilado. Executar &lt;code>./main&lt;/code> (ou &lt;code>main.exe&lt;/code> no Windows) exibirá &lt;code>Hello, world!&lt;/code>.&lt;/p>
&lt;h1 id="documentação-em-japonês">Documentação em Japonês
&lt;/h1>&lt;p>&lt;a class="link" href="https://doc.rust-jp.rs/book-ja/" target="_blank" rel="noopener"
>The Rust Programming Language Edição Japonesa&lt;/a>&lt;/p>
&lt;p>As explicações necessárias para aprender Rust estão compiladas no link acima (versão traduzida para o japonês).
É tão abrangente que você não precisa comprar um livro sobre Rust.&lt;/p>
&lt;h1 id="se-você-quiser-experimentar-na-web">Se você quiser experimentar na Web
&lt;/h1>&lt;p>Se você quiser experimentá-lo na Web sem instalar o compilador, pode usar &lt;a class="link" href="https://play.rust-lang.org/" target="_blank" rel="noopener"
>The Rust Playground&lt;/a>.
Após inserir o código e clicar no botão &amp;ldquo;Run&amp;rdquo;, ele será compilado e executado na Web.&lt;/p></description></item><item><title>Mudei o ambiente de internet da Flet's Hikari para a J:COM</title><link>http://kenji.blog/pt/p/%E3%83%8D%E3%83%83%E3%83%88%E7%92%B0%E5%A2%83%E3%82%92%E3%83%95%E3%83%AC%E3%83%83%E3%83%84%E5%85%89jcom%E3%81%AB%E5%A4%89%E3%81%88%E3%81%9F/</link><pubDate>Mon, 05 Sep 2022 22:48:51 +0900</pubDate><guid>http://kenji.blog/pt/p/%E3%83%8D%E3%83%83%E3%83%88%E7%92%B0%E5%A2%83%E3%82%92%E3%83%95%E3%83%AC%E3%83%83%E3%83%84%E5%85%89jcom%E3%81%AB%E5%A4%89%E3%81%88%E3%81%9F/</guid><description>&lt;img src="http://kenji.blog/p/%E3%83%8D%E3%83%83%E3%83%88%E7%92%B0%E5%A2%83%E3%82%92%E3%83%95%E3%83%AC%E3%83%83%E3%83%84%E5%85%89jcom%E3%81%AB%E5%A4%89%E3%81%88%E3%81%9F/jcom.png" alt="Featured image of post Mudei o ambiente de internet da Flet's Hikari para a J:COM" />&lt;h1 id="mudei-o-ambiente-de-internet-da-minha-casa-da-flets-hikari-para-a-jcom">Mudei o ambiente de internet da minha casa da Flet&amp;rsquo;s Hikari para a J:COM
&lt;/h1>&lt;p>&lt;img src="http://kenji.blog/p/%E3%83%8D%E3%83%83%E3%83%88%E7%92%B0%E5%A2%83%E3%82%92%E3%83%95%E3%83%AC%E3%83%83%E3%83%84%E5%85%89jcom%E3%81%AB%E5%A4%89%E3%81%88%E3%81%9F/flets_hikari.png"
width="410"
height="123"
srcset="http://kenji.blog/p/%E3%83%8D%E3%83%83%E3%83%88%E7%92%B0%E5%A2%83%E3%82%92%E3%83%95%E3%83%AC%E3%83%83%E3%83%84%E5%85%89jcom%E3%81%AB%E5%A4%89%E3%81%88%E3%81%9F/flets_hikari_hu82dfae18127e227d3385a12e919dd77c_4214_480x0_resize_box_3.png 480w, http://kenji.blog/p/%E3%83%8D%E3%83%83%E3%83%88%E7%92%B0%E5%A2%83%E3%82%92%E3%83%95%E3%83%AC%E3%83%83%E3%83%84%E5%85%89jcom%E3%81%AB%E5%A4%89%E3%81%88%E3%81%9F/flets_hikari_hu82dfae18127e227d3385a12e919dd77c_4214_1024x0_resize_box_3.png 1024w"
loading="lazy"
class="gallery-image"
data-flex-grow="333"
data-flex-basis="800px"
>&lt;/p>
&lt;p>&lt;img src="http://kenji.blog/p/%E3%83%8D%E3%83%83%E3%83%88%E7%92%B0%E5%A2%83%E3%82%92%E3%83%95%E3%83%AC%E3%83%83%E3%83%84%E5%85%89jcom%E3%81%AB%E5%A4%89%E3%81%88%E3%81%9F/jcom.png"
width="380"
height="120"
srcset="http://kenji.blog/p/%E3%83%8D%E3%83%83%E3%83%88%E7%92%B0%E5%A2%83%E3%82%92%E3%83%95%E3%83%AC%E3%83%83%E3%83%84%E5%85%89jcom%E3%81%AB%E5%A4%89%E3%81%88%E3%81%9F/jcom_hub0ec31ac66f5927be8b28fe767bbeebb_3349_480x0_resize_box_3.png 480w, http://kenji.blog/p/%E3%83%8D%E3%83%83%E3%83%88%E7%92%B0%E5%A2%83%E3%82%92%E3%83%95%E3%83%AC%E3%83%83%E3%83%84%E5%85%89jcom%E3%81%AB%E5%A4%89%E3%81%88%E3%81%9F/jcom_hub0ec31ac66f5927be8b28fe767bbeebb_3349_1024x0_resize_box_3.png 1024w"
loading="lazy"
class="gallery-image"
data-flex-grow="316"
data-flex-basis="760px"
>&lt;/p>
&lt;p>Com a indicação de um conhecido, mudei a linha de internet da minha casa da Flet&amp;rsquo;s Hikari para a J:COM. Os motivos foram:&lt;/p>
&lt;ol>
&lt;li>A mensalidade ficou mais barata. 3.619 ienes → 2.180 ienes&lt;/li>
&lt;li>A velocidade da internet aumentou de 100MBps para 320MBps&lt;/li>
&lt;/ol>
&lt;p>Esses dois pontos.&lt;/p>
&lt;h1 id="impressões-após-o-uso">Impressões após o uso
&lt;/h1>&lt;p>Faz cerca de uma semana desde a mudança e, até agora, não houve quase nenhum problema. Abaixo listo alguns pontos que me chamaram a atenção.&lt;/p>
&lt;p>Ao mudar de fato, notei que a velocidade de download certamente ficou mais rápida, passando de 60MBps para quase 320MBps. No entanto,
a velocidade de upload, que era de cerca de 40MBps na época da Flet&amp;rsquo;s Hikari, caiu para cerca de 10MBps. Isso parece ser uma especificação do lado da J:COM.
Como não faço transmissões ou upload de uma grande quantidade de dados no momento, vou observar como fica.&lt;/p>
&lt;p>Além disso, recentemente tanto eu quanto minha família estamos trabalhando principalmente em home office, e hoje, pela primeira vez, a internet caiu por alguns minutos a dezenas de minutos. Voltou automaticamente, mas
pode não ser um bom sinal. Ainda não faz nem uma semana desde a mudança&amp;hellip;&lt;/p>
&lt;p>Como curiosidade, a J:COM restringe a comunicação P2P, então parece que a velocidade de aplicativos P2P não é boa. Quem usa P2P deve ter cuidado.&lt;/p>
&lt;h1 id="sobre-o-serviço">Sobre o serviço
&lt;/h1>&lt;p>No momento do contrato, se você se inscrever na Netflix ou no Disney+, ganha um cartão QUO no valor de 40.000 ienes, que compensa a taxa de contrato de cada serviço e deixa a mensalidade
um pouco mais barata na média, então contratei o serviço ao mesmo tempo que fechei o contrato. A Netflix tem contrato de 1 ano e o Disney+ de meio ano, e parece que é necessário realizar os procedimentos de cancelamento por conta própria.&lt;/p>
&lt;p>Como ainda faz pouco tempo desde a mudança, se surgirem mais impressões ou opiniões de uso, pretendo atualizar o artigo novamente. Até mais,&lt;/p>
&lt;h1 id="0609-a-internet-ficou-difícil-de-conectar">06/09 A internet ficou difícil de conectar
&lt;/h1>&lt;ul>
&lt;li>06/09/2022 por volta das 13:13 cerca de 3 a 5 minutos&lt;/li>
&lt;li>06/09/2022 por volta das 13:30 cerca de 3 a 5 minutos&lt;/li>
&lt;li>Depois disso mais algumas vezes&amp;hellip;&lt;/li>
&lt;/ul>
&lt;p>&lt;img src="http://kenji.blog/p/%E3%83%8D%E3%83%83%E3%83%88%E7%92%B0%E5%A2%83%E3%82%92%E3%83%95%E3%83%AC%E3%83%83%E3%83%84%E5%85%89jcom%E3%81%AB%E5%A4%89%E3%81%88%E3%81%9F/trouble_shooting.png"
width="571"
height="440"
srcset="http://kenji.blog/p/%E3%83%8D%E3%83%83%E3%83%88%E7%92%B0%E5%A2%83%E3%82%92%E3%83%95%E3%83%AC%E3%83%83%E3%83%84%E5%85%89jcom%E3%81%AB%E5%A4%89%E3%81%88%E3%81%9F/trouble_shooting_hue0af70687972260feb3e86c327d1e005_17559_480x0_resize_box_3.png 480w, http://kenji.blog/p/%E3%83%8D%E3%83%83%E3%83%88%E7%92%B0%E5%A2%83%E3%82%92%E3%83%95%E3%83%AC%E3%83%83%E3%83%84%E5%85%89jcom%E3%81%AB%E5%A4%89%E3%81%88%E3%81%9F/trouble_shooting_hue0af70687972260feb3e86c327d1e005_17559_1024x0_resize_box_3.png 1024w"
loading="lazy"
alt="Diagnóstico de rede"
class="gallery-image"
data-flex-grow="129"
data-flex-basis="311px"
>&lt;/p>
&lt;p>Parece que o problema é no DNS, então configurei o servidor DNS consultando &lt;a class="link" href="https://internet.watch.impress.co.jp/docs/column/shimizu/1367271.html" target="_blank" rel="noopener"
>aqui&lt;/a>.
Vamos ver o que acontece agora&amp;hellip; Como a situação de não conseguir conectar persistiu mesmo com a configuração do DNS, entrei em contato com o suporte e eles disseram que estavam fazendo uma manutenção de emergência&amp;hellip; Logo após o contato o estado da conexão melhorou, então acho que eles tomaram alguma providência.&lt;/p></description></item><item><title>【HUGO】Visualização no ambiente local</title><link>http://kenji.blog/pt/p/hugovisualiza%C3%A7%C3%A3o-no-ambiente-local/</link><pubDate>Mon, 05 Sep 2022 12:28:01 +0900</pubDate><guid>http://kenji.blog/pt/p/hugovisualiza%C3%A7%C3%A3o-no-ambiente-local/</guid><description>&lt;img src="http://kenji.blog/p/hugo%E3%83%AD%E3%83%BC%E3%82%AB%E3%83%AB%E3%81%A7%E7%92%B0%E5%A2%83%E3%81%A7%E8%A1%A8%E7%A4%BA%E3%83%97%E3%83%AC%E3%83%93%E3%83%A5%E3%83%BC/img.png" alt="Featured image of post 【HUGO】Visualização no ambiente local" />&lt;h1 id="instalação-do-hugo">Instalação do HUGO
&lt;/h1>&lt;h2 id="download">Download
&lt;/h2>&lt;p>&lt;a class="link" href="https://github.com/gohugoio/hugo/releases" target="_blank" rel="noopener"
>Download do HUGO&lt;/a>&lt;/p>
&lt;p>A partir do site acima, baixe e extraia o módulo do Windows que corresponde ao seu ambiente.
No meu caso, baixei &amp;ldquo;hugo_0.102.3_Windows-64bit.zip&amp;rdquo;.&lt;/p>
&lt;h2 id="extração">Extração
&lt;/h2>&lt;p>Extraia o arquivo zip baixado e copie o hugo.exe dentro dele para uma pasta que você criar, por exemplo, C:\bin.&lt;/p>
&lt;h2 id="registrar-nas-variáveis-de-ambiente">Registrar nas Variáveis de Ambiente
&lt;/h2>&lt;p>Registre nas variáveis de ambiente para poder executar o hugo.exe de qualquer lugar.
As operações abaixo são para o Windows 11, mas você deve conseguir registrar com um procedimento semelhante:&lt;/p>
&lt;ol>
&lt;li>Pressione Win+Pause para abrir as informações da versão&lt;/li>
&lt;li>Clique em Configurações avançadas do sistema&lt;/li>
&lt;li>Clique em Variáveis de Ambiente&lt;/li>
&lt;li>Selecione Path e clique em Editar&lt;/li>
&lt;li>Clique em Novo, digite &amp;ldquo;C:\bin&amp;rdquo; em uma nova linha e clique em OK para fechar a caixa de diálogo&lt;/li>
&lt;/ol>
&lt;h1 id="visualizar-o-blog">Visualizar o blog
&lt;/h1>&lt;p>No prompt de comando, navegue até a pasta do blog HUGO e execute o comando abaixo.&lt;/p>
&lt;p>&lt;code>hugo server -D&lt;/code>&lt;/p>
&lt;p>O resultado da execução está abaixo. (-D é uma opção para exibir artigos em rascunho.)&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt"> 1
&lt;/span>&lt;span class="lnt"> 2
&lt;/span>&lt;span class="lnt"> 3
&lt;/span>&lt;span class="lnt"> 4
&lt;/span>&lt;span class="lnt"> 5
&lt;/span>&lt;span class="lnt"> 6
&lt;/span>&lt;span class="lnt"> 7
&lt;/span>&lt;span class="lnt"> 8
&lt;/span>&lt;span class="lnt"> 9
&lt;/span>&lt;span class="lnt">10
&lt;/span>&lt;span class="lnt">11
&lt;/span>&lt;span class="lnt">12
&lt;/span>&lt;span class="lnt">13
&lt;/span>&lt;span class="lnt">14
&lt;/span>&lt;span class="lnt">15
&lt;/span>&lt;span class="lnt">16
&lt;/span>&lt;span class="lnt">17
&lt;/span>&lt;span class="lnt">18
&lt;/span>&lt;span class="lnt">19
&lt;/span>&lt;span class="lnt">20
&lt;/span>&lt;span class="lnt">21
&lt;/span>&lt;span class="lnt">22
&lt;/span>&lt;span class="lnt">23
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">C:\Users\win11\IdeaProjects\kenji.blog&amp;gt;hugo server -D
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">Start building sites …
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">hugo v0.102.3-b76146b129d7caa52417f8e914fc5b9271bf56fc windows/amd64 BuildDate=2022-09-01T10:16:19Z VendorInfo=gohugoio
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> | JA
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">-------------------+-----
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> Pages | 39
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> Paginator pages | 0
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> Non-page files | 7
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> Static files | 0
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> Processed images | 0
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> Aliases | 13
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> Sitemaps | 1
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> Cleaned | 0
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">Built in 161 ms
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">Watching for changes in C:\Users\win11\IdeaProjects\kenji.blog\{archetypes,content,themes}
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">Watching for config changes in C:\Users\win11\IdeaProjects\kenji.blog\config.toml
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">Environment: &amp;#34;development&amp;#34;
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">Serving pages from memory
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">Running in Fast Render Mode. For full rebuilds on change: hugo server --disableFastRender
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">Web Server is available at http://localhost:1313/ (bind address 127.0.0.1)
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">Press Ctrl+C to stop
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>Como o endereço é exibido durante a execução (no exemplo acima, &lt;code>http://localhost:1313/&lt;/code>), copie o endereço no seu navegador.
A visualização é atualizada automaticamente toda vez que o arquivo é salvo.
Para terminar a visualização, digite Ctrl+C no prompt de comando.&lt;/p></description></item><item><title>Filmes com Matemáticos</title><link>http://kenji.blog/pt/p/%E6%95%B0%E5%AD%A6%E8%80%85%E3%81%8C%E7%99%BB%E5%A0%B4%E3%81%99%E3%82%8B%E6%98%A0%E7%94%BB/</link><pubDate>Mon, 05 Sep 2022 10:41:00 +0900</pubDate><guid>http://kenji.blog/pt/p/%E6%95%B0%E5%AD%A6%E8%80%85%E3%81%8C%E7%99%BB%E5%A0%B4%E3%81%99%E3%82%8B%E6%98%A0%E7%94%BB/</guid><description>&lt;img src="http://kenji.blog/p/%E6%95%B0%E5%AD%A6%E8%80%85%E3%81%8C%E7%99%BB%E5%A0%B4%E3%81%99%E3%82%8B%E6%98%A0%E7%94%BB/images/img.png" alt="Featured image of post Filmes com Matemáticos" />&lt;p>Aqui estão as minhas 3 principais recomendações de filmes com matemáticos como protagonistas.&lt;/p>
&lt;h1 id="uma-mente-brilhante">Uma Mente Brilhante
&lt;/h1>&lt;p>&lt;img src="http://kenji.blog/images/beautiful_mind.jpg"
loading="lazy"
>&lt;br>
Um filme que retrata a vida de um gênio matemático americano da vida real. O final tem uma reviravolta surpreendente.
Russell Crowe faz um excelente trabalho no papel principal.&lt;/p>
&lt;h1 id="enigma">Enigma
&lt;/h1>&lt;p>&lt;img src="http://kenji.blog/images/enigma.jpg"
loading="lazy"
>&lt;/p>
&lt;blockquote>
&lt;p>Um filme de 2001 baseado no romance &amp;ldquo;Enigma&amp;rdquo; de Robert Harris.
da Wikipédia&lt;/p>
&lt;/blockquote>
&lt;p>A história da decifração da máquina de criptografia Enigma criada pela Alemanha.&lt;/p>
&lt;h1 id="o-jogo-da-imitação">O Jogo da Imitação
&lt;/h1>&lt;p>&lt;img src="http://kenji.blog/images/imitation_game.jpg"
loading="lazy"
>&lt;/p>
&lt;p>Esta também é uma história de decifração de códigos lidando com a Enigma. Eu amo a atmosfera daquela época.&lt;/p>
&lt;h1 id="o-homem-que-viu-o-infinito">O Homem Que Viu o Infinito
&lt;/h1>&lt;p>&lt;img src="http://kenji.blog/p/%E6%95%B0%E5%AD%A6%E8%80%85%E3%81%8C%E7%99%BB%E5%A0%B4%E3%81%99%E3%82%8B%E6%98%A0%E7%94%BB/img.png"
width="566"
height="800"
srcset="http://kenji.blog/p/%E6%95%B0%E5%AD%A6%E8%80%85%E3%81%8C%E7%99%BB%E5%A0%B4%E3%81%99%E3%82%8B%E6%98%A0%E7%94%BB/img_hu224d39544ca0af082720aacd7902fd19_1089949_480x0_resize_box_3.png 480w, http://kenji.blog/p/%E6%95%B0%E5%AD%A6%E8%80%85%E3%81%8C%E7%99%BB%E5%A0%B4%E3%81%99%E3%82%8B%E6%98%A0%E7%94%BB/img_hu224d39544ca0af082720aacd7902fd19_1089949_1024x0_resize_box_3.png 1024w"
loading="lazy"
alt="img.png"
class="gallery-image"
data-flex-grow="70"
data-flex-basis="169px"
>&lt;/p>
&lt;p>Uma obra que retrata a interação entre o matemático da Universidade de Cambridge, Hardy, e o matemático indiano Ramanujan. Você pode sentir a beleza da matemática.&lt;/p>
&lt;h1 id="a-teoria-de-tudo">A Teoria de Tudo
&lt;/h1>&lt;p>&lt;img src="http://kenji.blog/p/%E6%95%B0%E5%AD%A6%E8%80%85%E3%81%8C%E7%99%BB%E5%A0%B4%E3%81%99%E3%82%8B%E6%98%A0%E7%94%BB/img_1.png"
width="800"
height="459"
srcset="http://kenji.blog/p/%E6%95%B0%E5%AD%A6%E8%80%85%E3%81%8C%E7%99%BB%E5%A0%B4%E3%81%99%E3%82%8B%E6%98%A0%E7%94%BB/img_1_hubfe00de5360673c8281820134bf7a309_739706_480x0_resize_box_3.png 480w, http://kenji.blog/p/%E6%95%B0%E5%AD%A6%E8%80%85%E3%81%8C%E7%99%BB%E5%A0%B4%E3%81%99%E3%82%8B%E6%98%A0%E7%94%BB/img_1_hubfe00de5360673c8281820134bf7a309_739706_1024x0_resize_box_3.png 1024w"
loading="lazy"
alt="img_1.png"
class="gallery-image"
data-flex-grow="174"
data-flex-basis="418px"
>&lt;/p>
&lt;p>Um filme que retrata a vida do Dr. Hawking.&lt;/p>
&lt;h1 id="particle-fever">Particle Fever
&lt;/h1>&lt;p>&lt;img src="http://kenji.blog/p/%E6%95%B0%E5%AD%A6%E8%80%85%E3%81%8C%E7%99%BB%E5%A0%B4%E3%81%99%E3%82%8B%E6%98%A0%E7%94%BB/img_2.png"
width="640"
height="960"
srcset="http://kenji.blog/p/%E6%95%B0%E5%AD%A6%E8%80%85%E3%81%8C%E7%99%BB%E5%A0%B4%E3%81%99%E3%82%8B%E6%98%A0%E7%94%BB/img_2_hu18abd37eefb70a17a04950b9cdaa7d84_902746_480x0_resize_box_3.png 480w, http://kenji.blog/p/%E6%95%B0%E5%AD%A6%E8%80%85%E3%81%8C%E7%99%BB%E5%A0%B4%E3%81%99%E3%82%8B%E6%98%A0%E7%94%BB/img_2_hu18abd37eefb70a17a04950b9cdaa7d84_902746_1024x0_resize_box_3.png 1024w"
loading="lazy"
alt="img_2.png"
class="gallery-image"
data-flex-grow="66"
data-flex-basis="160px"
>&lt;/p></description></item><item><title>Ambiente de trabalho de hoje</title><link>http://kenji.blog/pt/p/ambiente-de-trabalho-de-hoje/</link><pubDate>Sun, 04 Sep 2022 14:29:09 +0900</pubDate><guid>http://kenji.blog/pt/p/ambiente-de-trabalho-de-hoje/</guid><description>&lt;img src="http://kenji.blog/p/%E4%BB%8A%E6%97%A5%E3%81%AE%E4%BD%9C%E6%A5%AD%E7%92%B0%E5%A2%83/images/today_workplase.jpg" alt="Featured image of post Ambiente de trabalho de hoje" />&lt;h1 id="mesa-das-crianças">Mesa das crianças
&lt;/h1>&lt;p>O tempo em que as crianças estão dormindo é o tempo em que posso me dedicar ao trabalho. Depois que a soneca acabar, vamos brincar no parque.
Se eu tivesse um adaptador Lightning para HDMI para o iPad, poderia trabalhar na mesa da direita~&lt;/p></description></item><item><title>Adicionar comando para inserir data no IntelliJ IDEA</title><link>http://kenji.blog/pt/p/intellij-idea%E3%81%A7%E6%97%A5%E4%BB%98%E3%82%92%E8%B2%BC%E3%82%8A%E4%BB%98%E3%81%91%E3%82%8B%E3%82%B3%E3%83%9E%E3%83%B3%E3%83%89%E3%82%92%E8%BF%BD%E5%8A%A0%E3%81%99%E3%82%8B/</link><pubDate>Sun, 04 Sep 2022 05:59:04 +0900</pubDate><guid>http://kenji.blog/pt/p/intellij-idea%E3%81%A7%E6%97%A5%E4%BB%98%E3%82%92%E8%B2%BC%E3%82%8A%E4%BB%98%E3%81%91%E3%82%8B%E3%82%B3%E3%83%9E%E3%83%B3%E3%83%89%E3%82%92%E8%BF%BD%E5%8A%A0%E3%81%99%E3%82%8B/</guid><description>&lt;img src="http://kenji.blog/p/intellij-idea%E3%81%A7%E6%97%A5%E4%BB%98%E3%82%92%E8%B2%BC%E3%82%8A%E4%BB%98%E3%81%91%E3%82%8B%E3%82%B3%E3%83%9E%E3%83%B3%E3%83%89%E3%82%92%E8%BF%BD%E5%8A%A0%E3%81%99%E3%82%8B/images/IntelliJ_logo.png" alt="Featured image of post Adicionar comando para inserir data no IntelliJ IDEA" />&lt;h1 id="introdução">Introdução
&lt;/h1>&lt;p>Ao escrever este blog, uso o IntelliJ IDEA. É conveniente porque tem boa compatibilidade com o Git e exibe uma pré-visualização de Markdown.
Toda vez que escrevo um blog, tenho que escrever &lt;code>date&lt;/code> no cabeçalho do arquivo md. Parece que não há atalho para inserir a data, então criei um comando para inserir a data referenciando o site abaixo. Espero que seja útil.&lt;/p>
&lt;p>&lt;a class="link" href="https://stackoverflow.com/questions/8714779/is-there-a-shortcut-for-inserting-date-time-in-intellij-idea" target="_blank" rel="noopener"
>Is there a shortcut for inserting date/time in IntelliJ IDEA?&lt;/a>&lt;/p>
&lt;h1 id="procedimento-de-configuração">Procedimento de configuração
&lt;/h1>&lt;ol>
&lt;li>Abra &amp;ldquo;File&amp;rdquo; &amp;gt; &amp;ldquo;Settings&amp;hellip;&amp;rdquo; no menu&lt;br>
&lt;img src="http://kenji.blog/images/settings.png"
loading="lazy"
alt="settings"
>&lt;/li>
&lt;li>Com &amp;ldquo;Editor&amp;rdquo; &amp;gt; &amp;ldquo;Live Template&amp;rdquo; &amp;gt; &amp;ldquo;HTML/XML&amp;rdquo; selecionado, clique em &amp;ldquo;+&amp;rdquo;&lt;/li>
&lt;li>Selecione Live Template&lt;/li>
&lt;li>Insira &amp;ldquo;date&amp;rdquo; em Abbreviation&lt;/li>
&lt;li>Insira &amp;ldquo;Inserir data e hora&amp;rdquo; em Description&lt;/li>
&lt;li>Insira &amp;ldquo;$date$&amp;rdquo; em Template Text&lt;/li>
&lt;li>Clique no botão Edit Variables&lt;br>
&lt;img src="http://kenji.blog/images/edit_template_variables.png"
loading="lazy"
alt="edit_template_variables"
>&lt;/li>
&lt;li>Insira &amp;ldquo;date&amp;rdquo; em Name&lt;/li>
&lt;li>Insira &lt;code>date(&amp;quot;yyyy-MM-dd'T'HH:mm:ss'+09:00'&amp;quot;)&lt;/code> em Expression&lt;/li>
&lt;li>Feche a caixa de diálogo com OK&lt;/li>
&lt;li>Pressione Define ou Change e marque &amp;ldquo;Everywhere&amp;rdquo;&lt;/li>
&lt;li>Feche a caixa de diálogo com OK&lt;/li>
&lt;li>Digite &amp;ldquo;date&amp;rdquo; no editor de código e pressione Enter. Quando a data &amp;ldquo;2022-09-04T05:59:04+09:00&amp;rdquo; for inserida, a configuração estará concluída!&lt;/li>
&lt;/ol>
&lt;p>Isso é tudo&lt;/p>
&lt;h1 id="conclusão">Conclusão
&lt;/h1>&lt;p>Se eu encontrar pequenos truques para o IntelliJ IDEA, gostaria de publicá-los novamente!&lt;/p></description></item><item><title>Comecei um blog</title><link>http://kenji.blog/pt/p/comecei-um-blog/</link><pubDate>Fri, 02 Sep 2022 07:23:00 +0900</pubDate><guid>http://kenji.blog/pt/p/comecei-um-blog/</guid><description>&lt;img src="http://kenji.blog/p/%E3%83%96%E3%83%AD%E3%82%B0%E3%81%AF%E3%81%98%E3%82%81%E3%81%A6%E3%81%BF%E3%81%BE%E3%81%97%E3%81%9F/images/komeda.jpeg" alt="Featured image of post Comecei um blog" />&lt;h2 id="comecei-um-blog">Comecei um blog
&lt;/h2>&lt;p>&lt;img src="https://user-images.githubusercontent.com/2605401/187252583-63ef83f4-99c1-4eaf-a5b8-3b5ac1439860.gif"
loading="lazy"
>
Algo como fogos de artifício, o código está &lt;a class="link" href="https://github.com/kenjinote/Fireworks" title="Ir para o código"
target="_blank" rel="noopener"
>aqui&lt;/a>&lt;/p>
&lt;p>Olá.
Por algum motivo, decidi começar um blog.&lt;/p>
&lt;p>Não há um propósito grandioso como &amp;ldquo;Quero publicar isso!&amp;rdquo;,
mas achei que seria bom ter um lugar para escrever coisas sobre tecnologia, sobre o dia a dia e o que me vier à cabeça.&lt;/p>
&lt;p>Pretendo fazer isso como um bloco de notas, sem me esforçar muito.&lt;/p>
&lt;hr>
&lt;h2 id="estou-fazendo-com-um-tal-de-hugo">Estou fazendo com um tal de Hugo
&lt;/h2>&lt;p>Estou fazendo este blog com um gerador de sites estáticos chamado &amp;ldquo;Hugo&amp;rdquo;.
Encontrei um tema legal, então decidi adotá-lo no impulso.
(É segredo que demorei cerca de 2 horas para escolher o tema)&lt;/p>
&lt;p>Pretendo fazer anotações de forma casual sobre código e ferramentas que me interessam.&lt;/p>
&lt;hr>
&lt;h2 id="a-história-da-manhã-no-komeda">A história da manhã no Komeda
&lt;/h2>&lt;p>A propósito, esta manhã acordei um pouco mais cedo e fui ao Komeda Coffee.
Saí às 8h30 e caminhei enquanto respirava o ar da manhã.&lt;/p>
&lt;p>Pedi o combo matinal A com um mini Shiro-Noir e café com leite.
Acho que custou cerca de 800 ienes? (não me lembro)&lt;/p>
&lt;p>Café da manhã é muito bom.
Sinto que o dia corre melhor quando tenho um tempinho para relaxar antes do trabalho.&lt;/p>
&lt;hr>
&lt;p>Bem, a partir de agora vou escrever de forma descontraída.
Pretendo misturar histórias de tecnologia e do dia a dia.&lt;/p>
&lt;p>Conto com vocês!&lt;/p></description></item><item><title>Extensões do Chrome recomendadas para Salesforce</title><link>http://kenji.blog/pt/p/salesforce%E3%81%8A%E3%81%99%E3%81%99%E3%82%81chrome%E6%8B%A1%E5%BC%B5/</link><pubDate>Mon, 02 May 2022 10:39:36 +0900</pubDate><guid>http://kenji.blog/pt/p/salesforce%E3%81%8A%E3%81%99%E3%81%99%E3%82%81chrome%E6%8B%A1%E5%BC%B5/</guid><description>&lt;img src="http://kenji.blog/p/salesforce%E3%81%8A%E3%81%99%E3%81%99%E3%82%81chrome%E6%8B%A1%E5%BC%B5/img.png" alt="Featured image of post Extensões do Chrome recomendadas para Salesforce" />&lt;h3 id="salesforce-devtools">Salesforce DevTools
&lt;/h3>&lt;p>&lt;img src="http://kenji.blog/p/salesforce%E3%81%8A%E3%81%99%E3%81%99%E3%82%81chrome%E6%8B%A1%E5%BC%B5/img_1.png"
width="454"
height="361"
srcset="http://kenji.blog/p/salesforce%E3%81%8A%E3%81%99%E3%81%99%E3%82%81chrome%E6%8B%A1%E5%BC%B5/img_1_huf57bbbba5c728384e7ba6fa16d7a54c4_18951_480x0_resize_box_3.png 480w, http://kenji.blog/p/salesforce%E3%81%8A%E3%81%99%E3%81%99%E3%82%81chrome%E6%8B%A1%E5%BC%B5/img_1_huf57bbbba5c728384e7ba6fa16d7a54c4_18951_1024x0_resize_box_3.png 1024w"
loading="lazy"
alt="img_1.png"
class="gallery-image"
data-flex-grow="125"
data-flex-basis="301px"
>&lt;/p>
&lt;p>&lt;img src="http://kenji.blog/p/salesforce%E3%81%8A%E3%81%99%E3%81%99%E3%82%81chrome%E6%8B%A1%E5%BC%B5/img_2.png"
width="448"
height="909"
srcset="http://kenji.blog/p/salesforce%E3%81%8A%E3%81%99%E3%81%99%E3%82%81chrome%E6%8B%A1%E5%BC%B5/img_2_huf368a70f31f9534fa7902adae2b30e6e_26924_480x0_resize_box_3.png 480w, http://kenji.blog/p/salesforce%E3%81%8A%E3%81%99%E3%81%99%E3%82%81chrome%E6%8B%A1%E5%BC%B5/img_2_huf368a70f31f9534fa7902adae2b30e6e_26924_1024x0_resize_box_3.png 1024w"
loading="lazy"
alt="img_2.png"
class="gallery-image"
data-flex-grow="49"
data-flex-basis="118px"
>&lt;/p>
&lt;p>Você pode pesquisar campos personalizados ou exportar campos de objetos personalizados em massa.&lt;/p>
&lt;p>Também é útil poder criar SOQL na hora.&lt;/p>
&lt;p>&lt;a class="link" href="https://chrome.google.com/webstore/detail/salesforce-devtools/ehgmhinnhggigkogkbhnbodhbfjgncjf" target="_blank" rel="noopener"
>Salesforce DevTools&lt;/a>&lt;/p>
&lt;h3 id="salesforce-advanced-code-searcher">Salesforce advanced Code searcher
&lt;/h3>&lt;p>&lt;img src="http://kenji.blog/p/salesforce%E3%81%8A%E3%81%99%E3%81%99%E3%82%81chrome%E6%8B%A1%E5%BC%B5/img.png"
width="257"
height="261"
srcset="http://kenji.blog/p/salesforce%E3%81%8A%E3%81%99%E3%81%99%E3%82%81chrome%E6%8B%A1%E5%BC%B5/img_huc75a5c8c4d45e738551ca5afb26f380b_13227_480x0_resize_box_3.png 480w, http://kenji.blog/p/salesforce%E3%81%8A%E3%81%99%E3%81%99%E3%82%81chrome%E6%8B%A1%E5%BC%B5/img_huc75a5c8c4d45e738551ca5afb26f380b_13227_1024x0_resize_box_3.png 1024w"
loading="lazy"
alt="img.png"
class="gallery-image"
data-flex-grow="98"
data-flex-basis="236px"
>&lt;/p>
&lt;p>Útil ao pesquisar código do Salesforce.&lt;/p>
&lt;p>&lt;a class="link" href="https://chrome.google.com/webstore/detail/salesforce-advanced-code/lnkgcmpjkkkeffambkllliefdpjdklmi" target="_blank" rel="noopener"
>Salesforce advanced Code searcher&lt;/a>&lt;/p></description></item><item><title>Arquivos</title><link>http://kenji.blog/pt/archives/</link><pubDate>Tue, 28 May 2019 00:00:00 +0000</pubDate><guid>http://kenji.blog/pt/archives/</guid><description/></item><item><title>【Compreensão Completa com Fórmulas】Por que o 'GNFS', o mais forte algoritmo clássico, é derrotado pelos algoritmos quânticos? A mudança de paradigma da fatoração</title><link>http://kenji.blog/pt/p/gnfs-to-shors-algorithm-math-deepdive/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>http://kenji.blog/pt/p/gnfs-to-shors-algorithm-math-deepdive/</guid><description>&lt;img src="http://kenji.blog/p/gnfs-to-shors-algorithm-math-deepdive/quantum_vs_gnfs_eyecatch_1788616101508.jpg" alt="Featured image of post 【Compreensão Completa com Fórmulas】Por que o 'GNFS', o mais forte algoritmo clássico, é derrotado pelos algoritmos quânticos? A mudança de paradigma da fatoração" />&lt;p>A segurança da informação na sociedade da internet moderna é protegida por sistemas de criptografia de chave pública, como a criptografia RSA. A base para a segurança da criptografia RSA depende do fato de que &lt;strong>&amp;ldquo;a fatoração de números compostos gigantescos é computacionalmente extremamente difícil&amp;rdquo;&lt;/strong> .&lt;/p>
&lt;p>Neste artigo, desvendaremos o mecanismo matemático do &lt;strong>&amp;ldquo;Crivo do Corpo de Números Generalizado&amp;rdquo;&lt;/strong> (General Number Field Sieve, GNFS), que é o algoritmo de fatoração mais poderoso em computadores clássicos, e aprofundaremos minuciosamente, usando fórmulas matemáticas e diagramas conceituais, a mudança de paradigma de por que ele é completamente superado pelo &lt;strong>&amp;ldquo;Algoritmo de Shor&amp;rdquo;&lt;/strong> , descoberto por Peter Shor.&lt;/p>
&lt;hr>
&lt;h2 id="1-a-abordagem-da-fatoração-na-computação-clássica-evolução-do-método-de-fatoração-de-fermat">1. A abordagem da fatoração na computação clássica: Evolução do método de fatoração de Fermat
&lt;/h2>&lt;p>O problema da fatoração de inteiros é o problema de encontrar os números primos $p, q$ tais que $N = p \times q$ , para um dado número composto $N$ .&lt;/p>
&lt;p>A ideia básica se resume a encontrar valores não triviais $x, y$ que satisfaçam a seguinte congruência.&lt;/p>
$$ x^2 \equiv y^2 \pmod N $$
&lt;p>Rearranjando isto, temos:&lt;/p>
$$ x^2 - y^2 \equiv 0 \pmod N $$
$$ (x - y)(x + y) \equiv 0 \pmod N $$
&lt;p>Aqui, se $x \not\equiv \pm y \pmod N$ , podemos calcular o $\gcd(x-y, N)$ ou $\gcd(x+y, N)$ para obter um fator não trivial de $N$ . Este fato forma a base dos algoritmos de fatoração modernos, como o GNFS.&lt;/p>
&lt;hr>
&lt;h2 id="2-o-algoritmo-clássico-mais-forte-o-abismo-do-crivo-do-corpo-de-números-generalizado-gnfs">2. O algoritmo clássico mais forte: O abismo do &amp;ldquo;Crivo do Corpo de Números Generalizado&amp;rdquo; (GNFS)
&lt;/h2>&lt;p>O &lt;strong>GNFS&lt;/strong> é o algoritmo de fatoração mais rápido conhecido hoje para computadores clássicos. Sua complexidade de tempo requer um tempo subexponencial (Sub-exponential).&lt;/p>
&lt;h3 id="complexidade-de-tempo-do-gnfs">Complexidade de tempo do GNFS
&lt;/h3>&lt;p>Quando o número de dígitos de $N$ é $b = \log_2 N$ , a complexidade de tempo do GNFS é expressa da seguinte forma:&lt;/p>
$$ O\left( \exp \left( \left(\frac{64}{9} b\right)^{1/3} (\log b)^{2/3} \right) \right) $$
&lt;p>Como pode ser visto nesta fórmula, a complexidade não é tempo polinomial, mas sim um &lt;strong>&amp;ldquo;tempo subexponencial&amp;rdquo;&lt;/strong> que é ligeiramente mais lento que uma função exponencial. Ainda assim, à medida que o número de dígitos aumenta, o tempo de computação cresce astronomicamente.&lt;/p>
&lt;h3 id="mecanismo-matemático-do-gnfs">Mecanismo matemático do GNFS
&lt;/h3>&lt;p>O GNFS consiste principalmente em 4 etapas.&lt;/p>
&lt;ol>
&lt;li>&lt;strong>Seleção de Polinômios (Polynomial Selection)&lt;/strong>&lt;/li>
&lt;li>&lt;strong>Crivagem (Sieving)&lt;/strong>&lt;/li>
&lt;li>&lt;strong>Redução de Matriz (Matrix Reduction)&lt;/strong>&lt;/li>
&lt;li>&lt;strong>Cálculo da Raiz Quadrada (Square Root)&lt;/strong>&lt;/li>
&lt;/ol>
&lt;h4 id="21-seleção-de-polinômios-e-corpo-algébrico">2.1. Seleção de Polinômios e Corpo Algébrico
&lt;/h4>&lt;p>Primeiro, escolhemos polinômios irredutíveis $f(x)$ e $g(x)$ com coeficientes inteiros. Eles são configurados para ter uma raiz comum $m$ módulo $N$ . Ou seja,&lt;/p>
$$ f(m) \equiv 0 \pmod N $$
$$ g(m) \equiv 0 \pmod N $$
&lt;p>Geralmente, $g(x)$ é escolhido como um polinômio de primeiro grau $g(x) = x - m$ . Se a raiz de $f(x)$ for $\alpha$ , construímos um &lt;strong>&amp;ldquo;corpo de números&amp;rdquo;&lt;/strong> (Number Field) chamado $\mathbb{Q}(\alpha)$ . As operações no anel de $\mathbb{Q}(\alpha)$ e as operações no anel comum de inteiros $\mathbb{Z}$ são comparadas através do homomorfismo $\phi: \alpha \mapsto m$ .&lt;/p>
&lt;h4 id="22-crivagem-sieving">2.2. Crivagem (Sieving)
&lt;/h4>&lt;p>Em seguida, procuramos por uma grande quantidade de pares de inteiros coprimos $(a, b)$ . O objetivo é encontrar pares em que os dois valores a seguir sejam &lt;strong>&amp;ldquo;B-smooth&amp;rdquo;&lt;/strong> (compostos apenas por fatores primos relativamente pequenos).&lt;/p>
&lt;ol>
&lt;li>$a - bm$ (valor sobre o anel de inteiros)&lt;/li>
&lt;li>$b^d f(a/b)$ (correspondente à norma $N(a - b\alpha)$ sobre o corpo algébrico)&lt;/li>
&lt;/ol>
&lt;p>Aqui é usado um método de busca rápido chamado &lt;strong>&amp;ldquo;crivo&amp;rdquo;&lt;/strong> (Sieve). Isso extrai eficientemente pares $(a, b)$ que satisfazem as condições de um enorme número de candidatos.&lt;/p>
&lt;h4 id="23-redução-de-matriz-linear-algebra-over-gf2">2.3. Redução de Matriz (Linear Algebra over GF(2))
&lt;/h4>&lt;p>A partir dos pares coletados $(a, b)$ , construímos vetores de expoentes e encontramos o espaço nulo à esquerda de uma enorme matriz esparsa sobre $\mathbb{F}_2$ (um corpo cujos elementos são apenas 0 e 1).&lt;/p>
&lt;p>Encontramos o vetor $v$ como uma solução tal que as relações $ \prod (a_i - b_i m) $ e $ \prod (a_i - b_i \alpha) $ se tornem quadrados perfeitos. Isto não é nada mais do que resolver o seguinte sistema de equações lineares:&lt;/p>
$$ M \mathbf{x} \equiv \mathbf{0} \pmod 2 $$
&lt;p>Aqui, algoritmos avançados de cálculo numérico, como o Algoritmo de Block Lanczos ou o Algoritmo de Block Wiedemann, são utilizados.&lt;/p>
&lt;h4 id="24-cálculo-da-raiz-quadrada">2.4. Cálculo da Raiz Quadrada
&lt;/h4>&lt;p>Por fim, extraímos a raiz quadrada tanto no corpo algébrico quanto no anel de inteiros para derivar a relação $x^2 \equiv y^2 \pmod N$ . Em seguida, calculamos $\gcd(x-y, N)$ para obter os fatores.&lt;/p>
&lt;hr>
&lt;h2 id="3-um-avanço-revolucionário-pela-computação-quântica-algoritmo-de-shor">3. Um avanço revolucionário pela computação quântica: &amp;ldquo;Algoritmo de Shor&amp;rdquo;
&lt;/h2>&lt;p>Enquanto o GNFS requer tempo subexponencial, o &lt;strong>&amp;ldquo;Algoritmo de Shor&amp;rdquo;&lt;/strong> , publicado por Peter Shor em 1994, pode resolver esse problema em &lt;strong>&amp;ldquo;tempo polinomial&amp;rdquo;&lt;/strong> usando um computador quântico.&lt;/p>
&lt;h3 id="complexidade-do-algoritmo-de-shor">Complexidade do Algoritmo de Shor
&lt;/h3>&lt;p>Assumindo que o número de qubits seja $O(\log N)$ , a complexidade de tempo é a seguinte:&lt;/p>
$$ O((\log N)^3) $$
&lt;p>Isso significa que não há explosão exponencial em relação ao número de bits. É um resultado surpreendente: mesmo para números compostos gigantescos onde o tempo para a &lt;strong>&amp;ldquo;computação clássica&amp;rdquo;&lt;/strong> excederia a idade do universo, a &lt;strong>&amp;ldquo;computação quântica&amp;rdquo;&lt;/strong> pode descriptografá-los em questão de horas ou dias.&lt;/p>
&lt;h3 id="visão-geral-do-algoritmo-de-shor-redução-ao-problema-da-descoberta-de-período">Visão geral do Algoritmo de Shor: Redução ao problema da descoberta de período
&lt;/h3>&lt;p>O Algoritmo de Shor reduz inteligentemente o problema de fatoração em primos a um &lt;strong>&amp;ldquo;problema de descoberta de período&amp;rdquo;&lt;/strong> .&lt;/p>
&lt;ol>
&lt;li>Escolha um inteiro aleatório $a$ que seja coprimo com $N$ ( $1 &lt; a &lt; N$ ).&lt;/li>
&lt;li>Defina a função $f(x) = a^x \bmod N$ .&lt;/li>
&lt;li>Encontre o período $r$ de $f(x)$ , ou seja, o menor inteiro positivo $r$ tal que $a^r \equiv 1 \pmod N$ .&lt;/li>
&lt;li>Se $r$ for par, verifique se $a^{r/2} \not\equiv -1 \pmod N$ , calcule $\gcd(a^{r/2} \pm 1, N)$ e obtenha o fator primo.&lt;/li>
&lt;/ol>
&lt;p>Esta &lt;strong>&amp;ldquo;descoberta do período $r$ &amp;ldquo;&lt;/strong> na etapa 3 é o gargalo que leva tempo exponencial em computadores clássicos, mas os computadores quânticos resolvem isso instantaneamente usando a &lt;strong>&amp;ldquo;sobreposição quântica&amp;rdquo;&lt;/strong> e a &lt;strong>&amp;ldquo;Transformada de Fourier Quântica&amp;rdquo;&lt;/strong> (QFT).&lt;/p>
&lt;hr>
&lt;h2 id="4-transformada-de-fourier-quântica-qft-e-extração-de-período">4. Transformada de Fourier Quântica (QFT) e Extração de Período
&lt;/h2>&lt;p>Vejamos mais de perto as fórmulas matemáticas sobre a manipulação de estados quânticos, que é o núcleo do Algoritmo de Shor.&lt;/p>
&lt;h3 id="41-geração-de-sobreposição-quântica">4.1. Geração de Sobreposição Quântica
&lt;/h3>&lt;p>Primeiro, preparamos dois registradores quânticos. O Registrador 1 mantém o estado de sobreposição das entradas $x$ , e o Registrador 2 mantém os resultados calculados da função $f(x)$ . Aplicamos a Transformada de Hadamard (Hadamard Transform) ao estado inicial $|0\rangle |0\rangle$ para criar uma sobreposição de todos os possíveis $x$ .&lt;/p>
$$ |\psi_1\rangle = \frac{1}{\sqrt{Q}} \sum_{x=0}^{Q-1} |x\rangle |0\rangle $$
&lt;p>
(onde $Q$ é uma potência de 2 satisfazendo $N^2 \le Q &lt; 2N^2$ )&lt;/p>
&lt;p>Em seguida, usamos o oráculo quântico $U_f$ para calcular $f(x) = a^x \bmod N$ e armazená-lo no Registrador 2.&lt;/p>
$$ |\psi_2\rangle = U_f |\psi_1\rangle = \frac{1}{\sqrt{Q}} \sum_{x=0}^{Q-1} |x\rangle |a^x \bmod N\rangle $$
&lt;p>Suponhamos agora que medimos o Registrador 2 (embora na realidade a estrutura matemática seja a mesma mesmo sem medição). Se observarmos um determinado valor $y = a^{x_0} \bmod N$ , o estado do Registrador 1 colapsa para uma sobreposição de todos os $x$ onde $f(x) = y$ . Se o período for $r$ , esses $x$ serão $x_0, x_0 + r, x_0 + 2r, \dots$&lt;/p>
$$ |\psi_3\rangle = \frac{1}{\sqrt{M}} \sum_{k=0}^{M-1} |x_0 + kr\rangle $$
&lt;p>
(onde $M \approx Q/r$ é o número de termos)&lt;/p>
&lt;p>Este estado contém inerentemente a informação sobre o período $r$ , mas medir isso diretamente apenas nos dá um $x_0 + kr$ aleatório, não revelando $r$ . É aqui que entra a QFT.&lt;/p>
&lt;h3 id="42-aplicação-da-transformada-de-fourier-quântica-quantum-fourier-transform">4.2. Aplicação da Transformada de Fourier Quântica (Quantum Fourier Transform)
&lt;/h3>&lt;p>A QFT é uma operação que aplica uma transformada discreta de Fourier às amplitudes do estado quântico. A ação da QFT no estado $|x\rangle$ é definida como segue:&lt;/p>
$$ \text{QFT} |x\rangle = \frac{1}{\sqrt{Q}} \sum_{y=0}^{Q-1} e^{2\pi i \frac{xy}{Q}} |y\rangle $$
&lt;p>A aplicação disto a $|\psi_3\rangle$ induz interferência de fase (interferência quântica).&lt;/p>
$$ |\psi_4\rangle = \text{QFT} |\psi_3\rangle = \frac{1}{\sqrt{MQ}} \sum_{y=0}^{Q-1} \sum_{k=0}^{M-1} e^{2\pi i \frac{(x_0 + kr)y}{Q}} |y\rangle $$
&lt;p>Ao expandir o somatório desta equação, surge a parte:&lt;/p>
$$ \sum_{k=0}^{M-1} e^{2\pi i \frac{kry}{Q}} $$
&lt;p>Esta soma da série geométrica reforça-se mutuamente (Interferência Construtiva) apenas quando $ry/Q$ é próximo a um número inteiro e se cancela em outros momentos (Interferência Destrutiva).&lt;/p>
&lt;p>Portanto, o estado $|y\rangle$ medido com alta probabilidade será um número inteiro $y$ que satisfaz a condição:&lt;/p>
$$ \frac{y}{Q} \approx \frac{c}{r} $$
&lt;p>
(onde $c$ é algum inteiro).&lt;/p>
&lt;h3 id="43-identificação-do-período-por-expansão-em-frações-contínuas">4.3. Identificação do Período por Expansão em Frações Contínuas
&lt;/h3>&lt;p>Após obter $y$ pela medição, utilizamos um computador clássico para realizar a &lt;strong>&amp;ldquo;expansão em frações contínuas&amp;rdquo;&lt;/strong> (Continued Fraction Expansion) de $y/Q$ . Isso nos permite calcular a fração aproximada $c/r$ de $y/Q$ e extrair de forma altamente eficiente os candidatos ao período $r$ a partir do denominador.&lt;/p>
&lt;hr>
&lt;h2 id="5-comparação-de-modelos-conceituais-e-mudança-de-paradigma">5. Comparação de Modelos Conceituais e Mudança de Paradigma
&lt;/h2>&lt;p>Para entender intuitivamente a diferença entre o GNFS e o Algoritmo de Shor, mostramos um diagrama conceitual usando a notação Mermaid.&lt;/p>
&lt;h3 id="diagrama-conceitual-do-algoritmo-de-shor-via-circuito-quântico">Diagrama conceitual do Algoritmo de Shor via circuito quântico
&lt;/h3>&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt"> 1
&lt;/span>&lt;span class="lnt"> 2
&lt;/span>&lt;span class="lnt"> 3
&lt;/span>&lt;span class="lnt"> 4
&lt;/span>&lt;span class="lnt"> 5
&lt;/span>&lt;span class="lnt"> 6
&lt;/span>&lt;span class="lnt"> 7
&lt;/span>&lt;span class="lnt"> 8
&lt;/span>&lt;span class="lnt"> 9
&lt;/span>&lt;span class="lnt">10
&lt;/span>&lt;span class="lnt">11
&lt;/span>&lt;span class="lnt">12
&lt;/span>&lt;span class="lnt">13
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">graph TD
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> A[Estado inicial: 0...0] --&amp;gt; B[Sobreposição de todos os estados por Transformada de Hadamard]
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> B --&amp;gt; C[Exponenciação modular a^x mod N]
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> C --&amp;gt;|Emaranhamento quântico| D[Colapso para um estado com periodicidade]
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> D --&amp;gt; E[Transformada de Fourier Quântica QFT]
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> E --&amp;gt;|Amplificação de probabilidade por interferência| F[Medição: obter y]
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> F --&amp;gt; G[Processamento clássico: expansão em frações contínuas]
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> G --&amp;gt; H[Descoberta do período r]
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> H --&amp;gt; I[Cálculo dos fatores primos de N]
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> style A fill:#f9f,stroke:#333,stroke-width:2px
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> style E fill:#bbf,stroke:#333,stroke-width:2px
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> style I fill:#bfb,stroke:#333,stroke-width:2px
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h3 id="a-essência-da-mudança-de-paradigma">A essência da mudança de paradigma
&lt;/h3>&lt;p>O GNFS adota uma abordagem que consiste em &lt;strong>&amp;ldquo;buscar relações dentro de um espaço matemático (corpo algébrico)&amp;rdquo;&lt;/strong> . No entanto, como o espaço de busca se expande exponencialmente em relação ao número de dígitos, com as capacidades computacionais clássicas (incluindo paralelização), a decodificação se torna quase impossível quando o tamanho da chave excede os 2048 bits.&lt;/p>
&lt;p>Por outro lado, o Algoritmo de Shor utiliza a &lt;strong>&amp;ldquo;natureza de onda devido à interferência quântica&amp;rdquo;&lt;/strong> . Ele avalia simultaneamente todos os caminhos computacionais na sobreposição de estados e usa a QFT para cancelar respostas desnecessárias (interferência destrutiva) enquanto amplifica apenas a amplitude de probabilidade do período correto (interferência construtiva). Com isso, ao invés de buscar no espaço, atinge uma abordagem de dimensão completamente diferente onde &lt;strong>&amp;ldquo;surge a própria resposta correta&amp;rdquo;&lt;/strong> .&lt;/p>
&lt;h2 id="6-conclusão">6. Conclusão
&lt;/h2>&lt;p>Neste artigo, aprofundamo-nos nos contextos matemáticos e nas estruturas de algoritmos, comparando o &lt;strong>&amp;ldquo;GNFS&amp;rdquo;&lt;/strong> , o pico absoluto do limite clássico, com o &lt;strong>&amp;ldquo;Algoritmo de Shor&amp;rdquo;&lt;/strong> , que demonstra o poder da computação quântica.&lt;/p>
&lt;p>Enquanto o GNFS usa técnicas matemáticas sofisticadas, como a escolha de polinômios e cálculos matemáticos com grandes matrizes, para reduzir o tempo computacional a um tempo subexponencial, o Algoritmo de Shor combina os princípios fundamentais da mecânica quântica, sobreposição e interferência, com ferramentas matemáticas (QFT) para produzir um avanço instantâneo ao tempo polinomial.&lt;/p>
&lt;p>No momento, não existe nenhum computador quântico tolerante a falhas (FTQC) capaz de executar o Algoritmo de Shor em escala prática (milhares de qubits). No entanto, a própria existência dessa mudança de paradigma matemático e teórico é a principal razão pela qual há atualmente uma rápida e urgente transição para a Criptografia Pós-Quântica (PQC: Post-Quantum Cryptography) no mundo todo.&lt;/p></description></item><item><title>Links</title><link>http://kenji.blog/pt/links/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>http://kenji.blog/pt/links/</guid><description/></item><item><title>Pesquisar</title><link>http://kenji.blog/pt/search/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>http://kenji.blog/pt/search/</guid><description/></item></channel></rss>