[{"content":"Einführung: Der \u0026ldquo;Paradigmawechsel der Berechnung\u0026rdquo;, den Quantencomputer bringen In den letzten Jahren vergeht kein Tag, an dem man nicht den Begriff \u0026ldquo;Quantencomputer\u0026rdquo; in den Nachrichten oder in technischen Artikeln liest. Es kursieren wie in einem Science-Fiction-Film Gerüchte, dass \u0026ldquo;Berechnungen, für die heutige Supercomputer Tausende von Jahren bräuchten, in wenigen Minuten erledigt werden können\u0026rdquo; oder dass \u0026ldquo;alle aktuellen Verschlüsselungstechnologien geknackt werden könnten\u0026rdquo;. Von riesigen IT-Unternehmen wie Google, IBM und Microsoft bis hin zu Universitäten und Start-ups auf der ganzen Welt wetteifern alle darum, diese Traumtechnologie in die Praxis umzusetzen.\nWenn man jedoch fragt: \u0026ldquo;Was genau ist ein Quantencomputer überhaupt?\u0026rdquo;, können nur wenige Menschen eine genaue Antwort geben. Viele haben die vage Vorstellung von einer \u0026ldquo;magischen Box, die alle Kombinationen gleichzeitig berechnen kann\u0026rdquo;, aber streng genommen ist das nicht korrekt.\nIn diesem Artikel werden wir von Grund auf, detailliert und verständlich erklären, wie sich Quantencomputer grundlegend von klassischen Computern (den PCs und Smartphones, die wir normalerweise benutzen) unterscheiden, und wie sie merkwürdige quantenmechanische Phänomene wie \u0026ldquo;Überlagerung (Superposition)\u0026rdquo;, \u0026ldquo;Quantenverschränkung (Entanglement)\u0026rdquo; und \u0026ldquo;Quantengatter (Quantum gates)\u0026rdquo; für Berechnungen nutzen. Wenn Sie diesen Artikel zu Ende gelesen haben, sollten Sie die wahre Kraft der Quantencomputer und ihre aktuellen Herausforderungen klar verstanden haben.\nKapitel 1: Der entscheidende Unterschied zwischen klassischen Computern und Quantencomputern Um zu verstehen, wie ein Quantencomputer funktioniert, müssen wir zunächst rekapitulieren, wie die \u0026ldquo;klassischen Computer\u0026rdquo;, die wir derzeit verwenden, arbeiten.\nVergleichstabelle: Klassischer Computer vs. Quantencomputer Merkmal Klassischer Computer Quantencomputer Grundeinheit Bit (0 oder 1) Qubit (Überlagerung von 0 und 1) Zustandsdarstellung Deterministisch Probabilistisch (bis zur Messung unbestimmt) Berechnungsmethode Sequenzielle Verarbeitung (Parallelisierung erfordert physische Kerne) Quantenparallelität (gleichzeitige Manipulation exponentieller Zustände) Stärken bei Berechnungen Grundrechenarten, alltägliche Datenverarbeitung Primfaktorzerlegung, quantenchemische Berechnungen Fehlertoleranz Sehr stark Sehr schwach (kryogene Umgebungen oder Fehlerkorrektur erforderlich) Die Welt der klassischen Computer: \u0026ldquo;Bit\u0026rdquo; als 0 oder 1 Klassische Computer stellen alle Informationen in Form von entweder \u0026ldquo;0\u0026rdquo; oder \u0026ldquo;1\u0026rdquo; dar. Dies wird als Bit bezeichnet. Physisch wird es dadurch repräsentiert, ob die Spannung eines Transistors auf einem Halbleiterchip hoch (1) oder niedrig (0) ist. Auch die hochauflösenden Fotos auf Ihrem Smartphone, der Text, den Sie gerade lesen, oder Ihr Lieblings-YouTube-Video werden letztendlich auf eine riesige \u0026ldquo;Folge von 0 und 1\u0026rdquo; reduziert. Berechnung ist nichts anderes als der Prozess der Manipulation dieser Folge von 0 und 1 durch Kombination grundlegender Logikschaltungen wie AND (Konjunktion), OR (Disjunktion) und NOT (Negation). Dies ist eine sehr sichere und deterministische Welt. Wenn die Eingabe gleich ist, wird immer dieselbe Ausgabe erhalten.\nDie Welt der Quantencomputer: \u0026ldquo;Qubit\u0026rdquo;, das sowohl 0 als auch 1 ist Im Gegensatz dazu wird die kleinste Informationseinheit eines Quantencomputers als Qubit (Quantum bit) bezeichnet. Das Hauptmerkmal eines Qubits ist, dass es sich nicht wie ein klassisches Bit nur im Zustand \u0026ldquo;0\u0026rdquo; oder \u0026ldquo;1\u0026rdquo; befindet, sondern einen Zustand annehmen kann, in dem \u0026ldquo;0 und 1 mit einer bestimmten Wahrscheinlichkeit gemischt sind\u0026rdquo;. Dies wird als \u0026ldquo;Überlagerung (Superposition)\u0026rdquo; bezeichnet.\nWenn ein klassisches Bit beispielsweise eine Münze ist, die entweder \u0026ldquo;Kopf\u0026rdquo; oder \u0026ldquo;Zahl\u0026rdquo; nach oben zeigt, wird ein Qubit oft mit einer \u0026ldquo;Münze, die sich in der Luft dreht\u0026rdquo; verglichen. Bei einer sich drehenden Münze kann man nicht sagen, ob sie Kopf oder Zahl ist; beide Zustände überlagern sich. Und erst in dem Moment, in dem die Münze auf den Boden fällt und aufhört, sich zu bewegen (was in der Quantenmechanik als \u0026ldquo;Messung\u0026rdquo; bezeichnet wird), steht fest, ob es \u0026ldquo;Kopf\u0026rdquo; oder \u0026ldquo;Zahl\u0026rdquo; ist.\nEs ist diese Eigenschaft, die spezifisch für die mikroskopische Welt (Quantenmechanik) ist, bei der der Zustand erst bei der Messung bestimmt wird, die in den Informationsverarbeitungsprozess des Quantencomputers integriert ist.\nKapitel 2: Drei quantenmechanische Eigenschaften, die die Berechnung grundlegend verändern Die Quelle der erstaunlichen Rechenleistung von Quantencomputern liegt nicht einfach in höheren Taktfrequenzen oder kleineren Komponenten. Sie liegt darin, dass sie die physikalischen Gesetze selbst als Rechenressourcen nutzen. Die folgenden drei quantenmechanischen Phänomene sind der Schlüssel dazu.\n1. Überlagerung (Superposition) und exponentielle Informationsmenge Wie bereits erwähnt, können Qubits gleichzeitig die Zustände 0 und 1 aufrechterhalten. Ein Qubit ist eine \u0026ldquo;Überlagerung von 0 und 1\u0026rdquo;, aber was passiert, wenn wir die Anzahl der Qubits erhöhen?\n1 Qubit: Überlagerung von 2 Zuständen (0, 1) 2 Qubits: Überlagerung von 4 Zuständen (00, 01, 10, 11) 3 Qubits: Überlagerung von 8 Zuständen N Qubits: Überlagerung von $2^N$ Mustern Mit nur 50 Qubits können $2^{50}$ (etwa 1,1 Billiarden) Zustände gleichzeitig aufrechterhalten werden. Und mit nur 300 Qubits kann eine Anzahl von Mustern ($2^{300}$ – mehr als die Anzahl aller Atome im Universum!) auf einmal gehalten werden. Diese exponentielle Fähigkeit, Informationen zu speichern, ist die Grundlage des Potenzials des Quantencomputers. Es ist physikalisch unmöglich, mit klassischen Computern mehr Zustände als die Anzahl der Atome im Universum im Speicher zu halten.\n2. Quantenverschränkung (Entanglement): Spukhafte Fernwirkung Quantenverschränkung ist ein so seltsames Phänomen, das der menschlichen Intuition so sehr widerspricht, dass Einstein es als \u0026ldquo;spukhafte Fernwirkung (Spooky action at a distance)\u0026rdquo; bezeichnete und es zeit seines Lebens nicht akzeptierte.\nWenn mehrere Qubits in einen Zustand der \u0026ldquo;Quantenverschränkung\u0026rdquo; eintreten, sind sie stark miteinander verbunden, in einer schicksalhaften Beziehung, in der \u0026ldquo;wenn der Zustand eines Qubits bestimmt wird, der Zustand des anderen augenblicklich bestimmt wird, unabhängig davon, wie weit sie voneinander entfernt sind\u0026rdquo; .\nAngenommen, es gibt zwei verschränkte Qubits, A und B (jedes befindet sich in einer Überlagerung von 0 und 1). Wenn A gemessen wird und sich als \u0026ldquo;0\u0026rdquo; herausstellt, wird der Zustand von B augenblicklich (z. B. immer als \u0026ldquo;1\u0026rdquo;) bestimmt, wobei die Lichtgeschwindigkeit, die die Grenze für die Informationsübertragung ist, überschritten wird. In einem Quantencomputer wird diese Quantenverschränkung genutzt, um komplexe Korrelationen zwischen mehreren Qubits darzustellen und eine massiv parallele Informationsverarbeitung durchzuführen. Ohne Verschränkung würde sich die Rechenleistung eines Quantencomputers nicht wesentlich von der eines klassischen Computers unterscheiden.\n3. Quanteninterferenz (Quantum Interference): Die Magie, die richtige Antwort hervorzubringen Sie denken vielleicht: \u0026ldquo;Wenn alle Muster gleichzeitig gehalten werden können, können wir sie nicht alle auf einmal parallel berechnen und sofort eine Antwort erhalten?\u0026rdquo; Dies ist das häufigste Missverständnis in Bezug auf Quantencomputer. Selbst wenn Berechnungen im überlagerten Zustand durchgeführt werden, müssen Sie am Ende \u0026ldquo;messen\u0026rdquo;, um die Antwort zu kennen. Im Moment der Messung kollabiert der Zustand jedoch zufällig in eines der $2^N$ Muster. Dies würde lediglich eine unsinnige (zufällige) Antwort liefern.\nHier kommt die \u0026ldquo;Quanteninterferenz (Interference)\u0026rdquo; ins Spiel. Wenn Wellen aufeinander treffen, verstärken sie sich dort, wo die Wellenlängen übereinstimmen, und heben sich dort auf, wo sie nicht übereinstimmen (das Prinzip ist im Wesentlichen dasselbe wie bei Noise-Cancelling-Kopfhörern).\nGute \u0026ldquo;Quantenalgorithmen\u0026rdquo; manipulieren geschickt Quantenzustände während des Berechnungsprozesses, sodass \u0026ldquo;die Wahrscheinlichkeitsamplituden von Zuständen (Wellen), die zur richtigen Antwort führen, sich gegenseitig verstärken (Verstärkung)\u0026rdquo; und \u0026ldquo;die Wahrscheinlichkeitsamplituden von Zuständen, die zu falschen Antworten führen, sich gegenseitig aufheben (Auslöschung)\u0026rdquo; . Und wenn Sie schließlich messen, stellen sie sicher, dass die \u0026ldquo;richtige Antwort\u0026rdquo; mit einer Wahrscheinlichkeit von fast 100 % herausfällt. Das erfolgreiche Entwerfen dieses Interferenzprozesses ist die wahre Essenz der Quantenprogrammierung.\nKapitel 3: Wie wird berechnet? \u0026ldquo;Quantengatter\u0026rdquo; und \u0026ldquo;Quantenschaltkreise\u0026rdquo; So wie klassische Computer Logikgatter (AND, OR, NOT usw.) verwenden, um Berechnungen durchzuführen, wenden Quantencomputer Operationen an, die als \u0026ldquo;Quantengatter (Quantum Gates)\u0026rdquo; bezeichnet werden, um Qubits zu manipulieren. Eine Kombination mehrerer Quantengatter wird als Quantenschaltkreis (Quantum Circuit) bezeichnet.\nDer Zustand eines Qubits wird mathematisch als ein Punkt auf der Oberfläche einer dreidimensionalen Kugel ausgedrückt, die als \u0026ldquo;Bloch-Kugel (Bloch sphere)\u0026rdquo; bezeichnet wird. Der Nordpol ist \u0026ldquo;0\u0026rdquo;, der Südpol ist \u0026ldquo;1\u0026rdquo;, und der Äquator ist ein Zustand, in dem sich \u0026ldquo;0 und 1 zur Hälfte überlagern\u0026rdquo;. Ein Quantengatter ist nichts anderes als eine Operation, die den Zustand (Vektor) auf der Oberfläche dieser Kugel dreht.\nLassen Sie uns einige typische Quantengatter vorstellen.\n1. Hadamard-Gatter (H-Gatter) Dies ist das grundlegendste Gatter, das für Quantencomputer einzigartig ist und in klassischen Computern nicht existiert. Wenn ein Qubit, das sich vollständig im Zustand \u0026ldquo;0\u0026rdquo; befindet, durch ein H-Gatter geleitet wird, erzeugt es einen \u0026ldquo;vollständigen Überlagerungszustand\u0026rdquo; (einen Punkt auf dem Äquator der Bloch-Kugel), in dem 0 und 1 mit einer Wahrscheinlichkeit von genau der Hälfte beobachtet werden. Als Initialisierungsschritt der Quantenberechnung beginnen viele Algorithmen damit, dieses H-Gatter auf alle Qubits anzuwenden.\n2. Pauli-Gatter (X-, Y-, Z-Gatter) Diese Gatter beinhalten Operationen, die dem NOT-Gatter in einem klassischen Computer entsprechen (das 0 in 1 und 1 in 0 umkehrt). Auf der Bloch-Kugel entsprechen sie Operationen, die um 180 Grad um die X-, Y- und Z-Achse drehen. Insbesondere das X-Gatter fungiert genau wie ein klassisches NOT-Gatter, weil es den Nordpol (0) in den Südpol (1) umkehrt. Das Z-Gatter spielt die Rolle der Umkehrung der \u0026ldquo;Phase (wie das Timing einer Welle)\u0026rdquo; der Überlagerung und ist äußerst wichtig, um Quanteninterferenz zu verursachen.\n3. CNOT-Gatter (Controlled-NOT-Gatter) Dies ist ein äußerst wichtiges Gatter zur Erzeugung von Quantenverschränkung. Es verwendet zwei Qubits (ein Kontroll-Bit und ein Ziel-Bit). Es arbeitet wie folgt: \u0026ldquo;Wenn das Kontroll-Bit 1 ist, kehre den Zustand des Ziel-Bits um (X-Gatter). Wenn das Kontroll-Bit 0 ist, tue nichts.\u0026rdquo; Es mag wie eine einfache IF-Bedingung erscheinen, aber was passiert, wenn sich das Kontroll-Bit in einem \u0026ldquo;überlagerten Zustand von 0 und 1\u0026rdquo; befindet? Das Ziel-Bit geht in einen \u0026ldquo;Zustand über, in dem sich die umgekehrten und nicht umgekehrten Zustände überlagern\u0026rdquo;, und das Schicksal der beiden Bits wird vollständig verknüpft. Die beiden Qubits werden wunderschön \u0026ldquo;verschränkt\u0026rdquo;.\nIndem diese Gatter nacheinander von links nach rechts angeordnet und angewendet werden, wie Musiknoten in einer Partitur, werden komplexe Algorithmen ausgeführt.\nKapitel 4: Worin sind Quantencomputer gut und worin sind sie schlecht? Hier ist eine wichtige Tatsache: Quantencomputer sind keine allmächtigen Götter. Für alltägliche Aufgaben wie das Surfen im Internet, das Rendern von Videos, die Makroverarbeitung in Excel oder den Betrieb allgemeiner Smartphone-Apps werden Quantencomputer klassische Computer wahrscheinlich niemals übertreffen. Für diese sequenziellen Prozesse sind klassische Computer, die bereits hochoptimiert sind und sich durch überwältigende Geschwindigkeit und geringe Kosten auszeichnen, weitaus besser geeignet.\nDer wahre Wert von Quantencomputern liegt ausschließlich in \u0026ldquo;spezifischen Problemen, bei denen die Anzahl der Kombinationen bei klassischen Berechnungen exponentiell explodiert und die Lösung eine Zeit in der Größenordnung des Alters des Universums in Anspruch nehmen würde\u0026rdquo; . Dies wird als \u0026ldquo;Quantenüberlegenheit (Quantum Supremacy)\u0026rdquo; oder \u0026ldquo;Quantenvorteil (Quantum Advantage)\u0026rdquo; bezeichnet.\nWorin Quantencomputer gut sind (Killer-Applikationen) 1. Primfaktorzerlegung und Entschlüsselung (Shor-Algorithmus) Gegenwärtig basiert \u0026ldquo;RSA-Kryptographie\u0026rdquo;, die sichere Kommunikation im Internet schützt (wie Kreditkartenzahlungen und die Übertragung persönlicher Daten), auf der Prämisse, dass \u0026ldquo;die Primfaktorzerlegung sehr großer Zahlen für klassische Computer praktisch unmöglich ist (da sie enorm viel Zeit in Anspruch nimmt)\u0026rdquo;. Mit dem \u0026ldquo;Shor-Algorithmus\u0026rdquo;, der 1994 von dem Mathematiker Peter Shor entdeckt wurde, können Quantencomputer Interferenz jedoch geschickt nutzen, um dies mit dramatischer Geschwindigkeit (in polynomieller Zeit) zu lösen. Infolgedessen besteht das Risiko, dass aktuelle kryptografische Systeme in Zukunft zusammenbrechen, und Zentralbanken sowie Regierungsbehörden weltweit beeilen sich, auf \u0026ldquo;Post-Quanten-Kryptographie (Post-Quantum Cryptography)\u0026rdquo; umzusteigen.\n2. Quantenchemische Berechnungen und die Entwicklung neuer Materialien und Medikamente Das Verhalten von Molekülen und Atomen in der Natur folgt von Natur aus den Gesetzen der Quantenmechanik. Wenn Sie versuchen, das Verhalten komplexer Moleküle mit einem klassischen Computer zu simulieren, explodiert die Anzahl der Kombinationen von Elektroneninteraktionen, und Sie stoßen selbst bei relativ kleinen Molekülen an die Grenzen der Rechenkapazität. Wie der Nobelpreisträger für Physik Richard Feynman sagte: \u0026ldquo;Wenn Sie die Natur simulieren wollen, verdammt noch mal, dann machen Sie es quantenmechanisch\u0026rdquo;, und Quantencomputer weisen bei der Simulation von Materie eine überwältigende native Leistung auf. Es werden Durchbrüche zur Lösung von Problemen der Menschheit erwartet, wie das Design revolutionärer neuer Medikamente, die Entdeckung von bei Raumtemperatur supraleitenden Materialien, die Entwicklung hocheffizienter Solarzellen und Batteriematerialien sowie die Synthese energieeffizienter Düngemittel.\n3. Kombinatorische Optimierungsprobleme und Suche (Grover-Algorithmus) Quantenalgorithmen zeigen ihre Stärke auch bei Problemen, bei denen es darum geht, die optimale aus einer großen Anzahl von Optionen zu finden (wie die Optimierung von Logistikrouten oder die Optimierung von Finanzportfolios). Mit dem \u0026ldquo;Grover-Algorithmus\u0026rdquo; können Sie die gesuchten Daten aus einer unstrukturierten Datenbank mit der Quadratwurzel der Anzahl an Versuchen eines klassischen Computers finden. Wenn beispielsweise 100 Millionen Datensätze vorhanden sind, kann eine Suche, die klassisch bis zu 100 Millionen Versuche dauern würde, in nur etwa 10.000 Versuchen abgeschlossen werden.\nKapitel 5: Die Hardware-Wand \u0026ldquo;Dekohärenz\u0026rdquo; und \u0026ldquo;Quantenfehlerkorrektur\u0026rdquo; Obwohl theoretisch so mächtig wie Magie, gibt es auf dem Weg zur praktischen Umsetzung extrem hohe und steile physikalische Barrieren. Der größte Feind ist \u0026ldquo;Rauschen\u0026rdquo; .\nDie \u0026ldquo;Überlagerung\u0026rdquo; und \u0026ldquo;Quantenverschränkung\u0026rdquo; von Qubits sind extrem empfindliche und zerbrechliche Zustände. Selbst der geringste Kontakt mit umgebender Wärme, elektromagnetischen Schwankungen oder kosmischen Strahlen kann dazu führen, dass dieser magische Zustand in einem Augenblick zusammenbricht und sie zu bloßen klassischen Bits werden. Dieses Phänomen wird als \u0026ldquo;Dekohärenz (Quantenzerfall)\u0026rdquo; bezeichnet.\nDer harte Wettbewerb um physikalische Realisierungsmethoden Derzeit wird weltweit ein harter Wettbewerb darüber ausgetragen, wie diese empfindlichen Qubits physikalisch realisiert werden können, wobei verschiedene Methoden erforscht werden.\nSupraleitende Methode (Superconducting) : Von Google, IBM, Amazon usw. übernommen. Sie verwendet schleifenförmige supraleitende Schaltkreise und steuert Quantenzustände, indem sie sie mit riesigen Kühlschränken auf extrem niedrige Temperaturen nahe dem absoluten Nullpunkt (ca. -273 °C) abkühlt. Es ist derzeit die führende Methode und es ist am einfachsten, die Anzahl der Qubits zu erhöhen, aber die Kühlgeräte sind riesig und teuer. Ionenfallen-Methode (Trapped Ion) : Von IonQ, Quantinuum usw. übernommen. Sie fängt Ionen (Atome) in einem Vakuum mit elektromagnetischen Feldern ein und steuert sie mit präzisen Lasern. Die Stärke besteht darin, dass alle Qubits einheitlich sind und den Zustand über einen langen Zeitraum aufrechterhalten können (lange Kohärenzzeit), das Problem ist jedoch, dass die Betriebsgeschwindigkeit im Vergleich zur supraleitenden Methode langsam ist. Photonen-Methode (Photonic) : PsiQuantum und andere konzentrieren sich darauf. Sie nutzt Lichtteilchen (Photonen). Viele Teile arbeiten bei Raumtemperatur und erfordern keine kryogene Umgebung, was den großen Vorteil hat, dass sie gut mit der bestehenden Siliziumchip-Herstellungstechnologie und Glasfaser-Kommunikationstechnologie kompatibel ist. Topologische Methode (Topological) : Von Microsoft seit vielen Jahren erforscht. Dies ist ein ehrgeiziger Ansatz zur Schaffung von Qubits, die von Grund auf stark gegen Umgebungsrauschen (weniger anfällig für Fehler) sind, indem die topologischen Eigenschaften spezieller Teilchen namens Anyonen genutzt werden. Theoretisch ist es das stärkste System, aber die Hürde für die physikalische Umsetzung gilt als die höchste. Der Weg zum ultimativen Ziel: \u0026ldquo;Fehlertoleranter Quantencomputer (FTQC)\u0026rdquo; Berechnungsfehler (wie Bitflips aufgrund von kosmischer Strahlung) existieren auch in der heutigen Welt der klassischen Computer, aber sie werden durch \u0026ldquo;Fehlerkorrekturcodes\u0026rdquo; perfekt korrigiert, sodass wir unsere Smartphones nutzen können, ohne jemals einen Fehler zu bemerken. Um groß angelegte, praktische Berechnungen auf einem Quantencomputer durchführen zu können, ist eine ähnliche \u0026ldquo;Quantenfehlerkorrektur (Quantum Error Correction: QEC)\u0026rdquo; unerlässlich.\nDa Quantenzustände jedoch die Eigenschaft haben, \u0026ldquo;bei der Messung zusammenzubrechen\u0026rdquo;, gibt es ein fatales Dilemma, dass wir nicht direkt in sie hineinsehen (sie messen) können, um auf Fehler zu prüfen. Um dies zu vermeiden, wurden Theorien (wie Oberflächencodes) etabliert, um geschickt eine große Anzahl von instabilen \u0026ldquo;physikalischen Qubits\u0026rdquo; zu kombinieren, um ein einziges stabiles \u0026ldquo;logisches Qubit\u0026rdquo; aufzubauen, das Fehler erkennen und korrigieren kann. Es wird jedoch gesagt, dass 1.000 bis 10.000 physikalische Qubits erforderlich sind, um 1 logisches Qubit zu erzeugen. Um den Shor-Algorithmus unter Verwendung von Tausenden von logischen Qubits auszuführen, wäre ein riesiges System mit insgesamt Millionen bis zehn Millionen physikalischen Qubits erforderlich.\nWir befinden uns derzeit im sogenannten Zeitalter der NISQ-Geräte (Noisy Intermediate-Scale Quantum) . Dies ist eine Übergangsphase von Maschinen, die mit Dutzenden bis Hunderten von Qubits ohne Fehlerkorrektur arbeiten. Experten prognostizieren, dass langfristige Forschung und Entwicklung über 10 bis mehrere Jahrzehnte erforderlich sein werden, um das ultimative Ziel zu erreichen: einen vollständig fehlerkorrigierbaren \u0026ldquo;fehlertoleranten Quantencomputer (Fault-Tolerant Quantum Computer: FTQC)\u0026rdquo; .\nKapitel 6: Die Geschichte und Zukunftsaussichten von Quantencomputern Lassen Sie uns abschließend einen Blick darauf werfen, wie Quantencomputer entstanden sind und wohin sie in Zukunft gehen werden.\nVon der Entstehung der Theorie bis zum Nachweis der \u0026ldquo;Quantenüberlegenheit\u0026rdquo; 1980er Jahre : Physiker wie Paul Benioff und Richard Feynman schlugen das Konzept eines Computers vor, der die Prinzipien der Quantenmechanik nutzt. Die Bemerkung \u0026ldquo;Wenn Sie die Natur simulieren wollen, nutzen Sie die Quantenmechanik\u0026rdquo; war der Ausgangspunkt. 1994 : Peter Shor veröffentlichte einen Quantenalgorithmus für die Primfaktorzerlegung (Shor-Algorithmus). Dies schockierte die Welt und führte dazu, dass enorme Summen an Forschungsgeldern flossen. 1996 : Lov Grover veröffentlichte den Grover-Algorithmus, der die Datensuche beschleunigt. 2019 : Ein historischer Meilenstein. Google gab bekannt, dass es seinen 53-Qubit-Supraleiterprozessor \u0026ldquo;Sycamore\u0026rdquo; verwendete, um eine Zufallszahlengenerierungs-Verifizierungsberechnung in etwa 200 Sekunden abzuschließen, die auf einem klassischen Supercomputer 10.000 Jahre dauern würde (so wurde behauptet). Dies sorgte als erste Demonstration der \u0026ldquo;Quantenüberlegenheit (Quantum Supremacy)\u0026rdquo; der Welt für großes Aufsehen (später verbesserten IBM und andere den klassischen Supercomputeralgorithmus und es kam zu heißen Debatten mit dem Gegenargument, dass die Berechnung in wenigen Tagen möglich sei). Ab 2023 : IBM kündigte den \u0026ldquo;Condor\u0026rdquo;-Prozessor mit über 1.000 Qubits an. Darüber hinaus meldeten die Harvard University und andere erfolgreiche Erzeugung und Manipulation von \u0026ldquo;logischen Qubits\u0026rdquo;, und erste Demonstrationen von Fehlerkorrekturtechnologien werden nach und nach berichtet. Auf dem Weg zur Technologie der nächsten Generation Ein Quantencomputer ist nicht einfach eine \u0026ldquo;CPU der nächsten Generation mit einer höheren Taktfrequenz\u0026rdquo;. Es ist wirklich ein Paradigmenwechsel in der Informatik, der das Konzept der Berechnung selbst unter Verwendung der Regeln der Quantenmechanik, die die mikroskopische Welt beherrschen, von Grund auf umschreibt.\nWir werden wahrscheinlich zu unseren Lebzeiten keine \u0026ldquo;persönlichen Quantensmartphones\u0026rdquo; besitzen, die in unsere Taschen passen (und es besteht auch keine Notwendigkeit dafür). Die Zukunft, in der mächtige Quanten-Rechenzentren auf der anderen Seite von Cloud-Netzwerken wie AWS oder Azure plötzlich Wunderheilmittel für unheilbare Krankheiten entdecken oder saubere Energie-Traummaterialien (wie Katalysatoren, die Ammoniak bei Raumtemperatur aus Stickstoff in der Atmosphäre synthetisieren) zur Lösung der globalen Erwärmung finden, rückt jedoch unweigerlich näher.\nGegenwärtig befinden wir uns noch in den Kinderschuhen, vergleichbar mit dem ENIAC in den 1940er Jahren, der mit Lochkarten betrieben wurde, während die Hitze seiner riesigen Vakuumröhren den Raum aufheizte. Dennoch bündeln weltweit hochkarätige Forscher und Ingenieure ihr Wissen, und täglich werden technische Durchbrüche gemeldet. Wir, die wir diesen Prozess der Evolution der \u0026ldquo;Morgendämmerung der Berechnung\u0026rdquo; in Echtzeit miterleben können, leben in einer historisch sehr aufregenden Zeit.\nDie Tür zur Quantenwelt hat sich gerade erst geöffnet. Wir müssen die zukünftigen Entwicklungen im Auge behalten.\nDieser Artikel soll die grundlegenden Konzepte des Quantencomputings für Geschäftsleute und die allgemeine, an Technologie interessierte Öffentlichkeit auf verständliche Weise erklären. Bitte beachten Sie, dass einige strenge mathematische und physikalische Definitionen (wie die Details der Bra-Ket-Notation und komplexer Wahrscheinlichkeitsamplituden) vereinfacht wurden.\n","date":"2026-09-05T22:10:00+09:00","image":"http://kenji.blog/p/quantum-computer-basics/quantum_basics_eyecatch_1788613712487_huf997c6e55368509d0617b56f68899854_1084950_120x120_fill_q75_box_smart1.jpg","permalink":"http://kenji.blog/de/p/quantum-computer-basics/","title":"【Vollständige Analyse】Was ist ein Quantencomputer? ~Das ultimative Berechnungsprinzip von Grund auf verstehen~"},{"content":"Einführung: Die \u0026ldquo;Bedrohung\u0026rdquo; der Kryptographie durch Quantencomputer Heutzutage wird ein Großteil unserer alltäglichen Kommunikation im Internet – Online-Banking-Zahlungen, das Surfen auf Websites (HTTPS), Nachrichten in Messenger-Apps bis hin zu Blockchain- und Krypto-Asset-Transaktionen – durch eine Technologie namens \u0026ldquo;Public-Key-Kryptographie\u0026rdquo; geschützt. Konkret bilden Algorithmen wie die RSA-Kryptographie und die Elliptische-Kurven-Kryptographie (ECC) die Grundlage für die Zuverlässigkeit unserer modernen digitalen Gesellschaft.\nDiese Verschlüsselungsmethoden basieren auf der Sicherheit mathematischer Probleme, wie der \u0026ldquo;Faktorisierung riesiger Zahlen\u0026rdquo; und dem \u0026ldquo;diskreten Logarithmusproblem\u0026rdquo;, für deren Lösung heutige klassische Computer (einschließlich Supercomputer) astronomisch lange brauchen würden. Wenn jedoch der in den letzten Jahren rasant voranschreitende Quantencomputer in die Praxis umgesetzt wird, wird diese Prämisse grundlegend auf den Kopf gestellt.\nDer \u0026ldquo;Shor-Algorithmus\u0026rdquo;, der 1994 von Peter Shor veröffentlicht wurde, bewies mathematisch, dass ein Quantencomputer mit ausreichender Leistung Probleme wie Faktorisierung und diskrete Logarithmen in extrem kurzer Zeit lösen kann. Das bedeutet das Risiko, dass die kryptographische Kommunikation, die das heutige Internet schützt, in Zukunft vollständig entschlüsselt wird (ein Problem, das als Y2Q: Years to Quantum oder Q-Day bezeichnet wird).\nNoch gravierender ist die Existenz einer Angriffsmethode namens \u0026ldquo;Harvest Now, Decrypt Later\u0026rdquo; (Jetzt Daten stehlen und speichern, später entschlüsseln, wenn die Kryptographie gebrochen werden kann). Daten, die über Jahrzehnte hinweg vertraulich bleiben müssen, wie nationale Geheimnisse, geistiges Eigentum von Unternehmen und persönliche biometrische Informationen, könnten bereits jetzt gestohlen werden mit der Prämisse einer künftigen Entschlüsselung.\nUm auf diese beispiellose Krise zu reagieren, bündeln Kryptographen und Forschungseinrichtungen auf der ganzen Welt ihre Anstrengungen, um eine kryptographische Technologie der nächsten Generation zu entwickeln, die auch gegen Angriffe durch Quantencomputer sicher bleibt: die Post-Quanten-Kryptographie (PQC) . In diesem Artikel erklären wir die Grundlagen der PQC, die Mechanismen wichtiger Algorithmen und die neuesten Trends in der globalen Standardisierung, die vom US-amerikanischen National Institute of Standards and Technology (NIST) vorangetrieben werden.\nWas ist Post-Quanten-Kryptographie (PQC)? Post-Quanten-Kryptographie (Post-Quantum Cryptography, PQC) ist ein Sammelbegriff für kryptographische Algorithmen, die so konzipiert sind, dass sie auf bestehenden klassischen Computern laufen und gleichzeitig resistent gegen Angriffe durch zukünftige große Quantencomputer (wie den Shor-Algorithmus) sind.\nTechnologien, die oft damit verwechselt werden, sind die \u0026ldquo;Quantenkryptographie (Quantum Cryptography)\u0026rdquo; und die \u0026ldquo;Quantenschlüsselverteilung (QKD)\u0026rdquo;, aber diese verfolgen völlig andere Ansätze. Die Quantenkryptographie (QKD) ist eine hardwarebasierte Technologie, die physikalische Gesetze der Quantenmechanik (wie die Eigenschaft, dass sich der Zustand bei Beobachtung ändert) nutzt, um Abhören auf dem Kommunikationsweg physikalisch unmöglich zu machen. Sie erfordert dedizierte Glasfasern und spezielle Geräte, was zu Herausforderungen hinsichtlich Einführungskosten und Entfernungsbeschränkungen führt.\nAndererseits ist die PQC eine rein \u0026ldquo;mathematisch\u0026rdquo; basierte, softwarebasierte kryptographische Technologie . Daher kann sie als Software-Update in bestehende Internet-Infrastrukturen, Server, Smartphones, Browser usw. integriert werden und zeichnet sich durch eine sehr hohe Anwendbarkeit in der realen Welt aus. Für IT-Unternehmen und Regierungsbehörden weltweit ist es eine dringende Aufgabe, die derzeit verwendeten RSA und ECC durch diese PQC zu ersetzen (zu migrieren).\nDie 4 wichtigsten mathematischen Ansätze der PQC Basierend auf mathematischen Problemen (wie NP-schweren Problemen), die selbst mit Quantencomputern nicht effizient gelöst werden können, wurden verschiedene PQC-Algorithmen vorgeschlagen. Hier stellen wir die vier wichtigsten Kategorien vor, die derzeit im Mainstream sind.\nHauptansätze der Post-Quanten-Kryptographie (PQC) 1 2 3 4 5 6 7 8 9 10 11 12 graph LR PQC[Post-Quanten-Kryptographie PQC] --\u0026gt; L[Gitterbasierte Kryptographie Lattice-based] PQC --\u0026gt; H[Hash-basierte Kryptographie Hash-based] PQC --\u0026gt; M[Multivariate Kryptographie Multivariate] PQC --\u0026gt; C[Codebasierte Kryptographie Code-based] L --\u0026gt; L1(FIPS 203: ML-KEM) L --\u0026gt; L2(FIPS 204: ML-DSA) H --\u0026gt; H1(FIPS 205: SLH-DSA) style PQC fill:#f9f,stroke:#333,stroke-width:2px 1. Gitterbasierte Kryptographie (Lattice-based Cryptography) Derzeit gilt die \u0026ldquo;gitterbasierte Kryptographie\u0026rdquo; als die vielversprechendste und am weitesten verbreitete Methode im Bereich der PQC. Gitterbasierte Kryptographie stützt ihre Sicherheit auf Probleme im Zusammenhang mit regelmäßig angeordneten Punkten (Gitterpunkten) in vieldimensionalen Räumen. Bekannte Probleme sind das \u0026ldquo;Kürzeste-Vektor-Problem (SVP: Shortest Vector Problem)\u0026rdquo; und das \u0026ldquo;Learning With Errors (LWE)\u0026quot;-Problem.\nÜberblick über die Funktionsweise: Stellen Sie sich unzählige Punkte vor, die in einem gitterartigen Muster in einem Raum mit extrem hoher Dimension (Hunderte bis Tausende von Dimensionen) angeordnet sind. Einen bestimmten Gitterpunkt in zwei oder drei Dimensionen zu finden, ist einfach, aber in Hunderten von Dimensionen wurde noch kein Algorithmus entdeckt, um ihn effizient zu finden, weder mit einem klassischen noch mit einem Quantencomputer. Insbesondere das LWE-Problem nutzt die Eigenschaft, dass \u0026ldquo;wenn man absichtlich ein kleines \u0026lsquo;Rauschen (Fehler)\u0026rsquo; zu einem System linearer Gleichungen hinzufügt, es drastisch schwieriger wird, die ursprünglichen Variablen zu erraten\u0026rdquo;.\nVorteile:\nAnwendbar sowohl für Schlüsselaustausch (KEM) als auch für digitale Signaturen. Sehr schnelle Verarbeitungsgeschwindigkeit (in einigen Fällen schneller als RSA und ECC). Gute Balance mit relativ kleinen Schlüssel- und Chiffretextgrößen. Viele der derzeit vom NIST standardisierten Algorithmen (wie ML-KEM und ML-DSA) verwenden diese gitterbasierte Kryptographie.\n2. Hash-basierte Kryptographie (Hash-based Cryptography) Die hashbasierte Kryptographie ist ein auf digitale Signaturen spezialisierter PQC-Algorithmus. Die Grundlage ihrer Sicherheit hängt ausschließlich von der Kollisionsresistenz und Einwegfunktion sicherer \u0026ldquo;kryptographischer Hash-Funktionen\u0026rdquo; wie SHA-2 und SHA-3 ab.\nÜberblick über die Funktionsweise: Der Ausgangspunkt ist ein Einweg-Signaturschema (One-Time-Signatur), das nur einmal verwendet werden kann, genannt \u0026ldquo;Lamport-Signatur\u0026rdquo;. Durch die Bündelung dieser mit einer baumartigen Datenstruktur, dem sogenannten \u0026ldquo;Merkle-Baum\u0026rdquo;, wird es möglich, mehrere Signaturen mit einem einzigen Schlüsselpaar zu erstellen.\nVorteile:\nDie Sicherheitsgrundlage ist extrem robust, mit einem starken Beweis, dass sie \u0026ldquo;sicher ist, solange die Hash-Funktion sicher ist\u0026rdquo;. Da es weniger Abhängigkeit von mathematischen Strukturen gibt, ist das Risiko, eine unerwartete Entschlüsselungsmethode zu finden, gering. Nachteile:\nKann nicht für den Schlüsselaustausch (KEM) verwendet werden, nur für digitale Signaturen. Die Signaturgrößen neigen dazu, groß zu sein. Es gibt \u0026ldquo;Zustandsbehaftete (Stateful)\u0026rdquo; und \u0026ldquo;Zustandslose (Stateless)\u0026rdquo; Versionen, wobei stateful (wie XMSS) bei der Implementierung schwierig sind, da die Anzahl der Schlüsselverwendungen streng verwaltet werden muss. NIST standardisiert \u0026ldquo;SLH-DSA (ehemals SPHINCS+)\u0026rdquo; als zustandslose hashbasierte Signatur.\n3. Multivariate Kryptographie (Multivariate Cryptography) Multivariate Kryptographie basiert auf der Schwierigkeit, Systeme multivariater quadratischer Polynome mit vielen Variablen (MQ-Problem: Multivariate Quadratic problem) zu lösen. Dieses Problem ist bekanntermaßen NP-schwer.\nÜberblick über die Funktionsweise: Der Sender erstellt einen Chiffretext (Signatur), indem er Klartext (oder einen Hash-Wert) in eine komplexe Gleichung mit vielen Variablen einfügt, die als öffentlicher Schlüssel bereitgestellt wird. Der rechtmäßige Empfänger besitzt \u0026ldquo;verborgene Informationen (eine Trapdoor), die die Struktur der Gleichung in eine leicht lösbare Form umwandeln\u0026rdquo; als privaten Schlüssel und verwendet diesen zum Entschlüsseln (oder zur Signaturüberprüfung).\nVorteile:\nSehr kleine Signaturgrößen. Extrem schnelle Signaturüberprüfung. Geeignet für IoT-Geräte mit begrenzten Ressourcen. Nachteile:\nDie Größe des öffentlichen Schlüssels ist sehr groß (oft von mehreren Dutzend bis Hunderten von Kilobyte). Es gibt Fälle in der Vergangenheit, in denen vielversprechende Algorithmen (wie Rainbow) durch klassische Angriffe gebrochen wurden, was es schwieriger macht, Vertrauen in ihre Sicherheit aufzubauen als bei anderen Methoden. 4. Codebasierte Kryptographie (Code-based Cryptography) Die codebasierte Kryptographie wendet die Theorie der \u0026ldquo;Fehlerkorrekturcodes\u0026rdquo;, die zur Korrektur von Fehlern auf Kommunikationswegen verwendet werden, auf die Kryptographie an. Das 1978 vorgeschlagene \u0026ldquo;McEliece-Kryptosystem\u0026rdquo; ist das bekannteste und eines der ältesten in der PQC.\nÜberblick über die Funktionsweise: Der Sender codiert den Klartext unter Verwendung des öffentlichen Schlüssels des Empfängers (eine Generatormatrix eines Fehlerkorrekturcodes mit verborgener spezifischer Struktur) und fügt absichtliche Fehler (Rauschen) hinzu, bevor er ihn sendet. Der Empfänger verwendet den privaten Schlüssel, um die Fehler zu entfernen und den Klartext zu extrahieren. Ein Kryptoanalytiker muss die Fehler aus einem bloßen Zufallscode korrigieren, dessen Struktur er nicht kennt; dies wird als \u0026ldquo;allgemeines Syndrom-Dekodierungsproblem\u0026rdquo; bezeichnet und es ist bewiesen, dass es NP-schwer ist.\nVorteile:\nDa es seit über 40 Jahren intensiv erforscht wird und bisher keine wirksamen Angriffe gefunden wurden, ist die Zuverlässigkeit seiner Sicherheit extrem hoch. Schnelle Verarbeitungsgeschwindigkeiten für Verschlüsselung und Entschlüsselung. Nachteile:\nDie Größe des öffentlichen Schlüssels ist enorm (kann mehrere Megabyte betragen). Daher ist es schwierig, es in Umgebungen mit begrenzter Kommunikationsbandbreite oder Speicherkapazität (wie bei TLS-Handshakes) zu verwenden. Neueste Entwicklungen der PQC-Standardisierung durch NIST Das US-amerikanische National Institute of Standards and Technology (NIST) rief 2016 weltweit zur Einreichung von Vorschlägen für Post-Quanten-Kryptographie-Algorithmen der nächsten Generation auf und hat über mehrere Jahre hinweg strenge Evaluierungen und Runden durchgeführt.\nIm Jahr 2024 veröffentlichte NIST schließlich die folgenden drei Algorithmen als offizielle Federal Information Processing Standards (FIPS). Damit wurde ein solides Fundament für Organisationen auf der ganzen Welt geschaffen, um mit der Implementierung in Produktionsumgebungen zu beginnen.\nFestgelegte FIPS-Standards (2024) FIPS 203: ML-KEM (früher: CRYSTALS-Kyber)\nVerwendung: Key Encapsulation Mechanism (KEM) / Verschlüsselung \u0026amp; Schlüsselaustausch Basistechnologie: Gitterbasierte Kryptographie (Module-LWE) Eigenschaften: Hervorragendes Gleichgewicht zwischen Schlüsselgröße und Geschwindigkeit; dient als Standard-PQC-Schlüsselaustausch für allgemeine Internetanwendungen wie Webkommunikation (TLS) und sichere Messaging-Apps. FIPS 204: ML-DSA (früher: CRYSTALS-Dilithium)\nVerwendung: Digitale Signatur Basistechnologie: Gitterbasierte Kryptographie (Module-LWE) Eigenschaften: Der primäre Standard für digitale Signaturen. Es ermöglicht eine effiziente Verarbeitung und wird der neue Standard für alle elektronischen Signaturanwendungen sein, wie z. B. Software-Signaturen und Dokumentenauthentifizierung. FIPS 205: SLH-DSA (früher: SPHINCS+)\nVerwendung: Digitale Signatur Basistechnologie: Hash-basierte Kryptographie (zustandslos) Eigenschaften: Spielt eine entscheidende Rolle, da es als Backup fungiert, falls in Zukunft Schwachstellen in der gitterbasierten Kryptographie entdeckt werden sollten. Die Signaturgröße ist größer, aber es eignet sich für Anwendungen, die eine langfristige Zuverlässigkeit erfordern. Das Streben nach weiterer Diversität Während das NIST seinen ersten Standardisierungsprozess abgeschlossen hat, setzt es die Suche nach weiteren Algorithmen fort. Insbesondere weil die Standards derzeit auf \u0026ldquo;Gitterbasierte Kryptographie\u0026rdquo; ausgerichtet sind, wird der Gewährleistung von kryptographischer Diversität (Crypto Diversity) große Bedeutung beigemessen. Codebasierte Kryptographie und andere werden als Backup-Standards für den Schlüsselaustausch evaluiert, und das Fundament der PQC soll in Zukunft noch robuster werden.\nÜbergangsszenarien zur PQC und Herausforderungen: Die Bedeutung der \u0026ldquo;Crypto-Agility\u0026rdquo; Mit der Veröffentlichung formeller Standards durch das NIST werden Regierungsbehörden, Finanzinstitute und Technologieunternehmen auf der ganzen Welt den Übergang (Migration) vom bestehenden RSA/ECC zur PQC ernsthaft einleiten. Richtlinien von Organisationen wie der NSA (National Security Agency) empfehlen ebenfalls einen baldigen Abschluss der Migration.\nAnnahme eines hybriden Ansatzes Da PQC-Algorithmen neu sind, haben sie im Vergleich zur klassischen Kryptographie nicht den \u0026ldquo;Test der Zeit\u0026rdquo; bestanden. Um das Risiko von Fehlern in der Implementierung oder der Entdeckung neuer Angriffsmethoden zu berücksichtigen, wird während der Übergangsphase ein \u0026ldquo;hybrider Ansatz\u0026rdquo; empfohlen. Hierbei wird ein bewährtes bestehendes Kryptosystem (z. B. ECDHE) mit einem neuen PQC (z. B. ML-KEM) für den Schlüsselaustausch kombiniert. Derzeit schreitet die probeweise Einführung dieses Ansatzes in großen Browsern und Cloud-Diensten rasant voran.\nErreichen von Crypto-Agility (Kryptographische Agilität) Was Unternehmen und Systementwickler in Zukunft am meisten im Auge behalten sollten, ist die Gewährleistung der \u0026ldquo;Crypto-Agility\u0026rdquo; . Eine flexible Architektur, die es ermöglicht, kryptographische Algorithmen schnell auszutauschen und zu aktualisieren, ohne das System anzuhalten, wenn in Zukunft Schwachstellen in einem Algorithmus entdeckt werden oder neue Standards aufkommen, ist unerlässlich.\nDie Erstellung eines Kryptographie-Inventars (CBOM: Cryptography Bill of Materials), um genau zu verstehen, \u0026ldquo;wo\u0026rdquo;, \u0026ldquo;welche Kryptographie\u0026rdquo; und \u0026ldquo;zu welchem Zweck\u0026rdquo; in den eigenen Systemen verwendet wird, ist ein wichtiger erster Schritt in Richtung PQC-Migration.\nFazit: Vorbereitung auf den kommenden \u0026ldquo;Q-Day\u0026rdquo; Während die Entwicklung von Quantencomputern der Menschheit enorme Vorteile bringen wird, stellt sie gleichzeitig die größte Bedrohung für die kryptographische Sicherheit dar, die die Grundlage unserer derzeitigen digitalen Gesellschaft bildet. Die Post-Quanten-Kryptographie (PQC) ist kein \u0026ldquo;Forschungsthema der fernen Zukunft\u0026rdquo; mehr. Durch den Meilenstein der Veröffentlichung von FIPS-Standards durch das NIST ist die PQC in eine vollwertige Phase der \u0026ldquo;Implementierung und Migration\u0026rdquo; eingetreten.\nIn Anbetracht der Bedrohung durch \u0026ldquo;Harvest Now, Decrypt Later\u0026rdquo; ist der Übergang zur PQC eine oberste Priorität, die für jede Organisation, die mit hochsensiblen Daten umgeht, \u0026ldquo;jetzt sofort\u0026rdquo; angegangen werden muss. Lassen Sie uns die Technologie der Kryptographie der nächsten Generation tief verstehen und die Crypto-Agility unserer Systeme erhöhen, um das kommende Quantencomputer-Zeitalter sicher zu meistern.\n","date":"2026-09-05T22:09:22+09:00","image":"http://kenji.blog/p/post-quantum-cryptography/post_quantum_cryptography_1788613735417_hu9d405d830ed3e56e9e703ab601cf6c0a_1143219_120x120_fill_q75_box_smart1.jpg","permalink":"http://kenji.blog/de/p/post-quantum-cryptography/","title":"[PQC] Das gesamte Bild der Post-Quanten-Kryptographie, der Kryptographie der nächsten Generation im Zeitalter der Quantencomputer"},{"content":"Einleitung: Die Schnittstelle von Kryptographie und Quantencomputern In der modernen Internetgesellschaft ist die \u0026ldquo;Public-Key-Kryptographie\u0026rdquo; die Grundlage für den Schutz des Kommunikationsgeheimnisses. Ein prominentes Beispiel ist die \u0026ldquo;RSA-Verschlüsselung\u0026rdquo;, die 1977 von Ron Rivest, Adi Shamir und Leonard Adleman entwickelt wurde. Von Online-Shopping-Zahlungen, die wir täglich nutzen, über das Surfen auf Websites (HTTPS) bis hin zum Senden und Empfangen von E-Mails fungiert die RSA-Verschlüsselung als Herzstück der Internet-Infrastruktur.\nJedoch wurde darauf hingewiesen, dass die Sicherheit durch das Aufkommen von \u0026ldquo;Quantencomputern\u0026rdquo; grundlegend untergraben werden könnte. In den Medien finden sich manchmal aufsehenerregende Schlagzeilen wie \u0026ldquo;Wenn der Quantencomputer fertiggestellt ist, werden alle Passwörter und Verschlüsselungen der Welt in Sekunden geknackt\u0026rdquo;. Ist das wirklich wahr?\nIn diesem Artikel werden wir tief in die Mechanismen der GNFS (General Number Field Sieve), einer klassischen kryptoanalytischen Methode, und des \u0026ldquo;Shor-Algorithmus (Shor\u0026rsquo;s Algorithm)\u0026rdquo;, des ultimativen kryptoanalytischen Algorithmus unter Verwendung eines Quantencomputers, eintauchen. Wir werden fortgeschrittene Konzepte wie die Quanten-Fouriertransformation und das Finden von Perioden leicht verständlich erklären und den aktuellen Stand der Quantenhardware in der derzeitigen NISQ-Ära (Noisy Intermediate-Scale Quantum) sowie die tatsächlichen Hürden zur Knackung von RSA-2048 detailliert untersuchen.\nDie Grundlage der RSA-Verschlüsselung: Die Schwierigkeit der Primfaktorzerlegung Die Sicherheit der RSA-Verschlüsselung beruht auf einer extrem einfachen Asymmetrie in der Mathematik. Es ist die Tatsache, dass \u0026ldquo;es einfach ist, zwei riesige Primzahlen miteinander zu multiplizieren, aber extrem schwierig ist, die ursprünglichen zwei Primzahlen aus dem Ergebnis dieser Multiplikation (zusammengesetzte Zahl) zu finden (Primfaktorzerlegung)\u0026rdquo;.\nAngenommen, wir haben zwei Primzahlen $ p = 61 $ und $ q = 53 $. Diese Multiplikation $ N = p \\times q = 3233 $ ist in einem Augenblick berechnet. Wenn uns jedoch nur die Zahl \u0026ldquo;3233\u0026rdquo; gegeben wird und wir lösen sollen: \u0026ldquo;Welche Primzahlen wurden hier multipliziert?\u0026rdquo;, explodiert die Rechenkomplexität, je größer die Zahlen werden.\nBeim derzeit dominierenden RSA-2048 wird eine riesige zusammengesetzte Zahl $ N $ mit einer Schlüssellänge von 2048 Bits verwendet, was etwa 617 Dezimalstellen entspricht. Wenn dieses $ N $ in Primfaktoren zerlegt werden kann, gilt die Verschlüsselung als geknackt.\nDie Herausforderung durch klassische Computer: GNFS (General Number Field Sieve) Um das Problem der Primfaktorzerlegung zu lösen, haben Mathematiker und Kryptographen über viele Jahre verschiedene Algorithmen entwickelt. Unter ihnen gilt die ** General Number Field Sieve (GNFS) ** als die derzeit schnellste Methode für klassische Computer.\nGNFS ist eine Methode zur Primfaktorzerlegung einer riesigen Zahl $ N $, indem die Berechnungen im Ring der ganzen Zahlen auf einen abstrakteren algebraischen Zahlkörper (Number Field) erweitert und analysiert werden. Der grobe Ablauf ist wie folgt:\n** Auswahl des Polynoms ** : Finden eines Polynoms $ f(x) $ mit geeignetem Grad und Koeffizienten, das $ N $ als Wurzel hat. ** Datensammlung (Sieben) ** : Suche nach einer großen Anzahl von Zahlenpaaren über den rationalen Zahlen und dem algebraischen Zahlkörper, die sich in kleine Primzahlen (glatte Zahlen, Smooth numbers) zerlegen lassen. Dieser Prozess wird als \u0026ldquo;Sieben\u0026rdquo; bezeichnet und ist der zeitaufwändigste Teil. ** Matrixerstellung und -reduktion ** : Erstellung einer riesigen dünnbesetzten Matrix (eine Matrix, deren Elemente meist 0 sind) basierend auf den gesammelten Beziehungen und Lösung unter Verwendung linearer algebraischer Methoden (wie dem Block-Lanczos-Verfahren). ** Berechnung der Quadratwurzel ** : Schließlich Berechnung der Quadratwurzel über dem algebraischen Zahlkörper, um den Faktor (Primfaktor) von $ N $ abzuleiten. Die Rechenkomplexität von GNFS wird asymptotisch mit $ O(\\exp((\\sqrt[3]{\\frac{64}{9}} + o(1)) (\\log N)^{\\frac{1}{3}} (\\log \\log N)^{\\frac{2}{3}})) $ bewertet. Dies wird als \u0026ldquo;subexponentielle\u0026rdquo; (Sub-exponential) Zeitkomplexität bezeichnet. Sie ist schneller als exponentielle Zeit, aber wesentlich langsamer als polynomiale Zeit (Polynomial time).\nTatsächlich gelang es einem internationalen Forschungsteam im Jahr 2020, RSA-250 (eine zusammengesetzte Zahl mit 829 Bits und 250 Stellen) mithilfe von GNFS erfolgreich zu faktorisieren. Für diese Berechnung wurden weltweit Rechenressourcen gebündelt und eine enorme Rechenzeit von etwa 2700 CPU-Kern-Jahren aufgewendet. Bei 2048 Bits würde die erforderliche Rechenmenge jedoch Billionen Mal länger dauern als das Alter des Universums, und es ist unmöglich, dies mit klassischen Methoden in realistischer Zeit zu knacken, egal wie viele aktuelle Supercomputer parallel betrieben werden.\nDer Trumpf des Quantencomputers: Shors Algorithmus Hier kommt der 1994 von Peter Shor vorgestellte \u0026ldquo;Shor-Algorithmus\u0026rdquo; ins Spiel. Dieser Algorithmus war bahnbrechend, da er das Problem der Primfaktorzerlegung auf einem Quantencomputer in ** polynomialer Zeit ** ( $ O((\\log N)^3) $ ) lösen kann. Der Unterschied zwischen subexponentieller Zeit und polynomialer Zeit ist entscheidend, und theoretisch bedeutet dies, dass die RSA-Verschlüsselung mit einem Quantencomputer vollständig gebrochen wird.\nGesamtablauf von Shors Algorithmus 1 2 3 4 5 6 7 8 9 10 graph TD A[Eingabe der zu faktorisierenden Zahl N] --\u0026gt; B[Zufällige ganze Zahl a wählen] B --\u0026gt; C{Größter gemeinsamer Teiler\u0026lt;br\u0026gt;von a und N} C --\u0026gt;|Größer als 1| D[Glücklicherweise Primfaktor gefunden!] C --\u0026gt;|1 teilerfremd| E[Einsatz des Quantencomputers] E --\u0026gt; F[Finde die Periode r der Funktion f_x = a^x mod N\u0026lt;br\u0026gt;mit der Quanten-Fouriertransformation] F --\u0026gt; G{Ist die Periode r gerade und\u0026lt;br\u0026gt;a^r/2 ≢ -1 mod N} G --\u0026gt;|Ja| H[Berechne gcd_a^r/2 ± 1, N] H --\u0026gt; I((Primfaktorzerlegung erfolgreich!)) G --\u0026gt;|Nein| B Shors Algorithmus löst das Problem der Primfaktorzerlegung nicht direkt, sondern verwendet zahlentheoretische Theoreme, um es in ein anderes Problem namens \u0026ldquo;Period Finding Problem\u0026rdquo; umzuwandeln, und löst es durch Ausnutzung der Eigenschaften von Quantencomputern mit hoher Geschwindigkeit.\nSchritt 1: Reduktion der Primfaktorzerlegung auf das Periodenfindungsproblem (Klassische Verarbeitung) Der erste Schritt des Algorithmus wird auf einem klassischen Computer durchgeführt. Für die zu faktorisierende Zahl $ N $ wählen wir eine zufällige ganze Zahl $ a $ ( $ 1 \u003c a \u003c N $ ), die teilerfremd zu $ N $ ist (der größte gemeinsame Teiler ist 1). Wenn durch Zufall der größte gemeinsame Teiler nicht 1 ist, ist der gefundene gemeinsame Teiler ein Primfaktor von $ N $ und die Entschlüsselung ist abgeschlossen, aber die Wahrscheinlichkeit ist extrem gering.\nAls nächstes betrachten wir die Folge der folgenden modularen Gleichungen: $ f(x) = a^x \\pmod N $\nWenn wir $ x = 1, 2, 3, \\dots $ in diese Funktion $ f(x) $ einsetzen, scheinen die Werte zufällig zu sein, aber da wir innerhalb eines endlichen Bereichs rechnen, kehrt sie an einem bestimmten Punkt immer zum ursprünglichen Wert zurück und wiederholt dieselbe Zahlenfolge. Wir nennen diese Wiederholungsperiode $ r $. Das bedeutet, wir suchen die kleinste positive ganze Zahl $ r $, sodass $ a^r \\equiv 1 \\pmod N $ gilt. Das ist das \u0026ldquo;Periodenfindungsproblem\u0026rdquo;.\nWenn diese Periode $ r $ gefunden wird und $ r $ eine gerade Zahl ist, haben wir $ a^r - 1 \\equiv 0 \\pmod N $ und wir können die Faktorisierungsformel verwenden, um es wie folgt umzuwandeln: $ (a^{r/2} - 1)(a^{r/2} + 1) \\equiv 0 \\pmod N $ Von hier aus können wir den euklidischen Algorithmus verwenden, um den größten gemeinsamen Teiler von $ N $ und $ a^{r/2} \\pm 1 $ zu berechnen, was uns mit extrem hoher Wahrscheinlichkeit die Primfaktoren von $ N $ liefert.\nUm die Periode $ r $ auf einem klassischen Computer zu finden, sind letztlich exponentiell viele Schritte erforderlich und können nicht beschleunigt werden. Ein Quantencomputer kann diese Periode $ r $ jedoch im Bruchteil einer Sekunde (in polynomialer Zeit) finden.\nSchritt 2: Vorbereitung des Quantenzustands und Superposition Ab hier kommt der Quantencomputer ins Spiel. Quantencomputer verwenden \u0026ldquo;Qubits\u0026rdquo;, die die Zustände \u0026ldquo;0\u0026rdquo; und \u0026ldquo;1\u0026rdquo; gleichzeitig annehmen können. Bei Shors Algorithmus bereiten wir zwei Register vor: ein Register zum Speichern der Eingabe (das erste Register) und ein Register zum Speichern des Berechnungsergebnisses (das zweite Register).\nZuerst wird eine Quantengatteroperation, das sogenannte Hadamard-Gatter (Hadamard gate), auf alle Qubits im ersten Register angewendet. Dadurch gelangt das erste Register in einen ** gleichmäßigen Überlagerungszustand ** (Superposition) aller möglichen $ x $-Werte (von $ 0 $ bis $ 2^n-1 $ , wobei $ n $ eine ausreichend große Anzahl von Bits ist).\nDas bedeutet, dass im Quantencomputer unzählige Eingabewerte $ x=0, 1, 2, 3, \\dots $ gleichzeitig und parallel existieren.\nSchritt 3: Modulare Exponentiation auf dem Quantencomputer (Quantum Modular Exponentiation) Als Nächstes berechnen wir $ f(x) = a^x \\pmod N $, wobei der Überlagerungszustand des ersten Registers als Eingabe dient, und speichern das Ergebnis im zweiten Register. Da diese Berechnung als unitäre Transformation in einem Quantenschaltkreis ausgeführt wird, wird die Berechnung von $ f(x) $ für alle $ x $ \u0026ldquo;simultan und parallel\u0026rdquo; (Quantenparallelität) ausgeführt, während die Überlagerung beibehalten wird.\nZu diesem Zeitpunkt ist der Raum des gesamten Quantensystems eine gewaltige Superposition der Zustände: $ |x, a^x \\bmod N\\rangle $\nWenn wir jedoch einfach das zweite Register messen (beobachten), wird nur ein zufälliger Wert von $ a^x \\bmod N $ probabilistisch ausgewählt, und in Verbindung damit ist auch der Wert $ x $ im ersten Register auf einen festgelegt. Das ist dasselbe wie eine einmalige Berechnung auf einem klassischen Computer, und wir können die Periode $ r $ nicht finden.\nNach den Regeln der Quantenmechanik können wir nicht direkt in den Überlagerungszustand schauen. Wie können wir also die globale Information extrahieren, die die \u0026ldquo;Periode\u0026rdquo; des Ganzen ist?\nSchritt 4: Quanten-Fouriertransformation (QFT: Quantum Fourier Transform) Der geniale Durchbruch des Shor-Algorithmus zur Überwindung dieser Barriere ist die Anwendung der ** Quanten-Fouriertransformation (QFT) ** auf das erste Register.\nBevor wir eine Messung vornehmen, analysieren wir die Welleneigenschaften der Funktion $ f(x) $. Angenommen, wir beobachten das zweite Register. Angenommen, wir erhalten einen Wert $ y $. Dann kollabiert der Zustand des ersten Registers in \u0026ldquo;die Superposition aller $ x $, für die $ a^x \\pmod N = y $ gilt\u0026rdquo;. Diese Werte von $ x $ werden ein diskret angeordneter Zustand (eine Art kammartige Wahrscheinlichkeitsamplitudenverteilung) in Intervallen der Periode $ r $ sein, wie $ x_0, x_0 + r, x_0 + 2r, x_0 + 3r, \\dots $.\nWir wenden die Quanten-Fouriertransformation (QFT) auf diesen Zustand an. So wie die klassische diskrete Fouriertransformation ein Signal im Zeitbereich in den Frequenzbereich umwandelt, bewirkt die QFT eine Interferenz der Wahrscheinlichkeitsamplituden von Quantenzuständen.\nWenn die QFT angewendet wird, heben sich aufgrund des Quanteninterferenzeffekts die Wahrscheinlichkeiten falscher Antworten, die nicht mit der Periode $ r $ in Resonanz stehen (phasenverschoben sind), gegenseitig auf und nähern sich null (destruktive Interferenz), und nur die Wahrscheinlichkeit der richtigen Antwort, die Informationen über die Periode $ r $ enthält, wird verstärkt (konstruktive Interferenz).\nSchritt 5: Messung und Kettenbruchentwicklung (Klassische Nachbearbeitung) Wenn wir das erste Register nach Anwendung der QFT messen, erhalten wir mit sehr hoher Wahrscheinlichkeit eine ganze Zahl $ c $, die nahe der Form $ c \\approx \\frac{j \\cdot 2^n}{r} $ liegt (wobei $ j $ eine unbekannte ganze Zahl und $ 2^n $ die Größe des Registers ist).\nWir geben dieses Messergebnis $ c $ an den klassischen Computer zurück und bilden einen Bruch $ \\frac{c}{2^n} \\approx \\frac{j}{r} $. Und durch die Berechnung von Näherungswerten mit einer mathematischen Methode namens \u0026ldquo;Kettenbruchentwicklung (Continued fraction expansion)\u0026rdquo; können wir die Periode $ r $, die im Nenner steht, wunderbar aufdecken.\nWenn $ r $ bekannt ist, können die Primfaktoren von $ N $ mithilfe der Formel aus Schritt 1 berechnet werden, und die RSA-Verschlüsselung wird vollständig geknackt.\nDas Potenzial und die Herausforderungen aktueller Quantencomputer (NISQ) Obwohl der Shor-Algorithmus theoretisch perfekt ist, lautet die Antwort auf die Frage \u0026ldquo;Wird die RSA-Verschlüsselung morgen gebrochen sein?\u0026rdquo; eindeutig \u0026ldquo;Nein\u0026rdquo;. Der Grund dafür liegt in den Grenzen der aktuellen Hardware-Technologie von Quantencomputern.\nDie Ära des NISQ (Noisy Intermediate-Scale Quantum) Wir befinden uns derzeit in der Ära, die als \u0026ldquo;NISQ\u0026rdquo; bezeichnet wird. NISQ-Geräte haben Dutzende bis Hunderte von physikalischen Qubits, sind aber extrem anfällig für Rauschen.\nQubits werden leicht durch die äußere Umgebung, wie z.B. Wärme und elektromagnetische Wellen, beeinflusst, was häufig zu \u0026ldquo;Dekohärenz\u0026rdquo; (Verlust der Quantenverschränkung), bei der der Quantenzustand zerstört wird, und zu \u0026ldquo;Gatterfehlern\u0026rdquo; während der Gatteroperationen führt. Wenn man versucht, sehr tiefe Quantenschaltungen (mit einer riesigen Anzahl von Rechenschritten) wie Shors Algorithmus auszuführen, summieren sich Fehler während der Berechnung und die endgültige Ausgabe wird zu reinem Rauschen ohne Bedeutung.\nPhysikalische Qubits und logische Qubits Die \u0026ldquo;Quantenfehlerkorrektur (Quantum Error Correction)\u0026rdquo; ist unerlässlich, um dieses Fehlerproblem zu lösen. Fehlerkorrekturcodes werden auch in klassischen Computern verwendet, aber Quantenfehlerkorrektur ist sehr komplex aufgrund des \u0026ldquo;No-Cloning-Theorems\u0026rdquo;, das das Kopieren von Quantenzuständen verbietet.\nBei der Quantenfehlerkorrektur wird eine ideale \u0026ldquo;logische Qubit\u0026rdquo; ohne Fehler durch die Kombination vieler verrauschter \u0026ldquo;physikalischer Qubits\u0026rdquo; unter Verwendung von Technologien wie dem \u0026ldquo;Oberflächencode (Surface Code)\u0026rdquo; erzeugt.\nUnter der Annahme der aktuellen Fehlerraten wird geschätzt, dass etwa 1.000 bis 10.000 physikalische Qubits erforderlich sind, um ein einziges logisches Qubit zu erzeugen. Dies wird als \u0026ldquo;Fehlerkorrektur-Overhead\u0026rdquo; bezeichnet.\nWelche Ressourcen werden benötigt, um RSA-2048 zu brechen? Wie viele Ressourcen werden also tatsächlich benötigt, um den Shor-Algorithmus zur Knackung von RSA-2048 auszuführen?\nLaut bahnbrechenden Ressourcenschätzungen aus einem Papier von Craig Gidney (Google) und Martin Ekerå aus dem Jahr 2021 werden die folgenden Ressourcen benötigt, wenn man einen optimierten Shor-Algorithmus verwendet und eine Fehlerkorrektur mit Oberflächencodes durchführt:\n** Anzahl der logischen Qubits ** : Etwa 4.096 ** Anzahl der physikalischen Qubits ** : ** Etwa 20 Millionen ** (unter Annahme einer Fehlerrate von etwa $10^{-3}$) ** Rechenzeit ** : Etwa 8 Stunden (erfordert Millionen bis Milliarden von physikalischen Gatteroperationen) Wie weit ist im Vergleich dazu der aktuelle Stand der Quantenhardware? Der Ende 2023 von IBM angekündigte supraleitende Quantenprozessor \u0026ldquo;Condor\u0026rdquo; hat 1.121 Qubits. Darüber hinaus haben bahnbrechende Forschungen zur Erzeugung logischer Qubits (wie die Erzeugung von 48 logischen Qubits unter Verwendung neutraler Atome durch die Harvard University und QuEra) das Licht der Welt erblickt, aber wir sind noch nicht an dem Punkt angelangt, an dem \u0026ldquo;rauschfreie, perfekte Berechnungen\u0026rdquo; kontinuierlich für lange Zeiträume ausgeführt werden können.\nDie Skalierung von Tausenden physikalischen Qubits auf ** 20 Millionen ** praktikable physikalische Qubits (in einem System, das miteinander verbunden ist, bei kryogenen Temperaturen stabil arbeitet und Steuersignale bei ultrahohen Geschwindigkeiten verarbeitet) stellt eine gewaltige ingenieurtechnische Barriere dar (Verkabelungsprobleme, Grenzen der Kühlleistung und Aufblähen der Steuerelektronik). Viele Experten prognostizieren, dass es mindestens 10 bis 30 Jahre oder länger dauern wird, bis \u0026ldquo;fehlertolerante Quantencomputer (FTQC)\u0026rdquo; realisiert werden, die RSA-2048 knacken können.\nDie schleichende Bedrohung durch \u0026ldquo;Store Now, Decrypt Later\u0026rdquo; und die Morgendämmerung der PQC Es ist jedoch voreilig zu denken, dass \u0026ldquo;wir sicher sind, wenn es noch mehr als 10 Jahre dauert\u0026rdquo;. Derzeit gibt es Daten wie nationale Geheimnisse, medizinische Daten und langfristige Infrastrukturdesigns, deren Geheimhaltung für Jahrzehnte garantiert werden muss.\nDie Besorgnis betrifft die Angriffsmethode ** \u0026ldquo;Store Now, Decrypt Later\u0026rdquo; ** . Böswillige Staaten oder Organisationen fangen alle mit aktueller RSA oder ECC (Elliptic Curve Cryptography) verschlüsselten Kommunikationsdaten ab und speichern sie. Wenn dann in 10 oder 20 Jahren leistungsstarke Quantencomputer fertiggestellt sind, nutzen sie den Shor-Algorithmus, um alle vergangenen Daten zu entschlüsseln und Geheimnisse zu lüften.\nUm der Bedrohung durch diese zeitliche Verzögerung entgegenzuwirken, hat das NIST (National Institute of Standards and Technology) in den USA den Standardisierungsprozess für ** \u0026ldquo;Post-Quanten-Kryptographie (PQC)\u0026rdquo; ** rasch vorangetrieben.\nPQC sind neue kryptographische Algorithmen, die auf mathematischen Problemen basieren, deren Entschlüsselung auch mit einem Quantencomputer schwierig ist (d. h. Shors Algorithmus kann nicht angewendet werden). Die Hauptansätze sind wie folgt:\n** Gitterbasierte Kryptographie ** : Basiert auf dem LWE-Problem (Learning with Errors) usw. Der Mainstream in der NIST-Standardisierung (Kyber, Dilithium usw.). ** Codebasierte Kryptographie ** : Beruht auf der Schwierigkeit, Fehlerkorrekturcodes zu decodieren. ** Multivariate Kryptographie ** : Beruht auf der Schwierigkeit, Systeme von quadratischen Gleichungen mit mehreren Variablen zu lösen. ** Hash-basierte Signaturen ** : Digitale Signaturen, deren Sicherheit ausschließlich von Hash-Funktionen abhängt. Bereits in großen Softwares und Plattformen wie Google Chrome und Apples iMessage haben PQC-Implementierungstests und Hybrid-Implementierungen begonnen.\nFazit Quantencomputer wandeln sich von Träumereien der Science-Fiction zu echten ingenieurtechnischen Herausforderungen. Shors Algorithmus ist eine großartige intellektuelle Errungenschaft der Menschheit, die Mathematik und Quantenmechanik vereint, aber er birgt auch die \u0026ldquo;zerstörerische Kraft\u0026rdquo;, die Grundlagen unserer digitalen Gesellschaft zu erschüttern.\nDie RSA-Verschlüsselung wird nicht schon morgen unbrauchbar sein. Angesichts der Entwicklung der Quantentechnologie und des Risikos von \u0026ldquo;Store Now, Decrypt Later\u0026rdquo; hat die gigantische Migration in der Geschichte der Kryptographie, der Übergang zu PQC, jedoch bereits begonnen. Wir sind heute Zeugen der vordersten Front eines Paradigmenwechsels in der Informationssicherheit.\n","date":"2026-09-05T22:09:21+09:00","image":"http://kenji.blog/p/shors-algorithm-and-rsa-breaking/quantum_breaking_rsa_1788613722990_huf997c6e55368509d0617b56f68899854_1017504_120x120_fill_q75_box_smart1.jpg","permalink":"http://kenji.blog/de/p/shors-algorithm-and-rsa-breaking/","title":"Wird der Quantencomputer wirklich die RSA-Verschlüsselung knacken? ~ Shors Algorithmus und der aktuelle Stand ~"},{"content":"【Komplette Anatomie】Den stärksten Kryptographie-Knack-Algorithmus „GNFS“ in C++ implementieren und verstehen Die \u0026ldquo;RSA-Verschlüsselung\u0026rdquo;, die das heutige Internet grundlegend stützt. Ihre Robustheit beruht auf der mathematischen Überzeugung, dass \u0026ldquo;es für heutige Computer praktisch unmöglich ist, gigantische zusammengesetzte Zahlen in Primfaktoren zu zerlegen\u0026rdquo;.\nAber die Menschheit hat nie aufgegeben. Gegenwärtig gibt es für klassische Computer (normale Computer, keine Quantencomputer) den ** stärksten und fortschrittlichsten Algorithmus der Menschheit ** zur Durchführung riesiger Primfaktorzerlegungen. Das ist das ** \u0026ldquo;General Number Field Sieve (GNFS, Allgemeines Zahlkörpersieb)\u0026rdquo; **.\nIn diesem Artikel werden wir den gesamten Quellcode einer streng modellierten Implementierung der hochmodernen Berechnungslogik von GNFS in C++ (unter Verwendung von boost::multiprecision für Multipräzisions-Ganzzahlen aus der Boost-Bibliothek) veröffentlichen und die Tiefen der \u0026ldquo;algebraischen Zahlentheorie\u0026rdquo;, die dahinter steckt, gründlich erklären.\nBitte genießen Sie das Mysterium der Mathematik und die rohe Kraft der Informatik, die es bezwingt, zusammen mit dem Quellcode.\n1. GNFS State-of-the-Art Logik-Framework (Gesamter Quellcode) Zunächst zeigen wir das vollständige Bild der GNFS-C++-Implementierung, die wir diesmal erläutern. Das eigentliche Zahlkörpersieb (wie CADO-NFS) ist ein riesiges verteiltes System, das in die Hunderttausende von Zeilen geht, aber dieser Code extrahiert die ** \u0026ldquo;5 wesentlichen Pipelines (Phasen)\u0026rdquo; ** , die GNFS ausmachen, entwirft sie als Klassen und modelliert sie in einer Minimalkonfiguration, ohne die mathematische Bedeutung zu verlieren.\n1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 #include \u0026lt;iostream\u0026gt; #include \u0026lt;vector\u0026gt; #include \u0026lt;cmath\u0026gt; #include \u0026lt;map\u0026gt; #include \u0026lt;set\u0026gt; #include \u0026lt;chrono\u0026gt; #include \u0026lt;boost/multiprecision/cpp_int.hpp\u0026gt; // Multipräzisions-Ganzzahlen von Boost.Multiprecision verwenden using namespace boost::multiprecision; // ============================================================================ // [SOTA GNFS] General Number Field Sieve (Allgemeines Zahlkörpersieb) State-of-the-Art Logik-Framework // // Dieser Code ist eine strikte Modellierung der 5 Pipelines des hochmodernen GNFS, // wie es in CADO-NFS usw. verwendet wird, als C++ (Boost) Klassendesign. // ============================================================================ struct Relation { int64_t a; int64_t b; std::vector\u0026lt;uint32_t\u0026gt; rational_primes; std::vector\u0026lt;uint32_t\u0026gt; algebraic_primes; }; // ============================================================================ // Phase 1: Polynomial Selection (KleinJung Algorithmus) // ============================================================================ class PolynomialSelector { public: int degree; std::vector\u0026lt;cpp_int\u0026gt; f; // Polynom der algebraischen Seite f(x) std::vector\u0026lt;cpp_int\u0026gt; g; // Polynom der rationalen Seite g(x) = x - m cpp_int m; PolynomialSelector(int d) : degree(d) {} // Generierung des Initialpolynoms basierend auf der base-m Entwicklung (tatsächlich wird eine fortgeschrittenere Gitterbasisreduktion LLL verwendet) void select(const cpp_int\u0026amp; N) { std::cout \u0026lt;\u0026lt; \u0026#34;[Phase 1] Polynomial Selection (Degree \u0026#34; \u0026lt;\u0026lt; degree \u0026lt;\u0026lt; \u0026#34;) starting...\u0026#34; \u0026lt;\u0026lt; std::endl; // Einfache base-m Entwicklung (Grad d) // m = N^(1/d) cpp_int N_copy = N; m = 1; // Einfache Näherung für m (Näherung ohne Verwendung von Boost-Funktionen) cpp_int low = 1, high = N; while (low \u0026lt;= high) { cpp_int mid = low + (high - low) / 2; cpp_int p = 1; for(int i=0; i\u0026lt;degree; ++i) p *= mid; if (p \u0026lt;= N) { m = mid; low = mid + 1; } else { high = mid - 1; } } f.resize(degree + 1); cpp_int temp = N; for (int i = 0; i \u0026lt;= degree; ++i) { f[i] = temp % m; temp /= m; } g = {-m, 1}; // g(x) = x - m std::cout \u0026lt;\u0026lt; \u0026#34; -\u0026gt; m = \u0026#34; \u0026lt;\u0026lt; m \u0026lt;\u0026lt; std::endl; std::cout \u0026lt;\u0026lt; \u0026#34; -\u0026gt; f(x) = \u0026#34;; for(int i = degree; i \u0026gt;= 0; --i) { std::cout \u0026lt;\u0026lt; f[i] \u0026lt;\u0026lt; \u0026#34;x^\u0026#34; \u0026lt;\u0026lt; i \u0026lt;\u0026lt; (i \u0026gt; 0 ? \u0026#34; + \u0026#34; : \u0026#34;\u0026#34;); } std::cout \u0026lt;\u0026lt; \u0026#34;\\n[Phase 1] Complete.\u0026#34; \u0026lt;\u0026lt; std::endl; } }; // ============================================================================ // Phase 2: Lattice Sieving (Gittersieb) // ============================================================================ // Aktuelle GNFS verwenden anstelle des Line Sieve (Liniensieb) das Special-q Lattice Sieving // (Spezielles q-Gittersieb) von Franke, Kleinjung et al. als De-facto-Standard. class LatticeSieve { uint32_t rational_bound; uint32_t algebraic_bound; std::vector\u0026lt;uint32_t\u0026gt; rational_fb; std::vector\u0026lt;uint32_t\u0026gt; algebraic_fb; public: LatticeSieve(uint32_t rb, uint32_t ab) : rational_bound(rb), algebraic_bound(ab) {} void generate_factor_bases() { std::cout \u0026lt;\u0026lt; \u0026#34;[Phase 2] Generating Factor Bases (Rational Bound: \u0026#34; \u0026lt;\u0026lt; rational_bound \u0026lt;\u0026lt; \u0026#34;, Algebraic Bound: \u0026#34; \u0026lt;\u0026lt; algebraic_bound \u0026lt;\u0026lt; \u0026#34;)\u0026#34; \u0026lt;\u0026lt; std::endl; // (Ausgelassen) In Wirklichkeit werden Primzahlen generiert und mit Legendre-Symbolen etc. gefiltert } std::vector\u0026lt;Relation\u0026gt; sieve(const PolynomialSelector\u0026amp; poly) { std::cout \u0026lt;\u0026lt; \u0026#34;[Phase 2] Special-q Lattice Sieving active...\u0026#34; \u0026lt;\u0026lt; std::endl; std::vector\u0026lt;Relation\u0026gt; relations; // Mock-Implementierung: Das tatsächliche Gittersieb scannt blockweise Hunderte von GB an Speicherraum, // ordnet (a, b) Paare Gittern pro spezieller Primzahl q (a = i*q + j*...) zu // und führt ein Sieben mit maximaler Cache-Effizienz aus. // Füge zu Demonstrationszwecken eine Dummy-Relation hinzu Relation r; r.a = 17; r.b = 3; r.rational_primes = {2, 5}; r.algebraic_primes = {3, 7}; relations.push_back(r); std::cout \u0026lt;\u0026lt; \u0026#34;[Phase 2] Found \u0026#34; \u0026lt;\u0026lt; relations.size() \u0026lt;\u0026lt; \u0026#34; relations.\u0026#34; \u0026lt;\u0026lt; std::endl; return relations; } }; // ============================================================================ // Phase 3: Filtering (Singularitäten bereinigen und Cliquen zusammenführen) // ============================================================================ class Filter { public: void reduce_matrix(std::vector\u0026lt;Relation\u0026gt;\u0026amp; relations) { std::cout \u0026lt;\u0026lt; \u0026#34;[Phase 3] Filtering Relations...\u0026#34; \u0026lt;\u0026lt; std::endl; // 1. Singleton removal (Löschen von Relationen mit Primzahlen, die nur einmal vorkommen) // 2. Clique merging (Zusammenführen von Relationen, um spärliche Matrizen dicht zu machen) // In der Praxis werden hunderte Millionen von Zeilen mit Union-Find-Algorithmen usw. auf einige Millionen komprimiert. std::cout \u0026lt;\u0026lt; \u0026#34;[Phase 3] Matrix size reduced optimally.\u0026#34; \u0026lt;\u0026lt; std::endl; } }; // ============================================================================ // Phase 4: Linear Algebra over GF(2) (Block Wiedemann Methode) // ============================================================================ class LinearAlgebraGF2 { public: // In neueren Supercomputer-Umgebungen wird die für verteiltes Rechnen besser geeignete // Block Wiedemann Methode (Coppersmith-Implementierung) anstelle der Block Lanczos Methode als State-of-the-Art eingesetzt. std::vector\u0026lt;std::vector\u0026lt;int\u0026gt;\u0026gt; solve_nullspace(const std::vector\u0026lt;Relation\u0026gt;\u0026amp; relations) { std::cout \u0026lt;\u0026lt; \u0026#34;[Phase 4] Block Wiedemann algorithm over GF(2) starting...\u0026#34; \u0026lt;\u0026lt; std::endl; // Iteriert das Produkt von spärlichen Matrizen (Sparse Matrix) und Vektoren, // und findet mehrere Lösungsvektoren (Kerne), für die M * x = 0 mod 2 gilt. std::vector\u0026lt;std::vector\u0026lt;int\u0026gt;\u0026gt; dependencies; // Liste der Abhängigkeiten // Dummy-Daten dependencies.push_back({0}); std::cout \u0026lt;\u0026lt; \u0026#34;[Phase 4] Found \u0026#34; \u0026lt;\u0026lt; dependencies.size() \u0026lt;\u0026lt; \u0026#34; linear dependencies (perfect squares).\u0026#34; \u0026lt;\u0026lt; std::endl; return dependencies; } }; // ============================================================================ // Phase 5: Algebraic Square Root (Algebraische Quadratwurzel) // ============================================================================ class AlgebraicSquareRoot { public: void compute_and_factor(const std::vector\u0026lt;Relation\u0026gt;\u0026amp; relations, const std::vector\u0026lt;int\u0026gt;\u0026amp; dep, const cpp_int\u0026amp; N) { std::cout \u0026lt;\u0026lt; \u0026#34;[Phase 5] Algebraic Square Root computation...\u0026#34; \u0026lt;\u0026lt; std::endl; // 1. Berechnung der Quadratwurzel V der rationalen Seite (einfache Ganzzahlarithmetik) cpp_int V = 1; // V = sqrt( prod(a - bm) ) mod N // 2. Berechnung der Quadratwurzel gamma der algebraischen Seite (Montgomery\u0026#39;s Methode etc.) // Findet das Element gamma des riesigen algebraischen Körpers O_K und bildet es mit dem Homomorphismus phi auf die reale Welt ab // Y = phi(gamma) mod N cpp_int Y = 1; // Es wird vorausgesetzt, dass in Phase 2 und 4 Folgen von quadratischen Resten (Quadratic Characters) hinzugefügt wurden, // um die Hindernisse (Obstructions) der Idealklassengruppe und der Einheitengruppe zu umgehen. std::cout \u0026lt;\u0026lt; \u0026#34; -\u0026gt; Homomorphism map phi applied.\u0026#34; \u0026lt;\u0026lt; std::endl; std::cout \u0026lt;\u0026lt; \u0026#34;[Phase 5] Calculating GCD(V - Y, N)...\u0026#34; \u0026lt;\u0026lt; std::endl; cpp_int factor = gcd(V - Y, N); // GCD(X-Y, N) if (factor \u0026gt; 1 \u0026amp;\u0026amp; factor \u0026lt; N) { std::cout \u0026lt;\u0026lt; \u0026#34;\\n================================================================\u0026#34; \u0026lt;\u0026lt; std::endl; std::cout \u0026lt;\u0026lt; \u0026#34;[SUCCESS] Non-trivial factor found: \u0026#34; \u0026lt;\u0026lt; factor \u0026lt;\u0026lt; std::endl; std::cout \u0026lt;\u0026lt; \u0026#34; Other factor: \u0026#34; \u0026lt;\u0026lt; N / factor \u0026lt;\u0026lt; std::endl; std::cout \u0026lt;\u0026lt; \u0026#34;================================================================\u0026#34; \u0026lt;\u0026lt; std::endl; } else { std::cout \u0026lt;\u0026lt; \u0026#34;[FAILURE] Trivial solution. Trying next dependency...\u0026#34; \u0026lt;\u0026lt; std::endl; } } }; // ============================================================================ // Main Execution Pipeline // ============================================================================ int main() { std::cout \u0026lt;\u0026lt; \u0026#34;================================================================\u0026#34; \u0026lt;\u0026lt; std::endl; std::cout \u0026lt;\u0026lt; \u0026#34; [SOTA GNFS] General Number Field Sieve Engine (Boost C++) \u0026#34; \u0026lt;\u0026lt; std::endl; std::cout \u0026lt;\u0026lt; \u0026#34;================================================================\u0026#34; \u0026lt;\u0026lt; std::endl; // Die gigantische zusammengesetzte Zahl N, die wir in Primfaktoren zerlegen wollen, z. B. RSA-270 cpp_int N(\u0026#34;233108530344407544527637656910680524145619812480305449042948611968495918245135782867888369318577116418213919268572658314913060672626911354027609793166341626693946596196427744273886601876896313468704059066746903123910748277606548649151920812699309766587514735456594993207\u0026#34;); // Der Grad des Polynoms (bei mehr als 130 Stellen wird normalerweise Grad 5 bis 6 gewählt) int degree = 6; // Initialisierung der Pipeline PolynomialSelector poly_select(degree); LatticeSieve sieve(10000000, 20000000); // Tatsächliche Schranken (Bounds) liegen bei Dutzenden bis Hunderten von Millionen Filter filter; LinearAlgebraGF2 linalg; AlgebraicSquareRoot sqrt_step; auto start_time = std::chrono::high_resolution_clock::now(); // 1. Polynom-Selektion poly_select.select(N); // 2. Sieb-Verarbeitung (Sieving) sieve.generate_factor_bases(); std::vector\u0026lt;Relation\u0026gt; relations = sieve.sieve(poly_select); // 3. Filterung (Matrixkompression) filter.reduce_matrix(relations); // 4. Lineare Algebra (Nullraum-Suche über GF(2)) std::vector\u0026lt;std::vector\u0026lt;int\u0026gt;\u0026gt; dependencies = linalg.solve_nullspace(relations); // 5. Berechnung der algebraischen Quadratwurzel und GCD for (const auto\u0026amp; dep : dependencies) { sqrt_step.compute_and_factor(relations, dep, N); } auto end_time = std::chrono::high_resolution_clock::now(); std::chrono::duration\u0026lt;double\u0026gt; elapsed = end_time - start_time; std::cout \u0026lt;\u0026lt; \u0026#34;\\n[System] SOTA GNFS Pipeline completed in \u0026#34; \u0026lt;\u0026lt; elapsed.count() \u0026lt;\u0026lt; \u0026#34; seconds.\u0026#34; \u0026lt;\u0026lt; std::endl; return 0; } Nun, wie durchbricht dieser Code die kryptographischen Mauern? Wir werden für jede der 5 Phasen die detaillierten Algorithmen und die fortgeschrittene Mathematik verdaulich erklären.\n2. Das ultimative Ziel von GNFS: $X^2 \\equiv Y^2 \\pmod N$ Das Ziel von GNFS, wie auch den meisten modernen Algorithmen zur gigantischen Primfaktorzerlegung, ist es, ein nicht-triviales Paar $(X, Y)$ zu finden, das die folgende Kongruenz erfüllt:\n$$X^2 \\equiv Y^2 \\pmod N$$ Diese Gleichung bedeutet, dass \u0026ldquo;die Reste von $X^2$ und $Y^2$, wenn man sie durch $N$ teilt, gleich sind\u0026rdquo;. Umgeformt ergibt das: $X^2 - Y^2 \\equiv 0 \\pmod N$ Das heißt, $(X-Y)(X+Y)$ ist ein Vielfaches von $N$.\nWenn $X \\not\\equiv \\pm Y \\pmod N$ (eine nicht-triviale Lösung) gilt, gibt es zwischen $(X-Y)$ und $N$ einen \u0026ldquo;gemeinsamen Teiler größer als 1 und kleiner als $N$\u0026rdquo;. Wenn wir hier den Euklidischen Algorithmus anwenden, um ** $\\gcd(X-Y, N)$ ** zu berechnen, finden wir die Primfaktoren von $N$ sehr leicht.\nJedoch ist die Suche nach diesen $X$ und $Y$ wie die Suche nach der Nadel im Heuhaufen. Daher wählt GNFS den genialen Ansatz, ** \u0026ldquo;zwei Welten\u0026rdquo; ** zu erschaffen – die \u0026ldquo;Welt der realen ganzen Zahlen\u0026rdquo; und die \u0026ldquo;Welt der algebraischen Zahlkörper von Polynomen\u0026rdquo; – und die Berechnungen aufzuteilen.\n3. Phase 1: Polynom-Selektion (Polynomial Selection) 1 2 3 4 5 6 7 8 9 10 11 12 class PolynomialSelector { // ... void select(const cpp_int\u0026amp; N) { // Berechnung von m = N^(1/d) und base-m Entwicklung // ... for (int i = 0; i \u0026lt;= degree; ++i) { f[i] = temp % m; temp /= m; } g = {-m, 1}; // g(x) = x - m } }; Der erste Schritt von GNFS ist die Schaffung eines \u0026ldquo;magischen Polynoms\u0026rdquo;, um die beiden Welten zu überbrücken. Für eine riesige Zahl $N$ wählen wir eine ganze Zahl $m$. Normalerweise wählt man $m \\approx N^{1/d}$ (im Code wird ein Polynom $d=6$. Grades angenommen).\nDann entwickeln wir $N$ im $m$-adischen System (Basis $m$) und verwenden die Koeffizienten, um das Polynom $f(x)$ zu konstruieren. $$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$$ Dieses Polynom $f(x)$ hat eine äußerst wichtige Eigenschaft: ** \u0026ldquo;Wenn man $m$ für die Variable $x$ einsetzt, ergibt es genau $N$ ($f(m) = N$)\u0026rdquo; **. Mit anderen Worten, $f(m) \\equiv 0 \\pmod N$. Das Polynom der rationalen Seite ist definiert als $g(x) = x - m$.\nDadurch werden die ** \u0026ldquo;Welt des algebraischen Zahlkörpers $\\mathbb{Z}[\\alpha]$\u0026rdquo; **, die durch die Wurzel $\\alpha$ von $f(x)=0$ beherrscht wird, und die gewöhnliche ** \u0026ldquo;Welt der rationalen Zahlen (ganzen Zahlen) $\\mathbb{Z}$\u0026rdquo; ** durch einen Ringhomomorphismus $x \\to m$ fest miteinander verbunden.\nIn hochmodernen Implementierungen wie CADO-NFS werden Algorithmen wie der KleinJung-Algorithmus oder die LLL-Gitterbasisreduktion verwendet, um monatelang nach dem \u0026ldquo;absolut besten Polynom $f(x)$\u0026rdquo; zu suchen, bei dem die Koeffizienten nicht extrem groß werden und in nachfolgenden Schritten leicht Primzahlen auftreten (Smoothness/Glattigkeit begünstigt wird).\n4. Phase 2: Spezielles $q$-Gittersieb (Special-q Lattice Sieving) 1 2 3 4 5 6 7 8 9 class LatticeSieve { // ... std::vector\u0026lt;Relation\u0026gt; sieve(const PolynomialSelector\u0026amp; poly) { // ... // Ordnet (a, b) Paare Gittern pro spezieller Primzahl q zu // und führt ein Sieben mit maximaler Cache-Effizienz aus. // ... } }; Nachdem die beiden Welten vorbereitet sind, betreten wir den nächsten Schritt: die Suche nach \u0026ldquo;glatten Zahlen\u0026rdquo; (Zahlen, die nur aus kleinen Primfaktoren bestehen) in beiden Welten. Wir generieren unzählige ganzzahlige Paare $(a, b)$ und berechnen die folgenden zwei Werte:\n** Wert auf der rationalen Seite ** : $a - bm$ ** Norm auf der algebraischen Seite ** : $b^d f(a/b)$ Das Ziel von GNFS ist es, zig bis hunderte Millionen ** \u0026ldquo;Paare (Relationen), bei denen die Werte sowohl der rationalen als auch der algebraischen Seite vollständig in kleine Primfaktoren zerlegt werden können\u0026rdquo; **, zu sammeln.\nIn frühen GNFS-Versionen wurde das \u0026ldquo;Liniensieb (Line Sieve)\u0026rdquo; verwendet, bei dem die $(a, b)$ auf der $xy$-Ebene aufgereiht und der Reihe nach durch Primzahlen geteilt wurden. Da dies jedoch auf den Speicher überall verstreut zugriff, traten häufig Cache-Misses auf, was es sehr langsam machte.\nDeshalb verwenden moderne High-End-Codes die Methode des ** \u0026ldquo;Speziellen $q$-Gittersiebs (Special-q Lattice Sieve)\u0026rdquo; **. Man fixiert eine relativ große Primzahl $q$ und berücksichtigt nur Paare $(a, b)$, für die \u0026ldquo;der algebraische Wert definitiv durch $q$ teilbar ist\u0026rdquo;. Da die Paare $(a, b)$, die diese Bedingung erfüllen, ein \u0026ldquo;Gitter (Lattice)\u0026rdquo; auf der Ebene bilden, ist die Sprungweite der Speicheradressen bei der Berechnung konstant, was perfekt in die L1/L2-Caches der CPUs passt. Die Einführung dieses Gittersiebs hat die Rechengeschwindigkeit von GNFS dramatisch erhöht.\n5. Phase 3: Filterung (Filtering) 1 2 3 4 5 6 7 class Filter { public: void reduce_matrix(std::vector\u0026lt;Relation\u0026gt;\u0026amp; relations) { // 1. Singleton removal (Löschen von Relationen mit Primzahlen, die nur einmal vorkommen) // 2. Clique merging (Zusammenführen von Relationen, um spärliche Matrizen dicht zu machen) } }; Computer weltweit haben in Phase 2 über Monate hinweg Hunderte Millionen von Relationen gesammelt. Wenn wir diese jedoch direkt in den nächsten \u0026ldquo;Schritt zum Lösen von Gleichungssystemen (Matrixberechnung)\u0026rdquo; werfen, würde selbst der Speicher eines Supercomputers überlaufen.\nDaher wird ein extrem starker Matrixkompressionsprozess namens ** Filtering (Filterung) ** durchgeführt.\n** Singleton removal (Singularitäten bereinigen) ** Angenommen, eine riesige Primzahl $p$ tritt in Hunderten Millionen Relationen \u0026ldquo;nur ein einziges Mal\u0026rdquo; auf. Da es unser Ziel ist, \u0026ldquo;die Exponenten aller Primzahlen gerade (ein Vielfaches von 2) zu machen\u0026rdquo;, kann eine Primzahl, die nur einmal auftritt, niemals einen geraden Exponenten erreichen. Daher werden Relationen, die diese Primzahl enthalten, sofort als \u0026ldquo;nutzloser Müll\u0026rdquo; gelöscht (bereinigt). Da dies kettenreaktionsartig passiert, werden die Hunderte Millionen Datenzeilen rasant reduziert.\n** Clique merging (Cliquen zusammenführen) ** Darüber hinaus werden durch die Kombination (Addition) von Relationen, die bestimmte Primzahlen teilen, die Anzahl der Zeilen reduziert und die spärliche (luftige) Matrix dichter gemacht (es wird ein Ansatz ähnlich der Cliquensuche in der Graphentheorie verwendet).\nDurch diese Optimierung wird die gigantische dünnbesetzte Matrix auf eine rechenbare Größe dramatisch komprimiert.\n6. Phase 4: Lineare Algebra über GF(2) (Block Wiedemann Methode) 1 2 3 4 5 6 7 class LinearAlgebraGF2 { public: std::vector\u0026lt;std::vector\u0026lt;int\u0026gt;\u0026gt; solve_nullspace(const std::vector\u0026lt;Relation\u0026gt;\u0026amp; relations) { // Iteriert das Produkt von spärlichen Matrizen (Sparse Matrix) und Vektoren, // und findet mehrere Lösungsvektoren (Kerne), für die M * x = 0 mod 2 gilt. } }; Endlich der Kern des Puzzles. Wir multiplizieren die gesammelten Relationen miteinander, um nach einer ** \u0026ldquo;Kombination zu suchen, bei der die Exponenten aller Primfaktoren gerade Zahlen werden\u0026rdquo; **.\nMathematisch gesehen geht es darum, eine riesige Matrix $M$, deren Elemente die Exponenten der Primzahlen (\u0026ldquo;gerade oder ungerade\u0026rdquo;, also 0 oder 1) sind, und einen Vektor $x$, der angibt, welche Relationen verwendet werden, zu verwenden, um Lösungsvektoren $x$ (Nullraum / Kern) zu finden, für die gilt: ** $M \\cdot x \\equiv 0 \\pmod 2$ **\nWir müssen ein Gleichungssystem mit einer Matrix von enormer Größe, Millionen von Zeilen × Millionen von Spalten, lösen. Mit der üblichen Gaußschen Elimination wäre die Komplexität $O(N^3)$ und die Berechnung würde nicht enden, bevor das Universum sein Ende findet.\nDaher wird in hochmodernen Implementierungen die ** \u0026ldquo;Block Wiedemann Methode\u0026rdquo; ** verwendet. Dies ist eine Art Krylov-Unterraum-Methode, die die Tatsache nutzt, dass die Matrix $M$ \u0026ldquo;sehr spärlich (meistens 0)\u0026rdquo; ist, und durch wiederholte Multiplikationen von Matrix und Vektoren eine Lösung ableitet. Im Gegensatz zur älteren Block-Lanczos-Methode kann die Block-Wiedemann-Methode den Berechnungsprozess vollständig auf mehrere Cluster aufteilen, wodurch sie bei parallelen Berechnungen im modernen verteilten Cloud-Computing oder auf Supercomputern eine überwältigende Leistung erbringt.\n7. Phase 5: Algebraische Quadratwurzel (Algebraic Square Root) und der Zusammenbruch der Kryptographie 1 2 3 4 5 6 7 8 9 10 11 12 13 class AlgebraicSquareRoot { public: void compute_and_factor(...) { // 1. Berechnung der Quadratwurzel V der rationalen Seite cpp_int V = 1; // 2. Berechnung der Quadratwurzel gamma der algebraischen Seite cpp_int Y = 1; // ... cpp_int factor = gcd(V - Y, N); // GCD(X-Y, N) } }; Durch die Matrixberechnung in Phase 4 haben wir \u0026ldquo;eine Menge von Relationen $S$, die, miteinander multipliziert, für alle Primfaktoren gerade Exponenten ergeben\u0026rdquo;, erhalten. Damit können wir in beiden Welten, der rationalen und der algebraischen, ein \u0026ldquo;Quadrat\u0026rdquo; konstruieren.\nAuf der rationalen Seite ist es nur eine Multiplikation von ganzen Zahlen, daher ist die Berechnung der Quadratwurzel $V$ einfach. $$V^2 = \\prod_{S} (a - bm)$$ ** Aber die wahre Hölle liegt auf der \u0026ldquo;algebraischen Seite\u0026rdquo;. ** In der Welt des algebraischen Zahlkörpers $\\mathbb{Z}[\\alpha]$ gilt die Eindeutigkeit der Primfaktorzerlegung nicht, weshalb wir Ideale für die Berechnung verwendet haben. Die Matrixberechnung hat nur garantiert, dass es ** \u0026ldquo;das Quadrat eines Ideals\u0026rdquo; ** wird, aber ** nicht, dass es \u0026ldquo;das Quadrat eines Elements ($\\gamma^2$)\u0026rdquo; wird **.\nHier stellen sich uns immense Hürden aus der algebraischen Zahlentheorie in den Weg: das \u0026ldquo;Hindernis der Idealklassengruppe\u0026rdquo; und das \u0026ldquo;Hindernis der Einheitengruppe\u0026rdquo;. Um diese Hürden zu überwinden, nutzt GNFS die Magie der ** \u0026ldquo;Quadratischen Reste (Quadratic Characters)\u0026rdquo; **. Man fügt der Matrix aus Phase 4 vorab heimlich Spalten mit quadratischen Resten (Legendre-Symbolen) für einige Dutzend spezielle Primideale hinzu. Dadurch überspringt die gefundene Menge $S$ mit überwältigender Wahrscheinlichkeit die Hindernisse und bildet erfolgreich das \u0026ldquo;Quadrat eines echten Elements $\\gamma^2$\u0026rdquo;.\nDer Prozess zur Ermittlung von $\\gamma$ (die algebraische Quadratwurzel) verwendet hochkomplexe Algorithmen wie die Montgomery-Methode.\nUnd schließlich wird die algebraische Quadratwurzel $\\gamma$ durch den Ringhomomorphismus $\\phi$ in die reale Welt teleportiert ($m$ für $x$ einsetzen), um $Y$ zu erhalten. Wenn wir das rationale $V$ einfach $X$ nennen, ist die ultimative Gleichung endlich komplett.\n** $$X^2 \\equiv Y^2 \\pmod N$$ **\nJetzt müssen wir nur noch $\\gcd(X-Y, N)$ berechnen. Sobald dieser 0,001-Sekunden-Prozess durchläuft und die nicht-trivialen Faktoren auf dem Bildschirm gedruckt werden, bricht die so unbezwingbar scheinende RSA-Verschlüsselung vollständig zusammen.\nFazit GNFS ist nicht nur eine Programmiertechnik. Es ist die Kristallisation der menschlichen Intelligenz, die den \u0026ldquo;Abgrund der reinen Mathematik\u0026rdquo; wie abstrakte Algebra, Ringtheorie und Idealklassengruppen mit der \u0026ldquo;extremen Ingenieurskunst\u0026rdquo; wie der verteilten Architektur von Supercomputern und der Cache-Optimierung bezwungen hat.\nDie Chats oder Kreditkarteninformationen, die wir jeden Tag beiläufig senden, werden durch einen solchen astronomischen mathematischen Schlagabtausch geschützt.\nIch hoffe, Sie konnten durch dieses C++-Framework die \u0026ldquo;Romantik von Mathematik und Computern\u0026rdquo;, die hinter modernsten kryptoanalytischen Algorithmen steckt, spüren.\n","date":"2026-09-05T13:04:59+09:00","image":"http://kenji.blog/p/gnfs-cpp-implementation/gnfs_cpp_blog_eyecatch_1788580949217_hu57b4110ce75cf76414fb819be22bae03_985705_120x120_fill_q75_box_smart1.jpg","permalink":"http://kenji.blog/de/p/gnfs-cpp-implementation/","title":"【Komplette Anatomie】Den stärksten Kryptographie-Knack-Algorithmus „GNFS“ in C++ implementieren und verstehen"},{"content":"Die wahre mathematische Struktur des allgemeinen Zahlkörpersiebs (GNFS) Das ultimative Ziel des GNFS ist es, $X, Y$ so zu finden, dass $X^2 \\equiv Y^2 \\pmod N$ gilt. Um dies zu erreichen, bauten Mathematiker eine Brücke zwischen der \u0026ldquo;Welt der reellen ganzen Zahlen\u0026rdquo; und der \u0026ldquo;Welt der algebraischen Zahlkörper\u0026rdquo; . Diese Brücke ist der sogenannte \u0026ldquo;Homomorphismus\u0026rdquo;.\nPhase 1: Die Welten mit \u0026ldquo;Homomorphismus\u0026rdquo; verbinden 1. Auswahl des Polynoms und Definition der Wurzeln Für eine riesige zusammengesetzte Zahl $N$ wählen wir eine ganze Zahl $m$ und ein Polynom $f(x)$ so, dass $f(m) \\equiv 0 \\pmod N$ gilt. (Beispiel: Wir entwickeln $N$ zur Basis $m$ und bilden $f(x)$ aus den Koeffizienten. Dabei nehmen wir an, dass $f(x)$ über dem Körper der rationalen Zahlen $\\mathbb{Q}$ irreduzibel ist (nicht weiter faktorisiert werden kann)).\nAls Nächstes definieren wir eine der \u0026ldquo;komplexen Wurzeln\u0026rdquo; der Gleichung $f(x) = 0$ als $\\alpha$. Natürlich ist $f(\\alpha) = 0$. $\\alpha$ ist keine ganze Zahl, sondern eine komplexe Zahl, die Wurzeln und imaginäre Zahlen enthält (eine algebraische Zahl).\n2. Konstruktion von Ringen und Homomorphismus Hier bereiten wir zwei mathematische \u0026ldquo;Ringe\u0026rdquo; vor (Welten, in denen Addition und Multiplikation definiert sind).\nWelt A: $\\mathbb{Z}[\\alpha]$ (Der Ring der algebraischen ganzen Zahlen, der $\\alpha$ enthält) Eine Zahlenwelt in der Form $a + b\\alpha + c\\alpha^2 + \\dots$. Welt B: $\\mathbb{Z}/N\\mathbb{Z}$ (Der Ring der Reste modulo $N$) Eine Kongruenzwelt (Modulo), die nur aus den ganzen Zahlen von $0$ bis $N-1$ besteht. Hier definieren wir eine Abbildung $\\phi$ von Welt A nach Welt B wie folgt: $$\\phi : \\mathbb{Z}[\\alpha] \\to \\mathbb{Z}/N\\mathbb{Z}$$ $$\\phi(\\alpha) = m \\pmod N$$\nDiese Abbildung $\\phi$ ist eine magische Operation, die exakt die Variable $\\alpha$ in Welt A durch die ganze Zahl $m$ in Welt B ersetzt. Dieses $\\phi$ besitzt eine extrem mächtige Eigenschaft, die \u0026ldquo;Ringhomomorphismus\u0026rdquo; genannt wird. Homomorphismus ist die Eigenschaft, \u0026ldquo;in eine andere Welt zu teleportieren, ohne die Struktur von Addition und Multiplikation zu zerstören\u0026rdquo; . Das heißt, die folgenden Gleichungen sind gültig:\n$\\phi(X \\times Y) = \\phi(X) \\times \\phi(Y)$ $\\phi(X^2) = \\phi(X)^2$ Was bedeutet das? Wenn wir das \u0026ldquo;Quadrat ($\\gamma^2$)\u0026rdquo; eines komplexen Elements $\\gamma$ in \u0026ldquo;Welt A (der Welt von $\\alpha$)\u0026rdquo; erzeugen und es mithilfe von $\\phi$ nach \u0026ldquo;Welt B (der Restewelt)\u0026rdquo; teleportieren können, bleibt die quadratische Form $\\phi(\\gamma)^2$ perfekt erhalten .\nPhase 2: Der Zusammenbruch der Primfaktorzerlegung und die Geburt der \u0026ldquo;Ideale\u0026rdquo; In Welt A ($\\mathbb{Z}[\\alpha]$) wollen wir viele geeignete Elemente $(a - b\\alpha)$ sammeln und sie multiplizieren, um ein \u0026ldquo;perfektes Quadrat (Quadratelement)\u0026rdquo; zu erzeugen. Normalerweise würden wir jedes gesammelte $(a - b\\alpha)$ in Primfaktoren zerlegen und sie so kombinieren, dass die Exponenten der Primzahlen alle gerade sind (durch Lösen mit Matrizen), um ein Quadrat zu bilden.\nJedoch stellt sich hier die verzweifelte Mauer der Algebra in den Weg. In algebraischen Welten wie $\\mathbb{Z}[\\alpha]$ bricht die \u0026ldquo;Eindeutigkeit der Primfaktorzerlegung (jede Zahl kann eindeutig als Produkt von Primzahlen ausgedrückt werden)\u0026rdquo;, die in der Schule gelehrt wird, zusammen .\n(Beispiel: In einer bestimmten algebraischen Welt ist $6 = 2 \\times 3$, aber gleichzeitig auch $6 = (1+\\sqrt{-5}) \\times (1-\\sqrt{-5})$, und wir wissen nicht mehr, welche die wahren Primzahlen sind)\nWenn die Faktorzerlegung nicht eindeutig ist, ist das Rätsel \u0026ldquo;Primzahlen zählen, um sie gerade zu machen\u0026rdquo; (die Siebmethode) im Prinzip unmöglich auszuführen.\nDie Rettung durch Kummer und Dedekind: \u0026ldquo;Ideale\u0026rdquo; Was diesen Zusammenbruch rettete, war das Konzept des \u0026ldquo;Ideals (Ideal: ideale Zahl)\u0026rdquo; , das von Mathematikern des 19. Jahrhunderts geschaffen wurde. Indem man nicht an das Element selbst dachte, sondern an die \u0026ldquo;Menge der Vielfachen (Ideal)\u0026rdquo;, die von diesem Element erzeugt wird, wurde die Primfaktorzerlegung wieder möglich.\nIm Ganzheitsring eines algebraischen Zahlkörpers $\\mathcal{O}_K$ (ein vollständigerer Ring, der $\\mathbb{Z}[\\alpha]$ enthält) ist bewiesen, dass selbst wenn ein Element nicht eindeutig faktorisiert werden kann, \u0026ldquo;ein Ideal immer eindeutig als Produkt von \u0026lsquo;Primidealen ($\\mathfrak{p}$)\u0026rsquo; faktorisiert werden kann\u0026rdquo; .\nDaher faktorisieren wir im GNFS nicht das Element $(a - b\\alpha)$ selbst, sondern das von ihm erzeugte Hauptideal $\\langle a - b\\alpha \\rangle$ in Primideale .\nPhase 3: Die Norm und die zwei Siebe Woher wissen wir also, in welche Primideale das Ideal $\\langle a - b\\alpha \\rangle$ zerfällt? Hier verwenden wir eine Funktion namens \u0026ldquo;Norm\u0026rdquo; . Die Norm ist eine Funktion, die komplexe Elemente algebraischer Körper in \u0026ldquo;normale reelle ganze Zahlen $\\mathbb{Z}$\u0026rdquo; umwandelt.\nDie Norm des Elements $(a - b\\alpha)$ wird durch eine einfache Polynomrechnung $b^d f(a/b)$ gefunden ($d$ ist der Grad von $f(x)$).\nDurch einen algebraischen Satz wissen wir: \u0026ldquo;Wenn die Norm eines bestimmten Ideals vollständig in kleine Primzahlen zerlegt werden kann (glatt ist), dann kann das ursprüngliche Ideal auch vollständig in kleine Primideale zerlegt werden\u0026rdquo; .\nDaher berechnet GNFS für eine große Anzahl von Ganzzahlpaaren $(a, b)$ gleichzeitig die folgenden zwei Werte und sammelt nur die Paare, bei denen beide zu \u0026ldquo;glatten Zahlen (smooth numbers)\u0026rdquo; werden:\nRationales Sieb (Rational Sieve) : $a - bm$ (der Wert in der realen Welt) Algebraisches Sieb (Algebraic Sieve) : $b^d f(a/b)$ (die Norm in der algebraischen Welt) Indem wir zig Millionen Paare $(a, b)$ sammeln, bei denen beide glatt sind, lösen wir die Daten der Primidealzerlegung (wie viele Primideale enthalten sind) als riesige Matrix (lineare Algebra über GF(2)), um eine Menge $S$ von Paaren zu finden, sodass \u0026ldquo;beim Multiplizieren die Exponenten aller Primideale gerade werden\u0026rdquo;.\nPhase 4: Die zwei \u0026ldquo;Hindernisse\u0026rdquo; und die Idealklassengruppe Aus der Matrixberechnung haben wir herausgefunden, dass das Multiplizieren aller Ideale von $(a - b\\alpha)$, die zur Menge $S$ gehören, zum Quadrat eines bestimmten Ideals $I$ führt. $$\\prod_{S} \\langle a - b\\alpha \\rangle = I^2$$ Es ist jedoch noch nicht vorbei. Die tiefste und schwierigste mathematische Mauer des GNFS befindet sich hier.\nWas wir am Ende wollen, ist nicht das \u0026ldquo;Quadrat eines Ideals\u0026rdquo;, sondern das \u0026ldquo;Quadrat eines Elements ($\\gamma^2$)\u0026rdquo; , das wir in die Abbildung $\\phi$ einsetzen können. Nur weil es zum Quadrat eines Ideals wurde, heißt das nicht zwangsläufig, dass das Element selbst ein Quadrat ist. Hier gibt es zwei starke mathematische Hindernisse (Obstructions) .\nHindernis ①: Die Barriere der Idealklassengruppe (Ideal Class Group) Das Ideal $I$ ist nicht immer ein \u0026ldquo;Ideal, das von einem einzigen Element erzeugt wird (Hauptideal)\u0026rdquo;. Es ist unmöglich, ein spezifisches Element $\\gamma$ aus einem Ideal zu extrahieren, das kein Hauptideal ist.\nHier kommt das Konzept der \u0026ldquo;Idealklassengruppe (Class Group, $Cl_K$)\u0026rdquo; ins Spiel. Die Idealklassengruppe ist eine Gruppe, die misst, \u0026ldquo;wie viele Ideale in dieser algebraischen Welt existieren, die keine Hauptideale sind (wie sehr die Eindeutigkeit der Primfaktorzerlegung gebrochen ist)\u0026rdquo;. Selbst wenn $\\prod \\langle a - b\\alpha \\rangle$ zu $I^2$ wird, kann es nicht auf das Quadrat eines Elements zurückgeführt werden, wenn $I$ nicht das Identitätselement (Hauptideal) in der Idealklassengruppe ist.\nHindernis ②: Die Barriere der Einheitengruppe (Unit Group) Angenommen, durch Glück wäre $I$ das Hauptideal $\\langle \\gamma \\rangle$. Dann hätten wir $\\prod \\langle a - b\\alpha \\rangle = \\langle \\gamma^2 \\rangle$. Man könnte denken: \u0026ldquo;Großartig, das Element ist auch ein Quadrat!\u0026rdquo;, aber das ist ein großer Irrtum.\nDass Ideale (Mengen von Vielfachen) gleich sind, bedeutet nicht, dass die Elemente perfekt gleich sind. Es wird immer eine Abweichung durch eine \u0026ldquo;Einheit (Unit: eine Zahl, deren Kehrwert ebenfalls eine ganze Zahl ist. Wie 1 oder -1)\u0026rdquo; geben. Mit anderen Worten, die eigentliche Elementgleichung sieht so aus: $$\\prod_{S} (a - b\\alpha) = u \\cdot \\gamma^2$$ ($u$ ist ein Element der Einheitengruppe $U_K$)\nWenn diese Einheit $u$ nicht selbst das Quadrat von etwas ist, kann die linke Seite niemals ein \u0026ldquo;perfektes Quadrat eines Elements\u0026rdquo; werden.\nPhase 5: Adlemans Magie \u0026ldquo;Quadratische Charaktere\u0026rdquo; (Quadratic Characters) Das Hindernis der Idealklassengruppe und das Hindernis der Einheitengruppe. Wie können wir diese beiden überwinden? Hier kommt die brillante Methode der \u0026ldquo;Quadratischen Charaktere (Quadratic Characters)\u0026rdquo; ins Spiel, die von dem Kryptographen Leonard Adleman (das \u0026ldquo;A\u0026rdquo; von RSA) und anderen eingeführt wurde.\nUm festzustellen, \u0026ldquo;ob ein bestimmtes Element ein perfektes Quadrat im algebraischen Körper ist\u0026rdquo;, verwenden wir die Zahlkörper-Version des Legendre-Symbols (quadratischer Rest). In dieser riesigen Matrix (dem Rätsel, um die Primidealzählungen gerade zu machen), fügen wir heimlich ein paar Dutzend zusätzliche Bedingungen (Spalten) hinzu, die besagen: \u0026ldquo;Die quadratischen Charaktere für einige spezielle Primideale $\\mathfrak{q}$ müssen ebenfalls alle $1$ (gerade) sein\u0026rdquo; .\nWenn wir eine Menge $S$ finden, die durch die Matrixberechnung sogar diese zusätzliche Bedingungen erfüllt, garantieren tiefe Sätze aus der algebraischen Zahlentheorie, dass \u0026ldquo;sowohl das Hindernis der Idealklassengruppe als auch das Hindernis der Einheitengruppe mit überwältigender Wahrscheinlichkeit natürlich verschwinden werden\u0026rdquo; .\nDamit erhalten wir endlich die wahre Gleichung. $$\\prod_{S} (a - b\\alpha) = \\gamma^2$$ Letzte Phase: Die Verschmelzung der Welten und der Zusammenbruch der Kryptographie Endlich sind alle Puzzleteile an ihrem Platz.\n[Elemente in der Welt der algebraischen Körper (Welt A)] $\\gamma^2 = \\prod (a - b\\alpha)$ (Wir verwenden einen Quadratwurzel-Algorithmus, um $\\gamma$ zu finden)\n[Elemente in der realen Welt (Welt der rationalen Zahlen)] $V^2 = \\prod (a - bm)$ (Da dies eine einfache Ganzzahlmultiplikation ist, $V$ normal gefunden werden kann)\nNun ist es Zeit für die magische Brücke, die wir zu Beginn gebaut haben, den Homomorphismus $\\phi$ . Wir teleportieren das Element $\\gamma$ aus Welt A nach Welt B (die Welt der Reste von $N$) mithilfe von $\\phi$ (die Abbildung, bei der wir $\\alpha$ durch $m$ ersetzen). $$Y = \\phi(\\gamma) \\pmod N$$ Andererseits bringen wir das in der realen Welt gebaute $V$ direkt in die Restewelt und nennen es $X$. $$X = V \\pmod N$$ Aufgrund der \u0026ldquo;strukturerhaltenden\u0026rdquo; Eigenschaft des Homomorphismus bleibt die quadratische Beziehung, die in Welt A galt, in Welt B (der Welt modulo $N$) perfekt erhalten. Da die ursprünglichen Paare $(a, b)$ außerdem in Entsprechung in den Formen $a - b\\alpha$ und $a - bm$ erzeugt wurden, kollidieren diese $X$ und $Y$ in der Welt modulo $N$ und erzeugen die folgende absolute Gleichung:\n$$X^2 \\equiv Y^2 \\pmod N$$\nAlles, was bleibt, ist zu beten, dass diese $X$ und $Y$ keine trivialen Lösungen ($X \\equiv \\pm Y$) sind, und $\\gcd(X - Y, N)$ zu berechnen.\nWenn es sich um eine nicht-triviale Lösung handelt, durchläuft der Euklidische Algorithmus sie in 0,001 Sekunden, und die geheimen Primzahlen $p$ und $q$, die das Herzstück der RSA-Kryptographie bilden, werden auf dem Ausgabebildschirm gedruckt.\nDies ist das vollständige Bild des \u0026ldquo;Allgemeinen Zahlkörpersiebs (GNFS)\u0026rdquo; , der Essenz der modernen Mathematik.\n","date":"2026-09-05T02:26:13+09:00","image":"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_hu57b4110ce75cf76414fb819be22bae03_1010164_120x120_fill_q75_box_smart1.jpg","permalink":"http://kenji.blog/de/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/","title":"Die wahre mathematische Struktur des allgemeinen Zahlkörpersiebs (GNFS)"},{"content":"Was ist das \u0026ldquo;General Number Field Sieve (GNFS)\u0026rdquo;, die stärkste Mathematik der Menschheit, die die Internetverschlüsselung knackt? Das Internet, das wir jeden Tag nutzen. LINE-Nachrichten, YouTube, Einkaufen auf Amazon – die gesamte Kommunikation wird durch \u0026ldquo;Verschlüsselung\u0026rdquo; geschützt. Derzeit ist der weltweit am häufigsten verwendete Vertreter die \u0026ldquo;RSA-Verschlüsselung\u0026rdquo;.\nDer Schlüssel zur Verteidigung der RSA-Verschlüsselung ist sehr einfach. Er nutzt die mathematische Eigenschaft, dass ** \u0026ldquo;die Primfaktorzerlegung gigantischer Zahlen selbst von Computern nicht gelöst werden kann\u0026rdquo; ** . Bei \u0026ldquo;15\u0026rdquo; wissen wir zum Beispiel sofort, dass es \u0026ldquo;3 × 5\u0026rdquo; ist, aber sobald es eine \u0026ldquo;270-stellige Zahl\u0026rdquo; wird, würde es Hunderte von Millionen Jahren dauern, selbst wenn man alle Supercomputer der Welt zusammennimmt, um sie zu lösen.\nDoch die Mathematiker sind nicht stumm geblieben. Um diese undurchdringliche Verschlüsselung zu knacken, hat die Menschheit einen fast magischen Algorithmus (Berechnungsverfahren) namens ** \u0026ldquo;General Number Field Sieve (GNFS)\u0026rdquo; ** erschaffen.\nIn diesem Artikel werden wir ohne Fachjargon und nur mit dem Wissen der ** Mittelstufenmathematik (Primfaktorzerlegung, algebraische Ausdrücke, größter gemeinsamer Teiler) ** Schritt für Schritt erklären, wie dieser \u0026ldquo;stärkste Algorithmus der Menschheit\u0026rdquo; die Verschlüsselung knackt!\nKapitel 1: Das Ziel der Entschlüsselung ist eine \u0026ldquo;Formel der 9. Klasse\u0026rdquo; Der größte Spezialtrick, um der gigantischen Primfaktorzerlegung zu begegnen. Es ist diese Formel, die man in der 9. Klasse lernt:\n** $X^2 - Y^2 = (X + Y)(X - Y)$ **\nSie denken vielleicht: \u0026ldquo;Ernsthaft, eine so grundlegende Formel kann Verschlüsselung knacken?\u0026rdquo;. Dies ist jedoch der Hauptschlüssel, der alles offenbart.\nDas größte Ziel beim Knacken der Verschlüsselung ist es, für eine riesige Zahl $N$, ** \u0026ldquo;Zahlen ($X$ und $Y$) zu finden, bei denen der Rest bei der Division von $X^2$ und $Y^2$ durch $N$ derselbe ist\u0026rdquo; ** .\nWarum knackt \u0026ldquo;derselbe Rest\u0026rdquo; die Verschlüsselung? Angenommen, zwei Zahlen, $X^2$ und $Y^2$, haben \u0026ldquo;denselben Rest, wenn sie durch $N$ geteilt werden\u0026rdquo;. Denselben Rest zu haben bedeutet, dass es eine Regel nach der ** die Subtraktion \u0026ldquo;$X^2 - Y^2$\u0026rdquo; immer genau durch $N$ teilbar ist (ein Vielfaches von $N$ sein wird) ** .\nNehmen wir hier an, dass die gigantische Zahl $N$, die für die Verschlüsselung verwendet wird, aus der Multiplikation zweier geheimer Primzahlen ($p$ und $q$) besteht ($N = p \\times q$).\nWenn wir $X^2 - Y^2$ faktorisieren, erhalten wir ** $(X - Y)(X + Y)$ ** . Die Tatsache, dass dies ein Vielfaches von $N$ ist, bedeutet, dass irgendwo in dieser Multiplikation die geheimen Primzahlen $p$ und $q$ verborgen sind.\nHier geschieht ein Wunder. Es besteht eine mathematische Wahrscheinlichkeit von ** 50% (der Hälfte) ** , dass die beiden Primzahlen $p$ und $q$ sich in verschiedene Räume trennen: ** \u0026ldquo;$p$ geht in den Raum von $(X - Y)$\u0026rdquo; und \u0026ldquo;$q$ geht in den Raum von $(X + Y)$\u0026rdquo; ** .\nWenn nur die Primzahl $p$ den Raum von $(X - Y)$ betreten hat, berechnen wir den ** \u0026ldquo;größten gemeinsamen Teiler (das größte gemeinsame Teil)\u0026rdquo; ** von $(X - Y)$ und $N$.\nInhalt von $(X - Y)$ = $p \\times$ irgendeine Zahl Inhalt von $N$ = $p \\times q$ Das einzige gemeinsame Teil ist ** \u0026ldquo;$p$\u0026rdquo; ** ! Mit anderen Worten, in dem Moment, in dem der größte gemeinsame Teiler berechnet wird, wird die verborgene Primzahl $p$ enthüllt und die Verschlüsselung ist vollständig entschlüsselt. (*Der größte gemeinsame Teiler kann sogar auf einem Smartphone sofort mit dem \u0026ldquo;Euklidischen Algorithmus\u0026rdquo; berechnet werden).\n** 【Kleine Kolumne: Warum das Quadrat? Funktionieren Kubik oder das Doppelte nicht?】 **\nBei \u0026ldquo;$2X - 2Y$\u0026rdquo; wird es zu $2(X - Y)$ und es gibt nur einen Raum, sodass Sie die Primzahlen nicht trennen können. Bei \u0026ldquo;$X^3 - Y^3$\u0026rdquo; wird die Größe der Räume unausgewogen und die Berechnung wird unnötig schwer. Um die Primzahlen in zwei zu trennen, ist das \u0026ldquo;Quadrat\u0026rdquo;, das sich wunderbar in zwei Räume aufteilt, am kostengünstigsten.\nKapitel 2: Wie findet man X und Y? \u0026ldquo;Das Primzahlkarten-Sammelpuzzle\u0026rdquo; Das Ziel ist klar. Doch selbst wenn wir blind nach \u0026ldquo;$X^2$ und $Y^2$ mit demselben Rest\u0026rdquo; suchen würden, würde das Ende des Universums eintreten, bevor wir sie finden. Also ließen sich Mathematiker eine geniale Methode namens ** \u0026ldquo;Primzahlkarten-Sammelpuzzle\u0026rdquo; ** einfallen.\nSchritt 1: Nur Goldstaub (glatte Zahlen) mit einem Sieb sammeln Bereiten Sie zunächst eine geeignete Zahl $Z$ vor, quadrieren Sie sie und berechnen Sie den Rest $W$, wenn sie durch $N$ geteilt wird. (Die Restwelt von $Z^2 = W$)\nFaktorisieren Sie den erhaltenen Rest $W$ in Primzahlen. Hier gilt: Nur wenn ** \u0026ldquo;ein $W$, das nur aus kleinen Primzahlen wie 2, 3, 5, 7 usw. besteht\u0026rdquo; ** , erscheint, behalten Sie diese Gleichung als \u0026ldquo;Gewinnerkarte\u0026rdquo; und werfen Sie sie weg, wenn große Primzahlen beigemischt sind. Es ist wie das Wegwerfen großer Steine mit einem Sieb in einem Fluss, um nur Goldstaub zu sammeln.\nSchritt 2: Das Puzzle, um alles \u0026ldquo;gerade\u0026rdquo; zu machen Nehmen wir zum Beispiel an, die folgenden 3 Goldstaubkarten wurden gesammelt.\nKarte A: $Z_1^2 = 2^3 \\times 3^1$ Karte B: $Z_2^2 = 2^1 \\times 5^1$ Karte C: $Z_3^2 = 3^1 \\times 5^1$ Lassen Sie uns alle multiplizieren. Die rechte Seite wird zu $(2^3 \\times 3^1) \\times (2^1 \\times 5^1) \\times (3^1 \\times 5^1)$, Und wenn man alles ordnet, wird es zu ** \u0026ldquo;$2^4 \\times 3^2 \\times 5^2$\u0026rdquo; ** .\nÜberraschenderweise wurde die Anzahl der Primzahlen zu \u0026ldquo;4, 2, 2\u0026rdquo;, ** allesamt eine gerade Zahl ** ! Dass alle gerade sind, bedeutet, dass wenn man die Gesamtmenge halbiert, es \u0026ldquo;das Quadrat von etwas\u0026rdquo; sein wird. Mit anderen Worten, $(2^2 \\times 3^1 \\times 5^1)^2 = (60)^2$.\nDie linke Seite ist $(Z_1 \\times Z_2 \\times Z_3)^2$, also sind wir endlich am Ziel: ** $X = (Z_1 \\times Z_2 \\times Z_3)$ ** ** $Y = 60$ ** Das lang ersehnte Paar von \u0026ldquo;$X^2 = Y^2$\u0026rdquo; ist komplett!\nFür Computer ist das Puzzle, zu berechnen, ob die Anzahl der Primzahlen \u0026ldquo;gerade oder ungerade (0 oder 1)\u0026rdquo; ist, etwas, worin sie sehr gut sind, sodass mit dieser Methode $X$ und $Y$ mit hoher Geschwindigkeit gefunden werden können.\nKapitel 3: Die Mauer der Verzweiflung Jetzt kann jeder Code geknackt werden! \u0026hellip;oder das dachten wir zumindest, aber ein großes Problem tritt auf. Wenn die Verschlüsselungszahl $N$ bis zu \u0026ldquo;100 Stellen\u0026rdquo; umfasst, kann diese Methode (Quadratisches Sieb genannt) sie lösen, aber wenn $N$ zu \u0026ldquo;200 oder 300 Stellen\u0026rdquo; wird, wird das in der Mitte der Berechnung auftretende $W$ viel zu groß.\nWenn die Zahlen zu groß werden, tauchen \u0026ldquo;Zahlen, die nur aus kleinen Primzahlen (Goldstaub) bestehen\u0026rdquo;, einfach nicht mehr auf. Es wird schwieriger, als eine Kontaktlinse in der Wüste zu suchen, und die zum Lösen des Puzzles benötigten Karten sammeln sich gar nicht erst an.\nHier tritt schließlich die ultimative Waffe der Menschheit, das ** \u0026ldquo;General Number Field Sieve (GNFS)\u0026rdquo; ** , auf den Plan.\nKapitel 4: Die stärkste Idee der Menschheit, \u0026ldquo;Zwei Welten\u0026rdquo; zu erschaffen Die geniale Idee des GNFS ist: ** \u0026ldquo;Die Zahlen werden gigantisch, weil wir nur in der realen Welt rechnen. Lassen Sie uns also eine \u0026lsquo;Hinterwelt\u0026rsquo; mit Polynomen (Buchstabenformeln) erschaffen, um das Gewicht der Berechnung in zwei Hälften zu teilen.\u0026rdquo; **\nDie Magie der Buchstabenformeln GNFS wandelt die riesige Zahl $N$ unter Verwendung einer Basiszahl $m$ in einen Buchstabenausdruck um. Wenn zum Beispiel $N=100$ ist, mit $m=4$, dann ist $100 = 4^3 + 2(4^2) + 4$. Mit dem Buchstaben $x$ machen wir daraus eine Formel (die Hinterwelt): ** $f(x) = x^3 + 2x^2 + x$ ** .\nDas Interessante an dieser Formel ist, dass sie die Eigenschaft hat, ** \u0026ldquo;wenn Sie $x$ durch $m$ ersetzen (4 im obigen Beispiel), können Sie immer zur realen Zahl $N$ zurückkehren\u0026rdquo; ** .\nGleichzeitig in 2 Welten nach Goldstaub suchen GNFS erzeugt viele Paare von zufälligen Ganzzahlen $(a, b)$ und führt gleichzeitig die folgenden zwei Berechnungen durch:\n** Reale Welt ** : $a - b \\times m$ ** Buchstabenwelt ** : Der Wert von $a - b \\times x$, berechnet nach den Regeln der Polynome Durch die Aufteilung des Problems in zwei Welten verringert sich die Größe (das Gewicht) der verarbeiteten Zahlen drastisch. Es ist, als würde man einen riesigen Felsen in zwei handliche Steine spalten.\nDann trennen und sammeln Sie mit einem Sieb nur die Wunderpaare $(a, b)$, bei denen ** \u0026ldquo;sowohl in der realen Welt als auch in der Buchstabenwelt beide \u0026rsquo;nur aus kleinen Primzahlen (Goldstaub) bestehen\u0026rsquo;\u0026rdquo; ** . Daher der Name \u0026ldquo;Zahlkörpersieb\u0026rdquo; (Number Field Sieve).\nDer Moment, in dem die Verschlüsselung endlich geknackt wird Sobald Dutzende Millionen von \u0026ldquo;Goldstaubkarten\u0026rdquo; aus beiden Welten gesammelt wurden, verwendet der Supercomputer gigantische Matrixberechnungen, um \u0026ldquo;eine Kombination zu finden, bei der die Anzahl der Primzahlen alle gerade ist\u0026rdquo;, genau wie wir es in Kapitel 2 getan haben.\nSobald die Kombination gefunden ist:\nSei die Quadratzahl in der realen Welt ** $X^2$ ** Sei die in der Buchstabenwelt erstellte Quadratformel ** $Y(x)^2$ ** Ersetzen Sie schließlich das $x$ in der Buchstabenformel $Y(x)$ durch $m$, springen Sie in die reale Welt zurück und verbinden Sie sie. Dann ist, wie durch mathematische Magie, die Bedingung erfüllt, dass ** \u0026ldquo;die Reste von $X^2$ und $Y^2$ gleich sind\u0026rdquo; ** !\nDer Rest besteht, wie in Kapitel 1, lediglich darin, den größten gemeinsamen Teiler von $X - Y$ und $N$ zu berechnen, und die uneinnehmbare RSA-Verschlüsselung wird zusammenbrechen und die geheimen Primzahlen offenbaren.\nFazit: Die Mathematik endet nie Sie denken vielleicht: \u0026ldquo;Großartig, mit GNFS kann jede Verschlüsselung geknackt werden!\u0026rdquo;. Doch auch die RSA-Verschlüsselung hat nicht aufgegeben. Was im heutigen Internet verwendet wird, ist eine monströs gigantische Zahl namens \u0026ldquo;RSA-2048 (ca. 617 Stellen)\u0026rdquo;.\nObwohl GNFS der stärkste Algorithmus der Menschheit ist, sagt man, dass selbst das Lösen von 270 Stellen (RSA-270) Tausende oder Zehntausende von Jahren dauern würde, selbst wenn man Computer auf der ganzen Welt miteinander verbindet. Vorerst sind unsere LINE- und Bankdaten sicher.\nAber was wäre, wenn eine ** \u0026ldquo;Magie, um $X$ und $Y$ für jede riesige Zahl sofort zu finden\u0026rdquo; ** , auftauchen würde? Tatsächlich kommt der ** \u0026ldquo;Quantencomputer (Shor-Algorithmus)\u0026rdquo; ** , der sich derzeit in der Entwicklung befindet, dem am nächsten. Unter Ausnutzung der Wellennatur der Quantenmechanik wurde mathematisch bewiesen, dass es möglich ist, das mühsame Kartensammelpuzzle zu umgehen und die Antwort auf einen Schlag zu finden.\nEin endloser Kampf des Verstandes zwischen denen, die Verschlüsselung erschaffen (Verteidigung), und denen, die Algorithmen entwickeln, um sie zu knacken (Angriff). Macht das Wissen, dass die in der Mittelstufe erlernte \u0026ldquo;Primfaktorzerlegung\u0026rdquo; und \u0026ldquo;algebraische Ausdrücke\u0026rdquo; tatsächlich die Waffen sind, die an vorderster Front der globalen Sicherheit kämpfen, den Mathematikunterricht nicht ein wenig interessanter?\nDerjenige, der den stärksten Algorithmus der Zukunft entdeckt, könnten Sie sein, der diesen Artikel liest!\n(※Dieser Artikel ist eine konzeptionelle Adaption der mathematischen Faszination des Codeknackens für Schüler. Das eigentliche GNFS wird streng mit Hilfe der fortgeschrittenen Universitätsmathematik, wie Idealklassengruppen algebraischer Zahlkörper und Homomorphismen, berechnet)\n","date":"2026-09-05T02:09:08+09:00","image":"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_huf997c6e55368509d0617b56f68899854_1135822_120x120_fill_q75_box_smart1.jpg","permalink":"http://kenji.blog/de/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/","title":"Was ist das \"General Number Field Sieve (GNFS)\", die stärkste Mathematik der Menschheit, die die Internetverschlüsselung knackt?"},{"content":"Die Vor- und Nachteile von Anti-Impf-Bewegungen ―― Wie \u0026ldquo;gut gemeinte Angst\u0026rdquo; die Zukunft von 5000 Menschen tötete und die epidemiologischen Lehren, die wir daraus ziehen sollten Die \u0026ldquo;Illusion der Kausalität\u0026rdquo;, die durch die Corona-Pandemie verdeutlicht wurde Seit 2021 schritt die Impfung gegen das neuartige Coronavirus in Japan rasant voran. Es war ein in der Geschichte der Menschheit beispielloses öffentliches Gesundheitsprojekt, bei dem fast 80% der Bevölkerung in kurzer Zeit geimpft wurden. In diesem Prozess wurden wir über soziale Medien und die Presse Zeugen unzähliger \u0026ldquo;Schreie\u0026rdquo;. \u0026ldquo;Ein paar Tage nach der Impfung ist ein Familienmitglied gestorben\u0026rdquo;, \u0026ldquo;Seit der Impfung hält ein unerklärliches Unwohlsein an\u0026rdquo; ―― Diese Beschwerden sind eindringlich, und für die Betroffenen ist dieses Leiden eine unbestreitbare Wahrheit.\nHier liegt jedoch eine kalte, aber extrem wichtige \u0026ldquo;Falle\u0026rdquo; der Epidemiologie. Wenn man die Bevölkerungsgröße Japans betrachtet, sterben jeden Tag etwa 3.000 bis 4.000 Menschen aus irgendeinem Grund (Krankheit, Unfall, Alter), unabhängig davon, ob sie geimpft werden oder nicht. Wenn die Mehrheit der Bevölkerung auf einmal geimpft wird, wird probabilistisch zwangsläufig eine bestimmte Anzahl von Menschen \u0026ldquo;am Tag nach der Impfung (aus Ursachen, die nichts mit dem Impfstoff zu tun haben) sterben\u0026rdquo;. Dies wird in der Fachsprache \u0026ldquo;Koinzidenz (Zufall)\u0026rdquo; genannt.\nDer Mensch besitzt eine kognitive Verzerrung, die als \u0026ldquo;Post hoc ergo propter hoc\u0026rdquo; (Danach, also deswegen) bezeichnet wird. Wenn \u0026ldquo;B (Tod) nach A (Impfung) geschieht\u0026rdquo;, verknüpfen wir intuitiv \u0026ldquo;A ist die Ursache von B\u0026rdquo;. Während der Corona-Pandemie wurde diese kognitive Verzerrung durch den Verstärker der sozialen Medien verbreitet und brachte eine Schicht hervor, in der sich das Image \u0026ldquo;Impfstoff = Gefahr\u0026rdquo; festsetzte, ohne auf wissenschaftliche Überprüfungen zu warten.\nEs gibt nicht wenige Experten für öffentliche Gesundheit, die dieses Bild mit einem Déjà-vu-Gefühl betrachteten. Denn Japan ist das einzige Industrieland, das nur wenige Jahre zuvor durch genau diese \u0026ldquo;wissenschaftslose Angst\u0026rdquo; freiwillig das Mittel aus der Hand gab, um eine vermeidbare Krankheit zu verhindern. Das ist das Problem des \u0026ldquo;HPV-Impfstoffs (Gebärmutterhalskrebs-Impfstoff)\u0026rdquo;.\nWas geschah 2013 in Japan? Drehen wir die Uhr ein wenig zurück. Gebärmutterhalskrebs ist eine Krankheit, an der jährlich etwa 11.000 Frauen erkranken und etwa 2.900 sterben. Da sie besonders die Generation der 20- bis 40-Jährigen trifft, die mitten in der Kindererziehung und im Berufsleben stehen, wird sie auch \u0026ldquo;Mother Killer\u0026rdquo; genannt. Die Ursache ist eine Infektion mit dem humanen Papillomavirus (HPV), einem so häufigen Virus, dass geschätzt 80% der Frauen mit sexueller Erfahrung sich mindestens einmal im Leben damit infizieren. Der HPV-Impfstoff, der diese Virusinfektion verhindert, wurde weltweit als \u0026ldquo;bahnbrechender Impfstoff zur Krebsprävention\u0026rdquo; eingeführt und im April 2013 auch in Japan in das Routineimpfprogramm (vom Staat dringend empfohlen und kostenlos) aufgenommen.\nUnmittelbar danach nahmen die Dinge jedoch eine dunkle Wendung. Einige der geimpften Mädchen berichteten von Symptomen wie systemischen Schmerzen, Bewegungsstörungen und Gedächtnisstörungen, und die Medien berichteten täglich groß darüber als \u0026ldquo;vermutete Nebenwirkungen des Impfstoffs\u0026rdquo;. Bilder von krampfenden Mädchen hinterließen bei den Zuschauern einen starken Eindruck, und die öffentliche Meinung neigte sich schlagartig der \u0026ldquo;Impfstoff-Gefahren-Theorie\u0026rdquo; zu.\nDaraufhin beschloss das Ministerium für Gesundheit, Arbeit und Soziales im Juni 2013, nur zwei Monate nach Beginn der Routineimpfungen, \u0026ldquo;die aktive Empfehlung auszusetzen\u0026rdquo;. Dies war weder ein \u0026ldquo;Verbot\u0026rdquo; noch ein \u0026ldquo;Abbruch\u0026rdquo;, sondern eine äußerst unklare politische Entscheidung, die lautete: \u0026ldquo;Der Rahmen für die Routineimpfungen bleibt bestehen, aber der Staat verschickt keine individuellen Benachrichtigungen mehr\u0026rdquo;. Der Bevölkerung wurde jedoch die Botschaft vermittelt: \u0026ldquo;Der Staat hat die Gefahr anerkannt und es gestoppt\u0026rdquo;. Infolgedessen stürzte die Impfquote, die bei über 70% gelegen hatte, im Handumdrehen auf unter 1% ab.\nVon hier aus begannen Japans \u0026ldquo;verlorene 8 Jahre (Impfstoff-Lücke)\u0026rdquo;.\nDie \u0026ldquo;Wahrheit\u0026rdquo;, die von der Nagoya-Studie enthüllt wurde Waren die von den Medien berichteten Symptome wirklich auf den Impfstoff zurückzuführen? Es gibt eine groß angelegte Untersuchung, die versuchte, diese Frage wissenschaftlich zu beantworten. Sie ist allgemein als \u0026ldquo;Nagoya-Studie\u0026rdquo; bekannt.\nDie Stadt Nagoya führte 2015 eine groß angelegte Umfrage unter etwa 70.000 jungen Frauen durch. Diese umfasste sowohl \u0026ldquo;Geimpfte\u0026rdquo; als auch \u0026ldquo;Ungeimpfte\u0026rdquo;, und beide Gruppen wurden nach dem Vorhandensein von 24 Symptomen wie \u0026ldquo;unregelmäßige Menstruation\u0026rdquo;, \u0026ldquo;Gelenkschmerzen\u0026rdquo; und \u0026ldquo;verminderte Konzentration\u0026rdquo; befragt. Wenn der Impfstoff die Ursache wäre, müssten diese Symptome in der Gruppe der \u0026ldquo;Geimpften\u0026rdquo; offensichtlich häufiger auftreten.\nDas Ergebnis war schockierend. Es gab keinen signifikanten Unterschied in der Inzidenzrate von Symptomen zwischen der \u0026ldquo;geimpften Gruppe\u0026rdquo; und der \u0026ldquo;ungeimpften Gruppe\u0026rdquo;.\nWas bedeutet das? Pubertierende Mädchen befinden sich in einer Phase, in der sie aufgrund von hormonellen Veränderungen und wachstumsspezifischen Umständen unabhängig von der Impfung anfällig für körperliche Beschwerden wie orthostatische Dysregulation und chronische Schmerzen sind. Mit anderen Worten, es gab genauso viele \u0026ldquo;Mädchen, die die gleichen Symptome entwickelten, ohne geimpft worden zu sein\u0026rdquo;, wie \u0026ldquo;Mädchen, die Symptome nach der Impfung entwickelten\u0026rdquo;, über die die Medien berichteten. Die körperlichen Beschwerden der ungeimpften Mädchen wurden jedoch als \u0026ldquo;Störungen der Pubertät\u0026rdquo; abgetan, während nur die Beschwerden der geimpften Mädchen als \u0026ldquo;Impfschäden\u0026rdquo; in den Vordergrund gerückt wurden. Die Daten zeigten, dass es höchstwahrscheinlich dies war, was hinter dem als \u0026ldquo;Arzneimittelskandal\u0026rdquo; bezeichneten Phänomen steckte.\nDarüber hinaus wurde auf die Beteiligung des \u0026ldquo;Nocebo-Effekts\u0026rdquo; hingewiesen. Im Gegensatz zum \u0026ldquo;Placebo-Effekt\u0026rdquo; ist dies ein Phänomen, bei dem der feste Glaube, dass \u0026ldquo;dies schlecht für den Körper ist\u0026rdquo;, bei der Einnahme aufgrund von Angst und Furcht tatsächlich zu Schmerzen und Beschwerden führt. Es kann nicht ausgeschlossen werden, dass die tägliche negative Berichterstattung die empfindlichen Körper und Geister der Mädchen beeinflusst hat.\nDie \u0026ldquo;Sünde der Unterlassung\u0026rdquo; in Zahlen \u0026ldquo;Vorsichtshalber die Empfehlung aussetzen.\u0026rdquo; Diese Entscheidung erscheint auf den ersten Blick als \u0026ldquo;vorsichtige und sichere Wahl\u0026rdquo;. Da es zu spät ist, wenn erst einmal etwas passiert, sollte man bei Zweifeln aufhören. Im Bereich der öffentlichen Gesundheit richtet \u0026ldquo;Nichts tun (Unterlassung)\u0026rdquo; jedoch manchmal weitaus größeren Schaden an als das \u0026ldquo;Risiko, etwas zu tun\u0026rdquo;.\nEin Forschungsteam der Universität Osaka hat grausame Schätzungen zu den Auswirkungen dieser Aussetzung der Empfehlung veröffentlicht. Durch den drastischen Rückgang der Impfquote zwischen 2013 und 2019 werden die zukünftigen Fälle von Gebärmutterhalskrebs, die hätten verhindert werden können, um etwa 25.000 zunehmen, und die Zahl der Todesfälle wird um etwa 5.000 bis 5.700 steigen.\nMehr als 5.000 Tote. Das ist eine Zahl, die mit einer großen Naturkatastrophe vergleichbar ist. Als Folge des Versuchs, das wissenschaftlich unklare Risiko der \u0026ldquo;Angst vor Nebenwirkungen\u0026rdquo; zu vermeiden, haben wir künftigen Frauen das sichere und erhebliche Risiko des \u0026ldquo;Todes durch Krebs\u0026rdquo; aufgebürdet.\nWenn wir in die Welt schauen, ist der Unterschied offensichtlich. In Australien wird prognostiziert, dass Gebärmutterhalskrebs durch die weite Verbreitung der Impfung bei Männern und Frauen bis etwa 2028 \u0026ldquo;ausgerottet (zu einem seltenen Krebs gemacht)\u0026rdquo; sein wird. Auch in Großbritannien gibt es Berichte, dass das Auftreten von Gebärmutterhalskrebs in der geimpften Generation fast auf null gesunken ist. Während die Welt sich auf eine Zukunft zubewegt, in der \u0026ldquo;Krebs besiegt wird\u0026rdquo;, ist nur Japan in einer Vergangenheit zurückgeblieben, in der \u0026ldquo;Krebs weiter zunimmt\u0026rdquo;. Im Jahr 2015 kritisierte der beratende Ausschuss für Impfstoff-Sicherheit der WHO (Weltgesundheitsorganisation) die Situation in Japan namentlich: \u0026ldquo;Politische Entscheidungen, die nicht auf wissenschaftlichen Erkenntnissen beruhen, verursachen echten Schaden (Tod durch Krebs).\u0026rdquo;\nDie \u0026ldquo;Impfskepsis\u0026rdquo;, die über die Meere hinweg eine Kettenreaktion auslöst Die Tragödie des HPV-Impfstoffs, die sich in Japan ereignete, ist keineswegs \u0026ldquo;ein nur auf Japan beschränkter Sonderfall\u0026rdquo;. Es gibt Fälle, die noch heute auf der ganzen Welt berichtet werden und zeigen, dass Infektionskrankheiten jederzeit und überall ihre Zähne zeigen, wenn \u0026ldquo;intuitive Ängste\u0026rdquo; oder \u0026ldquo;Ideologien\u0026rdquo; Vorrang vor der Wissenschaft haben.\nEin bemerkenswertes Beispiel dafür ist der Masernausbruch in den USA.\nMasern sind ein hoch ansteckendes Virus, aber eine Krankheit, die durch Impfung fast vollständig vermeidbar ist. In den USA wurde einst im Jahr 2000 durch ein umfassendes Impfprogramm die \u0026ldquo;Elimination\u0026rdquo; erklärt. Das bedeutete, dass davon ausgegangen wurde, dass es im Land keine endemischen Viren mehr gab. In den letzten Jahren haben die Masern jedoch wieder begonnen zu zirkulieren.\nLaut einem BBC-Bericht (2024) weisen die US-Gesundheitsbehörden darauf hin, dass die \u0026ldquo;Impfskepsis (Vaccine Hesitancy)\u0026rdquo;, die in einigen Gemeinden hartnäckig bestehen bleibt, zu einem Nährboden für die Ausbreitung der Infektion geworden ist. Die Durchimpfungsraten sind in Gebieten gesunken, in denen Anti-Impf-Ideologien aufgrund religiöser Gründe, bei einigen Gruppen, die sich als \u0026ldquo;natürlich\u0026rdquo; bezeichnen, oder aufgrund von Fehlinformationen verbreitet sind. Wenn Viren aus dem Ausland dorthin gebracht werden, kommt es zu explosiven Infektionen bei Menschen ohne Immunität.\nMasern sind keine Krankheit, die einfach nur mit Fieber oder Ausschlag endet. Sie können schwerwiegende Komplikationen wie Lungenentzündung oder Enzephalitis verursachen und selbst in entwickelten Ländern zum Tod führen. Eine Krankheit, die die Menschheit einst mit vereinter Weisheit \u0026ldquo;eingedämmt\u0026rdquo; zu haben schien, nutzt nun die Lücke des \u0026ldquo;Misstrauens\u0026rdquo; der Menschen, um erneut das Leben von Kindern zu bedrohen. Das Beispiel in den USA warnt uns: \u0026ldquo;Der Schutzwall einer hohen Impfquote wird in einem Augenblick brechen, wenn das Vertrauen der Menschen erschüttert wird.\u0026rdquo;\nDie Niederlage der Medien, der Experten und von uns allen Warum wiederholen sich solche Situationen? Dahinter stehen die für die moderne Gesellschaft typische Informationsasymmetrie und unsere kognitiven Verzerrungen.\nBeim Problem des HPV-Impfstoffs in Japan berichteten die Medien sensationsgierig über \u0026ldquo;vermutete Nebenwirkungen des Impfstoffs\u0026rdquo;. Die Struktur \u0026ldquo;arme Opfer\u0026rdquo; gegen \u0026ldquo;kaltherziger Staat / Pharmakonzern\u0026rdquo; war als Geschichte extrem mächtig und wühlte die Emotionen der Zuschauer stark auf. Andererseits klangen wissenschaftliche Erklärungen von Experten wie \u0026ldquo;Es gibt keinen statistisch signifikanten Unterschied\u0026rdquo; oder \u0026ldquo;Der Nutzen überwiegt die Risiken\u0026rdquo; trocken und kalt und waren angesichts des Stroms der Emotionen viel zu machtlos.\nIn der Welt der Wissenschaft wird eine etablierte Theorie, die von 99% der Wissenschaftler unterstützt wird, im Vergleich zu einem abweichenden 1% nicht als \u0026ldquo;gleichwertige Meinung\u0026rdquo; behandelt. Aber die Medien, die aus einem zu großen Augenmerk auf \u0026ldquo;Fairness\u0026rdquo; handelten oder um Aufmerksamkeit zu erregen, berichteten über die Daten, die Zehntausende von Leben retten, und die emotionalen Klagen eines einzigen Opfers als \u0026ldquo;gleichwertig\u0026rdquo; nebeneinander. Auch die Politiker fürchteten die Gegenreaktion der Öffentlichkeit und zogen es vor, \u0026ldquo;die Atmosphäre im Raum\u0026rdquo; zu lesen, anstatt sich auf wissenschaftliche Erkenntnisse zu stützen. Infolgedessen wurde die aktive Empfehlung des HPV-Impfstoffs in Japan für etwa 9 Jahre ausgesetzt, was in dieser Zeit zu vielen Fällen von Krebsschäden führte, die hätten verhindert werden können.\nDie Geschichte wiederholt sich ―― Der Intellekt, um sich der \u0026ldquo;Atmosphäre\u0026rdquo; zu widersetzen Im Jahr 2022 wurde in Japan endlich die aktive Empfehlung des HPV-Impfstoffs wieder aufgenommen. Aber die verlorene Zeit und die verlorenen Leben können nicht zurückgegeben werden. Und wie die Masern derzeit in den USA wieder auftauchen, wird sich die Geschichte immer wiederholen, wenn wir unachtsam sind.\nDie Anti-Impf-Bewegung oder die Bedenken gegenüber der Medizin an sich können nicht völlig geleugnet werden. Es ist ein menschlicher Schutzinstinkt, vorsichtig damit zu sein, was man in seinen Körper aufnimmt, und in der Vergangenheit gab es tatsächlich Arzneimittelskandale. Die Überwachung und das Hinterfragen von Autoritäten sind in einer Demokratie wichtig.\nAber die Reihe von Ereignissen – der COVID-Impfstoff, der HPV-Impfstoff und der Masernausbruch in den USA – konfrontiert uns mit der kalten Tatsache, dass \u0026ldquo;gut gemeinte Ängste, die die Wissenschaft ignorieren\u0026rdquo;, möglicherweise mehr Leben fordern als das Virus selbst.\n\u0026ldquo;Es könnte gefährlich sein, also warten wir ab.\u0026rdquo; Haben wir, als wir diese Entscheidung trafen, die \u0026ldquo;Wahrscheinlichkeit, durch eine Krankheit zu sterben, während wir abwarten\u0026rdquo; mit in die Berechnung einbezogen? \u0026ldquo;Das Natürliche ist das Beste.\u0026rdquo; Haben wir, wenn wir so sprechen, die Geschichte vergessen, in der \u0026ldquo;gerade die Viren in der Natur uns am unerbittlichsten das Leben gekostet haben\u0026rdquo;?\nAuch in Zukunft werden neue Infektionskrankheiten auftreten und neue Impfstoffe entwickelt werden. Werden wir dann wieder von \u0026ldquo;Koinzidenz\u0026rdquo;-Ereignissen getäuscht und uns von emotionaler Hetze mitreißen lassen? Oder werden wir in der Lage sein, die Daten nüchtern zu lesen und Risiken und Nutzen abzuwägen?\nMan sagt, die Geschichte wiederhole sich. Aber das Einzige, was dies aufhalten kann, ist unsere eigene Vernunft. Indem wir statistisch korrekte Daten betrachten, müssen wir den Intellekt besitzen, uns nicht für \u0026ldquo;die Atmosphäre\u0026rdquo;, sondern für \u0026ldquo;Fakten\u0026rdquo; zu entscheiden. Das ist unsere Verantwortung, die wir in der heutigen Zeit leben.\nReferenzen und Datenquellen Ministerium für Gesundheit, Arbeit und Soziales: \u0026ldquo;Humane Papillomavirus-Infektion ~ Gebärmutterhalskrebs und HPV-Impfstoff ~\u0026rdquo; Nationales Krebszentrum (Japan): \u0026ldquo;Gebärmutterhalskrebs\u0026rdquo; Statistikdaten aus dem Krebsinformationsdienst BBC News (Japanisch): \u0026ldquo;US CDC ruft wegen Masernausbruch zur Impfung auf - Steigende Infektionen weltweit\u0026rdquo; (2024) und zugehörige Originalartikel Forschungsteam der Universität Osaka (Yagi A, et al. Lancet Public Health. 2020): Eine Studie zur Schätzung der Übersterblichkeit und erhöhten Morbidität aufgrund der Aussetzung der aktiven Empfehlung der HPV-Impfung Nagoya-Studie (Suzuki S, et al. Papillomavirus Res. 2018) ","date":"2026-01-24T15:41:23+09:00","image":"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_hu25fb505b5ce09f8b6e475386b0bbff8f_1013820_120x120_fill_box_smart1_3.png","permalink":"http://kenji.blog/de/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/","title":"Die Vor- und Nachteile von Anti-Impf-Bewegungen"},{"content":"\u0026ldquo;Japaner First\u0026rdquo; – Schein und Wirklichkeit: Japans Verteidigungsstrategie der \u0026ldquo;Koexistenz\u0026rdquo; im Jahr 2026 Einleitung: Warum diese Worte gerade jetzt ins Herz treffen Das Jahr 2026. Wir stehen an einem beispiellosen Wendepunkt der Zeit. Anhaltende Preissteigerungen, stagnierende Reallöhne und eine sichtbar voranschreitende demografische Alterung bei gleichzeitigem Geburtenrückgang. Jedes Mal, wenn die Preisschilder der Produkte in den Supermarktregalen umgeschrieben werden, wirft die Angst vor der Zukunft einen Schatten auf unsere Herzen.\nIn diesem Gefühl der Ausweglosigkeit gibt es einen Begriff, der rasant an Zustimmung gewinnt. Es ist \u0026ldquo;Japaner First\u0026rdquo; .\nDer Wunsch: \u0026ldquo;Bitte bereichert zuerst das Leben der eigenen Bürger\u0026rdquo; oder \u0026ldquo;Bitte schützt die japanische Kultur und Sicherheit an oberster Stelle\u0026rdquo;, ist als souveräner Bürger und als Mensch, der in diesem Land lebt, ein äußerst natürliches und dringendes Bedürfnis. Doch zwischen dem \u0026ldquo;Ideal\u0026rdquo;, das diese Worte propagieren, und der \u0026ldquo;Realität\u0026rdquo;, die durch statistische Daten belegt wird, klafft eine große Lücke, der wir uns stellen müssen.\nIn diesem Artikel nähern wir uns der wahren Natur dieses Problems, indem wir emotionale Argumente und Etikettierung beiseite lassen und uns auf objektive Daten, chronologische Entwicklungen und die Fakten aus den verschiedenen Bereichen der Gesellschaft stützen.\nKapitel 1: Die Chronologie von \u0026ldquo;Japaner First\u0026rdquo; und der gesellschaftliche Hintergrund Dieser Begriff ist nicht plötzlich aufgetaucht. Er ist durch ein komplexes Zusammenspiel globaler Trends und spezifisch japanischer Umstände entstanden.\n1. 2016–2017: Import und Etablierung des Begriffs 2016 schockierte das von Donald Trump propagierte \u0026ldquo;America First\u0026rdquo; die ganze Welt. Im Inland zog 2017 die von der Tokioter Gouverneurin Yuriko Koike angeführte \u0026ldquo;Tomin First no Kai\u0026rdquo; (Tokioter Bürger zuerst) die Aufmerksamkeit auf sich. Zu diesem Zeitpunkt handelte es sich stark um eine Rhetorik zur Verdeutlichung politischer Prioritäten; ausgrenzende Nuancen waren noch begrenzt.\n2. 2023–2024: Visualisierung der Angst Die Verzögerung der wirtschaftlichen Erholung nach der Pandemie und die mit dem rasanten Yen-Verfall einhergehende Inflation trafen die normalen Haushalte hart. Etwa zur gleichen Zeit kam es in den sozialen Medien zu einer Explosion der Unzufriedenheit, die auf fragmentarischen Informationen beruhte: \u0026ldquo;Die Unterstützung für Ausländer ist zu großzügig\u0026rdquo; oder \u0026ldquo;Das hart verdiente Steuergeld der Japaner fließt an Ausländer\u0026rdquo;.\n3. 2025–2026: Verschmelzung von politischen Kräften und sozialen Medien Bei den nationalen Wahlen im Jahr 2025 sicherte sich eine Kraft, die \u0026ldquo;Japaner First\u0026rdquo; offiziell als Slogan führte, eine bestimmte Anzahl von Sitzen. Die Algorithmen der sozialen Medien reagierten auf die Ängste der Menschen, zeigten radikale Beiträge bevorzugt an und beschleunigten so das \u0026ldquo;Echokammer-Phänomen\u0026rdquo;, bei dem nur bestimmte Wertvorstellungen verstärkt werden.\nDie jüngste Meinungsumfrage (Ende 2025), die von verschiedenen Zeitungen durchgeführt wurde, zeigt, dass sich die öffentliche Meinung zu diesem Slogan in zwei Hälften spaltet: \u0026ldquo;Stimme zu / Stimme eher zu\u0026rdquo; liegt bei 42 %, \u0026ldquo;Stimme nicht zu / Stimme eher nicht zu\u0026rdquo; bei 38 % , was eine tief gespaltene Gesellschaft offenbart.\nKapitel 2: Die Wahrheit über Wirtschaft und soziale Sicherung – \u0026ldquo;Ausbeuter\u0026rdquo; oder \u0026ldquo;Stützpfeiler\u0026rdquo;? Eine der Hauptsäulen der Argumentation zur Unterstützung von \u0026ldquo;Japaner First\u0026rdquo; ist die Vorstellung, dass \u0026ldquo;Ausländer die Ressourcen der Japaner an sich reißen\u0026rdquo;. Primärdaten der Regierungsbehörden zeigen jedoch eine Realität, die dieser Intuition genau entgegengesetzt ist.\n1. Arbeitskräfte: Das \u0026ldquo;unverzichtbare Blut\u0026rdquo; zur Erhaltung der japanischen Wirtschaft Nach Angaben des Ministeriums für Gesundheit, Arbeit und Soziales (\u0026ldquo;Beschäftigungssituation von Ausländern\u0026rdquo;, Stand: Ende Oktober 2024) lag die Zahl der ausländischen Arbeitnehmer bei 2.048.675 Personen . Aktuellen Schätzungen aus dem Jahr 2026 zufolge wurde die Marke von 2,3 Millionen bereits überschritten.\nIndustriezweig Anteil/Wachstumsrate ausländischer Arbeitnehmer Realität und Rolle Baugewerbe ca. 22,7 % mehr als im Vorjahr Unverzichtbar für die Instandhaltung der Infrastruktur sowie für die Reparatur alternder Brücken und Straßen. Medizin und Pflege ca. 28,1 % mehr als im Vorjahr Übernehmen eine Vorreiterrolle in der Pflege und unterstützen ältere Japaner. Verarbeitendes Gewerbe machen ca. 26 % der Gesamtzahl aus Das Rückgrat der japanischen Exportindustrie an vorderster Front. Derzeit füllen sie nicht die Arbeitsplätze, die Japaner tun wollen, aber nicht können, sondern die \u0026ldquo;Lücken, für die keine Japaner mehr gefunden werden können\u0026rdquo; . Würden sie im Namen von \u0026ldquo;Japaner First\u0026rdquo; ausgeschlossen, würde unser Pflegesystem sofort zusammenbrechen, und die Preise für Wohnraum und Lebensmittel würden um einige Dutzend Prozent bis zum Mehrfachen in die Höhe schnellen.\n2. Soziale Sicherung: Gerüchte und Realität rund um die Sozialhilfe Die am meisten in den sozialen Medien verbreitete Behauptung ist, dass \u0026ldquo;Ausländer bevorzugt Sozialhilfe erhalten\u0026rdquo;. Ein Blick in die Statistiken des Ministeriums für Gesundheit, Arbeit und Soziales zeigt jedoch, dass der Anteil der Haushalte mit einem ausländischen Haushaltsvorstand an allen Leistungsempfängern bei nur ca. 2,8 bis 2,9 % liegt. Seit über 10 Jahren ist diese Zahl nahezu unverändert.\nUmgekehrt zeigt ein Blick auf die Altersstruktur der in Japan lebenden Ausländer, dass die meisten von ihnen zur erwerbsfähigen Generation der 20- bis 40-Jährigen gehören. Sie zahlen Beiträge zur Renten- und Krankenversicherung und übernehmen die Rolle der \u0026ldquo;Geldgeber\u0026rdquo;, die die Renten und medizinischen Kosten der \u0026ldquo;älteren Japaner\u0026rdquo; stützen . Es sind genau sie, die die von den Japanern hinterlassene Lücke der arbeitenden Generation schließen und das japanische Sozialversicherungssystem am Leben erhalten.\nKapitel 3: Öffentliche Sicherheit und die Voreingenommenheit der sozialen Medien – Die logische Demontage der \u0026ldquo;Ausländerkriminalität\u0026rdquo; Die Angst um die öffentliche Sicherheit stimuliert die \u0026ldquo;Japaner First\u0026rdquo;-Gefühle am stärksten. Liest man jedoch die Statistiken der Nationalen Polizeibehörde und das \u0026ldquo;Weißbuch zur Kriminalität\u0026rdquo; des Justizministeriums im Detail, wird deutlich, wie sehr das Bild des \u0026ldquo;grausamen Ausländers\u0026rdquo; im Internet durch kognitive Verzerrungen erzeugt wird.\n1. Ein nüchterner Vergleich von \u0026ldquo;Gesamtzahl\u0026rdquo; und \u0026ldquo;Kriminalitätsrate\u0026rdquo; Laut einer im Jahr 2024 veröffentlichten Statistik machen Ausländer ca. 5,5 % aller verhafteten Personen aus. Die restlichen ca. 95 % der Straftaten werden von Japanern begangen.\nVergleicht man die Zahl der Festnahmen pro 100.000 Einwohner (Kriminalitätsrate), wird das wahre Wesen noch deutlicher.\nKategorie Festgenommene Personen pro 100.000 Einwohner (Schätzung) Japaner (alle Altersgruppen) ca. 142,7 Personen Ausländische Einwohner (ständige/langfristige Aufenthalter) ca. 120,0 Personen Es ist eine statistische Tatsache, dass die Kriminalitätsrate von Ausländern, die mittel- bis langfristig in Japan leben, niedriger ist als der Durchschnitt aller Japaner .\n2. Die Magie der \u0026ldquo;generationsbedingten\u0026rdquo; Verzerrung Warum eilt das Bild \u0026ldquo;Ausländer sind furchteinflößend\u0026rdquo; voraus? Der größte Faktor dafür ist der kriminologische Unterschied in der \u0026ldquo;Altersstruktur\u0026rdquo; .\nJapaner: Etwa 30 % sind ältere Menschen mit einer extrem niedrigen Kriminalitätsrate. Da diese Gruppe den \u0026ldquo;Nenner\u0026rdquo; nach unten drückt, erscheint die Zahl für ganz Japan niedrig. Ausländer: Da sie als Arbeitskräfte nach Japan kommen, gehören über 80 % zur \u0026ldquo;jungen bis mittleren Altersgruppe\u0026rdquo;, in der Straftaten statistisch gesehen häufiger vorkommen . Vergleicht man die Kriminalitätsraten von Japanern und Ausländern unter der gleichen Bedingung (\u0026ldquo;in den 20ern\u0026rdquo;), ist kein signifikanter Unterschied zwischen beiden festzustellen. Das heißt, nicht \u0026ldquo;die Sicherheit hat sich verschlechtert, weil es mehr Ausländer gibt\u0026rdquo;, sondern \u0026ldquo;die Altersgruppe (junge Menschen), die am ehesten Straftaten begeht, ist in Form von Ausländern in Japan präsent\u0026rdquo; .\n3. Der \u0026ldquo;Bestätigungsfehler\u0026rdquo;, den soziale Medien erzeugen Die Algorithmen der sozialen Medien nutzen unsere \u0026ldquo;Ängste\u0026rdquo; als Treibstoff. Wenn ein Verbrechen durch einen Ausländer begangen wird, wird dies mit dem \u0026ldquo;Attribut (Nationalität)\u0026rdquo; verknüpft und massiv verbreitet. In unseren Köpfen wird dann nur die Erinnerung verstärkt: \u0026ldquo;Schon wieder hat ein Ausländer einen Vorfall verursacht\u0026rdquo;.\nDies nennt man \u0026ldquo;Bestätigungsfehler\u0026rdquo; (Confirmation Bias) . Die Verbrechen von Japanern, die 95 % des Ganzen ausmachen, werden als \u0026ldquo;Alltag\u0026rdquo; übersehen, während die 5 % der Ausländerkriminalität zu einem Bild \u0026ldquo;aller Ausländer\u0026rdquo; umgedeutet werden.\nKapitel 4: Die Weitergabe der Kultur – \u0026ldquo;Zerstörer\u0026rdquo; oder \u0026ldquo;Retter\u0026rdquo;? Auch die Befürchtung, dass \u0026ldquo;japanische Traditionen und Kultur zerstört werden\u0026rdquo;, entspricht nicht der Realität vor Ort.\n1. Die \u0026ldquo;letzten Erben\u0026rdquo; des traditionellen Handwerks Die Zahl der Beschäftigten bei der Herstellung traditioneller japanischer Handwerksprodukte ist von rund 300.000 in den 1970er Jahren auf heute nur noch etwa 50.000 drastisch gesunken. Ausländer, die mit tiefem Respekt für die japanische Kultur nach Japan gekommen sind, retten diese Traditionen vor dem Aussterben.\nSake-Brauereien und Schwertschmiede: Ausländer werden Lehrlinge in Werkstätten, die von Japanern fast schon aufgegeben wurden. Indem sie ihre internationale Reichweite und neue Sensibilitäten einbringen, revitalisieren sie eine Kultur, die kurz vor der Aufgabe stand, zu einer \u0026ldquo;nachhaltigen Industrie\u0026rdquo;. 2. Erhaltung der lokalen Gemeinschaften In lokalen Gemeinden, aus denen junge Menschen verschwunden sind und die zu \u0026ldquo;von der Landkarte verschwindenden Städten\u0026rdquo; geworden sind, werden technische Praktikanten und Ausländer mit speziellen Fähigkeiten zu den Trägern lokaler Feste und stützen das Fundament der Landwirtschaft. Wer pflügt die von Japanern verlassenen und brachliegenden landwirtschaftlichen Flächen und erhält jahrhundertealte Traditionen am Leben? Wenn wir diese Realität betrachten, erkennen wir, dass sie keine \u0026ldquo;Zerstörer\u0026rdquo; der Kultur sind, sondern die \u0026ldquo;letzte Verteidigungslinie\u0026rdquo; .\nKapitel 5: Sorgen im Bildungswesen und die Kette von \u0026ldquo;Mobbing\u0026rdquo; Die Nebenwirkungen, wenn das Schlagwort \u0026ldquo;Japaner First\u0026rdquo; in die Schulen getragen wird, sind gravierend.\nDie Dichotomie, die zwischen \u0026ldquo;Innen und Außen\u0026rdquo; trennt: Wenn Kinder das falsche elitäre Bewusstsein verinnerlichen, dass \u0026ldquo;Japaner eine privilegierte Klasse sind, die bevorzugt werden sollte\u0026rdquo;, führt dies leicht zu Mobbing, bei dem \u0026ldquo;diejenigen, die anders sind als wir\u0026rdquo;, ausgegrenzt werden. Hierarchisierung nach Herkunft: Selbst Kinder mit japanischer Staatsbürgerschaft werden angegriffen und als \u0026ldquo;Nicht-Japaner\u0026rdquo; bezeichnet, weil ihr Aussehen oder Name anders ist. Dies ist der Zusammenbruch der Bildung und ein Akt der Selbstzerstörung der Talente, die das zukünftige Japan tragen sollen. Experten im Bildungsbereich befürchten, dass die Ausgrenzung, die mit dem Wort \u0026ldquo;First\u0026rdquo; einhergeht, die Fähigkeit der Kinder zum multikulturellen Zusammenleben schwächt und letztendlich das Risiko birgt, Japan vom Rest der Welt zu isolieren.\nKapitel 6: Globale Trends und die Welle des Populismus Dieses Phänomen ist nicht auf Japan beschränkt. Auch in westlichen Ländern hält der Trend an, dass Menschen, die nicht von der Globalisierung profitiert haben, sich einem Populismus zuwenden, der \u0026ldquo;America First\u0026rdquo; oder Ähnliches fordert.\nWas Japan jedoch entscheidend vom Westen unterscheidet, ist die Tatsache, dass es \u0026ldquo;die am schnellsten schrumpfende Bevölkerung der Welt\u0026rdquo; hat. Während andere Länder die Option der \u0026ldquo;Einschränkung\u0026rdquo; haben, gibt es in Japan bereits unzählige soziale Infrastrukturen, die ohne \u0026ldquo;Zusammenarbeit\u0026rdquo; nicht aufrechterhalten werden können. An einem emotionalen \u0026ldquo;First\u0026rdquo; festzuhalten, bedeutet logischerweise einen \u0026ldquo;schleichenden Selbstmord\u0026rdquo;.\nZum Abschluss: Was ist wahres \u0026ldquo;Japaner First\u0026rdquo;? Der Wunsch, der in dem Begriff \u0026ldquo;Japaner First\u0026rdquo; zum Ausdruck kommt – \u0026ldquo;Bitte stellt das Leben der Bürger an die erste Stelle\u0026rdquo; – ist die grundlegendste Verantwortung, die die Regierung eines Landes haben sollte.\nDie Mittel zur Erfüllung dieses Wunsches dürfen jedoch nicht im \u0026ldquo;Ausschluss der Nachbarn\u0026rdquo; bestehen. Wie objektive Daten zeigen, befinden sich die Annehmlichkeiten des Lebens, die öffentliche Sicherheit, die traditionelle Kultur und das Sozialversicherungssystem selbst, die wir heute genießen, bereits in einer Phase der \u0026ldquo;Abhängigkeit und Koexistenz\u0026rdquo;, die ohne die Anwesenheit von Ausländern nicht bestehen kann.\nBedeutet wahres \u0026ldquo;Japaner First\u0026rdquo; nicht, die folgenden drei Punkte besonnen in die Praxis umzusetzen?\nFaktenbasierte Diskussion: Sich nicht von Gerüchten oder übertriebenen Informationen mitreißen lassen, sondern die Realität auf der Grundlage von Primärstatistiken der Regierungsbehörden erfassen. Etablierung fairer Regeln: Von Ausländern die Einhaltung japanischer Regeln einfordern, während die japanische Gesellschaft sie gleichzeitig als faire Partner behandelt. Inneres Update: Die Aufnahme von Ausländern nicht als \u0026ldquo;Verlust Japans\u0026rdquo; begreifen, sondern einen Bewusstseinswandel vollziehen, dass wir mit ihrer Hilfe \u0026ldquo;Japan wieder aufbauen und erhalten\u0026rdquo;. Im Jahr 2026 stehen wir an einem großen Scheideweg. Werden wir weiterhin Worte der Spaltung schreien und uns selbst die Luft abschnüren? Oder werden wir der Realität ins Auge sehen und einen Schritt in Richtung eines \u0026ldquo;nachhaltigen Japans\u0026rdquo; machen, in dem sich vielfältige Menschen gegenseitig unterstützen?\nDie Antwort liegt in der \u0026ldquo;Intelligenz\u0026rdquo; und im \u0026ldquo;Mut\u0026rdquo; in den Herzen eines jeden Einzelnen.\n","date":"2026-01-23T13:43:41+09:00","image":"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_hua12d272c50d3b08d888fe1df256a5051_1332597_120x120_fill_box_smart1_3.png","permalink":"http://kenji.blog/de/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/","title":"\"Japaner First\" – Schein und Wirklichkeit: Japans Verteidigungsstrategie der \"Koexistenz\" im Jahr 2026"},{"content":"[Achtung] Wird man nach der kostenlosen Testphase von Gemini zur Kasse gebeten? Eine Zusammenfassung zur Kündigung Wenn Sie den KI-Dienst „Gemini“ von Google ausprobieren möchten, steht Ihnen zunächst ein kostenloser einmonatiger Testzeitraum zur Verfügung. Viele Leute melden sich wahrscheinlich an und denken sich: „Wenn es kostenlos ist, werde ich es einfach mal ausprobieren“, aber es gibt hier einen Punkt, auf den Sie achten sollten.\nWas passiert, wenn die kostenlose Testphase endet? Nach Ablauf der Testphase werden Ihnen automatisch 2.900 Yen pro Monat in Rechnung gestellt. Dies ist an das Abonnement namens „Google One-Mitgliedschaft“ gekoppelt, das automatisch in eine fortlaufende Abrechnung übergeht, wenn Sie nichts unternehmen.\nWenn Sie kündigen, werden Ihnen keine Kosten in Rechnung gestellt, aber\u0026hellip; Natürlich fallen keine Gebühren an, wenn Sie während der Testphase kündigen. Auf der offiziellen Erklärungsseite steht auch „So kündigen Sie Ihre Google One-Mitgliedschaft“.\n👉 Google One-Mitgliedschaft kündigen (Offiziell)\nWenn Sie jedoch tatsächlich darauf zugreifen, befinden Sie sich in einer Situation, in der Sie „aus irgendeinem Grund nicht kündigen können“. Ich war verwirrt und fragte mich: „Äh, wo kann ich das stoppen?“.\nDie richtige Methode zur Kündigung finden Sie hier! Nach verschiedenen Recherchen konnte ich es tatsächlich über die folgende Seite kündigen.\n👉 Google-Konto – Dienste löschen\nWenn Sie von hier aus „Google One“ auswählen und löschen, ist die Kündigung abgeschlossen.\nZusammenfassung Die kostenlose Testphase von Gemini beträgt 1 Monat Nach dem Ende werden automatisch 2.900 Yen pro Monat abgerechnet Die Kündigung über die offizielle Erklärungsseite ist möglicherweise nicht möglich Sie können tatsächlich über die Seite „Dienste löschen“ kündigen Wenn Sie denken, „Es ist eine kostenlose Testphase, also ist es in Ordnung“, könnten Sie unwissentlich zur Kasse gebeten werden, seien Sie also vorsichtig!\n👉 Leute, die diesen Artikel lesen, haben vielleicht gerade jetzt Probleme und fragen sich: „Wo kündige ich?“. Bitte schauen Sie sich vorerst den obigen Link an.\n","date":"2025-09-27T10:02:59+09:00","image":"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_hue118597de1df33c0e1a19ecde6d4d33f_1730014_120x120_fill_box_smart1_3.png","permalink":"http://kenji.blog/de/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/","title":"Was tun, wenn sich Google One (Gemini) nicht kündigen lässt"},{"content":"🎬 YouTube-Stream-Skript (Entwicklung der Neujahrskarten-App - Teil 1) Stream-Beginn (Erste 2 bis 3 Minuten) Kurze Begrüßung \u0026ldquo;Hallo. Ab heute beginne ich mit einem Stream, in dem ich kontinuierlich eine App zum Erstellen von Neujahrskarten in C++ programmieren werde.\u0026rdquo; \u0026ldquo;Ich weiß nicht, wie viele Streams es bis zur Fertigstellung dauern wird, aber wir werden Schritt für Schritt als Serie vorankommen.\u0026rdquo; \u0026ldquo;Grundsätzlich werde ich schweigend arbeiten, daher hoffe ich, dass Sie es als Hintergrundmusik für Ihre Arbeit ansehen können.\u0026rdquo;\nÜbersicht über die angestrebte App \u0026ldquo;In dieser App möchte ich es ermöglichen, die Rückseite von Neujahrskarten zu gestalten.\u0026rdquo; \u0026ldquo;Ich plane das Einfügen von Fotos, das Anordnen von Schriftarten und die Bildbearbeitung oder Illustrationsgenerierung mittels KI einzubeziehen und sie schließlich in den Microsoft Store hochzuladen.\u0026rdquo;\nHeutige Arbeitsziele \u0026ldquo;In der heutigen ersten Sitzung werden wir die Umgebung vorbereiten und die Grundlagen schaffen.\u0026rdquo; \u0026ldquo;Konkret möchte ich fortfahren mit:\nErstellung des GIT-Repositorys Erstellung des Hauptfensters Anzeige des Dialogfelds mit den Versionsinformationen Menüerstellung und Implementierung des Beenden-Befehls Direct2D-Initialisierungs-/Freigabeverarbeitung und HelloWorld-Anzeige \u0026quot;\nÜber die Veröffentlichung des Quellcodes \u0026ldquo;Der Quellcode ist auf GitHub veröffentlicht. Bei Interesse werfen Sie bitte einen Blick darauf.\u0026rdquo; → https://github.com/kenjinote/NengaCardApp/\nArbeitsteil (Stille) GitHub-Repository erstellen → Initialer Commit\nVorlage für das Hauptfenster erstellen\nVersionsdialog oder Menüerstellung und Implementierung des Beenden-Befehls\nDirect2D-Initialisierung und Freigabeverarbeitung → Bestätigung der HelloWorld-Anzeige\nEntsprechend auf GitHub pushen\n※ Grundsätzlich schweigend, kurze Erklärungen nur bei Bedarf hinzufügen\nVor dem Ende des Streams (Letzte 1 bis 2 Minuten) Zusammenfassung des heutigen Fortschritts \u0026ldquo;Heute haben wir ein GIT-Repository erstellt und das Fenster, die Beenden-Schaltfläche und den Versionsdialog implementiert.\u0026rdquo; \u0026ldquo;Wir konnten HelloWorld mit Direct2D anzeigen.\u0026rdquo;\nÜberleitung zum nächsten Mal \u0026ldquo;Ab dem nächsten Mal hoffe ich, den UI-Teil zu organisieren und mit der Objektifizierung von Zeichenfolgen usw. fortzufahren.\u0026rdquo;\nErneuter Hinweis auf den GitHub-Link → https://github.com/kenjinote/NengaCardApp/\nAbschluss \u0026ldquo;Vielen Dank fürs Zuschauen. Ich werde auch beim nächsten Mal kontinuierlich weiterarbeiten, also verlassen Sie sich auf mich.\u0026rdquo;\n","date":"2025-08-31T20:24:49+09:00","image":"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_hu403d76b87feb7669f72c38243c5cb621_1021075_120x120_fill_box_smart1_3.png","permalink":"http://kenji.blog/de/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/","title":"Stream zur Entwicklung der Neujahrskarten-App VOL.1 (Skript)"},{"content":"Zulassen der msix-Installation mit einem selbstsignierten Zertifikat Beim Verteilen von Apps unter Windows ist die Verwendung eines MSIX-Pakets praktisch, da Installations- und Aktualisierungsmechanismen vereinheitlicht werden. MSIX hat jedoch die Einschränkung, dass \u0026ldquo;immer ein signiertes Zertifikat erforderlich ist\u0026rdquo;. Wenn Sie eine von einem Unternehmen oder einer Einzelperson entwickelte App zum Testen verteilen möchten, kann es Situationen geben, in denen \u0026ldquo;der Kauf eines kommerziellen Code-Signing-Zertifikats übertrieben ist\u0026rdquo;.\nHier ist ein selbstsigniertes Zertifikat (Self-Signed Certificate) nützlich. In diesem Artikel fassen wir die Schritte zusammen, um ein selbstsigniertes Zertifikat an MSIX anzuhängen und die Installation in einer lokalen Umgebung zuzulassen.\n1. Ein selbstsigniertes Zertifikat erstellen Starten Sie zunächst PowerShell im Administratormodus und führen Sie den folgenden Befehl aus.\n1 2 // Selbstsigniertes Zertifikat erstellen New-SelfSignedCertificate -Type CodeSigningCert -Subject \u0026#34;CN=035A9AAC-915B-4CE1-AE39-1A101BED42F5\u0026#34; -CertStoreLocation Cert:\\CurrentUser\\My -NotAfter (Get-Date).AddYears(10) -KeyUsage DigitalSignature -FriendlyName \u0026#34;kenjinote\u0026#34; Was hier erstellt wird, ist ein Zertifikat für \u0026ldquo;Code Signing\u0026rdquo;.\nIhm mit -FriendlyName einen leicht verständlichen Namen zu geben, erleichtert das spätere Auffinden. Sie können das Ablaufdatum mit -NotAfter anpassen. Diesmal ist es auf 10 Jahre eingestellt. 2. PFX-Datei exportieren Exportieren Sie das erstellte Zertifikat im PFX-Format, damit es mit signtool verwendet werden kann.\n1 2 3 4 // pfx erstellen $cert = Get-ChildItem Cert:\\CurrentUser\\My | Where-Object { $_.FriendlyName -eq \u0026#34;kenjinote\u0026#34; } $password = ConvertTo-SecureString -String \u0026#34;password\u0026#34; -Force -AsPlainText Export-PfxCertificate -Cert $cert -FilePath \u0026#34;D:\\pfx\\cert.pfx\u0026#34; -Password $password Das zu diesem Zeitpunkt festgelegte Passwort (im Beispiel password) wird für den späteren Signaturvorgang benötigt.\n3. Selbstsigniertes Zertifikat in vertrauenswürdigen Stammzertifizierungsstellen installieren Das erstellte Zertifikat wird von Windows nicht ohne Weiteres als vertrauenswürdig eingestuft. Um es zu installieren, müssen Sie es aus certmgr.msc nach [Vertrauenswürdige Stammzertifizierungsstellen] -\u0026gt; [Zertifikate] importieren.\nWenn Sie das exportierte Zertifikat ( .cer oder .pfx ) importieren, wird es auf dem Ziel-PC als vertrauenswürdiges Zertifikat behandelt. Dadurch wird verhindert, dass die Warnung \u0026ldquo;nicht vertrauenswürdiges Zertifikat\u0026rdquo; angezeigt wird, selbst wenn Sie das MSIX signieren.\n4. Installationsprogramm (MSIX) signieren Verwenden Sie schließlich das erstellte PFX-Zertifikat, um das MSIX zu signieren. signtool ist in Visual Studio und im Windows SDK enthalten.\n1 2 // Installationsprogramm signieren signtool sign /fd SHA256 /f \u0026#34;D:\\pfx\\cert.pfx\u0026#34; /p \u0026#34;password\u0026#34; \u0026#34;C:\\installer\\installer.msix\u0026#34; /fd SHA256 gibt den Signaturalgorithmus an. Geben Sie die PFX-Datei mit /f an und übergeben Sie das Passwort mit /p. Geben Sie schließlich den Pfad zur MSIX-Datei an. Wenn der Pfad zu signtool nicht festgelegt ist, geben Sie den vollständigen Pfad an. In meiner Umgebung befand es sich am folgenden Speicherort. 1 \u0026#34;C:\\Program Files (x86)\\Microsoft Visual Studio\\Shared\\NuGetPackages\\microsoft.windows.sdk.buildtools\\10.0.26100.1742\\bin\\10.0.26100.0\\x64\\signtool.exe\u0026#34; Damit ist die Signatur abgeschlossen und ein MSIX, das auf dem Ziel-PC installiert werden kann, ist fertiggestellt.\nZusammenfassung Erstellen Sie ein selbstsigniertes Zertifikat mit New-SelfSignedCertificate Exportieren Sie PFX mit Export-PfxCertificate Installieren Sie das Zertifikat in Vertrauenswürdige Stammzertifizierungsstellen Signieren Sie MSIX mit signtool Indem Sie diesem Ablauf folgen, können Sie den Betrieb überprüfen und in der lokalen Umgebung zu Testzwecken verteilen, ohne ein kommerzielles Zertifikat kaufen zu müssen. Natürlich ist ein von einer Zertifizierungsstelle ausgestelltes Zertifikat für den tatsächlichen kommerziellen Vertrieb unerlässlich, aber diese Methode ist in der Entwicklungs- und Überprüfungsphase sehr praktisch.\n👉 Diesmal haben wir installer.msix als Beispiel verwendet, aber Sie können das gleiche Verfahren auf Ihre eigene App anwenden.\n","date":"2025-08-30T04:18:04+09:00","image":"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_hu193aeacbbfca091956fdf9aac7d139a2_495432_120x120_fill_box_smart1_3.png","permalink":"http://kenji.blog/de/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/","title":"Zulassen der msix-Installation mit einem selbstsignierten Zertifikat"},{"content":"Ein Werkzeug für \u0026ldquo;Leute, die nicht programmieren können, aber Logik verstehen\u0026rdquo;. Der Grund, warum ich LogicPad entwickelt habe Hallo, ich bin kenji. Ich bin der Entwickler des Low-Code-Tools \u0026quot; LogicPad \u0026ldquo;. Diesmal ist es keine Produkteinführung, sondern ich möchte über die Hintergründe der Entwicklung schreiben, \u0026ldquo;Warum habe ich beschlossen, das zu entwickeln?\u0026rdquo;, und über meine eigenen Gedanken aus einer etwas persönlicheren Perspektive.\nEhrlich gesagt, war das nicht nur eine reine Tool-Entwicklung. Meine Vergangenheit, die Frustrationen am Arbeitsplatz, meine Fähigkeiten und der brennende Wunsch, \u0026ldquo;eines Tages mein eigenes Produkt zu entwickeln\u0026rdquo; — LogicPad ist das Ergebnis all dieser Dinge, die zusammenkamen.\nMit anderen Worten, dies ist auch das \u0026ldquo;Lebenswerk-Projekt\u0026rdquo; für mich. Ich werde diese Hintergründe so ehrlich und leidenschaftlich wie möglich beschreiben.\nIch wollte ein Produkt, bei dem ich stolz sagen kann: \u0026ldquo;Das habe ich gemacht\u0026rdquo; Um ehrlich zu sein, war das meine erste Motivation.\nIch habe schon immer gerne Code geschrieben, sowohl beruflich als auch als Hobby. Ich war auch an verschiedenen Entwicklungen beteiligt. Aber eines Tages wurde mir plötzlich etwas klar. \u0026ldquo;Ich habe kein Produkt, das ich unter meinem eigenen Namen, unter meiner eigenen Verantwortung in die Welt gesetzt habe.\u0026rdquo;\nNatürlich hat das, was man im Team entwickelt, einen Wert, und es gab viele Arbeiten, auf die ich stolz sein konnte. Aber irgendwo war auch das Gefühl der Leere: \u0026ldquo;Werde ich meine Karriere unter dem Namen eines anderen so beenden?\u0026rdquo;.\nNur ein einziges Mal würde reichen. Ich möchte etwas hinterlassen, bei dem ich stolz sagen kann: \u0026ldquo;Das habe ich gemacht\u0026rdquo;. Mit diesem Gedanken begann ich, das Konzept für LogicPad zu entwerfen. Das war vor etwa 6 Jahren (um 2019). (Die ursprüngliche Idee selbst stammt aus der Zeit um 2015, als ich Blueprint kennenlernte, die visuelle Programmiersprache der Unreal Engine.)\nIch kann es nicht anfassen, weil ich keinen Code schreiben kann. Ist das nicht eine Verschwendung? Es gab viele hervorragende Leute an meinem Arbeitsplatz.\nSie können Logik aufbauen. Sie beherrschen Excel-Funktionen und können den Kern eines Problems erkennen. Aber — in der Phase des \u0026ldquo;Code-Schreibens\u0026rdquo; bleiben ihre Hände stehen.\n\u0026ldquo;Ich mache diese Aufgabe jedes Mal, indem ich auf das Handbuch schaue, aber gibt es keine Möglichkeit, das zu automatisieren?\u0026rdquo; \u0026ldquo;Ja, das ist möglich. Aber\u0026hellip; dafür musst du Code schreiben\u0026hellip;\u0026rdquo;\nSolche Gespräche hatten wir sehr oft.\nJedes Mal dachte ich: \u0026ldquo;Es ist eine solche Verschwendung, an der Wand des Codes stehen zu bleiben, wenn man die Logik versteht.\u0026rdquo;\nDie Option eines Low-Code-Editors Tatsächlich habe ich in meinem vorherigen Job ein 2D-CAD entwickelt, das über eine GUI bedient wurde. Beim CAD benutzt man die Maus, um Formen zusammenzusetzen, nicht wahr? Mit anderen Worten, es ist eine Welt, in der \u0026ldquo;Logik durch Bedienung aufgebaut wird\u0026rdquo; .\nIch dachte: \u0026ldquo;Das passt super zu Low-Code.\u0026rdquo;\nWenn ich noch weiter zurückgehe, habe ich seit meiner Studentenzeit immer Code geschrieben und massenhaft kleine Programme wie Bildverarbeitung, numerische Verarbeitung, Windows-Tools und SNS-Auto-Posting-Tools produziert, sobald ich eine Idee hatte. Ich glaube, es gibt über 600 davon. Sie sind auch heute noch auf meinem GitHub.\nDamals habe ich nicht über den Sinn nachgedacht. Einfach \u0026ldquo;Ich mache es, weil ich es machen will\u0026rdquo;. Das war alles.\nAber jetzt, da ich LogicPad entwickle\u0026hellip;\nHatte ich das Gefühl, dass sich die Punkte endlich zu einer Linie verbunden haben.\nEinfach zu bedienen, aber mächtig. Die Schwierigkeit der Balance Worüber ich während der Entwicklung ständig nachgedacht habe, war \u0026ldquo;Ein Werkzeug zu schaffen, das intuitiv zu bedienen und dennoch leistungsstark ist.\u0026rdquo;\nWenn man Funktionen hinzufügt, kann man mehr tun. Aber es wird schwieriger zu bedienen. Wenn man es vereinfacht, kann es jeder berühren. Aber dann wird es Leute geben, die unzufrieden sind.\nDamit man nicht sagt: \u0026ldquo;Low-Code-Tools sind doch nur Spielzeuge, oder?\u0026rdquo;. Aber ich will auch nicht, dass sie sagen: \u0026ldquo;Am Ende bringt es nichts, wenn man keinen Code schreibt.\u0026rdquo;\nIch kämpfte ständig an der Grenze zwischen Intuition und Ausdruckskraft.\nIch habe die Benutzeroberfläche viele Male neu erstellt, sie viele Male verworfen, Und als ich mich endlich einer Form näherte, bei der ich dachte \u0026ldquo;Das könnte funktionieren\u0026rdquo;, war ich wirklich glücklich.\nIch wurde durch die Worte meiner ersten \u0026ldquo;Nutzerin\u0026rdquo; gerettet Das erste Mal, dass ich LogicPad weitergegeben habe, war an eine ehemalige Kollegin. Sie ist nicht gut in IT, und sie hat Angst vor Code. Aber sie ist gut in Logik.\nNachdem ich es ein wenig erklärt und sie damit spielen ließ\u0026hellip; werde ich den Satz nicht vergessen, den sie ein paar Minuten später sagte.\n\u0026ldquo;Damit denke ich, dass sogar ich das machen könnte!\u0026rdquo;\nIn diesem Moment hätte ich fast geweint. Das war es, was ich ihr geben wollte.\nNicht ein Werkzeug, das funktioniert, sondern das Gefühl: \u0026ldquo;Ich habe es selbst gemacht!\u0026rdquo; . Ich war überzeugt, dass genau das der wahre Wert von LogicPad.\nWenn die Zahl der Menschen, die erschaffen können, steigt, wird die Gesellschaft viel interessanter Ich denke, dass die \u0026ldquo;Demokratisierung der Technologie\u0026rdquo; wirklich wichtig ist.\nTechnologie hat die Macht, die Welt zu verändern. Aber die Menschen, die damit umgehen können, sind begrenzt.\nWas wäre, wenn man eine App erstellen könnte, nur indem man \u0026ldquo;die Logik versteht\u0026rdquo;?\nMehr Menschen werden auf die \u0026ldquo;Seite der Schöpfer\u0026rdquo; wechseln können. Und ich denke, was daraus entstehen wird, übersteigt unsere heutige Vorstellungskraft.\nWenn LogicPad dieses Tor werden könnte. Ich möchte, dass es ein Werkzeug ist, das \u0026ldquo;Ich möchte erschaffen\u0026rdquo; in \u0026ldquo;Ich kann erschaffen\u0026rdquo; verwandelt.\nDas ist mein Wunsch.\nFazit LogicPad befindet sich noch in der Beta-Phase und ist nicht fertig. Es gibt noch Berge von Dingen zu verbessern und Dinge, die ich tun möchte.\nAber ich stecke alle \u0026ldquo;Punkte\u0026rdquo; meines Lebens in dieses Werkzeug. Jetzt kann ich stolz sagen:\n\u0026ldquo;Das ist das Produkt, das ich erschaffen habe.\u0026rdquo;\n👇 Bonus: Was Sie mit LogicPad machen können Prozesse mit Drag \u0026amp; Drop erstellen Bedingte Verzweigungen und Variablen können ebenfalls in der GUI behandelt werden Verschiedene KI-Kollaborationsknoten sind verfügbar Erweiterungen für fortgeschrittene Benutzer sind durch das Einfügen von Skripten ebenfalls möglich Hochpräzise mathematische Funktionen und Datenverarbeitung (z.B. numerische Berechnungen mit unendlicher Genauigkeit) Eine Fülle von Tastenkombinationen für fortgeschrittene Benutzer Unterstützt Sprachen aus über 90 Ländern Was ich in Zukunft tun möchte Generierung von Logik aus natürlicher Sprache in Zusammenarbeit mit KI Ein Mechanismus, der es Benutzern ermöglicht, benutzerdefinierte Knoten zu erstellen Aufbau einer Plattform, auf der erstellte Knoten und Logiken geteilt werden können ✍️ Nachwort Vielen Dank, dass Sie bis hierhin gelesen haben. Dies war nicht nur eine reine Tool-Entwicklung, sondern eine Herausforderung, in die ich meine eigenen Erfahrungen, meine Leidenschaft und Fragmente meines Lebens gesteckt habe.\n\u0026ldquo;Ich kann nicht programmieren, aber ich verstehe Logik.\u0026rdquo; Eine Zukunft, in der diese Menschen aus eigener Kraft \u0026ldquo;erschaffen\u0026rdquo; können. Das möchte ich mit LogicPad weiterhin anstreben.\nIch würde mich sehr freuen, wenn Sie auch nur ein bisschen denken: \u0026ldquo;Das möchte ich benutzen.\u0026rdquo; Wenn Sie interessiert sind, probieren Sie LogicPad bitte aus.\nUnd wenn Sie nach der Nutzung Gedanken oder Anmerkungen haben, egal wie klein, zögern Sie nicht. Ihre Stimme wird eine große Kraft sein, um den nächsten Schritt dieses Produkts zu gestalten.\nVielen Dank für Ihre anhaltende Unterstützung.\n","date":"2025-07-30T23:51:35+09:00","image":"http://kenji.blog/p/logicpad-%E9%96%8B%E7%99%BA%E7%A7%98%E8%A9%B1/img_hu2f3df13f20424b87da3515770faf1b1c_1676910_120x120_fill_box_smart1_3.png","permalink":"http://kenji.blog/de/p/logicpad-%E9%96%8B%E7%99%BA%E7%A7%98%E8%A9%B1/","title":"Die geheime Geschichte der Entwicklung von LogicPad"},{"content":"\u0026ldquo;So entfernen Sie Metadaten (persönliche Informationen) stapelweise aus Excel, Word usw. mit PowerShell\u0026rdquo; Office-Dateien wie Excel speichern automatisch „Metadaten (persönliche Informationen)“ wie den Ersteller, die letzte Person, die die Datei geändert hat, und den Firmennamen. Es gibt viele Fälle, in denen Sie diese Informationen entfernen möchten, z. B. wenn Sie eine Datei außerhalb des Unternehmens teilen.\nIn diesem Artikel erklären wir detailliert, wie Sie Excel-Metadaten mithilfe von PowerShell entfernen, wobei der Schwerpunkt auf ** der Stapelverarbeitung innerhalb eines Ordners ** und ** der Anwendung auf andere Office-Dateien wie Word und PowerPoint ** liegt.\n1. Entfernen von Metadaten aus einer einzelnen Excel-Datei Dies ist das einfachste Skript zum Entfernen persönlicher Informationen aus einer einzelnen Excel-Datei. Es ruft das COM-Objekt von Excel auf, setzt die Eigenschaft RemovePersonalInformation auf $true und speichert die Datei durch Überschreiben.\n1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 # Starten der Excel-Anwendung unsichtbar $excel = New-Object -ComObject Excel.Application $excel.Visible = $false $excel.DisplayAlerts = $false # Datei öffnen (*Bitte geben Sie den absoluten Pfad an) $filePath = \u0026#34;C:\\Path\\To\\Your\\File.xlsx\u0026#34; $wb = $excel.Workbooks.Open($filePath) # Aktivieren der Einstellung zum Entfernen von Metadaten (persönlichen Informationen) $wb.RemovePersonalInformation = $true # Speichern und schließen $wb.Save() $wb.Close($false) # Excel beenden und Speicher freigeben $excel.Quit() [System.Runtime.Interopservices.Marshal]::ReleaseComObject($excel) | Out-Null ** Achtung: ** Stellen Sie sicher, dass Sie den ** absoluten Pfad (vollständigen Pfad) ** für den an Workbooks.Open() übergebenen Pfad angeben. Ein relativer Pfad kann zu einem Fehler führen.\n2. Stapelverarbeitung aller Excel-Dateien in einem Ordner In der Praxis möchten Sie oft \u0026ldquo;alle Metadaten aus Dutzenden von Excel-Dateien in einem bestimmten Ordner auf einmal löschen\u0026rdquo;. Dies kann durch Verwendung einer Schleifenverarbeitung in Kombination mit Get-ChildItem erreicht werden.\n1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 $targetFolder = \u0026#34;C:\\Path\\To\\Your\\Folder\u0026#34; # Abrufen aller .xlsx und .xls Dateien im Ordner $excelFiles = Get-ChildItem -Path $targetFolder -Include \u0026#34;*.xlsx\u0026#34;, \u0026#34;*.xls\u0026#34; -Recurse if ($excelFiles.Count -eq 0) { Write-Host \u0026#34;Keine Excel-Datei gefunden.\u0026#34; exit } $excel = New-Object -ComObject Excel.Application $excel.Visible = $false $excel.DisplayAlerts = $false foreach ($file in $excelFiles) { Write-Host \u0026#34;Entfernen von Metadaten aus $($file.Name)...\u0026#34; # Datei öffnen $wb = $excel.Workbooks.Open($file.FullName) # Metadaten entfernen und speichern $wb.RemovePersonalInformation = $true $wb.Save() $wb.Close($false) } $excel.Quit() [System.Runtime.Interopservices.Marshal]::ReleaseComObject($excel) | Out-Null Write-Host \u0026#34;Die gesamte Verarbeitung ist abgeschlossen!\u0026#34; 3. Entfernen von Metadaten aus anderen Office-Dateien (Word / PowerPoint) Metadaten können nicht nur in Excel, sondern auch in Word und PowerPoint mit genau derselben Logik entfernt werden. Lediglich der Name des aufzurufenden COM-Objekts ist unterschiedlich, und es ist üblich, dass die Eigenschaft RemovePersonalInformation bereitgestellt wird.\nFür Word 1 2 3 4 5 6 7 8 9 10 11 $word = New-Object -ComObject Word.Application $word.Visible = $false $word.DisplayAlerts = 0 $doc = $word.Documents.Open(\u0026#34;C:\\Path\\To\\Your\\File.docx\u0026#34;) $doc.RemovePersonalInformation = $true $doc.Save() $doc.Close() $word.Quit() [System.Runtime.Interopservices.Marshal]::ReleaseComObject($word) | Out-Null Für PowerPoint Für PowerPoint ist die Einstellung der Eigenschaft RemovePersonalInformation ähnlich, aber das Verhalten des versteckten Starts ist etwas anders.\n1 2 3 4 5 6 7 8 9 10 $ppt = New-Object -ComObject PowerPoint.Application # Öffnen durch Angabe des versteckten Modus (msoFalse) usw. mit dem 2. bis 4. Argument $presentation = $ppt.Presentations.Open(\u0026#34;C:\\Path\\To\\Your\\File.pptx\u0026#34;, $false, $false, $false) $presentation.RemovePersonalInformation = $true $presentation.Save() $presentation.Close() $ppt.Quit() [System.Runtime.Interopservices.Marshal]::ReleaseComObject($ppt) | Out-Null Fazit Durch die Nutzung von PowerShell und COM-Objekten können Sie die Entfernung von Metadaten aus Office-Dateien vollständig automatisieren. Es ist sehr nützlich, vor der Auslieferung ein Stapelverarbeitungsskript zur Hand zu haben, um das unbeabsichtigte Durchsickern vertraulicher Informationen oder persönlicher Namen zu verhindern.\n","date":"2025-07-30T02:42:40+09:00","image":"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_hud95a00206aa1dcf32de9cdc0ccb17972_952041_120x120_fill_q75_box_smart1.jpg","permalink":"http://kenji.blog/de/p/so-entfernen-sie-metadaten-pers%C3%B6nliche-informationen-aus-excel-mit-powershell/","title":"So entfernen Sie Metadaten (persönliche Informationen) stapelweise aus Excel, Word usw. mit PowerShell"},{"content":"Die Kepler-Vermutung Einfach Erklärt! Der beste Weg, Wassermelonen zu verpacken Hallo, ich bin kenji!\nHeute möchte ich versuchen, ein mathematisches Thema mit einem etwas kompliziert klingenden Namen, die \u0026ldquo;Kepler-Vermutung\u0026rdquo;, so einfach wie möglich zu erklären.\nAuf den ersten Blick mag das wie ein Thema für Nerds wirken, aber es ist auch ein sehr alltägliches Problem: \u0026ldquo;Wie können wir Wassermelonen am dichtesten in eine Kiste packen?\u0026rdquo;. Es hat auch etwas mit den Kühlschränken in Convenience-Stores und dem Stapeln von Fracht zu tun.\nUnd in der Welt der Mathematik verbirgt sich dahinter eine super romantische Geschichte: dass dies über 400 Jahre lang nicht bewiesen werden konnte .\nLass uns anfangen!\nWer war Kepler eigentlich? Zunächst einmal: Wer ist der \u0026ldquo;Kepler\u0026rdquo; in der \u0026ldquo;Kepler-Vermutung\u0026rdquo;?\nEs ist der Name eines deutschen Astronomen und Mathematikers namens Johannes Kepler .\nDieser Typ war unglaublich. Er war zum Beispiel derjenige, der entdeckte, dass die Planetenbahnen elliptisch sind. Das ist heute Allgemeinwissen, aber damals (um 1600) war es eine Ära, in der selbst das heliozentrische Weltbild kaum geglaubt wurde.\nGalileo = Genie der Beobachtung Kepler = das Genie, das das Universum mit mathematischen Formeln erklärte Newton = das Supergenie, das diese Theorie in physikalischen Gesetzen zusammenfasste Mit dieser Positionierung war Kepler ein Pionier darin, \u0026ldquo;mit mathematischen Formeln über das Universum zu sprechen\u0026rdquo;.\nUnd irgendwann sagte er Folgendes:\nWas ist die Kepler-Vermutung? Kurz gesagt, ist die \u0026ldquo;Kepler-Vermutung\u0026rdquo; wie folgt.\nBeim Verpacken von Kugeln gleicher Größe (Wassermelonen oder Orangen) in eine Kiste, welche Anordnung ermöglicht die dichteste Packung?\nDas ist das Problem.\nUnd was Kepler in den 1600er Jahren vermutete, war:\nWäre es nicht am effizientesten, sie wie Dreiecke zu stapeln, ähnlich wie Gemüsehändler Orangen auslegen?\nIn der mathematischen Sprache wird dies das \u0026ldquo;Dichteste Kugelpackung-Problem\u0026rdquo; (Sphere Packing) genannt, welches nach der Methode sucht, Kugeln so dicht wie möglich in einem Raum anzuordnen.\nKepler vermutete, dass die Anordnung, die \u0026ldquo;kubisch flächenzentrierte Struktur (FCC)\u0026rdquo; genannt wird (wie das Stapeln von Wassermelonen in einem Dreiecksmuster), am effizientesten wäre.\nJeder dachte: \u0026ldquo;Ja, das macht Sinn\u0026hellip;\u0026rdquo;, aber es mathematisch zu beweisen, dass \u0026ldquo;dies absolut das Beste ist!\u0026rdquo;, war extrem schwierig.\n400 Jahre für den Beweis!?! Wann wurde es also tatsächlich bewiesen\u0026hellip;?\nErstaunlicherweise etwa zwischen 1998 und 2005 . Das heißt, fast 400 Jahre lang konnte es niemand beweisen . Das ist verrückt.\nDarüber hinaus war die Person, die es bewies, ein amerikanischer Mathematiker namens Thomas Hales .\nEr erkannte, dass es unmöglich wäre, dies nur mit manuellen Berechnungen zu tun, also nutzte er Computer für den Beweis . Es trat jedoch ein Problem auf: Der Beweis war so komplex, dass Menschen ihn nicht richtig überprüfen konnten!\nSo entbrannte auch in der mathematischen Welt eine große Debatte: \u0026ldquo;Können wir einem Beweis, der von Computern gemacht wurde, wirklich vertrauen?\u0026rdquo;.\nSchließlich wurde der Beweis (offiziell \u0026ldquo;formaler Beweis\u0026rdquo; genannt), der besagte: \u0026ldquo;Ich habe ihn rigoros überprüft, einschließlich der Computer!\u0026rdquo;, im Jahr 2014 abgeschlossen.\nMit anderen Worten, es hat über 400 Jahre gedauert zu beweisen, dass Keplers Intuition richtig war . Was für eine Romanze.\nSehr oft im echten Leben verwendet Man könnte denken, dass \u0026ldquo;wie man Kugeln anordnet\u0026rdquo; ein Thema nur für Mathe-Freaks ist, aber in Wirklichkeit ist es sehr praktisch.\nUm Getränke effizient in Kühlschränken von Convenience-Stores zu verpacken Beim Stapeln von Dosen auf Transportpaletten Es wird auch in der Kommunikation angewendet (Kompression digitaler Signale usw.) Wird beim Entwurf von 3D-Druckern und Kristallstrukturen verwendet Usw. Es ist tatsächlich eine Theorie, die massiv hinter den Kulissen unseres Lebens genutzt wird.\nFazit: Die menschliche Intuition ist erstaunlich Lassen Sie uns zusammenfassen.\nKepler-Vermutung = Das Problem, wie man Kugeln am dichtesten verpackt Herr Kepler = Mathematiker und Astronom, der die Planetenbahnen entdeckte In den 1600er Jahren vermutet! Aber in den 2000er Jahren bewiesen! Sehr anwendbar im echten Leben! Und der interessanteste Punkt ist: \u0026ldquo;Die Art zu stapeln, die Gemüsehändler aus Intuition gemacht haben, war mathematisch auch die stärkste\u0026rdquo; .\nMit anderen Worten: Die menschliche Intuition ist erstaunlich . Und die Tatsache, dass es 400 Jahre dauern kann, dies zu beweisen , ist eine wirklich romantische Geschichte, nicht wahr?\nWenn Sie interessiert sind, suchen Sie unbedingt nach \u0026ldquo;Thomas Hales\u0026rdquo;, \u0026ldquo;formaler Beweis\u0026rdquo;, \u0026ldquo;Sphere Packing\u0026rdquo;. Es macht sehr viel Spaß, tiefer einzutauchen.\nBis dann!\n[PR]\n今すぐ購入 ","date":"2025-07-21T22:53:03+09:00","image":"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_huc7f0a2c79b029796989bdbbe22e755bc_619919_120x120_fill_box_smart1_3.png","permalink":"http://kenji.blog/de/p/kepler-vermutung-einfach-erklaert/","title":"Die Kepler-Vermutung Einfach Erklärt"},{"content":"Die Barriere der KI-Entwicklung ~ Ich habe die 8. Station erreicht, aber von da an war es die Hölle ~\nHallo, hier ist kenji.\nIn letzter Zeit höre ich viele Leute sagen: \u0026ldquo;Ich habe die KI gefragt und konnte eine App erstellen!\u0026rdquo; Wir haben die No-Code- und Low-Code-Ära überschritten und sind in die Phase des \u0026ldquo;Vibe-Codings\u0026rdquo; (Code nach Gefühl schreiben) eingetreten.\nWenn man zum Beispiel sagt: \u0026ldquo;Erstelle eine App, die Bilder bearbeiten und in sozialen Medien posten kann\u0026rdquo;, generiert die KI den Code und sogar die Benutzeroberfläche. Erstaunlich, wir brauchen keine Menschen mehr, oder? Das könnte man denken.\nAber in Wirklichkeit ist das, als würde man in Sandalen an der 8. Station des Fuji landen .\nBis zur 8. Station scheint es \u0026ldquo;einfach\u0026rdquo; Die Entwicklung mit KI ist anfangs wirklich einfach. Datei-E/A? Es funktioniert einfach. Netzwerk? Nun, es verbindet sich. Datenbank? JSON reicht aus. UI? ChatGPT hat React-Code für mich generiert. Zahlung? Die Stripe-API lässt sich per Copy \u0026amp; Paste erledigen.\nHier hat man die Illusion: \u0026ldquo;Bin ich jetzt ein Ingenieur?\u0026rdquo; Aber die wahre Hölle beginnt erst hier.\nWarum bleibt man stecken? Der Grund ist einfach: \u0026ldquo;Die KI erstellt etwas, das fertig aussieht, aber die Feinabstimmung bleibt vollständig den Menschen überlassen.\u0026rdquo;\nDaten verschwinden aufgrund von Datei-E/A Datenbanknormalisierung ist schwach und Suchen sind langsam UI ist nicht intuitiv Keine Lasttests durchgeführt, Absturz bei hohem Datenverkehr Von der Apple/Google-Überprüfung abgelehnt Probleme mit rechtlichen Anforderungen (fast ein Desaster) Mit anderen Worten: KI ist gut darin, \u0026ldquo;Prototypen zu erstellen, die wie fertige Produkte aussehen\u0026rdquo; , aber daraus ein \u0026ldquo;Produkt zu machen, das in der realen Welt funktioniert\u0026rdquo;, ist heute noch menschliche Arbeit .\nAber es gibt ein Paradoxon Hier bemerken wir ein Paradoxon .\nWas wäre, wenn KI in Zukunft wirklich alles könnte? Mit anderen Worten, wenn \u0026ldquo;Sicherheit, Abrechnung und Design perfekt von der KI übernommen würden\u0026rdquo;?\nZu diesem Zeitpunkt könnte die Notwendigkeit für Menschen, Apps zu erstellen, selbst verschwinden .\nDenn wenn Benutzer der KI direkt sagen \u0026ldquo;Ich möchte das tun\u0026rdquo;, werden Aufgaben sofort ohne eine App ausgeführt.\n🌀 Zum Beispiel Früher haben wir \u0026ldquo;eine Taschenrechner-App geöffnet, um zu rechnen\u0026rdquo;, aber heute sagen wir nur \u0026ldquo;Hey Siri, was ist 12 x 32?\u0026rdquo; und es ist erledigt.\nGenauso, wenn man sagt \u0026ldquo;Hey KI, bearbeite und teile dieses Foto\u0026rdquo;, könnte die Aufgabe ohne die UI oder API der App erledigt werden.\nKurz gesagt, wenn das Ziel \u0026ldquo;Apps mit KI erstellen\u0026rdquo; erreicht ist, könnten wir in einer Welt ankommen, in der Apps selbst überflüssig sind .\nWas können wir jetzt noch tun? Also, was sollen wir tun?\nIm Moment ist der Bereich \u0026ldquo;oberhalb der 8. Station\u0026rdquo; noch das Terrain des Menschen, also lasst uns das verfeinern. Konzentrieren Sie sich auf das wesentliche Benutzerverständnis und das Service-Design. Denken Sie über \u0026ldquo;was Wert hat\u0026rdquo; nach, anstatt über \u0026ldquo;was erstellt werden kann\u0026rdquo;. Erkunden Sie stattdessen Wege, um Wert zu liefern, \u0026ldquo;ohne auf das Format einer App beschränkt zu sein\u0026rdquo;. KI ist ein Werkzeug, ein Aufzug und manchmal ein Konkurrent. Aber \u0026ldquo;was zu erstellen ist\u0026rdquo; und \u0026ldquo;warum es zu erstellen ist\u0026rdquo; bleiben Fragen für uns Menschen .\nZusammenfassung: Die Barriere der KI-Entwicklung ist nicht technologischer Natur, sondern ein strukturelles Paradoxon.\nEine Ära, in der jeder zur 8. Station des Mount Fuji gelangen kann. Aber die wahre Herausforderung beginnt erst ab dort.\nUnd wenn wir den Gipfel erreichen, könnte eine Zukunft auf uns warten, in der wir uns fragen: \u0026ldquo;Mussten wir den Berg wirklich besteigen?\u0026rdquo;\n","date":"2025-07-20T21:52:42+09:00","image":"http://kenji.blog/p/ai%E9%96%8B%E7%99%BA%E3%81%AE%E5%A3%81/img_1_hu929f602c53dcc1c0d00e8a53b025b29e_1978511_120x120_fill_box_smart1_3.png","permalink":"http://kenji.blog/de/p/die-barriere-der-ki-entwicklung/","title":"Die Barriere der KI-Entwicklung"},{"content":"🎯 Aufruf von Microsoft.Windows.AI aus C++ [Mit Beispielcode] Seit Windows 10 verfügt Windows standardmäßig über eine Laufzeitumgebung, die KI-Modelle im ONNX-Format ausführen kann. Das ist Windows ML (Windows.AI.MachineLearning).\nIn diesem Artikel wird konkret mit Beispielcode erklärt, wie Sie Microsoft.Windows.AI.MachineLearning aus C++ (Win32-App-Basis) aufrufen können.\n✅ Vorbereitung ◾ Systemanforderungen Windows 10 (1809+) oder Windows 11 Visual Studio 2019 oder neuer (Community-Edition ist in Ordnung) C++/WinRT-Unterstützung (Microsoft.Windows.CppWinRT) Windows SDK 10.0.17763.0 oder höher ✅ Projektstruktur Erstellen Sie in Visual Studio ein Projekt mit der folgenden Struktur:\nTyp: C++ Windows Desktop-Anwendung (Leeres Projekt)\nSubsystem: Windows (WinMain)\nFügen Sie das folgende Paket über NuGet hinzu:\n1 Microsoft.Windows.CppWinRT ✅ Beispielcode Das Folgende ist ein Minimalbeispiel, das WinMain verwendet und die Win32-API mit Windows.AI.MachineLearning kombiniert.\n※ Gehen Sie davon aus, dass das verwendete ONNX-Modell model.onnx ist, und legen Sie es im selben Ordner wie die ausführbare Datei ab.\nmain.cpp 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 #include \u0026lt;windows.h\u0026gt; #include \u0026lt;winrt/Windows.AI.MachineLearning.h\u0026gt; #include \u0026lt;winrt/Windows.Storage.h\u0026gt; #pragma comment(lib, \u0026#34;windowsapp\u0026#34;) // Für WinRT-Verknüpfung using namespace winrt; using namespace Windows::AI::MachineLearning; using namespace Windows::Storage; int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE, LPSTR, int nCmdShow) { // WinRT-Initialisierung (MTA oder STA ist in Ordnung) winrt::init_apartment(); try { // Modelldatei laden auto modelFile = StorageFile::GetFileFromPathAsync(L\u0026#34;model.onnx\u0026#34;).get(); LearningModel model = LearningModel::LoadFromStorageFileAsync(modelFile).get(); // Sitzung erstellen LearningModelSession session(model); LearningModelBinding binding(session); // Modellein- und -ausgabe (hier vorübergehend leere Eingabe) // In der Praxis ist eine Bindung z.B. mit TensorFloat erforderlich // Inferenz ausführen auto result = session.EvaluateAsync(binding, L\u0026#34;\u0026#34;).get(); MessageBox(nullptr, L\u0026#34;Inferenz abgeschlossen\u0026#34;, L\u0026#34;Windows ML (C++)\u0026#34;, MB_OK); } catch (winrt::hresult_error const\u0026amp; ex) { MessageBox(nullptr, ex.message().c_str(), L\u0026#34;Fehler\u0026#34;, MB_ICONERROR); } return 0; } ✅ Ergänzung: Wie man Eingabe- und Ausgabe-Tensoren angibt Je nach Modell ist es erforderlich, vor der Inferenz Tensoren zu erstellen und zu binden.\nBeispiel:\n1 2 3 4 5 6 7 8 // 1D-Float-Array in Tensor umwandeln std::vector\u0026lt;float\u0026gt; inputData = {0.5f, 0.3f, 0.2f}; std::vector\u0026lt;int64_t\u0026gt; shape = {1, 3}; // Form: [1, 3] auto tensor = TensorFloat::CreateFromArray(shape, inputData); // Eingabebindung (muss mit dem Eingabenamen des Modells übereinstimmen) binding.Bind(L\u0026#34;input_0\u0026#34;, tensor); Die Ausgabe kann auf ähnliche Weise mit result.Outputs().Lookup(L\u0026quot;output_0\u0026quot;) abgerufen werden.\n✅ Hinweise zum Debuggen Wenn die Modelldatei nicht im Ausführungsordner vorhanden ist, wird eine FileNotFoundException ausgelöst. Wenn die Eingabe-/Ausgabenamen nicht übereinstimmen, tritt ein invalid_argument-Fehler auf. Die genauen IO-Spezifikationen des Modells können mit Tools wie Netron überprüft werden. ✅ Zusammenfassung Element Inhalt Verwendete API Windows.AI.MachineLearning (WinRT) Sprache C++ (Win32-Basis) Empfohlene Methode Über C++/WinRT-Header Vorteile ONNX-Modelle laufen nativ, GPU-Unterstützung ist ebenfalls möglich Vorsicht Achten Sie auf die Eingabenamen des Modells und die Tensorformen ✅ Alternative: Für diejenigen, die WinRT nicht verwenden möchten Durch die Verwendung der ONNX Runtime von Microsoft können Sie ONNX-Modelle vollständig ohne WinRT aus C++ heraus behandeln. Es ist plattformübergreifend, was gemeinsamen Code auf Windows/Linux ermöglicht. 📌 Fazit Windows ML (Microsoft.Windows.AI) ist eine leistungsstarke KI-Inferenz-Engine, die robust von C++ aus verwendet werden kann. Wenn Sie native Inferenzen auf Windows benötigen, probieren Sie es aus.\nWenn Sie konkrete Beispiele für die Erstellung von ONNX-Modellen und das Tensor-Binding wünschen, wird dies in einem kommenden Artikel behandelt!\n","date":"2025-07-19T10:03:51+09:00","image":"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_hub9c7b00735e02a7f33c50dd8006e2228_376811_120x120_fill_box_smart1_3.png","permalink":"http://kenji.blog/de/p/so-rufen-sie-microsoft-windows-ai-aus-cpp-auf/","title":"So rufen Sie Microsoft.Windows.AI aus C++ auf"},{"content":"✅ Einrichtung von TinyLLaMA × C++ (mit llama.cpp) 🔧 Schritt 1: llama.cpp vorbereiten 1-1. Erforderliche Umgebung (Minimum) OS: Windows / Linux / macOS Entwicklungsumgebung: g++ / clang / MSVC Git / CMake 1-2. llama.cpp abrufen und kompilieren 1 2 3 4 5 6 git clone https://github.com/ggerganov/llama.cpp cd llama.cpp mkdir build cd build cmake .. cmake --build . --config Release Unter Windows ist es am einfachsten, die Visual Studio Developer Command Prompt mit cmake --build . --config Release zu verwenden.\n📦 Schritt 2: TinyLLaMA-Modell herunterladen und konvertieren 2-1. Originalmodell von HuggingFace beziehen Beispiel: TinyLLaMA-1.1B\n1 2 3 4 5 6 7 # Falls erforderlich, transformers zum Herunterladen verwenden pip install transformers huggingface_hub python3 -m transformers.models.llama.convert_llama_weights_to_hf \\ --input_dir ./TinyLlama-1.1B-Chat \\ --model_size 1B \\ --output_dir ./hf_model Dies ist der Schritt zur Konvertierung in das Hugging Face-Format.\n2-2. In das GGUF-Format konvertieren (für llama.cpp) 1 2 cd llama.cpp python3 convert.py ./hf_model --outfile tinyllama.gguf 2-3. Modellquantisierung (Größenreduzierung) 1 ./quantize ./tinyllama.gguf ./tinyllama-q4.gguf q4_0 q4_0 steht für 4-Bit-Quantisierung. Die Modellgröße schrumpft auf etwa ** 350MB ** .\n🧪 Schritt 3: Das Modell aus C++ aufrufen (Codebeispiel) 3-1. Einfacher C++-Code (Inferenz) 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 #include \u0026#34;llama.h\u0026#34; #include \u0026lt;iostream\u0026gt; int main() { llama_model_params model_params = llama_model_default_params(); llama_context_params ctx_params = llama_context_default_params(); llama_model *model = llama_load_model_from_file(\u0026#34;tinyllama-q4.gguf\u0026#34;, model_params); llama_context *ctx = llama_new_context_with_model(model, ctx_params); std::string prompt = \u0026#34;Der Benutzer sagt, dass er Excel-Daten laden, filtern und speichern möchte. Wie sieht die Knotenkonfiguration aus?\u0026#34;; llama_batch batch = llama_batch_init(512, 0, 1); llama_token BOS = llama_token_bos(model); batch.token[0] = BOS; // Tokenisierung std::vector\u0026lt;llama_token\u0026gt; tokens(prompt.size() + 8); int n = llama_tokenize(model, prompt.c_str(), tokens.data(), tokens.size(), true); tokens.resize(n); for (size_t i = 0; i \u0026lt; tokens.size(); ++i) { batch.token[i + 1] = tokens[i]; } batch.n_tokens = tokens.size() + 1; llama_decode(ctx, batch); // Inferenz-Ergebnis abrufen for (int i = 0; i \u0026lt; 50; ++i) { llama_token next = llama_sample_token(ctx, nullptr); std::cout \u0026lt;\u0026lt; llama_token_to_str(model, next); llama_batch next_batch = llama_batch_init(1, 0, 1); next_batch.token[0] = next; next_batch.n_tokens = 1; llama_decode(ctx, next_batch); } llama_free(ctx); llama_free_model(model); return 0; } 🧱 Schritt 4: Kompilierungsmethode (Beispiel) 1 g++ -I./llama.cpp main.cpp ./llama.cpp/build/libllama.a -o tiny_infer -pthread -std=c++11 libllama.a wird nach der Erstellung im Verzeichnis build/ generiert.\n✅ Beispiel für die Struktur der Artefakte (Organisation) 1 2 3 4 5 6 my_app/ ├── tinyllama-q4.gguf # Quantisiertes Modell (~350MB) ├── main.cpp # Obiger C++-Code ├── llama.cpp/ # llama.cpp-Quellcode └── build/ └── libllama.a # Kompilierte Bibliothek 🧠 Zusätzliche Hinweise zur Anwendung auf Anwendungsfälle Code in C++ einbauen, um die Ausgabe entgegenzunehmen und Knoten-Templates abzugleichen/auszuwählen. Beispiel: Wenn \u0026ldquo;Excel\u0026rdquo;, \u0026ldquo;Filter\u0026rdquo;, \u0026ldquo;Speichern\u0026rdquo; enthalten sind → entsprechende Knotengruppen generieren. Dieser Teil kann mit einer einfachen Struktur wie if-Anweisungen + Laden von JSON-Vorlagen umgesetzt werden. 📌 Zusammenfassung Element Beschreibung Empfohlenes Modell TinyLLaMA-1.1B-Chat v1.0 (GGUF + Quantisierung) Größe ~350 bis 450MB (4-Bit-Quantisierung) C++-Integration Möglich durch llama.cpp, fast keine externen Abhängigkeiten Verarbeitungsleistung Ausreichend für einfache Intentionserkennung und Satzgenerierung (Natürliche Sprache → Struktur) Erweiterbarkeit Kann durch Kombination mit Slot-Filling und Template-Aufrufen zu einer KI für Knotengenerierung werden ","date":"2025-07-19T09:40:53+09:00","image":"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_huf78e5769214ace33fee09d1baa98793b_1915663_120x120_fill_box_smart1_3.png","permalink":"http://kenji.blog/de/p/schritte-um-tinyllama-aus-c-aufzurufen-unter-verwendung-von-llama.cpp/","title":"Schritte, um TinyLLaMA aus C++ aufzurufen (unter Verwendung von llama.cpp)"},{"content":"✅ Methode zum Posten mit einem Access Token (Slack Web API) Das \u0026ldquo;OAuth Token\u0026rdquo; (wie xoxb-\u0026hellip;) von Slack ist ein Schlüssel, um Nachrichten über die Web API von Slack zu posten. In diesem Fall senden Sie im Gegensatz zu einem Webhook eine POST-Anfrage an den Slack API-Endpunkt mit einem Authorization: Bearer-Header.\n🔑 Notwendige Voraussetzungen Sie müssen chat:write in den OAuth-Scopes der Slack-App aufnehmen:\nEinrichtungsprozess Gehen Sie zu https://api.slack.com/apps Erstellen Sie eine App oder wählen Sie eine bestehende aus Unter \u0026ldquo;OAuth \u0026amp; Permissions\u0026rdquo; \u0026gt; Scopes → Fügen Sie chat:write hinzu Klicken Sie auf \u0026ldquo;Install to Workspace\u0026rdquo; oder \u0026ldquo;Reinstall\u0026rdquo; und holen Sie sich das Access Token (z.B. xoxb-xxxxxxxxxx) 💻 C++ Code (Posten in der Slack API mit WinHTTP) 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 #include \u0026lt;windows.h\u0026gt; #include \u0026lt;winhttp.h\u0026gt; #include \u0026lt;iostream\u0026gt; #pragma comment(lib, \u0026#34;winhttp.lib\u0026#34;) bool PostSlackMessage(const std::wstring\u0026amp; accessToken, const std::string\u0026amp; channel, const std::string\u0026amp; text) { const wchar_t* host = L\u0026#34;slack.com\u0026#34;; const wchar_t* path = L\u0026#34;/api/chat.postMessage\u0026#34;; HINTERNET hSession = WinHttpOpen(L\u0026#34;SlackPoster/1.0\u0026#34;, WINHTTP_ACCESS_TYPE_DEFAULT_PROXY, WINHTTP_NO_PROXY_NAME, WINHTTP_NO_PROXY_BYPASS, 0); if (!hSession) return false; HINTERNET hConnect = WinHttpConnect(hSession, host, INTERNET_DEFAULT_HTTPS_PORT, 0); if (!hConnect) return false; HINTERNET hRequest = WinHttpOpenRequest(hConnect, L\u0026#34;POST\u0026#34;, path, NULL, WINHTTP_NO_REFERER, WINHTTP_DEFAULT_ACCEPT_TYPES, WINHTTP_FLAG_SECURE); // Authorization-Header und Content-Type std::wstring headers = L\u0026#34;Content-Type: application/json\\r\\n\u0026#34;; headers += L\u0026#34;Authorization: Bearer \u0026#34; + accessToken + L\u0026#34;\\r\\n\u0026#34;; // JSON-Body std::string body = R\u0026#34;({\u0026#34;channel\u0026#34;:\u0026#34;)\u0026#34; + channel + R\u0026#34;(\u0026#34;,\u0026#34;text\u0026#34;:\u0026#34;)\u0026#34; + text + R\u0026#34;(\u0026#34;})\u0026#34;; BOOL result = WinHttpSendRequest(hRequest, headers.c_str(), (DWORD)-1, (LPVOID)body.c_str(), body.length(), body.length(), 0); if (!result || !WinHttpReceiveResponse(hRequest, NULL)) { std::cerr \u0026lt;\u0026lt; \u0026#34;Sende-Fehler\\n\u0026#34;; return false; } // Überprüfung des Statuscodes DWORD statusCode = 0; DWORD size = sizeof(statusCode); WinHttpQueryHeaders(hRequest, WINHTTP_QUERY_STATUS_CODE | WINHTTP_QUERY_FLAG_NUMBER, WINHTTP_HEADER_NAME_BY_INDEX, \u0026amp;statusCode, \u0026amp;size, WINHTTP_NO_HEADER_INDEX); WinHttpCloseHandle(hRequest); WinHttpCloseHandle(hConnect); WinHttpCloseHandle(hSession); return (statusCode == 200); } int main() { std::wstring token = L\u0026#34;xoxb-dein_access_token\u0026#34;; // Access Token std::string channel = \u0026#34;KANAL_ID_oder_#general\u0026#34;; // Z.B.: \u0026#34;#general\u0026#34; oder \u0026#34;C0123456789\u0026#34; std::string message = \u0026#34;Test zum Posten in Slack mit C++!\u0026#34;; if (PostSlackMessage(token, channel, message)) { std::cout \u0026lt;\u0026lt; \u0026#34;Erfolgreich gepostet!\\n\u0026#34;; } else { std::cerr \u0026lt;\u0026lt; \u0026#34;Posten fehlgeschlagen.\\n\u0026#34;; } return 0; } 📌 Wie man die Kanal-ID erhält Die alleinige Verwendung des Kanalnamens (z.B. #general) kann zu einem Fehler führen. Die zuverlässige Methode besteht darin, die ID zu verwenden, die in der URL der Slack-Kanalseite steht.\n1 2 https://app.slack.com/client/Txxxxx/C0123456789 ↑Dieser Teil ist die Kanal-ID ✅ Über Token-Arten (Ergänzung) Token-Format Verwendung Beispiel xoxb-... Bot Token (Empfohlen) Posten, Bearbeiten, Löschen xoxp-... User Token (Nicht empfohlen) Nicht-Bot-bezogene Vorgänge Refresh Token Für langfristige Token-Erneuerung Wird normalerweise nicht verwendet 📝 Zusammenfassung Um von C++ aus auf Slack zu posten, ist die Methode Slack Web API + Bearer Token zuverlässig Verwenden Sie den chat.postMessage-Endpunkt mit HTTPS POST Das Token muss im Bearer-Header gesendet werden Die Angabe der Kanal-ID ist zuverlässig ","date":"2025-07-16T23:36:27+09:00","image":"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_huc0fc953b24035d17918192b772178b43_75467_120x120_fill_box_smart1_3.png","permalink":"http://kenji.blog/de/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/","title":"Wie man eine Nachricht in Slack mit Slack App + OAuth2 postet"},{"content":"Wie man Nachrichten in Slack mit C++ (Win32 API + WinHTTP) postet 【Webhook-Unterstützung】 Ich möchte eine Nachricht von C++ an Slack senden. Das ist bei Node.js oder Python sehr üblich, aber Fälle mit „C++ × Win32 API × WinHTTP“ sind eher selten.\nIn diesem Artikel erkläre ich Schritt für Schritt und leicht verständlich, wie man mithilfe einer Webhook-URL Nachrichten von C++ an Slack sendet .\n✅ Gesamtablauf Um in Slack zu posten, befolgen Sie diese Schritte:\nHolen Sie sich die Slack Webhook-URL (API-Schlüssel) Senden Sie eine POST-Anfrage mit WinHTTP Erstellen Sie den Nachrichtentext im JSON-Format Überprüfen Sie das Ergebnis und fertig! 🔑 Schritt 1: So erhalten Sie die Slack Webhook-URL Mit einer Funktion namens Incoming Webhooks in Slack können Sie ganz einfach Nachrichten von externen Diensten posten.\nSchritte zur Beschaffung Besuchen Sie https://api.slack.com/apps Klicken Sie auf Create New App Wählen Sie From scratch, legen Sie den App-Namen fest und wählen Sie den Ziel-Workspace Wählen Sie im linken Menü \u0026ldquo;Incoming Webhooks\u0026rdquo; und aktivieren Sie es Klicken Sie auf \u0026ldquo;Add New Webhook to Workspace\u0026rdquo; und wählen Sie einen Kanal Kopieren Sie die generierte URL (z. B. https://hooks.slack.com/services/xxx/yyy/zzz) Diese URL fungiert wie ein API-Schlüssel.\n💻 Schritt 2: Nachricht an Slack senden mit C++ Code Verwendete Technologien Win32 API WinHTTP (Standardbibliothek) Nachricht im JSON-Format Beispielcode (Slack Post) 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 #include \u0026lt;windows.h\u0026gt; #include \u0026lt;winhttp.h\u0026gt; #include \u0026lt;iostream\u0026gt; #pragma comment(lib, \u0026#34;winhttp.lib\u0026#34;) bool PostToSlack(const std::wstring\u0026amp; webhookUrl, const std::string\u0026amp; messageJson) { // URL aufteilen URL_COMPONENTS urlComp{}; wchar_t hostName[256]; wchar_t urlPath[1024]; urlComp.dwStructSize = sizeof(urlComp); urlComp.lpszHostName = hostName; urlComp.dwHostNameLength = _countof(hostName); urlComp.lpszUrlPath = urlPath; urlComp.dwUrlPathLength = _countof(urlPath); if (!WinHttpCrackUrl(webhookUrl.c_str(), 0, 0, \u0026amp;urlComp)) { std::wcerr \u0026lt;\u0026lt; L\u0026#34;URL konnte nicht aufgeteilt werden\\n\u0026#34;; return false; } // HTTP-Sitzung und Verbindung HINTERNET hSession = WinHttpOpen(L\u0026#34;SlackPoster/1.0\u0026#34;, WINHTTP_ACCESS_TYPE_DEFAULT_PROXY, WINHTTP_NO_PROXY_NAME, WINHTTP_NO_PROXY_BYPASS, 0); HINTERNET hConnect = WinHttpConnect(hSession, hostName, urlComp.nPort, 0); HINTERNET hRequest = WinHttpOpenRequest(hConnect, L\u0026#34;POST\u0026#34;, urlPath, NULL, WINHTTP_NO_REFERER, WINHTTP_DEFAULT_ACCEPT_TYPES, WINHTTP_FLAG_SECURE); std::wstring headers = L\u0026#34;Content-Type: application/json\\r\\n\u0026#34;; BOOL result = WinHttpSendRequest(hRequest, headers.c_str(), -1, (LPVOID)messageJson.c_str(), messageJson.length(), messageJson.length(), 0); if (!result) { std::cerr \u0026lt;\u0026lt; \u0026#34;Sendeanfrage fehlgeschlagen\\n\u0026#34;; return false; } WinHttpReceiveResponse(hRequest, NULL); DWORD statusCode = 0; DWORD size = sizeof(statusCode); WinHttpQueryHeaders(hRequest, WINHTTP_QUERY_STATUS_CODE | WINHTTP_QUERY_FLAG_NUMBER, WINHTTP_HEADER_NAME_BY_INDEX, \u0026amp;statusCode, \u0026amp;size, WINHTTP_NO_HEADER_INDEX); // Ressourcen freigeben WinHttpCloseHandle(hRequest); WinHttpCloseHandle(hConnect); WinHttpCloseHandle(hSession); return (statusCode == 200); } int main() { std::wstring webhookUrl = L\u0026#34;https://hooks.slack.com/services/xxx/yyy/zzz\u0026#34;; // Durch Ihren eigenen Webhook ersetzen std::string message = R\u0026#34;({ \u0026#34;text\u0026#34;: \u0026#34;Hello from C++ :rocket:\u0026#34;, \u0026#34;username\u0026#34;: \u0026#34;C++ Bot\u0026#34;, \u0026#34;icon_emoji\u0026#34;: \u0026#34;:robot_face:\u0026#34; })\u0026#34;; if (PostToSlack(webhookUrl, message)) { std::cout \u0026lt;\u0026lt; \u0026#34;Erfolgreich gepostet!\\n\u0026#34;; } else { std::cerr \u0026lt;\u0026lt; \u0026#34;Posten fehlgeschlagen.\\n\u0026#34;; } return 0; } 🧪 JSON-Nachricht anpassen Bei Slack-Webhooks können Sie folgende Parameter einbeziehen:\n1 2 3 4 5 6 { \u0026#34;text\u0026#34;: \u0026#34;Benachrichtigungsinhalt\u0026#34;, \u0026#34;username\u0026#34;: \u0026#34;Bot-Name\u0026#34;, \u0026#34;icon_emoji\u0026#34;: \u0026#34;:rocket:\u0026#34;, \u0026#34;channel\u0026#34;: \u0026#34;#BeliebigerKanalname\u0026#34; } 📌 Ergänzende Hinweise Stellen Sie sicher, dass Sie als Content-Type \u0026quot;application/json\u0026quot; angeben Die Webhook-URL wird direkt als wstring übergeben (URL-Codierung nicht erforderlich) Da es sich um HTTPS-Kommunikation handelt, vergessen Sie nicht WINHTTP_FLAG_SECURE 🎉 Bonus: Beispiel für eine gepostete Nachricht in Slack In Slack wird es so angezeigt:\n1 2 [C++ Bot] Hello from C++ :rocket: ✍️ Zusammenfassung Element Inhalt Post-Methode Webhook (Incoming Webhooks) Kommunikationsbibliothek WinHTTP Datenformat JSON Verwendbare Parameter text, username, icon_emoji, channel usw. Selbst wenn Sie dachten „Slack-Integration mit C++\u0026hellip;?“, können Sie ab heute einen Benachrichtigungs-Bot einbauen!\n🚀 Vorschau auf das nächste Mal? Wenn Sie interessiert sind, zeige ich das nächste Mal:\nDatei anhängen UI mit Buttons Flexible API-Bedienung mit Slack App + OAuth2 und wir können Ihnen einen weiteren Schritt der Slack-Integration vorstellen!\n","date":"2025-07-16T19:42:56+09:00","image":"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_huc0fc953b24035d17918192b772178b43_75467_120x120_fill_box_smart1_3.png","permalink":"http://kenji.blog/de/p/wie-man-nachrichten-in-slack-mit-cpp-win32api-winhttp-postet/","title":"Wie man Nachrichten in Slack mit C++ (Win32 API + WinHTTP) postet 【Webhook-Unterstützung】"},{"content":"Market-in und Product-out Hallo, hier ist kenji.\nManchmal in Business-Büchern oder Projektvorschlägen,\n\u0026ldquo;Unsere Strategie ist Market-in.\u0026rdquo; \u0026ldquo;Das ist eher vom Typ Product-out.\u0026rdquo;\nSehe ich Leute solche Dinge sagen, aber\u0026hellip;\nMoment, Market-in? Product-out? Was ist besser???\nFragt man sich das nicht?\nDeshalb werde ich dieses Mal versuchen, dieses \u0026ldquo;Market-in\u0026rdquo; und \u0026ldquo;Product-out\u0026rdquo; so einfach wie möglich und mit einem leicht kritischen Blick zu erklären.\nKurz gesagt\u0026hellip; Market-in : Auf die Stimme des Marktes (Market) hören und Produkte entwickeln, die ihr entsprechen. Product-out : Das erschaffen, was wir für gut halten (Product), und es in die Welt setzen. Das ist alles. Sehr simpel.\nZum Beispiel in einem Ramen-Restaurant\u0026hellip; Ein Market-in-Ramen-Restaurant würde sagen: \u0026ldquo;Iekei-Ramen sind in letzter Zeit sehr beliebt. Alles klar, lass uns viel Fett und Knoblauch nehmen!\u0026rdquo;\nEin Product-out-Ramen-Restaurant würde sagen: \u0026ldquo;Diese Sojamilch-Basilikum-Salz-Ramen, die ich gemacht habe, sind wirklich unglaublich, also iss sie!\u0026rdquo;\nWas ist die richtige Antwort\u0026hellip; beide haben Recht Market-in hat eine \u0026ldquo;hohe Verkaufswahrscheinlichkeit\u0026rdquo;, weil es nah an den Kundenbedürfnissen ist, aber es ist schwer, bahnbrechende Ideen oder Durchbrüche zu generieren.\nBei Product-out geht es darum, \u0026ldquo;der Gerechtigkeit, an die wir glauben, Gestalt zu verleihen\u0026rdquo;, daher ist es kantig und attraktiv, aber wenn man danebenliegt, wird es niemanden ansprechen.\nDas iPhone wirkt wie Product-out In einer Zeit, in der die Leute sagten \u0026ldquo;Wir brauchen keine Smartphones\u0026rdquo;, brachte Apple das iPhone heraus.\nDas ist ein absolutes Product-out Erfolgsbeispiel.\nHätten sie auf die Stimme der Nutzer gehört, hätte es geheißen \u0026ldquo;Ein Handy ohne Tastatur? Unmöglich\u0026rdquo; und das wäre es gewesen.\nAber Product-out wird schnell zur \u0026ldquo;Selbstzufriedenheit\u0026rdquo; Manchmal sagen einige Unternehmen oder Leute: \u0026ldquo;Wir sind vom Typ Product-out\u0026rdquo;, aber\u0026hellip;\nMoment, ist das nicht einfach nur das Ignorieren des Nutzers?\nManchmal denke ich das.\n\u0026ldquo;Wir haben es gemacht, weil wir es machen wollten. Aber es hat sich nicht verkauft.\u0026rdquo; Das ist kein Product-out, das ist \u0026ldquo;Ego-out\u0026rdquo;.\nAuch Market-in hat seine Tücken Andererseits ist Market-in auch nicht allmächtig.\nWenn man sagt: \u0026ldquo;Wir machen alles, was die Nutzer verlangen!\u0026rdquo;, gerät der Kern des Produkts ins Wanken und zieht letztendlich niemanden an.\nMan fügt immer mehr Funktionen hinzu, und bevor man es merkt, ist es zu einem chaotischen Tool geworden.\nWirklich großartig sind \u0026ldquo;diejenigen, die beides tun\u0026rdquo; Großartige Produkte präsentieren auf brillante Weise \u0026ldquo;das, was die Nutzer wirklich wollten, aber nicht in Worte fassen konnten\u0026rdquo;.\nMit anderen Worten, \u0026ldquo;die Empathie von Market-in mit der Denkweise von Product-out erlangen\u0026rdquo;.\nDas ist leicht gesagt, aber extrem schwer umzusetzen. Aber wenn man das schafft, wird es sofort zu einem \u0026ldquo;Gott-Produkt\u0026rdquo;.\nFazit: Mehr als Worte zählt die Reaktion der Nutzer Market-in oder Product-out. Was das Richtige ist, ist eine ziemlich bedeutungslose Frage.\n\u0026ldquo;Hat es wirklich die Herzen der Nutzer erreicht?\u0026rdquo; das ist alles , was zählt, denke ich.\n\u0026ldquo;Mit welcher Art von Strategie wir arbeiten\u0026rdquo; Ich denke, es reicht völlig aus, wenn man das später in seine Marketingmaterialien schreiben kann.\nDas war also die Geschichte von Market-in und Product-out!\nIch denke, es ist am gesündesten, sich nicht von komplizierten Fremdwörtern ablenken zu lassen und sich zu überlegen: \u0026ldquo;Wie können wir die Leute letztendlich glücklich machen?\u0026rdquo;.\nBis dann~.\n","date":"2025-07-15T20:18:22+09:00","image":"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_hu9af708a897f548be4a7980daec441f8f_1946278_120x120_fill_box_smart1_3.png","permalink":"http://kenji.blog/de/p/market-in-and-product-out/","title":"Market-in und Product-out"},{"content":"\u0026ldquo;Stimmt es, dass jede Zahl am Ende zu 1 wird?\u0026rdquo; ── Spielen mit der Collatz-Vermutung Hallo! Hier ist kenji.\nWenn man plötzlich hört \u0026ldquo;eine Regel, bei der jede Zahl schließlich zu 1 wird\u0026rdquo;, klingt das nicht ein bisschen seltsam?\nZum Beispiel 19, 87 oder auch 1000000. Wenn man die Zahlen nach einer bestimmten Regel manipuliert, konvergieren sie aus irgendeinem Grund am Ende gegen \u0026ldquo;1\u0026rdquo;.\nDiese traumhafte Geschichte ist die ** Collatz-Vermutung (Collatz Conjecture) **.\nWas ist die Collatz-Vermutung eigentlich? Zuerst stelle ich die Regeln vor.\nStart: Wähle eine beliebige ** positive ganze Zahl **.\nOperation:\nWenn sie gerade ist → halbiere sie (n → n / 2) Wenn sie ungerade ist → multipliziere mit 3 und addiere 1 (n → 3n + 1) Wenn man dies immer wieder wiederholt, ist es eine Vermutung, dass ** jede Zahl schließlich 1 erreicht **.\nZum Beispiel, beginnend mit 6:\n1 6 → 3 → 10 → 5 → 16 → 8 → 4 → 2 → 1 Es wurde ordentlich \u0026ldquo;1\u0026rdquo;. Willkommen zurück!\nMachen wir es mit Code: Collatz in Python Nun, in solchen Zeiten ist es schneller, mit Code zu testen! Lassen Sie uns die \u0026ldquo;Collatz-Folge\u0026rdquo; in Python ausgeben.\n1 2 3 4 5 6 7 8 9 10 11 12 def collatz(n): steps = [n] while n != 1: if n % 2 == 0: n = n // 2 else: n = 3 * n + 1 steps.append(n) return steps # Beispiel: beginnend mit 19 print(collatz(19)) Bei Ausführung:\n1 [19, 58, 29, 88, 44, 22, 11, 34, 17, 52, 26, 13, 40, 20, 10, 5, 16, 8, 4, 2, 1] Es erreicht brillant die 1. Obwohl es viele Umwege macht, erreicht es am Ende das Ziel!\nÜbrigens, wenn Sie mit 29 beginnen, werden Sie auf die gleiche Weise 1 erreichen.\n1 print(collatz(29)) Bei Ausführung\n1 2 3 4 5 6 7 8 [27, 82, 41, 124, 62, 31, 94, 47, 142, 71, 214, 107, 322, 161, 484, 242, 121, 364, 182, 91, 274, 137, 412, 206, 103, 310, 155, 466, 233, 700, 350, 175, 526, 263, 790, 395, 1186, 593, 1780, 890, 445, 1336, 668, 334, 167, 502, 251, 754, 377, 1132, 566, 283, 850, 425, 1276, 638, 319, 958, 479, 1438, 719, 2158, 1079, 3238, 1619, 4858, 2429, 7288, 3644, 1822, 911, 2734, 1367, 4102, 2051, 6154, 3077, 9232, 4616, 2308, 1154, 577, 1732, 866, 433, 1300, 650, 325, 976, 488, 244, 122, 61, 184, 92, 46, 23, 70, 35, 106, 53, 160, 80, 40, 20, 10, 5, 16, 8, 4, 2, 1] Wow, es dauert 111 Schritte!\nUnd es gibt auch Szenen, in denen es unterwegs auf über 9000 anschwillt. Es ist ein Muster, bei dem man einen verrückten Umweg macht, bevor man das Ziel erreicht.\nUnd, was ist daran so toll? Das Tolle an dieser Vermutung ist,\n** Obwohl es nicht bewiesen ist, scheint es, dass jede Zahl, die man versucht, zu 1 wird **\nDas ist es.\nÄh? Und was ist mit 1 Billion oder 10 Billiarden\u0026hellip;?\nFür diejenigen, die so dachten: sehr scharfsinnig. Tatsächlich wurde es mit Computern bis zu etwa \u0026ldquo;2 hoch 68\u0026rdquo;, und ** alle haben 1 erreicht **. Unglaublich\u0026hellip;\nAber ** es wurde nicht theoretisch bewiesen, dass \u0026ldquo;alle so sein werden\u0026rdquo; **. Das ist ein sogenanntes \u0026ldquo;ungelöstes Problem\u0026rdquo; in der Welt der Mathematik.\nWer ist Herr Collatz? Wenn Sie bis hierher gelesen haben, fragen Sie sich wahrscheinlich: \u0026ldquo;Wer ist Collatz eigentlich?\u0026rdquo;. Ich werde ihn richtig vorstellen!\nName: ** Lothar Collatz (Lothar Collatz) ** Nationalität: Deutschland Geburtsjahr: 1910 bis 1990 Titel: Mathematiker (aktiv in den Bereichen Funktionalanalysis und Zahlentheorie) Er schlug diese Vermutung 1937 vor, und seither, seit über 80 Jahren, ** konnte niemand sie beweisen oder widerlegen **.\nÜbrigens ist dieses Problem so einfach und doch so tiefgründig, dass selbst Paul Erdős (super berühmter Mathematiker) so etwas sagte.\n\u0026ldquo;Die Mathematik ist noch nicht reif für die Collatz-Vermutung\u0026rdquo;\nMit anderen Worten, die Theorie, dass die Mathematik der Menschheit dieses Mysterium noch nicht eingeholt hat\u0026hellip;\n\u0026ldquo;Schwierige mathematische Formeln\u0026rdquo; sind nicht erforderlich Das Gute an der Collatz-Vermutung ist, dass ** jeder mitspielen kann **.\nMan kann es mit Papier und Stift machen. Wenn man den Code in Python schreibt, kann man ihn automatisch testen. Und dennoch ** nehmen ihn Spitzenmathematiker ernst **.\nIrgendwie aufregend, nicht wahr?\nBonus: Code, um alles auf einmal zu testen Ich werde auch einen Code posten, um verschiedene Zahlen gleichzeitig zu testen.\n1 2 3 for n in range(1, 21): steps = collatz(n) print(f\u0026#34;{n}: {steps} (Schritte: {len(steps)-1})\u0026#34;) Dadurch erhalten wir die Collatz-Folgen von \u0026ldquo;1 bis 20\u0026rdquo; auf einmal.\nFazit: Diese Welt ist doch mysteriös Das ist also die Collatz-Vermutung.\nObwohl es super einfach ist Niemand kann es beweisen Ein großes Problem in der Welt der Mathematik Es war eine Existenz wie eine Masse von Mysterien.\nSogar Programmieranfänger können es versuchen, also spielen Sie bitte damit!\nEmpfohlene Links (für Interessierte) Wikipedia: Collatz-Vermutung Terence Tao Paper (Englisch) Es macht auch Spaß, eine visualisierte Version in Python zu erstellen! (Ich werde eine machen, wenn es gewünscht wird) Wenn Sie mehr über dieses Material \u0026ldquo;Mysteriöse Mathematik x Programmierung\u0026rdquo; erfahren möchten, zögern Sie nicht, anzufragen und zu sagen: \u0026ldquo;Bring mir mehr bei\u0026rdquo;. Schließlich werde ich verschiedene Dinge wie die Riemann-Vermutung und Primzahlen vorstellen!\n📮Ende!\n","date":"2025-07-15T18:03:03+09:00","image":"http://kenji.blog/p/%E3%82%B3%E3%83%A9%E3%83%83%E3%83%84%E4%BA%88%E6%83%B3/img_hu1a59efae05835f74694145ebf674f295_4369684_120x120_fill_box_smart1_3.png","permalink":"http://kenji.blog/de/p/%E3%82%B3%E3%83%A9%E3%83%83%E3%83%84%E4%BA%88%E6%83%B3/","title":"コラッツ予想"},{"content":"Wie man Nachrichten von C++ an Microsoft Teams sendet (WinHTTP + Graph API) Sie möchten automatisch in einen Microsoft Teams-Chat posten —\nIn solchen Fällen können Sie die Microsoft Graph API verwenden.\nIn diesem Artikel stellen wir Schritt für Schritt ein C++-Codebeispiel mit WinHTTP sowie die erforderlichen API-Authentifizierungsschritte vor.\n🔧 Notwendige Vorbereitungen (Authentifizierungseinstellungen für die Microsoft Graph API) 1. App im Azure Portal registrieren Um die Microsoft Graph API nutzen zu können, müssen Sie zunächst eine App in Azure registrieren.\nBesuchen Sie das Azure Portal \u0026ldquo;Microsoft Entra ID\u0026rdquo; \u0026gt; \u0026quot;＋ Hinzufügen\u0026quot; \u0026gt; \u0026ldquo;App-Registrierungen\u0026rdquo; \u0026gt; \u0026ldquo;Neue Registrierung\u0026rdquo; Geben Sie einen beliebigen App-Namen ein und klicken Sie auf \u0026ldquo;Registrieren\u0026rdquo; 2. API-Berechtigungen hinzufügen Gehen Sie im linken Menü zu \u0026ldquo;API-Berechtigungen\u0026rdquo; Suchen Sie unter \u0026ldquo;Microsoft Graph\u0026rdquo; \u0026gt; \u0026ldquo;Berechtigungen auswählen\u0026rdquo; nach den folgenden Geltungsbereichen und klicken Sie auf \u0026ldquo;Berechtigungen aktualisieren\u0026rdquo; Chat.ReadWrite User.Read ※ Wenn Sie in einem Kanal posten möchten, ist auch ChannelMessage.Send erforderlich\n3. Client-ID und Mandanten-ID notieren Notieren Sie sich die folgenden zwei Werte, die auf der Registerkarte \u0026ldquo;Übersicht\u0026rdquo; angezeigt werden:\nAnwendungs-ID (Client-ID) Verzeichnis-ID (Mandanten-ID) 4. Einen geheimen Clientschlüssel erstellen Gehen Sie zur Registerkarte \u0026ldquo;Zertifikate \u0026amp; Geheimnisse\u0026rdquo; \u0026ldquo;Neuer geheimer Clientschlüssel\u0026rdquo; \u0026gt; Legen Sie ein Ablaufdatum fest und klicken Sie auf \u0026ldquo;Hinzufügen\u0026rdquo; Notieren Sie sich unbedingt sofort den angezeigten Wert (Geheimnis) 🔐 Zugriffstoken abrufen (OAuth2) Für den Abruf verwenden wir den Ablauf client_credentials.\nFühren Sie den folgenden Befehl mit curl aus, um ein Zugriffstoken zu erhalten.\n1 2 3 4 5 6 7 curl -X POST ^ https://login.microsoftonline.com/{Mandanten-ID}/oauth2/v2.0/token ^ -H \u0026#34;Content-Type: application/x-www-form-urlencoded\u0026#34; ^ -d \u0026#34;client_id={Client-ID}\u0026#34; ^ -d \u0026#34;scope=https%3A%2F%2Fgraph.microsoft.com%2F.default\u0026#34; ^ -d \u0026#34;client_secret={Geheimer-Clientschlüssel}\u0026#34; ^ -d \u0026#34;grant_type=client_credentials\u0026#34; Antwortbeispiel 1 2 3 4 5 6 { \u0026#34;token_type\u0026#34;:\u0026#34;Bearer\u0026#34;, \u0026#34;expires_in\u0026#34;:3599, \u0026#34;ext_expires_in\u0026#34;:3599, \u0026#34;access_token\u0026#34;: \u0026#34;eyJ0eXAiOiJKV1QiLCJub... (Ausgelassen)\u0026#34; } Verwenden Sie dieses access_token, um die Microsoft Graph API aufzurufen.\n💬 C++-Beispiel zum Posten im Teams-Chat Hier zeigen wir ein C++-Beispiel, das WinHTTP verwendet, um in einem Chat zu posten.\n1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 #include \u0026lt;windows.h\u0026gt; #include \u0026lt;winhttp.h\u0026gt; #include \u0026lt;iostream\u0026gt; #include \u0026lt;string\u0026gt; #pragma comment(lib, \u0026#34;winhttp.lib\u0026#34;) void PostToTeamsChat(const std::wstring\u0026amp; accessToken, const std::wstring\u0026amp; chatId, const std::wstring\u0026amp; message) { HINTERNET hSession = WinHttpOpen(L\u0026#34;TeamsPoster/1.0\u0026#34;, WINHTTP_ACCESS_TYPE_DEFAULT_PROXY, WINHTTP_NO_PROXY_NAME, WINHTTP_NO_PROXY_BYPASS, 0); HINTERNET hConnect = WinHttpConnect(hSession, L\u0026#34;graph.microsoft.com\u0026#34;, INTERNET_DEFAULT_HTTPS_PORT, 0); std::wstring endpoint = L\u0026#34;/v1.0/chats/\u0026#34; + chatId + L\u0026#34;/messages\u0026#34;; HINTERNET hRequest = WinHttpOpenRequest(hConnect, L\u0026#34;POST\u0026#34;, endpoint.c_str(), NULL, WINHTTP_NO_REFERER, WINHTTP_DEFAULT_ACCEPT_TYPES, WINHTTP_FLAG_SECURE); std::wstring jsonBody = L\u0026#34;{\\\u0026#34;body\\\u0026#34;: {\\\u0026#34;content\\\u0026#34;: \\\u0026#34;\u0026#34; + message + L\u0026#34;\\\u0026#34;}}\u0026#34;; std::wstring headers = L\u0026#34;Authorization: Bearer \u0026#34; + accessToken + L\u0026#34;\\r\\nContent-Type: application/json\\r\\n\u0026#34;; BOOL bResult = WinHttpSendRequest(hRequest, headers.c_str(), (DWORD)-1L, (LPVOID)jsonBody.c_str(), (DWORD)(jsonBody.length() * sizeof(wchar_t)), (DWORD)(jsonBody.length() * sizeof(wchar_t)), 0); if (bResult) WinHttpReceiveResponse(hRequest, NULL); DWORD dwSize = 0; WinHttpQueryDataAvailable(hRequest, \u0026amp;dwSize); if (dwSize \u0026gt; 0) { std::wstring response(dwSize / sizeof(wchar_t), 0); DWORD dwDownloaded = 0; WinHttpReadData(hRequest, \u0026amp;response[0], dwSize, \u0026amp;dwDownloaded); std::wcout \u0026lt;\u0026lt; L\u0026#34;Response: \u0026#34; \u0026lt;\u0026lt; response \u0026lt;\u0026lt; std::endl; } WinHttpCloseHandle(hRequest); WinHttpCloseHandle(hConnect); WinHttpCloseHandle(hSession); } int main() { std::wstring access; std::wstring chatId = L\u0026#34;19:\u0026#34;; std::wstring message = L\u0026#34;Hello from C++!\u0026#34;; std::wcout \u0026lt;\u0026lt; L\u0026#34;Enter your access token: \u0026#34;; std::getline(std::wcin, access); std::wcout \u0026lt;\u0026lt; L\u0026#34;Enter chat ID: \u0026#34;; std::getline(std::wcin, chatId); PostToTeamsChat(access, chatId, message); return 0; } 🔍 So erhalten Sie die Chat-ID Die Chat-ID kann mit GET /v1.0/me/chats überprüft werden.\n1 2 3 4 curl -X GET ^ https://graph.microsoft.com/v1.0/me/chats ^ -H \u0026#34;Authorization: Bearer {access_token}\u0026#34; ^ -H \u0026#34;Content-Type: application/json\u0026#34; Antwortbeispiel 1 2 3 4 5 6 7 8 9 { \u0026#34;value\u0026#34;: [ { \u0026#34;id\u0026#34;: \u0026#34;19:abc123xyz@thread.v2\u0026#34;, \u0026#34;topic\u0026#34;: null, \u0026#34;chatType\u0026#34;: \u0026#34;oneOnOne\u0026#34; } ] } 📌 Wichtige Hinweise Dieses Beispiel ist eine Minimalimplementierung. Im produktiven Betrieb: Behandlung des Token-Ablaufs Überprüfung des HTTPS-Zertifikats Verbesserte Fehlerbehandlung Für Kanalbeiträge verwenden Sie teams/{team-id}/channels/{channel-id}/messages. Das Senden von Anhängen erfordert eine Multipart-Verarbeitung oder die Graph Drive API. Zusammenfassung 📎 Zusammenfassung Funktion Übersicht Graph API Offizielle API zur Interaktion mit Teams App-Registrierung Notwendiges Authentifizierungsverfahren auf Azure Zugriffstoken Wird über OAuth2 abgerufen und für Anfragen verwendet C++-Implementierung Ruft die Graph API mithilfe von WinHTTP auf 🚀 Nächste Schritte Als fortgeschrittenere Beispiele sind auch folgende möglich:\nIn einen Teamkanal posten (/teams/{team-id}/channels/...) Beiträge mit Anhängen Zwischen Bot-Konten und Benutzerkonten wechseln Vollständige C++-Implementierung einschließlich Token-Abruf Bitte zögern Sie nicht, einen Kommentar zu hinterlassen, wenn Sie Wünsche haben!\n","date":"2025-07-14T23:40:15+09:00","image":"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_hu9dbe154e21530b21fd6a41dcbc040106_90767_120x120_fill_box_smart1_3.png","permalink":"http://kenji.blog/de/p/wie-man-nachrichten-von-c-an-microsoft-teams-sendet-winhttp--graph-api/","title":"Wie man Nachrichten von C++ an Microsoft Teams sendet (WinHTTP + Graph API)"},{"content":"Wir haben Informationen über die \u0026ldquo;Pflicht\u0026rdquo;-Markierung in Benutzeroberflächen (Formularen) im Ausland zusammen mit UI-Richtlinienmaterialien zusammengefasst.\n📌 Wichtige Pflichtmarkierungen und Best Practices Verwendung des Sternchens (*)\nEs ist am weitesten verbreitet; Pflichtfelder werden mit einem \u0026ldquo;*\u0026rdquo; versehen. Jedoch ist eine Erklärung wie \u0026quot; * ist ein Pflichtfeld\u0026quot; am Anfang des Formulars erforderlich (Nielsen Norman Group, California State University, Northridge). Es gibt auch Beispiele, die Farbe zur Hervorhebung verwenden (wie roten Text). \u0026ldquo;Required\u0026rdquo; oder \u0026ldquo;(required)\u0026rdquo; im Label angeben\nDurch das Hinzufügen des Wortes \u0026ldquo;Required\u0026rdquo; in das Label kann es Screenreadern klar angezeigt werden, was die Barrierefreiheit verbessert (Deque). Kombinierte Verwendung von ARIA-Attributen und dem HTML5-Attribut required\nNeben der visuellen Anzeige wird durch die Verwendung von aria-required=\u0026quot;true\u0026quot; und \u0026lt;input required\u0026gt; auch programmatisch mitgeteilt, dass das Feld erforderlich ist (Deque). Verwendung von \u0026ldquo;(optional)\u0026rdquo; zur Kennzeichnung optionaler Felder\nEs gibt auch den Ansatz, optionale Felder explizit mit \u0026ldquo;(optional)\u0026rdquo; zu kennzeichnen, anstatt Pflichtfelder zu markieren, was effektiv ist, wenn beide gemischt auftreten. Nielsen-Norman weist jedoch darauf hin, dass es \u0026ldquo;leichter zu beurteilen ist, wenn auch Pflichtfelder klar ausgewiesen werden\u0026rdquo; (TPGi). ✅ Zusammenfassung der UI-Richtlinienmaterialien Quelle Inhalt NN/g: Marking Required Fields in Forms Die Kombination von Sternchen und Erklärungstext wird empfohlen; nur optionale Felder anzuzeigen gilt als unfreundlich (Nielsen Norman Group). Deque (Anatomy of Accessible Forms) ・Die Zeichenfolge \u0026ldquo;Required\u0026rdquo; oder ein Bild wird im Label verwendet.\n・Es wird deutlich gemacht, dass Hinweise allein durch Farben unzureichend sind. W3C Techniques (H90) Es gibt Beispiele für die Einbindung eines Sternchens oder \u0026ldquo;(required)\u0026rdquo; im Label und die Definition der Bedeutung am Anfang des Formulars. TPGi (Doing what\u0026rsquo;s required) Unter Berücksichtigung der Barrierefreiheit wird die Kombination aus Sternchen + ARIA-Attributen + Labeltext als am besten bewertet. Contensis Formular-UX-Leitfaden Prägnant zusammengefasst: Eine konsistente Markierung (* oder (optional)) ist wichtig. ✅ Empfohlene Ansätze für die Implementierung Fügen Sie einen Erklärungstext am Anfang des Formulars hinzu:\nFields marked with * are required. (Oder \u0026ldquo;All fields are required\u0026rdquo; für alle, oder \u0026ldquo;unless marked optional\u0026rdquo;, wenn es optionale gibt)\nLabelzuweisung :\nGeschrieben als First Name * oder Email (required). ARIA-Attribute und HTML5-Attribute :\n1 2 \u0026lt;label for=\u0026#34;email\u0026#34;\u0026gt;Email \u0026lt;abbr title=\u0026#34;required\u0026#34;\u0026gt;*\u0026lt;/abbr\u0026gt;\u0026lt;/label\u0026gt; \u0026lt;input id=\u0026#34;email\u0026#34; required aria-required=\u0026#34;true\u0026#34;\u0026gt; Verlassen Sie sich nicht nur auf Farben : Bieten Sie sowohl visuelle als auch programmatische Unterstützung.\n🔗 Referenzlinks (UI-Richtlinienmaterialien) NN/g: Marking Required Fields in Forms (California State University, Northridge, Nielsen Norman Group, Deque) Deque: Anatomy of Accessible Forms (Deque) W3C Techniques: H90 Indicating required form controls (W3C) TPGi: Indicating mandatory fields accessibly (TPGi) Contensis: UX Forms Guidelines (Contensis) Bei Bedarf kann ich auch spezifische HTML/CSS-Codebeispiele oder UI-Komponenten-Designvorlagen für Sketch und Figma bereitstellen. Zögern Sie nicht zu fragen!\n","date":"2025-07-14T13:47:51+09:00","image":"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_hu551d2409ec5a7ae3c7367fc3f969286e_18058_120x120_fill_box_smart1_3.png","permalink":"http://kenji.blog/de/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/","title":"Über die Pflichtfeld-Markierung in Eingabeformularen"},{"content":"[Für Anfänger] So installieren Sie das Gemini CLI unter Windows Das \u0026ldquo;Gemini CLI\u0026rdquo; ermöglicht es Ihnen, die generative KI \u0026ldquo;Gemini\u0026rdquo; von Google über die Befehlszeile zu nutzen. In diesem Artikel erklären wir die Schritte zur Installation des Gemini CLI in einer Windows-Umgebung so einfach wie möglich.\n1. Vorbereitung: Node.js und npm installieren Da das Gemini CLI in einer Umgebung namens \u0026ldquo;Node.js\u0026rdquo; ausgeführt wird, müssen Sie zunächst Folgendes installieren:\nNode.js npm (Paketverwaltungstool, das in Node.js enthalten ist) npx (Befehlsausführungstool, das in npm enthalten ist) Laden Sie die Windows-Version von Node.js von der folgenden offiziellen Website herunter (die LTS-Version wird empfohlen):\n👉 Offizielle Node.js-Website\nSobald die Installation abgeschlossen ist, überprüfen Sie mit dem folgenden Befehl, ob sie korrekt installiert wurde:\n1 2 node -v npm -v 2. Starten Sie PowerShell Um das Gemini CLI unter Windows zu verwenden, wird im Allgemeinen PowerShell verwendet. Geben Sie \u0026ldquo;PowerShell\u0026rdquo; in das Startmenü ein, um sie zu öffnen.\n3. Installieren Sie das Gemini CLI Kopieren Sie den folgenden Befehl und fügen Sie ihn zur Ausführung in PowerShell ein:\n1 npx @google/gemini-cli Dieser Befehl führt das von Google veröffentlichte Gemini CLI-Paket vorübergehend aus. Möglicherweise werden Sie aufgefordert, eine Ersteinrichtung durchzuführen und sich anzumelden, falls erforderlich.\nHinweis: Dies kann beim ersten Mal einige Minuten dauern. Wenn ein Fehler auftritt, überprüfen Sie bitte Ihr Node.js und Ihre Netzwerkumgebung erneut. 4. Installation abgeschlossen! Was als Nächstes zu tun ist Das Gemini CLI ist nun auf Ihrem Windows installiert. Von nun an können Sie Gemini über die Befehlszeile für verschiedene Vorgänge verwenden, z. B. für die Textgenerierung und Codevervollständigung.\nWenn Sie die offizielle Dokumentation oder Hilfe überprüfen möchten, können Sie auch Befehle wie diesen verwenden:\n1 npx @google/gemini-cli --help Zusammenfassung Lassen Sie uns die Schritte zur Installation des Gemini CLI unter Windows wiederholen:\nNode.js und npm installieren PowerShell starten npx @google/gemini-cli ausführen Und Sie sind fertig! Wenn Sie generative KI lokal nutzen möchten, probieren Sie diese Schritte gerne als Referenz aus.\n","date":"2025-07-13T23:49:56+09:00","image":"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_hu68d4fe037447f15938887bf6c4d85b87_249642_120x120_fill_box_smart1_3.png","permalink":"http://kenji.blog/de/p/so-installieren-sie-das-gemini-cli-unter-windows/","title":"So installieren Sie das Gemini CLI unter Windows"},{"content":"Ich wurde erneut als Microsoft MVP (2025-2026) ausgezeichnet! Hallo, ich bin kenji.\nIch habe eine Ankündigung zu machen. Ich wurde dieses Jahr erneut als Microsoft MVP (Most Valuable Professional) ausgezeichnet. Dies ist das 9. Mal , dass ich den Preis erhalte.\nVielen Dank an alle, die mich immer unterstützen.\nWas ist Microsoft MVP? Wenn Sie \u0026ldquo;MVP\u0026rdquo; hören, denken viele vielleicht an den wertvollsten Spieler im Sport, aber hier ist MVP ein Titel, der an diejenigen verliehen wird, die zur technischen Community von Microsoft beigetragen haben .\nKonkret geht es um:\nVerbreitung von Informationen in technischen Blogs und sozialen Medien Veröffentlichung von Beispielcode auf GitHub Vorträge in Lerngruppen und auf Konferenzen Beantwortung von Fragen auf Q\u0026amp;A-Websites Technischer Austausch und Zusammenarbeit mit ausländischen Entwicklern Teilnahme und Beiträge in Communities, in denen sich Ingenieure vernetzen Es ist ein System, das Aktivitäten bewertet wie \u0026ldquo;das eigene Wissen und die eigene Erfahrung zum Nutzen anderer teilen\u0026rdquo;.\nEs gibt weltweit Gewinner, aber die Anzahl der jährlich ausgewählten Personen ist begrenzt, und den Preis erneut zu erhalten, ist nie einfach. Deshalb ist es eine wahre Ehre, auf diese Weise anerkannt zu werden.\nWorauf ich mich im letzten Jahr konzentriert habe In diesem Jahr habe ich mich auf die Verbreitung von Informationen konzentriert, wobei der Schwerpunkt auf der \u0026ldquo;Klarheit\u0026rdquo; und \u0026ldquo;Zugänglichkeit\u0026rdquo; der Technologie lag.\nVeröffentlichung von praktischem Beispielcode auf GitHub Vorträge in Lerngruppen und auf Konferenzen (national und international) Regelmäßige Verbreitung von Informationen über technische Blogs und soziale Medien Kontinuierliche Beantwortung von Fragen auf Q\u0026amp;A-Websites Wissensaustausch auf Community-Websites für Ingenieure Interaktion und gemeinsame Überprüfung mit ausländischen Ingenieuren Insbesondere die Veröffentlichung von Code auf GitHub hat bei mir einen starken Eindruck hinterlassen, da ich Kommentare erhielt wie: \u0026ldquo;Ich hatte mit demselben Problem zu kämpfen, das hat mich gerettet!\u0026rdquo;, und ich das Gefühl hatte, dass meine Bemühungen anderen bei der Entwicklung helfen.\nAußerdem erhielt ich bei Vorträgen auf Veranstaltungen manchmal das Feedback, dass es \u0026ldquo;auch für Anfänger leicht verständlich war\u0026rdquo;, was mir eine gute Gelegenheit gab, darüber nachzudenken, \u0026ldquo;was eine technische Erklärung ist, die die Leute verstehen?\u0026rdquo;.\nAusblick auf das nächste Jahr Die technologische Entwicklung ist wirklich schnell, und es ist schwer, Schritt zu halten. Dennoch glaube ich, dass es einen großen Wert hat, echtes Wissen als \u0026ldquo;Primärinformationen\u0026rdquo; bereitzustellen, wie die praktischen Erfahrungen, die ich gemacht habe, und die Punkte, an denen ich gescheitert bin, als ich Dinge selbst ausprobiert habe.\nIm nächsten Jahr möchte ich versuchen, \u0026ldquo;visuell verständliche technische Inhalte\u0026rdquo; zu veröffentlichen, die Videos und Diagramme integrieren . Ich hoffe, meinen Output so steigern zu können, dass ich helfen kann, das Gefühl von jemandem zu lösen, \u0026ldquo;ich stecke fest!\u0026rdquo;, und sei es nur ein bisschen.\nZum Schluss Der MVP-Titel ist nur ein Zwischenstopp.\nVon nun an, ohne es zu übertreiben, in meinem eigenen Tempo. Aber auf eine Weise, die für jemanden wirklich nützlich ist.\n\u0026ldquo;Ich wurde durch die Recherche danach gerettet\u0026rdquo; \u0026ldquo;Dieses Beispiel hat funktioniert!\u0026rdquo; \u0026ldquo;Diese Geschichte war leicht zu verstehen\u0026rdquo;\nIch möchte weiterhin die Art von Ingenieur sein, dem solche Dinge gesagt werden.\nVielen Dank für Ihre anhaltende Unterstützung.\nGitHub: https://github.com/kenjinote Technischer Blog: https://hack.jp X: https://twitter.com/kenjinote ","date":"2025-07-13T22:01:15+09:00","image":"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_hu79b11b7d0311d1cf72d88f77ae4d2c9a_139280_120x120_fill_box_smart1_3.png","permalink":"http://kenji.blog/de/p/ich-wurde-erneut-als-microsoft-mvp-2025-2026-ausgezeichnet/","title":"Ich wurde erneut als Microsoft MVP (2025-2026) ausgezeichnet"},{"content":"Der Reiz und die Herausforderungen der Entwicklung mit Win32API + C++ Für diejenigen, die die Windows-App-Entwicklung meistern möchten, ist Win32API + C++ nach wie vor eine leistungsstarke Option. Diese Kombination, die die engstmögliche Interaktion mit dem Betriebssystem ermöglicht, bietet sowohl Geschwindigkeit als auch Flexibilität.\nAndererseits erfordert die Beherrschung Entschlossenheit, da sie sich erheblich von modernen Entwicklungsstilen unterscheidet.\nAuf dieser Seite werden wir die Vor- und Nachteile aus der Perspektive eines aktiven Windows-App-Entwicklers klar erläutern.\nVorteile Ultraschnelle Native Ausführung Da C++ und Win32API auf der Schicht operieren, die dem Betriebssystem am nächsten ist, gibt es fast keinen unnötigen Overhead. Die CPU- und Speichernutzung ist äußerst effizient und bietet eine überwältigende Ausführungsgeschwindigkeit .\nHohe Flexibilität und Freiheit Sie können das gesamte App-Verhalten selbst fein steuern , wie z. B. Fenstersteuerung, asynchrone Verarbeitung, COM-Integration und Prozessverwaltung. Es ist auch möglich, spezialisierte Tools und eigene originelle Frameworks zu erstellen.\nEinfach zu Verteilen Ohne Laufzeitbedarf Da keine externen Laufzeitumgebungen wie .NET oder Java erforderlich sind, kann es als einzelne ausführbare Datei verteilt werden . Es ist weniger anfällig für Probleme bei der Neuverteilung und lässt sich ohne Installationsprogramm leicht ausführen.\nKann Leichtgewichtige Apps Erstellen Da es nur die absolut notwendige Konfiguration erfordert, ist seine Eigenschaft ein sehr geringer Speicherbedarf . Es läuft auch auf leistungsschwachen PCs oder in virtuellen Maschinenumgebungen komfortabel.\nFortgeschrittene Steuerung auf Betriebssystemebene Möglich Sie können auch Steuerungen realisieren, die mit normalen Sprachen und Bibliotheken schwierig sind , wie z. B. globale Maus- und Tastatur-Hooks, Feinabstimmung von Fensterstilen und Systemmenüoperationen.\nNachteile Geringe Entwicklungseffizienz Selbst der Aufbau der GUI muss vollständig in Code erfolgen, und manchmal sind Dutzende Zeilen Code erforderlich, nur um eine einzige Schaltfläche zu erstellen . Das Ändern des Designs ist ebenfalls kompliziert, und die Produktivität ist im Vergleich zur Entwicklung mit UI-Frameworks geringer.\nLeicht Verringerte Wartbarkeit Es gibt viele Codes mit speziellen Strukturen , wie z. B. Nachrichtenschleifen und Fensterprozeduren, was die Lesbarkeit und Wiederverwendbarkeit beeinträchtigt. Es hat auch Aspekte, die für die Teamentwicklung und die langfristige Wartung ungeeignet sind.\nSchwierige Unterstützung Moderner UI Es ist schwierig, die in den letzten Jahren geforderte UX zu unterstützen , wie z. B. High-DPI-Unterstützung, Touch-Interfaces, Barrierefreiheit und Dark Mode. Sie müssen jede manuell behandeln, was viel Mühe erfordert.\nKeine Plattformübergreifende Unterstützung Da es sich um eine vollständig Windows-exklusive API handelt, kann es nicht auf macOS oder Linux portiert werden . Wenn Sie eine plattformübergreifende Bereitstellung planen, müssen Sie andere Technologien auswählen.\nExtrem Hohe Lernkosten Sie müssen Konzepte und Mechanismen verstehen, die heute selten verwendet werden , wie z. B. Handles, GDI, COM und OLE. Viele Dokumente sind alt und erfordern Zeit und Geduld zum Lernen.\nGeeignete Anwendungen Leichtgewichtige Tools wie Datei-Launcher und Hotkey-Unterstützer Systemdienstprogramme wie Zwischenablagenmanipulation und IME-Steuerung Native steuerungsbasierte Apps wie globale Hooks und Fenstererfassung Treiber-Support-Tools , die eng mit der Hardware verbunden sind Ungeeignete Anwendungen Allgemeine Verbraucher-Apps , bei denen moderne UI / UX wichtig sind Prototyping und MVP-Entwicklung , die mit Blick auf Geschwindigkeit erstellt wurden Großprojekte , die auf langfristigem Betrieb und Teamentwicklung basieren Plattformübergreifende Produkte , die mehrere Betriebssysteme unterstützen müssen Bewertungszusammenfassung Standpunkt Bewertung Ausführungsgeschwindigkeit ◎ Sehr Schnell Speichereffizienz ◎ Hervorragend Entwicklungsgeschwindigkeit × Langsam Wartbarkeit × Gering Plattformübergreifende Unterstützung × Nicht Unterstützt Moderne UI-Unterstützung × Schwach Freiheit der OS-Steuerung ◎ Überwältigend Hoch Fazit Win32API + C++ ist ein Werkzeug für Entwickler, die \u0026ldquo;alles im Betriebssystem selbst handhaben wollen\u0026rdquo;. Während seine Leistung immens ist, erfordern Lernen und Betrieb eine entsprechende Entschlossenheit.\nOb es sich lohnt, \u0026ldquo;mutig zu wählen\u0026rdquo;, hängt von der Art der App ab, die Sie anstreben.\nIn die Welt von #include \u0026lt;windows.h\u0026gt; einzutauchen, ohne sich auf GUI-Frameworks oder moderne Sprachen zu verlassen ―― Diese Entscheidung ist auch heute noch sinnvoll.\n","date":"2025-07-12T12:30:35+09:00","image":"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_huda4a374969e448ba98e0798d75e2e435_4729_120x120_fill_box_smart1_3.png","permalink":"http://kenji.blog/de/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/","title":"Vor- und Nachteile der Programmerstellung mit Win32API + C++"},{"content":"Wenn Sie libcurl (mit OpenSSL-Unterstützung) in Visual Studio verwenden möchten, ist die Installation von vcpkg einfach und empfehlenswert Wenn es darum geht, HTTP-Kommunikation in C++ zu behandeln, wird oft libcurl verwendet. Aber das Kompilieren und Anpassen von Abhängigkeiten ist überraschend mühsam, nicht wahr?\nIn solchen Fällen ist das C++-Bibliotheksverwaltungstool von Microsoft, ** \u0026ldquo;vcpkg\u0026rdquo; ** , sehr nützlich. Dieses Mal stellen wir die Schritte von der Einführung von libcurl (OpenSSL-kompatibel) mit cpkg bis hin zur reibungslosen Nutzung in Visual Studio vor.\nInstallation von vcpkg (nur für diejenigen, die es noch nicht installiert haben) Lassen Sie uns zuerst cpkg installieren. Bitte führen Sie die folgenden Schritte in PowerShell aus.\npowershell git clone https://github.com/microsoft/vcpkg cd vcpkg .\bootstrap-vcpkg.bat ※Wenn Git noch nicht installiert ist, installieren Sie es bitte von der Offiziellen Git-Website.\nInstallation von libcurl (OpenSSL-kompatibel) Als Nächstes verwenden wir vcpkg, um libcurl zu installieren. Um die 64-Bit-Version mit OpenSSL-Unterstützung anzugeben, führen Sie den folgenden Befehl aus.\npowershell vcpkg install curl[ssl] --triplet x64-windows Wenn Sie diesen Befehl ausführen, werden notwendige Abhängigkeiten (wie OpenSSL) automatisch mit eingerichtet.\nIntegrationseinstellungen für Visual Studio Um die mit vcpkg eingeführten Bibliotheken einfach in Ihrem Visual Studio-Projekt verwenden zu können, konfigurieren Sie die Integrationseinstellungen mit dem folgenden Befehl.\npowershell vcpkg integrate install Sobald dies eingerichtet ist, steht #include \u0026lt;curl/curl.h\u0026gt; in Visual Studio-Projekten automatisch zur Verfügung, und Sie müssen Bibliothekspfade oder Linker-Einstellungen nicht mehr manuell vornehmen.\nFazit Damit ist die Vorbereitung zur Einführung von libcurl (OpenSSL-kompatibel) in Visual Studio abgeschlossen.\nMit vcpkg können Sie mühsame Abhängigkeiten auf einmal verwalten Installieren Sie libcurl ganz einfach mit cpkg install curl[ssl] \u0026ndash;triplet x64-windows Eine automatische Integration mit Visual Studio ist mit cpkg integrate install möglich Jetzt müssen Sie nur noch den Header in Ihr Projekt einbinden und die libcurl-API verwenden, um mit der Entwicklung zu beginnen. Nutzen Sie das praktische vcpkg, um Ihre Entwicklungseffizienz auf einen Schlag zu steigern.\n","date":"2025-07-07T21:46:08+09:00","image":"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_hub03488d3cca2b78b7b08dd6d749f5d1e_294355_120x120_fill_box_smart1_3.png","permalink":"http://kenji.blog/de/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/","title":"【Für Anfänger】Schritte zur Installation von libcurl (mit OpenSSL-Unterstützung) in Visual Studio mit vcpkg"},{"content":"Die nötige „mentale Sicherheit“, um sich nicht in Verschwörungstheorien hineinziehen zu lassen Wenn man im Internet surft, stößt man manchmal auf Geschichten, die wie „Verschwörungstheorien“ klingen.\n„Gibt es nicht jemanden, der dieses Ereignis im Hintergrund manipuliert?“ „Wird die wahre Wahrheit nicht verborgen?“ Viele von Ihnen haben wahrscheinlich schon einmal gesehen, wie sich solche Behauptungen auf plausibel wirkende Weise verbreiten.\nUm sich nicht zu sehr in solche Informationen hineinziehen zu lassen, reicht nicht nur „Wissen“ oder „Denkvermögen“ aus. Es ist sehr wichtig, die geistige Haltung , also die „mentale Sicherheit“, anzupassen.\nIm Folgenden stellen wir Ihnen 6 Denkweisen vor, die hierfür effektiv sind.\nVerbinden Sie Angst nicht sofort mit einer „Antwort“ Ein wesentliches Merkmal von Verschwörungstheorien ist, dass sie eine klare und leicht verständliche „Antwort“ auf Ängste und Zweifel präsentieren.\nZum Beispiel bei Fragen wie:\n„Warum passieren solche Vorfälle?“ „Wer profitiert davon?“ Wenn ein Szenario wie „In Wirklichkeit zieht diese oder jene Person im Hintergrund die Fäden“ präsentiert wird, lässt man sich leicht davon überzeugen.\nAber gerade wenn man Angst verspürt, ist es wichtig, ein Urteil zurückzuhalten und nicht sofort eine Schlussfolgerung zu ziehen .\nDie „Fähigkeit, im Unklaren zu bleiben“ ist auch ein Zeichen intellektueller Reife.\nErweitern Sie bewusst Ihre Informationsquellen Viele Menschen, die in Verschwörungstheorien abtauchen, neigen dazu, sich intensiv nur „Informationen mit ähnlichen Ideen“ anzusehen.\nDies wird als „Bestätigungsfehler“ (Confirmation Bias) bezeichnet, eine psychologische Tendenz, bei der man sich nur Informationen aussetzt, die die eigenen, bereits vorhandenen Überzeugungen stärken.\nInsbesondere die Algorithmen von sozialen Medien und Videoportalen empfehlen kontinuierlich Beiträge, die Ihrem Geschmack zu entsprechen scheinen, was Ihr Blickfeld auf natürliche Weise einengen kann.\nBewusst darauf achten:\nMedien mit unterschiedlichen Perspektiven zu konsumieren Ausländische Nachrichten oder akademische Quellen zu lesen Auch Meinungen zuzuhören, die sich von den eigenen unterscheiden Der Versuch, die Informationsquellen zu diversifizieren , trägt zur Risikovermeidung bei.\nDenken Sie nicht: „Ich werde mich nicht täuschen lassen“ Sachkundige oder logisch denkende Menschen fühlen sich manchmal sogar leichter von Verschwörungstheorien angezogen.\nDas liegt daran, dass der Glaube „Ich kann die Wahrheit erkennen, die andere nicht sehen“ zu einem Faktor wird, der das Urteilsvermögen trübt.\nEgal wie vorsichtig man ist, Menschen machen Fehler. Genau deshalb ist die Annahme, dass man selbst auch getäuscht werden könnte , eigentlich die rationalere Haltung.\n„Zweifeln, ohne voreilige Schlüsse zu ziehen“ wird zu Ihrer Verteidigungskraft.\nBetrachten Sie die Struktur, ohne sich von der Geschichte mitreißen zu lassen Verschwörungstheorien gehen immer mit einer „dramatischen Geschichte“ einher.\nEinfache Dichotomien wie:\nDie Konfliktstruktur zwischen Gut und Böse Herrschende und Beherrschte Mein erwachtes Selbst vs. Die gehirngewaschenen Anderen Solche einfachen Gegensätze sind als Geschichten zwar reizvoll, spiegeln die Realität jedoch nicht immer korrekt wider.\nViele Faktoren sind mit realen Ereignissen und gesellschaftlichen Bewegungen verflochten, wie etwa komplexe Ursache-Wirkungs-Beziehungen, historische Hintergründe und institutionelle Strukturen.\nEs ist wichtig, sich nicht zu sehr von den Emotionen der Geschichte mitreißen zu lassen, sondern die strukturelle Perspektive zu haben, um zu verstehen: „Warum ist das passiert?“.\nIgnorieren Sie die Einsamkeit nicht Hinter einer starken Anziehungskraft von Verschwörungstheorien verbergen sich manchmal „Isolation“ und ein „Gefühl der Nichtzugehörigkeit“.\nWenn Menschen sich einsam fühlen, neigen sie dazu, zutiefst abhängig von Personen oder Gruppen zu werden, die sie verstehen. Gemeinschaften von Verschwörungstheoretikern erfüllen manchmal diese Funktion als „Zufluchtsort“.\nGerade deshalb sind auch Bemühungen, nicht einsam zu werden, mit der mentalen Sicherheit verbunden.\nZum Beispiel Handlungen wie:\nRegelmäßig mit Menschen ins Gespräch kommen An Gemeinschaften teilnehmen, die Hobbys oder Interessen teilen Nicht nur online, sondern auch offline Verbindungen pflegen Dies führt zu geistiger Stabilität.\nSetzen Sie auf Dialog statt auf Ablehnung Selbst wenn jemand in Ihrem Umfeld zu Verschwörungstheorien neigt, kann eine kategorische Ablehnung oft das Gegenteil bewirken .\nWenn die Überzeugungen eines Menschen geleugnet werden, verstärkt sich seine psychologische Tendenz, sie schützen zu wollen (dies wird als „defensive Kognition“ bezeichnet).\nStattdessen:\nFragen Sie behutsam: „Warum hast du das gedacht?“ Präsentieren Sie ruhig Ihre eigene Sichtweise: „Es könnte auch diese Art zu denken geben.“ Durch diesen dialogorientierten Ansatz entsteht die Möglichkeit, dass sich die Perspektive der anderen Person auf natürliche Weise erweitert.\nFazit: Was Sie tun können, um Abstand zu Verschwörungstheorien zu halten Die Fähigkeit besitzen, Dinge zurückzuhalten, ohne Angst sofort mit einer Antwort zu verknüpfen Informationsquellen diversifizieren und sich der eigenen Vorurteile bewusst werden Erkennen, dass das eigene Urteil nicht absolut ist Dinge anhand von Strukturen und Ursache-Wirkungs-Beziehungen betrachten, nicht anhand von Geschichten Einsamkeit vermeiden und Verbindungen pflegen Den Verschwörungstheorien anderer nicht mit Ablehnung, sondern mit Dialog begegnen Es wird gesagt, dass die Anfälligkeit für Verschwörungstheorien mehr vom psychologischen Zustand und der Umgebung beeinflusst wird als von der Menge an Wissen.\nDeshalb sollten Sie nicht einfach davon ausgehen, dass „alles in Ordnung“ ist. Die Bemühung, die mentale Sicherheit im Alltag schrittweise zu erhöhen , wird eine große Stütze sein, um in der Informationsgesellschaft der Zukunft flexibel zu leben.\n","date":"2025-05-26T22:23:34+09:00","image":"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_hu51c98705e3e626ac0eb85c430c7c7e5c_195663_120x120_fill_box_smart1_3.png","permalink":"http://kenji.blog/de/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/","title":"Was nötig ist, um nicht auf Verschwörungstheorien hereinzufallen"},{"content":"Geschichte der Low-Code- / No-Code-Entwicklung (1980er Jahre bis heute) Die Low-Code- / No-Code-Entwicklung ist ein Ansatz, der es ermöglicht, Apps, Websites und Datenbanken ohne spezielle Programmierkenntnisse zu erstellen. Diese Idee begann in den 1980er Jahren und hat sich mit der Verbreitung von PCs, der Entwicklung des Internets und der Expansion von Cloud-Technologien zu einer Vielzahl von Plattformen entwickelt. In diesem Artikel stellen wir repräsentative Tools und Dienste aus jedem Jahrzehnt vor und heben ihre Funktionen und Preise hervor.\n1980er Jahre: Die Anfänge HyperCard (Apple, 1987) App-Erstellungstool für den Macintosh. Der Bildschirm war im Kartenformat konfiguriert und die grafische Benutzeroberfläche (GUI) wurde per Drag-and-Drop erstellt. Eine einfache Verhaltenssteuerung war auch mit der eigenen Skriptsprache \u0026ldquo;HyperTalk\u0026rdquo; möglich. Es wurde für Prototyping-Zwecke bevorzugt. Der Einführungspreis betrug 49,95 Dollar, später wurde es neuen Mac-Käufern kostenlos zur Verfügung gestellt. Die letzte Version erschien 1998 und bietet keine Unterstützung für Mac OS X oder höher.\nFileMaker (Claris/Apple, 1985) Grafische Datenbanksoftware. Neben der Anzeige von Daten in Tabellenform ist es ein relationales Datenbanktool mit flexibler Layoutbearbeitung und Skriptfunktionen. Wird derzeit als \u0026ldquo;Claris FileMaker Pro\u0026rdquo; angeboten und die Vollversionslizenz kostet 594 Dollar (Stand 2024).\n1990er Jahre: Der Aufstieg von GUI-Apps und der Geschäftsentwicklung Visual Basic (Microsoft, 1991) Eine IDE für die Windows-App-Entwicklung. Durch Drag-and-Drop von GUI-Komponenten wie Schaltflächen und Beschriftungen konnten ereignisgesteuerte Anwendungen einfach erstellt werden. Mit VB6.0 im Jahr 1998 als letzter Version verlagerte sich der Schwerpunkt auf die .NET-Ära.\nMicrosoft Access (1992) Datenbankentwicklungstool für Windows. Es ermöglichte das Design relationaler Datenbanken und die Formularerstellung über GUI und wurde häufig für die Entwicklung allgemeiner Geschäftsanwendungen verwendet. Derzeit im Rahmen von Microsoft 365 angeboten.\nPowerBuilder (PowerSoft/Sybase, 1991) 4GL-Entwicklungstool für Geschäftsanwendungen. Unterstützte die Client/Server-Architektur und hatte Stärken in der Datenbankintegration. Wird derzeit unter SAP weiter angeboten.\nDreamweaver (Macromedia, 1997) Ein WYSIWYG-Tool, das die visuelle Erstellung von Webseiten ermöglichte. Es erlaubte den Wechsel zwischen HTML-Bearbeitung und Entwurfsansicht und unterstützte auch ASP und PHP. Wird derzeit von Adobe bereitgestellt und ist per Abonnement (ca. 34,49 Dollar pro Monat) erhältlich.\nFlash (Macromedia, 1996) Ursprünglich als FutureSplash Animator entwickeltes Vektor-Animations-Erstellungstool. Später wurde es zur Erstellung interaktiver Inhalte für das Web verwendet, der Support endete jedoch 2020 aus Sicherheitsgründen.\nGameMaker (1999) 2D-Spieleerstellungstool für Anfänger. Objektplatzierung und Ereignissteuerung können per Drag-and-Drop erfolgen. Später wurde auch Scripting (GML) unterstützt, und derzeit werden mehrere Pläne für die kommerzielle Nutzung angeboten.\n2000er Jahre: Webbasierte und Open-Source-Erweiterung WordPress (2003) Open-Source-CMS, das PHP und MySQL verwendet. Ermöglicht das Erstellen von Blogs und Unternehmenswebsites mithilfe von Themes und Plugins ohne Programmierkenntnisse. Kostenlos verteilt, ist es eines der am häufigsten verwendeten CMS der Welt.\nWix (2006) Ein No-Code-Dienst, mit dem Sie Websites in einem Browser erstellen können. Sie können eine Vorlage auswählen und per Drag-and-Drop bearbeiten. Neben dem kostenlosen Plan ermöglichen kostenpflichtige Pläne die Nutzung benutzerdefinierter Domains und E-Commerce-Funktionen.\nOutSystems (2001) Low-Code-Plattform für Unternehmen. Da es die schnelle Entwicklung von Geschäftssystemen ermöglicht, schreitet die Einführung in Großunternehmen und Regierungsbehörden voran. Unterstützt sowohl Cloud als auch On-Premises.\nScratch (MIT, 2007) Ein für Kinder entwickeltes Lernwerkzeug für die Programmierung. Durch die Kombination farbiger Blöcke können Spiele und Animationen erstellt werden, was im Bildungsbereich weit verbreitet ist. Kostenlos zur Verfügung gestellt.\nAirtable (2013) Ein Cloud-Dienst, der Tabellenkalkulationen und Datenbanken kombiniert. Das Erscheinungsbild ähnelt Excel, ermöglicht jedoch Beziehungen, Kanban-Anzeige und API-Integration. Es wird von Einzelpersonen bis hin zu Konzernen weit verbreitet eingesetzt.\n2010er - 2020er Jahre: Das Zeitalter von Cloud und Automatisierung In den letzten Jahren haben sich cloudbasierte Low-Code- / No-Code-Tools rasant entwickelt.\nPower Platform (Microsoft) Eine integrierte Plattform zur Entwicklung und Automatisierung von Geschäftsanwendungen, die \u0026ldquo;Power Apps\u0026rdquo;, \u0026ldquo;Power Automate\u0026rdquo; usw. umfasst. Geschäftsprozesse von Unternehmen können visuell per Drag-and-Drop aufgebaut werden.\nSalesforce Lightning Platform Die App-Entwicklungsbasis des CRM Salesforce. Geschäfts-Apps können über GUI erstellt werden, und die Integration in andere Salesforce-Dienste ist einfach.\nZapier / IFTTT Automatisierungstools, mit denen Verbindungen zwischen mehreren Cloud-Diensten ohne Codierung hergestellt werden können. Beispielsweise können Workflows wie \u0026ldquo;Slack benachrichtigen, wenn etwas in Google Forms eingegeben wird\u0026rdquo; einfach implementiert werden.\nNotion (2010er Jahre) Ein All-in-One-Arbeitsbereich, der Dokumentenmanagement, Aufgabenmanagement, Wiki usw. integriert. Es verfügt auch über eine benutzerdefinierte Datenbankfunktion, die für geschäftliche Verbesserungen ohne Code nützlich ist.\nConstruct 3 / GameSalad Tools zum Erstellen von Spielen per Drag-and-Drop. Construct 3 unterstützt HTML5 und funktioniert auch im Browser und ist im Bildungsbereich und bei Indie-Entwicklern beliebt.\nInformationsquellen und Ergänzungen Dieser Artikel basiert auf den offiziellen Websites jedes Produkts, Wikipedia und zuverlässigen Materialien/Artikeln (Apple, Microsoft, Adobe usw.). Die Preisinformationen beziehen sich auf die damaligen oder die aktuellsten verfügbaren offiziellen Informationen (hauptsächlich in US-Dollar angegeben). Viele der Tools seit den 2000er Jahren sind abonnementbasiert und die Gebühren variieren je nach Plan.\n","date":"2025-04-26T16:46:11+09:00","image":"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_hu615c889fe1afb242f7436bdb2a6d534f_388471_120x120_fill_box_smart1_3.png","permalink":"http://kenji.blog/de/p/geschichte-von-low-code-und-no-code/","title":"Geschichte von No-Code in lokalen Umgebungen"},{"content":"Was genau ist eigentlich FizzBuzz? Hallo!\nHeute möchte ich über „FizzBuzz“ schreiben.\nEgal, ob du denkst „Ah, das kenne ich!“, oder ob du sagst „Ich habe davon gehört, es aber nicht wirklich verstanden“, bitte bleib einen Moment bei mir. Es dauert nur wenige Minuten, es zu lesen, und vielleicht denkst du danach: „Das ergibt Sinn.“\nStimmt es, dass man „als Programmierer versagt hat, wenn man FizzBuzz nicht schreiben kann“? FizzBuzz ist kurz gesagt so etwas.\n1 2 3 4 5 6 7 8 9 for i in range(1, 101): if i % 15 == 0: print(\u0026#34;FizzBuzz\u0026#34;) elif i % 3 == 0: print(\u0026#34;Fizz\u0026#34;) elif i % 5 == 0: print(\u0026#34;Buzz\u0026#34;) else: print(i) Ja, das ist das berühmte „FizzBuzz-Problem“.\nMan betrachtet nacheinander die Zahlen von 1 bis 100,\nwenn es ein Vielfaches von 3 ist, gibt man „Fizz“ aus, wenn es ein Vielfaches von 5 ist, „Buzz“,\nwenn es ein Vielfaches von beiden ist, gibt man „FizzBuzz“ aus – es ist wirklich sehr einfach.\nUnd dennoch wird es aus irgendeinem Grund oft als „der minimale Test für einen Programmierer“ behandelt. Es taucht in Vorstellungsgesprächen auf, und in den sozialen Medien sieht man Kommentare wie „Jemand, der nicht einmal FizzBuzz schreiben kann\u0026hellip;“.\nAber Moment mal.\nKönnen wir wirklich behaupten, dass „FizzBuzz nicht schreiben können = nicht programmieren können“ bedeutet?\nEs geht nicht um das Können, sondern darum, ob man den „Zustand“ dafür hat Es stimmt, dass FizzBuzz das Verständnis von Syntax und grundlegendem logischem Denken erfordert. Daher ist es nachvollziehbar, dass es zur „Überprüfung der Grundlagen“ verwendet wird.\nAber hier ist der Punkt.\nWenn die Umgebung anders ist, sind auch die Ergebnisse anders.\nZum Beispiel,\nWenn man vor einem Interviewer nervös ist, den man gerade erst kennengelernt hat Wenn einem plötzlich ein Whiteboard übergeben wird und man keinen Editor zur Hand hat Wenn einem nicht sofort einfällt: „Warte, was ist noch mal Modulo?“ \u0026hellip;Kommt das nicht vor? Wir sind Menschen. Ich denke, das passiert.\nDeshalb glaube ich, dass die Frage, „ob man sich in einen Zustand versetzen kann, in dem man FizzBuzz schreiben kann“, eigentlich viel wichtiger ist, als einfach nur „ob man FizzBuzz schreiben kann“.\nDie Falle des üblichen Ratschlags „Einfach üben, dann wird alles gut“ Wenn dieses Thema aufkommt, neigen die Leute oft zu dem Ratschlag: „Dann übe jeden Tag!“.\nEs ist wahr, dass wiederholte Übung dazu führt, dass man es fließend schreiben kann, und das ist an sich eine gute Sache. Aber wenn wir von der Prämisse ausgehen, dass „man disqualifiziert ist, wenn man FizzBuzz nicht schreiben kann“, kann sich das leicht in bloße Angst verwandeln.\nMit anderen Worten, es neigt dazu, eine Struktur zu schaffen, in der man das Gefühl hat: „Ich habe einen Fehler gemacht = ich bin nutzlos.“\nZum Beispiel, wenn man an einem Tag verschläft, neigt man dann nicht dazu zu denken: „Ich bin faul\u0026hellip;“? Aber es könnte einfach sein, dass der Körper in diesem Moment erschöpft war.\nBei FizzBuzz ist es genauso.\nAbgesehen davon ist FizzBuzz immer noch eine gute Frage Trotzdem ist FizzBuzz nichts Schlechtes.\nVielmehr denke ich, dass es eine sehr gut durchdachte Frage ist. Die Regeln sind einfach und es lässt sich leicht erweitern. Wenn man es zum Beispiel so ändert, wird das Denken vertieft.\n1 2 3 4 5 6 7 for i in range(1, 101): output = \u0026#34;\u0026#34; if i % 3 == 0: output += \u0026#34;Fizz\u0026#34; if i % 5 == 0: output += \u0026#34;Buzz\u0026#34; print(output or i) Dies ist ein Beispiel dafür, dass „man es auch ohne if-elif-else schreiben kann“. Das ist ziemlich smart, oder?\nMit anderen Worten, bei FizzBuzz geht es nicht nur darum, „ob man es geschafft hat“, sondern es dient auch als Einstiegspunkt, um zu sehen, „wie man es schreibt“ und „wie viel man versteht“.\nZusammenfassend Ich denke, wir sollten der Frage, ob man FizzBuzz programmieren kann oder nicht, zu viel Bedeutung beimessen.\nSelbst wenn man es nicht schreiben konnte, könnte es einfach daran liegen, dass „man sich gerade nicht wohlgefühlt hat“, und oft kann man es später tun, wenn man sorgfältig darüber nachdenkt.\nKeine Eile, lass uns langsam vorankommen.\nCode wird von Menschen geschrieben. Weil wir Menschen sind, vergessen wir manchmal Dinge und sind nervös. Wenn wir das akzeptieren, reicht es meiner Meinung nach aus, wenn wir Stück für Stück vorankommen können.\nLass uns also auch heute wieder ganz entspannt Code schreiben.\n","date":"2025-04-18T00:58:11+09:00","image":"http://kenji.blog/p/fizzbuzz/img_hu0b23239076c3049a7d4382dec6ccfba6_85967_120x120_fill_box_smart1_3.png","permalink":"http://kenji.blog/de/p/fizzbuzz/","title":"FizzBuzz"},{"content":"Türme von Hanoi Hallo!\nHeute möchte ich Ihnen die \u0026ldquo;Türme von Hanoi\u0026rdquo; anhand eines Python-Beispielprogramms erklären.\nWas sind die Türme von Hanoi? Die Türme von Hanoi sind ein Puzzle, das 3 Stäbe und mehrere Scheiben verwendet. Die Scheiben sind unterschiedlich groß und liegen zu Beginn der Größe nach absteigend auf einem Stab. Die Regeln lauten wie folgt:\nEs kann immer nur eine Scheibe bewegt werden. Eine größere Scheibe darf nicht auf eine kleinere Scheibe gelegt werden. Dieses Puzzle gilt als hervorragendes Lehrmaterial, um rekursives Denken zu erlernen. Rekursion ist eine Methode zur Lösung eines Problems, indem man es in kleinere Probleme derselben Art zerlegt. Bei den Türmen von Hanoi wiederholen wir die Operation, n-1 Scheiben zu bewegen, um n Scheiben zu bewegen.\nLösen wir die Türme von Hanoi mit Python Unten sehen Sie einen Beispielcode zur Lösung der Türme von Hanoi in Python.\n1 2 3 4 5 6 7 8 9 10 def hanoi(n, source, target, auxiliary): if n == 1: print(f\u0026#34;Move disk 1 from {source} to {target}\u0026#34;) return hanoi(n - 1, source, auxiliary, target) print(f\u0026#34;Move disk {n} from {source} to {target}\u0026#34;) hanoi(n - 1, auxiliary, target, source) # Beispiel: 3 Scheiben von A nach C bewegen hanoi(3, \u0026#39;A\u0026#39;, \u0026#39;C\u0026#39;, \u0026#39;B\u0026#39;) In diesem Code wird die Funktion hanoi rekursiv aufgerufen, und die Schritte zum Bewegen der Scheiben werden angezeigt. Bei 3 Scheiben erhält man beispielsweise die folgende Ausgabe:\n1 2 3 4 5 6 7 Move disk 1 from A to C Move disk 2 from A to B Move disk 1 from C to B Move disk 3 from A to C Move disk 1 from B to A Move disk 2 from B to C Move disk 1 from A to C Auf diese Weise lassen sich komplexe Probleme durch einen rekursiven Ansatz einfach lösen.\nWie lange dauert es, 64 Scheiben zu bewegen? Die Anzahl der Züge bei den Türmen von Hanoi erfordert mindestens 2^n - 1 mal. Um 64 Scheiben zu bewegen, sind also 2^64 - 1 Züge, etwa 1,84×10^19 Züge erforderlich. Selbst wenn Sie einen Zug pro Sekunde machen könnten, würde es etwa 584,9 Milliarden Jahre dauern. Das ist etwa das 42-fache des Alters des Universums (etwa 13,7 Milliarden Jahre).\nMit zunehmender Anzahl von Scheiben steigt also die Anzahl der erforderlichen Züge exponentiell an. Daher ist es unrealistisch, in der Praxis 64 Scheiben zu bewegen.\nZusammenfassung Die Türme von Hanoi sind ein perfektes Puzzle, um rekursives Denken zu lernen. Mit Python können Sie die Lösung leicht implementieren. Seien Sie jedoch vorsichtig, da die Anzahl der erforderlichen Züge drastisch ansteigt, wenn die Anzahl der Scheiben zunimmt.\nIndem Sie den rekursiven Ansatz verstehen und versuchen, tatsächlich Code zu schreiben, können Sie Ihre Programmierfähigkeiten verbessern. Bitte versuchen Sie sich an der Herausforderung der Türme von Hanoi.\n","date":"2025-04-17T22:23:14+09:00","image":"http://kenji.blog/p/%E3%83%8F%E3%83%8E%E3%82%A4%E3%81%AE%E5%A1%94/img_hub916bf71b02b2ffc8b3c247adaa061ec_2314383_120x120_fill_box_smart1_3.png","permalink":"http://kenji.blog/de/p/tuerme-von-hanoi/","title":"Türme von Hanoi"},{"content":"Anzahl der Zeilen im Quellcode Hallo!\nHeute möchte ich über ein etwas anderes Thema sprechen.\nDas Thema lautet: \u0026ldquo;Wie sehr ist die Anzahl der Quellcodezeilen im Vergleich zur Vergangenheit gestiegen?\u0026rdquo;\nDie Software des Space Shuttles bestand beispielsweise aus rund 420.000 Codezeilen. Dieser Code wurde in einem sehr strengen Prozess entwickelt, um die hohen Qualitätsstandards der NASA zu erfüllen. Bei modernen großen Softwareprojekten ist es hingegen keine Seltenheit, dass die Anzahl der Codezeilen in die zweistelligen Millionen geht. Die Codebasis von Google soll beispielsweise etwa 2 Milliarden Zeilen umfassen.\nWie wir sehen können, ist der Umfang von Software im Laufe der Zeit gewachsen.\nAber Moment mal.\nEine Zunahme der Codezeilen ist nicht unbedingt etwas Schlechtes. Es ist ganz natürlich, dass der Code wächst, um neue Funktionen hinzuzufügen und die Bedürfnisse der Benutzer zu erfüllen. Mit zunehmendem Code steigt jedoch auch das Risiko von Fehlern. Tatsächlich haben einige Untersuchungen gezeigt, dass bei Open-Source-Projekten die Fehlerrate tendenziell ansteigt, sobald sie 1 Million Zeilen überschreiten.\nTrotzdem vergrößern nicht alle Projekte ihren Code auf die gleiche Weise.\nZum Beispiel hatte der Linux-Kernel in Version 1.0 im Jahr 1994 etwa 200.000 Zeilen, wuchs aber in Version 4.2 im Jahr 2015 auf etwa 20 Millionen Zeilen an. Diese Zunahme ist auf die Notwendigkeit zurückzuführen, die Entwicklung von Hardware und das Hinzufügen neuer Funktionen zu unterstützen.\nDaher variiert die Anzahl der Quellcodezeilen stark, abhängig von der Größe und dem Zweck des Projekts sowie dem Kontext der Zeit.\nDie Zunahme der Codezeilen an sich ist kein Problem, erfordert aber ein angemessenes Management, um Qualität und Wartbarkeit aufrechtzuerhalten. Es ist wichtig, die mit dem Code-Wachstum verbundenen Risiken zu verstehen und geeignete Maßnahmen zu ergreifen.\nSchließlich denke ich, dass es wichtig ist, sich nicht zu sehr auf Codezeilen zu fixieren, sondern den Zweck und die Qualität des Projekts in den Vordergrund zu stellen.\nNun, bis zum nächsten Mal!\n","date":"2025-04-17T10:33:02+09:00","image":"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_hu5eec8f3e01b611d6fcced12ecef63fb0_956545_120x120_fill_box_smart1_3.png","permalink":"http://kenji.blog/de/p/anzahl-der-zeilen-im-quellcode/","title":"Anzahl der Zeilen im Quellcode"},{"content":"\u0026ldquo;Kerckhoffs\u0026rsquo; Prinzip\u0026rdquo; Hallo!\nHeute möchte ich über etwas sprechen, das ein wenig interessant und tatsächlich extrem wichtig ist, nämlich das \u0026ldquo;Kerckhoffs\u0026rsquo; Prinzip\u0026rdquo;.\nOh, Moment, Moment.\nEinige von euch denken vielleicht: \u0026ldquo;Ich habe noch nie vom \u0026lsquo;Kerckhoffs\u0026rsquo; Prinzip\u0026rsquo; gehört, und es klingt ein wenig technisch\u0026hellip;\u0026rdquo;. Bitte macht euch keine Sorgen. Dieser Artikel ist genau das, was ich Leuten wie euch zum Lesen geben möchte.\nWas bedeutet \u0026ldquo;sichere Kryptographie\u0026rdquo;? Angenommen, jemand sagt: \u0026ldquo;Dieser Tresor kann nur von jemandem geöffnet werden, der die geheime Methode zum Öffnen kennt.\u0026rdquo;\nAuf den ersten Blick sieht das sehr sicher aus, oder?\nAber wenn man darüber nachdenkt, ist es nicht ein wenig beunruhigend?\nEtwa: \u0026ldquo;Wenn dieses Geheimnis herauskommt, ist es vorbei?\u0026rdquo;.\nTatsächlich war dies der Auslöser für das Kerckhoffs\u0026rsquo; Prinzip.\nWas genau ist das \u0026ldquo;Kerckhoffs\u0026rsquo; Prinzip\u0026rdquo;? Ganz einfach ausgedrückt ist es die Idee, dass\n\u0026ldquo;Kryptographie sicher sein sollte, selbst wenn ihre Funktionsweise entdeckt wird.\u0026rdquo;\nGenauer gesagt: \u0026ldquo;Die Sicherheit sollte sich nur auf den \u0026lsquo;geheimen Schlüssel\u0026rsquo; stützen, und die Verschlüsselungsmethode selbst darf öffentlich sein!\u0026rdquo;.\nUmgekehrt gilt: \u0026ldquo;Ein Zustand, in dem der Verschlüsselungsalgorithmus (Mechanismus) geheim gehalten wird, gilt als wenig zuverlässig\u0026rdquo;.\n\u0026ldquo;Wenn der Mechanismus geheim ist, ist er sicher\u0026rdquo; kann ein wenig gefährlich sein Das ist eine weit verbreitete Denkweise:\n\u0026ldquo;Ich habe niemandem das Innere dieser App gezeigt, also ist die Sicherheit in Ordnung\u0026rdquo;\nIch verstehe das Gefühl.\nAber das ist so, als würde man sagen: \u0026ldquo;Niemand sieht hin, also werden keine Schwachstellen gefunden, oder?\u0026rdquo;.\nIn Wirklichkeit kann die Tatsache, dass \u0026ldquo;niemand hinsieht\u0026rdquo;, an sich schon zu einem Risiko werden.\nAber warum ist dieses Prinzip so wichtig? Denn wenn jemand den Mechanismus in die Hände bekommt und ihn leicht entschlüsseln kann, ist diese Kryptographie am Ende.\nUm einen Vergleich heranzuziehen: Es ist so, als hätte ein Türschloss einen sehr komplexen Mechanismus, könnte aber in Wirklichkeit mit einem Ersatzschlüssel aus dem Ein-Dollar-Laden geöffnet werden.\nEs geht nicht darum, dass \u0026ldquo;der Schlüssel geheim ist, also ist es in Ordnung\u0026rdquo;, sondern dass \u0026ldquo;selbst wenn man den ganzen Mechanismus zeigt, kann er ohne den richtigen Schlüssel nicht geöffnet werden\u0026rdquo;, was wichtig ist.\nDas Gefühl \u0026ldquo;Aber ist das nicht ein bisschen unheimlich?\u0026rdquo; Was viele Menschen hier fühlen, ist die Angst,\n\u0026ldquo;Ist es nicht ein bisschen unheimlich, den gesamten Mechanismus offenzulegen?\u0026rdquo;\nIch verstehe.\nWeil man denkt: \u0026ldquo;Wenn ich das ganze Innere zeige, wird es dann nicht nachgeahmt oder für böse Zwecke genutzt?\u0026rdquo;.\nAber das ist genau der Kern des Kerckhoffs\u0026rsquo; Prinzips.\nDie \u0026ldquo;Stärke, die nicht zusammenbricht, selbst wenn das Innere gezeigt wird\u0026rdquo; ist die wahre Sicherheit.\nDas gesagt, erfordert es am Anfang ein wenig Mut Aus der Sicht des Entwicklers scheint es, als ob \u0026ldquo;den Mechanismus veröffentlichen = seine Schwächen offenlegen\u0026rdquo; ist, also ist es natürlich nervenaufreibend.\nAber denken Sie darüber nach.\nEtwas, das man richtig zeigen kann und bei dem man sagen kann: \u0026ldquo;Jeder kann das überprüfen\u0026rdquo;, wird letztendlich vertrauenswürdiger sein.\nDas ist ähnlich wie bei menschlichen Beziehungen.\n\u0026ldquo;Eine Person, die gut mit dir auskommt, nachdem du dein wahres Ich gezeigt hast\u0026rdquo;, ist letztendlich am beruhigendsten.\nFazit Das Kerckhoffs\u0026rsquo; Prinzip mag etwas theoretisch klingen, aber seine Essenz ist sehr einfach.\nEs geht nur darum, \u0026ldquo;Lass uns einen Mechanismus erschaffen, der nicht kaputt geht, egal wem du ihn zeigst.\u0026rdquo;\nRichtiges Design anstelle von oberflächlichen Geheimnissen.\nCode, für den man sich nicht schämt, ihn zu zeigen, anstelle von Code, den man niemandem zeigen möchte.\nVielleicht wird diese Art von \u0026ldquo;Stärke\u0026rdquo; in der kommenden Ära noch mehr gebraucht.\nVielen Dank fürs Lesen!\nSicherheit ist ein etwas schwieriges Thema, aber einige Teile hängen auch mit \u0026ldquo;Beziehungen zu Menschen\u0026rdquo; und \u0026ldquo;alltäglicher Ruhe\u0026rdquo; zusammen.\nWenn man Stück für Stück lernt, ohne sich überfordert zu fühlen, werden sicher gute Dinge passieren.\n","date":"2025-04-16T23:53:08+09:00","image":"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_hu71b6c82ab9eb0ac0abd797e00918df90_2573611_120x120_fill_box_smart1_3.png","permalink":"http://kenji.blog/de/p/kerckhoffs-prinzip/","title":"Kerckhoffs' Prinzip"},{"content":"🎯 Schritte zum Ausführen von PowerShell aus C++ über eine C++/CLI-DLL (Visual Studio 2022 / C++) ✅ Gesamtarchitektur 🔹 ① CLI-Wrapper-DLL (C++/CLI) Stellt die Funktionalität zum Ausführen von PowerShell-Skripten bereit.\n🔹 ② Nativer C++-Aufrufer Ruft die CLI-DLL auf, um das PowerShell-Skript auszuführen.\n🔧 Schritt 1: Erstellen des CLI-Wrapper-DLL-Projekts 1. Projekt erstellen [Neues Projekt erstellen] → [C++] → CLR-Klassenbibliothek (.NET Framework) Name: PowerShellWrapper 💡 Wenn diese Vorlage nicht angezeigt wird, installieren Sie die Workload \u0026ldquo;.NET-Desktopentwicklung\u0026rdquo;.\n2. NuGet-Paket hinzufügen Rechtsklick auf das Projekt → [NuGet-Pakete verwalten] Suchen und installieren Sie System.Management.Automation\n(Version 5.x oder 7.x) 3. Implementierung des CLI-Codes PowerShellWrapper.h 1 2 3 4 5 6 7 8 9 10 #pragma once using namespace System; namespace PowerShellWrapper { public ref class PowerShellExecutor { public: String^ Execute(String^ script); }; } PowerShellWrapper.cpp 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 #include \u0026#34;PowerShellWrapper.h\u0026#34; using namespace System; using namespace System::Management::Automation; using namespace System::Collections::ObjectModel; String^ PowerShellWrapper::PowerShellExecutor::Execute(String^ script) { PowerShell^ ps = PowerShell::Create(); ps-\u0026gt;AddScript(script); Collection\u0026lt;PSObject^\u0026gt;^ results = ps-\u0026gt;Invoke(); System::Text::StringBuilder^ sb = gcnew System::Text::StringBuilder(); for each (PSObject^ result in results) { sb-\u0026gt;AppendLine(result-\u0026gt;ToString()); } return sb-\u0026gt;ToString(); } 🔧 Schritt 2: Aufruf aus nativem C++ 1. Erstellen des C++-Konsolen-App-Projekts Name: NativeApp 2. Referenzeinstellungen Rechtsklick auf das Projekt → [Hinzufügen] → [Referenz] → Projekte → PowerShellWrapper hinzufügen [Konfigurationseigenschaften] → [C/C++] → [Common Language Runtime-Unterstützung] → Ändern in /clr 3. Ausführungscode (main.cpp) 1 2 3 4 5 6 7 8 9 10 11 12 13 #using \u0026lt;System.dll\u0026gt; #using \u0026#34;..\\\\PowerShellWrapper\\\\Debug\\\\PowerShellWrapper.dll\u0026#34; using namespace System; using namespace PowerShellWrapper; int main() { PowerShellExecutor^ executor = gcnew PowerShellExecutor(); String^ result = executor-\u0026gt;Execute(\u0026#34;Get-Process | Select-Object -First 1\u0026#34;); Console::WriteLine(result); return 0; } 💡 Zusätzliche Informationen (IDL / TLB / COM-Registrierung) Diese Konfiguration verweist direkt auf die .NET-DLL anstelle von COM, daher ist keine IDL-, TLB- oder COM-Registrierung erforderlich . ✅ Endgültige Architektur 1 2 3 4 5 Solution ├── PowerShellWrapper (C++/CLI DLL) │ └── PowerShellExecutor ├── NativeApp (C++ EXE) └── main.cpp → DLL-Aufruf ","date":"2025-04-16T01:58:03+09:00","image":"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_hu7575b218a6ea53bc902a4f89abde2058_17844_120x120_fill_box_smart1_3.png","permalink":"http://kenji.blog/de/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/","title":"Schritte zum Ausführen von PowerShell aus C++ über eine C++/CLI-DLL"},{"content":"【Windows】So überprüfen Sie den Lizenzstatus (1 Befehl reicht aus) Haben Sie sich jemals gefragt, ob Ihre Windows-Lizenz korrekt authentifiziert ist?\nIn solchen Momenten ist eine Methode zum Überprüfen der Lizenzinformationen mit einem einzigen Befehl sehr praktisch. Sie können Ihren aktuellen Lizenzstatus ganz einfach überprüfen, indem Sie die folgenden Schritte ausführen.\nBefehl zum Überprüfen des Lizenzstatus Sie können Ihre Lizenzinformationen mithilfe eines in Windows integrierten Skripttools anzeigen. Der zu verwendende Befehl lautet hier:\n1 slmgr /dli Wenn Sie diesen Befehl ausführen, werden einige Lizenzinformationen in einem Fenster angezeigt.\nAusführungsmethode Geben Sie im \u0026ldquo;Startmenü\u0026rdquo; \u0026ldquo;cmd\u0026rdquo; ein, klicken Sie mit der rechten Maustaste auf Eingabeaufforderung → \u0026ldquo;Als Administrator ausführen\u0026rdquo; .\nGeben Sie Folgendes in die Eingabeaufforderung ein und drücken Sie die Eingabetaste:\n1 slmgr /dli Nach ein paar Sekunden Wartezeit werden Lizenzinformationen wie die folgenden angezeigt.\nAngezeigte Hauptinformationen Ein Teil des Produktschlüssels Lizenztyp (Retail, OEM usw.) Lizenzstatus (Aktiv, abgelaufen, nicht authentifiziert usw.) Was ist, wenn Sie detailliertere Informationen wünschen? Es gibt auch Befehle wie die folgenden:\nslmgr /dlv : Zeigt detailliertere Lizenzinformationen an slmgr /xpr : Zeigt das Ablaufdatum der Lizenz an (ob sie dauerhaft ist usw.) Zusammenfassung Der Windows-Lizenzstatus lässt sich ganz einfach mit einem einzigen Befehl überprüfen.\nEinfache Überprüfung : slmgr /dli Detaillierte Überprüfung : slmgr /dlv Überprüfung des Ablaufdatums : slmgr /xpr Wenn es ein Problem mit Ihrer Lizenz gibt, kann es zu Einschränkungen bei Updates und bestimmten Funktionen kommen, daher ist es sicher, sie regelmäßig zu überprüfen.\n","date":"2025-04-14T00:41:45+09:00","image":"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_hudcf97514836ad006a409bb9b34fbe340_111425_120x120_fill_box_smart1_3.png","permalink":"http://kenji.blog/de/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/","title":"Befehl zum Überprüfen des Lizenzstatus von Windows"},{"content":"Für iOS optimierte ffmpeg-Konvertierungsparameter Wir stellen den ffmpeg-Befehl vor, um Videos für eine reibungslose Wiedergabe auf iOS-Geräten (iPhone und iPad) zu konvertieren.\n1 2 3 4 5 6 ffmpeg -i input.mp4 \\ -c:v libx264 -profile:v high -level 4.1 \\ -vf \u0026#34;scale=1920:-2\u0026#34; -r 30 \\ -crf 20 -preset slow \\ -c:a aac -b:a 128k -ar 48000 \\ -movflags +faststart output.mp4 Bedeutung jeder Option (Kurze Erklärung) Option Beschreibung -i input.mp4 Eingabedatei (zu konvertierendes Video) -c:v libx264 Video mit H.264 kodieren (iOS-kompatibel) -profile:v high -level 4.1 Weitgehend kompatibles Profil und Level für iOS -vf \u0026quot;scale=1920:-2\u0026quot; Größe auf 1920px Breite ändern, Höhe wird automatisch unter Beibehaltung des Seitenverhältnisses angepasst -r 30 Bildrate auf 30fps konvertieren -crf 20 Videoqualität (niedrigere Zahlen bedeuten höhere Qualität, empfohlen 18-23) -preset slow Gleichgewicht zwischen Kodierungsgeschwindigkeit und Kompressionsrate (slow bedeutet hohe Kompression und hohe Qualität) -c:a aac Audio wird im AAC-Format kodiert -b:a 128k Audio-Bitrate auf 128 kbps einstellen -ar 48000 Audio-Abtastrate auf 48 kHz einstellen (empfohlen für iOS) -movflags +faststart Setzt einen Index an den Anfang des Videos, um das Streaming im Web und unter iOS zu beschleunigen Mit diesen Einstellungen konvertierte Videos bieten voraussichtlich eine hohe Kompatibilität und reibungslose Wiedergabe auf Apple-Geräten wie iPhone und iPad.\nBei Bedarf können Sie die Dateigröße und Bildqualität anpassen, indem Sie Auflösung und Bitrate ändern. Wenn eine hohe Bildqualität erforderlich ist, versuchen Sie, -crf auf etwa 18 einzustellen; wenn Sie die Dateigröße reduzieren möchten, stellen Sie ihn auf 22-25 ein.\n","date":"2025-03-02T04:16:07+09:00","image":"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_hu6ca6c354dba8425c4a9e54b9842ad89b_30790_120x120_fill_box_smart1_3.png","permalink":"http://kenji.blog/de/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/","title":"ffmpeg Parameter für iOS"},{"content":"Verfahren zur Wiederherstellung von Android (Google Pixel)-Geräten Wenn Ihr Google Pixel-Gerät schwerwiegende Systemprobleme aufweist, wie z. B. \u0026ldquo;ständige Neustarts (Bootloop)\u0026rdquo;, \u0026ldquo;Hängenbleiben beim Logo-Bildschirm\u0026rdquo; oder \u0026ldquo;extrem instabiles Verhalten\u0026rdquo;, können Sie die Software des Geräts sicher über Ihren Browser reparieren (wiederherstellen), indem Sie das offizielle \u0026ldquo;Pixel Update and Software Repair\u0026rdquo; Tool von Google verwenden.\nIn diesem Artikel erklären wir die spezifischen Verfahren und Vorsichtsmaßnahmen im Detail.\n1. Auf das Wiederherstellungstool zugreifen Greifen Sie zunächst über den Browser Ihres PCs (Windows oder Mac) (Google Chrome oder Microsoft Edge wird empfohlen) auf die folgende offizielle Reparaturtool-Seite zu:\n🔗 Offizielle Website von Pixel Update and Software Repair\n※ Achtung ※ Bei der Ausführung des Wiederherstellungsprozesses können die Daten auf dem Gerät (Fotos, Apps, Kontakte usw.) vollständig gelöscht (initialisiert) werden. Wenn das Gerät noch bedienbar ist, führen Sie unbedingt vorher ein Backup in Google Drive oder Ähnlichem durch.\n2. Vorbereitung vor der Wiederherstellung Um einen reibungslosen Ablauf zu gewährleisten, bereiten Sie Folgendes vor:\nAkku aufladen Wenn während des Vorgangs der Strom ausfällt, besteht die Gefahr, dass das Gerät unbrauchbar wird (Brick). Stellen Sie sicher, dass der Akku zu mindestens 50 % oder im Idealfall vollständig aufgeladen ist. Verwendung des Original-USB-Kabels Um eine stabile Datenübertragung zu gewährleisten, wird dringend empfohlen, das mit dem Gerät gelieferte Original-USB-C-Kabel zu verwenden. Treiberinstallation (falls erforderlich) Bei Verwendung eines Windows-PCs wird das Gerät möglicherweise nicht richtig erkannt. Installieren Sie in diesem Fall bitte die Google USB-Treiber. 3. Spezifische Schritte zur Wiederherstellung Wenn Sie bereit sind, befolgen Sie die Anweisungen auf dem Bildschirm, um mit der Wiederherstellung fortzufahren.\nSchritt 1: Mobilfunkanbieter auswählen und Gerät anschließen Beim Öffnen der Website wird zunächst ein Bildschirm zur Auswahl des Mobilfunkanbieters angezeigt. Wenn es sich um ein entsperrtes Gerät oder ein Gerät ohne Vertragsbindung handelt, wählen Sie \u0026ldquo;Andere (Other)\u0026rdquo; usw. Schließen Sie danach den PC und das Pixel-Gerät mit einem USB-Kabel an.\nSchritt 2: Das Gerät in den \u0026ldquo;Rescue Mode (Fastboot-Modus)\u0026rdquo; versetzen Befolgen Sie die Anweisungen auf dem Bildschirm. Halten Sie bei ausgeschaltetem Gerät gleichzeitig die Ein-/Aus-Taste und die Leiser-Taste gedrückt , um den Fastboot-Modus zu starten (ein schwarzer Bildschirm mit einem liegenden Android-Roboter).\nSchritt 3: Das Gerät vom PC erkennen lassen Wenn Sie im Browser auf die Schaltfläche \u0026ldquo;Gerät verbinden\u0026rdquo; klicken, öffnet sich ein Pop-up-Fenster mit der Liste der angeschlossenen Pixel-Geräte. Wählen Sie das Zielgerät aus und lassen Sie die Verbindung zu.\nSchritt 4: Software herunterladen und installieren Sobald das Gerät erkannt wurde, wird automatisch die optimale Version des Android-Betriebssystems (Firmware) ausgewählt. Durch Klicken auf \u0026ldquo;Installieren\u0026rdquo; wird die Software auf den PC heruntergeladen und das Schreiben (Flashen) auf das Gerät beginnt sofort.\n⚠️ Warnung: Ziehen Sie während dieses Vorgangs niemals das USB-Kabel ab und schalten Sie den PC nicht aus.\nSchritt 5: Abschluss und Ersteinrichtung Wenn der Fortschrittsbalken 100 % erreicht und die Meldung \u0026ldquo;Abgeschlossen\u0026rdquo; angezeigt wird, war die Wiederherstellung erfolgreich. Das Gerät wird automatisch neu gestartet und derselbe Ersteinrichtungsbildschirm (\u0026ldquo;Hallo\u0026rdquo;-Bildschirm) wie beim Kauf wird angezeigt.\nZusammenfassung Das offizielle Reparaturtool für Google Pixel ist ein hervorragendes Tool, mit dem Sie Firmwares durch einfache Klicks im Browser sicher flashen können, ohne spezielle Befehle (adb oder fastboot) direkt eingeben zu müssen.\nBevor Sie Ihr Gerät wegen einer Fehlfunktion in ein Geschäft bringen, kann das Ausprobieren dieses Verfahrens das Problem möglicherweise leicht lösen. Probieren Sie es gerne aus.\n","date":"2025-02-28T01:20:41+09:00","image":"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_hu9d405d830ed3e56e9e703ab601cf6c0a_776052_120x120_fill_q75_box_smart1.jpg","permalink":"http://kenji.blog/de/p/androidgoogle-pixel%E7%AB%AF%E6%9C%AB%E3%81%AE%E5%BE%A9%E5%85%83%E6%89%8B%E9%A0%86/","title":"Verfahren zur Software-Wiederherstellung (Initialisierung/Reparatur) für Android (Google Pixel)-Geräte"},{"content":"Gmail mit curl senden 1. App-Passwort abrufen https://myaccount.google.com/apppasswords Klicken Sie auf den obigen Link und geben Sie den App-Namen ein. Speichern Sie das generierte Passwort.\n2. E-Mail mit dem curl-Befehl senden Führen Sie den folgenden Befehl aus.\nIm folgenden Beispiel wird der E-Mail-Inhalt in mail.txt geschrieben.\n1 2 3 4 5 6 From: from@gmail.com To: to@gmail.com Subject: Test-E-Mail Content-Type: text/plain; charset=\u0026#34;UTF-8\u0026#34; Dies ist eine Test-E-Mail. Erstellen Sie die obige Datei und führen Sie den folgenden Befehl aus.\n1 curl --url \u0026#34;smtps://smtp.gmail.com:465\u0026#34; --ssl-reqd --mail-from \u0026#34;from@gmail.com\u0026#34; --mail-rcpt \u0026#34;to@gmail.com\u0026#34; --user \u0026#34;from@gmail.com:xxxxxxxxxxxxxxxx\u0026#34; --upload-file mail.txt ※ Bitte ersetzen Sie xxxxxxxxxxxxxxxx durch Ihr App-Passwort.\n","date":"2025-02-27T02:13:31+09:00","image":"http://kenji.blog/p/gmail%E3%82%92curl%E3%81%8B%E3%82%89%E9%80%81%E3%82%8B/img_hua1028a8ea194106f3853f4bdf4e1e991_75790_120x120_fill_box_smart1_3.png","permalink":"http://kenji.blog/de/p/gmail-mit-curl-senden/","title":"Gmail mit curl senden"},{"content":"Einführung in Beispielcode mit der Standardbibliothek.\nEin Bild herunterladen und anzeigen 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 import urllib.request import tempfile import os import webbrowser import time url = \u0026#34;https://www.aomori-ringo.or.jp/kids/wp-content/uploads/2021/11/apple.png\u0026#34; try: with urllib.request.urlopen(url) as response: img_data = response.read() # In einer temporären Datei speichern und anzeigen with tempfile.NamedTemporaryFile(delete=False, suffix=\u0026#34;.png\u0026#34;) as tmp: tmp.write(img_data) print(f\u0026#34;file://{tmp.name}\u0026#34;) webbrowser.open(f\u0026#34;file://{tmp.name}\u0026#34;) time.sleep(3) except Exception as e: print(f\u0026#34;Ein Fehler ist aufgetreten: {e}\u0026#34;) finally: if \u0026#39;tmp\u0026#39; in locals(): os.unlink(tmp.name) # Temporäre Datei löschen ","date":"2025-02-24T18:21:14+09:00","image":"http://kenji.blog/p/python%E3%82%B3%E3%83%BC%E3%83%89%E7%89%87/img_hu6807d8c9816a78d77990562cff91e319_70806_120x120_fill_box_smart1_3.png","permalink":"http://kenji.blog/de/p/python%E3%82%B3%E3%83%BC%E3%83%89%E7%89%87/","title":"Python-Code-Schnipsel"},{"content":"ChatGPT API über curl aufrufen Es wird davon ausgegangen, dass der Aufruf über die Windows-Eingabeaufforderung erfolgt.\n1 2 curl https://api.openai.com/v1/chat/completions -H \u0026#34;Content-Type: application/json\u0026#34; -H \u0026#34;Authorization: Bearer sk-proj-XXXXXXXXXXXXXXXXXXXX\u0026#34; -d \u0026#34;{\u0026#34;\u0026#34;model\u0026#34;\u0026#34;: \u0026#34;\u0026#34;gpt-3.5-turbo\u0026#34;\u0026#34;,\u0026#34;\u0026#34;messages\u0026#34;\u0026#34;: [{\u0026#34;\u0026#34;role\u0026#34;\u0026#34;: \u0026#34;\u0026#34;system\u0026#34;\u0026#34;, \u0026#34;\u0026#34;content\u0026#34;\u0026#34;: \u0026#34;\u0026#34;Bitte im Kansai-Dialekt antworten.\u0026#34;\u0026#34;}, {\u0026#34;\u0026#34;role\u0026#34;\u0026#34;: \u0026#34;\u0026#34;user\u0026#34;\u0026#34;, \u0026#34;\u0026#34;content\u0026#34;\u0026#34;: \u0026#34;\u0026#34;Fügen Sie hier die Nachricht ein, die Sie senden möchten\u0026#34;\u0026#34;}]}\u0026#34; ","date":"2025-02-01T17:15:34+09:00","image":"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_huc9cfad0a382aa812189dd7635d7709f2_1078030_120x120_fill_box_smart1_3.png","permalink":"http://kenji.blog/de/p/chatgpt-api%E3%82%92curl%E3%81%8B%E3%82%89%E5%91%BC%E3%81%B3%E5%87%BA%E3%81%99/","title":"ChatGPT API über curl aufrufen"},{"content":"Zusammenfassung Dividendenstarker Aktien Mitsubishi UFJ Financial Group (8306) Sumitomo Mitsui Financial Group (8316) Mitsubishi Corporation (8058) Itochu Corporation (8001) NTT (9432) KDDI (9433) Okinawa Cellular Telephone (9436) Tokio Marine Holdings (8766) Toyota Motor (7203) Yamaha Motor (7272) Asahi Group Holdings (2502) Kirin Holdings (2503) JT (2914) Bridgestone (5108) Daiwa House Industry (1925) Sekisui House (1928) Kyocera (6971) Shin-Etsu Chemical (4063) Nitto Denko (6988) Orix (8591) Mitsubishi HC Capital (8593) Hulic (3003) ","date":"2024-12-22T00:56:14+09:00","image":"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_huf2943e4fc5463d0d6e36ddd1be1ac839_1663544_120x120_fill_box_smart1_3.png","permalink":"http://kenji.blog/de/p/%E9%AB%98%E9%85%8D%E5%BD%93%E6%A0%AA%E3%81%BE%E3%81%A8%E3%82%81/","title":"Zusammenfassung Dividendenstarker Aktien"},{"content":"Langfristige Ziele In 1 Jahr Das Unternehmen gründen Eine Website erstellen und Software (kostenlos) veröffentlichen In 2 Jahren Jahresumsatz von 10 Millionen Yen Ein Buch veröffentlichen Software (kostenpflichtig) veröffentlichen In 3 Jahren Jahresumsatz von 100 Millionen Yen In 5 Jahren Jahresumsatz von 1 Milliarde Yen In 10 Jahren Jahresumsatz von 10 Milliarden Yen Kurzfristige Ziele In 1 Monat Einen Geschäftsplan erstellen In 3 Monaten Mittel zur Unternehmensgründung beschaffen (ca. 5 Millionen Yen) In 6 Monaten Das Unternehmen gründen In 1 Jahr Das Unternehmen auf Kurs bringen Aktuelle Aufgaben Klärung von Zielen und Vision\nZweck: Warum wird die Software entwickelt? Beispiel: Ein Problem lösen, neuen Wert schaffen, einen bestimmten Nischenmarkt anvisieren usw. Vision: Welche Art von Zukunft möchten Sie mit der Software verwirklichen? Beispiel: Geschäftseffizienz, Komfort im Alltag, Verbesserung der Bildungsqualität usw. Marktforschung und Bedarfsanalyse\nZielgruppe: Wer wird die Software nutzen? Geben Sie Altersgruppe, Beruf, Interessen usw. an. Wettbewerbsanalyse: Gibt es Konkurrenten im selben Bereich? Analysieren Sie ihre Stärken und Schwächen. Bedarfsermittlung: Verstehen Sie die ungelösten Probleme und Anforderungen der Zielgruppe. Softwaredesign und Funktionen\nGrundfunktionen: Listen Sie wesentliche Funktionen auf. Beispiel: Benutzerauthentifizierung, Datenspeicherung, Analysefunktionen usw. Unterscheidungsmerkmale: Klären Sie, was es im Vergleich zu Produkten anderer Unternehmen einzigartig macht. Beispiel: Einfache Benutzeroberfläche, Einsatz von KI, hohe Anpassbarkeit. Technische Spezifikationen: Zu verwendende Programmiersprache, Framework, Datenbank usw. Entwicklungsplan und Ressourcenzuweisung\nEntwicklungszeitplan: Legen Sie einen Zeitplan für jede Phase des Projekts fest. Beispiel: Prototypenentwicklung, Tests, offizielle Veröffentlichung. Teamzusammensetzung: Erforderliche Talente und Fähigkeiten (Programmierer, Designer, Vermarkter usw.). Budget: Schätzen Sie Entwicklungskosten, Marketingkosten und Betriebskosten. Marketing und Ertragsmodell\nWerbemethoden: Nutzen Sie soziale Medien, Websites, Werbung usw., um die Bekanntheit zu steigern. Monetarisierungsstrategie: Ziehen Sie Optionen wie kostenlose + kostenpflichtige Version, monatliches Abonnement, Werbeeinnahmen usw. in Betracht. Strategie zur Benutzerakquise: Bieten Sie kostenlose Testversionen an, fördern Sie Mundpropaganda, bauen Sie eine Benutzer-Community auf usw. Betrieb und Skalierung\nBetrieb nach der Veröffentlichung: Sammeln von Benutzerfeedback, Beheben von Fehlern, Hinzufügen neuer Funktionen. Wachstumsstrategie: Planen Sie, wie die Anzahl der Benutzer erhöht, in andere Länder expandiert und neue Funktionen entwickelt werden sollen. Risikomanagement: Bereiten Sie Gegenmaßnahmen für rechtliche und technische Probleme vor. ","date":"2024-12-08T03:32:34+09:00","image":"http://kenji.blog/p/%E7%9B%AE%E6%A8%99/img_huc6a3627da74a1082cbdd433fea41830c_4007614_120x120_fill_box_smart1_3.png","permalink":"http://kenji.blog/de/p/ziele/","title":"Ziele"},{"content":"In letzter Zeit habe ich mich für Lederprodukte interessiert und verschiedene Artikel gekauft. Dabei ist auch mein Interesse an der Pflege von Lederprodukten gewachsen, und ich habe einige entsprechende Artikel vorbereitet, die ich Ihnen vorstellen möchte.\nKürzlich Gekaufte Lederpflegeprodukte M.MOWBRAY DELICATE CREAM Preis: ca. 1.320 Yen\nDiese Creme bietet Nährstoffe, Feuchtigkeit und Geschmeidigkeit. Sie verleiht keinen Glanz, eignet sich aber für Leder, das viel Feuchtigkeit benötigt. Der Geruch ist nicht unangenehm, aber sie hat einen leichten Eigengeruch. Da sie farblos ist, halte ich sie für sehr vielseitig. Da es eine eher dünnflüssige Creme ist, kann es gut sein, im Vergleich zu anderen Cremes etwas mehr davon zu verwenden.\nCollonil 1909 Supreme Creme de Luxe Preis: ca. 1.777 Yen\nEine bekannte, standardmäßige und vielseitige Creme, die nicht leicht Flecken verursacht. Es ist eine Creme, die die Farbe des Leders auffrischt und es geschmeidig hält. Sie verleiht ein wenig Glanz. Da sie weiß ist, scheint auch eine wasserabweisende Wirkung zu erwarten zu sein.\nM.MOWBRAY SHOE CREAM (Schwarz) Preis: ca. 1.000 Yen\nCreme für Schuhe. Enthält Wachs, Öl und organische Lösungsmittel. Frischt die Lederfarbe auf und verleiht Glanz. Da sie schwarz ist, wird sie für schwarzes Leder verwendet. Ich verwende sie für meine Anzugschuhe.\nM.MOWBRAY STAIN REMOVER Preis: ca. 700 Yen\nDieses Produkt war dabei, als ich eine Bürste gekauft habe. Wasserbasierter Reiniger für Schuhe. Entfernt Schmutz vom Leder. Indem man ein Tuch großzügig tränkt und sanft über das Leder reibt, wird der Schmutz entfernt.\n","date":"2024-10-30T00:31:46+09:00","image":"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_hu3ddba03af9cef883a82321d0a762e708_211817_120x120_fill_box_smart1_3.png","permalink":"http://kenji.blog/de/p/pflege-von-lederprodukten/","title":"Pflege von Lederprodukten"},{"content":"Hallo! Heute geht es um \u0026ldquo;Hanlons Rasiermesser\u0026rdquo; Heute möchte ich über eine Denkweise mit einem etwas ungewöhnlichen Namen schreiben, die sich \u0026ldquo;Hanlons Rasiermesser\u0026rdquo; nennt. Wenn man nur den Namen hört, denkt man vielleicht: \u0026ldquo;Klingt das unheimlich\u0026hellip;?\u0026rdquo;, aber in Wirklichkeit ist es eine Idee, die uns eine sehr vertraute und freundliche Perspektive gibt.\nHaben Sie jemals gedacht: \u0026ldquo;Ich glaube, diese Person mag mich nicht\u0026hellip;\u0026rdquo;? Haben Sie das zum Beispiel schon einmal erlebt?\nVerspätete Antwort auf WhatsApp Wir hatten Augenkontakt, aber ich wurde nicht gegrüßt Meine Bitte wurde ignoriert In solchen Momenten macht man sich Sorgen: \u0026ldquo;Hassen sie mich vielleicht?\u0026rdquo;. Das passiert mir auch oft. Und dann werde ich ganz umsonst deprimiert.\nWas ist Hanlons Rasiermesser? Hier kommt \u0026ldquo;Hanlons Rasiermesser\u0026rdquo; ins Spiel.\nDer ursprüngliche englische Begriff lautet \u0026ldquo;Hanlon\u0026rsquo;s Razor\u0026rdquo;. Die Bedeutung ist im Groben folgende:\n\u0026ldquo;Schreibe niemals der Böswilligkeit zu, was ausreichend durch Dummheit erklärt werden kann.\u0026rdquo;\n\u0026hellip;Das ist etwas hart ausgedrückt, nicht wahr? Um es etwas weicher zu formulieren:\n\u0026ldquo;Auch wenn es so aussieht, als ob die andere Person gemein zu dir ist, könnte es sich nur um ein Versehen oder Unaufmerksamkeit handeln.\u0026rdquo;\nDas ist die Idee dahinter.\nWer hat sich das ausgedacht? Wer ist Robert J. Hanlon? Es heißt, dass dieser Begriff zum ersten Mal in dem 1980 erschienenen Buch \u0026ldquo;Murphy\u0026rsquo;s Law Book Two\u0026rdquo; auftauchte.\nDie Idee, die von einem der Autoren, Robert J. Hanlon , eingereicht wurde, wurde genau so übernommen, wie er sie formuliert hatte, und erhielt so den Namen \u0026ldquo;Hanlons Rasiermesser\u0026rdquo;.\nÜbrigens wird dieser Begriff \u0026ldquo;Rasiermesser\u0026rdquo; (Razor) im Sinne eines philosophischen Werkzeugs verwendet, um \u0026ldquo;Unnötiges wegzuschneiden und einfach zu denken\u0026rdquo;, und ist ein Ausdruck, der neben Ockhams Rasiermesser und anderen zur Ordnung von Gedanken verwendet wird.\nZu denken, dass \u0026ldquo;böse Absicht\u0026rdquo; im Spiel war, ist anstrengend Zum Beispiel, wenn eine E-Mail bei der Arbeit ignoriert wird.\nWenn man denkt: \u0026ldquo;Warum antworten sie mir nicht? Hassen sie mich?\u0026rdquo;, wird man immer negativer.\nAber wenn man genau darüber nachdenkt:\nDie Person hat es einfach übersehen Sie hat die Antwort geschrieben, aber vergessen, sie abzuschicken Die Benachrichtigung auf dem Handy ging unter anderen unter Solche Gründe sind erstaunlich häufig. Und wir machen solche Fehler auch selbst.\nDie seltsame Tatsache, dass wir tolerant gegenüber unseren eigenen Fehlern sind, aber streng bei denen anderer Zum Beispiel, wenn wir vergessen, auf die Nachricht eines Freundes zu antworten.\nWir antworten in einem völlig böswilligen Tonfall: \u0026ldquo;Oh, tut mir leid! Ich habe die Benachrichtigung nicht gesehen~\u0026rdquo;.\nAber wenn die andere Person uns dasselbe antut, denken wir: \u0026ldquo;Ich wurde ignoriert\u0026rdquo;.\nDas ist sehr üblich. Menschen haben viel Verständnis für ihre eigenen Umstände, aber es fällt ihnen schwer, die der anderen zu sehen.\nZu glauben, dass \u0026ldquo;Böswilligkeit\u0026rdquo; vorliegt, ist eigentlich ein Verlust für einen selbst Wenn jemand etwas tut und man davon ausgeht, dass \u0026ldquo;Böswilligkeit im Spiel ist\u0026rdquo;, macht man diese Person in seinen Gedanken zu einem Feind.\nAber in Wirklichkeit ist die Person vielleicht einfach nur ungeschickt oder mit anderen Dingen überlastet.\nNatürlich gibt es Menschen, die wirklich unhöflich sind, und es ist ganz natürlich, dass man sich verletzt fühlt, wenn man schlecht behandelt wird.\nAber wenn man nicht davon ausgeht, dass es \u0026ldquo;sicherlich Böswilligkeit\u0026rdquo; ist, wird das eigene Herz ein wenig leichter.\nDas heißt aber nicht, dass man alles ertragen muss Was Sie hier nicht falsch verstehen dürfen, ist: Ich sage nicht, dass \u0026ldquo;Sie sich einfach zu viele Sorgen machen\u0026rdquo;.\nWenn Ihnen etwas Unangenehmes angetan wird, ist es völlig in Ordnung zu denken: \u0026ldquo;Das war wirklich fies\u0026rdquo;.\nAnstatt jedoch davon auszugehen, dass \u0026ldquo;diese Person einen schlechten Charakter hat\u0026rdquo; oder \u0026ldquo;sie mich absichtlich verletzen wollte\u0026rdquo;,\nist mein Vorschlag, ein wenig flexibel zu sein und zu denken: \u0026ldquo;Vielleicht hatte sie ihre Gründe\u0026rdquo;.\nFazit: Die Dinge mit ein wenig mehr Freundlichkeit zu betrachten, kann Ihre Welt verändern Ich glaube, dass es bei Hanlons Rasiermesser weniger darum geht, \u0026ldquo;freundlich zu anderen zu sein\u0026rdquo;, als vielmehr um eine \u0026ldquo;Methode, das eigene Herz zu schützen\u0026rdquo;.\nWenn man in den Handlungen anderer Menschen Böswilligkeit spürt, werden die eigenen Gefühle ebenfalls angespannt.\nAber wenn man sich denken kann: \u0026ldquo;Vielleicht war es nur ein Fehler, oder sie hatten keine Zeit\u0026rdquo;, fühlt man sich ein wenig besser.\nEs ist eine Denkweise, die man zu seinem eigenen Wohl nutzen kann.\nZum Schluss: Bitte teilen Sie auch Ihre Erfahrungen mit Vielen Dank, dass Sie bis hierhin gelesen haben.\nWenn Sie eine Geschichte haben, in der Sie sich \u0026ldquo;in solchen Momenten geärgert haben\u0026rdquo;, lassen Sie es mich bitte wissen.\nAllein schon die eigenen Erfahrungen in Worte zu fassen, kann das Herz ein wenig erleichtern, nicht wahr?\nBis zum nächsten Mal!\n","date":"2024-09-24T18:14:34+09:00","image":"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_hu0c32762ee7cb281fb24d789425dae55e_82924_120x120_fill_box_smart1_3.png","permalink":"http://kenji.blog/de/p/hanlons-rasiermesser/","title":"Hanlons Rasiermesser"},{"content":"Grundwissen über Computer Auf dieser Seite wird erklärt, was ein Computer ist.\nDefinition eines Computers Ein Computer ist eine Maschine, die aus den folgenden 5 Einheiten besteht:\nEingabegerät Ausgabegerät Speichergerät Steuerwerk Rechenwerk Kurz gesagt ist ein Computer eine Maschine, die eine bestimmte Verarbeitung für eine gegebene Eingabe durchführt und das Ergebnis ausgibt. Er kann eingegebene Daten speichern, Operationen durchführen und ausgeben. Die Steuerung ist dafür zuständig, die oben genannten 4 Einheiten zu steuern.\nWas zum Betrieb eines Computers benötigt wird Um einen Computer zu betreiben, werden neben den Geräten (Hardware) auch Programme (Software) benötigt.\nIn einem Programm geben wir dem Computer Anweisungen, welche Art von Verarbeitung durchgeführt werden soll. Programme sind in einem Format geschrieben, das der Computer verstehen kann.\nEin Beispiel für ein Programm ist unten dargestellt: Ein Programm, das die Summe von 1 bis zu einer eingegebenen ganzen Zahl berechnet.\n1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 #include \u0026lt;iostream\u0026gt; using namespace std; int main() { // Zuweisung des benötigten Speicherplatzes int n, sum = 0; // Ausgabe cout \u0026lt;\u0026lt; \u0026#34;Bitte geben Sie eine ganze Zahl ein: \u0026#34;; // Eingabe cin \u0026gt;\u0026gt; n; // Operation for (int i = 1; i \u0026lt;= n; i++) { // Operation sum += i; } // Ausgabe cout \u0026lt;\u0026lt; \u0026#34;Die Summe von 1 bis \u0026#34; \u0026lt;\u0026lt; n \u0026lt;\u0026lt; \u0026#34; ist \u0026#34; \u0026lt;\u0026lt; sum \u0026lt;\u0026lt; \u0026#34;.\u0026#34; \u0026lt;\u0026lt; endl; // Ende return 0; } Das Programm wird durch einen Compiler in Maschinencode umgewandelt und in ein Format konvertiert, das der Computer ausführen kann.\n","date":"2024-09-19T01:10:20+09:00","image":"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_hubc9c51905d797e9d57f0ff169cf73b36_367819_120x120_fill_box_smart1_3.png","permalink":"http://kenji.blog/de/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/","title":"Grundwissen über Computer"},{"content":"Empfohlene iOS-Apps X Instagram facebook youtube TikTok Microsoft Edge Firefox Google Chrome ChatGPT LINE Microsoft Teams Notion Goodnotes 6 TeamViewer DropBox GitHub Amazon PayPay WolframAlpha Mercari ","date":"2024-09-18T23:31:20+09:00","image":"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_huad2df38b51218b64bee99f031553dd91_79847_120x120_fill_box_smart1_3.png","permalink":"http://kenji.blog/de/p/empfohlene-ios-apps/","title":"Empfohlene iOS-Apps"},{"content":"Das alte Ehepaar, der Esel und unser Problem, \u0026ldquo;auf wen wir hören sollen\u0026rdquo; Hallo!\nHeute möchte ich über etwas sprechen, das mich nach dem Hören der \u0026ldquo;Geschichte vom alten Ehepaar und dem Esel\u0026rdquo; zum Nachdenken gebracht hat.\nIch bin mir sicher, viele von euch haben sie schon gehört. Es ist eine dieser berühmten Fabeln.\nWas ist \u0026ldquo;Die Geschichte vom alten Ehepaar und dem Esel\u0026rdquo;? Es war einmal ein altes Ehepaar und ein Esel.\nAm Anfang ritt der alte Mann auf dem Esel, und seine Frau ging zu Fuß. Da sagte ein Vorübergehender:\n\u0026ldquo;Was für ein Mann, der seine alte Frau laufen lässt, während er selbst reitet!\u0026rdquo;\nAls sie das hörten, beschloss das Paar, dass die Frau auf dem Esel reiten sollte. Dann sagte jemand anderes:\n\u0026ldquo;Es ist empörend, dass eine Frau auf dem Esel reitet und den Mann laufen lässt!\u0026rdquo;\nAlso beschlossen sie, dass beide auf dem Esel reiten sollten. Dann hörten sie:\n\u0026ldquo;Armer Esel, zwei Personen sind viel zu schwer!\u0026rdquo;\nWenn das so ist, stiegen beide vom Esel ab und fingen an zu laufen. Aber dann\u0026hellip;\n\u0026ldquo;Warum reitet niemand, wenn ihr einen Esel habt?\u0026rdquo;\nAm Ende war das alte Ehepaar völlig ratlos.\n\u0026ldquo;Sich die Meinung aller anhören\u0026rdquo; ist ein valides Argument, aber\u0026hellip; Diese Geschichte wird oft als Lektion verstanden: \u0026ldquo;Wenn du dich zu sehr darum kümmerst, was andere denken, wird das nie ein Ende nehmen.\u0026rdquo;\nAber die Realität ist nicht so einfach.\nEs gibt viele Menschen, die sagen: \u0026ldquo;Kümmere dich nicht darum, was andere denken!\u0026rdquo;\nJedoch ist es etwas schwierig, alles zu ignorieren. Zum Beispiel, wenn man etwas in den sozialen Medien postet. Oder wenn man überlegt, worüber man auf der Firmenfeier sprechen soll. Man kümmert sich unweigerlich um die Reaktion von jemandem.\nDas liegt daran, dass \u0026ldquo;die Meinungen anderer\u0026rdquo; oft unsere Sicherheit und Bewertung betreffen.\nDennoch macht es das Leben schwer, wenn man sich zu sehr beeinflussen lässt Ich glaube, am Anfang dachte sich dieses Paar einfach nur: \u0026ldquo;Was sollen wir tun?\u0026rdquo;\nAber egal, was sie taten, jemand beschwerte sich immer.\nUnd dann fingen sie an, sich im Kreis zu drehen: \u0026ldquo;Dann lass uns das so machen\u0026rdquo;, \u0026ldquo;Vielleicht ist das besser?\u0026rdquo;, und ehe sie sich versahen, verloren sie aus den Augen, was sie eigentlich tun wollten.\nDas passiert auch in unserem Alltag sehr oft.\nDie Erwartungen des Chefs, die Worte der Eltern, die Anzahl der \u0026ldquo;Likes\u0026rdquo; in den sozialen Medien. Wenn man sich all dem anpasst, hat man nicht manchmal das Gefühl, zu vergessen, was man eigentlich wirklich tun möchte?\nEs ist wichtig zu wählen, \u0026ldquo;auf wen man hört\u0026rdquo; Was sollen wir also tun? Es gibt keine richtige Antwort.\nAllerdings ist es realistischerweise unmöglich, \u0026ldquo;der Meinung aller zu folgen\u0026rdquo;.\nDeshalb glaube ich, dass es wichtig ist, selbst zu entscheiden, \u0026ldquo;auf wen man hört\u0026rdquo;.\nZum Beispiel: \u0026ldquo;Nur auf den Rat von Menschen hören, die man respektiert\u0026rdquo;, oder \u0026ldquo;als Maßstab nehmen, ob das eigene \u0026lsquo;Ich\u0026rsquo; aus der Vergangenheit damit einverstanden wäre\u0026rdquo;.\nWenn man nur einen einzigen Maßstab hat, bei dem man denkt: \u0026ldquo;Daran möchte ich glauben\u0026rdquo;, wird der Lärm der Welt ein wenig leiser.\nAlso, wenn du dich ein wenig müde fühlst Könnte es gut sein, sich an die Geschichte vom \u0026ldquo;alten Ehepaar und dem Esel\u0026rdquo; zu erinnern.\nEs ist leicht, sich Sorgen über die Blicke anderer zu machen.\nAber wenn du versuchst, es allen recht zu machen, wirst du am Ende auch vom Esel steigen.\nManchmal kann der Gedanke \u0026ldquo;Vielleicht ist es in Ordnung, meinen eigenen Gefühlen Vorrang zu geben\u0026rdquo; das Herz ein wenig leichter machen.\n","date":"2024-09-18T00:56:59+09:00","image":"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_hu4e12b653e0413f37819b2904ce683e39_500631_120x120_fill_box_smart1_3.png","permalink":"http://kenji.blog/de/p/die-geschichte-vom-alten-ehepaar-und-dem-esel/","title":"Die Geschichte vom alten Ehepaar und dem Esel"},{"content":"Warum es fast unmöglich war, die blaue LED herzustellen Einführung in eine englische Dokumentation. Sehr interessant. Es entsteht der starke Eindruck, dass der Japaner, der dieses extrem schwierige Problem gelöst hat, anfangs in Japan nicht sehr geschätzt wurde.\n","date":"2024-09-15T00:43:52+09:00","image":"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_hu003acf083dbe465265af012766f30af7_1201686_120x120_fill_box_smart1_3.png","permalink":"http://kenji.blog/de/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/","title":"Warum es fast unmöglich war, die blaue LED herzustellen"},{"content":"Starten der Qt-Entwicklung in VSCode: So installieren Sie das Qt Extension Pack Hallo, hier ist Kenji. Dieses Mal werde ich vorstellen, „wie man die Qt-Entwicklungsumgebung in Visual Studio Code (im Folgenden VSCode) einrichtet“.\nIn letzter Zeit möchten neben dem offiziellen Qt Creator immer mehr Menschen Qt-Apps mit VSCode entwickeln, das leichtgewichtig und in hohem Maße erweiterbar ist. Für diese Personen empfehle ich das \u0026ldquo;Qt Extension Pack\u0026rdquo; . Wenn Sie dieses Erweiterungspaket installieren, erhalten Sie auf einen Schlag die wichtigsten Qt-bezogenen Erweiterungen.\nZielpublikum Diejenigen, die mit der Entwicklung von GUI-Apps mit Qt beginnen möchten Diejenigen, die in VSCode statt im Qt Creator entwickeln möchten Diejenigen, die es mühsam finden, Erweiterungen einzeln zu suchen Voraussetzungen VSCode muss installiert sein (Sie können es kostenlos von der offiziellen Website herunterladen) Die Qt-Bibliothek selbst muss installiert sein (Offizielle Qt-Website) Was ist das Qt Extension Pack? Das Qt Extension Pack ist ein Erweiterungspaket für VSCode. Durch die Installation werden die folgenden Funktionen automatisch hinzugefügt:\nUnterstützung für .ui-Dateien (Qt Designer) Syntax-Hervorhebung für .pro- und .qrc-Dateien C++-Code-Vervollständigung, Build- und Debugging-Unterstützung für Qt Qt Resource Browser (Ressourcenreferenz) Installationsanweisungen 1. VSCode öffnen Starten Sie zunächst VSCode.\n2. Erweiterungsansicht öffnen Klicken Sie auf die Aktivitätsleiste auf der linken Seite (quadratisches Block-Symbol), um die „Erweiterungen“ anzuzeigen.\nOder Sie können die Tastenkombination Ctrl + Shift + X drücken.\n3. Nach \u0026ldquo;Qt Extension Pack\u0026rdquo; suchen Geben Sie das folgende Schlüsselwort in die Suchleiste ein:\n1 Qt Extension Pack 4. Auf die Schaltfläche \u0026ldquo;Installieren\u0026rdquo; klicken Wenn das Zielpaket angezeigt wird, klicken Sie auf die Schaltfläche „Installieren“. Dadurch werden mehrere Erweiterungen auf einmal installiert, wie zum Beispiel die folgenden:\nQt Language Support QML Support Qt Designer Integration CMake Tools (unerlässlich für die CMake-kompatible Qt-Entwicklung) Zusätzliche Projekteinstellungen (Beispiel CMake + Qt) Wenn Sie das CMake-basierte Qt verwenden, empfehlen wir die Kombination mit den folgenden Erweiterungen:\nCMake Tools CMake Language Support Wenn Sie außerdem die folgende Beschreibung in die CMakeLists.txt einfügen, verläuft die Integration mit Qt reibungslos:\n1 2 find_package(Qt6 REQUIRED COMPONENTS Widgets) target_link_libraries(MyApp PRIVATE Qt6::Widgets) Bonus: Wie öffne ich .ui-Dateien? .ui-Dateien können im Qt Designer bearbeitet werden. In VSCode können Sie mit der rechten Maustaste auf die .ui-Datei klicken → Open with Qt Designer auswählen (Qt Designer muss in der Umgebungsvariablen PATH enthalten sein).\nZusammenfassung Schritt Inhalt 1 VSCode starten 2 Erweiterungspanel öffnen 3 Nach \u0026ldquo;Qt Extension Pack\u0026rdquo; suchen 4 Auf die Schaltfläche Installieren klicken Der Aufbau einer Qt-Umgebung in VSCode ist viel einfacher geworden als früher. Es verfügt über genügend Funktionen als Alternative zum Qt Creator und ist für diejenigen zu empfehlen, die leichtgewichtig arbeiten möchten.\nEmpfohlene Linksammlung Qt Offiziell Qt Extension Pack - Visual Studio Marketplace VSCode Offiziell CMake Tools Erweiterung Zum Schluss In Zukunft plane ich, die Entwicklung unter Verwendung der UI-Tools von Qt und QML in dieser Umgebung voranzutreiben. Beim nächsten Mal werde ich erklären, wie man eine Qt Hello World-App aus VSCode heraus erstellt und ausführt .\nBis bald!\n","date":"2024-09-13T00:53:53+09:00","image":"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_hu3662f535d644da02b1919ea56b7b16c2_319254_120x120_fill_box_smart1_3.png","permalink":"http://kenji.blog/de/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/","title":"Ich habe versucht, das Qt Extension Pack in Visual Studio Code zu installieren"},{"content":"So überprüfen Sie, ob Ihr iPhone SIM-gesperrt ist Home-Bildschirm \u0026gt; Einstellungen \u0026gt; Allgemein \u0026gt; Info \u0026gt; Netzbetreibersperre\nÜberprüfen Sie, ob \u0026ldquo;Keine SIM-Einschränkungen\u0026rdquo; angezeigt wird oder ob eine Sperre vorliegt.\n","date":"2024-09-12T00:32:11+09:00","image":"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_huadfe7e53f677430d2790fc209a2a5361_107562_120x120_fill_box_smart1_3.png","permalink":"http://kenji.blog/de/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/","title":"So überprüfen Sie, ob Ihr iPhone SIM-gesperrt ist"},{"content":"Überblick 1 Die Klasse P ist die Klasse von Problemen, die in polynomieller Zeit von einer deterministischen Turingmaschine entschieden werden können, und die Klasse NP ist die Klasse von Problemen, bei denen bei Vorliegen eines Beweises (genannt Witness oder Zeuge) für die Antwort \u0026#34;Ja\u0026#34; die Gültigkeit des Witness in polynomieller Zeit beurteilt (das nennt man Verifikation) werden kann. Da in polynomieller Zeit entscheidbare Probleme in polynomieller Zeit verifiziert werden können, ist offensichtlich P⊆NP, aber es ist nicht klar, ob P eine echte Teilmenge von NP ist. Es gibt noch keinen Beweis, aber viele Forscher glauben, dass P≠NP ist. Die Vermutung, dass diese Klasse P und Klasse NP nicht gleich sind, wird als \u0026#34;P≠NP-Vermutung\u0026#34; bezeichnet. Referenzseite : https://daigakudenki.com/np-hard/\n","date":"2024-09-11T02:22:39+09:00","permalink":"http://kenji.blog/de/p/pnp%E4%BA%88%E6%83%B3/","title":"P≠NP-Vermutung"},{"content":"Ich wurde erneut als Microsoft MVP (2024-2025) ausgezeichnet Hallo, ich bin kenji. Ich freue mich, euch mitteilen zu können, dass ich auch dieses Jahr wieder als Microsoft MVP (Most Valuable Professional) ausgezeichnet wurde. Dies ist das 8. Mal, dass ich diese Auszeichnung erhalte.\nBei dieser Gelegenheit möchte ich ein wenig darüber schreiben, was ein MVP eigentlich ist.\nWas ist ein Microsoft MVP? Auch wenn es MVP heißt, sprechen wir nicht über den wertvollsten Spieler im Sport (obwohl ich das manchmal gefragt werde\u0026hellip;). Der Microsoft MVP (Most Valuable Professional) ist ein Titel für Personen, die ihr Wissen und ihre Erfahrungen über Microsoft-Technologien aktiv mit der Community teilen.\nTechnische Blogs schreiben, Fragen auf Q\u0026amp;A-Websites beantworten, Beispielcode veröffentlichen oder bei Veranstaltungen präsentieren. \u0026ldquo;Wissen auf eine Weise zu teilen, die für andere nützlich ist\u0026rdquo; ―― solche stetigen Aktivitäten werden bewertet.\nEs gibt Preisträger auf der ganzen Welt, aber die Anzahl ist jedes Jahr begrenzt, und es ist nicht einfach, erneut ausgezeichnet zu werden. Unter diesen Umständen bin ich wirklich dankbar, erneut anerkannt worden zu sein.\nGrund für die Auszeichnung Diese Auszeichnung ist eine Erneuerung in der Kategorie \u0026ldquo;Developer Technologies\u0026rdquo;. Im vergangenen Jahr habe ich mich unter anderem mit folgenden Aktivitäten beschäftigt:\nSchreiben von Blogartikeln über Microsoft-Technologien Veröffentlichen von Antworten auf technischen Q\u0026amp;A-Websites Veröffentlichen von Beispielcode auf GitHub Vorträge bei Lerngruppen und Technologie-Events Nichts davon ist außergewöhnlich, aber ich habe immer versucht, \u0026ldquo;was ich ausprobiert habe und was funktioniert hat\u0026rdquo; und \u0026ldquo;wo ich gestolpert bin, es aber lösen konnte\u0026rdquo; in einer Form zu teilen, die hilfreich ist.\nIch bin ehrlich gesagt froh, dass es auf diese Weise Form angenommen hat.\nBlick in die Zukunft Die Technologiewelt dreht sich so schnell, dass es schon schwer ist, überhaupt Schritt zu halten. Aber gerade deshalb glaube ich, dass das Teilen von \u0026ldquo;echten Informationen\u0026rdquo; – wie es in der Praxis war und was schwer zu verstehen war – sehr sinnvoll ist.\nIch plane, in meinem eigenen Tempo weiterzumachen, ohne mich zu überanstrengen. Ich würde mich freuen, wenn ich weiterhin Informationen liefern kann, die jemanden denken lassen: \u0026ldquo;Ah, das hat geholfen\u0026rdquo;.\nVielen Dank für eure anhaltende Unterstützung.\n","date":"2024-09-03T21:25:20+09:00","image":"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_hu90bf51ced9d60993f005bc037644a192_1013423_120x120_fill_box_smart1_3.png","permalink":"http://kenji.blog/de/p/ich-wurde-erneut-als-microsoft-mvp-2024-2025-ausgezeichnet/","title":"Ich wurde erneut als Microsoft MVP (2024-2025) ausgezeichnet"},{"content":"Was ist yt-dlp yt-dlp ist ein Kommandozeilen-Tool zum Herunterladen von YouTube-Videos. Neben dem Herunterladen von Videos können Sie diese auch als Musikdateien im mp3-Format herunterladen.\nHerunterladen und Installieren Laden Sie die neueste yt-dlp.exe von der yt-dlp-Release-Seite herunter. Legen Sie yt-dlp.exe in einem beliebigen Ordner ab. Fügen Sie den Ordnerpfad von yt-dlp.exe zur Umgebungsvariablen Path hinzu. Verwendung Führen Sie yt-dlp.exe in der Eingabeaufforderung aus und geben Sie die URL des YouTube-Videos an.\n1 yt-dlp.exe \u0026#34;https://www.youtube.com/watch?v=VIDEO_ID\u0026#34; ※ Das Argument kann auch nur der Teil mit der VIDEO_ID sein.\nUm es als mp3-Musikdatei herunterzuladen, führen Sie den folgenden Befehl aus:\n1 yt-dlp.exe --extract-audio --audio-format mp3 --embed-thumbnail --add-metadata \u0026#34;https://www.youtube.com/watch?v=VIDEO_ID\u0026#34; Damit wird das Video in das aktuelle Verzeichnis heruntergeladen, in dem der Befehl ausgeführt wurde.\nDas ist alles.\n","date":"2024-09-03T14:09:26+09:00","image":"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_hu05024a06b03b28eb7dbfa3d8c8b493fd_22080_120x120_fill_box_smart1_3.png","permalink":"http://kenji.blog/de/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/","title":"Wie man YouTube-Videos mit yt-dlp.exe herunterlädt"},{"content":" Fußball Balljunge @gg211204 『Der Tag, an dem der Balljunge zum Helden wurde』 Der Balljunge, der das Team an diesem Tag rettete, wurde später in den Verein eingeladen und aß mit den Spielern zu Abend. #トッテナム #スパーズ #モウリーニョ #ボールボーイ ♬ original sound - じょり Starbucks ","date":"2024-08-25T16:24:35+09:00","image":"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_hu6a40cd72b9cd9a636c4c642d7bc2c778_3354885_120x120_fill_box_smart1_3.png","permalink":"http://kenji.blog/de/p/kurzvideo-links/","title":"Kurzvideo-Links"},{"content":"Hallo!\nHeute möchte ich über Zitate von Einstein sprechen.\nSchätzt die Welt deine guten Taten nicht? 1 2 3 4 5 6 Die Welt wird niemals die Millionen von guten Dingen bewerten, die du tust. Aber sie werden die eine falsche Sache kritisieren, die du tust... Aber lass dich nicht entmutigen. \u0026#34;Erhebe dich immer über all das Lachen und die Kritik. Bleib stark.\u0026#34; - Albert Einstein Dies sind Worte, die angeblich von Einstein gesprochen wurden. Sie weisen scharfsinnig auf die Härte der Gesellschaft hin, die wir jeden Tag spüren, und auf die Voreingenommenheit in den Bewertungen der Menschen.\nDennoch, steh weiter auf \u0026ldquo;Erhebe dich immer über all das Lachen und die Kritik. Bleib stark.\u0026rdquo;\nDiese folgenden Worte können als Einsteins Antwort auf die oben erwähnte harte Realität angesehen werden. Sie lehren uns, wie wichtig es ist, Kritik oder Spott nicht nachzugeben und mit dem Glauben an uns selbst weiter voranzuschreiten.\nEinsteins Lehren im Alltag anwenden Dieses Zitat ist eng mit unserem täglichen Leben verbunden. Zum Beispiel kann es Zeiten geben, in denen deine Bemühungen bei der Arbeit nicht anerkannt werden und nur triviale Fehler auffallen. Darüber hinaus können deine Aussagen in den sozialen Medien aus dem Zusammenhang gerissen und kritisiert werden.\nIn solchen Momenten versuche dich an Einsteins Worte zu erinnern. Es ist wichtig, an seinen eigenen Überzeugungen festzuhalten, anstatt sich über die Bewertungen anderer zu freuen oder traurig zu sein.\nFazit Dieses Zitat von Einstein lehrt uns, wie wichtig es ist, \u0026ldquo;zu leben, indem wir an uns selbst glauben, ohne von den Bewertungen anderer beeinflusst zu werden\u0026rdquo;. Lasst uns den Mut haben, dem Weg zu folgen, an den wir glauben, ohne Kritik oder Spott zu erliegen.\nZum Schluss noch einmal Einsteins Worte.\n\u0026ldquo;Erhebe dich immer über all das Lachen und die Kritik. Bleib stark.\u0026rdquo;\nIch hoffe, diese Worte finden Resonanz in deinem Herzen und inspirieren dich, einen positiven Schritt nach vorne zu machen.\n","date":"2024-08-24T18:38:47+09:00","image":"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_hu5334df7b0e2e62905cb44adbbbde85ad_2671814_120x120_fill_q75_box_smart1.jpg","permalink":"http://kenji.blog/de/p/zitate-von-einstein/","title":"Zitate von Einstein"},{"content":"Nachfolgend finden Sie einen einfachen C-Code, der Primzahlen innerhalb eines bestimmten Bereichs generiert. In diesem Beispiel zählen wir Primzahlen von 1 bis n auf.\n1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 #include \u0026lt;stdio.h\u0026gt; #include \u0026lt;stdbool.h\u0026gt; bool isPrime(int num) { if (num \u0026lt;= 1) return false; if (num \u0026lt;= 3) return true; if (num % 2 == 0 || num % 3 == 0) return false; for (int i = 5; i * i \u0026lt;= num; i += 6) { if (num % i == 0 || num % (i + 2) == 0) return false; } return true; } void printPrimes(int n) { printf(\u0026#34;2 \u0026#34;); for (int i = 3; i \u0026lt;= n; i += 2) { if (isPrime(i)) { printf(\u0026#34;%d \u0026#34;, i); } } printf(\u0026#34;\\n\u0026#34;); } int main() { int n; printf(\u0026#34;Bitte geben Sie den Maximalwert des Bereichs ein, um Primzahlen zu generieren: \u0026#34;); scanf(\u0026#34;%d\u0026#34;, \u0026amp;n); printf(\u0026#34;Die Primzahlen von 1 bis %d sind wie folgt:\\n\u0026#34;, n); printPrimes(n); return 0; } Dieser Code funktioniert wie folgt:\nFunktion isPrime: Bestimmt, ob eine gegebene Zahl eine Primzahl ist. Aus Effizienzgründen wird zunächst geprüft, ob sie durch 2 und 3 teilbar ist, und dann in Vielfachen von 6 weitergeprüft. Funktion printPrimes: Gibt die Primzahlen innerhalb eines bestimmten Bereichs aus. Die 2 wird zuerst ausgegeben, und dann werden nur ungerade Zahlen überprüft. Funktion main: Fordert den Benutzer auf, den Maximalwert des Bereichs einzugeben, und gibt die Primzahlen innerhalb dieses Bereichs aus. Wenn Sie diesen Code kompilieren und ausführen, werden die Primzahlen innerhalb des angegebenen Bereichs angezeigt.\n","date":"2024-08-24T09:38:10+09:00","image":"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_hu31b8bd853d4750e84615619ef286e5d3_22034_120x120_fill_box_smart1_3.png","permalink":"http://kenji.blog/de/p/c-code-zur-generierung-von-primzahlen/","title":"C-Code zur Generierung von Primzahlen"},{"content":"\nAkiko Yosano ** \u0026ldquo;Stirb nicht\u0026rdquo; **\n―― Weinend um meinen jüngeren Bruder in der Belagerungsarmee von Port Arthur\nAch, mein Bruder, ich weine um dich,\nStirb nicht,\nDa du der Jüngste bist,\nWar die Liebe unserer Eltern zu dir am größten.\nHaben unsere Eltern dich eine Klinge halten lassen\nUnd dich gelehrt, Menschen zu töten?\nHaben sie dich bis zu deinem vierundzwanzigsten Jahr aufgezogen,\nDamit du Menschen tötest und stirbst?\nAls stolzer Herr des alten Hauses\nDer Kaufleute der Stadt Sakai,\nDa du den Namen der Eltern weiterführst,\nStirb nicht.\nOb die Festung von Port Arthur fällt\nOder nicht, was macht das schon?\nDu weißt es vielleicht nicht, aber so etwas\nGibt es in den Gesetzen eines Kaufmannshauses nicht.\nStirb nicht,\nDer Kaiser zieht nicht selbst\nIn die Schlacht.\nDass Menschen gegenseitig ihr Blut vergießen,\nAuf dem Weg der Bestien sterben,\nUnd Sterben als Ruhm eines Mannes gilt,\nDa Sein Großes Herz so tief ist,\nWie könnte Er so etwas von Natur aus denken?\nAch, mein Bruder, in der Schlacht\nStirb nicht.\nUnsere Mutter, die im vergangenen Herbst\nUnseren Vater verloren hat,\nHütet mitten in ihrer Trauer schmerzvoll\nDas Haus, nachdem ihr Sohn eingezogen wurde.\nSelbst in dieser großen Friedenszeit, von der wir hören,\nHaben sich die weißen Haare der Mutter nur gemehrt.\nWeinend, im Schatten des Vorhangs niedergeschlagen,\nDie zarte, junge neue Ehefrau,\nHast du sie vergessen? Denkst du an sie?\nDenke an das Herz des jungen Mädchens,\nDas getrennt wurde, noch bevor zehn Monate vergangen waren.\nAußer dir, dem Einzigen auf dieser Welt,\nAch, auf wen sonst kann sie sich verlassen?\nStirb nicht.\n","date":"2024-07-25T13:16:47+09:00","permalink":"http://kenji.blog/de/p/stirb-nicht/","title":"Stirb nicht"},{"content":"\n🔹 Profilübersicht Yosano Akiko (1878–1942) war eine japanische Dichterin, Schriftstellerin und Denkerin, die von der Meiji- bis zur frühen Showa-Zeit aktiv war. Sie ist besonders bekannt für ihre leidenschaftlichen und individuellen Tanka-Gedichte und ist eine Figur, die der Unabhängigkeit der Frauen und dem Ausdruck der Liebe in der modernen japanischen Literatur neue Horizonte eröffnete.\nWahrer Name : Yosano (Mädchenname: Ho) Shō\nGeburtsort : Sakai (Stadt Sakai, Präfektur Osaka)\nEhemann : Yosano Tekkan (Dichter)\nHaupttätigkeitszeitraum : Späte Meiji- bis frühe Showa-Zeit\nEigenschaften :\nBekannt für ihre Tanka, die aufrichtig die romantischen Gefühle von Frauen ausdrücken. Vertrat feministische Ideen und förderte die Bildung und Unabhängigkeit der Frauen. Zeigte auch eine pazifistische Haltung, indem sie den Russisch-Japanischen Krieg kritisierte. Kernmitglied des Literaturmagazins \u0026ldquo;Myōjō\u0026rdquo;. 🔹 Hauptwerke, Zusammenfassungen und Eigenschaften 1. \u0026ldquo;Midaregami\u0026rdquo; (Wirres Haar) (1901) Überblick : Ihr erster Gedichtband. In ihren frühen 20ern veröffentlicht, hatte er einen großen Einfluss auf die japanische Literaturwelt. Eigenschaften : Drückt offen Liebesgefühle und körperliches Verlangen aus der Perspektive einer Frau aus. Berühmtes Gedicht : Yawa hada no atsuki chishio ni fure mo mide sabishikarazu ya michi o toku kimi\n→ Es wurde zum Gesprächsthema, da sie Ansichten über die Liebe, die nach der damaligen Moral als kühn galten, mit den eigenen Worten der Frau ausdrückte.\n2. \u0026ldquo;Kimi Shinitamō Koto Nakare\u0026rdquo; (Du sollst nicht sterben) (1904) Format : Poesie (kein Tanka, sondern freie Poesie) Inhalt : Ein Antikriegsgedicht, das an ihren jüngeren Bruder gerichtet ist, der in den Russisch-Japanischen Krieg gezogen war. Auszug : Kimi shinitamō koto nakare sue ni umareshi kimi nareba hahaue namida shigeku shite kimi no tamoto o shiboritsutsu\u0026hellip;\u0026hellip;\nBedeutung : Wegweisend, da sie gegen den Krieg aus der Perspektive einer Frau appellierte, die den Tod ihres Bruders fürchtete, in einer Zeit, in der die Tendenz zur Kriegsverherrlichung stark war. 🔹 Einfluss und Bewertung Führte gesellschaftlich fortschrittliche Aktivitäten wie Frauenbefreiung, Pazifismus und die Förderung der Bildung durch. In ihren späten Jahren widmete sie sich der Frauenbildung und war an der Gründung einer Universität für Frauen (wie dem Bunka Gakuin) beteiligt. Eine der wichtigsten weiblichen Intellektuellen und Literaturfiguren im Vorkriegsjapan. 🔹 Zusammenfassung Element Inhalt Name Yosano Akiko Tätigkeitsbereiche Tanka, Poesie, Kritik, Bildung Hauptwerke \u0026ldquo;Midaregami\u0026rdquo;, \u0026ldquo;Kimi Shinitamō Koto Nakare\u0026rdquo; Eigenschaften Freiheit der Liebe, Unabhängigkeit der Frau, Ausdruck des Pazifismus Moderner Einfluss Feministische Literatur, Innovation im modernen Tanka, Pionierin der Antikriegspoesie ","date":"2024-07-25T13:08:36+09:00","permalink":"http://kenji.blog/de/p/ueber-yosano-akiko/","title":"Über Yosano Akiko"},{"content":"Einführung in Mathematica Gleichungen lösen 1 Solve[x^2 - 3 x + 2 == 0, x] Ausgabe\n1 {{x -\u0026gt; 1}, {x -\u0026gt; 2}} Lösungen von Gleichungen im Bereich der ganzen Zahlen finden 1 Solve[x^2 - 3 x + 2 == 0 \u0026amp;\u0026amp; 0 \u0026lt;= x \u0026lt;= 2, x, Integers] Ausgabe\n1 {{x -\u0026gt; 1}, {x -\u0026gt; 2}} Gleichungssysteme lösen 1 Solve[{x + y == 3, x - y == 1}, {x, y}] Ausgabe\n1 {{x -\u0026gt; 2, y -\u0026gt; 1}} Ungleichungen lösen 1 Reduce[x^2 - 3 x + 2 \u0026gt; 0, x] Ausgabe\n1 x \u0026lt; 1 || x \u0026gt; 2 Ableiten 1 D[x^2, x] Ausgabe\n1 2 x Integrieren 1 Integrate[x^2, x] Ausgabe\n1 x^3/3 Grenzwerte berechnen 1 Limit[1/x, x -\u0026gt; 0] Ausgabe\n1 Infinity Reihen berechnen 1 Sum[1/n^2, {n, 1, Infinity}] Ausgabe\n1 π^2/6 Matrix erstellen 1 m = {{1, 2}, {3, 4}} Matrixprodukt berechnen 1 m . m Ausgabe\n1 {{7, 10}, {15, 22}} Inverse Matrix berechnen 1 Inverse[m] Ausgabe\n1 {{-2, 1}, {1.5, -0.5}} Eigenwerte und Eigenvektoren berechnen 1 Eigensystem[m] Ausgabe\n1 {{5, 0}, {{1, 1}, {1, -1}}} Skalarprodukt von Vektoren berechnen 1 {1, 2} . {3, 4} Ausgabe\n1 11 Kreuzprodukt von Vektoren berechnen 1 Cross[{1, 2, 3}, {4, 5, 6}] Ausgabe\n1 {-3, 6, -3} Betrag eines Vektors berechnen 1 Norm[{1, 2, 3}] Ausgabe\n1 √14 Winkel von Vektoren berechnen 1 ArcCos[{1, 2} . {3, 4}/(Norm[{1, 2}] Norm[{3, 4}])] Ausgabe\n1 ArcCos[11/(√5 √25)] Projektion von Vektoren berechnen 1 {1, 2} . {3, 4}/Norm[{3, 4}] {3, 4}/Norm[{3, 4}] Ausgabe\n1 {11/5, 22/5} Rotation von Vektoren berechnen 1 RotationMatrix[π/2].{1, 0} Ausgabe\n1 {0, 1} Translation von Vektoren berechnen 1 TranslationTransform[{1, 2}][{3, 4}] Ausgabe\n1 {4, 6} Skalierung von Vektoren berechnen 1 ScalingTransform[{2, 3}][{1, 1}] Ausgabe\n1 {2, 3} Reflexion von Vektoren berechnen 1 ReflectionTransform[{1, 1}][{1, 1}] Ausgabe\n1 {0, 0} Zufallszahlen generieren 1 RandomReal[] Ausgabe\n1 0.123456 Zufallszahlen generieren (ganze Zahlen) 1 RandomInteger[] Ausgabe\n1 123456 Zufallszahlen generieren (Bereich angegeben) 1 RandomReal[{1, 10}] Ausgabe\n1 5.6789 Zufallszahlen generieren (ganze Zahlen, Bereich angegeben) 1 RandomInteger[{1, 10}] Ausgabe\n1 5 Zufallszahlen generieren (Verteilung angegeben) 1 RandomVariate[NormalDistribution[0, 1]] Ausgabe\n1 0.123456 Zufallszahlen generieren (Verteilung, Menge angegeben) 1 RandomVariate[NormalDistribution[0, 1], 10] Ausgabe\n1 {0.123456, 0.234567, ..., 0.987654} Zufallszahlen generieren (Verteilung, Menge, Seed angegeben) 1 2 SeedRandom[12345] RandomVariate[NormalDistribution[0, 1], 10] Ausgabe\n1 {0.123456, 0.234567, ..., 0.987654} Funktion auf Array-Elemente anwenden 1 2 3 Map[Sqrt, {1, 4, 9}] Sqrt /@ {1, 4, 9} Map[#^(1/2)\u0026amp;, {1, 4, 9}] Ausgabe\n1 {1, 2, 3} Funktion mit Lambda-Ausdrücken definieren 1 2 f = Function[x, x^2] f[3] Ausgabe\n1 9 Funktionen komponieren 1 2 3 4 f = Function[x, x^2] g = Function[x, x + 1] h = Function[x, f[g[x]]] h[3] Ausgabe\n1 16 Auf vorheriges Berechnungsergebnis verweisen 1 % + 1 Ausgabe\n1 17 Reine Funktion 1 (#+3)\u0026amp;[5] Ausgabe\n1 8 Array extrahieren 1 2 Select[{1, 2, 3, 4, 5}, EvenQ] Select[{1, 2, 3, 4, 5}, Mod[#,2]==0\u0026amp;] Ausgabe\n1 {2, 4} ","date":"2024-07-25T01:36:19+09:00","image":"http://kenji.blog/p/mathematica%E5%85%A5%E9%96%80/img_hucba782cf2f6047b30fd8084b4d887659_22760_120x120_fill_box_smart1_3.png","permalink":"http://kenji.blog/de/p/mathematica%E5%85%A5%E9%96%80/","title":"Einführung in Mathematica"},{"content":"Was ist Hugo Hugo ist ein Generator für statische Websites. Sie können eine Website erstellen, indem Sie Markdown-Dateien in HTML konvertieren. Hugo ist in der Sprache Go geschrieben und arbeitet sehr schnell.\nDieser Blog wurde ebenfalls mit Hugo erstellt.\nInstallation der Hugo CLI Um die Hugo CLI zu installieren, führen Sie den folgenden Befehl aus.\n※ Dies ist ein Beispiel für macOS. Für andere Betriebssysteme konsultieren Sie bitte die offizielle Dokumentation.\n1 brew install hugo Sie können es mit Homebrew installieren.\nHugo Befehlsliste Hugo bietet verschiedene Befehle. Im Folgenden sind die am häufigsten verwendeten Befehle zusammengefasst.\nEine neue Website erstellen 1 hugo new site \u0026lt;site-name\u0026gt; Befehl zum Erstellen einer neuen Website. Geben Sie unter \u0026lt;site-name\u0026gt; den Namen der Website an.\nEinen neuen Artikel erstellen 1 hugo new \u0026lt;artikelname\u0026gt;.md Befehl zum Erstellen eines neuen Artikels. Geben Sie unter \u0026lt;artikelname\u0026gt; den Namen des Artikels an.\nDen Server starten 1 hugo server Befehl zum Starten des lokalen Servers. Erreichbar unter http://localhost:1313.\nErstellen (Build) 1 hugo Befehl zum Erstellen (Builden) der Website. HTML-Dateien werden im Verzeichnis public generiert.\nBereitstellen (Deploy) 1 hugo deploy Befehl zur Bereitstellung der Website. Die Einstellungen für das Bereitstellungsziel werden in der Datei config.toml vorgenommen.\nArtikelliste anzeigen 1 hugo list all Befehl zum Anzeigen der Artikelliste.\nKonfiguration überprüfen 1 hugo config Befehl zur Überprüfung der Konfiguration.\nHilfe anzeigen 1 hugo help Befehl zur Anzeige der Hilfe.\nVersion anzeigen 1 hugo version Befehl zur Anzeige der Version.\nDies ist die Liste der Hugo-Befehle. Da es viele weitere Befehle gibt, konsultieren Sie bitte die offizielle Dokumentation.\nReferenz Offizielle Hugo Dokumentation ","date":"2024-05-31T01:36:00+09:00","image":"http://kenji.blog/p/hugo%E3%82%B3%E3%83%9E%E3%83%B3%E3%83%89%E4%B8%80%E8%A6%A7/img_hu415dc7e70376ac350673d0366f70ca4b_19909_120x120_fill_box_smart1_3.png","permalink":"http://kenji.blog/de/p/hugo%E3%82%B3%E3%83%9E%E3%83%B3%E3%83%89%E4%B8%80%E8%A6%A7/","title":"Hugo Befehlsliste"},{"content":"Liste der empfohlenen Erweiterungen für Visual Studio Code Kategorie Name Anbieter Beschreibung Virtuelle und Container-Verwaltung Remote Devlopment Microsoft Unterstützt Remote-Entwicklung durch Verbindung mit virtuellen Containern/WSL über SSH Virtuelle und Container-Verwaltung Docker Microsoft Unterstützt die Verwaltung von Docker-Containern Code-Verwaltung GitHub Pull Requests GitHub Verwaltet GitHub Pull Requests in VSCode Code-Verwaltung GitHub Copilot GitHub Unterstützt KI-gestützte Code-Vervollständigung Code-Verwaltung Git Graph mhutchie Zeigt Git-Branches und Commits grafisch an Code-Verwaltung Git History Don Jayamanne Zeigt den Git-Verlauf an Browser und Webentwicklung Debugger for Firefox Firefox DevTools Verwendet den Firefox-Debugger in VSCode Browser und Webentwicklung Microsoft Edge Tool For VScode Microsoft Verwendet die Edge-Entwicklertools in VSCode Browser und Webentwicklung Vue Language Features(Volar) Vue Unterstützt Vue-Sprachfunktionen Browser und Webentwicklung JavaScript (ES6) code snippets charalampos karypidis Bietet JavaScript-Snippets Browser und Webentwicklung Tailwind CSS IntelliSense Tailwind Labs Bietet Tailwind CSS-Snippets Cloud-Entwicklung AWS Toolkit Amazon Web Services Unterstützt die AWS-Entwicklung Cloud-Entwicklung Azure Tools Microsoft Unterstützt die Azure-Entwicklung Cloud-Entwicklung Google Cloud Tools Google Cloud Unterstützt die Google Cloud-Entwicklung Datenbank MySQL Jun Han Unterstützt die MySQL-Entwicklung Datenbank SQL Server(mssql) Microsoft Unterstützt die SQL Server-Entwicklung Datenbank PostgreSQL Chris Kolkman Unterstützt die PostgreSQL-Entwicklung Eingebettete Systeme PlatformIO PlatformIO Unterstützt die PlatformIO-Entwicklung Eingebettete Systeme Arduino Microsoft Unterstützt die Arduino-Entwicklung Eingebettete Systeme WorkBench Particle Unterstützt die Entwicklung für das IoT, einschließlich der von Particle bereitgestellten Entwicklungsumgebung, Firmware, Bibliotheken und Cloud-Integration C/C++ C/C++ Extension Pack Microsoft Unterstützt die C/C++-Entwicklung C/C++ C/C++ Runner franneck94 Führt C/C++-Code aus (unterstützt gcc, msvc und cuda nvcc Compiler) C/C++ Cortex-Debug marus25 Unterstützt das Debugging von Cortex-A/R/M-Mikrocontrollern Python Python Extension Pack Microsoft Unterstützt die Python-Entwicklung Python jupyter Microsoft Unterstützt die Jupyter Notebook-Entwicklung Dienstprogramme und UI-Erweiterungen Makrdown All in One Yu Zhang Unterstützt das Schreiben in Markdown Dienstprogramme und UI-Erweiterungen Hex Editor Microsoft Bearbeitet Binärdateien Dienstprogramme und UI-Erweiterungen vscode-pdf tomoki1207 Zeigt PDF-Dateien an Dienstprogramme und UI-Erweiterungen Rainbow CSV mechatroner Zeigt CSV-Dateien farbig an Dienstprogramme und UI-Erweiterungen Draw.io Integration Henning Dieterichs Verwendet Draw.io in VSCode Dienstprogramme und UI-Erweiterungen Japanese Language Pack for Visual Studio Code Microsoft Japanisches Sprachpaket Dienstprogramme und UI-Erweiterungen Live Share Microsoft Unterstützt Echtzeit-Zusammenarbeit ","date":"2024-05-29T17:20:19+09:00","image":"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_hu9f3ce3d75e92e9f1ca11d3e7a3c7b710_108332_120x120_fill_box_smart1_3.png","permalink":"http://kenji.blog/de/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/","title":"Empfohlene Erweiterungen für Visual Studio Code"},{"content":"Was ist mermaid.js mermaid.js ist eine JavaScript-Bibliothek, mit der Sie komplexe Diagramme wie Flussdiagramme, Diagramme und Gantt-Diagramme grafisch darstellen können, indem Sie eine textbasierte Original-Syntax (Mermaid-Syntax) schreiben. Es wird auch in verschiedenen Diensten wie GitHub, Qiita und Notion übernommen. Dieses Mal werden wir versuchen, mermaid.js in hugo zu verwenden.\nmermaid.js in hugo aktivieren Die Schritte sind wie folgt:\nFügen Sie Folgendes in layouts/partials/extend_footer.html hinzu. 1 2 3 4 5 6 7 8 9 10 11 12 13 {{ if or .Params.mermaid .Site.Params.mermaid }} \u0026lt;script src=\u0026#34;https://cdn.jsdelivr.net/npm/mermaid@10.3.0/dist/mermaid.min.js\u0026#34;\u0026gt;\u0026lt;/script\u0026gt; {{- $loadmermaid := resources.Get \u0026#34;js/load-mermaid.js\u0026#34; }} \u0026lt;script src=\u0026#34;{{ $loadmermaid.RelPermalink }}\u0026#34;\u0026gt;\u0026lt;/script\u0026gt; \u0026lt;script\u0026gt; window.initMermaid(); if (isDarkTheme()) { setPrefTheme(\u0026#39;dark\u0026#39;); } else { setPrefTheme(\u0026#39;light\u0026#39;); } \u0026lt;/script\u0026gt; {{ end }} ※ mermaid.min.js wird nur geladen, wenn mermaid: true in der if-Anweisung festgelegt ist. Diese Bibliothek ist etwa 3 MB groß und überraschend groß.\nErstellen Sie assets/js/load-mermaid.js. Dieser Prozess wird zum Initialisieren und dynamischen Neuzeichnen verwendet, wenn das Thema geändert wird. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 (function(window){ \u0026#39;use strict\u0026#39; const elementCode = \u0026#39;.mermaid\u0026#39; const loadMermaid = function(theme) { window.mermaid.initialize({theme}) window.mermaid.init({theme}, document.querySelectorAll(elementCode)) } const saveOriginalData = function(){ return new Promise((resolve, reject) =\u0026gt; { try { var els = document.querySelectorAll(elementCode), count = els.length; els.forEach(element =\u0026gt; { element.setAttribute(\u0026#39;data-original-code\u0026#39;, element.innerHTML) count-- if(count == 0){ resolve() } }); } catch (error) { reject(error) } }) } const resetProcessed = function(){ return new Promise((resolve, reject) =\u0026gt; { try { var els = document.querySelectorAll(elementCode), count = els.length; els.forEach(element =\u0026gt; { if(element.getAttribute(\u0026#39;data-original-code\u0026#39;) != null){ element.removeAttribute(\u0026#39;data-processed\u0026#39;) element.innerHTML = element.getAttribute(\u0026#39;data-original-code\u0026#39;) } count-- if(count == 0){ resolve() } }); } catch (error) { reject(error) } }) } const init = ()=\u0026gt;{ saveOriginalData() .catch( console.error ) document.body.addEventListener(\u0026#39;dark-theme-set\u0026#39;, ()=\u0026gt;{ resetProcessed() .then(loadMermaid(\u0026#39;dark\u0026#39;)) .catch(console.error) }) document.body.addEventListener(\u0026#39;light-theme-set\u0026#39;, ()=\u0026gt;{ resetProcessed() .then(loadMermaid(\u0026#39;default\u0026#39;)) .catch(console.error) }) } window.initMermaid = init })(window); Der Basiscode dafür wurde aus Folgendem referenziert:\nReinitialize with new theme #1945 Ändern Sie den Prozess beim Ändern von Themen in header.html 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 function switchTheme(theme) { switch (theme) { case \u0026#39;light\u0026#39;: {{ if or .Params.mermaid .Site.Params.mermaid }} document.body.dispatchEvent(new CustomEvent(\u0026#39;light-theme-set\u0026#39;)); {{ end }} document.body.classList.remove(\u0026#39;dark\u0026#39;); break; case \u0026#39;dark\u0026#39;: {{ if or .Params.mermaid .Site.Params.mermaid }} document.body.dispatchEvent(new CustomEvent(\u0026#39;dark-theme-set\u0026#39;)); {{ end }} document.body.classList.add(\u0026#39;dark\u0026#39;); break; // auto default: if (window.matchMedia(\u0026#39;(prefers-color-scheme: dark)\u0026#39;).matches) { {{ if or .Params.mermaid .Site.Params.mermaid }} document.body.dispatchEvent(new CustomEvent(\u0026#39;dark-theme-set\u0026#39;)); {{ end }} document.body.classList.add(\u0026#39;dark\u0026#39;); } } } Erstellen Sie layouts/shortcodes/mermaid.html 1 2 3 \u0026lt;div class=\u0026#34;mermaid\u0026#34; align=\u0026#34;{{ if .Get \u0026#34;align\u0026#34; }}{{ .Get \u0026#34;align\u0026#34; }}{{ else }}center{{ end }}\u0026#34;\u0026gt; {{ safeHTML .Inner }} \u0026lt;/div\u0026gt; Mit den obigen Schritten ist die Vorbereitung zur Verwendung von mermaid.js abgeschlossen.\nmermaid.js ausprobieren Fügen Sie Folgendes zur Artikeldefinition hinzu 1 marmaid: true Fügen Sie Folgendes zum Artikeltext hinzu Flussdiagramm\n1 2 3 4 5 6 {{\u0026lt;mermaid align=\u0026#34;center\u0026#34;\u0026gt;}} graph TD A[Start] --\u0026gt;|Bedingung 1| B(Bedingung 2) B --\u0026gt; C{Bedingung 3} C --\u0026gt;|Bedingung 4| D[Ende] {{\u0026lt;/mermaid\u0026gt;}} Ausgabeergebnis\ngraph TD A[Start] --\u003e|Bedingung 1| B(Bedingung 2) B --\u003e C{Bedingung 3} C --\u003e|Bedingung 4| D[Ende] Gantt-Diagramm\n1 2 3 4 5 6 7 8 9 10 11 12 {{\u0026lt;mermaid align=\u0026#34;center\u0026#34;\u0026gt;}} gantt section Project Anforderungsdefinition :done, a, 2024-05-25, 5d Basisdesign :done, b, after a, 5d Detailliertes Design :done, c, after b, 5d Herstellung :active, d, after c, 10d Komponententest :crit, e, after d, 5d Integrationstest : f, after e, 5d Systemtest : g, after f, 5d Veröffentlichung :milestone, h, after g, 1d {{\u0026lt;/mermaid\u0026gt;}} Ausgabeergebnis\ngantt section Project Anforderungsdefinition :done, a, 2024-05-25, 5d Basisdesign :done, b, after a, 5d Detailliertes Design :done, c, after b, 5d Herstellung :active, d, after c, 10d Komponententest :crit, e, after d, 5d Integrationstest : f, after e, 5d Systemtest : g, after f, 5d Veröffentlichung :milestone, h, after g, 1d Sequenzdiagramm\n1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 {{\u0026lt;mermaid align=\u0026#34;center\u0026#34;\u0026gt;}} sequenceDiagram participant user participant view participant controller participant model participant database user-\u0026gt;\u0026gt;view: ID/PW eingeben view-\u0026gt;\u0026gt;controller: Authentifizierungsanforderung controller-\u0026gt;\u0026gt;model: Authentifizierungsanforderung model-\u0026gt;\u0026gt;database: Authentifizierungsanforderung database--\u0026gt;\u0026gt;model: Authentifizierungsergebnis zurückgeben model--\u0026gt;\u0026gt;controller: Authentifizierungsergebnis zurückgeben controller--\u0026gt;\u0026gt;view: Authentifizierungsergebnis zurückgeben view--\u0026gt;\u0026gt;user: Authentifizierungsergebnis anzeigen {{\u0026lt;/mermaid\u0026gt;}} Ausgabeergebnis\nsequenceDiagram participant user participant view participant controller participant model participant database user-\u003e\u003eview: ID/PW eingeben view-\u003e\u003econtroller: Ajax-Abfrage controller-\u003e\u003emodel: Authentifizierungsanforderung model-\u003e\u003edatabase: SQL-Ausgabe database--\u003e\u003emodel: SQL-Ergebnis zurückgeben model--\u003e\u003econtroller: Anforderungsergebnis zurückgeben controller--\u003e\u003eview: Ajax-Abfrageergebnis zurückgeben view--\u003e\u003euser: Authentifizierungsergebnis anzeigen Das ist alles.\nReferenzen Offizielle mermaid.js-Website Demo-Website, auf der Sie die Mermaid-Syntax in der Vorschau anzeigen können ","date":"2024-05-25T02:18:09+09:00","image":"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_huc7c099ec3ef9a6ce3efa5818e1489313_12585_120x120_fill_box_smart1_3.png","permalink":"http://kenji.blog/de/p/mermaid.js%E3%82%92%E8%A9%A6%E3%81%97%E3%81%A6%E3%81%BF%E3%82%8B/","title":"mermaid.js ausprobieren"},{"content":"Wie man einen git reset rückgängig macht Wenn Sie nach einem git commit versehentlich einen git reset ausführen, zeige ich Ihnen hier, wie Sie den git reset rückgängig machen können (wie Sie den Zustand zum Zeitpunkt des git commits wiederherstellen).\nÜberprüfen Sie die Commit-ID vor dem Reset mit git reflog Kehren Sie mit git reset --hard HEAD@{Zahl} in den Zustand vor dem Reset zurück Das ist alles darüber, wie man einen git reset rückgängig macht.\n","date":"2024-05-15T23:32:43+09:00","image":"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_hu1637c23702d7aac8be6c2641e62ebc1a_73066_120x120_fill_box_smart1_3.png","permalink":"http://kenji.blog/de/p/wie-man-einen-git-reset-rueckgaengig-macht/","title":"Wie man einen git reset rückgängig macht"},{"content":"Open Sourcing von MS-DOS 4.0 Microsoft hat den Quellcode von MS-DOS 4.0 veröffentlicht, das vor fast 40 Jahren erschienen ist. Es ist fast vollständig in 8086-Assembly-Code geschrieben.\nGitHub-Repository https://github.com/microsoft/MS-DOS\nReferenzseite Open Sourcing MS-DOS 4.0 ","date":"2024-05-05T16:44:28+09:00","image":"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_hu44e977c98e405f06fee0746ba6885217_23034_120x120_fill_box_smart1_3.png","permalink":"http://kenji.blog/de/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/","title":"Open Sourcing von MS-DOS 4.0"},{"content":" Lesbarer Code Prinzipien der Programmierung Der Pragmatische Programmierer Technologien, die das Web unterstützen Erstellen sicherer Webanwendungen Wie Netzwerke verbinden Umfassendes SQL-Handbuch von Experten Praktischer Docker-Leitfaden Vollständiges Kubernetes-Handbuch Code Complete 2. Auflage Clean Code: Agile Software-Handwerkskunst Clean Architecture: Softwarestruktur und -design Technologien, die Sie kennen sollten, bevor Sie Spieleprogrammierer werden Being Geek Warum objektorientiert entwickeln? ","date":"2024-05-05T16:03:33+09:00","image":"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_huefc28c3d74f521b3206dda9fd272911e_636136_120x120_fill_box_smart1_3.png","permalink":"http://kenji.blog/de/p/empfohlene-b%C3%BCcher-f%C3%BCr-angehende-ingenieure/","title":"Empfohlene Bücher für angehende Ingenieure"},{"content":"Ich habe eine Excel-Kalendervorlage (Version mit Feiertagen) erstellt! Ich habe eine Excel-Vorlage erstellt, bei der durch die Eingabe von Jahr und Monat die Feiertage dieses Monats im Kalender angezeigt werden.\nLaden Sie es gerne herunter und nutzen Sie es. Kalender.xlsx\n","date":"2024-05-01T00:15:57+09:00","image":"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_hu8d7d9eeba53cb2329139f98aded52558_13893_120x120_fill_box_smart1_3.png","permalink":"http://kenji.blog/de/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/","title":"Excel-Kalendervorlage (Version mit Feiertagen)"},{"content":"※ Dies ist das Konfigurationsverfahren für Windows 11.\nÖffnen Sie die Systemsteuerung Wählen Sie Energieoptionen Klicken Sie auf \u0026ldquo;Auswählen, was beim Drücken von Netzschaltern geschehen soll\u0026rdquo; Klicken Sie auf \u0026ldquo;Einige Einstellungen sind momentan nicht verfügbar\u0026rdquo; Deaktivieren Sie \u0026ldquo;Schnellstart aktivieren (empfohlen)\u0026rdquo; Klicken Sie auf \u0026ldquo;Änderungen speichern\u0026rdquo; Referenz \\[Windows 10\\] Wie deaktiviere ich den Schnellstart.\n","date":"2024-04-29T19:42:20+09:00","image":"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_huc496c8f1febcd28bf66466cd5e2648a0_37147_120x120_fill_box_smart1_3.png","permalink":"http://kenji.blog/de/p/so-beheben-sie-das-zuruecksetzen-der-dpi-einstellungen-beim-start-mit-mehreren-monitoren/","title":"So beheben Sie das Zurücksetzen der DPI-Einstellungen beim Start mit mehreren Monitoren"},{"content":"Nur die neueste Version des git-Repositorys abrufen Mit dem folgenden Befehl können Sie nur die neueste Version des Repositorys abrufen. Dies ist nützlich, wenn Sie das Repository schnell abrufen möchten, um Speicherplatz zu sparen.\n1 git clone --depth 1 \u0026lt;Repository-URL\u0026gt; ","date":"2024-04-27T02:54:12+09:00","image":"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_hu2ecde82e40aa31a994850b70302683b4_5304_120x120_fill_box_smart1_3.png","permalink":"http://kenji.blog/de/p/nur-die-neueste-version-des-git-repositorys-abrufen/","title":"Nur die neueste Version des git-Repositorys abrufen"},{"content":"Was tun, wenn der folgende Fehler in GitHub Copilot angezeigt wird Etwa seit dem 19.04.2024 funktioniert GitHub Copilot nicht mehr. Die Fehlermeldung lautet wie folgt:\n1 2 [ERROR] [ghostText] [2024-04-21T04:06:46.900Z] Error on ghost text request: (FetchError) unable to verify the first certificate [ERROR] [certificates] [2024-04-21T04:06:46.901Z] Your current Copilot license doesn\u0026#39;t support proxy connections with custom certificates. Please visit https://gh.io/copilot-network-errors to learn more. Original cause: {\u0026#34;type\u0026#34;:\u0026#34;system\u0026#34;,\u0026#34;_name\u0026#34;:\u0026#34;FetchError\u0026#34;,\u0026#34;code\u0026#34;:\u0026#34;UNABLE_TO_VERIFY_LEAF_SIGNATURE\u0026#34;} Lösung Dies scheint ein Fehler in ESET zu sein. Deaktivieren Sie in den erweiterten Einstellungen von ESET die Option \u0026ldquo;SSL/TLS aktivieren\u0026rdquo;. Referenz Es scheint, dass derselbe Fehler auch im AWS CDK auftritt.\nAWS CDK bootstrap certificate warning-error ","date":"2024-04-21T18:47:26+09:00","image":"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_hue52485515660c172702881501d13c34d_319675_120x120_fill_box_smart1_3.png","permalink":"http://kenji.blog/de/p/so-beheben-sie-zertifikatfehler-github-copilot/","title":"So beheben Sie den Zertifikatfehler, wenn GitHub Copilot nicht mehr funktioniert"},{"content":"\nEinführung in vim Download und Installation https://www.vim.org/download.php\nLaden Sie von der obigen Website das entsprechende Modul für Ihr Betriebssystem herunter und installieren Sie es.\nFür Windows ist die Wahl von gvim_X.X.X_x64_signed.exe eine gute Option.\nStarten Unter Windows müssen Sie den Ordner, der vim.exe enthält, in der Umgebungsvariable Path registrieren.\nWie man startet:\n1 vim Um mit Angabe eines Dateinamens zu starten:\n1 vim filename.txt Beenden Um zu beenden, geben Sie : (Doppelpunkt) ein, gefolgt von q, und drücken Sie die Eingabetaste.\n1 :q Wenn die Datei geändert wurde, wird Kein Schreibvorgang seit der letzten Änderung (fügen Sie ! hinzu, um das Verwerfen zu erzwingen) angezeigt. Sie können das Beenden erzwingen, indem Sie die Änderungen verwerfen.\n1 :q! Um die Datei zu speichern und zu beenden:\n1 :wq Das Folgende hat ebenfalls die gleiche Bedeutung:\n1 :x Sie können auch beenden, indem Sie Shift gedrückt halten und zweimal z drücken. (Gleichwertig zu :wq)\nModi Der vim verfügt über einen Kommandomodus und einen Einfügemodus. Beim Start von vim befindet er sich im Kommandomodus, und das Drücken der i-Taste wechselt in den Einfügemodus.\nIm Einfügemodus können Sie, wie der Name schon sagt, Text eingeben. Um vom Einfügemodus zurück in den Kommandomodus zu wechseln, drücken Sie die ESC-Taste.\nDieser Wechsel der Eingabemodi ist ein Hauptmerkmal von vim.\nCursorbewegung und Scrollen Zusammenfassung der Cursorbewegung und des Scrollens im Kommandomodus.\nTaste Beschreibung h (oder Ctrl+H, BackSpace, ←) Nach links bewegen j (oder Ctrl+J / N, ↓) Nach unten bewegen k (oder Ctrl+P, ↑) Nach oben bewegen l (oder Space, →) Nach rechts bewegen + (oder Enter) Zum Anfang der nächsten Zeile bewegen - Zum Anfang der vorherigen Zeile bewegen Ctrl+B (oder PageUp) Nach oben scrollen (Seite) Ctrl+F (oder PageDown) Nach unten scrollen (Seite) Ctrl+U Eine halbe Seite nach oben scrollen Ctrl+D Eine halbe Seite nach unten scrollen Ctrl+Y Eine Zeile nach oben scrollen Ctrl+E Eine Zeile nach unten scrollen z Enter Zeile mit dem Cursor an den oberen Bildschirmrand scrollen z . Zeile mit dem Cursor in die Bildschirmmitte scrollen z - Zeile mit dem Cursor an den unteren Bildschirmrand scrollen 0 (oder |) Cursor an den Zeilenanfang bewegen $ Cursor an das Zeilenende bewegen ^ (oder _) Cursor an den Zeilenanfang bewegen (ohne Leerzeichen und Tab) G (oder :$) Cursor zur letzten Zeile bewegen :zeilennummer Enter Zur angegebenen Zeile bewegen Indem Sie eine Zahl vor den obigen Bewegungstasten eingeben, können Sie sich um diese Anzahl mehrfach bewegen. (Zum Beispiel bewegt die Eingabe von 3j Sie um 3 Zeilen von der aktuellen Cursorposition nach unten.)\nAndere Befehle Taste Beschreibung Ctrl+L Bildschirm neu zeichnen Ctrl+G Gesamtzeilenzahl der Datei, Cursorposition usw. anzeigen ","date":"2024-04-19T22:06:34+09:00","image":"http://kenji.blog/p/vim%E5%85%A5%E9%96%80/img_hu70487bce4333a61ad5b3ba8ed7939499_17904_120x120_fill_box_smart1_3.png","permalink":"http://kenji.blog/de/p/vim%E5%85%A5%E9%96%80/","title":"Einführung in vim"},{"content":"Über die Notwendigkeit, DestroyIcon aufzurufen In folgenden Fällen ist es notwendig, DestroyIcon aufzurufen:\nCreateIconFromResourceEx (wenn ohne das Flag LR_SHARED aufgerufen) CreateIconIndirect CopyIcon Wenn durch die obigen Funktionen erstellt.\nLoadIcon LoadImage (wenn das Flag LR_SHARED verwendet wird) CopyImage (wenn das Flag LR_COPYRETURNORG verwendet wird und der Parameter hImage ein freigegebenes Symbol ist) CreateIconFromResource CreateIconFromResourceEx (wenn das Flag LR_SHARED verwendet wird) Symbole, die in den obigen Fällen erstellt und geladen wurden, dürfen DestroyIcon nicht aufrufen.\nReferenz DestroyIcon-Funktion (winuser.h) ","date":"2024-04-19T01:55:17+09:00","permalink":"http://kenji.blog/de/p/loadicon-muss-destroyicon-nicht-aufrufen/","title":"LoadIcon muss DestroyIcon nicht aufrufen"},{"content":"Vorlesungsvideos über generative KI \u0026ldquo;Generative KI\u0026rdquo; (1) Masayuki Nakao, Professor an der Universität Tokio 2023.9.8 \u0026ldquo;Generative KI\u0026rdquo; (2) Kuniyoshi Sakai, Professor an der Universität Tokio 2023.10.11 \u0026ldquo;Generative KI\u0026rdquo; (3) Yutaka Matsuo, Professor an der Universität Tokio 2024.3.15 ","date":"2024-04-16T02:13:56+09:00","image":"http://kenji.blog/p/%E7%94%9F%E6%88%90ai%E3%81%AB%E3%81%A4%E3%81%84%E3%81%A6/img_hu1a8581c4b72be646476cf90db2209d32_686551_120x120_fill_box_smart1_3.png","permalink":"http://kenji.blog/de/p/ueber-generative-ki/","title":"Über generative KI"},{"content":"QR-Code mit curl generieren Achtung: Die vorgestellten Methoden geben einen serverseitig generierten QR-Code zurück, sodass möglicherweise Protokolle aufgezeichnet werden. Seien Sie vorsichtig, wenn Sie vertrauliche Informationen, wie z. B. persönliche Daten, in einen QR-Code umwandeln.\nMethode 1 Dies ist eine Methode, um einen QR-Code in der Eingabeaufforderung zu generieren. qrenco.de gibt die Antwort textbasiert zurück.\n1 curl qrenco.de/kenji.blog Ausgabeergebnis 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 █████████████████████████████ █████████████████████████████ ████ ▄▄▄▄▄ █ ▄ ▄ █ ▄▄▄▄▄ ████ ████ █ █ █ ▀▀▀██ █ █ ████ ████ █▄▄▄█ █▀▀█▀▄█ █▄▄▄█ ████ ████▄▄▄▄▄▄▄█▄▀ ▀ █▄▄▄▄▄▄▄████ ████▄ █▀▄ ▄▀█▄▀ ▀██▄▀ ▄████ ████▀▀▀█ ▄▄ ▄█▄█▀█▀▄██ ▀████ ████▄▄▄██▄▄█ █▀█ ▄██▀▀█ █████ ████ ▄▄▄▄▄ █▀█ ▀ ▄▀▄▄▄ ▀████ ████ █ █ █▄▄ ▄▀▄▀▄ ██ ▀████ ████ █▄▄▄█ █▀▀█ ▀▄▄▄ ▄▄██████ ████▄▄▄▄▄▄▄█▄▄███▄▄█▄███▄████ █████████████████████████████ █████████████████████████████ Referenz qrenco.de Methode 2 api.qrserver.com gibt ein Bild zurück.\n1 curl -o qr.png \u0026#34;https://api.qrserver.com/v1/create-qr-code/?size=150x150\u0026amp;data=HelloWorld\u0026#34; Ausgabeergebnis Referenz QR Code Generator ","date":"2024-04-16T00:42:27+09:00","image":"http://kenji.blog/p/curl%E3%81%A7qr%E3%82%B3%E3%83%BC%E3%83%89%E7%94%9F%E6%88%90/img_hub03976e78daddb607d3d46f69887db4b_11127_120x120_fill_box_smart1_3.png","permalink":"http://kenji.blog/de/p/curl%E3%81%A7qr%E3%82%B3%E3%83%BC%E3%83%89%E7%94%9F%E6%88%90/","title":"QR-Code mit curl generieren"},{"content":"Tastenkombinationen Tastenkombination Beschreibung Ctrl + B Fett formatieren Ctrl + I Kursiv formatieren Ctrl + U Unterstreichen Ctrl + E Zentrieren Ctrl + L Linksbündig ausrichten Ctrl + R Rechtsbündig ausrichten Ctrl + ] Schriftgrad vergrößern Ctrl + [ Schriftgrad verkleinern Ctrl + C Kopieren Ctrl + V Einfügen Ctrl + X Ausschneiden Ctrl + Z Rückgängig machen Ctrl + Y Wiederherstellen Ctrl + A Alles auswählen Shift + Pfeiltasten Bereich auswählen Ctrl + F Text suchen Ctrl + H Text ersetzen Ctrl + P Seitenansicht anzeigen Ctrl + S Dokument speichern F12 Speichern unter Ctrl + Home Zum Anfang des Dokuments springen Ctrl + End Zum Ende des Dokuments springen Referenz Tastenkombinationen in Word ","date":"2024-04-07T14:18:51+09:00","image":"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_hu52c1b9e3b4195e8df02b1851180b33b3_10388_120x120_fill_box_smart1_3.png","permalink":"http://kenji.blog/de/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/","title":"Microsoft Word Tastenkombinationen"},{"content":"Hier stellen wir „Tab Auto Refresh“ vor, eine Edge-Browsererweiterung, die Webseiten automatisch aktualisiert.\nInstallation von Tab Auto Refresh Tab Auto Refresh\nGreifen Sie auf die obige Website zu und klicken Sie auf Installieren.\nKlicken Sie auf Erweiterung hinzufügen.\nVerwendung Nach der Installation wird in der oberen rechten Ecke von Edge ein Symbol hinzugefügt.\nÖffnen Sie die Webseite, die Sie automatisch aktualisieren möchten, und klicken Sie auf das Symbol, um die automatische Aktualisierung zu starten.\nDer grün umrandete Bereich ist das Intervall für die automatische Aktualisierung. Wählen Sie den Zeitpunkt aus, an dem die automatische Aktualisierung erfolgen soll.\nUm die automatische Aktualisierung zu beenden, klicken Sie auf das Symbol und dann auf Stop reloading this tab.\n","date":"2024-04-06T15:36:54+09:00","image":"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_hu57eb7510f8ab42d5a8107b2d3db76a45_3448_120x120_fill_box_smart1_3.png","permalink":"http://kenji.blog/de/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/","title":"Webseiten-Auto-Refresh-Browsererweiterung (Edge-Add-on)"},{"content":"Visual Studio Tastenkombinationen Ich habe eine Liste der Visual Studio Tastenkombinationen erstellt, die ich persönlich häufig verwende. Indem Sie die Tastenkombinationen von Visual Studio lernen, können Sie Entwicklungsarbeiten effizienter durchführen. Bitte nutzen Sie diese.\n※Überprüft in Visual Studio 2022.\nTastenkombination Beschreibung F1 Hilfe für das ausgewählte Wort anzeigen F2 Zum Lesezeichen springen Ctrl + F2 Ein Lesezeichen hinzufügen Ctrl + Shift + F2 Alle Lesezeichen entfernen F5 Erstellen und ausführen (mit Debugging) Ctrl + F5 Erstellen und ausführen (ohne Debugging) F7 Erstellen F9 Haltepunkt in der Cursorzeile hinzufügen Ctrl + F9 Haltepunkt der Cursorzeile deaktivieren Shift + Ctrl + F9 Alle Haltepunkte löschen F10 Prozedurschritt (Step over) F11 Einzelschritt (Step in) F12 Zur Definition springen Ctrl + D Cursorzeile duplizieren Ctrl + X Zeile ausschneiden, wenn keine Auswahl vorhanden ist Ctrl + Shift + ] Bis zur passenden Klammer markieren Alt + Pfeil-hoch/-runter Cursorzeile nach oben oder unten verschieben Alt + Shift + Pfeiltasten Multi-Cursor/Blockauswahl Ctrl + Tab Ansicht Quellcode/Fenster umschalten Ctrl + Shift + V Zwischenablageverlauf anzeigen Ctrl + K dann Ctrl + C Cursorzeile auskommentieren Ctrl + K dann Ctrl + U Auskommentierung der Cursorzeile aufheben Ctrl + G Zur angegebenen Zeilennummer springen Ctrl + F Suchen Ctrl + Shift + F Globale Suche Ctrl + H Ersetzen Ctrl + Shift + F Globales Ersetzen Ctrl + Tab Ansicht Quellcode/Fenster umschalten Ctrl + Space Wortvervollständigung Ctrl + Alt + L Projektmappen-Explorer öffnen Ctrl + Shift + E Ressourcenansicht öffnen Ctrl + 0 dann Ctrl + G Git-Commit-Fenster öffnen Referenz Standardtastenkombinationen in Visual Studio ","date":"2024-04-06T11:27:37+09:00","image":"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_hue1a55f22c15dca7427db7cd2dfd89735_223690_120x120_fill_box_smart1_3.png","permalink":"http://kenji.blog/de/p/visual-studio-tastenkombinationen/","title":"Visual Studio Tastenkombinationen"},{"content":"Hier wird beschrieben, wie Sie grep von Hidemaru Editor zum Kontextmenü (Rechtsklick) des Explorers in Windows 10/11 hinzufügen.\nWarnung: Das folgende Verfahren ändert die Registrierung. Bitte auf eigene Gefahr durchführen.\nVerfahren Öffnen Sie den untenstehenden Link und speichern Sie ihn in einem beliebigen Ordner. 秀丸レジストリ登録.reg\nDoppelklicken Sie auf die Datei 秀丸レジストリ登録.reg, um sie der Registrierung hinzuzufügen. Referenz 秀丸grepをフォルダの右クリックメニューから行う ","date":"2024-04-03T00:00:46+09:00","image":"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_hu1bfa3588f39c8e6af312f48159d52b67_932_120x120_fill_box_smart1_3.png","permalink":"http://kenji.blog/de/p/hidemaru-editor-grep-zum-explorer-kontextmenue-hinzufuegen/","title":"Hidemaru Editor grep zum Explorer-Kontextmenü hinzufügen"},{"content":"Kennen Sie das Geburtstagsparadoxon? Ich werde Ihnen eine etwas seltsame Geschichte erzählen. Wie viele Personen müssen Ihrer Meinung nach zusammenkommen, damit \u0026ldquo;die Wahrscheinlichkeit, dass Personen am selben Tag Geburtstag haben\u0026rdquo;, hoch ist?\nEin Jahr hat zum Beispiel 365 Tage. Wenn man Ihnen also sagt: \u0026ldquo;Wenn 23 Personen zusammenkommen, liegt die Wahrscheinlichkeit, dass jemand denselben Geburtstag hat, bei über 50 %\u0026rdquo;\u0026hellip; dann scheint das irgendwie gegen die Intuition zu verstoßen.\nAber es sind tatsächlich über 50 %.\nWarum passiert das? Dieses Phänomen wird als \u0026ldquo;Geburtstagsparadoxon\u0026rdquo; bezeichnet. Der Name lautet \u0026ldquo;Paradoxon\u0026rdquo;, aber es gibt einen fundierten mathematischen Grund.\nWenn die Anzahl der Personen \u0026ldquo;n\u0026rdquo; ist, wird die Wahrscheinlichkeit, dass niemand denselben Geburtstag hat , durch die folgende Formel berechnet:\n1 P(niemand hat am selben Tag Geburtstag) = 365/365 × 364/365 × 363/365 × ... × (365 - n + 1)/365 Indem man dies von 1 abzieht, erhält man \u0026ldquo;die Wahrscheinlichkeit, denselben Geburtstag wie jemand anderes zu haben\u0026rdquo;.\nWenn wir uns die Ergebnisse ansehen\u0026hellip; Anzahl der Personen Wahrscheinlichkeit, denselben Geburtstag zu haben 10 Personen Etwa 11.7% 20 Personen Etwa 41.1% 23 Personen Etwa 50.7% (Hierauf achten!) 30 Personen Etwa 70.6% 70 Personen Erstaunliche 99.9%! Das heißt, bei nur 23 Personen besteht eine Wahrscheinlichkeit von mehr als der Hälfte, dass jemand denselben Geburtstag hat. Dies lässt sich durchaus auch auf Schulklassen oder Besprechungen am Arbeitsplatz übertragen.\nZusammenfassung: Die Diskrepanz zwischen Intuition und Mathematik ist faszinierend Das \u0026ldquo;Geburtstagsparadoxon\u0026rdquo; ist ein interessantes Beispiel dafür, wie unsere Intuition und die tatsächliche mathematische Wahrscheinlichkeit voneinander abweichen. Solche Dinge zu wissen, kann eine nette Unterhaltung oder ein Quiz auflockern!\nReferenz-Links Geburtstagsparadoxon (Wikipedia) ","date":"2024-04-02T01:20:50+09:00","image":"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_huf1a218b90023063d558c5c810438e753_117620_120x120_fill_box_smart1_3.png","permalink":"http://kenji.blog/de/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/","title":"Was ist das Geburtstagsparadoxon?"},{"content":"Was ist das Snipping Tool Das Snipping Tool ist ein in Windows integriertes Screenshot-Tool. Sie können damit einen Teil des Bildschirms ausschneiden und speichern, den gesamten Bildschirm erfassen oder aufzeichnen.\nSo starten Sie das Snipping Tool Es gibt hauptsächlich 3 Möglichkeiten, es zu starten:\nDrücken Sie die Win-Taste, geben Sie Snipping Tool ein und drücken Sie die Eingabetaste. Drücken Sie die Tasten Win + Umschalt + S. Drücken Sie die Tasten Win + R, geben Sie snippingtool ein und drücken Sie die Eingabetaste. So verwenden Sie das Snipping Tool Die Schritte zum Speichern eines aufgenommenen Bildes sind wie folgt: Wählen Sie das Kamera-Symbol. Klicken Sie auf die Schaltfläche Neu. Wählen Sie den Bereich aus, den Sie erfassen möchten. Klicken Sie auf die Schaltfläche Speichern unter. Geben Sie den Speicherort und den Dateinamen ein und speichern Sie. Die Schritte zum Speichern eines aufgenommenen Videos sind wie folgt: Wählen Sie das Video-Symbol. Klicken Sie auf die Schaltfläche Neu. Wählen Sie den Bereich aus, den Sie erfassen möchten. Klicken Sie auf die Schaltfläche Start. Zeichnen Sie den Bildschirm auf. Klicken Sie auf die Schaltfläche Stopp. Klicken Sie auf die Schaltfläche Speichern unter. Geben Sie den Speicherort und den Dateinamen ein und speichern Sie. Referenz Verwenden des Snipping Tools zum Erfassen von Screenshots ","date":"2024-04-01T23:19:45+09:00","image":"http://kenji.blog/p/snipping-tool%E3%81%AE%E4%BD%BF%E3%81%84%E6%96%B9/img_hu405fe4bbcac8bf4b2046262eb8f35d4a_18613_120x120_fill_box_smart1_3.png","permalink":"http://kenji.blog/de/p/so-verwenden-sie-das-snipping-tool/","title":"So verwenden Sie das Snipping Tool"},{"content":"Hier erfahren Sie, wie Sie eine Verknüpfung zum Sperren Ihres Computers erstellen.\nEs ist praktisch, da Sie Ihren Computer sperren können, indem Sie einfach auf die erstellte Verknüpfung auf dem Desktop doppelklicken.\nErstellung 1. Klicken Sie mit der rechten Maustaste auf den Desktop und wählen Sie Neu \u0026gt; Verknüpfung 2. Der Bildschirm zur Erstellung von Verknüpfungen wird angezeigt. Geben Sie rundll32.exe user32.dll,LockWorkStation ein und klicken Sie auf Weiter 3. Geben Sie den Namen der Verknüpfung Computer sperren ein und klicken Sie auf Fertig stellen 4. Ändern Sie das Symbol der erstellten Verknüpfung Klicken Sie mit der rechten Maustaste auf die erstellte Verknüpfung und wählen Sie Eigenschaften\nKlicken Sie auf Anderes Symbol...\nWählen Sie das gelbe Schloss-Symbol und klicken Sie auf OK. Klicken Sie dann erneut auf OK, um die Eigenschaften zu schließen.\nDas war\u0026rsquo;s.\nDurch Doppelklicken auf die erstellte Verknüpfung wird der Computer gesperrt.\nSie können auch die Windows-Taste + L drücken, um den Computer auf die gleiche Weise zu sperren.\n※ Hinweis: Beim Sperren des Computers wird kein Bestätigungsdialogfeld angezeigt.\n","date":"2024-04-01T01:37:49+09:00","image":"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_hud14aa91db8f19c318807d0f2f72ee0fc_128434_120x120_fill_box_smart1_3.png","permalink":"http://kenji.blog/de/p/so-erstellen-sie-eine-verknuepfung-zum-sperren-ihres-computers/","title":"So erstellen Sie eine Verknüpfung zum Sperren Ihres Computers"},{"content":"Was ist das Ziegenproblem? Das Ziegenproblem (Monty-Hall-Problem) ist ein Spiel aus der amerikanischen Fernsehshow \u0026ldquo;Let\u0026rsquo;s Make a Deal\u0026rdquo; und lässt sich wie folgt beschreiben:\nVoraussetzungen: Hinter einer von 3 Türen befindet sich ein Preis, hinter den anderen 2 Nieten (Ziegen).\nDer Teilnehmer wählt eine der 3 Türen. Der Moderator öffnet eine der 2 vom Teilnehmer nicht gewählten Türen, hinter der sich eine Niete befindet. Der Teilnehmer wird gefragt, ob er die gewählte Tür wechseln möchte. Bei diesem Problem geht es darum zu überlegen, ob es für den Teilnehmer besser ist, die Tür zu wechseln oder nicht.\nLösung Die Lösung für das Ziegenproblem lautet wie folgt:\nWenn der Teilnehmer die ursprünglich gewählte Tür nicht wechselt\nGewinnwahrscheinlichkeit: 1/3 Verlustwahrscheinlichkeit: 2/3 Nachdem der Moderator eine Tür mit einer Niete geöffnet hat\nBeim Nicht-Wechseln, Gewinnwahrscheinlichkeit: 1/3 (bleibt gleich wie in 1.) Beim Wechseln, Gewinnwahrscheinlichkeit: 2/3 (die Wahrscheinlichkeit für alles andere aus 1.) Daher ist die Gewinnwahrscheinlichkeit höher, wenn der Teilnehmer die Tür wechselt.\nReferenz Wikipedia Monty Hall problem ","date":"2024-03-31T23:41:51+09:00","image":"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_hu20d98afb87b485a440eb6d6beaf3ac5e_189614_120x120_fill_box_smart1_3.png","permalink":"http://kenji.blog/de/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/","title":"Das Ziegenproblem (Monty-Hall-Problem)"},{"content":"micro herunterladen https://github.com/zyedidia/micro/releases\nÖffnen Sie den obigen Link, klicken Sie auf Show all XX assets (wobei X eine Zahl ist) und laden Sie micro-X.X.XX-win64.zip (wobei X eine Zahl ist) herunter. Entpacken Sie die ZIP-Datei und legen Sie alle Dateien in einem Ordner Ihrer Wahl ab.\nUmgebungsvariablen konfigurieren Um micro.exe über die Eingabeaufforderung verwenden zu können, müssen Sie die Umgebungsvariablen konfigurieren.\nDrücken Sie die Win-Taste + R-Taste, geben Sie sysdm.cpl ein und drücken Sie die Eingabetaste. Klicken Sie in den Systemeigenschaften auf Erweiterte Systemeinstellungen. Klicken Sie auf Umgebungsvariablen. Wählen Sie Path unter Systemvariablen aus und klicken Sie auf Bearbeiten. Klicken Sie auf Neu und fügen Sie den Pfad zum Ordner hinzu, der micro.exe enthält. Klicken Sie auf OK, um alle Dialogfelder zu schließen. Starten Sie die Eingabeaufforderung neu und geben Sie nano ein, um zu überprüfen, ob es ausgeführt werden kann. So verwenden Sie micro Wenn Sie in der Eingabeaufforderung micro eingeben und ausführen, wird der folgende Bildschirm angezeigt. Die wichtigsten Vorgänge und Tastenkombinationen sind wie folgt:\nTastenkombination Vorgang Ctrl+Q Datei schließen Ctrl+S Datei speichern Ctrl+O Datei öffnen Ctrl+A Alles auswählen Ctrl+X Auswahl ausschneiden Ctrl+C Auswahl kopieren Ctrl+V Einfügen Ctrl+Z Rückgängig machen Ctrl+Y Wiederholen Ctrl+E Editor-Befehl ausführen Referenz micro ","date":"2024-03-31T21:50:39+09:00","image":"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_hu5c724e25c36dcf3781d5276f98286fd4_13721_120x120_fill_box_smart1_3.png","permalink":"http://kenji.blog/de/p/so-installieren-sie-den-micro-texteditor-unter-windows/","title":"So installieren Sie den micro-Texteditor unter Windows"},{"content":"nano.exe herunterladen https://sourceforge.net/projects/nano-for-windows/\nÖffnen Sie den obigen Link, klicken Sie auf Download und laden Sie GNU-Nano_Win32(static).zip herunter. Entpacken Sie die Zip-Datei und legen Sie die nano.exe in einem beliebigen Ordner ab.\nDie japanische Eingabe wird nicht unterstützt (Stand: 31.03.2024). Umgebungsvariablen festlegen Um nano.exe in der Eingabeaufforderung zu verwenden, müssen Sie die Umgebungsvariablen konfigurieren.\nDrücken Sie die Win-Taste + R-Taste, geben Sie sysdm.cpl ein und drücken Sie Enter. Klicken Sie in den Systemeigenschaften auf Erweiterte Systemeinstellungen. Klicken Sie auf Umgebungsvariablen. Wählen Sie Path unter Systemvariablen aus und klicken Sie auf Bearbeiten. Klicken Sie auf Neu und fügen Sie den Pfad zur nano.exe hinzu. Klicken Sie auf OK, um alle Dialogfelder zu schließen. Starten Sie die Eingabeaufforderung neu, geben Sie nano ein und prüfen Sie, ob es ausgeführt wird. Wie man nano verwendet Wenn Sie nano eingeben und ausführen, wird der folgende Bildschirm angezeigt.\nDie Beschreibungen der Tastenkombinationen werden am unteren Bildschirmrand angezeigt.\nDie Bedeutung der Symbole ist wie folgt:\n^ steht für die Strg-Taste (bzw. Ctrl). M- steht für die Alt-Taste. Um zu speichern und zu schließen, drücken Sie Strg + S und anschließend Strg + X.\nReferenz GNU nano ","date":"2024-03-31T18:09:32+09:00","image":"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_hud0bad6678c124835195c96dbf5908709_45668_120x120_fill_box_smart1_3.png","permalink":"http://kenji.blog/de/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/","title":"Wie man den CLI-Texteditor nano unter Windows installiert"},{"content":"So beheben Sie den Fehler \u0026lsquo;Temporary failure resolving\u0026hellip;\u0026rsquo; in wsl 1 2 3 4 kenji@MyComputer:~$ sudo apt update [sudo] password for kenji: Err:1 http://archive.ubuntu.com/ubuntu focal InRelease Temporary failure resolving \u0026#39;archive.ubuntu.com\u0026#39; Wenn der obige Fehler in wsl angezeigt wird, sind die DNS-Servereinstellungen möglicherweise falsch. In meiner Umgebung wurde das Problem mit den folgenden Schritten behoben.\nStarten Sie wsl. Führen Sie sudo nano /etc/resolv.conf aus. Ändern Sie die Zeile nameserver wie folgt: 1 nameserver 8.8.8.8 Speichern Sie mit Strg + S und beenden Sie mit Strg + X. Führen Sie sudo apt update aus. Wenn der Fehler nicht mehr angezeigt wird, ist das Problem behoben. Wenn das Problem durch die obigen Schritte nicht behoben wird Es scheint Fälle zu geben, in denen die obigen Schritte nicht ausreichen. Bitte lesen Sie den folgenden Artikel.\nSo beheben Sie \u0026lsquo;Temporary failure resolving\u0026hellip;\u0026rsquo; beim apt update in WSL ","date":"2024-03-31T16:57:33+09:00","image":"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_hu6b9065bcca76a2739d7c532080d71efa_118604_120x120_fill_box_smart1_3.png","permalink":"http://kenji.blog/de/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/","title":"So beheben Sie den Fehler 'Temporary failure resolving...' in wsl"},{"content":"Wie man über das Rechtsklick-Menü der Taskleiste schließt Diese Methode funktioniert unter Windows 10. Es scheint, dass das Menü unter Windows 11 nicht angezeigt wird. Wenn Sie die Tasten Shift und Ctrl gedrückt halten und mit der rechten Maustaste auf die Taskleiste klicken, wird Explorer beenden im Menü angezeigt.\nWie man über den Task-Manager schließt Drücken Sie die Tasten Ctrl + Shift + Esc, um den Task-Manager zu öffnen. Wählen Sie Details. Wählen Sie explorer.exe aus, drücken Sie die Taste Entf, und wenn Sie gefragt werden Möchten Sie explorer.exe beenden?, wählen Sie Task beenden. Wie man über die Eingabeaufforderung schließt Drücken Sie die Tasten Win + R, geben Sie cmd ein und drücken Sie Enter. Geben Sie taskkill /f /im explorer.exe ein und drücken Sie Enter. Wie man den Explorer über den Task-Manager startet Drücken Sie die Tasten Ctrl + Shift + Esc, um den Task-Manager zu öffnen. Wählen Sie im Menü Datei Neuen Task ausführen. Geben Sie explorer.exe ein und drücken Sie Enter. ","date":"2024-03-30T15:40:24+09:00","image":"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_hue735828bd961ff4973e3abea5e21f198_20142_120x120_fill_box_smart1_3.png","permalink":"http://kenji.blog/de/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/","title":"Wie man den Explorer schließt und neu startet"},{"content":"So stellen Sie das klassische Kontextmenü in Windows 11 wieder her Hier erfahren Sie, wie Sie das klassische Kontextmenü in Windows 11 wiederherstellen.\nÖffnen Sie den Registrierungseditor. Drücken Sie Win-Taste + R, geben Sie regedit ein und drücken Sie die Eingabetaste. Navigieren Sie zu HKEY_CURRENT_USER\\Software\\Classes\\CLSID\\{86ca1aa0-34aa-4e8b-a509-50c905bae2a2}. Wenn dieser Schlüssel nicht vorhanden ist, erstellen Sie ihn.\nNavigieren Sie zu HKEY_CURRENT_USER\\Software\\Classes\\CLSID\\{86ca1aa0-34aa-4e8b-a509-50c905bae2a2}\\InprocServer32. Wenn dieser Schlüssel nicht vorhanden ist, erstellen Sie ihn.\nÜberprüfen Sie, ob (Standard) in InprocServer32 keinen Wert hat.\nStarten Sie den Computer neu. Bestätigen Sie, dass das Kontextmenü zur klassischen Version zurückgekehrt ist. ","date":"2024-03-30T13:13:36+09:00","image":"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_hub131b7dada89fffcdae45f20639b1ab3_50623_120x120_fill_box_smart1_3.png","permalink":"http://kenji.blog/de/p/so-stellen-sie-das-klassische-kontextmenue-in-windows-11-wieder-her/","title":"So stellen Sie das klassische Kontextmenü in Windows 11 wieder her"},{"content":"JetBrains Mono Dies ist eine Open-Source-Programmierschriftart, die von JetBrains bereitgestellt wird.\nDownload: https://www.jetbrains.com/ja-jp/lp/mono/\nHackGen Hakugen (HackGen) ist eine Programmierschriftart, die die englische Schriftart für die Programmierung Hack mit der Schriftart GenJyuu Gothic, einem Derivat von Source Han Sans, kombiniert.\nDownload: https://github.com/yuru7/HackGen/releases\nRicty Diminished Ricty Diminished ist eine Schwester-Schriftart von Ricty, die erstellt wurde, indem Inconsolata und Circle M+ 1m mit dem Ricty-Generierungsskript kombiniert wurden, anstelle von Inconsolata und Migu 1M. Da sie die Glyphen der IPA Gothic-Schriftart nicht enthält, verfügt sie über weniger verwendbare Kanji-Glyphen, kann aber im Gegenzug unter der SIL Open Font License verbreitet werden.\nDownload: https://rictyfonts.github.io/diminished\nCica Alphanumerische Zeichen und Symbole verwenden Hack + DejaVu Sans Mono. Für andere Zeichen ist es eine Programmierschriftart, die Rounded Mgen+ verwendet.\nDownload: https://github.com/miiton/Cica/releases\nReferenz:\nHack DejaVu Sans Mono Rounded Mgen+ Migu Dies ist eine kombinierte Schriftart aus M+ und IPA.\nDownload: https://itouhiro.github.io/mixfont-mplus-ipa/migu/\nOsaka Es handelt sich um eine Schriftart, die es ermöglicht, die Mac OS-Standardschriftart Osaka unter Windows zu verwenden.\nDownload: http://ifs.nog.cc/osakattf.hp.infoseek.co.jp/\nPlemolJP Dies ist eine Programmierschriftart, die die Open-Source-Japanisch-Schriftart IBM Plex Sans JP, die von IBM veröffentlicht wurde, mit IBM Plex Mono aus der IBM Plex-Serie kombiniert.\nDownload: https://github.com/yuru7/PlemolJP/releases\n","date":"2024-03-30T02:21:31+09:00","image":"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_hu5455a1c7ae52190ddcafb3051b00c15b_52757_120x120_fill_box_smart1_3.png","permalink":"http://kenji.blog/de/p/schriftartensammlung-fuer-die-programmierung/","title":"Schriftartensammlung für die Programmierung"},{"content":"Hier erfahren Sie, wie Sie den Hidemaru Editor mit dem Befehl \u0026lsquo;hide\u0026rsquo; starten können. Hinweis: Diese Methode wurde unter Windows 10/11 getestet.\nÖffnen Sie den Registrierungs-Editor. Navigieren Sie zu HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\App Paths. Erstellen Sie unter App Paths einen Schlüssel namens hide.exe. Der Teil vor .exe im Namen dieses Schlüssels wird zum Befehlsnamen. Setzen Sie den Wert (Standard) des Schlüssels hide.exe auf den Pfad der ausführbaren Datei des Hidemaru Editors. In meiner Umgebung war dies \u0026quot;C:\\Program Files (x86)\\Hidemaru\\Hidemaru.exe\u0026quot;. Erstellen Sie einen Zeichenfolgenwert namens Path im Schlüssel hide.exe. Setzen Sie die Daten von Path auf den Pfad des Ordners, der die ausführbare Datei des Hidemaru Editors enthält. In meiner Umgebung war dies \u0026quot;C:\\Program Files (x86)\\Hidemaru\u0026quot;. Nun können Sie im Dialogfeld Ausführen (geöffnet durch Drücken der Win-Taste + R-Taste) den Hidemaru Editor mit dem Befehl hide starten. Darüber hinaus können Sie ihn in der Eingabeaufforderung mit dem Befehl start hide starten. 1 2 3 4 5 Windows Registry Editor Version 5.00 [HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\App Paths\\hide.exe] @=\u0026#34;\\\u0026#34;C:\\\\Program Files (x86)\\\\Hidemaru\\\\Hidemaru.exe\\\u0026#34;\u0026#34; \u0026#34;Path\u0026#34;=\u0026#34;\\\u0026#34;C:\\\\Program Files (x86)\\\\Hidemaru\\\\\\\u0026#34;\u0026#34; Wenn Sie den obigen Inhalt in einer .reg-Datei speichern und ausführen, werden die Einstellungen zur Registrierung hinzugefügt.\n","date":"2024-03-29T23:45:37+09:00","image":"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_hu43898a3aaad9ace099d9a060bc7203e5_68153_120x120_fill_box_smart1_3.png","permalink":"http://kenji.blog/de/p/wie-man-den-hidemaru-editor-mit-dem-befehl-hide-startet/","title":"Wie man den Hidemaru Editor mit dem Befehl 'hide' startet"},{"content":"Ungelöste Probleme in der Mathematik Ich werde ungelöste Probleme der Mathematik erklären. Obwohl die Probleme selbst einfach sind, gibt es noch viele Probleme, die nicht bewiesen wurden.\nGibt es unendlich viele vollkommene Zahlen? Eine vollkommene Zahl ist eine natürliche Zahl, deren Summe ihrer positiven echten Teiler (ohne sich selbst) gleich der Zahl selbst ist. Zum Beispiel,\nDie Teiler von 6 sind 1, 2, 3 und da 1+2+3=6 ist, ist es eine vollkommene Zahl. Die Teiler von 28 sind 1, 2, 4, 7, 14 und da 1+2+4+7+14=28 ist, ist es eine vollkommene Zahl. Derzeit wurden nur 51 entdeckt. Man vermutet, dass es unendlich viele gibt, aber es wurde noch nicht bewiesen.\nGoldbachsche Vermutung Die Goldbachsche Vermutung besagt, dass jede gerade Zahl größer als 2 als Summe zweier Primzahlen dargestellt werden kann. (Hierbei ist eine Primzahl eine natürliche Zahl, die außer 1 und sich selbst keine weiteren Teiler hat.)\nZum Beispiel,\n4=2+2 6=3+3 8=3+5 10=3+7=5+5 Das Problem selbst ist sehr einfach, aber es wurde noch nicht bewiesen.\nRiemannsche Vermutung Die Riemannsche Vermutung besagt, dass die Nullstellen der Riemannschen Zeta-Funktion auf negative gerade Zahlen und komplexe Zahlen mit einem Realteil von 1/2 beschränkt sind.\nDie Riemannsche Zeta-Funktion ist die Funktion $\\zeta$, die definiert ist durch (wenn $s$ eine komplexe Zahl und $n$ eine natürliche Zahl ist):\n$$\\zeta(s):=\\sum _{n=1}^{\\infty }{\\frac {1}{n^{s}}}=1+{\\frac {1}{2^{s}}}+{\\frac {1}{3^{s}}}+{\\frac {1}{4^{s}}}+\\cdots$$ ","date":"2024-03-02T22:57:36+09:00","image":"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_hub174c33a50b5d9de07ec5dc9c7de1bd4_731181_120x120_fill_box_smart1_3.png","permalink":"http://kenji.blog/de/p/ungeloeste-probleme-in-der-mathematik/","title":"Ungelöste Probleme in der Mathematik"},{"content":"Ich habe versucht, verschiedene Versionsinformationsdialoge zu sammeln Windows 11 Zunächst einmal sind hier die Versionsinformationen für Windows 11, die ich gerade verwende. IntelliJ IDEA (Community Edition) Dies ist die Umgebung, in der ich diesen Blog schreibe. Visual Studio Code Dies ist auch ein Editor, den ich oft benutze. Er ist überraschend einfach. Visual Studio Dies ist die Entwicklungsumgebung, die ich für C++ verwende. LINE (Windows) Dies ist die Windows-Version von LINE. Paint.NET Dies ist eine Bildbearbeitungssoftware. sakura editor Dies ist ein Texteditor. Google Chrome Dies ist Google Chrome. Seit der Einführung von Edge benutze ich ihn nicht mehr so oft. Firefox Dies ist Firefox. In letzter Zeit benutze ich ihn nicht mehr so oft. Microsoft Edge Dies ist Microsoft Edge. In letzter Zeit benutze diesen öfter. OBS Studio Dies ist OBS Studio. In letzter Zeit benutze ich es nicht mehr so oft. TradingView Dies ist TradingView. In letzter Zeit benutze ich es, um mir den Dollar-Yen-Chart anzusehen. Spy++ Dies ist Spy++. Es ist ein Tool, das im Windows SDK enthalten ist. dependency walker Dies ist der dependency walker. Es ist ein Tool, das im Windows SDK enthalten ist. resource hacker Dies ist der resource hacker. Es ist ein Tool zum Bearbeiten und Extrahieren von Ressourcen aus ausführbaren Dateien. Microsoft Excel Dies ist Microsoft Excel. bandicam Dies ist bandicam. Es ist ein Video-Capture-Tool. winmerge Dies ist winmerge. Es ist ein Tool, um Unterschiede zwischen Dateien zu erkennen. iTunes Dies ist iTunes. In letzter Zeit benutze ich es nicht mehr so oft. Hidemaru Editor Dies ist der Hidemaru Editor. Es ist ein Texteditor. Adobe Photoshop CS6 Dies ist Adobe Photoshop CS6. Adobe Illustrator CS6 Dies ist Adobe Illustrator CS6. ESET NOD32 Dies ist ESET NOD32. NotePad++ Dies ist NotePad++. Es ist ein Texteditor. MIFES Dies ist MIFES. In letzter Zeit benutze ich es nicht mehr so oft. ","date":"2024-03-02T21:32:11+09:00","image":"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_120x120_fill_box_smart1_3.png","permalink":"http://kenji.blog/de/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/","title":"Ich habe versucht, verschiedene Versionsinformationsdialoge zu sammeln"},{"content":"Tool zur GIF-animierten Bildschirmaufnahme Ich habe ein Tool erstellt, um den Bildschirm aufzuzeichnen und in eine GIF-Animation umzuwandeln. Mit diesem Tool können Sie Bildschirmoperationen aufzeichnen und auf Kommunikationstools wie Microsoft Teams teilen.\nWie man es benutzt Starten Sie das Tool Geben Sie den aufzunehmenden Bereich an. Wenn nichts angegeben wird, wird der gesamte Bildschirm aufgenommen. Drücken Sie die Aufnahmetaste Drücken Sie die Taste zum Beenden der Aufnahme Die GIF-Animation wird am selben Ort wie die ausführbare Datei ausgegeben Herunterladen Herunterladen\nÖffnen Sie den obigen Link und klicken Sie auf den Link GIFScreenRecorder.exe, um die ausführbare Datei herunterzuladen.\nQuellcode GitHub\n","date":"2024-02-08T01:23:01+09:00","image":"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_hua1d1e581d2290ce1c516887dff1e6eb0_11957_120x120_fill_box_smart1_3.png","permalink":"http://kenji.blog/de/p/tool-zur-gif-animierten-bildschirmaufnahme/","title":"Tool zur GIF-animierten Bildschirmaufnahme"},{"content":"Zusammenfassung des PMP-Studiums Eine Zusammenfassung für das PMP-Studium.\nÜbersicht PMP ist eine Zertifizierung für Projektmanagement. Es ist eine Zertifizierung, die auf dem PMBOK-Leitfaden (aktuelle 7. Ausgabe) basiert. Die PMP-Prüfung besteht aus 180 Fragen in 230 Minuten, wovon 5 Testfragen (Dummy-Fragen) sind, sodass man zum Bestehen mindestens 106 der restlichen 175 Fragen richtig beantworten muss. Die Antworten sind im Multiple-Choice-Format, meistens mit 4 Optionen, aber einige haben 5 Optionen oder erlauben Mehrfachauswahl.\nServant Leadership (Dienende Führung) Ein Führungsstil, bei dem man nicht von oben befiehlt, sondern von unten unterstützt.\nDie 10 Prinzipien (Merkmale) von Servant Leadership Zuhören Empathie Heilung Bewusstsein Überzeugung Konzeptualisierung Voraussicht Stewardship Engagement für das Wachstum von Menschen Gemeinschaftsbildung Das Agile Manifest - 4 Werte Wir erschließen bessere Wege zur Softwareentwicklung, indem wir sie selbst anwenden und anderen dabei helfen. Durch diese Arbeit haben wir diese Werte schätzen gelernt:\nIndividuen und Interaktionen mehr als Prozesse und Werkzeuge Funktionierende Software mehr als umfassende Dokumentation Zusammenarbeit mit dem Kunden mehr als Vertragsverhandlung Reagieren auf Veränderung mehr als das Befolgen eines Plans Das heißt, obwohl wir die Werte auf der rechten Seite wichtig finden, schätzen wir die Werte auf der linken Seite höher ein.\nAgiles Manifest\nAgile - 12 Prinzipien hinter dem Agilen Manifest Unsere höchste Priorität ist es, den Kunden durch frühe und kontinuierliche Auslieferung wertvoller Software zufriedenzustellen. Heiße Anforderungsänderungen selbst spät in der Entwicklung willkommen. Agile Prozesse nutzen Veränderungen zum Wettbewerbsvorteil des Kunden. Liefere funktionierende Software regelmäßig, innerhalb von wenigen Wochen bis zu einigen Monaten, wobei eine kürzere Zeitspanne bevorzugt wird. Fachexperten und Entwickler müssen während des gesamten Projekts täglich zusammenarbeiten. Errichte Projekte rund um motivierte Individuen. Gib ihnen das Umfeld und die Unterstützung, die sie benötigen, und vertraue darauf, dass sie die Arbeit erledigen. Die effizienteste und effektivste Methode, Informationen an und innerhalb eines Entwicklungsteams zu übermitteln, ist das Gespräch von Angesicht zu Angesicht. Funktionierende Software ist das wichtigste Maß für den Fortschritt. Agile Prozesse fördern nachhaltige Entwicklung. Die Sponsoren, Entwickler und Benutzer sollten in der Lage sein, ein konstantes Tempo auf unbestimmte Zeit aufrechtzuerhalten. Kontinuierliche Aufmerksamkeit für technische Exzellenz und gutes Design fördert Agilität. Einfachheit – die Kunst, die Menge der nicht getanen Arbeit zu maximieren – ist essenziell. Die besten Architekturen, Anforderungen und Designs entstehen durch selbstorganisierende Teams. Das Team reflektiert in regelmäßigen Abständen darüber, wie es effektiver werden kann, und passt sein Verhalten entsprechend an. Prinzipien hinter dem Agilen Manifest\nBegriffe Epic (Grob) User Story (Einheit zur Registrierung im Product Backlog, Einheit zur Priorisierung) Task (Aufgabe) (Technische Arbeitselemente, Gegenstand von Aufwandsschätzungen) Product Backlog / Product Backlog Item Product Owner Stakeholder Agile Practice Guide (Buch) Lean-Entwicklung Kanban Value Chain (Wertschöpfungskette) AC (Actual Cost - Tatsächliche Kosten) EV (Earned Value - Fertigstellungswert) PV (Planned Value - Geplanter Wert) EVA (Earned Value Analysis) SPI (Schedule Performance Index = EV / PV) CPI (Cost Performance Index = EV / AC) EVM (Earned Value Method) BAC (Budget at Completion - Budget bei Abschluss) ETC (Estimate To Complete - Geschätzte Restkosten) EAC (Estimate At Completion - Geschätzte Gesamtkosten) Funktionale Organisation Matrixorganisation Projektbezogene Organisation Servant Leadership Tuckman-Modell (Forming, Storming, Norming, Performing, Adjourning) Team-Charta Planning Poker (Fibonacci-Folge) Retrospektive (Rückblickende Aktivität) Virtuelles Team Projekt-Charta Konflikt (6 Bewältigungsstrategien: Konfrontation/Problemlösung, Zusammenarbeit, Kompromiss, Glättung/Anpassung, Zwang, Rückzug/Vermeidung) Value Stream Mapping (Wertstromanalyse) Mentoring Coaching Training Douglas McGregors X-Y-Theorie SWOT-Analyse (Strength/Stärken, Weakness/Schwächen, Opportunity/Chancen, Threat/Risiken) SECI-Modell (Socialization/Sozialisation, Externalization/Externalisierung, Combination/Kombination, Internalization/Internalisierung) PDCA, PDSA PESTLE (Political/Politisch, Economic/Wirtschaftlich, Social/Sozial, Technological/Technologisch, Legal/Rechtlich, Environmental/Ökologisch) VUCA (Volatilität, Unsicherheit, Komplexität, Ambiguität) Monte-Carlo-Simulation Entscheidungsbaum-Analyse (Decision Tree Analysis) Erwarteter Geldwert (Expected Monetary Value, EMV) Net Promoter Score Kosten-Nutzen-Analyse Sprint Review Release-Management SOW (Statement of Work - Leistungsbeschreibung, \u0026ldquo;Dokument mit detaillierter Beschreibung von Projektumfang, Zielen, Liefergegenständen, Zeitrahmen und Ressourcen\u0026rdquo;) P-SOW (Procurement Statement of Work - Beschaffungsleistungsbeschreibung) RFI (Request For Information - Informationsanfrage) RFP (Request For Proposal - Angebotsanfrage) Festpreisvertrag (FP: Fixed Price) Zeit- und Materialvertrag (T\u0026amp;M: Time and Material) Kostenerstattungsvertrag (CR: Cost Reimbursable) Festpreisvertrag mit Anreizgebühr (FPIF: Fixed Price Incentive Fee) Scope Creep (Schleichende Umfangserweiterung) Kano-Modell (Kano-Analyse) Budgetverteilung (Funding Limit Reconciliation) 100-Punkte-Methode MoSCoW-Methode (Must, Should, Could, Would) Traceability-Matrix (Anforderungsverfolgungsmatrix) WBS-Wörterbuch (PSP-Wörterbuch) Velocity (Anzahl der in jeder Iteration erreichten Story Points) Velocity-Chart Engagement-Matrix der Stakeholder (Unwissend, Widerstrebend, Neutral, Unterstützend, Führend) Phase Gate Information Radiator Burndown-Chart Burnup-Chart Kumulatives Flussdiagramm (Cumulative Flow Diagram) QCD (Quality, Cost, Delivery - Qualität, Kosten, Lieferung) Spiralmodell Critical Chain (Kritische Kette) Feature Iteration / Sprint Iterativ Inkrementell Inkrement (Zusätzliches Lieferergebnis) Resilienz Stewardship (Ehrliches, vertrauenswürdiges und verantwortungsvolles Handeln bei Entscheidungen) Eskalation KPT (Keep, Problem, Try) RACI (Responsible, Accountable, Consulted, Informed) PMO (Project Management Office - Unterstützend, Kontrollierend, Direktive) Kadenz Tailoring Neurologische Ebenen (Umwelt, Verhalten, Fähigkeiten, Überzeugungen/Werte, Identität/Selbsterkenntnis) Business Case (Dokumentation von Projektzielen, Nutzen, Risiken, ROI usw.) Trendanalyse (Wird mithilfe von Run-Charts durchgeführt und verwendet mathematische Techniken zur Vorhersage zukünftiger Ergebnisse) Qualitätsmanagementplan (Definiert die Strategie und den Ansatz bezüglich der Qualität der Projektergebnisse) Governance-Prozess Product Owner (Produktvision, Priorisierung des Product Backlogs, Produkt-Release) Project Owner / Projektsponsor (Auftraggeber des Projekts) Projektmanager (Verwaltet das gesamte Projekt) Projektleiter (Leitet vor Ort) Projektmitglied (Treibt das Projekt voran) Hybrider Ansatz Minimum Viable Product (MVP) Iteration Review Workshop Projekt-Nutzenmanagementplan (Project Benefits Management Plan - Ziele für den Projektnutzen, strategische Mittel und Zeitrahmen zu dessen Realisierung) Key Performance Indicator (KPI) Onsite (Vor Ort) Analoge Schätzung Drei-Punkt-Schätzung Parametrische Schätzung Projekt-Review Big-Bang-Ansatz DSDM (Dynamic Systems Development Method) Brooks\u0026rsquo;sches Gesetz (Erfahrungsregel von Brooks) Big-Bang-Ansatz (Alles wird gleichzeitig eingeführt) Risikoregister (Ein Dokument, das als Risikomanagement-Tool zur Identifizierung potenzieller Rückschläge im Projekt verwendet wird) Risikoregister SL-Theorie (Situatives Führen - 4 Verhaltensweisen abhängig von der Situation des Gegenübers) Kompetenz Commitment (Verpflichtung) Referenzen Scrum Guide (Ken Schwaber \u0026amp; Jeff Sutherland) PMI ECO Agile Practice Guide PMI Code of Ethics Lernmaterialien PMP® Zertifizierungsprüfung im ersten Versuch bestehen! Strategiekurs für effiziente Prüfungsvorbereitung (2021) Agile-kompatibel ","date":"2024-02-04T18:41:31+09:00","image":"http://kenji.blog/p/pmp%E5%8B%89%E5%BC%B7/img_hu67a0961bf8e284d45690ac9cdb09e5b3_16702_120x120_fill_box_smart1_3.png","permalink":"http://kenji.blog/de/p/pmp%E5%8B%89%E5%BC%B7/","title":"PMP-Studium"},{"content":"Überblick Notizen zu Naturkatastrophen in Japan.\n1. Januar 2024 Erdbeben auf der Noto-Halbinsel ","date":"2024-01-07T00:50:09+09:00","image":"http://kenji.blog/p/%E6%97%A5%E6%9C%AC%E3%81%AE%E7%81%BD%E5%AE%B3/img_hue649e8d0b3bd837ea85e155e108b15fd_273208_120x120_fill_box_smart1_3.png","permalink":"http://kenji.blog/de/p/%E6%97%A5%E6%9C%AC%E3%81%AE%E7%81%BD%E5%AE%B3/","title":"Naturkatastrophen in Japan"},{"content":"Die Sieben Kräuter Java-Wasserfenchel (Seri) Hirtentäschel (Nazuna) Ruhrkraut (Gogyo) Vogelmiere (Hakobera) Gemeiner Rainkohl (Hotokenoza) Speiserübe (Suzuna) Daikon-Rettich (Suzushiro) ","date":"2024-01-06T22:22:00+09:00","image":"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_hu3e148c57f6499065259203ce3bd1c8c5_295252_120x120_fill_box_smart1_3.png","permalink":"http://kenji.blog/de/p/rezept-fuer-nanakusa-gayu/","title":"Rezept für Nanakusa-gayu (Sieben-Kräuter-Reisschleim)"},{"content":"Empfohlene japanische Musik チューリップ - 青春の影 イルカ - なごり雪 河島英五 - 酒と泪と男と女 Orangestar - Surges 竹内まりや - Plastic Love RADWIMPS - 前前前世 BEGIN - 島人ぬ宝 ザ・ブルーハーツ - 情熱の薔薇 荒井由実 - ルージュの伝言 Begin - 海の声 荒井由実 - ひこうき雲 Love is Over - 欧陽菲菲 クラムボン - 波よせて RADWIMPS - スパークル かりゆし58 - アンマー かりゆし58 - オワリはじまり テレサ・テン - 時の流れに身をまかせ 宇多田ヒカル『One Last Kiss』 不可思議/wonderboy - Pellicule (Official Music Video) Kamen Rider Black RX - Opening Song たしかなこと / 小田和正 - Covered by パクユナ 【Japanese healing song】Hana／Kosuke Atari（covered by Leah） 「真夜中のドア〜stay with me」/ 松原みき Official Lyric Video Midnight Pretenders Anri - Last Summer Whisper 1985 - The Blue Hearts BUMP OF CHICKEN - supernova チューリップ　心の旅　1972 小さな恋のうた ASKA - はじまりはいつも雨 (Official Music Video) キリンジ - エイリアンズ あの日の空よ - 南こうせつ ","date":"2024-01-06T04:11:01+09:00","image":"http://kenji.blog/p/%E5%A5%BD%E3%81%8D%E3%81%AA%E9%82%A6%E6%A5%BD/img_hub840e0bd8da1fd2845b1fe157b13d9d8_1067024_120x120_fill_box_smart1_3.png","permalink":"http://kenji.blog/de/p/lieblings-japanische-musik/","title":"Lieblings-Japanische-Musik"},{"content":"Empfohlene westliche Musik Keane - Somewhere Only We Know Ben E. King - Stand By Me The Beatles - Hey Jude The Mamas \u0026amp; The Papas - California Dreamin' Ed Sheeran - Shape of You Mark Ronson ft. Bruno Mars – Uptown Funk Sugar - Maroon 5 Bette Midler - The Rose Green Day - Basket Case Coldplay - Viva La VidaViva La Vida Maroon 5 - Memories (Lyrics) Dido - Thank You (Official Video) Bob Dylan - Blowin\u0026rsquo;The Wind(Die Antwort weiß ganz allein der Wind) Coldplay - Yellow Eric Clapton - Tears In Heaven B. J. Thomas - Raindrops Keep Fallin\u0026rsquo; on My Head (Stereo / Lyrics) Take Me Home, Country Roads Simon \u0026amp; Garfunkel - Mrs. Robinson (Audio) Taylor Swift - Love Story (Live on Letterman) Wiz Khalifa - See You Again ft. Charlie Puth [Official Video] Furious 7 Soundtrack The Top (Extended Mix) Something Just Like This Feelings Yesterday Once More Carpenters - Top Of The World I Need To Be In Love [Mit japanischer Übersetzung] Carpenters Bob Marley \u0026amp; The Wailers \u0026ldquo;Three Little Birds\u0026rdquo; Alan Walker - All Falls Down (feat. Noah Cyrus with Digital Farm Animals) Alan Walker - Darkside (feat. Au/Ra and Tomine Harket) Alan Walker - Alone Alan Walker - Sing Me To Sleep Alan Walker - Faded killing me softly with his song a-ha - Take On Me (Official Video) ","date":"2024-01-05T00:14:22+09:00","image":"http://kenji.blog/p/%E5%A5%BD%E3%81%8D%E3%81%AA%E6%B4%8B%E6%A5%BD/img_hued679cc884753e5576b95c5f8e6f029a_283063_120x120_fill_box_smart1_3.png","permalink":"http://kenji.blog/de/p/%E5%A5%BD%E3%81%8D%E3%81%AA%E6%B4%8B%E6%A5%BD/","title":"Lieblings Westliche Musik"},{"content":"PowerToys in der Eingabeaufforderung installieren Hier wird beschrieben, wie Sie PowerToys über die Eingabeaufforderung installieren.\n1 winget install Microsoft.PowerToys --source winget PowerToys in der Eingabeaufforderung deinstallieren 1 winget uninstall --name PowerToys ","date":"2023-09-30T21:23:00+09:00","image":"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_hud87e455d0958ca41a83ffdf977dac7c2_37972_120x120_fill_box_smart1_3.png","permalink":"http://kenji.blog/de/p/powertoys%E3%81%AE%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB/","title":"PowerToys in der Eingabeaufforderung installieren"},{"content":"Lasst uns Respekt zeigen Respektieren wir die Menschen, die Dinge tun können, die wir nicht können.\nIn der Gesellschaft gibt es überraschend viele Menschen, die Berufe und Positionen in eine Rangordnung bringen und keinen Respekt zeigen können.\nLasst uns denjenigen Respekt erweisen, die Arbeiten erledigen, die wir nicht tun können, ganz gleich, um welche Arbeit es sich handelt.\nDas möchte ich mir zu Herzen nehmen.\n","date":"2023-08-01T23:42:31+09:00","image":"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_hu0ec845f1b3d93c1f1262f8f9c2fb19a8_357395_120x120_fill_box_smart1_3.png","permalink":"http://kenji.blog/de/p/respektieren-wir-diejenigen-die-koennen-was-wir-nicht-koennen/","title":"Respektieren wir diejenigen, die können, was wir nicht können"},{"content":"Splatoon 2 Das Spiel, das ich in meinem Leben wahrscheinlich am längsten gespielt habe, ist Splatoon 2. Ich habe den Story-Modus kaum gespielt, aber das 4-gegen-4 Online-Matchmaking ist sehr gut durchdacht. Da man gegen Leute auf seinem eigenen Niveau spielen kann, wird es nie langweilig. Außerdem macht es Spaß, die Bewegungen von Verbündeten und Gegnern zu lesen, um Gewinnstrategien zu entwickeln.\nWaffen Die Waffen, die ich am häufigsten benutze, sind in dieser Reihenfolge: \u0026ldquo;Quetscher Neo\u0026rdquo;, \u0026ldquo;Kleckser Jr.\u0026rdquo;, \u0026ldquo;Klecksroller\u0026rdquo; und \u0026ldquo;Flex-Roller Fol\u0026rdquo;. Der \u0026ldquo;Kleckser Jr.\u0026rdquo; ist eine Waffe für Anfänger, die ich in der Anfangszeit oft benutzt habe.\nDie Einfärbepunkte für jede Waffe sind wie folgt:\nWaffe Einfärbepunkte Flex-Roller Fol 6.636.594p Klecksroller 6.200.629p Kleckser Jr. 4.211.759p Quetscher Neo 744.678p Kleckser 301.238p Über das Level Ich habe das Gefühl, ständig zwischen A+ und S+ hin- und herzupendeln. Seit einiger Zeit komme ich nicht mehr in die Spitzenränge von S+, aber ich spiele eher aus Spaß am Spiel, als um aufzusteigen. (Wenn der Rang zu hoch wird, werden auch die Gegner stärker und es entsteht Anspannung, sodass ich es nicht mehr genießen kann)\nSpielzeit Meine Spielzeit hat mittlerweile über 2500 Stunden überschritten.\nZukünftige Ziele Mein Ziel ist es, mein Spielniveau zu halten und weiterhin Spaß zu haben, aber ich möchte auch das Maximum bei Geld und Ausrüstung erreichen. Seit der Veröffentlichung von Splatoon 3 dauert das Matchmaking länger und es kommt immer häufiger vor, dass keine Spieler gefunden werden. Deshalb hoffe ich, weiterhin spielen zu können, und bete, dass die Spielerzahl nicht noch weiter sinkt.\n","date":"2023-08-01T00:26:30+09:00","image":"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_hu177387d05aedc7553df9576fd3706d02_192717_120x120_fill_box_smart1_3.png","permalink":"http://kenji.blog/de/p/splatoon-2/","title":"Splatoon 2"},{"content":"Über die Microsoft MVP-Auszeichnung (2023-2024) Ich freue mich, Ihnen mitteilen zu können, dass ich die Microsoft MVP-Auszeichnung (2023-2024) erhalten habe. Dies ist das siebte Jahr in Folge seit 2017, dass ich diese Auszeichnung erhalte.\nDie ausgezeichnete Kategorie ist Developer Technologies .\nWenn ich auf meine vergangenen Aktivitäten zurückblicke, war ich an Folgendem beteiligt:\nVeröffentlichung von Code auf GitHub Teilen von technischen Informationen auf dem Blog und in sozialen Medien (wie Twitter) Beiträge im MSDN-Forum Feedback zu Microsoft-Produkten Ich werde mich weiterhin bemühen, in Zukunft bessere Artikel zu schreiben und Informationen zu teilen.\nVielen Dank für Ihre anhaltende Unterstützung.\n","date":"2023-07-31T19:15:14+09:00","image":"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_hua5cba2ce9936d80b2181232333db0622_19957_120x120_fill_box_smart1_3.png","permalink":"http://kenji.blog/de/p/%C3%BCber-die-microsoft-mvp-auszeichnung-2023-2024/","title":"Über die Microsoft MVP-Auszeichnung (2023-2024)"},{"content":"Die drei klassischen Probleme der Antike Zu einem gegebenen Kreis ein flächengleiches Quadrat konstruieren (Quadratur des Kreises) Einen beliebigen Winkel in drei gleiche Teile teilen (Dreiteilung des Winkels) Zu einem gegebenen Würfel einen Würfel mit doppeltem Volumen konstruieren (Verdoppelung des Würfels) Archimedische Spirale In einer Ebene dreht sich ein Halbstrahl OB mit gleichmäßiger Geschwindigkeit um einen festen Punkt O. Wenn die Ausgangsposition OA ist und gleichzeitig ein Punkt P von O aus startet und sich mit konstanter Geschwindigkeit entlang OB bewegt, ist die von Punkt P gezeichnete Kurve die Archimedische Spirale.\nSatz des Pappos Zykloide Konchoide des Nikomedes Zissoide des Diokles Tangentenmethode von Fermat Normalenmethode von Descartes Chronologie Jahr Ereignis ca. 3400 v. Chr. Die Sumerer verwenden Tonzählmarken für die Buchhaltung ca. 3000 v. Chr. Hieroglyphische Mathematik taucht in Ägypten auf ca. 2800 v. Chr. Die Indus-Kultur verwendet dezimale Maße und Gewichte ca. 2700 v. Chr. Die Ägypter verwenden Seile und pythagoreische Tripel zur Winkelprüfung ca. 2500 v. Chr. Der Abakus, ein Rechenwerkzeug, wird entdeckt ca. 2500 v. Chr. Referenz Geschichte der Mathematik ","date":"2023-07-22T15:25:10+09:00","image":"http://kenji.blog/p/%E6%95%B0%E5%AD%A6%E3%81%AE%E6%AD%B4%E5%8F%B2/img_hu67324d5a4a949c1841dc5158adcb7086_428375_120x120_fill_box_smart1_3.png","permalink":"http://kenji.blog/de/p/geschichte-der-mathematik/","title":"Geschichte der Mathematik"},{"content":"Über den Elecom Trackball Deft Pro M-DPT1MRBK Es ist etwa eine Woche her, dass ich den Elecom-Trackball \u0026ldquo;Deft Pro M-DPT1MRBK\u0026rdquo; gekauft habe, daher werde ich einen Bericht über meine Nutzungserfahrungen geben.\nHauptmerkmale\nGroße Anzahl von Tasten: 8 Drei Verbindungsarten: Kabelgebunden, kabelloser Empfänger und Bluetooth Großer Ball (mittlerer Durchmesser 44 mm) Kaufpreis bei Amazon: ￥7.012 (Stand: 2. Mai 2021) Gute Punkte Da das Handgelenk im Vergleich zu einer Maus nicht bewegt werden muss, wird die Belastung des Handgelenks reduziert. Da es viele Tasten gibt, können Sie den Tasten verschiedene Funktionen zuweisen. Derzeit sind sie wie oben zugewiesen. Sie können die Tastenbelegung auch für jede Anwendung ändern. Für die Tastenbelegung ist die Installation einer speziellen Software erforderlich. Da der Ball groß ist, ist es für einen Trackball relativ einfach, feine Bewegungen auszuführen. Schlechte Punkte Schmutz sammelt sich um den Trackball herum an, daher ist es notwendig, den Ball regelmäßig herauszunehmen und zu reinigen (etwa alle paar Tage). Es dauert eine Weile, sich daran zu gewöhnen, da das Bediengefühl anders ist als bei einer Maus: Bewegen des Cursors mit dem Zeige- oder Mittelfinger und Bedienen des Mausrads mit dem Daumen. Obwohl ich oben geschrieben habe, dass es einfach ist, feine Bewegungen zu machen, ist es immer noch schwierig, den Cursor mit einem Trackball pixelweise zu bewegen. Das Mausrad kann nicht bedient werden, während die linke Taste gedrückt wird (z. B. wenn Sie beim Auswählen eines Bereichs in Paint hinein-/herauszoomen möchten). Insgesamt denke ich, dass es sich um einen teuren Trackball handelt, aber im Allgemeinen ist er recht einfach zu bedienen, und ich habe das Gefühl, dass meine Arbeit produktiver geworden ist. Ich hoffe, das ist hilfreich für diejenigen, die einen Kauf in Betracht ziehen.\n","date":"2023-05-02T23:28:33+09:00","image":"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_hue224b6b6b3d7da0ebda5f0b37d429b68_231359_120x120_fill_box_smart1_3.png","permalink":"http://kenji.blog/de/p/trackball-deft-pro-m-dpt1mrbk-empfehlung/","title":"Trackball Deft Pro (M-DPT1MRBK) Empfehlung"},{"content":"Was ist wxWidgets wxWidgets ist eine C++-GUI-Bibliothek, die auf Plattformen wie Windows, Mac, Linux, Android, iOS usw. funktioniert.\nInstallation von wxWidgets Öffnen Sie https://www.wxwidgets.org/downloads/ und laden Sie den Windows Installer herunter. Führen Sie wxMSW-3.2.2.1-Setup.exe aus, um es zu installieren. Öffnen Sie \u0026ldquo;C:\\wxWidgets-3.2.2.1\\build\\msw\\wx_vc17.sln\u0026rdquo; aus dem installierten Ordner. Nachdem Sie wx_vc17.sln geöffnet haben, wählen Sie Erstellen \u0026gt; Stapelverarbeitung. Drücken Sie die Schaltfläche Alle auswählen und dann die Schaltfläche Neu erstellen. Schließen Sie Visual Studio vorübergehend, nachdem der Build abgeschlossen ist. Erstellung des Beispielprojekts Öffnen Sie Visual Studio. Wählen Sie Datei \u0026gt; Neu \u0026gt; Projekt. Wählen Sie Windows-Desktopanwendung (Registerkarten sind C++, Windows, Desktop). Geben Sie wxWidgetsSample unter Projektname ein. Klicken Sie auf Erstellen. Klicken Sie mit der rechten Maustaste auf wxWidgetsSample und wählen Sie Eigenschaften. Fügen Sie unter Konfigurationseigenschaften \u0026gt; C/C++ \u0026gt; Zusätzliche Includeverzeichnisse C:\\wxWidgets-3.2.2.1\\include und C:\\wxWidgets-3.2.2.1\\include\\msvc hinzu. Fügen Sie unter Konfigurationseigenschaften \u0026gt; Linker \u0026gt; Zusätzliche Bibliotheksverzeichnisse C:\\wxWidgets-3.2.2.1\\lib\\vc_x64_lib hinzu. Öffnen Sie wxWidgetsSample.cpp und ersetzen Sie den Code durch den folgenden. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 #pragma comment(linker,\u0026#34;\\\u0026#34;/manifestdependency:type=\u0026#39;win32\u0026#39; name=\u0026#39;Microsoft.Windows.Common-Controls\u0026#39; version=\u0026#39;6.0.0.0\u0026#39; processorArchitecture=\u0026#39;*\u0026#39; publicKeyToken=\u0026#39;6595b64144ccf1df\u0026#39; language=\u0026#39;*\u0026#39;\\\u0026#34;\u0026#34;) #include \u0026lt;wx/wxprec.h\u0026gt; #ifndef WX_PRECOMP #include \u0026lt;wx/wx.h\u0026gt; #endif class MyApp : public wxApp { public: virtual bool OnInit(); }; class MyFrame : public wxFrame { public: MyFrame(); private: void OnHello(wxCommandEvent\u0026amp; event); void OnExit(wxCommandEvent\u0026amp; event); void OnAbout(wxCommandEvent\u0026amp; event); }; enum { ID_Hello = 1 }; wxIMPLEMENT_APP(MyApp); bool MyApp::OnInit() { MyFrame* frame = new MyFrame(); frame-\u0026gt;Show(true); return true; } MyFrame::MyFrame() : wxFrame(NULL, wxID_ANY, \u0026#34;Hello World\u0026#34;) { wxMenu* menuFile = new wxMenu; menuFile-\u0026gt;Append(ID_Hello, \u0026#34;\u0026amp;Hello...\\tCtrl-H\u0026#34;, \u0026#34;Help string shown in status bar for this menu item\u0026#34;); menuFile-\u0026gt;AppendSeparator(); menuFile-\u0026gt;Append(wxID_EXIT); wxMenu* menuHelp = new wxMenu; menuHelp-\u0026gt;Append(wxID_ABOUT); wxMenuBar* menuBar = new wxMenuBar; menuBar-\u0026gt;Append(menuFile, \u0026#34;\u0026amp;File\u0026#34;); menuBar-\u0026gt;Append(menuHelp, \u0026#34;\u0026amp;Help\u0026#34;); SetMenuBar(menuBar); wxButton* button1 = new wxButton(this, ID_Hello, _(\u0026#34;Hello\u0026#34;), wxPoint(20, 20), wxSize(100, 32)); Connect(ID_Hello, wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler(MyFrame::OnHello)); wxButton* button2 = new wxButton(this, wxID_ABOUT, _(\u0026#34;About\u0026#34;), wxPoint(20, 60), wxSize(100, 32)); Connect(wxID_ABOUT, wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler(MyFrame::OnAbout)); wxButton* button3 = new wxButton(this, wxID_EXIT, _(\u0026#34;Exit\u0026#34;), wxPoint(20, 100), wxSize(100, 32)); Connect(wxID_EXIT, wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler(MyFrame::OnExit)); CreateStatusBar(); SetStatusText(\u0026#34;Welcome to wxWidgets!\u0026#34;); Bind(wxEVT_MENU, \u0026amp;MyFrame::OnHello, this, ID_Hello); Bind(wxEVT_MENU, \u0026amp;MyFrame::OnAbout, this, wxID_ABOUT); Bind(wxEVT_MENU, \u0026amp;MyFrame::OnExit, this, wxID_EXIT); } void MyFrame::OnExit(wxCommandEvent\u0026amp; event) { Close(true); } void MyFrame::OnAbout(wxCommandEvent\u0026amp; event) { wxMessageBox(\u0026#34;This is a wxWidgets\u0026#39; Hello world sample\u0026#34;, \u0026#34;About Hello World\u0026#34;, wxOK | wxICON_INFORMATION); } void MyFrame::OnHello(wxCommandEvent\u0026amp; event) { wxLogMessage(\u0026#34;Hello world from wxWidgets!\u0026#34;); } Beim Kompilieren und Ausführen wird ein Fenster wie das untenstehende geöffnet. Referenzen Das Beispielprojekt ist unten verfügbar. wxWidgetsSample\nOffizielle Website Spiele mit C++ und wxWidgets Das ist alles.\n","date":"2023-04-18T00:18:22+09:00","image":"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_hud707912b3d08e9053ad61da0782a9b23_168133_120x120_fill_box_smart1_3.png","permalink":"http://kenji.blog/de/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/","title":"Beispiel mit wxWidgets"},{"content":"Filme, die ich sehen möchte (beim Ansehen abhaken) Maquia: Eine unsterbliche Liebesgeschichte Das Geheimnis der blauen Tropfen Summer Wars Hidden Figures Good Will Hunting A Beautiful Mind Die Entdeckung der Unendlichkeit Die Poesie des Unendlichen Hawking (Benedict Cumberbatch) Tenchi Meisatsu Pi 21 I.Q. – Liebe ist relativ Proof – Der Beweis 3 Idiots Buffalo \u0026lsquo;66 Uhrwerk Orange Backdraft Asakusa Kid Top Gun Matrix Resurrections I Am Legend The Da Vinci Code The Social Network STEINS;GATE Planetes Gravity Violet Evergarden Psycho-Pass Demon Slayer Prinzessin Mononoke Winny Zero Focus Zoomania Your Name. Weathering With You Zurück in die Zukunft (1, 2, 3) Shin Godzilla Shin Ultraman Shin Kamen Rider Suzume THE FIRST SLAM DUNK ","date":"2023-04-17T00:34:13+09:00","image":"http://kenji.blog/p/%E6%98%A0%E7%94%BBtodo%E3%83%AA%E3%82%B9%E3%83%88/image_hu831a556e644f698f06f7bab476f01bf6_248271_120x120_fill_q75_box_smart1.jpg","permalink":"http://kenji.blog/de/p/%E6%98%A0%E7%94%BBtodo%E3%83%AA%E3%82%B9%E3%83%88/","title":"Filme TODO Liste"},{"content":"Cooles Webseiten-Template\nhtml5up https://html5up.net/ Ich dachte, ich würde es gerne verwenden, also ist hier eine Notiz.\n","date":"2023-04-17T00:26:55+09:00","image":"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_huc021190a6647c74fdf17f0c26cf7f09d_324732_120x120_fill_box_smart1_3.png","permalink":"http://kenji.blog/de/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/","title":"Cooles Webseiten-Template (html5up)"},{"content":"Voraussetzungen ISO C++ 20 Standard (/std:c++20) Code 1 2 3 4 #include \u0026lt;chrono\u0026gt; #include \u0026lt;format\u0026gt; std::string datetime = std::format(\u0026#34;{:%FT%TZ}\u0026#34;, system_clock::now()); So können Sie die aktuelle Zeit im ISO 8601 Format in C++ ausgeben.\nReferenzen std::format ","date":"2023-04-15T19:35:27+09:00","image":"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_hu7d543f2117b8a102814b6a542ff27896_11509_120x120_fill_box_smart1_3.png","permalink":"http://kenji.blog/de/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/","title":"Wie man die aktuelle Zeit im ISO 8601 Format in C++ ausgibt"},{"content":"Hier wird beschrieben, wie Sie eine Verknüpfung zum Herunterfahren von Windows erstellen.\nEs ist praktisch, da Sie den Computer durch einen Doppelklick auf die erstellte Verknüpfung, z. B. auf dem Desktop, herunterfahren können.\nErstellungsmethode 1. Klicken Sie mit der rechten Maustaste auf den Desktop und wählen Sie Neu \u0026gt; Verknüpfung 2. Der Bildschirm zur Erstellung von Verknüpfungen wird angezeigt. Geben Sie shutdown.exe -s -f -t 0 ein und klicken Sie auf Weiter 3. Geben Sie den Namen der Verknüpfung Herunterfahren ein und klicken Sie auf Fertig stellen 4. Ändern Sie das Symbol der erstellten Verknüpfung Klicken Sie mit der rechten Maustaste auf die erstellte Verknüpfung und wählen Sie Eigenschaften\nKlicken Sie auf Anderes Symbol\nWählen Sie das rote quadratische Symbol und klicken Sie auf OK. Klicken Sie dann erneut auf OK, um die Eigenschaften zu schließen.\nDas war\u0026rsquo;s.\nWindows wird heruntergefahren, wenn Sie auf die erstellte Verknüpfung doppelklicken.\n※ Hinweis: Es wird kein Bestätigungsdialog zum Herunterfahren angezeigt.\n","date":"2023-04-11T17:03:32+09:00","image":"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_120x120_fill_box_smart1_3.png","permalink":"http://kenji.blog/de/p/so-erstellen-sie-eine-verkn%C3%BCpfung-zum-herunterfahren-von-windows/","title":"So erstellen Sie eine Verknüpfung zum Herunterfahren von Windows"},{"content":"Ich werde Ihnen zeigen, wie Sie mit paint.net ein Mosaik auf bestimmte Teile eines Bildes anwenden.\nWenn Sie Bilder ins Internet hochladen, möchten Sie vielleicht in bestimmten Fällen ein Mosaik auf bestimmte Teile des Bildes anwenden. Mit paint.net können Sie Bilder schnell bearbeiten.\nVorgehensweise 1. Öffnen Sie das Bild, auf das Sie das Mosaik anwenden möchten, in paint.net 2. Verwenden Sie das Auswahlwerkzeug, um den Bereich auszuwählen, den Sie mit einem Mosaik versehen möchten (Mehrfachauswahl möglich) 3. Wählen Sie Menü \u0026gt; Effekte \u0026gt; Verzerren \u0026gt; Mosaik Legen Sie die Grobheit des Mosaiks durch die Zellengröße fest. Je größer die Zahl, desto höher die Verdeckung. [Verkleinern] Wählen Sie Bilinear (Multisampling) [Vergrößern] Wählen Sie Nearest Neighbor Schließen Sie das Dialogfeld mit OK.\n4. Das Bild wird mit einem Mosaik versehen. Speichern Sie das Bild anschließend. Das ist alles.\n","date":"2023-04-11T16:33:10+09:00","image":"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_120x120_fill_box_smart1_3.png","permalink":"http://kenji.blog/de/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/","title":"So wenden Sie ein Mosaik auf bestimmte Teile eines Bildes mit paint.net an"},{"content":"Hier wird gezeigt, wie man mit paint.net einen Rahmen zu einem Bild hinzufügt.\nVorgehensweise 1. Öffnen Sie das Bild, dem Sie einen Rahmen hinzufügen möchten, in paint.net 2. Legen Sie die Sekundärfarbe fest (dies wird die Rahmenfarbe sein) Wenn die Farbpalette nicht angezeigt wird, drücken Sie die Taste F8 auf Ihrer Tastatur.\nUm es auf Schwarz zu setzen, klicken Sie auf .\n3. Wählen Sie Menü \u0026gt; Bild \u0026gt; Leinwandgröße ändern Erhöhen Sie die Breite und Höhe um jeweils 2 Pixel. Eine Erhöhung um 2 Pixel ergibt einen Rahmen von 1 Pixel. Wenn Sie einen Rahmen von 5 Pixeln möchten, erhöhen Sie die Breite und Höhe um jeweils 10 Pixel.\nWählen Sie \u0026ldquo;Mitte\u0026rdquo; für den Anker und klicken Sie auf OK.\n4. Ein Rahmen wird dem Bild hinzugefügt, speichern Sie das Bild. Das ist alles.\n","date":"2023-04-11T14:31:59+09:00","image":"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_hu0a2e55b3f220b3e7559f248d1c86ab19_112900_120x120_fill_box_smart1_3.png","permalink":"http://kenji.blog/de/p/wie-man-mit-paint-net-einen-rahmen-hinzufuegt/","title":"Wie man mit paint.net einen Rahmen zu einem Bild hinzufügt"},{"content":"Einleitung Mit dem Dienst Ranklet können Sie ganz einfach ein Ranking beliebter Seiten aus Google Analytics abrufen und auf Ihrer Website einbinden.\nIn diesem Artikel zeige ich Ihnen, wie Sie dieses Ranking in einem HUGO-Blog einbinden.\nVorschau Vorbereitung Auf Ihrer Website muss Google Analytics eingerichtet sein. Schritte Rufen Sie Ranklet auf. Klicken Sie auf Sign in with Google und melden Sie sich mit Ihrem Google-Konto an (dieses muss mit Ihrem Google Analytics-Konto verknüpft sein). Klicken Sie auf Zulassen (許可).\nRichten Sie die grundlegenden Informationen ein. Die Einstellungen wurden wie oben abgebildet vorgenommen.\nWählen Sie unter Google Analytics-Ansicht (Google Analytics ビュー) die Datenansicht aus, aus der Sie das Ranking abrufen möchten. Richten Sie die Textersetzung ein. Die Einstellungen wurden wie oben abgebildet vorgenommen. Dies ist so eingestellt, dass | kenji.blog aus dem Seitentitel entfernt wird.\nRichten Sie die Vorlage ein. HTML (Die Platzierungsnummern des Rankings wurden ausgeblendet) 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 \u0026lt;div class=\u0026#34;ranklet ranklet-reset\u0026#34;\u0026gt; \u0026lt;table class=\u0026#34;ranklet-table\u0026#34;\u0026gt; \u0026lt;tbody class=\u0026#34;ranklet-pages\u0026#34;\u0026gt; {{#context.pages}} \u0026lt;tr class=\u0026#34;ranklet-page\u0026#34;\u0026gt; \u0026lt;td class=\u0026#34;ranklet-image\u0026#34;\u0026gt; {{#image}} \u0026lt;a href=\u0026#34;{{url}}\u0026#34; class=\u0026#34;ranklet-link\u0026#34;\u0026gt; \u0026lt;img class=\u0026#34;ranklet-img\u0026#34; src=\u0026#34;{{image}}\u0026#34; /\u0026gt; \u0026lt;/a\u0026gt; {{/image}} \u0026lt;/td\u0026gt; \u0026lt;td class=\u0026#34;ranklet-meta\u0026#34;\u0026gt; \u0026lt;div class=\u0026#34;ranklet-title\u0026#34;\u0026gt; \u0026lt;a href=\u0026#34;{{url}}\u0026#34; class=\u0026#34;ranklet-link\u0026#34;\u0026gt; {{title}} \u0026lt;/a\u0026gt; \u0026lt;/div\u0026gt; {{#description}} \u0026lt;div class=\u0026#34;ranklet-description\u0026#34;\u0026gt; \u0026lt;a href=\u0026#34;{{url}}\u0026#34; class=\u0026#34;ranklet-link\u0026#34;\u0026gt; {{description}} \u0026lt;/a\u0026gt; \u0026lt;/div\u0026gt; {{/description}} \u0026lt;/td\u0026gt; \u0026lt;/tr\u0026gt; {{/context.pages}} \u0026lt;/tbody\u0026gt; \u0026lt;/table\u0026gt; \u0026lt;/div\u0026gt; CSS (Schriftgröße geändert und die Beschreibung auf maximal 3 Zeilen begrenzt) 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 #ranklet-{{context.id}} { .ranklet-reset { // Reset table, tr, td, div, span { margin: 0; padding: 0; border: 0; font-size: 100%; font: inherit; vertical-align: baseline; line-height: 1; box-sizing: border-box; } } .ranklet-table { border-collapse: separate; border-spacing: 8px 24px; width: 100%; word-break: break-all; td { vertical-align: middle; } .ranklet-rank { text-align: center; font-size: 120%; } .ranklet-image { text-align: center; img { max-width: 128px; max-height: 128px; } } .ranklet-meta { .ranklet-title { font-size: 20px; line-height: 125%; } .ranklet-description { font-size: 16px; margin-top: 8px; line-height: 125%; display: -webkit-box; overflow: hidden; -webkit-box-orient: vertical; -webkit-line-clamp: 3; /* Zeilenanzahl */ } } } } JavaScript bleibt unverändert Kopieren Sie den HTML-Code aus „Auf Website einbinden“ (サイトへの掲載) Kopieren Sie den angezeigten HTML-Code.\nIn das HUGO-Template einfügen Erstellen Sie layouts/partials/ranklet.html und fügen Sie den kopierten HTML-Code ein. 1 \u0026lt;div id=\u0026#34;ranklet-11958\u0026#34;\u0026gt;\u0026lt;/div\u0026gt;\u0026lt;script src=\u0026#34;//widget.ranklet.com/v1/ranklet/s3/widgets/11958/widget.js\u0026#34;\u0026gt;\u0026lt;/script\u0026gt; Fügen Sie den folgenden Code in der Zeile vor \u0026lt;/footer\u0026gt; in layouts/_default/single.html ein. 1 {{- partial \u0026#34;ranklet.html\u0026#34; . }} Das ist alles. Damit wird das Ranking wie unten auf dieser Seite angezeigt.\n","date":"2023-04-10T20:26:57+09:00","image":"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_hue19aa55fc0e6d690cd31b7a50b796054_6753_120x120_fill_box_smart1_3.png","permalink":"http://kenji.blog/de/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/","title":"Wie man das Ranking beliebter Seiten aus Google Analytics abruft und einbindet"},{"content":"Python Google Colaboratory Google Colaboratory ist eine online verfügbare Python-Ausführungsumgebung.\nDie Nutzung von GPUs ist ebenfalls möglich. Mit Colab-Notebooks können Sie ausführbaren Code und Rich-Text (Bilder, HTML, LaTeX usw.) in einem einzigen Dokument schreiben. Es basiert auf Jupyter Notebook.\nRust Rust Playground JavaScript Javascript Playground Java paiza.IO Online Java compiler Haskell Haskell Playground Swift Online Swift Playground C++ C++ 14 Sonstiges AWS Cloud9 Eine von Amazon AWS bereitgestellte integrierte Online-Entwicklungsumgebung. Werkzeuge für über 40 Programmiersprachen wie Node.js, JavaScript, Python, PHP, Ruby, Go, C++ usw. sind vorpaketiert.\nVisual Studio Code for the Web Eine von Microsoft bereitgestellte Online-Entwicklungsumgebung. Sprachen, die kompiliert werden müssen, können jedoch weder ausgeführt noch debuggt werden.\npaiza.IO Eine Online-Ausführungsumgebung, die 24 Hauptsprachen wie C, C++, Java, Ruby, Python, PHP, Perl usw. unterstützt.\nCodePen Eine Online-Ausführungsumgebung für HTML, CSS und JavaScript.\ncodeanywhere Eine Online-IDE. Ermöglicht Codefreigabe und Chat.\n","date":"2023-04-09T14:01:00+09:00","image":"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_hu1a682c657d060df2f584d6c279d355c7_129199_120x120_fill_box_smart1_3.png","permalink":"http://kenji.blog/de/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/","title":"[Nach Sprache] Zusammenfassung der Online-Code-Ausführungsumgebungen"},{"content":"Was ist das Sieb des Eratosthenes? Das Sieb des Eratosthenes ist ein Algorithmus, mit dem alle Primzahlen bis zu einem bestimmten Grenzwert gefunden werden können. Der Algorithmus ist einfach und kann durch die folgenden Schritte implementiert werden:\nErstellen Sie ein boolesches Array mit N Elementen und initialisieren Sie alle Elemente auf wahr (true). Setzen Sie das nullte und das erste Element des Arrays auf falsch (false) (da 0 und 1 keine Primzahlen sind). Wenn das 2. Element des Arrays wahr ist, geben Sie 2 als Primzahl aus. Setzen Sie alle Vielfachen von 2 ab $2^2$ auf falsch (*). Wenn das 3. Element des Arrays wahr ist, geben Sie 3 als Primzahl aus. Setzen Sie alle Vielfachen von 3 ab $3^2$ auf falsch. Wiederholen Sie den gleichen Vorgang für das 4., 5., \u0026hellip;, und N-te Element. Der Grund, warum die Elemente ab dem Quadrat des Wertes auf falsch gesetzt werden, liegt daran, dass Zahlen, die kleiner als das Quadrat sind, bereits in vorherigen Schritten verarbeitet wurden. Implementierung in Rust 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 fn main() { let n = 1000; let mut is_prime = vec![true; n+1]; is_prime[0] = false; is_prime[1] = false; for i in 2..=n { if is_prime[i] { println!(\u0026#34;{}\u0026#34;, i); let mut j = i * i; while j \u0026lt;= n { is_prime[j] = false; j += i; } } } } Leicht optimierte Version Wir können die Implementierung unter Berücksichtigung der folgenden Punkte leicht optimieren:\nInitialisieren Sie das Array mit falsch (false) statt mit wahr (true) (das ist schneller). Da Vielfache von 2 keine Primzahlen sind, überspringen Sie den Schritt, bei dem die Vielfachen von 2 auf falsch gesetzt werden. Es ist nicht notwendig, bis n zu iterieren; es reicht aus, die Primzahlen bis zur Quadratwurzel von n zu berechnen, um alle Primzahlen zu finden, die kleiner oder gleich n sind. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 fn main() { let n = 1000; let mut is_prime = vec![false; n+1]; is_prime[2] = true; for i in (3..=n).step_by(2) { is_prime[i] = true; } for i in 3..=((n as f64).sqrt() as usize) { if is_prime[i] { let mut j = i * i; while j \u0026lt;= n { is_prime[j] = false; j += i * 2; } } } for i in (2..=n).filter(|\u0026amp;x| is_prime[x]) { println!(\u0026#34;{}\u0026#34;, i); } } Referenz Sieb des Eratosthenes (Wikipedia) ","date":"2023-04-09T12:54:24+09:00","image":"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_hud779f88eb17786b23927bc052940ab95_400805_120x120_fill_box_smart1_3.png","permalink":"http://kenji.blog/de/p/wie-man-primzahlen-unter-1000-mit-dem-sieb-des-eratosthenes-auflistet/","title":"Wie man Primzahlen unter 1000 mit dem Sieb des Eratosthenes auflistet"},{"content":"Installation über das Terminal Terminal öffnen Führen Sie sudo gem install cocoapods aus → Aus irgendeinem Grund trat die folgende Fehlermeldung auf und die Installation schlug fehl. Ausgabe 1 2 3 ERROR: Error installing cocoapods: The last version of activesupport (\u0026gt;= 5.0, \u0026lt; 8) to support your Ruby \u0026amp; 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 activesupport requires Ruby version \u0026gt;= 2.7.0. The current ruby version is 2.6.10.210. Also suchte ich im Web nach der Fehlermeldung (siehe \u0026ldquo;Referenzen\u0026rdquo; unten) und führte den folgenden Befehl aus: 1 /bin/bash -c \u0026#34;$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)\u0026#34; Ausgabe 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 ==\u0026gt; Checking for `sudo` access (which may request your password)... ==\u0026gt; This script will install: /usr/local/bin/brew /usr/local/share/doc/homebrew /usr/local/share/man/man1/brew.1 /usr/local/share/zsh/site-functions/_brew /usr/local/etc/bash_completion.d/brew /usr/local/Homebrew ==\u0026gt; The following new directories will be created: /usr/local/bin /usr/local/etc /usr/local/include /usr/local/lib /usr/local/sbin /usr/local/share /usr/local/var /usr/local/opt /usr/local/share/zsh /usr/local/share/zsh/site-functions /usr/local/var/homebrew /usr/local/var/homebrew/linked /usr/local/Cellar /usr/local/Caskroom /usr/local/Frameworks ==\u0026gt; The Xcode Command Line Tools will be installed. Press RETURN/ENTER to continue or any other key to abort: ==\u0026gt; /usr/bin/sudo /bin/mkdir -p /usr/local/bin /usr/local/etc /usr/local/include /usr/local/lib /usr/local/sbin /usr/local/share /usr/local/var /usr/local/opt /usr/local/share/zsh /usr/local/share/zsh/site-functions /usr/local/var/homebrew /usr/local/var/homebrew/linked /usr/local/Cellar /usr/local/Caskroom /usr/local/Frameworks ==\u0026gt; /usr/bin/sudo /bin/chmod ug=rwx /usr/local/bin /usr/local/etc /usr/local/include /usr/local/lib /usr/local/sbin /usr/local/share /usr/local/var /usr/local/opt /usr/local/share/zsh /usr/local/share/zsh/site-functions /usr/local/var/homebrew /usr/local/var/homebrew/linked /usr/local/Cellar /usr/local/Caskroom /usr/local/Frameworks ==\u0026gt; /usr/bin/sudo /bin/chmod go-w /usr/local/share/zsh /usr/local/share/zsh/site-functions ==\u0026gt; /usr/bin/sudo /usr/sbin/chown kenji /usr/local/bin /usr/local/etc /usr/local/include /usr/local/lib /usr/local/sbin /usr/local/share /usr/local/var /usr/local/opt /usr/local/share/zsh /usr/local/share/zsh/site-functions /usr/local/var/homebrew /usr/local/var/homebrew/linked /usr/local/Cellar /usr/local/Caskroom /usr/local/Frameworks ==\u0026gt; /usr/bin/sudo /usr/bin/chgrp admin /usr/local/bin /usr/local/etc /usr/local/include /usr/local/lib /usr/local/sbin /usr/local/share /usr/local/var /usr/local/opt /usr/local/share/zsh /usr/local/share/zsh/site-functions /usr/local/var/homebrew /usr/local/var/homebrew/linked /usr/local/Cellar /usr/local/Caskroom /usr/local/Frameworks ==\u0026gt; /usr/bin/sudo /bin/mkdir -p /usr/local/Homebrew ==\u0026gt; /usr/bin/sudo /usr/sbin/chown -R kenji:admin /usr/local/Homebrew ==\u0026gt; /usr/bin/sudo /bin/mkdir -p /Users/kenji/Library/Caches/Homebrew ==\u0026gt; /usr/bin/sudo /bin/chmod g+rwx /Users/kenji/Library/Caches/Homebrew ==\u0026gt; /usr/bin/sudo /usr/sbin/chown -R kenji /Users/kenji/Library/Caches/Homebrew ==\u0026gt; Searching online for the Command Line Tools ==\u0026gt; /usr/bin/sudo /usr/bin/touch /tmp/.com.apple.dt.CommandLineTools.installondemand.in-progress ==\u0026gt; Installing Command Line Tools for Xcode-14.3 ==\u0026gt; /usr/bin/sudo /usr/sbin/softwareupdate -i Command\\ Line\\ Tools\\ for\\ Xcode-14.3 Software Update Tool Finding available software Downloading Command Line Tools for Xcode Downloaded Command Line Tools for Xcode Installing Command Line Tools for Xcode Done with Command Line Tools for Xcode Done. ==\u0026gt; /usr/bin/sudo /usr/bin/xcode-select --switch /Library/Developer/CommandLineTools ==\u0026gt; /usr/bin/sudo /bin/rm -f /tmp/.com.apple.dt.CommandLineTools.installondemand.in-progress ==\u0026gt; Downloading and installing Homebrew... remote: Enumerating objects: 236191, done. remote: Counting objects: 100% (504/504), done. remote: Compressing objects: 100% (327/327), done. remote: Total 236191 (delta 176), reused 468 (delta 158), pack-reused 235687 Receiving objects: 100% (236191/236191), 68.37 MiB | 15.51 MiB/s, done. Resolving deltas: 100% (173058/173058), done. From https://github.com/Homebrew/brew * [new branch] master -\u0026gt; origin/master * [new branch] test-runners -\u0026gt; origin/test-runners * [new tag] 0.1 -\u0026gt; 0.1 * [new tag] 0.2 -\u0026gt; 0.2 * [new tag] 0.3 -\u0026gt; 0.3 * [new tag] 0.4 -\u0026gt; 0.4 * [new tag] 0.5 -\u0026gt; 0.5 * [new tag] 0.6 -\u0026gt; 0.6 * [new tag] 0.7 -\u0026gt; 0.7 * [new tag] 0.7.1 -\u0026gt; 0.7.1 * [new tag] 0.8 -\u0026gt; 0.8 * [new tag] 0.8.1 -\u0026gt; 0.8.1 * [new tag] 0.9 -\u0026gt; 0.9 * [new tag] 0.9.1 -\u0026gt; 0.9.1 * [new tag] 0.9.2 -\u0026gt; 0.9.2 * [new tag] 0.9.3 -\u0026gt; 0.9.3 * [new tag] 0.9.4 -\u0026gt; 0.9.4 * [new tag] 0.9.5 -\u0026gt; 0.9.5 * [new tag] 0.9.8 -\u0026gt; 0.9.8 * [new tag] 0.9.9 -\u0026gt; 0.9.9 * [new tag] 1.0.0 -\u0026gt; 1.0.0 * [new tag] 1.0.1 -\u0026gt; 1.0.1 * [new tag] 1.0.2 -\u0026gt; 1.0.2 * [new tag] 1.0.3 -\u0026gt; 1.0.3 * [new tag] 1.0.4 -\u0026gt; 1.0.4 * [new tag] 1.0.5 -\u0026gt; 1.0.5 * [new tag] 1.0.6 -\u0026gt; 1.0.6 * [new tag] 1.0.7 -\u0026gt; 1.0.7 * [new tag] 1.0.8 -\u0026gt; 1.0.8 * [new tag] 1.0.9 -\u0026gt; 1.0.9 * [new tag] 1.1.0 -\u0026gt; 1.1.0 * [new tag] 1.1.1 -\u0026gt; 1.1.1 * [new tag] 1.1.10 -\u0026gt; 1.1.10 * [new tag] 1.1.11 -\u0026gt; 1.1.11 * [new tag] 1.1.12 -\u0026gt; 1.1.12 * [new tag] 1.1.13 -\u0026gt; 1.1.13 * [new tag] 1.1.2 -\u0026gt; 1.1.2 * [new tag] 1.1.3 -\u0026gt; 1.1.3 * [new tag] 1.1.4 -\u0026gt; 1.1.4 * [new tag] 1.1.5 -\u0026gt; 1.1.5 * [new tag] 1.1.6 -\u0026gt; 1.1.6 * [new tag] 1.1.7 -\u0026gt; 1.1.7 * [new tag] 1.1.8 -\u0026gt; 1.1.8 * [new tag] 1.1.9 -\u0026gt; 1.1.9 * [new tag] 1.2.0 -\u0026gt; 1.2.0 * [new tag] 1.2.1 -\u0026gt; 1.2.1 * [new tag] 1.2.2 -\u0026gt; 1.2.2 * [new tag] 1.2.3 -\u0026gt; 1.2.3 * [new tag] 1.2.4 -\u0026gt; 1.2.4 * [new tag] 1.2.5 -\u0026gt; 1.2.5 * [new tag] 1.2.6 -\u0026gt; 1.2.6 * [new tag] 1.3.0 -\u0026gt; 1.3.0 * [new tag] 1.3.1 -\u0026gt; 1.3.1 * [new tag] 1.3.2 -\u0026gt; 1.3.2 * [new tag] 1.3.3 -\u0026gt; 1.3.3 * [new tag] 1.3.4 -\u0026gt; 1.3.4 * [new tag] 1.3.5 -\u0026gt; 1.3.5 * [new tag] 1.3.6 -\u0026gt; 1.3.6 * [new tag] 1.3.7 -\u0026gt; 1.3.7 * [new tag] 1.3.8 -\u0026gt; 1.3.8 * [new tag] 1.3.9 -\u0026gt; 1.3.9 * [new tag] 1.4.0 -\u0026gt; 1.4.0 * [new tag] 1.4.1 -\u0026gt; 1.4.1 * [new tag] 1.4.2 -\u0026gt; 1.4.2 * [new tag] 1.4.3 -\u0026gt; 1.4.3 * [new tag] 1.5.0 -\u0026gt; 1.5.0 * [new tag] 1.5.1 -\u0026gt; 1.5.1 * [new tag] 1.5.10 -\u0026gt; 1.5.10 * [new tag] 1.5.11 -\u0026gt; 1.5.11 * [new tag] 1.5.12 -\u0026gt; 1.5.12 * [new tag] 1.5.13 -\u0026gt; 1.5.13 * [new tag] 1.5.14 -\u0026gt; 1.5.14 * [new tag] 1.5.2 -\u0026gt; 1.5.2 * [new tag] 1.5.3 -\u0026gt; 1.5.3 * [new tag] 1.5.4 -\u0026gt; 1.5.4 * [new tag] 1.5.5 -\u0026gt; 1.5.5 * [new tag] 1.5.6 -\u0026gt; 1.5.6 * [new tag] 1.5.7 -\u0026gt; 1.5.7 * [new tag] 1.5.8 -\u0026gt; 1.5.8 * [new tag] 1.5.9 -\u0026gt; 1.5.9 * [new tag] 1.6.0 -\u0026gt; 1.6.0 * [new tag] 1.6.1 -\u0026gt; 1.6.1 * [new tag] 1.6.10 -\u0026gt; 1.6.10 * [new tag] 1.6.11 -\u0026gt; 1.6.11 * [new tag] 1.6.12 -\u0026gt; 1.6.12 * [new tag] 1.6.13 -\u0026gt; 1.6.13 * [new tag] 1.6.14 -\u0026gt; 1.6.14 * [new tag] 1.6.15 -\u0026gt; 1.6.15 * [new tag] 1.6.16 -\u0026gt; 1.6.16 * [new tag] 1.6.17 -\u0026gt; 1.6.17 * [new tag] 1.6.2 -\u0026gt; 1.6.2 * [new tag] 1.6.3 -\u0026gt; 1.6.3 * [new tag] 1.6.4 -\u0026gt; 1.6.4 * [new tag] 1.6.5 -\u0026gt; 1.6.5 * [new tag] 1.6.6 -\u0026gt; 1.6.6 * [new tag] 1.6.7 -\u0026gt; 1.6.7 * [new tag] 1.6.8 -\u0026gt; 1.6.8 * [new tag] 1.6.9 -\u0026gt; 1.6.9 * [new tag] 1.7.0 -\u0026gt; 1.7.0 * [new tag] 1.7.1 -\u0026gt; 1.7.1 * [new tag] 1.7.2 -\u0026gt; 1.7.2 * [new tag] 1.7.3 -\u0026gt; 1.7.3 * [new tag] 1.7.4 -\u0026gt; 1.7.4 * [new tag] 1.7.5 -\u0026gt; 1.7.5 * [new tag] 1.7.6 -\u0026gt; 1.7.6 * [new tag] 1.7.7 -\u0026gt; 1.7.7 * [new tag] 1.8.0 -\u0026gt; 1.8.0 * [new tag] 1.8.1 -\u0026gt; 1.8.1 * [new tag] 1.8.2 -\u0026gt; 1.8.2 * [new tag] 1.8.3 -\u0026gt; 1.8.3 * [new tag] 1.8.4 -\u0026gt; 1.8.4 * [new tag] 1.8.5 -\u0026gt; 1.8.5 * [new tag] 1.8.6 -\u0026gt; 1.8.6 * [new tag] 1.9.0 -\u0026gt; 1.9.0 * [new tag] 1.9.1 -\u0026gt; 1.9.1 * [new tag] 1.9.2 -\u0026gt; 1.9.2 * [new tag] 1.9.3 -\u0026gt; 1.9.3 * [new tag] 2.0.0 -\u0026gt; 2.0.0 * [new tag] 2.0.1 -\u0026gt; 2.0.1 * [new tag] 2.0.2 -\u0026gt; 2.0.2 * [new tag] 2.0.3 -\u0026gt; 2.0.3 * [new tag] 2.0.4 -\u0026gt; 2.0.4 * [new tag] 2.0.5 -\u0026gt; 2.0.5 * [new tag] 2.0.6 -\u0026gt; 2.0.6 * [new tag] 2.1.0 -\u0026gt; 2.1.0 * [new tag] 2.1.1 -\u0026gt; 2.1.1 * [new tag] 2.1.10 -\u0026gt; 2.1.10 * [new tag] 2.1.11 -\u0026gt; 2.1.11 * [new tag] 2.1.12 -\u0026gt; 2.1.12 * [new tag] 2.1.13 -\u0026gt; 2.1.13 * [new tag] 2.1.14 -\u0026gt; 2.1.14 * [new tag] 2.1.15 -\u0026gt; 2.1.15 * [new tag] 2.1.16 -\u0026gt; 2.1.16 * [new tag] 2.1.2 -\u0026gt; 2.1.2 * [new tag] 2.1.3 -\u0026gt; 2.1.3 * [new tag] 2.1.4 -\u0026gt; 2.1.4 * [new tag] 2.1.5 -\u0026gt; 2.1.5 * [new tag] 2.1.6 -\u0026gt; 2.1.6 * [new tag] 2.1.7 -\u0026gt; 2.1.7 * [new tag] 2.1.8 -\u0026gt; 2.1.8 * [new tag] 2.1.9 -\u0026gt; 2.1.9 * [new tag] 2.2.0 -\u0026gt; 2.2.0 * [new tag] 2.2.1 -\u0026gt; 2.2.1 * [new tag] 2.2.10 -\u0026gt; 2.2.10 * [new tag] 2.2.11 -\u0026gt; 2.2.11 * [new tag] 2.2.12 -\u0026gt; 2.2.12 * [new tag] 2.2.13 -\u0026gt; 2.2.13 * [new tag] 2.2.14 -\u0026gt; 2.2.14 * [new tag] 2.2.15 -\u0026gt; 2.2.15 * [new tag] 2.2.16 -\u0026gt; 2.2.16 * [new tag] 2.2.17 -\u0026gt; 2.2.17 * [new tag] 2.2.2 -\u0026gt; 2.2.2 * [new tag] 2.2.3 -\u0026gt; 2.2.3 * [new tag] 2.2.4 -\u0026gt; 2.2.4 * [new tag] 2.2.5 -\u0026gt; 2.2.5 * [new tag] 2.2.6 -\u0026gt; 2.2.6 * [new tag] 2.2.7 -\u0026gt; 2.2.7 * [new tag] 2.2.8 -\u0026gt; 2.2.8 * [new tag] 2.2.9 -\u0026gt; 2.2.9 * [new tag] 2.3.0 -\u0026gt; 2.3.0 * [new tag] 2.4.0 -\u0026gt; 2.4.0 * [new tag] 2.4.1 -\u0026gt; 2.4.1 * [new tag] 2.4.10 -\u0026gt; 2.4.10 * [new tag] 2.4.11 -\u0026gt; 2.4.11 * [new tag] 2.4.12 -\u0026gt; 2.4.12 * [new tag] 2.4.13 -\u0026gt; 2.4.13 * [new tag] 2.4.14 -\u0026gt; 2.4.14 * [new tag] 2.4.15 -\u0026gt; 2.4.15 * [new tag] 2.4.16 -\u0026gt; 2.4.16 * [new tag] 2.4.2 -\u0026gt; 2.4.2 * [new tag] 2.4.3 -\u0026gt; 2.4.3 * [new tag] 2.4.4 -\u0026gt; 2.4.4 * [new tag] 2.4.5 -\u0026gt; 2.4.5 * [new tag] 2.4.6 -\u0026gt; 2.4.6 * [new tag] 2.4.7 -\u0026gt; 2.4.7 * [new tag] 2.4.8 -\u0026gt; 2.4.8 * [new tag] 2.4.9 -\u0026gt; 2.4.9 * [new tag] 2.5.0 -\u0026gt; 2.5.0 * [new tag] 2.5.1 -\u0026gt; 2.5.1 * [new tag] 2.5.10 -\u0026gt; 2.5.10 * [new tag] 2.5.11 -\u0026gt; 2.5.11 * [new tag] 2.5.12 -\u0026gt; 2.5.12 * [new tag] 2.5.2 -\u0026gt; 2.5.2 * [new tag] 2.5.3 -\u0026gt; 2.5.3 * [new tag] 2.5.4 -\u0026gt; 2.5.4 * [new tag] 2.5.5 -\u0026gt; 2.5.5 * [new tag] 2.5.6 -\u0026gt; 2.5.6 * [new tag] 2.5.7 -\u0026gt; 2.5.7 * [new tag] 2.5.8 -\u0026gt; 2.5.8 * [new tag] 2.5.9 -\u0026gt; 2.5.9 * [new tag] 2.6.0 -\u0026gt; 2.6.0 * [new tag] 2.6.1 -\u0026gt; 2.6.1 * [new tag] 2.6.2 -\u0026gt; 2.6.2 * [new tag] 2.7.0 -\u0026gt; 2.7.0 * [new tag] 2.7.1 -\u0026gt; 2.7.1 * [new tag] 2.7.2 -\u0026gt; 2.7.2 * [new tag] 2.7.3 -\u0026gt; 2.7.3 * [new tag] 2.7.4 -\u0026gt; 2.7.4 * [new tag] 2.7.5 -\u0026gt; 2.7.5 * [new tag] 2.7.6 -\u0026gt; 2.7.6 * [new tag] 2.7.7 -\u0026gt; 2.7.7 * [new tag] 3.0.0 -\u0026gt; 3.0.0 * [new tag] 3.0.1 -\u0026gt; 3.0.1 * [new tag] 3.0.10 -\u0026gt; 3.0.10 * [new tag] 3.0.11 -\u0026gt; 3.0.11 * [new tag] 3.0.2 -\u0026gt; 3.0.2 * [new tag] 3.0.3 -\u0026gt; 3.0.3 * [new tag] 3.0.4 -\u0026gt; 3.0.4 * [new tag] 3.0.5 -\u0026gt; 3.0.5 * [new tag] 3.0.6 -\u0026gt; 3.0.6 * [new tag] 3.0.7 -\u0026gt; 3.0.7 * [new tag] 3.0.8 -\u0026gt; 3.0.8 * [new tag] 3.0.9 -\u0026gt; 3.0.9 * [new tag] 3.1.0 -\u0026gt; 3.1.0 * [new tag] 3.1.1 -\u0026gt; 3.1.1 * [new tag] 3.1.10 -\u0026gt; 3.1.10 * [new tag] 3.1.11 -\u0026gt; 3.1.11 * [new tag] 3.1.12 -\u0026gt; 3.1.12 * [new tag] 3.1.2 -\u0026gt; 3.1.2 * [new tag] 3.1.3 -\u0026gt; 3.1.3 * [new tag] 3.1.4 -\u0026gt; 3.1.4 * [new tag] 3.1.5 -\u0026gt; 3.1.5 * [new tag] 3.1.6 -\u0026gt; 3.1.6 * [new tag] 3.1.7 -\u0026gt; 3.1.7 * [new tag] 3.1.8 -\u0026gt; 3.1.8 * [new tag] 3.1.9 -\u0026gt; 3.1.9 * [new tag] 3.2.0 -\u0026gt; 3.2.0 * [new tag] 3.2.1 -\u0026gt; 3.2.1 * [new tag] 3.2.10 -\u0026gt; 3.2.10 * [new tag] 3.2.11 -\u0026gt; 3.2.11 * [new tag] 3.2.12 -\u0026gt; 3.2.12 * [new tag] 3.2.13 -\u0026gt; 3.2.13 * [new tag] 3.2.14 -\u0026gt; 3.2.14 * [new tag] 3.2.15 -\u0026gt; 3.2.15 * [new tag] 3.2.16 -\u0026gt; 3.2.16 * [new tag] 3.2.17 -\u0026gt; 3.2.17 * [new tag] 3.2.2 -\u0026gt; 3.2.2 * [new tag] 3.2.3 -\u0026gt; 3.2.3 * [new tag] 3.2.4 -\u0026gt; 3.2.4 * [new tag] 3.2.5 -\u0026gt; 3.2.5 * [new tag] 3.2.6 -\u0026gt; 3.2.6 * [new tag] 3.2.7 -\u0026gt; 3.2.7 * [new tag] 3.2.8 -\u0026gt; 3.2.8 * [new tag] 3.2.9 -\u0026gt; 3.2.9 * [new tag] 3.3.0 -\u0026gt; 3.3.0 * [new tag] 3.3.1 -\u0026gt; 3.3.1 * [new tag] 3.3.10 -\u0026gt; 3.3.10 * [new tag] 3.3.11 -\u0026gt; 3.3.11 * [new tag] 3.3.12 -\u0026gt; 3.3.12 * [new tag] 3.3.13 -\u0026gt; 3.3.13 * [new tag] 3.3.14 -\u0026gt; 3.3.14 * [new tag] 3.3.15 -\u0026gt; 3.3.15 * [new tag] 3.3.16 -\u0026gt; 3.3.16 * [new tag] 3.3.2 -\u0026gt; 3.3.2 * [new tag] 3.3.3 -\u0026gt; 3.3.3 * [new tag] 3.3.4 -\u0026gt; 3.3.4 * [new tag] 3.3.5 -\u0026gt; 3.3.5 * [new tag] 3.3.6 -\u0026gt; 3.3.6 * [new tag] 3.3.7 -\u0026gt; 3.3.7 * [new tag] 3.3.8 -\u0026gt; 3.3.8 * [new tag] 3.3.9 -\u0026gt; 3.3.9 * [new tag] 3.4.0 -\u0026gt; 3.4.0 * [new tag] 3.4.1 -\u0026gt; 3.4.1 * [new tag] 3.4.10 -\u0026gt; 3.4.10 * [new tag] 3.4.11 -\u0026gt; 3.4.11 * [new tag] 3.4.2 -\u0026gt; 3.4.2 * [new tag] 3.4.3 -\u0026gt; 3.4.3 * [new tag] 3.4.4 -\u0026gt; 3.4.4 * [new tag] 3.4.5 -\u0026gt; 3.4.5 * [new tag] 3.4.6 -\u0026gt; 3.4.6 * [new tag] 3.4.7 -\u0026gt; 3.4.7 * [new tag] 3.4.8 -\u0026gt; 3.4.8 * [new tag] 3.4.9 -\u0026gt; 3.4.9 * [new tag] 3.5.0 -\u0026gt; 3.5.0 * [new tag] 3.5.1 -\u0026gt; 3.5.1 * [new tag] 3.5.10 -\u0026gt; 3.5.10 * [new tag] 3.5.2 -\u0026gt; 3.5.2 * [new tag] 3.5.3 -\u0026gt; 3.5.3 * [new tag] 3.5.4 -\u0026gt; 3.5.4 * [new tag] 3.5.5 -\u0026gt; 3.5.5 * [new tag] 3.5.6 -\u0026gt; 3.5.6 * [new tag] 3.5.7 -\u0026gt; 3.5.7 * [new tag] 3.5.8 -\u0026gt; 3.5.8 * [new tag] 3.5.9 -\u0026gt; 3.5.9 * [new tag] 3.6.0 -\u0026gt; 3.6.0 * [new tag] 3.6.1 -\u0026gt; 3.6.1 * [new tag] 3.6.10 -\u0026gt; 3.6.10 * [new tag] 3.6.11 -\u0026gt; 3.6.11 * [new tag] 3.6.12 -\u0026gt; 3.6.12 * [new tag] 3.6.13 -\u0026gt; 3.6.13 * [new tag] 3.6.14 -\u0026gt; 3.6.14 * [new tag] 3.6.15 -\u0026gt; 3.6.15 * [new tag] 3.6.16 -\u0026gt; 3.6.16 * [new tag] 3.6.17 -\u0026gt; 3.6.17 * [new tag] 3.6.18 -\u0026gt; 3.6.18 * [new tag] 3.6.19 -\u0026gt; 3.6.19 * [new tag] 3.6.2 -\u0026gt; 3.6.2 * [new tag] 3.6.20 -\u0026gt; 3.6.20 * [new tag] 3.6.21 -\u0026gt; 3.6.21 * [new tag] 3.6.3 -\u0026gt; 3.6.3 * [new tag] 3.6.4 -\u0026gt; 3.6.4 * [new tag] 3.6.5 -\u0026gt; 3.6.5 * [new tag] 3.6.6 -\u0026gt; 3.6.6 * [new tag] 3.6.7 -\u0026gt; 3.6.7 * [new tag] 3.6.8 -\u0026gt; 3.6.8 * [new tag] 3.6.9 -\u0026gt; 3.6.9 * [new tag] 4.0.0 -\u0026gt; 4.0.0 * [new tag] 4.0.1 -\u0026gt; 4.0.1 * [new tag] 4.0.10 -\u0026gt; 4.0.10 * [new tag] 4.0.11 -\u0026gt; 4.0.11 * [new tag] 4.0.2 -\u0026gt; 4.0.2 * [new tag] 4.0.3 -\u0026gt; 4.0.3 * [new tag] 4.0.4 -\u0026gt; 4.0.4 * [new tag] 4.0.5 -\u0026gt; 4.0.5 * [new tag] 4.0.6 -\u0026gt; 4.0.6 * [new tag] 4.0.7 -\u0026gt; 4.0.7 * [new tag] 4.0.8 -\u0026gt; 4.0.8 * [new tag] 4.0.9 -\u0026gt; 4.0.9 HEAD is now at c51687009 Merge pull request #15168 from reitermarkus/api-ruby-source-path ==\u0026gt; Installation successful! ==\u0026gt; Homebrew has enabled anonymous aggregate formulae and cask analytics. Read the analytics documentation (and how to opt-out) here: https://docs.brew.sh/Analytics No analytics data has been sent yet (nor will any be during this install run). ==\u0026gt; Homebrew is run entirely by unpaid volunteers. Please consider donating: https://github.com/Homebrew/brew#donations ==\u0026gt; Next steps: - Run these two commands in your terminal to add Homebrew to your PATH: (echo; echo \u0026#39;eval \u0026#34;$(/usr/local/bin/brew shellenv)\u0026#34;\u0026#39;) \u0026gt;\u0026gt; /Users/kenji/.zprofile eval \u0026#34;$(/usr/local/bin/brew shellenv)\u0026#34; - Run brew help to get started - Further documentation: https://docs.brew.sh Führen Sie brew install cocoapods aus Ausgabe 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 Warning: Treating cocoapods as a formula. For the cask, use homebrew/cask/cocoapods ==\u0026gt; Fetching dependencies for cocoapods: libyaml, ca-certificates, openssl@1.1, readline and ruby ==\u0026gt; Fetching libyaml ==\u0026gt; Downloading https://ghcr.io/v2/homebrew/core/libyaml/manifests/0.2.5 ######################################################################## 100.0% ==\u0026gt; Downloading https://ghcr.io/v2/homebrew/core/libyaml/blobs/sha256:b49e62f014 ==\u0026gt; Downloading from https://pkg-containers.githubusercontent.com/ghcr1/blobs/sh ######################################################################## 100.0% ==\u0026gt; Fetching ca-certificates ==\u0026gt; Downloading https://ghcr.io/v2/homebrew/core/ca-certificates/manifests/2023- ######################################################################## 100.0% ==\u0026gt; Downloading https://ghcr.io/v2/homebrew/core/ca-certificates/blobs/sha256:11 ==\u0026gt; Downloading from https://pkg-containers.githubusercontent.com/ghcr1/blobs/sh ######################################################################## 100.0% ==\u0026gt; Fetching openssl@1.1 ==\u0026gt; Downloading https://ghcr.io/v2/homebrew/core/openssl/1.1/manifests/1.1.1t ######################################################################## 100.0% ==\u0026gt; Downloading https://ghcr.io/v2/homebrew/core/openssl/1.1/blobs/sha256:97676d ==\u0026gt; Downloading from https://pkg-containers.githubusercontent.com/ghcr1/blobs/sh ######################################################################## 100.0% ==\u0026gt; Fetching readline ==\u0026gt; Downloading https://ghcr.io/v2/homebrew/core/readline/manifests/8.2.1 ######################################################################## 100.0% ==\u0026gt; Downloading https://ghcr.io/v2/homebrew/core/readline/blobs/sha256:abe9d3f3e ==\u0026gt; Downloading from https://pkg-containers.githubusercontent.com/ghcr1/blobs/sh ######################################################################## 100.0% ==\u0026gt; Fetching ruby ==\u0026gt; Downloading https://ghcr.io/v2/homebrew/core/ruby/manifests/3.2.2 ######################################################################## 100.0% ==\u0026gt; Downloading https://ghcr.io/v2/homebrew/core/ruby/blobs/sha256:a4ac080688e87 ==\u0026gt; Downloading from https://pkg-containers.githubusercontent.com/ghcr1/blobs/sh ######################################################################## 100.0% ==\u0026gt; Fetching cocoapods ==\u0026gt; Downloading https://ghcr.io/v2/homebrew/core/cocoapods/manifests/1.12.0 ######################################################################## 100.0% ==\u0026gt; Downloading https://ghcr.io/v2/homebrew/core/cocoapods/blobs/sha256:11226288 ==\u0026gt; Downloading from https://pkg-containers.githubusercontent.com/ghcr1/blobs/sh ######################################################################## 100.0% ==\u0026gt; Installing dependencies for cocoapods: libyaml, ca-certificates, openssl@1.1, readline and ruby ==\u0026gt; Installing cocoapods dependency: libyaml ==\u0026gt; Pouring libyaml--0.2.5.ventura.bottle.tar.gz 🍺 /usr/local/Cellar/libyaml/0.2.5: 10 files, 330KB ==\u0026gt; Installing cocoapods dependency: ca-certificates ==\u0026gt; Pouring ca-certificates--2023-01-10.all.bottle.tar.gz ==\u0026gt; Regenerating CA certificate bundle from keychain, this may take a while... 🍺 /usr/local/Cellar/ca-certificates/2023-01-10: 3 files, 216.9KB ==\u0026gt; Installing cocoapods dependency: openssl@1.1 ==\u0026gt; Pouring openssl@1.1--1.1.1t.ventura.bottle.tar.gz 🍺 /usr/local/Cellar/openssl@1.1/1.1.1t: 8,101 files, 18.5MB ==\u0026gt; Installing cocoapods dependency: readline ==\u0026gt; Pouring readline--8.2.1.ventura.bottle.tar.gz 🍺 /usr/local/Cellar/readline/8.2.1: 50 files, 1.7MB ==\u0026gt; Installing cocoapods dependency: ruby ==\u0026gt; Pouring ruby--3.2.2.ventura.bottle.tar.gz 🍺 /usr/local/Cellar/ruby/3.2.2: 16,605 files, 46.3MB ==\u0026gt; Installing cocoapods ==\u0026gt; Pouring cocoapods--1.12.0.ventura.bottle.tar.gz 🍺 /usr/local/Cellar/cocoapods/1.12.0: 13,436 files, 27.8MB ==\u0026gt; Running `brew cleanup cocoapods`... Disable this behaviour by setting HOMEBREW_NO_INSTALL_CLEANUP. Hide these hints with HOMEBREW_NO_ENV_HINTS (see `man brew`). Führen Sie pod --version aus Ausgabe 1 1.12.0 Es scheint erfolgreich installiert worden zu sein.\nReferenzen Installing \u0026ldquo;CocoaPods\u0026rdquo; ","date":"2023-04-09T03:25:54+09:00","image":"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_hu5a3007afd3f7cdc4b526573a36fbeca4_11833_120x120_fill_box_smart1_3.png","permalink":"http://kenji.blog/de/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/","title":"Wie man CocoaPods auf dem mac installiert"},{"content":"So erhalten Sie die Anzahl der pro Tag erstellten Datensätze mithilfe von Salesforce SOQL Öffnen Sie die Developer Console. Öffnen Sie die Registerkarte Query Editor. Fügen Sie die folgende SOQL ein und führen Sie sie aus. 1 select day_only(createdDate), count(createdDate) from account group by day_only(createdDate) order by count(createdDate) desc limit 10 Bitte ändern Sie account in einen beliebigen Objektnamen, den Sie abrufen möchten, und führen Sie es aus.\nReferenz Is there a way to group by the date portion of a datetime field in SOQL? ","date":"2023-04-09T02:50:30+09:00","image":"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_hub769e11b0a209a1986a31ec50fb9e2d1_10470_120x120_fill_box_smart1_3.png","permalink":"http://kenji.blog/de/p/so-erhalten-sie-die-anzahl-der-pro-tag-erstellten-datens%C3%A4tze-mithilfe-von-salesforce-soql/","title":"So erhalten Sie die Anzahl der pro Tag erstellten Datensätze mithilfe von Salesforce SOQL"},{"content":"\nWas Sie brauchen Google-Konto Schritte Gehen Sie auf https://colab.research.google.com/ Wählen Sie \u0026ldquo;Datei\u0026rdquo; -\u0026gt; \u0026ldquo;Neues Notizbuch\u0026rdquo; Fügen Sie den folgenden Code ein und führen Sie ihn aus 1 2 3 4 5 6 7 import matplotlib.pyplot as plt import numpy as np x = np.linspace(0, 2*np.pi, 500) plt.plot(x, np.sin(x), label=\u0026#34;sin curve\u0026#34;) plt.plot(x, np.cos(x), label=\u0026#34;cos curve\u0026#34;) plt.legend() # Legende anzeigen plt.show() Ausführungsergebnis Referenzen matplotlib.pyplot — Matplotlib 3.5.3 documentation ","date":"2023-04-09T01:02:19+09:00","image":"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_120x120_fill_box_smart1_3.png","permalink":"http://kenji.blog/de/p/wie-man-diagramme-mit-python-matplotlib.pyplot-zeichnet/","title":"Wie man Diagramme mit Python (matplotlib.pyplot) zeichnet"},{"content":"Was Sie benötigen Twitter API Twitter API SECRET Twitter ACCESS TOKEN Twitter ACCESS TOKEN SECRET Google-Konto Besuchen Sie die Referenzseite, um zu erfahren, wie Sie die Twitter API erhalten.\nSchritte zum Twittern mit der API Gehen Sie zu https://colab.research.google.com/ Wählen Sie \u0026ldquo;Datei\u0026rdquo; -\u0026gt; \u0026ldquo;Neues Notizbuch\u0026rdquo; Fügen Sie den folgenden Code ein und führen Sie ihn aus (bitte verwenden Sie Ihre eigenen tatsächlichen Werte) 1 2 3 4 API_KEY = \u0026#39;9Smu2f2RoLqbVQHQq6n79Z2JW\u0026#39; API_SECRET = \u0026#39;uGVRIkLL2l8sRyPv2Lr4mXxXppnQF1isMoRnvktcXCtFgAK2R8\u0026#39; ACCESS_TOKEN = \u0026#39;0367292979164670705-7hSErDoQbO6fkFtnn5UY0vqpvecy0O\u0026#39; ACCESS_TOKEN_SECRET = \u0026#39;pUv81U9GVzZirz5g4AxZPHAJ4GpSXnBo8GUcZ1egtjw9q\u0026#39; Fügen Sie den folgenden Code ein und führen Sie ihn aus 1 import tweepy Fügen Sie den folgenden Code ein und führen Sie ihn aus (API v1.1) 1 2 3 4 auth = tweepy.OAuthHandler(API_KEY, API_SECRET) auth.set_access_token(ACCESS_TOKEN, ACCESS_TOKEN_SECRET) api = tweepy.API(auth) api.update_status(\u0026#34;hello\u0026#34;) → Ein Tweet mit dem Text hello wird gepostet.\nFügen Sie den folgenden Code ein und führen Sie ihn aus (API v2.0) 1 2 client = tweepy.Client(consumer_key=API_KEY, consumer_secret=API_SECRET, access_token=ACCESS_TOKEN, access_token_secret=ACCESS_TOKEN_SECRET) client.create_tweet(text=\u0026#39;hello v2\u0026#39;) → Ein Tweet mit dem Text hello v2 wird gepostet.\nDas ist alles.\nReferenz 【Stand April 2021】Detaillierte Erklärung des Nutzungsantrags für die Twitter API mit Beispielsätzen und Screenshots 【Keine komplizierten Einstellungen erforderlich!】Google Colaboratory wird als Testumgebung für die Twitter API empfohlen 【Quellcode wird ebenfalls geteilt】 【Tweepy】Twitter API v2: Tweets, Antworten, Tweets mit Umfragen, Tweets mit Medien (v1.1) [Python] ","date":"2023-04-08T18:48:32+09:00","image":"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_hu92a10d7ea1c17ea4dcc0d2e0b77b6296_75327_120x120_fill_box_smart1_3.png","permalink":"http://kenji.blog/de/p/wie-man-mit-der-twitter-api-und-google-colaboratory-twittert/","title":"Wie man mit der Twitter API und Google Colaboratory twittert"},{"content":"Was ist OpenSSL? Es ist eine Open-Source-Bibliothek, die die notwendige Verarbeitung für verschlüsselte Kommunikation bereitstellt.\nUm es in einem Programm verwenden zu können, müssen Sie es kompilieren, um eine Bibliothek zu erstellen, da der C-Quellcode veröffentlicht wird.\nNachfolgend stellen wir den Kompilierungsvorgang vor.\nVorbereitung der Build-Umgebung Perl\nLaden Sie strawberry-perl-5.32.1.1-64bit.msi von https://strawberryperl.com/ herunter. Die neueste Version sollte in Ordnung sein.\nNASM\nLaden Sie 2.16.01/nasm-2.16.01-win64.zip unter Download von https://www.nasm.us/ herunter. Die neueste Non-RC-Version sollte in Ordnung sein. Nach der Installation müssen Sie den Ordner, in dem NASM installiert ist, in der Umgebungsvariablen PATH registrieren.\nVisual Studio 2022 oder Build Tools for Visual Studio 2022\nInstallieren Sie Visual Studio 2022 Community oder Build Tools for Visual Studio 2022 von https://visualstudio.microsoft.com/ja/downloads/.\nOpenSSL-Build-Prozedur unter Windows Laden Sie openssl-3.1.0.tar.gz von https://www.openssl.org/source/ herunter und entpacken Sie es. Wenn Sie es nicht entpacken können, führen Sie tar -xzf openssl-3.1.0.tar.gz in der Eingabeaufforderung aus. Starten Sie die Eingabeaufforderung mit Administratorrechten. Öffnen Sie den entpackten Ordner. Führen Sie den folgenden Befehl aus. *Ändern Sie den Teil Community, damit er Ihrer installierten Version von Visual Studio entspricht. 1 \u0026#34;C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\VC\\Auxiliary\\Build\\vcvarsall.bat\u0026#34; x64 Führen Sie den folgenden Befehl aus: 1 perl Configure VC-WIN64A Führen Sie den folgenden Befehl aus (dauert ziemlich lange): 1 nmake Führen Sie den folgenden Befehl aus (dauert ziemlich lange): 1 nmake test Führen Sie den folgenden Befehl aus: 1 nmake install Wenn es erfolgreich war, wird OpenSSL in C:\\Program Files\\OpenSSL installiert.\nDas ist alles.\nReferenzen https://ja.wikipedia.org/wiki/OpenSSL\n","date":"2023-04-07T21:06:32+09:00","image":"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_hu856dff3329e4daff79f775d47e5cc35b_35659_120x120_fill_box_smart1_3.png","permalink":"http://kenji.blog/de/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/","title":"Wie man OpenSSL unter Windows kompiliert"},{"content":"Was ist i18n? i18n ist die Abkürzung für Internationalization, was Internationalisierung bedeutet. Da Internationalization lang ist, wird es als i18n abgekürzt, da sich zwischen dem ersten i und dem letzten n 18 Buchstaben befinden.\nEs wird häufig im Zusammenhang mit der Software-Internationalisierung verwendet.\nDie wichtigsten Aspekte bei der Internationalisierung umfassen Folgendes: 1\nZeichensatz (Standard-Zeichencode usw.) Textrichtung (von links nach rechts, von rechts nach links, von oben nach unten nach links usw.) Sprache / Text Schriftarten Formate Zahlen (Dezimaltrennzeichen, Tausendertrennzeichen, Anzahl der zu gruppierenden Ziffern usw.) Datum und Uhrzeit (Datumsformat, Unterschiede bei den verwendeten Kalendern wie Islamisch / Gregorianisch / Jüdisch / Japanisch usw.) Zeitzonenunterschiede bei Datums- und Uhrzeitinformationen Währungsinformationen Internationalisierung und Lokalisierung - Wikipedia\u0026#160;\u0026#x21a9;\u0026#xfe0e;\n","date":"2023-04-07T00:42:02+09:00","image":"http://kenji.blog/p/i18n%E3%81%A8%E3%81%AF/img_hu5547e5059a9dab53fb09979c54309752_11855_120x120_fill_box_smart1_3.png","permalink":"http://kenji.blog/de/p/i18n%E3%81%A8%E3%81%AF/","title":"Was ist i18n?"},{"content":"Wie man Präsentationen mit HTML erstellt reveal.js ist ein Tool zur Erstellung von Präsentationen mit HTML und Markdown, das die folgenden Funktionen bietet:\nVerschiedene Präsentationsfunktionen wie mathematische Formeln, Animationen und Wischgesten Anpassbare Themes und Layouts Navigationsfunktionen, die von mehreren Geräten wie Maus, Tastatur und Touchpad unterstützt werden Bietet erweiterte Funktionen wie automatische Wiedergabe von Folien und eingebettete Videos Kann im PDF-Format exportiert werden Mit diesen Funktionen können Benutzer ganz einfach interaktive und ansprechende Präsentationen erstellen.\nInstallation und Nutzung von reveal.js Der einfachste Weg, es zu nutzen, besteht darin, die gesamte ZIP-Datei von der folgenden Seite herunterzuladen und zu entpacken.\nÖffnen Sie https://revealjs.com/installation und laden Sie die Datei master.zip über den Link herunter Öffnen Sie die Datei index.html im extrahierten Ordner in einem Browser Schreiben Sie die index.html um, um Ihr eigenes Präsentationsmaterial zu erstellen ※ Da der Demo-HTML-Code in demo.html geschrieben ist, können Sie ihn als Referenz verwenden.\nVerwendungsmöglichkeiten Die von Ihnen erstellten Präsentationen können als Webseiten veröffentlicht oder als PDFs exportiert werden. Da die Quelle der Präsentation aus Text besteht, lässt sie sich außerdem problemlos mit einem Versionskontrollsystem verwalten.\nEs scheint auch möglich zu sein, Präsentationsmaterialien im Markdown-Format zu erstellen.\nReferenzen Lassen Sie uns in Zukunft reveal.js für Präsentationsmaterialien verwenden Liste der Markdown-Syntax-Beispiele ","date":"2023-04-06T23:23:46+09:00","image":"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_hu4de64f3f6be8c50037c2a4c6c2d48287_30871_120x120_fill_box_smart1_3.png","permalink":"http://kenji.blog/de/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/","title":"Wie man Präsentationen mit HTML erstellt (reveal.js)"},{"content":"Was ist Stable diffusion Stable diffusion ist eine KI, die von einem Forschungsteam der Universität München, Deutschland, entwickelt wurde und Bilder aus eingegebenen Textinformationen generiert. Indem sie mit verschiedenen Bildern trainiert wurde, kann sie eine Vielzahl von Bildern generieren, von Fotos bis hin zu Illustrationen.\nDieses Mal werde ich vorstellen, wie man Illustrationsbilder mit den vortrainierten Daten von Stable diffusion generiert.\nWas Sie benötigen Google-Konto Nur das\nGenerierungsverfahren Öffnen Sie https://colab.research.google.com Wählen Sie Datei oben links und dann Neues Notebook Wählen Sie Bearbeiten und dann Notebook-Einstellungen Ändern Sie den Hardwarebeschleuniger auf GPU Fügen Sie den folgenden Code ein und führen Sie ihn aus 1 !pip install diffusers==0.8.0 transformers Fügen Sie den folgenden Code ein und führen Sie ihn aus 1 from diffusers import StableDiffusionPipeline Fügen Sie den folgenden Code ein und führen Sie ihn aus 1 2 pipe = StableDiffusionPipeline.from_pretrained(\u0026#34;gsdf/Counterfeit-V2.5\u0026#34;) pipe.to(\u0026#34;cuda\u0026#34;) Fügen Sie den folgenden Code ein und führen Sie ihn aus 1 2 3 4 5 prompt = \u0026#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\u0026#34; n_prompt = \u0026#34;EasyNegative, extra fingers,fewer fingers\u0026#34; image = pipe(prompt, negative_prompt = n_prompt).images[0] image Der hier verwendete Prompt basiert auf dem Prompt von https://huggingface.co/gsdf/Counterfeit-V2.5.\nGenerierte Ergebnisse (einige) Referenzen https://huggingface.co/gsdf/Counterfeit-V2.5 Ich habe in 15 Minuten ein Bildgenerierungsprogramm mit Künstlicher Intelligenz (KI) erstellt 【Live-Programmierung】 ","date":"2023-04-06T00:43:19+09:00","image":"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_hu25483e02f36587a64f3cf042db15c245_550570_120x120_fill_box_smart1_3.png","permalink":"http://kenji.blog/de/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/","title":"Wie man Illustrationsbilder mit KI (Stable Diffusion) generiert"},{"content":"Was ist eine ausführbare Datei (exe)? Eine ausführbare Datei unter Windows. Sie ist im Allgemeinen in einem Format geschrieben, das als PE-Format bekannt ist. Sie enthält Maschinencode zur Ausführung sowie Ressourcen wie Symbole und Bilder.\nDa es mehrere Tools zur Analyse von ausführbaren Dateien gibt, werde ich diese hier vorstellen.\n7-Zip EXE-Dateien werden manchmal komprimiert erstellt, da ihre Größe ansonsten sehr groß werden könnte. In diesem Fall können Sie durch die Verwendung der Dateikomprimierungs- und Dekomprimierungssoftware 7-Zip die ausführbare Datei entpacken und ihren Inhalt untersuchen. Ein weiteres Tool, das auf ähnliche Weise entpacken kann, ist WinRAR.\nResource Hacker Sie können Ressourcen (Symbole, Bitmaps, Dialogfelder, Zeichenfolgen usw.) extrahieren, die sich in der EXE-Datei befinden. Da es auch als Hex-Editor fungiert, können Sie den Inhalt der EXE-Datei bearbeiten und umschreiben.\nPE Explorer Sie können PE-Dateien (EXE, DLL, OCX, SYS, Treiber) für Windows analysieren. PE Explorer bietet verschiedene Analysefunktionen, wie die Anzeige der Dateistruktur, des Dateiheaders, der Verzeichniseinträge und der exportierten Funktionen und Symbole.\nDependency Walker Sie können die DLL-Dateien untersuchen, von denen eine EXE-Datei abhängt, und überprüfen, ob sie korrekt geladen werden. Sie können auch Funktionsaufrufe von DLL-Dateien verfolgen.\nGhidra Ein leistungsstarkes Reverse-Engineering-Tool, das von der NSA (National Security Agency der USA) entwickelt und als Open Source kostenlos veröffentlicht wurde. Es ist sehr beliebt, da es nicht nur EXE-Dateien disassemblieren (in Assemblersprache umwandeln) kann, sondern auch eine Dekompilierungsfunktion in eine Form bietet, die der C-Sprache nahekommt.\nIDA Free / IDA Pro Ein hochfunktionaler Disassembler und Dekompiler, der zum weltweiten Industriestandard für die Malware-Analyse und das Reverse Engineering geworden ist. Die Pro-Version ist sehr teuer, aber Sie können die funktionseingeschränkte \u0026ldquo;IDA Free\u0026rdquo;-Version für den persönlichen oder nicht-kommerziellen Gebrauch kostenlos nutzen.\nx64dbg (x32dbg) Ein Open-Source-Debugger für Windows. Er ist auf die \u0026ldquo;dynamische Analyse\u0026rdquo; spezialisiert, bei der der Inhalt und der Speicherstatus durch schrittweise Ausführung analysiert werden, während die ausführbare Datei ausgeführt wird. Er wird häufig zum Entschlüsseln von Crackmes (Aufgabenprogramme zur Analyse) und zur Untersuchung des Verhaltens von Malware verwendet.\nILSpy / dotPeek Wenn die Ziel-EXE-Datei in einer .NET-Sprache wie C# geschrieben ist, können Sie diese Tools verwenden, um sie fast auf den Zustand des ursprünglichen Quellcodes zu dekompilieren (Rückübersetzung) und ihren Inhalt vollständig offenzulegen.\nDiese Tools sind nützlich, um den Inhalt von EXE-Dateien zu untersuchen, aber Vorsicht ist geboten. Das Bearbeiten von Dateien oder deren Nutzung für illegale Zwecke kann urheberrechtliche oder sicherheitsrelevante Probleme verursachen. Verwenden Sie sie daher nur mit ausreichendem Verständnis.\n","date":"2023-04-05T23:31:06+09:00","image":"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_hu9e069acaa7fdaa872d319a8c6d6e1444_1819799_120x120_fill_box_smart1_3.png","permalink":"http://kenji.blog/de/p/tools-zur-analyse-des-inhalts-einer-ausfuehrbaren-datei-exe/","title":"Tools zur Analyse des Inhalts einer ausführbaren Datei (exe)"},{"content":"Einführung Hier zeige ich, wie man auf dem Mac ähnlich wie unter Windows (Alt+Tab) zwischen Anwendungen wechseln kann.\nDa dies durch Ändern der Standardeinstellungen nur schwer zu erreichen ist, beinhaltet diese Methode die Installation einer Anwendung.\nDemonstrationsbild Einrichtungsmethode (macOS Ventura) Öffnen Sie https://alt-tab-macos.netlify.app Klicken Sie auf Download the latest release Öffnen Sie die heruntergeladene Anwendung Befolgen Sie die Anweisungen zur Installation Jetzt können Sie wie unter Windows mit Alt+Tab zwischen den Anwendungen wechseln.\nDas ist alles\n","date":"2023-04-05T02:20:12+09:00","image":"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_hu9e86c898d72728906fc707b47dff25e0_55585_120x120_fill_box_smart1_3.png","permalink":"http://kenji.blog/de/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/","title":"Wie man auf dem Mac wie unter Windows (Alt+Tab) zwischen Anwendungen wechselt"},{"content":"Einführung Wenn Sie zwischen Windows und Mac wechseln, unterscheiden sich die häufig verwendeten Tastenkombinationen zum Kopieren, Einfügen und Rückgängigmachen. Daher werde ich Ihnen zeigen, wie Sie sie anpassen können.\nEinstellungsmethode (macOS Ventura) Öffnen Sie die Systemeinstellungen Wählen Sie Tastatur Wählen Sie Tastaturkurzbefehle Wählen Sie Sondertasten Weisen Sie die Control(^)-Taste \u0026ldquo;⌘ Command\u0026rdquo; zu Weisen Sie die Command(⌘)-Taste \u0026ldquo;^ Control\u0026rdquo; zu Klicken Sie auf Fertig Ende\n","date":"2023-04-05T00:49:02+09:00","image":"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_hu81c2d0d61c05f6ce24b15f479442c3bc_211588_120x120_fill_box_smart1_3.png","permalink":"http://kenji.blog/de/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/","title":"Wie man die Tastenkombinationen für Kopieren und Einfügen auf dem Mac an Windows anpasst"},{"content":"Einführung Ich verwende eine US-Tastatur und unter Windows wechsle ich die japanische Eingabe mit Alt + `. Ich wollte auch auf dem Mac mit derselben Taste wechseln, und nach einiger Recherche fand ich heraus, dass dies in den Einstellungen geändert werden kann.\nEinrichtungsmethode (macOS Ventura) Öffnen Sie die Systemeinstellungen Wählen Sie Tastatur Wählen Sie Tastaturkurzbefehle Wählen Sie Eingabequellen Doppelklicken Sie auf die Kurzbefehlanzeige rechts neben \u0026ldquo;Nächste Quelle im Eingabemenü auswählen\u0026rdquo; Drücken Sie Alt + ` Klicken Sie auf Fertig Jetzt können Sie mit Alt + ` zwischen Englisch ⇔ Japanisch wechseln. Standardmäßig ist jedoch Katakana im Wechsel enthalten, daher habe ich Katakana aus der Eingabequelle entfernt, indem ich die folgenden Schritte ausgeführt habe.\nÖffnen Sie die Systemeinstellungen Wählen Sie Tastatur Klicken Sie auf Bearbeiten rechts neben Japanisch - Romaji in den Eingabequellen Klicken Sie auf Japanisch - Romaji Deaktivieren Sie Katakana im Eingabemodus Klicken Sie auf Fertig Das war\u0026rsquo;s\n","date":"2023-04-04T23:02:12+09:00","image":"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_hu79c9b62a36c4ad9394525ea6ed769587_198703_120x120_fill_box_smart1_3.png","permalink":"http://kenji.blog/de/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/","title":"So ändern Sie die Tastenkombination zum Umschalten der Eingabe zwischen Japanisch und Englisch auf dem Mac"},{"content":"So finden Sie den Speicherort einer ausführbaren Datei im PATH unter Windows Wenn Sie einen Befehl ausführen, indem Sie eine ausführbare Datei angeben, möchten Sie manchmal wissen, wo sich diese ausführbare Datei befindet. In solchen Fällen können Sie den Speicherort der ausführbaren Datei mit dem folgenden Befehl ermitteln.\n1 where \u0026lt;name_der_ausführbaren_datei\u0026gt; Wenn Sie beispielsweise den Speicherort von Paint (mspaint.exe) wissen möchten, gehen Sie wie folgt vor:\n1 where mspaint.exe Referenzen How do I find the location of an executable in Windows? ","date":"2023-04-03T00:02:55+09:00","image":"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_hub74cf0d67f87eb185fadea6cd8747be8_5455_120x120_fill_box_smart1_3.png","permalink":"http://kenji.blog/de/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/","title":"So finden Sie den Speicherort einer ausführbaren Datei im PATH unter Windows"},{"content":"Ich habe einen mac mini (2018) gekauft Ich habe einen gebrauchten mac mini (2018) bei Mercari gekauft. Die Spezifikationen sind unten aufgeführt.\nCPU: 3,2 GHz 6-Core Intel Core i7 Speicher: 32 GB Speicherplatz: 1 TB SSD Der Preis betrug ￥ 77.000\nGrund für den Kauf Ich verwende bei der Arbeit einen mac mini mit fast identischen Spezifikationen zur Entwicklung von Smartphone-Apps, wollte aber auch zu Hause eine Entwicklungsumgebung (insbesondere zum Ausführen von xcode) einrichten. Ich habe ein macbook pro, habe es aber vor 9 Jahren gekauft und es ist ziemlich langsam, weshalb ich es kaum benutze. Ich wollte persönlich iOS-Apps entwickeln. Sofortige Installation von xcode und inteliJ IDEA Die Version von xcode ist Version 14.3 (14E222b) Die Version von inteliJ IDEA ist 2023.1 Los geht\u0026rsquo;s! Lass uns entwickeln!\n","date":"2023-04-02T18:05:30+09:00","image":"http://kenji.blog/p/mac-mini2018%E3%82%92%E8%B3%BC%E5%85%A5/img_huc5df0470d74ce7a0046f11abaa7c5815_30469_120x120_fill_box_smart1_3.png","permalink":"http://kenji.blog/de/p/mac-mini2018%E3%82%92%E8%B3%BC%E5%85%A5/","title":"Ich habe einen mac mini (2018) gekauft"},{"content":"Über \u0026ldquo;Unsplash\u0026rdquo; https://unsplash.com/ja/\nDie Fotomaterial-Website \u0026ldquo;Unsplash\u0026rdquo; lässt sich wie folgt zusammenfassen:\nAlle Bilder können kostenlos genutzt werden Kommerzielle Nutzung erlaubt Bildbearbeitung erlaubt Keine Genehmigung erforderlich Keine Namensnennung erforderlich Es ist sehr benutzerfreundlich beim Schreiben von Blogartikeln, also probieren Sie es unbedingt aus.\n※ Informationen zur Lizenz finden Sie unten in der \u0026ldquo;Fußnote\u0026rdquo;. 1\nWir werden diese Website ebenfalls nutzen.\nUnsplash-Lizenz\u0026#160;\u0026#x21a9;\u0026#xfe0e;\n","date":"2023-04-02T14:44:17+09:00","image":"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_hu43cbd10eab78d2e7468dbb36abe8d794_828454_120x120_fill_box_smart1_3.png","permalink":"http://kenji.blog/de/p/ueber-die-foto-website-fuer-blogs-unsplash/","title":"Über die Foto-Website für Blogs \"Unsplash\""},{"content":"Holen Sie sich das egui Beispiel Sie können das egui-Beispiel mit dem folgenden Befehl ausführen.\n1 2 3 git clone https://github.com/emilk/eframe_template/ egui_test cd egui_test cargo run Laden Sie eine japanisch-kompatible Schriftart Um Japanisch anzuzeigen, müssen Sie eine Schriftart laden, die die japanische Sprache unterstützt.\nFügen Sie in src/app.rs die folgenden Zeilen in die Methode pub fn new ein.\n1 2 3 4 5 6 7 8 9 10 11 12 // Laden Sie eine japanisch-kompatible Schriftart let mut fonts = egui::FontDefinitions::default(); fonts.font_data.insert( \u0026#34;Meiryo\u0026#34;.to_owned(), egui::FontData::from_static(include_bytes!(\u0026#34;C:/Windows/Fonts/Meiryo.ttc\u0026#34;)), ); fonts .families .entry(egui::FontFamily::Proportional) .or_default() .insert(0, \u0026#34;Meiryo\u0026#34;.to_owned()); cc.egui_ctx.set_fonts(fonts); Jetzt können Sie Japanisch anzeigen. ","date":"2023-04-01T03:17:52+09:00","image":"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_120x120_fill_box_smart1_3.png","permalink":"http://kenji.blog/de/p/wie-man-japanisch-in-egui-anzeigt/","title":"Wie man Japanisch in egui anzeigt"},{"content":"Was ist KaTeX KaTeX ist eine JavaScript-Bibliothek zur Anzeige von mathematischen Formeln im LaTeX-Stil in HTML.\nKonkret können Sie Formeln wie die folgende anzeigen.\n$$f(x) = x^2 + x + 41$$ Es scheint auch andere LaTeX-ähnliche Formelanzeige-Bibliotheken zu geben, aber KaTeX ist dafür bekannt, einfach und schnell zu sein.\nWie man es in hugo integriert Erstellen Sie ein neues layouts/partials/math.html in der Ordnerhierarchie von hugo. Der Inhalt sollte wie folgt sein.\n1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 \u0026lt;link rel=\u0026#34;stylesheet\u0026#34; href=\u0026#34;https://cdn.jsdelivr.net/npm/katex@0.16.4/dist/katex.min.css\u0026#34; integrity=\u0026#34;sha384-vKruj+a13U8yHIkAyGgK1J3ArTLzrFGBbBc0tDp4ad/EyewESeXE/Iv67Aj8gKZ0\u0026#34; crossorigin=\u0026#34;anonymous\u0026#34;\u0026gt; \u0026lt;script defer src=\u0026#34;https://cdn.jsdelivr.net/npm/katex@0.16.4/dist/katex.min.js\u0026#34; integrity=\u0026#34;sha384-PwRUT/YqbnEjkZO0zZxNqcxACrXe+j766U2amXcgMg5457rve2Y7I6ZJSm2A0mS4\u0026#34; crossorigin=\u0026#34;anonymous\u0026#34;\u0026gt;\u0026lt;/script\u0026gt; \u0026lt;script defer src=\u0026#34;https://cdn.jsdelivr.net/npm/katex@0.16.4/dist/contrib/auto-render.min.js\u0026#34; integrity=\u0026#34;sha384-+VBxd3r6XgURycqtZ117nYw44OOcIax56Z4dCRWbxyPt0Koah1uHoK0o4+/RRE05\u0026#34; crossorigin=\u0026#34;anonymous\u0026#34;\u0026gt;\u0026lt;/script\u0026gt; \u0026lt;script\u0026gt; document.addEventListener(\u0026#34;DOMContentLoaded\u0026#34;, function() { renderMathInElement( document.body, { delimiters: [ {left: \u0026#34;$$\u0026#34;, right: \u0026#34;$$\u0026#34;, display: true}, {left: \u0026#34;\\\\[\u0026#34;, right: \u0026#34;\\\\]\u0026#34;, display: true}, {left: \u0026#34;$\u0026#34;, right: \u0026#34;$\u0026#34;, display: false}, {left: \u0026#34;\\\\(\u0026#34;, right: \u0026#34;\\\\)\u0026#34;, display: false} ] }); }); \u0026lt;/script\u0026gt; Als Nächstes fügen Sie den folgenden Code zur vorhandenen Datei layouts/partials/extend_head.html hinzu. 1 2 3 {{ if or .Params.math .Site.Params.math }} {{ partial \u0026#34;math.html\u0026#34; . }} {{ end }} Jetzt sind Sie bereit, KaTeX zu verwenden. Sie können KaTeX aktivieren, indem Sie math: true in das Front Matter der Seite einfügen.\nAlles, was noch zu tun ist, ist die Formel im LaTeX-Stil in den Textkörper des Seitenartikels zu schreiben. 1 $$ e^{i \\pi} = -1 $$ Wenn Sie es wie oben schreiben, wird es wie unten angezeigt.\n$$ e^{i \\pi} = -1 $$ Referenz Math Typesetting | PaperModX KaTex Auto-render Extension Einführung in KaTeX | The Strange Storage ","date":"2023-03-31T23:11:26+09:00","image":"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_hu4b1d83d24aac47c2cd375cc93b995e98_26739_120x120_fill_box_smart1_3.png","permalink":"http://kenji.blog/de/p/how-to-enable-katex-in-hugo/","title":"Wie man KaTeX (LaTeX-ähnliche mathematische Formelanzeige) in hugo aktiviert"},{"content":"Wie man Freunde gewinnt https://amzn.to/3YTv0Dr\nDu musst nicht von allen gemocht werden https://amzn.to/3n3SVCQ\nLIFE SHIFT Die Lebensstrategie für das 100-Jährige Leben https://amzn.to/3TtKUDf\nDie 7 Wege zur Effektivität https://amzn.to/3TqfjSO\n","date":"2023-03-19T18:13:14+09:00","image":"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_huc9a897f0643b20664d8e252d3dd67b22_2836610_120x120_fill_box_smart1_3.png","permalink":"http://kenji.blog/de/p/empfohlene-wirtschaftsbuecher/","title":"Empfohlene Wirtschaftsbücher"},{"content":"Empfohlene Chrome-Erweiterungen Hier stelle ich die Chrome-Erweiterungen vor, die ich derzeit verwende. Obwohl sie für Chrome gedacht sind, können sie auch in Microsoft Edge verwendet werden.\n1. simpleGestures Dies ist eine Erweiterung, mit der Sie Mausgesten verwenden können. Sie können den Browser bedienen, ohne die Tastatur zu benutzen oder auf die Schaltflächen der Symbolleiste zielen zu müssen.\nZum Beispiel können Sie zurückgehen, indem Sie die Maus bei gedrückter rechter Maustaste nach links schieben, oder vorwärtsgehen, indem Sie die Maus bei gedrückter rechter Maustaste nach rechts schieben.\nDa sie Open Source ist, ist sie auch sehr zuverlässig.\nsimpleGestures github 2. uBlock Origin Eine Erweiterung zum Blockieren von Werbung. Da sie Open Source ist, ist sie äußerst zuverlässig. Außerdem verbraucht sie wenig CPU und Speicherplatz und läuft sehr flüssig.\nuBlock Origin github 3. DeepL Übersetzer Eine Chrome-Erweiterung, mit der Sie Seiten mithilfe des weltbekannten Übersetzungsdienstes DeepL übersetzen können. Wenn Sie den zu übersetzenden Text im Browser markieren, erscheint das DeepL-Symbol, und mit einem Klick wird er automatisch übersetzt.\nDeepL Translator 4. ChatGPT Sidebar Eine Erweiterung, um ChatGPT in einer Seitenleiste nutzen zu können. Sie können die Seitenleiste mit Ctrl+P einblenden und der KI sofort Fragen stellen. Wenn ein Text auf der Seite markiert ist, wird dieser direkt in die Frage kopiert, sodass Sie sofort mit Ctrl+Enter fragen können.\nChatGPT Sidebar 5. Salesforce DevTools Eine Erweiterung, die nützliche Funktionen für die Salesforce-Entwicklung hinzufügt. Ich denke, dies ist für diejenigen, die Salesforce nicht verwenden, nicht erforderlich.\nSalesforce DevTools ","date":"2023-03-19T02:54:30+09:00","image":"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_hue5f33cff57d8628a1113ed27818b8d04_20776_120x120_fill_box_smart1_3.png","permalink":"http://kenji.blog/de/p/%E3%81%8A%E3%81%99%E3%81%99%E3%82%81%E3%81%AE-chorme-%E6%8B%A1%E5%BC%B5/","title":"Empfohlene Chrome-Erweiterungen"},{"content":"Was ist egui Es ist eine GUI-Bibliothek, die in Rust verwendet werden kann.\negui ausprobieren Sie können das egui-Beispiel mit den folgenden Befehlen ausführen.\n1 2 3 git clone https://github.com/emilk/eframe_template/ egui_test cd egui_test cargo run Danach können Sie verschiedene Dinge ausprobieren, während Sie mit dem Beispielcode spielen.\nReferenz Offizielles GitHub\n","date":"2023-03-18T10:27:02+09:00","image":"http://kenji.blog/p/egui%E3%82%92%E4%BD%BF%E3%81%A3%E3%81%A6%E3%81%BF%E3%82%8B/demo_hu16f50e8d6a05810ce904e73f9e33bab1_152754_120x120_fill_box_smart1_1.gif","permalink":"http://kenji.blog/de/p/egui%E3%82%92%E4%BD%BF%E3%81%A3%E3%81%A6%E3%81%BF%E3%82%8B/","title":"egui ausprobieren"},{"content":"Wie man rustc aktualisiert Führen Sie einfach die folgende Zeile in der Befehlszeile aus.\n1 rustup update Ausgabereferenz 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 rustup update info: syncing channel updates for \u0026#39;stable-x86_64-pc-windows-msvc\u0026#39; warning: Signature verification failed for \u0026#39;https://static.rust-lang.org/dist/channel-rust-stable.toml\u0026#39; info: latest update on 2023-03-09, rust version 1.68.0 (2c8cc3432 2023-03-06) info: downloading component \u0026#39;rust-src\u0026#39; info: downloading component \u0026#39;cargo\u0026#39; info: downloading component \u0026#39;clippy\u0026#39; info: downloading component \u0026#39;rust-docs\u0026#39; info: downloading component \u0026#39;rust-std\u0026#39; info: downloading component \u0026#39;rustc\u0026#39; 63.9 MiB / 63.9 MiB (100 %) 37.5 MiB/s in 1s ETA: 0s info: downloading component \u0026#39;rustfmt\u0026#39; info: removing previous version of component \u0026#39;rust-src\u0026#39; info: removing previous version of component \u0026#39;cargo\u0026#39; info: removing previous version of component \u0026#39;clippy\u0026#39; info: removing previous version of component \u0026#39;rust-docs\u0026#39; info: removing previous version of component \u0026#39;rust-std\u0026#39; info: removing previous version of component \u0026#39;rustc\u0026#39; info: removing previous version of component \u0026#39;rustfmt\u0026#39; info: installing component \u0026#39;rust-src\u0026#39; info: installing component \u0026#39;cargo\u0026#39; info: installing component \u0026#39;clippy\u0026#39; info: installing component \u0026#39;rust-docs\u0026#39; 19.4 MiB / 19.4 MiB (100 %) 2.4 MiB/s in 6s ETA: 0s info: installing component \u0026#39;rust-std\u0026#39; 27.6 MiB / 27.6 MiB (100 %) 12.7 MiB/s in 2s ETA: 0s info: installing component \u0026#39;rustc\u0026#39; 63.9 MiB / 63.9 MiB (100 %) 13.8 MiB/s in 4s ETA: 0s info: installing component \u0026#39;rustfmt\u0026#39; info: checking for self-updates info: downloading self-update stable-x86_64-pc-windows-msvc updated - rustc 1.68.0 (2c8cc3432 2023-03-06) (from rustc 1.64.0 (a55dd71d5 2022-09-19)) info: cleaning up downloads \u0026amp; tmp directories ","date":"2023-03-18T10:27:02+09:00","image":"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_hu2f4438039b9bb5f2180f9e10d772e3b3_30692_120x120_fill_box_smart1_3.png","permalink":"http://kenji.blog/de/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/","title":"Wie man rustc aktualisiert"},{"content":"Wie man Rauschen beim YAMAHA AG03 beseitigt Beim Hören des PC-Tons über den AG03-Monitor trat regelmäßig (etwa alle 1 bis 3 Minuten) ein kratzendes Rauschen auf. Nach einiger Recherche habe ich herausgefunden, dass die folgende Methode helfen kann, das Rauschen des AG03 zu beheben.\nhttps://jp.yamaha.com/support/updates/yamaha_steinberg_usb_driver_for_win.html\nNach dem Herunterladen und Installieren des Yamaha Steinberg USB Driver von der obigen Website ist das Rauschen verschwunden.\n今すぐ購入 Referenzen https://web.archive.org/web/20201003230738/http://yamaha.custhelp.com/app/answers/detail/a_id/7202\n","date":"2023-03-18T01:17:10+09:00","image":"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_hu7b60ee71c94898202eca721f7c6778b5_180745_120x120_fill_box_smart1_3.png","permalink":"http://kenji.blog/de/p/ag03%E3%83%8E%E3%82%A4%E3%82%BA%E8%A7%A3%E6%B6%88%E6%96%B9%E6%B3%95/","title":"Wie man Rauschen beim AG03 beseitigt"},{"content":"Von einem aktiven Ingenieur empfohlene und gewünschte PC-Peripheriegeräte Tastatur Vor allem kapazitive Tastaturen ohne Kontakt werden dringend empfohlen, da sie sehr langlebig sind. Ich besitze seit über 10 Jahren eine RealForce und benutze sie immer noch aktiv. Ich verwende das Modell mit englischem Layout und leisen Tasten.\nAllerdings habe ich mich in letzter Zeit auch für die Tastatur Logitech MX Keys interessiert.\nTrackball Als Zeigegeräte sind Trackballs anstelle von Mäusen zu empfehlen, da sie die Ermüdung verringern können.\nIch benutze die Logitech MX Ergo. Das ist ein teures Gerät, das über 10.000 Yen kostet, aber ich glaube, es ist seinen Preis mehr als wert.\nIch interessiere mich auch für die DEFT PRO(M-DPT1MRXBK) mit einer großen Kugel, die mit dem Zeige- und Mittelfinger bedient wird. Monitor Jeder Monitor reicht aus, aber hochauflösende 4K-Monitore sind empfehlenswert.\nDerzeit benutze ich einen 4K-Monitor von DELL.\nJetzt hätte ich gerne einen Breitbildmonitor wie den Monitor von EIZO oder den Monitor von DELL.\n","date":"2023-02-28T00:51:49+09:00","image":"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_hu9c34821fcae33240cf8bba1055606dc6_434960_120x120_fill_box_smart1_3.png","permalink":"http://kenji.blog/de/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/","title":"Empfohlene PC-Peripheriegeräte"},{"content":"Dienst zur Nutzung kostenpflichtiger Web-Schriftarten fontplus.jp https://fontplus.jp/\nFür 1.100 Yen pro Monat können alle Schriftarten verwendet werden, und die Nutzung auf mehreren Websites wird unterstützt.\n","date":"2023-02-07T20:59:01+09:00","image":"http://kenji.blog/p/fontplus.jp/img_hu81cfc4bed02bb5cdb36d3ac7fae3e538_91722_120x120_fill_box_smart1_3.png","permalink":"http://kenji.blog/de/p/fontplus.jp/","title":"Über fontplus.jp"},{"content":"Standardmäßig erlaubt HUGO die Verwendung von HTML-Tags in Artikeln nicht, aber Sie können dies aktivieren, indem Sie die folgende Beschreibung in die config.toml einfügen.\n1 2 [markup.goldmark.renderer] unsafe = true Referenz: Configure Markup\n","date":"2023-01-17T19:20:32+09:00","image":"http://kenji.blog/p/hugo%E3%81%A7html%E3%82%BF%E3%82%B0%E3%82%92%E4%BD%BF%E3%81%86/img_hu415dc7e70376ac350673d0366f70ca4b_19909_120x120_fill_box_smart1_3.png","permalink":"http://kenji.blog/de/p/verwendung-von-html-tags-in-hugo/","title":"Verwendung von HTML-Tags in HUGO"},{"content":"Suche nach GitHub-Sponsoren Ich würde mich freuen, wenn Sie über den unten stehenden Button ein GitHub-Sponsor werden könnten.\nEs wird für die Entwicklung von Werkzeugen usw. verwendet.\nIch möchte mein Bestes geben, bis ich ein Code-Signing-Zertifikat hinzufügen kann!\n","date":"2023-01-17T18:13:56+09:00","image":"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_hueb38a852fa4aae54f384564ce61ae26b_130999_120x120_fill_box_smart1_3.png","permalink":"http://kenji.blog/de/p/suche-nach-github-sponsoren/","title":"Suche nach GitHub-Sponsoren"},{"content":"Was ist eine Schaltfläche Eine Schaltfläche ist eines der GUI-Steuerelemente und kann mithilfe der Windows-Standard-API implementiert werden. Wenn Sie auf einen Bereich auf dem Bildschirm klicken (linke Maustaste drücken, linke Maustaste loslassen), können Sie einen im Programm festgelegten Prozess ausführen.\n1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 // Erstellen einer Schaltfläche CreateWindow( TEXT(\u0026#34;BUTTON\u0026#34;), TEXT(\u0026#34;Close\u0026#34;), WS_CHILD|WS_VISIBLE, 10,10,128,30, hWnd, (HMENU)ID_BUTTON1, ((LPCREATESTRUCT)lParam)-\u0026gt;hInstance, 0); ... // Eine WM_COMMAND-Nachricht wird vom Betriebssystem an das Fenster gesendet, wenn darauf geklickt wird. case WM_COMMAND: switch(LOWORD(wParam)) { case ID_BUTTON1: SendMessage(hWnd,WM_CLOSE,0,0); break; } break; Der Beispielcode ist unten gepostet. button\n","date":"2023-01-14T20:24:00+09:00","image":"http://kenji.blog/p/%E3%83%9C%E3%82%BF%E3%83%B3%E3%81%A4%E3%81%84%E3%81%A6/img_hu07b471bb746fa184ff8eeb6f561670e7_8164_120x120_fill_box_smart1_3.png","permalink":"http://kenji.blog/de/p/%E3%83%9C%E3%82%BF%E3%83%B3%E3%81%A4%E3%81%84%E3%81%A6/","title":"Über die Schaltfläche"},{"content":"Ich habe einen ThinkPad Laptop (Gebraucht) gekauft Die meiste Arbeit auf meinem Laptop erledige ich, indem ich über eine Remotedesktopverbindung auf andere Terminals zugreife, daher brauche ich keinen High-End-PC. Ein ChromeBook wäre auch in Ordnung gewesen, aber da es keine guten Designs oder hohe Auflösungen gab, habe ich ein ThinkPad gekauft.\nDie Spezifikationen sind unten aufgeführt, und der Preis lag bei etwa 55.000 Yen unter Verwendung verschiedener Punkte.\nThinkPad T470s CPU: Intel Core i7 7600U RAM: 24GB SSD: 512GB OS: Windows 10 Pro 64bit Bildschirm: 14,0 Zoll Breitbild (entspiegeltes Panel) Auflösung: WQHD LCD 2560×1440 Gewicht: Ca. 1,32 kg Anmerkungen: Englische Tastatur Da es gebraucht ist, dachte ich, es könnte Gebrauchsspuren oder Kratzer geben, aber es gibt überhaupt keine Probleme, was großartig ist. Auch der Akku funktioniert bisher problemlos.\nAktuelle Unzufriedenheiten Die Pause- und App-Tasten fehlen. Ich habe die Pause-Taste als Verknüpfung verwendet, um die Systemeinstellungen zu öffnen. Außerdem habe ich die App-Taste verwendet, um das Pop-up-Menü zu öffnen, daher ist es unpraktisch, sie nicht zu haben. Die Tasten PageUp und PageDown befinden sich direkt neben den Pfeiltasten der Tastatur, sodass ich sie oft versehentlich drücke. Das ist vielleicht Gewöhnungssache. Andere PCs, die ich in Betracht gezogen, aber nicht gekauft habe ASUS Chromebook Flip C436FA (C436FA-ENG) HP Laptop HP15s-fq Referenzen: ThinkPad T470s\n","date":"2023-01-13T19:07:00+09:00","image":"http://kenji.blog/p/thinkpad%E4%B8%AD%E5%8F%A4%E3%82%92%E8%B2%B7%E3%81%A3%E3%81%9F/img_hu1990736b7e8b9be3011f0d8e6938401f_246116_120x120_fill_box_smart1_3.png","permalink":"http://kenji.blog/de/p/thinkpad%E4%B8%AD%E5%8F%A4%E3%82%92%E8%B2%B7%E3%81%A3%E3%81%9F/","title":"Ich habe ein ThinkPad (Gebraucht) gekauft"},{"content":"Einfache Remoteverbindung mit TeamViewer Mit TeamViewer können Sie ganz einfach eine Remotedesktopverbindung herstellen.\nStarten Sie TeamViewer am Remoteziel und an der Remotequelle, und geben Sie die ID und das Passwort des Remoteziels an der Remotequelle ein, um eine Remoteverbindung herzustellen.\nUm über die Befehlszeile eine Remoteverbindung herzustellen, gehen Sie wie folgt vor:\n1 %ProgramFiles%\\TeamViewer\\TeamViewer.exe -i \u0026lt;ID\u0026gt; -P \u0026lt;Password\u0026gt; Geben Sie die Ziel-ID in \u0026lt;ID\u0026gt; und das Zielpasswort in \u0026lt;Password\u0026gt; ein.\nWenn Sie mit dem obigen Befehl eine Verknüpfungsdatei erstellen, ist das praktisch, da Sie die Eingabe von ID und PW überspringen können.\nReferenzwebsite: Command line parameters\n","date":"2023-01-13T01:45:00+09:00","image":"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_hu6a85c6015d61f1656b290295e2fefc2b_15316_120x120_fill_box_smart1_3.png","permalink":"http://kenji.blog/de/p/einfache-remoteverbindung-mit-teamviewer/","title":"Einfache Remoteverbindung mit TeamViewer"},{"content":" Narren lernen aus Erfahrung, Weise lernen aus der Geschichte (Otto von Bismarck)\nGib einem Mann einen Fisch und du ernährst ihn für einen Tag. Lehre einen Mann zu fischen und du ernährst ihn für sein Leben. (Laozi)\nBleibt hungrig, bleibt verrückt (Steve Jobs)\nErledigt ist besser als perfekt. (Mark Zuckerberg)\nHalte es einfach (James Gosling)\nIch habe keine Zeit, mir Sorgen darüber zu machen, wer mich nicht mag. Ich bin zu sehr damit beschäftigt, die Menschen zu lieben, die mich lieben. (Snoopy)\nDas größte Glück für einen Menschen ist es, eine Arbeit zu finden, bei der er seine Fähigkeiten voll ausschöpfen kann. (Karl Marx)\nWenn ein wenig Wissen gefährlich ist, wo ist dann der Mann, der so viel hat, dass er außer Gefahr ist? (Thomas Huxley, 1877)\n\u0026lsquo;Im Gegenteil\u0026rsquo;, fuhr Tweedledee fort, \u0026lsquo;wenn es so wäre, könnte es sein; und wenn es so wäre, würde es so sein; aber da es nicht so ist, ist es nicht so. Das ist Logik.\u0026rsquo; (Lewis Carroll, Alice hinter den Spiegeln, 1872)\nEs ist keine Übertreibung, Claude Shannon als den Vater des Informationszeitalters zu bezeichnen, und seine akademischen Leistungen gehören zu den größten des 20. Jahrhunderts. (Kritik der American Mathematical Society)\nDiejenigen, die den gegenwärtigen Stand der Theorie der symbolischen Algebra kennen, wissen, dass die Gültigkeit der Analyseprozesse nicht von der Interpretation der verwendeten Symbole abhängt, sondern allein von den Gesetzen ihrer Kombination. (George Boole, zu Beginn von \u0026ldquo;The Mathematical Analysis of Logic\u0026rdquo;, 1847)\n","date":"2022-10-15T17:00:43+09:00","image":"http://kenji.blog/p/%E5%90%8D%E8%A8%80%E9%9B%86/img_hu460fc51ec02f7186f7ea8b0f77e830d9_47559_120x120_fill_box_smart1_3.png","permalink":"http://kenji.blog/de/p/%E5%90%8D%E8%A8%80%E9%9B%86/","title":"Zitatsammlung"},{"content":"Graphen-Editor Vorstellung einer Webseite, auf der Sie einfache Graphen erstellen können.\nhttps://csacademy.com/app/graph_editor/\nSie können Graphen erstellen, indem Sie numerische Werte eingeben. Außerdem scheint es, dass man die Elemente auch mit der Maus bewegen kann.\nDurch Klicken auf Directed können Sie auch einen gerichteten Graphen erstellen.\nSie können die erstellten Graphen als Bild speichern, indem Sie Download as PNG verwenden.\n","date":"2022-10-13T23:31:11+09:00","image":"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_hu784f47a1f9126188b11445cd2c37bf68_13497_120x120_fill_box_smart1_3.png","permalink":"http://kenji.blog/de/p/%E3%82%B0%E3%83%A9%E3%83%95%E3%82%A8%E3%83%87%E3%82%A3%E3%82%BF/","title":"Graphen-Editor"},{"content":"Lösung des Problems des Handlungsreisenden mit Mathematica Problem 電車でこんな広告を見かけました😁📸 pic.twitter.com/iXEgvtXrpL\n\u0026mdash; 早稲田大学 早水桃子研究室 (@hayamizu_lab) October 11, 2022 Lösung 1 d=SparseArray[{{1,2}-\u0026gt;10,{2,1}-\u0026gt;10,{1,5}-\u0026gt;15,{5,1}-\u0026gt;15,{1,4}-\u0026gt;12,{4,1}-\u0026gt;12,{1,3}-\u0026gt;20,{3,1}-\u0026gt;20,{2,5}-\u0026gt;10,{5,2}-\u0026gt;10,{3,4}-\u0026gt;10,{4,3}-\u0026gt;10,{3,8}-\u0026gt;30,{8,3}-\u0026gt;30,{3,7}-\u0026gt;20,{7,3}-\u0026gt;20,{3,6}-\u0026gt;25,{6,3}-\u0026gt;25,{4,5}-\u0026gt;15,{5,4}-\u0026gt;15,{4,8}-\u0026gt;20,{8,4}-\u0026gt;20,{5,9}-\u0026gt;18,{9,5}-\u0026gt;18,{5,8}-\u0026gt;15,{8,5}-\u0026gt;15,{6,7}-\u0026gt;5,{7,6}-\u0026gt;5,{7,8}-\u0026gt;35,{8,7}-\u0026gt;35,{8,9}-\u0026gt;12,{9,8}-\u0026gt;12},{9,9},Infinity]; Erstellen Sie eine Matrix mit der Funktion SparseArray. Jedes Element repräsentiert die Entfernung zwischen den Städten in seiner Zeile und Spalte. Das erste Element {1,2}-\u0026gt;10 bedeutet beispielsweise, dass die Entfernung zwischen 1 und 2 gleich 10 ist. Das vorletzte Element {9,9} gibt die Größe der Matrix an, und das letzte Element Infinity bedeutet, dass die Weglänge zwischen nicht angegebenen Städten unendlich ist, das heißt, es gibt keinen Weg.\n1 {len,tour}=FindShortestTour[{1,2,3,4,5,6,7,8,9},DistanceFunction-\u0026gt;(d[[#1,#2]]\u0026amp;)] Mit der Funktion FindShortestTour können Sie das Problem des Handlungsreisenden ganz einfach lösen. {1,2,3,4,5,6,7,8,9} repräsentiert die Stadtnummern. DistanceFunction-\u0026gt;(d[[#1,#2]]\u0026amp;) übergibt die Matrix d, die die Entfernung zwischen den Städten darstellt.\nAusgabe 1 {137, {1, 2, 5, 9, 8, 7, 6, 3, 4}} Die Ausgabe ist die kürzeste Entfernung und die Tourroute zu diesem Zeitpunkt. Die kürzeste Entfernung ist 137, und die Tourroute ist 1→2→5→9→8→7→6→3→4→1. Bei der Konvertierung in die alphabetische ABC-Reihenfolge wird es zu A, B, E, I, H, G, F, C, D.\n","date":"2022-10-12T19:05:58+09:00","image":"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_hucba782cf2f6047b30fd8084b4d887659_22760_120x120_fill_box_smart1_3.png","permalink":"http://kenji.blog/de/p/loesung-des-problems-des-handlungsreisenden-mit-mathematica/","title":"Lösung des Problems des Handlungsreisenden mit Mathematica"},{"content":"Um alle Kontrollkästchen auf einer Webseite zu aktivieren, öffnen Sie die DevTools mit F12, fügen Sie den folgenden Code in die Konsole ein und führen Sie ihn aus.\n1 2 3 4 5 6 let boxes = document.querySelectorAll(\u0026#39;input[type=\u0026#34;checkbox\u0026#34;]\u0026#39;); for (let i = 0; i \u0026lt; boxes.length; i++) { if (!boxes[i].disabled) { boxes[i].checked = true; } } Oder,\nErstellen Sie ein neues Lesezeichen und fügen Sie den folgenden Code in die Registrierungsadresse ein (der Teil, in den Sie normalerweise https://\u0026hellip; eingeben). Zeigen Sie die Webseite an, die Sie aktivieren möchten, und klicken Sie auf das erstellte Lesezeichen. Alle Kontrollkästchen werden aktiviert.\n1 javascript:(function(){let boxes=document.querySelectorAll(\u0026#39;input[type=\u0026#34;checkbox\u0026#34;]\u0026#39;);for(let i=0;i\u0026lt;boxes.length;i++){if(!boxes[i].disabled){boxes[i].checked=true;}}})(); Um alle zu deaktivieren, ändern Sie bitte den Teil boxes[i].checked = true; des obigen Skripts in boxes[i].checked = false;.\n","date":"2022-10-05T20:07:06+09:00","image":"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_hu556225b69f77e68d5b8659c3dfad5080_9228_120x120_fill_box_smart1_3.png","permalink":"http://kenji.blog/de/p/alle-kontrollk%C3%A4stchen-auf-einer-webseite-aktivieren/","title":"Alle Kontrollkästchen auf einer Webseite aktivieren"},{"content":"Satz von Wilson Wenn $p$ eine Primzahl ist, gilt $(p−1)!≡−1 \\pmod p$.\nEulersche Formel $e^{iπ}+1=0$\nGroßer Fermatscher Satz Für jede ganze Zahl $n≥3$ existieren keine positiven ganzen Zahlen $x,y,z$, die $x^n+y^n=z^n$ erfüllen.\nBasler Problem $1/1^2+1/2^2+1/3^2+1/4^2+...=π^2/6$\nEulersches primzahlerzeugendes Polynom $n^2+n+41$ ergibt immer eine Primzahl, wenn $n$ eine ganze Zahl zwischen $0$ und $39$ ist.\n","date":"2022-10-05T13:24:50+09:00","image":"http://kenji.blog/p/%E5%A5%BD%E3%81%8D%E3%81%AA%E6%95%B0%E5%BC%8F/img_huc293f175856c5702bca3e96906ea6e7d_155123_120x120_fill_box_smart1_3.png","permalink":"http://kenji.blog/de/p/%E5%A5%BD%E3%81%8D%E3%81%AA%E6%95%B0%E5%BC%8F/","title":"Lieblings-Mathematikformeln"},{"content":"Voraussetzungen Windows 11 muss installiert sein\nVorgehensweise Installieren Sie den App-Installer aus dem Microsoft Store https://www.microsoft.com/store/productId/9NBLGGH4NNS1 Installieren Sie die App über die Eingabeaufforderung 1 winget install Google.Chrome Wichtigste installierbare Apps Google Chrome (Befehl winget install Google.Chrome) Microsoft Edge (Befehl winget install Microsoft.Edge) Microsoft Teams (Befehl winget install Microsoft.Teams) Microsoft Office (Befehl winget install Microsoft.Office) Visual Studio Code (Befehl winget install vscode) Slack (Befehl winget install SlackTechnologies.Slack) Discord (Befehl winget install Discord.Discord) Docker Desktop (Befehl winget install Docker.DockerDesktop) Git (Befehl winget install Git) 7zip (Befehl winget install 7zip) VLC (Befehl winget install VideoLAN.VLC) Referenz Verwenden des winget-Tools zum Installieren und Verwalten von Anwendungen\nNebenbei Ich dachte, ich könnte auch Paint.Net installieren, aber das war nicht möglich.\nhttps://forums.getpaint.net/topic/118574-please-add-paintnet-to-the-available-packages-for-windows-package-manager-winget/\n","date":"2022-10-05T12:15:20+09:00","image":"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_hu0f8970b897eb9ee188b975a06c549111_1216_120x120_fill_box_smart1_3.png","permalink":"http://kenji.blog/de/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/","title":"Apps über die Befehlszeile mit WinGet installieren"},{"content":"Eigenschaften von Rust Eine relativ neue Open-Source-Programmiersprache, die von Mozilla entwickelt wird Eine schnelle Sprache ohne Garbage Collection, die auf Systemprogrammierung spezialisiert ist Garantiert Speichersicherheit durch einzigartige Mechanismen für Besitz (ownership) und Ausleihen (borrowing) als Teil der Sprachspezifikation Funktioniert plattformübergreifend Besitzt standardmäßig den hervorragenden Paketmanager Cargo ","date":"2022-10-03T22:47:20+09:00","image":"http://kenji.blog/p/rust%E3%81%AE%E7%89%B9%E5%BE%B4/img_hu184f8481eb552ab7d9cefed2227c58f9_39839_120x120_fill_box_smart1_3.png","permalink":"http://kenji.blog/de/p/rust%E3%81%AE%E7%89%B9%E5%BE%B4/","title":"Eigenschaften von Rust"},{"content":"Um Variablen in Github Actions dynamisch festzulegen, können Sie dies durch Anhängen an $env:GITHUB_ENV erreichen, wie unten gezeigt.\n【Im Fall von Windows】\n1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 name: Rust on: push: branches: [ \u0026#34;master\u0026#34; ] pull_request: branches: [ \u0026#34;master\u0026#34; ] env: CARGO_TERM_COLOR: always jobs: build: runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - name: Get Environment run: | echo \u0026#39;VERSION=1.0.0\u0026#39; \u0026gt;\u0026gt; $GITHUB_ENV echo \u0026#39;NAME=1.0.0\u0026#39; \u0026gt;\u0026gt; $GITHUB_ENV - name: Display Environment run: | echo $env:VERSION echo $env:NAME - name: Create Release id: create_release uses: actions/create-release@v1 env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} with: tag_name: ${{ env.VERSION }} release_name: ${{ env.VERSION }} draft: false prerelease: false - name: Upload Release Asset id: upload-release-asset uses: actions/upload-release-asset@v1 env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} with: upload_url: ${{ steps.create_release.outputs.upload_url }} # This pulls from the CREATE RELEASE step above, referencing it\u0026#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 asset_path: ./target/release/${{ env.NAME }}.exe asset_name: ${{ env.NAME }}.exe asset_content_type: application/octet-stream 【Im Fall von Linux】\n1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 name: Rust on: push: branches: [ \u0026#34;main\u0026#34; ] pull_request: branches: [ \u0026#34;main\u0026#34; ] env: CARGO_TERM_COLOR: always jobs: build: runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - name: Get Environment run: | echo \u0026#39;VERSION=1.0.0\u0026#39; \u0026gt;\u0026gt; $GITHUB_ENV echo \u0026#39;NAME=hello\u0026#39; \u0026gt;\u0026gt; $GITHUB_ENV - name: Display Environment run: | echo ${{ env.VERSION }} echo ${{ env.NAME }} ","date":"2022-10-02T02:33:35+09:00","image":"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_hua65fb3c79313ad0762e062df80261603_10981_120x120_fill_box_smart1_3.png","permalink":"http://kenji.blog/de/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/","title":"Variablen in Github Actions dynamisch festlegen"},{"content":"Lokalen Tag löschen Überprüfen Sie vorhandene lokale Tags mit git tag. Löschen Sie den Tag mit git tag -d v0.1.0. (Geben Sie den Tag an, den Sie anstelle von v0.1.0 löschen möchten) Remote-Tag löschen Überprüfen Sie vorhandene Remote-Tags mit git ls-remote --tags. Löschen Sie den vorhandenen Remote-Tag mit git push origin --delete v0.1.0. (Geben Sie den Tag an, den Sie anstelle von v0.1.0 löschen möchten) Referenz gitでtagをリモートとローカルで削除する方法！\n","date":"2022-10-02T02:18:04+09:00","image":"http://kenji.blog/p/git%E3%81%A7%E3%82%BF%E3%82%B0%E3%82%92%E6%B6%88%E3%81%99/img_hu2ecde82e40aa31a994850b70302683b4_5304_120x120_fill_box_smart1_3.png","permalink":"http://kenji.blog/de/p/git%E3%81%A7%E3%82%BF%E3%82%B0%E3%82%92%E6%B6%88%E3%81%99/","title":"Tags in git löschen"},{"content":"Ein einfaches Fenster in Rust anzeigen\n1 2 3 4 5 6 7 8 9 10 [package] name = \u0026#34;win\u0026#34; version = \u0026#34;0.1.0\u0026#34; edition = \u0026#34;2021\u0026#34; # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html [dependencies.winapi] version = \u0026#34;0.3\u0026#34; features = [\u0026#34;winuser\u0026#34;] Der Quellcode ist unten\n1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 #![windows_subsystem = \u0026#34;windows\u0026#34;] use winapi::{ um::{ winuser::{RegisterClassW, WNDCLASSW, CS_HREDRAW, CS_VREDRAW, LoadIconW, IDI_APPLICATION, LoadCursorW, IDC_ARROW, CreateWindowExW, ShowWindow, SW_NORMAL, UpdateWindow, GetMessageW, TranslateMessage, DispatchMessageW, MSG, WM_DESTROY, PostQuitMessage, DefWindowProcW, WS_OVERLAPPEDWINDOW, CW_USEDEFAULT}, wingdi::{GetStockObject, WHITE_BRUSH}, }, shared::{ windef::{HWND, HBRUSH}, minwindef::{UINT, WPARAM, LPARAM, LRESULT}, }, }; use std::ptr; use std::mem; fn main() { unsafe { let class_name = encode(\u0026#34;my_window_class_name\u0026#34;); if !register_wndclass(\u0026amp;class_name) { return; } let hwnd = create_window(\u0026amp;class_name); if hwnd.is_null() { return; } ShowWindow(hwnd, SW_NORMAL); UpdateWindow(hwnd); let mut msg = mem::uninitialized::\u0026lt;MSG\u0026gt;(); loop { if GetMessageW(\u0026amp;mut msg, ptr::null_mut(), 0, 0) == 0 { return; } TranslateMessage(\u0026amp;mut msg); DispatchMessageW(\u0026amp;mut msg); } } } fn encode(source: \u0026amp;str) -\u0026gt; Vec\u0026lt;u16\u0026gt; { source.encode_utf16().chain(Some(0)).collect() } unsafe fn register_wndclass(class_name: \u0026amp;[u16]) -\u0026gt; bool { let mut winc = mem::zeroed::\u0026lt;WNDCLASSW\u0026gt;(); winc.style = CS_HREDRAW | CS_VREDRAW; winc.lpfnWndProc = Some(win_proc); winc.hIcon = LoadIconW(ptr::null_mut(), IDI_APPLICATION); winc.hCursor = LoadCursorW(ptr::null_mut(), IDC_ARROW); winc.hbrBackground = GetStockObject(WHITE_BRUSH as i32) as HBRUSH; winc.lpszClassName = class_name.as_ptr(); RegisterClassW(\u0026amp;winc) \u0026gt; 0 } unsafe fn create_window(class_name: \u0026amp;[u16]) -\u0026gt; HWND { CreateWindowExW( 0, class_name.as_ptr(), encode(\u0026#34;Hello, World!\u0026#34;).as_ptr(), WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, 0, CW_USEDEFAULT, 0, ptr::null_mut(), ptr::null_mut(), ptr::null_mut(), ptr::null_mut(), ) } unsafe extern \u0026#34;system\u0026#34; fn win_proc(hwnd: HWND, msg: UINT, w_param: WPARAM, l_param: LPARAM) -\u0026gt; LRESULT { match msg { WM_DESTROY =\u0026gt; PostQuitMessage(0), _ =\u0026gt; return DefWindowProcW(hwnd, msg, w_param, l_param), }; 0 } Referenzen Windows-Programmierung in Rust - CreateWindow\n","date":"2022-10-01T19:08:58+09:00","image":"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_huefc2d075e966b0edc0b7186c50038553_22411_120x120_fill_box_smart1_3.png","permalink":"http://kenji.blog/de/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/","title":"Ein einfaches Fenster in Rust anzeigen"},{"content":"Um Tests in Rust zu schreiben, erstellen Sie eine Funktion, indem Sie das Attribut #[test] eine Zeile über der Definition der Testfunktion hinzufügen.\n1 2 3 4 5 6 7 8 fn plus(a:i32,b:i32)-\u0026gt;i32 { a+b } #[test] fn plus_test() { assert_eq!(plus(1, 1), 2); } Der Testcode kann mit cargo test ausgeführt werden. Wenn der Test erfolgreich ist, wird ok ausgegeben. Wenn er fehlschlägt, wird FAILED ausgegeben.\nIm Erfolgsfall\n1 2 3 4 5 6 7 8 9 C:\\Users\\admin\\Desktop\\test1\u0026gt;cargo test Compiling test1 v0.1.0 (C:\\Users\\admin\\Desktop\\test1) Finished test [unoptimized + debuginfo] target(s) in 0.35s Running unittests src\\main.rs (target\\debug\\deps\\test1-be5d3118bc52cb3a.exe) running 1 test test plus_test ... ok test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s Im Fehlerfall\n1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 C:\\Users\\admin\\Desktop\\test1\u0026gt;cargo test Compiling test1 v0.1.0 (C:\\Users\\admin\\Desktop\\test1) Finished test [unoptimized + debuginfo] target(s) in 0.33s Running unittests src\\main.rs (target\\debug\\deps\\test1-be5d3118bc52cb3a.exe) running 1 test test plus_test ... FAILED failures: ---- plus_test stdout ---- thread \u0026#39;plus_test\u0026#39; panicked at \u0026#39;assertion failed: `(left == right)` left: `2`, right: `3`\u0026#39;, src\\main.rs:7:5 note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace failures: plus_test test result: FAILED. 0 passed; 1 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s error: test failed, to rerun pass \u0026#39;--bin test1\u0026#39; ","date":"2022-10-01T02:00:59+09:00","image":"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_huefc2d075e966b0edc0b7186c50038553_22411_120x120_fill_box_smart1_3.png","permalink":"http://kenji.blog/de/p/rust%E3%81%A7%E3%83%86%E3%82%B9%E3%83%88%E3%82%92%E6%9B%B8%E3%81%8F/","title":"Tests in Rust schreiben"},{"content":"Sie können eine MessageBox in Rust anzeigen, indem Sie die folgenden Schritte ausführen.\nInstallieren Sie Rust. Siehe Erste Schritte mit Rust Führen Sie cargo new --bin MessageBox in der Eingabeaufforderung aus. Wechseln Sie in das Verzeichnis MessageBox. Öffnen Sie Cargo.toml und ändern Sie es wie folgt. 1 2 3 4 5 6 7 8 9 10 [package] name = \u0026#34;hello_world\u0026#34; version = \u0026#34;0.1.0\u0026#34; edition = \u0026#34;2021\u0026#34; # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html [dependencies] winapi = \u0026#34;0.2.7\u0026#34; user32-sys = \u0026#34;0.2.0\u0026#34; Öffnen Sie src\\main.rs und ändern Sie es wie folgt. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 extern crate user32; extern crate winapi; use std::ffi::CString; use user32::MessageBoxA; use winapi::winuser::{MB_OK, MB_ICONINFORMATION}; fn main() { let lp_text = CString::new(\u0026#34;Hello, world!\u0026#34;).unwrap(); let lp_caption = CString::new(\u0026#34;MessageBox Example\u0026#34;).unwrap(); unsafe { MessageBoxA( std::ptr::null_mut(), lp_text.as_ptr(), lp_caption.as_ptr(), MB_OK | MB_ICONINFORMATION ); } } Führen Sie cargo run in der Eingabeaufforderung aus. Um einen Release-Build zu erstellen, führen Sie cargo build --release aus.\nReferenz Hello World MesssageBox example in Rust\n","date":"2022-09-30T23:54:31+09:00","image":"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_huefc2d075e966b0edc0b7186c50038553_22411_120x120_fill_box_smart1_3.png","permalink":"http://kenji.blog/de/p/anzeigen-einer-messagebox-in-rust/","title":"Anzeigen einer MessageBox in Rust"},{"content":"Was bedeutet es zu verstehen? Hallo!\nHeute möchte ich über das Thema „Was bedeutet es zu verstehen?“ sprechen.\nIst „Verstehen“ eigentlich mehrdeutig? Es gibt Momente in unserem täglichen Leben, in denen wir das Gefühl haben: „Ich habe verstanden!“. Aber wenn man genau darüber nachdenkt, ist dieses „Verstehen“ wirklich ein vollständiges Begreifen?\nZum Beispiel Autofahren. Wenn man aufs Gaspedal tritt, fährt es vorwärts, und wenn man auf die Bremse tritt, hält es an. Das könnte man „Verstehen“ nennen. Ich denke jedoch, dass es nur wenige Menschen gibt, die im Detail erklären können, was im Inneren des Motors vor sich geht.\nIst vollständiges Verstehen notwendig? Tatsächlich stört es das tägliche Leben oft nicht, auch wenn man nicht alles vollständig versteht. Man kann telefonieren und Nachrichten senden, ohne den internen Aufbau eines Smartphones zu kennen.\nDennoch sollten wir das „Verstehen“ nicht auf die leichte Schulter nehmen. Wenn sich unser Verständnis vertieft, können neue Entdeckungen und Erkenntnisse entstehen.\nEs gibt viele Dinge, die wir nicht verstehen Es gibt viele Dinge auf der Welt, die noch nicht geklärt sind. Zum Beispiel die Mechanismen der menschlichen Emotionen und des Bewusstseins, der Ursprung des Universums usw. Dies sind Bereiche, die trotz des Fortschritts der Wissenschaft noch nicht vollständig „verstanden“ werden.\nSelbst in der Welt der Mathematik gibt es ungelöste Probleme, die einfach erscheinen, wie die „Goldbachsche Vermutung“.\nDer Wert des „Verstehens“ Wenn wir mehr Dinge „verstehen“, können wir sie mit Zuversicht erklären und effektiv mit anderen kommunizieren. Ein weiterer Vorteil ist, dass es mit Wissen schwieriger ist, durch Fehlinformationen in die Irre geführt zu werden.\nEine bescheidene Haltung ist wichtig Zu erkennen, was wir „nicht verstehen“, führt zu Bescheidenheit. Und gerade durch diese Erkenntnis entsteht der Wunsch, weiter zu lernen.\nWährend „Verstehen“ also wichtig ist, ist es schwierig, alles vollständig zu verstehen. Ich denke, das Wichtigste ist, die Grenzen unseres eigenen Verständnisses zu kennen und die Einstellung zu haben, weiterzulernen.\n","date":"2022-09-24T02:38:18+09:00","image":"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_hu70cb8dd6d786a678b22436c932461bee_164867_120x120_fill_box_smart1_3.png","permalink":"http://kenji.blog/de/p/was-bedeutet-es-zu-verstehen/","title":"Was bedeutet es zu verstehen?"},{"content":"Ich habe darüber nachgedacht, warum ich Mathematik und Computer mag Gleichheit für alle Unabhängig von Person, Position oder Ort gibt die gleiche Eingabe immer die gleiche Ausgabe zurück.\nKlare Regeln Die Regeln sind klar definiert und es gibt keine Absurditäten oder Ungerechtigkeiten.\nDie abgeleiteten Antworten und Theorien sind ewig richtig Man muss sich keine Sorgen machen, dass eine einmal berechnete Antwort später umgeschrieben wird.\nEs gibt einen moderaten Schwierigkeitsgrad Es gibt immer ungelöste Probleme, und man kann sich jederzeit der Herausforderung der Problemlösung stellen.\n","date":"2022-09-23T01:56:52+09:00","image":"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_hue4a786c476ad4bcc54a52cdbffbd292f_6616634_120x120_fill_box_smart1_3.png","permalink":"http://kenji.blog/de/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/","title":"Warum ich Mathematik und Computer mag"},{"content":"Was eine Community braucht Ich fand die Community-Richtlinien von Scratch sehr raffiniert und ausgezeichnet. Folgende Dinge standen dort geschrieben:\nBehandle jeden mit Respekt.\nBleibe sicher: Gib keine persönlichen Daten oder Kontaktinformationen preis.\nMache hilfreiche Kommentare.\nVerstehe die Remix-Kultur.\nSei ehrlich.\nMache die Seite zu einem angenehmen Ort.\nIch glaube, dass diese Perspektiven auf jede Community zutreffen.\nhttps://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\n","date":"2022-09-23T01:37:43+09:00","image":"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_hueeaef9e10f0c1990dbbf990f6784494a_314802_120x120_fill_box_smart1_3.png","permalink":"http://kenji.blog/de/p/was-eine-community-braucht/","title":"Was eine Community braucht"},{"content":"Fermat (P. de Fermat, 1601-1665) Ein französischer Mathematiker, der das 17. Jahrhundert repräsentiert. Er legte die Grundlagen für die analytische Geometrie, Wahrscheinlichkeitstheorie und Differentialrechnung. Er ist auch der Begründer der Zahlentheorie.\nDiophantos (Diophantus, ca. 207-291) Griechischer Mathematiker. Berühmt für die Einführung von Symbolen und die Erforschung rationaler Lösungen. Sein Hauptwerk ist die \u0026ldquo;Arithmetica\u0026rdquo;. Der Bereich, der rationale Lösungen für Gleichungen sucht, wird als diophantische Analyse bezeichnet.\nEuler (L. Euler, 1707-1783) Der in der Schweiz geborene König der Mathematik. Er vollbrachte Leistungen in fast allen Bereichen der Mathematik. Er hinterließ über 700 Abhandlungen und 45 Bücher.\nLegendre (A. M. Legendre, 1752-1833) Französischer Mathematiker. Er hinterließ zahlreiche Errungenschaften in der Zahlentheorie, bei elliptischen Integralen und bei Problemen der Anziehungskraft. Das Wort \u0026ldquo;Zahlentheorie\u0026rdquo; stammt von seinem Hauptwerk \u0026ldquo;Essai sur la théorie des nombres\u0026rdquo;.\nKummer (E. E. Kummer, 1810-1893) Deutscher Mathematiker. Er erzielte große Erfolge durch die Anwendung der Zahlentheorie der Kreisteilungskörper auf den Großen Satz von Fermat.\nDescartes (R. Descartes, 1596-1650) Ein origineller französischer Philosoph. Zu seinen wichtigsten Werken gehören \u0026ldquo;Abhandlung über die Methode\u0026rdquo;, \u0026ldquo;Geometrie\u0026rdquo; und \u0026ldquo;Kosmologie\u0026rdquo;.\nPascal (B. Pascal, 1623-1662) Ein französischer Philosoph, bekannt für seine Forschungen zur Wahrscheinlichkeitstheorie und zu Fluiden. Später schloss er sich den Jansenisten an und widmete sich religiösen Aktivitäten. \u0026ldquo;Pensées\u0026rdquo; entstand in dieser Zeit.\nBachet (C. G. Bachet, 1581-1638) Ein französischer Adliger, der als Hobby Zahlenrätsel studierte. Er veröffentlichte eine lateinische Übersetzung von Diophantos\u0026rsquo; \u0026ldquo;Arithmetica\u0026rdquo; und fügte seine eigenen Forschungen als Anmerkungen hinzu.\nWallis (J. Wallis, 1616-1703) Englischer Mathematiker. In seinem Hauptwerk \u0026ldquo;Arithmetica Infinitorum\u0026rdquo; gab er dem Konzept des Grenzwerts eine mathematische Form und trug zur Grundlegung der Infinitesimalrechnung bei.\nBrouncker (W. Brouncker, 1620-1684) Irischer Adliger. Erster Präsident der Royal Society. Als Mathematik-Enthusiast interagierte er unter anderem mit Wallis.\nLagrange (J. L. Lagrange, 1736-1813) In Italien geborener französischer Mathematiker. Als Nachfolger von Euler diente er als Direktor der mathematischen Abteilung der Berliner Akademie. Er brachte große Leistungen in der Zahlentheorie und der analytischen Mechanik hervor.\nSiegel (C. L. Siegel, 1896-1981) Deutscher Zahlentheoretiker. Leistete zahlreiche Beiträge zur analytischen Zahlentheorie.\nFibonacci (L. Fibonacci, ca. 1175-1250) Italienischer Mathematiker. In seinem Hauptwerk \u0026ldquo;Liber Abaci\u0026rdquo; nutzte er hindu-arabische Ziffern und trug zu deren Verbreitung bei. Außerdem diskutierte er in \u0026ldquo;Liber Quadratorum\u0026rdquo; über kongruente Zahlen.\nBaker (A. Baker, 1939-) Britischer Zahlentheoretiker. Für seine Beiträge zur Theorie der transzendenten Zahlen wurde er zusammen mit Heisuke Hironaka mit der Fields-Medaille ausgezeichnet.\nPoincaré (J. Poincaré, 1854-1912) Französischer Mathematiker, der oft als der letzte Universalist der Mathematik bezeichnet wird. Er hinterließ herausragende Werke, unter anderem in der Theorie der automorphen Funktionen, der nichteuklidischen Geometrie, bei Differentialgleichungen, in der Himmelsmechanik, der Elektrodynamik und auch in der Wissenschaftskritik.\nMordell (L. J. Mordell, 1888-1972) In Amerika geborener Mathematiker. Seine Eltern waren Einwanderer aus Litauen. Er verfasste zahlreiche Abhandlungen über diophantische Gleichungen, aber besonders berühmt ist der Satz von Mordell in der Theorie der elliptischen Kurven. Weil erweiterte diesen auf allgemeine algebraische Kurven, was zu einer explosionsartigen Entwicklung der arithmetischen algebraischen Geometrie führte.\nWeil (A. Weil, 1906-) Jüdisch-französischer Mathematiker. In seinen jungen Jahren interessierte er sich für das Fermat-Problem. Um es auf die Zahlentheorie anzuwenden, überarbeitete er die algebraische Geometrie grundlegend und verlieh ihr eine strenge Grundlage. Er ist auch für seine Arbeiten zur Geschichte der Mathematik bekannt.\nMersenne (M. Mersenne, 1588-1648) Französischer Priester des Paulanerordens. Er vermittelte den Briefwechsel zwischen Mathematikern verschiedener Regionen. Die nach ihm benannten Mersenne-Zahlen wurden in Wirklichkeit von Fermat erdacht.\nRoberval (G. P. de Roberval, 1602-1675) Französischer Mathematiker. Er war zu seiner Zeit fast der einzige Mathematiker, der eine Professur innehatte, und ist bekannt für seine Studien über die Zykloide.\nAbel (N. H. Abel, 1802-1829) Norwegischer Mathematiker. Erbrachte herausragende Leistungen, wie etwa die Unlösbarkeit der allgemeinen Gleichung fünften Grades, die Theorie der elliptischen Funktionen und die Theorie der Abelschen Integrale, verstarb jedoch in jungen Jahren.\nJacobi (C. G. J. Jacobi, 1804-1851) Jüdisch-deutscher Mathematiker. Hinterließ große Errungenschaften in der Theorie der elliptischen Funktionen, der Thetafunktionen, der Differentialgleichungen und der Variationsrechnung. Er stellte Abels Arbeiten der Welt vor. Er ist auch dafür bekannt, den Zweck der Wissenschaft als \u0026ldquo;Ehre des menschlichen Geistes\u0026rdquo; zu betrachten und den Pragmatismus abzulehnen.\nGauß (C. F. Gauß, 1777-1855) Der in Deutschland geborene König der Mathematik. Bekannt für Forschungen zur Zahlentheorie, nichteuklidischen Geometrie, Geodäsie, hypergeometrischen Reihen, Flächentheorie und zum Erdmagnetismus. Als Perfektionist soll er Ergebnisse nicht veröffentlicht haben, bis sie einen Vollkommenheitsgrad erreicht hatten, bei dem das Gerüst nicht mehr sichtbar war. Zu seinen Hauptwerken gehört \u0026ldquo;Disquisitiones Arithmeticae\u0026rdquo;.\nLamé (G. Lamé, 1795-1870) Französischer Mathematiker. Leistete Beiträge zur Elastizitätstheorie und Wärmeleitungstheorie.\nLiouville (J. Liouville, 1809-1882) Französischer Mathematiker. Trug zu Differentialgleichungen, der Theorie transzendenter Zahlen und der Funktionentheorie bei.\nCauchy (A. L. Cauchy, 1789-1857) Französischer Mathematiker. Äußerst produktiv, mit vielen Errungenschaften in der theoretischen Physik und der Mathematik. In Frankreich soll er fast so sehr respektiert werden wie Gauß.\nGalois (É. Galois, 1811-1832) Französischer Mathematiker. Erklärte Abels Satz, dass Gleichungen ab dem fünften Grad im Allgemeinen nicht algebraisch lösbar sind, indem er das Konzept der Gruppe einführte. Er fiel jung in einem Duell, von dem heute bekannt ist, dass es durch eine triviale Liebesaffäre ausgelöst wurde.\nHensel (K. Hensel, 1861-1941) Deutscher Mathematiker. Ein Schüler von Kronecker. Er wandte funktionentheoretische Methoden an, um die Theorie der p-adischen Zahlen (p-adische Analysis) in die Zahlentheorie einzuführen.\nHasse (H. Hasse, 1898-1979) Deutscher Mathematiker. Ein Schüler von Hensel, der zur Fundierung und Anwendung der p-adischen Analysis beitrug. Zu seinen Arbeiten gehören die Weiterentwicklung der Klassenkörpertheorie und Studien zu den L-Funktionen elliptischer Kurven.\nKronecker (L. Kronecker, 1823-1891) Jüdisch-deutscher Mathematiker. Leistete Beiträge zur Theorie elliptischer Funktionen und zur Zahlentheorie. Er ist auch dafür bekannt, eine arithmetische Fundierung der Mathematik vorzuschlagen, aber seine stark subjektive Persönlichkeit verlieh seinem Leben ein negatives Image. So übte er ungerechtfertigte Kritik an seinem Kollegen Weierstraß an der Universität Berlin und behinderte die Anstellung von Cantor.\nHilbert (D. Hilbert, 1862-1943) Deutscher Mathematiker. Hinterließ gigantische Spuren in allen Bereichen der Mathematik, einschließlich der Invariantentheorie, der algebraischen Zahlentheorie und der Grundlagen der Mathematik. Die 23 Probleme, die er auf dem Internationalen Mathematikerkongress in Paris (1900) vorschlug, hatten einen großen Einfluss auf die Entwicklung der Mathematik.\nRiemann (B. Riemann, 1826-1866) Deutscher Mathematiker. Erbrachte bedeutende Leistungen, die die Grundlagen der Mathematik betrafen, wie etwa das Konzept der Riemannschen Fläche in der Theorie komplexer Funktionen und die Riemannsche Geometrie.\nFaltings (G. Faltings, 1954-) Deutscher Mathematiker. Löste 1983 die Mordell-Vermutung.\nWiles (A. Wiles, 1953-) In Großbritannien geborener Mathematiker. Eine führende Persönlichkeit auf diesem Gebiet, der große Beiträge durch seine Forschungen zur Hauptvermutung der Iwasawa-Theorie und zur Birch-und-Swinnerton-Dyer-Vermutung leistete.\nQuellenangaben Der große Satz von Fermat wurde gelöst! Vom Beweis Eulers bis zu dem von Wiles (Kodansha)\n","date":"2022-09-22T23:06:37+09:00","image":"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_hu9ac53943fe4f64bfe30a56c18c498d11_667839_120x120_fill_box_smart1_3.png","permalink":"http://kenji.blog/de/p/die-grossen-mathematiker/","title":"Die großen Mathematiker"},{"content":"Fenstertitel auflisten Hier erfahren Sie, wie Sie mit PowerShell die Titel der aktuell geöffneten Fenster auflisten können.\n1 Get-Process|where{$_.mainWindowTItle}|Select-Object MainWindowTitle Ausgabebeispiel\n1 2 3 4 5 6 7 8 9 MainWindowTitle --------------- Windows PowerShell Internet Explorer Unbenannt - Paint Unbenannt - Editor Task-Manager Windows-Eingabeumgebung Dokument - WordPad ","date":"2022-09-20T17:03:15+09:00","image":"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_huc312ccf5dbdb1b6edae5dc06174466bf_18265_120x120_fill_box_smart1_3.png","permalink":"http://kenji.blog/de/p/fenstertitel-auflisten/","title":"Fenstertitel auflisten"},{"content":"Schnelles Stapellöschen von Großen Ordnern Beim Löschen großer Ordner im Explorer ist die Geschwindigkeit langsam, da der Inhalt des Ordners vor der Ausführung des Löschvorgangs zunächst vollständig durchsucht wird. Wenn Sie den Ordner mit einem Befehl wie unten löschen, werden Suche und Löschung gleichzeitig ausgeführt, sodass große Ordner schnell gelöscht werden können.\nNavigieren Sie in der Eingabeaufforderung zur Hierarchie des Zielordners. Führen Sie DEL /F /Q /S Ordnername \u0026gt; NUL aus. Führen Sie RMDIR /Q /S Ordnername aus. ","date":"2022-09-20T16:04:02+09:00","image":"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_hu0a77dc7478cd7b69f58fbada7141acfe_6495_120x120_fill_box_smart1_3.png","permalink":"http://kenji.blog/de/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/","title":"Schnelles Stapellöschen von Großen Ordnern"},{"content":"Salesforce Chatter Alles Löschen Befehl Dies ist ein Befehl, um alle Beiträge und Anhänge in Salesforce Chatter zu löschen. Öffnen Sie die Developer Console, wählen Sie im Menü Debug die Option \u0026ldquo;Open Execute Anonymous Window\u0026rdquo;, fügen Sie den folgenden Code ein und führen Sie ihn aus. Ich persönlich verwende dies, wenn die Speicherkapazität der Organisation knapp wird.\n1 2 3 4 5 6 delete [select id from FeedItem]; delete [select id from FeedAttachment]; delete [select id from ContentDocument]; // Papierkorb leeren database.emptyRecycleBin([select id from ContentDocument where IsDeleted = true ALL ROWS]); ","date":"2022-09-19T21:59:14+09:00","image":"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_hu1e12ce6e6e64d4f046faca027a6e75ab_14487_120x120_fill_box_smart1_3.png","permalink":"http://kenji.blog/de/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/","title":"Salesforce Chatter Alles Löschen Befehl"},{"content":"Dies ist eine Sammlung von kleinen Tricks für den alltäglichen Gebrauch unter Windows. Ich würde mich freuen, wenn Windows-Anfänger dies lesen. Es ist für Windows 11 gedacht, aber ich denke, viele davon können auch unter Windows 10 verwendet werden.\nFenster schließen Alt + F4 während das Fenster aktiv ist Ctrl + W während das Fenster aktiv ist. Schließt den Tab oder das Fenster (nur bei unterstützten Anwendungen) Doppelklick auf das Symbol links in der Titelleiste des Fensters Klick auf das × in der Titelleiste des Fensters Desktop anzeigen Win + D. Zweimaliges Drücken kehrt zum ursprünglichen Fensterzustand zurück. Nützlich, wenn Sie den Desktop nur für einen Moment sehen möchten. Win + M. Alle Anwendungen minimieren. Zweimaliges Drücken macht dies nicht rückgängig. Spracheingabe Win + H. Startet die Spracheingabe. Um die Spracheingabe zu beenden, drücken Sie Esc oder erneut Win + H. Klassisches Rechtsklick-Menü im Explorer anzeigen Shift + F10 oder die Anwendungstaste drücken. Die Anwendungstaste befindet sich unten rechts auf der Tastatur. Bereich auswählen und Bildschirm aufnehmen Mit Win + Shift + S können Sie einen Bereich auswählen und den Bildschirm aufnehmen. Mit Win + Print Screen oder einfach Print Screen können Sie den gesamten Bildschirm aufnehmen. (Wenn Sie Win hinzufügen, wird das aufgenommene Bild in C:\\Users\\Benutzername\\Pictures\\Screenshots gespeichert.) Mit Alt + Print Screen können Sie das aktuelle Fenster aufnehmen. In der Taskleiste angeheftete Apps starten Mit Win + Zifferntaste können Sie in der Taskleiste angeheftete Apps starten.\nZum Beispiel startet Win + 1 die erste App von links in der Taskleiste. Mit Win + T können Sie den Fokus auf die Taskleistensymbole verschieben. Durch mehrmaliges Drücken von Win + T oder mit ← oder → können Sie die Auswahl verschieben und die ausgewählte App mit der Enter -Taste starten. Vergrößern/Verkleinern Win + + startet die Windows-Bildschirmlupe. Weiterhin können Sie mit Win + + oder - den Bildschirm vergrößern oder verkleinern. Im Editor oder Browser können Sie mit Ctrl + + oder - vergrößern oder verkleinern (nur bei unterstützten Apps). Windows sperren Win + L Ctrl + Alt + Del → Space oder Enter Windows herunterfahren Wenn der Desktop mit Win + M oder Win + D angezeigt wird oder die Taskleiste mit Win + T oder Win + B aktiv ist, drücken Sie Alt + F4, woraufhin der folgende Dialog angezeigt wird. Stellen Sie sicher, dass \u0026ldquo;Herunterfahren\u0026rdquo; ausgewählt ist, und drücken Sie Enter. Win + R → Alt + F4 → Alt + F4 ist ebenfalls möglich. Mit Win + X → U → U können Sie herunterfahren. Sie können herunterfahren, indem Sie shutdown /s /t 0 in die Eingabeaufforderung oder den \u0026ldquo;Ausführen\u0026rdquo;-Dialog (Win + R) eingeben. Das Hinzufügen von /f erzwingt das Herunterfahren. Windows neu starten Wenn der Desktop mit Win + M oder Win + D angezeigt wird oder die Taskleiste mit Win + T oder Win + B aktiv ist, drücken Sie Alt + F4, woraufhin der folgende Dialog angezeigt wird. Drücken Sie einmal ↓, wählen Sie \u0026ldquo;Neu starten\u0026rdquo; und drücken Sie Enter. Win + R → Alt + F4 → Alt + F4 ist ebenfalls möglich. Mit Win + X → U → R können Sie neu starten. Mit shutdown /r /t 0 können Sie neu starten. Das Hinzufügen von /f erzwingt den Neustart. Windows in den Energiesparmodus versetzen (Standby) Wenn der Desktop mit Win + M oder Win + D angezeigt wird oder die Taskleiste mit Win + T oder Win + B aktiv ist, drücken Sie Alt + F4, woraufhin der folgende Dialog angezeigt wird. Drücken Sie einmal ↑, wählen Sie \u0026ldquo;Energie sparen\u0026rdquo; und drücken Sie Enter. Win + R → Alt + F4 → Alt + F4 ist ebenfalls möglich. Sie können den Ruhezustand aktivieren, indem Sie rundll32.exe powrprof.dll,SetSuspendState in Win + R oder in der Eingabeaufforderung eingeben. Bei Windows abmelden (Logoff) Wenn der Desktop mit Win + M oder Win + D angezeigt wird oder die Taskleiste mit Win + T oder Win + B aktiv ist, drücken Sie Alt + F4, woraufhin der folgende Dialog angezeigt wird. Drücken Sie zweimal ↑, wählen Sie \u0026ldquo;Abmelden\u0026rdquo; und drücken Sie Enter. Win + R → Alt + F4 → Alt + F4 ist ebenfalls möglich. Win + X → U → I Ctrl + Alt + Del → 2 mal Tab oder 2 mal ↓ → Enter oder Space Mit logoff können Sie sich abmelden. Fenster mit der Tastatur verschieben Win + ← : Nach links verschieben Win + → : Nach rechts verschieben Win + ↑ : Nach oben verschieben/maximieren Win + ↓ : Nach unten verschieben/minimieren Win + Shift + ← oder → : Zwischen mehreren Monitoren verschieben Win + Alt + ← oder → oder ↑ oder ↓ : Fenster ohne Maximieren/Minimieren verschieben Im nicht minimierten Zustand Alt + Space, dann M und anschließend mit den Pfeiltasten verschieben.\n※ Da das Fenster dem Mauszeiger folgt, kann es auch gerettet werden, wenn es außerhalb des Bildschirms angezeigt wird. Prozesse im Task-Manager beenden Mit Ctrl + Shift + Esc können Sie den Task-Manager starten. Mit Ctrl + Tab können Sie zwischen den Tabs wechseln. Nachdem Sie im Tab Details auf Tab gedrückt haben, können Sie durch Eingabe auf der Tastatur nach dem Prozessnamen (Präfix-Suche) suchen. Während der Prozessname ausgewählt ist, drücken Sie die Delete -Taste gefolgt von der Enter -Taste, um den Prozess zu beenden. Prozesse per Befehl anhand des Prozessnamens beenden Mit taskkill /f /im Prozessname können Sie einen Prozess beenden. Zum Beispiel können Sie mit taskkill /f /im explorer.exe den Explorer beenden. Mehrere Instanzen desselben Programms über das Taskleistensymbol starten Wenn Sie in der Taskleiste bei gedrückter Shift -Taste links klicken, können Sie mehrere Instanzen desselben Programms starten. (Nur für Apps, die dies unterstützen) Programme als Administrator starten Wenn Sie beim Starten eines Programms Ctrl + Shift gedrückt halten, wird das Programm mit Administratorrechten gestartet. Explorer starten Mit Win + E können Sie den Explorer starten. Mit Win + R rufen Sie \u0026ldquo;Ausführen\u0026rdquo; auf, geben Sie explorer ein und drücken Sie Enter. Mit Ctrl + Shift + N können Sie einen neuen Ordner erstellen. Eingabeaufforderung im aktuell geöffneten Pfad des Explorers öffnen Unter Windows 11 können Sie die Eingabeaufforderung über das Rechtsklick-Menü \u0026ldquo;Terminal\u0026rdquo; starten. Sie können auch cmd in die Adressleiste eingeben und die Enter -Taste drücken, um die Eingabeaufforderung zu starten. Zwischenablage-Verlauf anzeigen Mit Win + V können Sie den Zwischenablage-Verlauf anzeigen. Wenn Sie zuvor kopierten Text oder Bilder auswählen, können Sie diese erneut kopieren. Ausführen Mit Win + R können Sie den Dialog \u0026ldquo;Ausführen\u0026rdquo; starten. Im Folgenden werden einige Befehle vorgestellt, die Sie im Dialog \u0026ldquo;Ausführen\u0026rdquo; oder in der Eingabeaufforderung ausführen können.\nEdge öffnen Geben Sie msedge ein und drücken Sie Enter Internet Explorer 11 (IE11) öffnen Geben Sie powershell.exe -Command \u0026quot;(New-Object -ComObject InternetExplorer.Application).Visible = $true\u0026quot; ein und drücken Sie Enter Terminal öffnen Geben Sie wt ein und drücken Sie Enter Systemsteuerung öffnen Geben Sie control ein und drücken Sie Enter Kann auch mit explorer.exe shell:::{26EE0668-A00A-44D7-9371-BEB064C98683} geöffnet werden. Editor (Notepad) starten Geben Sie notepad ein und drücken Sie Enter Taschenrechner starten Geben Sie calc ein und drücken Sie Enter Paint starten Geben Sie mspaint ein und drücken Sie Enter PowerShell starten Geben Sie powershell ein und drücken Sie Enter Visual Studio Code starten Geben Sie code ein und drücken Sie Enter Excel starten Geben Sie excel ein und drücken Sie Enter\n※ Nur wenn Excel installiert ist. Word öffnen Geben Sie winword ein und drücken Sie Enter\n※ Nur wenn Word installiert ist. PowerPoint öffnen Geben Sie powerpnt ein und drücken Sie Enter\n※ Nur wenn PowerPoint installiert ist. Systemkonfiguration öffnen Geben Sie msconfig ein und drücken Sie Enter Systemeigenschaften öffnen Geben Sie sysdm.cpl ein und drücken Sie Enter Windows-Versionsinformationen öffnen Geben Sie winver ein und drücken Sie Enter Bildschirmtastatur öffnen Geben Sie osk ein und drücken Sie Enter WordPad öffnen Geben Sie wordpad oder write ein und drücken Sie Enter Registrierungs-Editor öffnen Geben Sie regedit ein und drücken Sie Enter Programme und Features öffnen Geben Sie explorer.exe shell:::{7b81be6a-ce2b-4676-a29e-eb907a5126c5} ein und drücken Sie Enter Tastatureigenschaften öffnen Geben Sie explorer.exe shell:::{725BE8F7-668E-4C7B-8F90-46BDB0936430} ein und drücken Sie Enter Mauseigenschaften öffnen Geben Sie explorer.exe shell:::{6C8EEC18-8D75-41B2-A177-8831D59D2D50} ein und drücken Sie Enter Sound öffnen Geben Sie explorer.exe shell:::{F2DDFC82-8F12-4CDD-B7DC-D4FE1425AA4D} ein und drücken Sie Enter Benutzerkonten öffnen Geben Sie explorer.exe shell:::{60632754-c523-4b62-b45c-4172da012619} ein und drücken Sie Enter Text der Standard-Meldungsbox kopieren Mit Ctrl + C können Sie den Text einer Standard-Meldungsbox kopieren. Wenn Sie die obige Meldungsbox kopieren, wird Folgendes in die Zwischenablage kopiert. 1 2 3 4 5 6 7 [Window Title] WordPad [Main Instruction] Möchten Sie die Änderungen an Dokument speichern? [Speichern (S)] [Nicht speichern (N)] [Abbrechen] Ausgabe der Eingabeaufforderung in der Zwischenablage speichern Durch Hinzufügen von | clip (Pipe + clip) hinter einen Befehl, wie z.B. echo \u0026quot;hello\u0026quot; | clip, können Sie die Standardausgabe in die Zwischenablage kopieren.\nOrdnerhierarchie als Text ausgeben In der Eingabeaufforderung können Sie mit dem Befehl tree die Ordnerhierarchie als Baumstruktur ausgeben.\nAusgabebeispiel\n1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 C:. ├─.idea │ └─libraries ├─binaryeditorbz ├─blog │ ├─archetypes │ ├─content │ ├─data │ ├─layouts │ ├─static │ └─themes │ └─PaperMod │ ├─.git │ │ ├─branches │ │ ├─hooks │ │ ├─info │ │ ├─logs │ │ │ └─refs │ │ │ ├─heads │ │ │ └─remotes │ │ │ └─origin │ │ ├─objects │ │ │ ├─info │ │ │ └─pack │ │ └─refs │ │ ├─heads │ │ ├─remotes │ │ │ └─origin │ │ └─tags │ ├─.github │ │ ├─ISSUE_TEMPLATE │ │ └─workflows │ ├─assets │ │ ├─css │ │ │ ├─common │ │ │ ├─core │ │ │ ├─extended │ │ │ ├─hljs │ │ │ └─includes │ │ └─js │ ├─i18n │ ├─images │ └─layouts │ ├─partials │ │ └─templates │ ├─shortcodes │ └─_default │ └─_markup (und so weiter) Referenz Windows-Tastenkombinationen ","date":"2022-09-18T23:49:29+09:00","image":"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_hu13a9ab529476901cdea6aea124c07798_315814_120x120_fill_box_smart1_3.png","permalink":"http://kenji.blog/de/p/windows-tastenkombinationen-und-kleine-tricks/","title":"Windows-Tastenkombinationen und kleine Tricks"},{"content":"Ich werde die Bildbearbeitungssoftware paint.net vorstellen, die ich oft bei meiner Entwicklungsarbeit verwende.\nNützliche Punkte, die mit dem Windows-Standard-Paint nicht möglich sind Kann Transparenz und Deckkraft handhaben Kann automatische Auswahlen für komplexe Bereichsformen durchführen Kann mit Ebenen arbeiten Kann Tonwertkorrektur, Helligkeit, Kontrast usw. anpassen Kann verschiedene Effekte anwenden (Unschärfe, Verzerrung, Rauschen usw.) Weitere Merkmale Kostenlose Nutzung Betrieb ist relativ ressourcenschonend Intuitiv zu bedienen und hat nicht viele Eigenheiten Japanisch (mehrsprachige Unterstützung) Es ist eine hochfunktionale, aber einfach zu bedienende Software. Ich selbst beherrsche noch nicht alle Funktionen.\nHier installieren https://www.getpaint.net/download.html\nWenn Sie sich für die kostenlose Version entscheiden, klicken Sie bitte auf den unten rot umrandeten Teil des Links.\nEs scheint, dass die Installation über den Microsoft Store kostenpflichtig wird, aber dafür automatische Updates ermöglicht. Auch bei der kostenlosen Version werden Sie über die neuesten Updates informiert, sodass Sie problemlos aktualisieren können.\n","date":"2022-09-14T19:33:31+09:00","image":"http://kenji.blog/p/paint.net%E3%81%AE%E9%AD%85%E5%8A%9B/img_hu407db422a0531b2d8a8b6fa0ee25fc6c_64699_120x120_fill_box_smart1_3.png","permalink":"http://kenji.blog/de/p/paint.net%E3%81%AE%E9%AD%85%E5%8A%9B/","title":"Der Charme von paint.net"},{"content":"Um eine benutzerdefinierte Domain in einem Github-Repository einzurichten, müssen Sie die DNS-Einstellungen Ihrer Domain ändern. Hier erklären wir dies unter der Annahme, dass Sie Ihre Domain mit Onamae.com verwalten. Sie können ähnliche Einstellungen vornehmen, indem Sie die A-Einträge bei anderen Registraren überschreiben.\nDNS-Einstellungen in Onamae.com ändern Um die DNS-Einstellungen Ihrer Domain zu ändern, loggen Sie sich in den Verwaltungsbildschirm von Onamae.com ein. Gehen Sie nach dem Login zum Domain-Verwaltungsbildschirm. Wenn Sie sich auf dem Domain-Verwaltungsbildschirm befinden, ändern Sie die DNS-Einstellungen. Um die DNS-Einstellungen zu ändern, konfigurieren Sie sie wie folgt:\nGreifen Sie auf https://www.onamae.com/ zu und klicken Sie auf „Onamae.com Navi Login“ Geben Sie Ihre „Onamae-ID (Mitglieds-ID)“ und Ihr „Passwort“ ein und klicken Sie auf den Login-Button Klicken Sie auf „Nameserver-Einstellungen“ Klicken Sie auf „Domain-DNS-Einstellungen“ Wählen Sie die Domain aus, die Sie einrichten möchten, und klicken Sie auf „Weiter“ Klicken Sie rechts neben „DNS-Eintrags-Einstellungen verwenden“ auf „Einstellen“ Wählen Sie A für TYPE, geben Sie 3600 für TTL und „185.199.108.153“ für VALUE ein und klicken Sie dann auf „Hinzufügen“ Fügen Sie ähnlich wie bei 7. auch für „185.199.109.153“, „185.199.110.153“ und „185.199.111.153“ hinzu Vergewissern Sie sich, dass das Kontrollkästchen unter „Bestätigung der Nameserver-Änderung für DNS-Eintrags-Einstellungen“ aktiviert ist, und klicken Sie auf „Zum Einstellungsbildschirm gehen“ Wenn ein Bildschirm mit der Meldung „Um unbeabsichtigte Änderungen der DNS-Einstellungen zu verhindern“ angezeigt wird, klicken Sie auf „Nicht einstellen“ (wählen Sie nach Bedarf aus) Überprüfen Sie die Einstellungsdetails und klicken Sie auf „Einstellen“ Damit sind die DNS-Einstellungen abgeschlossen. Es kann bis zu etwa 72 Stunden dauern, bis die Übernahme abgeschlossen ist. Wenn dies nach 72 Stunden nicht der Fall ist, versuchen Sie bitte, den Support von Onamae.com zu kontaktieren. Um zu überprüfen, ob die Einstellungen in Ihrer lokalen Umgebung übernommen wurden, versuchen Sie, den folgenden Befehl auszuführen. Bitte ersetzen Sie den Teil example.com durch die Domain, die Sie überprüfen möchten.\nFür Linux, Mac 1 dig example.com +noall +answer -t A Wenn das Ergebnis wie folgt aussieht, wurde die Einstellung übernommen.\n1 2 3 4 example.com. 0 IN A 185.199.108.153 example.com. 0 IN A 185.199.109.153 example.com. 0 IN A 185.199.110.153 example.com. 0 IN A 185.199.111.153 Für Windows 1 nslookup -q=a example.com 8.8.8.8 Wenn das Ergebnis wie folgt aussieht, wurde die Einstellung übernommen.\n1 2 3 4 5 6 7 8 9 Server: dns.google Address: 8.8.8.8 Nicht autorisierende Antwort: Name: example.com Addresses: 185.199.108.153 185.199.109.153 185.199.110.153 185.199.111.153 Eine benutzerdefinierte Domain in einem Github-Repository einrichten Öffnen Sie die Repository-Seite und klicken Sie auf Settings Klicken Sie auf Pages Wenn Sie den Quellcode des Repositories wie besehen veröffentlichen, wählen Sie unter Source „Deploy from a branch“. Wenn Sie den Quellcode erstellen (z. B. HUGO), wählen Sie „GitHub Actions“. Wählen Sie in Branch den zu veröffentlichenden Branch aus und klicken Sie auf Save Geben Sie die von Ihnen erhaltene Domain unter Custom domain ein und klicken Sie auf Save. Aktivieren Sie bei Bedarf das Kontrollkästchen „Enforce HTTPS“, um die HTTPS-Unterstützung zu aktivieren [PR] ","date":"2022-09-13T01:16:40+09:00","image":"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_hu8f3e107f91a1c645c9aa316280652835_20372_120x120_fill_box_smart1_3.png","permalink":"http://kenji.blog/de/p/so-richten-sie-eine-benutzerdefinierte-domain-in-einem-github-repository-ein/","title":"So richten Sie eine benutzerdefinierte Domain in einem Github-Repository ein"},{"content":"Es ist nützlich, den Befehl dotnet.exe bereitzuhalten, da er sogar das Erstellen einfacher Programme ermöglicht.\nInstallation des .NET SDK Da dotnet.exe im .NET SDK enthalten ist, installieren Sie zunächst das .NET SDK. Starten Sie cmd.exe mit Administratorrechten und führen Sie den folgenden Befehl aus.\n1 winget install Microsoft.DotNet.SDK.6 .gitignore generieren Der Befehl zum Generieren einer .gitignore mit dotnet.exe lautet wie folgt.\n1 dotnet new gitignore Die generierte .gitignore lautet wie folgt.\n1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 ## Ignore Visual Studio temporary files, build results, and ## files generated by popular Visual Studio add-ons. ## ## Get latest from https://github.com/github/gitignore/blob/master/VisualStudio.gitignore # User-specific files *.rsuser *.suo *.user *.userosscache *.sln.docstates # User-specific files (MonoDevelop/Xamarin Studio) *.userprefs # Mono auto generated files mono_crash.* # Build results [Dd]ebug/ [Dd]ebugPublic/ [Rr]elease/ [Rr]eleases/ x64/ x86/ [Ww][Ii][Nn]32/ [Aa][Rr][Mm]/ [Aa][Rr][Mm]64/ bld/ [Bb]in/ [Oo]bj/ [Ll]og/ [Ll]ogs/ # Visual Studio 2015/2017 cache/options directory .vs/ # Uncomment if you have tasks that create the project\u0026#39;s static files in wwwroot #wwwroot/ # Visual Studio 2017 auto generated files Generated\\ Files/ # MSTest test Results [Tt]est[Rr]esult*/ [Bb]uild[Ll]og.* # NUnit *.VisualState.xml TestResult.xml nunit-*.xml # Build Results of an ATL Project [Dd]ebugPS/ [Rr]eleasePS/ dlldata.c # Benchmark Results BenchmarkDotNet.Artifacts/ # .NET project.lock.json project.fragment.lock.json artifacts/ # Tye .tye/ # ASP.NET Scaffolding ScaffoldingReadMe.txt # StyleCop StyleCopReport.xml # Files built by Visual Studio *_i.c *_p.c *_h.h *.ilk *.meta *.obj *.iobj *.pch *.pdb *.ipdb *.pgc *.pgd *.rsp *.sbr *.tlb *.tli *.tlh *.tmp *.tmp_proj *_wpftmp.csproj *.log *.vspscc *.vssscc .builds *.pidb *.svclog *.scc # Chutzpah Test files _Chutzpah* # Visual C++ cache files ipch/ *.aps *.ncb *.opendb *.opensdf *.sdf *.cachefile *.VC.db *.VC.VC.opendb # Visual Studio profiler *.psess *.vsp *.vspx *.sap # Visual Studio Trace Files *.e2e # TFS 2012 Local Workspace $tf/ # Guidance Automation Toolkit *.gpState # ReSharper is a .NET coding add-in _ReSharper*/ *.[Rr]e[Ss]harper *.DotSettings.user # TeamCity is a build add-in _TeamCity* # DotCover is a Code Coverage Tool *.dotCover # AxoCover is a Code Coverage Tool .axoCover/* !.axoCover/settings.json # Coverlet is a free, cross platform Code Coverage Tool coverage*.json coverage*.xml coverage*.info # Visual Studio code coverage results *.coverage *.coveragexml # NCrunch _NCrunch_* .*crunch*.local.xml nCrunchTemp_* # MightyMoose *.mm.* AutoTest.Net/ # Web workbench (sass) .sass-cache/ # Installshield output folder [Ee]xpress/ # DocProject is a documentation generator add-in DocProject/buildhelp/ DocProject/Help/*.HxT DocProject/Help/*.HxC DocProject/Help/*.hhc DocProject/Help/*.hhk DocProject/Help/*.hhp DocProject/Help/Html2 DocProject/Help/html # Click-Once directory publish/ # Publish Web Output *.[Pp]ublish.xml *.azurePubxml # Note: Comment the next line if you want to checkin your web deploy settings, # but database connection strings (with potential passwords) will be unencrypted *.pubxml *.publishproj # Microsoft Azure Web App publish settings. Comment the next line if you want to # checkin your Azure Web App publish settings, but sensitive information contained # in these scripts will be unencrypted PublishScripts/ # NuGet Packages *.nupkg # NuGet Symbol Packages *.snupkg # The packages folder can be ignored because of Package Restore **/[Pp]ackages/* # except build/, which is used as an MSBuild target. !**/[Pp]ackages/build/ # Uncomment if necessary however generally it will be regenerated when needed #!**/[Pp]ackages/repositories.config # NuGet v3\u0026#39;s project.json files produces more ignorable files *.nuget.props *.nuget.targets # Microsoft Azure Build Output csx/ *.build.csdef # Microsoft Azure Emulator ecf/ rcf/ # Windows Store app package directories and files AppPackages/ BundleArtifacts/ Package.StoreAssociation.xml _pkginfo.txt *.appx *.appxbundle *.appxupload # Visual Studio cache files # files ending in .cache can be ignored *.[Cc]ache # but keep track of directories ending in .cache !?*.[Cc]ache/ # Others ClientBin/ ~$* *~ *.dbmdl *.dbproj.schemaview *.jfm *.pfx *.publishsettings orleans.codegen.cs # Including strong name files can present a security risk # (https://github.com/github/gitignore/pull/2483#issue-259490424) #*.snk # Since there are multiple workflows, uncomment next line to ignore bower_components # (https://github.com/github/gitignore/pull/1529#issuecomment-104372622) #bower_components/ # RIA/Silverlight projects Generated_Code/ # Backup \u0026amp; report files from converting an old project file # to a newer Visual Studio version. Backup files are not needed, # because we have git ;-) _UpgradeReport_Files/ Backup*/ UpgradeLog*.XML UpgradeLog*.htm ServiceFabricBackup/ *.rptproj.bak # SQL Server files *.mdf *.ldf *.ndf # Business Intelligence projects *.rdl.data *.bim.layout *.bim_*.settings *.rptproj.rsuser *- [Bb]ackup.rdl *- [Bb]ackup ([0-9]).rdl *- [Bb]ackup ([0-9][0-9]).rdl # Microsoft Fakes FakesAssemblies/ # GhostDoc plugin setting file *.GhostDoc.xml # Node.js Tools for Visual Studio .ntvs_analysis.dat node_modules/ # Visual Studio 6 build log *.plg # Visual Studio 6 workspace options file *.opt # Visual Studio 6 auto-generated workspace file (contains which files were open etc.) *.vbw # Visual Studio LightSwitch build output **/*.HTMLClient/GeneratedArtifacts **/*.DesktopClient/GeneratedArtifacts **/*.DesktopClient/ModelManifest.xml **/*.Server/GeneratedArtifacts **/*.Server/ModelManifest.xml _Pvt_Extensions # Paket dependency manager .paket/paket.exe paket-files/ # FAKE - F# Make .fake/ # CodeRush personal settings .cr/personal # Python Tools for Visual Studio (PTVS) __pycache__/ *.pyc # Cake - Uncomment if you are using it # tools/** # !tools/packages.config # Tabs Studio *.tss # Telerik\u0026#39;s JustMock configuration file *.jmconfig # BizTalk build output *.btp.cs *.btm.cs *.odx.cs *.xsd.cs # OpenCover UI analysis results OpenCover/ # Azure Stream Analytics local run output ASALocalRun/ # MSBuild Binary and Structured Log *.binlog # NVidia Nsight GPU debugger configuration file *.nvuser # MFractors (Xamarin productivity tool) working folder .mfractor/ # Local History for Visual Studio .localhistory/ # BeatPulse healthcheck temp database healthchecksdb # Backup folder for Package Reference Convert tool in Visual Studio 2017 MigrationBackup/ # Ionide (cross platform F# VS Code tools) working folder .ionide/ # Fody - auto-generated XML schema FodyWeavers.xsd ## ## Visual studio for Mac ## # globs Makefile.in *.userprefs *.usertasks config.make config.status aclocal.m4 install-sh autom4te.cache/ *.tar.gz tarballs/ test-results/ # Mac bundle stuff *.dmg *.app # content below from: https://github.com/github/gitignore/blob/master/Global/macOS.gitignore # General .DS_Store .AppleDouble .LSOverride # Icon must end with two \\r Icon # Thumbnails ._* # Files that might appear in the root of a volume .DocumentRevisions-V100 .fseventsd .Spotlight-V100 .TemporaryItems .Trashes .VolumeIcon.icns .com.apple.timemachine.donotpresent # Directories potentially created on remote AFP share .AppleDB .AppleDesktop Network Trash Folder Temporary Items .apdisk # content below from: https://github.com/github/gitignore/blob/master/Global/Windows.gitignore # Windows thumbnail cache files Thumbs.db ehthumbs.db ehthumbs_vista.db # Dump file *.stackdump # Folder config file [Dd]esktop.ini # Recycle Bin used on file shares $RECYCLE.BIN/ # Windows Installer files *.cab *.msi *.msix *.msm *.msp # Windows shortcuts *.lnk # JetBrains Rider .idea/ *.sln.iml ## ## Visual Studio Code ## .vscode/* !.vscode/settings.json !.vscode/tasks.json !.vscode/launch.json !.vscode/extensions.json Es gibt viele Dateien für Visual Studio, aber es enthält auch Elemente, die im Allgemeinen nicht im git verwaltet werden müssen, wie z. B. die .DS_Store von Mac.\nReferenzseiten Installieren von .NET unter Windows ","date":"2022-09-13T00:25:12+09:00","image":"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_huc51d4f51d02497db3544f94dd1182dc1_19208_120x120_fill_box_smart1_3.png","permalink":"http://kenji.blog/de/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/","title":"Generieren einer .gitignore mit dem dotnet-Befehl"},{"content":"Als ich mich an meine Lieblingsspiele erinnerte, bestand die Liste schließlich nur aus Klassikern. Da es sich um viele ältere Spiele handelt, probieren Sie sie bitte aus, falls Sie sie noch nicht gespielt haben.\nGame Boy Der ursprüngliche Game Boy ist eine Handheld-Konsole, die 1989 von Nintendo veröffentlicht wurde. Später wurden Nachfolger wie der Game Boy Color und der Game Boy Advance veröffentlicht.\n① Sa・Ga2: Hihou Densetsu Ein RPG-Spiel, das 1990 von Square (jetzt Square Enix) veröffentlicht wurde. Es ist eine Geschichte, in der man in verschiedenen Leveln eifrig verborgene Schätze sammelt. Es war das erste RPG-Spiel, das ich gespielt habe.\n② Kirby\u0026rsquo;s Dream Land Ein Actionspiel, das 1992 von Nintendo veröffentlicht wurde. Entwickelt von HAL Laboratory. Ein Spiel, bei dem man vorankommt, indem man Gegner einsaugt oder durch das Einsaugen von Luft schwebt. Die Musik und Soundeffekte sind ebenfalls sehr gut gemacht, was es zu einem sehr rhythmischen Spiel macht.\n③ Pokémon Rot und Grün Ein RPG-Spiel, das 1996 von Nintendo veröffentlicht wurde. Entwickelt von Nintendo EAD, Game Freak und Creatures. Danach wurde es als Anime adaptiert und gewann explosionsartig an Popularität, aber ich habe nur diese erste Generation gespielt.\nSuper Famicom Eine Heimkonsole, die 1990 von Nintendo veröffentlicht wurde. Im Ausland auch als SNES (Super Nintendo Entertainment System) bekannt.\n④ Super Mario Kart Eine Software für das Super Famicom, die 1992 von Nintendo veröffentlicht wurde. Ein Rennspiel, bei dem man um den Platz kämpft, während man Gegner durch das Werfen von Panzern und Bananen behindert. Ich erinnere mich daran, dass ich es zusammen mit meiner Familie und Freunden gespielt habe.\n⑤ Dragon Quest V: Die Hand der Himmelsbraut Ein RPG-Spiel, das 1992 von Enix veröffentlicht wurde. Es ist ein Spiel, das auch Elemente der Wahl einer Heiratspartnerin und der Rekrutierung besiegter Monster als Verbündete enthält. Ich habe es intensiv gespielt, bis ich es geschafft habe, mehrere Metallschleime (Hagure Metal) zu rekrutieren.\n⑥ Final Fantasy V Ein RPG-Spiel, das 1992 von Square veröffentlicht wurde. Es hat einen Wiederspielwert, bei dem man Jobs (Berufe) wählt und Fähigkeiten meistert. Ähnlich wie bei Dragon Quest erinnere ich mich daran, wie ich endlos in Höhlen aufgelevelt habe.\n⑦ Torneko\u0026rsquo;s Great Adventure: Mystery Dungeon Ein Roguelike-Spiel, das 1993 von Chunsoft veröffentlicht wurde. Der Vorgänger der Mystery Dungeon-Serie. Sein Merkmal ist, dass sich die Form des Dungeons jedes Mal zufällig ändert. Der Slogan lautet \u0026ldquo;Das RPG, das man 1000 Mal spielen kann\u0026rdquo;.\n⑧ Mystery Dungeon 2: Shiren the Wanderer Ein Roguelike-Spiel, das 1995 von Chunsoft veröffentlicht wurde. Eine Fortsetzung von \u0026ldquo;Torneko\u0026rsquo;s Great Adventure\u0026rdquo; aus der Mystery Dungeon-Serie. Es gibt Geschäfte im Dungeon, in denen man Gegenstände kaufen kann. (Wenn man das Geschäft verlässt, ohne zu bezahlen, wird der Ladenbesitzer einen verfolgen.)\n⑨ EarthBound (MOTHER 2) Das zweite Spiel der MOTHER-Serie, das 1994 von Nintendo veröffentlicht wurde. Entwickelt von Ape und HAL Laboratory. Später, im Jahr 2006, wurde MOTHER 3 veröffentlicht. Es ist ein Werk, das von Shigesato Itoi produziert wurde, und es ist mit einer einzigartigen Weltanschauung und philosophischen Worten gespickt.\n⑩ The Legend of Zelda: A Link to the Past Ein Action-Adventure-Spiel, das 1991 von Nintendo veröffentlicht wurde. Ein Spiel, in dem man durch das Sammeln verschiedener Gegenstände und das Lösen kleiner Rätsel voranschreitet. Zahlreiche Fortsetzungen wurden danach veröffentlicht. (Referenz)\nNintendo Switch Eine Heimkonsole, die 2017 von Nintendo veröffentlicht wurde.\n⑪ Splatoon 2 Ein Action-Shooter-Spiel, das 2017 von Nintendo veröffentlicht wurde. Ein Spiel, bei dem man mit Tinte Gebiete sichert oder Gegner besiegt, um den Sieg zu erringen. Im Jahr 2022 wurde die Fortsetzung Splatoon 3 veröffentlicht.\n","date":"2022-09-12T19:28:50+09:00","image":"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_120x120_fill_box_smart1_3.png","permalink":"http://kenji.blog/de/p/11-lieblingsspiele/","title":"11 Lieblingsspiele"},{"content":"Der Befehl, um die automatische Generierung von .DS_Store unter macOS zu verhindern, lautet wie folgt. Bitte führen Sie ihn im Terminal aus.\n1 defaults write com.apple.desktopservices DSDontWriteNetworkStores true Starten Sie den Finder neu, nachdem Sie den Befehl ausgeführt haben.\n1 killall Finder Wenn Sie die Einstellungen wiederherstellen möchten, führen Sie bitte den folgenden Befehl aus.\n1 defaults delete com.apple.desktopservices DSDontWriteNetworkStores false Wenn Sie die Einstellungen wie oben beschrieben ändern, starten Sie den Finder neu.\n1 killall Finder ","date":"2022-09-12T16:03:42+09:00","image":"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_hu4b5bbd3b572a7a7eb2cc4ecf633430af_78743_120x120_fill_box_smart1_3.png","permalink":"http://kenji.blog/de/p/befehl-um-die-automatische-generierung-von-ds-store-unter-macos-zu-verhindern/","title":"Befehl, um die automatische Generierung von .DS_Store unter macOS zu verhindern"},{"content":"Wechseln Sie in das Zielverzeichnis und führen Sie den folgenden Befehl aus, um .DS_Store-Dateien einschließlich der in Unterordnern stapelweise zu löschen.\n1 Get-ChildItem . -include \u0026#39;.DS_Store\u0026#39; -Recurse -Force | Remove-Item -Force ","date":"2022-09-12T10:11:42+09:00","image":"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_hu95c0724bd9a903eadf46c7f648acb682_8907_120x120_fill_box_smart1_3.png","permalink":"http://kenji.blog/de/p/.ds_store-stapelweise-l%C3%B6schen-mit-powershell/","title":".DS_Store stapelweise löschen mit PowerShell"},{"content":"Nützliche Shortcodes in HUGO YouTube {{\u0026lt;youtube 123456abc\u0026gt;}}\nTwitter {{\u0026lt;twitter 123456abc\u0026gt;}}\nInstagram {{\u0026lt;instagram 123456abc\u0026gt;}}\nFlickr {{\u0026lt;flickr 123456abc\u0026gt;}}\nVimeo {{\u0026lt;vimeo 123456abc\u0026gt;}}\nAndere Shortcodes\nZusätzliche Anmerkung Um {{\u0026lt; foo \u0026gt;}} auf der Website anzuzeigen, müssen Sie {{\u0026lt;/* foo */\u0026gt;}} schreiben.\n","date":"2022-09-11T22:59:52+09:00","image":"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_hu415dc7e70376ac350673d0366f70ca4b_19909_120x120_fill_box_smart1_3.png","permalink":"http://kenji.blog/de/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/","title":"Nützliche Shortcodes in HUGO"},{"content":"Das Standardlayout zentriert das Bild mit einer Breite von 100 %, aber da es mir manchmal etwas zu groß vorkam, habe ich versucht, das Bild unter dem Titel umfließen zu lassen, und die Breite auf etwa 150px geändert.\nDie Änderungen an den Dateien sind wie folgt.\nblank.css Um Ränder, Bildgröße und Textanzeigezeilen zu ändern, fügen Sie die folgende Beschreibung in blank.css hinzu.\n1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 .entry-content { -webkit-line-clamp: 4; } .entry-footer { text-align: right; } .entry-cover { margin-bottom: initial; text-align: center; } .entry-cover img { border-radius: 4px; display: inline; max-width: 100%; } .post-meta { display: block; text-align: right; } post-entry.css Da ich die Definition in blank.css nicht löschen konnte, habe ich 1 Zeile an der folgenden Stelle in post-entry.css gelöscht.\n1 2 3 4 5 6 .entry-cover img { border-radius: var(--radius); pointer-events: none; /* width: 100%; */ ← Diese Zeile löschen height: auto; } list.html Um das Bildlayout zu ändern, habe ich die folgende Stelle in list.html geändert.\n1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 \u0026lt;article class=\u0026#34;{{ $class }}\u0026#34;\u0026gt; \u0026lt;!-- {{- $isHidden := (site.Params.cover.hidden | default site.Params.cover.hiddenInList) }} --\u0026gt;\u0026lt;!-- Nach unten verschoben --\u0026gt; \u0026lt;!-- {{- partial \u0026#34;cover.html\u0026#34; (dict \u0026#34;cxt\u0026#34; . \u0026#34;IsHome\u0026#34; true \u0026#34;isHidden\u0026#34; $isHidden) }} --\u0026gt;\u0026lt;!-- Nach unten verschoben --\u0026gt; \u0026lt;header class=\u0026#34;entry-header\u0026#34;\u0026gt; \u0026lt;h2\u0026gt; {{- .Title }} {{- if .Draft }}\u0026lt;sup\u0026gt;\u0026lt;span class=\u0026#34;entry-isdraft\u0026#34;\u0026gt;\u0026amp;nbsp;\u0026amp;nbsp;[draft]\u0026lt;/span\u0026gt;\u0026lt;/sup\u0026gt;{{- end }} \u0026lt;/h2\u0026gt; \u0026lt;/header\u0026gt; \u0026lt;div style=\u0026#34;display:flex;\u0026#34;\u0026gt;\u0026lt;!-- Hinzugefügt --\u0026gt; \u0026lt;div style=\u0026#34;max-width:150px;margin:11px 15px 0px 0px;\u0026#34;\u0026gt;\u0026lt;!-- Hinzugefügt --\u0026gt; {{- $isHidden := (site.Params.cover.hidden | default site.Params.cover.hiddenInList) }}\u0026lt;!-- Von oben verschoben --\u0026gt; {{- partial \u0026#34;cover.html\u0026#34; (dict \u0026#34;cxt\u0026#34; . \u0026#34;IsHome\u0026#34; true \u0026#34;isHidden\u0026#34; $isHidden) }}\u0026lt;!-- Von oben verschoben --\u0026gt; \u0026lt;/div\u0026gt;\u0026lt;!-- Hinzugefügt --\u0026gt; \u0026lt;div style=\u0026#34;width:100%;\u0026#34;\u0026gt;\u0026lt;!-- Hinzugefügt --\u0026gt; {{- if (ne (.Param \u0026#34;hideSummary\u0026#34;) true) }} \u0026lt;div class=\u0026#34;entry-content\u0026#34;\u0026gt; \u0026lt;p\u0026gt;{{ .Summary | plainify | htmlUnescape }}{{ if .Truncated }}...{{ end }}\u0026lt;/p\u0026gt; \u0026lt;/div\u0026gt; {{- end }} {{- if not (.Param \u0026#34;hideMeta\u0026#34;) }} \u0026lt;footer class=\u0026#34;entry-footer\u0026#34;\u0026gt; {{- partial \u0026#34;post_meta.html\u0026#34; . -}} \u0026lt;/footer\u0026gt; {{- end }} \u0026lt;a class=\u0026#34;entry-link\u0026#34; aria-label=\u0026#34;post link to {{ .Title | plainify }}\u0026#34; href=\u0026#34;{{ .Permalink }}\u0026#34;\u0026gt;\u0026lt;/a\u0026gt; \u0026lt;/div\u0026gt;\u0026lt;!-- Hinzugefügt --\u0026gt; \u0026lt;/div\u0026gt;\u0026lt;!-- Hinzugefügt --\u0026gt; \u0026lt;/article\u0026gt; Es scheint, dass es nicht wenige ähnliche Anfragen gibt.\nhttps://github.com/adityatelange/hugo-PaperMod/discussions/159#discussioncomment-247844\nEs wäre toll, wenn die offiziellen Entwickler dies ebenfalls unterstützen könnten.\n","date":"2022-09-11T18:50:40+09:00","image":"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_hu42e770ebe6b22298fe9d1751d1191316_24734_120x120_fill_box_smart1_3.png","permalink":"http://kenji.blog/de/p/bildlayout-in-papermod-%C3%A4ndern/","title":"Bildlayout in PaperMod ändern"},{"content":"Einführung Das PaperMod-Theme unterstützt Twitter Card. Die Einstellungen für Twitter Card müssen jedoch in der config.toml oder in den Header-Informationen der *.md jedes Artikels geschrieben werden. Wenn Sie es sowohl in jedem Artikel als auch in der config.toml konfigurieren, haben die Header-Informationen jedes Artikels Vorrang.\nKonfiguration config.toml Fügen Sie in config.toml ein Element namens images unter [params] hinzu. Beschreiben Sie in images den Pfad des Bildes, das auf Twitter Card angezeigt werden soll. Wenn Sie das Bild im Ordner static platzieren, reicht es aus, nur den Dateinamen anzugeben.\n1 2 [params] images = [\u0026#34;twitter_card.jpg\u0026#34;] Ordnerstruktur\n1 2 3 4 5 6 7 8 9 10 root │ config.toml (Hier schreiben) ├─content │ └─posts │ └─Artikelordner │ │ index.md (Hier schreiben) │ └─images │ cover.png (Hier platzieren) └─static twitter_card.jpg (Hier platzieren) Header-Informationen jedes Artikels Fügen Sie in den Header-Informationen jedes Artikels ein Element namens image unter cover hinzu. Wenn Sie relative auf true setzen, können Sie es mit einem relativen Pfad von der *.md des Artikels aus angeben.\n1 2 3 cover: image: \u0026#34;images/cover.jpg\u0026#34; relative: true Wenn Sie es nicht oben im Artikel anzeigen möchten Wenn Sie das Titelbild nicht oben im Artikel anzeigen möchten, fügen Sie ein Element namens hidden unter cover hinzu und setzen Sie es auf true.\n1 2 3 4 cover: image: \u0026#34;images/cover.jpg\u0026#34; relative: true hidden: true Über die Bildgröße In der aktuellen PaperMod-Spezifikation scheint die Twitter Card-Größe nur summary_large_image zu unterstützen. Für die geeignete Größe (Auflösung) von summary_large_image gibt es verschiedene Theorien, aber etwa 800 x 418 (Bildverhältnis 1.91:1) scheint gut zu sein.\nReferenzseite 1 Referenzseite 2\nWenn möglich, empfehlen wir, die Bildgröße vor dem Posten zu ändern.\nSo überprüfen Sie die Einstellungen Verwenden Sie den Twitter Card Validator, um die Twitter Card-Einstellungen zu überprüfen. Da die Vorschau in meiner Umgebung jedoch nicht richtig angezeigt wurde, empfehle ich Ihnen, falls die Vorschau nicht angezeigt wird, sie vor dem Posten einmal mit einem privaten Konto oder Ähnlichem zu überprüfen.\n","date":"2022-09-10T18:41:22+09:00","image":"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_hu5e280b2f775d1811bb256626ef7709c6_973665_120x120_fill_box_smart1_3.png","permalink":"http://kenji.blog/de/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/","title":"So konfigurieren Sie Twitter Card mit PaperMod"},{"content":"Einführung GitHub Copilot ist ein KI-basiertes Code-Vervollständigungstool, das von GitHub entwickelt wurde. Sie können GitHub Copilot in IntelliJ IDEA verwenden, indem Sie das GitHub Copilot-Plugin in der IntelliJ IDEA-Entwicklungsumgebung installieren. Für die Aktivierung ist ein GitHub-Konto erforderlich.\nInstallationsmethode Wählen Sie Settings im Menü File von IntelliJ IDEA Wählen Sie Plugins und suchen Sie in der Suche nach \u0026ldquo;GitHub Copilot\u0026rdquo; Installieren Sie über die Installationsschaltfläche Drücken Sie die Schaltfläche Restart IDE, um IntelliJ IDEA neu zu starten Die Installation ist abgeschlossen, wenn IntelliJ IDEA neu gestartet wird. Aktivierung Klicken Sie auf das Symbol in der unteren rechten Ecke Klicken Sie auf Login to Github Klicken Sie auf die Schaltfläche Copy and Open Der Browser wird geöffnet. Wenn Sie nicht bei GitHub angemeldet sind, melden Sie sich an, fügen Sie den Code mit Strg+V ein und klicken Sie auf die Schaltfläche Continue Klicken Sie auf die Schaltfläche Authorize GitHub Copilot Plugin Wenn der obige Bildschirm angezeigt wird, ist die Aktivierung abgeschlossen. Ausprobieren Wenn Sie im Editor von IntelliJ IDEA ein paar Zeichen eingeben, beginnt GitHub Copilot, den Rest des Codes vorzuschlagen. Genießen Sie die leistungsstarke Code-Vervollständigungsfunktion durch KI!\n","date":"2022-09-10T09:44:55+09:00","image":"http://kenji.blog/p/intellij-idea%E3%81%A7github-copilot%E3%82%92%E4%BD%BF%E3%81%86/images/img_hu78c7d99017ff4692861292fedffeefef_291492_120x120_fill_box_smart1_3.png","permalink":"http://kenji.blog/de/p/verwendung-von-github-copilot-in-intellij-idea/","title":"Verwendung von GitHub Copilot in IntelliJ IDEA"},{"content":"Einführung Go ist eine relativ neue Programmiersprache, die 2009 von Google veröffentlicht wurde. Der Compiler, die Werkzeuge und die Bibliotheken von Go sind Open Source. Darüber hinaus ist Go eine statisch typisierte Sprache wie C oder Java, aber sie verwendet keine Zeiger wie die C-Sprache.\nInstallationsmethode Go installieren\nAuf der obigen Website stehen Installationsprogramme für jede Plattform zur Verfügung.\nBefolgen Sie die Anweisungen auf dem Bildschirm, um mit der Installation fortzufahren. Die Installation ist abgeschlossen. Einfach, oder?\nErstes Programm Speichern Sie das folgende Programm als hello.go.\n1 2 3 4 5 6 7 package main import \u0026#34;fmt\u0026#34; func main() { fmt.Printf(\u0026#34;Hello World\\n\u0026#34;) } Wenn Sie go run hello.go über die Eingabeaufforderung oder das Terminal ausführen, wird Hello, world! ausgegeben.\nBeim Kompilieren wird durch Ausführen von go build hello.go die Datei hello.exe generiert. Wenn Sie hello.exe ausführen, wird Hello, world! ausgegeben.\nSie können Code auch auf einer Webseite ausführen https://go.dev/play/\nJapanische Dokumentation http://go.shibu.jp/\nDie Erklärungen, die zum Erlernen von Go erforderlich sind, sind im obigen Link (japanische übersetzte Version) zusammengefasst. Die mit Go verbundene Technologie ist so offen und umfassend, dass fast keine Notwendigkeit besteht, gedruckte Texte zu kaufen.\nDann, viel Spaß mit Go!\n","date":"2022-09-10T00:48:17+09:00","image":"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_hu90f0e026fa77d6f7268f9adc11e245d4_5801_120x120_fill_box_smart1_3.png","permalink":"http://kenji.blog/de/p/wie-man-go-installiert/","title":"Wie man Go installiert"},{"content":"Was ist Hegels Dialektik? Hegel erfasste die positive Bedeutung des Widerspruchs, in den die Vernunft gerät, und argumentierte, dass im Allgemeinen alle endlichen Dinge aus dem ihnen innewohnenden Widerspruch als Triebkraft ihre Gegensätze hervorbringen und durch diese Vermittlung beide auf eine höhere Stufe aufgehoben werden. Dies machte er zum Prinzip aller Bewegung in der realen Welt. (Aus Kotobank)\nMeine Interpretation ist, dass keine Ideologien oder Ideen in der realen Welt einfach einseitig richtig sind, sondern intern immer Widersprüche enthalten, und durch das Verstehen oder Einbeziehen dieser gegensätzlichen Strukturen entwickelt sich unsere Erkenntnis auf eine höhere Ebene.\nIch glaube, das gilt nicht nur für menschliches Denken, sondern auch für alle Phänomene in der Natur.\nFür alle Materie gilt: Wo eine Aktion ist, ist auch eine Reaktion; wenn sich ein Objekt bewegt, entsteht Reibung; die Schwerkraft wirkt nicht nur zwischen Sonne und Erde, sondern alle Substanzen beeinflussen sich gegenseitig. Der Fluss von Flüssen und Wind strömt nicht nur in eine Richtung, sondern ist verschiedenen Kräften ausgesetzt und verändert sich in jedem Moment.\nTechnisch gesehen enthalten auch Computerprogramme intern immer Bugs, und indem man sie behebt, werden sie zu Programmen auf einem höheren Niveau. Ich denke, man kann sagen, dass ein Programm ohne Bugs ein uninteressantes Programm ist, das sich nicht mehr weiterentwickelt. Es wird irgendwann obsolet sein.\nDie Umgebung um uns herum verändert sich ständig mit der Zeit. Anstatt unsere inneren Widersprüche zu ignorieren oder seltsam zu rechtfertigen oder unsere Denkweise zu fixieren, möchte ich meine Denk- und Sichtweise ständig überprüfen und mein Denken flexibel anpassen.\n","date":"2022-09-09T23:13:19+09:00","image":"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_huf44f6813611a65fb4bf58b8763a4133a_83624_120x120_fill_box_smart1_3.png","permalink":"http://kenji.blog/de/p/hegels-dialektik/","title":"Hegels Dialektik"},{"content":"Ich war zum ersten Mal seit Jahren wieder bei Kamukura (Ramen).\nFrühlingszwiebel-Kimchi-Ramen\nEs war lecker. Es ist ein Geschmack, den man ab und zu essen möchte.\n","date":"2022-09-09T21:45:19+09:00","image":"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_120x120_fill_q75_box_smart1.jpg","permalink":"http://kenji.blog/de/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/","title":"Kamukura (Ramen) zum ersten Mal seit Jahren"},{"content":"Ich habe ein Programm geschrieben, um Primzahlen in Rust aufzuzählen.\n1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 fn main() { let max = 1000; let mut primes = vec![2]; let mut n = 3; loop { let mut is_prime = true; for p in \u0026amp;primes { if n % p == 0 { is_prime = false; break; } } if is_prime { primes.push(n); } n += 2; if n \u0026gt; max { break; } } for p in \u0026amp;primes { println!(\u0026#34;{}\u0026#34;, p); } } ","date":"2022-09-09T07:08:49+09:00","image":"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_hu5b7e04bd1dc0eefb45fd25ac4219842a_9797_120x120_fill_box_smart1_3.png","permalink":"http://kenji.blog/de/p/aufz%C3%A4hlung-von-primzahlen-in-rust/","title":"Aufzählung von Primzahlen in Rust"},{"content":"Ruhige Jazz-Playlist ","date":"2022-09-08T17:40:26+09:00","image":"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_huddf559c95c5d412c9cd6a131d9beecb1_1507891_120x120_fill_box_smart1_3.png","permalink":"http://kenji.blog/de/p/ruhiger-jazz/","title":"Ruhiger Jazz"},{"content":"Up-tempo\nElectro Swing Collection Electro Swing Mix 2019 Vol.3 lofi hip hop radio(Live) LoFi Jazz Das ist die Motivation, jeden Tag hart zu lernen | 5 hour lofi hip hop / study / work / chill beats ","date":"2022-09-08T08:39:03+09:00","image":"http://kenji.blog/p/%E3%82%AB%E3%83%95%E3%82%A7%E9%9F%B3%E6%A5%BD/images/img_huc541091b3f264af05ecf07abbd33454f_519675_120x120_fill_box_smart1_3.png","permalink":"http://kenji.blog/de/p/cafe-musik/","title":"Café-Musik"},{"content":"Es ist okay, wenn deine Bemühungen nicht anerkannt werden 45年の人生で手に入れた。ぐずぐずした時、いつも背中を押してくれる言葉たち。 pic.twitter.com/EQgmujOSpg\n\u0026mdash; いれぶん (@eleven_s_s) September 6, 2022 Werte sind viel vielfältiger Yusuke Narita \u0026ldquo;Von den Unglücken, die Menschen ertragen\u0026rdquo;\nDeine Handlungen spiegeln sich genau wider Hayao Miyazakis Gedanken ","date":"2022-09-08T02:22:52+09:00","image":"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_hu390d0c8e5d67e265b0c5aa8749ccc95d_193793_120x120_fill_box_smart1_3.png","permalink":"http://kenji.blog/de/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/","title":"Videos, die deine Motivation steigern"},{"content":"Hier sind die Spezifikationen meines aktuellen Haupt-PCs.\nElementname Wert Prozessor Intel Core i7-8700K CPU @ 3.70GHz 3.70 GHz Speicher 32.0 GB Systemtyp 64-Bit-Betriebssystem, x64-basierter Prozessor Betriebssystem Windows 11 Enterprise (Version 21H2, Build 22000.856) Hersteller Mouse Computer Co., Ltd. ","date":"2022-09-08T01:55:00+09:00","image":"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_hu731502385ac0a573daf05287c34d796a_240757_120x120_fill_box_smart1_3.png","permalink":"http://kenji.blog/de/p/aktuelle-haupt-pc-spezifikationen/","title":"Aktuelle Haupt-PC-Spezifikationen"},{"content":"Google Material Symbols and Icons https://fonts.google.com/icons GitHub Octicons https://primer.style/octicons/ Sargam Icons https://sargamicons.com/ Tausende von kostenlosen Symbolen https://icon-icons.com/ flaticon https://www.flaticon.com/ ICONFINDER https://www.iconfinder.com/ iconfont https://www.iconfont.cn/ open-iconic https://github.com/iconic/open-iconic ","date":"2022-09-07T16:46:56+09:00","image":"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_hu3b0847646c9f4aefba079615d2db35cd_21041_120x120_fill_box_smart1_3.png","permalink":"http://kenji.blog/de/p/einfache-icon-sammelseiten/","title":"Einfache Icon-Sammelseiten"},{"content":"Ich habe das Farbschema des PaperMod-Themas geändert. Für die Änderungsmethode habe ich Folgendes konsultiert.\nhttps://github.com/adityatelange/hugo-PaperMod/discussions/645\nDer CSS-Pfad lautet wie folgt.\nthemes/PaperMod/assets/css/extended/blank.css\n1 2 3 4 5 6 7 8 9 10 11 12 13 :root { --entry: #fbf7ef; --primary: rgba(113, 103, 91, 1.00); --secondary: rgba(113, 103, 91, 0.95); --tertiary: rgba(113, 103, 91, 0.50); --content: rgba(113, 103, 91, 0.85); --hljs-bg: #34231B; --code-bg: #ebe4d7; --border: #fdfaf5; --theme: #fbf7ef; } .dark { } Vorerst keine Änderungen für den Dunkelmodus.\n","date":"2022-09-07T15:30:21+09:00","image":"http://kenji.blog/p/papermod%E3%81%AE%E9%85%8D%E8%89%B2%E5%A4%89%E6%9B%B4/img_hu74d0722ae4db8273d5e32f97bb10689d_10515_120x120_fill_box_smart1_3.png","permalink":"http://kenji.blog/de/p/papermod%E3%81%AE%E9%85%8D%E8%89%B2%E5%A4%89%E6%9B%B4/","title":"Ändern des Farbschemas von PaperMod"},{"content":"Als die Mutter krank wurde und das Bett hüten musste, Bei der Vorbereitung des Abendessens oder des Bades fragte ich meine Tochter (2 Jahre): \u0026ldquo;Sollen wir Mama bitten, das zu tun?\u0026rdquo;, Sie antwortete: \u0026ldquo;Nein, sie schläft!\u0026rdquo; und ich dachte, dass sie auf ihre eigene Art rücksichtsvoll war.\nIch war froh zu sehen, dass sie zu jemandem heranwächst, der sich um andere kümmert.\n","date":"2022-09-07T04:40:52+09:00","image":"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_hud61af1a628f352ef1641794e80547155_144893_120x120_fill_box_smart1_3.png","permalink":"http://kenji.blog/de/p/rucksichtnahme-eines-kindes/","title":"Rücksichtnahme eines Kindes"},{"content":"Finde Geschäfte, die populär werden Fragen Sie Insider von Hot Pepper und Buchhalter nach Geschäften, die im Trend liegen Steigen Sie nicht in Geschäfte ein, die bereits gesättigt sind und starke Konkurrenten haben Steigen Sie nur in Geschäfte ein, bei denen Sie sicher sind, dass Sie Kunden anziehen können (steigen Sie nicht in Geschäfte ein, bei denen bestehende Unternehmen spezielle Methoden zur Kundengewinnung verwenden (die nicht imitiert werden können)) Gründlich imitieren Recherchieren Sie die Geschäftslogik, bevor Sie einsteigen Gründlich kopieren Verbessern Sie darauf aufbauend Systematisieren Erstellen Sie ein Handbuch für alles, damit es jeder mühelos tun kann Denken Sie über Ideen nach, um den Umsatz zu steigern (Erhöhung der Kundenzahl, Ausgaben pro Kunde) und die Kosten zu senken (Personalkosten, Werbekosten) und systematisieren Sie sie Managementphilosophie Die Philosophie des Managers ist es, \u0026ldquo;den Unternehmensgewinn zu maximieren\u0026rdquo;, nicht mehr und nicht weniger Sozialer Beitrag oder Beliebtheit bei Mitarbeitern als Managementphilosophie ist nicht gut (denken Sie daran, dass diese Dinge später natürlich kommen werden) ","date":"2022-09-07T02:36:11+09:00","image":"http://kenji.blog/p/%E7%B5%8C%E5%96%B6%E8%80%85%E3%83%A1%E3%83%A2/images/img_hu8e43d40b92b6a98e30d3360e9f3ab85a_162130_120x120_fill_box_smart1_3.png","permalink":"http://kenji.blog/de/p/management-notizen/","title":"Management-Notizen"},{"content":"Ich möchte ordnen, was ich an der japanischen Gesellschaft seltsam finde und was ich darüber denke.\nÜber Stipendien Wenn es in Japan um Stipendien geht, sind die meisten davon verzinst und müssen zurückgezahlt werden (Studienkredite). Darüber hinaus steigen die Studiengebühren an Universitäten seit 1950 stetig an, und auch die Quote der Stipendienempfänger weist einen Aufwärtstrend auf.\nAndererseits scheint der durchschnittliche Gesamtkreditbetrag in letzter Zeit 3,24 Millionen Yen erreicht zu haben.\nUnter den Stipendiennutzern der Japan Student Services Organization beträgt der durchschnittliche Gesamtkreditbetrag 3.243.000 Yen. Referenz\nWenn jemand im Alter von 22 Jahren mit Schulden in Höhe von bis zu 3 Millionen Yen seinen Universitätsabschluss macht, verzögert sich das Heiratsalter natürlich, und es wird schwieriger, Kinder zu bekommen, was meiner Meinung nach eine der Ursachen für das Problem der sinkenden Geburtenrate in Japan ist.\nDie Verbreitung des Prinzips der Eigenverantwortung Dies mag eher eine Wahrnehmung sein, aber ich denke, es gibt eine kalte gesellschaftliche Haltung nach dem Motto \u0026ldquo;Die Angelegenheiten anderer sind die Angelegenheiten anderer\u0026rdquo;. Bei einer jahrzehntelangen Rezession mag diese Tendenz unvermeidlich sein, aber selbst das oben erwähnte Stipendienproblem wird nicht als Problem der gesamten Gesellschaft betrachtet, und ich habe das Gefühl, dass die Stimmen junger Menschen, die bei Wahlen weniger Stimmen haben, oder von Minderheiten ignoriert werden. Obwohl es langfristig ein sehr wichtiges Problem für ganz Japan ist.\nAnstatt auf übermäßigen Wettbewerb zuzusteuern, halte ich die Einstellung, allen gemeinsam zu helfen, wenn es Menschen, Generationen oder Gruppen in Schwierigkeiten gibt, für ein Land für sehr wichtig. (Ich empfinde jedoch ein Unbehagen, wenn die Regierung auf \u0026ldquo;Selbsthilfe und gegenseitiger Hilfe\u0026rdquo; beharrt. Ich möchte, dass sie die Initiative ergreifen, um den Schwachen zu helfen.)\n(Dieser Artikel wird von Zeit zu Zeit aktualisiert.)\nMerkmale der Japaner aus der Sicht der KI Ja, hier sind die Merkmale der Japaner.\n【Positive Aspekte】\nJapaner haben eine Kultur der Höflichkeit und achten auf Respekt und den Umgang mit anderen. Pünktlichkeit wird streng gehandhabt, und die Einhaltung der Zeit wird sehr respektiert. Es gibt eine starke kollektivistische Denkweise, und Teamwork und Kooperation werden geschätzt. Sauberkeit ist wichtig, und es besteht die Tendenz, bei den Umgangsformen an öffentlichen Orten und bei der Reinigung gewissenhaft zu sein. Geschenke und Souvenirs werden geschätzt, und die Kultur des Dankes ist weit verbreitet. 【Negative Aspekte】\nManchmal sind sie nicht gut darin, persönliche Meinungen zu behaupten, und neigen dazu, Meinungskonflikte zu vermeiden. Es ist eine sehr strenge Arbeitskultur, in der Überstunden und Tod durch Überarbeitung (Karoshi) manchmal als Probleme angesehen werden. Es gibt weiterhin Probleme der Diskriminierung und Ausgrenzung von Ausländern, und die Harmonie mit der internationalen Gemeinschaft wird manchmal in Frage gestellt. Es gibt eine Tendenz zum Autoritarismus, und es wird oft darauf hingewiesen, dass sie die Meinungen von Vorgesetzten oder Älteren bedingungslos akzeptieren. Manchmal werden sie dafür kritisiert, eine geschlossene Gesellschaft zu sein, die dazu neigt, Schwierigkeiten zu haben, externe Kulturen oder Werte zu akzeptieren. ","date":"2022-09-06T02:24:11+09:00","image":"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_hu105ea1ef9d38a7cb8901ff6c857b887e_168534_120x120_fill_box_smart1_3.png","permalink":"http://kenji.blog/de/p/was-ich-ueber-japan-denke/","title":"Was ich über Japan denke"},{"content":"Einführung Rust ist eine relativ neue Programmiersprache, mit der Sie schnelle und speichereffiziente Module mit moderner Syntax schreiben können. Es ist plattformübergreifend und wird auch in der Welt von WebAssembly und eingebetteten Systemen verwendet. Bekanntermaßen wird es von Firefox, DropBox und Cloudflare eingesetzt.\nEs zieht auch als Alternative zu C++ Aufmerksamkeit auf sich.\nWie man installiert Rust installieren\nDie obige Website bietet Installationsanweisungen für jede Plattform.\nErstes Programm Speichern Sie das folgende Programm als main.rs.\n1 2 3 fn main() { println!(\u0026#34;Hello, world!\u0026#34;); } Wenn Sie rustc main.rs über die Eingabeaufforderung oder das Terminal ausführen, wird es kompiliert. Die Ausführung von ./main (oder main.exe unter Windows) gibt Hello, world! aus.\nJapanische Dokumentation The Rust Programming Language Japanische Ausgabe\nDie Erklärungen, die zum Erlernen von Rust notwendig sind, sind unter dem obigen Link (japanisch übersetzte Version) zusammengestellt. Sie ist so umfassend, dass Sie kein Buch über Rust kaufen müssen.\nWenn Sie es im Web ausprobieren möchten Wenn Sie es im Web ausprobieren möchten, ohne den Compiler zu installieren, können Sie The Rust Playground verwenden. Nach der Eingabe des Codes und dem Klicken auf die Schaltfläche \u0026ldquo;Run\u0026rdquo; wird er im Web kompiliert und ausgeführt.\n","date":"2022-09-06T00:12:36+09:00","image":"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_huefc2d075e966b0edc0b7186c50038553_22411_120x120_fill_box_smart1_3.png","permalink":"http://kenji.blog/de/p/wie-man-mit-rust-anf%C3%A4ngt/","title":"Wie man mit Rust anfängt"},{"content":"Umstellung der Internetumgebung zu Hause von Flet\u0026rsquo;s Hikari auf J:COM Auf Empfehlung eines Bekannten habe ich die Internetleitung zu Hause von Flet\u0026rsquo;s Hikari auf J:COM umgestellt. Die Gründe waren:\nDie monatlichen Gebühren sind günstiger. 3.619 Yen → 2.180 Yen Die Internetgeschwindigkeit steigt von 100MBps auf 320MBps Diese Punkte.\nEindrücke nach der Nutzung Es ist etwa eine Woche seit der Umstellung vergangen, und bisher gibt es fast keine Probleme. Unten liste ich einige Dinge auf, die mir etwas aufgefallen sind.\nAls ich tatsächlich wechselte, bemerkte ich, dass die Download-Geschwindigkeit wirklich schneller wurde, von 60MBps auf fast 320MBps. Allerdings sank die Upload-Geschwindigkeit, die bei Flet\u0026rsquo;s Hikari noch bei 40MBps lag, auf etwa 10MBps. Dies scheint eine Spezifikation seitens J:COM zu sein. Da ich derzeit weder streame noch große Datenmengen hochlade, werde ich die Situation vorerst beobachten.\nAußerdem arbeiten meine Familie und ich in letzter Zeit hauptsächlich im Homeoffice, und heute fiel das Internet zum ersten Mal für einige Minuten bis zu ein paar Dutzend Minuten aus. Es hat sich automatisch wiederhergestellt, aber es ist vielleicht kein gutes Zeichen. Es ist noch nicht einmal eine Woche seit der Umstellung vergangen\u0026hellip;\nAls Randnotiz: Da J:COM P2P-Kommunikation einschränkt, scheint die Geschwindigkeit von P2P-Apps nicht gut zu sein. Wer P2P nutzt, sollte vorsichtig sein.\nÜber den Service Beim Vertragsabschluss erhält man bei einer Anmeldung bei Netflix oder Disney+ eine QUO-Karte im Wert von 40.000 Yen, was die jeweiligen Service-Vertragsgebühren ausgleicht und die monatlichen Gebühren im Durchschnitt etwas günstiger macht, also habe ich die Services gleichzeitig mit dem Vertrag abonniert. Netflix hat einen 1-Jahres-Vertrag, Disney+ einen Halbjahresvertrag, und es scheint, dass man die Kündigung selbst vornehmen muss.\nDa die Umstellung noch frisch ist, werde ich den Artikel aktualisieren, falls weitere Eindrücke oder Erfahrungen zur Nutzung hinzukommen. Bis dann,\n06.09. Internetverbindung wurde schwierig 06.09.2022 gegen 13:13 Uhr ca. 3 bis 5 Minuten 06.09.2022 gegen 13:30 Uhr ca. 3 bis 5 Minuten Danach noch einige Male\u0026hellip; Da das Problem beim DNS zu liegen schien, habe ich den DNS-Server unter Bezugnahme auf hier eingerichtet. Mal sehen, was jetzt passiert\u0026hellip; Da ich mich auch mit der DNS-Einstellung nicht verbinden konnte, habe ich den Support kontaktiert, der mir mitteilte, dass eine Notfallwartung durchgeführt wird\u0026hellip; Unmittelbar nach der Anfrage verbesserte sich der Verbindungsstatus, also denke ich, dass sie irgendeine Maßnahme ergriffen haben.\n","date":"2022-09-05T22:48:51+09:00","image":"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_120x120_fill_box_smart1_3.png","permalink":"http://kenji.blog/de/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/","title":"Ich habe meine Internetumgebung von Flet's Hikari auf J:COM umgestellt"},{"content":"HUGO Installation Download HUGO Download\nLaden Sie von der obigen Website das für Ihre Umgebung geeignete Windows-Modul herunter und entpacken Sie es. In meinem Fall habe ich \u0026ldquo;hugo_0.102.3_Windows-64bit.zip\u0026rdquo; heruntergeladen.\nEntpacken Entpacken Sie die heruntergeladene Zip-Datei und kopieren Sie die darin enthaltene hugo.exe in einen Ordner, den Sie erstellt haben, z. B. C:\\bin.\nIn den Umgebungsvariablen registrieren Registrieren Sie es in den Umgebungsvariablen, um hugo.exe von überall ausführen zu können. Die folgenden Schritte gelten für Windows 11, aber Sie sollten es mit einem ähnlichen Verfahren registrieren können:\nDrücken Sie Win+Pause, um die Versionsinformationen zu öffnen Klicken Sie auf Erweiterte Systemeinstellungen Klicken Sie auf Umgebungsvariablen Wählen Sie Path und klicken Sie auf Bearbeiten Klicken Sie auf Neu, geben Sie \u0026ldquo;C:\\bin\u0026rdquo; in eine neue Zeile ein und klicken Sie auf OK, um den Dialog zu schließen Vorschau des Blogs Navigieren Sie in der Eingabeaufforderung zum HUGO-Blog-Ordner und führen Sie den folgenden Befehl aus.\nhugo server -D\nDas Ausführungsergebnis ist unten aufgeführt. (-D ist eine Option zur Anzeige von Entwurfsartikeln.)\n1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 C:\\Users\\win11\\IdeaProjects\\kenji.blog\u0026gt;hugo server -D Start building sites … hugo v0.102.3-b76146b129d7caa52417f8e914fc5b9271bf56fc windows/amd64 BuildDate=2022-09-01T10:16:19Z VendorInfo=gohugoio | JA -------------------+----- Pages | 39 Paginator pages | 0 Non-page files | 7 Static files | 0 Processed images | 0 Aliases | 13 Sitemaps | 1 Cleaned | 0 Built in 161 ms Watching for changes in C:\\Users\\win11\\IdeaProjects\\kenji.blog\\{archetypes,content,themes} Watching for config changes in C:\\Users\\win11\\IdeaProjects\\kenji.blog\\config.toml Environment: \u0026#34;development\u0026#34; Serving pages from memory Running in Fast Render Mode. For full rebuilds on change: hugo server --disableFastRender Web Server is available at http://localhost:1313/ (bind address 127.0.0.1) Press Ctrl+C to stop Da die Adresse während der Ausführung angezeigt wird (im obigen Beispiel http://localhost:1313/), kopieren Sie diese Adresse in Ihren Browser. Die Vorschau wird bei jedem Speichern der Datei automatisch aktualisiert. Um die Vorschau zu beenden, geben Sie in der Eingabeaufforderung Ctrl+C ein.\n","date":"2022-09-05T12:28:01+09:00","image":"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_hu415dc7e70376ac350673d0366f70ca4b_19909_120x120_fill_box_smart1_3.png","permalink":"http://kenji.blog/de/p/hugovorschau-in-der-lokalen-umgebung-anzeigen/","title":"【HUGO】Vorschau in der lokalen Umgebung anzeigen"},{"content":"Hier sind meine 3 besten Filmempfehlungen mit Mathematikern als Hauptfiguren.\nA Beautiful Mind Ein Film, der das Leben eines echten amerikanischen Mathematikgenies schildert. Das Ende hält eine überraschende Wendung bereit. Russell Crowe spielt die Hauptrolle hervorragend.\nEnigma Ein Film aus dem Jahr 2001, basierend auf dem Roman \u0026ldquo;Enigma\u0026rdquo; von Robert Harris. aus Wikipedia\nDie Geschichte der Entschlüsselung der Enigma-Chiffriermaschine, die von Deutschland entwickelt wurde.\nThe Imitation Game Dies ist ebenfalls eine Entschlüsselungsgeschichte rund um die Enigma. Ich liebe die Atmosphäre der damaligen Zeit.\nDie Poesie des Unendlichen Ein Werk, das die Interaktion zwischen dem Mathematiker Hardy von der Universität Cambridge und dem indischen Mathematiker Ramanujan darstellt. Man kann die Schönheit der Mathematik spüren.\nDie Entdeckung der Unendlichkeit Ein Film, der das Leben von Dr. Hawking schildert.\nParticle Fever ","date":"2022-09-05T10:41:00+09:00","image":"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_hua361131ea597bbd428e36b721aabc571_406520_120x120_fill_box_smart1_3.png","permalink":"http://kenji.blog/de/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/","title":"Filme mit Mathematikern"},{"content":"Kinderschreibtisch Die Zeit, in der die Kinder schlafen, ist die Zeit, in der ich mich der Arbeit widmen kann. Nach dem Mittagsschlaf gehen wir in den Park zum Spielen. Wenn ich einen Lightning-auf-HDMI-Adapter für mein iPad hätte, könnte ich am rechten Schreibtisch arbeiten~\n","date":"2022-09-04T14:29:09+09:00","image":"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_hu1fa3ba50725fc9c80ae774069d99ec20_2258565_120x120_fill_q75_box_smart1.jpg","permalink":"http://kenji.blog/de/p/heutige-arbeitsumgebung/","title":"Heutige Arbeitsumgebung"},{"content":"Einführung Wenn ich diesen Blog schreibe, verwende ich IntelliJ IDEA. Es ist praktisch, da es gut mit Git harmoniert und eine Markdown-Vorschau anzeigt. Da ich jedes Mal, wenn ich einen Blog schreibe, das date in den md-Header schreiben muss, und es anscheinend keine Tastenkombination zum Einfügen des Datums gibt, habe ich unter Bezugnahme auf die unten stehende Website einen Befehl zum Einfügen des Datums erstellt. Ich hoffe, das ist hilfreich.\nIs there a shortcut for inserting date/time in IntelliJ IDEA?\nEinrichtungsschritte Öffnen Sie \u0026ldquo;File\u0026rdquo; \u0026gt; \u0026ldquo;Settings\u0026hellip;\u0026rdquo; im Menü\nKlicken Sie auf \u0026ldquo;+\u0026rdquo;, während \u0026ldquo;Editor\u0026rdquo; \u0026gt; \u0026ldquo;Live Template\u0026rdquo; \u0026gt; \u0026ldquo;HTML/XML\u0026rdquo; ausgewählt ist Wählen Sie Live Template aus Geben Sie \u0026ldquo;date\u0026rdquo; bei Abbreviation ein Geben Sie \u0026ldquo;Datum und Uhrzeit einfügen\u0026rdquo; bei Description ein Geben Sie \u0026ldquo;$date$\u0026rdquo; bei Template Text ein Klicken Sie auf die Schaltfläche Edit Variables\nGeben Sie \u0026ldquo;date\u0026rdquo; bei Name ein Geben Sie date(\u0026quot;yyyy-MM-dd'T'HH:mm:ss'+09:00'\u0026quot;) bei Expression ein Schließen Sie den Dialog mit OK Drücken Sie auf Define oder Change und aktivieren Sie \u0026ldquo;Everywhere\u0026rdquo; Schließen Sie den Dialog mit OK Geben Sie \u0026ldquo;date\u0026rdquo; im Code-Editor ein und drücken Sie die Eingabetaste. Wenn das Datum \u0026ldquo;2022-09-04T05:59:04+09:00\u0026rdquo; eingefügt wird, ist die Einrichtung abgeschlossen! Das war\u0026rsquo;s\nFazit Wenn ich weitere kleine Tricks für IntelliJ IDEA finde, werde ich sie gerne wieder veröffentlichen!\n","date":"2022-09-04T05:59:04+09:00","image":"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_hu4c2377fba6118d83603ae0bd715d16f4_24441_120x120_fill_box_smart1_3.png","permalink":"http://kenji.blog/de/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/","title":"Befehl zum Einfügen des Datums in IntelliJ IDEA hinzufügen"},{"content":"Ich habe einen Blog gestartet So etwas wie ein Feuerwerk, der Code ist hier\nHallo. Aus irgendeinem Grund habe ich beschlossen, einen Blog zu starten.\nEs gibt kein großes Ziel wie \u0026ldquo;Ich möchte dies veröffentlichen!\u0026rdquo;, aber ich dachte, es wäre schön, einen Ort zu haben, an dem ich Dinge über Technologie, den Alltag oder was auch immer mir in den Sinn kommt, schreiben kann.\nIch habe vor, dies wie einen Notizblock zu führen, ohne mich zu sehr anzustrengen.\nIch mache das mit so einem Ding namens Hugo Dieser Blog wird mit einem Static Site Generator namens \u0026ldquo;Hugo\u0026rdquo; erstellt. Ich habe ein schönes Theme gefunden, also habe ich beschlossen, es spontan zu übernehmen. (Es ist ein Geheimnis, dass ich ungefähr 2 Stunden gebraucht habe, um das Theme auszuwählen)\nIch habe auch vor, mir nebenbei Notizen zu Code und Tools zu machen, die mich interessieren.\nDie Morgengeschichte im Komeda Übrigens bin ich heute Morgen etwas früher aufgewacht und ins Komeda Coffee gegangen. Ich bin um 8:30 Uhr losgegangen und bin gemütlich spaziert, während ich die Morgenluft genossen habe.\nIch habe das A-Morgen-Set mit einem Mini-Shiro-Noir und Café au Lait bestellt. Ich glaube, es hat ungefähr 800 Yen gekostet? (Ich erinnere mich nicht)\nEin Café am Morgen ist doch was Schönes. Wenn man vor der Arbeit ein wenig Zeit zum Entspannen hat, fühlt es sich an, als würde der ganze Tag gut laufen.\nAuf diese Weise werde ich von nun an entspannt schreiben. Ich plane, Technikthemen und Alltagsgeschichten zu mischen.\nVielen Dank!\n","date":"2022-09-02T07:23:00+09:00","image":"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_hue1f0373fafb96162f461ac594cb3e53e_603414_120x120_fill_q75_box_smart1.jpeg","permalink":"http://kenji.blog/de/p/ich-habe-einen-blog-gestartet/","title":"Ich habe einen Blog gestartet"},{"content":"Salesforce DevTools Sie können nach benutzerdefinierten Feldern suchen oder Felder von benutzerdefinierten Objekten in großen Mengen exportieren.\nEs ist auch praktisch, SOQL vor Ort erstellen zu können.\nSalesforce DevTools\nSalesforce advanced Code searcher Nützlich bei der Suche nach Salesforce-Code.\nSalesforce advanced Code searcher\n","date":"2022-05-02T10:39:36+09:00","image":"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_120x120_fill_box_smart1_3.png","permalink":"http://kenji.blog/de/p/salesforce%E3%81%8A%E3%81%99%E3%81%99%E3%82%81chrome%E6%8B%A1%E5%BC%B5/","title":"Empfohlene Chrome-Erweiterungen für Salesforce"},{"content":"In der heutigen Internetgesellschaft wird die Informationssicherheit durch Public-Key-Kryptographie wie das RSA-Kryptosystem geschützt. Die Grundlage der Sicherheit des RSA-Kryptosystems beruht auf der Tatsache, dass „die Primfaktorzerlegung riesiger zusammengesetzter Zahlen rechnerisch extrem schwierig ist“ .\nIn diesem Artikel entschlüsseln wir den mathematischen Mechanismus des „Zahlkörpersiebs“ (General Number Field Sieve, GNFS), dem stärksten Algorithmus zur Primfaktorzerlegung für klassische Computer. Zugleich werden wir durch Formeln und Konzeptdiagramme detailliert ergründen, warum er durch den von Peter Shor entdeckten „Shor-Algorithmus“ vollständig besiegt wird und welchen Paradigmenwechsel dies darstellt.\n1. Der Ansatz zur Primfaktorzerlegung in der klassischen Berechnung: Eine Entwicklung aus Fermats Faktorisierungsmethode Das Problem der Primfaktorzerlegung besteht darin, für eine gegebene zusammengesetzte Zahl $N$ die Primzahlen $p, q$ zu finden, sodass $N = p \\times q$ gilt.\nDie grundlegende Idee läuft darauf hinaus, nicht-triviale Werte $x, y$ zu finden, die die folgende Kongruenz erfüllen:\n$$ x^2 \\equiv y^2 \\pmod N $$ Durch Umformen erhalten wir:\n$$ x^2 - y^2 \\equiv 0 \\pmod N $$ $$ (x - y)(x + y) \\equiv 0 \\pmod N $$ Wenn hier $x \\not\\equiv \\pm y \\pmod N$ gilt, können wir durch die Berechnung von $\\gcd(x-y, N)$ oder $\\gcd(x+y, N)$ einen nicht-trivialen Faktor von $N$ erhalten. Diese Tatsache bildet die Grundlage moderner Primfaktorzerlegungsalgorithmen wie dem GNFS.\n2. Der stärkste klassische Algorithmus: Die Tiefen des „Zahlkörpersiebs“ (GNFS) Das „GNFS“ ist der derzeit schnellste bekannte Algorithmus zur Primfaktorzerlegung für klassische Computer. Seine Zeitkomplexität erfordert eine subexponentielle (Sub-exponential) Zeit.\nDie Zeitkomplexität von GNFS Wenn die Anzahl der Ziffern der Zahl $N$ als $b = \\log_2 N$ definiert ist, wird die Zeitkomplexität von GNFS wie folgt ausgedrückt:\n$$ O\\left( \\exp \\left( \\left(\\frac{64}{9} b\\right)^{1/3} (\\log b)^{2/3} \\right) \\right) $$ Wie aus dieser Formel ersichtlich ist, handelt es sich bei der Komplexität nicht um polynomielle Zeit, sondern um eine „subexponentielle Zeit“ , die nur geringfügig langsamer als exponentiell ist. Dennoch steigt die Berechnungszeit mit zunehmender Ziffernzahl astronomisch an.\nDer mathematische Mechanismus von GNFS GNFS besteht im Wesentlichen aus vier Schritten:\nPolynomauswahl (Polynomial Selection) Sieben (Sieving) Matrixreduktion (Matrix Reduction) Quadratwurzelberechnung (Square Root) 2.1. Polynomauswahl und algebraische Zahlkörper Zunächst werden irreduzible Polynome $f(x)$ und $g(x)$ mit ganzzahligen Koeffizienten ausgewählt. Diese werden so festgelegt, dass sie modulo $N$ eine gemeinsame Wurzel $m$ haben. Das heißt:\n$$ f(m) \\equiv 0 \\pmod N $$ $$ g(m) \\equiv 0 \\pmod N $$ Normalerweise wird $g(x)$ als lineares Polynom $g(x) = x - m$ gewählt. Setzt man die Wurzel von $f(x)$ als $\\alpha$, so wird ein „algebraischer Zahlkörper“ (Number Field) namens $\\mathbb{Q}(\\alpha)$ konstruiert. Die Operationen im Ring von $\\mathbb{Q}(\\alpha)$ und die Operationen im normalen Ring der ganzen Zahlen $\\mathbb{Z}$ werden über den Homomorphismus $\\phi: \\alpha \\mapsto m$ verglichen.\n2.2. Sieben (Sieving) Als Nächstes wird massenhaft nach Paaren teilerfremder ganzer Zahlen $(a, b)$ gesucht. Das Ziel ist es, Paare zu finden, bei denen die folgenden zwei Werte jeweils „B-smooth“ sind (d. h. sie bestehen nur aus relativ kleinen Primfaktoren):\n$a - bm$ (Wert über dem Ring der ganzen Zahlen) $b^d f(a/b)$ (Entspricht der Norm $N(a - b\\alpha)$ über dem algebraischen Zahlkörper) Hierbei wird eine schnelle Suchmethode namens „Sieb“ (Sieve) angewendet. Dadurch werden $(a, b)$-Paare, die die Bedingungen erfüllen, effizient aus einer riesigen Menge von Kandidaten extrahiert.\n2.3. Matrixreduktion (Linear Algebra over GF(2)) Aus den gesammelten $(a, b)$-Paaren werden Exponentenvektoren konstruiert, und der linke Nullraum einer riesigen, spärlich besetzten Matrix über $\\mathbb{F}_2$ (einem Körper, der nur aus den Elementen 0 und 1 besteht) wird berechnet.\nMan sucht als Lösung einen Vektor $v$, sodass die Relationen $ \\prod (a_i - b_i m) $ und $ \\prod (a_i - b_i \\alpha) $ jeweils ein Quadrat werden. Dies ist nichts anderes als das Lösen eines linearen Gleichungssystems der Form:\n$$ M \\mathbf{x} \\equiv \\mathbf{0} \\pmod 2 $$ Hierbei werden fortgeschrittene numerische Algorithmen wie das Block-Lanczos-Verfahren (Block Lanczos Algorithm) oder das Block-Wiedemann-Verfahren (Block Wiedemann Algorithm) eingesetzt.\n2.4. Quadratwurzelberechnung Schließlich wird sowohl im algebraischen Zahlkörper als auch im Ring der ganzen Zahlen die Quadratwurzel gezogen, um die Beziehung $x^2 \\equiv y^2 \\pmod N$ abzuleiten. Dann berechnet man $\\gcd(x-y, N)$, um den Faktor zu erhalten.\n3. Der Durchbruch durch Quantencomputing: Der „Shor-Algorithmus“ Während GNFS subexponentielle Zeit benötigt, kann der 1994 von Peter Shor veröffentlichte „Shor-Algorithmus“ dieses Problem mithilfe eines Quantencomputers in „polynomieller Zeit“ lösen.\nDie Zeitkomplexität des Shor-Algorithmus Wenn die Anzahl der Qubits $O(\\log N)$ ist, ergibt sich die Zeitkomplexität wie folgt:\n$$ O((\\log N)^3) $$ Das bedeutet, dass es keine exponentielle Explosion relativ zur Anzahl der Bits gibt. Selbst bei gigantischen zusammengesetzten Zahlen, deren Berechnungszeit in der „klassischen Berechnung“ das Alter des Universums übersteigen würde, liefert die „Quantenberechnung“ das erstaunliche Ergebnis, dass sie in wenigen Stunden bis Tagen entschlüsselt werden können.\nDas Gesamtbild des Shor-Algorithmus: Reduktion auf das Problem der Periodenfindung Der Shor-Algorithmus reduziert das Problem der Primfaktorzerlegung geschickt auf das „Problem der Periodenfindung“ .\nWähle eine zufällige ganze Zahl $a$, die teilerfremd zu $N$ ist ($1 \u003c a \u003c N$). Definiere die Funktion $f(x) = a^x \\bmod N$. Finde die Periode $r$ von $f(x)$, d. h. die kleinste positive ganze Zahl $r$, sodass $a^r \\equiv 1 \\pmod N$ gilt. Wenn $r$ gerade ist, überprüfe, ob $a^{r/2} \\not\\equiv -1 \\pmod N$ gilt, und berechne $\\gcd(a^{r/2} \\pm 1, N)$, um einen Primfaktor zu erhalten. Das Finden der Periode $r$ in Schritt 3 ist genau der Flaschenhals, der in klassischen Computern exponentielle Zeit erfordert. Ein Quantencomputer löst dies jedoch durch die Anwendung von „Quantensuperposition“ und der „Quanten-Fourier-Transformation“ (QFT) in einem Augenblick.\n4. Quanten-Fourier-Transformation (QFT) und Periodenextraktion Betrachten wir den Kern des Shor-Algorithmus, die Manipulation von Quantenzuständen, anhand von Formeln genauer.\n4.1. Erzeugung der Quantensuperposition Zunächst werden zwei Quantenregister vorbereitet. Register 1 hält den Überlagerungszustand der Eingabe $x$, und Register 2 hält das Berechnungsergebnis der Funktion $f(x)$. Auf den Anfangszustand $|0\\rangle |0\\rangle$ wird die Hadamard-Transformation (Hadamard Transform) angewendet, um eine Superposition aller möglichen Werte für $x$ zu erzeugen.\n$$ |\\psi_1\\rangle = \\frac{1}{\\sqrt{Q}} \\sum_{x=0}^{Q-1} |x\\rangle |0\\rangle $$ (Hier ist $Q$ eine Zweierpotenz, die $N^2 \\le Q \u003c 2N^2$ erfüllt)\nAls Nächstes wird mithilfe eines Quantenorakels $U_f$ der Wert $f(x) = a^x \\bmod N$ berechnet und in Register 2 gespeichert.\n$$ |\\psi_2\\rangle = U_f |\\psi_1\\rangle = \\frac{1}{\\sqrt{Q}} \\sum_{x=0}^{Q-1} |x\\rangle |a^x \\bmod N\\rangle $$ Nehmen wir an, wir würden hier Register 2 messen (die mathematische Struktur bleibt gleich, auch wenn wir nicht tatsächlich messen). Wenn ein bestimmter Wert $y = a^{x_0} \\bmod N$ beobachtet wird, kollabiert der Zustand von Register 1 in eine Überlagerung aller $x$, für die $f(x) = y$ gilt. Wenn die Periode $r$ ist, sind solche Werte für $x$ gegeben durch $x_0, x_0 + r, x_0 + 2r, \\dots$.\n$$ |\\psi_3\\rangle = \\frac{1}{\\sqrt{M}} \\sum_{k=0}^{M-1} |x_0 + kr\\rangle $$ (Hierbei ist $M \\approx Q/r$ die Anzahl der Terme)\nDieser Zustand beinhaltet die Information über die Periode $r$, aber eine direkte Messung würde nur ein zufälliges $x_0 + kr$ liefern, und die Periode $r$ bliebe unbekannt. Hier kommt die QFT ins Spiel.\n4.2. Anwendung der Quanten-Fourier-Transformation (Quantum Fourier Transform) Die QFT ist eine Operation, die eine diskrete Fourier-Transformation auf die Amplituden von Quantenzuständen durchführt. Die Wirkung der QFT auf den Zustand $|x\\rangle$ ist wie folgt definiert:\n$$ \\text{QFT} |x\\rangle = \\frac{1}{\\sqrt{Q}} \\sum_{y=0}^{Q-1} e^{2\\pi i \\frac{xy}{Q}} |y\\rangle $$ Wenn man dies auf $|\\psi_3\\rangle$ anwendet, tritt Phaseninterferenz (Quanteninterferenz) auf.\n$$ |\\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 $$ Wenn man die Summe in dieser Formel erweitert,\n$$ \\sum_{k=0}^{M-1} e^{2\\pi i \\frac{kry}{Q}} $$ erscheint dieser Teil. Diese Summe einer geometrischen Reihe verstärkt sich nur dann gegenseitig (Constructive Interference), wenn $ry/Q$ nahe an einer ganzen Zahl liegt; andernfalls hebt sie sich auf (Destructive Interference).\nFolglich ist der Zustand $|y\\rangle$, der mit hoher Wahrscheinlichkeit gemessen wird, eine ganze Zahl $y$, die folgende Bedingung erfüllt:\n$$ \\frac{y}{Q} \\approx \\frac{c}{r} $$ ($c$ ist hierbei irgendeine ganze Zahl).\n4.3. Bestimmung der Periode durch Kettenbruchentwicklung Nachdem man durch Messung $y$ erhalten hat, führt man mithilfe eines klassischen Computers eine „Kettenbruchentwicklung“ (Continued Fraction Expansion) von $y/Q$ durch. Dadurch kann man den Näherungsbruch $c/r$ von $y/Q$ berechnen und aus dem Nenner die Kandidaten für die Periode $r$ hocheffizient extrahieren.\n5. Vergleich konzeptioneller Modelle und der Paradigmenwechsel Um den Unterschied zwischen GNFS und dem Shor-Algorithmus intuitiv zu verstehen, zeigen wir im Folgenden ein Konzeptdiagramm in der Mermaid-Syntax.\nKonzeptdiagramm des Shor-Algorithmus durch Quantenschaltkreise 1 2 3 4 5 6 7 8 9 10 11 12 13 graph TD A[Anfangszustand: 0...0] --\u0026gt; B[Superposition aller Zustände durch Hadamard-Transformation] B --\u0026gt; C[Modulare Exponentiation a^x mod N] C --\u0026gt;|Quantenverschränkung| D[Kollaps in einen Zustand mit Periodizität] D --\u0026gt; E[Quanten-Fourier-Transformation QFT] E --\u0026gt;|Wahrscheinlichkeitsverstärkung durch Interferenz| F[Messung: y erhalten] F --\u0026gt; G[Klassische Verarbeitung: Kettenbruchentwicklung] G --\u0026gt; H[Entdeckung der Periode r] H --\u0026gt; I[Berechnung der Primfaktoren von N] style A fill:#f9f,stroke:#333,stroke-width:2px style E fill:#bbf,stroke:#333,stroke-width:2px style I fill:#bfb,stroke:#333,stroke-width:2px Das Wesen des Paradigmenwechsels GNFS verfolgt den Ansatz, „in einem mathematischen Raum (algebraischen Zahlkörper) nach Relationen zu suchen“ . Da dieser Suchraum jedoch exponentiell mit der Anzahl der Ziffern wächst, wird die Entschlüsselung mit der Rechenleistung klassischer Computer (selbst bei Parallelisierung) faktisch unmöglich, wenn die Schlüssellänge 2048 Bit überschreitet.\nAuf der anderen Seite nutzt der Shor-Algorithmus die „Welleneigenschaften durch Quanteninterferenz“ . Alle Berechnungswege in der Superposition werden gleichzeitig ausgewertet. Durch die QFT werden unnötige Antworten aufgehoben (destruktive Interferenz), und nur die Wahrscheinlichkeitsamplitude der korrekten Periode wird verstärkt (konstruktive Interferenz). Anstatt den Raum zu durchsuchen, wird so der völlig andere Ansatz realisiert, „die richtige Antwort selbst hervortreten zu lassen“ .\n6. Zusammenfassung In diesem Artikel haben wir das „GNFS“ , den Höhepunkt der klassischen Grenzen, und den „Shor-Algorithmus“ , der die Kraft des Quantencomputings demonstriert, hinsichtlich ihrer mathematischen Hintergründe und algorithmischen Strukturen tiefgehend verglichen.\nWährend GNFS durch mathematische Tricks wie die Polynomauswahl und riesige Matrixberechnungen die Zeitkomplexität auf subexponentielle Zeit reduzierte, gelang dem Shor-Algorithmus ein sofortiger Durchbruch in die polynomielle Zeit. Er verschmolz die Grundprinzipien der Quantenmechanik – Superposition und Interferenz – mit mathematischen Werkzeugen (QFT).\nDerzeit gibt es keine fehlertoleranten Quantencomputer (FTQC), die den Shor-Algorithmus in einem praktischen Maßstab (Tausende von Qubits) ausführen können. Das bloße Vorhandensein dieses mathematischen und theoretischen Paradigmenwechsels ist jedoch der Hauptgrund, warum der Übergang zur Post-Quanten-Kryptographie (PQC: Post-Quantum Cryptography) derzeit weltweit dringend vorangetrieben wird.\n","date":"0001-01-01T00:00:00Z","image":"http://kenji.blog/p/gnfs-to-shors-algorithm-math-deepdive/quantum_vs_gnfs_eyecatch_1788616101508_hud95a00206aa1dcf32de9cdc0ccb17972_1096815_120x120_fill_q75_box_smart1.jpg","permalink":"http://kenji.blog/de/p/gnfs-to-shors-algorithm-math-deepdive/","title":"【Vollständiges Verständnis durch Formeln】 Warum das stärkste klassische Verfahren GNFS von Quantenalgorithmen besiegt wird: Der Paradigmenwechsel der Primfaktorzerlegung"}]