<?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/es/</link><description>Recent content on kenji.blog</description><generator>Hugo -- gohugo.io</generator><language>es</language><copyright>kenjinote</copyright><lastBuildDate>Sat, 05 Sep 2026 22:10:00 +0900</lastBuildDate><atom:link href="http://kenji.blog/es/index.xml" rel="self" type="application/rss+xml"/><item><title>【Análisis Completo】¿Qué es una computadora cuántica? 〜El principio de cálculo definitivo desde cero〜</title><link>http://kenji.blog/es/p/quantum-computer-basics/</link><pubDate>Sat, 05 Sep 2026 22:10:00 +0900</pubDate><guid>http://kenji.blog/es/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álisis Completo】¿Qué es una computadora cuántica? 〜El principio de cálculo definitivo desde cero〜" />&lt;h2 id="introducción-el-cambio-de-paradigma-computacional-que-traen-las-computadoras-cuánticas">Introducción: El &amp;ldquo;cambio de paradigma computacional&amp;rdquo; que traen las computadoras cuánticas
&lt;/h2>&lt;p>En los últimos años, no hay un solo día en que no veamos el término &amp;ldquo;computadora cuántica&amp;rdquo; en las noticias o artículos técnicos. Historias que parecen sacadas de películas de ciencia ficción, como &amp;ldquo;cálculos que tomarían miles de años en las supercomputadoras actuales se terminarán en minutos&amp;rdquo; o &amp;ldquo;todas las tecnologías de cifrado actuales podrían ser descifradas&amp;rdquo;, se cuentan de forma muy persuasiva. Desde gigantes corporativos de TI como Google, IBM y Microsoft, hasta universidades y startups de todo el mundo, compiten ferozmente por llevar a la práctica esta tecnología de ensueño.&lt;/p>
&lt;p>Sin embargo, cuando se nos pregunta, &amp;ldquo;¿qué es exactamente una computadora cuántica al final del día?&amp;rdquo;, pocos pueden responder con precisión. Muchas personas tienen una imagen vaga de una &amp;ldquo;caja mágica que puede calcular todas las combinaciones simultáneamente&amp;rdquo;, pero, estrictamente hablando, eso no es correcto.&lt;/p>
&lt;p>En este artículo, explicaremos a fondo desde los conceptos básicos y de forma comprensible, a pesar de ser técnica, en qué se diferencian fundamentalmente las computadoras cuánticas de las computadoras clásicas (las PC y los teléfonos inteligentes que usamos habitualmente), y cómo fenómenos extraños de la mecánica cuántica como la &amp;ldquo;Superposición&amp;rdquo;, el &amp;ldquo;Entrelazamiento cuántico (Entanglement)&amp;rdquo; y las &amp;ldquo;Puertas cuánticas (Quantum gates)&amp;rdquo; se utilizan para el cálculo. Para cuando termines de leer este artículo, deberías comprender claramente la verdadera grandeza y los desafíos actuales de las computadoras cuánticas.&lt;/p>
&lt;hr>
&lt;h2 id="capítulo-1-la-diferencia-crucial-entre-las-computadoras-clásicas-y-las-computadoras-cuánticas">Capítulo 1: La diferencia crucial entre las computadoras clásicas y las computadoras cuánticas
&lt;/h2>&lt;p>Para entender cómo funciona una computadora cuántica, primero debemos repasar cómo funcionan las &amp;ldquo;computadoras clásicas&amp;rdquo; que usamos actualmente.&lt;/p>
&lt;h3 id="tabla-comparativa-computadoras-clásicas-vs-computadoras-cuánticas">Tabla comparativa: Computadoras Clásicas vs Computadoras Cuánticas
&lt;/h3>&lt;table>
&lt;thead>
&lt;tr>
&lt;th>Característica&lt;/th>
&lt;th>Computadora Clásica&lt;/th>
&lt;th>Computadora Cuántica&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>&lt;strong>Unidad básica&lt;/strong>&lt;/td>
&lt;td>Bit (0 o 1)&lt;/td>
&lt;td>Qubit (superposición de 0 y 1)&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;strong>Representación del estado&lt;/strong>&lt;/td>
&lt;td>Determinista&lt;/td>
&lt;td>Probabilística (no se determina hasta que se observa)&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;strong>Método de cálculo&lt;/strong>&lt;/td>
&lt;td>Procesamiento secuencial (requiere núcleos físicos para paralelizar)&lt;/td>
&lt;td>Paralelismo cuántico (manipulación simultánea de un número exponencial de estados)&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;strong>Cálculos en los que destaca&lt;/strong>&lt;/td>
&lt;td>Operaciones aritméticas básicas, procesamiento de datos diarios&lt;/td>
&lt;td>Factorización de números primos, química cuántica&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;strong>Tolerancia a errores&lt;/strong>&lt;/td>
&lt;td>Muy fuerte&lt;/td>
&lt;td>Muy débil (requiere entornos criogénicos o corrección de errores)&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;h3 id="el-mundo-de-las-computadoras-clásicas-bits-de-0-o-1">El mundo de las computadoras clásicas: &amp;ldquo;Bits&amp;rdquo; de 0 o 1
&lt;/h3>&lt;p>Las computadoras clásicas representan toda la información en un estado de &amp;ldquo;0&amp;rdquo; o &amp;ldquo;1&amp;rdquo;. A esto se le llama &lt;strong>Bit&lt;/strong>. Físicamente, esto se representa mediante la tensión de un transistor en un chip semiconductor: alta (1) o baja (0).
Las fotos de alta calidad en tu teléfono inteligente, el texto que estás leyendo ahora y tus videos favoritos de YouTube se reducen en última instancia a una enorme cantidad de &amp;ldquo;secuencias de 0 y 1&amp;rdquo;. La computación es simplemente el proceso de aplicar operaciones a estas secuencias combinando circuitos lógicos fundamentales como AND (conjunción lógica), OR (disyunción lógica) y NOT (negación lógica).
Este es un mundo muy seguro y determinista. Si las entradas son las mismas, siempre se obtiene el mismo resultado.&lt;/p>
&lt;h3 id="el-mundo-de-las-computadoras-cuánticas-qubits-que-son-0-y-1-al-mismo-tiempo">El mundo de las computadoras cuánticas: &amp;ldquo;Qubits&amp;rdquo; que son 0 y 1 al mismo tiempo
&lt;/h3>&lt;p>Por otro lado, la unidad mínima de información de una computadora cuántica se llama &lt;strong>Qubit (bit cuántico)&lt;/strong>.
La mayor característica de un qubit es que no se encuentra solo en un estado de &amp;ldquo;0&amp;rdquo; o &amp;ldquo;1&amp;rdquo; como los bits clásicos, sino que puede tomar un estado en el que &amp;ldquo;0 y 1 se mezclan con cierta probabilidad&amp;rdquo;. A esto se le llama &lt;strong>&amp;ldquo;Superposición&amp;rdquo; (Superposition)&lt;/strong>.&lt;/p>
&lt;p>Por ejemplo, si un bit clásico es una moneda sobre una mesa que muestra &amp;ldquo;cara&amp;rdquo; o &amp;ldquo;cruz&amp;rdquo;, a menudo se compara al qubit con &amp;ldquo;una moneda girando en el aire&amp;rdquo;. Una moneda girando no es ni cara ni cruz, sino una superposición de ambos estados. Y en el momento en que la moneda cae al suelo y se detiene (lo que en mecánica cuántica se llama &amp;ldquo;observación&amp;rdquo; o &amp;ldquo;medición&amp;rdquo;), solo entonces se determina si es &amp;ldquo;cara&amp;rdquo; o &amp;ldquo;cruz&amp;rdquo;.&lt;/p>
&lt;p>Una computadora cuántica incorpora directamente en su proceso de procesamiento de información esta propiedad única del mundo microscópico (mecánica cuántica) de que &amp;ldquo;el estado no se determina hasta que es observado&amp;rdquo;.&lt;/p>
&lt;hr>
&lt;h2 id="capítulo-2-las-3-propiedades-de-la-mecánica-cuántica-que-revolucionarán-el-cálculo">Capítulo 2: Las 3 propiedades de la mecánica cuántica que revolucionarán el cálculo
&lt;/h2>&lt;p>La fuente del asombroso poder computacional de una computadora cuántica no se debe a que la velocidad del reloj sea alta o a que los componentes sean pequeños. Radica en el uso de las propias leyes de la física como recursos computacionales. Los siguientes tres fenómenos de la mecánica cuántica son la clave.&lt;/p>
&lt;h3 id="1-superposición-superposition-y-la-cantidad-de-información-exponencial">1. Superposición (Superposition) y la cantidad de información exponencial
&lt;/h3>&lt;p>Como se mencionó anteriormente, los qubits pueden mantener ambos estados de 0 y 1 simultáneamente. Un qubit es una &amp;ldquo;superposición de 0 y 1&amp;rdquo;, pero ¿qué sucede cuando se aumenta la cantidad de qubits?&lt;/p>
&lt;ul>
&lt;li>1 qubit: superposición de 2 estados (0, 1)&lt;/li>
&lt;li>2 qubits: superposición de 4 estados (00, 01, 10, 11)&lt;/li>
&lt;li>3 qubits: superposición de 8 estados&lt;/li>
&lt;li>&lt;strong>N qubits: superposición de $2^N$ patrones&lt;/strong>&lt;/li>
&lt;/ul>
&lt;p>Con tan solo 50 qubits, se pueden mantener simultáneamente $2^{50}$ (aproximadamente 1.100 billones) estados. ¡Y con tan solo 300 qubits, puedes mantener a la vez $2^{300}$ patrones (¡más que el número de todos los átomos que existen en el universo!). Esta capacidad de retención de información exponencial es la base del potencial de la computadora cuántica. Físicamente es imposible que las computadoras clásicas almacenen un número de estados mayor al número de átomos en el universo en la memoria.&lt;/p>
&lt;h3 id="2-entrelazamiento-cuántico-entanglement-la-escalofriante-acción-a-distancia">2. Entrelazamiento cuántico (Entanglement): la escalofriante acción a distancia
&lt;/h3>&lt;p>El entrelazamiento cuántico es un fenómeno tan contraintuitivo que Einstein lo llamó &amp;ldquo;espeluznante acción a distancia&amp;rdquo; y se negó a aceptarlo por el resto de su vida.&lt;/p>
&lt;p>Cuando múltiples qubits se encuentran en un estado de &amp;ldquo;entrelazamiento cuántico&amp;rdquo;, se conectan fuertemente entre sí. Tienen una relación como si compartieran el mismo destino, en la que &lt;strong>&amp;ldquo;cuando el estado de uno de ellos se determina, sin importar cuán lejos estén, el estado del otro se determina instantáneamente&amp;rdquo;&lt;/strong>.&lt;/p>
&lt;p>Por ejemplo, supongamos que hay dos qubits A y B en estado de entrelazamiento (cada uno en un estado de superposición de 0 y 1). Si se observa A y resulta ser &amp;ldquo;0&amp;rdquo;, superando la velocidad de la luz que es el límite de la transmisión de información, el estado de B también se determina instantáneamente (por ejemplo, siempre será &amp;ldquo;1&amp;rdquo;).
En las computadoras cuánticas, usar este entrelazamiento cuántico permite expresar correlaciones complejas entre múltiples qubits y llevar a cabo un procesamiento de información superparalelo. Sin el entrelazamiento, la potencia computacional de una computadora cuántica no sería muy diferente a la de una computadora clásica.&lt;/p>
&lt;h3 id="3-interferencia-cuántica-quantum-interference-la-magia-para-revelar-la-respuesta-correcta">3. Interferencia Cuántica (Quantum Interference): La magia para revelar la respuesta correcta
&lt;/h3>&lt;p>Es posible que pienses: &amp;ldquo;Si puede contener todos los patrones al mismo tiempo, ¿no se pueden calcular en paralelo de una vez y obtener la respuesta en un instante?&amp;rdquo;. Este es el malentendido más común sobre las computadoras cuánticas.
Incluso si haces los cálculos en un estado de superposición, finalmente debes &amp;ldquo;observar&amp;rdquo; para conocer la respuesta. Pero en el instante en que observas, el estado colapsa aleatoriamente en uno de los $2^N$ patrones. Así que solo obtendrías una respuesta completamente aleatoria.&lt;/p>
&lt;p>Aquí es donde entra la &lt;strong>&amp;ldquo;Interferencia cuántica&amp;rdquo; (Interference)&lt;/strong>. Al igual que cuando chocan dos ondas, utilizamos el fenómeno de que cuando las fases coinciden se amplifican y cuando están desalineadas se cancelan mutuamente (esencialmente el mismo principio que los auriculares con cancelación de ruido).&lt;/p>
&lt;p>Un excelente &amp;ldquo;algoritmo cuántico&amp;rdquo;, durante el proceso de cálculo, manipula hábilmente los estados cuánticos para que &lt;strong>&amp;ldquo;las amplitudes de probabilidad de los estados (ondas) que conducen a la respuesta correcta se refuercen entre sí (amplificación)&amp;rdquo; y &amp;ldquo;las amplitudes de probabilidad de los estados que conducen a la respuesta incorrecta se cancelen (interferencia destructiva)&amp;rdquo;&lt;/strong>. Finalmente, cuando se observa, asegura que la &amp;ldquo;respuesta correcta&amp;rdquo; aparezca con una probabilidad cercana al 100%. El verdadero arte de la programación cuántica consiste en diseñar bien este proceso de interferencia.&lt;/p>
&lt;hr>
&lt;h2 id="capítulo-3-cómo-calculan-puertas-cuánticas-y-circuitos-cuánticos">Capítulo 3: ¿Cómo calculan? &amp;ldquo;Puertas cuánticas&amp;rdquo; y &amp;ldquo;Circuitos cuánticos&amp;rdquo;
&lt;/h2>&lt;p>De manera similar a cómo las computadoras clásicas realizan operaciones usando puertas lógicas (AND, OR, NOT, etc.), las computadoras cuánticas realizan operaciones aplicando &lt;strong>&amp;ldquo;Puertas cuánticas&amp;rdquo; (Quantum Gates)&lt;/strong> a los qubits. Una combinación de múltiples puertas cuánticas se llama &lt;strong>&amp;ldquo;Circuito cuántico&amp;rdquo; (Quantum Circuit)&lt;/strong>.&lt;/p>
&lt;p>El estado de un qubit se expresa matemáticamente como un punto en la superficie de una esfera tridimensional llamada &amp;ldquo;esfera de Bloch&amp;rdquo; (Bloch sphere). El polo norte es &amp;ldquo;0&amp;rdquo;, el polo sur es &amp;ldquo;1&amp;rdquo;, y el ecuador es &amp;ldquo;el estado de superposición donde 0 y 1 están mezclados por igual&amp;rdquo;. Las puertas cuánticas no son más que operaciones que giran el estado (vector) a lo largo de la superficie de esta esfera.&lt;/p>
&lt;p>Permítanme presentarles algunas puertas cuánticas típicas.&lt;/p>
&lt;h3 id="1-puerta-hadamard-puerta-h">1. Puerta Hadamard (Puerta H)
&lt;/h3>&lt;p>Esta es la puerta más fundamental exclusiva de las computadoras cuánticas y que no existe en las computadoras clásicas. Pasar un qubit en un estado perfecto de &amp;ldquo;0&amp;rdquo; a través de una puerta H crea un &amp;ldquo;estado de superposición perfecto&amp;rdquo; (un punto en el ecuador de la esfera de Bloch) en el que &amp;ldquo;0&amp;rdquo; y &amp;ldquo;1&amp;rdquo; se observan con una probabilidad exacta de la mitad cada uno. Como paso de inicialización en los cálculos cuánticos, muchos algoritmos comienzan aplicando la puerta H a todos los qubits.&lt;/p>
&lt;h3 id="2-puertas-de-pauli-puertas-x-y-z">2. Puertas de Pauli (Puertas X, Y, Z)
&lt;/h3>&lt;p>Estas puertas incluyen operaciones equivalentes a la puerta NOT (invierte el 0 en 1 y el 1 en 0) en las computadoras clásicas. Equivalen a girar 180 grados alrededor de los ejes X, Y y Z en la esfera de Bloch. Específicamente, la puerta X invierte el polo norte (0) al polo sur (1), por lo que funciona exactamente de la misma forma que una puerta NOT clásica. La puerta Z tiene el papel de invertir la &amp;ldquo;fase (como el ritmo de una ola)&amp;rdquo; de la superposición, lo que es extremadamente importante para causar interferencia cuántica.&lt;/p>
&lt;h3 id="3-puerta-cnot-puerta-not-controlada">3. Puerta CNOT (Puerta NOT controlada)
&lt;/h3>&lt;p>Es una puerta sumamente importante para crear entrelazamiento cuántico. Usa dos qubits (un bit de control y un bit objetivo).
&amp;ldquo;Si el bit de control es 1, invierte el estado del bit objetivo (puerta X). Si el bit de control es 0, no hace nada&amp;rdquo;. Parece una simple bifurcación de condición IF, pero ¿qué pasa si el bit de control está en un &amp;ldquo;estado de superposición de 0 y 1&amp;rdquo;? El bit objetivo queda en un &amp;ldquo;estado de superposición de uno invertido y uno no invertido&amp;rdquo;, y el destino de ambos bits se vincula por completo. Con brillantez, los dos qubits se &amp;ldquo;entrelazan&amp;rdquo;.&lt;/p>
&lt;p>Colocando y aplicando estas puertas en orden de izquierda a derecha como si se tratara de la partitura de una música, se ejecutan algoritmos complejos.&lt;/p>
&lt;hr>
&lt;h2 id="capítulo-4-en-qué-son-buenas-las-computadoras-cuánticas-y-en-qué-son-malas">Capítulo 4: ¿En qué son buenas las computadoras cuánticas y en qué son malas?
&lt;/h2>&lt;p>Debo decirte un hecho importante: las computadoras cuánticas no son dioses omnipotentes.
Para tareas cotidianas como navegar por la web, renderizar videos, procesar macros de Excel o el funcionamiento general de las aplicaciones de los teléfonos inteligentes, es probable que las computadoras cuánticas nunca superen a las clásicas. Estos procesos secuenciales ya están altamente optimizados y las computadoras clásicas, debido a su velocidad abrumadora y su bajo costo, son más adecuadas.&lt;/p>
&lt;p>El verdadero valor de las computadoras cuánticas se desata únicamente en &lt;strong>&amp;ldquo;problemas específicos donde las combinaciones computacionales estallan exponencialmente en computadoras clásicas, llevando un tiempo del tamaño de la vida del universo&amp;rdquo;&lt;/strong>. A esto se lo llama &amp;ldquo;Supremacía Cuántica&amp;rdquo; (Quantum Supremacy) o &amp;ldquo;Ventaja Cuántica&amp;rdquo; (Quantum Advantage).&lt;/p>
&lt;h3 id="en-lo-que-destacan-las-computadoras-cuánticas-aplicaciones-asesinas">En lo que destacan las computadoras cuánticas (Aplicaciones asesinas)
&lt;/h3>&lt;h4 id="1-factorización-y-descifrado-de-códigos-algoritmo-de-shor">1. Factorización y descifrado de códigos (Algoritmo de Shor)
&lt;/h4>&lt;p>Actualmente, el &amp;ldquo;cifrado RSA&amp;rdquo;, que protege las comunicaciones seguras en Internet (pagos con tarjeta de crédito, transmisión de información personal, etc.), se basa en la premisa de que &amp;ldquo;la factorización de números gigantes es prácticamente imposible (toma una cantidad asombrosa de tiempo) para las computadoras clásicas&amp;rdquo;.
Sin embargo, al utilizar el &amp;ldquo;algoritmo de Shor&amp;rdquo; descubierto por el matemático Peter Shor en 1994, las computadoras cuánticas pueden resolver esto a una velocidad dramática (tiempo polinómico) al explotar hábilmente la interferencia. Por este motivo, existe el riesgo de que el actual sistema criptográfico colapse en el futuro, y los bancos centrales y las agencias gubernamentales de todo el mundo se apresuran a migrar a la &amp;ldquo;Criptografía Post-Cuántica&amp;rdquo; (Post-Quantum Cryptography).&lt;/p>
&lt;h4 id="2-cálculos-de-química-cuántica-y-desarrollo-de-nuevos-materiales--fármacos">2. Cálculos de química cuántica y desarrollo de nuevos materiales / fármacos
&lt;/h4>&lt;p>El comportamiento de las moléculas y los átomos en la naturaleza obedece inherentemente a las leyes de la mecánica cuántica. Tratar de simular el comportamiento de moléculas complejas con computadoras clásicas resulta en una explosión de combinaciones de interacciones electrónicas, topando con los límites del cómputo incluso con moléculas relativamente pequeñas.
Como dijo el físico ganador del premio Nobel Richard Feynman: &amp;ldquo;Si quieres simular la naturaleza, tienes que hacerlo mediante la mecánica cuántica&amp;rdquo;. Las computadoras cuánticas desatan un poder nativo abrumador en la simulación de materia. Se esperan grandes avances que resuelvan los desafíos de la humanidad, como el diseño de nuevos medicamentos revolucionarios, el descubrimiento de materiales superconductores a temperatura ambiente, el desarrollo de materiales de baterías y células solares altamente eficientes, o la síntesis de fertilizantes energéticamente eficientes.&lt;/p>
&lt;h4 id="3-problemas-de-optimización-combinatoria-y-búsqueda-algoritmo-de-grover">3. Problemas de optimización combinatoria y búsqueda (Algoritmo de Grover)
&lt;/h4>&lt;p>Los algoritmos cuánticos también son potentes en problemas en los que hay que encontrar la mejor opción entre una inmensa cantidad de alternativas (optimización de rutas de logística, optimización de carteras financieras, etc.). El &amp;ldquo;algoritmo de Grover&amp;rdquo; permite encontrar los datos deseados de bases de datos desestructuradas en una cantidad de intentos igual a la raíz cuadrada de las que requeriría una computadora clásica. Por ejemplo, si hay 100 millones de datos, la búsqueda que requeriría un máximo de 100 millones de iteraciones a nivel clásico podría completarse en solo unas 10.000 iteraciones.&lt;/p>
&lt;hr>
&lt;h2 id="capítulo-5-el-muro-de-hardware-por-superar-la-decoherencia-y-la-corrección-de-errores-cuánticos">Capítulo 5: El muro de hardware por superar, la &amp;ldquo;Decoherencia&amp;rdquo; y la &amp;ldquo;Corrección de errores cuánticos&amp;rdquo;
&lt;/h2>&lt;p>Aunque en teoría son computadoras asombrosamente potentes, el camino hacia el uso práctico está bloqueado por un muro físico extremadamente alto y empinado. Su mayor enemigo es el &lt;strong>&amp;ldquo;Ruido&amp;rdquo;&lt;/strong>.&lt;/p>
&lt;p>La &amp;ldquo;superposición&amp;rdquo; y el &amp;ldquo;entrelazamiento cuántico&amp;rdquo; de los qubits son estados extremadamente frágiles. Al tocar siquiera una mínima cantidad de calor del entorno, una fluctuación electromagnética o rayos cósmicos, el estado mágico colapsa en un instante, convirtiéndose en un bit clásico ordinario. A este fenómeno se le conoce como &lt;strong>&amp;ldquo;Decoherencia&amp;rdquo; (Decoherence)&lt;/strong>.&lt;/p>
&lt;h3 id="la-feroz-competencia-de-los-métodos-de-realización-física">La feroz competencia de los métodos de realización física
&lt;/h3>&lt;p>En la actualidad, hay investigaciones en todo el mundo y una batalla por la hegemonía sobre cómo crear físicamente estos delicados qubits.&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Método de superconductores (Superconducting)&lt;/strong>: Adoptado por Google, IBM, Amazon, etc. Utilizan circuitos superconductores en forma de bucle y se enfrían con refrigeradores gigantescos a temperaturas ultrabajas cercanas al cero absoluto (aprox. -273°C) para controlar los estados cuánticos. Hoy en día es el método más avanzado y en el que es más fácil incrementar los qubits, pero los dispositivos de refrigeración son gigantes y caros.&lt;/li>
&lt;li>&lt;strong>Método de trampa de iones (Trapped Ion)&lt;/strong>: Adoptado por IonQ, Quantinuum, etc. Confinan iones (átomos) en el vacío mediante campos electromagnéticos y los controlan disparando láseres precisos. Su ventaja es que todos los qubits son idénticos y pueden mantener el estado durante mucho tiempo (tiempo de coherencia prolongado), pero la velocidad de operación es más lenta que el método de superconductores.&lt;/li>
&lt;li>&lt;strong>Método de fotónica cuántica (Photonic)&lt;/strong>: Fomentado por PsiQuantum, etc. Usa partículas de luz (fotones). Muchas partes pueden operar a temperatura ambiente sin necesidad de criogenia, lo que ofrece la enorme ventaja de la compatibilidad con las tecnologías actuales de fabricación de chips de silicio y transmisión por fibra óptica.&lt;/li>
&lt;li>&lt;strong>Método topológico (Topological)&lt;/strong>: Investigado a largo plazo por Microsoft. Aprovecha las propiedades topológicas de partículas especiales llamadas &amp;ldquo;anyones&amp;rdquo;, con un enfoque ambicioso de crear qubits fundamentalmente resistentes al ruido ambiental (menos propensos a errores). Teóricamente es el mejor, pero se considera que su obstáculo de realización física es el más alto.&lt;/li>
&lt;/ul>
&lt;h3 id="el-camino-al-objetivo-final-computadora-cuántica-tolerante-a-fallos-ftqc">El camino al objetivo final: &amp;ldquo;Computadora Cuántica Tolerante a Fallos (FTQC)&amp;rdquo;
&lt;/h3>&lt;p>En el mundo actual de las computadoras clásicas también existen los errores de cálculo (inversión de bits por los rayos cósmicos, etc.), pero al ser corregidos a la perfección mediante &amp;ldquo;códigos de corrección de errores&amp;rdquo;, podemos usar nuestros teléfonos inteligentes sin jamás ser conscientes de los fallos. Para que una computadora cuántica realice cálculos a gran escala a nivel práctico, es indispensable una &lt;strong>&amp;ldquo;Corrección de errores cuánticos (Quantum Error Correction: QEC)&amp;rdquo;&lt;/strong> similar.&lt;/p>
&lt;p>Sin embargo, dado que los estados cuánticos se &amp;ldquo;rompen al ser observados&amp;rdquo;, existe un dilema letal, ya que el contenido no se puede observar directamente para comprobar el error.
Para evitar esto, se ha establecido la teoría de combinar hábilmente muchos &amp;ldquo;qubits físicos&amp;rdquo; inestables para construir un &amp;ldquo;qubit lógico&amp;rdquo; estable que sea capaz de detectar y rectificar fallos (como el código de superficie).
Aun así, se dice que construir un solo qubit lógico requiere entre 1.000 y 10.000 qubits físicos. Para ejecutar algoritmos como el de Shor utilizando miles de qubits lógicos, se necesitará un sistema enorme con entre millones y decenas de millones de qubits físicos.&lt;/p>
&lt;p>En este momento estamos en lo que se llama la era de los dispositivos &lt;strong>NISQ (Noisy Intermediate-Scale Quantum: Cuántica de Escala Intermedia Ruidosa)&lt;/strong>. Es una fase de transición para máquinas que operan con docenas a cientos de qubits, sin corrección de errores.
El objetivo final de una &lt;strong>&amp;ldquo;Computadora Cuántica Tolerante a Fallos (Fault-Tolerant Quantum Computer: FTQC)&amp;rdquo;&lt;/strong> plenamente dotada con corrección de errores, requerirá aún otra década o más de investigación y desarrollo, según pronostican los expertos.&lt;/p>
&lt;hr>
&lt;h2 id="capítulo-6-la-historia-y-perspectivas-a-futuro-de-la-computadora-cuántica">Capítulo 6: La historia y perspectivas a futuro de la computadora cuántica
&lt;/h2>&lt;p>Finalmente, demos un vistazo a cómo nacieron las computadoras cuánticas y adónde se dirigen.&lt;/p>
&lt;h3 id="desde-el-nacimiento-de-la-teoría-hasta-la-prueba-de-la-supremacía-cuántica">Desde el nacimiento de la teoría hasta la prueba de la &amp;ldquo;Supremacía Cuántica&amp;rdquo;
&lt;/h3>&lt;ul>
&lt;li>&lt;strong>Años 1980&lt;/strong>: Los físicos Paul Benioff y Richard Feynman propusieron el concepto de computadoras basadas en los principios de la mecánica cuántica. Todo empezó con la frase &amp;ldquo;si vas a simular la naturaleza, usa la mecánica cuántica&amp;rdquo;.&lt;/li>
&lt;li>&lt;strong>1994&lt;/strong>: Peter Shor publicó el algoritmo cuántico de factorización (el algoritmo de Shor). Impactó al mundo, provocando una avalancha de grandes fondos de investigación.&lt;/li>
&lt;li>&lt;strong>1996&lt;/strong>: Lov Grover publicó el algoritmo de Grover, que acelera la búsqueda de datos.&lt;/li>
&lt;li>**2019 **: Hito histórico. Google, usando un procesador superconductor de 53 qubits llamado &amp;ldquo;Sycamore&amp;rdquo;, anunció que la supercomputadora clásica tardaría 10.000 años en calcular una verificación de generación de números aleatorios, que ellos habían completado en unos 200 segundos. Como la primera demostración de &lt;strong>&amp;ldquo;Supremacía Cuántica&amp;rdquo; (Quantum Supremacy)&lt;/strong> del mundo, fue un tema inmenso (luego IBM y otros mejoraron el algoritmo del lado clásico argumentando que era calculable en un par de días, produciendo debates candentes).&lt;/li>
&lt;li>&lt;strong>A partir del 2023&lt;/strong>: IBM anunció el procesador &amp;ldquo;Condor&amp;rdquo;, que supera los 1000 qubits. Además, la Universidad de Harvard y otras han tenido éxito en la generación y operación de &amp;ldquo;qubits lógicos&amp;rdquo;, con los primeros informes que demuestran una sucesión de las primeras pruebas de tecnologías de corrección de errores.&lt;/li>
&lt;/ul>
&lt;h3 id="hacia-la-tecnología-de-la-próxima-generación">Hacia la tecnología de la próxima generación
&lt;/h3>&lt;p>Una computadora cuántica no es solo una &amp;ldquo;CPU de nueva generación con una velocidad de reloj más rápida&amp;rdquo;. Se trata de un cambio de paradigma en la informática en el cual el concepto mismo de calcular se reescribe desde sus raíces bajo las normas de la mecánica cuántica que gobiernan el mundo microscópico.&lt;/p>
&lt;p>No vamos a tener a lo largo de nuestra vida un &amp;ldquo;smartphone cuántico personal&amp;rdquo; en nuestros bolsillos (no es necesario). Sin embargo, seguro se acerca el futuro en el que los enormes centros de datos cuánticos, más allá de redes en la nube como AWS o Azure, un día repentinamente encuentren la cura milagrosa para una enfermedad incurable o identifiquen los soñados materiales para una energía limpia que solucionarán el calentamiento global (por ejemplo, catalizadores para sintetizar amoníaco desde el nitrógeno del aire a temperatura ambiente).&lt;/p>
&lt;p>Ahora seguimos en el equivalente al inicio de los años 40, al igual que ENIAC, con sus tarjetas perforadas y un cuarto ardiendo de calor por enormes tubos de vacío. No obstante, ingenieros e investigadores de primer nivel de todo el mundo dedican toda su sabiduría al esfuerzo, e informes con innovaciones técnicas llegan a diario.
Nosotros, que podemos presenciar la evolución de este nuevo &amp;ldquo;amanecer computacional&amp;rdquo; en tiempo real, podríamos decir que vivimos en una era excepcionalmente emocionante de la historia.&lt;/p>
&lt;p>Las puertas al mundo cuántico acaban de abrirse. No podemos quitarle los ojos a las futuras tendencias.&lt;/p>
&lt;hr>
&lt;p>&lt;em>Este artículo tiene la intención de explicar los conceptos básicos de la computación cuántica de manera comprensible a personas del mundo de los negocios y el público general interesado en tecnología. Tenga en cuenta que ha sido en parte simplificado, omitiendo las definiciones matemáticas y físicas estrictas (como los detalles de la notación bra-ket y de la amplitud de probabilidad compleja).&lt;/em>&lt;/p></description></item><item><title>【PQC】La visión completa de la criptografía post-cuántica: La criptografía de próxima generación de la era de las computadoras cuánticas</title><link>http://kenji.blog/es/p/post-quantum-cryptography/</link><pubDate>Sat, 05 Sep 2026 22:09:22 +0900</pubDate><guid>http://kenji.blog/es/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】La visión completa de la criptografía post-cuántica: La criptografía de próxima generación de la era de las computadoras cuánticas" />&lt;h2 id="introducción-la-amenaza-de-las-computadoras-cuánticas-a-la-criptografía">Introducción: La &amp;ldquo;amenaza&amp;rdquo; de las computadoras cuánticas a la criptografía
&lt;/h2>&lt;p>En la actualidad, gran parte de nuestras comunicaciones diarias en Internet (como los pagos bancarios en línea, la navegación web (HTTPS), los mensajes en aplicaciones de mensajería, el blockchain y las transacciones de criptomonedas) están protegidas por una tecnología llamada &amp;ldquo;criptografía de clave pública&amp;rdquo;. Específicamente, algoritmos como RSA y la criptografía de curva elíptica (ECC) constituyen la base fundamental que sustenta la fiabilidad de nuestra sociedad digital moderna.&lt;/p>
&lt;p>Estos sistemas criptográficos basan su seguridad en problemas matemáticos difíciles, como la &amp;ldquo;factorización de enteros gigantes&amp;rdquo; y el &amp;ldquo;problema del logaritmo discreto&amp;rdquo;, cuya resolución tomaría un tiempo astronómico para las computadoras clásicas actuales (incluyendo las supercomputadoras). Sin embargo, cuando se materialice el rápido progreso reciente y las &lt;strong>&amp;ldquo;computadoras cuánticas&amp;rdquo;&lt;/strong> se vuelvan prácticas, esta premisa se verá alterada desde sus cimientos.&lt;/p>
&lt;p>En 1994, Peter Shor publicó el &amp;ldquo;Algoritmo de Shor&amp;rdquo;, demostrando matemáticamente que una computadora cuántica con suficiente capacidad puede resolver la factorización de enteros y los problemas de logaritmos discretos en muy poco tiempo. Esto significa el riesgo (conocido como Y2Q: Years to Quantum, o el problema Q-Day) de que toda la comunicación cifrada que protege la Internet actual sea descifrada en el futuro.&lt;/p>
&lt;p>Aún más grave es la existencia de una técnica de ataque llamada &amp;ldquo;Cosechar ahora, descifrar después&amp;rdquo; (Harvest Now, Decrypt Later), en la cual los datos se roban y almacenan hoy para descifrarlos en el futuro cuando la tecnología lo permita. Los datos que requieren mantenerse confidenciales durante décadas, como la información clasificada del estado, la propiedad intelectual corporativa y la información biométrica personal, ya podrían ser objeto de robo con la premisa de ser descifrados en el futuro.&lt;/p>
&lt;p>Para hacer frente a esta crisis sin precedentes, criptógrafos e institutos de investigación de todo el mundo están aunando esfuerzos para desarrollar una tecnología criptográfica de próxima generación que pueda mantener la seguridad incluso contra ataques de computadoras cuánticas: la &lt;strong>Criptografía Post-Cuántica (PQC: Post-Quantum Cryptography)&lt;/strong>. En este artículo, explicaremos en detalle desde los fundamentos de la PQC hasta cómo funcionan sus principales algoritmos, así como las últimas tendencias de estandarización global impulsadas por el Instituto Nacional de Estándares y Tecnología de los Estados Unidos (NIST).&lt;/p>
&lt;hr>
&lt;h2 id="qué-es-la-criptografía-post-cuántica-pqc">¿Qué es la Criptografía Post-Cuántica (PQC)?
&lt;/h2>&lt;p>La Criptografía Post-Cuántica (PQC) es un término general para los algoritmos criptográficos diseñados para funcionar en las computadoras clásicas existentes y, al mismo tiempo, ser resistentes a ataques de las computadoras cuánticas a gran escala que surgirán en el futuro (como el algoritmo de Shor).&lt;/p>
&lt;p>A menudo se confunde con tecnologías como la &amp;ldquo;Criptografía Cuántica&amp;rdquo; y la &amp;ldquo;Distribución Cuántica de Claves (QKD)&amp;rdquo;, pero estos son enfoques completamente diferentes. La Criptografía Cuántica (QKD) es una tecnología basada en hardware que utiliza las leyes de la física cuántica (como la propiedad de que la observación altera el estado) para hacer que las escuchas clandestinas en la ruta de comunicación sean físicamente imposibles. Requiere fibra óptica dedicada y equipo especial, lo que presenta desafíos en términos de costos de implementación y limitaciones de distancia.&lt;/p>
&lt;p>Por otro lado, &lt;strong>la PQC es una tecnología criptográfica basada en software fundamentada puramente en &amp;ldquo;matemáticas&amp;rdquo;&lt;/strong>. Por lo tanto, puede incorporarse como actualizaciones de software en la infraestructura de Internet existente, servidores, teléfonos inteligentes, navegadores, etc., lo que la hace altamente aplicable en el mundo real. Las empresas de TI y las agencias gubernamentales de todo el mundo consideran urgente reemplazar (migrar) los actuales RSA y ECC por esta PQC.&lt;/p>
&lt;hr>
&lt;h2 id="los-4-enfoques-matemáticos-principales-que-sustentan-la-pqc">Los 4 enfoques matemáticos principales que sustentan la PQC
&lt;/h2>&lt;p>Se han propuesto varios algoritmos de PQC basados en problemas matemáticos difíciles de resolver de manera eficiente incluso con computadoras cuánticas (como los problemas NP-difíciles). Aquí presentamos las 4 categorías principales que dominan actualmente.&lt;/p>
&lt;h3 id="enfoques-principales-de-la-criptografía-post-cuántica-pqc">Enfoques principales de la Criptografía Post-Cuá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">Criptografía&lt;/span> &lt;span class="n">Post&lt;/span>&lt;span class="o">-&lt;/span>&lt;span class="n">Cuá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">Criptografía&lt;/span> &lt;span class="n">basada&lt;/span> &lt;span class="n">en&lt;/span> &lt;span class="n">retículos&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">Criptografía&lt;/span> &lt;span class="n">basada&lt;/span> &lt;span class="n">en&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">Criptografía&lt;/span> &lt;span class="n">multivariante&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">Criptografía&lt;/span> &lt;span class="n">basada&lt;/span> &lt;span class="n">en&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-criptografía-basada-en-retículos-lattice-based-cryptography">1. Criptografía basada en retículos (Lattice-based Cryptography)
&lt;/h3>&lt;p>Actualmente, la criptografía basada en retículos es la más prometedora y predominante en el campo de la PQC. Su seguridad se fundamenta en problemas relacionados con puntos dispuestos regularmente (puntos de retículo) en espacios multidimensionales. Problemas famosos incluyen el &amp;ldquo;Problema del Vector Más Corto (SVP)&amp;rdquo; y el &amp;ldquo;Aprendizaje con Errores (LWE)&amp;rdquo;.&lt;/p>
&lt;p>&lt;strong>Resumen del funcionamiento:&lt;/strong>
Imagine innumerables puntos dispuestos como una cuadrícula (retículo) en un espacio de altísima dimensión (cientos a miles de dimensiones). Encontrar un punto de retículo específico es fácil en 2 o 3 dimensiones, pero a cientos de dimensiones, no se ha descubierto un algoritmo eficiente para encontrarlo, ni para computadoras clásicas ni cuánticas. El problema LWE, en particular, aprovecha la propiedad de que &amp;ldquo;si se agrega intencionalmente un pequeño &amp;lsquo;ruido (error)&amp;rsquo; a un sistema de ecuaciones lineales, se vuelve drásticamente más difícil adivinar las variables originales&amp;rdquo;.&lt;/p>
&lt;p>&lt;strong>Ventajas:&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>Aplicable tanto a la encapsulación de claves (KEM) como a firmas digitales.&lt;/li>
&lt;li>Velocidad de procesamiento extremadamente rápida (a veces más rápida que RSA y ECC).&lt;/li>
&lt;li>Buen equilibrio entre el tamaño de la clave y el tamaño del texto cifrado.&lt;/li>
&lt;/ul>
&lt;p>Muchos de los algoritmos actualmente estandarizados por el NIST (como ML-KEM y ML-DSA) utilizan esta criptografía basada en retículos.&lt;/p>
&lt;h3 id="2-criptografía-basada-en-hash-hash-based-cryptography">2. Criptografía basada en hash (Hash-based Cryptography)
&lt;/h3>&lt;p>La criptografía basada en hash es un algoritmo PQC especializado en firmas digitales. La base de su seguridad depende únicamente de la resistencia a colisiones y la unidireccionalidad de &amp;ldquo;funciones hash criptográficas&amp;rdquo; seguras como SHA-2 y SHA-3.&lt;/p>
&lt;p>&lt;strong>Resumen del funcionamiento:&lt;/strong>
Comienza con un esquema de firma de un solo uso llamado &amp;ldquo;Firma de Lamport&amp;rdquo;. Al agrupar estas firmas utilizando una estructura de datos en forma de árbol llamada &amp;ldquo;Árbol de Merkle&amp;rdquo;, se permiten múltiples firmas con un solo par de claves.&lt;/p>
&lt;p>&lt;strong>Ventajas:&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>La base de seguridad es extremadamente robusta; hay una fuerte prueba de que &amp;ldquo;es seguro mientras la función hash sea segura&amp;rdquo;.&lt;/li>
&lt;li>Al depender poco de una estructura matemática, el riesgo de que se descubra un método de descifrado imprevisto es bajo.&lt;/li>
&lt;/ul>
&lt;p>&lt;strong>Desventajas:&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>Solo se puede usar para firmas digitales, no para el establecimiento de claves (KEM).&lt;/li>
&lt;li>El tamaño de la firma tiende a ser grande.&lt;/li>
&lt;li>Existen variantes &amp;ldquo;con estado&amp;rdquo; (stateful) y &amp;ldquo;sin estado&amp;rdquo; (stateless). Las variantes con estado (como XMSS) requieren una gestión estricta del número de usos de la clave, lo que dificulta su implementación.&lt;/li>
&lt;/ul>
&lt;p>NIST ha estandarizado &amp;ldquo;SLH-DSA (anteriormente SPHINCS+)&amp;rdquo; como una firma basada en hash sin estado.&lt;/p>
&lt;h3 id="3-criptografía-multivariante-multivariate-cryptography">3. Criptografía multivariante (Multivariate Cryptography)
&lt;/h3>&lt;p>La criptografía de polinomios multivariantes basa su seguridad en la dificultad de resolver un sistema de ecuaciones polinómicas cuadráticas simultáneas con múltiples variables (el problema MQ). Se sabe que este problema es NP-difícil.&lt;/p>
&lt;p>&lt;strong>Resumen del funcionamiento:&lt;/strong>
El remitente crea un texto cifrado (firma) sustituyendo el texto sin formato (o el valor hash) en una compleja ecuación con múltiples variables proporcionada como clave pública. El destinatario legítimo posee &amp;ldquo;información oculta (una puerta trasera) que transforma la estructura de la ecuación en una forma fácil de resolver&amp;rdquo; como su clave privada, y la utiliza para descifrar (o verificar la firma).&lt;/p>
&lt;p>&lt;strong>Ventajas:&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>El tamaño de la firma es muy pequeño.&lt;/li>
&lt;li>La velocidad de verificación de la firma es extremadamente rápida. Adecuado para dispositivos IoT con recursos limitados.&lt;/li>
&lt;/ul>
&lt;p>&lt;strong>Desventajas:&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>El tamaño de la clave pública es muy grande (puede ser de decenas a cientos de kilobytes).&lt;/li>
&lt;li>En el pasado, algoritmos prominentes (como Rainbow) han sido quebrados por ataques clásicos, lo que dificulta establecer la confianza en su seguridad en comparación con otros métodos.&lt;/li>
&lt;/ul>
&lt;h3 id="4-criptografía-basada-en-códigos-code-based-cryptography">4. Criptografía basada en códigos (Code-based Cryptography)
&lt;/h3>&lt;p>La criptografía basada en códigos aplica a la criptografía la teoría de los &amp;ldquo;códigos de corrección de errores&amp;rdquo; utilizados para corregir errores en las rutas de comunicación. El &amp;ldquo;criptosistema McEliece&amp;rdquo;, propuesto en 1978, es el más famoso y uno de los más antiguos de la PQC.&lt;/p>
&lt;p>&lt;strong>Resumen del funcionamiento:&lt;/strong>
El remitente codifica el texto sin formato utilizando la clave pública del destinatario (una matriz generadora de un código de corrección de errores con una estructura oculta), agrega un error intencional (ruido) y lo envía. El destinatario elimina el error usando la clave privada y extrae el texto sin formato. El atacante debe corregir el error de un código aparentemente aleatorio sin conocer su estructura, lo que se conoce como el &amp;ldquo;problema general de decodificación de síndrome&amp;rdquo;, probado como NP-difícil.&lt;/p>
&lt;p>&lt;strong>Ventajas:&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>Tras más de 40 años de estudio exhaustivo, no se han encontrado ataques efectivos, lo que le otorga una altísima confianza en su seguridad.&lt;/li>
&lt;li>Procesamiento de cifrado y descifrado rápido.&lt;/li>
&lt;/ul>
&lt;p>&lt;strong>Desventajas:&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>El tamaño de la clave pública es gigantesco (puede ser de varios megabytes). Por lo tanto, es difícil de utilizar en entornos con ancho de banda de comunicación o memoria limitados (como en el handshake de TLS).&lt;/li>
&lt;/ul>
&lt;hr>
&lt;h2 id="últimas-tendencias-en-la-estandarización-de-pqc-por-parte-del-nist">Últimas tendencias en la estandarización de PQC por parte del NIST
&lt;/h2>&lt;p>El Instituto Nacional de Estándares y Tecnología de los Estados Unidos (NIST) comenzó en 2016 a solicitar algoritmos criptográficos post-cuánticos de próxima generación en todo el mundo, llevando a cabo evaluaciones rigurosas y múltiples rondas durante varios años.&lt;/p>
&lt;p>En 2024, el NIST anunció finalmente los siguientes tres algoritmos como Estándares Federales de Procesamiento de Información (FIPS) oficiales. Esto proporciona una base sólida para que las organizaciones de todo el mundo comiencen a implementarlos en entornos de producción.&lt;/p>
&lt;h3 id="estándares-fips-promulgados-2024">Estándares FIPS Promulgados (2024)
&lt;/h3>&lt;ol>
&lt;li>
&lt;p>&lt;strong>FIPS 203: ML-KEM (anteriormente CRYSTALS-Kyber)&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Uso:&lt;/strong> Mecanismo de encapsulación de claves (KEM) / Cifrado e intercambio de claves&lt;/li>
&lt;li>&lt;strong>Tecnología base:&lt;/strong> Criptografía de retículos (Module-LWE)&lt;/li>
&lt;li>&lt;strong>Características:&lt;/strong> Excelente equilibrio entre tamaño de clave y velocidad. Actuará como el intercambio de claves PQC predeterminado en aplicaciones comunes de Internet, como la comunicación web (TLS) y las aplicaciones de mensajería segura.&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>FIPS 204: ML-DSA (anteriormente CRYSTALS-Dilithium)&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Uso:&lt;/strong> Firma digital&lt;/li>
&lt;li>&lt;strong>Tecnología base:&lt;/strong> Criptografía de retículos (Module-LWE)&lt;/li>
&lt;li>&lt;strong>Características:&lt;/strong> El estándar principal para firmas digitales. Permite un procesamiento eficiente y se convertirá en el nuevo estándar para todos los propósitos de firmas electrónicas, como la firma de software y la autenticación de documentos.&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>FIPS 205: SLH-DSA (anteriormente SPHINCS+)&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Uso:&lt;/strong> Firma digital&lt;/li>
&lt;li>&lt;strong>Tecnología base:&lt;/strong> Criptografía basada en hash (sin estado)&lt;/li>
&lt;li>&lt;strong>Características:&lt;/strong> Juega un papel crucial al actuar como respaldo en caso de que se descubran vulnerabilidades en la criptografía de retículos en el futuro. Aunque el tamaño de la firma es mayor, es adecuado para aplicaciones que requieren confiabilidad a largo plazo.&lt;/li>
&lt;/ul>
&lt;/li>
&lt;/ol>
&lt;h3 id="en-busca-de-una-mayor-diversidad">En busca de una mayor diversidad
&lt;/h3>&lt;p>Si bien el NIST ha completado su proceso de estandarización inicial, continúa explorando más algoritmos. Debido a que el estándar está fuertemente sesgado hacia la &amp;ldquo;criptografía de retículos&amp;rdquo;, se hace hincapié en asegurar la &lt;strong>&amp;ldquo;Diversidad Criptográfica&amp;rdquo; (Crypto Diversity)&lt;/strong>. Se están evaluando métodos como la criptografía basada en códigos como estándares de respaldo para el intercambio de claves, lo que fortalecerá aún más la base de la PQC en el futuro.&lt;/p>
&lt;hr>
&lt;h2 id="escenarios-y-desafíos-en-la-transición-a-pqc-la-importancia-de-la-agilidad-criptográfica">Escenarios y desafíos en la transición a PQC: La importancia de la &amp;ldquo;Agilidad Criptográfica&amp;rdquo;
&lt;/h2>&lt;p>Con el lanzamiento de las normas oficiales por parte del NIST, agencias gubernamentales, instituciones financieras y empresas tecnológicas de todo el mundo intensificarán su transición (migración) del RSA/ECC existente a PQC. Las pautas de la NSA (Agencia de Seguridad Nacional de EE. UU.) y otros también recomiendan completar esta transición de manera temprana.&lt;/p>
&lt;h3 id="adopción-de-un-enfoque-híbrido">Adopción de un enfoque híbrido
&lt;/h3>&lt;p>Como los algoritmos PQC son nuevos, no han superado la &amp;ldquo;prueba del tiempo&amp;rdquo; en comparación con la criptografía clásica. Considerando el riesgo de posibles errores de implementación o el descubrimiento de nuevos métodos de ataque, se recomienda un &lt;strong>&amp;ldquo;enfoque híbrido&amp;rdquo;&lt;/strong> durante el período de transición. Esto implica combinar criptografía existente probada (por ejemplo, ECDHE) con la nueva PQC (por ejemplo, ML-KEM) para el intercambio de claves. Actualmente, los principales navegadores y servicios en la nube están avanzando rápidamente en implementaciones de prueba de este método.&lt;/p>
&lt;h3 id="lograr-la-agilidad-criptográfica-crypto-agility">Lograr la Agilidad Criptográfica (Crypto-Agility)
&lt;/h3>&lt;p>Lo que las empresas y los desarrolladores de sistemas deben tener más presente en el futuro es asegurar la &lt;strong>&amp;ldquo;Agilidad Criptográfica&amp;rdquo; (Crypto-Agility)&lt;/strong>. Es indispensable diseñar una arquitectura flexible que permita reemplazar y actualizar rápidamente los algoritmos criptográficos sin detener el sistema, en caso de que se descubran fallos en los algoritmos en el futuro o surjan nuevos estándares.&lt;/p>
&lt;p>El primer y crucial paso para la transición a PQC es la creación de un Inventario Criptográfico (CBOM: Cryptography Bill of Materials), que permita saber exactamente &amp;ldquo;dónde&amp;rdquo;, &amp;ldquo;qué criptografía&amp;rdquo; y &amp;ldquo;con qué propósito&amp;rdquo; se está utilizando dentro de los sistemas de la empresa.&lt;/p>
&lt;hr>
&lt;h2 id="conclusión-preparándose-para-el-día-q-q-day">Conclusión: Preparándose para el &amp;ldquo;Día Q&amp;rdquo; (Q-Day)
&lt;/h2>&lt;p>Si bien la evolución de las computadoras cuánticas traerá enormes beneficios a la humanidad, también representa la mayor amenaza para la seguridad criptográfica, que es la columna vertebral de nuestra sociedad digital actual. La Criptografía Post-Cuántica (PQC) ya no es un &amp;ldquo;tema de investigación en un futuro lejano&amp;rdquo;. Con el hito de la publicación de los estándares FIPS por parte del NIST, la PQC ha entrado en una fase de &amp;ldquo;implementación y transición&amp;rdquo; a gran escala.&lt;/p>
&lt;p>Teniendo en cuenta la amenaza de &amp;ldquo;Cosechar ahora, descifrar después&amp;rdquo;, migrar a PQC es una prioridad absoluta que todas las organizaciones que manejan datos altamente confidenciales deben abordar &amp;ldquo;ahora mismo&amp;rdquo;. Comprendiendo profundamente las tecnologías criptográficas de próxima generación y aumentando la agilidad criptográfica de los sistemas, preparémonos para superar de forma segura la inminente era de las computadoras cuánticas.&lt;/p></description></item><item><title>¿Realmente las computadoras cuánticas destruirán el cifrado RSA? ~ El algoritmo de Shor y el estado actual ~</title><link>http://kenji.blog/es/p/shors-algorithm-and-rsa-breaking/</link><pubDate>Sat, 05 Sep 2026 22:09:21 +0900</pubDate><guid>http://kenji.blog/es/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 ¿Realmente las computadoras cuánticas destruirán el cifrado RSA? ~ El algoritmo de Shor y el estado actual ~" />&lt;h2 id="introducción-la-intersección-entre-la-criptografía-y-la-computación-cuántica">Introducción: La intersección entre la criptografía y la computación cuántica
&lt;/h2>&lt;p>En la sociedad de Internet moderna, la base para proteger el secreto de las comunicaciones es la &amp;ldquo;criptografía de clave pública&amp;rdquo;. Entre ellas, un representante típico es el &amp;ldquo;cifrado RSA&amp;rdquo;, desarrollado en 1977 por Ron Rivest, Adi Shamir y Leonard Adleman. Desde los pagos en compras en línea que utilizamos todos los días, la navegación de sitios web (HTTPS) hasta el envío y recepción de correos electrónicos, el cifrado RSA funciona como el corazón de la infraestructura de Internet.&lt;/p>
&lt;p>Sin embargo, con la llegada de las &amp;ldquo;computadoras cuánticas&amp;rdquo;, se ha señalado la posibilidad de que esta seguridad se vea socavada desde sus cimientos. A veces, en los medios de comunicación aparecen titulares sensacionalistas como: &amp;ldquo;Si se perfecciona la computadora cuántica, las contraseñas y códigos de todo el mundo serán descifrados en segundos&amp;rdquo;. Pero, ¿es esto realmente cierto?&lt;/p>
&lt;p>En este artículo, profundizaremos en los mecanismos del GNFS (Criba General del Cuerpo de Números), que es un método clásico de criptoanálisis, y el &amp;ldquo;Algoritmo de Shor&amp;rdquo; (Shor&amp;rsquo;s Algorithm), que es la versión definitiva del algoritmo de descifrado utilizando computadoras cuánticas. Explicaremos de manera sencilla conceptos avanzados como la transformada cuántica de Fourier y el hallazgo de períodos, y examinaremos en detalle el estado actual del hardware cuántico en la era actual NISQ (Noisy Intermediate-Scale Quantum) y los obstáculos necesarios para romper realmente RSA-2048.&lt;/p>
&lt;hr>
&lt;h2 id="la-base-del-cifrado-rsa-la-dificultad-de-la-factorización-de-enteros">La base del cifrado RSA: La dificultad de la factorización de enteros
&lt;/h2>&lt;p>La seguridad del cifrado RSA depende de una asimetría extremadamente simple en matemáticas. Es el hecho de que &amp;ldquo;multiplicar dos números primos gigantescos es fácil, pero encontrar (factorizar) los dos números primos originales a partir del resultado multiplicado (número compuesto) es extremadamente difícil&amp;rdquo;.&lt;/p>
&lt;p>Por ejemplo, supongamos que hay dos números primos $ p = 61 $ y $ q = 53 $. Calcular esta multiplicación $ N = p \times q = 3233 $ es instantáneo. Sin embargo, si solo se da el número &amp;ldquo;3233&amp;rdquo; y se nos pide resolver &amp;ldquo;¿de qué números primos es esta la multiplicación?&amp;rdquo;, a medida que el número crece, la cantidad de cálculo explota exponencialmente.&lt;/p>
&lt;p>En el RSA-2048, que es la corriente principal en la actualidad, la longitud de la clave es de 2048 bits, es decir, se utiliza un gigantesco número compuesto $ N $ de unos 617 dígitos decimales. Si este $ N $ pudiera ser factorizado, el cifrado estaría prácticamente descifrado.&lt;/p>
&lt;h3 id="el-desafío-de-las-computadoras-clásicas-gnfs-criba-general-del-cuerpo-de-números">El desafío de las computadoras clásicas: GNFS (Criba General del Cuerpo de Números)
&lt;/h3>&lt;p>Para resolver el problema de la factorización, matemáticos y criptógrafos han desarrollado varios algoritmos a lo largo de los años. Entre ellos, el que actualmente se considera el más rápido en computadoras clásicas es la &lt;strong>Criba General del Cuerpo de Números (GNFS: General Number Field Sieve)&lt;/strong>.&lt;/p>
&lt;p>GNFS es un método para factorizar un número gigantesco $ N $ extendiendo el cálculo en el anillo de enteros a un cuerpo de números algebraicos más abstracto (Number Field) para su análisis. El flujo general es el siguiente:&lt;/p>
&lt;ol>
&lt;li>&lt;strong>Selección de polinomios&lt;/strong> : Encontrar un polinomio $ f(x) $ con el grado y los coeficientes adecuados que tenga a $ N $ como raíz.&lt;/li>
&lt;li>&lt;strong>Recopilación de datos (cribado)&lt;/strong> : Buscar en el cuerpo de los números racionales y en el cuerpo algebraico una gran cantidad de pares de números que se puedan descomponer en números primos pequeños (números suaves, Smooth numbers). Este proceso se llama &amp;ldquo;cribado&amp;rdquo; y es la parte que requiere más tiempo.&lt;/li>
&lt;li>&lt;strong>Generación y reducción de matrices&lt;/strong> : Generar una matriz dispersa gigante (una matriz donde la mayoría de los componentes son 0) basada en las relaciones recopiladas, y usar métodos de álgebra lineal (como el método de Block-Lanczos) para encontrar una solución.&lt;/li>
&lt;li>&lt;strong>Cálculo de raíces cuadradas&lt;/strong> : Finalmente, calcular la raíz cuadrada sobre el cuerpo algebraico para derivar los factores (factores primos) de $ N $.&lt;/li>
&lt;/ol>
&lt;p>La complejidad computacional de GNFS se evalúa asintóticamente como $ O(\exp((\sqrt[3]{\frac{64}{9}} + o(1)) (\log N)^{\frac{1}{3}} (\log \log N)^{\frac{2}{3}})) $. Esto se llama complejidad temporal &amp;ldquo;subexponencial&amp;rdquo; (Sub-exponential). Aunque es más rápido que el tiempo exponencial, es mucho más lento que el tiempo polinómico (Polynomial time).&lt;/p>
&lt;p>De hecho, en 2020, un equipo de investigación internacional logró factorizar el RSA-250 (un número compuesto de 829 bits y 250 dígitos) utilizando GNFS. Este cálculo consumió un enorme tiempo de computación de aproximadamente 2700 CPU core-años, reuniendo recursos informáticos de todo el mundo. Sin embargo, cuando se trata de 2048 bits, se menciona que la cantidad de cálculo necesaria aumentaría a billones de veces la edad del universo, por lo que no importa cuántas supercomputadoras actuales funcionen en paralelo, es imposible descifrarlo en un tiempo realista utilizando métodos clásicos.&lt;/p>
&lt;hr>
&lt;h2 id="la-carta-de-triunfo-de-la-computadora-cuántica-el-algoritmo-de-shor">La carta de triunfo de la computadora cuántica: El algoritmo de Shor
&lt;/h2>&lt;p>Aquí es donde entra en juego el &amp;ldquo;Algoritmo de Shor&amp;rdquo;, publicado por Peter Shor en 1994. Este algoritmo fue revolucionario al poder resolver el problema de la factorización de enteros en una computadora cuántica en &lt;strong>tiempo polinómico&lt;/strong> ( $ O((\log N)^3) $ ). La diferencia entre el tiempo subexponencial y el tiempo polinómico es decisiva, lo que significa que, en teoría, el uso de una computadora cuántica destruiría por completo el cifrado RSA.&lt;/p>
&lt;h3 id="flujo-general-del-algoritmo-de-shor">Flujo general del 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[Ingresar el número N a factorizar] --&amp;gt; B[Seleccionar un número entero aleatorio a]
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> B --&amp;gt; C{Máximo común divisor&amp;lt;br&amp;gt;de a y N}
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> C --&amp;gt;|Mayor que 1| D[¡Afortunadamente encontramos un factor primo!]
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> C --&amp;gt;|1 Coprimos| E[Turno de la computadora cuántica]
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> E --&amp;gt; F[Encontrar el período r de la función&amp;lt;br&amp;gt;f_x = a^x mod N mediante&amp;lt;br&amp;gt;la transformada cuántica de Fourier]
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> F --&amp;gt; G{¿Es el período r par y&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;|Sí| H[Calcular el máximo común divisor gcd_a^r/2 ± 1, N]
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> H --&amp;gt; I((¡Factorización exitosa!))
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> G --&amp;gt;|No| B
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>El algoritmo de Shor no resuelve directamente el problema de la factorización, sino que utiliza teoremas de la teoría de números para convertirlo en otro problema llamado &amp;ldquo;Problema de hallazgo de períodos&amp;rdquo; (Period Finding Problem), y aborda resolverlo rápidamente aprovechando las características de las computadoras cuánticas.&lt;/p>
&lt;h3 id="paso-1-reducción-de-la-factorización-al-problema-de-hallazgo-de-períodos-procesamiento-clásico">Paso 1: Reducción de la factorización al problema de hallazgo de períodos (Procesamiento clásico)
&lt;/h3>&lt;p>El primer paso del algoritmo se realiza en una computadora clásica.
Para el número $ N $ que queremos factorizar, elegimos un entero aleatorio $ a $ ( $ 1 &lt; a &lt; N $ ) que sea coprimo con $ N $ (su máximo común divisor es 1). Si, por casualidad, el máximo común divisor no es 1, entonces el divisor común encontrado en ese punto es un factor primo de $ N $ y el descifrado está completo, pero la probabilidad es extremadamente baja.&lt;/p>
&lt;p>Luego, consideramos la siguiente secuencia de ecuaciones modulares:
$ f(x) = a^x \pmod N $&lt;/p>
&lt;p>Si sustituimos $ x = 1, 2, 3, \dots $ en esta función $ f(x) $, los valores parecen ser aleatorios, pero dado que estamos calculando dentro de un rango finito, inevitablemente volverá al valor original en algún punto y repetirá la misma secuencia de números. A este período de repetición lo llamamos $ r $. Es decir,
$ a^r \equiv 1 \pmod N $
El problema de encontrar el entero positivo más pequeño $ r $ que cumpla con esto, es el &amp;ldquo;Problema de hallazgo de períodos&amp;rdquo;.&lt;/p>
&lt;p>Si se encuentra este período $ r $, y si $ r $ es par, entonces $ a^r - 1 \equiv 0 \pmod N $, y usando la fórmula de factorización se puede transformar en:
$ (a^{r/2} - 1)(a^{r/2} + 1) \equiv 0 \pmod N $
A partir de aquí, al calcular el máximo común divisor de $ N $ y $ a^{r/2} \pm 1 $ usando el algoritmo de Euclides, se puede obtener un factor primo de $ N $ con una probabilidad extremadamente alta.&lt;/p>
&lt;p>Para encontrar el período $ r $ en una computadora clásica, en última instancia, se requieren pasos exponenciales y no se puede acelerar. Sin embargo, una computadora cuántica puede encontrar este período $ r $ en un instante (en tiempo polinómico).&lt;/p>
&lt;h3 id="paso-2-preparación-del-estado-cuántico-y-superposición">Paso 2: Preparación del estado cuántico y superposición
&lt;/h3>&lt;p>A partir de aquí es el turno de la computadora cuántica.
Las computadoras cuánticas utilizan &amp;ldquo;cúbits&amp;rdquo; (Qubits) que pueden tener los estados &amp;ldquo;0&amp;rdquo; y &amp;ldquo;1&amp;rdquo; simultáneamente. En el algoritmo de Shor, se preparan dos registros: un registro para almacenar la entrada (el primer registro) y un registro para almacenar los resultados del cálculo (el segundo registro).&lt;/p>
&lt;p>Primero, se aplica una operación de puerta cuántica llamada Puerta de Hadamard (Hadamard gate) a todos los cúbits del primer registro. Como resultado, el primer registro se convierte en un &lt;strong>estado de superposición uniforme&lt;/strong> de todos los valores posibles de $ x $ (desde $ 0 $ hasta $ 2^n-1 $, donde $ n $ es un número de bits suficientemente grande).&lt;/p>
&lt;p>En otras palabras, dentro de la computadora cuántica se crea un estado en el que existen de manera simultánea y paralela innumerables valores de entrada $ x=0, 1, 2, 3, \dots $.&lt;/p>
&lt;h3 id="paso-3-exponenciación-modular-cuántica-quantum-modular-exponentiation">Paso 3: Exponenciación modular cuántica (Quantum Modular Exponentiation)
&lt;/h3>&lt;p>A continuación, tomando el estado de superposición del primer registro como entrada, calculamos $ f(x) = a^x \pmod N $ y almacenamos el resultado en el segundo registro.
Dado que este cálculo se ejecuta como una transformación unitaria en el circuito cuántico, el cálculo de $ f(x) $ para todos los $ x $ se realiza &amp;ldquo;simultáneamente y en paralelo (paralelismo cuántico)&amp;rdquo; manteniendo la superposición.&lt;/p>
&lt;p>En este punto, el espacio general del sistema cuántico es:
$ |x, a^x \bmod N\rangle $
que es una enorme superposición de estados.&lt;/p>
&lt;p>Sin embargo, si simplemente medimos (observamos) el segundo registro aquí, un valor aleatorio de $ a^x \bmod N $ se elegirá probabilísticamente, y en conjunto con esto, el $ x $ del primer registro también se fijará a uno solo. Hacer esto equivaldría a calcularlo una vez en una computadora clásica y no nos permitiría encontrar el período $ r $.&lt;/p>
&lt;p>Bajo las reglas de la mecánica cuántica, no podemos mirar directamente el contenido de un estado de superposición. Entonces, ¿cómo extraemos la información global, que es el &amp;ldquo;período&amp;rdquo; de todo el sistema?&lt;/p>
&lt;h3 id="paso-4-transformada-cuántica-de-fourier-qft-quantum-fourier-transform">Paso 4: Transformada Cuántica de Fourier (QFT: Quantum Fourier Transform)
&lt;/h3>&lt;p>La verdadera genialidad del algoritmo de Shor para superar este obstáculo es la aplicación de la &lt;strong>Transformada Cuántica de Fourier (QFT)&lt;/strong> al primer registro.&lt;/p>
&lt;p>Antes de realizar la medición, analizamos las propiedades de onda de la función $ f(x) $. Supongamos que observamos el segundo registro. Asumamos que se obtuvo un valor $ y $. Entonces, el estado del primer registro colapsa en &amp;ldquo;la superposición de todos los $ x $ tal que $ a^x \pmod N = y $&amp;rdquo;.
Los valores de este $ x $ estarán separados por un intervalo del período $ r $ de la forma $ x_0, x_0 + r, x_0 + 2r, x_0 + 3r, \dots $, resultando en un estado discretamente alineado (una especie de distribución de amplitud de probabilidad en forma de peine).&lt;/p>
&lt;p>Aplicamos la Transformada Cuántica de Fourier (QFT) a este estado. Así como la transformada discreta de Fourier clásica convierte una señal en el dominio del tiempo al dominio de la frecuencia, la QFT causa interferencia en las amplitudes de probabilidad del estado cuántico.&lt;/p>
&lt;p>Al aplicar la QFT, debido al efecto de interferencia cuántica, las probabilidades de respuestas incorrectas que no resuenan (están desfasadas) con el período $ r $ se anulan mutuamente y se acercan a cero (interferencia destructiva), y solo se amplifica la probabilidad de la respuesta correcta que tiene la información del período $ r $ (interferencia constructiva).&lt;/p>
&lt;h3 id="paso-5-medición-y-expansión-en-fracciones-continuas-post-procesamiento-clásico">Paso 5: Medición y expansión en fracciones continuas (Post-procesamiento clásico)
&lt;/h3>&lt;p>Si se mide el primer registro después de aplicar la QFT, con una probabilidad muy alta se obtendrá un entero $ c $ muy cercano a la forma $ c \approx \frac{j \cdot 2^n}{r} $ (donde $ j $ es un número entero desconocido y $ 2^n $ es el tamaño del registro).&lt;/p>
&lt;p>Este resultado de medición $ c $ se devuelve a la computadora clásica para crear una fracción $ \frac{c}{2^n} \approx \frac{j}{r} $. Luego, calculando una aproximación utilizando un método matemático llamado &amp;ldquo;expansión en fracciones continuas&amp;rdquo; (Continued fraction expansion), podemos extraer de manera brillante el período $ r $ que está en el denominador.&lt;/p>
&lt;p>Una vez que conocemos $ r $, todo lo que queda es usar la fórmula del Paso 1 para calcular los factores primos de $ N $ y el cifrado RSA estará completamente descifrado.&lt;/p>
&lt;hr>
&lt;h2 id="el-poder-y-los-desafíos-de-las-computadoras-cuánticas-actuales-nisq">El poder y los desafíos de las computadoras cuánticas actuales (NISQ)
&lt;/h2>&lt;p>El algoritmo de Shor es teóricamente perfecto, pero si se pregunta &amp;ldquo;¿Se romperá el cifrado RSA mañana?&amp;rdquo;, la respuesta es claramente &amp;ldquo;no&amp;rdquo;. La razón radica en las limitaciones de la tecnología de hardware de las computadoras cuánticas actuales.&lt;/p>
&lt;h3 id="la-era-nisq-noisy-intermediate-scale-quantum">La era NISQ (Noisy Intermediate-Scale Quantum)
&lt;/h3>&lt;p>En la actualidad nos encontramos en una era llamada &amp;ldquo;NISQ&amp;rdquo;. Los dispositivos NISQ tienen decenas a cientos de cúbits físicos, pero son extremadamente vulnerables al ruido.&lt;/p>
&lt;p>Los cúbits son susceptibles a influencias ambientales externas como el calor y las ondas electromagnéticas, lo que hace que ocurra con frecuencia la &amp;ldquo;decoherencia&amp;rdquo; (pérdida de entrelazamiento cuántico), que destruye el estado cuántico, o los &amp;ldquo;errores de puerta&amp;rdquo; al operar las puertas cuánticas. Si se intenta ejecutar un circuito cuántico muy profundo (con una cantidad masiva de pasos de cálculo) como el algoritmo de Shor, los errores se acumulan durante el cálculo y el resultado final será ruido completo sin significado.&lt;/p>
&lt;h3 id="cúbits-físicos-y-cúbits-lógicos">Cúbits físicos y cúbits lógicos
&lt;/h3>&lt;p>Para resolver este problema de errores, es indispensable la &amp;ldquo;Corrección de errores cuánticos&amp;rdquo; (Quantum Error Correction).
Aunque también se utilizan códigos de corrección de errores en las computadoras clásicas, la corrección de errores cuánticos es muy compleja debido al &amp;ldquo;Teorema de no clonación cuántica&amp;rdquo; que prohíbe copiar estados cuánticos.&lt;/p>
&lt;p>En la corrección de errores cuánticos, se utilizan tecnologías como el &amp;ldquo;Código de superficie&amp;rdquo; (Surface Code) para combinar muchos &amp;ldquo;cúbits físicos&amp;rdquo; ruidosos, y así crear un &amp;ldquo;cúbit lógico&amp;rdquo; ideal y sin errores.&lt;/p>
&lt;p>Teniendo en cuenta las tasas de error actuales, se estima que se necesitarán aproximadamente de 1,000 a 10,000 cúbits físicos para crear un solo cúbit lógico. Esto se denomina la &amp;ldquo;sobrecarga de la corrección de errores&amp;rdquo;.&lt;/p>
&lt;h3 id="cuáles-son-los-recursos-necesarios-para-destruir-rsa-2048">¿Cuáles son los recursos necesarios para destruir RSA-2048?
&lt;/h3>&lt;p>Entonces, para descifrar realmente RSA-2048, ¿cuántos recursos se necesitan para ejecutar el algoritmo de Shor?&lt;/p>
&lt;p>En una estimación de recursos revolucionaria realizada en un artículo de 2021 por Craig Gidney (Google) y Martin Ekerå, utilizando un algoritmo de Shor optimizado y realizando la corrección de errores con código de superficie, se requerirían los siguientes recursos:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Número de cúbits lógicos&lt;/strong> : Aproximadamente 4,096&lt;/li>
&lt;li>&lt;strong>Número de cúbits físicos ** : ** Aproximadamente 20 millones&lt;/strong> (asumiendo una tasa de error de alrededor de $10^{-3}$)&lt;/li>
&lt;li>&lt;strong>Tiempo de cálculo&lt;/strong> : Aproximadamente 8 horas (se requieren de millones a miles de millones de operaciones de puertas físicas)&lt;/li>
&lt;/ul>
&lt;p>Por el contrario, ¿cuál es el nivel alcanzado por el hardware cuántico actual?
A finales de 2023, el procesador cuántico superconductor &amp;ldquo;Condor&amp;rdquo;, anunciado por IBM, tiene 1,121 cúbits. Además, también han aparecido investigaciones innovadoras sobre la generación de cúbits lógicos (como la generación de 48 cúbits lógicos utilizando una computadora cuántica de átomos neutros por la Universidad de Harvard y la empresa QuEra), pero aún no estamos en la etapa en que se puedan ejecutar &amp;ldquo;cálculos perfectos sin ruido&amp;rdquo; de manera continua y prolongada.&lt;/p>
&lt;p>Para escalar desde unos miles de cúbits físicos hasta &lt;strong>20 millones&lt;/strong> de cúbits físicos prácticos (y un sistema interconectado, operando de manera estable a temperaturas criogénicas y capaz de procesar señales de control a ultra alta velocidad) existe un muro de ingeniería tremendo (problemas de cableado, límites de capacidad de enfriamiento y la expansión excesiva de la electrónica de control). Muchos expertos predicen que tomará al menos de 10 a 30 años, o incluso más, lograr una &amp;ldquo;Computadora cuántica tolerante a fallas (FTQC)&amp;rdquo; capaz de descifrar RSA-2048.&lt;/p>
&lt;hr>
&lt;h2 id="la-inminente-amenaza-de-store-now-decrypt-later-y-el-amanecer-de-pqc">La inminente amenaza de &amp;ldquo;Store Now, Decrypt Later&amp;rdquo; y el amanecer de PQC
&lt;/h2>&lt;p>Es prematuro pensar: &amp;ldquo;Si faltan más de 10 años, estamos a salvo&amp;rdquo;. Actualmente existen datos cuyo secreto debe garantizarse durante décadas en el futuro, como la información confidencial del estado, los datos médicos y el diseño de infraestructura a largo plazo.&lt;/p>
&lt;p>Lo que preocupa aquí es el método de ataque &lt;strong>&amp;ldquo;Store Now, Decrypt Later&amp;rdquo; (Almacenar ahora, descifrar después)&lt;/strong> . Estados u organizaciones malintencionadas interceptan todos los datos de comunicaciones cifrados actualmente con RSA o ECC (Criptografía de curva elíptica) y los guardan en sistemas de almacenamiento. Luego, dentro de 10 o 20 años, en el momento en que se complete una poderosa computadora cuántica, utilizarán el algoritmo de Shor para descifrar todos los datos pasados y exponer los secretos.&lt;/p>
&lt;p>Para contrarrestar la amenaza de este desfase temporal, el proceso de estandarización de la &lt;strong>&amp;ldquo;Criptografía Post-Cuántica (PQC: Post-Quantum Cryptography)&amp;rdquo;&lt;/strong> ha avanzado a un ritmo acelerado, centrado principalmente en el NIST (Instituto Nacional de Estándares y Tecnología de EE. UU.).&lt;/p>
&lt;p>PQC es un nuevo algoritmo criptográfico basado en problemas matemáticos que son difíciles de resolver incluso utilizando computadoras cuánticas (es decir, a los que no se puede aplicar el algoritmo de Shor). Los enfoques principales incluyen los siguientes:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Criptografía basada en retículos (Lattice-based cryptography)&lt;/strong> : Basado en el problema LWE (Learning with Errors), entre otros. Es la corriente principal en la estandarización del NIST (Kyber, Dilithium, etc.).&lt;/li>
&lt;li>&lt;strong>Criptografía basada en códigos (Code-based cryptography)&lt;/strong> : Depende de la dificultad del problema de decodificar códigos de corrección de errores.&lt;/li>
&lt;li>&lt;strong>Criptografía multivariante (Multivariate cryptography)&lt;/strong> : Depende de la dificultad de resolver sistemas de ecuaciones cuadráticas con múltiples variables.&lt;/li>
&lt;li>&lt;strong>Firmas basadas en hash (Hash-based signatures)&lt;/strong> : Firmas digitales que dependen únicamente de la seguridad de la función hash.&lt;/li>
&lt;/ul>
&lt;p>Ya se han iniciado las pruebas de implementación y las implementaciones híbridas de PQC en los principales software y plataformas, como Google Chrome y el iMessage de Apple.&lt;/p>
&lt;h2 id="conclusión">Conclusión
&lt;/h2>&lt;p>Las computadoras cuánticas están pasando de ser el sueño del mundo de la ciencia ficción a un desafío de ingeniería en la realidad. El algoritmo de Shor es un gran logro intelectual de la humanidad que fusiona las matemáticas y la mecánica cuántica, pero al mismo tiempo tiene un &amp;ldquo;poder destructivo&amp;rdquo; oculto que puede sacudir los cimientos de nuestra sociedad digital.&lt;/p>
&lt;p>El cifrado RSA no quedará inutilizable inmediatamente mañana. Sin embargo, considerando la evolución de la tecnología cuántica y el riesgo de &amp;ldquo;Store Now, Decrypt Later&amp;rdquo;, la migración masiva en la historia de la criptografía, que es la transición a PQC, ya ha comenzado. Ahora mismo somos testigos de la primera línea de un cambio de paradigma en la seguridad de la información.&lt;/p></description></item><item><title>[Análisis completo] Implementando y entendiendo el algoritmo de descifrado más fuerte 'GNFS' en C++</title><link>http://kenji.blog/es/p/gnfs-cpp-implementation/</link><pubDate>Sat, 05 Sep 2026 13:04:59 +0900</pubDate><guid>http://kenji.blog/es/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álisis completo] Implementando y entendiendo el algoritmo de descifrado más fuerte 'GNFS' en C++" />&lt;h1 id="análisis-completoentendiendo-el-algoritmo-de-descifrado-más-fuerte-gnfs-implementándolo-en-c">【Análisis Completo】Entendiendo el algoritmo de descifrado más fuerte &amp;ldquo;GNFS&amp;rdquo; implementándolo en C++
&lt;/h1>&lt;p>El cifrado &amp;ldquo;RSA&amp;rdquo; es la base que sostiene la Internet moderna. Su robustez depende de la creencia matemática de que &amp;ldquo;factorizar un número compuesto gigante en números primos es virtualmente imposible con las computadoras actuales&amp;rdquo;.&lt;/p>
&lt;p>Sin embargo, la humanidad nunca se rinde. Actualmente, existe el **algoritmo más fuerte y avanzado de la humanidad ** para realizar factorizaciones gigantescas en computadoras clásicas (computadoras normales, no cuánticas). Este es el &lt;strong>&amp;ldquo;General Number Field Sieve (GNFS) o Criba General del Cuerpo de Números&amp;rdquo;&lt;/strong>.&lt;/p>
&lt;p>En este artículo, publicaremos todo el código de implementación que modela estrictamente la lógica computacional más avanzada de GNFS en C++ (usando enteros de precisión múltiple &lt;code>boost::multiprecision&lt;/code> de la biblioteca Boost), y explicaremos a fondo los abismos de la &amp;ldquo;teoría algebraica de números&amp;rdquo; detrás de él.&lt;/p>
&lt;p>Por favor, disfruten del misterio de las matemáticas y del poder de la ciencia computacional que lo domina, junto con el código fuente.&lt;/p>
&lt;hr>
&lt;h2 id="1-gnfs-framework-lógico-de-vanguardia-código-fuente-completo">1. GNFS Framework Lógico de Vanguardia (Código fuente completo)
&lt;/h2>&lt;p>Primero, aquí está la visión general de la implementación de GNFS en C++ que explicaremos. La criba de cuerpo de números real (como CADO-NFS) es un sistema distribuido masivo de cientos de miles de líneas de código, pero este código diseña y modela las &lt;strong>&amp;ldquo;5 tuberías (fases) esenciales&amp;rdquo;&lt;/strong> que componen GNFS en clases, manteniéndolo en una configuración mínima sin perder su 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;/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 enteros de precisión múltiple de 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] General Number Field Sieve (Criba General del Cuerpo de Números) Framework Lógico de Vanguardia
&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 estrictamente las 5 tuberías del GNFS más avanzado utilizado en CADO-NFS, etc.,
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">// como diseño de clases en 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: Selección 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">// Polinomio lado algebraico 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">// Polinomio 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">// Generación del polinomio inicial basado en expansión en base m (En realidad se usa reducción de bases de retículos LLL más avanzada)
&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] Polynomial Selection (Grado &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">// Expansión simple en base m (grado 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">// Aproximación simple de m (sin usar funciones de 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] Completo.&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 (Criba de Retículos)
&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">// En el GNFS moderno, el estándar de facto no es Line Sieve (Criba Lineal), sino
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">// la Criba de Retículos q-Especial (Special-q Lattice Sieving) de Franke-Kleinjung y otros.
&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] Generando Factor Bases (Límite 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;, Límite Algebraico: &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) En realidad realiza generación de primos y filtrado con el 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 activo...&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">// Implementación Mock: La criba de retículos real escanea cientos de GB de espacio de memoria en bloques,
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">&lt;/span> &lt;span class="c1">// mapea pares (a, b) a retículos para cada primo especial q (a = i*q + j*...),
&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 ejecuta un sieving (criba) maximizando la eficiencia de la caché al extremo.
&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">// Añadiendo una relación dummy para la demo
&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; relaciones.&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 (Purga de singletons y mezcla 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 Relaciones...&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. Eliminación de Singletons (eliminación de relaciones con primos que aparecen solo 1 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. Fusión de Cliques (combinación de relaciones para hacer densa una matriz dispersa)
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">&lt;/span> &lt;span class="c1">// En realidad, comprime una matriz de cientos de millones de filas a unos pocos millones 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] Tamaño de la matriz reducido óptimamente.&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: Álgebra Lineal sobre 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">// En los entornos de supercomputadoras recientes, se utiliza como vanguardia el 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 class="c1">// (implementación de Coppersmith) que es más adecuado para computación distribuida que el 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 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">// Repite la operación de producto de matrices dispersas y vectores,
&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 encuentra múltiples vectores solución (kernels) donde 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 dependencias
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">&lt;/span> &lt;span class="c1">// Datos dummy
&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; dependencias lineales (cuadrados perfectos).&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: Raíz Cuadrada Algebraica (Algebraic Square Root)
&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] Computación de Raíz Cuadrada Algebraica...&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 de la raíz cuadrada racional V (operación de enteros simple)
&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 de la raíz cuadrada algebraica gamma (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">// Encuentra el elemento gamma del cuerpo algebraico gigante O_K, y lo mapea al mundo real con el 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">// Asumiendo que se añadieron columnas de Caracteres Cuadráticos (Quadratic Characters) en la Fase 2 y 4
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">&lt;/span> &lt;span class="c1">// para evitar la obstrucción del grupo de clases de ideales y el 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;[ÉXITO] Factor no 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; Otro factor: &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;[FALLO] Solución trivial. Probando la siguiente dependencia...&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">// Pipeline de Ejecución 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 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">// Número compuesto gigante N que queremos factorizar, ej. 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">// Grado del polinomio (para más de 130 dígitos usualmente se selecciona grado 5 a 6)
&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">// Inicialización del pipeline
&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">// Los límites reales son decenas a cientos de millones
&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. Selección 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. Proceso de Criba (Sieving)
&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. Filtrado (Compresión 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 Lineal (Búsqueda del espacio nulo sobre 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 de Raíz Cuadrada Algebraica y 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 SOTA GNFS completado en &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>Entonces, ¿cómo es que este código destruye los muros de la criptografía? Explicaremos los minuciosos algoritmos y las matemáticas avanzadas para cada una de las 5 fases.&lt;/p>
&lt;hr>
&lt;h2 id="2-el-objetivo-final-de-gnfs-x2-equiv-y2-pmod-n">2. El objetivo final de GNFS: $X^2 \equiv Y^2 \pmod N$
&lt;/h2>&lt;p>El objetivo de la mayoría de los algoritmos de factorización gigante moderna, no solo de GNFS, es encontrar un par no trivial $(X, Y)$ que satisfaga la siguiente congruencia:&lt;/p>
$$X^2 \equiv Y^2 \pmod N$$
&lt;p>Esta fórmula significa que &amp;ldquo;los restos al dividir $X^2$ y $Y^2$ por $N$ son iguales&amp;rdquo;. Reorganizando esto:
$X^2 - Y^2 \equiv 0 \pmod N$
En otras palabras, $(X-Y)(X+Y)$ es un múltiplo de $N$.&lt;/p>
&lt;p>Si $X \not\equiv \pm Y \pmod N$ (solución no trivial), existirá un &amp;ldquo;divisor común mayor que 1 y menor que $N$&amp;rdquo; entre $(X-Y)$ y $N$.
Aquí, si usamos el algoritmo de Euclides para calcular &lt;strong>$\gcd(X-Y, N)$&lt;/strong>, podemos encontrar los factores primos de $N$ con mucha facilidad.&lt;/p>
&lt;p>Sin embargo, encontrar estos $X$ e $Y$ es como buscar una aguja en un desierto. Por lo tanto, GNFS adopta el ingenioso enfoque de crear &lt;strong>dos mundos&lt;/strong>, el &amp;ldquo;mundo de los enteros reales&amp;rdquo; y el &amp;ldquo;mundo de los cuerpos algebraicos de los polinomios&amp;rdquo;, y distribuye los cálculos.&lt;/p>
&lt;hr>
&lt;h2 id="3-fase-1-selección-polinomial-polynomial-selection">3. Fase 1: Selección 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) y expansión en 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>El primer paso de GNFS es crear un &amp;ldquo;polinomio mágico&amp;rdquo; que sirva de puente entre los dos mundos.
Para un número gigante $N$, elegimos un entero $m$. Usualmente se elige de tal manera que $m \approx N^{1/d}$ (el código asume un polinomio de grado $d=6$).&lt;/p>
&lt;p>Luego, expandimos $N$ en base $m$ y usamos esos coeficientes para construir el polinomio $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 polinomio $f(x)$ tiene una propiedad extremadamente importante: &lt;strong>&amp;ldquo;al sustituir la variable $x$ con $m$, resulta ser exactamente $N$ ($f(m) = N$)&amp;rdquo;&lt;/strong>. En otras palabras, $f(m) \equiv 0 \pmod N$.
El polinomio en el lado racional se define como $g(x) = x - m$.&lt;/p>
&lt;p>Con esto, el &lt;strong>&amp;ldquo;mundo del cuerpo algebraico $\mathbb{Z}[\alpha]$&amp;rdquo;&lt;/strong> dominado por la raíz $\alpha$ de $f(x)=0$ y el &lt;strong>&amp;ldquo;mundo normal de los racionales (enteros) $\mathbb{Z}$&amp;rdquo;&lt;/strong> quedan firmemente conectados por un &amp;ldquo;homomorfismo de anillos&amp;rdquo; (Homomorphism) de $x \to m$.&lt;/p>
&lt;p>En herramientas de vanguardia como CADO-NFS, el polinomio &amp;ldquo;más conveniente $f(x)$&amp;rdquo; donde los coeficientes no se vuelven extremadamente grandes y es probable que aparezcan primos en pasos posteriores (más fácil que sea liso), se busca durante meses utilizando el algoritmo de KleinJung y el algoritmo de reducción de bases de retículos LLL.&lt;/p>
&lt;hr>
&lt;h2 id="4-fase-2-criba-de-retículos-q-especial-special-q-lattice-sieving">4. Fase 2: Criba de Retículos 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">// mapea pares (a, b) a retículos para cada 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">// y ejecuta un sieving (criba) maximizando la eficiencia de la caché al extremo.
&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>Una vez preparados ambos mundos, el siguiente paso es buscar &amp;ldquo;números lisos&amp;rdquo; (números formados solo por factores primos pequeños) en ambos mundos.
Generamos infinitos pares de enteros $(a, b)$ y calculamos los siguientes dos valores:&lt;/p>
&lt;ol>
&lt;li>&lt;strong>Valor racional&lt;/strong>: $a - bm$&lt;/li>
&lt;li>&lt;strong>Norma algebraica&lt;/strong>: $b^d f(a/b)$&lt;/li>
&lt;/ol>
&lt;p>El propósito de GNFS es recolectar de decenas a cientos de millones de estos &lt;strong>&amp;ldquo;pares donde tanto el valor racional como el algebraico pueden descomponerse completamente en factores primos pequeños (Relation: relaciones)&amp;rdquo;&lt;/strong>.&lt;/p>
&lt;p>En los primeros GNFS, se utilizaba una &amp;ldquo;Criba Lineal (Line Sieve)&amp;rdquo; que alineaba $(a, b)$ en el plano $xy$ y dividía por primos desde un extremo. Sin embargo, esto causaba muchas fallas de caché al acceder a la memoria en todas partes, y tenía la debilidad de ser muy lento.&lt;/p>
&lt;p>Por lo tanto, el código de vanguardia actual utiliza un método llamado &lt;strong>&amp;ldquo;Criba de Retículos q-Especial (Special-q Lattice Sieve)&amp;rdquo;&lt;/strong>.
Se fija un número primo $q$ moderadamente grande y solo se consideran &amp;ldquo;los pares $(a, b)$ donde el valor algebraico siempre es divisible por $q$&amp;rdquo;. Dado que estos $(a, b)$ forman un &amp;ldquo;retículo (Lattice)&amp;rdquo; en el plano, el tamaño del salto de la dirección calculada es constante y se ajusta perfectamente a las memorias caché L1/L2 de la CPU.
Gracias a la introducción de esta criba de retículos, la velocidad de cálculo de GNFS ha mejorado drásticamente.&lt;/p>
&lt;hr>
&lt;h2 id="5-fase-3-filtrado-filtering">5. Fase 3: Filtrado (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. Eliminación de Singletons (eliminación de relaciones con primos que aparecen solo 1 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. Fusión de Cliques (combinación de relaciones para hacer densa una matriz dispersa)
&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>Cientos de millones de relaciones recolectadas durante meses por computadoras de todo el mundo en la Fase 2. Sin embargo, si metemos esto directamente en el siguiente &amp;ldquo;paso de resolución de ecuaciones simultáneas (cálculo matricial)&amp;rdquo;, la memoria de la supercomputadora estallará.&lt;/p>
&lt;p>Por eso, se realiza un proceso de supercompresión de la matriz llamado &lt;strong>Filtering (Filtrado)&lt;/strong>.&lt;/p>
&lt;ol>
&lt;li>
&lt;p>&lt;strong>Eliminación de Singletons (Singleton removal / Purga de singularidades)&lt;/strong>
Suponga que un primo gigante $p$ aparece &amp;ldquo;solo 1 vez&amp;rdquo; entre cientos de millones de relaciones. Dado que nuestro objetivo es &amp;ldquo;hacer que los exponentes de todos los primos sean pares (múltiplos de 2)&amp;rdquo;, un primo que aparece solo 1 vez nunca podrá hacerse par.
Por lo tanto, las relaciones que contienen ese primo se eliminan instantáneamente (se purgan) por considerarse &amp;ldquo;basura inútil&amp;rdquo;. A medida que esto ocurre en cadena, los datos de cientos de millones de filas se reducen rápidamente.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>Fusión de Cliques (Clique merging)&lt;/strong>
Además, multiplicar (sumar) relaciones que comparten un número primo específico reduce el número de filas al tiempo que comprime una matriz dispersa en un estado más denso (se utiliza una técnica similar a la búsqueda de cliques en la teoría de grafos).&lt;/p>
&lt;/li>
&lt;/ol>
&lt;p>Con esta optimización, la enorme matriz dispersa se comprime drásticamente a un tamaño computable.&lt;/p>
&lt;hr>
&lt;h2 id="6-fase-4-álgebra-lineal-sobre-gf2-método-block-wiedemann">6. Fase 4: Álgebra Lineal sobre 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">// Repite la operación de producto de matrices dispersas y vectores,
&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 encuentra múltiples vectores solución (kernels) donde 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>Por fin, el núcleo del rompecabezas.
Multiplicamos las relaciones recolectadas para buscar &lt;strong>&amp;ldquo;combinaciones donde los exponentes de los factores primos sean todos números pares&amp;rdquo;&lt;/strong>.&lt;/p>
&lt;p>Matemáticamente, esto no es más que encontrar un vector solución $x$ (espacio nulo/kernel) usando una matriz gigante $M$ cuyos elementos son &amp;ldquo;par/impar (es decir, 0 o 1)&amp;rdquo; de los exponentes de cada primo y un vector $x$ que indica qué relaciones utilizar:
&lt;strong>$M \cdot x \equiv 0 \pmod 2$&lt;/strong>&lt;/p>
&lt;p>Tenemos que resolver un sistema de ecuaciones de una matriz de tamaño absurdo de millones de filas × millones de columnas. Con el método normal de eliminación de Gauss, la complejidad sería $O(N^3)$, y el cálculo no terminaría hasta el final del universo.&lt;/p>
&lt;p>Por lo tanto, la implementación más avanzada utiliza el &lt;strong>&amp;ldquo;Método Block Wiedemann (Bloque Wiedemann)&amp;rdquo;&lt;/strong>.
Este es un tipo de método del subespacio de Krylov que aprovecha el hecho de que la matriz $M$ es &amp;ldquo;extremadamente dispersa (casi toda ceros)&amp;rdquo; y deriva la solución iterando la multiplicación de matriz y vector.
A diferencia del antiguo método Block Lanczos, el método Block Wiedemann puede dividir completamente el proceso de cálculo en múltiples grupos, por lo que ejerce un poder abrumador en la computación en nube distribuida moderna y en la computación paralela en supercomputadoras.&lt;/p>
&lt;hr>
&lt;h2 id="7-fase-5-raíz-cuadrada-algebraica-algebraic-square-root-y-el-colapso-de-la-criptografía">7. Fase 5: Raíz Cuadrada Algebraica (Algebraic Square Root) y el Colapso de la Criptografía
&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 de la raíz cuadrada racional V
&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 de la raíz cuadrada algebraica gamma
&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>A través de los cálculos matriciales de la Fase 4, hemos obtenido un &amp;ldquo;conjunto de relaciones $S$ que al multiplicarse hacen que todos los factores primos tengan potencias pares&amp;rdquo;.
Con esto, podemos construir el &amp;ldquo;cuadrado&amp;rdquo; en ambos mundos, el racional y el algebraico.&lt;/p>
&lt;p>Para el lado racional, es simplemente una multiplicación de enteros, por lo que calcular la raíz cuadrada $V$ es fácil.
&lt;/p>
$$V^2 = \prod_{S} (a - bm)$$
&lt;p>&lt;strong>Sin embargo, el verdadero infierno reside en el &amp;ldquo;lado algebraico&amp;rdquo;.&lt;/strong>
En el mundo del cuerpo algebraico $\mathbb{Z}[\alpha]$, dado que la factorización única de factores primos no es válida, hemos estado calculando usando ideales. Lo único que garantiza el cálculo matricial es que &lt;strong>&amp;ldquo;es el cuadrado de un ideal&amp;rdquo;, y no se garantiza que sea &amp;ldquo;el cuadrado de un elemento ($\gamma^2$)&amp;rdquo;&lt;/strong>.&lt;/p>
&lt;p>Aquí se levantan poderosos muros en la teoría algebraica de números llamados &amp;ldquo;obstrucción del grupo de clases de ideales&amp;rdquo; y &amp;ldquo;obstrucción del grupo de unidades&amp;rdquo;.
Para romper este muro, GNFS utiliza la magia llamada &lt;strong>&amp;ldquo;Caracteres Cuadráticos (Quadratic Characters)&amp;rdquo;&lt;/strong>.
A la matriz de la Fase 4, se añaden secretamente de antemano columnas de residuos cuadráticos (Símbolo de Legendre) para decenas de ideales primos especiales. Con esto, hay una probabilidad abrumadora de que el conjunto $S$ encontrado evite la obstrucción y forme con éxito el &amp;ldquo;cuadrado del elemento verdadero $\gamma^2$&amp;rdquo;.&lt;/p>
&lt;p>El proceso de encontrar $\gamma$ (raíz cuadrada algebraica) se calcula utilizando algoritmos muy complejos como el método de Montgomery.&lt;/p>
&lt;p>Y por fin, la raíz cuadrada algebraica $\gamma$ es teletransportada al mundo real (sustituyendo $m$ por $x$) mediante el homomorfismo de anillos $\phi$, y obtenemos $Y$.
Si ponemos el $V$ del lado racional directamente como $X$, la ecuación absoluta que hemos estado buscando finalmente se completa.&lt;/p>
&lt;p>&lt;strong>$$X^2 \equiv Y^2 \pmod N$$&lt;/strong>&lt;/p>
&lt;p>Solo queda calcular $\gcd(X-Y, N)$. En el momento en que se ejecuta el proceso de 0.001 segundos y el factor no trivial se imprime en la pantalla, el cifrado RSA, que se jactaba de ser inexpugnable, colapsa por completo.&lt;/p>
&lt;hr>
&lt;h2 id="conclusión">Conclusión
&lt;/h2>&lt;p>GNFS no es simplemente una técnica de programación.
Es el cristal del intelecto humano que ha dominado el &amp;ldquo;abismo de las matemáticas puras&amp;rdquo; como el álgebra abstracta, la teoría de anillos y los grupos de clases de ideales, con la &amp;ldquo;ingeniería extrema&amp;rdquo; como la arquitectura distribuida de supercomputadoras y la optimización de cachés.&lt;/p>
&lt;p>La información de chat y de tarjetas de crédito que enviamos de manera informal está protegida sobre una defensa matemática tan astronómica.&lt;/p>
&lt;p>Esperamos que, a través de este framework de C++, hayan sentido el &amp;ldquo;romanticismo de las matemáticas y la informática&amp;rdquo; detrás del algoritmo de descifrado más avanzado.&lt;/p></description></item><item><title>La verdadera estructura matemática de la Criba General del Cuerpo de Números (GNFS)</title><link>http://kenji.blog/es/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/es/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 La verdadera estructura matemática de la Criba General del Cuerpo de Números (GNFS)" />&lt;h1 id="la-verdadera-estructura-matemática-de-la-criba-general-del-cuerpo-de-números-gnfs">La verdadera estructura matemática de la Criba General del Cuerpo de Números (GNFS)
&lt;/h1>&lt;p>El objetivo final de GNFS es encontrar $X, Y$ tales que $X^2 \equiv Y^2 \pmod N$.
Para lograr esto, los matemáticos construyeron un puente entre el &lt;strong>&amp;ldquo;mundo real de los números enteros&amp;rdquo;&lt;/strong> y el &lt;strong>&amp;ldquo;mundo de los cuerpos algebraicos&amp;rdquo;&lt;/strong>. Ese puente es el &amp;ldquo;homomorfismo&amp;rdquo;.&lt;/p>
&lt;h2 id="etapa-1-conectando-mundos-con-el-homomorfismo-homomorphism">Etapa 1: Conectando mundos con el &amp;ldquo;Homomorfismo&amp;rdquo; (Homomorphism)
&lt;/h2>&lt;h3 id="1-selección-de-polinomios-y-definición-de-raíces">1. Selección de polinomios y definición de raíces
&lt;/h3>&lt;p>Para un número compuesto gigante $N$, elegimos un entero $m$ y un polinomio $f(x)$ de manera que $f(m) \equiv 0 \pmod N$.
(Ejemplo: expandimos $N$ en base $m$, y formamos $f(x)$ a partir de sus coeficientes. Aquí asumimos que $f(x)$ es irreducible sobre el cuerpo de los números racionales $\mathbb{Q}$ (no se puede factorizar más)).&lt;/p>
&lt;p>A continuación, definimos una de las &amp;ldquo;raíces complejas&amp;rdquo; de la ecuación $f(x) = 0$ como $\alpha$.
Naturalmente, $f(\alpha) = 0$. $\alpha$ no es un entero, sino un número complejo (número algebraico) que puede incluir raíces o números imaginarios.&lt;/p>
&lt;h3 id="2-construcción-de-anillos-rings-y-homomorfismos">2. Construcción de Anillos (Rings) y Homomorfismos
&lt;/h3>&lt;p>Aquí preparamos dos &amp;ldquo;anillos&amp;rdquo; matemáticos (mundos donde se definen la suma y la multiplicación):&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Mundo A: $\mathbb{Z}[\alpha]$&lt;/strong> (el anillo de enteros algebraicos que contiene a $\alpha$)
Un mundo de números expresados en la forma $a + b\alpha + c\alpha^2 + \dots$.&lt;/li>
&lt;li>&lt;strong>Mundo B: $\mathbb{Z}/N\mathbb{Z}$&lt;/strong> (el anillo de restos módulo $N$)
Un mundo de congruencias (módulos) compuesto solo por números enteros del $0$ al $N-1$.&lt;/li>
&lt;/ul>
&lt;p>Aquí, definimos el siguiente mapeo (función) $\phi$ del Mundo A al Mundo B:
&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 mapeo $\phi$ es una operación mágica que reemplaza exactamente la variable $\alpha$ del Mundo A por el entero $m$ del Mundo B.
Este $\phi$ tiene una propiedad extremadamente poderosa llamada &lt;strong>&amp;ldquo;Homomorfismo de Anillos&amp;rdquo; (Ring Homomorphism)&lt;/strong>.
Un homomorfismo es la propiedad de &lt;strong>&amp;ldquo;transportarse a otro mundo sin destruir la estructura de sumas y multiplicaciones&amp;rdquo;&lt;/strong>. Es decir, se cumplen las siguientes ecuaciones:&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>Qué significa esto. Si podemos crear un &lt;strong>&amp;ldquo;cuadrado ($\gamma^2$)&amp;rdquo;&lt;/strong> de algún elemento complejo $\gamma$ en el &amp;ldquo;Mundo A (el mundo de $\alpha$)&amp;rdquo;, al transportarlo al &amp;ldquo;Mundo B (el mundo de los restos)&amp;rdquo; con $\phi$, ** la forma del cuadrado $\phi(\gamma)^2$ se conservará perfectamente**.&lt;/p>
&lt;hr>
&lt;h2 id="etapa-2-el-colapso-de-la-factorización-prima-y-el-nacimiento-del-ideal-ideal">Etapa 2: El colapso de la factorización prima y el nacimiento del &amp;ldquo;Ideal&amp;rdquo; (Ideal)
&lt;/h2>&lt;p>Queremos recolectar muchos elementos apropiados $(a - b\alpha)$ dentro del Mundo A ($\mathbb{Z}[\alpha]$) y multiplicarlos juntos para crear un &amp;ldquo;cuadrado perfecto&amp;rdquo;.
Normalmente, factorizaríamos cada $(a - b\alpha)$ en &amp;ldquo;factores primos&amp;rdquo; y los combinariamos para que los exponentes de los números primos sean todos pares (resolviéndolo con matrices) para formar un cuadrado.&lt;/p>
&lt;p>&lt;strong>Sin embargo, aquí nos encontramos con un muro algebraico desesperante.&lt;/strong>
En un mundo de cuerpos algebraicos como $\mathbb{Z}[\alpha]$, &lt;strong>se derrumba la &amp;ldquo;unicidad de la factorización prima&amp;rdquo; (la idea que nos enseñaron de que cualquier número puede expresarse como el producto de números primos de una sola manera)&lt;/strong>.&lt;/p>
&lt;p>(Ejemplo: en cierto mundo de cuerpos algebraicos, $6 = 2 \times 3$, y al mismo tiempo $6 = (1+\sqrt{-5}) \times (1-\sqrt{-5})$, haciendo imposible saber cuáles son los verdaderos primos).&lt;/p>
&lt;p>Si la factorización prima no es única, el rompecabezas de &amp;ldquo;contar el número de primos para hacerlos pares&amp;rdquo; (la criba) es en principio imposible de ejecutar.&lt;/p>
&lt;h3 id="la-salvación-de-kummer-y-dedekind-el-ideal">La salvación de Kummer y Dedekind: el &amp;ldquo;Ideal&amp;rdquo;
&lt;/h3>&lt;p>Lo que salvó a las matemáticas de este colapso fue el concepto de &lt;strong>&amp;ldquo;Ideal&amp;rdquo; (número ideal)&lt;/strong> creado por los matemáticos del siglo XIX.
Al pensar en el &amp;ldquo;conjunto de múltiplos (ideal)&amp;rdquo; generado por un elemento en lugar del elemento en sí, volvieron a hacer posible la factorización prima.&lt;/p>
&lt;p>En el anillo de enteros de un cuerpo algebraico $\mathcal{O}_K$ (un anillo más completo que contiene a $\mathbb{Z}[\alpha]$), aunque los elementos no puedan ser factorizados de manera única, se ha demostrado que &lt;strong>&amp;ldquo;los ideales siempre pueden ser factorizados de forma única como un producto de &amp;lsquo;ideales primos ($\mathfrak{p}$)&amp;rsquo;&amp;rdquo;&lt;/strong>.&lt;/p>
&lt;p>Por lo tanto, en GNFS, no descomponemos el elemento $(a - b\alpha)$ en sí, sino que hacemos la &lt;strong>factorización en ideales primos del ideal principal $\langle a - b\alpha \rangle$&lt;/strong> que este genera.&lt;/p>
&lt;hr>
&lt;h2 id="etapa-3-norma-norm-y-las-dos-cribas-sieves">Etapa 3: Norma (Norm) y las dos Cribas (Sieves)
&lt;/h2>&lt;p>Entonces, ¿cómo sabemos en qué ideales primos se descompone el ideal $\langle a - b\alpha \rangle$?
Aquí utilizamos una función llamada &lt;strong>&amp;ldquo;Norma&amp;rdquo; (Norm)&lt;/strong>. La norma es una función que convierte los elementos complejos de los cuerpos algebraicos en &amp;ldquo;números enteros reales ordinarios $\mathbb{Z}$&amp;rdquo;.&lt;/p>
&lt;p>La norma del elemento $(a - b\alpha)$ se calcula mediante un simple cálculo polinomial $b^d f(a/b)$ (donde $d$ es el grado de $f(x)$).&lt;/p>
&lt;p>Por teoremas algebraicos, sabemos que &lt;strong>&amp;ldquo;si la norma de un ideal se descompone completamente en primos pequeños (es un número liso o &amp;lsquo;smooth&amp;rsquo;), entonces su ideal original también se descompone completamente en ideales primos pequeños&amp;rdquo;&lt;/strong>.&lt;/p>
&lt;p>Por lo tanto, GNFS calcula simultáneamente lo siguiente para una gran cantidad de pares de enteros $(a, b)$, y recolecta solo los pares donde ambos son &amp;ldquo;números lisos&amp;rdquo;:&lt;/p>
&lt;ol>
&lt;li>&lt;strong>Criba Racional (Rational Sieve)&lt;/strong>: $a - bm$ (valor en el mundo real)&lt;/li>
&lt;li>&lt;strong>Criba Algebraica (Algebraic Sieve)&lt;/strong>: $b^d f(a/b)$ (norma en el mundo del cuerpo algebraico)&lt;/li>
&lt;/ol>
&lt;p>Recolecta decenas de millones de pares $(a, b)$ donde ambos son lisos, resuelve los datos de factorización prima de los ideales (cuántos ideales primos están incluidos) como una matriz gigante (álgebra lineal sobre GF(2)), y encuentra un conjunto de pares $S$ de manera que &amp;ldquo;cuando se multiplican, los exponentes de todos los ideales primos se vuelven pares&amp;rdquo;.&lt;/p>
&lt;hr>
&lt;h2 id="etapa-4-dos-obstáculos-que-se-interponen-y-el-grupo-de-clases-de-ideales">Etapa 4: Dos &amp;ldquo;Obstáculos&amp;rdquo; que se interponen y el Grupo de Clases de Ideales
&lt;/h2>&lt;p>Mediante cálculos de matrices, encontramos que multiplicar todos los ideales de $(a - b\alpha)$ que pertenecen al conjunto $S$ resulta en el cuadrado de cierto ideal $I$.
&lt;/p>
$$\prod_{S} \langle a - b\alpha \rangle = I^2$$
&lt;p>&lt;strong>Sin embargo, esto aún no ha terminado. Aquí es donde se encuentra el muro matemático más profundo y difícil de GNFS.&lt;/strong>&lt;/p>
&lt;p>Lo que finalmente queremos no es el &amp;ldquo;cuadrado de un ideal&amp;rdquo;, sino el &lt;strong>&amp;ldquo;cuadrado de un elemento ($\gamma^2$)&amp;rdquo;&lt;/strong> para sustituirlo en el mapeo $\phi$.
El hecho de que se haya convertido en el cuadrado de un ideal no significa que el elemento en sí sea un cuadrado. Aquí existen &lt;strong>dos obstáculos matemáticos (Obstructions) formidables&lt;/strong>.&lt;/p>
&lt;h3 id="obstáculo-1-el-muro-del-grupo-de-clases-de-ideales-ideal-class-group">Obstáculo 1: El muro del Grupo de Clases de Ideales (Ideal Class Group)
&lt;/h3>&lt;p>El ideal $I$ no es necesariamente un &amp;ldquo;ideal generado por un solo elemento (ideal principal)&amp;rdquo;.
Es imposible extraer un elemento concreto $\gamma$ de un ideal que no sea principal.&lt;/p>
&lt;p>Aquí entra el concepto de &lt;strong>&amp;ldquo;Grupo de Clases de Ideales&amp;rdquo; (Class Group, $Cl_K$)&lt;/strong>. El grupo de clases de ideales es un grupo que mide &amp;ldquo;cuántos ideales que no son principales existen en ese mundo del cuerpo algebraico (qué tan destruida está la unicidad de la factorización prima)&amp;rdquo;.
Incluso si $\prod \langle a - b\alpha \rangle$ se convierte en $I^2$, si $I$ no es el elemento identidad (ideal principal) en el grupo de clases de ideales, no podemos retroceder al cuadrado de un elemento.&lt;/p>
&lt;h3 id="obstáculo-2-el-muro-del-grupo-de-unidades-unit-group">Obstáculo 2: El muro del Grupo de Unidades (Unit Group)
&lt;/h3>&lt;p>Supongamos que por suerte $I$ era un ideal principal $\langle \gamma \rangle$.
Entonces tenemos que $\prod \langle a - b\alpha \rangle = \langle \gamma^2 \rangle$.
Podrías pensar &amp;ldquo;¡Genial, el elemento también es un cuadrado!&amp;rdquo;, pero estarías muy equivocado.&lt;/p>
&lt;p>Que los ideales (conjuntos de múltiplos) sean iguales no significa que los elementos sean completamente iguales. Siempre ocurre una desviación por una &lt;strong>&amp;ldquo;Unidad&amp;rdquo; (Unit: un número cuyo inverso multiplicativo también es entero. Por ejemplo, 1 o -1)&lt;/strong>.
Es decir, la verdadera igualdad de los elementos es la siguiente:
&lt;/p>
$$\prod_{S} (a - b\alpha) = u \cdot \gamma^2$$
&lt;p>
($u$ es un elemento del grupo de unidades $U_K$)&lt;/p>
&lt;p>A menos que esta unidad $u$ sea en sí misma un cuadrado (elemento cuadrático) de algo, el lado izquierdo nunca podrá ser un &amp;ldquo;cuadrado perfecto de un elemento&amp;rdquo;.&lt;/p>
&lt;hr>
&lt;h2 id="etapa-5-la-magia-de-adleman-caracteres-cuadráticos-quadratic-characters">Etapa 5: La magia de Adleman, &amp;ldquo;Caracteres Cuadráticos&amp;rdquo; (Quadratic Characters)
&lt;/h2>&lt;p>Los obstáculos del grupo de clases de ideales y del grupo de unidades. ¿Cómo los superamos?
Aquí es donde entra la genial técnica introducida por el criptógrafo Leonard Adleman (la &amp;ldquo;A&amp;rdquo; de RSA) y otros: los &lt;strong>&amp;ldquo;Caracteres Cuadráticos&amp;rdquo; (Quadratic Characters)&lt;/strong>.&lt;/p>
&lt;p>Para determinar &amp;ldquo;si un elemento es un cuadrado perfecto dentro de un cuerpo algebraico&amp;rdquo;, utilizamos una versión para cuerpos algebraicos del símbolo de Legendre (residuo cuadrático).
En la matriz gigante anterior (el rompecabezas para hacer que el número de ideales primos sea par), &lt;strong>añadimos en secreto unas cuantas decenas de condiciones (columnas) adicionales para que &amp;ldquo;los caracteres cuadráticos para algunos ideales primos especiales $\mathfrak{q}$ también sean todos $1$ (pares)&amp;rdquo;&lt;/strong>.&lt;/p>
&lt;p>Cuando encontramos un conjunto $S$ que incluso satisface estas condiciones adicionales mediante el cálculo de matrices, por los teoremas profundos de la teoría de números algebraicos, se garantiza que &lt;strong>&amp;ldquo;los obstáculos tanto del grupo de clases de ideales como del grupo de unidades desaparecerán naturalmente con una probabilidad abrumadora&amp;rdquo;&lt;/strong>.&lt;/p>
&lt;p>Con esto, por fin obtenemos la verdadera ecuación.
&lt;/p>
$$\prod_{S} (a - b\alpha) = \gamma^2$$
&lt;hr>
&lt;h2 id="etapa-final-la-fusión-de-los-mundos-y-el-colapso-criptográfico">Etapa Final: La fusión de los mundos y el colapso criptográfico
&lt;/h2>&lt;p>Por fin, todas las piezas del rompecabezas están en su lugar.&lt;/p>
&lt;p>&lt;strong>[Elementos del Mundo del Cuerpo Algebraico (Mundo A)]&lt;/strong>
$\gamma^2 = \prod (a - b\alpha)$
(De aquí usamos un algoritmo de raíz cuadrada para encontrar $\gamma$)&lt;/p>
&lt;p>&lt;strong>[Elementos del Mundo Real (Mundo de los Números Racionales)]&lt;/strong>
$V^2 = \prod (a - bm)$
(Como esta es una simple multiplicación de enteros, podemos encontrar la raíz cuadrada $V$ normalmente)&lt;/p>
&lt;p>Ahora, es el turno del puente mágico que construimos al principio: &lt;strong>el homomorfismo $\phi$&lt;/strong>.
Transportamos el elemento $\gamma$ del Mundo A al Mundo B (el mundo de restos módulo $N$) usando $\phi$ (el mapeo que sustituye $\alpha$ por $m$).
&lt;/p>
$$Y = \phi(\gamma) \pmod N$$
&lt;p>Por otro lado, tomamos la $V$ que creamos en el mundo real directamente al mundo de los restos y la llamamos $X$.
&lt;/p>
$$X = V \pmod N$$
&lt;p>Debido a la propiedad de &amp;ldquo;conservar estructuras&amp;rdquo; del homomorfismo, la relación de los cuadrados que se sostenía en el Mundo A se preserva perfectamente en el Mundo B (el mundo módulo $N$).
Además, dado que el par original $(a, b)$ fue creado correspondientemente en la forma $a - b\alpha$ y $a - bm$, estas $X$ e $Y$ chocan en el mundo módulo $N$ y producen la siguiente igualdad absoluta:&lt;/p>
&lt;p>&lt;strong>$$X^2 \equiv Y^2 \pmod N$$&lt;/strong>&lt;/p>
&lt;p>El resto es rezar para que $X$ e $Y$ no sean una solución trivial ($X \equiv \pm Y$), y calcular:
&lt;strong>$\gcd(X - Y, N)$&lt;/strong>&lt;/p>
&lt;p>Si es una solución no trivial, el algoritmo de Euclides correrá en 0.001 segundos e imprimirá en la pantalla de salida el corazón del cifrado RSA: los primos secretos $p$ y $q$.&lt;/p>
&lt;hr>
&lt;p>Esta es la &lt;strong>forma completa de la &amp;ldquo;Criba General del Cuerpo de Números (GNFS)&amp;rdquo;&lt;/strong>, que reúne lo mejor de las matemáticas modernas.&lt;/p></description></item><item><title>¿Qué es la 'Criba General del Cuerpo de Números (GNFS)', la matemática más fuerte de la humanidad que rompe el cifrado de Internet?</title><link>http://kenji.blog/es/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/es/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 ¿Qué es la 'Criba General del Cuerpo de Números (GNFS)', la matemática más fuerte de la humanidad que rompe el cifrado de Internet?" />&lt;h1 id="qué-es-la-criba-general-del-cuerpo-de-números-gnfs-las-matemáticas-más-fuertes-de-la-humanidad-que-rompen-el-cifrado-de-internet">¿Qué es la &amp;ldquo;Criba General del Cuerpo de Números (GNFS)&amp;rdquo;, las matemáticas más fuertes de la humanidad que rompen el cifrado de Internet?
&lt;/h1>&lt;p>El Internet que usamos todos los días. Los mensajes de LINE, YouTube, las compras en Amazon, todas las comunicaciones están protegidas por &amp;ldquo;cifrado&amp;rdquo;.
Actualmente, el representante del cifrado más utilizado en todo el mundo es el &amp;ldquo;Cifrado RSA&amp;rdquo;.&lt;/p>
&lt;p>La clave de la defensa del cifrado RSA es muy simple. Utiliza la propiedad matemática de que &lt;strong>&amp;ldquo;la factorización de números primos gigantescos no puede ser resuelta ni siquiera por computadoras&amp;rdquo;&lt;/strong>.
Por ejemplo, si es &amp;ldquo;15&amp;rdquo;, se sabe inmediatamente que es &amp;ldquo;3 × 5&amp;rdquo;, pero en el momento en que esto se convierte en un &amp;ldquo;número de 270 dígitos&amp;rdquo;, incluso reuniendo las supercomputadoras de todo el mundo llevaría cientos de millones de años resolverlo.&lt;/p>
&lt;p>Sin embargo, los matemáticos tampoco se han quedado callados. Para romper este cifrado inexpugnable, la humanidad ha creado un algoritmo (procedimiento de cálculo) parecido a la magia llamado &lt;strong>&amp;ldquo;Criba General del Cuerpo de Números (GNFS: General Number Field Sieve)&amp;rdquo;&lt;/strong>.&lt;/p>
&lt;p>En este artículo, sin usar términos técnicos en absoluto, explicaremos paso a paso y de manera completa el truco por el cual este &amp;ldquo;algoritmo más fuerte de la humanidad&amp;rdquo; rompe el cifrado, solo con conocimientos de &lt;strong>matemáticas de secundaria (factorización de primos, álgebra, máximo común divisor)&lt;/strong>!&lt;/p>
&lt;hr>
&lt;h2 id="capítulo-1-el-objetivo-de-descifrar-el-código-es-la-fórmula-de-tercer-año-de-secundaria">Capítulo 1: El objetivo de descifrar el código es &amp;ldquo;la fórmula de tercer año de secundaria&amp;rdquo;
&lt;/h2>&lt;p>El mayor ataque especial para enfrentar la factorización de números primos gigantes. Es esta fórmula que se aprende en tercer año de secundaria.&lt;/p>
&lt;blockquote>
&lt;p>&lt;strong>$X^2 - Y^2 = (X + Y)(X - Y)$&lt;/strong>&lt;/p>
&lt;/blockquote>
&lt;p>Puede que pienses: &amp;ldquo;¿Eh, se puede romper un cifrado con una fórmula tan básica?&amp;rdquo;. Sin embargo, esta es precisamente la llave maestra que lo revela todo.&lt;/p>
&lt;p>El objetivo principal para romper el cifrado es, para un número gigante $N$,
encontrar &lt;strong>&amp;ldquo;números ($X$ e $Y$) cuyo residuo al dividir $X^2$ e $Y^2$ por $N$ sea el mismo&amp;rdquo;&lt;/strong>.&lt;/p>
&lt;h3 id="por-qué-se-puede-descifrar-el-código-si-el-residuo-es-el-mismo">¿Por qué se puede descifrar el código si &amp;ldquo;el residuo es el mismo&amp;rdquo;?
&lt;/h3>&lt;p>Supongamos que el &amp;ldquo;residuo al dividir por $N$&amp;rdquo; de dos números, $X^2$ e $Y^2$, es el mismo.
Que el residuo sea el mismo significa que existe la regla de que &lt;strong>la resta &amp;ldquo;$X^2 - Y^2$&amp;rdquo; siempre se divide exactamente por $N$ (es un múltiplo de $N$)&lt;/strong>.&lt;/p>
&lt;p>Aquí, supongamos que el número gigante $N$ usado en el cifrado está hecho por la multiplicación de dos números primos secretos ($p$ y $q$) ($N = p \times q$).&lt;/p>
&lt;p>Al factorizar $X^2 - Y^2$, se convierte en &lt;strong>$(X - Y)(X + Y)$&lt;/strong>.
El hecho de que esto sea un múltiplo de $N$ significa que en algún lugar de esta multiplicación están escondidos los números primos secretos $p$ y $q$.&lt;/p>
&lt;p>Aquí ocurre un milagro.
La probabilidad de que los dos números primos $p$ y $q$ se separen en habitaciones diferentes, &lt;strong>&amp;quot;$p$ va a la habitación de $(X - Y)$&amp;quot; y &amp;ldquo;$q$ va a la habitación de $(X + Y)$&amp;rdquo;&lt;/strong>, es matemáticamente del ** 50% (un medio)**.&lt;/p>
&lt;p>Con solo el número primo $p$ entrando en la habitación de $(X - Y)$, calculemos el &lt;strong>&amp;ldquo;máximo común divisor (la pieza común más grande)&amp;rdquo;&lt;/strong> de $(X - Y)$ y $N$.&lt;/p>
&lt;ul>
&lt;li>Contenido de $(X - Y)$ = $p \times$ algún número&lt;/li>
&lt;li>Contenido de $N$ = $p \times q$
¡La única pieza común es &lt;strong>&amp;quot;$p$&amp;quot;&lt;/strong>!&lt;/li>
&lt;/ul>
&lt;p>Es decir, en el momento en que se calcula el máximo común divisor, el número primo oculto $p$ cae, ¡y el cifrado se descifra por completo! (*El máximo común divisor se puede calcular en un instante incluso en un teléfono inteligente si usas el &amp;ldquo;Algoritmo de Euclides&amp;rdquo;).&lt;/p>
&lt;p>&lt;strong>[Breve columna: ¿Por qué al cuadrado? ¿No se puede al cubo o al doble?]&lt;/strong>&lt;/p>
&lt;blockquote>
&lt;p>Si es &amp;ldquo;$2X - 2Y$&amp;rdquo;, se convierte en $2(X - Y)$ y como solo hay una habitación, no se pueden separar los números primos. Si es &amp;ldquo;$X^3 - Y^3$&amp;rdquo;, el tamaño de las habitaciones se desequilibra y el cálculo se vuelve innecesariamente pesado. Para separar los números primos en dos, la opción más eficiente que se divide bellamente en dos habitaciones es &amp;ldquo;al cuadrado&amp;rdquo;.&lt;/p>
&lt;/blockquote>
&lt;hr>
&lt;h2 id="capítulo-2-cómo-buscar-x-e-y-el-rompecabezas-de-recolectar-tarjetas-de-números-primos">Capítulo 2: ¿Cómo buscar X e Y? &amp;ldquo;El rompecabezas de recolectar tarjetas de números primos&amp;rdquo;
&lt;/h2>&lt;p>Ya sabemos el objetivo. Sin embargo, incluso si buscas al azar &amp;ldquo;$X^2$ e $Y^2$ que tengan el mismo residuo&amp;rdquo;, no lo encontrarás hasta que se acabe la vida útil del universo.
Por eso, los matemáticos idearon un método genial llamado &lt;strong>&amp;ldquo;el rompecabezas de recolectar tarjetas de números primos&amp;rdquo;&lt;/strong>.&lt;/p>
&lt;h3 id="paso-1-recolectar-solo-el-oro-en-polvo-números-suaves-con-un-tamiz">Paso 1: Recolectar solo el oro en polvo (números suaves) con un tamiz
&lt;/h3>&lt;p>Primero, preparamos un número adecuado $Z$, lo elevamos al cuadrado y calculamos el residuo $W$ al dividirlo por $N$.
(El mundo del residuo de $Z^2 = W$)&lt;/p>
&lt;p>Factorizamos el residuo $W$ resultante. Aquí, solo cuando aparece un &lt;strong>&amp;quot;$W$ compuesto solo de números primos pequeños como 2, 3, 5, 7, etc.&amp;quot;&lt;/strong>, guardamos esa fórmula como una &amp;ldquo;tarjeta ganadora&amp;rdquo;, y si se mezclan números primos grandes, la tiramos.
Es como la tarea de tirar piedras grandes con un tamiz en un río y recolectar solo el polvo de oro.&lt;/p>
&lt;h3 id="paso-2-el-rompecabezas-de-hacer-todo-número-par">Paso 2: El rompecabezas de hacer todo &amp;ldquo;número par&amp;rdquo;
&lt;/h3>&lt;p>Por ejemplo, supongamos que se reunieron las siguientes tres tarjetas de polvo de oro:&lt;/p>
&lt;ul>
&lt;li>Tarjeta A: $Z_1^2 = 2^3 \times 3^1$&lt;/li>
&lt;li>Tarjeta B: $Z_2^2 = 2^1 \times 5^1$&lt;/li>
&lt;li>Tarjeta C: $Z_3^2 = 3^1 \times 5^1$&lt;/li>
&lt;/ul>
&lt;p>Multipliquemos todo esto.
El lado derecho se convierte en $(2^3 \times 3^1) \times (2^1 \times 5^1) \times (3^1 \times 5^1)$,
y al organizarlo todo junto queda &lt;strong>&amp;quot;$2^4 \times 3^2 \times 5^2$&amp;quot;&lt;/strong>.&lt;/p>
&lt;p>¡Increíblemente, la cantidad de números primos se ha vuelto &amp;ldquo;4, 2, 2&amp;rdquo;, &lt;strong>todos en cantidades pares&lt;/strong>!
El hecho de que todos sean cantidades pares significa que si reducimos la cantidad total a la mitad, se convierte en el &amp;ldquo;cuadrado de algo&amp;rdquo;.
Es decir, $(2^2 \times 3^1 \times 5^1)^2 = (60)^2$.&lt;/p>
&lt;p>Dado que el lado izquierdo es $(Z_1 \times Z_2 \times Z_3)^2$, ¡con esto finalmente se completa el tan esperado par de &amp;ldquo;$X^2 = Y^2$&amp;rdquo; que es
&lt;strong>$X = (Z_1 \times Z_2 \times Z_3)$&lt;/strong>
&lt;strong>$Y = 60$&lt;/strong>!&lt;/p>
&lt;p>Dado que a las computadoras se les da muy bien el rompecabezas de calcular si la cantidad de números primos es &amp;ldquo;par o impar (0 o 1)&amp;rdquo;, con este método pueden encontrar $X$ e $Y$ a alta velocidad.&lt;/p>
&lt;hr>
&lt;h2 id="capítulo-3-el-muro-de-la-desesperación-que-se-interpone">Capítulo 3: El muro de la desesperación que se interpone
&lt;/h2>&lt;p>¡Con esto se puede romper cualquier cifrado!&amp;hellip; Eso pensarías, pero surge un gran problema.
Si el número $N$ del cifrado tiene hasta &amp;ldquo;100 dígitos&amp;rdquo;, se puede resolver con este método (llamado criba cuadrática), pero cuando $N$ se convierte en &amp;ldquo;200 dígitos, 300 dígitos&amp;rdquo;, el $W$ que aparece en el medio del cálculo se vuelve demasiado grande.&lt;/p>
&lt;p>Cuando los números se vuelven demasiado grandes, de repente dejan de aparecer los &amp;ldquo;números hechos solo de primos pequeños (polvo de oro)&amp;rdquo;. Se vuelve más difícil que buscar una lente de contacto en el desierto, y ya no se pueden juntar en absoluto las tarjetas para resolver el rompecabezas.&lt;/p>
&lt;p>Aquí finalmente aparece el arma definitiva de la humanidad, la &lt;strong>&amp;ldquo;Criba General del Cuerpo de Números (GNFS)&amp;rdquo;&lt;/strong>.&lt;/p>
&lt;hr>
&lt;h2 id="capítulo-4-la-idea-más-fuerte-de-la-humanidad-crear-dos-mundos">Capítulo 4: La idea más fuerte de la humanidad: Crear &amp;ldquo;dos mundos&amp;rdquo;
&lt;/h2>&lt;p>La idea genial de GNFS es: &lt;strong>&amp;ldquo;Como calculamos solo en el mundo real, los números se vuelven enormes. Entonces, hagamos un &amp;lsquo;mundo oculto&amp;rsquo; usando polinomios (expresiones algebraicas) y dividamos el peso del cálculo en dos&amp;rdquo;&lt;/strong>.&lt;/p>
&lt;h3 id="la-magia-de-las-expresiones-algebraicas">La magia de las expresiones algebraicas
&lt;/h3>&lt;p>GNFS convierte un número gigante $N$ en una expresión algebraica usando un número base $m$.
Por ejemplo, si $N=100$, usando $m=4$, $100 = 4^3 + 2(4^2) + 4$.
Usando la letra $x$, convertimos esto en la expresión (el mundo oculto) &lt;strong>$f(x) = x^3 + 2x^2 + x$&lt;/strong>.&lt;/p>
&lt;p>Lo interesante de esta expresión es que tiene la propiedad de que &lt;strong>&amp;ldquo;si sustituyes la letra $x$ por $m$ (4 en el ejemplo anterior), siempre puedes regresar (teletransportarte) al número real $N$&amp;rdquo;&lt;/strong>.&lt;/p>
&lt;h3 id="buscar-oro-en-polvo-en-dos-mundos-al-mismo-tiempo">Buscar oro en polvo en dos mundos al mismo tiempo
&lt;/h3>&lt;p>GNFS crea muchos pares de números enteros $(a, b)$ y realiza los siguientes dos cálculos al mismo tiempo:&lt;/p>
&lt;ol>
&lt;li>&lt;strong>El mundo real&lt;/strong>: $a - b \times m$&lt;/li>
&lt;li>&lt;strong>El mundo algebraico&lt;/strong>: el valor de calcular $a - b \times x$ con las reglas del álgebra&lt;/li>
&lt;/ol>
&lt;p>Al dividir el problema en dos mundos, el tamaño de los números manejados se vuelve drásticamente menor (más ligero). Es la imagen de partir una roca gigante en dos para convertirla en piedras fáciles de manejar.&lt;/p>
&lt;p>Luego, con un tamiz (criba), se recolectan solo los pares milagrosos $(a, b)$ que son &lt;strong>&amp;ldquo;tanto en el mundo real como en el mundo algebraico, &amp;lsquo;hechos solo de números primos pequeños (polvo de oro)&amp;rsquo;&amp;rdquo;&lt;/strong>. Este es el origen del nombre &amp;ldquo;Criba del Cuerpo de Números&amp;rdquo;.&lt;/p>
&lt;h3 id="el-momento-en-que-finalmente-se-rompe-el-cifrado">El momento en que finalmente se rompe el cifrado
&lt;/h3>&lt;p>Cuando se reúnen decenas de millones de &amp;ldquo;tarjetas de polvo de oro&amp;rdquo; de ambos mundos, utilizando los cálculos de matrices gigantes de una supercomputadora, descubrimos las &amp;ldquo;combinaciones donde la cantidad de números primos se vuelve toda par&amp;rdquo; que hicimos en el Capítulo 2.&lt;/p>
&lt;p>Una vez que se encuentra la combinación,&lt;/p>
&lt;ul>
&lt;li>Sea el número al cuadrado creado en el mundo real &lt;strong>$X^2$&lt;/strong>&lt;/li>
&lt;li>Sea la expresión al cuadrado creada en el mundo algebraico &lt;strong>$Y(x)^2$&lt;/strong>&lt;/li>
&lt;/ul>
&lt;p>Finalmente, sustituimos $x$ en el $Y(x)$ del mundo algebraico por $m$, para teletransportarlo y unirlo al mundo real.
Entonces, como magia matemática, se completa estrictamente el estado en que &lt;strong>&amp;ldquo;el residuo de $X^2$ y $Y^2$ es el mismo&amp;rdquo;&lt;/strong>!&lt;/p>
&lt;p>El resto es como en el Capítulo 1, si calculamos el máximo común divisor de $X - Y$ y $N$, el inexpugnable cifrado RSA colapsa estruendosamente, y los números primos secretos hacen su aparición.&lt;/p>
&lt;hr>
&lt;h2 id="conclusión-las-matemáticas-no-terminan">Conclusión: Las matemáticas no terminan
&lt;/h2>&lt;p>Es posible que hayas pensado: &amp;ldquo;¡Genial, con GNFS se puede romper cualquier cifrado!&amp;rdquo;.
Sin embargo, el cifrado RSA tampoco se queda atrás. Lo que se utiliza en el Internet actual es un número gigantesco monstruoso llamado &amp;ldquo;RSA-2048 (unos 617 dígitos)&amp;rdquo;.&lt;/p>
&lt;p>Aunque GNFS es el algoritmo más fuerte de la humanidad, se dice que incluso para resolver 270 dígitos (RSA-270), llevaría miles o decenas de miles de años incluso conectando las computadoras de todo el mundo. Por ahora, nuestros datos de LINE o bancos están a salvo.&lt;/p>
&lt;p>Sin embargo, ¿qué pasaría si apareciera &lt;strong>&amp;ldquo;una magia para encontrar $X$ e $Y$ en un instante sin importar cuán grande sea el número&amp;rdquo;&lt;/strong>?
En realidad, la existencia más cercana a eso es la &lt;strong>&amp;ldquo;computadora cuántica (Algoritmo de Shor)&amp;rdquo;&lt;/strong> actualmente en desarrollo. Usando las propiedades ondulatorias de la mecánica cuántica, se ha demostrado matemáticamente que se puede ignorar el molesto rompecabezas de recolección de tarjetas y encontrar la respuesta en un solo intento.&lt;/p>
&lt;p>La interminable batalla de ingenio entre los creadores de cifrados (defensa) y los creadores de algoritmos para romperlos (ataque).
Saber que la &amp;ldquo;factorización de primos&amp;rdquo; o el &amp;ldquo;álgebra&amp;rdquo; que se aprenden en la secundaria son en realidad armas que luchan ferozmente en la vanguardia de la seguridad mundial, ¿no hace que las clases de matemáticas parezcan un poco más interesantes?&lt;/p>
&lt;p>¡Podrías ser tú, que estás leyendo este artículo, quien descubra el algoritmo más fuerte del futuro!&lt;/p>
&lt;hr>
&lt;p>&lt;em>(※Este artículo conceptualiza el encanto matemático del criptoanálisis para estudiantes de secundaria. El GNFS real se calcula estrictamente usando matemáticas universitarias avanzadas, como el grupo de clases de ideales de cuerpos algebraicos y homomorfismos)&lt;/em>&lt;/p></description></item><item><title>Los pros y contras de los antivacunas</title><link>http://kenji.blog/es/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/es/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 Los pros y contras de los antivacunas" />&lt;h1 id="los-pros-y-contras-de-los-antivacunas-el-futuro-de-5000-personas-asesinado-por-la-ansiedad-de-buena-fe-y-las-lecciones-epidemiológicas-que-debemos-aprender">Los pros y contras de los antivacunas: El futuro de 5.000 personas asesinado por la &amp;ldquo;ansiedad de buena fe&amp;rdquo; y las lecciones epidemiológicas que debemos aprender
&lt;/h1>&lt;h2 id="la-ilusión-de-causalidad-revelada-por-el-desastre-del-coronavirus">La &amp;ldquo;ilusión de causalidad&amp;rdquo; revelada por el desastre del coronavirus
&lt;/h2>&lt;p>A partir de 2021, la vacunación contra el nuevo coronavirus avanzó rápidamente en Japón. Fue un proyecto de salud pública poco frecuente en la historia de la humanidad, en el que casi el 80% del público fue vacunado en un corto período de tiempo.
Durante este proceso, presenciamos innumerables &amp;ldquo;gritos&amp;rdquo; a través de las redes sociales y los medios de comunicación. &amp;ldquo;Un familiar falleció unos días después de recibir la vacuna&amp;rdquo;. &amp;ldquo;Después de la vacunación, sigo teniendo problemas de salud inexplicables&amp;rdquo;. Estas quejas son urgentes, y para los involucrados, el sufrimiento es una verdad innegable.&lt;/p>
&lt;p>Sin embargo, aquí existe una &amp;ldquo;trampa&amp;rdquo; fría pero extremadamente importante en la epidemiología.
Si consideramos el tamaño de la población de Japón, ya sea que se vacunen o no, entre 3.000 y 4.000 personas mueren todos los días por alguna causa (enfermedad, accidente, esperanza de vida). Si la gran mayoría de las personas se vacunan al mismo tiempo, estadísticamente siempre habrá un cierto número de personas que &amp;ldquo;mueran al día siguiente de la vacunación (por causas no relacionadas con la vacuna)&amp;rdquo;. Esto se llama &lt;strong>&amp;ldquo;Coincidencia&amp;rdquo;&lt;/strong> en términos técnicos.&lt;/p>
&lt;p>Los humanos tienen un sesgo cognitivo llamado &amp;ldquo;falacia post hoc ergo propter hoc&amp;rdquo; (después de esto, por lo tanto, a consecuencia de esto). Si &amp;ldquo;B (muerte) ocurre después de A (vacunación)&amp;rdquo;, intuitivamente lo conectamos como &amp;ldquo;A es la causa de B&amp;rdquo;. Durante la pandemia de coronavirus, este sesgo cognitivo fue amplificado por las redes sociales, creando un segmento de la población en el que se afianzó la imagen de &amp;ldquo;vacuna = peligro&amp;rdquo; sin esperar a la verificación científica.&lt;/p>
&lt;p>Muchos expertos en salud pública observaron esta escena con un sentido de déjà vu. Esto se debe a que Japón es el único país desarrollado que, hace apenas unos años, abandonó voluntariamente un medio para prevenir enfermedades prevenibles debido a esta &amp;ldquo;ansiedad sin ciencia&amp;rdquo;.
Ese es el problema de la &lt;strong>&amp;ldquo;vacuna contra el cáncer de cuello uterino (vacuna contra el VPH)&amp;rdquo;&lt;/strong>.&lt;/p>
&lt;hr>
&lt;h2 id="qué-pasó-en-japón-en-2013">¿Qué pasó en Japón en 2013?
&lt;/h2>&lt;p>Retrocedamos un poco en el tiempo.
El cáncer de cuello uterino es una enfermedad que afecta a unas 11.000 mujeres cada año y mata a unas 2.900. Se le llama &amp;ldquo;asesino de madres&amp;rdquo; porque ataca especialmente a la generación de entre 20 y 40 años, que están en su mejor momento para criar hijos y trabajar. La causa es la infección por el virus del papiloma humano (VPH), un virus común que se dice que infecta al 80% de las mujeres sexualmente activas al menos una vez en su vida.
La vacuna contra el VPH, que previene esta infección viral, se introdujo en todo el mundo como una &amp;ldquo;vacuna innovadora que puede prevenir el cáncer&amp;rdquo;, y en Japón también se convirtió en una vacuna de rutina (fuertemente recomendada por el gobierno y disponible de forma gratuita) en abril de 2013.&lt;/p>
&lt;p>Sin embargo, la situación dio un giro oscuro poco después.
Algunas de las niñas que recibieron la vacuna informaron síntomas como dolor en todo el cuerpo, trastornos del movimiento y pérdida de memoria, y los medios de comunicación informaron esto de manera destacada todos los días como &amp;ldquo;sospecha de efectos secundarios de la vacuna&amp;rdquo;. Las imágenes de niñas sufriendo convulsiones tuvieron un fuerte impacto en los espectadores, y la opinión pública se inclinó rápidamente hacia el &amp;ldquo;argumento del peligro de las vacunas&amp;rdquo;.&lt;/p>
&lt;p>En respuesta a esto, el Ministerio de Salud, Trabajo y Bienestar decidió &amp;ldquo;abstenerse de la recomendación activa&amp;rdquo; en junio de 2013, a solo dos meses del inicio de la vacunación de rutina. No fue una &amp;ldquo;prohibición&amp;rdquo; ni una &amp;ldquo;cancelación&amp;rdquo;, sino una decisión política extremadamente ambigua de &amp;ldquo;mantener el marco de vacunación de rutina, pero dejar de enviar notificaciones individuales del gobierno&amp;rdquo;.
Sin embargo, esto se transmitió al público como un mensaje de que &amp;ldquo;el gobierno admitió que era peligroso y lo detuvo&amp;rdquo;. Como resultado, la tasa de vacunación, que había superado el 70%, se desplomó a menos del 1% en un instante.&lt;/p>
&lt;p>A partir de aquí, comenzó la &lt;strong>&amp;ldquo;década perdida (brecha de vacunas)&amp;rdquo;&lt;/strong> en Japón.&lt;/p>
&lt;hr>
&lt;h2 id="la-verdad-revelada-por-el-estudio-de-nagoya">La &amp;ldquo;verdad&amp;rdquo; revelada por el Estudio de Nagoya
&lt;/h2>&lt;p>¿Fueron los síntomas informados por los medios realmente causados por la vacuna?
Hay un estudio a gran escala que intentó responder a esta pregunta científicamente. Comúnmente conocido como el &lt;strong>&amp;ldquo;Estudio de Nagoya&amp;rdquo;&lt;/strong>.&lt;/p>
&lt;p>La ciudad de Nagoya realizó una encuesta a gran escala en 2015 a unas 70.000 mujeres jóvenes. Esto incluyó tanto a &amp;ldquo;personas que recibieron la vacuna&amp;rdquo; como a &amp;ldquo;personas que no la recibieron&amp;rdquo;, y les preguntó a cada una si tenían 24 síntomas, como &amp;ldquo;menstruación irregular&amp;rdquo;, &amp;ldquo;dolor en las articulaciones&amp;rdquo; y &amp;ldquo;disminución de la concentración&amp;rdquo;.
Si la vacuna fuera la causa, estos síntomas deberían aparecer claramente más en el grupo de &amp;ldquo;personas que la recibieron&amp;rdquo;.&lt;/p>
&lt;p>Los resultados fueron impactantes.
&lt;strong>No se observó una diferencia significativa en la incidencia de síntomas entre el grupo &amp;ldquo;vacunado&amp;rdquo; y el grupo &amp;ldquo;no vacunado&amp;rdquo;.&lt;/strong>&lt;/p>
&lt;p>¿Qué significa esto?
Las adolescentes, independientemente de si están vacunadas o no, están en un período en el que son propensas a problemas de salud como la disfunción autonómica ortostática y el dolor crónico debido a los cambios en el equilibrio hormonal y las circunstancias específicas del período de crecimiento.
En otras palabras, en la misma proporción que las &amp;ldquo;niñas que desarrollaron síntomas después de recibir la vacuna&amp;rdquo; reportadas por los medios de comunicación, había &amp;ldquo;niñas que desarrollaron los mismos síntomas a pesar de no haber recibido la vacuna&amp;rdquo;.
Sin embargo, los problemas de salud de las niñas no vacunadas se trataron como &amp;ldquo;trastornos de la adolescencia&amp;rdquo;, y solo los problemas de las niñas vacunadas se destacaron como &amp;ldquo;daños por vacunas&amp;rdquo;. Los datos mostraron que era muy probable que esta fuera la verdadera naturaleza del fenómeno que causó tanto alboroto como un &amp;ldquo;desastre de medicamentos&amp;rdquo;.&lt;/p>
&lt;p>Además, también se ha señalado la implicación del &amp;ldquo;efecto Nocebo&amp;rdquo;. Es lo contrario del &amp;ldquo;efecto placebo&amp;rdquo;; cuando consumes algo creyendo que es &amp;ldquo;malo para ti&amp;rdquo;, en realidad causa dolor y malestar debido a la ansiedad y el miedo. No se puede negar la posibilidad de que los informes negativos diarios afectaran las mentes y los cuerpos delicados de las niñas.&lt;/p>
&lt;hr>
&lt;h2 id="el-pecado-de-omisión-visto-en-números">El &amp;ldquo;pecado de omisión&amp;rdquo; visto en números
&lt;/h2>&lt;p>&amp;ldquo;Detener las recomendaciones por si acaso&amp;rdquo;.
A primera vista, esta decisión parece una &amp;ldquo;elección cautelosa y segura&amp;rdquo;. Ya que será demasiado tarde después de que suceda algo, en caso de duda, debería detenerse. Sin embargo, en salud pública, &amp;ldquo;no hacer nada (omisión)&amp;rdquo; a veces causa un daño que supera con creces el riesgo de &amp;ldquo;hacer algo&amp;rdquo;.&lt;/p>
&lt;p>Un equipo de investigación de la Universidad de Osaka publicó una estimación cruel sobre el impacto de esta suspensión de la recomendación.
Debido a la fuerte caída en la tasa de vacunación entre 2013 y 2019, dicen que habrá un aumento de unas &lt;strong>25.000 pacientes con cáncer de cuello uterino y de 5.000 a 5.700 muertes&lt;/strong> que podrían haberse evitado en el futuro.&lt;/p>
&lt;p>Más de 5.000 muertos. Esta es una cifra comparable a la de un desastre natural a gran escala.
Como resultado de tratar de evitar el riesgo de &amp;ldquo;ansiedad sobre las reacciones adversas&amp;rdquo;, cuya relación causal no está científicamente clara, hemos obligado a las mujeres del futuro a soportar el riesgo cierto y grave de &amp;ldquo;muerte por cáncer&amp;rdquo;.&lt;/p>
&lt;p>Si miramos al mundo, la diferencia es obvia.
En Australia, se prevé que el cáncer de cuello uterino sea &amp;ldquo;erradicado (se convierta en un cáncer raro)&amp;rdquo; para alrededor de 2028 debido a la propagación de la vacunación tanto en hombres como en mujeres. En el Reino Unido también se ha informado que la incidencia de cáncer de cuello uterino en la generación vacunada se ha reducido a casi cero.
Mientras el mundo avanza hacia un futuro donde se &amp;ldquo;conquista el cáncer&amp;rdquo;, solo Japón se ha quedado atrás en un pasado donde el &amp;ldquo;cáncer continúa aumentando&amp;rdquo;. En 2015, el Comité Asesor Global sobre Seguridad de las Vacunas de la OMS (Organización Mundial de la Salud) criticó explícitamente la situación en Japón. Dijeron: &amp;ldquo;La toma de decisiones políticas que no se basa en la ciencia está causando daños reales (muerte por cáncer)&amp;rdquo;.&lt;/p>
&lt;hr>
&lt;h2 id="reticencia-a-las-vacunas-que-se-encadena-a-través-del-océano">&amp;ldquo;Reticencia a las vacunas&amp;rdquo; que se encadena a través del océano
&lt;/h2>&lt;p>La tragedia de la vacuna contra el VPH que ocurrió en Japón no es de ninguna manera una &amp;ldquo;circunstancia especial exclusiva de Japón&amp;rdquo;. Todavía hoy se reportan casos en todo el mundo que muestran que, cuando la &amp;ldquo;ansiedad intuitiva&amp;rdquo; o la &amp;ldquo;ideología&amp;rdquo; prevalecen sobre la ciencia, las enfermedades infecciosas siempre enseñarán sus colmillos, en cualquier lugar.&lt;/p>
&lt;p>Un ejemplo notable de esto es el &lt;strong>brote de &amp;ldquo;sarampión&amp;rdquo;&lt;/strong> en Estados Unidos.&lt;/p>
&lt;p>El sarampión es un virus altamente contagioso, pero es una enfermedad casi completamente prevenible con una vacuna. En los Estados Unidos, gracias a un programa exhaustivo de vacunación, se declaró su &amp;ldquo;eliminación&amp;rdquo; en 2000. En otras palabras, se consideraba que el virus endémico había desaparecido del país.
Sin embargo, el sarampión ha comenzado a propagarse nuevamente en los últimos años.&lt;/p>
&lt;p>Según un informe de la BBC (2024), los funcionarios de salud de EE. UU. señalan que la &amp;ldquo;reticencia a las vacunas&amp;rdquo; (Vaccine Hesitancy) persistente en algunas comunidades es un caldo de cultivo para la propagación de la infección.
Las tasas de vacunación han disminuido en áreas por razones religiosas, entre algunos grupos que afirman ser &amp;ldquo;naturalistas&amp;rdquo;, o en áreas donde las ideologías antivacunas basadas en la desinformación han penetrado. Cuando el virus se introduce allí desde el extranjero, se producen infecciones explosivas entre personas que no tienen inmunidad.&lt;/p>
&lt;p>El sarampión no es solo una enfermedad que termina con fiebre y sarpullido. Provoca complicaciones graves como neumonía y encefalitis, e incluso en los países desarrollados, puede ser fatal. La enfermedad que la humanidad una vez reunió su sabiduría para &amp;ldquo;contener&amp;rdquo; está amenazando nuevamente las vidas de los niños al aprovechar la brecha de la &amp;ldquo;duda&amp;rdquo; de la gente.
El caso estadounidense nos advierte: &amp;ldquo;El rompeolas de las altas tasas de vacunación colapsará en un instante si se tambalea la confianza de la gente&amp;rdquo;.&lt;/p>
&lt;hr>
&lt;h2 id="la-derrota-de-los-medios-los-expertos-y-de-nosotros-mismos">La derrota de los medios, los expertos y de nosotros mismos
&lt;/h2>&lt;p>¿Por qué se repiten estas situaciones?
Allí existe la asimetría de información peculiar de la sociedad moderna y nuestros propios sesgos cognitivos.&lt;/p>
&lt;p>En el tema de la vacuna contra el VPH en Japón, los medios de comunicación informaron de manera sensacionalista las &amp;ldquo;sospechas de efectos secundarios de la vacuna&amp;rdquo;. La composición de &amp;ldquo;víctimas lamentables&amp;rdquo; versus &amp;ldquo;el país frío / compañías farmacéuticas&amp;rdquo; fue muy poderosa como historia y sacudió fuertemente las emociones de los espectadores.
Por otro lado, las explicaciones científicas de los expertos de que &amp;ldquo;no hay diferencia estadísticamente significativa&amp;rdquo; y &amp;ldquo;los beneficios superan los riesgos&amp;rdquo; sonaron secas y frías, y fueron demasiado impotentes frente al torrente de emociones.&lt;/p>
&lt;p>En el mundo de la ciencia, si hay una teoría establecida apoyada por el 99% de los científicos y un 1% que disiente, no se tratan como &amp;ldquo;opiniones iguales&amp;rdquo;. Sin embargo, los medios, en su afán por enfatizar la &amp;ldquo;equidad&amp;rdquo;, o quizás para llamar la atención, reportaron en paralelo y como &amp;ldquo;iguales&amp;rdquo; los datos que salvarían decenas de miles de vidas y la queja emocional de una sola víctima.
Los políticos, también por temor a la reacción pública, priorizaron leer &amp;ldquo;el ambiente del momento&amp;rdquo; sobre la evidencia científica. Como resultado, la recomendación activa de la vacuna contra el VPH se suspendió durante unos 9 años en Japón, y durante ese tiempo causó un gran daño por cáncer que podría haberse prevenido.&lt;/p>
&lt;hr>
&lt;h2 id="la-historia-se-repite-inteligencia-para-resistir-el-ambiente">La historia se repite: inteligencia para resistir el &amp;ldquo;ambiente&amp;rdquo;
&lt;/h2>&lt;p>En 2022, finalmente se reanudó la recomendación activa de la vacuna contra el VPH en Japón. Sin embargo, el tiempo y las vidas perdidas no se pueden recuperar. Y así como el sarampión está reapareciendo en los Estados Unidos en este momento, si bajamos la guardia, la historia se repetirá una y otra vez.&lt;/p>
&lt;p>El movimiento antivacunas y tener preocupaciones sobre la atención médica en sí mismos no pueden ser completamente negados. Es un instinto de defensa humana ser cauteloso sobre lo que uno pone en su propio cuerpo, y de hecho ha habido desastres relacionados con drogas en el pasado. Monitorear y dudar del poder es importante en una democracia.&lt;/p>
&lt;p>Sin embargo, lo que nos presenta la serie de eventos de la vacuna contra el coronavirus, la vacuna contra el VPH y el brote de sarampión en EE. UU. es la fría realidad de que &lt;strong>la &amp;ldquo;ansiedad de buena fe que ignora la ciencia&amp;rdquo; puede cobrar más vidas que el propio virus&lt;/strong>.&lt;/p>
&lt;p>&amp;ldquo;Podría ser peligroso, así que esperemos y veamos&amp;rdquo;.
Cuando tomamos esa decisión, ¿hemos incluido en nuestros cálculos &amp;ldquo;la probabilidad de morir de la enfermedad mientras esperamos y vemos&amp;rdquo;?
&amp;ldquo;Lo natural es lo mejor&amp;rdquo;.
Cuando decimos eso, ¿no hemos olvidado la historia de que &amp;ldquo;los virus en la naturaleza son los que más implacablemente han cobrado vidas&amp;rdquo;?&lt;/p>
&lt;p>En el futuro aparecerán nuevas enfermedades infecciosas y se desarrollarán nuevas vacunas. En ese momento, ¿seremos engañados nuevamente por el fenómeno de &amp;ldquo;coincidencia&amp;rdquo; y arrastrados por la instigación emocional? ¿O seremos capaces de leer con calma los datos y sopesar los riesgos y los beneficios?&lt;/p>
&lt;p>Se dice que la historia se repite. Sin embargo, lo único que puede detenerla es nuestra propia razón.
Debemos observar datos estadísticamente correctos y tener la inteligencia para elegir los &lt;strong>&amp;ldquo;hechos&amp;rdquo; en lugar de &amp;ldquo;el ambiente&amp;rdquo;. Esa es nuestra responsabilidad al vivir en la era moderna.&lt;/strong>&lt;/p>
&lt;hr>
&lt;h3 id="referencias-y-fuentes-de-datos">Referencias y fuentes de datos
&lt;/h3>&lt;ul>
&lt;li>&lt;strong>Ministerio de Salud, Trabajo y Bienestar&lt;/strong>: &amp;ldquo;Infección por el Virus del Papiloma Humano ~ Cáncer de cuello uterino y la vacuna contra el VPH ~&amp;rdquo;&lt;/li>
&lt;li>&lt;strong>Centro Nacional de Cáncer&lt;/strong>: Servicio de Información del Cáncer Estadísticas de &amp;ldquo;Cáncer de cuello uterino&amp;rdquo;&lt;/li>
&lt;li>&lt;strong>BBC News (Japonés)&lt;/strong>: &amp;ldquo;Los CDC de EE. UU. piden la vacunación debido al brote de sarampión; aumento global de las infecciones&amp;rdquo; (2024) y artículos originales relacionados.&lt;/li>
&lt;li>&lt;strong>Equipo de Investigación de la Universidad de Osaka (Yagi A, et al. Lancet Public Health. 2020)&lt;/strong>: Investigación sobre la estimación de casos excesivos y muertes debido a la abstención de recomendar activamente la vacunación de rutina contra el VPH&lt;/li>
&lt;li>&lt;strong>Estudio de Nagoya (Suzuki S, et al. Papillomavirus Res. 2018)&lt;/strong>&lt;/li>
&lt;/ul></description></item><item><title>Reflexiones sobre el Primero los Japoneses</title><link>http://kenji.blog/es/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/es/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 Reflexiones sobre el Primero los Japoneses" />&lt;h1 id="la-imagen-falsa-y-verdadera-de-primero-los-japoneses-la-medida-de-defensa-llamada-coexistencia-a-la-que-se-enfrenta-japón-en-2026">La imagen falsa y verdadera de &amp;ldquo;Primero los Japoneses&amp;rdquo;: La medida de defensa llamada &amp;ldquo;coexistencia&amp;rdquo; a la que se enfrenta Japón en 2026
&lt;/h1>&lt;h2 id="introducción-por-qué-resuenan-estas-palabras-ahora">Introducción: ¿Por qué resuenan estas palabras ahora?
&lt;/h2>&lt;p>Año 2026. Nos encontramos ahora en un punto de inflexión de una era sin precedentes. La prolongada inflación, el estancamiento de los salarios reales y la evidente disminución de la natalidad y el envejecimiento de la población. Cada vez que se cambian las etiquetas de precios de los productos en los estantes de los supermercados, la ansiedad por el futuro ensombrece nuestros corazones.&lt;/p>
&lt;p>En medio de este sentimiento de estancamiento, hay una frase que está ganando apoyo rápidamente. Esa es &lt;strong>&amp;ldquo;Primero los Japoneses&amp;rdquo;&lt;/strong>.&lt;/p>
&lt;p>El deseo de &amp;ldquo;querer que primero se enriquezca la vida de los ciudadanos de nuestro propio país&amp;rdquo; o &amp;ldquo;querer que se proteja como máxima prioridad la cultura y la seguridad pública de Japón&amp;rdquo; es un anhelo sumamente natural y apremiante como un individuo soberano y como un ser humano que vive en este país. Sin embargo, entre el &amp;ldquo;ideal&amp;rdquo; que promueven estas palabras y la &amp;ldquo;realidad&amp;rdquo; que muestran los datos estadísticos, existe una gran divergencia que debemos enfrentar directamente.&lt;/p>
&lt;p>En este artículo, dejaremos de lado los argumentos emocionales y las etiquetas, y nos acercaremos a la verdadera naturaleza de este problema basándonos en datos objetivos, los cambios cronológicos y los hechos que ocurren en diversos ámbitos de la sociedad.&lt;/p>
&lt;hr>
&lt;h2 id="capítulo-1-la-cronología-de-primero-los-japoneses-y-el-contexto-social">Capítulo 1: La cronología de &amp;ldquo;Primero los Japoneses&amp;rdquo; y el contexto social
&lt;/h2>&lt;p>Estas palabras no aparecieron de repente. Se han ido gestando a partir de una compleja mezcla de tendencias globales y circunstancias particulares de Japón.&lt;/p>
&lt;h3 id="1-2016-2017-importación-y-arraigo-del-término">1. 2016-2017: Importación y arraigo del término
&lt;/h3>&lt;p>En 2016, el &amp;ldquo;América Primero&amp;rdquo; promovido por Donald Trump causó conmoción en todo el mundo. A nivel nacional, en 2017, la agrupación &amp;ldquo;Tomin First no Kai&amp;rdquo; (Asociación Primero los Ciudadanos de Tokio) liderada por la gobernadora de Tokio, Yuriko Koike, atrajo la atención. En este momento, el aspecto como retórica para aclarar las prioridades políticas era fuerte, y los matices xenófobos aún eran limitados.&lt;/p>
&lt;h3 id="2-2023-2024-visualización-de-la-ansiedad">2. 2023-2024: Visualización de la ansiedad
&lt;/h3>&lt;p>El retraso en la recuperación económica tras la pandemia y la inflación que acompañó a la rápida depreciación del yen golpearon directamente a los hogares comunes. En esta misma época, en las redes sociales comenzaron a estallar quejas basadas en información fragmentaria, como &amp;ldquo;el apoyo a los extranjeros es demasiado generoso&amp;rdquo; o &amp;ldquo;el dinero de los impuestos de los japoneses está fluyendo hacia los extranjeros&amp;rdquo;.&lt;/p>
&lt;h3 id="3-2025-2026-la-fusión-de-las-fuerzas-políticas-y-las-redes-sociales">3. 2025-2026: La fusión de las fuerzas políticas y las redes sociales
&lt;/h3>&lt;p>En las elecciones nacionales de 2025, las fuerzas que adoptaron formalmente &amp;ldquo;Primero los Japoneses&amp;rdquo; como eslogan consiguieron un cierto número de escaños. Los algoritmos de las redes sociales reaccionaron a la ansiedad de las personas mostrando de manera preferente publicaciones extremas, acelerando el &amp;ldquo;fenómeno de cámara de eco&amp;rdquo; donde solo se refuerzan ciertos valores.&lt;/p>
&lt;p>En la última encuesta de opinión pública (finales de 2025) realizada por varios periódicos, ante este eslogan, &lt;strong>un 42% respondió &amp;ldquo;De acuerdo / Más bien de acuerdo&amp;rdquo; y un 38% respondió &amp;ldquo;En desacuerdo / Más bien en desacuerdo&amp;rdquo;&lt;/strong>, revelando la realidad de una opinión pública dividida en dos.&lt;/p>
&lt;hr>
&lt;h2 id="capítulo-2-la-verdad-sobre-la-economía-y-la-seguridad-social-una-presencia-que-arrebata-o-un-pilar-de-apoyo">Capítulo 2: La verdad sobre la economía y la seguridad social: ¿Una &amp;ldquo;presencia que arrebata&amp;rdquo; o un &amp;ldquo;pilar de apoyo&amp;rdquo;?
&lt;/h2>&lt;p>Uno de los pilares de la lógica de quienes apoyan &amp;ldquo;Primero los Japoneses&amp;rdquo; es la imagen de que &amp;ldquo;los recursos de los japoneses están siendo arrebatados por los extranjeros&amp;rdquo;. Sin embargo, los datos primarios de las agencias gubernamentales muestran una realidad completamente opuesta a esta intuición.&lt;/p>
&lt;h3 id="1-fuerza-laboral-la-sangre-indispensable-que-mantiene-la-economía-japonesa">1. Fuerza laboral: La &amp;ldquo;sangre indispensable&amp;rdquo; que mantiene la economía japonesa
&lt;/h3>&lt;p>Según la &amp;ldquo;Situación del Empleo de Extranjeros (a finales de octubre de 2024)&amp;rdquo; del Ministerio de Salud, Trabajo y Bienestar, el número de trabajadores extranjeros era de **2.048.675 personas &lt;strong>. En las estimaciones actuales de 2026, ya ha superado los ** 2.3 millones&lt;/strong>.&lt;/p>
&lt;table>
&lt;thead>
&lt;tr>
&lt;th>Sector industrial&lt;/th>
&lt;th>Porcentaje / Tasa de aumento de trabajadores extranjeros&lt;/th>
&lt;th>Realidad y rol&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>&lt;strong>Construcción&lt;/strong>&lt;/td>
&lt;td>Aumento de aprox. 22.7% interanual&lt;/td>
&lt;td>Indispensable para el mantenimiento de infraestructura y reparación de puentes y carreteras envejecidos.&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;strong>Atención médica y bienestar&lt;/strong>&lt;/td>
&lt;td>Aumento de aprox. 28.1% interanual&lt;/td>
&lt;td>Llevan el peso de la primera línea en los centros de cuidado, apoyando a los ancianos japoneses.&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;strong>Manufactura&lt;/strong>&lt;/td>
&lt;td>Ocupan aprox. el 26% del total&lt;/td>
&lt;td>La columna vertebral que sostiene las industrias de exportación de Japón.&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;p>Actualmente, no se trata de trabajos que los japoneses quieran hacer y no puedan, sino que ellos están llenando el &lt;strong>&amp;ldquo;vacío que los japoneses ya no pueden asegurar&amp;rdquo;&lt;/strong>. Si bajo el nombre de &amp;ldquo;Primero los Japoneses&amp;rdquo; los excluyéramos, nuestro sistema de cuidado de ancianos colapsaría de inmediato, y los precios de las viviendas y los alimentos se dispararían en porcentajes o incluso se multiplicarían.&lt;/p>
&lt;h3 id="2-seguridad-social-bulos-y-realidades-sobre-la-asistencia-pública">2. Seguridad social: Bulos y realidades sobre la asistencia pública
&lt;/h3>&lt;p>Lo que más se difunde en las redes sociales es el discurso de que &amp;ldquo;los extranjeros reciben asistencia pública de forma preferencial&amp;rdquo;. Sin embargo, al revisar las estadísticas del Ministerio de Salud, Trabajo y Bienestar, la proporción de hogares encabezados por extranjeros entre todos los hogares receptores es de &lt;strong>aproximadamente 2.8% a 2.9%&lt;/strong>. Esta cifra se ha mantenido casi estable durante los últimos 10 años.&lt;/p>
&lt;p>Por el contrario, al observar la composición por edad de los extranjeros residentes, la mayoría pertenece a la **generación activa de entre 20 y 40 años **. Ellos pagan la pensión de bienestar social y las primas del seguro de salud, asumiendo el rol de &lt;strong>&amp;ldquo;aportantes&amp;rdquo; que sostienen las pensiones y los gastos médicos que reciben los &amp;ldquo;ancianos japoneses&amp;rdquo;&lt;/strong>. Quienes llenan el vacío de la generación activa que dejaron los japoneses y prolongan la vida del sistema de seguridad social japonés son, sin lugar a dudas, ellos.&lt;/p>
&lt;hr>
&lt;h2 id="capítulo-3-seguridad-pública-y-sesgos-en-redes-sociales-desmontando-lógicamente-el-crimen-extranjero">Capítulo 3: Seguridad pública y sesgos en redes sociales: Desmontando lógicamente el &amp;ldquo;crimen extranjero&amp;rdquo;
&lt;/h2>&lt;p>La ansiedad por la seguridad pública es lo que más estimula el sentimiento de &amp;ldquo;Primero los Japoneses&amp;rdquo;. Sin embargo, al leer detalladamente las estadísticas de la Agencia Nacional de Policía y el &amp;ldquo;Libro Blanco del Crimen&amp;rdquo; del Ministerio de Justicia, queda claro cómo la imagen en internet de los &amp;ldquo;extranjeros atroces&amp;rdquo; está construida sobre una distorsión cognitiva.&lt;/p>
&lt;h3 id="1-una-comparación-serena-de-totales-y-tasas-de-criminalidad">1. Una comparación serena de &amp;ldquo;totales&amp;rdquo; y &amp;ldquo;tasas de criminalidad&amp;rdquo;
&lt;/h3>&lt;p>Según las estadísticas publicadas en 2024, del total de personas arrestadas, la proporción que ocupan los extranjeros es de &lt;strong>aproximadamente el 5.5%&lt;/strong>. El 95% restante corresponde a delitos cometidos por japoneses.&lt;/p>
&lt;p>Si comparamos el número de arrestos por cada 100.000 habitantes (tasa de criminalidad), la esencia se vuelve aún más visible.&lt;/p>
&lt;table>
&lt;thead>
&lt;tr>
&lt;th>Categoría&lt;/th>
&lt;th>Personas arrestadas por cada 100.000 habitantes (estimación)&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>&lt;strong>Japoneses (todas las edades)&lt;/strong>&lt;/td>
&lt;td>Aprox. 142.7 personas&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;strong>Extranjeros residentes (residentes permanentes / a largo plazo)&lt;/strong>&lt;/td>
&lt;td>** Aprox. 120.0 personas**&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;p>El hecho estadístico es que &lt;strong>la tasa de criminalidad de los extranjeros que viven en Japón a mediano y largo plazo es menor que el promedio general de los japoneses&lt;/strong>.&lt;/p>
&lt;h3 id="2-la-magia-del-sesgo-por-generaciones">2. La magia del sesgo por &amp;ldquo;generaciones&amp;rdquo;
&lt;/h3>&lt;p>¿Por qué prevalece la imagen de que &amp;ldquo;los extranjeros son aterradores&amp;rdquo;? El factor principal es la diferencia en la &lt;strong>&amp;ldquo;composición por edades&amp;rdquo;&lt;/strong> en criminología.&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Japoneses:&lt;/strong> Aproximadamente el 30% son personas mayores, cuya tasa de criminalidad es extremadamente baja. Este grupo empuja el &amp;ldquo;denominador&amp;rdquo; hacia abajo, haciendo que las cifras generales de Japón parezcan más bajas.&lt;/li>
&lt;li>&lt;strong>Extranjeros:&lt;/strong> Al venir a Japón como fuerza laboral, más del 80% son de la &lt;strong>&amp;ldquo;generación joven a mediana edad&amp;rdquo;, donde estadísticamente es más probable que ocurran delitos&lt;/strong>.&lt;/li>
&lt;/ul>
&lt;p>Si comparamos las tasas de criminalidad de japoneses y extranjeros bajo la misma condición de tener &amp;ldquo;20 a 29 años&amp;rdquo;, no se observan diferencias significativas entre ambos. Es decir, no es que &amp;ldquo;la seguridad empeoró porque aumentaron los extranjeros&amp;rdquo;, sino simplemente que &lt;strong>&amp;ldquo;el grupo de edad más propenso a cometer delitos (los jóvenes) existe en Japón en forma de extranjeros&amp;rdquo;&lt;/strong>.&lt;/p>
&lt;h3 id="3-el-sesgo-de-confirmación-creado-por-las-redes-sociales">3. El &amp;ldquo;sesgo de confirmación&amp;rdquo; creado por las redes sociales
&lt;/h3>&lt;p>Los algoritmos de las redes sociales usan nuestra &amp;ldquo;ansiedad&amp;rdquo; como combustible. Cuando ocurre un delito por parte de un extranjero, se asocia fuertemente con su &amp;ldquo;atributo (nacionalidad)&amp;rdquo; y se difunde intensamente. Como resultado, en nuestro cerebro solo se refuerza el recuerdo de que &amp;ldquo;otra vez un extranjero cometió un delito&amp;rdquo;.&lt;/p>
&lt;p>Esto se llama &lt;strong>&amp;ldquo;sesgo de confirmación&amp;rdquo;&lt;/strong>. Los delitos cometidos por japoneses, que representan el 95% del total, se pasan por alto como parte de la &amp;ldquo;rutina diaria&amp;rdquo;, mientras que el 5% de los delitos de extranjeros se transfiere a la imagen de &amp;ldquo;todos los extranjeros&amp;rdquo;.&lt;/p>
&lt;hr>
&lt;h2 id="capítulo-4-transmisión-de-la-cultura-destructores-o-salvadores">Capítulo 4: Transmisión de la cultura: ¿&amp;ldquo;Destructores&amp;rdquo; o &amp;ldquo;Salvadores&amp;rdquo;?
&lt;/h2>&lt;p>La preocupación de que &amp;ldquo;las tradiciones y cultura de Japón están siendo destruidas&amp;rdquo; también difiere de la realidad sobre el terreno.&lt;/p>
&lt;h3 id="1-los-últimos-herederos-de-la-artesanía-tradicional">1. Los &amp;ldquo;últimos herederos&amp;rdquo; de la artesanía tradicional
&lt;/h3>&lt;p>El número de personas que trabajan en la fabricación de artesanías tradicionales japonesas ha caído drásticamente de unas 300.000 personas en la década de 1970 a unas 50.000 en la actualidad. Quienes están salvando esta crisis de extinción son extranjeros que han llegado a Japón con un profundo respeto por la cultura japonesa.&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Bodegas de sake y forjadores de espadas:&lt;/strong> Extranjeros se han convertido en aprendices en talleres donde los japoneses estaban a punto de abandonar la sucesión. Al incorporar su capacidad de difusión al extranjero y nuevas sensibilidades, están revitalizando culturas al borde del cierre, convirtiéndolas en &amp;ldquo;industrias sostenibles&amp;rdquo;.&lt;/li>
&lt;/ul>
&lt;h3 id="2-mantenimiento-de-las-comunidades-locales">2. Mantenimiento de las comunidades locales
&lt;/h3>&lt;p>En los municipios rurales que se han convertido en &amp;ldquo;ciudades en posible desaparición&amp;rdquo; debido a la pérdida de jóvenes, los aprendices técnicos y trabajadores extranjeros con habilidades específicas son quienes llevan a cabo los festivales locales y sostienen la base agrícola.
Cuando los japoneses se han ido, ¿quién cultiva las tierras abandonadas y preserva eventos centenarios? Si miramos esa realidad, queda claro que no son &amp;ldquo;destructores&amp;rdquo; de la cultura, sino la &lt;strong>&amp;ldquo;última línea de defensa&amp;rdquo;&lt;/strong>.&lt;/p>
&lt;hr>
&lt;h2 id="capítulo-5-preocupaciones-en-el-ámbito-educativo-y-la-cadena-de-acoso-bullying">Capítulo 5: Preocupaciones en el ámbito educativo y la cadena de &amp;ldquo;acoso&amp;rdquo; (bullying)
&lt;/h2>&lt;p>Los efectos secundarios de introducir la frase &amp;ldquo;Primero los Japoneses&amp;rdquo; en el ámbito educativo son graves.&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Dicotomía que divide entre &amp;ldquo;adentro y afuera&amp;rdquo;:&lt;/strong> Si los niños interiorizan un falso sentido de elitismo de que &amp;ldquo;los japoneses son una clase privilegiada que debe tener prioridad&amp;rdquo;, esto conduce fácilmente al acoso (bullying) para excluir a los que son &amp;ldquo;diferentes a nosotros&amp;rdquo;.&lt;/li>
&lt;li>&lt;strong>Jerarquización por raíces:&lt;/strong> Incluso si tienen nacionalidad japonesa, los niños con apariencia o nombres diferentes son atacados como &amp;ldquo;no japoneses&amp;rdquo;. Esto es el colapso de la educación y un acto de lastimarse a sí mismos, dañando a los talentos que liderarán el Japón del futuro.&lt;/li>
&lt;/ul>
&lt;p>Los expertos en el campo de la educación temen el riesgo de que la exclusividad inherente a la palabra &amp;ldquo;Primero&amp;rdquo; socave la capacidad de convivencia multicultural de los niños y, como resultado, aísle a Japón del resto del mundo.&lt;/p>
&lt;hr>
&lt;h2 id="capítulo-6-las-tendencias-globales-y-la-ola-del-populismo">Capítulo 6: Las tendencias globales y la ola del populismo
&lt;/h2>&lt;p>Este fenómeno no es exclusivo de Japón. En los países occidentales, también continúa el fenómeno donde las clases que no pudieron recibir los beneficios de la globalización se inclinan hacia un populismo que enarbola el &amp;ldquo;nacionalismo primero&amp;rdquo;.&lt;/p>
&lt;p>Sin embargo, en lo que Japón difiere decisivamente de Occidente es en el hecho de que &lt;strong>&amp;ldquo;su población está disminuyendo al ritmo más rápido del mundo&amp;rdquo;&lt;/strong>. Aunque otros países puedan tener la opción de &amp;ldquo;restringir&amp;rdquo;, en Japón ya existe un sinnúmero de infraestructuras sociales que no se pueden mantener sin &amp;ldquo;cooperación&amp;rdquo;. Aferrarse a un &amp;ldquo;Primero&amp;rdquo; puramente emocional significa lógicamente un &amp;ldquo;suicidio lento&amp;rdquo;.&lt;/p>
&lt;hr>
&lt;h2 id="a-modo-de-conclusión-qué-es-el-verdadero-primero-los-japoneses">A modo de conclusión: ¿Qué es el verdadero &amp;ldquo;Primero los Japoneses&amp;rdquo;?
&lt;/h2>&lt;p>El deseo expresado en las palabras &amp;ldquo;Primero los Japoneses&amp;rdquo; de que &amp;ldquo;se piense en la vida de los ciudadanos como prioridad&amp;rdquo; es en sí mismo la responsabilidad más básica que debe tener el gobierno de cualquier país.&lt;/p>
&lt;p>Sin embargo, el medio para cumplir ese deseo no debe ser la &amp;ldquo;exclusión del prójimo&amp;rdquo;. Como muestran los datos objetivos, la conveniencia de la vida, la seguridad, la cultura tradicional y el propio sistema de seguridad social que disfrutamos hoy en día se encuentran en una fase de &amp;ldquo;dependencia y coexistencia&amp;rdquo; que ya no puede sostenerse sin la presencia de los extranjeros.&lt;/p>
&lt;p>&lt;strong>¿Acaso el verdadero &amp;ldquo;Primero los Japoneses&amp;rdquo; no consiste en poner en práctica de manera serena los siguientes tres puntos?&lt;/strong>&lt;/p>
&lt;ol>
&lt;li>&lt;strong>Debates basados en hechos:&lt;/strong> Comprender la realidad basándose en las estadísticas primarias de las agencias gubernamentales, sin dejarse llevar por bulos o información exagerada.&lt;/li>
&lt;li>&lt;strong>Establecimiento de reglas justas:&lt;/strong> Hacer que los extranjeros cumplan las normas de Japón, mientras que la sociedad japonesa los trata como socios justos.&lt;/li>
&lt;li>&lt;strong>Actualización interna:&lt;/strong> Un cambio de mentalidad: aceptar a los extranjeros no significa &amp;ldquo;perder Japón&amp;rdquo;, sino tomar prestada su fuerza para &amp;ldquo;reconstruir y mantener Japón&amp;rdquo;.&lt;/li>
&lt;/ol>
&lt;p>En el año 2026, nos encontramos en una gran encrucijada. ¿Seguiremos gritando palabras de división y estrangulándonos a nosotros mismos? ¿O enfrentaremos la realidad y daremos un paso hacia un &amp;ldquo;Japón sostenible&amp;rdquo; donde personas diversas se apoyen mutuamente?&lt;/p>
&lt;p>La respuesta reside en la &amp;ldquo;inteligencia&amp;rdquo; y el &amp;ldquo;valor&amp;rdquo; en el corazón de cada uno de nosotros.&lt;/p></description></item><item><title>Qué hacer cuando no puedes cancelar Google One (Gemini)</title><link>http://kenji.blog/es/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/es/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 Qué hacer cuando no puedes cancelar Google One (Gemini)" />&lt;h1 id="atención-se-te-cobrará-cuando-termine-la-prueba-gratuita-de-gemini-resumen-de-cómo-cancelar">[Atención] ¿Se te cobrará cuando termine la prueba gratuita de Gemini? Resumen de cómo cancelar
&lt;/h1>&lt;p>Cuando intentas probar el servicio de IA de Google &amp;ldquo;Gemini&amp;rdquo;, inicialmente hay disponible una &lt;strong>prueba gratuita de 1 mes&lt;/strong>.
Creo que muchas personas se registran pensando &amp;ldquo;Si es gratis, lo probaré por ahora&amp;rdquo;, pero aquí hay una advertencia.&lt;/p>
&lt;hr>
&lt;h2 id="qué-pasa-cuando-termina-la-prueba-gratuita">¿Qué pasa cuando termina la prueba gratuita?
&lt;/h2>&lt;p>Cuando termina el período de prueba, se te cobrarán automáticamente &lt;strong>2.900 yenes al mes&lt;/strong>.
Esto está vinculado a una suscripción llamada &amp;ldquo;Membresía de Google One&amp;rdquo;, que es un sistema que hace la transición a la facturación continua si no haces nada.&lt;/p>
&lt;hr>
&lt;h2 id="si-cancelas-no-se-te-cobrará-pero">Si cancelas, no se te cobrará, pero&amp;hellip;
&lt;/h2>&lt;p>Por supuesto, si cancelas durante la prueba, no se te cobrará ninguna tarifa.
La página de ayuda oficial también tiene un artículo sobre &amp;ldquo;Cómo cancelar tu membresía de 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 la membresía de Google One (Oficial)&lt;/a>&lt;/p>
&lt;p>Sin embargo, cuando intenté acceder, me encontré en una situación en la que &amp;ldquo;por alguna razón no podía cancelar&amp;rdquo;.
Me confundí y pensé: &amp;ldquo;¿Eh, desde dónde debería pararlo?&amp;rdquo;.&lt;/p>
&lt;hr>
&lt;h2 id="el-método-de-cancelación-correcto-está-aquí">¡El método de cancelación correcto está aquí!
&lt;/h2>&lt;p>Después de investigar mucho, la página desde la que realmente pude cancelar fue la siguiente.&lt;/p>
&lt;p>👉 &lt;a class="link" href="https://myaccount.google.com/deleteservices" target="_blank" rel="noopener"
>Cuenta de Google – Eliminar un servicio&lt;/a>&lt;/p>
&lt;p>Si seleccionas &amp;ldquo;Google One&amp;rdquo; aquí y lo eliminas, la cancelación se completará.&lt;/p>
&lt;hr>
&lt;h2 id="resumen">Resumen
&lt;/h2>&lt;ul>
&lt;li>La prueba gratuita de Gemini dura 1 mes&lt;/li>
&lt;li>Tras finalizar, se te cobrarán automáticamente &lt;strong>2.900 yenes al mes&lt;/strong>&lt;/li>
&lt;li>Es posible que no puedas cancelar desde la página de ayuda oficial&lt;/li>
&lt;li>Donde realmente puedes cancelar es en la página &lt;strong>&amp;ldquo;Eliminar un servicio&amp;rdquo;&lt;/strong>&lt;/li>
&lt;/ul>
&lt;p>Si piensas &amp;ldquo;Está bien porque es una prueba gratuita&amp;rdquo;, ten cuidado de que no se te cobre sin darte cuenta.&lt;/p>
&lt;hr>
&lt;p>👉 Si estás leyendo este artículo, es posible que estés en un aprieto pensando &amp;ldquo;¿Desde dónde cancelo?&amp;rdquo;. De momento, por favor revisa el enlace de arriba.&lt;/p>
&lt;hr></description></item><item><title>Transmisión de desarrollo de app de tarjetas de Año Nuevo VOL.1 (Guion)</title><link>http://kenji.blog/es/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/es/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 Transmisión de desarrollo de app de tarjetas de Año Nuevo VOL.1 (Guion)" />&lt;h1 id="-guion-para-la-transmisión-de-youtube-desarrollo-de-app-de-tarjetas-de-año-nuevo---parte-1">🎬 Guion para la transmisión de YouTube (Desarrollo de app de tarjetas de Año Nuevo - Parte 1)
&lt;/h1>&lt;ol start="0">
&lt;li>Inicio de la transmisión (Primeros 2-3 minutos)&lt;/li>
&lt;/ol>
&lt;h3 id="saludo-breve">Saludo breve
&lt;/h3>&lt;p>&amp;ldquo;Hola. Hoy comenzaremos a transmitir el desarrollo paso a paso de una aplicación para crear tarjetas de Año Nuevo en C++.&amp;rdquo;
&amp;ldquo;No sé cuántas transmisiones tomará hasta completarlo, pero avanzaremos poco a poco como una serie.&amp;rdquo;
&amp;ldquo;Básicamente, trabajaré en silencio, así que espero que puedan verlo como música de fondo (BGM) para trabajar.&amp;rdquo;&lt;/p>
&lt;h3 id="descripción-general-de-la-aplicación-deseada">Descripción general de la aplicación deseada
&lt;/h3>&lt;p>&amp;ldquo;En esta aplicación, quiero que sea posible diseñar la parte posterior de la tarjeta de Año Nuevo.&amp;rdquo;
&amp;ldquo;Planeamos incorporar la inserción de fotos, arreglos de fuentes y procesamiento de imágenes o generación de ilustraciones usando IA, y finalmente subirla a la Microsoft Store.&amp;rdquo;&lt;/p>
&lt;h3 id="objetivos-de-trabajo-de-hoy">Objetivos de trabajo de hoy
&lt;/h3>&lt;p>&amp;ldquo;Hoy, en la primera sesión, prepararemos el entorno y crearemos la base.&amp;rdquo;
&amp;ldquo;Específicamente,&lt;/p>
&lt;ul>
&lt;li>Crear el repositorio GIT&lt;/li>
&lt;li>Crear la ventana principal&lt;/li>
&lt;li>Mostrar el diálogo de información de la versión&lt;/li>
&lt;li>Crear el menú e implementar el comando de salida&lt;/li>
&lt;li>Procesamiento de inicialización/liberación de Direct2D y visualización de HelloWorld&lt;/li>
&lt;/ul>
&lt;p>Me gustaría avanzar con esto.&amp;rdquo;&lt;/p>
&lt;h3 id="sobre-la-publicación-del-código-fuente">Sobre la publicación del código fuente
&lt;/h3>&lt;p>&amp;ldquo;El código fuente está publicado en GitHub. Si están interesados, echen un vistazo.&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 de trabajo (En silencio)&lt;/li>
&lt;/ol>
&lt;p>Crear repositorio en GitHub → Commit inicial&lt;/p>
&lt;p>Crear plantilla de la ventana principal&lt;/p>
&lt;p>Crear diálogo de versión, menú e implementar comando de salida&lt;/p>
&lt;p>Procesamiento de inicialización y liberación de Direct2D → Confirmar visualización de HelloWorld&lt;/p>
&lt;p>Hacer push a GitHub cuando sea apropiado&lt;/p>
&lt;p>※ Básicamente en silencio, agregando explicaciones breves solo cuando sea necesario&lt;/p>
&lt;ol start="2">
&lt;li>Antes de finalizar la transmisión (Últimos 1-2 minutos)&lt;/li>
&lt;/ol>
&lt;h3 id="resumen-del-progreso-de-hoy">Resumen del progreso de hoy
&lt;/h3>&lt;p>&amp;ldquo;Hoy, creamos el repositorio GIT e implementamos la ventana, el botón de salida y el diálogo de versión.&amp;rdquo;
&amp;ldquo;Llegamos hasta mostrar HelloWorld con Direct2D.&amp;rdquo;&lt;/p>
&lt;h3 id="conexión-con-la-próxima-vez">Conexión con la próxima vez
&lt;/h3>&lt;p>&amp;ldquo;A partir de la próxima vez, espero avanzar con la organización de la interfaz de usuario, la objetivación de cadenas de texto, etc.&amp;rdquo;&lt;/p>
&lt;h3 id="anunciar-nuevamente-el-enlace-de-github">Anunciar nuevamente el enlace de 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="cierre">Cierre
&lt;/h3>&lt;p>&amp;ldquo;Gracias por mirar. Continuaremos trabajando de manera constante la próxima vez, así que se los encargo.&amp;rdquo;&lt;/p></description></item><item><title>Habilitar la instalación de msix con un certificado autofirmado</title><link>http://kenji.blog/es/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/es/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 Habilitar la instalación de msix con un certificado autofirmado" />&lt;h1 id="habilitar-la-instalación-de-msix-con-un-certificado-autofirmado">Habilitar la instalación de msix con un certificado autofirmado
&lt;/h1>&lt;p>Al distribuir aplicaciones en Windows, el uso del &lt;strong>paquete MSIX&lt;/strong> es conveniente ya que unifica los mecanismos de instalación y actualización. Sin embargo, MSIX tiene la restricción de requerir un &amp;ldquo;certificado firmado obligatoriamente&amp;rdquo;.
En ocasiones, cuando se desea distribuir una aplicación desarrollada por una empresa o un individuo con fines de prueba, &amp;ldquo;comprar un certificado de firma de código comercial puede resultar excesivo&amp;rdquo;.&lt;/p>
&lt;p>Ahí es donde resulta útil el &lt;strong>certificado autofirmado (Self-Signed Certificate)&lt;/strong>. En este artículo, resumiremos los pasos para adjuntar un certificado autofirmado a un MSIX para permitir su instalación en un entorno local.&lt;/p>
&lt;hr>
&lt;h2 id="1-crear-un-certificado-autofirmado">1. Crear un certificado autofirmado
&lt;/h2>&lt;p>Primero, inicie PowerShell en modo administrador y ejecute el siguiente 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">Crear&lt;/span> &lt;span class="n">certificado&lt;/span> &lt;span class="n">autofirmado&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>Lo que se crea aquí es un certificado para &amp;ldquo;firma de código&amp;rdquo;.&lt;/p>
&lt;ul>
&lt;li>Asignar un nombre fácil de entender con &lt;code>-FriendlyName&lt;/code> facilita su búsqueda posterior.&lt;/li>
&lt;li>La fecha de vencimiento se puede ajustar con &lt;code>-NotAfter&lt;/code>. En esta ocasión, está configurada para 10 años.&lt;/li>
&lt;/ul>
&lt;hr>
&lt;h2 id="2-exportar-el-archivo-pfx">2. Exportar el archivo PFX
&lt;/h2>&lt;p>Exporte el certificado creado en formato PFX para poder utilizarlo con &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">Crear&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>La contraseña configurada en este momento (en el ejemplo, &lt;code>password&lt;/code>) será necesaria para la posterior operación de firma.&lt;/p>
&lt;hr>
&lt;h2 id="3-instalar-el-certificado-autofirmado-en-las-entidades-de-certificación-raíz-de-confianza">3. Instalar el certificado autofirmado en las entidades de certificación raíz de confianza
&lt;/h2>&lt;p>El certificado creado no es confiable para Windows por defecto. Para instalarlo, debe importarse desde &lt;code>certmgr.msc&lt;/code> en &lt;strong>[Entidades de certificación raíz de confianza] → [Certificados]&lt;/strong>.&lt;/p>
&lt;p>Si importa el certificado exportado (&lt;code>.cer&lt;/code> o &lt;code>.pfx&lt;/code>), se tratará como un certificado de confianza en la PC de destino.
Con esto, no aparecerá la advertencia de &amp;ldquo;certificado no confiable&amp;rdquo; al firmar el MSIX.&lt;/p>
&lt;hr>
&lt;h2 id="4-firmar-el-instalador-msix">4. Firmar el instalador (MSIX)
&lt;/h2>&lt;p>Finalmente, utilice el certificado PFX creado para firmar el MSIX. &lt;code>signtool&lt;/code> está incluido en Visual Studio o 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">Firmar&lt;/span> &lt;span class="n">el&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 el algoritmo de firma.&lt;/li>
&lt;li>&lt;code>/f&lt;/code> especifica el archivo PFX y &lt;code>/p&lt;/code> proporciona la contraseña.&lt;/li>
&lt;li>Finalmente, especifique la ruta del archivo MSIX.&lt;/li>
&lt;li>Si la ruta de signtool no está configurada, especifique la ruta completa. En mi entorno, se encontraba en la siguiente ubicació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;/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>Con esto, la firma se ha completado y el MSIX instalable en la PC de destino está listo.&lt;/p>
&lt;hr>
&lt;h2 id="resumen">Resumen
&lt;/h2>&lt;ul>
&lt;li>Crear un certificado autofirmado con &lt;strong>New-SelfSignedCertificate&lt;/strong>&lt;/li>
&lt;li>Exportar el PFX con &lt;strong>Export-PfxCertificate&lt;/strong>&lt;/li>
&lt;li>Instalar el certificado en las &lt;strong>Entidades de certificación raíz de confianza&lt;/strong>&lt;/li>
&lt;li>Firmar el MSIX con &lt;strong>signtool&lt;/strong>&lt;/li>
&lt;/ul>
&lt;p>Si comprende este flujo, podrá realizar pruebas de funcionamiento y distribuciones de prueba en un entorno local sin comprar un certificado comercial.
Por supuesto, para la distribución comercial real, un certificado emitido por una autoridad de certificación es obligatorio, pero este método es muy útil en las etapas de desarrollo y verificación.&lt;/p>
&lt;hr>
&lt;p>👉 En esta ocasión usamos installer.msix como ejemplo, pero el mismo procedimiento se puede aplicar a aplicaciones de desarrollo propio.&lt;/p>
&lt;hr></description></item><item><title>La historia secreta del desarrollo de LogicPad</title><link>http://kenji.blog/es/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/es/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 La historia secreta del desarrollo de LogicPad" />&lt;h1 id="herramientas-para-aquellos-que-no-pueden-escribir-código-pero-tienen-lógica-la-razón-por-la-que-creé-logicpad">Herramientas para aquellos que &amp;ldquo;no pueden escribir código, pero tienen lógica&amp;rdquo;. La razón por la que creé LogicPad.
&lt;/h1>&lt;p>Hola, soy kenji. Soy el creador de la herramienta low-code &amp;ldquo;&lt;a class="link" href="https://logicpad.org" target="_blank" rel="noopener"
>LogicPad&lt;/a>&amp;rdquo;.
Esta vez no voy a presentar el producto, sino que me gustaría escribir desde una perspectiva un poco más personal sobre los entresijos de su desarrollo, &amp;ldquo;¿por qué decidí crear esto?&amp;rdquo;, y mis propios pensamientos.&lt;/p>
&lt;p>Para ser honesto, esto no fue un simple desarrollo de herramientas.
Mi pasado, mis frustraciones en el trabajo, mis habilidades, y ese deseo latente de &amp;ldquo;algún día crear mi propio producto&amp;rdquo; &amp;ndash;
Todos estos factores se combinaron, y el resultado fue la creación de LogicPad.&lt;/p>
&lt;p>En otras palabras, &lt;strong>este es también mi &amp;ldquo;proyecto culminante de vida&amp;rdquo;&lt;/strong>.
Voy a escribir sobre estos antecedentes lo más sinceramente y con toda la pasión posible.&lt;/p>
&lt;hr>
&lt;h2 id="quería-un-producto-del-cual-pudiera-decir-con-orgullo-yo-lo-creé">Quería un producto del cual pudiera decir con orgullo, &amp;ldquo;Yo lo creé&amp;rdquo;
&lt;/h2>&lt;p>Para ser sincero, esta fue mi motivación inicial.&lt;/p>
&lt;p>Desde hace mucho tiempo, me gustaba escribir código, ya fuera por trabajo o por afición. He participado en varios desarrollos.
Pero un día, de repente, me di cuenta.
&lt;strong>&amp;ldquo;No tengo un producto que haya lanzado al mundo bajo mi propio nombre y responsabilidad&amp;rdquo;&lt;/strong>.&lt;/p>
&lt;p>Por supuesto, hay valor en las cosas que creas en equipo, y también tuve muchos trabajos de los que me siento orgulloso.
Pero en el fondo, sentía un vacío pensando, &amp;ldquo;¿Terminaré mi carrera bajo el nombre de otra persona?&amp;rdquo;.&lt;/p>
&lt;p>Solo una vez.
&lt;strong>Quiero dejar algo de lo que pueda decir con orgullo, &amp;ldquo;Esto lo creé yo&amp;rdquo;.&lt;/strong>
Con ese pensamiento, comencé a desarrollar el concepto de LogicPad. Fue hace unos 6 años (alrededor de 2019).
(La idea original en sí se remonta a unos 10 años, alrededor de 2015, cuando conocí Blueprints, el lenguaje de programación visual de 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="no-poder-intentar-algo-por-no-saber-escribir-código-no-es-un-desperdicio">No poder intentar algo por no saber escribir código. ¿No es un desperdicio?
&lt;/h2>&lt;p>En mi trabajo, había mucha gente brillante.&lt;/p>
&lt;p>Podían construir lógica. Dominaban las funciones de Excel a voluntad y podían identificar la esencia de un problema.
Pero&amp;hellip; se detenían en la etapa de &amp;ldquo;escribir código&amp;rdquo;.&lt;/p>
&lt;p>&amp;ldquo;Este trabajo, lo hago cada vez siguiendo un manual, ¿no se podría automatizar?&amp;rdquo;
&amp;ldquo;Sí, se puede. Pero&amp;hellip; para eso hay que escribir código&amp;hellip;&amp;rdquo;&lt;/p>
&lt;p>Tuvimos esa conversación muchas veces.&lt;/p>
&lt;p>Cada vez que pasaba, pensaba:
&lt;strong>&amp;ldquo;Es una verdadera lástima que se detengan ante el muro del código a pesar de entender la lógica&amp;rdquo;.&lt;/strong>&lt;/p>
&lt;hr>
&lt;h2 id="la-opción-de-un-editor-low-code">La opción de un editor low-code
&lt;/h2>&lt;p>De hecho, en mi trabajo anterior, estaba desarrollando un CAD 2D operado mediante GUI.
En CAD, usas el ratón para ensamblar formas, ¿verdad?
En otras palabras, es un mundo donde &lt;strong>&amp;ldquo;construyes lógica a través de operaciones&amp;rdquo;&lt;/strong>.&lt;/p>
&lt;p>Pensé, &amp;ldquo;Esto encaja perfectamente con el low-code&amp;rdquo;.&lt;/p>
&lt;p>Yendo aún más atrás, desde mis días de estudiante, he estado escribiendo pequeños programas cada vez que se me ocurría algo, como procesamiento de imágenes, procesamiento numérico, herramientas de Windows, herramientas de publicación automática en redes sociales, etc.
Creo que tengo más de 600. Todavía están en mi GitHub.&lt;/p>
&lt;p>En aquel entonces, no pensaba en el significado de esto.
Simplemente &amp;ldquo;los creaba porque quería&amp;rdquo;. Eso era todo.&lt;/p>
&lt;p>Pero ahora, mientras desarrollo LogicPad&amp;hellip;&lt;/p>
&lt;p>&lt;strong>Siento como si los puntos finalmente se hubieran conectado para formar una línea.&lt;/strong>&lt;/p>
&lt;hr>
&lt;h2 id="fácil-de-usar-pero-potente-la-dificultad-del-equilibrio">Fácil de usar, pero potente. La dificultad del equilibrio
&lt;/h2>&lt;p>Mientras avanzaba en el desarrollo, lo que siempre tuve en mente fue
&lt;strong>&amp;ldquo;hacer una herramienta que fuera intuitiva de usar, y a la vez, verdaderamente poderosa&amp;rdquo;&lt;/strong>.&lt;/p>
&lt;p>Si agregas funciones, puedes hacer más cosas. Pero se vuelve difícil de usar.
Si lo haces simple, cualquiera puede usarlo. Pero entonces, habrá gente a la que le parezca insuficiente.&lt;/p>
&lt;p>Para que no digan, &amp;ldquo;¿Las herramientas low-code son solo juguetes?&amp;rdquo;.
Pero también para que no digan, &amp;ldquo;Al final, si no escribes código, no sirve de nada&amp;rdquo;.&lt;/p>
&lt;p>&lt;strong>Estuve luchando todo el tiempo en esa delgada línea entre la intuición y la expresividad.&lt;/strong>&lt;/p>
&lt;p>Rehice la interfaz de usuario muchas veces, la descarté muchas veces,
y cuando finalmente me acerqué a una forma en la que pensé, &amp;ldquo;Esto puede funcionar&amp;rdquo;, me sentí realmente feliz.&lt;/p>
&lt;hr>
&lt;h2 id="me-salvó-la-palabra-de-la-primera-usuaria">Me salvó la palabra de la primera &amp;ldquo;usuaria&amp;rdquo;
&lt;/h2>&lt;p>La primera persona a la que le di LogicPad fue a una ex colega.
No se le daban bien las TI, y le asustaba el código. Pero era buena con la lógica.&lt;/p>
&lt;p>Le expliqué un poco y dejé que lo probara&amp;hellip; Las palabras que dijo unos minutos después, aún no las puedo olvidar.&lt;/p>
&lt;blockquote>
&lt;p>&lt;strong>&amp;quot;¡Con esto, creo que yo también podría hacerlo!&amp;quot;&lt;/strong>&lt;/p>
&lt;/blockquote>
&lt;p>Casi lloro.
Esto era exactamente lo que quería ofrecer.&lt;/p>
&lt;p>No una herramienta que funciona, sino &lt;strong>la sensación de &amp;ldquo;¡Lo hice yo mismo!&amp;rdquo;&lt;/strong>.
Me convencí de que ese es el verdadero valor de LogicPad.&lt;/p>
&lt;hr>
&lt;h2 id="cuando-más-gente-pueda-crear-la-sociedad-será-mucho-más-interesante">Cuando más gente pueda crear, la sociedad será mucho más interesante
&lt;/h2>&lt;p>Realmente creo que la &amp;ldquo;democratización de la tecnología&amp;rdquo; es importante.&lt;/p>
&lt;p>La tecnología tiene el poder de cambiar el mundo.
Pero las personas que pueden manejarla son limitadas.&lt;/p>
&lt;p>¿Qué pasaría si pudieras crear aplicaciones solo con &amp;ldquo;entender la lógica&amp;rdquo;?&lt;/p>
&lt;p>&lt;strong>Más personas podrían pasar al &amp;ldquo;lado de los creadores&amp;rdquo;.&lt;/strong>
Y creo que lo que nazca de ahí superará nuestra imaginación actual.&lt;/p>
&lt;p>Si LogicPad pudiera ser esa puerta de entrada.
Quiero que sea una herramienta que transforme el &amp;ldquo;quiero intentar crear&amp;rdquo; en &amp;ldquo;puedo crear&amp;rdquo;.&lt;/p>
&lt;p>Ese es mi deseo.&lt;/p>
&lt;hr>
&lt;h2 id="para-terminar">Para terminar
&lt;/h2>&lt;p>LogicPad todavía está en versión beta y no está terminado.
Todavía hay muchas cosas que mejorar y que quiero hacer.&lt;/p>
&lt;p>Pero, &lt;strong>he volcado todos los &amp;ldquo;puntos&amp;rdquo; de mi vida en esta herramienta.&lt;/strong>
Ahora puedo decirlo con orgullo.&lt;/p>
&lt;p>&lt;strong>&amp;ldquo;Este es el producto que yo creé.&amp;rdquo;&lt;/strong>&lt;/p>
&lt;hr>
&lt;h3 id="-extra-lo-que-puedes-hacer-con-logicpad">👇 Extra: Lo que puedes hacer con LogicPad
&lt;/h3>&lt;ul>
&lt;li>Construir procesos arrastrando y soltando&lt;/li>
&lt;li>Manejar bifurcaciones condicionales, variables, etc. en una GUI&lt;/li>
&lt;li>Preparado con diversos nodos de integración con IA&lt;/li>
&lt;li>Posibilidad de expansión para usuarios avanzados insertando scripts&lt;/li>
&lt;li>Funciones matemáticas y procesamiento de datos de alta precisión (cálculos numéricos de precisión infinita, etc.)&lt;/li>
&lt;li>Amplia gama de atajos de teclado para usuarios avanzados&lt;/li>
&lt;li>Soporta más de 90 idiomas&lt;/li>
&lt;/ul>
&lt;hr>
&lt;h3 id="lo-que-quiero-hacer-a-continuación">Lo que quiero hacer a continuación
&lt;/h3>&lt;ul>
&lt;li>Generar lógica a partir de lenguaje natural colaborando con IA&lt;/li>
&lt;li>Un sistema donde los usuarios puedan crear nodos personalizados&lt;/li>
&lt;li>Construir una plataforma para compartir nodos y lógicas creadas&lt;/li>
&lt;/ul>
&lt;hr>
&lt;h2 id="-epílogo">✍️ Epílogo
&lt;/h2>&lt;p>Muchas gracias por leer hasta aquí.
Este no fue un simple desarrollo de herramientas, sino un desafío en el que volqué mi propia experiencia, pasión y fragmentos de mi vida.&lt;/p>
&lt;p>&amp;ldquo;No puedo escribir código, pero tengo lógica.&amp;rdquo;
Un futuro donde esas personas &lt;strong>&amp;ldquo;puedan crear&amp;rdquo;&lt;/strong> por sí mismas.
Eso es lo que quiero seguir buscando a través de LogicPad.&lt;/p>
&lt;p>Si al menos logré que pensaras &amp;ldquo;me gustaría usarlo&amp;rdquo;, con eso ya me siento muy feliz.
Si estás interesado, no dudes en probar &lt;a class="link" href="https://logicpad.org" target="_blank" rel="noopener"
>LogicPad&lt;/a>.&lt;/p>
&lt;p>Y si lo pruebas, agradecería cualquier comentario o cosa que notes, sin importar cuán pequeña sea.
Tu voz será una gran fuerza para dar el siguiente paso en este producto.&lt;/p>
&lt;p>Espero seguir contando con tu apoyo.&lt;/p></description></item><item><title>Cómo eliminar de forma masiva metadatos (información personal) de Excel, Word, etc. con PowerShell</title><link>http://kenji.blog/es/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/</link><pubDate>Wed, 30 Jul 2025 02:42:40 +0900</pubDate><guid>http://kenji.blog/es/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/</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 Cómo eliminar de forma masiva metadatos (información personal) de Excel, Word, etc. con PowerShell" />&lt;h1 id="cómo-eliminar-de-forma-masiva-metadatos-información-personal-de-excel-word-etc-con-powershell">Cómo eliminar de forma masiva metadatos (información personal) de Excel, Word, etc. con PowerShell
&lt;/h1>&lt;p>Los archivos de Office como Excel guardan automáticamente &amp;ldquo;metadatos (información personal)&amp;rdquo; como el autor, la persona que lo modificó por última vez, el nombre de la empresa, etc. Hay muchos casos en los que se desea eliminar esta información, como al compartir archivos fuera de la empresa.&lt;/p>
&lt;p>En este artículo, explicaremos en detalle cómo eliminar metadatos de Excel usando PowerShell, enfocándonos en el &lt;strong>procesamiento por lotes en una carpeta ** y su ** aplicación a otros archivos de Office como Word y PowerPoint&lt;/strong>.&lt;/p>
&lt;hr>
&lt;h2 id="1-eliminar-los-metadatos-de-un-solo-archivo-de-excel">1. Eliminar los metadatos de un solo archivo de Excel
&lt;/h2>&lt;p>Este es el script más básico para eliminar la información personal de un solo archivo de Excel. Llama al objeto COM de Excel, establece la propiedad &lt;code>RemovePersonalInformation&lt;/code> en &lt;code>$true&lt;/code> y guarda los cambios sobrescribiendo el archivo.&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 la aplicación 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 el archivo (*Especificar ruta absoluta)&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"># Habilitar la configuración para eliminar metadatos (información personal)&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"># Guardar sobrescribiendo y cerrar&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"># Cerrar Excel y liberar memoria&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>&lt;strong>Nota:&lt;/strong> La ruta que se pasa a &lt;code>Workbooks.Open()&lt;/code> debe ser siempre una ** ruta absoluta (ruta completa)**. El uso de rutas relativas puede causar errores.&lt;/p>
&lt;/blockquote>
&lt;hr>
&lt;h2 id="2-procesar-todos-los-archivos-de-excel-en-una-carpeta-en-masa">2. Procesar todos los archivos de Excel en una carpeta en masa
&lt;/h2>&lt;p>En la práctica, habrá muchos casos en los que se desee &amp;ldquo;eliminar los metadatos de docenas de archivos de Excel en una carpeta específica a la vez&amp;rdquo;. Esto se puede lograr combinando &lt;code>Get-ChildItem&lt;/code> con un bucle.&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"># Obtener todos los archivos .xlsx y .xls en la carpeta&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;No se encontraron archivos de Excel.&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;Eliminando metadatos 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 el archivo&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"># Eliminar metadatos y guardar sobrescribiendo&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 el procesamiento ha finalizado!&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-eliminar-metadatos-de-otros-archivos-de-office-word--powerpoint">3. Eliminar metadatos de otros archivos de Office (Word / PowerPoint)
&lt;/h2>&lt;p>Los metadatos se pueden eliminar no solo en Excel, sino también en Word y PowerPoint utilizando exactamente la misma lógica. Lo único que cambia es el nombre del objeto COM que se llama; la propiedad &lt;code>RemovePersonalInformation&lt;/code> es común en todos.&lt;/p>
&lt;h3 id="para-word">Para 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-powerpoint">Para PowerPoint
&lt;/h3>&lt;p>En el caso de PowerPoint, la configuración de la propiedad &lt;code>RemovePersonalInformation&lt;/code> es la misma, pero el comportamiento del inicio oculto es un poco 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 el modo oculto (msoFalse), etc. del segundo al cuarto argumento&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="resumen">Resumen
&lt;/h2>&lt;p>Aprovechando PowerShell y los objetos COM, puede automatizar completamente la eliminación de metadatos de archivos de Office. Para evitar la filtración accidental de información confidencial o nombres personales, es muy útil tener a mano un script de procesamiento por lotes para carpetas antes de entregar los archivos.&lt;/p></description></item><item><title>La conjetura de Kepler explicada de forma sencilla</title><link>http://kenji.blog/es/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/</link><pubDate>Mon, 21 Jul 2025 22:53:03 +0900</pubDate><guid>http://kenji.blog/es/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/</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 La conjetura de Kepler explicada de forma sencilla" />&lt;h1 id="la-conjetura-de-kepler-explicada-de-forma-sencilla-la-mejor-forma-de-empaquetar-sandías">¡La conjetura de Kepler explicada de forma sencilla! 〜La mejor forma de empaquetar sandías〜
&lt;/h1>&lt;p>¡Hola, soy kenji!&lt;/p>
&lt;p>Hoy me gustaría explicar de la forma más sencilla posible una historia matemática con un nombre que suena un poco difícil: &amp;ldquo;La conjetura de Kepler&amp;rdquo;.&lt;/p>
&lt;p>A primera vista, parece un tema muy específico para aficionados, pero también es un problema bastante cotidiano: &amp;ldquo;¿Cómo podemos empaquetar sandías en una caja de la manera más compacta posible?&amp;rdquo;. Tiene que ver con las neveras de las tiendas de conveniencia y también con cómo se apila la carga.&lt;/p>
&lt;p>Y, en el mundo de las matemáticas, esta es una historia súper romántica porque &lt;strong>¡no se pudo demostrar durante más de 400 años!&lt;/strong>.&lt;/p>
&lt;p>¡Vamos a ello!&lt;/p>
&lt;hr>
&lt;h2 id="para-empezar-quién-es-kepler">Para empezar, ¿quién es Kepler?
&lt;/h2>&lt;p>Primero, ¿quién es el &amp;ldquo;Kepler&amp;rdquo; de la &amp;ldquo;conjetura de Kepler&amp;rdquo;?&lt;/p>
&lt;p>Es el nombre de &lt;strong>Johannes Kepler&lt;/strong>, un astrónomo y matemático alemán.&lt;/p>
&lt;p>Este hombre fue increíble.
Por ejemplo, fue él quien descubrió que las órbitas de los planetas son elípticas. Hoy en día es un conocimiento básico, pero en aquella época (alrededor del año 1600) era una época en la que ni siquiera se creía firmemente en el heliocentrismo.&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Galileo = Genio de la observación&lt;/strong>&lt;/li>
&lt;li>&lt;strong>Kepler = Genio que explicó el universo con fórmulas matemáticas&lt;/strong>&lt;/li>
&lt;li>&lt;strong>Newton = Súper genio que resumió esa teoría en leyes físicas&lt;/strong>&lt;/li>
&lt;/ul>
&lt;p>En ese sentido, Kepler fue un pionero en &amp;ldquo;explicar el universo con fórmulas matemáticas&amp;rdquo;.&lt;/p>
&lt;p>Y así, un día, él planteó lo siguiente.&lt;/p>
&lt;hr>
&lt;h2 id="qué-es-la-conjetura-de-kepler">¿Qué es la conjetura de Kepler?
&lt;/h2>&lt;p>La &amp;ldquo;conjetura de Kepler&amp;rdquo;, en pocas palabras, es esto:&lt;/p>
&lt;hr>
&lt;blockquote>
&lt;p>&lt;strong>Cuando empaquetas esferas del mismo tamaño (sandías o naranjas) en una caja, ¿qué disposición permite empaquetarlas de la manera más compacta?&lt;/strong>&lt;/p>
&lt;/blockquote>
&lt;hr>
&lt;p>Ese es el problema.&lt;/p>
&lt;p>Y lo que Kepler conjeturó en la década de 1600 fue:&lt;/p>
&lt;blockquote>
&lt;p>&lt;strong>Igual que cuando se apilan las naranjas en la frutería, apilarlas en forma de triángulo, ¿no es lo más eficiente?&lt;/strong>&lt;/p>
&lt;/blockquote>
&lt;p>A esto se le llama en matemáticas el &amp;ldquo;&lt;strong>problema del empaquetamiento de esferas&lt;/strong>&amp;rdquo;, que busca la forma de empaquetar esferas de la manera más densa en el espacio.&lt;/p>
&lt;p>Kepler predijo que una disposición llamada &amp;ldquo;&lt;strong>estructura cúbica centrada en las caras (FCC)&lt;/strong>&amp;rdquo; (algo así como apilar sandías en forma de triángulo) era la más eficiente.&lt;/p>
&lt;p>Y, bueno, todos pensaban &amp;ldquo;sí, parece que es así&amp;rdquo;, pero demostrar matemáticamente que &amp;ldquo;¡definitivamente es la mejor!&amp;rdquo; era extremadamente difícil.&lt;/p>
&lt;hr>
&lt;h2 id="400-años-hasta-la-demostración">¡¿400 años hasta la demostración?!
&lt;/h2>&lt;p>Entonces, ¿cuándo se demostró realmente?&lt;/p>
&lt;p>Increíblemente, fue &lt;strong>alrededor de 1998 a 2005&lt;/strong>.
Es decir, &lt;strong>nadie pudo demostrarlo en casi 400 años&lt;/strong>. Una locura.&lt;/p>
&lt;p>Además, quien lo demostró fue el matemático estadounidense &lt;strong>Thomas Hales&lt;/strong>.&lt;/p>
&lt;p>Él dedujo que era imposible hacerlo solo a mano y &lt;strong>utilizó computadoras para la demostración&lt;/strong>.
Sin embargo, surgió un problema: ¡la demostración era tan compleja que los humanos no podían verificarla correctamente!&lt;/p>
&lt;p>Por eso, en el mundo de las matemáticas, se desató un gran debate: &amp;ldquo;Entonces, ¿podemos confiar realmente en algo demostrado con una computadora?&amp;rdquo;.&lt;/p>
&lt;p>Finalmente, la demostración (oficialmente llamada &amp;ldquo;demostración formal&amp;rdquo;) de que &amp;ldquo;¡ha sido verificado estrictamente incluyendo la computadora!&amp;rdquo; se completó en &lt;strong>2014&lt;/strong>.&lt;/p>
&lt;p>En otras palabras, &lt;strong>pasaron más de 400 años hasta que se demostró que la intuición de Kepler era correcta&lt;/strong>. Qué romántico.&lt;/p>
&lt;hr>
&lt;h2 id="también-se-utiliza-mucho-en-la-vida-real">También se utiliza mucho en la vida real
&lt;/h2>&lt;p>Uno pensaría que &amp;ldquo;cómo apilar esferas&amp;rdquo; es algo que solo interesa a los frikis de las matemáticas, pero en realidad es súper práctico.&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Para empacar eficientemente las bebidas en las neveras de las tiendas de conveniencia&lt;/strong>&lt;/li>
&lt;li>&lt;strong>Al apilar latas en palés de transporte&lt;/strong>&lt;/li>
&lt;li>&lt;strong>También se aplica en las comunicaciones (como en la compresión de señales digitales)&lt;/strong>&lt;/li>
&lt;li>&lt;strong>Se usa en impresoras 3D y en el diseño de estructuras cristalinas&lt;/strong>&lt;/li>
&lt;/ul>
&lt;p>Y muchas más, de hecho es una teoría que se usa muchísimo detrás de nuestra vida cotidiana.&lt;/p>
&lt;hr>
&lt;h2 id="conclusión-la-intuición-humana-es-asombrosa">Conclusión: La intuición humana es asombrosa
&lt;/h2>&lt;p>En fin, para resumir:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Conjetura de Kepler&lt;/strong> = ¿Cómo empaquetar esferas de la manera más compacta?&lt;/li>
&lt;li>&lt;strong>Kepler&lt;/strong> = Matemático y astrónomo que descubrió la órbita de los planetas&lt;/li>
&lt;li>&lt;strong>¡Se conjeturó en el siglo XVII! ¡Pero se demostró en el siglo XXI!&lt;/strong>&lt;/li>
&lt;li>&lt;strong>¡Tiene muchas aplicaciones en la vida real!&lt;/strong>&lt;/li>
&lt;/ul>
&lt;p>Y lo más interesante de todo es:
&lt;strong>&amp;ldquo;La forma de apilar que los fruteros hacían por intuición, también era la mejor matemáticamente.&amp;rdquo;&lt;/strong>&lt;/p>
&lt;p>En otras palabras, &lt;strong>la intuición humana es asombrosa&lt;/strong>.
Y que &lt;strong>puede tomar 400 años demostrarlo&lt;/strong>, es una historia verdaderamente romántica.&lt;/p>
&lt;hr>
&lt;p>Si te interesa, busca sobre &amp;ldquo;Thomas Hales&amp;rdquo;, &amp;ldquo;demostración formal&amp;rdquo; o &amp;ldquo;Sphere Packing&amp;rdquo;. Si profundizas en el tema, es súper interesante.&lt;/p>
&lt;p>¡Hasta luego!&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">Comprar ahora&lt;/a>&lt;/div>&lt;/div></description></item><item><title>La barrera del desarrollo de IA</title><link>http://kenji.blog/es/p/ai%E9%96%8B%E7%99%BA%E3%81%AE%E5%A3%81/</link><pubDate>Sun, 20 Jul 2025 21:52:42 +0900</pubDate><guid>http://kenji.blog/es/p/ai%E9%96%8B%E7%99%BA%E3%81%AE%E5%A3%81/</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 La barrera del desarrollo de IA" />&lt;h1 id="la-barrera-del-desarrollo-de-ia">La barrera del desarrollo de IA
&lt;/h1>&lt;p>&lt;strong>〜Llegué a la octava estación, pero a partir de ahí fue un infierno〜&lt;/strong>&lt;/p>
&lt;p>Hola, soy kenji.&lt;/p>
&lt;p>Últimamente, escucho mucho decir: &amp;ldquo;¡Le pedí a la IA que hiciera una aplicación y la hizo!&amp;rdquo;.
Hemos superado la era de &lt;em>no-code&lt;/em> y &lt;em>low-code&lt;/em>, y estamos entrando en una fase como de &amp;ldquo;programación por vibras&amp;rdquo; (escribir código por intuición).&lt;/p>
&lt;p>Por ejemplo, si le dices: &amp;ldquo;Hazme una aplicación que pueda editar fotos y publicarlas en redes sociales&amp;rdquo;, la IA escupe el código e incluso la interfaz de usuario (UI).
&lt;strong>Increíble, ya no necesitamos a los humanos, ¿verdad? Eso es lo que uno piensa.&lt;/strong>&lt;/p>
&lt;p>Pero, ¿saben? Eso es &lt;strong>como aterrizar en la octava estación del Monte Fuji en sandalias&lt;/strong>.&lt;/p>
&lt;hr>
&lt;h2 id="hasta-la-octava-estación-parece-un-paseo">Hasta la octava estación parece un &amp;ldquo;paseo&amp;rdquo;
&lt;/h2>&lt;p>Desarrollar con IA es realmente fácil al principio.
¿Entrada/Salida de archivos (File IO)? Funciona por ahora.
¿Red? Bueno, se conecta.
¿Base de datos? Con JSON es suficiente.
¿UI? ChatGPT me dio el código en React.
¿Pagos? Con copiar y pegar la API de Stripe basta.&lt;/p>
&lt;p>Aquí es donde te haces la ilusión de: &amp;ldquo;¿Acaso ya soy ingeniero?&amp;rdquo;.
Pero el verdadero infierno comienza a partir de aquí.&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-qué-nos-atascamos">¿Por qué nos atascamos?
&lt;/h2>&lt;p>La razón es simple: &amp;ldquo;La IA hace que parezca terminado, pero los ajustes finales recaen en los humanos&amp;rdquo;.&lt;/p>
&lt;ul>
&lt;li>Los datos se pierden en la entrada/salida de archivos (File IO).&lt;/li>
&lt;li>La normalización de la base de datos es deficiente y las búsquedas son lentas.&lt;/li>
&lt;li>La interfaz de usuario no es intuitiva.&lt;/li>
&lt;li>No se hicieron pruebas de carga, por lo que colapsa con el tráfico concentrado.&lt;/li>
&lt;li>Es rechazada en la revisión de Apple/Google.&lt;/li>
&lt;li>Viola requisitos legales y causa polémica (o casi).&lt;/li>
&lt;/ul>
&lt;p>En resumen, &lt;strong>la IA es buena para crear prototipos que &amp;ldquo;parecen productos terminados&amp;rdquo;&lt;/strong>,
pero &lt;strong>convertirlos en un producto real que funcione en el mundo sigue siendo, hoy por hoy, un trabajo para humanos&lt;/strong>.&lt;/p>
&lt;hr>
&lt;h2 id="pero-hay-una-paradoja">Pero hay una paradoja
&lt;/h2>&lt;p>Aquí notamos una &lt;strong>paradoja&lt;/strong>.&lt;/p>
&lt;blockquote>
&lt;p>¿Qué pasaría si en el futuro la IA realmente pudiera hacerlo todo?
Es decir, ¿qué pasaría si &amp;ldquo;la seguridad, la facturación y el diseño fueran procesados perfectamente por la IA&amp;rdquo;?&lt;/p>
&lt;/blockquote>
&lt;p>En ese momento, &lt;strong>la necesidad misma de que la humanidad cree aplicaciones podría desaparecer&lt;/strong>.&lt;/p>
&lt;p>Porque si los usuarios pueden decirle directamente a la IA &amp;ldquo;quiero hacer esto&amp;rdquo;,
la tarea se ejecutará al instante sin necesidad de una aplicación.&lt;/p>
&lt;hr>
&lt;h3 id="-por-ejemplo">🌀 Por ejemplo
&lt;/h3>&lt;p>Antes, abríamos la aplicación de la calculadora para hacer un cálculo,
ahora, solo decimos: &amp;ldquo;Oye Siri, ¿cuánto es 12 por 32?&amp;rdquo; y listo.&lt;/p>
&lt;p>De la misma manera,
si decimos &amp;ldquo;IA, edita esta foto y compártela&amp;rdquo;, el proceso podría completarse sin siquiera pasar por la UI o la API de una aplicación.&lt;/p>
&lt;p>En otras palabras,
&lt;strong>cuando se alcance el objetivo de &amp;ldquo;crear aplicaciones con IA&amp;rdquo;, podría llegar un mundo donde las aplicaciones en sí mismas ya no sean necesarias&lt;/strong>.&lt;/p>
&lt;hr>
&lt;h2 id="al-final-lo-que-podemos-hacer-ahora">Al final, lo que podemos hacer ahora
&lt;/h2>&lt;p>Entonces, ¿qué debemos hacer?&lt;/p>
&lt;ul>
&lt;li>Como la &amp;ldquo;zona por encima de la octava estación&amp;rdquo; sigue siendo dominio humano, debemos perfeccionarnos ahí.&lt;/li>
&lt;li>Concentrarnos en la comprensión esencial del usuario y el diseño de servicios.&lt;/li>
&lt;li>Pensar más en &amp;ldquo;lo que es valioso&amp;rdquo; que en &amp;ldquo;lo que se puede crear&amp;rdquo;.&lt;/li>
&lt;li>Más bien, buscar formas de proporcionar valor que &amp;ldquo;no se limiten al formato de una aplicación&amp;rdquo;.&lt;/li>
&lt;/ul>
&lt;p>La IA es una herramienta, un ascensor y, a veces, un competidor.
Pero, &lt;strong>&amp;ldquo;qué crear&amp;rdquo; y &amp;ldquo;por qué crearlo&amp;rdquo; siguen siendo preguntas para nosotros, los humanos&lt;/strong>.&lt;/p>
&lt;hr>
&lt;h2 id="conclusión">Conclusión:
&lt;/h2>&lt;p>&lt;strong>La barrera del desarrollo de IA no es la tecnología, sino una paradoja estructural.&lt;/strong>&lt;/p>
&lt;p>Es una era en la que cualquiera puede llegar a la octava estación del Monte Fuji.
Pero a partir de ahí empieza lo de verdad.&lt;/p>
&lt;p>Y, para cuando lleguemos a la cima,
tal vez nos espere un futuro en el que nos preguntemos: &amp;ldquo;¿De verdad era necesario escalar la montaña?&amp;rdquo;.&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>Cómo llamar a Microsoft.Windows.AI desde C++</title><link>http://kenji.blog/es/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/</link><pubDate>Sat, 19 Jul 2025 10:03:51 +0900</pubDate><guid>http://kenji.blog/es/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/</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 Cómo llamar a Microsoft.Windows.AI desde C++" />&lt;h1 id="-cómo-llamar-a-microsoftwindowsai-desde-c-con-código-de-ejemplo">🎯 Cómo llamar a &lt;code>Microsoft.Windows.AI&lt;/code> desde C++ 【Con código de ejemplo】
&lt;/h1>&lt;p>A partir de Windows 10, Windows incluye de forma estándar un **runtime capaz de ejecutar modelos de IA en formato ONNX &lt;strong>. Este es ** Windows ML (Windows.AI.MachineLearning)&lt;/strong>.&lt;/p>
&lt;p>En este artículo, &lt;strong>explicaremos detalladamente con código de ejemplo ** cómo llamar a &lt;code>Microsoft.Windows.AI.MachineLearning&lt;/code> desde ** C++ (basado en aplicaciones Win32)&lt;/strong>.&lt;/p>
&lt;hr>
&lt;h2 id="-preparación">✅ Preparación
&lt;/h2>&lt;h3 id="-entorno-necesario">◾ Entorno necesario
&lt;/h3>&lt;ul>
&lt;li>Windows 10 (1809+) o Windows 11&lt;/li>
&lt;li>Visual Studio 2019 o posterior (la versión Community está bien)&lt;/li>
&lt;li>Soporte para C++/WinRT (&lt;code>Microsoft.Windows.CppWinRT&lt;/code>)&lt;/li>
&lt;li>Windows SDK 10.0.17763.0 o superior&lt;/li>
&lt;/ul>
&lt;hr>
&lt;h2 id="-configuración-del-proyecto">✅ Configuración del proyecto
&lt;/h2>&lt;p>Cree un proyecto con la siguiente configuración en Visual Studio.&lt;/p>
&lt;ul>
&lt;li>
&lt;p>Tipo: Aplicación de escritorio de Windows en C++ (Proyecto vacío)&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Subsistema: Windows (&lt;code>WinMain&lt;/code>)&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Agregue el siguiente paquete desde 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-ejemplo">✅ Código de ejemplo
&lt;/h2>&lt;p>A continuación se muestra un ejemplo de configuración mínima que combina la API de Win32 y &lt;code>Windows.AI.MachineLearning&lt;/code> utilizando &lt;code>WinMain&lt;/code>.&lt;/p>
&lt;blockquote>
&lt;p>※ Nota: El modelo ONNX a utilizar será &lt;code>model.onnx&lt;/code> y debe colocarse en la misma carpeta que el archivo ejecutable.&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 enlazar con 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">// Inicialización de WinRT (MTA o STA están bien)
&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">// Cargar el archivo del 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">// Crear una sesió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">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/salida del modelo (aquí se asume una entrada vacía)
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">&lt;/span> &lt;span class="c1">// En la práctica, es necesario vincular con 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">// Ejecutar inferencia
&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;La inferencia se ha completado&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;Error&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-cómo-especificar-los-tensores-de-entrada-y-salida">✅ Complemento: Cómo especificar los Tensores de entrada y salida
&lt;/h2>&lt;p>Dependiendo del modelo, es necesario &lt;strong>crear y vincular un Tensor&lt;/strong> antes de la inferencia.&lt;/p>
&lt;p>Ejemplo:&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">// Convertir un arreglo de float unidimensional a 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">// Forma: [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">// Vinculación de entrada (coincidir con el nombre de entrada del 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>La salida se puede obtener de manera similar con &lt;code>result.Outputs().Lookup(L&amp;quot;output_0&amp;quot;)&lt;/code>.&lt;/p>
&lt;hr>
&lt;h2 id="-puntos-a-tener-en-cuenta-al-depurar">✅ Puntos a tener en cuenta al depurar
&lt;/h2>&lt;ul>
&lt;li>Si el archivo del modelo no existe en la carpeta de ejecución, se producirá un &lt;code>FileNotFoundException&lt;/code>.&lt;/li>
&lt;li>Si los nombres de entrada y salida no coinciden, se producirá un error &lt;code>invalid_argument&lt;/code>.&lt;/li>
&lt;li>Las especificaciones exactas de E/S del modelo se pueden verificar con herramientas como &lt;a class="link" href="https://netron.app" target="_blank" rel="noopener"
>Netron&lt;/a>.&lt;/li>
&lt;/ul>
&lt;hr>
&lt;h2 id="-resumen">✅ Resumen
&lt;/h2>&lt;table>
&lt;thead>
&lt;tr>
&lt;th>Elemento&lt;/th>
&lt;th>Detalle&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>API utilizada&lt;/td>
&lt;td>Windows.AI.MachineLearning (WinRT)&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Lenguaje&lt;/td>
&lt;td>C++ (basado en Win32)&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Método recomendado&lt;/td>
&lt;td>A través de las cabeceras C++/WinRT&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Ventajas&lt;/td>
&lt;td>Los modelos ONNX funcionan de forma nativa, también soportan GPU&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Precaución&lt;/td>
&lt;td>Prestar atención a los nombres de entrada del modelo y la forma del Tensor&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;hr>
&lt;h2 id="-alternativa-para-los-que-no-quieren-usar-winrt">✅ Alternativa: Para los que no quieren usar WinRT
&lt;/h2>&lt;ul>
&lt;li>Si utiliza &lt;code>ONNX Runtime&lt;/code> de Microsoft, &lt;strong>puede manejar modelos ONNX desde C++ completamente sin WinRT&lt;/strong>.&lt;/li>
&lt;li>Es multiplataforma, lo que permite un código común incluso en Windows/Linux.&lt;/li>
&lt;/ul>
&lt;hr>
&lt;h2 id="-conclusión">📌 Conclusión
&lt;/h2>&lt;p>Windows ML (Microsoft.Windows.AI) es un motor de inferencia de IA potente que se puede utilizar perfectamente incluso desde C++. Si necesita realizar inferencias de forma nativa en Windows, no dude en probarlo.&lt;/p>
&lt;p>Si desea ejemplos específicos sobre cómo crear modelos ONNX o vincular tensores, ¡planeamos explicarlos en un artículo de seguimiento!&lt;/p></description></item><item><title>Pasos para llamar a TinyLLaMA desde C++ (usando llama.cpp)</title><link>http://kenji.blog/es/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/</link><pubDate>Sat, 19 Jul 2025 09:40:53 +0900</pubDate><guid>http://kenji.blog/es/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/</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 Pasos para llamar a TinyLLaMA desde C++ (usando llama.cpp)" />&lt;h1 id="-configuración-de-tinyllama--c-usando-llamacpp">✅ Configuración de TinyLLaMA × C++ (usando &lt;code>llama.cpp&lt;/code>)
&lt;/h1>&lt;hr>
&lt;h2 id="-paso-1-preparar-llamacpp">🔧 Paso 1: Preparar llama.cpp
&lt;/h2>&lt;h3 id="1-1-entorno-necesario-mínimo">1-1. Entorno necesario (mínimo)
&lt;/h3>&lt;ul>
&lt;li>SO: Windows / Linux / macOS&lt;/li>
&lt;li>Entorno de desarrollo: g++ / clang / MSVC&lt;/li>
&lt;li>Git / CMake&lt;/li>
&lt;/ul>
&lt;h3 id="1-2-obtener-y-compilar-llamacpp">1-2. Obtener y 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>En Windows, es más fácil usar &lt;code>Visual Studio Developer Command Prompt&lt;/code> y ejecutar &lt;code>cmake --build . --config Release&lt;/code>.&lt;/p>
&lt;/blockquote>
&lt;hr>
&lt;h2 id="-paso-2-descargar-y-convertir-el-modelo-tinyllama">📦 Paso 2: Descargar y convertir el modelo TinyLLaMA
&lt;/h2>&lt;h3 id="2-1-obtener-el-modelo-original-de-huggingface">2-1. Obtener el modelo original de HuggingFace
&lt;/h3>&lt;p>Ejemplo: &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 descargar si es necesario&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 paso es para convertir al formato de Hugging Face.&lt;/p>
&lt;/blockquote>
&lt;hr>
&lt;h3 id="2-2-convertir-al-formato-gguf-para-llamacpp">2-2. Convertir al 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-cuantización-del-modelo-reducción-de-tamaño">2-3. Cuantización del modelo (reducción de tamaño)
&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> es cuantización de 4 bits. El tamaño del modelo se reducirá a aproximadamente &lt;strong>350 MB&lt;/strong>.&lt;/p>
&lt;/blockquote>
&lt;hr>
&lt;h2 id="-paso-3-llamar-al-modelo-desde-c-ejemplo-de-código">🧪 Paso 3: Llamar al modelo desde C++ (Ejemplo de código)
&lt;/h2>&lt;h3 id="3-1-código-c-simple-inferencia">3-1. Código C++ simple (Inferencia)
&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;El usuario dice que quiere leer datos de Excel, filtrarlos y guardarlos. ¿Cuál es la configuración de los nodos?&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">// Tokenizació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">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">// Obtener resultados de inferencia
&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="-paso-4-método-de-compilación-ejemplo">🧱 Paso 4: Método de compilación (Ejemplo)
&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> se crea en el directorio &lt;code>build/&lt;/code> después de compilar.&lt;/p>
&lt;/blockquote>
&lt;hr>
&lt;h2 id="-ejemplo-de-estructura-del-producto-final-organizado">✅ Ejemplo de estructura del producto final (Organizado)
&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 cuantizado (~350MB)
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">├── main.cpp # Código C++ anterior
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">├── llama.cpp/ # Código fuente de 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-adicionales-para-aplicar-a-tu-caso-de-uso">🧠 Notas adicionales para aplicar a tu caso de uso
&lt;/h2>&lt;ul>
&lt;li>Tener código en C++ que reciba la salida y &lt;code>compare y seleccione plantillas de nodos&lt;/code>.&lt;/li>
&lt;li>Ejemplo: Si contiene &amp;ldquo;Excel&amp;rdquo;, &amp;ldquo;filtro&amp;rdquo; y &amp;ldquo;guardar&amp;rdquo; → Generar los nodos correspondientes.&lt;/li>
&lt;li>Esta parte puede ser tan simple como &lt;code>sentencias if + lectura de plantilla JSON&lt;/code>.&lt;/li>
&lt;/ul>
&lt;hr>
&lt;h2 id="-resumen">📌 Resumen
&lt;/h2>&lt;table>
&lt;thead>
&lt;tr>
&lt;th>Elemento&lt;/th>
&lt;th>Descripción&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 + Cuantización)&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Tamaño&lt;/td>
&lt;td>~350-450MB (Cuantización 4bit)&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Integración C++&lt;/td>
&lt;td>Posible usando &lt;code>llama.cpp&lt;/code>, casi sin dependencias externas&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Capacidad de procesamiento&lt;/td>
&lt;td>Suficiente para comprensión de intención simple y generación de salida (texto natural → configuración)&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Extensibilidad&lt;/td>
&lt;td>Se puede combinar con el llenado de ranuras (slots) y llamadas a plantillas para crear una IA de generación de nodos&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table></description></item><item><title>Cómo publicar mensajes en Slack usando Slack App + OAuth2</title><link>http://kenji.blog/es/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/es/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 Cómo publicar mensajes en Slack usando Slack App + OAuth2" />&lt;h2 id="-método-de-publicación-usando-un-token-de-acceso-slack-web-api">✅ Método de publicación usando un token de acceso (Slack Web API)
&lt;/h2>&lt;p>El &amp;ldquo;Token OAuth (como xoxb-〜)&amp;rdquo; de Slack es la clave para publicar usando la &lt;a class="link" href="https://api.slack.com/methods/chat.postMessage" target="_blank" rel="noopener"
>Web API&lt;/a> de Slack.
En este caso, a diferencia del Webhook, haces un &lt;code>POST&lt;/code> al &lt;strong>endpoint de la API de Slack&lt;/strong> con el encabezado &lt;code>Authorization: Bearer&lt;/code>.&lt;/p>
&lt;hr>
&lt;h2 id="-requisitos-necesarios">🔑 Requisitos necesarios
&lt;/h2>&lt;p>Es necesario incluir &lt;strong>&lt;code>chat:write&lt;/code> en los permisos OAuth&lt;/strong> de la aplicación de Slack:&lt;/p>
&lt;h3 id="pasos-de-configuración">Pasos de configuración
&lt;/h3>&lt;ol>
&lt;li>Accede a &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>Crea una aplicación o selecciona una existente&lt;/li>
&lt;li>En &amp;ldquo;OAuth &amp;amp; Permissions&amp;rdquo; &amp;gt; &lt;code>Scopes&lt;/code>
→ Añade &lt;code>chat:write&lt;/code>&lt;/li>
&lt;li>Haz clic en &amp;ldquo;Install to Workspace&amp;rdquo; o &amp;ldquo;Reinstall&amp;rdquo; para obtener el &lt;code>Access Token&lt;/code> (Ejemplo: &lt;code>xoxb-xxxxxxxxxx&lt;/code>)&lt;/li>
&lt;/ol>
&lt;hr>
&lt;h2 id="-código-c-publicar-en-la-api-de-slack-con-winhttp">💻 Código C++ (Publicar en la API de Slack con 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">// Encabezado de Authorization y 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">// Cuerpo 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;Error de enví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>&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">// Comprobar código de estado
&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-tu-token-de-acceso&amp;#34;&lt;/span>&lt;span class="p">;&lt;/span> &lt;span class="c1">// Token de acceso
&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-del-canal-o-#general&amp;#34;&lt;/span>&lt;span class="p">;&lt;/span> &lt;span class="c1">// Ej: &amp;#34;#general&amp;#34; o &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;¡He publicado en Slack desde 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;¡Publicación exitosa!&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;Error en la publicación.&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="-cómo-obtener-el-id-del-canal">📌 Cómo obtener el ID del canal
&lt;/h2>&lt;p>A veces se producen errores si solo usas el nombre del canal (Ejemplo: &lt;code>#general&lt;/code>).
El método más seguro es usar el ID que se encuentra en la URL de la página del canal en 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 es el ID del 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-los-tipos-de-tokens-información-adicional">✅ Sobre los tipos de tokens (Información adicional)
&lt;/h2>&lt;table>
&lt;thead>
&lt;tr>
&lt;th>Formato del Token&lt;/th>
&lt;th>Uso&lt;/th>
&lt;th>Ejemplo&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>Publicar, editar, eliminar&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>xoxp-...&lt;/code>&lt;/td>
&lt;td>User Token (No recomendado)&lt;/td>
&lt;td>Operaciones no relacionadas con bots&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Refresh Token&lt;/td>
&lt;td>Para renovar tokens a largo plazo&lt;/td>
&lt;td>Normalmente no se usa&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;hr>
&lt;h2 id="-resumen">📝 Resumen
&lt;/h2>&lt;ul>
&lt;li>Para publicar en Slack desde C++, el método de Slack Web API + Bearer Token es el más seguro&lt;/li>
&lt;li>Usa el endpoint &lt;code>chat.postMessage&lt;/code> con HTTPS POST&lt;/li>
&lt;li>El token debe enviarse en el encabezado Bearer&lt;/li>
&lt;li>Para los canales, especificar por &lt;strong>ID&lt;/strong> es lo más seguro&lt;/li>
&lt;/ul></description></item><item><title>Cómo enviar un mensaje a Slack en C++ (Win32 API + WinHTTP) [Soporte de Webhook]</title><link>http://kenji.blog/es/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/</link><pubDate>Wed, 16 Jul 2025 19:42:56 +0900</pubDate><guid>http://kenji.blog/es/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/</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 Cómo enviar un mensaje a Slack en C++ (Win32 API + WinHTTP) [Soporte de Webhook]" />&lt;h1 id="cómo-enviar-un-mensaje-a-slack-en-c-win32-api--winhttp-soporte-de-webhook">Cómo enviar un mensaje a Slack en C++ (Win32 API + WinHTTP) [Soporte de Webhook]
&lt;/h1>&lt;p>Quiero enviar un mensaje a Slack desde C++.
Es muy común en Node.js o Python, pero es poco frecuente hacerlo con &amp;ldquo;C++ × Win32 API × WinHTTP&amp;rdquo;.&lt;/p>
&lt;p>En este artículo, explicaremos paso a paso &lt;strong>cómo enviar un mensaje a Slack desde C++ usando una URL de Webhook&lt;/strong>.&lt;/p>
&lt;hr>
&lt;h2 id="-flujo-general">✅ Flujo general
&lt;/h2>&lt;p>Para publicar en Slack, se deben seguir los siguientes pasos:&lt;/p>
&lt;ol>
&lt;li>Obtener la URL del Webhook de Slack (Clave de API)&lt;/li>
&lt;li>Enviar una solicitud &lt;code>POST&lt;/code> usando WinHTTP&lt;/li>
&lt;li>Ensamblar el cuerpo del mensaje en formato JSON&lt;/li>
&lt;li>¡Verificar el resultado y listo!&lt;/li>
&lt;/ol>
&lt;hr>
&lt;h2 id="-paso-1-cómo-obtener-la-url-de-webhook-de-slack">🔑 Paso 1: Cómo obtener la URL de Webhook de Slack
&lt;/h2>&lt;p>En Slack, usando una función llamada Incoming Webhooks, puedes publicar mensajes fácilmente desde servicios externos.&lt;/p>
&lt;h3 id="pasos-para-obtenerla">Pasos para obtenerla
&lt;/h3>&lt;ol>
&lt;li>Accede a &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>Haz clic en &lt;code>Create New App&lt;/code>&lt;/li>
&lt;li>Elige &lt;code>From scratch&lt;/code>, selecciona un nombre para la aplicación y el espacio de trabajo de destino&lt;/li>
&lt;li>En el menú de la izquierda, selecciona &amp;ldquo;&lt;strong>Incoming Webhooks&lt;/strong>&amp;rdquo; y actívalo&lt;/li>
&lt;li>Haz clic en &amp;ldquo;&lt;strong>Add New Webhook to Workspace&lt;/strong>&amp;rdquo; y selecciona un canal&lt;/li>
&lt;li>Copia la URL generada (Ejemplo: &lt;code>https://hooks.slack.com/services/xxx/yyy/zzz&lt;/code>)&lt;/li>
&lt;/ol>
&lt;p>Esta URL funciona como una clave de API.&lt;/p>
&lt;hr>
&lt;h2 id="-paso-2-enviar-un-mensaje-a-slack-con-código-c">💻 Paso 2: Enviar un mensaje a Slack con código C++
&lt;/h2>&lt;h3 id="tecnologías-utilizadas">Tecnologías utilizadas
&lt;/h3>&lt;ul>
&lt;li>Win32 API&lt;/li>
&lt;li>WinHTTP (Biblioteca estándar)&lt;/li>
&lt;li>Mensaje en formato JSON&lt;/li>
&lt;/ul>
&lt;h3 id="código-de-muestra-publicación-en-slack">Código de muestra (Publicación en 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">// Descomposición de la 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;Falló la descomposición de la 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">// Sesión HTTP y conexió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">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;Falló la solicitud de enví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>&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">// Liberar 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">// Reemplázalo con tu 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;¡Publicación exitosa!&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;Falló la publicación.&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="-personalización-del-mensaje-json">🧪 Personalización del mensaje JSON
&lt;/h2>&lt;p>En el Webhook de Slack, puedes incluir los siguientes 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;Contenido de la notificació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="nt">&amp;#34;username&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;Nombre del 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;#nombre_del_canal_opcional&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-adicionales">📌 Notas adicionales
&lt;/h2>&lt;ul>
&lt;li>Debes especificar &lt;code>&amp;quot;application/json&amp;quot;&lt;/code> en &lt;code>Content-Type&lt;/code>&lt;/li>
&lt;li>La URL del Webhook se pasa como un &lt;code>wstring&lt;/code> tal cual (no requiere codificación URL)&lt;/li>
&lt;li>Como es una comunicación HTTPS, no olvides agregar &lt;code>WINHTTP_FLAG_SECURE&lt;/code>&lt;/li>
&lt;/ul>
&lt;hr>
&lt;h2 id="-extra-ejemplo-de-confirmación-de-publicación-en-slack">🎉 Extra: Ejemplo de confirmación de publicación en Slack
&lt;/h2>&lt;p>Se mostrará así en 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">[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="-resumen">✍️ Resumen
&lt;/h2>&lt;table>
&lt;thead>
&lt;tr>
&lt;th>Elemento&lt;/th>
&lt;th>Descripción&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>Método de publicación&lt;/td>
&lt;td>Webhook (Incoming Webhooks)&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Biblioteca de comunicación&lt;/td>
&lt;td>WinHTTP&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Formato de datos&lt;/td>
&lt;td>JSON&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Parámetros disponibles&lt;/td>
&lt;td>text, username, icon_emoji, channel, etc.&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;p>¡Incluso si pensabas que integrar C++ con Slack era complicado, puedes incorporar un Bot de notificaciones desde hoy mismo!&lt;/p>
&lt;hr>
&lt;h2 id="-próximamente">🚀 ¿Próximamente?
&lt;/h2>&lt;p>Si te interesa, la próxima vez podríamos cubrir:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Adjuntar archivos&lt;/strong>&lt;/li>
&lt;li>&lt;strong>Interfaz de usuario con botones&lt;/strong>&lt;/li>
&lt;li>&lt;strong>Operaciones API flexibles con Slack App + OAuth2&lt;/strong>&lt;/li>
&lt;/ul>
&lt;p>¡Podemos presentar una integración con Slack un paso más allá!&lt;/p></description></item><item><title>Market-in y Product-out</title><link>http://kenji.blog/es/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/</link><pubDate>Tue, 15 Jul 2025 20:18:22 +0900</pubDate><guid>http://kenji.blog/es/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/</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 y Product-out" />&lt;h1 id="market-in-y-product-out">Market-in y Product-out
&lt;/h1>&lt;p>Hola, soy kenji.&lt;/p>
&lt;p>A veces en libros de negocios o propuestas, veo que dicen cosas como:&lt;/p>
&lt;blockquote>
&lt;p>&amp;ldquo;Nuestra estrategia es market-in&amp;rdquo;
&amp;ldquo;Esto es un modelo product-out&amp;rdquo;&lt;/p>
&lt;/blockquote>
&lt;p>&amp;hellip;pero.&lt;/p>
&lt;p>&lt;strong>Oye, ¿market-in? ¿product-out? ¿Cuál es mejor???&lt;/strong>&lt;/p>
&lt;p>¿No te pasa?&lt;/p>
&lt;p>Por eso esta vez, intentaré explicar estos términos de &amp;ldquo;market-in&amp;rdquo; y &amp;ldquo;product-out&amp;rdquo; de la forma más sencilla posible, y con un toque crítico.&lt;/p>
&lt;hr>
&lt;h2 id="en-resumen">En resumen&amp;hellip;
&lt;/h2>&lt;ul>
&lt;li>&lt;strong>Market-in&lt;/strong>: Escuchar la voz del mercado y crear productos basados en ella.&lt;/li>
&lt;li>&lt;strong>Product-out&lt;/strong>: Crear lo que nosotros consideramos un buen producto y lanzarlo al mundo.&lt;/li>
&lt;/ul>
&lt;p>Es solo esto. Simple.&lt;/p>
&lt;hr>
&lt;h2 id="por-ejemplo-en-una-tienda-de-ramen">Por ejemplo, en una tienda de ramen&amp;hellip;
&lt;/h2>&lt;p>Una tienda de ramen market-in sería:
&amp;ldquo;Últimamente el ramen estilo Iekei es popular. ¡Bien, hagámoslo con mucha grasa y ajo!&amp;rdquo;&lt;/p>
&lt;p>Una tienda de ramen product-out sería:
&amp;ldquo;Este ramen de sal con leche de soja y albahaca que preparé es increíble, así que cómetelo.&amp;rdquo;&lt;/p>
&lt;hr>
&lt;h2 id="cuál-es-la-respuesta-correcta-ambas-lo-son">¿Cuál es la respuesta correcta?&amp;hellip; Ambas lo son
&lt;/h2>&lt;p>Market-in se adapta a las necesidades del cliente, por lo que tiene &amp;ldquo;alta probabilidad de venderse&amp;rdquo;, pero es difícil que nazcan ideas revolucionarias o grandes avances.&lt;/p>
&lt;p>Product-out &amp;ldquo;da forma a lo que uno cree que es correcto&amp;rdquo;, así que es innovador y atractivo, pero si fallas, no resonará con nadie.&lt;/p>
&lt;hr>
&lt;h2 id="el-iphone-parece-product-out">El iPhone parece product-out
&lt;/h2>&lt;p>En la época en que decían &amp;ldquo;no necesitamos smartphones&amp;rdquo;, Apple lanzó el iPhone.&lt;/p>
&lt;p>Esto es un &lt;strong>éxito completamente product-out&lt;/strong>.&lt;/p>
&lt;p>Si hubieran escuchado a los usuarios, les habrían dicho &amp;ldquo;¿Un teléfono sin teclado? Imposible&amp;rdquo; y ahí habría terminado.&lt;/p>
&lt;hr>
&lt;h2 id="pero-el-product-out-puede-volverse-fácilmente-autosatisfacción">Pero el product-out puede volverse fácilmente &amp;ldquo;autosatisfacción&amp;rdquo;
&lt;/h2>&lt;p>A veces hay empresas o personas que dicen &amp;ldquo;Nosotros somos del tipo product-out&amp;rdquo;, pero&amp;hellip;&lt;/p>
&lt;blockquote>
&lt;p>Oye, ¿eso no es simplemente ignorar al usuario?&lt;/p>
&lt;/blockquote>
&lt;p>A veces pienso eso.&lt;/p>
&lt;p>&amp;ldquo;Lo creé porque quería. Pero no se vendió&amp;rdquo;, eso no es product-out, es &amp;ldquo;egocentrismo-out&amp;rdquo;.&lt;/p>
&lt;hr>
&lt;h2 id="el-market-in-también-tiene-sus-trampas">El market-in también tiene sus trampas
&lt;/h2>&lt;p>Por otro lado, el market-in tampoco es todopoderoso.&lt;/p>
&lt;p>Si dices &amp;ldquo;¡Haremos todo lo que los usuarios pidan!&amp;rdquo;, el núcleo del producto se desdibuja y al final no resuena con nadie.&lt;/p>
&lt;p>Vas añadiendo funciones y cuando te das cuenta, es una herramienta caótica, ese tipo de cosas.&lt;/p>
&lt;hr>
&lt;h2 id="los-realmente-increíbles-son-los-que-hacen-ambas-cosas">Los realmente increíbles son los que &amp;ldquo;hacen ambas cosas&amp;rdquo;
&lt;/h2>&lt;p>Un gran producto presenta con precisión &amp;ldquo;aquello que los usuarios realmente querían pero no sabían expresar con palabras&amp;rdquo;.&lt;/p>
&lt;p>Es decir, &amp;ldquo;conseguir la empatía del market-in con una mentalidad product-out&amp;rdquo;.&lt;/p>
&lt;p>Se dice fácil, pero es extremadamente difícil.
Sin embargo, cuando logras esto, de repente se convierte en un &amp;ldquo;producto divino&amp;rdquo;.&lt;/p>
&lt;hr>
&lt;h2 id="conclusión-más-que-las-palabras-la-reacción-del-usuario-lo-es-todo">Conclusión: Más que las palabras, la reacción del usuario lo es todo
&lt;/h2>&lt;p>¿Market-in o product-out?
Cuál es el correcto es una pregunta que no tiene mucho sentido.&lt;/p>
&lt;p>Creo que &lt;strong>&amp;quot;¿Llega realmente al corazón del usuario?&amp;quot; lo es todo&lt;/strong>.&lt;/p>
&lt;p>Cosas como &amp;ldquo;usamos más o menos esta estrategia&amp;rdquo; está bien con tal de que se pueda escribir luego en los materiales de marketing.&lt;/p>
&lt;hr>
&lt;p>¡Así que esa fue la charla sobre market-in y product-out!&lt;/p>
&lt;p>En lugar de dejarse confundir por términos raros, creo que lo más sano es pensar en &amp;ldquo;¿qué podemos hacer para que la gente esté feliz?&amp;rdquo;.&lt;/p>
&lt;p>Hasta la próxima~.&lt;/p></description></item><item><title>La conjetura de Collatz</title><link>http://kenji.blog/es/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/es/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 La conjetura de Collatz" />&lt;h1 id="es-cierto-que-cualquier-número-termina-en-1--jugando-con-la-conjetura-de-collatz">¿Es cierto que &amp;ldquo;cualquier número termina en 1&amp;rdquo;? ── Jugando con la Conjetura de Collatz
&lt;/h1>&lt;p>¡Hola! Soy kenji.&lt;/p>
&lt;p>De repente, si escuchas sobre &amp;ldquo;una regla donde cualquier número termina finalmente en 1&amp;rdquo;,
¿no te parece un poco extraño?&lt;/p>
&lt;blockquote>
&lt;p>Por ejemplo, el 19, el 87 o incluso el 1000000.
Si sigues una regla simple y manipulas el número, por alguna razón siempre converge a &amp;ldquo;1&amp;rdquo; al final.&lt;/p>
&lt;/blockquote>
&lt;p>Esta historia que parece un sueño es la &lt;strong>Conjetura de Collatz (Collatz Conjecture)&lt;/strong>.&lt;/p>
&lt;hr>
&lt;h2 id="para-empezar-qué-es-la-conjetura-de-collatz">Para empezar, ¿qué es la Conjetura de Collatz?
&lt;/h2>&lt;p>Primero, presentaré la regla.&lt;/p>
&lt;ul>
&lt;li>
&lt;p>Inicio: Elige cualquier &lt;strong>entero positivo&lt;/strong>&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Operación:&lt;/p>
&lt;ul>
&lt;li>Si es par → divídelo a la mitad (n → n / 2)&lt;/li>
&lt;li>Si es impar → multiplícalo por 3 y suma 1 (n → 3n + 1)&lt;/li>
&lt;/ul>
&lt;/li>
&lt;/ul>
&lt;p>Si repites esto una y otra vez, la conjetura es que &lt;strong>cualquier número finalmente llegará a 1&lt;/strong>.&lt;/p>
&lt;p>Por ejemplo, si empezamos con el &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>Efectivamente llegó a &amp;ldquo;1&amp;rdquo;. ¡Bienvenido de vuelta!&lt;/p>
&lt;hr>
&lt;h2 id="hagámoslo-con-código-collatz-en-python">Hagámoslo con código: Collatz en Python
&lt;/h2>&lt;p>Bueno, en estos casos ¡es más rápido probar con código!
Imprimamos la &amp;ldquo;secuencia de Collatz&amp;rdquo; en 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"># Ejemplo: empezando con 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>Al ejecutarlo:&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>Llega perfectamente al 1.
Da bastantes rodeos, pero al final ¡alcanza la meta!&lt;/p>
&lt;p>Por cierto, incluso si empiezas con 29, también llegará a 1 de la misma manera.&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">pythonprint(collatz(29))
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>Al ejecutarlo:&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>¡Vaya, toma 111 pasos!&lt;/p>
&lt;p>Y además, hay momentos en los que se infla por encima de 9000.
Es un patrón que da muchísimas vueltas antes de llegar a la meta.&lt;/p>
&lt;hr>
&lt;h2 id="y-al-final-qué-tiene-de-increíble">Y, al final, ¿qué tiene de increíble?
&lt;/h2>&lt;p>Lo increíble de esta conjetura es,&lt;/p>
&lt;blockquote>
&lt;p>&lt;strong>Aunque no está comprobada, parece que funciona con cualquier número y termina en 1&lt;/strong>&lt;/p>
&lt;/blockquote>
&lt;p>Es justo eso.&lt;/p>
&lt;p>¿Eh? Entonces, ¿qué pasa con 1 billón, o 1 trillón&amp;hellip;?&lt;/p>
&lt;p>Si pensaste eso, eres muy perspicaz.
De hecho, usando computadoras se ha verificado hasta aproximadamente &amp;ldquo;2 elevado a 68&amp;rdquo;,
y &lt;strong>todos llegan a 1&lt;/strong>. Increíble&amp;hellip;&lt;/p>
&lt;p>Pero, &lt;strong>no se ha demostrado teóricamente que &amp;ldquo;todos lo hagan&amp;rdquo;&lt;/strong>.
Esto es lo que en el mundo de las matemáticas se llama un &amp;ldquo;problema no resuelto&amp;rdquo;.&lt;/p>
&lt;hr>
&lt;h2 id="quién-es-el-sr-collatz">¿Quién es el Sr. Collatz?
&lt;/h2>&lt;p>Y, al leer hasta aquí, seguro piensas &amp;ldquo;¿y quién es Collatz?&amp;rdquo;.
¡Lo presentaré adecuadamente!&lt;/p>
&lt;ul>
&lt;li>Nombre: &lt;strong>Lothar Collatz&lt;/strong>&lt;/li>
&lt;li>Nacionalidad: Alemán&lt;/li>
&lt;li>Nacimiento: 1910 - 1990&lt;/li>
&lt;li>Profesión: Matemático (destacado en análisis funcional y teoría de números)&lt;/li>
&lt;/ul>
&lt;p>Propuso esta conjetura en 1937, y
después de eso, durante más de 80 años &lt;strong>nadie ha podido demostrarla ni refutarla&lt;/strong>.&lt;/p>
&lt;p>Por cierto, este problema es tan simple pero tan profundo,
que incluso el famoso Paul Erdős (un matemático súper famoso) dijo:&lt;/p>
&lt;blockquote>
&lt;p>&amp;ldquo;Las matemáticas aún no están listas para la conjetura de Collatz&amp;rdquo;&lt;/p>
&lt;/blockquote>
&lt;p>En otras palabras, la teoría es que las matemáticas de la humanidad aún no han alcanzado este misterio&amp;hellip;&lt;/p>
&lt;hr>
&lt;h2 id="no-se-necesitan-fórmulas-matemáticas-difíciles">No se necesitan &amp;ldquo;fórmulas matemáticas difíciles&amp;rdquo;
&lt;/h2>&lt;p>Lo bueno de la conjetura de Collatz es que &lt;strong>cualquiera puede jugar&lt;/strong>.&lt;/p>
&lt;p>Puedes hacerlo si tienes papel y bolígrafo.
Si escribes el código en Python, puedes probarlo automáticamente.
Y aun así, &lt;strong>los matemáticos más avanzados lo están intentando en serio&lt;/strong>.&lt;/p>
&lt;p>No sé, ¿no te emociona?&lt;/p>
&lt;hr>
&lt;h2 id="bonus-código-para-probar-de-una-vez">Bonus: Código para probar de una vez
&lt;/h2>&lt;p>También dejaré un código para probar varios números a la vez.&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"> (pasos: &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>Esto imprimirá la secuencia de Collatz del &amp;ldquo;1 al 20&amp;rdquo; de una vez.&lt;/p>
&lt;hr>
&lt;h2 id="conclusión-este-mundo-al-final-es-misterioso">Conclusión: Este mundo, al final, es misterioso
&lt;/h2>&lt;p>Así que, la conjetura de Collatz.&lt;/p>
&lt;ul>
&lt;li>Aunque es súper simple&lt;/li>
&lt;li>Nadie puede probarlo&lt;/li>
&lt;li>Es un gran problema en el mundo de las matemáticas&lt;/li>
&lt;/ul>
&lt;p>Es como una masa de misterio.&lt;/p>
&lt;p>¡Incluso los principiantes en programación pueden probarlo, así que anímate a jugar!&lt;/p>
&lt;hr>
&lt;h2 id="enlaces-recomendados-para-interesados">Enlaces recomendados (para interesados)
&lt;/h2>&lt;ul>
&lt;li>&lt;a class="link" href="https://es.wikipedia.org/wiki/Conjetura_de_Collatz" target="_blank" rel="noopener"
>Wikipedia: Conjetura de Collatz&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="https://arxiv.org/abs/1909.03562" target="_blank" rel="noopener"
>Artículo de Terence Tao (en inglés)&lt;/a>&lt;/li>
&lt;li>¡También es divertido crear una versión visual en Python! (Lo haré si hay peticiones)&lt;/li>
&lt;/ul>
&lt;hr>
&lt;p>Si quieres conocer más de este tipo de temas &amp;ldquo;Matemáticas misteriosas × Programación&amp;rdquo;,
no dudes en pedirme &amp;ldquo;cuéntame más&amp;rdquo;.
¡Pronto te presentaré la Hipótesis de Riemann, historias sobre números primos y muchas cosas más!&lt;/p>
&lt;hr>
&lt;p>📮 ¡Fin!&lt;/p>
&lt;hr></description></item><item><title>Cómo publicar mensajes en Microsoft Teams desde C++ (WinHTTP + Graph API)</title><link>http://kenji.blog/es/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/</link><pubDate>Mon, 14 Jul 2025 23:40:15 +0900</pubDate><guid>http://kenji.blog/es/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/</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 Cómo publicar mensajes en Microsoft Teams desde C++ (WinHTTP + Graph API)" />&lt;h1 id="cómo-publicar-mensajes-en-microsoft-teams-desde-c-winhttp--graph-api">Cómo publicar mensajes en Microsoft Teams desde C++ (WinHTTP + Graph API)
&lt;/h1>&lt;p>¿Quieres publicar mensajes automáticamente en el chat de Microsoft Teams?&lt;br>
Para eso puedes usar la &lt;strong>Microsoft Graph API&lt;/strong>.&lt;br>
En este artículo, presentaremos un &lt;strong>ejemplo de código en C++ usando WinHTTP ** y los ** pasos de autenticación de la API necesarios&lt;/strong>, paso a paso.&lt;/p>
&lt;hr>
&lt;h2 id="-preparación-necesaria-configuración-de-autenticación-de-microsoft-graph-api">🔧 Preparación necesaria (Configuración de autenticación de Microsoft Graph API)
&lt;/h2>&lt;h3 id="1-registrar-la-aplicación-en-el-portal-de-azure">1. Registrar la aplicación en el portal de Azure
&lt;/h3>&lt;p>Primero, para usar la Microsoft Graph API, debes registrar una aplicación en Azure.&lt;/p>
&lt;ol>
&lt;li>Accede al &lt;a class="link" href="https://portal.azure.com" target="_blank" rel="noopener"
>Azure Portal&lt;/a>&lt;/li>
&lt;li>Ve a &amp;ldquo;&lt;strong>Microsoft Entra ID &lt;strong>&amp;rdquo; &amp;gt; &amp;ldquo;&lt;/strong>+ Agregar &lt;strong>&amp;rdquo; &amp;gt; &amp;ldquo;&lt;/strong> Registros de aplicaciones &lt;strong>&amp;rdquo; &amp;gt; &amp;ldquo;&lt;/strong> Nuevo registro&lt;/strong>&amp;rdquo;&lt;/li>
&lt;li>Ingresa un nombre para la aplicación y haz clic en &amp;ldquo;Registrar&amp;rdquo;&lt;/li>
&lt;/ol>
&lt;h3 id="2-agregar-permisos-de-api">2. Agregar permisos de API
&lt;/h3>&lt;ol>
&lt;li>Ve al menú izquierdo &amp;ldquo;Permisos de API&amp;rdquo;&lt;/li>
&lt;li>En &amp;ldquo;&lt;strong>Microsoft Graph &lt;strong>&amp;rdquo; &amp;gt; &amp;ldquo;&lt;/strong> Permisos delegados &lt;strong>&amp;rdquo; (o seleccionar permisos), busca los siguientes ámbitos (scopes) y haz clic en &amp;ldquo;&lt;/strong> Actualizar permisos&lt;/strong>&amp;rdquo; (o agregar permisos)&lt;/li>
&lt;/ol>
&lt;ul>
&lt;li>Chat.ReadWrite&lt;/li>
&lt;li>User.Read&lt;/li>
&lt;/ul>
&lt;blockquote>
&lt;p>※ Si deseas publicar en un canal, también necesitarás &lt;code>ChannelMessage.Send&lt;/code>&lt;/p>
&lt;/blockquote>
&lt;h3 id="3-anotar-el-id-del-cliente-y-el-id-del-inquilino-tenant">3. Anotar el ID del cliente y el ID del inquilino (tenant)
&lt;/h3>&lt;p>Anota los siguientes dos valores que se muestran en la pestaña &amp;ldquo;Información general&amp;rdquo;:&lt;/p>
&lt;ul>
&lt;li>ID de la aplicación (cliente)&lt;/li>
&lt;li>ID del directorio (inquilino)&lt;/li>
&lt;/ul>
&lt;h3 id="4-crear-un-secreto-de-cliente">4. Crear un secreto de cliente
&lt;/h3>&lt;ol>
&lt;li>Ve a la pestaña &amp;ldquo;Certificados y secretos&amp;rdquo;&lt;/li>
&lt;li>Selecciona &amp;ldquo;Nuevo secreto de cliente&amp;rdquo; &amp;gt; Establece una fecha de expiración y haz clic en &amp;ldquo;Agregar&amp;rdquo;&lt;/li>
&lt;li>&lt;strong>Asegúrate de copiar el valor mostrado (secreto) en este momento&lt;/strong>, ya que no podrás verlo después&lt;/li>
&lt;/ol>
&lt;hr>
&lt;h2 id="-obtener-el-token-de-acceso-oauth2">🔐 Obtener el token de acceso (OAuth2)
&lt;/h2>&lt;p>Para obtenerlo, usaremos el flujo &lt;code>client_credentials&lt;/code>.&lt;br>
Ejecuta el siguiente comando con curl para obtener el token de acceso.&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_del_inquilino&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_del_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={Secreto_de_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="ejemplo-de-respuesta">Ejemplo de respuesta
&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 llamar a la Microsoft Graph API.&lt;/p>
&lt;h2 id="-ejemplo-en-c-para-publicar-en-el-chat-de-teams">💬 Ejemplo en C++ para publicar en el chat de Teams
&lt;/h2>&lt;p>Aquí mostramos un ejemplo en C++ que usa WinHTTP para publicar en el chat.&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="-cómo-obtener-el-id-del-chat">🔍 Cómo obtener el ID del chat
&lt;/h2>&lt;p>El ID del chat se puede verificar con 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="ejemplo-de-respuesta-1">Ejemplo de respuesta
&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="-puntos-a-tener-en-cuenta">📌 Puntos a tener en cuenta
&lt;/h2>&lt;ul>
&lt;li>Este ejemplo es una implementación mínima. En un entorno de producción:
&lt;ul>
&lt;li>Manejo de expiración de tokens&lt;/li>
&lt;li>Verificación del certificado HTTPS&lt;/li>
&lt;li>Mejora en el manejo de errores&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>Para publicaciones en canales se usa teams/{team-id}/channels/{channel-id}/messages.&lt;/li>
&lt;li>Para enviar archivos adjuntos, se requiere procesamiento multiparte o la API de Graph Drive.&lt;/li>
&lt;/ul>
&lt;h2 id="resumen">Resumen
&lt;/h2>&lt;h2 id="-resumen">📎 Resumen
&lt;/h2>&lt;table>
&lt;thead>
&lt;tr>
&lt;th>Característica&lt;/th>
&lt;th>Descripción&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>Graph API&lt;/td>
&lt;td>API oficial para interactuar con Teams&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Registro de aplicación&lt;/td>
&lt;td>Procedimientos de autenticación necesarios en Azure&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Token de acceso&lt;/td>
&lt;td>Obtenido a través de OAuth2 y usado para peticiones&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Implementación en C++&lt;/td>
&lt;td>Llama a la Graph API utilizando WinHTTP&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;h2 id="-próximos-pasos">🚀 Próximos pasos
&lt;/h2>&lt;p>Para ejemplos más avanzados, también es posible lo siguiente:&lt;/p>
&lt;ul>
&lt;li>Publicación en canales de equipos (&lt;code>/teams/{team-id}/channels/...&lt;/code>)&lt;/li>
&lt;li>Publicación con archivos adjuntos&lt;/li>
&lt;li>Cambio entre cuentas de bot o cuentas de usuario&lt;/li>
&lt;li>Implementación completa en C++ incluyendo la obtención del token&lt;/li>
&lt;/ul>
&lt;p>¡Si tienes alguna pregunta o sugerencia, no dudes en comentar!&lt;/p></description></item><item><title>Sobre la marca obligatoria en los formularios de entrada</title><link>http://kenji.blog/es/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/es/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 la marca obligatoria en los formularios de entrada" />&lt;p>He organizado la información sobre la marca &amp;ldquo;obligatorio&amp;rdquo; en las interfaces de usuario (formularios) extranjeras, junto con los documentos de directrices de UI.&lt;/p>
&lt;hr>
&lt;h2 id="-principales-marcas-obligatorias-y-mejores-prácticas">📌 Principales marcas obligatorias y mejores prácticas
&lt;/h2>&lt;ol>
&lt;li>
&lt;p>&lt;strong>Uso del asterisco (*)&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>Es el más extendido en general, y se añade un &amp;ldquo;*&amp;rdquo; a los campos obligatorios.&lt;/li>
&lt;li>Sin embargo, es &lt;strong>obligatorio incluir una explicación al principio del formulario, como &amp;ldquo;* indica un campo obligatorio&amp;rdquo;&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"
>Universidad Estatal de California, Northridge&lt;/a>).&lt;/li>
&lt;li>También hay ejemplos de enfatizarlo usando colores (texto rojo, etc.).&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>Especificar &amp;ldquo;Required&amp;rdquo; o &amp;ldquo;(required)&amp;rdquo; en la etiqueta&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>Al añadir la palabra &amp;ldquo;Required&amp;rdquo; en la etiqueta, se puede indicar claramente a los lectores de pantalla, mejorando la accesibilidad (&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 y el atributo &lt;code>required&lt;/code> de HTML5&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>Además de la visualización, se puede transmitir de forma programática que es obligatorio mediante &lt;code>aria-required=&amp;quot;true&amp;quot;&lt;/code> o &lt;code>&amp;lt;input required&amp;gt;&lt;/code> (&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 opcionales usando &amp;ldquo;(optional)&amp;rdquo;&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>También hay una manera de especificar los campos opcionales como &amp;ldquo;(optional)&amp;rdquo; en lugar de los campos obligatorios, lo cual es efectivo cuando hay una mezcla de ambos.&lt;/li>
&lt;li>Sin embargo, Nielsen-Norman señala que &amp;ldquo;es más fácil juzgar si también se indica lo obligatorio&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="-resumen-de-documentos-de-directrices-de-ui">✅ Resumen de documentos de directrices de UI
&lt;/h2>&lt;table>
&lt;thead>
&lt;tr>
&lt;th>Proveedor&lt;/th>
&lt;th>Contenido&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>Se recomienda la combinación de asterisco + texto explicativo, y mostrar solo lo opcional se considera poco amigable (&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>・Se usa la palabra &amp;ldquo;Required&amp;rdquo; o una imagen dentro de la etiqueta.&lt;br>・Se afirma que la sugerencia solo por color es insuficiente.&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;strong>W3C Techniques (H90)&lt;/strong>&lt;/td>
&lt;td>Hay ejemplos que incluyen un asterisco o &amp;ldquo;(required)&amp;rdquo; en la etiqueta, y definen su significado al principio del formulario.&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;strong>TPGi (Doing what&amp;rsquo;s required)&lt;/strong>&lt;/td>
&lt;td>Considerando la accesibilidad, la combinación óptima es asterisco + atributo ARIA + inserción de texto en la etiqueta.&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;strong>Guía de UX de Formularios Contensis&lt;/strong>&lt;/td>
&lt;td>Un marcado consistente (* o (optional)) se resume brevemente como importante.&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;hr>
&lt;h2 id="-enfoques-recomendados-para-la-implementación">✅ Enfoques recomendados para la implementación
&lt;/h2>&lt;ul>
&lt;li>
&lt;p>Agregar texto explicativo &lt;strong>al principio del formulario&lt;/strong>:&lt;/p>
&lt;blockquote>
&lt;p>Fields marked with * are required.
(o &amp;ldquo;All fields are required&amp;rdquo; en general, &amp;ldquo;unless marked optional&amp;rdquo; si hay opcionales)&lt;/p>
&lt;/blockquote>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>Asignación de etiquetas&lt;/strong>:&lt;/p>
&lt;ul>
&lt;li>Se escribe como &lt;code>First Name *&lt;/code> o &lt;code>Email (required)&lt;/code>.&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>Atributos ARIA y 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>No dependa solo del color&lt;/strong>: Responda tanto de forma visual como programática.&lt;/p>
&lt;/li>
&lt;/ul>
&lt;hr>
&lt;h2 id="-enlaces-de-referencia-documentos-de-directrices-de-ui">🔗 Enlaces de referencia (Documentos de directrices 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"
>Universidad Estatal de California, 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>Si es necesario, también podemos proporcionar ejemplos específicos de código HTML/CSS, o plantillas de diseño de componentes de UI para Sketch o Figma. ¡No dude en consultarnos!&lt;/p></description></item><item><title>Cómo instalar Gemini CLI en un entorno Windows</title><link>http://kenji.blog/es/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/</link><pubDate>Sun, 13 Jul 2025 23:49:56 +0900</pubDate><guid>http://kenji.blog/es/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/</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 Cómo instalar Gemini CLI en un entorno Windows" />&lt;h1 id="para-principiantescómo-instalar-gemini-cli-en-windows">【Para principiantes】Cómo instalar Gemini CLI en Windows
&lt;/h1>&lt;p>&amp;ldquo;Gemini CLI&amp;rdquo; te permite utilizar la IA generativa de Google, &amp;ldquo;Gemini&amp;rdquo;, desde la línea de comandos.
En este artículo, explicaremos los pasos para instalar Gemini CLI en un entorno Windows de la forma más clara posible.&lt;/p>
&lt;hr>
&lt;h2 id="1-preparación-instalar-nodejs-y-npm">1. Preparación: Instalar Node.js y npm
&lt;/h2>&lt;p>Primero, dado que Gemini CLI se ejecuta en un entorno llamado &amp;ldquo;Node.js&amp;rdquo;, es necesario instalar lo siguiente:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Node.js&lt;/strong>&lt;/li>
&lt;li>&lt;strong>npm (herramienta de gestión de paquetes incluida con Node.js)&lt;/strong>&lt;/li>
&lt;li>&lt;strong>npx (herramienta de ejecución de comandos incluida con npm)&lt;/strong>&lt;/li>
&lt;/ul>
&lt;p>Descarga la versión de Node.js para Windows desde el siguiente sitio web oficial (se recomienda la versión LTS):&lt;/p>
&lt;p>👉 &lt;a class="link" href="https://nodejs.org/" target="_blank" rel="noopener"
>Sitio web oficial de Node.js&lt;/a>&lt;/p>
&lt;p>Una vez completada la instalación, verifiquemos si se instaló correctamente con los siguientes 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-iniciar-powershell">2. Iniciar PowerShell
&lt;/h2>&lt;p>Para usar Gemini CLI en Windows, generalmente se opera usando PowerShell.
Escribe &amp;ldquo;PowerShell&amp;rdquo; en el menú Inicio para iniciarlo.&lt;/p>
&lt;hr>
&lt;h2 id="3-instalar-gemini-cli">3. Instalar Gemini CLI
&lt;/h2>&lt;p>Copia y pega el siguiente comando en PowerShell y ejecútalo:&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 sirve para ejecutar temporalmente el paquete Gemini CLI publicado por Google.
Es posible que se te solicite una configuración inicial o que inicies sesión según sea necesario.&lt;/p>
&lt;p>※ La primera vez puede tardar unos minutos. Si aparece un error, verifica nuevamente Node.js y tu entorno de red.&lt;/p>
&lt;hr>
&lt;h2 id="4-instalación-completada-qué-hacer-a-continuación">4. ¡Instalación completada! Qué hacer a continuación
&lt;/h2>&lt;p>Con esto, Gemini CLI se ha instalado en Windows.
A partir de ahora, podrás usar Gemini desde la línea de comandos para realizar diversas operaciones, como la generación de texto y el autocompletado de código.&lt;/p>
&lt;p>Si deseas consultar la documentación oficial o la ayuda, también puedes utilizar comandos como el siguiente.&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="resumen">Resumen
&lt;/h2>&lt;p>Repasemos los pasos para instalar Gemini CLI en Windows.&lt;/p>
&lt;ol>
&lt;li>Instalar Node.js y npm&lt;/li>
&lt;li>Iniciar PowerShell&lt;/li>
&lt;li>Ejecutar &lt;code>npx @google/gemini-cli&lt;/code>&lt;/li>
&lt;/ol>
&lt;p>¡Con esto ya estás listo!
Si quieres usar IA generativa desde tu entorno local, no dudes en intentarlo utilizando estos pasos como referencia.&lt;/p></description></item><item><title>He sido galardonado nuevamente como Microsoft MVP (2025-2026)</title><link>http://kenji.blog/es/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/</link><pubDate>Sun, 13 Jul 2025 22:01:15 +0900</pubDate><guid>http://kenji.blog/es/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/</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 He sido galardonado nuevamente como Microsoft MVP (2025-2026)" />&lt;h1 id="he-sido-galardonado-nuevamente-como-microsoft-mvp-2025-2026">¡He sido galardonado nuevamente como Microsoft MVP (2025-2026)!
&lt;/h1>&lt;p>Hola, soy kenji.&lt;/p>
&lt;p>Quiero compartir una noticia con ustedes. Este año, he sido galardonado nuevamente como &lt;strong>Microsoft MVP (Most Valuable Professional)&lt;/strong>. Esta es la ** novena vez** que recibo este premio.&lt;/p>
&lt;p>Muchas gracias a todos los que siempre me apoyan.&lt;/p>
&lt;hr>
&lt;h2 id="qué-es-microsoft-mvp">¿Qué es Microsoft MVP?
&lt;/h2>&lt;p>Al escuchar &amp;ldquo;MVP&amp;rdquo;, muchos podrían pensar en el jugador más valioso en los deportes, pero aquí MVP es un &lt;strong>título otorgado a quienes han contribuido a la comunidad técnica de Microsoft&lt;/strong>.&lt;/p>
&lt;p>Específicamente, es un sistema que evalúa actividades de &amp;ldquo;compartir tus conocimientos y experiencias por el bien de alguien&amp;rdquo;, tales como:&lt;/p>
&lt;ul>
&lt;li>Difusión de información en blogs técnicos y redes sociales&lt;/li>
&lt;li>Publicación de código de ejemplo en GitHub&lt;/li>
&lt;li>Presentaciones en grupos de estudio y conferencias&lt;/li>
&lt;li>Respuestas en sitios de preguntas y respuestas (Q&amp;amp;A)&lt;/li>
&lt;li>Intercambio técnico y colaboración con desarrolladores en el extranjero&lt;/li>
&lt;li>Participación y publicaciones en comunidades donde los ingenieros se conectan&lt;/li>
&lt;/ul>
&lt;p>Los galardonados se encuentran en todo el mundo, pero el número de personas seleccionadas cada año es limitado, y ser galardonado nuevamente no es nada fácil. Es por eso que es un verdadero honor ser reconocido de esta manera.&lt;/p>
&lt;hr>
&lt;h2 id="en-qué-me-he-centrado-el-último-año">En qué me he centrado el último año
&lt;/h2>&lt;p>Este año, me he centrado en la difusión de información con una conciencia de &lt;strong>&amp;ldquo;claridad&amp;rdquo; y &amp;ldquo;accesibilidad&amp;rdquo;&lt;/strong> de la tecnología.&lt;/p>
&lt;ul>
&lt;li>Publicación de código de ejemplo práctico en GitHub&lt;/li>
&lt;li>Presentaciones en grupos de estudio y conferencias (tanto a nivel nacional como internacional)&lt;/li>
&lt;li>Difusión regular de información a través de blogs técnicos y redes sociales&lt;/li>
&lt;li>Actividad continua de respuestas en sitios de preguntas y respuestas (Q&amp;amp;A)&lt;/li>
&lt;li>Intercambio de conocimientos en sitios de comunidades de ingenieros&lt;/li>
&lt;li>Interacción y verificación conjunta con ingenieros en el extranjero&lt;/li>
&lt;/ul>
&lt;p>Sobre todo, publicar código en GitHub ha sido muy memorable porque a veces recibo comentarios como &amp;ldquo;¡Estaba atascado en lo mismo, así que me salvó!&amp;rdquo;, lo que me hizo darme cuenta de que mis esfuerzos están ayudando al desarrollo de otras personas.&lt;/p>
&lt;p>Además, en mis presentaciones en eventos, a veces recibo comentarios como &amp;ldquo;Fue fácil de entender incluso para principiantes&amp;rdquo;, lo que también sirvió como una buena oportunidad para pensar en &amp;ldquo;¿Qué hace que una explicación técnica se transmita bien?&amp;rdquo;.&lt;/p>
&lt;hr>
&lt;h2 id="hacia-el-próximo-año">Hacia el próximo año
&lt;/h2>&lt;p>La evolución de la tecnología es realmente rápida, y solo seguirle el ritmo ya es difícil. Aun así, creo que hay un gran valor en ofrecer &lt;strong>conocimiento real como &amp;ldquo;información de primera mano&amp;rdquo;&lt;/strong>, como las experiencias reales y los puntos de tropiezo que he obtenido al probar las cosas por mí mismo.&lt;/p>
&lt;p>El próximo año, también me gustaría desafiarme a difundir &lt;strong>&amp;ldquo;contenido técnico visualmente fácil de entender&amp;rdquo; que incorpore videos y diagramas&lt;/strong>. Espero poder aumentar la cantidad de resultados que puedan ayudar a resolver los problemas de alguien al menos un poco.&lt;/p>
&lt;hr>
&lt;h2 id="finalmente">Finalmente
&lt;/h2>&lt;p>El título de MVP es, al fin y al cabo, solo un punto de paso.&lt;/p>
&lt;p>A partir de ahora, sin forzarme y a mi propio ritmo.
Pero asegurándome de ser útil para alguien.&lt;/p>
&lt;p>&amp;ldquo;Me salvó mientras investigaba&amp;rdquo;
&amp;ldquo;¡Este ejemplo funcionó!&amp;rdquo;
&amp;ldquo;Esta historia fue fácil de entender&amp;rdquo;&lt;/p>
&lt;p>Quiero seguir siendo un ingeniero del que se puedan decir cosas así.&lt;/p>
&lt;p>Espero contar con su apoyo en el futuro.&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 técnico: &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>Ventajas y desventajas de crear programas con Win32API + C++</title><link>http://kenji.blog/es/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/es/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 Ventajas y desventajas de crear programas con Win32API + C++" />&lt;h1 id="atractivo-y-desafíos-de-desarrollar-con-win32api--c">Atractivo y desafíos de desarrollar con Win32API + C++
&lt;/h1>&lt;p>Para aquellos que quieren profundizar en el desarrollo de aplicaciones para Windows, &lt;strong>Win32API + C++&lt;/strong> sigue siendo una opción poderosa.
Esta combinación, que permite interactuar con el sistema operativo desde la distancia más corta, combina alta velocidad y flexibilidad.&lt;/p>
&lt;p>Por otro lado, difiere enormemente de los estilos de desarrollo modernos, por lo que su aprendizaje requiere determinación.&lt;/p>
&lt;p>En esta página, explicaremos las ventajas y desventajas de forma sencilla desde &lt;strong>la perspectiva de un desarrollador activo de aplicaciones para Windows&lt;/strong>.&lt;/p>
&lt;hr>
&lt;h2 id="ventajas">Ventajas
&lt;/h2>&lt;h3 id="ejecución-nativa-ultrarrápida">Ejecución nativa ultrarrápida
&lt;/h3>&lt;p>Dado que C++ y Win32API funcionan en la capa más cercana al sistema operativo, casi no hay sobrecarga innecesaria.
La eficiencia en el uso de CPU y memoria es muy alta, presumiendo de una &lt;strong>velocidad de ejecución abrumadora&lt;/strong>.&lt;/p>
&lt;h3 id="alta-flexibilidad-y-libertad">Alta flexibilidad y libertad
&lt;/h3>&lt;p>Puede &lt;strong>controlar de forma precisa y por sí mismo&lt;/strong> todos los comportamientos de la aplicación, como el control de ventanas, el procesamiento asíncrono, la integración COM y la gestión de procesos.
También es posible crear herramientas especializadas para un propósito o su propio marco de trabajo personalizado.&lt;/p>
&lt;h3 id="fácil-de-distribuir-sin-necesidad-de-tiempo-de-ejecución">Fácil de distribuir sin necesidad de tiempo de ejecución
&lt;/h3>&lt;p>Dado que no se requieren tiempos de ejecución externos como .NET o Java, &lt;strong>se puede distribuir solo con un archivo ejecutable&lt;/strong>.
Es menos propenso a problemas durante la redistribución y es atractivo porque es fácil de ejecutar incluso sin un instalador.&lt;/p>
&lt;h3 id="se-pueden-crear-aplicaciones-ligeras">Se pueden crear aplicaciones ligeras
&lt;/h3>&lt;p>Dado que solo requiere la configuración mínima necesaria, se caracteriza por &lt;strong>una huella de memoria muy pequeña&lt;/strong>.
Funciona de manera fluida incluso en PC con bajas especificaciones o entornos de máquinas virtuales.&lt;/p>
&lt;h3 id="control-avanzado-a-nivel-de-sistema-operativo-posible">Control avanzado a nivel de sistema operativo posible
&lt;/h3>&lt;p>Puede realizar &lt;strong>controles que son difíciles con lenguajes y bibliotecas normales&lt;/strong>, como el hook global del ratón/teclado, el ajuste fino del estilo de la ventana y la manipulación del menú del sistema.&lt;/p>
&lt;hr>
&lt;h2 id="desventajas">Desventajas
&lt;/h2>&lt;h3 id="baja-eficiencia-de-desarrollo">Baja eficiencia de desarrollo
&lt;/h3>&lt;p>La construcción de la GUI también debe hacerse completamente mediante código, y a veces se necesitan &lt;strong>decenas de líneas de código solo para crear un botón&lt;/strong>.
Las modificaciones por cambios de diseño también son engorrosas, y la productividad es más baja en comparación con el desarrollo utilizando un marco de trabajo de UI.&lt;/p>
&lt;h3 id="la-mantenibilidad-tiende-a-disminuir">La mantenibilidad tiende a disminuir
&lt;/h3>&lt;p>Hay mucho &lt;strong>código de estructura especial&lt;/strong>, como bucles de mensajes y procedimientos de ventana, lo que dificulta la legibilidad y la reutilización.
También tiene aspectos que lo hacen inadecuado para el desarrollo en equipo y el mantenimiento a largo plazo.&lt;/p>
&lt;h3 id="el-soporte-para-ui-moderna-es-tedioso">El soporte para UI moderna es tedioso
&lt;/h3>&lt;p>Es &lt;strong>difícil soportar la UX requerida en los últimos años&lt;/strong>, como soporte de alto DPI, interfaz táctil, accesibilidad y modo oscuro.
Se necesita tiempo y esfuerzo porque requiere hacerlo manualmente uno por uno.&lt;/p>
&lt;h3 id="no-soporta-multiplataforma">No soporta multiplataforma
&lt;/h3>&lt;p>Como es una API completamente exclusiva de Windows, &lt;strong>no se puede portar a macOS o Linux&lt;/strong>.
Si asume la implementación en múltiples plataformas, necesitará seleccionar otras tecnologías.&lt;/p>
&lt;h3 id="el-costo-de-aprendizaje-es-extremadamente-alto">El costo de aprendizaje es extremadamente alto
&lt;/h3>&lt;p>Debe comprender &lt;strong>conceptos y mecanismos que rara vez se usan en la actualidad&lt;/strong>, como manejadores (handles), GDI, COM y OLE.
Mucha de la documentación es antigua, y el aprendizaje requiere tiempo y perseverancia.&lt;/p>
&lt;hr>
&lt;h2 id="usos-adecuados">Usos adecuados
&lt;/h2>&lt;ul>
&lt;li>&lt;strong>Herramientas ligeras&lt;/strong> como lanzadores de archivos y asistencia de teclas de acceso rápido&lt;/li>
&lt;li>&lt;strong>Utilidades del sistema&lt;/strong> como operaciones del portapapeles y control IME&lt;/li>
&lt;li>&lt;strong>Aplicaciones de tipo control nativo&lt;/strong> como hooks globales y captura de ventanas&lt;/li>
&lt;li>&lt;strong>Herramientas de asistencia de controladores&lt;/strong> que están estrechamente vinculadas al hardware&lt;/li>
&lt;/ul>
&lt;hr>
&lt;h2 id="usos-no-adecuados">Usos no adecuados
&lt;/h2>&lt;ul>
&lt;li>&lt;strong>Aplicaciones dirigidas a consumidores generales&lt;/strong> donde se enfatiza la UI/UX moderna&lt;/li>
&lt;li>&lt;strong>Prototipado y desarrollo MVP&lt;/strong> que prioriza la velocidad&lt;/li>
&lt;li>&lt;strong>Proyectos a gran escala&lt;/strong> que asumen operaciones a largo plazo y desarrollo en equipo&lt;/li>
&lt;li>&lt;strong>Productos multiplataforma&lt;/strong> que necesitan soportar múltiples sistemas operativos&lt;/li>
&lt;/ul>
&lt;hr>
&lt;h2 id="resumen-de-evaluación">Resumen de evaluación
&lt;/h2>&lt;table>
&lt;thead>
&lt;tr>
&lt;th>Punto de vista&lt;/th>
&lt;th>Evaluación&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>Velocidad de ejecución&lt;/td>
&lt;td>◎ Muy rápida&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Eficiencia de memoria&lt;/td>
&lt;td>◎ Excelente&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Velocidad de desarrollo&lt;/td>
&lt;td>× Lenta&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Mantenibilidad&lt;/td>
&lt;td>× Baja&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Soporte multiplataforma&lt;/td>
&lt;td>× No soportado&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Soporte UI moderna&lt;/td>
&lt;td>× Débil&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Grado de libertad de control del SO&lt;/td>
&lt;td>◎ Abrumadoramente alto&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;hr>
&lt;h2 id="conclusión">Conclusión
&lt;/h2>&lt;p>&lt;strong>Win32API + C++ es una herramienta adecuada para desarrolladores que &amp;ldquo;quieren manejar todo el sistema operativo por sí mismos&amp;rdquo;.&lt;/strong>
Si bien su poder es muy grande, el aprendizaje y la operación requieren la correspondiente determinación.&lt;/p>
&lt;blockquote>
&lt;p>Si vale la pena &amp;ldquo;elegirlo a propósito&amp;rdquo; depende de la naturaleza de la aplicación a la que apunte.&lt;/p>
&lt;/blockquote>
&lt;hr>
&lt;p>Sumergirse en el mundo de &lt;code>#include &amp;lt;windows.h&amp;gt;&lt;/code> sin depender de marcos de trabajo GUI o lenguajes modernos&amp;hellip;
Esa elección sigue siendo significativa hoy en día.&lt;/p></description></item><item><title>[Para principiantes] Pasos para introducir libcurl (compatible con OpenSSL) en Visual Studio usando vcpkg</title><link>http://kenji.blog/es/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/es/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 principiantes] Pasos para introducir libcurl (compatible con OpenSSL) en Visual Studio usando vcpkg" />&lt;h2 id="si-desea-usar-libcurl-compatible-con-openssl-en-visual-studio-la-introducción-de-vcpkg-es-fácil-y-recomendada">Si desea usar libcurl (compatible con OpenSSL) en Visual Studio, la introducción de vcpkg es fácil y recomendada
&lt;/h2>&lt;p>Cuando se quiere manejar comunicación HTTP en C++, &lt;code>libcurl&lt;/code> se usa a menudo. Pero, construir y ajustar dependencias es sorprendentemente molesto, ¿verdad?&lt;/p>
&lt;p>Ahí es donde &amp;ldquo;&lt;strong>vcpkg&lt;/strong>&amp;rdquo;, una herramienta de gestión de bibliotecas de C++ de Microsoft, resulta útil.
En esta ocasión, introduciremos los pasos para usar &lt;code>vcpkg&lt;/code> para instalar &lt;code>libcurl&lt;/code> (compatible con OpenSSL) y poder usarlo fluidamente en Visual Studio.&lt;/p>
&lt;hr>
&lt;h3 id="instalación-de-vcpkg-sólo-para-quienes-no-lo-tengan">Instalación de vcpkg (sólo para quienes no lo tengan)
&lt;/h3>&lt;p>Primero, instalemos &lt;code>vcpkg&lt;/code>. Por favor, ejecute los siguientes pasos en 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;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-powershell" data-lang="powershell">&lt;span class="line">&lt;span class="cl">&lt;span class="n">git&lt;/span> &lt;span class="n">clone&lt;/span> &lt;span class="n">https&lt;/span>&lt;span class="err">:&lt;/span>&lt;span class="p">//&lt;/span>&lt;span class="n">github&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">com&lt;/span>&lt;span class="p">/&lt;/span>&lt;span class="n">microsoft&lt;/span>&lt;span class="p">/&lt;/span>&lt;span class="n">vcpkg&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nb">cd &lt;/span>&lt;span class="n">vcpkg&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">.\&lt;/span>&lt;span class="nb">bootstrap-vcpkg&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="py">bat&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>※ Si Git aún no está instalado, por favor, instálelo desde el &lt;a class="link" href="https://git-scm.com/" target="_blank" rel="noopener"
>sitio web oficial de Git&lt;/a>.&lt;/p>
&lt;hr>
&lt;h3 id="instalación-de-libcurl-compatible-con-openssl">Instalación de libcurl (compatible con OpenSSL)
&lt;/h3>&lt;p>A continuación, usaremos vcpkg para instalar &lt;code>libcurl&lt;/code>. Para especificar la versión de 64 bits compatible con OpenSSL, ejecute el siguiente 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="n">vcpkg&lt;/span> &lt;span class="n">install&lt;/span> &lt;span class="n">curl&lt;/span>&lt;span class="p">[&lt;/span>&lt;span class="no">ssl&lt;/span>&lt;span class="p">]&lt;/span> &lt;span class="p">-&lt;/span>&lt;span class="n">-triplet&lt;/span> &lt;span class="nb">x64-windows&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>Cuando se ejecuta este comando, las dependencias necesarias (como OpenSSL) también se configurarán automáticamente.&lt;/p>
&lt;hr>
&lt;h3 id="configuración-de-la-integración-con-visual-studio">Configuración de la integración con Visual Studio
&lt;/h3>&lt;p>Para que las bibliotecas introducidas con vcpkg se puedan usar fácilmente desde proyectos de Visual Studio, configure la integración con el siguiente 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="n">vcpkg&lt;/span> &lt;span class="n">integrate&lt;/span> &lt;span class="n">install&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>Al hacer esta configuración, &lt;code>#include &amp;lt;curl/curl.h&amp;gt;&lt;/code> se podrá usar automáticamente en el proyecto de Visual Studio, y ya no será necesario configurar manualmente la ruta de la biblioteca o la configuración del enlazador.&lt;/p>
&lt;hr>
&lt;h2 id="conclusión">Conclusión
&lt;/h2>&lt;p>Con esto, la preparación para introducir &lt;code>libcurl&lt;/code> (compatible con OpenSSL) en Visual Studio está completa.&lt;/p>
&lt;ul>
&lt;li>Usando vcpkg, las dependencias molestas se pueden gestionar todas a la vez&lt;/li>
&lt;li>Instale fácilmente libcurl con &lt;code>vcpkg install curl[ssl] --triplet x64-windows&lt;/code>&lt;/li>
&lt;li>La integración automática con Visual Studio es posible con &lt;code>vcpkg integrate install&lt;/code>&lt;/li>
&lt;/ul>
&lt;p>Después de esto, incluya los encabezados en el proyecto y comience a desarrollar usando la API de libcurl.
Aproveche el conveniente vcpkg para aumentar enormemente la eficiencia de su desarrollo.&lt;/p></description></item><item><title>Qué se necesita para no caer en teorías de conspiración</title><link>http://kenji.blog/es/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/es/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 Qué se necesita para no caer en teorías de conspiración" />&lt;h2 id="la-seguridad-mental-necesaria-para-no-ser-arrastrado-por-teorías-de-conspiración">La &amp;ldquo;seguridad mental&amp;rdquo; necesaria para no ser arrastrado por teorías de conspiración
&lt;/h2>&lt;p>Al navegar por internet, a veces encontramos historias con tintes de &amp;ldquo;teoría de conspiración&amp;rdquo;.&lt;/p>
&lt;p>&amp;ldquo;¿No habrá alguien manipulando este evento desde las sombras?&amp;rdquo;
&amp;ldquo;¿Acaso se está ocultando la verdadera realidad?&amp;rdquo;
Seguramente muchas personas han visto cómo este tipo de discursos se difunden de manera plausible.&lt;/p>
&lt;p>Para evitar dejarse atrapar demasiado por esta información, no solo son importantes el &amp;ldquo;conocimiento&amp;rdquo; o la &amp;ldquo;capacidad de pensamiento&amp;rdquo;, sino que es fundamental ajustar el &lt;strong>estado mental&lt;/strong>, es decir, la &amp;ldquo;seguridad mental&amp;rdquo;.&lt;/p>
&lt;p>A continuación, presentamos 6 enfoques efectivos para lograrlo.&lt;/p>
&lt;hr>
&lt;h3 id="no-conectar-inmediatamente-la-ansiedad-con-una-respuesta">No conectar inmediatamente la ansiedad con una &amp;ldquo;respuesta&amp;rdquo;
&lt;/h3>&lt;p>Una gran característica de las teorías de conspiración es que ofrecen &amp;ldquo;respuestas&amp;rdquo; claras y fáciles de entender frente a la ansiedad o las dudas.&lt;/p>
&lt;p>Por ejemplo, ante preguntas como:&lt;/p>
&lt;ul>
&lt;li>&amp;ldquo;¿Por qué ocurren incidentes como este?&amp;rdquo;&lt;/li>
&lt;li>&amp;ldquo;¿Quién se beneficia?&amp;rdquo;&lt;/li>
&lt;/ul>
&lt;p>Es fácil convencerse cuando se presenta un guion del tipo &amp;ldquo;En realidad, ○○ lo está manipulando en secreto&amp;rdquo;.&lt;/p>
&lt;p>Sin embargo, precisamente cuando sentimos ansiedad, es importante &lt;strong>no sacar conclusiones precipitadas y mantenerlas en suspenso&lt;/strong>.&lt;/p>
&lt;blockquote>
&lt;p>La &amp;ldquo;capacidad de permanecer en la incertidumbre&amp;rdquo; también es una muestra de madurez intelectual.&lt;/p>
&lt;/blockquote>
&lt;hr>
&lt;h3 id="ampliar-intencionalmente-las-fuentes-de-información">Ampliar intencionalmente las fuentes de información
&lt;/h3>&lt;p>Muchas de las personas que se sumergen en teorías de conspiración tienden a consumir intensamente solo &amp;ldquo;información con perspectivas similares&amp;rdquo;.&lt;/p>
&lt;p>A esto se le llama &amp;ldquo;sesgo de confirmación&amp;rdquo;, un sesgo psicológico que lleva a exponerse únicamente a información que refuerza las ideas que ya se tienen.&lt;/p>
&lt;p>Especialmente, los algoritmos de redes sociales y sitios de videos muestran continuamente publicaciones que podrían encajar con nuestras preferencias, lo que puede estrechar nuestra visión de forma natural.&lt;/p>
&lt;p>Conscientemente, acciones como:&lt;/p>
&lt;ul>
&lt;li>Consumir medios con diferentes puntos de vista&lt;/li>
&lt;li>Revisar noticias internacionales o fuentes académicas&lt;/li>
&lt;li>Prestar atención a opiniones distintas a las propias&lt;/li>
&lt;/ul>
&lt;p>Es decir, &lt;strong>diversificar las fuentes de información&lt;/strong>, ayuda a evitar riesgos.&lt;/p>
&lt;hr>
&lt;h3 id="no-pensar-a-mí-no-me-engañan">No pensar &amp;ldquo;A mí no me engañan&amp;rdquo;
&lt;/h3>&lt;p>Curiosamente, las personas más lógicas y con mayor conocimiento a menudo son las más propensas a caer en teorías de conspiración.&lt;/p>
&lt;p>Esto se debe a que creer &amp;ldquo;Yo puedo darme cuenta de verdades que otros no ven&amp;rdquo; nubla el juicio.&lt;/p>
&lt;p>Por muy cuidadosos que seamos, los seres humanos cometemos errores. Por eso, &lt;strong>partir de la premisa de que nosotros también podemos ser engañados&lt;/strong> es, de hecho, una actitud más racional.&lt;/p>
&lt;blockquote>
&lt;p>&amp;ldquo;Dudar sin llegar a conclusiones definitivas&amp;rdquo; se convierte en una defensa.&lt;/p>
&lt;/blockquote>
&lt;hr>
&lt;h3 id="no-dejarse-arrastrar-por-la-historia-observar-la-estructura">No dejarse arrastrar por la historia, observar la estructura
&lt;/h3>&lt;p>Las teorías de conspiración siempre van acompañadas de una &amp;ldquo;narrativa dramática&amp;rdquo;.&lt;/p>
&lt;ul>
&lt;li>El conflicto entre el bien y el mal&lt;/li>
&lt;li>Dominantes y dominados&lt;/li>
&lt;li>Mi yo despierto vs los demás con el cerebro lavado&lt;/li>
&lt;/ul>
&lt;p>Dicotomías simples como estas pueden ser atractivas como historias, pero no necesariamente reflejan la realidad de manera correcta.&lt;/p>
&lt;p>En los eventos del mundo real y los movimientos sociales, se entrelazan muchos elementos como relaciones causales complejas, antecedentes históricos y estructuras institucionales.&lt;/p>
&lt;p>Es importante no dejarse llevar emocionalmente por la historia y tener una &lt;strong>perspectiva para comprender estructuralmente&lt;/strong> &amp;ldquo;¿Por qué sucede esto?&amp;rdquo;.&lt;/p>
&lt;hr>
&lt;h3 id="no-ignorar-la-soledad">No ignorar la soledad
&lt;/h3>&lt;p>Detrás de una fuerte atracción por las teorías de conspiración, a menudo se esconde el &amp;ldquo;aislamiento&amp;rdquo; o la &amp;ldquo;falta de un lugar de pertenencia&amp;rdquo;.&lt;/p>
&lt;p>Cuando las personas se sienten solas, tienden a depender profundamente de grupos o personas que las comprenden. Las comunidades de teorías de conspiración a veces funcionan como ese &amp;ldquo;lugar de pertenencia&amp;rdquo;.&lt;/p>
&lt;p>Por eso, buscar formas de no aislarse también contribuye a la seguridad mental.&lt;/p>
&lt;p>Por ejemplo:&lt;/p>
&lt;ul>
&lt;li>Conversar con otras personas regularmente&lt;/li>
&lt;li>Participar en comunidades donde se compartan pasatiempos o intereses&lt;/li>
&lt;li>Mantener conexiones no solo en línea, sino también fuera de ella&lt;/li>
&lt;/ul>
&lt;p>Este tipo de acciones conducen a la estabilidad emocional.&lt;/p>
&lt;hr>
&lt;h3 id="priorizar-el-diálogo-sobre-la-negación">Priorizar el diálogo sobre la negación
&lt;/h3>&lt;p>Incluso si alguien cercano se inclina por las teorías de conspiración, &lt;strong>negar sus ideas de forma rotunda&lt;/strong> puede ser contraproducente.&lt;/p>
&lt;p>Cuando a una persona se le niegan sus creencias, su tendencia psicológica a protegerlas se fortalece (lo que se conoce como &amp;ldquo;cognición defensiva&amp;rdquo;).&lt;/p>
&lt;p>En su lugar:&lt;/p>
&lt;ul>
&lt;li>Preguntar amablemente: &amp;ldquo;¿Por qué piensas eso?&amp;rdquo;&lt;/li>
&lt;li>Mostrar calmadamente el propio punto de vista: &amp;ldquo;Tal vez también exista esta forma de pensarlo&amp;rdquo;&lt;/li>
&lt;/ul>
&lt;p>Adoptar este &lt;strong>enfoque basado en el diálogo&lt;/strong> crea la posibilidad de que la perspectiva de la otra persona se amplíe de forma natural.&lt;/p>
&lt;hr>
&lt;h2 id="resumen-qué-se-puede-hacer-para-mantener-distancia-de-las-teorías-de-conspiración">Resumen: Qué se puede hacer para mantener distancia de las teorías de conspiración
&lt;/h2>&lt;ul>
&lt;li>Tener la capacidad de suspender el juicio y no conectar rápidamente la ansiedad con respuestas definitivas.&lt;/li>
&lt;li>Diversificar las fuentes de información para notar posibles sesgos.&lt;/li>
&lt;li>Reconocer que nuestro propio juicio no es absoluto.&lt;/li>
&lt;li>Ver las cosas a través de estructuras y relaciones causales, no de narrativas.&lt;/li>
&lt;li>Evitar la soledad y mantener conexiones.&lt;/li>
&lt;li>Enfrentar las teorías de conspiración de otros con diálogo en lugar de negación.&lt;/li>
&lt;/ul>
&lt;hr>
&lt;p>Se dice que ser atraído o no por teorías de conspiración depende más de la influencia del entorno y el estado psicológico que del nivel de conocimiento.&lt;/p>
&lt;p>Por eso mismo, no asumir que &amp;ldquo;a mí no me pasará&amp;rdquo;, y en el día a día, de a poco, &lt;strong>buscar formas de aumentar la seguridad mental&lt;/strong>, sin duda será un gran apoyo para vivir de manera flexible en la sociedad de la información que nos espera.&lt;/p></description></item><item><title>Historia del no-code en entornos locales</title><link>http://kenji.blog/es/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/</link><pubDate>Sat, 26 Apr 2025 16:46:11 +0900</pubDate><guid>http://kenji.blog/es/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/</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 Historia del no-code en entornos locales" />&lt;h1 id="historia-del-desarrollo-low-code--no-code-desde-la-década-de-1980-hasta-el-presente">Historia del desarrollo low-code / no-code (Desde la década de 1980 hasta el presente)
&lt;/h1>&lt;p>El desarrollo low-code / no-code es un método de desarrollo que permite crear aplicaciones, sitios web y bases de datos sin necesidad de tener conocimientos especializados en programación. Esta idea comenzó en la década de 1980 y ha evolucionado como diversas plataformas junto con la popularización de las PC, la evolución de Internet y la expansión de las tecnologías en la nube. En este artículo, presentaremos herramientas y servicios representativos por década, destacando sus características y precios.&lt;/p>
&lt;hr>
&lt;h2 id="década-de-1980-los-primeros-años">Década de 1980: Los primeros años
&lt;/h2>&lt;ul>
&lt;li>
&lt;p>&lt;strong>HyperCard (Apple, 1987)&lt;/strong>
Herramienta de creación de aplicaciones para Macintosh. Configura pantallas en formato de tarjetas y permite crear interfaces gráficas (GUI) mediante arrastrar y soltar (drag &amp;amp; drop). También permite un control básico de acciones mediante su propio lenguaje de scripting, &amp;ldquo;HyperTalk&amp;rdquo;. Fue popular para el prototipado. Su precio de lanzamiento fue de 49.95 dólares, y posteriormente se ofreció de forma gratuita a los nuevos compradores de Mac. Su versión final fue en 1998 y no fue compatible con Mac OS X y versiones posteriores.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>FileMaker (Claris/Apple, 1985)&lt;/strong>
Software de base de datos gráfica. Es una herramienta de base de datos relacional que, además de mostrar datos en formato de tabla, cuenta con edición de diseño libre y funciones de scripting. Actualmente se ofrece como &amp;ldquo;Claris FileMaker Pro&amp;rdquo;, y la versión con licencia completa cuesta 594 dólares (a partir de 2024).&lt;/p>
&lt;/li>
&lt;/ul>
&lt;hr>
&lt;h2 id="década-de-1990-el-auge-de-las-aplicaciones-gui-y-el-desarrollo-empresarial">Década de 1990: El auge de las aplicaciones GUI y el desarrollo empresarial
&lt;/h2>&lt;ul>
&lt;li>
&lt;p>&lt;strong>Visual Basic (Microsoft, 1991)&lt;/strong>
IDE especializado en el desarrollo de aplicaciones para Windows. Permitía construir fácilmente aplicaciones basadas en eventos al colocar componentes de la GUI (como botones y etiquetas) mediante arrastrar y soltar. Tras VB6.0 en 1998, se transicionó a la era .NET.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>Microsoft Access (1992)&lt;/strong>
Herramienta de desarrollo de bases de datos para Windows. Permite el diseño de bases de datos relacionales y la creación de formularios mediante GUI, siendo ampliamente utilizada para el desarrollo de aplicaciones empresariales para el público general. Actualmente se ofrece como parte de Microsoft 365.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>PowerBuilder (PowerSoft/Sybase, 1991)&lt;/strong>
Herramienta de desarrollo 4GL para aplicaciones empresariales. Compatible con la arquitectura cliente-servidor y con fuertes capacidades de integración de bases de datos. Actualmente sigue siendo ofrecido bajo el paraguas de SAP.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>Dreamweaver (Macromedia, 1997)&lt;/strong>
Herramienta WYSIWYG que permite la creación visual de páginas web. Permite alternar entre la edición de HTML y la vista de diseño, y también contaba con soporte para ASP y PHP. Actualmente es ofrecida por Adobe y está disponible mediante suscripción (aproximadamente 34.49 dólares al mes).&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>Flash (Macromedia, 1996)&lt;/strong>
Originalmente desarrollada como FutureSplash Animator, es una herramienta de creación de animaciones vectoriales. Posteriormente se utilizó para la creación de contenido interactivo para la web, pero su soporte finalizó en 2020 debido a problemas de seguridad.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>GameMaker (1999)&lt;/strong>
Herramienta de creación de juegos 2D para principiantes. La colocación de objetos y el control de eventos son posibles mediante arrastrar y soltar. Posteriormente también añadió soporte para scripting (GML) y actualmente ofrece múltiples planes para uso comercial.&lt;/p>
&lt;/li>
&lt;/ul>
&lt;hr>
&lt;h2 id="década-de-2000-la-expansión-de-la-web-y-el-código-abierto">Década de 2000: La expansión de la web y el código abierto
&lt;/h2>&lt;ul>
&lt;li>
&lt;p>&lt;strong>WordPress (2003)&lt;/strong>
CMS de código abierto que utiliza PHP y MySQL. Permite construir blogs y sitios web corporativos utilizando temas y plugins sin necesidad de conocimientos de programación. Se distribuye gratuitamente y es uno de los CMS más utilizados en todo el mundo.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>Wix (2006)&lt;/strong>
Servicio no-code que permite construir sitios web en el navegador. Permite elegir plantillas y editarlas mediante arrastrar y soltar. Además del plan gratuito, los planes pagos permiten el uso de dominios personalizados y funciones de comercio electrónico (e-commerce).&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>OutSystems (2001)&lt;/strong>
Plataforma low-code para empresas. Debido a que permite desarrollar sistemas empresariales rápidamente, su adopción avanza en grandes empresas y agencias gubernamentales. Compatible tanto con la nube como con infraestructuras locales (on-premises).&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>Scratch (MIT, 2007)&lt;/strong>
Herramienta de aprendizaje de programación desarrollada para niños. Permite crear juegos y animaciones combinando bloques de colores, y se utiliza ampliamente en entornos educativos. Se ofrece de forma gratuita.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>Airtable (2013)&lt;/strong>
Servicio basado en la nube que combina hojas de cálculo y bases de datos. Su apariencia es similar a Excel, pero permite relaciones, vistas Kanban, integración de API, entre otros. Es ampliamente utilizado tanto por individuos como por corporaciones.&lt;/p>
&lt;/li>
&lt;/ul>
&lt;hr>
&lt;h2 id="década-de-2010---2020-la-era-de-la-nube-y-la-automatización">Década de 2010 - 2020: La era de la nube y la automatización
&lt;/h2>&lt;p>En los últimos años, las herramientas low-code / no-code basadas en la nube han evolucionado rápidamente.&lt;/p>
&lt;ul>
&lt;li>
&lt;p>&lt;strong>Power Platform (Microsoft)&lt;/strong>
Plataforma integrada para el desarrollo y automatización de aplicaciones empresariales, que incluye &amp;ldquo;Power Apps&amp;rdquo; y &amp;ldquo;Power Automate&amp;rdquo;. Permite construir visualmente procesos empresariales corporativos mediante arrastrar y soltar.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>Salesforce Lightning Platform&lt;/strong>
Base de desarrollo de aplicaciones ofrecida por el CRM Salesforce. Permite crear aplicaciones empresariales con GUI y su integración con otros servicios de Salesforce es sencilla.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>Zapier / IFTTT&lt;/strong>
Herramientas de automatización que permiten construir conexiones entre múltiples servicios en la nube sin necesidad de programar. Por ejemplo, se pueden implementar fácilmente flujos de trabajo como &amp;ldquo;Notificar a Slack cuando se ingrese información en Google Forms&amp;rdquo;.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>Notion (Década de 2010)&lt;/strong>
Espacio de trabajo todo en uno que integra la gestión de documentos, gestión de tareas, Wiki, etc. También cuenta con funciones de base de datos personalizada y es útil para la mejora de procesos empresariales sin necesidad de código.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>Construct 3 / GameSalad&lt;/strong>
Herramientas que permiten crear juegos mediante arrastrar y soltar. Construct 3 es compatible con HTML5 y funciona en el navegador, siendo popular en entornos educativos y entre desarrolladores independientes.&lt;/p>
&lt;/li>
&lt;/ul>
&lt;hr>
&lt;h2 id="fuentes-de-información-y-notas-adicionales">Fuentes de información y notas adicionales
&lt;/h2>&lt;p>Este artículo se ha elaborado basándose en los sitios web oficiales de cada producto, Wikipedia y materiales/artículos de alta fiabilidad (Apple, Microsoft, Adobe, etc.). La información de precios hace referencia en la medida de lo posible a los datos oficiales de la época o los más recientes (indicados principalmente en dólares estadounidenses). Muchas de las herramientas de la década del 2000 en adelante son de suscripción, y las tarifas varían según el plan.&lt;/p></description></item><item><title>FizzBuzz</title><link>http://kenji.blog/es/p/fizzbuzz/</link><pubDate>Fri, 18 Apr 2025 00:58:11 +0900</pubDate><guid>http://kenji.blog/es/p/fizzbuzz/</guid><description>&lt;img src="http://kenji.blog/p/fizzbuzz/img.png" alt="Featured image of post FizzBuzz" />&lt;h2 id="qué-es-fizzbuzz-al-final-de-cuentas">¿Qué es FizzBuzz, al final de cuentas?
&lt;/h2>&lt;p>¡Hola!&lt;/p>
&lt;p>Hoy me gustaría escribir sobre &amp;ldquo;FizzBuzz&amp;rdquo;.&lt;/p>
&lt;p>Tanto para los que dicen &amp;ldquo;¡Ah, ya lo conozco!&amp;rdquo; como para los que piensan &amp;ldquo;He escuchado de eso, pero no lo entiendo bien&amp;rdquo;, acompáñenme un momento por favor. Se lee en unos pocos minutos, y quizás terminen diciendo &amp;ldquo;Ya veo&amp;rdquo;.&lt;/p>
&lt;hr>
&lt;h3 id="es-verdad-que-si-no-puedes-escribir-fizzbuzz-no-sirves-como-programador">¿Es verdad que &amp;ldquo;si no puedes escribir FizzBuzz, no sirves como programador&amp;rdquo;?
&lt;/h3>&lt;p>FizzBuzz, en resumen, es algo como esto.&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>Sí, este es el famoso &amp;ldquo;problema de FizzBuzz&amp;rdquo;.&lt;/p>
&lt;p>Se revisan los números del 1 al 100 en orden,&lt;br>
si es múltiplo de 3, se muestra &amp;ldquo;Fizz&amp;rdquo;, si es múltiplo de 5, &amp;ldquo;Buzz&amp;rdquo;,&lt;br>
y si es múltiplo de ambos, &amp;ldquo;FizzBuzz&amp;rdquo;. Es algo extremadamente simple.&lt;/p>
&lt;p>Sin embargo, por alguna razón, a menudo es tratado como &amp;ldquo;la prueba mínima para un programador&amp;rdquo;. Aparece en entrevistas, y en las redes sociales de vez en cuando se ven actitudes arrogantes como &amp;ldquo;Alguien que ni siquiera puede escribir FizzBuzz&amp;hellip;&amp;rdquo;.&lt;/p>
&lt;p>Pero, un momento.&lt;/p>
&lt;p>¿Realmente se puede afirmar que &amp;ldquo;no poder escribir FizzBuzz = no poder programar&amp;rdquo;?&lt;/p>
&lt;hr>
&lt;h3 id="no-se-trata-de-si-puedes-hacerlo-sino-de-si-estás-en-el-estado-para-hacerlo">No se trata de si puedes hacerlo, sino de si estás en el &amp;ldquo;estado&amp;rdquo; para hacerlo
&lt;/h3>&lt;p>Es cierto que FizzBuzz requiere comprender la sintaxis y el pensamiento lógico básico. Por lo tanto, es comprensible que se use para &amp;ldquo;comprobar los fundamentos&amp;rdquo;.&lt;/p>
&lt;p>Pero, piénsenlo.&lt;/p>
&lt;p>Si el entorno es diferente, el resultado también lo será.&lt;/p>
&lt;p>Por ejemplo,&lt;/p>
&lt;ul>
&lt;li>Cuando estás nervioso frente a un entrevistador que ves por primera vez&lt;/li>
&lt;li>Cuando de repente te dan una pizarra y no tienes un editor a la mano&lt;/li>
&lt;li>Cuando te preguntas &amp;ldquo;¿Qué era modulo otra vez?&amp;rdquo; y no te acuerdas al instante&lt;/li>
&lt;/ul>
&lt;p>&amp;hellip;¿No les ha pasado eso? Somos humanos. Creo que sí pasa.&lt;/p>
&lt;p>Por eso, creo que más que &amp;ldquo;si puedes escribir FizzBuzz&amp;rdquo;, lo que en realidad es importante es &amp;ldquo;si puedes llevarte a un estado donde puedas escribir FizzBuzz&amp;rdquo;.&lt;/p>
&lt;hr>
&lt;h3 id="la-trampa-del-típico-consejo-solo-entrénate-y-estarás-bien">La trampa del típico consejo &amp;ldquo;solo entrénate y estarás bien&amp;rdquo;
&lt;/h3>&lt;p>Cuando se habla de esto, suele surgir el consejo &amp;ldquo;¡Por eso debes practicar todos los días!&amp;rdquo;.&lt;/p>
&lt;p>Es cierto que la práctica repetitiva te permite escribir con fluidez, y eso en sí mismo es bueno. Pero si nos basamos en la premisa de que &amp;ldquo;si no puedes escribir FizzBuzz, estás descalificado&amp;rdquo;, a veces simplemente se convierte en miedo.&lt;/p>
&lt;p>Es decir, se tiende a crear una estructura donde sientes que &amp;ldquo;cometer un error = no sirvo&amp;rdquo;.&lt;/p>
&lt;p>Por ejemplo, el día que te quedas dormido por la mañana tiendes a pensar &amp;ldquo;soy un perezoso&amp;hellip;&amp;rdquo;. Pero puede ser simplemente que tu cuerpo estaba cansado.&lt;/p>
&lt;p>Con FizzBuzz pasa lo mismo.&lt;/p>
&lt;hr>
&lt;h3 id="a-pesar-de-todo-fizzbuzz-también-es-un-buen-problema">A pesar de todo, FizzBuzz también es un buen problema
&lt;/h3>&lt;p>A pesar de todo, no es que FizzBuzz sea malo.&lt;/p>
&lt;p>Al contrario, creo que es un problema muy bien hecho. Las reglas son simples y es fácil de expandir. Por ejemplo, si lo cambias de esta manera, el pensamiento se profundiza más.&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 es un ejemplo de que &amp;ldquo;puedes escribirlo sin usar if-elif-else&amp;rdquo;. Es un poco más elegante, ¿verdad?&lt;/p>
&lt;p>En otras palabras, FizzBuzz no solo sirve para ver &amp;ldquo;si pudiste hacerlo&amp;rdquo;, sino que también es una puerta de entrada para ver &amp;ldquo;cómo lo escribes&amp;rdquo; y &amp;ldquo;hasta qué punto lo entiendes&amp;rdquo;.&lt;/p>
&lt;hr>
&lt;h3 id="en-conclusión">En conclusión
&lt;/h3>&lt;p>Creo que no hay que darle un significado demasiado exagerado a si puedes hacer FizzBuzz o no.&lt;/p>
&lt;p>Incluso si no pudiste escribirlo, puede que simplemente &amp;ldquo;hoy estabas en un mal momento&amp;rdquo;, y a menudo puedes hacerlo si lo piensas detenidamente después.&lt;/p>
&lt;p>Sin apresurarnos, avancemos lentamente.&lt;/p>
&lt;p>El código es escrito por humanos. Por ser humanos, a veces olvidamos y a veces nos ponemos nerviosos. Creo que es suficiente si podemos avanzar poco a poco mientras aceptamos eso.&lt;/p>
&lt;p>Entonces, escribamos código de manera relajada hoy también.&lt;/p></description></item><item><title>La Torre de Hanói</title><link>http://kenji.blog/es/p/%E3%83%8F%E3%83%8E%E3%82%A4%E3%81%AE%E5%A1%94/</link><pubDate>Thu, 17 Apr 2025 22:23:14 +0900</pubDate><guid>http://kenji.blog/es/p/%E3%83%8F%E3%83%8E%E3%82%A4%E3%81%AE%E5%A1%94/</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 La Torre de Hanói" />&lt;h1 id="la-torre-de-hanói">La Torre de Hanói
&lt;/h1>&lt;p>¡Hola!&lt;/p>
&lt;p>Hoy me gustaría explicar sobre &amp;ldquo;La Torre de Hanói&amp;rdquo; junto con un programa de ejemplo en Python.&lt;/p>
&lt;hr>
&lt;h2 id="qué-es-la-torre-de-hanói">¿Qué es La Torre de Hanói?
&lt;/h2>&lt;p>La Torre de Hanói es un rompecabezas que usa 3 varillas y varios discos. Los discos tienen diferentes tamaños y, al principio, están apilados en una sola varilla en orden de tamaño de mayor a menor. Las reglas son las siguientes:&lt;/p>
&lt;ol>
&lt;li>Solo se puede mover un disco a la vez.&lt;/li>
&lt;li>No se puede colocar un disco más grande sobre uno más pequeño.&lt;/li>
&lt;/ol>
&lt;p>Este rompecabezas se considera un material didáctico excelente para aprender el pensamiento recursivo. La recursividad es un método para resolver un problema dividiéndolo en problemas más pequeños del mismo tipo. En la Torre de Hanói, para mover n discos, se repite la operación de mover n-1 discos.&lt;/p>
&lt;hr>
&lt;h2 id="resolvamos-la-torre-de-hanói-en-python">Resolvamos la Torre de Hanói en Python
&lt;/h2>&lt;p>A continuación, se muestra un código de ejemplo en Python para resolver la Torre de Hanói.&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"># Ejemplo: Mover 3 discos de A a 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>En este código, la función &lt;code>hanoi&lt;/code> se llama recursivamente y se muestran los pasos para mover los discos. Por ejemplo, para 3 discos, se obtiene la siguiente salida:&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>De esta manera, al usar un enfoque recursivo, se pueden resolver problemas complejos de forma sencilla.&lt;/p>
&lt;hr>
&lt;h2 id="cuánto-tiempo-se-tarda-en-mover-64-discos">¿Cuánto tiempo se tarda en mover 64 discos?
&lt;/h2>&lt;p>El número de movimientos en la Torre de Hanói requiere al menos 2^n - 1 veces. Es decir, para mover 64 discos, se necesitan 2^64 - 1 veces, aproximadamente 1.84×10^19 movimientos. Incluso si pudieras mover uno por segundo, tomaría unos 584,900 millones de años. Esto es aproximadamente 42 veces la edad del universo (unos 13,700 millones de años).&lt;/p>
&lt;p>Así, a medida que aumenta el número de discos, el número de movimientos necesarios aumenta exponencialmente. Por lo tanto, no es realista mover 64 discos en la práctica.&lt;/p>
&lt;hr>
&lt;h2 id="resumen">Resumen
&lt;/h2>&lt;p>La Torre de Hanói es el rompecabezas perfecto para aprender el pensamiento recursivo. Usando Python, puedes implementar fácilmente su solución. Sin embargo, debes tener cuidado porque a medida que aumenta el número de discos, el número de movimientos necesarios aumenta drásticamente.&lt;/p>
&lt;p>Al comprender el enfoque recursivo y escribir el código tú mismo, puedes mejorar tus habilidades de programación. ¡Por favor, intenta el desafío de la Torre de Hanói!&lt;/p>
&lt;hr></description></item><item><title>Número de líneas de código fuente</title><link>http://kenji.blog/es/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/</link><pubDate>Thu, 17 Apr 2025 10:33:02 +0900</pubDate><guid>http://kenji.blog/es/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/</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 líneas de código fuente" />&lt;h1 id="número-de-líneas-de-código-fuente">Número de líneas de código fuente
&lt;/h1>&lt;p>¡Hola!&lt;/p>
&lt;p>Hoy quiero hablar sobre un tema un poco inusual.&lt;/p>
&lt;p>Se trata de &amp;ldquo;¿Cuánto han aumentado las líneas de código fuente en comparación con el pasado?&amp;rdquo;.&lt;/p>
&lt;p>Por ejemplo, el software del transbordador espacial constaba de unas 420.000 líneas de código. Este código fue desarrollado bajo un proceso muy estricto para cumplir con los altos estándares de calidad de la NASA. Por otro lado, en los proyectos de software a gran escala modernos, no es raro que el número de líneas de código supere varias decenas de millones. Por ejemplo, se dice que la base de código de Google alcanza unos 2 mil millones de líneas.&lt;/p>
&lt;p>De esta manera, la escala del software ha ido creciendo con el tiempo.&lt;/p>
&lt;p>Pero, esperen un momento.&lt;/p>
&lt;p>El aumento en el número de líneas de código no es necesariamente algo malo. Para agregar nuevas funciones o responder a las necesidades de los usuarios, es natural que el código crezca. Sin embargo, a medida que aumenta el código, también lo hace el riesgo de errores (bugs). De hecho, una investigación muestra que cuando un proyecto de código abierto supera el millón de líneas, la tasa de aparición de errores tiende a aumentar.&lt;/p>
&lt;p>Dicho esto, no todos los proyectos aumentan su código de la misma manera.&lt;/p>
&lt;p>Por ejemplo, el kernel de Linux tenía unas 200.000 líneas en la versión 1.0 de 1994, pero aumentó a unas 20 millones de líneas en la versión 4.2 de 2015. Este aumento se debe a la necesidad de adaptarse a la evolución del hardware y agregar nuevas funciones.&lt;/p>
&lt;p>Por lo tanto, el número de líneas de código fuente varía mucho según la escala, el propósito y el contexto histórico del proyecto.&lt;/p>
&lt;p>El aumento en el número de líneas de código en sí mismo no es un problema, pero para mantener la calidad y la capacidad de mantenimiento, es necesaria una gestión adecuada. Es importante comprender los riesgos asociados con el aumento del código y tomar las medidas adecuadas.&lt;/p>
&lt;p>Por último, creo que es importante no obsesionarse demasiado con el número de líneas de código, sino centrarse en el propósito y la calidad del proyecto.&lt;/p>
&lt;p>¡Nos vemos en la próxima!&lt;/p></description></item><item><title>Principio de Kerckhoffs</title><link>http://kenji.blog/es/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/</link><pubDate>Wed, 16 Apr 2025 23:53:08 +0900</pubDate><guid>http://kenji.blog/es/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/</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 Principio de Kerckhoffs" />&lt;h1 id="principio-de-kerckhoffs">Principio de Kerckhoffs
&lt;/h1>&lt;hr>
&lt;p>¡Hola!&lt;/p>
&lt;p>Hoy me gustaría hablar sobre un tema un poco interesante y, de hecho, extremadamente importante: el &amp;ldquo;Principio de Kerckhoffs&amp;rdquo;.&lt;/p>
&lt;p>Ah, esperen, esperen.
Quizás algunos de ustedes piensen: &amp;ldquo;Nunca he oído hablar del &amp;lsquo;Principio de Kerckhoffs&amp;rsquo; y suena demasiado técnico&amp;hellip;&amp;rdquo;. No se preocupen. Este artículo está escrito precisamente para ustedes.&lt;/p>
&lt;hr>
&lt;h2 id="qué-significa-una-criptografía-segura">¿Qué significa una &amp;ldquo;criptografía segura&amp;rdquo;?
&lt;/h2>&lt;p>Por ejemplo, imaginen que alguien les dice: &amp;ldquo;Esta caja fuerte solo puede ser abierta por quienes conocen el método secreto&amp;rdquo;.&lt;/p>
&lt;p>A primera vista, eso parece muy seguro, ¿verdad?
Pero, si lo piensan bien, ¿no les da un poco de inquietud?&lt;/p>
&lt;p>Algo así como, &amp;ldquo;¿qué pasa si se descubre ese secreto? ¿Se acabó todo?&amp;rdquo;.&lt;/p>
&lt;p>De hecho, este es el motivo por el cual aparece el Principio de Kerckhoffs.&lt;/p>
&lt;hr>
&lt;h2 id="pero-qué-es-el-principio-de-kerckhoffs">Pero, ¿qué es el &amp;ldquo;Principio de Kerckhoffs&amp;rdquo;?
&lt;/h2>&lt;p>En términos muy generales, es la idea de que:&lt;/p>
&lt;p>&lt;strong>&amp;ldquo;Un sistema criptográfico debe ser seguro incluso si se conoce su funcionamiento.&amp;rdquo;&lt;/strong>&lt;/p>
&lt;p>Dicho de otra manera: &amp;ldquo;La seguridad debe depender únicamente de la &amp;lsquo;clave secreta&amp;rsquo;, ¡y está bien que el método de encriptación en sí sea público!&amp;rdquo;.&lt;/p>
&lt;p>Por el contrario, esto significa que &amp;ldquo;un sistema donde solo el algoritmo (el funcionamiento) es un secreto, se considera poco confiable&amp;rdquo;.&lt;/p>
&lt;hr>
&lt;h2 id="si-el-funcionamiento-es-secreto-es-seguro-puede-ser-un-poco-peligroso">&amp;ldquo;Si el funcionamiento es secreto, es seguro&amp;rdquo; puede ser un poco peligroso
&lt;/h2>&lt;p>Una forma de pensar muy común es esta:&lt;/p>
&lt;blockquote>
&lt;p>&amp;ldquo;Nadie ha visto el interior de esta aplicación, así que la seguridad está bien.&amp;rdquo;&lt;/p>
&lt;/blockquote>
&lt;p>Entiendo el sentimiento.
Pero, eso es lo mismo que decir &amp;ldquo;como nadie lo ha visto, no encontrarán los defectos, así que estamos a salvo&amp;rdquo;.&lt;/p>
&lt;p>En realidad, el simple hecho de que &amp;ldquo;nadie lo haya visto&amp;rdquo; puede convertirse en un riesgo en sí mismo.&lt;/p>
&lt;hr>
&lt;h2 id="pero-por-qué-es-tan-importante-este-principio">¿Pero por qué es tan importante este principio?
&lt;/h2>&lt;p>La razón es que, si alguien logra descubrir cómo funciona y puede descifrarlo fácilmente, entonces ese sistema criptográfico ya no sirve.&lt;/p>
&lt;p>Para usar una analogía, es como tener una cerradura con un mecanismo muy complejo, pero que resulta que se puede abrir con una llave maestra comprada en una tienda de todo a un dólar.&lt;/p>
&lt;p>Lo importante no es decir &amp;ldquo;estamos seguros porque la llave es secreta&amp;rdquo;, sino &amp;ldquo;incluso si mostramos todo el mecanismo, no se puede abrir sin la llave correcta&amp;rdquo;.&lt;/p>
&lt;hr>
&lt;h2 id="el-sentimiento-de-pero-no-da-un-poco-de-miedo">El sentimiento de &amp;ldquo;¿pero no da un poco de miedo?&amp;rdquo;
&lt;/h2>&lt;p>Aquí es donde muchas personas sienten:&lt;/p>
&lt;blockquote>
&lt;p>&amp;ldquo;Revelar todo el mecanismo, ¿no da un poco de miedo?&amp;rdquo;&lt;/p>
&lt;/blockquote>
&lt;p>Esa inquietud es comprensible.
Porque es natural pensar: &amp;ldquo;Si muestro todo lo que hay dentro, ¿no me copiarán o lo usarán con malas intenciones?&amp;rdquo;.&lt;/p>
&lt;p>Pero, ahí es exactamente donde radica el núcleo del Principio de Kerckhoffs.
La &amp;ldquo;fortaleza que no se desmorona incluso al mostrar el interior&amp;rdquo; es lo que constituye la verdadera seguridad.&lt;/p>
&lt;hr>
&lt;h2 id="dicho-esto-requiere-un-poco-de-valor-al-principio">Dicho esto, requiere un poco de valor al principio
&lt;/h2>&lt;p>Si nos ponemos en el lugar de los desarrolladores, &amp;ldquo;hacer público el funcionamiento = que se vean las debilidades&amp;rdquo;, y claro, eso da nervios.&lt;/p>
&lt;p>Pero piénsenlo un momento.&lt;/p>
&lt;p>Un sistema que se muestra de forma transparente y dice &amp;ldquo;cualquiera puede verificarlo&amp;rdquo;, al final resulta más confiable.&lt;/p>
&lt;p>Es parecido a las relaciones humanas, ¿verdad?&lt;/p>
&lt;p>&amp;ldquo;Las personas que nos aceptan después de mostrarles nuestro verdadero yo&amp;rdquo; son, al fin y al cabo, las que más tranquilidad nos dan.&lt;/p>
&lt;hr>
&lt;h2 id="en-conclusión">En conclusión
&lt;/h2>&lt;p>El Principio de Kerckhoffs puede sonar un poco teórico, pero su esencia es muy simple.&lt;/p>
&lt;p>Se trata simplemente de:
&lt;strong>&amp;ldquo;Creemos un sistema que no se rompa sin importar a quién se lo mostremos.&amp;rdquo;&lt;/strong>&lt;/p>
&lt;p>Más allá de los secretos superficiales, un diseño sólido.
En lugar de código que no quieres que nadie vea, código que no te dé vergüenza mostrar.&lt;/p>
&lt;p>Ese tipo de &amp;ldquo;fortaleza&amp;rdquo; será cada vez más demandado en los tiempos venideros.&lt;/p>
&lt;hr>
&lt;p>¡Gracias por leer!&lt;/p>
&lt;p>Hablar de seguridad puede ser un poco difícil, pero tiene partes que se conectan con &amp;ldquo;las relaciones humanas&amp;rdquo; o &amp;ldquo;la sensación de seguridad en la vida diaria&amp;rdquo;, ¿verdad?
Sin presiones, si vamos aprendiendo poco a poco, seguro que traerá cosas buenas.&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>Pasos para ejecutar PowerShell desde C++ a través de una DLL de C++/CLI</title><link>http://kenji.blog/es/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/es/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 Pasos para ejecutar PowerShell desde C++ a través de una DLL de C++/CLI" />&lt;h1 id="-pasos-para-ejecutar-powershell-desde-c-a-través-de-una-dll-de-ccli-visual-studio-2022--c">🎯 Pasos para ejecutar PowerShell desde C++ a través de una DLL de C++/CLI (Visual Studio 2022 / C++)
&lt;/h1>&lt;h2 id="-arquitectura-general">✅ Arquitectura general
&lt;/h2>&lt;h3 id="--dll-envoltura-cli-ccli">🔹 ① DLL envoltura CLI (C++/CLI)
&lt;/h3>&lt;p>Proporciona la funcionalidad para ejecutar scripts de PowerShell.&lt;/p>
&lt;h3 id="--lado-de-llamada-c-nativo">🔹 ② Lado de llamada C++ nativo
&lt;/h3>&lt;p>Llama a la DLL CLI para ejecutar el script de PowerShell.&lt;/p>
&lt;hr>
&lt;h2 id="-paso-1-creación-del-proyecto-de-la-dll-envoltura-cli">🔧 Paso 1: Creación del proyecto de la DLL envoltura CLI
&lt;/h2>&lt;h3 id="1-creación-del-proyecto">1. Creación del proyecto
&lt;/h3>&lt;ul>
&lt;li>[Crear un proyecto nuevo] → [C++] → &lt;strong>Biblioteca de clases CLR (.NET Framework)&lt;/strong>&lt;/li>
&lt;li>Nombre: &lt;code>PowerShellWrapper&lt;/code>&lt;/li>
&lt;/ul>
&lt;blockquote>
&lt;p>💡 Si no ves esta plantilla, instala la carga de trabajo &amp;ldquo;Desarrollo de escritorio de .NET&amp;rdquo;.&lt;/p>
&lt;/blockquote>
&lt;hr>
&lt;h3 id="2-añadir-paquete-nuget">2. Añadir paquete NuGet
&lt;/h3>&lt;ol>
&lt;li>Haz clic derecho en el proyecto → [Administrar paquetes NuGet]&lt;/li>
&lt;li>Busca e instala &lt;code>System.Management.Automation&lt;/code>&lt;br>
(Versión 5.x o 7.x)&lt;/li>
&lt;/ol>
&lt;hr>
&lt;h3 id="3-implementación-del-código-en-el-lado-cli">3. Implementación del código en el lado 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="-paso-2-llamada-desde-el-lado-de-c-nativo">🔧 Paso 2: Llamada desde el lado de C++ nativo
&lt;/h2>&lt;h3 id="1-crear-proyecto-de-aplicación-de-consola-c">1. Crear proyecto de aplicación de consola C++
&lt;/h3>&lt;ul>
&lt;li>Nombre: &lt;code>NativeApp&lt;/code>&lt;/li>
&lt;/ul>
&lt;h3 id="2-configurar-referencias">2. Configurar referencias
&lt;/h3>&lt;ul>
&lt;li>Haz clic derecho en el proyecto → [Agregar] → [Referencia] → [Proyectos] → Agrega &lt;code>PowerShellWrapper&lt;/code>&lt;/li>
&lt;li>[Propiedades de configuración] → [C/C++] → [Soporte de Common Language Runtime] → Cambiar a &lt;strong>/clr&lt;/strong>&lt;/li>
&lt;/ul>
&lt;hr>
&lt;h3 id="3-código-de-ejecución-maincpp">3. Código de ejecución (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="-nota-adicional-idl--tlb--registro-com">💡 Nota adicional (IDL / TLB / Registro COM)
&lt;/h2>&lt;ul>
&lt;li>Esta configuración hace referencia directa a una DLL de .NET en lugar de COM, por lo tanto, &lt;strong>no se requiere IDL, TLB ni registro COM&lt;/strong>.&lt;/li>
&lt;/ul>
&lt;hr>
&lt;h2 id="-estructura-final">✅ Estructura 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 (DLL C++/CLI)
&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 (EXE C++)
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> └── main.cpp → Llamada a la 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 el estado de la licencia de Windows</title><link>http://kenji.blog/es/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/es/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 el estado de la licencia de Windows" />&lt;h1 id="windows-cómo-verificar-el-estado-de-la-licencia-con-un-solo-comando">[Windows] Cómo verificar el estado de la licencia (con un solo comando)
&lt;/h1>&lt;p>¿Alguna vez te has preguntado si la licencia de tu Windows está correctamente activada?&lt;/p>
&lt;p>Para esos momentos, es muy útil &lt;strong>el método para verificar la información de la licencia con un solo comando&lt;/strong>. Con solo seguir los siguientes pasos, puedes comprobar fácilmente el estado actual de tu licencia.&lt;/p>
&lt;h2 id="comando-para-verificar-el-estado-de-la-licencia">Comando para verificar el estado de la licencia
&lt;/h2>&lt;p>Puedes mostrar la información de la licencia usando la herramienta de script estándar de Windows. El comando a usar es 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-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>Al ejecutar este comando, se mostrará parte de la información de la licencia en una ventana.&lt;/p>
&lt;h2 id="método-de-ejecución">Método de ejecución
&lt;/h2>&lt;ol>
&lt;li>
&lt;p>&lt;strong>Ingresa &amp;ldquo;cmd&amp;rdquo; en el &amp;ldquo;Menú de inicio&amp;rdquo;, haz clic derecho en el Símbolo del sistema → &amp;ldquo;Ejecutar como administrador&amp;rdquo;&lt;/strong>.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Ingresa lo siguiente en el símbolo del sistema y presiona la tecla 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>Espera unos segundos y se mostrará la información de la licencia de la siguiente manera.&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="Pantalla de verificación de licencia de Windows"
class="gallery-image"
data-flex-grow="174"
data-flex-basis="419px"
>&lt;/p>
&lt;/li>
&lt;/ol>
&lt;h2 id="principal-información-mostrada">Principal información mostrada
&lt;/h2>&lt;ul>
&lt;li>Parte de la clave del producto&lt;/li>
&lt;li>Tipo de licencia (Retail, OEM, etc.)&lt;/li>
&lt;li>Estado de la licencia (activa, caducada, no activada, etc.)&lt;/li>
&lt;/ul>
&lt;h2 id="quieres-saber-información-más-detallada">¿Quieres saber información más detallada?
&lt;/h2>&lt;p>También existen los siguientes comandos:&lt;/p>
&lt;ul>
&lt;li>&lt;code>slmgr /dlv&lt;/code>: Muestra información de licencia más detallada&lt;/li>
&lt;li>&lt;code>slmgr /xpr&lt;/code>: Muestra la fecha de vencimiento de la licencia (si es permanente, etc.)&lt;/li>
&lt;/ul>
&lt;h2 id="resumen">Resumen
&lt;/h2>&lt;p>El estado de la licencia de Windows se puede verificar fácilmente con un solo comando.&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Verificación simple&lt;/strong>: &lt;code>slmgr /dli&lt;/code>&lt;/li>
&lt;li>&lt;strong>Verificación detallada&lt;/strong>: &lt;code>slmgr /dlv&lt;/code>&lt;/li>
&lt;li>&lt;strong>Verificación de vencimiento&lt;/strong>: &lt;code>slmgr /xpr&lt;/code>&lt;/li>
&lt;/ul>
&lt;p>Si hay un problema con la licencia, puede haber restricciones en las actualizaciones o en algunas funciones, por lo que es seguro verificarlo de forma regular.&lt;/p></description></item><item><title>Parámetros de ffmpeg para iOS</title><link>http://kenji.blog/es/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/es/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 de ffmpeg para iOS" />&lt;h1 id="parámetros-de-conversión-de-ffmpeg-optimizados-para-ios">Parámetros de conversión de ffmpeg optimizados para iOS
&lt;/h1>&lt;p>A continuación, se presenta el comando &lt;code>ffmpeg&lt;/code> para convertir videos y que se reproduzcan sin problemas en dispositivos iOS (iPhone o 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-opción-breve-explicación">Significado de cada opción (breve explicación)
&lt;/h3>&lt;table>
&lt;thead>
&lt;tr>
&lt;th>Opción&lt;/th>
&lt;th>Descripción&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>&lt;code>-i input.mp4&lt;/code>&lt;/td>
&lt;td>Archivo de entrada (video a convertir)&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>-c:v libx264&lt;/code>&lt;/td>
&lt;td>Codifica el video en H.264 (compatible con iOS)&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>-profile:v high -level 4.1&lt;/code>&lt;/td>
&lt;td>Perfil y nivel de amplia compatibilidad en 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>Redimensiona a 1920px de ancho, ajuste automático de altura para mantener la relación de aspecto&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>-r 30&lt;/code>&lt;/td>
&lt;td>Convierte la tasa de cuadros a 30fps&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>-crf 20&lt;/code>&lt;/td>
&lt;td>Calidad de video (menor valor = mayor calidad, recomendado 18-23)&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>-preset slow&lt;/code>&lt;/td>
&lt;td>Balance entre velocidad de codificación y compresión (slow = alta compresión y calidad)&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>-c:a aac&lt;/code>&lt;/td>
&lt;td>Codifica el audio en formato AAC&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>-b:a 128k&lt;/code>&lt;/td>
&lt;td>Establece la tasa de bits de audio en 128kbps&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>-ar 48000&lt;/code>&lt;/td>
&lt;td>Establece la frecuencia de muestreo de audio en 48kHz (recomendado para iOS)&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>-movflags +faststart&lt;/code>&lt;/td>
&lt;td>Coloca el índice al inicio del video, &lt;strong>acelerando la reproducción por streaming en Web e iOS&lt;/strong>&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;hr>
&lt;p>Se espera que los videos convertidos con esta configuración tengan alta compatibilidad y una reproducción fluida en dispositivos de Apple como iPhone e iPad.&lt;/p>
&lt;hr>
&lt;p>Si es necesario, puedes ajustar el tamaño del archivo y la calidad de la imagen modificando la resolución y la tasa de bits. Si necesitas alta calidad, intenta establecer &lt;code>-crf&lt;/code> alrededor de 18; si deseas reducir el tamaño del archivo, configúralo entre 22 y 25.&lt;/p></description></item><item><title>Procedimiento de restauración de software (inicialización/reparación) para dispositivos Android (Google Pixel)</title><link>http://kenji.blog/es/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/es/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 Procedimiento de restauración de software (inicialización/reparación) para dispositivos Android (Google Pixel)" />&lt;h1 id="procedimiento-de-restauración-para-dispositivos-android-google-pixel">Procedimiento de restauración para dispositivos Android (Google Pixel)
&lt;/h1>&lt;p>Si tu dispositivo Google Pixel sufre un problema grave del sistema, como &amp;ldquo;reinicios constantes (bootloop)&amp;rdquo;, &amp;ldquo;se queda bloqueado en la pantalla del logotipo&amp;rdquo; o &amp;ldquo;el funcionamiento se vuelve extremadamente inestable&amp;rdquo;, puedes usar la herramienta oficial de Google &lt;strong>&amp;ldquo;Pixel Update and Software Repair&amp;rdquo;&lt;/strong> para reparar (restaurar) de forma segura el software de tu dispositivo a través del navegador.&lt;/p>
&lt;p>En este artículo, explicaremos en detalle el procedimiento específico y los puntos a tener en cuenta.&lt;/p>
&lt;hr>
&lt;h2 id="1-acceder-a-la-herramienta-de-restauración">1. Acceder a la herramienta de restauración
&lt;/h2>&lt;p>Primero, accede a la página oficial de la herramienta de reparación desde el navegador (se recomienda Google Chrome o Microsoft Edge) de tu PC (Windows o Mac).&lt;/p>
&lt;p>🔗 &lt;strong>&lt;a class="link" href="https://pixelrepair.withgoogle.com/carrier_selection" target="_blank" rel="noopener"
>Sitio oficial de Pixel Update and Software Repair&lt;/a>&lt;/strong>&lt;/p>
&lt;blockquote>
&lt;p>&lt;strong>※Nota※&lt;/strong>
Al ejecutar el proceso de restauración, es posible que los datos del dispositivo (fotos, aplicaciones, contactos, etc.) &lt;strong>se borren (inicialicen) por completo&lt;/strong>. Si el dispositivo aún se puede utilizar, asegúrate de realizar previamente una copia de seguridad en Google Drive u otro servicio.&lt;/p>
&lt;/blockquote>
&lt;hr>
&lt;h2 id="2-preparación-previa-para-la-restauración">2. Preparación previa para la restauración
&lt;/h2>&lt;p>Para que el proceso se desarrolle sin problemas, prepara lo siguiente:&lt;/p>
&lt;ol>
&lt;li>&lt;strong>Cargar la batería&lt;/strong>
Si el dispositivo se apaga durante el proceso, existe el riesgo de que se convierta en un &amp;ldquo;ladrillo&amp;rdquo; (se averíe por completo). Asegúrate de tener al menos un 50% de batería, y preferiblemente cárgalo por completo.&lt;/li>
&lt;li>&lt;strong>Preparar el cable USB original&lt;/strong>
Para garantizar una transferencia de datos estable, se recomienda encarecidamente utilizar el cable USB-C original incluido con el dispositivo.&lt;/li>
&lt;li>&lt;strong>(Si es necesario) Instalar controladores&lt;/strong>
Si utilizas un PC con Windows, es posible que el dispositivo no se reconozca correctamente. En ese caso, instala el &lt;a class="link" href="https://developer.android.com/studio/run/win-usb?hl=es" target="_blank" rel="noopener"
>Controlador USB de Google&lt;/a>.&lt;/li>
&lt;/ol>
&lt;hr>
&lt;h2 id="3-pasos-específicos-de-la-restauración">3. Pasos específicos de la restauración
&lt;/h2>&lt;p>Una vez completada la preparación, sigue las instrucciones en pantalla para proceder con la restauración.&lt;/p>
&lt;h3 id="paso-1-selección-del-operador-y-conexión-del-dispositivo">Paso 1: Selección del operador y conexión del dispositivo
&lt;/h3>&lt;p>Al abrir el sitio, primero verás una pantalla para seleccionar tu operador de telefonía (compañía telefónica). Si tienes una versión libre (SIM-free) o no estás atado a un operador, selecciona &amp;ldquo;Otros (Other)&amp;rdquo; u opciones similares.
A continuación, conecta tu PC y tu dispositivo Pixel con el cable USB.&lt;/p>
&lt;h3 id="paso-2-poner-el-dispositivo-en-modo-de-rescate-rescue-mode--fastboot">Paso 2: Poner el dispositivo en &amp;ldquo;Modo de rescate (Rescue Mode / Fastboot)&amp;rdquo;
&lt;/h3>&lt;p>Siguiendo las instrucciones en pantalla, con el dispositivo apagado, &lt;strong>mantén presionados simultáneamente el &amp;ldquo;botón de encendido&amp;rdquo; y el &amp;ldquo;botón de bajar volumen&amp;rdquo;&lt;/strong> para iniciar el modo Fastboot (una pantalla con fondo negro y la mascota de Android tumbada).&lt;/p>
&lt;h3 id="paso-3-reconocimiento-del-dispositivo-en-el-pc">Paso 3: Reconocimiento del dispositivo en el PC
&lt;/h3>&lt;p>Haz clic en el botón &amp;ldquo;Conectar dispositivo&amp;rdquo; en el navegador; se abrirá una ventana emergente que mostrará una lista de los dispositivos Pixel conectados. Selecciona tu dispositivo y permite la conexión.&lt;/p>
&lt;h3 id="paso-4-descarga-e-instalación-del-software">Paso 4: Descarga e instalación del software
&lt;/h3>&lt;p>Una vez reconocido el dispositivo, se seleccionará automáticamente la versión más adecuada del sistema operativo Android (firmware). Al hacer clic en &amp;ldquo;Instalar&amp;rdquo;, el software se descargará en el PC e inmediatamente comenzará a escribirse (flashearse) en el dispositivo.&lt;/p>
&lt;blockquote>
&lt;p>⚠️ &lt;strong>Advertencia:&lt;/strong> Durante este proceso, ** nunca desconectes el cable USB ni apagues el PC.**&lt;/p>
&lt;/blockquote>
&lt;h3 id="paso-5-finalización-y-configuración-inicial">Paso 5: Finalización y configuración inicial
&lt;/h3>&lt;p>El proceso de restauración será un éxito cuando la barra de progreso alcance el 100% y aparezca el mensaje de &amp;ldquo;Completado&amp;rdquo;. El dispositivo se reiniciará automáticamente y mostrará la pantalla de configuración inicial, como cuando lo compraste (la pantalla de &amp;ldquo;Hola&amp;rdquo;).&lt;/p>
&lt;hr>
&lt;h2 id="resumen">Resumen
&lt;/h2>&lt;p>La herramienta oficial de reparación de Google Pixel es una excelente utilidad que te permite restaurar el firmware de forma segura con solo unos clics en el navegador, sin necesidad de ejecutar directamente comandos especiales (adb o fastboot).&lt;/p>
&lt;p>Antes de llevar tu dispositivo a una tienda debido a problemas de funcionamiento, te recomendamos intentar este procedimiento; es posible que el problema se resuelva fácilmente. Esperamos que esta guía te sea de utilidad.&lt;/p></description></item><item><title>Enviar Gmail desde curl</title><link>http://kenji.blog/es/p/gmail%E3%82%92curl%E3%81%8B%E3%82%89%E9%80%81%E3%82%8B/</link><pubDate>Thu, 27 Feb 2025 02:13:31 +0900</pubDate><guid>http://kenji.blog/es/p/gmail%E3%82%92curl%E3%81%8B%E3%82%89%E9%80%81%E3%82%8B/</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 desde curl" />&lt;h1 id="enviar-gmail-desde-curl">Enviar Gmail desde curl
&lt;/h1>&lt;h2 id="1-obtener-la-contraseña-de-la-aplicación">1. Obtener la contraseña de la aplicación
&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>
Haz clic en el enlace de arriba e introduce el nombre de la aplicación.
Guarda la contraseña generada.&lt;/p>
&lt;h2 id="2-enviar-un-correo-electrónico-con-el-comando-curl">2. Enviar un correo electrónico con el comando curl
&lt;/h2>&lt;p>Ejecuta el siguiente comando.&lt;/p>
&lt;p>En el ejemplo de abajo, el contenido del correo electrónico está descrito en 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: Correo de prueba
&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 es un correo de prueba.
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>Crea el archivo anterior y ejecuta el siguiente 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>※ Sustituye xxxxxxxxxxxxxxxx por la contraseña de tu aplicación.&lt;/p></description></item><item><title>Fragmentos de código de Python</title><link>http://kenji.blog/es/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/es/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 Fragmentos de código de Python" />&lt;p>Esta es una introducción a ejemplos de código utilizando la biblioteca estándar.&lt;/p>
&lt;h1 id="descargar-y-mostrar-una-imagen">Descargar y mostrar una imagen
&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"># Guardar en un archivo temporal y mostrar&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;Ocurrió un error: &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"># Eliminar archivo temporal&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div></description></item><item><title>Llamar a la API de ChatGPT desde curl</title><link>http://kenji.blog/es/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/es/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 Llamar a la API de ChatGPT desde curl" />&lt;h1 id="llamar-a-la-api-de-chatgpt-desde-curl">Llamar a la API de ChatGPT desde curl
&lt;/h1>&lt;p>Se asume que se llama desde el símbolo del sistema de 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;Por favor, responde en dialecto de 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;Inserta el mensaje que deseas enviar aquí&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>Resumen de acciones de altos dividendos</title><link>http://kenji.blog/es/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/es/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 Resumen de acciones de altos dividendos" />&lt;h1 id="resumen-de-acciones-de-altos-dividendos">Resumen de acciones de 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/es/p/%E7%9B%AE%E6%A8%99/</link><pubDate>Sun, 08 Dec 2024 03:32:34 +0900</pubDate><guid>http://kenji.blog/es/p/%E7%9B%AE%E6%A8%99/</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="metas-a-largo-plazo">Metas a largo plazo
&lt;/h1>&lt;ul>
&lt;li>En 1 año
&lt;ul>
&lt;li>Iniciar un negocio&lt;/li>
&lt;li>Crear una página web y lanzar un software (gratuito)&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>En 2 años
&lt;ul>
&lt;li>Ventas anuales de 10 millones de yenes&lt;/li>
&lt;li>Publicar un libro&lt;/li>
&lt;li>Lanzar un software (de pago)&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>En 3 años
&lt;ul>
&lt;li>Ventas anuales de 100 millones de yenes&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>En 5 años
&lt;ul>
&lt;li>Ventas anuales de mil millones de yenes&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>En 10 años
&lt;ul>
&lt;li>Ventas anuales de 10 mil millones de yenes&lt;/li>
&lt;/ul>
&lt;/li>
&lt;/ul>
&lt;h1 id="metas-a-corto-plazo">Metas a corto plazo
&lt;/h1>&lt;ul>
&lt;li>En 1 mes
&lt;ul>
&lt;li>Crear un plan de negocios&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>En 3 meses
&lt;ul>
&lt;li>Recaudar fondos para iniciar el negocio (alrededor de 5 millones de yenes)&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>En 6 meses
&lt;ul>
&lt;li>Iniciar el negocio&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>En 1 año
&lt;ul>
&lt;li>Poner el negocio en marcha&lt;/li>
&lt;/ul>
&lt;/li>
&lt;/ul>
&lt;h1 id="tareas-inmediatas">Tareas inmediatas
&lt;/h1>&lt;ol>
&lt;li>Clarificar metas y visión
Propósito: ¿Por qué crear software?
Ejemplo: Para resolver problemas, proporcionar nuevo valor, apuntar a un nicho de mercado específico, etc.
Visión: ¿Qué tipo de futuro quieres realizar a través del software?
Ejemplo: Mejorar la eficiencia del trabajo, hacer la vida diaria más cómoda, mejorar la calidad de la educación, etc.&lt;/li>
&lt;li>Investigación de mercado y análisis de necesidades
Usuarios objetivo: ¿Quién usará el software? Definir grupo de edad, ocupación, intereses, etc. específicamente.
Investigación de competidores: ¿Hay competidores en el mismo campo? Analizar sus fortalezas y debilidades.
Identificación de necesidades: Comprender los problemas no resueltos o solicitudes de los usuarios objetivo.&lt;/li>
&lt;li>Diseño y características del software
Características básicas: Listar las características esenciales. Ejemplo: Autenticación de usuarios, almacenamiento de datos, características de análisis, etc.
Puntos de diferenciación: Aclarar qué hace único al producto en comparación con otros. Ejemplo: Interfaz de usuario simple, uso de IA, alta personalización.
Especificaciones técnicas: Lenguajes de programación, frameworks, bases de datos, etc. a utilizar.&lt;/li>
&lt;li>Plan de desarrollo y asignación de recursos
Cronograma de desarrollo: Establecer una línea de tiempo para cada etapa del proyecto. Ejemplo: Desarrollo de prototipos, pruebas, lanzamiento oficial.
Composición del equipo: Recursos humanos requeridos y conjuntos de habilidades (programadores, diseñadores, personal de marketing, etc.).
Presupuesto: Estimar costos de desarrollo, costos de marketing y costos operativos.&lt;/li>
&lt;li>Marketing y modelo de ingresos
Métodos de promoción: Utilizar redes sociales, sitios web, anuncios, etc. para aumentar el conocimiento.
Estrategia de monetización: Considerar opciones como versión gratuita + versión de pago, suscripción mensual, ingresos publicitarios, etc.
Estrategia de adquisición de usuarios: Ofrecer pruebas gratuitas, promover el boca a boca, formar comunidades de usuarios, etc.&lt;/li>
&lt;li>Operación y escalamiento
Operación post-lanzamiento: Recopilar comentarios de los usuarios, corregir errores, añadir características.
Estrategia de crecimiento: Planificar cómo aumentar el número de usuarios, expandirse a otros países o desarrollar nuevas características.
Gestión de riesgos: Preparar contramedidas para problemas legales o técnicos.&lt;/li>
&lt;/ol></description></item><item><title>Acerca de</title><link>http://kenji.blog/es/acerca-de/</link><pubDate>Sat, 07 Dec 2024 00:00:00 +0000</pubDate><guid>http://kenji.blog/es/acerca-de/</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="de-qué-trata-este-blog">¿De qué trata este blog?
&lt;/h1>&lt;p>¡Hola!&lt;/p>
&lt;p>Hoy me gustaría hablar sobre una pregunta bastante simple, pero que me hacen con frecuencia: &amp;ldquo;¿De qué trata este blog?&amp;rdquo;.&lt;/p>
&lt;p>Es una historia común, pero a menudo se piensa que los blogs son &amp;ldquo;un lugar para publicar información especializada&amp;rdquo;. Por ejemplo, cosas como &amp;ldquo;si es de tecnología, solo deberías escribir sobre tecnología de manera objetiva&amp;rdquo;, o &amp;ldquo;un diario es un diario, el trabajo es el trabajo&amp;rdquo;, separando ambas cosas.&lt;/p>
&lt;p>Pero, si dibujamos líneas tan estrictas, ¿no resulta un poco sofocante tanto para el que escribe como para el que lee?&lt;/p>
&lt;p>En este blog, es cierto que el tema principal es la tecnología. Cosas como programación o pequeños descubrimientos en el ámbito del desarrollo. Creo que a quienes les gusten esos temas lo disfrutarán.&lt;/p>
&lt;p>Sin embargo, eso no es todo.&lt;/p>
&lt;p>También escribo de vez en cuando sobre pequeños descubrimientos de la vida diaria y sobre mis pasatiempos. Por ejemplo, cosas en las que pienso mientras paseo o sobre un manga que leí recientemente. Ese tipo de cosas son interesantes porque, sorprendentemente, a veces resultan útiles para alguien.&lt;/p>
&lt;p>Puede que algunos piensen: &amp;ldquo;¿Está bien hablar de cosas no relacionadas en un blog de tecnología?&amp;rdquo;. Pero, ese es el punto.&lt;/p>
&lt;p>Creo que el trabajo, los pasatiempos y las preocupaciones diarias, todo está conectado. Por eso escribo este blog dentro de esa &amp;ldquo;conexión&amp;rdquo; o &amp;ldquo;flujo&amp;rdquo;.&lt;/p>
&lt;p>Por lo tanto, si hay algo que te llame la atención, no dudes en dejar un comentario. Cualquier pensamiento o pequeña impresión es más que bienvenida.&lt;/p>
&lt;p>Espero que este blog pueda ser un lugar para ese tipo de comunicación relajada.&lt;/p></description></item><item><title>Mantenimiento de productos de cuero</title><link>http://kenji.blog/es/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/</link><pubDate>Wed, 30 Oct 2024 00:31:46 +0900</pubDate><guid>http://kenji.blog/es/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/</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 Mantenimiento de productos de cuero" />&lt;p>Recientemente, he empezado a interesarme por los productos de cuero y he estado comprando varios artículos. Al hacerlo, también me interesé por el mantenimiento de los productos de cuero, así que he reunido algunos artículos relacionados que me gustaría presentarles.&lt;/p>
&lt;h1 id="productos-de-mantenimiento-para-cuero-comprados-recientemente">Productos de mantenimiento para cuero comprados recientemente
&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>Precio: Alrededor de 1,320 yenes&lt;/p>
&lt;p>Esta crema proporciona nutrición, hidratación y un efecto suavizante.
No produce brillo, pero es adecuada para cueros que necesitan mucha humedad e hidratación.
No tiene un mal olor, pero sí tiene un ligero aroma.
Al ser incolora, creo que es muy versátil. Ya que es una crema ligera,
podría ser bueno usar un poco más en comparación con otras cremas.&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>Precio: Alrededor de 1,777 yenes&lt;/p>
&lt;p>Es una crema famosa, estándar y versátil, resistente a las manchas. Repara el color del cuero y lo deja hidratado.
Proporciona un poco de brillo. Es de color blanco y también se puede esperar un efecto repelente al agua.&lt;/p>
&lt;h2 id="mmowbray-shoe-cream-negro">M.MOWBRAY SHOE CREAM (Negro)
&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>Precio: Alrededor de 1,000 yenes&lt;/p>
&lt;p>Crema para zapatos. Contiene cera, aceites y disolventes orgánicos.
Repara el color del cuero y proporciona brillo. Como es negra, se aplica en cuero negro.
Yo la uso para mis zapatos de traje.&lt;/p>
&lt;h2 id="mmowbray-stain-remover">M.MOWBRAY STAIN REMOVER
&lt;/h2>&lt;p>Precio: Alrededor de 700 yenes&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>Es algo que venía incluido cuando compré un cepillo.
Limpiador a base de agua para zapatos. Elimina la suciedad del cuero.
Si empapas bien un paño y lo frotas suavemente sobre el cuero, la suciedad desaparecerá.&lt;/p></description></item><item><title>El principio de Hanlon</title><link>http://kenji.blog/es/p/%E3%83%8F%E3%83%B3%E3%83%AD%E3%83%B3%E3%81%AE%E5%89%83%E5%88%80/</link><pubDate>Tue, 24 Sep 2024 18:14:34 +0900</pubDate><guid>http://kenji.blog/es/p/%E3%83%8F%E3%83%B3%E3%83%AD%E3%83%B3%E3%81%AE%E5%89%83%E5%88%80/</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 El principio de Hanlon" />&lt;h1 id="hola-hoy-hablaremos-sobre-el-principio-de-hanlon">¡Hola! Hoy hablaremos sobre &amp;ldquo;El principio de Hanlon&amp;rdquo;
&lt;/h1>&lt;p>Hoy me gustaría escribir sobre una forma de pensar con un nombre algo peculiar: &amp;ldquo;El principio de Hanlon&amp;rdquo; (o Navaja de Hanlon). Al escuchar el nombre, puede que pienses: &amp;ldquo;¿Suena un poco intimidante&amp;hellip;?&amp;rdquo;, pero en realidad es una idea muy cercana que nos ofrece una perspectiva amable.&lt;/p>
&lt;hr>
&lt;h1 id="alguna-vez-has-pensado-a-esa-persona-no-le-caigo-bien">¿Alguna vez has pensado: &amp;ldquo;A esa persona no le caigo bien&amp;hellip;&amp;rdquo;?
&lt;/h1>&lt;p>Por ejemplo, ¿has tenido alguna de estas experiencias?&lt;/p>
&lt;p>・Tardan en responderte un mensaje de texto.&lt;br>
・Hicieron contacto visual pero no te saludaron.&lt;br>
・Ignoraron un favor que les pediste.&lt;/p>
&lt;p>En esos momentos, es normal preocuparse pensando: &amp;ldquo;¿Será que le caigo mal?&amp;rdquo;.&lt;br>
A mí me pasa seguido. Y me deprimo sin razón.&lt;/p>
&lt;hr>
&lt;h1 id="qué-es-el-principio-de-hanlon">¿Qué es el principio de Hanlon?
&lt;/h1>&lt;p>Aquí es donde entra &amp;ldquo;El principio de Hanlon&amp;rdquo;.&lt;/p>
&lt;p>Originalmente en inglés es &amp;ldquo;Hanlon&amp;rsquo;s Razor&amp;rdquo; (Navaja de Hanlon).&lt;br>
Básicamente significa esto:&lt;/p>
&lt;blockquote>
&lt;p>&amp;ldquo;Nunca atribuyas a la maldad lo que se explica adecuadamente por la estupidez.&amp;rdquo;&lt;/p>
&lt;/blockquote>
&lt;p>&amp;hellip;Suena un poco duro, ¿verdad?&lt;br>
Para decirlo de una manera más suave:&lt;/p>
&lt;blockquote>
&lt;p>&amp;ldquo;Aunque parezca que alguien está siendo malo, podría ser simplemente un descuido o falta de atención.&amp;rdquo;&lt;/p>
&lt;/blockquote>
&lt;p>Esa es la idea principal.&lt;/p>
&lt;hr>
&lt;h1 id="quién-lo-dijo-por-primera-vez-quién-es-robert-j-hanlon">¿Quién lo dijo por primera vez? ¿Quién es Robert J. Hanlon?
&lt;/h1>&lt;p>Se dice que esta frase apareció por primera vez en un libro publicado en 1980 titulado &amp;ldquo;Murphy’s Law Book Two&amp;rdquo;.&lt;/p>
&lt;p>La idea fue enviada por &lt;strong>Robert J. Hanlon&lt;/strong>, y se usó tal cual, lo que le dio el nombre de &amp;ldquo;Navaja de Hanlon&amp;rdquo;.&lt;/p>
&lt;p>Por cierto, el término &amp;ldquo;Navaja&amp;rdquo; (Razor) se refiere a una herramienta filosófica que significa &amp;ldquo;eliminar lo innecesario y pensar de forma sencilla&amp;rdquo;. Al igual que la Navaja de Ockham, es una expresión utilizada para organizar el pensamiento.&lt;/p>
&lt;hr>
&lt;h1 id="pensar-que-hubo-mala-intención-te-hace-sentir-mal">Pensar que &amp;ldquo;hubo mala intención&amp;rdquo; te hace sentir mal
&lt;/h1>&lt;p>Por ejemplo, cuando ignoran un correo tuyo en el trabajo.&lt;/p>
&lt;p>Si piensas: &amp;ldquo;¿Por qué no me responden? ¿Será que me odian?&amp;rdquo;, te vuelves cada vez más negativo.&lt;/p>
&lt;p>Pero si lo piensas bien, razones como:&lt;br>
・No lo vieron por casualidad&lt;br>
・Escribieron la respuesta pero olvidaron enviarla&lt;br>
・La notificación se perdió entre otras&lt;/p>
&lt;p>Son sorprendentemente comunes.&lt;br>
Y nosotros mismos también cometemos esos errores.&lt;/p>
&lt;hr>
&lt;h1 id="lo-curioso-de-ser-tolerantes-con-nuestros-errores-y-estrictos-con-los-demás">Lo curioso de ser tolerantes con nuestros errores y estrictos con los demás
&lt;/h1>&lt;p>Por ejemplo, cuando tú te olvidas de responderle un mensaje a un amigo.&lt;/p>
&lt;p>Dices: &amp;ldquo;¡Ay, perdón! No vi la notificación~&amp;rdquo;, respondiendo sin ninguna mala intención.&lt;/p>
&lt;p>Pero cuando la otra persona hace lo mismo, sientes que te están &amp;ldquo;ignorando&amp;rdquo;.&lt;/p>
&lt;p>Esto pasa mucho.&lt;br>
Las personas somos muy comprensivas con nuestras propias situaciones, pero nos cuesta ver las situaciones de los demás.&lt;/p>
&lt;hr>
&lt;h1 id="asumir-que-hay-mala-intención-en-realidad-te-perjudica">Asumir que &amp;ldquo;hay mala intención&amp;rdquo; en realidad te perjudica
&lt;/h1>&lt;p>Cuando alguien te hace algo y asumes que &amp;ldquo;tienen mala intención&amp;rdquo;, mentalmente conviertes a esa persona en un enemigo.&lt;/p>
&lt;p>Pero en realidad, puede que simplemente sean torpes o que estén abrumados con otras cosas.&lt;/p>
&lt;p>Por supuesto, también hay personas que realmente son groseras, y es natural sentirse herido ante una mala actitud.&lt;/p>
&lt;p>Sin embargo, no asumir de inmediato que &amp;ldquo;seguramente es mala intención&amp;rdquo; hará que tu corazón se sienta un poco más ligero.&lt;/p>
&lt;hr>
&lt;h1 id="dicho-esto-no-significa-que-debas-aguantarlo-todo">Dicho esto, no significa que debas aguantarlo todo
&lt;/h1>&lt;p>Para que no haya malentendidos, no quiero decir que &amp;ldquo;todo es porque te preocupas demasiado&amp;rdquo;.&lt;/p>
&lt;p>Cuando te hacen algo desagradable, está bien pensar: &amp;ldquo;Eso fue muy feo&amp;rdquo;.&lt;/p>
&lt;p>Simplemente sugiero que, en lugar de concluir: &amp;ldquo;Esa persona tiene mala personalidad&amp;rdquo; o &amp;ldquo;Intentaron lastimarme a propósito&amp;rdquo;,&lt;/p>
&lt;p>quizás esté bien tener un poco de flexibilidad y pensar: &amp;ldquo;Tal vez hubo alguna razón detrás&amp;rdquo;.&lt;/p>
&lt;hr>
&lt;h1 id="en-conclusión-ver-las-cosas-con-un-poco-más-de-amabilidad-podría-cambiar-tu-mundo">En conclusión: Ver las cosas con un poco más de amabilidad podría cambiar tu mundo
&lt;/h1>&lt;p>Creo que la Navaja de Hanlon no se trata tanto de &amp;ldquo;ser amable con los demás&amp;rdquo;, sino de &amp;ldquo;una forma de proteger tu propio corazón&amp;rdquo;.&lt;/p>
&lt;p>Cuando percibimos mala intención en las acciones de los demás, nuestro propio ánimo también se vuelve tenso.&lt;/p>
&lt;p>Pero si podemos pensar: &amp;ldquo;Tal vez fue solo un error o no tenían tiempo&amp;rdquo;, nuestros sentimientos se alivian un poco.&lt;/p>
&lt;p>Es una forma de pensar que podemos usar por nuestro propio bien.&lt;/p>
&lt;hr>
&lt;h1 id="para-terminar-por-favor-comparte-también-tus-experiencias">Para terminar: ¡Por favor, comparte también tus experiencias!
&lt;/h1>&lt;p>Muchas gracias por leer.&lt;/p>
&lt;p>Si tienes alguna anécdota del tipo: &amp;ldquo;A mí me ha pasado esto y me sentí incómodo~&amp;rdquo;, por favor cuéntamela.&lt;/p>
&lt;p>A veces, solo con poner en palabras nuestras experiencias, el corazón se siente un poco más aliviado.&lt;/p>
&lt;p>¡Hasta la próxima!&lt;/p>
&lt;hr></description></item><item><title>Conocimientos básicos de computación</title><link>http://kenji.blog/es/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/es/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 Conocimientos básicos de computación" />&lt;h1 id="conocimientos-básicos-de-computación">Conocimientos básicos de computación
&lt;/h1>&lt;p>Esta página explica qué es una computadora.&lt;/p>
&lt;h2 id="definición-de-una-computadora">Definición de una computadora
&lt;/h2>&lt;p>Una computadora es una máquina que tiene los siguientes 5 componentes:&lt;/p>
&lt;ol>
&lt;li>Dispositivo de entrada&lt;/li>
&lt;li>Dispositivo de salida&lt;/li>
&lt;li>Dispositivo de almacenamiento&lt;/li>
&lt;li>Dispositivo de control&lt;/li>
&lt;li>Dispositivo de procesamiento aritmético&lt;/li>
&lt;/ol>
&lt;p>En términos generales, una computadora es una máquina que recibe una &lt;code>entrada&lt;/code>, realiza un &lt;code>procesamiento&lt;/code> específico y produce una &lt;code>salida&lt;/code> con el resultado.
Puede &lt;code>almacenar&lt;/code>, &lt;code>calcular&lt;/code> y dar como &lt;code>salida&lt;/code> los datos que se han dado de &lt;code>entrada&lt;/code>. El &lt;code>control&lt;/code> tiene la función de gestionar los otros cuatro componentes mencionados.&lt;/p>
&lt;h2 id="qué-se-necesita-para-hacer-funcionar-una-computadora">Qué se necesita para hacer funcionar una computadora
&lt;/h2>&lt;p>Para operar una computadora, además de los dispositivos (hardware), se necesitan programas (software).&lt;/p>
&lt;p>A través de los programas, se le indica a la computadora qué procesamiento debe realizar. Los programas se escriben en un formato que la computadora puede entender.&lt;/p>
&lt;p>Un ejemplo de programa es el siguiente.
Programa para calcular la suma desde 1 hasta un número entero introducido:&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">// Reservar el espacio de memoria necesario
&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">// Salida
&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;Ingrese un número entero: &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">// Operación aritmética
&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">// Operación aritmética
&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">// Salida
&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;La suma desde 1 hasta &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; es &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">// Fin
&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>El programa es convertido a lenguaje de máquina por un compilador, transformándolo a un formato que la computadora puede ejecutar.&lt;/p></description></item><item><title>Aplicaciones recomendadas para iOS</title><link>http://kenji.blog/es/p/%E3%81%8A%E3%81%99%E3%81%99%E3%82%81ios%E3%82%A2%E3%83%97%E3%83%AA/</link><pubDate>Wed, 18 Sep 2024 23:31:20 +0900</pubDate><guid>http://kenji.blog/es/p/%E3%81%8A%E3%81%99%E3%81%99%E3%82%81ios%E3%82%A2%E3%83%97%E3%83%AA/</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 Aplicaciones recomendadas para iOS" />&lt;h2 id="aplicaciones-recomendadas-para-ios">Aplicaciones recomendadas para iOS
&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>La historia de la pareja de ancianos y el burro</title><link>http://kenji.blog/es/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/</link><pubDate>Wed, 18 Sep 2024 00:56:59 +0900</pubDate><guid>http://kenji.blog/es/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/</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 La historia de la pareja de ancianos y el burro" />&lt;h2 id="la-pareja-de-ancianos-el-burro-y-nuestro-problema-de-a-quién-escuchar">La pareja de ancianos, el burro y nuestro problema de &amp;ldquo;a quién escuchar&amp;rdquo;
&lt;/h2>&lt;p>¡Hola!&lt;/p>
&lt;p>Hoy tuve algunos pensamientos inspirados en &amp;ldquo;La historia de la pareja de ancianos y el burro&amp;rdquo;, así que decidí escribir sobre ello.&lt;/p>
&lt;p>Probablemente muchos de ustedes ya lo hayan escuchado. Es esa famosa fábula.&lt;/p>
&lt;hr>
&lt;h3 id="qué-es-la-historia-de-la-pareja-de-ancianos-y-el-burro">¿Qué es &amp;ldquo;La historia de la pareja de ancianos y el burro&amp;rdquo;?
&lt;/h3>&lt;p>Érase una vez, una pareja de ancianos y su burro.&lt;/p>
&lt;p>Al principio, el anciano iba montado en el burro y la anciana caminaba. Entonces, un transeúnte dijo:&lt;/p>
&lt;p>&amp;ldquo;¡Qué hombre, hacer caminar a su anciana esposa mientras él cabalga!&amp;rdquo;&lt;/p>
&lt;p>Al escuchar esto, la pareja de ancianos decidió que la anciana montaría el burro esta vez. Entonces, otra persona dijo:&lt;/p>
&lt;p>&amp;ldquo;¡Es escandaloso que la mujer cabalgue en el burro y haga caminar al hombre!&amp;rdquo;&lt;/p>
&lt;p>Bueno, entonces, esta vez ambos se subieron al burro. Y de nuevo alguien les dijo:&lt;/p>
&lt;p>&amp;ldquo;¡Pobre burro, es demasiado peso llevar a dos personas!&amp;rdquo;&lt;/p>
&lt;p>Siendo así, ambos se bajaron del burro y empezaron a caminar. Y entonces&amp;hellip;&lt;/p>
&lt;p>&amp;ldquo;Tienen un burro, ¿por qué nadie lo monta?&amp;rdquo;&lt;/p>
&lt;p>Al final, la pareja de ancianos se quedó sin saber qué hacer.&lt;/p>
&lt;hr>
&lt;h3 id="escuchemos-la-opinión-de-todos-suena-lógico-pero">&amp;ldquo;Escuchemos la opinión de todos&amp;rdquo; suena lógico. Pero&amp;hellip;
&lt;/h3>&lt;p>Esta historia a menudo se toma como una moraleja de que &amp;ldquo;siempre preocuparse por lo que piensan los demás no tiene fin&amp;rdquo;.&lt;/p>
&lt;p>Pero la realidad no es tan simple, ¿verdad?&lt;/p>
&lt;p>A menudo hay personas que dicen: &amp;ldquo;¡No te preocupes por lo que piensen los demás!&amp;rdquo;.&lt;/p>
&lt;p>Pero es un poco difícil ignorarlo todo por completo. Por ejemplo, al publicar algo en las redes sociales. Al pensar en qué hablar en una fiesta de la empresa. Inevitablemente nos importa la reacción de alguien.&lt;/p>
&lt;p>Porque la &amp;ldquo;opinión de la gente&amp;rdquo; a veces afecta nuestra seguridad o reputación.&lt;/p>
&lt;hr>
&lt;h3 id="dicho-esto-dejarse-influenciar-demasiado-se-vuelve-doloroso">Dicho esto, dejarse influenciar demasiado se vuelve doloroso
&lt;/h3>&lt;p>Creo que la pareja de ancianos de esta historia al principio solo pensaba: &amp;ldquo;¿Qué deberíamos hacer?&amp;rdquo;.&lt;/p>
&lt;p>Pero no importaba lo que hicieran, &amp;ldquo;alguien&amp;rdquo; siempre se quejaba.&lt;/p>
&lt;p>Y comenzaron a dar vueltas diciendo: &amp;ldquo;Bueno, hagamos esto ahora&amp;rdquo;, &amp;ldquo;¿tal vez así?&amp;rdquo;, y antes de darse cuenta, perdieron de vista lo que realmente querían hacer.&lt;/p>
&lt;p>Esto es algo que pasa a menudo en nuestra vida diaria.&lt;/p>
&lt;p>Las expectativas del jefe, las palabras de los padres, la cantidad de &amp;ldquo;me gusta&amp;rdquo; en las redes sociales. Mientras tratamos de adaptarnos a ellos, ¿alguna vez sientes que ya no sabes lo que realmente quieres hacer?&lt;/p>
&lt;hr>
&lt;h3 id="es-importante-elegir-a-quién-escuchar">Es importante elegir &amp;ldquo;a quién escuchar&amp;rdquo;
&lt;/h3>&lt;p>Entonces, ¿qué deberíamos hacer? No hay una respuesta correcta.&lt;/p>
&lt;p>Sin embargo, &amp;ldquo;seguir la opinión de todos&amp;rdquo; es prácticamente imposible.&lt;/p>
&lt;p>Por eso, creo que es importante elegir por nosotros mismos &amp;ldquo;a quién escuchar&amp;rdquo;.&lt;/p>
&lt;p>Por ejemplo, &amp;ldquo;solo escuchar los consejos de las personas que respeto&amp;rdquo; o &amp;ldquo;usar como estándar si mi yo del pasado estaría satisfecho&amp;rdquo;.&lt;/p>
&lt;p>Tener aunque sea un solo estándar en el que puedas decir &amp;ldquo;quiero creer en esto&amp;rdquo;, reduce un poco el ruido del mundo.&lt;/p>
&lt;hr>
&lt;h3 id="así-que-cuando-estés-un-poco-cansado">Así que, cuando estés un poco cansado
&lt;/h3>&lt;p>Puede que sea buena idea recordar &amp;ldquo;La historia de la pareja de ancianos y el burro&amp;rdquo;.&lt;/p>
&lt;p>Es fácil preocuparse por lo que piensan los demás, ¿no?&lt;/p>
&lt;p>Pero si tratas de complacer a todos, terminarás bajándote del burro también.&lt;/p>
&lt;p>A veces, si puedes pensar &amp;ldquo;tal vez esté bien priorizar mis propios sentimientos&amp;rdquo;, tu corazón podría sentirse un poco más ligero.&lt;/p>
&lt;hr></description></item><item><title>Por qué era casi imposible crear un LED azul</title><link>http://kenji.blog/es/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/es/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 qué era casi imposible crear un LED azul" />&lt;h2 id="por-qué-era-casi-imposible-crear-un-led-azul">Por qué era casi imposible crear un LED azul
&lt;/h2>&lt;p>Introducción a un documental en inglés. Es muy interesante. Tengo la fuerte impresión de que los japoneses que resolvieron este problema extremadamente difícil no fueron muy valorados en Japón al principio.&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>Instalación de Qt Extension Pack en Visual Studio Code</title><link>http://kenji.blog/es/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/es/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 Instalación de Qt Extension Pack en Visual Studio Code" />&lt;h1 id="comenzando-el-desarrollo-de-qt-en-vscode-cómo-instalar-el-qt-extension-pack">Comenzando el desarrollo de Qt en VSCode: Cómo instalar el Qt Extension Pack
&lt;/h1>&lt;p>Hola, soy Kenji.
Esta vez presentaré &amp;ldquo;Cómo configurar el entorno de desarrollo de Qt en Visual Studio Code (en adelante VSCode)&amp;rdquo;.&lt;/p>
&lt;p>Recientemente, además del Qt Creator oficial, ha aumentado el número de personas que desean desarrollar aplicaciones de Qt utilizando el ligero y altamente extensible VSCode.
Para estas personas, recomiendo el &amp;ldquo;&lt;strong>Qt Extension Pack&lt;/strong>&amp;rdquo;.
Con solo instalar este paquete de extensiones, tendrás a tu disposición las principales extensiones relacionadas con Qt.&lt;/p>
&lt;hr>
&lt;h2 id="audiencia-objetivo">Audiencia Objetivo
&lt;/h2>&lt;ul>
&lt;li>Personas que desean comenzar a desarrollar aplicaciones GUI usando Qt&lt;/li>
&lt;li>Personas que prefieren desarrollar en VSCode en lugar de Qt Creator&lt;/li>
&lt;li>Personas a las que les resulta tedioso buscar las extensiones una por una&lt;/li>
&lt;/ul>
&lt;hr>
&lt;h2 id="requisitos-previos">Requisitos Previos
&lt;/h2>&lt;ul>
&lt;li>VSCode debe estar instalado
(&lt;a class="link" href="https://code.visualstudio.com/" target="_blank" rel="noopener"
>Puedes descargarlo gratis desde el sitio web oficial&lt;/a>)&lt;/li>
&lt;li>La biblioteca base de Qt debe estar instalada (&lt;a class="link" href="https://www.qt.io/" target="_blank" rel="noopener"
>Sitio web oficial de Qt&lt;/a>)&lt;/li>
&lt;/ul>
&lt;hr>
&lt;h2 id="qué-es-el-qt-extension-pack">¿Qué es el Qt Extension Pack?
&lt;/h2>&lt;p>Qt Extension Pack es un paquete de extensiones para VSCode.
Al instalarlo, las siguientes características se agregan automáticamente:&lt;/p>
&lt;ul>
&lt;li>Soporte para archivos &lt;code>.ui&lt;/code> (Qt Designer)&lt;/li>
&lt;li>Resaltado de sintaxis para archivos &lt;code>.pro&lt;/code> y &lt;code>.qrc&lt;/code>&lt;/li>
&lt;li>Soporte para autocompletado de código C++, compilación y depuración para Qt&lt;/li>
&lt;li>Qt Resource Browser (referencia de recursos)&lt;/li>
&lt;/ul>
&lt;hr>
&lt;h2 id="pasos-de-instalación">Pasos de Instalación
&lt;/h2>&lt;h3 id="1-abre-vscode">1. Abre VSCode
&lt;/h3>&lt;p>Primero, inicia VSCode.&lt;/p>
&lt;h3 id="2-abre-la-vista-de-extensiones">2. Abre la vista de Extensiones
&lt;/h3>&lt;p>Haz clic en el panel de Actividad a la izquierda (el icono de bloques cuadrados) para mostrar &amp;ldquo;Extensiones&amp;rdquo;.&lt;/p>
&lt;p>Opcionalmente, puedes presionar el atajo
&lt;code>Ctrl + Shift + X&lt;/code>.&lt;/p>
&lt;h3 id="3-busca-qt-extension-pack">3. Busca &amp;ldquo;Qt Extension Pack&amp;rdquo;
&lt;/h3>&lt;p>Ingresa las siguientes palabras clave en la barra de búsqueda:&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-haz-clic-en-el-botón-instalar">4. Haz clic en el botón Instalar
&lt;/h3>&lt;p>Una vez que se muestre el paquete correspondiente, haz clic en el botón &amp;ldquo;Instalar&amp;rdquo;.
Esto instalará múltiples extensiones a la vez, como:&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 (esencial para el desarrollo de Qt basado en CMake)&lt;/li>
&lt;/ul>
&lt;hr>
&lt;h2 id="notas-sobre-la-configuración-del-proyecto-ejemplo-cmake--qt">Notas sobre la configuración del proyecto (Ejemplo CMake + Qt)
&lt;/h2>&lt;p>Si utilizas Qt con CMake, se recomienda la siguiente combinación de extensiones:&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>Además, agregar las siguientes líneas en tu CMakeLists.txt facilita la integración con Qt:&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="extra-cómo-abrir-los-archivos-ui">Extra: ¿Cómo abrir los archivos .ui?
&lt;/h2>&lt;p>Los archivos &lt;code>.ui&lt;/code> se pueden editar en Qt Designer.
En VSCode, puedes hacer clic derecho en el archivo &lt;code>.ui&lt;/code> → seleccionar &lt;code>Open with Qt Designer&lt;/code> (requiere que Qt Designer esté incluido en la variable de entorno &lt;code>PATH&lt;/code>).&lt;/p>
&lt;hr>
&lt;h2 id="resumen">Resumen
&lt;/h2>&lt;table>
&lt;thead>
&lt;tr>
&lt;th>Paso&lt;/th>
&lt;th>Contenido&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>1&lt;/td>
&lt;td>Iniciar VSCode&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>2&lt;/td>
&lt;td>Abrir panel de Extensiones&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>3&lt;/td>
&lt;td>Buscar &amp;ldquo;Qt Extension Pack&amp;rdquo;&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>4&lt;/td>
&lt;td>Clic en botón Instalar&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;p>Configurar el entorno de Qt en VSCode se ha vuelto mucho más fácil que antes.
Ofrece suficientes funciones para ser una alternativa a Qt Creator, y es recomendable para quienes desean trabajar de forma ágil.&lt;/p>
&lt;hr>
&lt;h2 id="colección-de-enlaces-recomendados">Colección de Enlaces Recomendados
&lt;/h2>&lt;ul>
&lt;li>&lt;a class="link" href="https://www.qt.io/" target="_blank" rel="noopener"
>Sitio Oficial de 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"
>Sitio Oficial de 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"
>Extensión CMake Tools&lt;/a>&lt;/li>
&lt;/ul>
&lt;hr>
&lt;h2 id="finalmente">Finalmente
&lt;/h2>&lt;p>De ahora en adelante, planeo avanzar en el desarrollo utilizando las herramientas de interfaz de usuario de Qt y QML en este entorno.
La próxima vez, explicaré &lt;strong>cómo compilar y ejecutar una aplicación de Hello World en Qt desde VSCode&lt;/strong>.&lt;/p>
&lt;p>¡Hasta luego!&lt;/p></description></item><item><title>Cómo comprobar si tu iPhone tiene bloqueo de SIM</title><link>http://kenji.blog/es/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/es/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 Cómo comprobar si tu iPhone tiene bloqueo de SIM" />&lt;h1 id="cómo-comprobar-si-tu-iphone-tiene-bloqueo-de-sim">Cómo comprobar si tu iPhone tiene bloqueo de SIM
&lt;/h1>&lt;p>&lt;code>Pantalla de inicio&lt;/code> &amp;gt; &lt;code>Ajustes&lt;/code> &amp;gt; &lt;code>General&lt;/code> &amp;gt; &lt;code>Información&lt;/code> &amp;gt; &lt;code>Bloqueo de SIM&lt;/code>&lt;/p>
&lt;p>Comprueba si aparece &lt;code>Sin bloqueo de SIM&lt;/code> o &lt;code>Con bloqueo de SIM&lt;/code>.&lt;/p></description></item><item><title>Conjetura P≠NP</title><link>http://kenji.blog/es/p/pnp%E4%BA%88%E6%83%B3/</link><pubDate>Wed, 11 Sep 2024 02:22:39 +0900</pubDate><guid>http://kenji.blog/es/p/pnp%E4%BA%88%E6%83%B3/</guid><description>&lt;h1 id="resumen">Resumen
&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">La clase P es la clase de problemas que pueden ser resueltos en tiempo polinómico por una máquina de Turing determinista, y la clase NP es la clase de problemas para los cuales, cuando se da una prueba de que la respuesta es afirmativa (llamada testigo), la validez del testigo puede ser verificada en tiempo polinómico (esto se llama verificación). Dado que los problemas que se pueden resolver en tiempo polinómico también se pueden verificar en tiempo polinómico, es evidente que P⊆NP, pero no está claro si P es un subconjunto propio de NP o no. Aunque todavía no hay pruebas, muchos investigadores creen que P≠NP. La conjetura de que la clase P y la clase NP no son iguales se llama &amp;#34;Conjetura P≠NP&amp;#34;.
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>Sitio de referencia : &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>He vuelto a recibir el premio Microsoft MVP (2024-2025)</title><link>http://kenji.blog/es/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/</link><pubDate>Tue, 03 Sep 2024 21:25:20 +0900</pubDate><guid>http://kenji.blog/es/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/</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 He vuelto a recibir el premio Microsoft MVP (2024-2025)" />&lt;h1 id="he-vuelto-a-recibir-el-premio-microsoft-mvp-2024-2025">He vuelto a recibir el premio 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>Hola, soy kenji.
Les informo que este año también he sido galardonado con el premio &lt;strong>Microsoft MVP (Most Valuable Professional)&lt;/strong>. Esta es la octava vez que recibo este premio.&lt;/p>
&lt;p>Ya que estamos, me gustaría escribir un poco sobre qué es exactamente el premio MVP.&lt;/p>
&lt;hr>
&lt;h2 id="qué-es-el-microsoft-mvp">¿Qué es el Microsoft MVP?
&lt;/h2>&lt;p>Aunque se llame MVP, no estamos hablando del jugador más valioso en los deportes (aunque a veces me lo preguntan&amp;hellip;).
&lt;strong>Microsoft MVP (Most Valuable Professional)&lt;/strong> es un título que se otorga a aquellas personas que comparten y difunden activamente sus conocimientos y experiencias sobre las tecnologías de Microsoft con la comunidad.&lt;/p>
&lt;p>Escribir en blogs técnicos, responder preguntas en sitios de Q&amp;amp;A,
publicar código de ejemplo, o dar charlas en eventos.
&amp;ldquo;Compartir lo que sabes de una manera que sea útil para alguien más&amp;rdquo; — ese tipo de esfuerzo constante es lo que se valora.&lt;/p>
&lt;p>Hay premiados en todo el mundo, pero el número es limitado cada año, y volver a ganarlo no es fácil.
En este contexto, estoy realmente agradecido de haber sido reconocido nuevamente.&lt;/p>
&lt;hr>
&lt;h2 id="razones-del-premio">Razones del premio
&lt;/h2>&lt;p>Esta vez he vuelto a ser premiado en la categoría de &amp;ldquo;Developer Technologies&amp;rdquo; (Tecnologías para Desarrolladores).
Durante el último año, he estado realizando las siguientes actividades:&lt;/p>
&lt;ul>
&lt;li>Escribir en el blog sobre tecnologías relacionadas con Microsoft&lt;/li>
&lt;li>Responder en sitios de Q&amp;amp;A técnicos&lt;/li>
&lt;li>Publicar código de ejemplo en GitHub&lt;/li>
&lt;li>Dar charlas en grupos de estudio y eventos técnicos, etc.&lt;/li>
&lt;/ul>
&lt;p>Ninguna de estas cosas es extraordinaria, pero
siempre he intentado compartir &amp;ldquo;cosas que probé y funcionaron&amp;rdquo; o &amp;ldquo;problemas con los que tropecé pero pude resolver&amp;rdquo;
de manera que puedan ser útiles aunque sea un poco.&lt;/p>
&lt;p>Estoy sinceramente feliz de que esto se haya materializado de esta manera.&lt;/p>
&lt;hr>
&lt;h2 id="sobre-el-futuro">Sobre el futuro
&lt;/h2>&lt;p>El mundo de la tecnología avanza muy rápido y solo mantenerse al día ya es difícil.
Pero precisamente por eso, creo que tiene sentido compartir &amp;ldquo;información de primera mano&amp;rdquo;, como qué tal fue al usar algo realmente, o qué partes fueron difíciles de entender.&lt;/p>
&lt;p>A partir de ahora, espero seguir haciéndolo a mi propio ritmo y sin presiones.
Me haría feliz si, de alguna forma, puedo proporcionar información que haga que alguien piense: &amp;ldquo;Ah, eso me ayudó&amp;rdquo;.&lt;/p>
&lt;p>Espero contar con su apoyo en el futuro.&lt;/p></description></item><item><title>Cómo descargar videos de YouTube con yt-dlp.exe</title><link>http://kenji.blog/es/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/es/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 Cómo descargar videos de YouTube con yt-dlp.exe" />&lt;h1 id="qué-es-yt-dlp">¿Qué es yt-dlp?
&lt;/h1>&lt;p>&lt;code>yt-dlp&lt;/code> es una herramienta de línea de comandos para descargar videos de YouTube.
No solo te permite descargar videos, sino que también puedes descargarlos como archivos de música en formato mp3.&lt;/p>
&lt;h2 id="descarga-e-instalación">Descarga e instalación
&lt;/h2>&lt;ol>
&lt;li>Descarga la versión más reciente de yt-dlp.exe desde la &lt;a class="link" href="https://github.com/yt-dlp/yt-dlp/releases" target="_blank" rel="noopener"
>página de lanzamientos de yt-dlp&lt;/a>.&lt;/li>
&lt;li>Coloca yt-dlp.exe en la carpeta que desees.&lt;/li>
&lt;li>Agrega la ruta de la carpeta de yt-dlp.exe a la variable de entorno Path.&lt;/li>
&lt;/ol>
&lt;h2 id="modo-de-uso">Modo de uso
&lt;/h2>&lt;p>Ejecuta yt-dlp.exe en el símbolo del sistema y especifica la URL del video de 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>※ Como argumento, puedes usar solo la parte de VIDEO_ID en lugar de la URL completa.&lt;/p>
&lt;p>Si deseas descargar un archivo de música en formato mp3, ejecuta el siguiente 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>Con esto, el video se descargará en el directorio actual desde donde ejecutaste el comando.&lt;/p>
&lt;p>Eso es todo.&lt;/p></description></item><item><title>Enlaces de videos cortos</title><link>http://kenji.blog/es/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/</link><pubDate>Sun, 25 Aug 2024 16:24:35 +0900</pubDate><guid>http://kenji.blog/es/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/</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 Enlaces de videos cortos" />&lt;ol>
&lt;li>Recogepelotas de fútbol&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> 『El día que un recogepelotas se convirtió en héroe』 El recogepelotas que salvó al equipo ese día fue invitado posteriormente al club y compartió una comida con los jugadores. &lt;a title="Tottenham" 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">#Tottenham&lt;/a> &lt;a title="Spurs" target="_blank" href="https://www.tiktok.com/tag/%E3%82%B9%E3%83%91%E3%83%BC%E3%82%BA?refer=embed">#Spurs&lt;/a> &lt;a title="Mourinho" 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">#Mourinho&lt;/a> &lt;a title="Recogepelotas" 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">#Recogepelotas&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>Citas de Einstein</title><link>http://kenji.blog/es/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/</link><pubDate>Sat, 24 Aug 2024 18:38:47 +0900</pubDate><guid>http://kenji.blog/es/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/</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 Citas de Einstein" />&lt;p>¡Hola!&lt;/p>
&lt;p>Hoy me gustaría hablar sobre las citas de Einstein.&lt;/p>
&lt;hr>
&lt;h2 id="el-mundo-no-valora-tus-buenas-acciones">¿El mundo no valora tus buenas acciones?
&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-text" data-lang="text">&lt;span class="line">&lt;span class="cl">El mundo nunca evaluará el millón de cosas buenas que haces.
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">Pero te criticará por la única cosa incorrecta que hagas...
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">Pero no te desanimes.
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&amp;#34;Levántate siempre por encima de todas las risas y críticas. Mantente fuerte.&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 son palabras que se dice que dijo Einstein. Señalan agudamente la dureza de la sociedad que sentimos todos los días y el sesgo en las evaluaciones de las personas.&lt;/p>
&lt;hr>
&lt;h2 id="aún-así-sigue-levantándote">Aún así, sigue levantándote
&lt;/h2>&lt;p>&amp;ldquo;Levántate siempre por encima de todas las risas y críticas. Mantente fuerte.&amp;rdquo;&lt;/p>
&lt;p>Estas palabras posteriores pueden decirse que son la respuesta de Einstein a la dura realidad mencionada anteriormente. Nos enseñan la importancia de seguir avanzando, creyendo en nosotros mismos sin ceder ante las críticas o las burlas.&lt;/p>
&lt;hr>
&lt;h2 id="aplicar-las-enseñanzas-de-einstein-a-la-vida-diaria">Aplicar las enseñanzas de Einstein a la vida diaria
&lt;/h2>&lt;p>Esta cita está profundamente relacionada con nuestra vida diaria. Por ejemplo, hay momentos en que nuestro esfuerzo en el trabajo no es reconocido y solo se destacan los errores triviales. Además, los comentarios en las redes sociales pueden ser sacados de contexto y criticados.&lt;/p>
&lt;p>En esos momentos, por favor recuerda estas palabras de Einstein. Es importante mantener tus propias creencias en lugar de alegrarte o entristecerte por las evaluaciones de los demás.&lt;/p>
&lt;hr>
&lt;h2 id="resumen">Resumen
&lt;/h2>&lt;p>Esta cita de Einstein nos enseña la importancia de &amp;ldquo;vivir creyendo en nosotros mismos, sin dejarnos influenciar por las evaluaciones de los demás&amp;rdquo;. Tengamos el valor de seguir el camino en el que creemos, sin ser derrotados por las críticas y las burlas.&lt;/p>
&lt;p>Finalmente, las palabras de Einstein una vez más.&lt;/p>
&lt;blockquote>
&lt;p>&lt;strong>&amp;ldquo;Levántate siempre por encima de todas las risas y críticas. Mantente fuerte.&amp;rdquo;&lt;/strong>&lt;/p>
&lt;/blockquote>
&lt;p>Espero que estas palabras resuenen en tu corazón y te inspiren a dar un paso positivo hacia adelante.&lt;/p></description></item><item><title>Código en C para generar números primos</title><link>http://kenji.blog/es/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/</link><pubDate>Sat, 24 Aug 2024 09:38:10 +0900</pubDate><guid>http://kenji.blog/es/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/</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 en C para generar números primos" />&lt;p>A continuación, se muestra un código en C simple que genera números primos dentro de un rango especificado. En este ejemplo, se enumeran los números primos del 1 al 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;Ingrese el valor maximo del rango para generar numeros 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;Los numeros primos de 1 a %d son los siguientes:&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 de la siguiente manera:&lt;/p>
&lt;ol>
&lt;li>Función isPrime: Determina si un número dado es primo. Por razones de eficiencia, primero verifica si es divisible por 2 y 3, y luego procede a verificar en múltiplos de 6.&lt;/li>
&lt;li>Función printPrimes: Imprime los números primos dentro del rango especificado. El 2 se imprime primero, y luego solo se verifican los números impares.&lt;/li>
&lt;li>Función main: Pide al usuario que ingrese el valor máximo del rango y luego imprime los números primos dentro de ese rango.&lt;/li>
&lt;/ol>
&lt;p>Al compilar y ejecutar este código, se mostrarán los números primos dentro del rango especificado.&lt;/p></description></item><item><title>No mueras, hermano mío</title><link>http://kenji.blog/es/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/</link><pubDate>Thu, 25 Jul 2024 13:16:47 +0900</pubDate><guid>http://kenji.blog/es/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/</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>&lt;strong>&amp;ldquo;No mueras, hermano mío&amp;rdquo;&lt;/strong>&lt;/p>
&lt;p>――Llorando por mi hermano menor en el ejército que asedia Port Arthur&lt;/p>
&lt;p>Ah, hermano mío, por ti lloro,&lt;br>
¡no mueras, hermano mío!&lt;br>
Puesto que eres el último en nacer,&lt;br>
el afecto de tus padres por ti fue mayor,&lt;br>
¿pero acaso te pusieron una espada en la mano&lt;br>
y te enseñaron a matar?&lt;br>
¿Acaso te criaron hasta los veinticuatro años&lt;br>
para que mataras y luego murieras?&lt;/p>
&lt;p>Como amo que se enorgullece de su antigua familia&lt;br>
de comerciantes de la ciudad de Sakai,&lt;br>
y como heredero del nombre de tus padres,&lt;br>
¡no mueras, hermano mío!&lt;br>
Ya sea que la fortaleza de Port Arthur caiga o no,&lt;br>
¿qué importa?&lt;br>
Tú no lo sabes, pero tal cosa&lt;br>
no existe en las reglas de la casa de un comerciante.&lt;/p>
&lt;p>¡No mueras, hermano mío!&lt;br>
El Emperador mismo&lt;br>
no va a la batalla.&lt;br>
Con su gran y profundo corazón,&lt;br>
¿cómo podría él desear&lt;br>
que los hombres derramen la sangre de otros,&lt;br>
que mueran en el camino de las bestias,&lt;br>
y que morir sea la gloria de los hombres?&lt;/p>
&lt;p>Ah, hermano mío, en la batalla,&lt;br>
¡no mueras, hermano mío!&lt;br>
Nuestra madre, que se quedó atrás&lt;br>
cuando nuestro padre falleció el otoño pasado,&lt;br>
en medio de su dolor, fue privada&lt;br>
lamentablemente de su hijo; ella cuida la casa,&lt;br>
y aunque se dice que el reinado es pacífico,&lt;br>
las canas de nuestra madre han aumentado.&lt;/p>
&lt;p>La frágil y joven esposa&lt;br>
que llora postrada tras la cortina de la tienda,&lt;br>
¿te olvidas de ella? ¿Piensas en ella?&lt;br>
Piensa en el corazón de esa joven&lt;br>
de la que te separaste tras menos de diez meses de estar juntos.&lt;br>
Si no es a ti, el único en este mundo,&lt;br>
ah, ¿en quién más podrá confiar?&lt;br>
¡No mueras, hermano mío!&lt;/p></description></item><item><title>Sobre Akiko Yosano</title><link>http://kenji.blog/es/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/</link><pubDate>Thu, 25 Jul 2024 13:08:36 +0900</pubDate><guid>http://kenji.blog/es/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/</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="-resumen-de-la-persona">🔹 Resumen de la persona
&lt;/h2>&lt;p>Akiko Yosano (1878-1942) fue una poeta, escritora y pensadora japonesa que estuvo activa desde la era Meiji hasta principios de la era Showa. Conocida especialmente por su poesía tanka apasionada e individualista, fue una figura que abrió nuevos horizontes en la independencia de las mujeres y la expresión del amor en la literatura japonesa moderna.&lt;/p>
&lt;ul>
&lt;li>
&lt;p>&lt;strong>Nombre real&lt;/strong>: Yosano (apellido de soltera: Hō) Shō&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>Lugar de nacimiento&lt;/strong>: Sakai (Ciudad de Sakai, Prefectura de Osaka)&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>Esposo&lt;/strong>: Tekkan Yosano (poeta)&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>Período principal de actividad&lt;/strong>: Finales de la era Meiji a principios de la era Showa&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>Características&lt;/strong>:&lt;/p>
&lt;ul>
&lt;li>Llamó la atención por su poesía tanka que expresaba francamente los sentimientos románticos de las mujeres.&lt;/li>
&lt;li>Tenía ideales feministas y promovió la educación y la independencia de las mujeres.&lt;/li>
&lt;li>También mostró una postura pacifista al criticar la Guerra Ruso-Japonesa.&lt;/li>
&lt;li>Miembro central de la revista literaria &amp;ldquo;Myōjō&amp;rdquo;.&lt;/li>
&lt;/ul>
&lt;/li>
&lt;/ul>
&lt;hr>
&lt;h2 id="-obras-representativas-sinopsis-y-características">🔹 Obras representativas, sinopsis y características
&lt;/h2>&lt;h3 id="1-midaregami-cabello-enredado-1901">1. &amp;ldquo;Midaregami&amp;rdquo; (Cabello enredado) (1901)
&lt;/h3>&lt;ul>
&lt;li>&lt;strong>Resumen&lt;/strong>: Primera colección de poemas. Publicada a principios de sus veinte, tuvo un gran impacto en el mundo literario japonés.&lt;/li>
&lt;li>&lt;strong>Características&lt;/strong>: Expresa francamente los sentimientos románticos y el deseo físico desde la perspectiva de una mujer.&lt;/li>
&lt;li>&lt;strong>Poema famoso&lt;/strong>:&lt;/li>
&lt;/ul>
&lt;blockquote>
&lt;p>Piel suave
Sin siquiera tocar mi sangre ardiente
¿No te sientes solo mientras predicas el camino?&lt;/p>
&lt;/blockquote>
&lt;p>→ Se convirtió en un tema candente por expresar una visión del amor, considerada audaz para la ética de la época, en las propias palabras de una mujer.&lt;/p>
&lt;hr>
&lt;h3 id="2-kimi-shinitamou-koto-nakare-no-debes-morir-1904">2. &amp;ldquo;Kimi Shinitamou Koto Nakare&amp;rdquo; (No debes morir) (1904)
&lt;/h3>&lt;ul>
&lt;li>&lt;strong>Formato&lt;/strong>: Poema (verso libre, no tanka)&lt;/li>
&lt;li>&lt;strong>Contenido&lt;/strong>: Poema pacifista dirigido a su hermano menor que partió a la Guerra Ruso-Japonesa.&lt;/li>
&lt;li>&lt;strong>Extracto&lt;/strong>:&lt;/li>
&lt;/ul>
&lt;blockquote>
&lt;p>No debes morir
Siendo tú el último en nacer
Con las lágrimas de tu madre fluyendo
Mientras estruja tus mangas&amp;hellip;&lt;/p>
&lt;/blockquote>
&lt;ul>
&lt;li>&lt;strong>Importancia&lt;/strong>: En una época en que había una fuerte tendencia a glorificar la guerra, fue revolucionario al apelar contra la guerra desde la perspectiva de una mujer que temía por la muerte de su hermano.&lt;/li>
&lt;/ul>
&lt;hr>
&lt;h2 id="-influencia-y-evaluación">🔹 Influencia y evaluación
&lt;/h2>&lt;ul>
&lt;li>Llevó a cabo actividades socialmente avanzadas, como la liberación de la mujer, el pacifismo y la difusión de la educación.&lt;/li>
&lt;li>En sus últimos años, se dedicó a la educación de las mujeres y participó en el establecimiento de universidades para mujeres (como el Bunka Gakuin).&lt;/li>
&lt;li>Es una de las intelectuales y escritoras más importantes del Japón de antes de la guerra.&lt;/li>
&lt;/ul>
&lt;hr>
&lt;h2 id="-resumen">🔹 Resumen
&lt;/h2>&lt;table>
&lt;thead>
&lt;tr>
&lt;th>Ítem&lt;/th>
&lt;th>Contenido&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>Nombre&lt;/td>
&lt;td>Akiko Yosano&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Campo de actividad&lt;/td>
&lt;td>Tanka, poesía, crítica, educación&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Obras principales&lt;/td>
&lt;td>&amp;ldquo;Midaregami&amp;rdquo;, &amp;ldquo;Kimi Shinitamou Koto Nakare&amp;rdquo;&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Características&lt;/td>
&lt;td>Expresión de la libertad amorosa, independencia femenina, pacifismo&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Influencia moderna&lt;/td>
&lt;td>Literatura feminista, innovación del tanka moderno, pionera de la poesía pacifista&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;hr></description></item><item><title>Introducción a Mathematica</title><link>http://kenji.blog/es/p/mathematica%E5%85%A5%E9%96%80/</link><pubDate>Thu, 25 Jul 2024 01:36:19 +0900</pubDate><guid>http://kenji.blog/es/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 Introducción a Mathematica" />&lt;h1 id="introducción-a-mathematica">Introducción a Mathematica
&lt;/h1>&lt;h2 id="resolver-ecuaciones">Resolver ecuaciones
&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>Salida&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-soluciones-enteras-para-una-ecuación">Encontrar soluciones enteras para una ecuación
&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>Salida&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-un-sistema-de-ecuaciones">Resolver un sistema de ecuaciones
&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>Salida&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-inecuaciones">Resolver inecuaciones
&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>Salida&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>Salida&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>Salida&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="calcular-el-límite">Calcular el límite
&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>Salida&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="calcular-una-serie">Calcular una serie
&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>Salida&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="crear-una-matriz">Crear una 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="multiplicar-matrices">Multiplicar matrices
&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>Salida&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="calcular-la-matriz-inversa">Calcular la 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>Salida&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="calcular-valores-propios-y-vectores-propios">Calcular valores propios y vectores propios
&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>Salida&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="calcular-el-producto-punto-de-vectores">Calcular el producto punto de vectores
&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>Salida&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="calcular-el-producto-cruzado-de-vectores">Calcular el producto cruzado de vectores
&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>Salida&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="calcular-la-magnitud-norma-de-un-vector">Calcular la magnitud (norma) de un vector
&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>Salida&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="calcular-el-ángulo-entre-vectores">Calcular el ángulo entre vectores
&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>Salida&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="calcular-la-proyección-de-un-vector">Calcular la proyección de un vector
&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>Salida&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="calcular-la-rotación-de-un-vector">Calcular la rotación de un vector
&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>Salida&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="calcular-la-traslación-de-un-vector">Calcular la traslación de un vector
&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>Salida&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="calcular-la-escala-de-un-vector">Calcular la escala de un vector
&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>Salida&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="calcular-la-reflexión-de-un-vector">Calcular la reflexión de un vector
&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>Salida&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="generar-un-número-aleatorio">Generar un número aleatorio
&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>Salida&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="generar-un-número-aleatorio-entero">Generar un número aleatorio (entero)
&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>Salida&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="generar-un-número-aleatorio-rango-específico">Generar un número aleatorio (rango especí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;/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>Salida&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="generar-un-número-aleatorio-entero-rango-específico">Generar un número aleatorio (entero, rango especí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;/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>Salida&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="generar-un-número-aleatorio-distribución-específica">Generar un número aleatorio (distribución específica)
&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>Salida&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="generar-números-aleatorios-distribución-y-cantidad-específicas">Generar números aleatorios (distribución y cantidad específicas)
&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>Salida&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="generar-números-aleatorios-distribución-cantidad-y-semilla-específicas">Generar números aleatorios (distribución, cantidad y semilla específicas)
&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>Salida&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-una-función-a-los-elementos-de-un-array">Aplicar una función a los elementos de un 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>Salida&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-una-función-usando-una-expresión-lambda">Definir una función usando una expresión 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>Salida&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="componer-funciones">Componer funciones
&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>Salida&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="hacer-referencia-al-resultado-del-cálculo-anterior">Hacer referencia al resultado del 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>Salida&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="función-pura">Función pura
&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>Salida&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="extraer-elementos-de-un-array">Extraer elementos de un 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;/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>Salida&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 de Hugo</title><link>http://kenji.blog/es/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/es/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 de Hugo" />&lt;h1 id="qué-es-hugo">¿Qué es Hugo?
&lt;/h1>&lt;p>Hugo es un generador de sitios estáticos. Puedes crear sitios web convirtiendo archivos Markdown a HTML. Hugo está escrito en el lenguaje Go y funciona a gran velocidad.&lt;/p>
&lt;p>Este blog también fue creado con Hugo.&lt;/p>
&lt;h1 id="instalación-del-cli-de-hugo">Instalación del CLI de Hugo
&lt;/h1>&lt;p>Para instalar el CLI de Hugo, ejecuta el siguiente comando:&lt;/p>
&lt;p>※ Ejemplo para macOS. Para otros sistemas operativos, consulta la documentación 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>Se puede instalar usando Homebrew.&lt;/p>
&lt;h1 id="lista-de-comandos-de-hugo">Lista de comandos de Hugo
&lt;/h1>&lt;p>Hugo ofrece varios comandos. A continuación, se resumen los comandos más utilizados.&lt;/p>
&lt;h2 id="crear-un-nuevo-sitio">Crear un nuevo sitio
&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;nombre del sitio&amp;gt;
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>Comando para crear un nuevo sitio. Especifica el nombre del sitio en &lt;code>&amp;lt;nombre del sitio&amp;gt;&lt;/code>.&lt;/p>
&lt;h2 id="crear-un-nuevo-artículo">Crear un nuevo artículo
&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;nombre del artículo&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 crear un nuevo artículo. Especifica el nombre del artículo en &lt;code>&amp;lt;nombre del artículo&amp;gt;&lt;/code>.&lt;/p>
&lt;h2 id="iniciar-el-servidor">Iniciar el 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 un servidor local. Se puede acceder en &lt;code>http://localhost:1313&lt;/code>.&lt;/p>
&lt;h2 id="construir-build">Construir (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 construir el sitio. Los archivos HTML se generan en el directorio &lt;code>public&lt;/code>.&lt;/p>
&lt;h2 id="desplegar-deploy">Desplegar (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 desplegar el sitio. La configuración del destino de despliegue se realiza en el archivo &lt;code>config.toml&lt;/code>.&lt;/p>
&lt;h2 id="mostrar-la-lista-de-artículos">Mostrar la lista de artículos
&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 mostrar la lista de artículos.&lt;/p>
&lt;h2 id="confirmar-la-configuración">Confirmar la configuración
&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 confirmar la configuración.&lt;/p>
&lt;h2 id="mostrar-la-ayuda">Mostrar la ayuda
&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 mostrar la ayuda.&lt;/p>
&lt;h2 id="mostrar-la-versión">Mostrar la versión
&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 mostrar la versión.&lt;/p>
&lt;p>Esta ha sido la lista de comandos de Hugo. Hay muchos otros comandos disponibles, así que consulta la documentación oficial.&lt;/p>
&lt;h1 id="referencia">Referencia
&lt;/h1>&lt;ul>
&lt;li>&lt;a class="link" href="https://gohugo.io/documentation/" target="_blank" rel="noopener"
>Documentación oficial de Hugo&lt;/a>&lt;/li>
&lt;/ul></description></item><item><title>'Extensiones Recomendadas para Visual Studio Code'</title><link>http://kenji.blog/es/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/es/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 'Extensiones Recomendadas para Visual Studio Code'" />&lt;h1 id="lista-de-extensiones-recomendadas-para-visual-studio-code">Lista de Extensiones Recomendadas para Visual Studio Code
&lt;/h1>&lt;table>
&lt;thead>
&lt;tr>
&lt;th>Categoría&lt;/th>
&lt;th>Nombre&lt;/th>
&lt;th>Proveedor&lt;/th>
&lt;th>Descripción&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>Gestión Virtual/Contenedores&lt;/td>
&lt;td>Remote Development&lt;/td>
&lt;td>Microsoft&lt;/td>
&lt;td>Soporta el desarrollo remoto conectándose a contenedores virtuales/WSL a través de SSH&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Gestión Virtual/Contenedores&lt;/td>
&lt;td>Docker&lt;/td>
&lt;td>Microsoft&lt;/td>
&lt;td>Soporta la gestión de contenedores Docker&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Gestión de Código&lt;/td>
&lt;td>GitHub Pull Requests&lt;/td>
&lt;td>GitHub&lt;/td>
&lt;td>Gestiona GitHub Pull Requests en VSCode&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Gestión de Código&lt;/td>
&lt;td>GitHub Copilot&lt;/td>
&lt;td>GitHub&lt;/td>
&lt;td>Soporta la finalización de código impulsada por IA&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Gestión de Código&lt;/td>
&lt;td>Git Graph&lt;/td>
&lt;td>mhutchie&lt;/td>
&lt;td>Muestra gráficamente las ramas y commits de Git&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Gestión de Código&lt;/td>
&lt;td>Git History&lt;/td>
&lt;td>Don Jayamanne&lt;/td>
&lt;td>Muestra el historial de Git&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Navegador/Desarrollo Web&lt;/td>
&lt;td>Debugger for Firefox&lt;/td>
&lt;td>Firefox DevTools&lt;/td>
&lt;td>Utiliza el depurador de Firefox en VSCode&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Navegador/Desarrollo Web&lt;/td>
&lt;td>Microsoft Edge Tool For VScode&lt;/td>
&lt;td>Microsoft&lt;/td>
&lt;td>Utiliza las herramientas de desarrollo de Edge en VSCode&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Navegador/Desarrollo Web&lt;/td>
&lt;td>Vue Language Features(Volar)&lt;/td>
&lt;td>Vue&lt;/td>
&lt;td>Soporta las características del lenguaje de Vue&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Navegador/Desarrollo Web&lt;/td>
&lt;td>JavaScript (ES6) code snippets&lt;/td>
&lt;td>charalampos karypidis&lt;/td>
&lt;td>Proporciona fragmentos de código de JavaScript&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Navegador/Desarrollo Web&lt;/td>
&lt;td>Tailwind CSS IntelliSense&lt;/td>
&lt;td>Tailwind Labs&lt;/td>
&lt;td>Proporciona fragmentos de código de Tailwind CSS&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Desarrollo en la Nube&lt;/td>
&lt;td>AWS Toolkit&lt;/td>
&lt;td>Amazon Web Services&lt;/td>
&lt;td>Soporta el desarrollo en AWS&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Desarrollo en la Nube&lt;/td>
&lt;td>Azure Tools&lt;/td>
&lt;td>Microsoft&lt;/td>
&lt;td>Soporta el desarrollo en Azure&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Desarrollo en la Nube&lt;/td>
&lt;td>Google Cloud Tools&lt;/td>
&lt;td>Google Cloud&lt;/td>
&lt;td>Soporta el desarrollo en Google Cloud&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Bases de Datos&lt;/td>
&lt;td>MySQL&lt;/td>
&lt;td>Jun Han&lt;/td>
&lt;td>Soporta el desarrollo en MySQL&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Bases de Datos&lt;/td>
&lt;td>SQL Server(mssql)&lt;/td>
&lt;td>Microsoft&lt;/td>
&lt;td>Soporta el desarrollo en SQL Server&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Bases de Datos&lt;/td>
&lt;td>PostgreSQL&lt;/td>
&lt;td>Chris Kolkman&lt;/td>
&lt;td>Soporta el desarrollo en PostgreSQL&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Sistemas Integrados&lt;/td>
&lt;td>PlatformIO&lt;/td>
&lt;td>PlatformIO&lt;/td>
&lt;td>Soporta el desarrollo en PlatformIO&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Sistemas Integrados&lt;/td>
&lt;td>Arduino&lt;/td>
&lt;td>Microsoft&lt;/td>
&lt;td>Soporta el desarrollo en Arduino&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Sistemas Integrados&lt;/td>
&lt;td>WorkBench&lt;/td>
&lt;td>Particle&lt;/td>
&lt;td>Entorno de desarrollo de Particle, soportando firmware, bibliotecas e integración con la nube para el desarrollo de IoT&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>Soporta el desarrollo en 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>Ejecuta código C/C++ (soporta compiladores gcc, msvc, 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>Soporta la depuración 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>Soporta el desarrollo en Python&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Python&lt;/td>
&lt;td>jupyter&lt;/td>
&lt;td>Microsoft&lt;/td>
&lt;td>Soporta el desarrollo en Jupyter Notebook&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Utilidades/Extensión de IU&lt;/td>
&lt;td>Markdown All in One&lt;/td>
&lt;td>Yu Zhang&lt;/td>
&lt;td>Soporta la escritura en Markdown&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Utilidades/Extensión de IU&lt;/td>
&lt;td>Hex Editor&lt;/td>
&lt;td>Microsoft&lt;/td>
&lt;td>Edita archivos binarios&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Utilidades/Extensión de IU&lt;/td>
&lt;td>vscode-pdf&lt;/td>
&lt;td>tomoki1207&lt;/td>
&lt;td>Muestra archivos PDF&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Utilidades/Extensión de IU&lt;/td>
&lt;td>Rainbow CSV&lt;/td>
&lt;td>mechatroner&lt;/td>
&lt;td>Muestra archivos CSV con resaltado de colores&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Utilidades/Extensión de IU&lt;/td>
&lt;td>Draw.io Integration&lt;/td>
&lt;td>Henning Dieterichs&lt;/td>
&lt;td>Utiliza Draw.io en VSCode&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Utilidades/Extensión de IU&lt;/td>
&lt;td>Japanese Language Pack for Visual Studio Code&lt;/td>
&lt;td>Microsoft&lt;/td>
&lt;td>Paquete de idioma japonés&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Utilidades/Extensión de IU&lt;/td>
&lt;td>Live Share&lt;/td>
&lt;td>Microsoft&lt;/td>
&lt;td>Soporta la colaboración en tiempo real&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table></description></item><item><title>'Probando mermaid.js'</title><link>http://kenji.blog/es/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/es/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 'Probando mermaid.js'" />&lt;h2 id="qué-es-mermaidjs">¿Qué es mermaid.js?
&lt;/h2>&lt;p>mermaid.js es una biblioteca de JavaScript que permite describir diagramas mediante una sintaxis basada en texto (sintaxis de Mermaid) para representar gráficamente diagramas complejos como diagramas de flujo, diagramas de Gantt, etc.
También se utiliza en varios servicios como GitHub, Qiita y Notion. En esta ocasión, configuraremos hugo para poder usar mermaid.js.&lt;/p>
&lt;h2 id="habilitar-mermaidjs-en-hugo">Habilitar mermaid.js en hugo
&lt;/h2>&lt;p>Los pasos son los siguientes:&lt;/p>
&lt;ol>
&lt;li>Añadir lo siguiente a 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;ul>
&lt;li>Solo se carga &lt;code>mermaid.min.js&lt;/code> si se establece &lt;code>mermaid: true&lt;/code> en la condición if. Esta biblioteca pesa aproximadamente 3MB, lo cual es sorprendentemente grande.&lt;/li>
&lt;/ul>
&lt;ol start="3">
&lt;li>Crear assets/js/load-mermaid.js. Este proceso se utiliza para inicializar y volver a dibujar cuando el tema cambia dinámicamente.&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>El código original en el que me basé fue tomado de la siguiente referencia:&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>Modificar el procesamiento al cambiar de tema en 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>Crear 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>Con esto, la preparación para usar mermaid.js está completa.&lt;/p>
&lt;h2 id="probando-mermaidjs">Probando mermaid.js
&lt;/h2>&lt;ol>
&lt;li>Añadir lo siguiente a la definición del artículo:&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>Añadir lo siguiente al cuerpo del artículo:&lt;/li>
&lt;/ol>
&lt;p>&lt;strong>Diagrama de flujo&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[Inicio] --&amp;gt;|Condición 1| B(Condición 2)
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> B --&amp;gt; C{Condición 3}
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> C --&amp;gt;|Condición 4| D[Fin]
&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 de salida&lt;/strong>&lt;/p>
&lt;div class="mermaid" align="center">
graph TD
A[Inicio] -->|Condición 1| B(Condición 2)
B --> C{Condición 3}
C -->|Condición 4| D[Fin]
&lt;/div>
&lt;p>&lt;strong>Diagrama 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"> Definición de requisitos :done, a, 2024-05-25, 5d
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> Diseño básico :done, b, after a, 5d
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> Diseño detallado :done, c, after b, 5d
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> Implementación :active, d, after c, 10d
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> Pruebas unitarias :crit, e, after d, 5d
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> Pruebas de integración : f, after e, 5d
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> Pruebas del sistema : g, after f, 5d
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> Lanzamiento :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 de salida&lt;/strong>&lt;/p>
&lt;div class="mermaid" align="center">
gantt
section Project
Definición de requisitos :done, a, 2024-05-25, 5d
Diseño básico :done, b, after a, 5d
Diseño detallado :done, c, after b, 5d
Implementación :active, d, after c, 10d
Pruebas unitarias :crit, e, after d, 5d
Pruebas de integración : f, after e, 5d
Pruebas del sistema : g, after f, 5d
Lanzamiento :milestone, h, after g, 1d
&lt;/div>
&lt;p>&lt;strong>Diagrama de secuencia&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: Ingreso de ID/PW
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> view-&amp;gt;&amp;gt;controller: Petición de autenticación
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> controller-&amp;gt;&amp;gt;model: Petición de autenticación
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> model-&amp;gt;&amp;gt;database: Petición de autenticación
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> database--&amp;gt;&amp;gt;model: Devolución de resultado de autenticación
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> model--&amp;gt;&amp;gt;controller: Devolución de resultado de autenticación
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> controller--&amp;gt;&amp;gt;view: Devolución de resultado de autenticación
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> view--&amp;gt;&amp;gt;user: Mostrar resultado de autenticación
&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 de salida&lt;/strong>&lt;/p>
&lt;div class="mermaid" align="center">
sequenceDiagram
participant user
participant view
participant controller
participant model
participant database
user->>view: Ingreso de ID/PW
view->>controller: Consulta ajax
controller->>model: Petición de autenticación
model->>database: Emisión de SQL
database-->>model: Devolución de resultado SQL
model-->>controller: Devolución de resultado de petición de autenticación
controller-->>view: Devolución de resultado de consulta ajax
view-->>user: Mostrar resultado de autenticación
&lt;/div>
&lt;p>Eso es todo.&lt;/p>
&lt;h3 id="referencias">Referencias
&lt;/h3>&lt;ul>
&lt;li>&lt;a class="link" href="https://mermaid.js.org/#/" target="_blank" rel="noopener"
>Sitio oficial de mermaid.js&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="https://mermaid.live/" target="_blank" rel="noopener"
>Sitio de demostración para previsualizar la sintaxis de mermaid&lt;/a>&lt;/li>
&lt;/ul></description></item><item><title>Cómo deshacer git reset</title><link>http://kenji.blog/es/p/git-reset%E3%82%92%E5%8F%96%E3%82%8A%E6%B6%88%E3%81%99%E6%96%B9%E6%B3%95/</link><pubDate>Wed, 15 May 2024 23:32:43 +0900</pubDate><guid>http://kenji.blog/es/p/git-reset%E3%82%92%E5%8F%96%E3%82%8A%E6%B6%88%E3%81%99%E6%96%B9%E6%B3%95/</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 Cómo deshacer git reset" />&lt;h1 id="cómo-deshacer-git-reset">Cómo deshacer git reset
&lt;/h1>&lt;p>Si después de realizar un git commit ejecutas git reset por error, te mostraré cómo deshacer el git reset (cómo restaurar el estado en el momento del git commit).&lt;/p>
&lt;ol>
&lt;li>Verifica el ID del commit antes del reset con &lt;code>git reflog&lt;/code>&lt;/li>
&lt;li>Vuelve al estado antes del reset con &lt;code>git reset --hard HEAD@{número}&lt;/code>&lt;/li>
&lt;/ol>
&lt;p>Eso es todo sobre cómo deshacer un git reset.&lt;/p></description></item><item><title>Liberación del código fuente de MS-DOS 4.0</title><link>http://kenji.blog/es/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/es/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 Liberación del código fuente de MS-DOS 4.0" />&lt;h2 id="liberación-del-código-fuente-de-ms-dos-40">Liberación del código fuente de MS-DOS 4.0
&lt;/h2>&lt;p>Microsoft ha publicado el código fuente de MS-DOS 4.0, lanzado hace unos 40 años.
Está escrito casi en su totalidad en código ensamblador 8086.&lt;/p>
&lt;h2 id="repositorio-de-github">Repositorio de 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="sitios-de-referencia">Sitios de referencia
&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"
>Liberación del código fuente de MS-DOS 4.0&lt;/a>&lt;/li>
&lt;/ul></description></item><item><title>Libros recomendados para ingenieros principiantes</title><link>http://kenji.blog/es/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/</link><pubDate>Sun, 05 May 2024 16:03:33 +0900</pubDate><guid>http://kenji.blog/es/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/</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 Libros recomendados para ingenieros principiantes" />&lt;ol>
&lt;li>Código legible
&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>Principios de programación
&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>El 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>Tecnologías que sustentan la 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>Cómo crear aplicaciones 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 qué se conecta la red
&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>Guía exhaustiva de SQL de los expertos
&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>Guía práctica de 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>Guía completa de 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 2da Edición
&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 los expertos en 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: Estructura y diseño de software de los expertos
&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>Tecnologías que debes conocer antes de convertirte en programador de videojuegos
&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 qué construimos con orientación 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>Plantilla de calendario de Excel (versión con días festivos)</title><link>http://kenji.blog/es/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/es/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 Plantilla de calendario de Excel (versión con días festivos)" />&lt;h2 id="he-creado-una-plantilla-de-calendario-de-excel-versión-con-días-festivos">¡He creado una plantilla de calendario de Excel (versión con días festivos)!
&lt;/h2>&lt;p>He creado una plantilla de Excel que, al introducir el año y el mes, muestra los días festivos en el calendario de ese mes.&lt;/p>
&lt;p>Descárgala y utilízala.
&lt;a class="link" href="%e3%82%ab%e3%83%ac%e3%83%b3%e3%83%80%e3%83%bc.xlsx" >Calendario.xlsx&lt;/a>&lt;/p></description></item><item><title>Qué hacer cuando la configuración de DPI se restablece en cada inicio con monitores múltiples</title><link>http://kenji.blog/es/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/</link><pubDate>Mon, 29 Apr 2024 19:42:20 +0900</pubDate><guid>http://kenji.blog/es/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/</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 Qué hacer cuando la configuración de DPI se restablece en cada inicio con monitores múltiples" />&lt;ul>
&lt;li>Este es el procedimiento de configuración en Windows 11.&lt;/li>
&lt;/ul>
&lt;ol>
&lt;li>Abrir el Panel de control&lt;/li>
&lt;li>Seleccionar Opciones de energía&lt;/li>
&lt;li>Hacer clic en &amp;ldquo;Elegir el comportamiento de los botones de inicio/apagado&amp;rdquo;&lt;/li>
&lt;li>Hacer clic en &amp;ldquo;Cambiar la configuración actualmente no disponible&amp;rdquo;&lt;/li>
&lt;li>Desmarcar &amp;ldquo;Activar inicio rápido (recomendado)&amp;rdquo;&lt;/li>
&lt;li>Hacer clic en &amp;ldquo;Guardar cambios&amp;rdquo;&lt;/li>
&lt;/ol>
&lt;h3 id="referencia">Referencia
&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\] Cómo desactivar el inicio rápido.&lt;/a>&lt;/p></description></item><item><title>Obtener solo lo más reciente de un repositorio git</title><link>http://kenji.blog/es/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/</link><pubDate>Sat, 27 Apr 2024 02:54:12 +0900</pubDate><guid>http://kenji.blog/es/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/</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 Obtener solo lo más reciente de un repositorio git" />&lt;h1 id="obtener-solo-lo-más-reciente-del-repositorio">Obtener solo lo más reciente del repositorio
&lt;/h1>&lt;p>Con el siguiente comando puedes obtener solo lo más reciente del repositorio.
Es útil cuando quieres obtener el repositorio rápidamente para ahorrar espacio en el 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 del repositorio&amp;gt;
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div></description></item><item><title>'Qué hacer cuando GitHub Copilot deja de funcionar debido a un error de certificado'</title><link>http://kenji.blog/es/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/</link><pubDate>Sun, 21 Apr 2024 18:47:26 +0900</pubDate><guid>http://kenji.blog/es/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/</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 'Qué hacer cuando GitHub Copilot deja de funcionar debido a un error de certificado'" />&lt;h1 id="qué-hacer-cuando-aparece-el-siguiente-error-en-github-copilot">Qué hacer cuando aparece el siguiente error en GitHub Copilot
&lt;/h1>&lt;p>GitHub Copilot dejó de funcionar alrededor del 19 de abril de 2024. El mensaje de error es el siguiente:&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="solución">Solución
&lt;/h2>&lt;p>Parece ser un problema con ESET. En la configuración avanzada de ESET, desactiva la opción &amp;ldquo;Habilitar 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="referencia">Referencia
&lt;/h2>&lt;p>Parece que el mismo error está ocurriendo con 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>Introducción a vim</title><link>http://kenji.blog/es/p/vim%E5%85%A5%E9%96%80/</link><pubDate>Fri, 19 Apr 2024 22:06:34 +0900</pubDate><guid>http://kenji.blog/es/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 Introducción a 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="introducción-a-vim">Introducción a vim
&lt;/h1>&lt;h2 id="descarga-e-instalación">Descarga e instalación
&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>Desde el sitio anterior, descarga e instala el módulo según el SO que desees instalar.&lt;/p>
&lt;p>Para Windows, es recomendable elegir &lt;code>gvim_X.X.X_x64_signed.exe&lt;/code>.&lt;/p>
&lt;h2 id="cómo-iniciar">Cómo iniciar
&lt;/h2>&lt;p>Para Windows, es necesario registrar la carpeta que contiene &lt;code>vim.exe&lt;/code> en la variable de entorno Path.&lt;/p>
&lt;p>Cómo 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 un nombre de archivo&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="cómo-salir">Cómo salir
&lt;/h2>&lt;p>Para salir, ingresa &lt;code>:&lt;/code> (dos puntos), luego ingresa &lt;code>q&lt;/code> y presiona 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>Si has modificado el archivo, aparecerá el mensaje &lt;code>No se ha guardado el último cambio (añade ! para descartar los cambios)&lt;/code>.
Puedes descartar el contenido y forzar la salida.&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 guardar el archivo y salir&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>Lo siguiente también tiene el mismo 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>Además, puedes salir presionando &lt;code>z&lt;/code> dos veces mientras mantienes presionado &lt;code>Shift&lt;/code>. (Igual que :wq)&lt;/p>
&lt;h2 id="modos">Modos
&lt;/h2>&lt;p>vim tiene el &lt;code>modo comando&lt;/code> y el &lt;code>modo inserción&lt;/code>. Cuando inicias vim, entra en el &lt;code>modo comando&lt;/code>, y si presionas la tecla &lt;code>i&lt;/code>, pasará al &lt;code>modo inserción&lt;/code>.&lt;/p>
&lt;p>En el &lt;code>modo inserción&lt;/code>, como su nombre indica, es posible introducir texto. Para pasar del &lt;code>modo inserción&lt;/code> al &lt;code>modo comando&lt;/code>, presiona la tecla &lt;code>ESC&lt;/code>.&lt;/p>
&lt;p>Tener este cambio de modo de inserción es una de las características de vim.&lt;/p>
&lt;h2 id="movimiento-del-cursor-y-desplazamiento">Movimiento del cursor y desplazamiento
&lt;/h2>&lt;p>Aquí se resume el movimiento del cursor y el desplazamiento en el &lt;code>modo comando&lt;/code>.&lt;/p>
&lt;table>
&lt;thead>
&lt;tr>
&lt;th>Tecla&lt;/th>
&lt;th>Descripción&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>&lt;code>h&lt;/code> (o &lt;code>Ctrl&lt;/code>+&lt;code>H&lt;/code>, &lt;code>Retroceso&lt;/code>, &lt;code>←&lt;/code>)&lt;/td>
&lt;td>Mover a la izquierda&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>j&lt;/code> (o &lt;code>Ctrl&lt;/code>+&lt;code>J&lt;/code>・&lt;code>N&lt;/code>, &lt;code>↓&lt;/code>)&lt;/td>
&lt;td>Mover hacia abajo&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>k&lt;/code> (o &lt;code>Ctrl&lt;/code>+&lt;code>P&lt;/code>, &lt;code>↑&lt;/code>)&lt;/td>
&lt;td>Mover hacia arriba&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>l&lt;/code> (o &lt;code>Espacio&lt;/code>, &lt;code>→&lt;/code>)&lt;/td>
&lt;td>Mover a la derecha&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>+&lt;/code> (o &lt;code>Enter&lt;/code>)&lt;/td>
&lt;td>Mover al principio de la siguiente línea&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>-&lt;/code>&lt;/td>
&lt;td>Mover al principio de la línea anterior&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>Ctrl&lt;/code>+&lt;code>B&lt;/code> (o &lt;code>RePág&lt;/code>)&lt;/td>
&lt;td>Desplazar hacia arriba&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>Ctrl&lt;/code>+&lt;code>F&lt;/code> (o &lt;code>AvPág&lt;/code>)&lt;/td>
&lt;td>Desplazar hacia abajo&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>Ctrl&lt;/code>+&lt;code>U&lt;/code>&lt;/td>
&lt;td>Medio desplazamiento hacia arriba&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>Ctrl&lt;/code>+&lt;code>D&lt;/code>&lt;/td>
&lt;td>Medio desplazamiento hacia abajo&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>Ctrl&lt;/code>+&lt;code>Y&lt;/code>&lt;/td>
&lt;td>Desplazar 1 línea hacia arriba&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>Ctrl&lt;/code>+&lt;code>E&lt;/code>&lt;/td>
&lt;td>Desplazar 1 línea hacia abajo&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>z&lt;/code> &lt;code>Enter&lt;/code>&lt;/td>
&lt;td>Desplazar la línea del cursor a la parte superior de la pantalla&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>z&lt;/code> &lt;code>.&lt;/code>&lt;/td>
&lt;td>Desplazar la línea del cursor al centro de la pantalla&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>z&lt;/code> &lt;code>-&lt;/code>&lt;/td>
&lt;td>Desplazar la línea del cursor a la parte inferior de la pantalla&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>0&lt;/code> (o &lt;code>|&lt;/code>)&lt;/td>
&lt;td>Mover el cursor al principio de la línea&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>$&lt;/code>&lt;/td>
&lt;td>Mover el cursor al final de la línea&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>^&lt;/code> (o &lt;code>_&lt;/code>)&lt;/td>
&lt;td>Mover el cursor al principio de la línea (excluyendo espacios y tabulaciones)&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>G&lt;/code> (o &lt;code>:$&lt;/code>)&lt;/td>
&lt;td>Mover el cursor a la última línea&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>:número de línea&lt;/code> &lt;code>Enter&lt;/code>&lt;/td>
&lt;td>Mover a la línea especificada&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;p>Si introduces un &lt;code>número&lt;/code> seguido de las teclas de movimiento anteriores, puedes moverte varias veces esa cantidad.
(Por ejemplo, si introduces &lt;code>3j&lt;/code>, te moverás 3 líneas hacia abajo desde la posición actual del cursor.)&lt;/p>
&lt;h2 id="otros-comandos">Otros comandos
&lt;/h2>&lt;table>
&lt;thead>
&lt;tr>
&lt;th>Tecla&lt;/th>
&lt;th>Descripción&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>Redibujar la pantalla&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>Ctrl&lt;/code>+&lt;code>G&lt;/code>&lt;/td>
&lt;td>Mostrar el número total de líneas del archivo, posición del cursor, etc.&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table></description></item><item><title>LoadIcon no necesita llamar a DestroyIcon</title><link>http://kenji.blog/es/p/loadicon%E3%81%AFdestroyicon%E3%82%92%E5%91%BC%E3%81%B3%E5%87%BA%E3%81%99%E5%BF%85%E8%A6%81%E3%81%AF%E3%81%AA%E3%81%84/</link><pubDate>Fri, 19 Apr 2024 01:55:17 +0900</pubDate><guid>http://kenji.blog/es/p/loadicon%E3%81%AFdestroyicon%E3%82%92%E5%91%BC%E3%81%B3%E5%87%BA%E3%81%99%E5%BF%85%E8%A6%81%E3%81%AF%E3%81%AA%E3%81%84/</guid><description>&lt;h1 id="sobre-la-necesidad-de-llamar-a-destroyicon">Sobre la necesidad de llamar a DestroyIcon
&lt;/h1>&lt;p>Es necesario llamar a DestroyIcon en los siguientes casos:&lt;/p>
&lt;ul>
&lt;li>CreateIconFromResourceEx (si se llama sin la bandera LR_SHARED)&lt;/li>
&lt;li>CreateIconIndirect&lt;/li>
&lt;li>CopyIcon&lt;/li>
&lt;/ul>
&lt;p>Cuando el icono es creado por las funciones anteriores.&lt;/p>
&lt;ul>
&lt;li>LoadIcon&lt;/li>
&lt;li>LoadImage (cuando se usa la bandera LR_SHARED)&lt;/li>
&lt;li>CopyImage (cuando se usa la bandera LR_COPYRETURNORG y el parámetro hImage es un icono compartido)&lt;/li>
&lt;li>CreateIconFromResource&lt;/li>
&lt;li>CreateIconFromResourceEx (cuando se usa la bandera LR_SHARED)&lt;/li>
&lt;/ul>
&lt;p>Los iconos creados y cargados en los casos anteriores no deben llamar a DestroyIcon.&lt;/p>
&lt;h3 id="referencias">Referencias
&lt;/h3>&lt;ul>
&lt;li>&lt;a class="link" href="https://learn.microsoft.com/es-es/windows/win32/api/winuser/nf-winuser-destroyicon" target="_blank" rel="noopener"
>Función DestroyIcon (winuser.h)&lt;/a>&lt;/li>
&lt;/ul></description></item><item><title>Sobre la IA generativa</title><link>http://kenji.blog/es/p/%E7%94%9F%E6%88%90ai%E3%81%AB%E3%81%A4%E3%81%84%E3%81%A6/</link><pubDate>Tue, 16 Apr 2024 02:13:56 +0900</pubDate><guid>http://kenji.blog/es/p/%E7%94%9F%E6%88%90ai%E3%81%AB%E3%81%A4%E3%81%84%E3%81%A6/</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 la IA generativa" />&lt;h2 id="videos-de-conferencias-sobre-ia-generativa">Videos de conferencias sobre IA generativa
&lt;/h2>&lt;ul>
&lt;li>&amp;ldquo;IA generativa&amp;rdquo; (1) Masayuki Nakao, profesor de la Universidad de Tokio, 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, profesor de posgrado de la Universidad de Tokio, 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, profesor de posgrado de la Universidad de Tokio, 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>Generar código QR con curl</title><link>http://kenji.blog/es/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/es/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 Generar código QR con curl" />&lt;h2 id="generar-código-qr-con-curl">Generar código QR con curl
&lt;/h2>&lt;p>Nota: El método presentado devuelve un código QR generado en el lado del servidor, por lo que es posible que se registren logs. Ten cuidado al convertir información confidencial, como información personal, en un código QR.&lt;/p>
&lt;h3 id="método-1">Método 1
&lt;/h3>&lt;p>Este es el método para generar un código QR en el Símbolo del sistema.
&lt;code>qrenco.de&lt;/code> devuelve la respuesta basada en 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 de salida&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="referencia">Referencia
&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>&lt;code>api.qrserver.com&lt;/code> devuelve una imagen.&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 de salida
&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="referencia-1">Referencia
&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>Atajos de teclado de Microsoft Word</title><link>http://kenji.blog/es/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/es/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 Atajos de teclado de Microsoft Word" />&lt;h2 id="lista-de-atajos-de-teclado">Lista de atajos de teclado
&lt;/h2>&lt;table>
&lt;thead>
&lt;tr>
&lt;th>Atajo de teclado&lt;/th>
&lt;th>Descripción&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>Negrita&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>Ctrl&lt;/code> + &lt;code>I&lt;/code>&lt;/td>
&lt;td>Cursiva&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>Ctrl&lt;/code> + &lt;code>U&lt;/code>&lt;/td>
&lt;td>Subrayado&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>Ctrl&lt;/code> + &lt;code>E&lt;/code>&lt;/td>
&lt;td>Centrar&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>Ctrl&lt;/code> + &lt;code>L&lt;/code>&lt;/td>
&lt;td>Alinear a la izquierda&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>Ctrl&lt;/code> + &lt;code>R&lt;/code>&lt;/td>
&lt;td>Alinear a la derecha&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>Ctrl&lt;/code> + &lt;code>]&lt;/code>&lt;/td>
&lt;td>Aumentar tamaño de fuente&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>Ctrl&lt;/code> + &lt;code>[&lt;/code>&lt;/td>
&lt;td>Disminuir tamaño de fuente&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>Pegar&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>Ctrl&lt;/code> + &lt;code>X&lt;/code>&lt;/td>
&lt;td>Cortar&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>Ctrl&lt;/code> + &lt;code>Z&lt;/code>&lt;/td>
&lt;td>Deshacer&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>Ctrl&lt;/code> + &lt;code>Y&lt;/code>&lt;/td>
&lt;td>Rehacer&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>Ctrl&lt;/code> + &lt;code>A&lt;/code>&lt;/td>
&lt;td>Seleccionar todo&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>Shift&lt;/code> + &lt;code>Teclas de dirección&lt;/code>&lt;/td>
&lt;td>Seleccionar rango&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>Ctrl&lt;/code> + &lt;code>F&lt;/code>&lt;/td>
&lt;td>Buscar texto&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>Ctrl&lt;/code> + &lt;code>H&lt;/code>&lt;/td>
&lt;td>Reemplazar texto&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>Ctrl&lt;/code> + &lt;code>P&lt;/code>&lt;/td>
&lt;td>Vista previa de impresión&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>Ctrl&lt;/code> + &lt;code>S&lt;/code>&lt;/td>
&lt;td>Guardar documento&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>F12&lt;/code>&lt;/td>
&lt;td>Guardar como&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>Ctrl&lt;/code> + &lt;code>Home&lt;/code>&lt;/td>
&lt;td>Ir al principio del documento&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>Ctrl&lt;/code> + &lt;code>End&lt;/code>&lt;/td>
&lt;td>Ir al final del documento&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;h2 id="referencia">Referencia
&lt;/h2>&lt;ul>
&lt;li>&lt;a class="link" href="https://support.microsoft.com/ja-jp/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"
>Atajos de teclado de Word&lt;/a>&lt;/li>
&lt;/ul></description></item><item><title>Extensión de navegador de actualización automática de páginas web (Complemento de Edge)</title><link>http://kenji.blog/es/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/es/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 Extensión de navegador de actualización automática de páginas web (Complemento de Edge)" />&lt;p>Les presento &amp;ldquo;Actualización automática de pestañas&amp;rdquo;, una extensión de navegador de Edge para actualizar páginas web automáticamente.&lt;/p>
&lt;h2 id="instalación-de-la-actualización-automática-de-pestañas">Instalación de la actualización automática de pestañas
&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"
>Actualización automática de pestañas&lt;/a>&lt;/p>
&lt;p>Acceda al sitio web anterior y haga clic en &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>Haga clic en &lt;code>Agregar extensión&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="cómo-usar">Cómo usar
&lt;/h2>&lt;p>Una vez completada la instalación, se agregará un icono en la parte superior derecha de 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 la página web que desea actualizar automáticamente y haga clic en el icono para comenzar la actualización 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>La parte en el recuadro verde es el intervalo de actualización automática. Seleccione el momento para la actualización automática.&lt;/p>
&lt;p>Para detener la actualización automática, haga clic en el icono y luego en &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 accesos directos de Visual Studio</title><link>http://kenji.blog/es/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/</link><pubDate>Sat, 06 Apr 2024 11:27:37 +0900</pubDate><guid>http://kenji.blog/es/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/</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 accesos directos de Visual Studio" />&lt;h1 id="lista-de-accesos-directos-de-visual-studio">Lista de accesos directos de Visual Studio
&lt;/h1>&lt;p>He recopilado una lista de los accesos directos de Visual Studio que uso con frecuencia.
Aprender los atajos de teclado de Visual Studio te permite trabajar en el desarrollo de manera más eficiente. ¡Asegúrate de aprovecharlos!&lt;/p>
&lt;p>※Verificado en Visual Studio 2022.&lt;/p>
&lt;table>
&lt;thead>
&lt;tr>
&lt;th>Atajo de teclado&lt;/th>
&lt;th>Descripción&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>&lt;code>F1&lt;/code>&lt;/td>
&lt;td>Mostrar ayuda para la palabra seleccionada&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>F2&lt;/code>&lt;/td>
&lt;td>Saltar a un marcador&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>Ctrl&lt;/code> + &lt;code>F2&lt;/code>&lt;/td>
&lt;td>Registrar un 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>Eliminar todos los marcadores&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>F5&lt;/code>&lt;/td>
&lt;td>Compilar y ejecutar (con depuración)&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>Ctrl&lt;/code> + &lt;code>F5&lt;/code>&lt;/td>
&lt;td>Compilar y ejecutar (sin depuración)&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>Agregar punto de interrupción en la línea actual&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>Ctrl&lt;/code> + &lt;code>F9&lt;/code>&lt;/td>
&lt;td>Deshabilitar el punto de interrupción en la línea actual&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>Eliminar todos los puntos de interrupción&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>F10&lt;/code>&lt;/td>
&lt;td>Paso a paso por procedimientos&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>F11&lt;/code>&lt;/td>
&lt;td>Paso a paso por instrucciones&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>F12&lt;/code>&lt;/td>
&lt;td>Ir a la definición&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>Ctrl&lt;/code> + &lt;code>D&lt;/code>&lt;/td>
&lt;td>Duplicar la línea actual&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>Ctrl&lt;/code> + &lt;code>X&lt;/code>&lt;/td>
&lt;td>Cortar línea si no hay selección&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>Seleccionar hasta el paréntesis correspondiente&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>Alt&lt;/code> + &lt;code>Flecha arriba/abajo&lt;/code>&lt;/td>
&lt;td>Mover la línea actual hacia arriba/abajo&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>Alt&lt;/code> + &lt;code>Shift&lt;/code> + &lt;code>Teclas de flecha&lt;/code>&lt;/td>
&lt;td>Multicursor / Selección de bloque&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>Ctrl&lt;/code> + &lt;code>Tab&lt;/code>&lt;/td>
&lt;td>Alternar vista de código fuente/ventana&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>Mostrar historial del portapapeles&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>Ctrl&lt;/code> + &lt;code>K&lt;/code> luego &lt;code>Ctrl&lt;/code> + &lt;code>C&lt;/code>&lt;/td>
&lt;td>Comentar la línea actual&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>Ctrl&lt;/code> + &lt;code>K&lt;/code> luego &lt;code>Ctrl&lt;/code> + &lt;code>U&lt;/code>&lt;/td>
&lt;td>Descomentar la línea actual&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>Ctrl&lt;/code> + &lt;code>G&lt;/code>&lt;/td>
&lt;td>Ir a la línea especificada&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>Ctrl&lt;/code> + &lt;code>F&lt;/code>&lt;/td>
&lt;td>Buscar&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>Búsqueda global&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>Ctrl&lt;/code> + &lt;code>H&lt;/code>&lt;/td>
&lt;td>Reemplazar&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>Reemplazo global&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>Ctrl&lt;/code> + &lt;code>Tab&lt;/code>&lt;/td>
&lt;td>Alternar vista de código fuente/ventana&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>Ctrl&lt;/code> + &lt;code>Space&lt;/code>&lt;/td>
&lt;td>Autocompletar palabra&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 la ventana del Explorador de soluciones&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 la ventana de Vista de recursos&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>Ctrl&lt;/code> + &lt;code>0&lt;/code> luego &lt;code>Ctrl&lt;/code> + &lt;code>G&lt;/code>&lt;/td>
&lt;td>Abrir la ventana de confirmación de Git&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;h2 id="referencia">Referencia
&lt;/h2>&lt;ul>
&lt;li>&lt;a class="link" href="https://learn.microsoft.com/es-es/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"
>Atajos de teclado de 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>Añadir el grep del editor Hidemaru al menú contextual del Explorador</title><link>http://kenji.blog/es/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/</link><pubDate>Wed, 03 Apr 2024 00:00:46 +0900</pubDate><guid>http://kenji.blog/es/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/</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 Añadir el grep del editor Hidemaru al menú contextual del Explorador" />&lt;p>Aquí se explica cómo añadir el grep del editor Hidemaru al menú contextual del Explorador en Windows 10/11.&lt;/p>
&lt;p>&lt;strong>※ El siguiente procedimiento modifica el registro, por lo que debe hacerse bajo su propia responsabilidad.&lt;/strong>&lt;/p>
&lt;h2 id="procedimiento">Procedimiento
&lt;/h2>&lt;ol>
&lt;li>Abra el siguiente enlace y guárdelo en cualquier carpeta.&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>Haga doble clic en el archivo &lt;code>秀丸レジストリ登録.reg&lt;/code> para añadirlo al registro.&lt;/li>
&lt;/ol>
&lt;h2 id="referencias">Referencias
&lt;/h2>&lt;ul>
&lt;li>&lt;a class="link" href="https://aimek-developer.blogspot.com/2019/02/grep.html" target="_blank" rel="noopener"
>Ejecutar grep de Hidemaru desde el menú contextual de una carpeta&lt;/a>&lt;/li>
&lt;/ul></description></item><item><title>'¿Qué es la paradoja del cumpleaños?'</title><link>http://kenji.blog/es/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/es/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 '¿Qué es la paradoja del cumpleaños?'" />&lt;h2 id="conoces-la-paradoja-del-cumpleaños">¿Conoces la paradoja del cumpleaños?
&lt;/h2>&lt;p>Voy a contarte algo un poco curioso.
¿Cuántas personas crees que tienen que reunirse para que la probabilidad de que &amp;ldquo;haya personas con el mismo cumpleaños&amp;rdquo; sea alta?&lt;/p>
&lt;p>Por ejemplo, como un año tiene 365 días, si te dicen que &amp;ldquo;si se reúnen 23 personas, la probabilidad de que alguien comparta cumpleaños es de más del 50%&amp;rdquo;&amp;hellip; de alguna manera parece ir en contra de la intuición, ¿verdad?&lt;/p>
&lt;p>Pero esto, &lt;strong>realmente es más del 50%.&lt;/strong>&lt;/p>
&lt;hr>
&lt;h2 id="por-qué-ocurre-esto">¿Por qué ocurre esto?
&lt;/h2>&lt;p>Este fenómeno se llama la &amp;ldquo;paradoja del cumpleaños&amp;rdquo;.
El nombre incluye &amp;ldquo;paradoja&amp;rdquo;, pero tiene una razón matemática sólida.&lt;/p>
&lt;p>Si el número de personas es &amp;ldquo;n&amp;rdquo;, &lt;strong>la probabilidad de que nadie comparta cumpleaños&lt;/strong> se puede calcular con la siguiente 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(nadie comparte) = 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>Al restar esto de 1, se obtiene &amp;ldquo;la probabilidad de que alguien comparta cumpleaños&amp;rdquo;.&lt;/p>
&lt;hr>
&lt;h2 id="al-mirar-los-resultados">Al mirar los resultados&amp;hellip;
&lt;/h2>&lt;table>
&lt;thead>
&lt;tr>
&lt;th>Número de personas&lt;/th>
&lt;th>Probabilidad de que haya personas con el mismo cumpleaños&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>10 personas&lt;/td>
&lt;td>Aprox. 11.7%&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>20 personas&lt;/td>
&lt;td>Aprox. 41.1%&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>23 personas&lt;/td>
&lt;td>&lt;strong>Aprox. 50.7% (¡Atención aquí!)&lt;/strong>&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>30 personas&lt;/td>
&lt;td>Aprox. 70.6%&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>70 personas&lt;/td>
&lt;td>&lt;strong>¡Sorprendentemente aprox. 99.9%!&lt;/strong>&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;p>Es decir, con solo &lt;strong>23 personas&lt;/strong>, hay más de la mitad de probabilidad de que alguien comparta cumpleaños.
Parece bastante aplicable a una clase en la escuela o a una reunión en el trabajo.&lt;/p>
&lt;hr>
&lt;h2 id="resumen-la-brecha-entre-la-intuición-y-las-matemáticas-es-interesante">Resumen: La brecha entre la intuición y las matemáticas es interesante
&lt;/h2>&lt;p>La &amp;ldquo;paradoja del cumpleaños&amp;rdquo; es un ejemplo interesante de cómo nuestra intuición y la probabilidad matemática real difieren.
¡Saber este tipo de cosas puede ser divertido para una charla casual o un juego de preguntas!&lt;/p>
&lt;hr>
&lt;h2 id="enlaces-de-referencia">Enlaces de referencia
&lt;/h2>&lt;ul>
&lt;li>&lt;a class="link" href="https://es.wikipedia.org/wiki/Paradoja_del_cumplea%C3%B1os" target="_blank" rel="noopener"
>Paradoja del cumpleaños (Wikipedia)&lt;/a>&lt;/li>
&lt;/ul></description></item><item><title>Cómo usar Snipping Tool</title><link>http://kenji.blog/es/p/snipping-tool%E3%81%AE%E4%BD%BF%E3%81%84%E6%96%B9/</link><pubDate>Mon, 01 Apr 2024 23:19:45 +0900</pubDate><guid>http://kenji.blog/es/p/snipping-tool%E3%81%AE%E4%BD%BF%E3%81%84%E6%96%B9/</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 Cómo usar Snipping Tool" />&lt;h2 id="qué-es-snipping-tool">¿Qué es Snipping Tool?
&lt;/h2>&lt;p>Snipping Tool es una herramienta de captura de pantalla incluida de forma estándar en Windows. Puede recortar y guardar una parte de la pantalla, capturar la pantalla completa o grabarla.&lt;/p>
&lt;h2 id="cómo-iniciar-snipping-tool">Cómo iniciar Snipping Tool
&lt;/h2>&lt;p>Se puede iniciar principalmente de las 3 siguientes maneras:&lt;/p>
&lt;ul>
&lt;li>Presione la tecla &lt;code>Win&lt;/code>, escriba &lt;code>Snipping Tool&lt;/code> y presione &lt;code>Enter&lt;/code>.&lt;/li>
&lt;li>Presione las teclas &lt;code>Win&lt;/code> + &lt;code>Shift&lt;/code> + &lt;code>S&lt;/code>.&lt;/li>
&lt;li>Presione las teclas &lt;code>Win&lt;/code> + &lt;code>R&lt;/code>, escriba &lt;code>snippingtool&lt;/code> y presione &lt;code>Enter&lt;/code>.&lt;/li>
&lt;/ul>
&lt;h2 id="cómo-usar-snipping-tool">Cómo usar Snipping Tool
&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="el-método-para-guardar-una-imagen-capturada-es-el-siguiente">El método para guardar una imagen capturada es el siguiente:
&lt;/h3>&lt;ol>
&lt;li>Seleccione el icono de la &lt;code>cámara&lt;/code>.&lt;/li>
&lt;li>Haga clic en el botón &lt;code>Nuevo&lt;/code>.&lt;/li>
&lt;li>Seleccione el área que desea capturar.&lt;/li>
&lt;li>Haga clic en el botón &lt;code>Guardar como&lt;/code>.&lt;/li>
&lt;li>Ingrese el destino y el nombre del archivo para guardar.&lt;/li>
&lt;/ol>
&lt;h3 id="el-método-para-grabar-un-video-capturado-es-el-siguiente">El método para grabar un video capturado es el siguiente:
&lt;/h3>&lt;ol>
&lt;li>Seleccione el icono de &lt;code>video&lt;/code>.&lt;/li>
&lt;li>Haga clic en el botón &lt;code>Nuevo&lt;/code>.&lt;/li>
&lt;li>Seleccione el área que desea capturar.&lt;/li>
&lt;li>Haga clic en el botón &lt;code>Inicio&lt;/code>.&lt;/li>
&lt;li>Grabe la pantalla.&lt;/li>
&lt;li>Haga clic en el botón &lt;code>Detener&lt;/code>.&lt;/li>
&lt;li>Haga clic en el botón &lt;code>Guardar como&lt;/code>.&lt;/li>
&lt;li>Ingrese el destino y el nombre del archivo para guardar.&lt;/li>
&lt;/ol>
&lt;h2 id="referencia">Referencia
&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 Snipping Tool para capturar capturas de pantalla&lt;/a>&lt;/li>
&lt;/ul></description></item><item><title>'Cómo crear un acceso directo para bloquear la computadora'</title><link>http://kenji.blog/es/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/</link><pubDate>Mon, 01 Apr 2024 01:37:49 +0900</pubDate><guid>http://kenji.blog/es/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/</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 'Cómo crear un acceso directo para bloquear la computadora'" />&lt;p>Aquí te mostramos cómo crear un acceso directo para bloquear la computadora.&lt;/p>
&lt;p>Es conveniente porque puedes bloquear la computadora haciendo doble clic en el acceso directo creado en el escritorio u otros lugares.&lt;/p>
&lt;h2 id="cómo-crear">Cómo crear
&lt;/h2>&lt;h4 id="1-haz-clic-derecho-en-el-escritorio-y-selecciona-nuevo--acceso-directo">1. Haz clic derecho en el escritorio y selecciona &lt;code>Nuevo&lt;/code> &amp;gt; &lt;code>Acceso directo&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-aparecerá-la-pantalla-de-creación-del-acceso-directo-ingresa-rundll32exe-user32dlllockworkstation-y-haz-clic-en-siguiente">2. Aparecerá la pantalla de creación del acceso directo, ingresa &lt;code>rundll32.exe user32.dll,LockWorkStation&lt;/code> y haz clic en &lt;code>Siguiente&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-ingresa-el-nombre-del-acceso-directo-bloquear-la-computadora-y-haz-clic-en-finalizar">3. Ingresa el nombre del acceso directo &lt;code>Bloquear la computadora&lt;/code> y haz clic en &lt;code>Finalizar&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-cambiar-el-icono-del-acceso-directo-creado">4. Cambiar el icono del acceso directo creado
&lt;/h4>&lt;p>Haz clic derecho en el acceso directo creado y selecciona &lt;code>Propiedades&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>Haz clic en &lt;code>Cambiar icono&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>Selecciona el icono del cuadrado amarillo y haz clic en &lt;code>Aceptar&lt;/code>, luego haz clic en &lt;code>Aceptar&lt;/code> nuevamente para cerrar las propiedades&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>Eso es todo.&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>Al hacer doble clic en el acceso directo creado, la computadora se bloqueará.&lt;/p>
&lt;p>También puedes bloquear la computadora presionando la &lt;code>tecla Win&lt;/code> + &lt;code>tecla L&lt;/code>.&lt;/p>
&lt;p>※Nota: No se mostrará un cuadro de diálogo de confirmación para bloquear la computadora.&lt;/p></description></item><item><title>El problema de Monty Hall</title><link>http://kenji.blog/es/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/es/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 El problema de Monty Hall" />&lt;h2 id="qué-es-el-problema-de-monty-hall">¿Qué es el problema de Monty Hall?
&lt;/h2>&lt;p>El problema de Monty Hall es uno de los juegos que se realizaban en el programa de televisión estadounidense &amp;ldquo;Let&amp;rsquo;s Make a Deal&amp;rdquo;, y consiste en el siguiente problema:&lt;/p>
&lt;p>Premisa: De tres puertas, una contiene un premio y las otras dos no contienen premio.&lt;/p>
&lt;ol>
&lt;li>El participante elige una de las tres puertas.&lt;/li>
&lt;li>El presentador abre una puerta sin premio de entre las dos puertas que el participante no eligió.&lt;/li>
&lt;li>Se le pregunta al participante si desea cambiar la puerta elegida.&lt;/li>
&lt;/ol>
&lt;p>En este caso, el problema es considerar si es mejor para el participante cambiar de puerta o no cambiarla.&lt;/p>
&lt;h2 id="solución">Solución
&lt;/h2>&lt;p>La solución al problema de Monty Hall es la siguiente:&lt;/p>
&lt;ol>
&lt;li>
&lt;p>Si el participante no cambia la puerta que eligió inicialmente&lt;/p>
&lt;ul>
&lt;li>Probabilidad de ganar: 1/3&lt;/li>
&lt;li>Probabilidad de perder: 2/3&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>
&lt;p>Después de que el presentador abre la puerta sin premio&lt;/p>
&lt;ul>
&lt;li>Si no cambia, la probabilidad de ganar: 1/3 (no cambia respecto a la probabilidad de ganar del punto 1)&lt;/li>
&lt;li>Si cambia, la probabilidad de ganar: 2/3 (la probabilidad contraria a ganar del punto 1)&lt;/li>
&lt;/ul>
&lt;/li>
&lt;/ol>
&lt;p>Por lo tanto, la probabilidad de ganar es mayor si el participante cambia de puerta.&lt;/p>
&lt;h2 id="referencias">Referencias
&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>Cómo instalar el editor de texto micro en Windows</title><link>http://kenji.blog/es/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/</link><pubDate>Sun, 31 Mar 2024 21:50:39 +0900</pubDate><guid>http://kenji.blog/es/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/</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 Cómo instalar el editor de texto micro en Windows" />&lt;h2 id="descargar-micro">Descargar 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 el enlace anterior, haga clic en &lt;code>Show all XX assets&lt;/code> (donde la parte X es un número) y descargue &lt;code>micro-X.X.XX-win64.zip&lt;/code> (donde la parte X es un número).
Extraiga el archivo zip y coloque los archivos en cualquier carpeta que desee.&lt;/p>
&lt;h2 id="configurar-variables-de-entorno">Configurar variables de entorno
&lt;/h2>&lt;p>Para usar &lt;code>micro.exe&lt;/code> desde el símbolo del sistema, es necesario configurar las variables de entorno.&lt;/p>
&lt;ol>
&lt;li>Presione la &lt;code>Tecla Win&lt;/code> + &lt;code>Tecla R&lt;/code>, escriba &lt;code>sysdm.cpl&lt;/code> y presione la &lt;code>Tecla Enter&lt;/code>.&lt;/li>
&lt;li>Haga clic en &lt;code>Configuración avanzada del sistema&lt;/code> en &lt;code>Propiedades del sistema&lt;/code>.&lt;/li>
&lt;li>Haga clic en &lt;code>Variables de entorno&lt;/code>.&lt;/li>
&lt;li>Seleccione &lt;code>Path&lt;/code> en &lt;code>Variables del sistema&lt;/code> y haga clic en &lt;code>Editar&lt;/code>.&lt;/li>
&lt;li>Haga clic en &lt;code>Nuevo&lt;/code> y agregue la ruta de la carpeta que contiene &lt;code>micro.exe&lt;/code>.&lt;/li>
&lt;li>Haga clic en &lt;code>Aceptar&lt;/code> para cerrar todos los cuadros de diálogo.&lt;/li>
&lt;li>Reinicie el símbolo del sistema y verifique si puede ejecutarlo escribiendo &lt;code>nano&lt;/code>.&lt;/li>
&lt;/ol>
&lt;h2 id="cómo-usar-micro">Cómo usar micro
&lt;/h2>&lt;p>Al escribir &lt;code>micro&lt;/code> en el símbolo del sistema y ejecutarlo, se mostrará la siguiente pantalla.
&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>A continuación se muestran las operaciones principales y los atajos de teclado.&lt;/p>
&lt;table>
&lt;thead>
&lt;tr>
&lt;th>Atajo de teclado&lt;/th>
&lt;th>Operación&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>Ctrl+Q&lt;/td>
&lt;td>Cerrar archivo&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Ctrl+S&lt;/td>
&lt;td>Guardar archivo&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Ctrl+O&lt;/td>
&lt;td>Abrir archivo&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Ctrl+A&lt;/td>
&lt;td>Seleccionar todo&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Ctrl+X&lt;/td>
&lt;td>Cortar selección&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Ctrl+C&lt;/td>
&lt;td>Copiar selección&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Ctrl+V&lt;/td>
&lt;td>Pegar&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Ctrl+Z&lt;/td>
&lt;td>Deshacer&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Ctrl+Y&lt;/td>
&lt;td>Rehacer&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Ctrl+E&lt;/td>
&lt;td>Ejecutar comando del editor&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;h2 id="referencias">Referencias
&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>'Cómo instalar el editor de texto CLI nano en Windows'</title><link>http://kenji.blog/es/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/es/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 'Cómo instalar el editor de texto CLI nano en Windows'" />&lt;h2 id="descargar-nanoexe">Descargar 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>Abre el enlace de arriba, haz clic en &lt;code>Download&lt;/code> y descarga &lt;code>GNU-Nano_Win32(static).zip&lt;/code>.
Descomprime el archivo zip y coloca &lt;code>nano.exe&lt;/code> en la carpeta que desees.&lt;/p>
&lt;ul>
&lt;li>La entrada en japonés no es compatible. (A partir del 31/03/2024)&lt;/li>
&lt;/ul>
&lt;h2 id="configurar-variables-de-entorno">Configurar variables de entorno
&lt;/h2>&lt;p>Para usar &lt;code>nano.exe&lt;/code> desde el símbolo del sistema, necesitas configurar las variables de entorno.&lt;/p>
&lt;ol>
&lt;li>Presiona la &lt;code>tecla Win&lt;/code> + &lt;code>tecla R&lt;/code>, escribe &lt;code>sysdm.cpl&lt;/code> y presiona la &lt;code>tecla Enter&lt;/code>.&lt;/li>
&lt;li>Haz clic en &lt;code>Propiedades del sistema&lt;/code> en &lt;code>Propiedades del sistema&lt;/code>.&lt;/li>
&lt;li>Haz clic en &lt;code>Variables de entorno&lt;/code>.&lt;/li>
&lt;li>Selecciona &lt;code>Path&lt;/code> en &lt;code>Variables del sistema&lt;/code> y haz clic en &lt;code>Editar&lt;/code>.&lt;/li>
&lt;li>Haz clic en &lt;code>Nuevo&lt;/code> y agrega la ruta de &lt;code>nano.exe&lt;/code>.&lt;/li>
&lt;li>Haz clic en &lt;code>Aceptar&lt;/code> para cerrar todos los cuadros de diálogo.&lt;/li>
&lt;li>Reinicia el símbolo del sistema y verifica si puedes ejecutarlo escribiendo &lt;code>nano&lt;/code>.&lt;/li>
&lt;/ol>
&lt;h2 id="cómo-usar-nano">Cómo usar nano
&lt;/h2>&lt;p>Cuando escribes &lt;code>nano&lt;/code> y lo ejecutas, se muestra la siguiente pantalla.&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>Una descripción de los accesos directos se muestra en la parte inferior de la pantalla.&lt;/p>
&lt;p>El significado de los símbolos es el siguiente:&lt;/p>
&lt;ul>
&lt;li>&lt;code>^&lt;/code> representa la tecla &lt;code>Ctrl&lt;/code>.&lt;/li>
&lt;li>&lt;code>M-&lt;/code> representa la tecla &lt;code>Alt&lt;/code>.&lt;/li>
&lt;/ul>
&lt;p>Para guardar y cerrar, presiona &lt;code>Ctrl&lt;/code> + &lt;code>S&lt;/code> y luego &lt;code>Ctrl&lt;/code> + &lt;code>X&lt;/code>.&lt;/p>
&lt;h2 id="referencias">Referencias
&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>Qué hacer cuando aparece ''Temporary failure resolving~'' en WSL</title><link>http://kenji.blog/es/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/es/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 Qué hacer cuando aparece ''Temporary failure resolving~'' en WSL" />&lt;h1 id="qué-hacer-cuando-aparece-temporary-failure-resolving-en-wsl">Qué hacer cuando aparece &amp;ldquo;Temporary failure resolving~&amp;rdquo; en 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>Cuando aparece el error anterior en WSL, es posible que la configuración del servidor DNS sea incorrecta.
En mi entorno, se solucionó con los siguientes pasos.&lt;/p>
&lt;ol>
&lt;li>Inicie WSL.&lt;/li>
&lt;li>Ejecute &lt;code>sudo nano /etc/resolv.conf&lt;/code>.&lt;/li>
&lt;li>Cambie la línea de &lt;code>nameserver&lt;/code> de la siguiente manera.&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>Guarde con &lt;code>Ctrl&lt;/code> + &lt;code>S&lt;/code> y salga con &lt;code>Ctrl&lt;/code> + &lt;code>X&lt;/code>.&lt;/li>
&lt;li>Ejecute &lt;code>sudo apt update&lt;/code>.&lt;/li>
&lt;li>Si no se muestra el error, el problema está resuelto.&lt;/li>
&lt;/ol>
&lt;h2 id="si-los-pasos-anteriores-no-lo-solucionan">Si los pasos anteriores no lo solucionan
&lt;/h2>&lt;p>Parece que hay casos donde los pasos anteriores no lo solucionan. Consulte el siguiente artículo.&lt;/p>
&lt;ul>
&lt;li>&lt;a class="link" href="https://qiita.com/ryosukeYamazaki/items/c04ec3ff78aac6eb8d26" target="_blank" rel="noopener"
>Cómo solucionar &amp;lsquo;Temporary failure resolving ~&amp;rsquo; al ejecutar apt update en WSL&lt;/a>&lt;/li>
&lt;/ul></description></item><item><title>Cómo cerrar y reiniciar el Explorador de archivos</title><link>http://kenji.blog/es/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/es/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 Cómo cerrar y reiniciar el Explorador de archivos" />&lt;h2 id="cómo-cerrar-desde-el-clic-derecho-en-la-barra-de-tareas">Cómo cerrar desde el clic derecho en la barra de tareas
&lt;/h2>&lt;p>Este es el método para Windows 10. Parece que el menú no se muestra en Windows 11.
Mantenga presionado &lt;code>Shift&lt;/code> y &lt;code>Ctrl&lt;/code> mientras hace clic derecho en la barra de tareas, y &lt;code>Cerrar el Explorador&lt;/code> aparecerá en el menú.&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="cómo-cerrar-desde-el-administrador-de-tareas">Cómo cerrar desde el Administrador de tareas
&lt;/h2>&lt;ol>
&lt;li>Presione &lt;code>Ctrl&lt;/code> + &lt;code>Shift&lt;/code> + &lt;code>Esc&lt;/code> para abrir el Administrador de tareas.&lt;/li>
&lt;li>Seleccione &lt;code>Detalles&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>Seleccione &lt;code>explorer.exe&lt;/code>, presione la tecla &lt;code>Suprimir&lt;/code> (Delete) y, cuando se le pregunte &lt;code>¿Desea finalizar explorer.exe?&lt;/code>, seleccione &lt;code>Finalizar proceso&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="cómo-cerrar-desde-el-símbolo-del-sistema">Cómo cerrar desde el Símbolo del sistema
&lt;/h2>&lt;ol>
&lt;li>Presione &lt;code>Win&lt;/code> + &lt;code>R&lt;/code>, escriba &lt;code>cmd&lt;/code> y presione &lt;code>Enter&lt;/code>.&lt;/li>
&lt;li>Escriba &lt;code>taskkill /f /im explorer.exe&lt;/code> y presione &lt;code>Enter&lt;/code>.&lt;/li>
&lt;/ol>
&lt;h2 id="cómo-iniciar-el-explorador-desde-el-administrador-de-tareas">Cómo iniciar el Explorador desde el Administrador de tareas
&lt;/h2>&lt;ol>
&lt;li>Presione &lt;code>Ctrl&lt;/code> + &lt;code>Shift&lt;/code> + &lt;code>Esc&lt;/code> para abrir el Administrador de tareas.&lt;/li>
&lt;li>En el menú Archivo, seleccione &lt;code>Ejecutar nueva tarea&lt;/code>.&lt;/li>
&lt;li>Escriba &lt;code>explorer.exe&lt;/code> y presione &lt;code>Enter&lt;/code>.&lt;/li>
&lt;/ol></description></item><item><title>Cómo restaurar el menú contextual clásico en Windows 11</title><link>http://kenji.blog/es/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/</link><pubDate>Sat, 30 Mar 2024 13:13:36 +0900</pubDate><guid>http://kenji.blog/es/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/</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 Cómo restaurar el menú contextual clásico en Windows 11" />&lt;h1 id="cómo-restaurar-el-menú-contextual-clásico-en-windows-11">Cómo restaurar el menú contextual clásico en Windows 11
&lt;/h1>&lt;p>Aquí se explica cómo restaurar el menú contextual clásico en Windows 11.&lt;/p>
&lt;ol>
&lt;li>Abre el Editor del Registro.&lt;/li>
&lt;/ol>
&lt;p>Presiona la tecla &lt;code>Win&lt;/code> + &lt;code>R&lt;/code>, escribe &lt;code>regedit&lt;/code> y presiona la tecla &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>Navega a &lt;code>HKEY_CURRENT_USER\Software\Classes\CLSID\{86ca1aa0-34aa-4e8b-a509-50c905bae2a2}&lt;/code>. Si esta clave no existe, créala.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Navega a &lt;code>HKEY_CURRENT_USER\Software\Classes\CLSID\{86ca1aa0-34aa-4e8b-a509-50c905bae2a2}\InprocServer32&lt;/code>. Si esta clave no existe, créala.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Asegúrate de que el valor &lt;code>(Predeterminado)&lt;/code> de &lt;code>InprocServer32&lt;/code> esté vacío.&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>Reinicia tu computadora.&lt;/li>
&lt;li>Comprueba que el menú contextual ha vuelto a la versión clásica.&lt;/li>
&lt;/ol></description></item><item><title>Colección de fuentes para usar en programación</title><link>http://kenji.blog/es/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/</link><pubDate>Sat, 30 Mar 2024 02:21:31 +0900</pubDate><guid>http://kenji.blog/es/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/</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 Colección de fuentes para usar en programación" />&lt;h2 id="jetbrains-mono">JetBrains Mono
&lt;/h2>&lt;p>Es una fuente de programación de código abierto proporcionada por JetBrains.&lt;/p>
&lt;p>Descarga: &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) es una fuente de programación que sintetiza la fuente en inglés para programación Hack, y la fuente derivada Genjyuu Gothic de Source Han Sans (Gen no Kaku Gothic).&lt;/p>
&lt;p>Descarga: &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> es una fuente hermana de &lt;code>Ricty&lt;/code>, y es una fuente sintetizada a partir de &lt;code>Inconsolata&lt;/code> y &lt;code>Circle M+ 1m&lt;/code> usando el script generador de &lt;code>Ricty&lt;/code>, en lugar de &lt;code>Inconsolata&lt;/code> y &lt;code>Migu 1M&lt;/code>. Como no incluye los glifos de IPA Gothic, el número de glifos de kanji utilizables es menor, pero a cambio, puede ser distribuida bajo la &lt;code>SIL Open Font License&lt;/code>.&lt;/p>
&lt;p>Descarga: &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>Es una fuente de programación que usa &lt;code>Hack&lt;/code> + &lt;code>DejaVu Sans Mono&lt;/code> para caracteres alfanuméricos y símbolos.
Y &lt;code>Rounded Mgen+&lt;/code> para los demás caracteres.&lt;/p>
&lt;p>Descarga: &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>Referencia:&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>Es una fuente sintetizada de M+ e IPA.&lt;/p>
&lt;p>Descarga: &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>Es una fuente que permite usar la fuente estándar de Mac OS &lt;code>Osaka&lt;/code> en Windows.&lt;/p>
&lt;p>Descarga: &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>Es una fuente de programación que combina la fuente japonesa de código abierto &lt;code>IBM Plex Sans JP&lt;/code> lanzada por IBM y &lt;code>IBM Plex Mono&lt;/code> de la serie Plex de IBM.&lt;/p>
&lt;p>Descarga: &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>Cómo iniciar el editor Hidemaru con el comando ''hide''</title><link>http://kenji.blog/es/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/</link><pubDate>Fri, 29 Mar 2024 23:45:37 +0900</pubDate><guid>http://kenji.blog/es/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/</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 Cómo iniciar el editor Hidemaru con el comando ''hide''" />&lt;h2 id="te-mostraré-cómo-iniciar-el-editor-hidemaru-con-el-comando-hide">Te mostraré cómo iniciar el editor Hidemaru con el comando &lt;code>hide&lt;/code>.
&lt;/h2>&lt;p>Nota: Se ha comprobado que este método funciona en &lt;code>Windows 10/11&lt;/code>.&lt;/p>
&lt;ol>
&lt;li>Abre el Editor del Registro.&lt;/li>
&lt;li>Ve a &lt;code>HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths&lt;/code>.&lt;/li>
&lt;li>Crea una clave llamada &lt;code>hide.exe&lt;/code> en &lt;code>App Paths&lt;/code>. *El nombre antes de &lt;code>.exe&lt;/code> en el nombre de esta clave será el nombre del comando.&lt;/li>
&lt;li>Establece la ruta al archivo ejecutable del editor Hidemaru en el valor &lt;code>(Predeterminado)&lt;/code> de la clave &lt;code>hide.exe&lt;/code>. En mi entorno era &lt;code>&amp;quot;C:\Program Files (x86)\Hidemaru\Hidemaru.exe&amp;quot;&lt;/code>.&lt;/li>
&lt;li>Crea un valor de cadena llamado &lt;code>Path&lt;/code> en la clave &lt;code>hide.exe&lt;/code>.&lt;/li>
&lt;li>Establece la ruta a la carpeta donde se encuentra el archivo ejecutable del editor Hidemaru en la información del valor de &lt;code>Path&lt;/code>. En mi entorno era &lt;code>&amp;quot;C:\Program Files (x86)\Hidemaru&amp;quot;&lt;/code>.&lt;/li>
&lt;li>Ahora podrás iniciar el editor Hidemaru con el comando &lt;code>hide&lt;/code> en el cuadro de diálogo &lt;em>Ejecutar&lt;/em> (que se muestra presionando la tecla &lt;code>Win&lt;/code> + &lt;code>R&lt;/code>). Además, en el símbolo del sistema puedes iniciar el editor Hidemaru con el 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>Si guardas el contenido anterior en un archivo &lt;code>.reg&lt;/code> y lo ejecutas, la configuración se agregará al 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 no resueltos en matemáticas'</title><link>http://kenji.blog/es/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/</link><pubDate>Sat, 02 Mar 2024 22:57:36 +0900</pubDate><guid>http://kenji.blog/es/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/</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 no resueltos en matemáticas'" />&lt;h1 id="problemas-no-resueltos-en-matemáticas">Problemas no resueltos en matemáticas
&lt;/h1>&lt;p>Explicaremos algunos problemas no resueltos en matemáticas. Aunque los problemas en sí mismos son simples, todavía hay muchos que no han sido demostrados.&lt;/p>
&lt;h2 id="hay-infinitos-números-perfectos">¿Hay infinitos números perfectos?
&lt;/h2>&lt;p>Un número perfecto es un número natural en el que la suma de sus divisores positivos (excluyéndose a sí mismo) es igual al propio número.
Por ejemplo,&lt;/p>
&lt;ul>
&lt;li>Los divisores de 6 son 1, 2, 3, y como 1+2+3=6, es un número perfecto.&lt;/li>
&lt;li>Los divisores de 28 son 1, 2, 4, 7, 14, y como 1+2+4+7+14=28, es un número perfecto.&lt;/li>
&lt;/ul>
&lt;p>Actualmente solo se han descubierto 51, y aunque se conjetura que hay infinitos, todavía no se ha demostrado.&lt;/p>
&lt;h2 id="conjetura-de-goldbach">Conjetura de Goldbach
&lt;/h2>&lt;p>La conjetura de Goldbach sugiere que todo número par mayor que 2 puede expresarse como la suma de dos números primos.
(Aquí, un número primo es un número natural que no tiene más divisores que 1 y él mismo).&lt;/p>
&lt;p>Por ejemplo,&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>Aunque el problema en sí es muy simple, todavía no ha sido demostrado.&lt;/p>
&lt;h2 id="hipótesis-de-riemann">Hipótesis de Riemann
&lt;/h2>&lt;p>Es la conjetura de que los ceros de la función zeta de Riemann se limitan a números pares negativos y a números complejos cuya parte real es 1/2.&lt;/p>
&lt;p>La función zeta de Riemann es una función $\zeta$ definida como:&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>donde $s$ es un número complejo y $n$ es un número natural.&lt;/p></description></item><item><title>'Colección de varios diálogos de información de versión'</title><link>http://kenji.blog/es/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/es/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 'Colección de varios diálogos de información de versión'" />&lt;h1 id="colección-de-varios-diálogos-de-información-de-versión">Colección de varios diálogos de información de versión
&lt;/h1>&lt;h2 id="windows-11">Windows 11
&lt;/h2>&lt;p>Primero, la información de versión de Windows 11 que estoy usando ahora.
&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 es el entorno donde escribo 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 también es un editor que uso a menudo. Es sorprendentemente simple.
&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 es el entorno de desarrollo que uso con 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 es la versión de Windows de LINE.
&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 es un software de edición de imágenes.
&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 es un 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 es Google Chrome. Después de la aparición de Edge, ya no lo uso mucho.
&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 es Firefox. Últimamente no lo uso mucho.
&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 es Microsoft Edge. Últimamente uso este más a menudo.
&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 es OBS Studio. Últimamente no lo uso mucho.
&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 es TradingView. Últimamente lo uso para ver el gráfico del dólar-yen.
&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 es Spy++. Es una herramienta incluida en el SDK de 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_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 es dependency walker. Es una herramienta incluida en el SDK de 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_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 es resource hacker. Es una herramienta para editar y obtener recursos de archivos ejecutables.
&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 es 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 es bandicam. Es una herramienta de captura de video.
&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 es winmerge. Es una herramienta para ver diferencias entre archivos.
&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 es iTunes. Últimamente no lo uso mucho.
&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 es Hidemaru Editor. Es un 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 es 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 es 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 es 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 es NotePad++. Es un 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 es MIFES. Últimamente no lo uso mucho.
&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>'Herramienta de grabación de pantalla en GIF animado'</title><link>http://kenji.blog/es/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/</link><pubDate>Thu, 08 Feb 2024 01:23:01 +0900</pubDate><guid>http://kenji.blog/es/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/</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 'Herramienta de grabación de pantalla en GIF animado'" />&lt;h1 id="herramienta-de-grabación-de-pantalla-en-gif-animado">Herramienta de grabación de pantalla en GIF animado
&lt;/h1>&lt;p>He creado una herramienta para grabar la pantalla y convertirla en un GIF animado.
Con esta herramienta, puedes grabar operaciones en pantalla y compartirlas mediante herramientas de comunicación como Microsoft Teams.&lt;/p>
&lt;h2 id="cómo-usar">Cómo usar
&lt;/h2>&lt;ol>
&lt;li>Inicia la herramienta&lt;/li>
&lt;li>Especifica el área a grabar. Si no se especifica, se grabará toda la pantalla.&lt;/li>
&lt;li>Presiona el botón de grabar&lt;/li>
&lt;li>Presiona el botón de detener grabación&lt;/li>
&lt;li>El GIF animado se guardará en la misma ubicación que el archivo ejecutable.&lt;/li>
&lt;/ol>
&lt;h2 id="descargar">Descargar
&lt;/h2>&lt;p>&lt;a class="link" href="https://github.com/kenjinote/GifScreenRecorder/releases" target="_blank" rel="noopener"
>Descargar&lt;/a>&lt;/p>
&lt;p>Abre el enlace anterior y haz clic en el enlace de &lt;code>GIFScreenRecorder.exe&lt;/code> para descargar el archivo ejecutable.&lt;/p>
&lt;h2 id="código-fuente">Código fuente
&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>'Estudio PMP'</title><link>http://kenji.blog/es/p/pmp%E5%8B%89%E5%BC%B7/</link><pubDate>Sun, 04 Feb 2024 18:41:31 +0900</pubDate><guid>http://kenji.blog/es/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 'Estudio PMP'" />&lt;h1 id="resumen-de-estudio-para-el-examen-pmp">Resumen de estudio para el examen PMP
&lt;/h1>&lt;p>Resumen de estudio para el examen PMP.&lt;/p>
&lt;h2 id="descripción-general">Descripción general
&lt;/h2>&lt;p>PMP es una certificación en gestión de proyectos. Es una certificación basada en una guía llamada PMBOK (7ma edición más reciente).
El examen PMP consta de 180 preguntas a resolver en 230 minutos, pero como 5 preguntas son de prueba (dummy), se aprueba respondiendo correctamente 106 o más de 175 preguntas.
Las respuestas son de opción múltiple, en su mayoría de 4 opciones, pero algunas tienen 5 opciones o son de selección múltiple.&lt;/p>
&lt;h2 id="liderazgo-de-servicio-servant-leadership">Liderazgo de servicio (Servant Leadership)
&lt;/h2>&lt;p>Un estilo de liderazgo que apoya desde abajo en lugar de dar órdenes desde arriba.&lt;/p>
&lt;h3 id="10-principios-características-del-liderazgo-de-servicio">10 principios (características) del Liderazgo de servicio
&lt;/h3>&lt;ol>
&lt;li>Escucha activa&lt;/li>
&lt;li>Empatía&lt;/li>
&lt;li>Sanación&lt;/li>
&lt;li>Conciencia&lt;/li>
&lt;li>Persuasión&lt;/li>
&lt;li>Conceptualización&lt;/li>
&lt;li>Previsión&lt;/li>
&lt;li>Administración&lt;/li>
&lt;li>Compromiso con el crecimiento de las personas&lt;/li>
&lt;li>Construcción de comunidad&lt;/li>
&lt;/ol>
&lt;h2 id="manifiesto-ágil-4-valores">Manifiesto Ágil: 4 Valores
&lt;/h2>&lt;p>Estamos descubriendo formas mejores de desarrollar
software tanto por nuestra propia experiencia como
ayudando a terceros. A través de este trabajo hemos
aprendido a valorar:&lt;/p>
&lt;ol>
&lt;li>Individuos e interacciones sobre procesos y herramientas&lt;/li>
&lt;li>Software funcionando sobre documentación extensiva&lt;/li>
&lt;li>Colaboración con el cliente sobre negociación contractual&lt;/li>
&lt;li>Respuesta ante el cambio sobre seguir un plan&lt;/li>
&lt;/ol>
&lt;p>Esto es, aunque valoramos los elementos de la derecha,
valoramos más los de la izquierda.&lt;/p>
&lt;p>&lt;a class="link" href="https://agilemanifesto.org/iso/es/manifesto.html" target="_blank" rel="noopener"
>Manifiesto Ágil&lt;/a>&lt;/p>
&lt;h2 id="ágil-12-principios-detrás-del-manifiesto-ágil">Ágil: 12 Principios detrás del Manifiesto Ágil
&lt;/h2>&lt;ol>
&lt;li>Nuestra mayor prioridad es satisfacer al cliente mediante la entrega temprana y continua de software con valor.&lt;/li>
&lt;li>Aceptamos que los requisitos cambien, incluso en etapas tardías del desarrollo. Los procesos Ágiles aprovechan el cambio para proporcionar ventaja competitiva al cliente.&lt;/li>
&lt;li>Entregamos software funcional frecuentemente, entre dos semanas y dos meses, con preferencia al periodo de tiempo más corto posible.&lt;/li>
&lt;li>Los responsables de negocio y los desarrolladores trabajamos juntos de forma cotidiana durante todo el proyecto.&lt;/li>
&lt;li>Los proyectos se desarrollan en torno a individuos motivados. Hay que darles el entorno y el apoyo que necesitan, y confiarles la ejecución del trabajo.&lt;/li>
&lt;li>El método más eficiente y efectivo de comunicar información al equipo de desarrollo y entre sus miembros es la conversación cara a cara.&lt;/li>
&lt;li>El software funcionando es la medida principal de progreso.&lt;/li>
&lt;li>Los procesos Ágiles promueven el desarrollo sostenible. Los promotores, desarrolladores y usuarios debemos ser capaces de mantener un ritmo constante de forma indefinida.&lt;/li>
&lt;li>La atención continua a la excelencia técnica y al buen diseño mejora la Agilidad.&lt;/li>
&lt;li>La simplicidad, o el arte de maximizar la cantidad de trabajo no realizado, es esencial.&lt;/li>
&lt;li>Las mejores arquitecturas, requisitos y diseños emergen de equipos que se auto-organizan.&lt;/li>
&lt;li>A intervalos regulares el equipo reflexiona sobre cómo ser más efectivo para a continuación ajustar y perfeccionar su comportamiento en consecuencia.&lt;/li>
&lt;/ol>
&lt;p>&lt;a class="link" href="https://agilemanifesto.org/iso/es/principles.html" target="_blank" rel="noopener"
>Principios detrás del Manifiesto Ágil&lt;/a>&lt;/p>
&lt;h3 id="terminología">Terminología
&lt;/h3>&lt;ul>
&lt;li>Épica (Resumen general)&lt;/li>
&lt;li>Historia de usuario (Unidad registrada en el backlog del producto, unidad de priorización)&lt;/li>
&lt;li>Tarea (Elemento de trabajo técnico, sujeto a estimación de tiempo)&lt;/li>
&lt;li>Backlog del producto / Elemento del backlog del producto&lt;/li>
&lt;li>Propietario del producto (Product Owner)&lt;/li>
&lt;li>Interesado (Stakeholder)&lt;/li>
&lt;li>Guía de Práctica Ágil (Libro)&lt;/li>
&lt;li>Desarrollo Lean&lt;/li>
&lt;li>Kanban&lt;/li>
&lt;li>Cadena de valor&lt;/li>
&lt;li>AC (Costo Real / Actual Cost)&lt;/li>
&lt;li>EV (Valor Ganado / Earned Value)&lt;/li>
&lt;li>PV (Valor Planificado / Planned Value)&lt;/li>
&lt;li>EVA (Análisis del Valor Ganado / Earned Value Analysis)&lt;/li>
&lt;li>SPI (Índice de Rendimiento del Cronograma / Schedule Performance Index = EV / PV)&lt;/li>
&lt;li>CPI (Índice de Rendimiento del Costo / Cost Performance Index = EV / AC)&lt;/li>
&lt;li>EVM (Gestión del Valor Ganado / Earned Value Method)&lt;/li>
&lt;li>BAC (Presupuesto a la Conclusión)&lt;/li>
&lt;li>ETC (Estimación hasta la Conclusión)&lt;/li>
&lt;li>EAC (Estimación a la Conclusión)&lt;/li>
&lt;li>Organización Funcional&lt;/li>
&lt;li>Organización Matricial&lt;/li>
&lt;li>Organización Orientada a Proyectos&lt;/li>
&lt;li>Liderazgo de servicio&lt;/li>
&lt;li>Modelo de Tuckman (Formación, Conflicto, Normalización, Desempeño, Disolución)&lt;/li>
&lt;li>Acta constitutiva del equipo&lt;/li>
&lt;li>Planning Poker (Sucesión de Fibonacci)&lt;/li>
&lt;li>Retrospectiva (Actividad de revisión)&lt;/li>
&lt;li>Equipo virtual&lt;/li>
&lt;li>Acta constitutiva del proyecto&lt;/li>
&lt;li>Conflicto (6 formas de afrontarlo: Confrontación/Resolución de problemas, Colaboración, Compromiso, Suavización/Adaptación, Forzar, Retirada/Evitar)&lt;/li>
&lt;li>Mapeo del flujo de valor&lt;/li>
&lt;li>Mentoría&lt;/li>
&lt;li>Coaching&lt;/li>
&lt;li>Capacitación&lt;/li>
&lt;li>Teoría X e Y de Douglas McGregor&lt;/li>
&lt;li>Análisis FODA (Fortalezas, Oportunidades, Debilidades, Amenazas)&lt;/li>
&lt;li>Modelo SECI (Socialización, Exteriorización, Combinación, Interiorización)&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 (Volatilidad, Incertidumbre, Complejidad, Ambigüedad)&lt;/li>
&lt;li>Método de Montecarlo&lt;/li>
&lt;li>Análisis de árbol de decisiones&lt;/li>
&lt;li>Valor Monetario Esperado (EMV)&lt;/li>
&lt;li>Net Promoter Score (NPS)&lt;/li>
&lt;li>Análisis de costo-beneficio&lt;/li>
&lt;li>Revisión de Sprint (Sprint Review)&lt;/li>
&lt;li>Gestión de entregas (Release Management)&lt;/li>
&lt;li>SOW (Declaración de Trabajo) &amp;ldquo;Documento que incluye una descripción detallada del alcance, objetivos, entregables, duración y recursos del proyecto&amp;rdquo;&lt;/li>
&lt;li>P-SOW (Declaración de Trabajo de Adquisición)&lt;/li>
&lt;li>RFI (Solicitud de Información)&lt;/li>
&lt;li>RFP (Solicitud de Propuesta)&lt;/li>
&lt;li>Contrato de Precio Fijo (FP)&lt;/li>
&lt;li>Contrato de Tiempo y Materiales (T&amp;amp;M)&lt;/li>
&lt;li>Contrato de Costos Reembolsables (CR)&lt;/li>
&lt;li>Contrato de Precio Fijo con Honorarios por Incentivos (FPIF)&lt;/li>
&lt;li>Corrupción del alcance (Scope creep)&lt;/li>
&lt;li>Modelo de Kano&lt;/li>
&lt;li>Método de distribución de fondos&lt;/li>
&lt;li>Método de 100 puntos&lt;/li>
&lt;li>Método MoSCoW (Must, Should, Could, Won&amp;rsquo;t/Would)&lt;/li>
&lt;li>Matriz de trazabilidad&lt;/li>
&lt;li>Diccionario de la EDT/WBS&lt;/li>
&lt;li>Velocidad (Número de puntos de historia logrados en cada iteración)&lt;/li>
&lt;li>Gráfico de velocidad&lt;/li>
&lt;li>Matriz de evaluación del nivel de participación de los interesados (Desconocedor, Reticente, Neutral, Partidario, Líder)&lt;/li>
&lt;li>Revisión de fase (Phase Gate)&lt;/li>
&lt;li>Radiador de información&lt;/li>
&lt;li>Gráfico de trabajo pendiente (Burndown Chart)&lt;/li>
&lt;li>Gráfico de trabajo realizado (Burnup Chart)&lt;/li>
&lt;li>Diagrama de flujo acumulativo&lt;/li>
&lt;li>QCD (Calidad, Costo, Entrega)&lt;/li>
&lt;li>Modelo en espiral&lt;/li>
&lt;li>Cadena crítica&lt;/li>
&lt;li>Característica (Feature)&lt;/li>
&lt;li>Iteración / Sprint&lt;/li>
&lt;li>Iterativo&lt;/li>
&lt;li>Incremental&lt;/li>
&lt;li>Incremento (Entregable de incremento)&lt;/li>
&lt;li>Resiliencia&lt;/li>
&lt;li>Administración (Stewardship) Comportamiento honesto, confiable y acciones responsables (toma de decisiones)&lt;/li>
&lt;li>Escalamiento&lt;/li>
&lt;li>KPT (Mantener, Problema, Intentar / Keep, Problem, Try)&lt;/li>
&lt;li>RACI (Responsable, Aprobador, Consultado, Informado)&lt;/li>
&lt;li>PMO (Oficina de Dirección de Proyectos) De apoyo, De control, Directiva&lt;/li>
&lt;li>Cadencia&lt;/li>
&lt;li>Adaptación (Tailoring)&lt;/li>
&lt;li>Niveles neurológicos (Entorno, Comportamiento, Capacidades, Creencias/Valores, Identidad)&lt;/li>
&lt;li>Caso de negocio (Documento que registra el propósito, beneficios, riesgos, retorno de inversión, etc. del proyecto)&lt;/li>
&lt;li>Análisis de tendencias (Se realiza mediante un gráfico de control y utiliza técnicas matemáticas para predecir resultados futuros)&lt;/li>
&lt;li>Plan de gestión de calidad (Define la estrategia y enfoque para la calidad de los entregables del proyecto)&lt;/li>
&lt;li>Proceso de gobernanza&lt;/li>
&lt;li>Propietario del producto (Visión del producto, priorización del backlog, lanzamiento del producto)&lt;/li>
&lt;li>Propietario del proyecto (Patrocinador del proyecto)&lt;/li>
&lt;li>Director de proyecto (Gestiona todo el proyecto)&lt;/li>
&lt;li>Líder de proyecto (Dirige en el sitio)&lt;/li>
&lt;li>Miembro del proyecto (Impulsa el proyecto)&lt;/li>
&lt;li>Enfoque híbrido&lt;/li>
&lt;li>Producto Mínimo Viable (MVP)&lt;/li>
&lt;li>Revisión de la iteración&lt;/li>
&lt;li>Taller&lt;/li>
&lt;li>Plan de gestión de beneficios del proyecto (Beneficios objetivo del proyecto, alineación estratégica para lograr beneficios y plazos para materializarlos)&lt;/li>
&lt;li>Indicador Clave de Rendimiento (KPI)&lt;/li>
&lt;li>En el sitio (On-site)&lt;/li>
&lt;li>Estimación análoga&lt;/li>
&lt;li>Estimación por tres valores&lt;/li>
&lt;li>Estimación paramétrica&lt;/li>
&lt;li>Revisión del proyecto&lt;/li>
&lt;li>Enfoque Big Bang&lt;/li>
&lt;li>DSDM (Método de Desarrollo de Sistemas Dinámicos)&lt;/li>
&lt;li>Ley de Brooks&lt;/li>
&lt;li>Enfoque Big Bang (Introducir todo al mismo tiempo)&lt;/li>
&lt;li>Registro de riesgos (Documento utilizado como herramienta de gestión de riesgos para identificar posibles contratiempos en el proyecto)&lt;/li>
&lt;li>Registro de riesgos&lt;/li>
&lt;li>Teoría del liderazgo situacional SL (4 comportamientos según la situación del individuo)&lt;/li>
&lt;li>Competencia&lt;/li>
&lt;li>Compromiso&lt;/li>
&lt;/ul>
&lt;h2 id="referencias">Referencias
&lt;/h2>&lt;ul>
&lt;li>&lt;a class="link" href="https://scrumguides.org/docs/scrumguide/v2020/2020-Scrum-Guide-Spanish.pdf" target="_blank" rel="noopener"
>Guía de 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"
>PMI ECO (Versión en japonés)&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"
>Guía Práctica de Á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 y Conducta Profesional de PMI&lt;/a>&lt;/li>
&lt;/ul>
&lt;h2 id="materiales-de-estudio">Materiales de estudio
&lt;/h2>&lt;ul>
&lt;li>&lt;a class="link" href="https://www.udemy.com/course/ace-the-pmp" target="_blank" rel="noopener"
>¡Apunta a aprobar el examen de certificación PMP® a la primera! Curso estratégico para una preparación eficiente (2021) Compatible con Agile&lt;/a>&lt;/li>
&lt;/ul></description></item><item><title>Desastres en Japón</title><link>http://kenji.blog/es/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/es/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 en Japón" />&lt;h1 id="resumen">Resumen
&lt;/h1>&lt;p>Notas sobre desastres naturales ocurridos en Japón&lt;/p>
&lt;h2 id="1-de-enero-de-2024-terremoto-de-la-península-de-noto">1 de enero de 2024 Terremoto de la 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>'Receta de Nanakusa-gayu'</title><link>http://kenji.blog/es/p/%E4%B8%83%E8%8D%89%E7%B2%A5%E3%81%AE%E3%83%AC%E3%82%B7%E3%83%94/</link><pubDate>Sat, 06 Jan 2024 22:22:00 +0900</pubDate><guid>http://kenji.blog/es/p/%E4%B8%83%E8%8D%89%E7%B2%A5%E3%81%AE%E3%83%AC%E3%82%B7%E3%83%94/</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 'Receta de Nanakusa-gayu'" />&lt;h1 id="siete-hierbas">Siete hierbas
&lt;/h1>&lt;ul>
&lt;li>Seri (perejil japonés)&lt;/li>
&lt;li>Nazuna (bolsa de pastor)&lt;/li>
&lt;li>Gogyō (algodonera)&lt;/li>
&lt;li>Hakobera (pamplina)&lt;/li>
&lt;li>Hotokenoza (lámpsana)&lt;/li>
&lt;li>Suzuna (nabo)&lt;/li>
&lt;li>Suzushiro (rábano)&lt;/li>
&lt;/ul></description></item><item><title>Música japonesa favorita</title><link>http://kenji.blog/es/p/%E5%A5%BD%E3%81%8D%E3%81%AA%E9%82%A6%E6%A5%BD/</link><pubDate>Sat, 06 Jan 2024 04:11:01 +0900</pubDate><guid>http://kenji.blog/es/p/%E5%A5%BD%E3%81%8D%E3%81%AA%E9%82%A6%E6%A5%BD/</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>【Canción curativa japonesa】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úsica occidental favorita</title><link>http://kenji.blog/es/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/es/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úsica occidental favorita" />&lt;h1 id="música-occidental-recomendada">Música occidental recomendada
&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 (Soplando en el viento)
&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>El resplandor de la juventud / I Need To Be In Love [Con traducción al 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 con el símbolo del sistema</title><link>http://kenji.blog/es/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/es/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 con el símbolo del sistema" />&lt;h1 id="instalar-powertoys-con-el-símbolo-del-sistema">Instalar PowerToys con el símbolo del sistema
&lt;/h1>&lt;p>Aquí se muestra cómo instalar PowerToys usando el símbolo del sistema.&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-con-el-símbolo-del-sistema">Desinstalar PowerToys con el símbolo del sistema
&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>'Respetemos a quienes pueden hacer lo que nosotros no podemos'</title><link>http://kenji.blog/es/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/</link><pubDate>Tue, 01 Aug 2023 23:42:31 +0900</pubDate><guid>http://kenji.blog/es/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/</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 'Respetemos a quienes pueden hacer lo que nosotros no podemos'" />&lt;h1 id="mostrar-respeto">Mostrar respeto
&lt;/h1>&lt;p>Respetemos a quienes pueden hacer lo que nosotros no podemos&lt;/p>
&lt;p>En la sociedad, sorprendentemente hay muchas personas que clasifican los trabajos y las posiciones como superiores o inferiores y son incapaces de mostrar respeto.&lt;/p>
&lt;p>Respetemos a las personas que logran hacer trabajos que nosotros no podemos, sin importar qué trabajo sea.&lt;/p>
&lt;p>Quiero tener esto siempre presente.&lt;/p></description></item><item><title>'Splatoon 2'</title><link>http://kenji.blog/es/p/%E3%82%B9%E3%83%97%E3%83%A9%E3%83%88%E3%82%A5%E3%83%BC%E3%83%B32/</link><pubDate>Tue, 01 Aug 2023 00:26:30 +0900</pubDate><guid>http://kenji.blog/es/p/%E3%82%B9%E3%83%97%E3%83%A9%E3%83%88%E3%82%A5%E3%83%BC%E3%83%B32/</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>Probablemente el juego que he jugado durante más tiempo en mi vida es Splatoon 2.
Casi no he jugado al modo historia, pero el emparejamiento para las batallas en línea 4 contra 4 está muy bien hecho y puedes jugar contra personas de un nivel similar al tuyo, por lo que tiene un atractivo del que no te cansas. También es divertido leer los movimientos de los oponentes y aliados para pensar en estrategias para ganar.&lt;/p>
&lt;h1 id="armas">Armas
&lt;/h1>&lt;p>Las armas que uso con más frecuencia son, en orden: &amp;ldquo;Lanzatintas plus B&amp;rdquo;, &amp;ldquo;Lanzatintas novato&amp;rdquo;, &amp;ldquo;Rodillo básico&amp;rdquo; y &amp;ldquo;Rodillo versátil B&amp;rdquo;.
El &amp;ldquo;Lanzatintas novato&amp;rdquo; es un arma para principiantes y la usaba mucho al principio.&lt;/p>
&lt;p>Los puntos de pintado para cada arma son los siguientes:&lt;/p>
&lt;table>
&lt;thead>
&lt;tr>
&lt;th>Arma&lt;/th>
&lt;th>Puntos de pintado&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>Rodillo versátil&lt;/td>
&lt;td>6,636,594p&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Rodillo básico&lt;/td>
&lt;td>6,200,629p&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Lanzatintas novato&lt;/td>
&lt;td>4,211,759p&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Lanzatintas plus B&lt;/td>
&lt;td>744,678p&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Lanzatintas&lt;/td>
&lt;td>301,238p&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;h1 id="sobre-mi-nivel">Sobre mi nivel
&lt;/h1>&lt;p>Siento que voy y vengo entre A+ y S+, y continúa la situación en la que no puedo llegar a la cima de S+, pero siento que disfruto más jugando las partidas que intentando subir de rango.
(Si subes demasiado, los oponentes se vuelven fuertes y la tensión aumenta, por lo que ya no puedes disfrutarlo).&lt;/p>
&lt;h1 id="tiempo-de-juego">Tiempo de juego
&lt;/h1>&lt;p>El tiempo de juego ha superado las 2500 horas.&lt;/p>
&lt;h1 id="metas-futuras">Metas futuras
&lt;/h1>&lt;p>El objetivo es mantener el nivel en el juego y jugar de forma divertida, pero me gustaría alcanzar el máximo en dinero y equipamiento.
Desde el lanzamiento de Splatoon 3, el emparejamiento para las partidas ha tardado más y cada vez hay más casos en los que no es posible emparejar, así que me gustaría seguir jugando mientras rezo para que la cantidad de jugadores no disminuya más.&lt;/p></description></item><item><title>'Acerca del premio Microsoft MVP (2023-2024)'</title><link>http://kenji.blog/es/p/microsoft-mvp%E5%8F%97%E8%B3%9E%E3%81%AB%E3%81%A4%E3%81%84%E3%81%A62023-2024/</link><pubDate>Mon, 31 Jul 2023 19:15:14 +0900</pubDate><guid>http://kenji.blog/es/p/microsoft-mvp%E5%8F%97%E8%B3%9E%E3%81%AB%E3%81%A4%E3%81%84%E3%81%A62023-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 'Acerca del premio Microsoft MVP (2023-2024)'" />&lt;h1 id="acerca-del-premio-microsoft-mvp-2023-2024">Acerca del premio Microsoft MVP (2023-2024)
&lt;/h1>&lt;p>Esta vez, he recibido el premio Microsoft MVP (2023-2024).
Este será mi séptimo año consecutivo recibiendo el premio desde 2017.&lt;/p>
&lt;p>La categoría premiada es &lt;strong>Developer Technologies&lt;/strong>.&lt;/p>
&lt;p>Mirando hacia atrás en mis actividades pasadas, he realizado lo siguiente:&lt;/p>
&lt;ul>
&lt;li>Publicación de código en &lt;a class="link" href="https://github.com/kenjinote" target="_blank" rel="noopener"
>GitHub&lt;/a>&lt;/li>
&lt;li>Difusión de información técnica en mi blog y &lt;a class="link" href="https://twitter.com/kenjinote" target="_blank" rel="noopener"
>redes sociales (como Twitter)&lt;/a>&lt;/li>
&lt;li>Publicaciones en el &lt;a class="link" href="https://social.msdn.microsoft.com/Forums/ja-JP/home" target="_blank" rel="noopener"
>foro MSDN&lt;/a>&lt;/li>
&lt;li>Comentarios sobre productos de Microsoft&lt;/li>
&lt;/ul>
&lt;p>Espero seguir compartiendo información escribiendo mejores artículos en el futuro.&lt;/p>
&lt;p>Muchas gracias por su apoyo.&lt;/p></description></item><item><title>'Historia de las Matemáticas'</title><link>http://kenji.blog/es/p/%E6%95%B0%E5%AD%A6%E3%81%AE%E6%AD%B4%E5%8F%B2/</link><pubDate>Sat, 22 Jul 2023 15:25:10 +0900</pubDate><guid>http://kenji.blog/es/p/%E6%95%B0%E5%AD%A6%E3%81%AE%E6%AD%B4%E5%8F%B2/</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 'Historia de las Matemáticas'" />&lt;h3 id="tres-problemas-clásicos-de-construcción-de-la-antigua-grecia">Tres problemas clásicos de construcción de la antigua Grecia
&lt;/h3>&lt;ol>
&lt;li>Dado un círculo, construir un cuadrado con la misma área (Cuadratura del círculo)&lt;/li>
&lt;li>Dado un ángulo arbitrario, dividirlo en tres partes iguales (Trisección del ángulo)&lt;/li>
&lt;li>Dado un cubo, construir un cubo que tenga el doble de su volumen (Duplicación del cubo)&lt;/li>
&lt;/ol>
&lt;h3 id="espiral-de-arquímedes">Espiral de Arquímedes
&lt;/h3>&lt;p>En un plano, se hace girar una semirrecta OB alrededor de un punto fijo O a una velocidad constante. Si la posición inicial es OA, un punto P parte de O al mismo tiempo que la semirrecta comienza a moverse desde OA, y se mueve a lo largo de OB a una velocidad constante. La curva que traza el punto P es la espiral de Arquímedes.&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>Cisoide de Diocles&lt;/li>
&lt;li>Método de las tangentes de Fermat&lt;/li>
&lt;li>Método de las normales de Descartes&lt;/li>
&lt;/ul>
&lt;h3 id="cronología">Cronología
&lt;/h3>&lt;table>
&lt;thead>
&lt;tr>
&lt;th>Año&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>Los sumerios cuentan con fichas de arcilla como sustituto de monedas&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>c. 3000 a. C.&lt;/td>
&lt;td>Aparecen las matemáticas jeroglíficas en Egipto&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>c. 2800 a. C.&lt;/td>
&lt;td>La civilización del valle del Indo utiliza un sistema de pesos y medidas basado en el sistema decimal&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>c. 2700 a. C.&lt;/td>
&lt;td>Los egipcios comprueban los ángulos con cuerdas y ternas pitagóricas&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>c. 2500 a. C.&lt;/td>
&lt;td>Se descubre el ábaco, una herramienta para calcular&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="referencias">Referencias
&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"
>Historia de las matemáticas&lt;/a>&lt;/li>
&lt;/ul></description></item><item><title>Recomendación del trackball Deft Pro (M-DPT1MRBK)</title><link>http://kenji.blog/es/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/</link><pubDate>Tue, 02 May 2023 23:28:33 +0900</pubDate><guid>http://kenji.blog/es/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/</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 Recomendación del trackball Deft Pro (M-DPT1MRBK)" />&lt;h1 id="acerca-del-trackball-elecom-deft-pro-m-dpt1mrbk">Acerca del trackball Elecom Deft Pro M-DPT1MRBK
&lt;/h1>&lt;p>Ha pasado aproximadamente una semana desde que compré el trackball &amp;ldquo;Deft Pro M-DPT1MRBK&amp;rdquo; de Elecom, así que revisaré mi experiencia al usarlo.&lt;/p>
&lt;p>&lt;strong>Características principales&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>Tiene una gran cantidad de botones (8)&lt;/li>
&lt;li>Se puede conectar de 3 formas: con cable, con receptor inalámbrico y por Bluetooth&lt;/li>
&lt;li>El tamaño de la bola es grande (tamaño mediano, 44 mm de diámetro)&lt;/li>
&lt;li>Precio de compra en Amazon: ¥ 7.012 (a partir del 2 de mayo de 2021)&lt;/li>
&lt;/ul>
&lt;h2 id="puntos-buenos">Puntos buenos
&lt;/h2>&lt;ul>
&lt;li>A diferencia de un mouse, no es necesario mover la muñeca, lo que reduce la tensión en la misma.&lt;/li>
&lt;li>Debido a la gran cantidad de botones, se pueden asignar varias funciones a los botones.
&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"
>
Actualmente están asignados como se muestra arriba. También puedes cambiar la asignación de botones para cada aplicación.
※ La instalación de un software dedicado es necesaria para la asignación de botones.&lt;/li>
&lt;li>Como la bola es grande, es relativamente fácil realizar movimientos finos para un trackball.&lt;/li>
&lt;/ul>
&lt;h2 id="puntos-malos">Puntos malos
&lt;/h2>&lt;ul>
&lt;li>El polvo se acumula alrededor del trackball, por lo que es necesario quitar la bola y limpiarla regularmente (aproximadamente una vez cada pocos días).&lt;/li>
&lt;li>La sensación operativa es diferente a la de un mouse, usando el dedo índice y medio para mover el cursor, y el pulgar para operar la rueda del mouse, por lo que toma tiempo acostumbrarse.&lt;/li>
&lt;li>Como escribí anteriormente, es fácil realizar movimientos finos, pero todavía es difícil mover el cursor píxel por píxel con un trackball.&lt;/li>
&lt;li>No es posible operar la rueda mientras se presiona el botón izquierdo (por ejemplo, cuando se desea acercar/alejar mientras se selecciona un área en Paint).&lt;/li>
&lt;/ul>
&lt;p>En conclusión, aunque creo que es de los más caros entre los trackballs, en general es bastante fácil de operar y creo que ha mejorado la eficiencia de mi trabajo.
Espero que esto sea útil para quienes estén considerando comprarlo.&lt;/p></description></item><item><title>'Ejemplo usando wxWidgets'</title><link>http://kenji.blog/es/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/es/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 'Ejemplo usando wxWidgets'" />&lt;h2 id="qué-es-wxwidgets">¿Qué es wxWidgets?
&lt;/h2>&lt;p>wxWidgets es una biblioteca GUI de C++ que funciona en plataformas como Windows, Mac, Linux, Android, iOS, entre otras.&lt;/p>
&lt;h2 id="instalación-de-wxwidgets">Instalación de wxWidgets
&lt;/h2>&lt;ol>
&lt;li>Abre &lt;a class="link" href="https://www.wxwidgets.org/downloads/" target="_blank" rel="noopener"
>https://www.wxwidgets.org/downloads/&lt;/a> y descarga &lt;code>Windows Installer&lt;/code>.&lt;/li>
&lt;li>Ejecuta &lt;code>wxMSW-3.2.2.1-Setup.exe&lt;/code> para instalar.&lt;/li>
&lt;li>Abre &amp;ldquo;C:\wxWidgets-3.2.2.1\build\msw\wx_vc17.sln&amp;rdquo; desde la carpeta instalada.&lt;/li>
&lt;li>Una vez abierto &lt;code>wx_vc17.sln&lt;/code>, selecciona &lt;code>Compilar&lt;/code> &amp;gt; &lt;code>Compilar por lotes&lt;/code> (Build &amp;gt; Batch Build).&lt;/li>
&lt;li>Haz clic en el botón &lt;code>Seleccionar todo&lt;/code> y luego en el botón Recompilar.&lt;/li>
&lt;li>Cierra Visual Studio una vez que finalice la compilación.&lt;/li>
&lt;/ol>
&lt;h2 id="creación-de-un-proyecto-de-ejemplo">Creación de un proyecto de ejemplo
&lt;/h2>&lt;ol>
&lt;li>Abre Visual Studio.&lt;/li>
&lt;li>Selecciona &lt;code>Archivo&lt;/code> &amp;gt; &lt;code>Nuevo&lt;/code> &amp;gt; &lt;code>Proyecto&lt;/code>.&lt;/li>
&lt;li>Selecciona &lt;code>Aplicación de escritorio de Windows&lt;/code> (pestañas &lt;code>C++&lt;/code>, &lt;code>Windows&lt;/code>, &lt;code>Escritorio&lt;/code>).&lt;/li>
&lt;li>Ingresa &lt;code>wxWidgetsSample&lt;/code> en &lt;code>Nombre del proyecto&lt;/code>.&lt;/li>
&lt;li>Haz clic en &lt;code>Crear&lt;/code>.&lt;/li>
&lt;li>Haz clic derecho en &lt;code>wxWidgetsSample&lt;/code> y selecciona &lt;code>Propiedades&lt;/code>.&lt;/li>
&lt;li>En &lt;code>Propiedades de configuración&lt;/code> &amp;gt; &lt;code>C/C++&lt;/code> &amp;gt; &lt;code>Directorios de inclusión adicionales&lt;/code>, agrega &lt;code>C:\wxWidgets-3.2.2.1\include&lt;/code> y &lt;code>C:\wxWidgets-3.2.2.1\include\msvc&lt;/code>.&lt;/li>
&lt;li>En &lt;code>Propiedades de configuración&lt;/code> &amp;gt; &lt;code>Vinculador&lt;/code> &amp;gt; &lt;code>Directorios de bibliotecas adicionales&lt;/code>, agrega &lt;code>C:\wxWidgets-3.2.2.1\lib\vc_x64_lib&lt;/code>.&lt;/li>
&lt;li>Abre &lt;code>wxWidgetsSample.cpp&lt;/code> y reemplázalo con el siguiente código.&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>Al compilar y ejecutar se abrirá una ventana como la siguiente.&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="referencias">Referencias
&lt;/h2>&lt;p>El proyecto de ejemplo se encuentra a continuación.
&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"
>Sitio 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"
>Juegos creados con C++ y wxWidgets&lt;/a>&lt;/li>
&lt;/ul>
&lt;p>Fin.&lt;/p></description></item><item><title>'Lista de TODO de películas'</title><link>http://kenji.blog/es/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/es/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 TODO de películas'" />&lt;h1 id="películas-que-quiero-ver-marcar-al-verlas">Películas que quiero ver (marcar al verlas)
&lt;/h1>&lt;ul>
&lt;li>&lt;input disabled="" type="checkbox"> Maquia: Una historia de amor inmortal&lt;/li>
&lt;li>&lt;input disabled="" type="checkbox"> La fórmula preferida del profesor&lt;/li>
&lt;li>&lt;input checked="" disabled="" type="checkbox"> Summer Wars&lt;/li>
&lt;li>&lt;input disabled="" type="checkbox"> Talentos ocultos (Hidden Figures)&lt;/li>
&lt;li>&lt;input checked="" disabled="" type="checkbox"> En busca del destino (Good Will Hunting)&lt;/li>
&lt;li>&lt;input checked="" disabled="" type="checkbox"> Una mente brillante (A Beautiful Mind)&lt;/li>
&lt;li>&lt;input disabled="" type="checkbox"> La teoría del todo&lt;/li>
&lt;li>&lt;input disabled="" type="checkbox"> El hombre que conocía el 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"> 21 Blackjack&lt;/li>
&lt;li>&lt;input disabled="" type="checkbox"> I.Q.&lt;/li>
&lt;li>&lt;input disabled="" type="checkbox"> La verdad oculta (Proof)&lt;/li>
&lt;li>&lt;input disabled="" type="checkbox"> 3 Idiots&lt;/li>
&lt;li>&lt;input disabled="" type="checkbox"> Buffalo &amp;lsquo;66&lt;/li>
&lt;li>&lt;input disabled="" type="checkbox"> La naranja mecánica&lt;/li>
&lt;li>&lt;input disabled="" type="checkbox"> Llamaradas (Backdraft)&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"> The Matrix Resurrections&lt;/li>
&lt;li>&lt;input checked="" disabled="" type="checkbox"> Soy leyenda&lt;/li>
&lt;li>&lt;input disabled="" type="checkbox"> El código Da Vinci&lt;/li>
&lt;li>&lt;input checked="" disabled="" type="checkbox"> La red 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"> Gravedad (Gravity)&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: Kimetsu no Yaiba&lt;/li>
&lt;li>&lt;input checked="" disabled="" type="checkbox"> La princesa Mononoke&lt;/li>
&lt;li>&lt;input disabled="" type="checkbox"> Winny&lt;/li>
&lt;li>&lt;input checked="" disabled="" type="checkbox"> El foco cero (Zero Focus)&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"> El tiempo contigo (Weathering with You)&lt;/li>
&lt;li>&lt;input checked="" disabled="" type="checkbox"> Volver al 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>Plantilla de página web genial (html5up)</title><link>http://kenji.blog/es/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/es/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 Plantilla de página web genial (html5up)" />&lt;p>Plantilla de página web genial&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>Dejo esta nota porque pensé que me gustaría usarla.&lt;/p></description></item><item><title>'Cómo generar la hora actual en formato ISO8601 en C++'</title><link>http://kenji.blog/es/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/es/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 'Cómo generar la hora actual en formato ISO8601 en C++'" />&lt;h3 id="requisitos">Requisitos
&lt;/h3>&lt;ul>
&lt;li>Estándar 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>Esta fue la forma de generar la hora actual en formato ISO8601 en C++.&lt;/p>
&lt;h3 id="referencias">Referencias
&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>'Cómo crear un acceso directo para apagar Windows'</title><link>http://kenji.blog/es/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/</link><pubDate>Tue, 11 Apr 2023 17:03:32 +0900</pubDate><guid>http://kenji.blog/es/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/</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 'Cómo crear un acceso directo para apagar Windows'" />&lt;p>Aquí se explica cómo crear un acceso directo para apagar Windows.&lt;/p>
&lt;p>Es útil porque puedes apagar tu computadora simplemente haciendo doble clic en el acceso directo creado en el escritorio u otra ubicación.&lt;/p>
&lt;h2 id="cómo-crearlo">Cómo crearlo
&lt;/h2>&lt;h4 id="1-haz-clic-derecho-en-el-escritorio-y-selecciona-nuevo--acceso-directo">1. Haz clic derecho en el escritorio y selecciona &lt;code>Nuevo&lt;/code> &amp;gt; &lt;code>Acceso directo&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-aparecerá-la-pantalla-de-creación-de-acceso-directo-ingresa-shutdownexe--s--f--t-0-y-haz-clic-en-siguiente">2. Aparecerá la pantalla de creación de acceso directo, ingresa &lt;code>shutdown.exe -s -f -t 0&lt;/code> y haz clic en &lt;code>Siguiente&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-ingresa-el-nombre-del-acceso-directo-apagar-y-haz-clic-en-finalizar">3. Ingresa el nombre del acceso directo &lt;code>Apagar&lt;/code> y haz clic en &lt;code>Finalizar&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-cambiar-el-icono-del-acceso-directo-creado">4. Cambiar el icono del acceso directo creado
&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>Haz clic derecho en el acceso directo creado y selecciona &lt;code>Propiedades&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>Haz clic en &lt;code>Cambiar icono&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>Selecciona el icono cuadrado rojo y haz clic en &lt;code>Aceptar&lt;/code>, luego haz clic en &lt;code>Aceptar&lt;/code> nuevamente para cerrar las propiedades.&lt;/p>
&lt;p>Eso es todo.&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>Al hacer doble clic en el acceso directo creado, Windows se apagará.&lt;/p>
&lt;p>*Nota: No se mostrará un cuadro de diálogo de confirmación de apagado.&lt;/p></description></item><item><title>'Cómo aplicar el efecto mosaico a una parte específica de una imagen en paint.net'</title><link>http://kenji.blog/es/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/es/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 'Cómo aplicar el efecto mosaico a una parte específica de una imagen en paint.net'" />&lt;p>Te mostraremos cómo aplicar un efecto de mosaico a una parte específica de una imagen usando paint.net.&lt;/p>
&lt;p>Al subir imágenes a internet, es posible que desees aplicar un mosaico a áreas específicas de la imagen.
Usando paint.net puedes procesar la imagen rápidamente.&lt;/p>
&lt;h2 id="pasos">Pasos
&lt;/h2>&lt;h4 id="1-abre-la-imagen-a-la-que-deseas-aplicar-el-mosaico-en-paintnet">1. Abre la imagen a la que deseas aplicar el mosaico en paint.net
&lt;/h4>&lt;h4 id="2-usa-la-herramienta-de-selección-para-seleccionar-la-parte-a-la-que-deseas-aplicar-el-mosaico-es-posible-la-selección-múltiple">2. Usa la herramienta de selección para seleccionar la parte a la que deseas aplicar el mosaico (es posible la selección múltiple)
&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-selecciona-menú--efectos--distorsión--mosaico">3. Selecciona Menú &amp;gt; Efectos &amp;gt; Distorsión &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>Configura la aspereza del mosaico con el tamaño de celda. Cuanto mayor sea el valor, mayor será la ocultación.&lt;/li>
&lt;li>[Reducción] Selecciona &lt;code>Método bilineal multimuestreo&lt;/code>&lt;/li>
&lt;li>[Ampliación] Selecciona &lt;code>Método del vecino más cercano&lt;/code>&lt;/li>
&lt;/ul>
&lt;p>Cierra el cuadro de diálogo con &lt;code>OK&lt;/code>.&lt;/p>
&lt;h4 id="4-la-imagen-será-procesada-con-el-efecto-de-mosaico-procede-a-guardarla">4. La imagen será procesada con el efecto de mosaico, procede a guardarla.
&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>Eso es todo.&lt;/p></description></item><item><title>Cómo añadir un borde a una imagen usando paint.net</title><link>http://kenji.blog/es/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/</link><pubDate>Tue, 11 Apr 2023 14:31:59 +0900</pubDate><guid>http://kenji.blog/es/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/</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 Cómo añadir un borde a una imagen usando paint.net" />&lt;p>Te mostraré cómo añadir un borde a una imagen usando paint.net.&lt;/p>
&lt;h2 id="pasos">Pasos
&lt;/h2>&lt;h4 id="1-abre-la-imagen-a-la-que-quieres-añadir-un-borde-en-paintnet">1. Abre la imagen a la que quieres añadir un borde en paint.net.
&lt;/h4>&lt;h4 id="2-configura-el-color-secundario-este-será-el-color-del-borde">2. Configura el color secundario (este será el color del borde).
&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>Si no se muestra la paleta de colores, presiona la tecla &lt;code>F8&lt;/code> en tu teclado.&lt;/p>
&lt;p>Si deseas configurarlo en negro, haz clic en &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-selecciona-el-menú--imagen--cambiar-tamaño-del-lienzo">3. Selecciona el menú &amp;gt; Imagen &amp;gt; Cambiar tamaño del lienzo.
&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>Aumenta el ancho y el alto en 2 píxeles cada uno. Si aumentas 2 píxeles, el borde será de 1 píxel.
Si quieres un borde de 5 píxeles, aumenta el ancho y el alto en 10 píxeles cada uno.&lt;/p>
&lt;p>Selecciona &amp;ldquo;Medio&amp;rdquo; (Centro) como ancla y haz clic en OK.&lt;/p>
&lt;h4 id="4-se-añadirá-un-borde-a-la-imagen-luego-guarda-la-imagen">4. Se añadirá un borde a la imagen, luego guarda la imagen.
&lt;/h4>&lt;p>Eso es todo.&lt;/p></description></item><item><title>Cómo obtener y colocar una clasificación de páginas populares desde Google Analytics</title><link>http://kenji.blog/es/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/es/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 Cómo obtener y colocar una clasificación de páginas populares desde Google Analytics" />&lt;h2 id="introducción">Introducción
&lt;/h2>&lt;p>Usando un servicio llamado &lt;code>Ranklet&lt;/code>, puedes obtener fácilmente una clasificación de páginas populares desde Google Analytics y colocarla en tu sitio.&lt;/p>
&lt;p>En este artículo, te mostraremos cómo colocarlo en un blog HUGO.&lt;/p>
&lt;h2 id="imagen-de-funcionamiento">Imagen de funcionamiento
&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="preparación">Preparación
&lt;/h2>&lt;ul>
&lt;li>Asegúrate de haber configurado Google Analytics en tu sitio.&lt;/li>
&lt;/ul>
&lt;h2 id="pasos">Pasos
&lt;/h2>&lt;ol>
&lt;li>Accede a &lt;code>Ranklet&lt;/code>&lt;/li>
&lt;li>Haz clic en &lt;code>Sign in with Google&lt;/code> e inicia sesión con tu cuenta de Google (asegúrate de que esté vinculada a tu cuenta de 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>Haz clic en &lt;code>Permitir&lt;/code> (&lt;code>許可&lt;/code>)&lt;/p>
&lt;ol start="3">
&lt;li>Configura la información básica&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"
>
Lo he configurado como se muestra arriba.&lt;/p>
&lt;ul>
&lt;li>En &lt;code>Vista de Google Analytics&lt;/code> (&lt;code>Google Analytics ビュー&lt;/code>), selecciona la vista de la que deseas obtener la clasificación.&lt;/li>
&lt;/ul>
&lt;ol start="4">
&lt;li>Configura el reemplazo 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"
>
Lo he configurado como se muestra arriba.
Se configura para eliminar &lt;code> | kenji.blog&lt;/code> del título de la página.&lt;/p>
&lt;ol start="5">
&lt;li>Configura la plantilla&lt;/li>
&lt;/ol>
&lt;ul>
&lt;li>HTML (Se ocultaron los números de clasificació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;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-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">&amp;lt;div class=&amp;#34;ranklet ranklet-reset&amp;#34;&amp;gt;
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &amp;lt;table class=&amp;#34;ranklet-table&amp;#34;&amp;gt;
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &amp;lt;tbody class=&amp;#34;ranklet-pages&amp;#34;&amp;gt;
&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"> &amp;lt;tr class=&amp;#34;ranklet-page&amp;#34;&amp;gt;
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &amp;lt;td class=&amp;#34;ranklet-image&amp;#34;&amp;gt;
&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"> &amp;lt;a href=&amp;#34;{{url}}&amp;#34; class=&amp;#34;ranklet-link&amp;#34;&amp;gt;
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &amp;lt;img class=&amp;#34;ranklet-img&amp;#34; src=&amp;#34;{{image}}&amp;#34; /&amp;gt;
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &amp;lt;/a&amp;gt;
&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"> &amp;lt;/td&amp;gt;
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &amp;lt;td class=&amp;#34;ranklet-meta&amp;#34;&amp;gt;
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &amp;lt;div class=&amp;#34;ranklet-title&amp;#34;&amp;gt;
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &amp;lt;a href=&amp;#34;{{url}}&amp;#34; class=&amp;#34;ranklet-link&amp;#34;&amp;gt;
&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"> &amp;lt;/a&amp;gt;
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &amp;lt;/div&amp;gt;
&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"> &amp;lt;div class=&amp;#34;ranklet-description&amp;#34;&amp;gt;
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &amp;lt;a href=&amp;#34;{{url}}&amp;#34; class=&amp;#34;ranklet-link&amp;#34;&amp;gt;
&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"> &amp;lt;/a&amp;gt;
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &amp;lt;/div&amp;gt;
&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"> &amp;lt;/td&amp;gt;
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &amp;lt;/tr&amp;gt;
&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"> &amp;lt;/tbody&amp;gt;
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &amp;lt;/table&amp;gt;
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&amp;lt;/div&amp;gt;
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;ul>
&lt;li>CSS (Se cambió el tamaño de la fuente y se configuró la descripción para que se muestre en 3 líneas)&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-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">#ranklet-{{context.id}} {
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> .ranklet-reset { // リセット
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> table, tr, td, div, span {
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> margin: 0;
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> padding: 0;
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> border: 0;
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> font-size: 100%;
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> font: inherit;
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> vertical-align: baseline;
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> line-height: 1;
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> box-sizing: border-box;
&lt;/span>&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"> .ranklet-table {
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> border-collapse: separate;
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> border-spacing: 8px 24px;
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> width: 100%;
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> word-break: break-all;
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> td {
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> vertical-align: middle;
&lt;/span>&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"> .ranklet-rank {
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> text-align: center;
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> font-size: 120%;
&lt;/span>&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"> .ranklet-image {
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> text-align: center;
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> img {
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> max-width: 128px;
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> max-height: 128px;
&lt;/span>&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"> .ranklet-meta {
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> .ranklet-title {
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> font-size: 20px;
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> line-height: 125%;
&lt;/span>&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"> .ranklet-description {
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> font-size: 16px;
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> margin-top: 8px;
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> line-height: 125%;
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> display: -webkit-box;
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> overflow: hidden;
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> -webkit-box-orient: vertical;
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> -webkit-line-clamp: 3; /* 行数 */
&lt;/span>&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;ul>
&lt;li>JavaScript sin cambios&lt;/li>
&lt;/ul>
&lt;ol start="6">
&lt;li>Copia el HTML de &amp;ldquo;Publicación en el sitio&amp;rdquo; (&lt;code>サイトへの掲載&lt;/code>)&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>Copia el HTML que se muestra.&lt;/p>
&lt;ol start="7">
&lt;li>Pégalo en la plantilla de HUGO&lt;/li>
&lt;/ol>
&lt;ul>
&lt;li>Crea &lt;code>layouts/partials/ranklet.html&lt;/code> y pega el 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-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">&amp;lt;div id=&amp;#34;ranklet-11958&amp;#34;&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;script src=&amp;#34;//widget.ranklet.com/v1/ranklet/s3/widgets/11958/widget.js&amp;#34;&amp;gt;&amp;lt;/script&amp;gt;
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;ul>
&lt;li>Pega el siguiente código en la línea anterior a &lt;code>&amp;lt;/footer&amp;gt;&lt;/code> en &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-fallback" data-lang="fallback">&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>Eso es todo. Ahora la clasificación se mostrará en la parte inferior de esta página como se muestra a continuación.&lt;/p></description></item><item><title>'【Por idioma】Resumen de entornos de ejecución de código en línea'</title><link>http://kenji.blog/es/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/es/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 idioma】Resumen de entornos de ejecución de código en línea'" />&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 es un entorno de ejecución de Python en línea.&lt;/p>
&lt;ul>
&lt;li>Permite el uso de GPU.&lt;/li>
&lt;li>Los cuadernos de Colab permiten combinar código ejecutable y texto enriquecido (incluyendo imágenes, HTML, LaTeX, etc.) en un solo documento.&lt;/li>
&lt;/ul>
&lt;p>Está basado en 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="otros">Otros
&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>Entorno de desarrollo integrado en línea proporcionado por Amazon AWS. Viene preempaquetado con herramientas para más de 40 lenguajes de programación, como Node.js, JavaScript, Python, PHP, Ruby, Go y C++.&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>Entorno de desarrollo en línea proporcionado por Microsoft. Sin embargo, no se puede ejecutar ni depurar código en lenguajes que requieren compilación.&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>Entorno de ejecución en línea compatible con 24 lenguajes principales, como C, C++, Java, Ruby, Python, PHP y Perl.&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>Entorno de ejecución en línea para HTML, CSS y 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>IDE en línea. Permite compartir código y chatear.&lt;/p></description></item><item><title>Cómo enumerar los números primos hasta 1000 usando la criba de Eratóstenes</title><link>http://kenji.blog/es/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/</link><pubDate>Sun, 09 Apr 2023 12:54:24 +0900</pubDate><guid>http://kenji.blog/es/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/</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 Cómo enumerar los números primos hasta 1000 usando la criba de Eratóstenes" />&lt;h2 id="qué-es-la-criba-de-eratóstenes">¿Qué es la criba de Eratóstenes?
&lt;/h2>&lt;p>La criba de Eratóstenes es un algoritmo para enumerar los números primos menores o iguales a un cierto número.
El algoritmo es simple y se puede implementar con los siguientes pasos:&lt;/p>
&lt;ol>
&lt;li>Crear un arreglo de valores booleanos de tamaño N e inicializar todos los elementos a true.&lt;/li>
&lt;li>Establecer el 0º y 1º elemento del arreglo a false (porque 0 y 1 no son primos).&lt;/li>
&lt;li>Si el 2º elemento del arreglo es true, mostrar 2 como número primo.&lt;/li>
&lt;li>Establecer a false todos los elementos del arreglo que sean múltiplos de 2 mayores o iguales a $2^2$*.&lt;/li>
&lt;li>Si el 3º elemento del arreglo es true, mostrar 3 como número primo.&lt;/li>
&lt;li>Establecer a false todos los elementos del arreglo que sean múltiplos de 3 mayores o iguales a $3^2$.&lt;/li>
&lt;li>Repetir el mismo proceso para el 4º, 5º, &amp;hellip;, N-ésimo elemento.&lt;/li>
&lt;/ol>
&lt;p>*Se dirigen los elementos a partir del cuadrado para convertirlos a false porque los números más pequeños que el cuadrado ya han sido procesados (su enumeración se ha completado).&lt;/p>
&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="implementación-en-rust">Implementación en 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="una-versión-un-poco-más-rápida">Una versión un poco más rápida
&lt;/h2>&lt;p>Realizaremos una implementación ligeramente más rápida considerando los siguientes puntos:&lt;/p>
&lt;ul>
&lt;li>Inicializar el arreglo a false en lugar de true (esto es más rápido).&lt;/li>
&lt;li>Omitir el proceso de establecer en false los elementos múltiplos de 2, ya que no son primos.&lt;/li>
&lt;li>No es necesario iterar hasta n; si enumeramos los primos hasta la raíz cuadrada de n, podremos enumerar todos los primos menores o iguales 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="referencia">Referencia
&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"
>Criba de Eratóstenes&lt;/a>&lt;/li>
&lt;/ul></description></item><item><title>Cómo instalar CocoaPods en mac</title><link>http://kenji.blog/es/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/es/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 Cómo instalar CocoaPods en mac" />&lt;h1 id="instalación-por-terminal">Instalación por terminal
&lt;/h1>&lt;ol>
&lt;li>Abre la terminal&lt;/li>
&lt;li>Ejecuta &lt;code>sudo gem install cocoapods&lt;/code>
→ Por alguna razón, apareció el siguiente mensaje de error y la instalación falló.&lt;/li>
&lt;/ol>
&lt;details>
&lt;summary>Salida&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>Entonces busqué el mensaje de error en la web (ver &amp;ldquo;Referencias&amp;rdquo; abajo) y ejecuté el siguiente 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>Salida&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>Ejecuta &lt;code>brew install cocoapods&lt;/code>&lt;/li>
&lt;/ol>
&lt;details>
&lt;summary>Salida&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>Ejecuta &lt;code>pod --version&lt;/code>&lt;/li>
&lt;/ol>
&lt;details>
&lt;summary>Salida&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 se instaló correctamente.&lt;/p>
&lt;h1 id="referencias">Referencias
&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>'Cómo obtener el número de registros creados por día usando SOQL de Salesforce'</title><link>http://kenji.blog/es/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/</link><pubDate>Sun, 09 Apr 2023 02:50:30 +0900</pubDate><guid>http://kenji.blog/es/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/</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 'Cómo obtener el número de registros creados por día usando SOQL de Salesforce'" />&lt;h1 id="cómo-obtener-el-número-de-registros-creados-por-día-usando-soql-de-salesforce">Cómo obtener el número de registros creados por día usando SOQL de Salesforce
&lt;/h1>&lt;ol>
&lt;li>Abra la Consola del Desarrollador (Developer Console).&lt;/li>
&lt;li>Abra la pestaña &lt;code>Query Editor&lt;/code>.&lt;/li>
&lt;li>Pegue y ejecute el siguiente 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>Cambie &lt;code>account&lt;/code> a cualquier nombre de objeto que desee recuperar y ejecútelo.&lt;/p>
&lt;h1 id="referencia">Referencia
&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>Cómo dibujar un gráfico usando Python (matplotlib.pyplot)</title><link>http://kenji.blog/es/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/</link><pubDate>Sun, 09 Apr 2023 01:02:19 +0900</pubDate><guid>http://kenji.blog/es/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/</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 Cómo dibujar un gráfico 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="requisitos">Requisitos
&lt;/h1>&lt;ul>
&lt;li>Cuenta de Google&lt;/li>
&lt;/ul>
&lt;h1 id="procedimiento">Procedimiento
&lt;/h1>&lt;ol>
&lt;li>Accede a &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>Selecciona &amp;ldquo;Archivo&amp;rdquo; → &amp;ldquo;Nuevo cuaderno&amp;rdquo;&lt;/li>
&lt;li>Pega y ejecuta el siguiente código:&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"># Muestra la leyenda&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-de-la-ejecución">Resultado de la ejecución
&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="referencias">Referencias
&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>Cómo tuitear usando la API de Twitter y Google Colaboratory</title><link>http://kenji.blog/es/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/</link><pubDate>Sat, 08 Apr 2023 18:48:32 +0900</pubDate><guid>http://kenji.blog/es/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/</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 Cómo tuitear usando la API de Twitter y Google Colaboratory" />&lt;h1 id="lo-que-necesitas">Lo que necesitas
&lt;/h1>&lt;ul>
&lt;li>API de Twitter&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>Cuenta de Google&lt;/li>
&lt;/ul>
&lt;p>Para obtener la API de Twitter, consulta los sitios de referencia.&lt;/p>
&lt;h1 id="procedimiento-para-tuitear-usando-la-api">Procedimiento para tuitear usando la API
&lt;/h1>&lt;ol>
&lt;li>Accede a &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>Selecciona &amp;ldquo;Archivo&amp;rdquo; → &amp;ldquo;Nuevo cuaderno&amp;rdquo;&lt;/li>
&lt;li>Pega y ejecuta el siguiente código (usa los valores reales que obtuviste)&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-python" data-lang="python">&lt;span class="line">&lt;span class="cl">&lt;span class="n">API_KEY&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="s1">&amp;#39;9Smu2f2RoLqbVQHQq6n79Z2JW&amp;#39;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">API_SECRET&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="s1">&amp;#39;uGVRIkLL2l8sRyPv2Lr4mXxXppnQF1isMoRnvktcXCtFgAK2R8&amp;#39;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">ACCESS_TOKEN&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="s1">&amp;#39;0367292979164670705-7hSErDoQbO6fkFtnn5UY0vqpvecy0O&amp;#39;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">ACCESS_TOKEN_SECRET&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="s1">&amp;#39;pUv81U9GVzZirz5g4AxZPHAJ4GpSXnBo8GUcZ1egtjw9q&amp;#39;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;ol start="3">
&lt;li>Pega y ejecuta el siguiente código&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-python" data-lang="python">&lt;span class="line">&lt;span class="cl">&lt;span class="kn">import&lt;/span> &lt;span class="nn">tweepy&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>Pega y ejecuta el siguiente código (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-python" data-lang="python">&lt;span class="line">&lt;span class="cl">&lt;span class="n">auth&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">tweepy&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">OAuthHandler&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">API_KEY&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">API_SECRET&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">auth&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">set_access_token&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">ACCESS_TOKEN&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">ACCESS_TOKEN_SECRET&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">api&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">tweepy&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">API&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">auth&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">api&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">update_status&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s2">&amp;#34;hello&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>→ Se publicará el tuit &lt;code>hello&lt;/code>&lt;/p>
&lt;ol start="5">
&lt;li>Pega y ejecuta el siguiente código (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-python" data-lang="python">&lt;span class="line">&lt;span class="cl">&lt;span class="n">client&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">tweepy&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">Client&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">consumer_key&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="n">API_KEY&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">consumer_secret&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="n">API_SECRET&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">access_token&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="n">ACCESS_TOKEN&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">access_token_secret&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="n">ACCESS_TOKEN_SECRET&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">client&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">create_tweet&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">text&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s1">&amp;#39;hello v2&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>→ Se publicará el tuit &lt;code>hello v2&lt;/code>&lt;/p>
&lt;p>Eso es todo.&lt;/p>
&lt;h1 id="referencias">Referencias
&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】Explicación exhaustiva del procedimiento de solicitud de la API de Twitter con ejemplos de uso y capturas de pantalla&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="https://bloomtectec.com/use-twitter-api-in-google-colab/" target="_blank" rel="noopener"
>【¡Sin configuraciones molestas!】Google Colaboratory es recomendado para probar la API de Twitter 【También compartimos el código fuente】&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="https://3pysci.com/tweepy-28/" target="_blank" rel="noopener"
>【Tweepy】Twitter API v2: Tuitear, responder (reply), tuits con encuesta, tuits con medios (v1.1) [Python]&lt;/a>&lt;/li>
&lt;/ul></description></item><item><title>Cómo compilar OpenSSL en Windows</title><link>http://kenji.blog/es/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/es/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 Cómo compilar OpenSSL en Windows" />&lt;h1 id="qué-es-openssl">¿Qué es OpenSSL?
&lt;/h1>&lt;p>Es una biblioteca de código abierto que proporciona el procesamiento necesario para realizar comunicaciones cifradas.&lt;/p>
&lt;p>Para utilizarlo desde un programa, dado que el código fuente en lenguaje C es público, es necesario compilarlo para crear la biblioteca.&lt;/p>
&lt;p>A continuación se presentan los pasos para su compilación.&lt;/p>
&lt;h1 id="preparación-del-entorno-de-compilación">Preparación del entorno de compilación
&lt;/h1>&lt;ul>
&lt;li>
&lt;p>&lt;strong>Perl&lt;/strong>&lt;/p>
&lt;p>Descargue &lt;code>strawberry-perl-5.32.1.1-64bit.msi&lt;/code> desde &lt;a class="link" href="https://strawberryperl.com/" target="_blank" rel="noopener"
>https://strawberryperl.com/&lt;/a>. Creo que está bien usar la última versión.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>NASM&lt;/strong>&lt;/p>
&lt;p>Descargue &lt;code>2.16.01/nasm-2.16.01-win64.zip&lt;/code> desde la sección de &lt;code>Download&lt;/code> en &lt;a class="link" href="https://www.nasm.us/" target="_blank" rel="noopener"
>https://www.nasm.us/&lt;/a>. Creo que está bien usar la última versión (que no sea rc).
Después de la instalación, es necesario registrar la carpeta donde se instaló NASM en la variable de entorno PATH.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>Visual Studio 2022 ** o ** Build Tools for Visual Studio 2022&lt;/strong>&lt;/p>
&lt;p>Instale &lt;code>Visual Studio 2022 Community&lt;/code> o &lt;code>Build Tools for Visual Studio 2022&lt;/code> desde &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="pasos-para-compilar-openssl-en-windows">Pasos para compilar OpenSSL en Windows
&lt;/h1>&lt;ol>
&lt;li>Descargue y extraiga &lt;code>openssl-3.1.0.tar.gz&lt;/code> desde &lt;a class="link" href="https://www.openssl.org/source/" target="_blank" rel="noopener"
>https://www.openssl.org/source/&lt;/a>. Si no puede extraerlo, ejecute &lt;code>tar -xzf openssl-3.1.0.tar.gz&lt;/code> en el símbolo del sistema.&lt;/li>
&lt;li>Inicie el símbolo del sistema &lt;strong>con privilegios de administrador&lt;/strong>.&lt;/li>
&lt;li>Abra la carpeta extraída.&lt;/li>
&lt;li>Ejecute el siguiente comando. * Cambie la parte de &lt;code>Community&lt;/code> según la versión de Visual Studio que haya instalado:&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>Ejecute el siguiente 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>Ejecute el siguiente comando (toma bastante tiempo):&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>Ejecute el siguiente comando (toma bastante tiempo):&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>Ejecute el siguiente 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>Si todo sale bien, OpenSSL se instalará en &lt;code>C:\Program Files\OpenSSL&lt;/code>.&lt;/p>
&lt;p>Eso es todo.&lt;/p>
&lt;h1 id="referencias">Referencias
&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>¿Qué es i18n?</title><link>http://kenji.blog/es/p/i18n%E3%81%A8%E3%81%AF/</link><pubDate>Fri, 07 Apr 2023 00:42:02 +0900</pubDate><guid>http://kenji.blog/es/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 ¿Qué es i18n?" />&lt;h1 id="qué-es-i18n">¿Qué es i18n?
&lt;/h1>&lt;p>&lt;code>i18n&lt;/code> es una abreviatura de &lt;code>Internationalization&lt;/code>, que significa internacionalización. Debido a que &lt;code>Internationalization&lt;/code> es larga, se abrevia como &lt;code>i18n&lt;/code> indicando que hay 18 letras entre la primera &lt;code>i&lt;/code> y la última &lt;code>n&lt;/code>.&lt;/p>
&lt;p>A menudo se utiliza en el contexto de la internacionalización de software.&lt;/p>
&lt;p>Los principales elementos sujetos a la internacionalización son los siguientes: &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 (como códigos de caracteres estándar)&lt;/li>
&lt;li>Dirección del texto (de izquierda a derecha, de derecha a izquierda, de arriba a abajo hacia la izquierda, etc.)&lt;/li>
&lt;li>Texto&lt;/li>
&lt;li>Fuentes&lt;/li>
&lt;li>Formato
&lt;ul>
&lt;li>Números (carácter de punto decimal, separador de miles, cantidad de dígitos a separar, etc.)&lt;/li>
&lt;li>Fecha y hora (formato de año, mes y día, diferencias en el calendario utilizado como calendario islámico / calendario gregoriano / calendario hebreo / calendario japonés, etc.)&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>Diferencia horaria en la información de fecha y hora&lt;/li>
&lt;li>Información de moneda&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://ja.wikipedia.org/wiki/%E5%9B%BD%E9%9A%9B%E5%8C%96%E3%81%A8%E5%9C%B0%E5%9F%9F%E5%8C%96" target="_blank" rel="noopener"
>Internacionalización y localización - 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>Cómo crear presentaciones con HTML (reveal.js)</title><link>http://kenji.blog/es/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/es/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 Cómo crear presentaciones con HTML (reveal.js)" />&lt;h1 id="cómo-crear-presentaciones-con-html">Cómo crear presentaciones con HTML
&lt;/h1>&lt;p>reveal.js es una herramienta para crear presentaciones utilizando HTML y Markdown, que incluye las siguientes características:&lt;/p>
&lt;ul>
&lt;li>Variadas funciones de presentación, como fórmulas matemáticas, animaciones y operaciones de deslizamiento (swipe).&lt;/li>
&lt;li>Permite personalizar temas y diseños.&lt;/li>
&lt;li>Funciones de navegación compatibles con múltiples dispositivos, como ratones, teclados y paneles táctiles (touchpads).&lt;/li>
&lt;li>Ofrece funciones avanzadas, como reproducción automática de diapositivas e incrustación de vídeos.&lt;/li>
&lt;li>Permite exportar en formato PDF.&lt;/li>
&lt;/ul>
&lt;p>Gracias a estas funciones, los usuarios pueden crear fácilmente presentaciones interactivas y atractivas.&lt;/p>
&lt;h1 id="instalación-y-uso-de-revealjs">Instalación y uso de reveal.js
&lt;/h1>&lt;p>La forma más sencilla de utilizarlo es descargar el archivo ZIP completo desde la siguiente página y descomprimirlo.&lt;/p>
&lt;ol>
&lt;li>Abre &lt;a class="link" href="https://revealjs.com/installation" target="_blank" rel="noopener"
>https://revealjs.com/installation&lt;/a> y descarga el &lt;code>master.zip&lt;/code> desde el enlace.&lt;/li>
&lt;li>Abre el archivo index.html de la carpeta descomprimida en un navegador.&lt;/li>
&lt;li>Edita el archivo index.html para crear tu propia presentación.&lt;/li>
&lt;/ol>
&lt;ul>
&lt;li>Como referencia, en demo.html encontrarás código HTML de demostración.&lt;/li>
&lt;/ul>
&lt;h1 id="casos-de-uso">Casos de uso
&lt;/h1>&lt;p>Las presentaciones creadas pueden publicarse directamente como páginas web o exportarse como PDF.
Además, dado que el código fuente de la presentación es texto, resulta fácil gestionarlo mediante sistemas de control de versiones.&lt;/p>
&lt;p>Al parecer, también es posible crear presentaciones en formato Markdown.&lt;/p>
&lt;h1 id="referencias">Referencias
&lt;/h1>&lt;ul>
&lt;li>&lt;a class="link" href="https://qiita.com/Targityen/items/40ae4795e2cb77c1adc6" target="_blank" rel="noopener"
>A partir de ahora, usa reveal.js para tus presentaciones&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="https://qiita.com/jkjoluvjlajelljicvjzojieoaid/items/01cd7ff819bc2e69b652" target="_blank" rel="noopener"
>Lista de ejemplos de sintaxis Markdown&lt;/a>&lt;/li>
&lt;/ul></description></item><item><title>Cómo generar imágenes de ilustraciones usando IA (Stable Diffusion)</title><link>http://kenji.blog/es/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/es/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 Cómo generar imágenes de ilustraciones usando IA (Stable Diffusion)" />&lt;h1 id="qué-es-stable-diffusion">¿Qué es Stable Diffusion?
&lt;/h1>&lt;p>Stable Diffusion es una IA que genera imágenes a partir de información de texto (texto a imagen), desarrollada por un equipo de investigación de la Universidad de Múnich, Alemania.
Al entrenar con diversas imágenes, puede generar una amplia variedad de imágenes, desde fotografías realistas hasta ilustraciones.&lt;/p>
&lt;p>En esta ocasión, presentaré cómo generar imágenes de ilustraciones utilizando datos preentrenados de Stable Diffusion.&lt;/p>
&lt;h1 id="lo-que-necesitas">Lo que necesitas
&lt;/h1>&lt;ul>
&lt;li>Una cuenta de Google&lt;/li>
&lt;/ul>
&lt;p>Solo eso.&lt;/p>
&lt;h1 id="procedimiento-de-generación">Procedimiento de generación
&lt;/h1>&lt;ol>
&lt;li>Abre &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>En la esquina superior izquierda, selecciona &lt;code>Archivo&lt;/code> y luego &lt;code>Nuevo cuaderno&lt;/code>&lt;/li>
&lt;li>Selecciona &lt;code>Editar&lt;/code> y luego &lt;code>Configuración del cuaderno&lt;/code>&lt;/li>
&lt;li>Cambia el &lt;code>Acelerador de hardware&lt;/code> a &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>Pega y ejecuta el siguiente código&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>Pega y ejecuta el siguiente código&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>Pega y ejecuta el siguiente código&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>Pega y ejecuta el siguiente código&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>El &lt;code>Prompt&lt;/code> utilizado aquí está basado en el &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-generados-algunos">Resultados generados (algunos)
&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="referencias">Referencias
&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"
>Hice un programa de generación de imágenes con Inteligencia Artificial (IA) en 15 minutos 【Programación en vivo】&lt;/a>&lt;/li>
&lt;/ul></description></item><item><title>Herramientas para analizar el contenido de archivos ejecutables (exe)</title><link>http://kenji.blog/es/p/herramientas-para-analizar-el-contenido-de-archivos-ejecutables-exe/</link><pubDate>Wed, 05 Apr 2023 23:31:06 +0900</pubDate><guid>http://kenji.blog/es/p/herramientas-para-analizar-el-contenido-de-archivos-ejecutables-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 Herramientas para analizar el contenido de archivos ejecutables (exe)" />&lt;h1 id="qué-es-un-archivo-ejecutable-exe">Qué es un archivo ejecutable (exe)
&lt;/h1>&lt;p>Un archivo ejecutable en Windows. Básicamente, está escrito en un formato llamado formato PE.
Contiene código en lenguaje de máquina para su ejecución, así como recursos como iconos e imágenes.&lt;/p>
&lt;p>Dado que existen varias herramientas para analizar archivos ejecutables, las presentaremos en esta ocasión.&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>Los archivos EXE, como tienden a ser grandes si se dejan como están, a veces se crean mediante compresión de archivos. En este caso, utilizando el software de compresión y descompresión de archivos 7-Zip, puede descomprimir el archivo ejecutable e investigar su contenido. También existe una herramienta llamada WinRAR que puede descomprimir de la misma manera.&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>Puede extraer los recursos (iconos, mapas de bits, cuadros de diálogo, cadenas de texto, etc.) dentro del archivo EXE. Además, como también funciona como un editor hexadecimal, puede editar y reescribir el contenido del archivo 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>Puede analizar archivos PE para Windows (EXE, DLL, OCX, SYS, controladores). PE Explorer proporciona varias funciones de análisis, como mostrar la estructura del archivo, mostrar el encabezado del archivo, mostrar entradas de directorio, y mostrar funciones y 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>Puede verificar de qué archivos DLL depende un archivo EXE y si se han cargado correctamente. También puede rastrear llamadas a funciones en archivos 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>Es una poderosa herramienta de ingeniería inversa desarrollada por la NSA (Agencia de Seguridad Nacional de EE. UU.) y publicada gratuitamente como código abierto. No solo desensambla (convierte a lenguaje ensamblador) archivos EXE, sino que también tiene una función de descompilación a un formato cercano al lenguaje C, lo que la hace muy popular.&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>Es un desensamblador y descompilador avanzado que se ha convertido en un estándar mundial de la industria en análisis de malware e ingeniería inversa. La versión Pro es muy cara, pero si es para fines personales o no comerciales, puede usar la versión con funciones limitadas &amp;ldquo;IDA Free&amp;rdquo; de forma gratuita.&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>Es un depurador de código abierto para Windows. Se especializa en &amp;ldquo;análisis dinámico&amp;rdquo;, que analiza el contenido y el estado de la memoria paso a paso mientras se ejecuta el archivo ejecutable, y se usa a menudo para descifrar crackmes (programas de desafío de análisis) e investigar el comportamiento del 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>Si el archivo EXE de destino fue creado en un lenguaje del sistema .NET como C#, puede usar estas herramientas para descompilarlo a un estado casi idéntico al código fuente original y exponer completamente su contenido.&lt;/p>
&lt;p>Estas herramientas son útiles para investigar el contenido de archivos EXE, pero requieren precaución. Editar archivos o usarlos con fines maliciosos puede causar problemas de seguridad o relacionados con la ley de derechos de autor, así que úselos solo después de comprender esto completamente.&lt;/p></description></item><item><title>Cómo cambiar de aplicación en mac al estilo Windows (Alt+Tab)</title><link>http://kenji.blog/es/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/es/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 Cómo cambiar de aplicación en mac al estilo Windows (Alt+Tab)" />&lt;h1 id="introducción">Introducción
&lt;/h1>&lt;p>Aquí se explica cómo cambiar de aplicación en Mac al estilo de Windows (Alt+Tab).&lt;/p>
&lt;p>Como es difícil lograrlo cambiando la configuración estándar, este método consiste en instalar una aplicación.&lt;/p>
&lt;h1 id="imagen-de-funcionamiento">Imagen de funcionamiento
&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-configuración-macos-ventura">Método de configuración (macOS Ventura)
&lt;/h1>&lt;ol>
&lt;li>Abrir &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>Hacer clic en &lt;code>Download the latest release&lt;/code>&lt;/li>
&lt;li>Abrir la aplicación descargada&lt;/li>
&lt;li>Seguir los pasos para instalarla&lt;/li>
&lt;/ol>
&lt;p>Con esto, el cambio de aplicaciones se podrá hacer con Alt+Tab igual que en Windows.&lt;/p>
&lt;p>Fin&lt;/p></description></item><item><title>Cómo igualar los atajos de teclado de copiar y pegar en Mac con los de Windows</title><link>http://kenji.blog/es/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/es/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 Cómo igualar los atajos de teclado de copiar y pegar en Mac con los de Windows" />&lt;h1 id="introducción">Introducción
&lt;/h1>&lt;p>Cuando alternas entre Windows y Mac, las teclas de los atajos de teclado que usas con frecuencia, como copiar, pegar y deshacer, son diferentes, así que te mostraremos cómo igualarlas.&lt;/p>
&lt;h1 id="método-de-configuración-macos-ventura">Método de configuración (macOS Ventura)
&lt;/h1>&lt;ol>
&lt;li>Abrir Configuración del Sistema&lt;/li>
&lt;li>Seleccionar Teclado&lt;/li>
&lt;li>Seleccionar Atajos de teclado&lt;/li>
&lt;li>Seleccionar Teclas modificadoras&lt;/li>
&lt;li>Asignar la tecla Control(^) a &amp;ldquo;⌘ Command&amp;rdquo;&lt;/li>
&lt;li>Asignar la tecla Command(⌘) a &amp;ldquo;^ Control&amp;rdquo;&lt;/li>
&lt;li>Hacer clic en Listo&lt;/li>
&lt;/ol>
&lt;p>Eso es todo&lt;/p></description></item><item><title>Cómo cambiar el atajo de teclado para cambiar entre entrada en japonés e inglés en mac</title><link>http://kenji.blog/es/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/es/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 Cómo cambiar el atajo de teclado para cambiar entre entrada en japonés e inglés en mac" />&lt;h1 id="introducción">Introducción
&lt;/h1>&lt;p>Yo uso un teclado de EE. UU., y en Windows cambio la entrada de japonés con &lt;code>Alt + `&lt;/code>.
Al querer usar la misma tecla en mac, investigué y descubrí que se puede cambiar en la configuración.&lt;/p>
&lt;h1 id="cómo-configurar-macos-ventura">Cómo configurar (macOS Ventura)
&lt;/h1>&lt;ol>
&lt;li>Abre Configuración del Sistema&lt;/li>
&lt;li>Selecciona Teclado&lt;/li>
&lt;li>Selecciona Funciones rápidas de teclado&lt;/li>
&lt;li>Selecciona Fuentes de entrada&lt;/li>
&lt;li>Haz doble clic en la notación de atajo a la derecha de &amp;ldquo;Seleccionar la siguiente fuente en el menú Entrada&amp;rdquo;&lt;/li>
&lt;li>Escribe &lt;code>Alt + `&lt;/code>&lt;/li>
&lt;li>Haz clic en Listo&lt;/li>
&lt;/ol>
&lt;p>Con esto, podrás cambiar entre inglés y japonés usando &lt;code>Alt + `&lt;/code>.
Sin embargo, como por defecto se incluye katakana en el cambio, eliminé katakana de las fuentes de entrada siguiendo estos pasos.&lt;/p>
&lt;ol>
&lt;li>Abre Configuración del Sistema&lt;/li>
&lt;li>Selecciona Teclado&lt;/li>
&lt;li>Haz clic en Editar a la derecha de &lt;code>Japonés - Romaji&lt;/code> en Fuentes de entrada&lt;/li>
&lt;li>Haz clic en &lt;code>Japonés - Romaji&lt;/code>&lt;/li>
&lt;li>Desmarca Katakana en el modo de entrada&lt;/li>
&lt;li>Haz clic en Listo&lt;/li>
&lt;/ol>
&lt;p>Fin&lt;/p></description></item><item><title>Cómo encontrar la ubicación de un archivo ejecutable en el path en Windows</title><link>http://kenji.blog/es/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/es/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 Cómo encontrar la ubicación de un archivo ejecutable en el path en Windows" />&lt;h1 id="cómo-encontrar-la-ubicación-de-un-archivo-ejecutable-en-el-path-en-windows">Cómo encontrar la ubicación de un archivo ejecutable en el path en Windows
&lt;/h1>&lt;p>Al ejecutar un comando especificando un archivo ejecutable, a veces quieres saber dónde está ubicado ese archivo. En esos casos, puedes averiguar la ubicación del archivo ejecutable con el siguiente 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">nombre_del_archivo_ejecutable&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 ejemplo, si quieres saber la ubicación de Paint (mspaint.exe), debes hacerlo de la siguiente manera.&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="referencias">Referencias
&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>'Compré un mac mini (2018)'</title><link>http://kenji.blog/es/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/es/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 'Compré un mac mini (2018)'" />&lt;h1 id="compré-un-mac-mini-2018">Compré un mac mini (2018)
&lt;/h1>&lt;p>Compré un mac mini (2018) usado y de generación anterior en Mercari. Las especificaciones son las siguientes.&lt;/p>
&lt;ul>
&lt;li>CPU: Intel Core i7 de 6 núcleos a 3,2 GHz&lt;/li>
&lt;li>Memoria: 32GB&lt;/li>
&lt;li>Almacenamiento: 1TB SSD&lt;/li>
&lt;/ul>
&lt;p>El precio es de ￥ 77,000&lt;/p>
&lt;h1 id="razón-para-la-compra">Razón para la compra
&lt;/h1>&lt;ul>
&lt;li>Desarrollo aplicaciones móviles en el trabajo utilizando un mac mini con especificaciones casi idénticas, y quería configurar un entorno de desarrollo (especialmente un entorno de ejecución para xcode) en casa también.&lt;/li>
&lt;li>Tengo un macbook pro, pero lo compré hace 9 años y funciona bastante lento, así que casi no lo uso.&lt;/li>
&lt;li>Personalmente, quería desarrollar aplicaciones de iOS.&lt;/li>
&lt;/ul>
&lt;h1 id="instalé-xcode-e-intelij-idea-de-inmediato">Instalé xcode e inteliJ IDEA de inmediato
&lt;/h1>&lt;p>La versión de xcode es Versión 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>La versión de inteliJ IDEA es 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>¡Bien! ¡A desarrollar!&lt;/p></description></item><item><title>Sobre ''Unsplash'', un sitio de fotos de archivo que puedes usar en tu blog</title><link>http://kenji.blog/es/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/</link><pubDate>Sun, 02 Apr 2023 14:44:17 +0900</pubDate><guid>http://kenji.blog/es/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/</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 ''Unsplash'', un sitio de fotos de archivo que puedes usar en tu blog" />&lt;h2 id="sobre-unsplash">Sobre &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>El sitio de fotos de archivo &amp;ldquo;Unsplash&amp;rdquo; se resume de la siguiente manera:&lt;/p>
&lt;ul>
&lt;li>Todas las imágenes se pueden usar de forma gratuita&lt;/li>
&lt;li>Uso comercial permitido&lt;/li>
&lt;li>Modificación de imágenes permitida&lt;/li>
&lt;li>No se requiere permiso de uso&lt;/li>
&lt;li>No se requiere atribución (crédito)&lt;/li>
&lt;/ul>
&lt;p>Es muy fácil de usar al escribir artículos para un blog, así que asegúrate de probarlo.&lt;/p>
&lt;p>※ Para obtener información sobre la licencia, consulta la &amp;ldquo;nota al pie&amp;rdquo; a continuación.&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>También lo utilizaré en este sitio.&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"
>Licencia de 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>Cómo mostrar japonés en egui</title><link>http://kenji.blog/es/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/</link><pubDate>Sat, 01 Apr 2023 03:17:52 +0900</pubDate><guid>http://kenji.blog/es/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/</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 Cómo mostrar japonés en egui" />&lt;h2 id="obtener-el-ejemplo-de-egui">Obtener el ejemplo de egui
&lt;/h2>&lt;p>Puedes ejecutar el ejemplo de egui con los siguientes 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;h2 id="cargar-una-fuente-compatible-con-japonés">Cargar una fuente compatible con japonés
&lt;/h2>&lt;p>Para mostrar japonés, es necesario cargar una fuente compatible con este idioma.&lt;/p>
&lt;p>En &lt;code>src/app.rs&lt;/code>, dentro del método &lt;code>pub fn new&lt;/code>, añade las siguientes líneas:&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">// Cargar fuente compatible con 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="ahora-podrás-mostrar-texto-en-japonés">Ahora podrás mostrar texto en 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>Cómo habilitar KaTeX (fórmulas matemáticas estilo LaTeX) en hugo</title><link>http://kenji.blog/es/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/</link><pubDate>Fri, 31 Mar 2023 23:11:26 +0900</pubDate><guid>http://kenji.blog/es/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/</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 Cómo habilitar KaTeX (fórmulas matemáticas estilo LaTeX) en hugo" />&lt;h1 id="qué-es-katex">Qué es KaTeX
&lt;/h1>&lt;p>KaTeX es una biblioteca de JavaScript para mostrar fórmulas matemáticas estilo LaTeX en HTML.&lt;/p>
&lt;p>Específicamente, puedes mostrar fórmulas como la siguiente.&lt;/p>
$$f(x) = x^2 + x + 41$$
&lt;p>Aunque parece haber otras bibliotecas para mostrar fórmulas matemáticas estilo LaTeX, KaTeX tiene la reputación de ser simple y rápida.&lt;/p>
&lt;h1 id="cómo-introducirlo-en-hugo">Cómo introducirlo en hugo
&lt;/h1>&lt;ol>
&lt;li>Crea un nuevo archivo &lt;code>layouts/partials/math.html&lt;/code> en la jerarquía de carpetas de hugo.&lt;/li>
&lt;/ol>
&lt;p>El contenido debe ser el siguiente.&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>A continuación, añade el siguiente código al archivo 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>Ahora estás listo para usar KaTeX.&lt;/li>
&lt;/ol>
&lt;p>Al añadir &lt;code>math: true&lt;/code> al front matter de la página, puedes habilitar KaTeX.&lt;/p>
&lt;ol start="4">
&lt;li>Todo lo que tienes que hacer es escribir las fórmulas matemáticas al estilo LaTeX en el cuerpo del artículo de la 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>Si lo escribes como arriba, se mostrará de la siguiente manera.&lt;/p>
$$ e^{i \pi} = -1 $$
&lt;h1 id="referencias">Referencias
&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"
>Introducción a KaTeX | The Strange Storage&lt;/a>&lt;/li>
&lt;/ul></description></item><item><title>Libros de negocios recomendados</title><link>http://kenji.blog/es/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/</link><pubDate>Sun, 19 Mar 2023 18:13:14 +0900</pubDate><guid>http://kenji.blog/es/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/</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 Libros de negocios recomendados" />&lt;h2 id="cómo-ganar-amigos-e-influir-sobre-las-personas">Cómo ganar amigos e influir sobre las personas
&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="atrévete-a-no-gustar">Atrévete a no gustar
&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-estrategia-de-vida-para-la-era-de-los-100-años">LIFE SHIFT: Estrategia de vida para la era de los 100 años
&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="los-7-hábitos-de-la-gente-altamente-efectiva">Los 7 hábitos de la gente altamente efectiva
&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>Extensiones recomendadas para Chrome</title><link>http://kenji.blog/es/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/es/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 Extensiones recomendadas para Chrome" />&lt;h1 id="extensiones-recomendadas-para-chrome">Extensiones recomendadas para Chrome
&lt;/h1>&lt;p>A continuación, presento las extensiones de Chrome que uso actualmente. Aunque son para Chrome, también se pueden usar en 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>Es una extensión que permite usar gestos del ratón.
Puedes operar el navegador sin necesidad de usar el teclado o hacer clic en los botones de la barra de herramientas.&lt;/p>
&lt;p>Por ejemplo, puedes retroceder deslizando el ratón hacia la izquierda mientras mantienes presionado el botón derecho, o avanzar deslizando el ratón hacia la derecha mientras mantienes presionado el botón derecho.&lt;/p>
&lt;p>Dado que es de código abierto, es altamente confiable.&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>Es una extensión para bloquear anuncios. Como es de código abierto, es altamente confiable. Además, utiliza poca CPU y memoria, por lo que funciona de manera fluida.&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-traductor-deepl">3. Traductor 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>Es una extensión de Chrome que permite traducir dentro de la página utilizando DeepL, un servicio de traducción mundialmente famoso. Al seleccionar el texto que deseas traducir en el navegador, aparece el ícono de DeepL, y al hacer clic en él se traduce automáticamente.&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>Es una extensión que permite usar ChatGPT en una barra lateral. Puedes mostrar la barra lateral con Ctrl+P y hacer preguntas a la IA inmediatamente.
Si hay texto seleccionado en la página, se copia directamente en el cuadro de la pregunta, por lo que puedes preguntar rápidamente presionando 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>Es una extensión que añade funciones útiles para el desarrollo en Salesforce.
Creo que no es necesaria para aquellos que no usan 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>Cómo actualizar rustc</title><link>http://kenji.blog/es/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/es/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 Cómo actualizar rustc" />&lt;h1 id="cómo-actualizar-rustc">Cómo actualizar rustc
&lt;/h1>&lt;p>Simplemente ejecuta la siguiente línea en la línea de 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;/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="ejemplo-de-salida">Ejemplo de salida
&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>Probando egui</title><link>http://kenji.blog/es/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/es/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 Probando egui" />&lt;h1 id="qué-es-egui">¿Qué es egui?
&lt;/h1>&lt;p>Es una librería GUI que se puede utilizar con Rust.&lt;/p>
&lt;h1 id="probando-egui">Probando egui
&lt;/h1>&lt;p>Puedes ejecutar el ejemplo de egui con los siguientes 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>Después de eso, puedes probar varias cosas mientras juegas con el código de ejemplo.&lt;/p>
&lt;h1 id="referencia">Referencia
&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>'Cómo solucionar el ruido de la AG03'</title><link>http://kenji.blog/es/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/es/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 'Cómo solucionar el ruido de la AG03'" />&lt;h1 id="cómo-solucionar-el-ruido-de-la-yamaha-ag03">Cómo solucionar el ruido de la YAMAHA AG03
&lt;/h1>&lt;p>Al escuchar el sonido del PC a través del monitor de la AG03, se produce un ruido áspero periódicamente (una vez cada 1 a 3 minutos aproximadamente).
Al investigar, parece que existe el siguiente método como contramedida para el ruido de la 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>Al descargar e instalar el Yamaha Steinberg USB Driver desde el sitio anterior, el ruido se solucionó.&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">Comprar ahora&lt;/a>&lt;/div>&lt;/div>
&lt;h1 id="referencia">Referencia
&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>Periféricos de PC recomendados</title><link>http://kenji.blog/es/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/es/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 Periféricos de PC recomendados" />&lt;h1 id="periféricos-de-pc-recomendados-y-deseados-por-un-ingeniero-en-activo">Periféricos de PC recomendados y deseados por un ingeniero en activo
&lt;/h1>&lt;h2 id="teclado">Teclado
&lt;/h2>&lt;p>Ante todo, recomiendo los teclados capacitivos sin contacto porque son difíciles de romper.
Tengo un &lt;a class="link" href="https://amzn.to/3IzOOFO" target="_blank" rel="noopener"
>RealForce&lt;/a> desde hace más de 10 años y todavía lo uso activamente.
El tipo que utilizo es silencioso con distribución en inglés.&lt;/p>
&lt;p>Sin embargo, últimamente también me interesa el teclado &lt;a class="link" href="https://amzn.to/3Z5skmR" target="_blank" rel="noopener"
>Logitech MX Keys&lt;/a>.&lt;/p>
&lt;h2 id="trackball">Trackball
&lt;/h2>&lt;p>Para el dispositivo señalador, recomiendo un trackball en lugar de un ratón, ya que reduce la fatiga.&lt;/p>
&lt;p>El que utilizo es el &lt;a class="link" href="https://amzn.to/3IYOwtf" target="_blank" rel="noopener"
>Logitech MX Ergo&lt;/a>. Es un dispositivo caro que cuesta más de 10,000 yenes, pero creo que vale más que eso.&lt;/p>
&lt;p>También me interesa el &lt;a class="link" href="https://amzn.to/3Zu5tB8" target="_blank" rel="noopener"
>DEFT PRO (M-DPT1MRXBK)&lt;/a>, que tiene una bola grande y se maneja con el dedo índice y medio.
&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>Cualquier modelo está bien, pero recomiendo un monitor 4K con alta resolución.&lt;/p>
&lt;p>Actualmente estoy usando un &lt;a class="link" href="https://amzn.to/3y0ViIW" target="_blank" rel="noopener"
>monitor 4K de DELL&lt;/a>.&lt;/p>
&lt;p>Ahora mismo me gustaría tener un monitor ultra ancho &lt;a class="link" href="https://amzn.to/3kz7BZH" target="_blank" rel="noopener"
>de EIZO&lt;/a> o un &lt;a class="link" href="https://amzn.to/3xZleo1" target="_blank" rel="noopener"
>monitor de DELL&lt;/a>.&lt;/p></description></item><item><title>Acerca de fontplus.jp</title><link>http://kenji.blog/es/p/fontplus.jp/</link><pubDate>Tue, 07 Feb 2023 20:59:01 +0900</pubDate><guid>http://kenji.blog/es/p/fontplus.jp/</guid><description>&lt;img src="http://kenji.blog/p/fontplus.jp/img.png" alt="Featured image of post Acerca de fontplus.jp" />&lt;h1 id="fontplusjp-un-servicio-para-usar-fuentes-web-de-pago">fontplus.jp, un servicio para usar fuentes web de pago
&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 yenes al mes, puedes usar todas las fuentes, compatible también con el uso en múltiples sitios web.&lt;/p></description></item><item><title>Usar etiquetas HTML en HUGO</title><link>http://kenji.blog/es/p/hugo%E3%81%A7html%E3%82%BF%E3%82%B0%E3%82%92%E4%BD%BF%E3%81%86/</link><pubDate>Tue, 17 Jan 2023 19:20:32 +0900</pubDate><guid>http://kenji.blog/es/p/hugo%E3%81%A7html%E3%82%BF%E3%82%B0%E3%82%92%E4%BD%BF%E3%81%86/</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 Usar etiquetas HTML en HUGO" />&lt;p>De manera predeterminada, el uso de etiquetas HTML en los artículos está deshabilitado en HUGO, pero puedes habilitarlo agregando la siguiente configuración en 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>Referencia: &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>Buscando Patrocinadores en GitHub</title><link>http://kenji.blog/es/p/github%E3%82%B9%E3%83%9D%E3%83%B3%E3%82%B5%E3%83%BC%E5%8B%9F%E9%9B%86/</link><pubDate>Tue, 17 Jan 2023 18:13:56 +0900</pubDate><guid>http://kenji.blog/es/p/github%E3%82%B9%E3%83%9D%E3%83%B3%E3%82%B5%E3%83%BC%E5%8B%9F%E9%9B%86/</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 Buscando Patrocinadores en GitHub" />&lt;h1 id="buscando-patrocinadores-en-github">Buscando Patrocinadores en GitHub
&lt;/h1>&lt;p>Estaría muy agradecido si pudieras apoyarme como patrocinador en GitHub utilizando el botón a continuación.&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>Los fondos se utilizarán para el desarrollo de herramientas y proyectos similares.&lt;/p>
&lt;p>¡Me esforzaré al máximo hasta poder obtener un certificado de firma de código!&lt;/p></description></item><item><title>Acerca de los botones</title><link>http://kenji.blog/es/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/es/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 Acerca de los botones" />&lt;h1 id="qué-es-un-botón">¿Qué es un botón?
&lt;/h1>&lt;p>Un botón es uno de los controles de la interfaz gráfica de usuario (GUI) y se puede implementar con la API estándar de Windows.
Al hacer clic (presionar y soltar el botón izquierdo del ratón) en un área de la pantalla,
se puede ejecutar la operación especificada por el 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">// Creación de un botón
&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"> // Al hacer clic, el SO envía el mensaje WM_COMMAND a la ventana.
&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>El código de muestra se encuentra publicado a continuación.
&lt;a class="link" href="https://github.com/kenjinote/button" target="_blank" rel="noopener"
>button&lt;/a>&lt;/p></description></item><item><title>Compré un ThinkPad (usado)</title><link>http://kenji.blog/es/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/es/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 Compré un ThinkPad (usado)" />&lt;h1 id="compré-un-portátil-thinkpad-usado">Compré un portátil ThinkPad (usado)
&lt;/h1>&lt;p>Como mi trabajo en el portátil se basa casi siempre en conectarme a otros terminales mediante escritorio remoto, no necesitaba un PC de altas especificaciones. Un ChromeBook habría estado bien, pero como no había ninguno con un buen diseño o alta resolución, me compré un ThinkPad.&lt;/p>
&lt;p>Las especificaciones están abajo; utilizando varios puntos, el precio fue de alrededor de 55.000 yenes.&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>SO: Windows 10 Pro 64 bits&lt;/li>
&lt;li>Pantalla: 14.0 pulgadas panorámica (panel antirreflejos)&lt;/li>
&lt;li>Resolución: Pantalla LCD WQHD 2560×1440&lt;/li>
&lt;li>Peso: Aprox. 1.32 kg&lt;/li>
&lt;li>Notas: Teclado en inglés&lt;/li>
&lt;/ul>
&lt;p>Como es de segunda mano, pensé que tendría marcas de uso o arañazos, pero no hay ningún problema en absoluto y estoy contento.
La batería también funciona sin problemas hasta ahora.&lt;/p>
&lt;h2 id="quejas-que-se-me-ocurren-hasta-ahora">Quejas que se me ocurren hasta ahora
&lt;/h2>&lt;ul>
&lt;li>Faltan las teclas &lt;code>Pause&lt;/code> y &lt;code>App&lt;/code>. Usaba la tecla &lt;code>Pause&lt;/code> en un atajo para abrir la configuración del sistema. Además, usaba la tecla &lt;code>App&lt;/code> para abrir el menú emergente, así que es un inconveniente no tenerlas.&lt;/li>
&lt;li>Las teclas &lt;code>PageUp&lt;/code> y &lt;code>PageDown&lt;/code> están justo al lado de las teclas de flecha del teclado, así que a menudo las pulso por error. Esto podría ser cuestión de acostumbrarse.&lt;/li>
&lt;/ul>
&lt;h2 id="otros-pc-que-consideré-pero-no-compré">Otros PC que consideré pero no compré
&lt;/h2>&lt;ul>
&lt;li>ASUS Chromebook Flip C436FA (C436FA-ENG)&lt;/li>
&lt;li>Portátil HP HP15s-fq&lt;/li>
&lt;/ul>
&lt;p>Material de referencia: &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>Conexión remota sencilla con TeamViewer</title><link>http://kenji.blog/es/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/</link><pubDate>Fri, 13 Jan 2023 01:45:00 +0900</pubDate><guid>http://kenji.blog/es/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/</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 Conexión remota sencilla con TeamViewer" />&lt;h1 id="conexión-remota-sencilla-con-teamviewer">Conexión remota sencilla con TeamViewer
&lt;/h1>&lt;p>Con TeamViewer puedes realizar conexiones de escritorio remoto fácilmente.&lt;/p>
&lt;p>Inicia TeamViewer tanto en el equipo local como en el remoto,
y en el equipo local ingresa el ID y la contraseña del equipo remoto para establecer la conexión.&lt;/p>
&lt;p>Para conectarte remotamente desde la línea de comandos, haz lo siguiente:&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>En &lt;code>&amp;lt;ID&amp;gt;&lt;/code> ingresa el ID del equipo remoto y en &lt;code>&amp;lt;Password&amp;gt;&lt;/code> ingresa la contraseña del equipo remoto.&lt;/p>
&lt;p>Es útil crear un archivo de acceso directo con el comando anterior, ya que te permite omitir la introducción del ID y la contraseña.&lt;/p>
&lt;p>Sitio de referencia: &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>'Colección de citas'</title><link>http://kenji.blog/es/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/es/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 'Colección de citas'" />&lt;blockquote>
&lt;p>Los necios aprenden de la experiencia, los sabios aprenden de la historia. (Otto von Bismarck)&lt;/p>
&lt;/blockquote>
&lt;blockquote>
&lt;p>En lugar de darle un pez a alguien, enséñale a pescar. (Lao-Tse)&lt;/p>
&lt;/blockquote>
&lt;blockquote>
&lt;p>Mantente hambriento, mantente alocado. (Steve Jobs)&lt;/p>
&lt;/blockquote>
&lt;blockquote>
&lt;p>Es mejor hacer las cosas que buscar la perfección. (Mark Zuckerberg)&lt;/p>
&lt;/blockquote>
&lt;blockquote>
&lt;p>Mantenlo simple. (James Gosling)&lt;/p>
&lt;/blockquote>
&lt;blockquote>
&lt;p>No tengo tiempo para preocuparme por a quién no le caigo bien. Estoy demasiado ocupado amando a las personas que me aman. (Snoopy)&lt;/p>
&lt;/blockquote>
&lt;blockquote>
&lt;p>La mayor felicidad para un ser humano es &amp;ldquo;encontrar un trabajo donde pueda hacer uso de sus talentos&amp;rdquo;. (Karl Marx)&lt;/p>
&lt;/blockquote>
&lt;blockquote>
&lt;p>Si el conocimiento a medias es peligroso, ¿dónde está el hombre que tiene suficiente conocimiento para salir del peligro? (Thomas Huxley, 1877)&lt;/p>
&lt;/blockquote>
&lt;blockquote>
&lt;p>Tweedledee añadió: &amp;ldquo;Al contrario, si fuera así, podría ser; y si fuera así, sería; pero como no es así, no es. Eso es la lógica&amp;rdquo;. (Lewis Carroll, &amp;ldquo;Alicia a través del espejo&amp;rdquo;, 1872)&lt;/p>
&lt;/blockquote>
&lt;blockquote>
&lt;p>No es exagerado decir que Claude Shannon es el padre de la era de la información, y que sus logros académicos son de los más grandes del siglo XX. (Evaluación de la Sociedad Matemática Americana)&lt;/p>
&lt;/blockquote>
&lt;blockquote>
&lt;p>Aquellos que conocen el estado actual de la teoría del álgebra simbólica son conscientes de que la validez de este proceso analítico no depende de la interpretación de los símbolos empleados, sino únicamente de las leyes mediante las cuales se combinan. (George Boole, al comienzo de su obra &amp;ldquo;El análisis matemático de la 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/es/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/es/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>Presentamos una página web que permite crear grafos fácilmente.&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>Puede crear grafos ingresando valores numéricos.
También parece que es posible mover elementos con el ratón.&lt;/p>
&lt;p>Al hacer clic en &lt;code>Directed&lt;/code> también puede crear grafos dirigidos.&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>Los grafos creados se pueden guardar como imagen usando &lt;code>Download as PNG&lt;/code>.&lt;/p></description></item><item><title>Resolver el problema del viajante con Mathematica</title><link>http://kenji.blog/es/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/</link><pubDate>Wed, 12 Oct 2022 19:05:58 +0900</pubDate><guid>http://kenji.blog/es/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/</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 Resolver el problema del viajante con Mathematica" />&lt;h1 id="resolver-el-problema-del-viajante-con-mathematica">Resolver el problema del viajante con 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="solución">Solución
&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>La función SparseArray crea una matriz. Cada elemento representa la distancia entre las ciudades de la fila y columna de ese elemento. Por ejemplo, el primer elemento &lt;code>{1,2}-&amp;gt;10&lt;/code> significa que la distancia entre 1 y 2 es 10. El penúltimo elemento &lt;code>{9,9}&lt;/code> indica el tamaño de la matriz, y el último elemento &lt;code>Infinity&lt;/code> significa que la longitud del camino entre ciudades no especificadas es infinita. Es decir, significa que no hay camino.&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>Con la función FindShortestTour, puedes resolver fácilmente el problema del viajante. &lt;code>{1,2,3,4,5,6,7,8,9}&lt;/code> representa los números de las ciudades. &lt;code>DistanceFunction-&amp;gt;(d[[#1,#2]]&amp;amp;)&lt;/code> pasa la matriz d que representa la distancia entre las ciudades.&lt;/p>
&lt;h2 id="salida">Salida
&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>La salida es la distancia más corta y el recorrido en ese momento. La distancia más corta es &lt;code>137&lt;/code>, y el recorrido es &lt;code>1→2→5→9→8→7→6→3→4→1&lt;/code>. Convertido al orden ABC, es &lt;code>A, B, E, I, H, G, F, C, D&lt;/code>.&lt;/p></description></item><item><title>Marcar todas las casillas de verificación en una página web</title><link>http://kenji.blog/es/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/</link><pubDate>Wed, 05 Oct 2022 20:07:06 +0900</pubDate><guid>http://kenji.blog/es/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/</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 las casillas de verificación en una página web" />&lt;p>Para marcar todas las casillas de verificación en una página web, abra DevTools con F12, pegue el siguiente código en la consola y ejecútelo.&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>O bien,&lt;/p>
&lt;p>Cree un nuevo marcador y pegue el siguiente código en la dirección al registrarse (generalmente donde ingresa https://&amp;hellip;).
Muestre la página web donde desea marcar las casillas de verificación y haga clic en el marcador que creó para marcar todas las casillas de verificació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;/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>Si desea desmarcar todas, cambie la parte de &lt;code>boxes[i].checked = true;&lt;/code> del script anterior a &lt;code>boxes[i].checked = false;&lt;/code>.&lt;/p></description></item><item><title>'Fórmulas favoritas'</title><link>http://kenji.blog/es/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/es/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 favoritas'" />&lt;h2 id="teorema-de-wilson">Teorema de Wilson
&lt;/h2>&lt;p>Cuando $p$ es un número primo, se cumple que $(p−1)!≡−1 \pmod p$&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 todo número entero $n≥3$, no existen números enteros positivos $x,y,z$ que cumplan $x^n+y^n=z^n$&lt;/p>
&lt;h2 id="problema-de-basilea">Problema de Basilea
&lt;/h2>&lt;p>$1/1^2+1/2^2+1/3^2+1/4^2+...=π^2/6$&lt;/p>
&lt;h2 id="fórmula-de-los-números-primos-de-euler">Fórmula de los números primos de Euler
&lt;/h2>&lt;p>$n^2+n+41$ da como resultado un número primo para todos los números enteros $n$ desde $0$ hasta $39$&lt;/p></description></item><item><title>'Instalar aplicaciones mediante comandos usando WinGet'</title><link>http://kenji.blog/es/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/es/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 aplicaciones mediante comandos usando WinGet'" />&lt;h2 id="requisitos-previos">Requisitos previos
&lt;/h2>&lt;p>Debe ser Windows 11&lt;/p>
&lt;h2 id="procedimiento">Procedimiento
&lt;/h2>&lt;ol>
&lt;li>Instalar el &lt;code>Instalador de aplicación&lt;/code> desde 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>Instalar la aplicación usando el Símbolo del sistema
&lt;div class="highlight">&lt;div class="chroma">
&lt;table 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="principales-aplicaciones-que-se-pueden-instalar">Principales aplicaciones que se pueden instalar
&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="referencias">Referencias
&lt;/h2>&lt;p>&lt;a class="link" href="https://learn.microsoft.com/ja-jp/windows/package-manager/winget/" target="_blank" rel="noopener"
>Uso de la herramienta winget para instalar y administrar aplicaciones&lt;/a>&lt;/p>
&lt;h3 id="nota-al-margen">Nota al margen
&lt;/h3>&lt;p>Pensé que también podría instalar Paint.Net, pero no pude instalarlo.&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 de Rust'</title><link>http://kenji.blog/es/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/es/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 de Rust'" />&lt;h1 id="características-de-rust">Características de Rust
&lt;/h1>&lt;ul>
&lt;li>Es un lenguaje de programación de código abierto relativamente nuevo desarrollado por Mozilla.&lt;/li>
&lt;li>Es un lenguaje rápido y especializado en programación de sistemas, sin recolección de basura.&lt;/li>
&lt;li>Garantiza la seguridad de la memoria con un mecanismo único de propiedad (ownership) y préstamo (borrowing) como parte de las especificaciones del lenguaje.&lt;/li>
&lt;li>Funciona de forma multiplataforma.&lt;/li>
&lt;li>Incluye de manera predeterminada un excelente administrador de paquetes llamado Cargo.&lt;/li>
&lt;/ul></description></item><item><title>Establecer variables dinámicamente en Github Actions</title><link>http://kenji.blog/es/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/es/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 Establecer variables dinámicamente en Github Actions" />&lt;p>Para establecer variables dinámicamente en Github Actions, se puede lograr escribiendo adicionalmente en $env:GITHUB_ENV como se muestra a continuación.&lt;/p>
&lt;p>【En el caso de 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>【En el caso de 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>'Eliminar etiquetas en git'</title><link>http://kenji.blog/es/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/es/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 'Eliminar etiquetas en git'" />&lt;h1 id="eliminar-etiquetas-locales">Eliminar etiquetas locales
&lt;/h1>&lt;ol>
&lt;li>Usa &lt;code>git tag&lt;/code> para verificar las etiquetas locales existentes.&lt;/li>
&lt;li>Usa &lt;code>git tag -d v0.1.0&lt;/code> para eliminar una etiqueta. (Especifica la etiqueta que deseas eliminar en lugar de &lt;code>v0.1.0&lt;/code>)&lt;/li>
&lt;/ol>
&lt;h1 id="eliminar-etiquetas-remotas">Eliminar etiquetas remotas
&lt;/h1>&lt;ol>
&lt;li>Usa &lt;code>git ls-remote --tags&lt;/code> para verificar las etiquetas remotas existentes.&lt;/li>
&lt;li>Usa &lt;code>git push origin --delete v0.1.0&lt;/code> para eliminar una etiqueta remota. (Especifica la etiqueta que deseas eliminar en lugar de &lt;code>v0.1.0&lt;/code>)&lt;/li>
&lt;/ol>
&lt;h2 id="referencia">Referencia
&lt;/h2>&lt;p>&lt;a class="link" href="https://qumeru.com/magazine/528" target="_blank" rel="noopener"
>¡Cómo eliminar un tag en git de forma remota y local!&lt;/a>&lt;/p></description></item><item><title>Mostrar una ventana simple en Rust</title><link>http://kenji.blog/es/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/es/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 Mostrar una ventana simple en Rust" />&lt;p>Mostrar una ventana simple en 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>El código fuente es el siguiente:&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="referencia">Referencia
&lt;/h2>&lt;p>&lt;a class="link" href="https://qiita.com/benki/items/c01f7da1e1a71cc91d11" target="_blank" rel="noopener"
>Programación de Windows en Rust - Edición CreateWindow&lt;/a>&lt;/p></description></item><item><title>Escribiendo pruebas en Rust</title><link>http://kenji.blog/es/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/es/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 Escribiendo pruebas en Rust" />&lt;p>Para escribir pruebas en Rust, crea una función añadiendo el atributo &lt;code>#[test]&lt;/code> en la línea superior de la definición de la función de prueba.&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>El código de prueba se puede ejecutar con &lt;code>cargo test&lt;/code>. Si la prueba tiene éxito, se imprimirá &lt;code>ok&lt;/code>.
Si falla, se imprimirá &lt;code>FAILED&lt;/code>.&lt;/p>
&lt;p>En caso de éxito&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>En caso de fallo&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>Mostrar un MessageBox en Rust</title><link>http://kenji.blog/es/p/rust%E3%81%A7messagebox%E3%82%92%E8%A1%A8%E7%A4%BA%E3%81%99%E3%82%8B/</link><pubDate>Fri, 30 Sep 2022 23:54:31 +0900</pubDate><guid>http://kenji.blog/es/p/rust%E3%81%A7messagebox%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%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 Mostrar un MessageBox en Rust" />&lt;p>Puede mostrar un MessageBox en Rust siguiendo los pasos a continuación.&lt;/p>
&lt;ol>
&lt;li>Instalar 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"
>Cómo empezar con Rust&lt;/a>.&lt;/li>
&lt;li>Ejecute &lt;code>cargo new --bin MessageBox&lt;/code> en el símbolo del sistema.&lt;/li>
&lt;li>Vaya al directorio &lt;code>MessageBox&lt;/code>.&lt;/li>
&lt;li>Abra &lt;code>Cargo.toml&lt;/code> y modifíquelo de la siguiente manera.&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> y modifíquelo de la siguiente manera.&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>Ejecute &lt;code>cargo run&lt;/code> en el símbolo del sistema.
&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>Para compilar una versión de lanzamiento, ejecute &lt;code>cargo build --release&lt;/code>.&lt;/p>
&lt;/li>
&lt;/ol>
&lt;h1 id="referencia">Referencia
&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>¿Qué significa entender?</title><link>http://kenji.blog/es/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/</link><pubDate>Sat, 24 Sep 2022 02:38:18 +0900</pubDate><guid>http://kenji.blog/es/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/</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 ¿Qué significa entender?" />&lt;h1 id="qué-significa-entender">¿Qué significa entender?
&lt;/h1>&lt;p>¡Hola!&lt;/p>
&lt;p>Hoy me gustaría hablar sobre el tema &amp;ldquo;¿qué significa entender?&amp;rdquo;.&lt;/p>
&lt;hr>
&lt;h2 id="entender-es-en-realidad-algo-ambiguo">¿&amp;ldquo;Entender&amp;rdquo; es en realidad algo ambiguo?
&lt;/h2>&lt;p>En la vida diaria hay momentos en los que sentimos &amp;ldquo;¡lo entiendo!&amp;rdquo;. Pero si lo pensamos bien, ¿ese &amp;ldquo;entender&amp;rdquo; es realmente una comprensión completa?&lt;/p>
&lt;p>Por ejemplo, conducir un coche. Si pisas el acelerador, avanza, y si pisas el freno, se detiene. Podríamos decir que &amp;ldquo;entendemos&amp;rdquo; esto. Sin embargo, ¿no son pocas las personas que pueden explicar detalladamente qué está ocurriendo dentro del motor?&lt;/p>
&lt;hr>
&lt;h2 id="es-necesaria-una-comprensión-completa">¿Es necesaria una comprensión completa?
&lt;/h2>&lt;p>En realidad, aunque no entendamos todo por completo, muchas veces no hay problemas en la vida diaria. Incluso sin conocer la estructura interna de un smartphone, podemos hacer llamadas o enviar mensajes, ¿verdad?&lt;/p>
&lt;p>Pero eso no significa que debamos menospreciar el &amp;ldquo;entender&amp;rdquo;. Al profundizar en la comprensión, pueden surgir nuevos descubrimientos y revelaciones.&lt;/p>
&lt;hr>
&lt;h2 id="también-hay-muchas-cosas-que-no-entendemos">También hay muchas cosas que no entendemos
&lt;/h2>&lt;p>En el mundo hay muchas cosas que aún no se han resuelto. Por ejemplo, el mecanismo de las emociones humanas y la conciencia, o el origen del universo. Estas son áreas que, a pesar del avance de la ciencia, todavía no se &amp;ldquo;entienden&amp;rdquo; por completo.&lt;/p>
&lt;p>Incluso en el mundo de las matemáticas, hay problemas que, siendo simples como la &amp;ldquo;Conjetura de Goldbach&amp;rdquo;, permanecen sin resolver.&lt;/p>
&lt;hr>
&lt;h2 id="el-valor-de-entender">El valor de &amp;ldquo;entender&amp;rdquo;
&lt;/h2>&lt;p>Cuando aumenta lo que &amp;ldquo;entendemos&amp;rdquo;, podemos explicar con confianza y comunicarnos efectivamente con los demás. Además, tener conocimiento tiene la ventaja de hacernos menos propensos a ser engañados por desinformación.&lt;/p>
&lt;hr>
&lt;h2 id="es-importante-tener-una-actitud-humilde">Es importante tener una actitud humilde
&lt;/h2>&lt;p>Reconocer lo que &amp;ldquo;no entendemos&amp;rdquo; conduce a la humildad. Y es precisamente por ese reconocimiento que nace la motivación para seguir aprendiendo.&lt;/p>
&lt;hr>
&lt;p>Por lo tanto, &amp;ldquo;entender&amp;rdquo; es importante, pero comprender todo por completo es algo difícil. Lo importante es conocer los límites de nuestra propia comprensión y mantener una actitud de aprendizaje continuo, ¿no les parece?&lt;/p></description></item><item><title>Por qué me gustan las matemáticas y las computadoras</title><link>http://kenji.blog/es/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/es/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 qué me gustan las matemáticas y las computadoras" />&lt;h2 id="he-pensado-en-por-qué-me-gustan-las-matemáticas-y-las-computadoras">He pensado en por qué me gustan las matemáticas y las computadoras
&lt;/h2>&lt;h3 id="igualdad-para-todos">Igualdad para todos
&lt;/h3>&lt;p>Siempre devuelve el mismo resultado para la misma entrada, sin importar la persona, la posición o el lugar.&lt;/p>
&lt;h3 id="reglas-claras">Reglas claras
&lt;/h3>&lt;p>Las reglas están claramente establecidas, y no hay absurdos ni injusticias.&lt;/p>
&lt;h3 id="las-respuestas-y-teorías-deducidas-son-eternamente-correctas">Las respuestas y teorías deducidas son eternamente correctas
&lt;/h3>&lt;p>No hay que preocuparse de que una respuesta ya calculada sea modificada más tarde.&lt;/p>
&lt;h3 id="tienen-una-dificultad-adecuada">Tienen una dificultad adecuada
&lt;/h3>&lt;p>Siempre hay problemas sin resolver y siempre se puede asumir el desafío de resolverlos.&lt;/p></description></item><item><title>'Lo que necesita una comunidad'</title><link>http://kenji.blog/es/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/</link><pubDate>Fri, 23 Sep 2022 01:37:43 +0900</pubDate><guid>http://kenji.blog/es/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/</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 'Lo que necesita una comunidad'" />&lt;h1 id="lo-que-necesita-una-comunidad">Lo que necesita una comunidad
&lt;/h1>&lt;p>Sentí que las pautas de la comunidad de Scratch son muy refinadas y buenas.
Estaba escrito lo siguiente:&lt;/p>
&lt;blockquote>
&lt;p>Trata a todos con respeto.&lt;/p>
&lt;/blockquote>
&lt;blockquote>
&lt;p>Mantente seguro: no publiques información personal o de contacto.&lt;/p>
&lt;/blockquote>
&lt;blockquote>
&lt;p>Haz comentarios útiles.&lt;/p>
&lt;/blockquote>
&lt;blockquote>
&lt;p>Comprende la cultura del remix.&lt;/p>
&lt;/blockquote>
&lt;blockquote>
&lt;p>Sé honesto.&lt;/p>
&lt;/blockquote>
&lt;blockquote>
&lt;p>Haz que el sitio sea un lugar agradable.&lt;/p>
&lt;/blockquote>
&lt;p>Creo que estas perspectivas son aplicables a cualquier comunidad.&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>Grandes Matemáticos</title><link>http://kenji.blog/es/p/%E6%95%B0%E5%AD%A6%E3%81%AE%E5%81%89%E4%BA%BA%E3%81%9F%E3%81%A1/</link><pubDate>Thu, 22 Sep 2022 23:06:37 +0900</pubDate><guid>http://kenji.blog/es/p/%E6%95%B0%E5%AD%A6%E3%81%AE%E5%81%89%E4%BA%BA%E3%81%9F%E3%81%A1/</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 Grandes Matemáticos" />&lt;h3 id="fermat-p-de-fermat-1601-1665">Fermat (P, de Fermat, 1601-1665)
&lt;/h3>&lt;p>Matemático francés representante del siglo XVII. Sentó las bases de la geometría analítica, la teoría de la probabilidad, el cálculo diferencial, etc. También es el fundador de la teoría de números.&lt;/p>
&lt;h3 id="diofanto-diophantus-c-207-c-291">Diofanto (Diophantus, c. 207-c. 291)
&lt;/h3>&lt;p>Matemático griego. Famoso por la introducción de notación simbólica y el estudio de soluciones racionales. Su obra representativa es &amp;ldquo;Arithmetica&amp;rdquo;. El campo de encontrar soluciones racionales a ecuaciones se llama análisis diofántico.&lt;/p>
&lt;h3 id="euler-l-euler-1707-1783">Euler (L. Euler, 1707-1783)
&lt;/h3>&lt;p>El rey de las matemáticas nacido en Suiza. Logró resultados en todas las áreas posibles de las matemáticas. Dejó más de 700 artículos y 45 libros.&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. Dejó numerosos logros en la teoría de números, integrales elípticas, problemas de atracción gravitatoria, etc. La palabra &amp;ldquo;teoría de números&amp;rdquo; se deriva de su obra principal homónima.&lt;/p>
&lt;h3 id="kummer-e-e-kummer-1810-1893">Kummer (E. E. Kummer, 1810-1893)
&lt;/h3>&lt;p>Matemático alemán. Logró grandes resultados aplicando la teoría de números de los campos ciclotómicos al último teorema de Fermat.&lt;/p>
&lt;h3 id="descartes-r-descartes-1596-1650">Descartes (R. Descartes, 1596-1650)
&lt;/h3>&lt;p>Original filósofo francés. Sus obras representativas incluyen el &amp;ldquo;Discurso del método&amp;rdquo;, la &amp;ldquo;Geometría&amp;rdquo; y &amp;ldquo;El 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 conocido por su investigación en la teoría de la probabilidad y los fluidos. Más tarde se unió a la secta jansenista y se dedicó a actividades religiosas. &amp;ldquo;Pensamientos&amp;rdquo; es una obra de esa época.&lt;/p>
&lt;h3 id="bachet-c-g-bachet-1581-1638">Bachet (C. G. Bachet, 1581-1638)
&lt;/h3>&lt;p>Noble francés que estudió rompecabezas numéricos como pasatiempo. Publicó una traducción latina de la &amp;ldquo;Arithmetica&amp;rdquo; de Diofanto, donde incluyó su propia investigación como comentarios.&lt;/p>
&lt;h3 id="wallis-j-wallis-1616-1703">Wallis (J. Wallis, 1616-1703)
&lt;/h3>&lt;p>Matemático inglés. En su obra principal &amp;ldquo;Arithmetica Infinitorum&amp;rdquo;, dio una forma matemática al concepto de límite y contribuyó a sentar las bases del cálculo.&lt;/p>
&lt;h3 id="brouncker-w-brouncker-1620-1684">Brouncker (W. Brouncker, 1620-1684)
&lt;/h3>&lt;p>Noble irlandés. Primer presidente de la Royal Society (Academia Británica de Ciencias). Entusiasta de las matemáticas que interactuó con Wallis y otros.&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 nacido en Italia. Sucedió a Euler como director del departamento de matemáticas de la Academia de Ciencias de Berlín. Logró grandes resultados en la teoría de números, la 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>Especialista alemán en teoría de números. Hizo numerosas contribuciones a la teoría analítica de números.&lt;/p>
&lt;h3 id="fibonacci-l-fibonacci-c-1175-c-1250">Fibonacci (L. Fibonacci, c. 1175-c. 1250)
&lt;/h3>&lt;p>Matemático italiano. En su obra principal &amp;ldquo;Liber Abaci&amp;rdquo;, utilizó números indo-arábigos y se esforzó por popularizarlos. También discutió los números congruentes en &amp;ldquo;Liber Quadratorum&amp;rdquo;.&lt;/p>
&lt;h3 id="baker-a-baker-1939-">Baker (A. Baker, 1939-)
&lt;/h3>&lt;p>Especialista inglés en teoría de números. Recibió la Medalla Fields junto con Heisuke Hironaka por sus contribuciones a la teoría de números trascendentes.&lt;/p>
&lt;h3 id="poincaré-j-poincare-1854-1912">Poincaré (J. Poincare, 1854-1912)
&lt;/h3>&lt;p>Matemático francés llamado el último erudito universal de las matemáticas. Dejó obras destacadas en la teoría de funciones automórficas, geometría no euclidiana, ecuaciones diferenciales, mecánica celeste, electrodinámica, etc., así como en la crítica científica.&lt;/p>
&lt;h3 id="mordell-l-j-mordell-1888-1972">Mordell (L. J. Mordell, 1888-1972)
&lt;/h3>&lt;p>Matemático nacido en EE. UU. Sus padres eran inmigrantes de Lituania. Tiene muchos artículos sobre la teoría de ecuaciones diofánticas, pero el teorema de Mordell en la teoría de curvas elípticas es particularmente famoso. André Weil amplió esto al caso de las curvas algebraicas generales, y a partir de ahí, la geometría algebraica aritmética experimentó un desarrollo explosivo.&lt;/p>
&lt;h3 id="weil-a-weil-1906-">Weil (A. Weil, 1906-)
&lt;/h3>&lt;p>Matemático francés de ascendencia judía. De joven, se interesó por el último teorema de Fermat y, con el propósito de aplicarlo a la teoría de números, revisó fundamentalmente la geometría algebraica y estableció bases rigurosas. También es conocido por sus escritos sobre la historia de las matemáticas.&lt;/p>
&lt;h3 id="mersenne-m-mersenne-1588-1648">Mersenne (M. Mersenne, 1588-1648)
&lt;/h3>&lt;p>Sacerdote católico francés de la Orden de los Mínimos. Facilitó la correspondencia entre matemáticos de varias regiones. El número que lleva el nombre de número de Mersenne es, de hecho, un número ideado 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. Casi la única persona en ese momento que había obtenido un puesto de profesor como matemático, conocido por su estudio de la cicloide.&lt;/p>
&lt;h3 id="abel-n-h-abel-1802-1829">Abel (N. H. Abel, 1802-1829)
&lt;/h3>&lt;p>Matemático noruego. Logró resultados sobresalientes como la imposibilidad de resolver la ecuación general de quinto grado, la teoría de funciones elípticas y la teoría de integrales abelianas, pero murió joven.&lt;/p>
&lt;h3 id="jacobi-k-g-jacob-1804-1851">Jacobi (K. G. Jacob, 1804-1851)
&lt;/h3>&lt;p>Matemático alemán de ascendencia judía. Dejó grandes resultados en la teoría de funciones elípticas, la teoría de funciones theta, ecuaciones diferenciales, cálculo de variaciones, etc. Introdujo los logros de Abel al mundo. Es conocido por declarar que el propósito de la ciencia es &amp;ldquo;el honor de la mente humana&amp;rdquo; y rechazar el pragmatismo.&lt;/p>
&lt;h3 id="gauss-c-f-gauss-1777-1855">Gauss (C. F. Gauss, 1777-1855)
&lt;/h3>&lt;p>El rey de las matemáticas nacido en Alemania. Conocido por la teoría de números, geometría no euclidiana, geodesia, series hipergeométricas, teoría de superficies, estudio del magnetismo terrestre, etc. Era un perfeccionista y se dice que no publicaba resultados a menos que tuvieran un nivel de perfección tan alto que no dejara rastro de su proceso. Su obra principal es &amp;ldquo;Disquisitiones Arithmeticae&amp;rdquo;.&lt;/p>
&lt;h3 id="lamé-g-lame-1795-1870">Lamé (G. Lame, 1795-1870)
&lt;/h3>&lt;p>Matemático francés. Contribuyó a la mecánica de la elasticidad, la teoría de la conducción del calor, etc.&lt;/p>
&lt;h3 id="liouville-j-liouville-1809-1882">Liouville (J. Liouville, 1809-1882)
&lt;/h3>&lt;p>Matemático francés. Contribuyó a las ecuaciones diferenciales, la teoría de números trascendentes y la teoría de funciones.&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. Fue prolífico y tuvo muchos logros en física teórica y matemáticas. Se dice que en Francia es tan respetado como Gauss.&lt;/p>
&lt;h3 id="galois-e-galois-1811-1832">Galois (E. Galois, 1811-1832)
&lt;/h3>&lt;p>Matemático francés. Aclaró el teorema de Abel de que las ecuaciones de grado 5 o superior generalmente no se pueden resolver algebraicamente introduciendo el concepto de grupo. Cayó en un duelo a una edad temprana, pero ahora se sabe que fue provocado por un asunto trivial de mujeres.&lt;/p>
&lt;h3 id="hensel-k-hensel-1861-1941">Hensel (K, Hensel, 1861-1941)
&lt;/h3>&lt;p>Matemático alemán. Discípulo de Kronecker. Introdujo una teoría llamada sistema p-ádico (análisis p-ádico) en la teoría de números aplicando métodos de teoría de funciones.&lt;/p>
&lt;h3 id="hasse-h-hesse-1898-1979">Hasse (H. Hesse, 1898-1979)
&lt;/h3>&lt;p>Matemático alemán. Discípulo de Hensel, contribuyó a los fundamentos del análisis p-ádico y su aplicación. Organización de la teoría de campos de clases, estudio de la función 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án de ascendencia judía. Contribuyó a la teoría de funciones elípticas, la teoría de números, etc. También es conocido por abogar por una fundamentación aritmética de las matemáticas, pero su personalidad fuertemente subjetiva le dio una imagen negativa a lo largo de su vida, ya que criticó injustificadamente a su colega de la Universidad de Berlín, Weierstrass, y obstaculizó el empleo de Cantor.&lt;/p>
&lt;h3 id="hilbert-d-hilbert-1862-1943">Hilbert (D. Hilbert, 1862-1943)
&lt;/h3>&lt;p>Matemático alemán. Dejó una gran huella en todas las áreas de las matemáticas, incluida la teoría de invariantes, la teoría de números algebraicos y los fundamentos de las matemáticas. Los 23 problemas que propuso en el Congreso Internacional de Matemáticos en París (1900) tuvieron un gran impacto en el desarrollo de las matemáticas.&lt;/p>
&lt;h3 id="riemann-b-riemann-1826-1866">Riemann (B. Riemann, 1826-1866)
&lt;/h3>&lt;p>Matemático alemán. Logró grandes resultados relacionados con la esencia de las matemáticas, como el concepto de superficie de Riemann en la teoría de funciones complejas y la geometría de Riemann.&lt;/p>
&lt;h3 id="faltings-g-faltings-1954-">Faltings (G. Faltings, 1954-)
&lt;/h3>&lt;p>Matemático alemán. Resolvió la conjetura de Mordell en 1983.&lt;/p>
&lt;h3 id="wiles-a-wiles-1953-">Wiles (A, Wiles, 1953-)
&lt;/h3>&lt;p>Matemático nacido en Gran Bretaña. Una figura destacada en este campo, habiendo hecho contribuciones significativas a través de su investigación sobre la conjetura principal de Iwasawa y la conjetura de Birch y Swinnerton-Dyer.&lt;/p>
&lt;h3 id="referencias">Referencias
&lt;/h3>&lt;p>¡El último teorema de Fermat resuelto! Desde Euler hasta la demostración de Wiles (Kodansha)&lt;/p></description></item><item><title>Enumeración de títulos de ventanas</title><link>http://kenji.blog/es/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/</link><pubDate>Tue, 20 Sep 2022 17:03:15 +0900</pubDate><guid>http://kenji.blog/es/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/</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 Enumeración de títulos de ventanas" />&lt;h1 id="enumeración-de-títulos-de-ventanas">Enumeración de títulos de ventanas
&lt;/h1>&lt;p>Este es el método para enumerar los títulos de las ventanas actualmente abiertas usando 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>Ejemplo de salida&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">Sin título - Paint
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">Sin título - Bloc de notas
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">Administrador de tareas
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">Experiencia de entrada de 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>Eliminar carpetas grandes rápidamente</title><link>http://kenji.blog/es/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/es/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 Eliminar carpetas grandes rápidamente" />&lt;h2 id="eliminar-carpetas-grandes-rápidamente">Eliminar carpetas grandes rápidamente
&lt;/h2>&lt;p>Al eliminar carpetas grandes en el Explorador, la velocidad es lenta porque primero se realiza una búsqueda completa del contenido de la carpeta antes de ejecutar la eliminación.
Al eliminar usando comandos como se muestra a continuación, la búsqueda y la eliminación se ejecutan simultáneamente, lo que permite eliminar carpetas grandes rápidamente.&lt;/p>
&lt;ol>
&lt;li>Navegue al directorio de la carpeta de destino en el Símbolo del sistema.&lt;/li>
&lt;li>Ejecute &lt;code>DEL /F /Q /S nombre_de_la_carpeta &amp;gt; NUL&lt;/code>.&lt;/li>
&lt;li>Ejecute &lt;code>RMDIR /Q /S nombre_de_la_carpeta&lt;/code>.&lt;/li>
&lt;/ol></description></item><item><title>Comando para eliminar todo en Salesforce Chatter</title><link>http://kenji.blog/es/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/es/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 eliminar todo en Salesforce Chatter" />&lt;h1 id="comando-para-eliminar-todo-en-salesforce-chatter">Comando para eliminar todo en Salesforce Chatter
&lt;/h1>&lt;p>Este es un comando para eliminar todas las publicaciones y archivos adjuntos en Salesforce Chatter.
Abra la Consola del desarrollador, seleccione &amp;ldquo;Open Execute anonymous Window&amp;rdquo; en el menú Debug, pegue el siguiente código y ejecútelo.
Personalmente, lo utilizo cuando la capacidad de almacenamiento de la organización está al límite.&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">// Vaciar papelera de reciclaje
&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>'Colección de Atajos y Trucos de Windows'</title><link>http://kenji.blog/es/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/es/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 'Colección de Atajos y Trucos de Windows'" />&lt;p>Aquí hay una pequeña colección de trucos que uso habitualmente en Windows. Espero que aquellos que acaban de empezar a usar Windows lo encuentren útil.
Se asume el uso de Windows 11, pero creo que la mayoría también funcionan en Windows 10.&lt;/p>
&lt;h2 id="cerrar-ventana">Cerrar ventana
&lt;/h2>&lt;ul>
&lt;li>&lt;code>Alt + F4&lt;/code> con la ventana activa&lt;/li>
&lt;li>&lt;code>Ctrl + W&lt;/code> con la ventana activa. Cierra la pestaña o ventana (solo en aplicaciones compatibles)&lt;/li>
&lt;li>Haz doble clic en el icono a la izquierda de la barra de título de la ventana&lt;/li>
&lt;li>Haz clic en la &lt;code>×&lt;/code> en la barra de título de la ventana&lt;/li>
&lt;/ul>
&lt;h2 id="mostrar-el-escritorio">Mostrar el escritorio
&lt;/h2>&lt;ul>
&lt;li>&lt;code>Win + D&lt;/code>. Si lo presionas dos veces, vuelve al estado de ventana original. Es útil cuando quieres mostrar el escritorio por un instante.&lt;/li>
&lt;li>&lt;code>Win + M&lt;/code>. Minimiza todas las aplicaciones. No se restaura presionando dos veces.&lt;/li>
&lt;/ul>
&lt;h2 id="entrada-de-voz">Entrada de voz
&lt;/h2>&lt;ul>
&lt;li>&lt;code>Win + H&lt;/code>. Inicia la entrada de voz. Para detenerla, presiona &lt;code>Esc&lt;/code> o &lt;code>Win + H&lt;/code> nuevamente.&lt;/li>
&lt;/ul>
&lt;h2 id="mostrar-el-menú-contextual-clásico-en-el-explorador">Mostrar el menú contextual clásico en el Explorador
&lt;/h2>&lt;ul>
&lt;li>Presiona &lt;code>Shift + F10&lt;/code> o la tecla de aplicación. La tecla de aplicación está en la parte inferior derecha del teclado.&lt;/li>
&lt;/ul>
&lt;h2 id="capturar-una-parte-de-la-pantalla">Capturar una parte de la pantalla
&lt;/h2>&lt;ul>
&lt;li>Con &lt;code>Win + Shift + S&lt;/code> puedes seleccionar un área para capturar la pantalla.&lt;/li>
&lt;li>Con &lt;code>Win + Print Screen&lt;/code> o simplemente &lt;code>Print Screen&lt;/code> puedes capturar la pantalla completa.
(Si agregas &lt;code>Win&lt;/code>, la imagen capturada se guardará en &lt;code>C:\Users\nombre_de_usuario\Pictures\Screenshots&lt;/code>.)&lt;/li>
&lt;li>Con &lt;code>Alt + Print Screen&lt;/code> puedes capturar la ventana actual.&lt;/li>
&lt;/ul>
&lt;h2 id="iniciar-aplicaciones-ancladas-a-la-barra-de-tareas">Iniciar aplicaciones ancladas a la barra de tareas
&lt;/h2>&lt;ul>
&lt;li>Puedes iniciar aplicaciones ancladas a la barra de tareas con &lt;code>Win + número&lt;/code>.
Por ejemplo, al presionar &lt;code>Win + 1&lt;/code> se inicia la primera aplicación a la izquierda en la barra de tareas.&lt;/li>
&lt;li>Con &lt;code>Win + T&lt;/code> puedes enfocar los iconos de la barra de tareas, y si presionas &lt;code>Win + T&lt;/code> varias veces,
o &lt;code>←&lt;/code> o &lt;code>→&lt;/code>, puedes mover la selección y presionar la tecla &lt;code>Enter&lt;/code> para iniciar la aplicación seleccionada.&lt;/li>
&lt;/ul>
&lt;h2 id="acercaralejar">Acercar/Alejar
&lt;/h2>&lt;ul>
&lt;li>&lt;code>Win + +&lt;/code> abre la Lupa de Windows. Luego, puedes acercar o alejar la pantalla con &lt;code>Win + + o -&lt;/code>.&lt;/li>
&lt;li>Puedes acercar o alejar con &lt;code>Ctrl + + o -&lt;/code> en el bloc de notas, navegador, etc. (solo en aplicaciones compatibles).&lt;/li>
&lt;/ul>
&lt;h2 id="bloquear-windows">Bloquear 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>Space&lt;/code> o &lt;code>Enter&lt;/code>&lt;/li>
&lt;/ul>
&lt;h2 id="apagar-windows">Apagar Windows
&lt;/h2>&lt;ul>
&lt;li>Si presionas &lt;code>Alt + F4&lt;/code> estando en el escritorio (usando &lt;code>Win + M&lt;/code> o &lt;code>Win + D&lt;/code>) o con la barra de tareas activa (usando &lt;code>Win + T&lt;/code> o &lt;code>Win + B&lt;/code>), aparecerá un cuadro de diálogo como el siguiente. Asegúrate de que &amp;ldquo;Apagar&amp;rdquo; esté seleccionado y presiona &lt;code>Enter&lt;/code>.
También puedes usar &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>Puedes apagar con &lt;code>Win + X&lt;/code> → &lt;code>U&lt;/code> → &lt;code>U&lt;/code>.&lt;/li>
&lt;li>En el símbolo del sistema o en &amp;ldquo;Ejecutar&amp;rdquo; (&lt;code>Win + R&lt;/code>), escribe &lt;code>shutdown /s /t 0&lt;/code> para apagar. Si agregas &lt;code>/f&lt;/code>, se forzará el apagado.&lt;/li>
&lt;/ul>
&lt;h2 id="reiniciar-windows">Reiniciar Windows
&lt;/h2>&lt;ul>
&lt;li>Si presionas &lt;code>Alt + F4&lt;/code> estando en el escritorio (usando &lt;code>Win + M&lt;/code> o &lt;code>Win + D&lt;/code>) o con la barra de tareas activa (usando &lt;code>Win + T&lt;/code> o &lt;code>Win + B&lt;/code>), aparecerá un cuadro de diálogo como el siguiente. Presiona &lt;code>↓&lt;/code> una vez para seleccionar &amp;ldquo;Reiniciar&amp;rdquo; y luego &lt;code>Enter&lt;/code>.
También puedes usar &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>Puedes reiniciar con &lt;code>Win + X&lt;/code> → &lt;code>U&lt;/code> → &lt;code>R&lt;/code>.&lt;/li>
&lt;li>Puedes reiniciar con &lt;code>shutdown /r /t 0&lt;/code>. Si agregas &lt;code>/f&lt;/code>, se forzará el reinicio.&lt;/li>
&lt;/ul>
&lt;h2 id="suspender-windows">Suspender Windows
&lt;/h2>&lt;ul>
&lt;li>Si presionas &lt;code>Alt + F4&lt;/code> estando en el escritorio (usando &lt;code>Win + M&lt;/code> o &lt;code>Win + D&lt;/code>) o con la barra de tareas activa (usando &lt;code>Win + T&lt;/code> o &lt;code>Win + B&lt;/code>), aparecerá un cuadro de diálogo como el siguiente. Presiona &lt;code>↑&lt;/code> una vez para seleccionar &amp;ldquo;Suspender&amp;rdquo; y luego &lt;code>Enter&lt;/code>.
También puedes usar &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>Puedes hibernar escribiendo &lt;code>rundll32.exe powrprof.dll,SetSuspendState&lt;/code> en &lt;code>Win + R&lt;/code> o en el símbolo del sistema.&lt;/li>
&lt;/ul>
&lt;h2 id="cerrar-sesión-de-windows">Cerrar sesión de Windows
&lt;/h2>&lt;ul>
&lt;li>Si presionas &lt;code>Alt + F4&lt;/code> estando en el escritorio (usando &lt;code>Win + M&lt;/code> o &lt;code>Win + D&lt;/code>) o con la barra de tareas activa (usando &lt;code>Win + T&lt;/code> o &lt;code>Win + B&lt;/code>), aparecerá un cuadro de diálogo como el siguiente. Presiona &lt;code>↑&lt;/code> dos veces para seleccionar &amp;ldquo;Cerrar sesión&amp;rdquo; y luego &lt;code>Enter&lt;/code>.
También puedes usar &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> → &lt;code>Tab&lt;/code> dos veces o &lt;code>↓&lt;/code> dos veces → &lt;code>Enter&lt;/code> o &lt;code>Space&lt;/code>&lt;/li>
&lt;li>Puedes cerrar sesión con &lt;code>logoff&lt;/code>.&lt;/li>
&lt;/ul>
&lt;h2 id="mover-ventanas-con-el-teclado">Mover ventanas con el teclado
&lt;/h2>&lt;ul>
&lt;li>&lt;code>Win + ←&lt;/code> : Mover a la izquierda&lt;/li>
&lt;li>&lt;code>Win + →&lt;/code> : Mover a la derecha&lt;/li>
&lt;li>&lt;code>Win + ↑&lt;/code> : Mover hacia arriba / Maximizar&lt;/li>
&lt;li>&lt;code>Win + ↓&lt;/code> : Mover hacia abajo / Minimizar&lt;/li>
&lt;li>&lt;code>Win + Shift + ← o →&lt;/code> : Mover entre monitores múltiples&lt;/li>
&lt;li>&lt;code>Win + Alt + ← o → o ↑ o ↓&lt;/code> : Mover la ventana sin maximizar/minimizar&lt;/li>
&lt;li>Cuando no está minimizada, presiona &lt;code>Alt + Espacio&lt;/code>, luego &lt;code>M&lt;/code> y usa las teclas de flecha para mover.
※ Como la ventana sigue al cursor del ratón, puedes recuperarla incluso si está fuera de la pantalla.&lt;/li>
&lt;/ul>
&lt;h2 id="finalizar-un-proceso-en-el-administrador-de-tareas">Finalizar un proceso en el Administrador de tareas
&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>Puedes abrir el Administrador de tareas con &lt;code>Ctrl + Shift + Esc&lt;/code>.&lt;/li>
&lt;li>Puedes cambiar de pestaña con &lt;code>Ctrl + Tab&lt;/code>.&lt;/li>
&lt;li>Después de presionar &lt;code>Tab&lt;/code> en la pestaña &lt;code>Detalles&lt;/code>, puedes buscar un proceso por prefijo usando el teclado alfanumérico.&lt;/li>
&lt;li>Con el nombre del proceso seleccionado, presiona la tecla &lt;code>Delete&lt;/code> y luego &lt;code>Enter&lt;/code> para finalizar el proceso.&lt;/li>
&lt;/ol>
&lt;h2 id="finalizar-un-proceso-especificando-su-nombre-con-un-comando">Finalizar un proceso especificando su nombre con un comando
&lt;/h2>&lt;ul>
&lt;li>Puedes finalizar un proceso con &lt;code>taskkill /f /im nombre_del_proceso&lt;/code>.
Por ejemplo, &lt;code>taskkill /f /im explorer.exe&lt;/code> finalizará el explorador.&lt;/li>
&lt;/ul>
&lt;h2 id="iniciar-múltiples-instancias-del-mismo-programa-desde-el-icono-de-la-barra-de-tareas">Iniciar múltiples instancias del mismo programa desde el icono de la barra de tareas
&lt;/h2>&lt;ul>
&lt;li>Al hacer clic izquierdo mientras mantienes presionada la tecla &lt;code>Shift&lt;/code> en la barra de tareas, puedes iniciar múltiples instancias del mismo programa. (Solo aplicaciones que admiten instancias múltiples).&lt;/li>
&lt;/ul>
&lt;h2 id="iniciar-un-programa-con-privilegios-de-administrador">Iniciar un programa con privilegios de administrador
&lt;/h2>&lt;ul>
&lt;li>Al iniciar un programa mientras mantienes presionado &lt;code>Ctrl + Shift&lt;/code>, puedes iniciarlo con privilegios de administrador.&lt;/li>
&lt;/ul>
&lt;h2 id="iniciar-el-explorador">Iniciar el Explorador
&lt;/h2>&lt;ul>
&lt;li>Puedes iniciar el Explorador con &lt;code>Win + E&lt;/code>.&lt;/li>
&lt;li>Presiona &lt;code>Win + R&lt;/code> para abrir &amp;ldquo;Ejecutar&amp;rdquo;, escribe &lt;code>explorer&lt;/code> y presiona &lt;code>Enter&lt;/code>.&lt;/li>
&lt;li>Puedes crear una nueva carpeta con &lt;code>Ctrl + Shift + N&lt;/code>.&lt;/li>
&lt;/ul>
&lt;h2 id="abrir-el-símbolo-del-sistema-en-la-ubicación-abierta-del-explorador">Abrir el símbolo del sistema en la ubicación abierta del Explorador
&lt;/h2>&lt;ul>
&lt;li>En Windows 11, puedes iniciar el símbolo del sistema desde &amp;ldquo;Terminal&amp;rdquo; en el menú contextual.&lt;/li>
&lt;li>Además, puedes iniciar el símbolo del sistema escribiendo &lt;code>cmd&lt;/code> en la barra de direcciones y presionando la tecla &lt;code>Enter&lt;/code>.&lt;/li>
&lt;/ul>
&lt;h2 id="mostrar-el-historial-del-portapapeles">Mostrar el historial del portapapeles
&lt;/h2>&lt;ul>
&lt;li>Puedes mostrar el historial del portapapeles con &lt;code>Win + V&lt;/code>.
Si seleccionas texto o imágenes que copiaste anteriormente, puedes copiarlos nuevamente.&lt;/li>
&lt;/ul>
&lt;h2 id="ejecutar">Ejecutar
&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>Puedes abrir &amp;ldquo;Ejecutar&amp;rdquo; con &lt;code>Win + R&lt;/code>.&lt;/li>
&lt;/ul>
&lt;p>A continuación, se presentan algunos comandos que puedes ejecutar en &amp;ldquo;Ejecutar&amp;rdquo; o en el símbolo del sistema.&lt;/p>
&lt;h2 id="abrir-edge">Abrir 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>Escribe &lt;code>msedge&lt;/code> y presiona &lt;code>Enter&lt;/code>&lt;/li>
&lt;/ul>
&lt;h2 id="abrir-internet-explorer-11-ie11">Abrir 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>Escribe &lt;code>powershell.exe -Command &amp;quot;(New-Object -ComObject InternetExplorer.Application).Visible = $true&amp;quot;&lt;/code> y presiona &lt;code>Enter&lt;/code>&lt;/li>
&lt;/ul>
&lt;h2 id="abrir-terminal">Abrir 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>Escribe &lt;code>wt&lt;/code> y presiona &lt;code>Enter&lt;/code>&lt;/li>
&lt;/ul>
&lt;h2 id="abrir-el-panel-de-control">Abrir el Panel de control
&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>Escribe &lt;code>control&lt;/code> y presiona &lt;code>Enter&lt;/code>&lt;/li>
&lt;li>También puedes abrirlo con &lt;code>explorer.exe shell:::{26EE0668-A00A-44D7-9371-BEB064C98683}&lt;/code>.&lt;/li>
&lt;/ul>
&lt;h2 id="iniciar-el-bloc-de-notas">Iniciar el Bloc 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>Escribe &lt;code>notepad&lt;/code> y presiona &lt;code>Enter&lt;/code>&lt;/li>
&lt;/ul>
&lt;h2 id="iniciar-la-calculadora">Iniciar la 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>Escribe &lt;code>calc&lt;/code> y presiona &lt;code>Enter&lt;/code>&lt;/li>
&lt;/ul>
&lt;h2 id="iniciar-paint">Iniciar 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>Escribe &lt;code>mspaint&lt;/code> y presiona &lt;code>Enter&lt;/code>&lt;/li>
&lt;/ul>
&lt;h2 id="iniciar-powershell">Iniciar 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>Escribe &lt;code>powershell&lt;/code> y presiona &lt;code>Enter&lt;/code>&lt;/li>
&lt;/ul>
&lt;h2 id="iniciar-visual-studio-code">Iniciar 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>Escribe &lt;code>code&lt;/code> y presiona &lt;code>Enter&lt;/code>&lt;/li>
&lt;/ul>
&lt;h2 id="iniciar-excel">Iniciar 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>Escribe &lt;code>excel&lt;/code> y presiona &lt;code>Enter&lt;/code>
※ Solo si Excel está instalado.&lt;/li>
&lt;/ul>
&lt;h2 id="abrir-word">Abrir 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>Escribe &lt;code>winword&lt;/code> y presiona &lt;code>Enter&lt;/code>
※ Solo si Word está instalado.&lt;/li>
&lt;/ul>
&lt;h2 id="abrir-powerpoint">Abrir 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>Escribe &lt;code>powerpnt&lt;/code> y presiona &lt;code>Enter&lt;/code>
※ Solo si PowerPoint está instalado.&lt;/li>
&lt;/ul>
&lt;h2 id="abrir-configuración-del-sistema">Abrir Configuración del 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>Escribe &lt;code>msconfig&lt;/code> y presiona &lt;code>Enter&lt;/code>&lt;/li>
&lt;/ul>
&lt;h2 id="abrir-propiedades-del-sistema">Abrir Propiedades del 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>Escribe &lt;code>sysdm.cpl&lt;/code> y presiona &lt;code>Enter&lt;/code>&lt;/li>
&lt;/ul>
&lt;h2 id="abrir-información-de-la-versión-de-windows">Abrir Información de la versión de 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>Escribe &lt;code>winver&lt;/code> y presiona &lt;code>Enter&lt;/code>&lt;/li>
&lt;/ul>
&lt;h2 id="abrir-el-teclado-en-pantalla">Abrir el Teclado en pantalla
&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>Escribe &lt;code>osk&lt;/code> y presiona &lt;code>Enter&lt;/code>&lt;/li>
&lt;/ul>
&lt;h2 id="abrir-wordpad">Abrir 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>Escribe &lt;code>wordpad&lt;/code> o &lt;code>write&lt;/code> y presiona &lt;code>Enter&lt;/code>&lt;/li>
&lt;/ul>
&lt;h2 id="abrir-el-editor-del-registro">Abrir el Editor del 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>Escribe &lt;code>regedit&lt;/code> y presiona &lt;code>Enter&lt;/code>&lt;/li>
&lt;/ul>
&lt;h2 id="abrir-programas-y-características">Abrir Programas y características
&lt;/h2>&lt;ul>
&lt;li>Escribe &lt;code>explorer.exe shell:::{7b81be6a-ce2b-4676-a29e-eb907a5126c5}&lt;/code> y presiona &lt;code>Enter&lt;/code>&lt;/li>
&lt;/ul>
&lt;h2 id="abrir-propiedades-del-teclado">Abrir Propiedades del teclado
&lt;/h2>&lt;ul>
&lt;li>Escribe &lt;code>explorer.exe shell:::{725BE8F7-668E-4C7B-8F90-46BDB0936430}&lt;/code> y presiona &lt;code>Enter&lt;/code>&lt;/li>
&lt;/ul>
&lt;h2 id="abrir-propiedades-del-mouse">Abrir Propiedades del 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>Escribe &lt;code>explorer.exe shell:::{6C8EEC18-8D75-41B2-A177-8831D59D2D50}&lt;/code> y presiona &lt;code>Enter&lt;/code>&lt;/li>
&lt;/ul>
&lt;h2 id="abrir-sonido">Abrir Sonido
&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>Escribe &lt;code>explorer.exe shell:::{F2DDFC82-8F12-4CDD-B7DC-D4FE1425AA4D}&lt;/code> y presiona &lt;code>Enter&lt;/code>&lt;/li>
&lt;/ul>
&lt;h2 id="abrir-cuentas-de-usuario">Abrir Cuentas de usuario
&lt;/h2>&lt;ul>
&lt;li>Escribe &lt;code>explorer.exe shell:::{60632754-c523-4b62-b45c-4172da012619}&lt;/code> y presiona &lt;code>Enter&lt;/code>&lt;/li>
&lt;/ul>
&lt;h2 id="copiar-texto-del-cuadro-de-mensaje-estándar">Copiar texto del cuadro de mensaje estándar
&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>Puedes copiar el texto de un cuadro de mensaje estándar con &lt;code>Ctrl + C&lt;/code>.
Al copiar el cuadro de mensaje anterior, se copiará lo siguiente en el portapapeles.&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-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">[Window Title]
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">WordPad
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">[Main Instruction]
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">¿Desea guardar los cambios en Documento?
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">[Guardar(S)] [No guardar(N)] [Cancelar]
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h2 id="guardar-la-salida-del-símbolo-del-sistema-en-el-portapapeles">Guardar la salida del símbolo del sistema en el portapapeles
&lt;/h2>&lt;p>Si agregas &lt;code> | clip&lt;/code> (tubería + clip) después de un comando, como &lt;code>echo &amp;quot;hello&amp;quot; | clip&lt;/code>, puedes copiar la salida estándar al portapapeles.&lt;/p>
&lt;h2 id="exportar-la-jerarquía-de-carpetas-como-texto">Exportar la jerarquía de carpetas como texto
&lt;/h2>&lt;p>Puedes usar el comando &lt;code>tree&lt;/code> en el símbolo del sistema para generar la jerarquía de carpetas en formato de árbol.&lt;/p>
&lt;p>Ejemplo de salida&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="referencias">Referencias
&lt;/h2>&lt;ul>
&lt;li>&lt;a class="link" href="https://support.microsoft.com/es-es/windows/m%C3%A9todos-abreviados-de-teclado-de-windows-dcc61a57-8ff0-cffe-9796-cb9706c75eec" target="_blank" rel="noopener"
>Métodos abreviados de teclado de Windows&lt;/a>&lt;/li>
&lt;/ul></description></item><item><title>El atractivo de paint.net</title><link>http://kenji.blog/es/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/es/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 El atractivo de paint.net" />&lt;p>Les presento paint.net, un software de edición de imágenes que utilizo a menudo durante mis tareas de desarrollo.&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="puntos-valiosos-que-no-se-pueden-hacer-con-paint-estándar-de-windows">Puntos valiosos que no se pueden hacer con Paint estándar de Windows
&lt;/h1>&lt;ul>
&lt;li>Puede manejar transparencias y niveles de opacidad&lt;/li>
&lt;li>Puede realizar selecciones automáticas de formas complejas&lt;/li>
&lt;li>Puede manejar capas&lt;/li>
&lt;li>Puede ajustar niveles, brillo, contraste, etc.&lt;/li>
&lt;li>Puede aplicar varios efectos (desenfoque, distorsión, ruido, etc.)&lt;/li>
&lt;/ul>
&lt;h1 id="otras-características">Otras características
&lt;/h1>&lt;ul>
&lt;li>Se puede usar de forma gratuita&lt;/li>
&lt;li>El funcionamiento es relativamente ligero&lt;/li>
&lt;li>Uso intuitivo y sin muchas peculiaridades&lt;/li>
&lt;li>Soporte multilingüe&lt;/li>
&lt;/ul>
&lt;p>Es un software avanzado pero fácil de usar. Yo mismo aún no he dominado todas sus funciones.&lt;/p>
&lt;h1 id="instálalo-aquí">Instálalo aquí
&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>Si deseas elegir la versión gratuita, haz clic en la parte enmarcada en rojo del enlace a continuación.&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>Si lo instalas a través de Microsoft Store tiene un costo, pero a cambio permite actualizaciones automáticas.
Incluso con la versión gratuita, te notifica sobre la información de actualización más reciente, por lo que puedes actualizar de manera muy sencilla.&lt;/p></description></item><item><title>Cómo configurar un dominio personalizado en un repositorio de Github</title><link>http://kenji.blog/es/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/</link><pubDate>Tue, 13 Sep 2022 01:16:40 +0900</pubDate><guid>http://kenji.blog/es/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/</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 Cómo configurar un dominio personalizado en un repositorio de Github" />&lt;p>Para configurar un dominio personalizado en un repositorio de Github, necesitas cambiar la configuración DNS del dominio.
Aquí, explicaremos asumiendo que administras el dominio con
&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="">.
Puedes realizar la misma configuración reescribiendo el registro A en otros registradores.&lt;/p>
&lt;h2 id="cambiar-la-configuración-de-dns-en-onamaecom">Cambiar la configuración de DNS en Onamae.com
&lt;/h2>&lt;p>Para cambiar la configuración de DNS de tu dominio, inicia sesión en el panel de administración de
&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="">.
Después de iniciar sesión, ve a la pantalla de gestión de dominios.
Una vez en la pantalla de gestión de dominios, cambia la configuración de DNS.
Para cambiar la configuración de DNS, configúralo de la siguiente manera:&lt;/p>
&lt;ol>
&lt;li>Accede a &lt;a class="link" href="https://www.onamae.com/" target="_blank" rel="noopener"
>https://www.onamae.com/&lt;/a> y haz clic en &amp;ldquo;Onamae.com Navi Login&amp;rdquo;.&lt;/li>
&lt;li>Ingresa tu &amp;ldquo;ID de Onamae (ID de miembro)&amp;rdquo; y &amp;ldquo;Contraseña&amp;rdquo; y haz clic en el botón de inicio de sesión.&lt;/li>
&lt;li>Haz clic en &amp;ldquo;Configuración de servidores de nombres&amp;rdquo; (ネームサーバーの設定).&lt;/li>
&lt;li>Haz clic en &amp;ldquo;Configuración DNS del dominio&amp;rdquo; (ドメインのDNS設定).&lt;/li>
&lt;li>Selecciona el dominio que deseas configurar y haz clic en &amp;ldquo;Siguiente&amp;rdquo; (次へ).&lt;/li>
&lt;li>Haz clic en &amp;ldquo;Configurar&amp;rdquo; (設定する) a la derecha de &amp;ldquo;Usar configuración de registros DNS&amp;rdquo; (DNSレコード設定を利用する).&lt;/li>
&lt;li>Selecciona A en TYPE, ingresa 3600 en TTL, e ingresa &amp;ldquo;185.199.108.153&amp;rdquo; en VALUE, y haz clic en &amp;ldquo;Añadir&amp;rdquo; (追加).&lt;/li>
&lt;li>Al igual que en el paso 7, añade también &amp;ldquo;185.199.109.153&amp;rdquo;, &amp;ldquo;185.199.110.153&amp;rdquo; y &amp;ldquo;185.199.111.153&amp;rdquo;.&lt;/li>
&lt;li>Asegúrate de que esté marcada la casilla en &amp;ldquo;Confirmación de cambio de servidor de nombres para configuración de registros DNS&amp;rdquo; (DNSレコード設定用ネームサーバー変更確認) y haz clic en &amp;ldquo;Ir a la pantalla de configuración&amp;rdquo; (設定画面へ進む).&lt;/li>
&lt;li>Si aparece una pantalla que dice &amp;ldquo;Para evitar cambios no deseados en la configuración de DNS&amp;rdquo; (意図しないDNS設定変更を防ぐために), haz clic en &amp;ldquo;No configurar&amp;rdquo; (設定しない) (selecciónalo según sea necesario).&lt;/li>
&lt;li>Confirma los detalles de la configuración y haz clic en &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>Con esto concluye la configuración de DNS. Puede tardar hasta 72 horas en reflejarse completamente.&lt;/li>
&lt;li>Si no se refleja después de 72 horas, intenta contactar al soporte de Onamae.com.&lt;/li>
&lt;/ol>
&lt;p>Para verificar si la configuración se ha reflejado en tu entorno local, intenta ejecutar los siguientes comandos.
Reemplaza &lt;code>example.com&lt;/code> con el dominio que deseas verificar.&lt;/p>
&lt;h3 id="para-linux-y-mac">Para Linux y 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>Si el resultado se ve así, la configuración se ha reflejado.&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>Si el resultado se ve así, la configuración se ha reflejado.&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">Respuesta no autoritativa:
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">Nombre: 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-un-dominio-personalizado-en-un-repositorio-de-github">Configurar un dominio personalizado en un repositorio de Github
&lt;/h2>&lt;ol>
&lt;li>Abre la página del repositorio y haz clic en &amp;ldquo;Settings&amp;rdquo; (Configuración).&lt;/li>
&lt;li>Haz clic en &amp;ldquo;Pages&amp;rdquo;.&lt;/li>
&lt;li>Si vas a publicar el código fuente del repositorio tal cual, selecciona &amp;ldquo;Deploy from a branch&amp;rdquo; en Source. Si vas a compilar el código fuente con HUGO u otro generador, selecciona &amp;ldquo;GitHub Actions&amp;rdquo;.&lt;/li>
&lt;li>En Branch, selecciona la rama que deseas publicar y haz clic en &amp;ldquo;Save&amp;rdquo;.&lt;/li>
&lt;li>En &amp;ldquo;Custom domain&amp;rdquo;, ingresa el dominio que adquiriste y haz clic en &amp;ldquo;Save&amp;rdquo;.&lt;/li>
&lt;li>Si es necesario, marca la casilla &amp;ldquo;Enforce HTTPS&amp;rdquo; para habilitar el soporte 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>Generar .gitignore con el comando dotnet</title><link>http://kenji.blog/es/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/es/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 Generar .gitignore con el comando dotnet" />&lt;p>El uso del comando dotnet.exe permite incluso compilar programas sencillos, por lo que resulta útil tenerlo listo para su uso.&lt;/p>
&lt;h2 id="instalación-del-sdk-de-net">Instalación del SDK de .NET
&lt;/h2>&lt;p>Dado que dotnet.exe está incluido en el SDK de .NET, primero instalaremos el SDK de .NET.
Abra cmd.exe con privilegios de administrador y ejecute el siguiente 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="generar-gitignore">Generar .gitignore
&lt;/h2>&lt;p>El comando para generar un archivo .gitignore con dotnet.exe es el siguiente.&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>El archivo .gitignore generado es el siguiente.&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>Hay muchos archivos para Visual Studio, pero también se incluyen elementos que generalmente no necesitan ser gestionados en git, como &amp;ldquo;.DS_Store&amp;rdquo; de Mac.&lt;/p>
&lt;h2 id="sitios-de-referencia">Sitios de referencia
&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 .NET en Windows&lt;/a>&lt;/li>
&lt;/ul></description></item><item><title>'11 Juegos Favoritos'</title><link>http://kenji.blog/es/p/%E5%A5%BD%E3%81%8D%E3%81%AA%E3%82%B2%E3%83%BC%E3%83%A011%E9%81%B8/</link><pubDate>Mon, 12 Sep 2022 19:28:50 +0900</pubDate><guid>http://kenji.blog/es/p/%E5%A5%BD%E3%81%8D%E3%81%AA%E3%82%B2%E3%83%BC%E3%83%A011%E9%81%B8/</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 Juegos Favoritos'" />&lt;p>Al recordar mis juegos favoritos, terminó siendo solo mi salón de la fama.
Como hay muchos juegos antiguos, si aún no los has jugado, por favor pruébalos.&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"
>
La Game Boy original es una consola portátil lanzada por Nintendo en 1989.
Posteriormente, se lanzaron sucesoras como Game Boy Color y 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"
>
Un juego RPG lanzado en 1990 por Square (actualmente Square Enix).
Con una historia que consiste en recolectar de forma insistente tesoros llamados &amp;ldquo;Hihou&amp;rdquo; en diversos escenarios,
fue el primer juego RPG que jugué.&lt;/p>
&lt;h3 id="-kirbys-dream-land-hoshi-no-kirby">② Kirby&amp;rsquo;s Dream Land (Hoshi no Kirby)
&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"
>
Un juego de acción lanzado en 1992 por Nintendo. El desarrollador es HAL Laboratory.
Un juego en el que avanzas aspirando a los enemigos o tragando aire para flotar.
La música y los efectos de sonido también están muy bien hechos, resultando en una obra muy rítmica para jugar.&lt;/p>
&lt;h3 id="-pokémon-rojo-y-verde">③ Pokémon Rojo y Verde
&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"
>
Un juego RPG lanzado en 1996 por Nintendo. Desarrollado por Nintendo EAD, Game Freak y Creatures.
Después de eso, se adaptó al anime y se volvió explosivamente popular, pero yo solo he jugado esta primera generación.&lt;/p>
&lt;h2 id="super-famicom-super-nintendo">Super Famicom (Super Nintendo)
&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"
>
Una consola de videojuegos doméstica lanzada por Nintendo en 1990. En el extranjero también se la conoce 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"
>
Un software para Super Famicom lanzado en 1992 por Nintendo.
Un juego de carreras en el que compites por la posición mientras obstaculizas a los oponentes lanzando ítems como caparazones y plátanos.
Recuerdo haber jugado junto con mi familia y amigos.&lt;/p>
&lt;h3 id="-dragon-quest-v-la-novia-celestial">⑤ Dragon Quest V: La novia celestial
&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"
>
Un juego RPG lanzado en 1992 por Enix.
Es un juego que tiene el elemento de elegir una pareja de matrimonio, y el elemento de poder hacer que los monstruos derrotados se unan a ti.
Jugué de manera exhaustiva hasta lograr que múltiples burbujimos metálicos (Hagure Metal) se unieran a mí.&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"
>
Un juego RPG lanzado en 1992 por Square.
Tiene el elemento de rejugabilidad de seleccionar trabajos (jobs) y dominar las habilidades.
Al igual que con Dragon Quest, recuerdo haber subido de nivel incansablemente en las cuevas.&lt;/p>
&lt;h3 id="-torneko-no-daibouken-fushigi-no-dungeon">⑦ Torneko no Daibouken: Fushigi no 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"
>
Un juego roguelike lanzado en 1993 por Chunsoft.
El predecesor de la serie Fushigi no Dungeon (Mundo Misterioso).
La característica principal es que la forma del calabozo cambia de forma aleatoria cada vez.
Su eslogan es &amp;ldquo;El RPG que puedes jugar 1000 veces&amp;rdquo;.&lt;/p>
&lt;h3 id="-fushigi-no-dungeon-2-fuurai-no-shiren">⑧ Fushigi no Dungeon 2: Fuurai no Shiren
&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"
>
Un juego roguelike lanzado en 1995 por Chunsoft.
Secuela de &amp;ldquo;Torneko no Daibouken&amp;rdquo; de la serie Fushigi no Dungeon.
Hay tiendas dentro del calabozo donde puedes comprar artículos.
(Si sales de la tienda sin comprar, el dueño de la tienda te perseguirá).&lt;/p>
&lt;h3 id="-mother-2-earthbound">⑨ MOTHER 2 (EarthBound)
&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"
>
La segunda entrega de la serie MOTHER, lanzada en 1994 por Nintendo. Desarrollado por Ape y HAL Laboratory.
Posteriormente, en 2006, se lanzó MOTHER 3. Es una obra producida por Shigesato Itoi,
y está llena de una visión del mundo única y palabras filosóficas.&lt;/p>
&lt;h3 id="-the-legend-of-zelda-a-link-to-the-past-kamigami-no-triforce">⑩ The Legend of Zelda: A Link to the Past (Kamigami no Triforce)
&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"
>
Un juego de acción y aventura lanzado en 1991 por Nintendo.
Un juego en el que avanzas recolectando varios ítems y resolviendo pequeños acertijos.
Después se han lanzado varias secuelas. (&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"
>Referencia&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"
>
Consola de videojuegos doméstica lanzada por Nintendo en 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"
>
Un juego de disparos de acción lanzado por Nintendo en 2017.
Un juego en el que aspiras a la victoria asegurando territorio con tinta y derrotando a los oponentes.
En 2022 se lanzó la secuela, Splatoon 3.&lt;/p></description></item><item><title>'Comando para evitar la creación automática de .DS_Store en macOS'</title><link>http://kenji.blog/es/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/</link><pubDate>Mon, 12 Sep 2022 16:03:42 +0900</pubDate><guid>http://kenji.blog/es/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/</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 la creación automática de .DS_Store en macOS'" />&lt;p>El comando para evitar la creación automática de .DS_Store en macOS es el siguiente.
Ejecútalo en la 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>Después de ejecutar el comando, reinicia el 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 la configuración, ejecuta el siguiente 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>Al igual que en el paso anterior, después de cambiar la configuración, reinicia el 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>Eliminar .DS_Store por lotes con PowerShell</title><link>http://kenji.blog/es/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/</link><pubDate>Mon, 12 Sep 2022 10:11:42 +0900</pubDate><guid>http://kenji.blog/es/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/</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 Eliminar .DS_Store por lotes con PowerShell" />&lt;p>Navega al directorio de destino y ejecuta el siguiente comando para eliminar de forma masiva los archivos .DS_Store, incluyendo los de las subcarpetas.&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>Códigos cortos que se pueden usar en HUGO</title><link>http://kenji.blog/es/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/es/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 Códigos cortos que se pueden usar en HUGO" />&lt;h1 id="códigos-cortos-que-se-pueden-usar-en-hugo">Códigos cortos que se pueden usar en 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="otros">Otros
&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="aparte">Aparte
&lt;/h2>&lt;p>Si desea expresar &lt;code>{{&amp;lt; foo &amp;gt;}}&lt;/code> en el sitio, debe escribir &lt;code>{{&amp;lt;/* foo */&amp;gt;}}&lt;/code>.&lt;/p></description></item><item><title>'Cambio de disposición de imágenes en PaperMod'</title><link>http://kenji.blog/es/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/</link><pubDate>Sun, 11 Sep 2022 18:50:40 +0900</pubDate><guid>http://kenji.blog/es/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/</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 'Cambio de disposición de imágenes en PaperMod'" />&lt;p>El diseño por defecto coloca las imágenes en el centro con un 100% de ancho, pero como a veces sentía que eran demasiado grandes, intenté hacer que la imagen se acomodara debajo del título y cambiar el ancho a unos 150px.&lt;/p>
&lt;p>Los cambios en los archivos son los siguientes.&lt;/p>
&lt;h2 id="blankcss">blank.css
&lt;/h2>&lt;p>Para cambiar los márgenes, el tamaño de la imagen y las líneas de visualización de texto, agregamos el siguiente código a 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 no se pudo eliminar la definición en el lado de blank.css, eliminamos una línea de post-entry.css en la siguiente ubicació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;/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">Eliminar&lt;/span> &lt;span class="err">esta&lt;/span> &lt;span class="err">línea&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 cambiar la disposición de las imágenes, modificamos las siguientes partes de 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;!-- Mover abajo --&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;!-- Mover abajo --&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;!-- Añadido --&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;!-- Añadido --&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 desde arriba --&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 desde arriba --&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;!-- Añadido --&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;!-- Añadido --&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;!-- Añadido --&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;!-- Añadido --&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 hay bastantes peticiones similares.&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>Sería de agradecer que lo soportaran en la versión original.&lt;/p></description></item><item><title>Cómo configurar Twitter Card en PaperMod</title><link>http://kenji.blog/es/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/es/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 Cómo configurar Twitter Card en PaperMod" />&lt;h1 id="introducción">Introducción
&lt;/h1>&lt;p>El tema PaperMod soporta Twitter Cards.
Sin embargo, la configuración de Twitter Card debe escribirse en &lt;code>config.toml&lt;/code> o en la información de cabecera de los archivos &lt;code>*.md&lt;/code> de cada artículo.
Si se configura tanto en cada artículo como en &lt;code>config.toml&lt;/code>, la información de cabecera de cada artículo tendrá prioridad.&lt;/p>
&lt;h1 id="método-de-configuración">Método de configuración
&lt;/h1>&lt;h2 id="configtoml">config.toml
&lt;/h2>&lt;p>En &lt;code>config.toml&lt;/code>, agrega un elemento llamado &lt;code>images&lt;/code> bajo &lt;code>[params]&lt;/code>.
En &lt;code>images&lt;/code>, escribe la ruta de la imagen que se mostrará en la Twitter Card.
Si colocas la imagen en la carpeta &lt;code>static&lt;/code>, solo necesitas especificar el nombre del archivo.&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>Estructura de carpetas&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 (Escribir aquí)
&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">│ └─carpeta del artículo
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">│ │ index.md (Escribir aquí)
&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 (Colocar aquí)
&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 (Colocar aquí)
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h2 id="información-de-cabecera-de-cada-artículo">Información de cabecera de cada artículo
&lt;/h2>&lt;p>En la información de cabecera de cada artículo, agrega un elemento llamado &lt;code>image&lt;/code> bajo &lt;code>cover&lt;/code>.
Si configuras &lt;code>relative&lt;/code> como &lt;code>true&lt;/code>, puedes especificarlo con una ruta relativa desde el archivo &lt;code>*.md&lt;/code> del artículo.&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="si-no-deseas-que-se-muestre-en-la-parte-superior-del-artículo">Si no deseas que se muestre en la parte superior del artículo
&lt;/h3>&lt;p>Si no deseas mostrar la imagen de portada en la parte superior del artículo, agrega un elemento llamado &lt;code>hidden&lt;/code> bajo &lt;code>cover&lt;/code> y configúralo 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-el-tamaño-de-la-imagen">Sobre el tamaño de la imagen
&lt;/h1>&lt;p>En la especificación actual de PaperMod, parece que el tamaño de Twitter Card solo soporta &lt;code>summary_large_image&lt;/code>.
El tamaño adecuado (resolución) para &lt;code>summary_large_image&lt;/code> tiene varias opiniones, pero parece que alrededor de &lt;code>800 x 418&lt;/code> (proporción de imagen 1.91:1) es una buena opción.&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"
>Sitio de referencia 1&lt;/a>
&lt;a class="link" href="https://developers.facebook.com/docs/sharing/best-practices" target="_blank" rel="noopener"
>Sitio de referencia 2&lt;/a>&lt;/p>
&lt;p>Si es posible, se recomienda redimensionar la imagen antes de publicarla.&lt;/p>
&lt;h1 id="método-de-confirmación-de-la-configuración">Método de confirmación de la configuración
&lt;/h1>&lt;p>Para confirmar la configuración de Twitter Card, utiliza el &lt;a class="link" href="https://cards-dev.twitter.com/validator" target="_blank" rel="noopener"
>Twitter Card Validator&lt;/a>.
Sin embargo, en mi entorno la vista previa no se mostraba correctamente, por lo que si no se muestra la vista previa, se recomienda verificarlo una vez antes de publicar usando una cuenta privada, etc.&lt;/p></description></item><item><title>Uso de GitHub Copilot en IntelliJ IDEA</title><link>http://kenji.blog/es/p/intellij-idea%E3%81%A7github-copilot%E3%82%92%E4%BD%BF%E3%81%86/</link><pubDate>Sat, 10 Sep 2022 09:44:55 +0900</pubDate><guid>http://kenji.blog/es/p/intellij-idea%E3%81%A7github-copilot%E3%82%92%E4%BD%BF%E3%81%86/</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 Uso de GitHub Copilot en IntelliJ IDEA" />&lt;h1 id="introducción">Introducción
&lt;/h1>&lt;p>GitHub Copilot es una herramienta de autocompletado de código basada en IA desarrollada por GitHub.
Al instalar el plugin de GitHub Copilot en el entorno de desarrollo IntelliJ IDEA, puedes usar GitHub Copilot en IntelliJ IDEA.
Para activarlo, se requiere una cuenta de GitHub.&lt;/p>
&lt;h1 id="método-de-instalación">Método de instalación
&lt;/h1>&lt;ol>
&lt;li>Selecciona Settings desde el menú File en IntelliJ IDEA.&lt;/li>
&lt;li>Selecciona Plugins y busca &amp;ldquo;GitHub Copilot&amp;rdquo; en la búsqueda.
&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>Instala usando el botón de instalación.
&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>Presiona el botón Restart IDE para reiniciar 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"
>
La instalación se completa después de reiniciar IntelliJ IDEA.&lt;/li>
&lt;/ol>
&lt;h1 id="activación">Activación
&lt;/h1>&lt;ol>
&lt;li>Haz clic en el ícono en la parte inferior derecha.&lt;/li>
&lt;li>Haz clic en 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>Haz clic en el botón 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>Se abrirá el navegador, inicia sesión en GitHub si no lo has hecho, pega el código con Ctrl+V y haz clic en el botón 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>Haz clic en el botón 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"
>
La activación se completa si se muestra la pantalla anterior.&lt;/li>
&lt;/ol>
&lt;h1 id="probándolo">Probándolo
&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"
>
Cuando escribes unos pocos caracteres en el editor de IntelliJ IDEA, GitHub Copilot comenzará a sugerir la continuación del código.
¡Así que disfruta de la poderosa función de autocompletado impulsada por IA!&lt;/p></description></item><item><title>Cómo instalar Go</title><link>http://kenji.blog/es/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/</link><pubDate>Sat, 10 Sep 2022 00:48:17 +0900</pubDate><guid>http://kenji.blog/es/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/</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 Cómo instalar Go" />&lt;h1 id="introducción">Introducción
&lt;/h1>&lt;p>Go es un lenguaje de programación relativamente nuevo publicado por Google en 2009.
El compilador, las herramientas y las bibliotecas de Go se publican como código abierto.
Además, Go es un lenguaje de tipado estático como C y Java, pero es un lenguaje que no utiliza punteros como el lenguaje C.&lt;/p>
&lt;h1 id="método-de-instalación">Método de instalación
&lt;/h1>&lt;p>&lt;a class="link" href="https://go.dev/dl/" target="_blank" rel="noopener"
>Instalar Go&lt;/a>&lt;/p>
&lt;p>Desde el sitio anterior, se publican instaladores para cada plataforma.&lt;/p>
&lt;p>Siga la pantalla para proceder con la instalación.
&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>La instalación se ha completado. Es fácil, ¿verdad?&lt;/p>
&lt;h1 id="primer-programa">Primer programa
&lt;/h1>&lt;p>Guarde el siguiente 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>Al ejecutar &lt;code>go run hello.go&lt;/code> desde el símbolo del sistema o la terminal, se mostrará &lt;code>Hello, world!&lt;/code>.&lt;/p>
&lt;p>Si desea compilarlo, al ejecutar &lt;code>go build hello.go&lt;/code>, se generará &lt;code>hello.exe&lt;/code>.
Al ejecutar &lt;code>hello.exe&lt;/code>, se mostrará &lt;code>Hello, world!&lt;/code>.&lt;/p>
&lt;h1 id="también-puede-ejecutar-código-en-la-página-web">También puede ejecutar código en la página 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="documentación-en-japonés">Documentación en japonés
&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>Las explicaciones necesarias para aprender Go están concentradas en el enlace anterior (versión traducida al japonés).
Dado que la tecnología relacionada con Go es abierta, es tan completa que no es necesario comprar textos en papel.&lt;/p>
&lt;p>¡Entonces, que disfrutes de tu vida con Go!&lt;/p></description></item><item><title>La dialéctica de Hegel</title><link>http://kenji.blog/es/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/</link><pubDate>Fri, 09 Sep 2022 23:13:19 +0900</pubDate><guid>http://kenji.blog/es/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/</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 La dialéctica de Hegel" />&lt;h2 id="qué-es-la-dialéctica-de-hegel">¿Qué es la dialéctica de Hegel?
&lt;/h2>&lt;blockquote>
&lt;p>Hegel captó el significado positivo de las contradicciones en las que cae la razón, y sostuvo que, en general, todas las cosas finitas generan sus opuestos impulsadas por sus contradicciones inherentes y, a través de esta mediación, ambas se superan hacia una etapa superior. Afirmó que este es el principio de todo movimiento en el mundo real.
(De Kotobank)&lt;/p>
&lt;/blockquote>
&lt;p>Mi interpretación es que todas las doctrinas y pensamientos del mundo real no son simplemente correctos de manera absoluta,
sino que inevitablemente contienen contradicciones internas, y al comprender e integrar esa estructura de oposición,
nuestra percepción evoluciona hacia un nivel superior.&lt;/p>
&lt;p>Creo que esto se aplica no solo a la forma de pensar de las personas, sino también a todos los fenómenos del mundo natural.&lt;/p>
&lt;p>En toda la materia, si hay una acción, hay una reacción; si todo se mueve, hay fricción. La gravedad no solo existe para el sol y la Tierra, sino que todas las sustancias se influyen mutuamente.
El flujo de un río y el flujo del viento no fluyen simplemente en una sola dirección, sino que, al recibir diversas fuerzas, su flujo cambia en un instante.&lt;/p>
&lt;p>Hablando en términos técnicos, los programas de computadora también contienen inevitablemente errores (bugs) en su interior, y al eliminarlos, se desarrollan en programas de mayor nivel.
Creo que se puede decir que un programa sin errores es un programa aburrido que no ha evolucionado. Tarde o temprano, quedará obsoleto.&lt;/p>
&lt;p>El entorno que nos rodea cambia constantemente con la época. En lugar de ignorar nuestras propias contradicciones, justificarlas de manera extraña o fijar nuestra forma de pensar,
me gustaría revisar constantemente mi forma de pensar y de percibir las cosas, y cambiar mi pensamiento de manera flexible.&lt;/p></description></item><item><title>Kamukura (Ramen) por primera vez en años</title><link>http://kenji.blog/es/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/es/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) por primera vez en años" />&lt;p>Fui a Kamukura (Ramen) por primera vez en varios años.&lt;/p>
&lt;p>&lt;strong>Ramen de cebolla verde y kimchi&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>Estaba delicioso. Es un sabor que a veces te dan ganas de comer.&lt;/p></description></item><item><title>'Enumerando números primos en Rust'</title><link>http://kenji.blog/es/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/</link><pubDate>Fri, 09 Sep 2022 07:08:49 +0900</pubDate><guid>http://kenji.blog/es/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/</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 en Rust'" />&lt;p>He escrito un programa para enumerar números primos en 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 relajante</title><link>http://kenji.blog/es/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/</link><pubDate>Thu, 08 Sep 2022 17:40:26 +0900</pubDate><guid>http://kenji.blog/es/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/</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 relajante" />&lt;p>&lt;strong>Lista de reproducción de jazz relajante&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 cafetería</title><link>http://kenji.blog/es/p/%E3%82%AB%E3%83%95%E3%82%A7%E9%9F%B3%E6%A5%BD/</link><pubDate>Thu, 08 Sep 2022 08:39:03 +0900</pubDate><guid>http://kenji.blog/es/p/%E3%82%AB%E3%83%95%E3%82%A7%E9%9F%B3%E6%A5%BD/</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 cafetería" />&lt;p>&lt;strong>Ritmo rápido&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(En vivo)&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 es la motivación para estudiar duro todos los días | 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>Videos que aumentan la motivación</title><link>http://kenji.blog/es/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/es/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 Videos que aumentan la motivación" />&lt;h2 id="está-bien-si-el-esfuerzo-no-es-reconocido">Está bien si el esfuerzo no es reconocido
&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="los-valores-son-mucho-más-diversos">Los valores son mucho más diversos
&lt;/h2>&lt;p>Yusuke Narita &amp;ldquo;De las desgracias que sufren los humanos&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="las-acciones-que-realizas-se-reflejan-directamente">Las acciones que realizas se reflejan directamente
&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="el-pensamiento-de-hayao-miyazaki">El pensamiento 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>Especificaciones actuales de mi PC principal</title><link>http://kenji.blog/es/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/</link><pubDate>Thu, 08 Sep 2022 01:55:00 +0900</pubDate><guid>http://kenji.blog/es/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/</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 Especificaciones actuales de mi PC principal" />&lt;p>Aquí dejo las especificaciones de mi PC principal.&lt;/p>
&lt;table>
&lt;thead>
&lt;tr>
&lt;th>Nombre del elemento&lt;/th>
&lt;th>Valor&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>Procesador&lt;/td>
&lt;td>Intel Core i7-8700K CPU @ 3.70GHz 3.70 GHz&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Memoria&lt;/td>
&lt;td>32.0 GB&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Tipo de sistema&lt;/td>
&lt;td>Sistema operativo de 64 bits, procesador basado en x64&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>SO&lt;/td>
&lt;td>Windows 11 Enterprise (Versión 21H2, compilación 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>Sitios de colecciones de iconos simples</title><link>http://kenji.blog/es/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/</link><pubDate>Wed, 07 Sep 2022 16:46:56 +0900</pubDate><guid>http://kenji.blog/es/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/</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 Sitios de colecciones de iconos 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="thousands-of-free-icons">Thousands of free icons
&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>Cambio de paleta de colores de PaperMod</title><link>http://kenji.blog/es/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/es/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 Cambio de paleta de colores de PaperMod" />&lt;p>He cambiado la paleta de colores del tema PaperMod. Me referí al siguiente enlace para saber cómo hacerlo:&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>La ruta del CSS es la siguiente:&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>Por ahora, no hay cambios en el modo oscuro.&lt;/p></description></item><item><title>'La consideración de los niños'</title><link>http://kenji.blog/es/p/%E5%AD%90%E4%BE%9B%E3%81%AE%E3%81%9D%E3%82%93%E3%81%9F%E3%81%8F/</link><pubDate>Wed, 07 Sep 2022 04:40:52 +0900</pubDate><guid>http://kenji.blog/es/p/%E5%AD%90%E4%BE%9B%E3%81%AE%E3%81%9D%E3%82%93%E3%81%9F%E3%81%8F/</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 'La consideración de los niños'" />&lt;p>Cuando mamá se enfermó y tuvo que quedarse en cama,
al preguntarle a mi hija (2 años) sobre preparar la cena o el baño, &amp;ldquo;¿Le pedimos esto a mamá?&amp;rdquo;,
me respondió: &amp;ldquo;¡No, está durmiendo!&amp;rdquo;, y pensé que, a su manera, estaba siendo considerada.&lt;/p>
&lt;p>Me alegra ver que parece estar convirtiéndose en alguien que se preocupa por los demás.&lt;/p></description></item><item><title>Notas de Gestión</title><link>http://kenji.blog/es/p/%E7%B5%8C%E5%96%B6%E8%80%85%E3%83%A1%E3%83%A2/</link><pubDate>Wed, 07 Sep 2022 02:36:11 +0900</pubDate><guid>http://kenji.blog/es/p/%E7%B5%8C%E5%96%B6%E8%80%85%E3%83%A1%E3%83%A2/</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 Gestión" />&lt;h1 id="encontrar-negocios-que-se-estén-popularizando">Encontrar negocios que se estén popularizando
&lt;/h1>&lt;ul>
&lt;li>Preguntar a la gente de Hot Pepper o a los contadores fiscales sobre los negocios que se están popularizando&lt;/li>
&lt;li>No entrar en negocios donde ya hay competidores fuertes y el mercado está saturado&lt;/li>
&lt;li>Solo entrar en negocios donde haya certeza de que se pueden atraer clientes (no entrar en negocios donde los competidores existentes utilizan métodos de atracción de clientes especiales e inimitables)&lt;/li>
&lt;/ul>
&lt;h1 id="imitar-a-fondo">Imitar a fondo
&lt;/h1>&lt;ul>
&lt;li>Investigar cuál es la lógica de negocio antes de entrar&lt;/li>
&lt;li>Copiar exhaustivamente&lt;/li>
&lt;li>Y después de eso, mejorar&lt;/li>
&lt;/ul>
&lt;h1 id="sistematizar">Sistematizar
&lt;/h1>&lt;ul>
&lt;li>Crear manuales para todo de manera que cualquiera pueda hacerlo sin tener que esforzarse&lt;/li>
&lt;li>Pensar e implementar sistemas con ideas para aumentar las ventas (aumentar el número de clientes, el gasto por cliente) y reducir gastos (costos laborales, costos de publicidad)&lt;/li>
&lt;/ul>
&lt;h1 id="filosofía-del-gerente">Filosofía del gerente
&lt;/h1>&lt;ul>
&lt;li>La filosofía del gerente es &amp;ldquo;maximizar las ganancias de la empresa&amp;rdquo;, ni más ni menos&lt;/li>
&lt;li>Es un error hacer de la contribución a la sociedad o de ser querido por los empleados la filosofía del gerente (pensar que esas cosas vendrán naturalmente después)&lt;/li>
&lt;/ul>
&lt;!--
via https://www.youtube.com/watch?v=2TALYTLAke0
--></description></item><item><title>'Mis pensamientos sobre Japón'</title><link>http://kenji.blog/es/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/</link><pubDate>Tue, 06 Sep 2022 02:24:11 +0900</pubDate><guid>http://kenji.blog/es/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/</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 'Mis pensamientos sobre Japón'" />&lt;p>Voy a organizar lo que pienso y me parece extraño de la sociedad japonesa.&lt;/p>
&lt;h1 id="sobre-las-becas">Sobre las becas
&lt;/h1>&lt;p>Hablando de las becas en Japón, la mayoría devengan intereses y deben ser reembolsadas.
Además, las tasas universitarias han estado aumentando constantemente desde 1950, y la tasa de beneficiarios también está en aumento.&lt;/p>
&lt;p>&lt;img src="http://kenji.blog/images/japanese_tuition_fee.png"
loading="lazy"
alt="Evolución de las tasas universitarias"
>
&lt;img src="http://kenji.blog/images/receipt_rate.png"
loading="lazy"
alt="Evolución de la tasa de beneficiarios de becas"
>&lt;/p>
&lt;p>Por otro lado, la cantidad media total prestada recientemente parece ascender a 3,24 millones de yenes.&lt;/p>
&lt;blockquote>
&lt;p>Entre los usuarios de becas de la Organización de Servicios Estudiantiles de Japón, la cantidad media total prestada es de 3.243.000 yenes. &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"
>Referencia&lt;/a>&lt;/p>
&lt;/blockquote>
&lt;p>Si a los 22 años, al graduarse de la universidad, uno tiene que cargar con una deuda de 3 millones de yenes, es natural que el momento del matrimonio se retrase, y también es natural que sea más difícil tener hijos, lo que creo que es una de las causas de la disminución de la tasa de natalidad en Japón.&lt;/p>
&lt;h1 id="la-omnipresente-teoría-de-la-responsabilidad-personal">La omnipresente teoría de la responsabilidad personal
&lt;/h1>&lt;p>Esto es algo intuitivo, pero creo que existe una fría apariencia pública de &amp;ldquo;los demás son los demás&amp;rdquo;.
Quizás sea una tendencia inevitable después de que la recesión haya durado décadas, pero
incluso con el problema de las becas mencionado anteriormente, no se percibe como un problema de toda la sociedad, y siento que las voces de los jóvenes y de las minorías, que tienen pocos votos en las elecciones, son ignoradas.
A pesar de que a largo plazo es un problema muy importante para todo Japón.&lt;/p>
&lt;p>En lugar de dirigirse hacia una competencia excesiva, creo que el espíritu de ayudar juntos si hay personas, generaciones o grupos en apuros, es muy importante para el país.
(Sin embargo, me resulta incómodo que el país insista en la &amp;ldquo;autoayuda y ayuda mutua&amp;rdquo;. Me gustaría que tomen la iniciativa de ayudar a los vulnerables de manera proactiva.)&lt;/p>
&lt;p>(Este artículo se actualizará según sea necesario.)&lt;/p>
&lt;h2 id="características-de-los-japoneses-desde-la-perspectiva-de-la-ia">Características de los japoneses desde la perspectiva de la IA
&lt;/h2>&lt;p>Sí, explicaré las características de los japoneses.&lt;/p>
&lt;p>【Aspectos positivos】&lt;/p>
&lt;ul>
&lt;li>Los japoneses son educados y tienen una cultura de prestar atención al respeto y al trato hacia los demás.&lt;/li>
&lt;li>La puntualidad es estricta, y se respeta cumplir con los horarios.&lt;/li>
&lt;li>El pensamiento colectivista es fuerte, y se valora el trabajo en equipo y la cooperación.&lt;/li>
&lt;li>Se valora la limpieza, y hay una tendencia a ser entusiastas con los modales en los espacios públicos y la limpieza.&lt;/li>
&lt;li>Se valoran los regalos y recuerdos, y la cultura de agradecer está ampliamente extendida.&lt;/li>
&lt;/ul>
&lt;p>【Aspectos negativos】&lt;/p>
&lt;ul>
&lt;li>En ocasiones no son buenos para expresar sus opiniones personales y tienden a evitar los conflictos de opinión.&lt;/li>
&lt;li>Es una cultura laboral muy estricta, y a veces se consideran un problema las horas extras y el karoshi (muerte por exceso de trabajo).&lt;/li>
&lt;li>Aún persisten problemas de discriminación y exclusión hacia los extranjeros, y a veces se cuestiona la armonía con la comunidad internacional.&lt;/li>
&lt;li>Existe una tendencia autoritaria, y a veces se señala que a menudo se aceptan incondicionalmente las opiniones de los jefes o mayores.&lt;/li>
&lt;li>Es una sociedad cerrada, y a veces se critica la tendencia a ser reacios a aceptar culturas y valores externos.&lt;/li>
&lt;/ul></description></item><item><title>Cómo empezar con Rust</title><link>http://kenji.blog/es/p/rust%E3%81%AE%E3%81%AF%E3%81%98%E3%82%81%E3%81%8B%E3%81%9F/</link><pubDate>Tue, 06 Sep 2022 00:12:36 +0900</pubDate><guid>http://kenji.blog/es/p/rust%E3%81%AE%E3%81%AF%E3%81%98%E3%82%81%E3%81%8B%E3%81%9F/</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 Cómo empezar con Rust" />&lt;h1 id="introducción">Introducción
&lt;/h1>&lt;p>Rust es un lenguaje de programación relativamente nuevo que permite escribir módulos rápidos y eficientes en el uso de la memoria con una sintaxis moderna.
Es compatible con múltiples plataformas y se utiliza en mundos como WebAssembly y sistemas embebidos.
Como ejemplos famosos, es utilizado por Firefox, DropBox y Cloudflare.&lt;/p>
&lt;p>También está llamando la atención como una alternativa a C++.&lt;/p>
&lt;h1 id="método-de-instalación">Método de instalación
&lt;/h1>&lt;p>&lt;a class="link" href="https://www.rust-lang.org/ja/tools/install" target="_blank" rel="noopener"
>Instalar Rust&lt;/a>&lt;/p>
&lt;p>En el sitio mencionado anteriormente se publican los métodos de instalación para cada plataforma.&lt;/p>
&lt;h1 id="primer-programa">Primer programa
&lt;/h1>&lt;p>Guarde el siguiente 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>Al ejecutar &lt;code>rustc main.rs&lt;/code> desde el símbolo del sistema o la terminal,
se compilará, y al ejecutar &lt;code>./main&lt;/code> (&lt;code>main.exe&lt;/code> en el caso de Windows), se imprimirá &lt;code>Hello, world!&lt;/code>.&lt;/p>
&lt;h1 id="documentación-en-japonés">Documentación en 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 Versión Japonesa&lt;/a>&lt;/p>
&lt;p>Las explicaciones necesarias para aprender Rust están recopiladas en el enlace anterior (versión traducida al japonés).
Es tan completo que no hay necesidad de comprar un libro de texto de Rust.&lt;/p>
&lt;h1 id="si-desea-probarlo-en-la-web">Si desea probarlo en la Web
&lt;/h1>&lt;p>Si desea probarlo en la Web sin instalar un compilador, puede utilizar &lt;a class="link" href="https://play.rust-lang.org/" target="_blank" rel="noopener"
>The Rust Playground&lt;/a>.
Al ingresar el código y presionar el &amp;ldquo;botón de ejecución&amp;rdquo;, se compilará y ejecutará en la Web.&lt;/p></description></item><item><title>Cambié mi entorno de internet de Flets Hikari a J:COM</title><link>http://kenji.blog/es/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/es/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 Cambié mi entorno de internet de Flets Hikari a J:COM" />&lt;h1 id="cambié-el-entorno-de-internet-de-mi-casa-de-flets-hikari-a-jcom">Cambié el entorno de internet de mi casa de Flets Hikari 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>Por recomendación de un conocido, cambié la conexión a internet de mi casa de Flets Hikari a J:COM. Las razones fueron,&lt;/p>
&lt;ol>
&lt;li>La tarifa mensual es más barata. De 3,619 yenes a 2,180 yenes.&lt;/li>
&lt;li>La velocidad de internet aumenta de 100 Mbps a 320 Mbps.&lt;/li>
&lt;/ol>
&lt;p>Estos puntos.&lt;/p>
&lt;h1 id="impresiones-tras-usarlo">Impresiones tras usarlo
&lt;/h1>&lt;p>Ha pasado aproximadamente una semana desde el cambio y hasta ahora no hay casi ningún problema. A continuación menciono algunas cosas que me llamaron la atención.&lt;/p>
&lt;p>Me di cuenta al hacer el cambio que la velocidad de descarga ciertamente aumentó y pasó de 60 Mbps a casi 320 Mbps. Sin embargo, en cuanto a la velocidad de subida, con Flets Hikari llegaba a 40 Mbps, pero bajó a unos 10 Mbps. Parece que esto es una especificación del lado de J:COM.
Por ahora no hago transmisiones en vivo ni subo grandes cantidades de datos, así que veré cómo evoluciona.&lt;/p>
&lt;p>Además, últimamente tanto mi familia como yo trabajamos principalmente desde casa (teletrabajo), y hoy por primera vez el internet se desconectó durante unas decenas de minutos. Se recuperó automáticamente, pero tal vez no sea un buen comienzo. Aún no ha pasado ni una semana desde el cambio, pero bueno&amp;hellip;&lt;/p>
&lt;p>Como nota al margen, parece que J:COM restringe las conexiones P2P, por lo que la velocidad de las aplicaciones P2P no es buena. Quienes usan P2P deberían tener cuidado.&lt;/p>
&lt;h1 id="sobre-el-servicio">Sobre el servicio
&lt;/h1>&lt;p>Al momento del contrato, me dijeron que si me suscribía a Netflix o Disney+ recibiría una tarjeta QUO por valor de 40.000 yenes, y que compensando con la cuota del contrato de cada servicio, la tarifa mensual sería un poco más barata en promedio, así que contraté los servicios junto con el contrato principal. Netflix es un contrato de 1 año y Disney+ es de medio año, y parece que es necesario realizar el trámite de cancelación por cuenta propia.&lt;/p>
&lt;p>Como el cambio es reciente, si tengo más impresiones o experiencias de uso, me gustaría actualizar el artículo. Hasta luego,&lt;/p>
&lt;h1 id="0906-dificultades-para-conectarse-a-internet">09/06 Dificultades para conectarse a internet
&lt;/h1>&lt;ul>
&lt;li>06/09/2022 alrededor de las 13:13 Durante 3 a 5 minutos&lt;/li>
&lt;li>06/09/2022 alrededor de las 13:30 Durante 3 a 5 minutos&lt;/li>
&lt;li>Después unas cuantas veces más&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 red"
class="gallery-image"
data-flex-grow="129"
data-flex-basis="311px"
>&lt;/p>
&lt;p>Parece ser un problema de DNS, así que configuré el servidor DNS tomando como referencia &lt;a class="link" href="https://internet.watch.impress.co.jp/docs/column/shimizu/1367271.html" target="_blank" rel="noopener"
>aquí&lt;/a>.
A ver qué pasa con esto&amp;hellip; Incluso con la configuración de DNS caí en un estado en el que no podía conectarme, así que cuando me puse en contacto con el soporte, me dijeron que estaban haciendo un mantenimiento de emergencia&amp;hellip; Justo después de contactarlos, el estado de la conexión mejoró, así que creo que tomaron alguna medida.&lt;/p></description></item><item><title>【HUGO】Vista previa en entorno local</title><link>http://kenji.blog/es/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/</link><pubDate>Mon, 05 Sep 2022 12:28:01 +0900</pubDate><guid>http://kenji.blog/es/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/</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】Vista previa en entorno local" />&lt;h1 id="instalación-de-hugo">Instalación de HUGO
&lt;/h1>&lt;h2 id="descargar">Descargar
&lt;/h2>&lt;p>&lt;a class="link" href="https://github.com/gohugoio/hugo/releases" target="_blank" rel="noopener"
>Descarga de HUGO&lt;/a>&lt;/p>
&lt;p>Descarga el módulo de Windows que se adapte a tu entorno desde el sitio anterior y extráelo.
En mi caso, descargué &amp;ldquo;hugo_0.102.3_Windows-64bit.zip&amp;rdquo;.&lt;/p>
&lt;h2 id="extraer">Extraer
&lt;/h2>&lt;p>Extrae el archivo zip descargado y copia el archivo hugo.exe que contiene en una carpeta, por ejemplo, C:\bin.&lt;/p>
&lt;h2 id="registrar-en-variables-de-entorno">Registrar en variables de entorno
&lt;/h2>&lt;p>Regístralo en las variables de entorno para poder ejecutar hugo.exe desde cualquier lugar.
La operación es para Windows 11, pero creo que puedes registrarlo siguiendo estos pasos.&lt;/p>
&lt;ol>
&lt;li>Presiona las teclas Win+Pause para abrir la información de la versión&lt;/li>
&lt;li>Haz clic en Configuración avanzada del sistema&lt;/li>
&lt;li>Haz clic en Variables de entorno&lt;/li>
&lt;li>Selecciona Path y haz clic en Editar&lt;/li>
&lt;li>Haz clic en Nuevo, ingresa &amp;ldquo;C:\bin&amp;rdquo; en una nueva línea y cierra el cuadro de diálogo con Aceptar&lt;/li>
&lt;/ol>
&lt;h1 id="previsualizar-el-blog">Previsualizar el blog
&lt;/h1>&lt;p>Ve a la carpeta del blog de HUGO en el símbolo del sistema y ejecuta el siguiente comando.&lt;/p>
&lt;p>&lt;code>hugo server -D&lt;/code>&lt;/p>
&lt;p>El resultado de la ejecución es el siguiente. (La opción -D muestra los artículos en borrador).&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>La dirección se muestra al ejecutar el comando (en el ejemplo anterior &lt;code>http://localhost:1313/&lt;/code>), cópiala en el navegador.
La vista previa se actualiza automáticamente cada vez que se guarda el archivo.
Para finalizar la vista previa, presiona Ctrl+C en el símbolo del sistema.&lt;/p></description></item><item><title>Películas sobre matemáticos</title><link>http://kenji.blog/es/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/es/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 Películas sobre matemáticos" />&lt;p>Estas son mis películas recomendadas en las que el protagonista es un matemático.&lt;/p>
&lt;h1 id="una-mente-maravillosa">Una mente maravillosa
&lt;/h1>&lt;p>&lt;img src="http://kenji.blog/images/beautiful_mind.jpg"
loading="lazy"
>&lt;br>
Una película que describe la vida de un matemático genio estadounidense que existió realmente. El final tiene un desarrollo sorprendente.
Russell Crowe, en el papel principal, hace un excelente trabajo.&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>Película estrenada en 2001 basada en la novela de Robert Harris &amp;ldquo;Enigma&amp;rdquo;.
De Wikipedia&lt;/p>
&lt;/blockquote>
&lt;p>Una historia sobre el descifrado del código creado por Alemania llamado máquina Enigma.&lt;/p>
&lt;h1 id="the-imitation-game-descifrando-enigma">The Imitation Game (Descifrando Enigma)
&lt;/h1>&lt;p>&lt;img src="http://kenji.blog/images/imitation_game.jpg"
loading="lazy"
>&lt;/p>
&lt;p>Otra historia sobre el desciframiento de códigos que trata sobre Enigma. Me gusta la visión del mundo de esa época.&lt;/p>
&lt;h1 id="el-hombre-que-conocía-el-infinito">El hombre que conocía el 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>Una obra que describe la interacción entre el matemático de la Universidad de Cambridge Hardy y el matemático indio Ramanujan. Puedes sentir la belleza de las matemáticas.&lt;/p>
&lt;h1 id="la-teoría-del-todo">La teoría del todo
&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>Una película que retrata la vida del Dr. Hawking.&lt;/p>
&lt;h1 id="particle-fever-locos-por-las-partículas">Particle Fever (Locos por las partículas)
&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>'El entorno de trabajo de hoy'</title><link>http://kenji.blog/es/p/%E4%BB%8A%E6%97%A5%E3%81%AE%E4%BD%9C%E6%A5%AD%E7%92%B0%E5%A2%83/</link><pubDate>Sun, 04 Sep 2022 14:29:09 +0900</pubDate><guid>http://kenji.blog/es/p/%E4%BB%8A%E6%97%A5%E3%81%AE%E4%BD%9C%E6%A5%AD%E7%92%B0%E5%A2%83/</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 'El entorno de trabajo de hoy'" />&lt;h1 id="el-escritorio-del-niño">El escritorio del niño
&lt;/h1>&lt;p>El tiempo que mi hijo duerme es el tiempo en que puedo concentrarme en mi trabajo. Cuando termine la siesta, iremos a jugar al parque.
¡Si tuviera un adaptador de Lightning a HDMI para el iPad, podría trabajar en el escritorio de la derecha!&lt;/p></description></item><item><title>Añadir un comando para insertar la fecha en IntelliJ IDEA</title><link>http://kenji.blog/es/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/es/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 Añadir un comando para insertar la fecha en IntelliJ IDEA" />&lt;h1 id="introducción">Introducción
&lt;/h1>&lt;p>Cuando escribo en este blog, utilizo IntelliJ IDEA. Es conveniente porque tiene buena compatibilidad con Git y muestra una vista previa del markdown.
Como tengo que escribir &lt;code>date&lt;/code> en el encabezado del md cada vez que escribo un post y parece que no hay un atajo para insertar esa fecha, he creado un comando para insertar la fecha consultando el siguiente sitio web. Espero que te sea ú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="pasos-de-configuración">Pasos de configuración
&lt;/h1>&lt;ol>
&lt;li>Abrir &amp;ldquo;File&amp;rdquo; &amp;gt; &amp;ldquo;Settings&amp;hellip;&amp;rdquo; en el menú&lt;br>
&lt;img src="http://kenji.blog/images/settings.png"
loading="lazy"
alt="settings"
>&lt;/li>
&lt;li>Seleccionar &amp;ldquo;Editor&amp;rdquo; &amp;gt; &amp;ldquo;Live Template&amp;rdquo; &amp;gt; &amp;ldquo;HTML/XML&amp;rdquo; y hacer clic en &amp;ldquo;+&amp;rdquo;&lt;/li>
&lt;li>Seleccionar &amp;ldquo;Live Template&amp;rdquo;&lt;/li>
&lt;li>Ingresar &amp;ldquo;date&amp;rdquo; en Abbreviation&lt;/li>
&lt;li>Ingresar &amp;ldquo;Insertar fecha y hora&amp;rdquo; en Description&lt;/li>
&lt;li>Ingresar &amp;ldquo;$date$&amp;rdquo; en Template Text&lt;/li>
&lt;li>Hacer clic en el botón 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>Ingresar &amp;ldquo;date&amp;rdquo; en Name&lt;/li>
&lt;li>Ingresar &lt;code>date(&amp;quot;yyyy-MM-dd'T'HH:mm:ss'+09:00'&amp;quot;)&lt;/code> en Expression&lt;/li>
&lt;li>Cerrar el cuadro de diálogo con OK&lt;/li>
&lt;li>Presionar Define o Change y marcar la casilla &amp;ldquo;Everywhere&amp;rdquo;&lt;/li>
&lt;li>Cerrar el cuadro de diálogo con OK&lt;/li>
&lt;li>¡Si ingresas &amp;ldquo;date&amp;rdquo; en el editor de código y presionas Enter para insertar la fecha como &amp;ldquo;2022-09-04T05:59:04+09:00&amp;rdquo;, la configuración está completa!&lt;/li>
&lt;/ol>
&lt;p>Eso es todo.&lt;/p>
&lt;h1 id="conclusión">Conclusión
&lt;/h1>&lt;p>¡Si encuentro más pequeños trucos para IntelliJ IDEA, los publicaré de nuevo!&lt;/p></description></item><item><title>He empezado un blog</title><link>http://kenji.blog/es/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/</link><pubDate>Fri, 02 Sep 2022 07:23:00 +0900</pubDate><guid>http://kenji.blog/es/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/</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 He empezado un blog" />&lt;h2 id="he-empezado-un-blog">He empezado un 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 fuegos artificiales, el código está &lt;a class="link" href="https://github.com/kenjinote/Fireworks" title="Ir al código"
target="_blank" rel="noopener"
>aquí&lt;/a>&lt;/p>
&lt;p>Hola a todos.
Por alguna razón, he decidido empezar un blog.&lt;/p>
&lt;p>No tengo un objetivo grandioso como &amp;ldquo;¡Quiero publicar esto!&amp;rdquo;,
simplemente pensé que sería bueno tener un lugar donde escribir sobre tecnología, la vida cotidiana o cualquier cosa que me venga a la mente tal como es.&lt;/p>
&lt;p>No voy a poner demasiado esfuerzo, solo planeo hacerlo como si fuera un bloc de notas.&lt;/p>
&lt;hr>
&lt;h2 id="lo-estoy-haciendo-con-algo-llamado-hugo">Lo estoy haciendo con algo llamado Hugo
&lt;/h2>&lt;p>Este blog está hecho con un generador de sitios estáticos llamado &amp;ldquo;Hugo&amp;rdquo;.
Encontré un tema que me gustó y decidí usarlo.
(Es un secreto que me tomó como 2 horas elegir el tema)&lt;/p>
&lt;p>También planeo escribir notas casuales
sobre código y herramientas que me llamen la atención.&lt;/p>
&lt;hr>
&lt;h2 id="hablando-de-komeda-por-la-mañana">Hablando de Komeda por la mañana
&lt;/h2>&lt;p>Por cierto, esta mañana me desperté un poco temprano y fui a Komeda Coffee.
Salí a las 8:30 y caminé mientras respiraba el aire de la mañana.&lt;/p>
&lt;p>Pedí un Mini Shiro-Noir y un set de desayuno A con Café au Lait.
Creo que costó alrededor de 800 yenes. (No me acuerdo)&lt;/p>
&lt;p>Los cafés por la mañana son geniales.
Siento que si tengo un tiempo para relajarme antes del trabajo, de alguna manera el día irá bien.&lt;/p>
&lt;hr>
&lt;p>Así que, escribiré de manera relajada a partir de ahora.
Planeo mezclar temas técnicos y cosas cotidianas.&lt;/p>
&lt;p>¡Encantado de conocerlos!&lt;/p></description></item><item><title>Extensiones de Chrome recomendadas para Salesforce</title><link>http://kenji.blog/es/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/es/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 Extensiones de 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>Puedes buscar campos personalizados o generar en lote los campos de objetos personalizados.&lt;/p>
&lt;p>También es útil para construir SOQL sobre la marcha.&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>Es útil para buscar código en 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>Archivos</title><link>http://kenji.blog/es/archives/</link><pubDate>Tue, 28 May 2019 00:00:00 +0000</pubDate><guid>http://kenji.blog/es/archives/</guid><description/></item><item><title>[Consideración matemática] ¿Por qué el algoritmo de descifrado 'GNFS' es derrotado por el algoritmo de Shor en la era cuántica?</title><link>http://kenji.blog/es/p/gnfs-to-shors-algorithm-math-deepdive/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>http://kenji.blog/es/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 [Consideración matemática] ¿Por qué el algoritmo de descifrado 'GNFS' es derrotado por el algoritmo de Shor en la era cuántica?" />&lt;p>La seguridad de la información en la sociedad de Internet moderna está protegida por sistemas de criptografía de clave pública como la criptografía RSA. La base de la seguridad del cifrado RSA depende del hecho de que &lt;strong>&amp;ldquo;la factorización de números compuestos enormes es computacionalmente muy difícil&amp;rdquo;&lt;/strong>.&lt;/p>
&lt;p>En este artículo, desentrañaremos el mecanismo matemático de la &lt;strong>&amp;ldquo;Criba General del Cuerpo de Números&amp;rdquo;&lt;/strong> (General Number Field Sieve, GNFS), que es el algoritmo de factorización más fuerte en computadoras clásicas, y profundizaremos a través de fórmulas y diagramas conceptuales por qué es completamente derrotado por el &lt;strong>&amp;ldquo;Algoritmo de Shor&amp;rdquo;&lt;/strong> descubierto por Peter Shor, y el cambio de paradigma que esto representa.&lt;/p>
&lt;hr>
&lt;h2 id="1-el-enfoque-de-la-factorización-en-la-computación-clásica-desarrollo-a-partir-del-método-de-factorización-de-fermat">1. El enfoque de la factorización en la computación clásica: Desarrollo a partir del método de factorización de Fermat
&lt;/h2>&lt;p>El problema de factorización prima es encontrar los números primos $p, q$ tales que $N = p \times q$ para un número compuesto $N$ dado.&lt;/p>
&lt;p>La idea básica se reduce a encontrar valores no triviales $x, y$ que satisfagan la siguiente congruencia:&lt;/p>
$$ x^2 \equiv y^2 \pmod N $$
&lt;p>Transformando esto,&lt;/p>
$$ x^2 - y^2 \equiv 0 \pmod N $$
$$ (x - y)(x + y) \equiv 0 \pmod N $$
&lt;p>Aquí, si $x \not\equiv \pm y \pmod N$, al calcular $\gcd(x-y, N)$ o $\gcd(x+y, N)$, podemos obtener un factor no trivial de $N$. Este hecho es la base de los algoritmos de factorización modernos como GNFS.&lt;/p>
&lt;hr>
&lt;h2 id="2-el-algoritmo-clásico-más-fuerte-las-profundidades-de-la-criba-general-del-cuerpo-de-números-gnfs">2. El algoritmo clásico más fuerte: Las profundidades de la &amp;ldquo;Criba General del Cuerpo de Números&amp;rdquo; (GNFS)
&lt;/h2>&lt;p>&lt;strong>&amp;ldquo;GNFS&amp;rdquo;&lt;/strong> es el algoritmo de factorización más rápido conocido en la actualidad para computadoras clásicas. Su complejidad temporal requiere un tiempo subexponencial.&lt;/p>
&lt;h3 id="complejidad-del-gnfs">Complejidad del GNFS
&lt;/h3>&lt;p>Si el número de dígitos de $N$ es $b = \log_2 N$, la complejidad del GNFS se expresa de la siguiente manera:&lt;/p>
$$ O\left( \exp \left( \left(\frac{64}{9} b\right)^{1/3} (\log b)^{2/3} \right) \right) $$
&lt;p>Como se puede ver en esta fórmula, el tiempo de cálculo no es polinomial, sino &lt;strong>&amp;ldquo;tiempo subexponencial&amp;rdquo;&lt;/strong>, que es ligeramente más lento que el exponencial. Aun así, si el número de dígitos aumenta, el tiempo de cálculo aumenta astronómicamente.&lt;/p>
&lt;h3 id="mecanismo-matemático-de-gnfs">Mecanismo matemático de GNFS
&lt;/h3>&lt;p>GNFS consta principalmente de 4 pasos:&lt;/p>
&lt;ol>
&lt;li>&lt;strong>Selección de polinomios (Polynomial Selection)&lt;/strong>&lt;/li>
&lt;li>&lt;strong>Criba (Sieving)&lt;/strong>&lt;/li>
&lt;li>&lt;strong>Reducción de matrices (Matrix Reduction)&lt;/strong>&lt;/li>
&lt;li>&lt;strong>Cálculo de raíz cuadrada (Square Root)&lt;/strong>&lt;/li>
&lt;/ol>
&lt;h4 id="21-selección-de-polinomios-y-cuerpos-de-números">2.1. Selección de polinomios y cuerpos de números
&lt;/h4>&lt;p>Primero, seleccionamos polinomios irreducibles $f(x)$ y $g(x)$ con coeficientes enteros. Estos se configuran para tener una raíz común $m$ módulo $N$. Es decir,&lt;/p>
$$ f(m) \equiv 0 \pmod N $$
$$ g(m) \equiv 0 \pmod N $$
&lt;p>Normalmente, $g(x)$ se elige como un polinomio de primer grado $g(x) = x - m$. Si hacemos que la raíz de $f(x)$ sea $\alpha$, construimos un &lt;strong>&amp;ldquo;cuerpo de números&amp;rdquo;&lt;/strong> (Number Field) llamado $\mathbb{Q}(\alpha)$. Comparamos las operaciones en el anillo de $\mathbb{Q}(\alpha)$ y las operaciones en el anillo de enteros habitual $\mathbb{Z}$ a través del homomorfismo $\phi: \alpha \mapsto m$.&lt;/p>
&lt;h4 id="22-criba-sieving">2.2. Criba (Sieving)
&lt;/h4>&lt;p>A continuación, buscamos una gran cantidad de pares de enteros coprimos $(a, b)$. El objetivo es encontrar pares tales que los dos valores siguientes sean &lt;strong>&amp;ldquo;B-smooth&amp;rdquo;&lt;/strong> (compuestos solo por factores primos relativamente pequeños):&lt;/p>
&lt;ol>
&lt;li>$a - bm$ (valor en el anillo de enteros)&lt;/li>
&lt;li>$b^d f(a/b)$ (correspondiente a la norma $N(a - b\alpha)$ sobre el cuerpo de números)&lt;/li>
&lt;/ol>
&lt;p>Aquí se utiliza una técnica de búsqueda rápida llamada &lt;strong>&amp;ldquo;criba&amp;rdquo;&lt;/strong> (Sieve). Esto extrae eficientemente pares $(a, b)$ que cumplen las condiciones de entre una enorme cantidad de candidatos.&lt;/p>
&lt;h4 id="23-reducción-de-matrices-linear-algebra-over-gf2">2.3. Reducción de matrices (Linear Algebra over GF(2))
&lt;/h4>&lt;p>A partir de los pares recolectados $(a, b)$, formamos vectores de exponentes y encontramos el espacio nulo izquierdo de una enorme matriz dispersa sobre $\mathbb{F}_2$ (un cuerpo cuyos elementos son solo 0 y 1).&lt;/p>
&lt;p>Encontramos el vector $v$ como solución para que las relaciones $ \prod (a_i - b_i m) $ y $ \prod (a_i - b_i \alpha) $ se conviertan ambas en elementos cuadrados. Esto no es más que resolver el sistema de ecuaciones lineales:&lt;/p>
$$ M \mathbf{x} \equiv \mathbf{0} \pmod 2 $$
&lt;p>Aquí se aprovechan algoritmos numéricos avanzados como el algoritmo de Block Lanczos o el algoritmo de Block Wiedemann.&lt;/p>
&lt;h4 id="24-cálculo-de-raíz-cuadrada">2.4. Cálculo de raíz cuadrada
&lt;/h4>&lt;p>Finalmente, extraemos raíces cuadradas tanto en el cuerpo de números como en el anillo de enteros para derivar la relación $x^2 \equiv y^2 \pmod N$. Luego, calculamos $\gcd(x-y, N)$ para obtener los factores.&lt;/p>
&lt;hr>
&lt;h2 id="3-el-avance-mediante-computación-cuántica-algoritmo-de-shor">3. El avance mediante computación cuántica: &amp;ldquo;Algoritmo de Shor&amp;rdquo;
&lt;/h2>&lt;p>Mientras que el GNFS requiere tiempo subexponencial, el &lt;strong>&amp;ldquo;Algoritmo de Shor&amp;rdquo;&lt;/strong> introducido por Peter Shor en 1994 puede resolver este problema en &lt;strong>&amp;ldquo;tiempo polinomial&amp;rdquo;&lt;/strong> utilizando una computadora cuántica.&lt;/p>
&lt;h3 id="complejidad-del-algoritmo-de-shor">Complejidad del Algoritmo de Shor
&lt;/h3>&lt;p>Cuando el número de qubits es $O(\log N)$, la complejidad temporal es:&lt;/p>
$$ O((\log N)^3) $$
&lt;p>Esto significa que no causa una explosión exponencial con respecto al número de bits. Es un resultado sorprendente donde números compuestos enormes que excederían la vida útil del universo con &lt;strong>&amp;ldquo;computación clásica&amp;rdquo;&lt;/strong>, pueden ser descifrados en unas pocas horas o días con &lt;strong>&amp;ldquo;computación cuántica&amp;rdquo;&lt;/strong>.&lt;/p>
&lt;h3 id="visión-general-del-algoritmo-de-shor-reducción-al-problema-de-búsqueda-de-períodos">Visión general del Algoritmo de Shor: Reducción al problema de búsqueda de períodos
&lt;/h3>&lt;p>El algoritmo de Shor reduce ingeniosamente el problema de factorización prima a un &lt;strong>&amp;ldquo;problema de búsqueda de períodos&amp;rdquo;&lt;/strong>.&lt;/p>
&lt;ol>
&lt;li>Elegir un entero aleatorio $a$ coprimo con $N$ ($1 &lt; a &lt; N$).&lt;/li>
&lt;li>Definir la función $f(x) = a^x \bmod N$.&lt;/li>
&lt;li>Encontrar el período $r$ de $f(x)$, es decir, el entero positivo mínimo $r$ tal que $a^r \equiv 1 \pmod N$.&lt;/li>
&lt;li>Si $r$ es par, verificar si $a^{r/2} \not\equiv -1 \pmod N$ y calcular $\gcd(a^{r/2} \pm 1, N)$ para obtener los factores primos.&lt;/li>
&lt;/ol>
&lt;p>Esta &lt;strong>&amp;ldquo;búsqueda del período $r$&amp;rdquo;&lt;/strong> en el paso 3 es el cuello de botella que requiere un tiempo exponencial en las computadoras clásicas, pero las computadoras cuánticas lo resuelven en un instante utilizando &lt;strong>&amp;ldquo;superposición cuántica&amp;rdquo;&lt;/strong> y la &lt;strong>&amp;ldquo;Transformada de Fourier Cuántica&amp;rdquo;&lt;/strong> (QFT).&lt;/p>
&lt;hr>
&lt;h2 id="4-transformada-de-fourier-cuántica-qft-y-extracción-de-períodos">4. Transformada de Fourier Cuántica (QFT) y Extracción de Períodos
&lt;/h2>&lt;p>Veamos en detalle a través de fórmulas la manipulación de estados cuánticos, que es el núcleo del algoritmo de Shor.&lt;/p>
&lt;h3 id="41-generación-de-superposición-cuántica">4.1. Generación de superposición cuántica
&lt;/h3>&lt;p>Primero, preparamos dos registros cuánticos. El registro 1 almacena el estado de superposición de la entrada $x$, y el registro 2 almacena el resultado de la función $f(x)$. Aplicamos la Transformada de Hadamard al estado inicial $|0\rangle |0\rangle$ para crear una superposición de todos los $x$ posibles.&lt;/p>
$$ |\psi_1\rangle = \frac{1}{\sqrt{Q}} \sum_{x=0}^{Q-1} |x\rangle |0\rangle $$
&lt;p>
(donde $Q$ es una potencia de 2 que satisface $N^2 \le Q &lt; 2N^2$)&lt;/p>
&lt;p>A continuación, utilizamos el oráculo cuántico $U_f$ para calcular $f(x) = a^x \bmod N$ y almacenarlo en el registro 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>Supongamos que medimos el registro 2 aquí (en realidad, la estructura matemática es la misma incluso sin medir). Si se observa un cierto valor $y = a^{x_0} \bmod N$, el estado del registro 1 colapsa a una superposición de todos los $x$ tales que $f(x) = y$. Si el período es $r$, tales $x$ serán $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>
(donde $M \approx Q/r$ es el número de términos)&lt;/p>
&lt;p>Este estado contiene información sobre el período $r$, pero la medición directa solo arrojaría un $x_0 + kr$ aleatorio, por lo que el período $r$ sigue siendo desconocido. Aquí es donde entra en juego la QFT.&lt;/p>
&lt;h3 id="42-aplicación-de-la-transformada-de-fourier-cuántica">4.2. Aplicación de la Transformada de Fourier Cuántica
&lt;/h3>&lt;p>La QFT es una operación que realiza una transformada de Fourier discreta sobre las amplitudes de los estados cuánticos. La acción de la QFT sobre el estado $|x\rangle$ se define de la siguiente manera:&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>Al aplicar esto a $|\psi_3\rangle$, ocurre una interferencia de fase (interferencia cuá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>Expandiendo la suma en esta fórmula,&lt;/p>
$$ \sum_{k=0}^{M-1} e^{2\pi i \frac{kry}{Q}} $$
&lt;p>Aparece esta parte. La suma de esta serie geométrica se refuerza constructivamente solo cuando $ry/Q$ está cerca de un entero (Interferencia constructiva), y de lo contrario se cancela mutuamente (Interferencia destructiva).&lt;/p>
&lt;p>Por lo tanto, el estado $|y\rangle$ medido con alta probabilidad es un entero $y$ que satisface la condición:&lt;/p>
$$ \frac{y}{Q} \approx \frac{c}{r} $$
&lt;p>
(donde $c$ es algún entero).&lt;/p>
&lt;h3 id="43-identificación-de-períodos-mediante-expansión-en-fracciones-continuas">4.3. Identificación de períodos mediante expansión en fracciones continuas
&lt;/h3>&lt;p>Después de obtener $y$ mediante medición, usamos una computadora clásica para realizar la &lt;strong>&amp;ldquo;expansión en fracciones continuas&amp;rdquo;&lt;/strong> (Continued Fraction Expansion) de $y/Q$. Esto nos permite calcular la fracción aproximada $c/r$ de $y/Q$ y extraer eficientemente los candidatos para el período $r$ a partir del denominador.&lt;/p>
&lt;hr>
&lt;h2 id="5-comparación-de-modelos-conceptuales-y-el-cambio-de-paradigma">5. Comparación de modelos conceptuales y el cambio de paradigma
&lt;/h2>&lt;p>Para entender intuitivamente la diferencia entre GNFS y el algoritmo de Shor, mostramos un diagrama conceptual utilizando sintaxis Mermaid.&lt;/p>
&lt;h3 id="diagrama-conceptual-del-algoritmo-de-shor-mediante-circuito-cuántico">Diagrama conceptual del algoritmo de Shor mediante circuito cuá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[Superposición de todos los estados por Transformada de Hadamard]
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> B --&amp;gt; C[Operación de exponenciación modular a^x mod N]
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> C --&amp;gt;|Entrelazamiento cuántico| D[Colapso a un estado con periodicidad]
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> D --&amp;gt; E[Transformada de Fourier Cuántica QFT]
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> E --&amp;gt;|Amplificación de probabilidad por interferencia| F[Medición: Obtener y]
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> F --&amp;gt; G[Procesamiento clásico: Expansión en fracciones continuas]
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> G --&amp;gt; H[Búsqueda del período r]
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> H --&amp;gt; I[Cálculo de factores 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="la-esencia-del-cambio-de-paradigma">La esencia del cambio de paradigma
&lt;/h3>&lt;p>El GNFS adopta el enfoque de &lt;strong>&amp;ldquo;buscar relaciones dentro de un espacio matemático (cuerpo de números)&amp;rdquo;&lt;/strong>. Sin embargo, debido a que el espacio de búsqueda se expande exponencialmente con el número de dígitos, la capacidad de cálculo de las computadoras clásicas (incluso con paralelización) hace que sea virtualmente imposible de descifrar cuando la longitud de la clave supera los 2048 bits, etc.&lt;/p>
&lt;p>Por otro lado, el algoritmo de Shor utiliza &lt;strong>&amp;ldquo;las propiedades ondulatorias debidas a la interferencia cuántica&amp;rdquo;&lt;/strong>. Evalúa simultáneamente todas las rutas de cálculo en estado de superposición y cancela (interferencia destructiva) las respuestas innecesarias mediante la QFT, amplificando (interferencia constructiva) solo la amplitud de probabilidad del período que es la respuesta correcta. Con esto, logra un enfoque en una dimensión completamente diferente que, en lugar de buscar en el espacio, &lt;strong>&amp;ldquo;hace que la respuesta correcta misma emerja&amp;rdquo;&lt;/strong>.&lt;/p>
&lt;h2 id="6-conclusión">6. Conclusión
&lt;/h2>&lt;p>En este artículo, comparamos profundamente los antecedentes matemáticos y las estructuras de los algoritmos de &lt;strong>&amp;ldquo;GNFS&amp;rdquo;&lt;/strong>, que es el pináculo del límite clásico, y el &lt;strong>&amp;ldquo;Algoritmo de Shor&amp;rdquo;&lt;/strong>, que muestra el poder de la computación cuántica.&lt;/p>
&lt;p>Mientras que el GNFS redujo la complejidad temporal al tiempo subexponencial mediante elaboradas técnicas matemáticas como la selección de polinomios y el cálculo de enormes matrices, el algoritmo de Shor fusionó la superposición y la interferencia, que son los principios básicos de la mecánica cuántica, con herramientas matemáticas (QFT) para lograr un avance hacia el tiempo polinomial de un solo golpe.&lt;/p>
&lt;p>Actualmente, no existe una computadora cuántica tolerante a fallas (FTQC) que pueda ejecutar el algoritmo de Shor a una escala práctica (miles de qubits). Sin embargo, la existencia misma de este cambio de paradigma matemático y teórico es la mayor razón por la que en todo el mundo se está acelerando la transición a la criptografía poscuántica (PQC: Post-Quantum Cryptography).&lt;/p></description></item><item><title>Búsqueda</title><link>http://kenji.blog/es/search/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>http://kenji.blog/es/search/</guid><description/></item><item><title>Enlaces</title><link>http://kenji.blog/es/enlaces/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>http://kenji.blog/es/enlaces/</guid><description/></item></channel></rss>