[{"content":"Keamanan informasi dalam masyarakat internet modern dilindungi oleh kriptografi kunci publik seperti kriptografi RSA. Dasar keamanan kriptografi RSA bergantung pada fakta bahwa \u0026ldquo;faktorisasi prima dari bilangan komposit yang sangat besar sangatlah sulit secara komputasi\u0026rdquo; .\nDalam artikel ini, kita akan mengungkap mekanisme matematis dari \u0026ldquo;General Number Field Sieve\u0026rdquo; (GNFS), algoritma faktorisasi prima terkuat untuk komputer klasik, dan mendalami mengapa algoritma ini sepenuhnya dikalahkan oleh \u0026ldquo;Algoritma Shor\u0026rdquo; yang ditemukan oleh Peter Shor. Kita akan mengeksplorasi pergeseran paradigma ini secara mendalam menggunakan rumus dan diagram konseptual.\n1. Pendekatan Faktorisasi Prima dalam Komputasi Klasik: Perkembangan dari Metode Faktorisasi Fermat Masalah faktorisasi prima adalah masalah untuk menemukan bilangan prima $p, q$ sedemikian rupa sehingga $N = p \\times q$ untuk suatu bilangan komposit $N$ yang diberikan.\nIde dasarnya bermuara pada penemuan $x, y$ non-trivial yang memenuhi persamaan kongruensi berikut:\n$$ x^2 \\equiv y^2 \\pmod N $$ Jika kita memodifikasinya, kita mendapatkan:\n$$ x^2 - y^2 \\equiv 0 \\pmod N $$ $$ (x - y)(x + y) \\equiv 0 \\pmod N $$ Di sini, jika $x \\not\\equiv \\pm y \\pmod N$, kita dapat memperoleh faktor non-trivial dari $N$ dengan menghitung $\\gcd(x-y, N)$ atau $\\gcd(x+y, N)$. Fakta ini merupakan dasar dari algoritma faktorisasi modern seperti GNFS.\n2. Algoritma Klasik Terkuat: Kedalaman dari \u0026ldquo;General Number Field Sieve\u0026rdquo; (GNFS) \u0026ldquo;GNFS\u0026rdquo; adalah algoritma faktorisasi prima tercepat yang diketahui untuk komputer klasik saat ini. Kompleksitas waktunya membutuhkan waktu sub-eksponensial (Sub-exponential).\nKompleksitas GNFS Jika kita asumsikan jumlah digit dari $N$ adalah $b = \\log_2 N$, kompleksitas GNFS dapat dinyatakan sebagai berikut:\n$$ O\\left( \\exp \\left( \\left(\\frac{64}{9} b\\right)^{1/3} (\\log b)^{2/3} \\right) \\right) $$ Seperti yang dapat dilihat dari rumus ini, kompleksitasnya bukanlah waktu polinomial, melainkan \u0026ldquo;waktu sub-eksponensial\u0026rdquo; yang sedikit lebih lambat dari eksponensial. Meskipun demikian, seiring dengan bertambahnya jumlah digit, waktu komputasi akan meningkat secara astronomis.\nMekanisme Matematis dari GNFS GNFS sebagian besar terdiri dari 4 langkah:\nPemilihan Polinomial (Polynomial Selection) Penyaringan (Sieving) Pengurangan Matriks (Matrix Reduction) Perhitungan Akar Kuadrat (Square Root) 2.1. Pemilihan Polinomial dan Medan Aljabar Pertama, pilih polinomial tak tereduksi $f(x)$ dan $g(x)$ dengan koefisien bilangan bulat. Keduanya diatur untuk memiliki akar persekutuan $m$ modulo $N$. Yaitu:\n$$ f(m) \\equiv 0 \\pmod N $$ $$ g(m) \\equiv 0 \\pmod N $$ Biasanya, $g(x)$ dipilih sebagai polinomial derajat pertama $g(x) = x - m$. Jika akar dari $f(x)$ adalah $\\alpha$, maka \u0026ldquo;Medan Aljabar\u0026rdquo; (Number Field) $\\mathbb{Q}(\\alpha)$ akan dibentuk. Kita membandingkan operasi dalam gelanggang $\\mathbb{Q}(\\alpha)$ dan operasi dalam gelanggang bilangan bulat biasa $\\mathbb{Z}$ melalui homomorfisme $\\phi: \\alpha \\mapsto m$.\n2.2. Penyaringan (Sieving) Selanjutnya, kita mencari sejumlah besar pasangan bilangan bulat koprima $(a, b)$. Tujuannya adalah untuk menemukan pasangan sedemikian rupa sehingga kedua nilai berikut adalah \u0026ldquo;B-smooth\u0026rdquo; (hanya terdiri dari faktor prima yang relatif kecil):\n$a - bm$ (nilai pada gelanggang bilangan bulat) $b^d f(a/b)$ (sesuai dengan norma $N(a - b\\alpha)$ pada medan aljabar) Di sini, teknik pencarian cepat yang disebut \u0026ldquo;Saringan\u0026rdquo; (Sieve) digunakan. Hal ini memungkinkan ekstraksi pasangan $(a, b)$ yang memenuhi kondisi dari kandidat dalam jumlah yang sangat besar secara efisien.\n2.3. Pengurangan Matriks (Linear Algebra over GF(2)) Dari pasangan $(a, b)$ yang dikumpulkan, kita membentuk vektor eksponen dan mencari ruang nol kiri dari matriks renggang (sparse matrix) besar pada $\\mathbb{F}_2$ (medan dengan elemen hanya 0 dan 1).\nKita mencari solusi vektor $v$ sehingga relasi $ \\prod (a_i - b_i m) $ dan $ \\prod (a_i - b_i \\alpha) $ masing-masing menjadi elemen kuadrat sempurna. Hal ini tidak lain adalah menyelesaikan sistem persamaan linear:\n$$ M \\mathbf{x} \\equiv \\mathbf{0} \\pmod 2 $$ Di sini, algoritma komputasi numerik tingkat lanjut seperti Block Lanczos Algorithm atau Block Wiedemann Algorithm dimanfaatkan.\n2.4. Perhitungan Akar Kuadrat Terakhir, kita mengambil akar kuadrat dari medan aljabar dan gelanggang bilangan bulat, yang menghasilkan relasi $x^2 \\equiv y^2 \\pmod N$. Kemudian, kita menghitung $\\gcd(x-y, N)$ dan memperoleh faktornya.\n3. Terobosan Komputasi Kuantum: \u0026ldquo;Algoritma Shor\u0026rdquo; Berbeda dengan GNFS yang membutuhkan waktu sub-eksponensial, \u0026ldquo;Algoritma Shor\u0026rdquo; yang diterbitkan oleh Peter Shor pada tahun 1994, dapat memecahkan masalah ini dalam \u0026ldquo;waktu polinomial\u0026rdquo; dengan menggunakan komputer kuantum.\nKompleksitas Algoritma Shor Jika kita mengasumsikan jumlah qubit sebagai $O(\\log N)$, maka kompleksitas waktunya adalah:\n$$ O((\\log N)^3) $$ Ini berarti tidak terjadi ledakan eksponensial sehubungan dengan jumlah bit. Ini adalah hasil yang menakjubkan di mana bilangan komposit sangat besar yang waktu komputasi \u0026ldquo;komputasi klasik\u0026rdquo; -nya melebihi umur alam semesta, dapat dipecahkan dalam hitungan jam hingga hari menggunakan \u0026ldquo;komputasi kuantum\u0026rdquo; .\nGambaran Umum Algoritma Shor: Reduksi ke Masalah Pencarian Periode Algoritma Shor dengan cerdik mereduksi masalah faktorisasi prima menjadi \u0026ldquo;masalah pencarian periode\u0026rdquo; .\nPilih bilangan bulat acak $a$ yang relatif prima dengan $N$ ($1 \u003c a \u003c N$). Definisikan fungsi $f(x) = a^x \\bmod N$. Temukan periode $r$ dari $f(x)$, yaitu bilangan bulat positif terkecil $r$ sedemikian rupa sehingga $a^r \\equiv 1 \\pmod N$. Jika $r$ bernilai genap, periksa apakah $a^{r/2} \\not\\equiv -1 \\pmod N$, lalu hitung $\\gcd(a^{r/2} \\pm 1, N)$ untuk mendapatkan faktor prima. Langkah ke-3, yaitu \u0026ldquo;penemuan periode $r$\u0026rdquo; , adalah hambatan yang memerlukan waktu eksponensial pada komputer klasik. Namun, komputer kuantum memecahkan masalah ini dalam sekejap menggunakan \u0026ldquo;Superposisi Kuantum\u0026rdquo; dan \u0026ldquo;Transformasi Fourier Kuantum\u0026rdquo; (QFT).\n4. Transformasi Fourier Kuantum (QFT) dan Ekstraksi Periode Mari kita lihat lebih dekat operasi matematis keadaan kuantum yang menjadi inti dari Algoritma Shor.\n4.1. Generasi Superposisi Kuantum Pertama, siapkan 2 register kuantum. Register 1 menahan keadaan superposisi input $x$, dan Register 2 menahan hasil komputasi fungsi $f(x)$. Terapkan Transformasi Hadamard (Hadamard Transform) ke keadaan awal $|0\\rangle |0\\rangle$ untuk menciptakan superposisi semua kemungkinan $x$.\n$$ |\\psi_1\\rangle = \\frac{1}{\\sqrt{Q}} \\sum_{x=0}^{Q-1} |x\\rangle |0\\rangle $$ (Di mana $Q$ adalah pangkat 2 yang memenuhi $N^2 \\le Q \u003c 2N^2$)\nSelanjutnya, gunakan orakel kuantum $U_f$ untuk menghitung $f(x) = a^x \\bmod N$ dan menyimpannya di register 2.\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 $$ Sekarang asumsikan register 2 diukur (secara teoritis, meskipun tidak diukur, struktur matematisnya tetap sama). Jika suatu nilai $y = a^{x_0} \\bmod N$ diamati, keadaan register 1 akan runtuh (collapse) ke superposisi semua $x$ yang memenuhi $f(x) = y$. Misalkan periodenya adalah $r$, maka $x$ tersebut adalah $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 $$ (Di mana $M \\approx Q/r$ adalah jumlah suku)\nKeadaan ini mengandung informasi periode $r$, namun pengukuran langsung hanya akan menghasilkan $x_0 + kr$ acak, dan periode $r$ tetap tidak diketahui. Di sinilah QFT berperan.\n4.2. Penerapan Transformasi Fourier Kuantum (QFT) QFT adalah operasi yang menerapkan transformasi Fourier diskrit ke amplitudo keadaan kuantum. Aksi QFT pada keadaan $|x\\rangle$ didefinisikan sebagai berikut:\n$$ \\text{QFT} |x\\rangle = \\frac{1}{\\sqrt{Q}} \\sum_{y=0}^{Q-1} e^{2\\pi i \\frac{xy}{Q}} |y\\rangle $$ Bila ini diterapkan pada $|\\psi_3\\rangle$, interferensi fase (interferensi kuantum) akan terjadi.\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 $$ Jika kita memperluas penjumlahan dari rumus ini, bagian berikut muncul:\n$$ \\sum_{k=0}^{M-1} e^{2\\pi i \\frac{kry}{Q}} $$ Penjumlahan deret geometri ini akan saling menguatkan (Constructive Interference) hanya ketika $ry/Q$ mendekati bilangan bulat, dan akan saling meniadakan (Destructive Interference) pada titik lainnya.\nOleh karena itu, keadaan $|y\\rangle$ yang diukur dengan probabilitas tinggi akan berupa bilangan bulat $y$ yang memenuhi:\n$$ \\frac{y}{Q} \\approx \\frac{c}{r} $$ (Di mana $c$ adalah suatu bilangan bulat).\n4.3. Identifikasi Periode melalui Ekspansi Pecahan Berlanjut Setelah memperoleh $y$ melalui pengukuran, gunakan komputer klasik untuk melakukan \u0026ldquo;Ekspansi Pecahan Berlanjut\u0026rdquo; (Continued Fraction Expansion) pada $y/Q$. Hal ini memungkinkan penghitungan pecahan hampiran $c/r$ dari $y/Q$ dan mengekstrak kandidat periode $r$ dari penyebut secara sangat efisien.\n5. Perbandingan Model Konseptual dan Pergeseran Paradigma Untuk memahami secara intuitif perbedaan antara GNFS dan Algoritma Shor, diagram konseptual ditunjukkan menggunakan notasi Mermaid.\nDiagram Konseptual Algoritma Shor dengan Sirkuit Kuantum 1 2 3 4 5 6 7 8 9 10 11 12 13 graph TD A[Keadaan Awal: 0...0] --\u0026gt; B[Superposisi semua keadaan dengan Transformasi Hadamard] B --\u0026gt; C[Operasi Pangkat Modular a^x mod N] C --\u0026gt;|Keterikatan Kuantum| D[Runtuh ke keadaan dengan periodisitas] D --\u0026gt; E[Transformasi Fourier Kuantum QFT] E --\u0026gt;|Amplifikasi probabilitas via interferensi| F[Pengukuran: Mendapatkan y] F --\u0026gt; G[Pemrosesan Klasik: Ekspansi Pecahan Berlanjut] G --\u0026gt; H[Penemuan Periode r] H --\u0026gt; I[Menghitung Faktor Prima dari 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 Intisari Pergeseran Paradigma GNFS menggunakan pendekatan \u0026ldquo;mencari relasi di dalam ruang matematis (medan aljabar)\u0026rdquo; . Namun, karena ruang pencarian meluas secara eksponensial sehubungan dengan jumlah digit, dekripsi pada dasarnya menjadi mustahil untuk panjang kunci melebihi 2048 bit menggunakan kemampuan komputasi klasik (bahkan dengan paralelisasi).\nDi sisi lain, Algoritma Shor memanfaatkan \u0026ldquo;sifat gelombang dari interferensi kuantum\u0026rdquo; . Algoritma ini mengevaluasi semua jalur komputasi dalam keadaan superposisi secara simultan, saling meniadakan (melemahkan) jawaban yang tidak perlu menggunakan QFT, dan hanya menguatkan amplitudo probabilitas dari periode yang benar. Dengan ini, pendekatan tersebut tidak lagi mencari di dalam ruang, melainkan mengadopsi dimensi yang sama sekali berbeda: \u0026ldquo;membuat jawaban yang benar muncul ke permukaan\u0026rdquo; .\n6. Kesimpulan Dalam artikel ini, kami telah membandingkan secara mendalam latar belakang matematis dan struktur algoritma antara \u0026ldquo;GNFS\u0026rdquo; yang merupakan batas ekstrem komputasi klasik, dengan \u0026ldquo;Algoritma Shor\u0026rdquo; yang memamerkan kekuatan komputasi kuantum.\nSementara GNFS menggunakan keahlian matematis seperti pemilihan polinomial dan komputasi matriks besar untuk menekan kompleksitas ke waktu sub-eksponensial, Algoritma Shor berhasil mencapai terobosan langsung ke waktu polinomial dengan menggabungkan prinsip dasar mekanika kuantum, yakni superposisi dan interferensi, dengan alat matematis (QFT).\nSaat ini, belum ada Komputer Kuantum Toleran Kesalahan (FTQC) berskala praktis (ribuan qubit) yang mampu menjalankan Algoritma Shor. Namun, keberadaan pergeseran paradigma teoritis dan matematis inilah yang menjadi alasan utama mengapa transisi ke Kriptografi Pasca-Kuantum (PQC: Post-Quantum Cryptography) dipercepat secara global di seluruh dunia saat ini.\n","date":"2026-09-06T12:00:00+09:00","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/id/p/gnfs-to-shors-algorithm-math-deepdive/","title":"【Pemahaman Lengkap dengan Rumus】 Mengapa \"GNFS\" Klasik Terkuat Dikalahkan oleh Algoritma Kuantum? Pergeseran Paradigma dalam Faktorisasi Prima"},{"content":"Pendahuluan: \u0026ldquo;Pergeseran Paradigma Komputasi\u0026rdquo; yang Dibawa oleh Komputer Kuantum Belakangan ini, tiada hari tanpa melihat istilah \u0026ldquo;komputer kuantum\u0026rdquo; di berita atau artikel teknologi. Cerita-cerita fiksi ilmiah seperti \u0026ldquo;menyelesaikan perhitungan yang memakan waktu ribuan tahun di superkomputer saat ini dalam hitungan menit\u0026rdquo; atau \u0026ldquo;semua teknologi kriptografi saat ini mungkin akan diretas\u0026rdquo; diceritakan seolah-olah itu nyata. Perusahaan IT raksasa seperti Google, IBM, dan Microsoft, serta universitas dan perusahaan rintisan di seluruh dunia, bersaing ketat menuju komersialisasi teknologi impian ini.\nNamun, jika ditanya, \u0026ldquo;Apa sebenarnya komputer kuantum itu?\u0026rdquo;, mungkin hanya sedikit orang yang dapat menjawab dengan akurat. Banyak orang memiliki gambaran yang kabur seperti \u0026ldquo;kotak ajaib yang dapat menghitung semua kombinasi pada saat yang bersamaan\u0026rdquo;, tetapi secara teknis, itu tidak benar.\nDalam artikel ini, kami akan menjelaskan dari dasar secara menyeluruh dan mudah dipahami namun tetap teknis, bagaimana komputer kuantum pada dasarnya berbeda dari komputer klasik (PC dan ponsel cerdas yang biasa kita gunakan), dan bagaimana fenomena aneh dari mekanika kuantum seperti \u0026ldquo;Superposisi\u0026rdquo;, \u0026ldquo;Keterikatan (Entanglement)\u0026rdquo;, dan \u0026ldquo;Gerbang Kuantum\u0026rdquo; digunakan dalam komputasi. Saat Anda selesai membaca artikel ini, Anda harus dapat memahami dengan jelas kehebatan esensial dari komputer kuantum dan tantangannya saat ini.\nBab 1: Perbedaan Mendasar antara Komputer Klasik dan Komputer Kuantum Untuk memahami cara kerja komputer kuantum, pertama-tama kita perlu meninjau ulang bagaimana \u0026ldquo;komputer klasik\u0026rdquo; yang kita gunakan saat ini bekerja.\nTabel Perbandingan: Komputer Klasik vs Komputer Kuantum Item Komputer Klasik Komputer Kuantum Unit Dasar Bit (0 atau 1) Qubit (Superposisi 0 dan 1) Representasi Status Deterministik Probabilistik (Tidak ditentukan sampai diamati) Metode Komputasi Pemrosesan sekuensial (memerlukan inti fisik untuk paralelisasi) Paralelisme kuantum (memanipulasi status eksponensial secara bersamaan) Komputasi Unggulan Aritmatika, pemrosesan data harian Faktorisasi prima, komputasi kimia kuantum Toleransi Kesalahan Sangat kuat Sangat lemah (memerlukan lingkungan kriogenik atau koreksi kesalahan) Dunia Komputer Klasik: \u0026ldquo;Bit\u0026rdquo; 0 atau 1 Komputer klasik merepresentasikan semua informasi dalam status \u0026ldquo;0\u0026rdquo; atau \u0026ldquo;1\u0026rdquo;. Ini disebut Bit . Secara fisik, ini direpresentasikan oleh tegangan tinggi (1) atau rendah (0) dari transistor pada chip semikonduktor. Foto beresolusi tinggi di ponsel cerdas Anda, teks yang sedang Anda baca ini, dan video YouTube favorit Anda, pada akhirnya direduksi menjadi \u0026ldquo;rangkaian 0 dan 1\u0026rdquo; yang tak terhitung jumlahnya. Komputasi tidak lain adalah proses memanipulasi rangkaian 0 dan 1 ini dengan menggabungkan sirkuit logika dasar seperti AND (konjungsi), OR (disjungsi), dan NOT (negasi). Ini adalah dunia yang sangat pasti dan deterministik. Jika inputnya sama, output yang sama akan selalu didapatkan.\nDunia Komputer Kuantum: \u0026ldquo;Qubit\u0026rdquo; yang merupakan 0 dan juga 1 Di sisi lain, unit informasi minimum dari komputer kuantum disebut Qubit (Quantum bit) . Fitur terbesar dari qubit adalah bahwa ia tidak hanya berada di salah satu status \u0026ldquo;0\u0026rdquo; atau \u0026ldquo;1\u0026rdquo; seperti bit klasik, tetapi ia juga dapat mengambil \u0026ldquo;status di mana 0 dan 1 dicampur dengan probabilitas tertentu\u0026rdquo;. Ini disebut \u0026ldquo;Superposisi\u0026rdquo; .\nSebagai contoh, jika bit klasik adalah koin yang diletakkan menghadap ke atas sebagai \u0026ldquo;kepala\u0026rdquo; atau \u0026ldquo;ekor\u0026rdquo;, qubit sering dibandingkan dengan \u0026ldquo;koin yang terus berputar di udara\u0026rdquo;. Koin yang berputar tidak bisa dikatakan kepala atau ekor, dan kedua status itu tumpang tindih. Kemudian, pada saat koin jatuh ke lantai dan berhenti bergerak (ini disebut \u0026ldquo;pengamatan\u0026rdquo; dalam mekanika kuantum), barulah \u0026ldquo;kepala\u0026rdquo; atau \u0026ldquo;ekor\u0026rdquo; ditentukan.\nKomputer kuantum justru memasukkan sifat aneh dari dunia mikro (mekanika kuantum) yang \u0026ldquo;statusnya tidak ditentukan sampai diamati\u0026rdquo; ini langsung ke dalam proses pemrosesan informasi.\nBab 2: 3 Sifat Mekanika Kuantum yang Mengubah Komputasi dari Akarnya Sumber daya komputasi komputer kuantum yang luar biasa bukan sekadar karena frekuensi clock-nya tinggi atau komponennya kecil. Ia menggunakan hukum fisika itu sendiri sebagai sumber daya komputasi. Tiga fenomena mekanika kuantum berikut ini adalah kuncinya.\n1. Superposisi dan Jumlah Informasi Eksponensial Seperti yang disebutkan sebelumnya, qubit dapat menahan status 0 dan 1 secara bersamaan. Satu qubit adalah \u0026ldquo;superposisi 0 dan 1\u0026rdquo;, tapi apa yang terjadi jika kita menambah jumlah qubit?\n1 qubit: superposisi 2 status (0, 1) 2 qubit: superposisi 4 status (00, 01, 10, 11) 3 qubit: superposisi 8 status N qubit: superposisi pola $2^N$ Dengan hanya 50 qubit, ia dapat menahan status $2^{50}$ (sekitar 1.100 triliun) secara bersamaan. Dan dengan hanya 300 qubit, ia dapat menahan pola $2^{300}$ (angka yang lebih besar dari jumlah semua atom di alam semesta!) sekaligus. Kemampuan penyimpanan informasi eksponensial ini adalah fondasi potensi komputer kuantum. Adalah hal yang mustahil secara fisik bagi komputer klasik untuk menyimpan status sebanyak jumlah atom di alam semesta dalam memorinya.\n2. Keterikatan (Entanglement): Aksi Jarak Jauh yang Menyeramkan Keterikatan kuantum adalah fenomena misterius yang sangat bertentangan dengan intuisi manusia, sehingga Einstein menyebutnya \u0026ldquo;aksi jarak jauh yang menyeramkan\u0026rdquo; dan tidak pernah menerimanya sepanjang hidupnya.\nKetika beberapa qubit berada dalam status \u0026ldquo;keterikatan kuantum\u0026rdquo;, mereka sangat terkait satu sama lain, menjadi takdir bersama di mana \u0026ldquo;ketika status yang satu ditentukan, tidak peduli seberapa jauh jaraknya, status yang lain juga seketika ditentukan\u0026rdquo; .\nMisalnya, anggaplah ada dua qubit A dan B dalam status terikat (masing-masing dalam status superposisi 0 dan 1). Jika A diamati dan ternyata \u0026ldquo;0\u0026rdquo;, status B akan seketika (misalnya, selalu menjadi \u0026ldquo;1\u0026rdquo;) ditentukan, melampaui kecepatan cahaya, yang merupakan batas kecepatan transmisi informasi. Dalam komputer kuantum, dengan menggunakan keterikatan kuantum ini, korelasi kompleks antar qubit direpresentasikan, dan pemrosesan informasi paralel secara masif dilakukan. Tanpa keterikatan, daya komputasi komputer kuantum tidak akan jauh berbeda dari komputer klasik.\n3. Interferensi Kuantum: Keajaiban yang Memunculkan Jawaban Benar Anda mungkin berpikir, \u0026ldquo;Jika dapat menahan semua pola secara bersamaan, bukankah bisa menghitung semuanya sekaligus dan mendapatkan jawaban dalam sekejap?\u0026rdquo; Ini adalah kesalahpahaman paling umum tentang komputer kuantum. Bahkan jika Anda menghitung dalam status superposisi, Anda akhirnya harus \u0026ldquo;mengamati\u0026rdquo; untuk mengetahui jawabannya. Tetapi pada saat pengamatan, status tersebut menyusut secara acak ke salah satu dari $2^N$ pola. Ini hanya akan menghasilkan jawaban yang acak dan tidak masuk akal.\nDi sinilah \u0026ldquo;Interferensi Kuantum\u0026rdquo; berperan. Ketika gelombang bertabrakan, bagian yang sejajar akan saling menguatkan, dan bagian yang tidak sejajar akan saling meniadakan (prinsip yang pada dasarnya sama dengan earphone noise-canceling).\n\u0026ldquo;Algoritma kuantum\u0026rdquo; yang sangat baik dengan mahir memanipulasi status kuantum selama proses komputasi sehingga \u0026ldquo;amplitudo probabilitas dari status (gelombang) yang mengarah pada jawaban yang benar saling menguatkan (diperkuat)\u0026rdquo; dan \u0026ldquo;amplitudo probabilitas dari status yang mengarah pada jawaban yang salah saling meniadakan (dibatalkan)\u0026rdquo; . Kemudian, saat diamati pada akhirnya, ia dirancang sedemikian rupa sehingga \u0026ldquo;jawaban yang benar\u0026rdquo; akan muncul dengan probabilitas mendekati 100%. Merancang proses interferensi ini dengan baik adalah inti dari pemrograman kuantum.\nBab 3: Bagaimana Cara Menghitungnya? \u0026ldquo;Gerbang Kuantum\u0026rdquo; dan \u0026ldquo;Sirkuit Kuantum\u0026rdquo; Sama seperti komputer klasik yang menggunakan gerbang logika (AND, OR, NOT, dll.) untuk melakukan komputasi, komputer kuantum juga menerapkan operasi yang disebut \u0026ldquo;Gerbang Kuantum\u0026rdquo; ke qubit untuk memajukan komputasi. Kombinasi dari beberapa gerbang kuantum disebut Sirkuit Kuantum .\nStatus qubit secara matematis direpresentasikan sebagai titik di permukaan bola 3 dimensi yang disebut \u0026ldquo;Bola Bloch\u0026rdquo;. Kutub Utara adalah \u0026ldquo;0\u0026rdquo;, Kutub Selatan adalah \u0026ldquo;1\u0026rdquo;, dan ekuator adalah \u0026ldquo;status di mana 0 dan 1 tumpang tindih secara merata\u0026rdquo;. Gerbang kuantum tidak lain adalah operasi memutar status (vektor) pada permukaan bola ini.\nMari kita perkenalkan beberapa gerbang kuantum yang representatif.\n1. Gerbang Hadamard (Gerbang H) Ini adalah gerbang paling dasar unik untuk komputer kuantum, yang tidak ada di komputer klasik. Saat qubit yang statusnya sepenuhnya \u0026ldquo;0\u0026rdquo; melewati gerbang H, ia menciptakan \u0026ldquo;status superposisi sempurna\u0026rdquo; (sebuah titik di ekuator bola Bloch) di mana 0 dan 1 diamati dengan probabilitas persis setengah-setengah. Sebagai langkah inisialisasi untuk komputasi kuantum, banyak algoritma memulai dengan menerapkan gerbang H ini ke semua qubit.\n2. Gerbang Pauli (Gerbang X, Y, Z) Ini adalah gerbang yang mencakup operasi setara dengan gerbang NOT (membalik 0 menjadi 1, dan 1 menjadi 0) pada komputer klasik. Dalam bola Bloch, ini sesuai dengan operasi memutar 180 derajat di sekitar sumbu X, Y, dan Z. Secara khusus, gerbang X membalik Kutub Utara (0) ke Kutub Selatan (1), sehingga bekerja persis sama dengan gerbang NOT klasik. Gerbang Z memiliki peran membalik \u0026ldquo;fase (sesuatu seperti waktu gelombang)\u0026rdquo; dari superposisi, dan sangat penting untuk menyebabkan interferensi kuantum.\n3. Gerbang CNOT (Gerbang NOT Terkendali) Ini adalah gerbang yang sangat penting untuk menciptakan keterikatan kuantum. Ia menggunakan dua qubit (bit kontrol dan bit target). Ia beroperasi sebagai: \u0026ldquo;Jika bit kontrol adalah 1, balikkan status bit target (gerbang X). Jika bit kontrol adalah 0, jangan lakukan apa-apa.\u0026rdquo; Sepintas terlihat seperti kondisi IF sederhana, tapi apa yang terjadi jika bit kontrol dalam \u0026ldquo;status superposisi 0 dan 1\u0026rdquo;? Bit target akan berada dalam \u0026ldquo;status di mana yang dibalik dan yang tidak dibalik ditumpangkan\u0026rdquo;, dan takdir kedua bit akan sepenuhnya tertaut. Kedua qubit tersebut akan dengan indah \u0026ldquo;terikat\u0026rdquo;.\nDengan menempatkan dan menerapkan gerbang-gerbang ini secara berurutan dari kiri ke kanan seperti partitur musik, algoritma yang kompleks pun dijalankan.\nBab 4: Apa Kekuatan dan Kelemahan Komputer Kuantum? Izinkan saya memberi tahu Anda sebuah fakta penting di sini. Komputer kuantum bukanlah dewa yang mahakuasa. Dalam tugas sehari-hari seperti penjelajahan web, rendering video, pemrosesan makro Excel, atau operasi aplikasi ponsel cerdas biasa, komputer kuantum mungkin tidak akan pernah melampaui komputer klasik. Pemrosesan sekuensial ini lebih cocok untuk komputer klasik, yang sudah sangat dioptimalkan dan membanggakan kecepatan yang luar biasa serta harga yang terjangkau.\nKomputer kuantum hanya menunjukkan nilai sebenarnya pada \u0026ldquo;masalah spesifik di mana kombinasi komputasi meledak secara eksponensial di komputer klasik dan akan memakan waktu selama umur alam semesta\u0026rdquo; . Ini disebut \u0026ldquo;Keunggulan Kuantum (Quantum Supremacy)\u0026rdquo; atau \u0026ldquo;Keuntungan Kuantum (Quantum Advantage)\u0026rdquo;.\nKeahlian Komputer Kuantum (Aplikasi Pembunuh) 1. Faktorisasi Prima dan Dekripsi Kriptografi (Algoritma Shor) Saat ini, komunikasi aman di internet (seperti pembayaran kartu kredit dan pengiriman informasi pribadi) dilindungi oleh \u0026ldquo;kriptografi RSA\u0026rdquo;, yang didasarkan pada premis bahwa \u0026ldquo;faktorisasi prima dari bilangan yang sangat besar secara praktis mustahil (membutuhkan waktu yang sangat lama) bagi komputer klasik\u0026rdquo;. Namun, dengan menggunakan \u0026ldquo;Algoritma Shor\u0026rdquo; yang ditemukan oleh matematikawan Peter Shor pada tahun 1994, komputer kuantum dapat menggunakan interferensi dengan cerdik untuk memecahkan ini dengan kecepatan dramatis (waktu polinomial). Akibatnya, ada risiko bahwa sistem kriptografi saat ini akan runtuh di masa depan, dan bank sentral serta lembaga pemerintah di seluruh dunia bergegas untuk beralih ke \u0026ldquo;Kriptografi Pasca-Kuantum\u0026rdquo;.\n2. Komputasi Kimia Kuantum serta Pengembangan Material \u0026amp; Obat Baru Perilaku molekul dan atom di alam pada dasarnya mengikuti hukum mekanika kuantum. Jika kita mencoba mensimulasikan perilaku molekul kompleks dengan komputer klasik, kombinasi interaksi antar elektron akan meledak, dan kita akan membentur batas komputasi bahkan untuk molekul yang relatif kecil. Seperti yang dikatakan peraih Hadiah Nobel Fisika Richard Feynman, \u0026ldquo;Jika Anda ingin mensimulasikan alam, Anda harus membuatnya secara mekanika kuantum,\u0026rdquo; komputer kuantum menunjukkan kekuatan asli yang luar biasa dalam simulasi material. Terobosan yang akan memecahkan tantangan umat manusia diharapkan, seperti desain obat baru yang inovatif, penemuan bahan superkonduktor suhu kamar, pengembangan bahan sel surya dan baterai efisiensi tinggi, serta sintesis pupuk hemat energi.\n3. Masalah Optimasi Kombinasi dan Pencarian (Algoritma Grover) Algoritma kuantum juga efektif untuk masalah menemukan pilihan terbaik dari sejumlah besar pilihan (seperti rute logistik optimal, optimasi portofolio keuangan, dll.). Menggunakan \u0026ldquo;Algoritma Grover\u0026rdquo;, data dapat ditemukan dari database yang tidak terurut dengan jumlah pencarian akar kuadrat dari komputer klasik. Misalnya, jika ada 100 juta data, pencarian yang memakan waktu maksimal 100 juta kali secara klasik dapat diselesaikan hanya dalam sekitar 10.000 kali.\nBab 5: Tembok Perangkat Keras yang Menghadang: \u0026ldquo;Dekoherensi\u0026rdquo; dan \u0026ldquo;Koreksi Kesalahan Kuantum\u0026rdquo; Meskipun secara teoritis kuat bagaikan sihir, jalan menuju komersialisasi komputer kuantum dihalangi oleh tembok fisik yang sangat tinggi dan curam. Musuh terbesarnya adalah \u0026ldquo;Noise (Kebisingan)\u0026rdquo; .\n\u0026ldquo;Superposisi\u0026rdquo; dan \u0026ldquo;Keterikatan Kuantum\u0026rdquo; dari qubit adalah keadaan yang sangat rapuh dan mudah rusak. Hanya dengan sentuhan sedikit panas dari lingkungan, fluktuasi gelombang elektromagnetik, atau sinar kosmik, keadaan magis tersebut seketika runtuh dan menjadi bit klasik biasa. Fenomena ini disebut \u0026ldquo;Dekoherensi\u0026rdquo; .\nPersaingan Sengit dalam Metode Realisasi Fisik Saat ini, berbagai metode sedang diteliti di seluruh dunia mengenai bagaimana secara fisik membuat qubit rapuh ini, dan terjadi perebutan hegemoni.\nMetode Superkonduktor : Diadopsi oleh Google, IBM, Amazon, dll. Menggunakan sirkuit superkonduktor berbentuk loop, ia dikontrol dalam keadaan kuantum dengan mendinginkannya ke suhu kriogenik mendekati nol absolut (sekitar -273°C) dengan kulkas raksasa. Metode ini saat ini yang paling memimpin dan paling mudah untuk meningkatkan jumlah qubit, tetapi perangkat pendinginnya besar dan mahal. Metode Ion Terperangkap : Diadopsi oleh IonQ, Quantinuum, dll. Menjebak ion (atom) dalam ruang hampa dengan medan elektromagnetik dan mengendalikannya dengan laser presisi. Kekuatannya adalah bahwa semua qubit seragam dan status dapat dipertahankan untuk waktu yang lama (waktu koherensi panjang), tetapi kelemahannya adalah kecepatan operasinya lambat dibandingkan superkonduktor. Metode Fotonik : Difokuskan oleh PsiQuantum, dll. Menggunakan partikel cahaya (foton). Ia memiliki keuntungan besar karena sebagian besar beroperasi pada suhu kamar tanpa memerlukan lingkungan kriogenik, dan sangat kompatibel dengan teknologi manufaktur chip silikon dan teknologi komunikasi serat optik yang ada. Metode Topologi : Diteliti oleh Microsoft selama bertahun-tahun. Ini adalah pendekatan ambisius yang menggunakan sifat topologi partikel khusus yang disebut anyon untuk menciptakan qubit yang pada dasarnya kuat terhadap kebisingan lingkungan. Secara teoritis ini yang paling kuat, tetapi dianggap memiliki rintangan tertinggi untuk realisasi fisik. Jalan Menuju Tujuan Akhir \u0026ldquo;Komputer Kuantum Toleran Kesalahan (FTQC)\u0026rdquo; Bahkan di dunia komputer klasik saat ini, kesalahan komputasi (seperti pembalikan bit karena sinar kosmik) ada, tetapi karena diperbaiki dengan sempurna oleh \u0026ldquo;kode koreksi kesalahan\u0026rdquo;, kita dapat menggunakan ponsel cerdas kita tanpa pernah menyadari kesalahan. Untuk melakukan komputasi skala besar yang praktis pada komputer kuantum, \u0026ldquo;Koreksi Kesalahan Kuantum (QEC)\u0026rdquo; yang serupa sangat diperlukan.\nNamun, keadaan kuantum memiliki sifat \u0026ldquo;rusak saat diamati\u0026rdquo;, sehingga ada dilema fatal bahwa Anda tidak dapat secara langsung melihat bagian dalam (mengamati) untuk memeriksa kesalahan. Untuk menghindari ini, sebuah teori telah ditetapkan untuk secara cerdik menggabungkan sejumlah besar \u0026ldquo;qubit fisik\u0026rdquo; yang tidak stabil untuk membangun satu \u0026ldquo;qubit logis\u0026rdquo; yang stabil yang dapat mendeteksi dan mengoreksi kesalahan (seperti kode permukaan). Akan tetapi, dikatakan bahwa 1.000 hingga 10.000 qubit fisik diperlukan untuk membuat satu qubit logis. Untuk menjalankan algoritma Shor dan sejenisnya menggunakan ribuan qubit logis, diperlukan sistem raksasa dengan total jutaan hingga puluhan juta qubit fisik.\nSaat ini kita berada di era yang disebut perangkat NISQ (Noisy Intermediate-Scale Quantum) . Ini adalah mesin transisi tanpa koreksi kesalahan yang berjalan dengan puluhan hingga ratusan qubit. Tujuan akhir, perwujudan \u0026ldquo;Komputer Kuantum Toleran Kesalahan (FTQC)\u0026rdquo; yang sepenuhnya mampu mengoreksi kesalahan, diprediksi oleh para ahli masih membutuhkan penelitian dan pengembangan jangka panjang selama 10 hingga beberapa dekade.\nBab 6: Sejarah dan Prospek Masa Depan Komputer Kuantum Sebagai penutup, mari kita lihat bagaimana komputer kuantum lahir dan ke mana arahnya.\nDari Lahirnya Teori hingga Demonstrasi \u0026ldquo;Keunggulan Kuantum\u0026rdquo; Tahun 1980-an : Fisikawan Paul Benioff dan Richard Feynman mengusulkan konsep komputer menggunakan prinsip mekanika kuantum. Pernyataan \u0026ldquo;Jika Anda ingin mensimulasikan alam, gunakan mekanika kuantum\u0026rdquo; menjadi titik awalnya. Tahun 1994 : Peter Shor mengumumkan algoritma kuantum untuk faktorisasi prima (Algoritma Shor). Ini mengejutkan dunia dan menjadi pemicu masuknya dana penelitian yang sangat besar. Tahun 1996 : Lov Grover mengumumkan algoritma Grover yang mempercepat pencarian data. Tahun 2019 : Sebuah tonggak sejarah. Google mengumumkan bahwa mereka menggunakan prosesor superkonduktor 53-qubit \u0026ldquo;Sycamore\u0026rdquo; untuk menyelesaikan komputasi verifikasi pembangkitan bilangan acak, yang (diduga) memakan waktu 10.000 tahun pada superkomputer klasik, dalam waktu sekitar 200 detik. Ini menjadi topik hangat sebagai deklarasi demonstrasi pertama di dunia dari \u0026ldquo;Keunggulan Kuantum\u0026rdquo; (meskipun kemudian terjadi diskusi hangat, di mana IBM dan yang lainnya membantah bahwa itu dapat dihitung dalam beberapa hari dengan meningkatkan algoritma pada sisi superkomputer klasik). Tahun 2023 dan seterusnya : IBM mengumumkan \u0026ldquo;Condor\u0026rdquo;, prosesor dengan lebih dari 1.000 qubit. Selain itu, Universitas Harvard dan institusi lain telah berhasil menghasilkan dan memanipulasi \u0026ldquo;qubit logis\u0026rdquo;, dan demonstrasi awal teknologi koreksi kesalahan mulai dilaporkan satu demi satu. Menuju Teknologi Generasi Berikutnya Komputer kuantum bukanlah sekadar \u0026ldquo;CPU generasi berikutnya dengan kecepatan clock yang lebih cepat\u0026rdquo;. Ini adalah pergeseran paradigma nyata dalam ilmu informasi, yang pada dasarnya menulis ulang konsep komputasi itu sendiri dengan aturan mekanika kuantum yang mengatur dunia mikro.\nDalam masa hidup kita, kita mungkin tidak akan memiliki \u0026ldquo;ponsel cerdas kuantum pribadi\u0026rdquo; yang muat di saku kita (dan itu juga tidak diperlukan). Namun, masa depan di mana pusat data kuantum perkasa di luar jaringan cloud seperti AWS atau Azure tiba-tiba menemukan obat mujarab untuk penyakit yang tidak dapat disembuhkan, atau menghasilkan material energi bersih impian untuk mengatasi pemanasan global (misalnya, katalis yang mensintesis amonia dari nitrogen di udara pada suhu kamar), dipastikan semakin dekat.\nSaat ini kita masih berada di fase awal yang setara dengan ENIAC pada 1940-an, yang berjalan pada kartu punch sementara panas dari tabung vakum raksasa membuat ruangan menjadi sangat panas. Namun, para peneliti dan insinyur terkemuka dunia memutar otak mereka, dan terobosan teknologi dilaporkan setiap harinya. Fakta bahwa kita dapat menyaksikan secara langsung evolusi \u0026ldquo;fajar komputasi\u0026rdquo; baru ini, bisa dikatakan bahwa kita hidup di era yang sangat menarik dalam sejarah.\nPintu ke dunia kuantum baru saja dibuka. Kita tidak bisa mengalihkan pandangan dari perkembangan di masa depan.\nArtikel ini bertujuan untuk menjelaskan konsep dasar komputasi kuantum dengan cara yang mudah dipahami bagi para pelaku bisnis dan masyarakat umum yang tertarik pada teknologi. Harap dicatat bahwa beberapa definisi matematis dan fisik yang ketat (seperti rincian notasi Bra-ket dan amplitudo probabilitas kompleks) telah disederhanakan.\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/id/p/quantum-computer-basics/","title":"【Kupas Tuntas】 Apa itu Komputer Kuantum? 〜Prinsip Komputasi Utama dari Nol〜"},{"content":"Pengantar: \u0026ldquo;Ancaman\u0026rdquo; terhadap Teknologi Kriptografi yang Dibawa oleh Komputer Kuantum Saat ini, komunikasi yang kita lakukan setiap hari di internet——pembayaran perbankan online, penjelajahan situs web (HTTPS), pertukaran pesan di aplikasi, hingga transaksi blockchain dan aset kripto——sebagian besar dilindungi oleh teknologi yang disebut \u0026ldquo;kriptografi kunci publik\u0026rdquo;. Secara khusus, algoritma seperti kriptografi RSA dan Kriptografi Kurva Eliptik (ECC) menjadi dasar yang mendukung keandalan masyarakat digital modern.\nMetode kriptografi ini didasarkan pada masalah matematika yang sulit, seperti \u0026ldquo;faktorisasi bilangan prima besar\u0026rdquo; atau \u0026ldquo;masalah logaritma diskrit\u0026rdquo;, yang membutuhkan waktu astronomis untuk dipecahkan oleh komputer klasik saat ini (termasuk superkomputer). Namun, seiring dengan kemajuan pesat Komputer Kuantum dalam beberapa tahun terakhir, premis ini akan runtuh secara mendasar jika komputer tersebut dipraktikkan.\nPada tahun 1994, Peter Shor menerbitkan \u0026ldquo;Algoritma Shor\u0026rdquo;, yang membuktikan secara matematis bahwa faktorisasi bilangan prima dan masalah logaritma diskrit dapat diselesaikan dalam waktu yang sangat singkat jika menggunakan komputer kuantum dengan kinerja yang memadai. Ini berarti ada risiko bahwa semua komunikasi terenkripsi yang melindungi internet saat ini akan dapat didekripsi di masa depan (masalah yang disebut Y2Q: Years to Quantum, atau Q-Day).\nLebih parah lagi, ada metode serangan yang disebut \u0026ldquo;Harvest Now, Decrypt Later (Curi data sekarang dan simpan, dekripsi nanti saat kriptografi dapat dipecahkan)\u0026rdquo;. Data yang perlu dirahasiakan selama beberapa dekade, seperti informasi rahasia negara, kekayaan intelektual perusahaan, dan informasi biometrik individu, mungkin telah menjadi sasaran pencurian dengan premis bahwa mereka akan didekripsi di masa depan.\nUntuk mengatasi krisis yang belum pernah terjadi sebelumnya ini, kriptografer dan lembaga penelitian di seluruh dunia mengerahkan seluruh upaya untuk mengembangkan teknologi kriptografi generasi berikutnya yang dapat mempertahankan keamanan dari serangan komputer kuantum, yaitu Kriptografi Pasca-Kuantum (PQC: Post-Quantum Cryptography) . Artikel ini akan menjelaskan secara rinci mulai dari dasar-dasar PQC, mekanisme algoritma utama, hingga tren standardisasi global terbaru yang didorong oleh Institut Nasional Standar dan Teknologi AS (NIST).\nApa itu Kriptografi Pasca-Kuantum (PQC)? Kriptografi Pasca-Kuantum (Post-Quantum Cryptography, PQC) adalah istilah umum untuk algoritma kriptografi yang dirancang agar dapat beroperasi di komputer klasik yang ada, namun tetap tahan terhadap serangan oleh komputer kuantum skala besar di masa depan (seperti Algoritma Shor).\nTeknologi yang sering dibingungkan adalah \u0026ldquo;Kriptografi Kuantum (Quantum Cryptography)\u0026rdquo; dan \u0026ldquo;Distribusi Kunci Kuantum (QKD)\u0026rdquo;, namun ini adalah pendekatan yang sama sekali berbeda. Kriptografi Kuantum (QKD) adalah teknologi berbasis perangkat keras yang menggunakan hukum fisika mekanika kuantum (seperti sifat di mana status berubah saat diamati) untuk membuat penyadapan di jalur komunikasi tidak mungkin secara fisik. Ini membutuhkan serat optik khusus atau peralatan khusus, dan memiliki tantangan seperti biaya implementasi serta batasan jarak.\nDi sisi lain, PQC adalah teknologi kriptografi berbasis perangkat lunak yang murni berdasar pada \u0026ldquo;matematika\u0026rdquo; . Oleh karena itu, ia dapat diintegrasikan sebagai pembaruan perangkat software ke infrastruktur internet yang ada, server, ponsel pintar, peramban, dan lainnya, sehingga memiliki penerapan yang sangat tinggi dalam dunia nyata. Perusahaan TI dan lembaga pemerintah di seluruh dunia kini menganggap penting dan mendesak untuk menggantikan (migrasi) RSA dan ECC yang saat ini digunakan dengan PQC ini.\n4 Pendekatan Matematis Utama yang Mendukung PQC Berbagai algoritma PQC telah diusulkan berdasarkan masalah matematika yang sulit dipecahkan secara efisien bahkan dengan menggunakan komputer kuantum (seperti masalah NP-hard). Di sini, kami memperkenalkan 4 kategori utama yang mendominasi saat ini.\nPendekatan Utama Kriptografi Pasca-Kuantum (PQC) 1 2 3 4 5 6 7 8 9 10 11 12 graph LR PQC[Kriptografi Pasca-Kuantum PQC] --\u0026gt; L[Kriptografi Berbasis Kisi Lattice-based] PQC --\u0026gt; H[Kriptografi Berbasis Hash Hash-based] PQC --\u0026gt; M[Kriptografi Polinomial Multivariabel Multivariate] PQC --\u0026gt; C[Kriptografi Berbasis Kode 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. Kriptografi Berbasis Kisi (Lattice-based Cryptography) Saat ini, \u0026ldquo;kriptografi kisi\u0026rdquo; adalah yang paling menjanjikan dan menjadi arus utama di bidang PQC. Kriptografi kisi mendasarkan keamanannya pada masalah titik-titik yang tersusun teratur (titik kisi) dalam ruang multidimensi. Masalah yang terkenal termasuk \u0026ldquo;Masalah Vektor Terpendek (SVP: Shortest Vector Problem)\u0026rdquo; dan \u0026ldquo;Masalah Pembelajaran dengan Kesalahan (LWE: Learning With Errors)\u0026rdquo;.\nRingkasan Mekanisme: Bayangkan titik-titik yang tak terhitung jumlahnya tersusun dalam pola kisi dalam ruang berdimensi sangat tinggi (ratusan hingga ribuan dimensi). Menemukan titik kisi tertentu itu mudah dalam 2 atau 3 dimensi, tetapi pada ratusan dimensi, baik komputer klasik maupun kuantum belum menemukan algoritma untuk menemukannya secara efisien. Secara khusus, masalah LWE memanfaatkan sifat di mana \u0026ldquo;menambahkan \u0026lsquo;kebisingan (kesalahan)\u0026rsquo; kecil secara sengaja ke dalam sistem persamaan linear membuat sangat sulit untuk menebak variabel aslinya\u0026rdquo;.\nKelebihan:\nBerlaku untuk pembagian kunci (KEM) maupun tanda tangan digital. Kecepatan pemrosesan sangat tinggi (terkadang lebih cepat dari RSA atau ECC). Ukuran kunci dan ciphertext relatif kecil, sehingga seimbang. Sebagian besar algoritma yang saat ini distandarisasi oleh NIST (seperti ML-KEM dan ML-DSA) mengadopsi kriptografi berbasis kisi ini.\n2. Kriptografi Berbasis Hash (Hash-based Cryptography) Kriptografi berbasis hash adalah algoritma PQC yang dikhususkan untuk tanda tangan digital. Keamanannya murni bergantung pada ketahanan terhadap benturan dan fungsi satu arah dari \u0026ldquo;fungsi hash kriptografis\u0026rdquo; yang aman, seperti SHA-2 atau SHA-3.\nRingkasan Mekanisme: Ini dimulai dengan skema tanda tangan sekali pakai (one-time signature) yang disebut \u0026ldquo;Tanda Tangan Lamport (Lamport Signature)\u0026rdquo;, yang hanya dapat digunakan sekali. Dengan menggabungkannya ke dalam format data struktur pohon yang disebut \u0026ldquo;Merkle Tree\u0026rdquo;, ia memungkinkan beberapa tanda tangan dengan satu pasang kunci.\nKelebihan:\nDasar keamanannya sangat kokoh, dengan bukti kuat bahwa \u0026ldquo;selama fungsi hash aman, ini aman\u0026rdquo;. Karena kurangnya ketergantungan pada struktur matematika, risiko ditemukannya metode pemecahan yang tidak terduga sangat rendah. Kekurangan:\nTidak dapat digunakan untuk pembagian kunci (KEM), hanya tanda tangan digital. Ukuran tanda tangan cenderung lebih besar. Ada versi \u0026ldquo;stateful\u0026rdquo; dan \u0026ldquo;stateless\u0026rdquo;. Versi stateful (seperti XMSS) memiliki tingkat kesulitan implementasi yang tinggi karena perlu mengelola jumlah penggunaan kunci dengan ketat. NIST menstandarisasi \u0026ldquo;SLH-DSA (sebelumnya SPHINCS+)\u0026rdquo; sebagai tanda tangan berbasis hash yang stateless.\n3. Kriptografi Berbasis Polinomial Multivariabel (Multivariate Cryptography) Kriptografi polinomial multivariabel mendasarkan keamanannya pada kesulitan menyelesaikan sistem polinomial kuadratik yang memiliki banyak variabel (Masalah MQ: Multivariate Quadratic problem). Masalah ini diketahui merupakan NP-hard.\nRingkasan Mekanisme: Pengirim membuat ciphertext (tanda tangan) dengan mensubstitusikan plaintext (atau nilai hash) ke dalam persamaan kompleks dengan banyak variabel yang diberikan sebagai kunci publik. Penerima yang sah memiliki \u0026ldquo;informasi tersembunyi (trapdoor) yang mengubah struktur persamaan menjadi bentuk yang mudah diselesaikan\u0026rdquo; sebagai kunci rahasia, yang digunakannya untuk mendekripsi (atau memverifikasi tanda tangan).\nKelebihan:\nUkuran tanda tangan sangat kecil. Kecepatan verifikasi tanda tangan sangat cepat. Sangat cocok untuk perangkat IoT dengan sumber daya terbatas. Kekurangan:\nUkuran kunci publik sangat besar (bisa mencapai puluhan hingga ratusan kilobyte). Di masa lalu, beberapa algoritma yang menonjol (seperti Rainbow) telah dipecahkan oleh serangan klasik, sehingga sedikit lebih sulit untuk membangun kepercayaan terhadap keamanannya dibandingkan dengan metode lain. 4. Kriptografi Berbasis Kode (Code-based Cryptography) Kriptografi berbasis kode adalah penerapan teori \u0026ldquo;kode koreksi kesalahan\u0026rdquo; yang digunakan untuk memperbaiki kesalahan di jalur komunikasi ke dalam kriptografi. \u0026ldquo;Kriptografi McEliece\u0026rdquo; yang diusulkan pada tahun 1978 adalah yang paling terkenal, dan merupakan salah satu yang tertua di PQC.\nRingkasan Mekanisme: Pengirim menyandikan plaintext menggunakan kunci publik penerima (matriks generator kode koreksi kesalahan yang menyembunyikan struktur tertentu), dan menambahkan kesalahan yang disengaja (kebisingan) sebelum mengirim. Penerima menggunakan kunci rahasia untuk menghilangkan kesalahan dan mengambil plaintext. Penyerang kriptografi harus memperbaiki kesalahan dari kode acak yang tidak tahu strukturnya, yang disebut \u0026ldquo;masalah dekoding sindrom umum\u0026rdquo; dan terbukti NP-hard.\nKelebihan:\nTelah dipelajari secara menyeluruh selama lebih dari 40 tahun tanpa ditemukan serangan yang efektif, sehingga keandalan keamanannya sangat tinggi. Proses enkripsi dan dekripsi yang cepat. Kekurangan:\nUkuran kunci publik sangat besar (bisa mencapai beberapa megabyte). Akibatnya, sulit digunakan dalam lingkungan dengan keterbatasan bandwidth atau memori (seperti handshake TLS). Tren Standardisasi PQC Terbaru oleh NIST Institut Nasional Standar dan Teknologi AS (NIST) meluncurkan panggilan global untuk algoritma kriptografi pasca-kuantum generasi berikutnya pada tahun 2016, dan telah melalui beberapa putaran evaluasi ketat selama bertahun-tahun.\nPada tahun 2024, NIST akhirnya mengumumkan tiga algoritma berikut sebagai Standar Pemrosesan Informasi Federal (FIPS) resmi. Hal ini menyelesaikan fondasi yang kuat bagi organisasi di seluruh dunia untuk mulai mengimplementasikannya di lingkungan produksi.\nStandar FIPS yang Ditetapkan (2024) FIPS 203: ML-KEM (sebelumnya: CRYSTALS-Kyber)\nTujuan: Mekanisme Enkapsulasi Kunci (KEM) / Enkripsi dan Pembagian Kunci Teknologi Dasar: Kriptografi Kisi (Module-LWE) Karakteristik: Menawarkan keseimbangan yang sangat baik antara ukuran kunci dan kecepatan, dan berfungsi sebagai pembagian kunci PQC default untuk penggunaan internet umum seperti komunikasi Web (TLS) dan aplikasi pesan yang aman. FIPS 204: ML-DSA (sebelumnya: CRYSTALS-Dilithium)\nTujuan: Tanda Tangan Digital Teknologi Dasar: Kriptografi Kisi (Module-LWE) Karakteristik: Standar utama untuk tanda tangan digital. Menawarkan pemrosesan yang efisien, dan akan menjadi standar baru untuk semua kasus penggunaan tanda tangan elektronik, seperti penandatanganan perangkat lunak dan otentikasi dokumen. FIPS 205: SLH-DSA (sebelumnya: SPHINCS+)\nTujuan: Tanda Tangan Digital Teknologi Dasar: Kriptografi Berbasis Hash (Stateless) Karakteristik: Memainkan peran penting karena berfungsi sebagai cadangan (backup) jika kelemahan ditemukan dalam kriptografi kisi di masa depan. Meskipun ukuran tanda tangan lebih besar, ini cocok untuk penggunaan yang memerlukan keandalan jangka panjang. Mengejar Keragaman Lebih Lanjut Meskipun NIST telah menyelesaikan proses standardisasi awal, mereka terus mencari algoritma tambahan. Mengingat bahwa standarnya cenderung \u0026ldquo;kriptografi kisi\u0026rdquo;, memastikan Keragaman Kripto (Crypto Diversity) dianggap sangat penting. Evaluasi kriptografi berbasis kode dan lainnya sedang berlangsung sebagai standar cadangan untuk pembagian kunci, dan fondasi PQC akan menjadi lebih kuat di masa depan.\nSkenario dan Tantangan Migrasi PQC: Pentingnya \u0026ldquo;Agility Kripto\u0026rdquo; Dengan dirilisnya standar resmi oleh NIST, lembaga pemerintah, lembaga keuangan, dan perusahaan teknologi di seluruh dunia akan mempercepat migrasi mereka dari RSA/ECC yang ada ke PQC. Pedoman dari Badan Keamanan Nasional AS (NSA) dan lainnya juga merekomendasikan penyelesaian migrasi sejak dini.\nMengadopsi Pendekatan Hibrida Karena algoritma PQC masih baru, mereka belum melalui \u0026ldquo;ujian waktu\u0026rdquo; seperti kriptografi klasik. Mengingat risiko bug tersembunyi dalam implementasi atau metode serangan baru yang ditemukan, \u0026ldquo;Pendekatan Hibrida\u0026rdquo; direkomendasikan selama masa transisi. Ini adalah metode pertukaran kunci yang menggabungkan kriptografi yang sudah ada dan terbukti (misalnya: ECDHE) dengan PQC baru (misalnya: ML-KEM). Saat ini, uji coba pendekatan ini berkembang pesat di peramban utama dan layanan cloud.\nMencapai Agility Kripto (Kelincahan Kriptografi) Hal terpenting yang perlu disadari oleh perusahaan dan pengembang sistem ke depan adalah memastikan \u0026ldquo;Agility Kripto (Crypto-Agility)\u0026rdquo; . Desain arsitektur yang fleksibel yang memungkinkan algoritma kriptografi untuk dipertukarkan atau diperbarui dengan cepat tanpa menghentikan sistem saat cacat ditemukan pada algoritma atau standar baru muncul sangatlah penting.\nLangkah pertama yang penting menuju migrasi PQC adalah membuat Inventaris Kriptografi (CBOM: Cryptography Bill of Materials) untuk memahami secara akurat \u0026ldquo;di mana\u0026rdquo;, \u0026ldquo;kriptografi apa\u0026rdquo;, dan \u0026ldquo;untuk tujuan apa\u0026rdquo; ia digunakan di dalam sistem internal.\nKesimpulan: Bersiap untuk \u0026ldquo;Q-Day\u0026rdquo; yang Akan Datang Sementara evolusi komputer kuantum akan membawa manfaat besar bagi umat manusia, itu juga merupakan ancaman terbesar bagi keamanan kriptografi yang merupakan fondasi masyarakat digital kita saat ini. Kriptografi Pasca-Kuantum (PQC) bukan lagi sekadar \u0026ldquo;topik penelitian masa depan yang jauh\u0026rdquo;. Menyusul tonggak penerbitan standar FIPS oleh NIST, PQC kini telah memasuki fase \u0026ldquo;implementasi dan migrasi\u0026rdquo; berskala penuh.\nMengingat ancaman \u0026ldquo;Harvest Now, Decrypt Later\u0026rdquo;, migrasi ke PQC adalah prioritas utama yang harus dimulai \u0026ldquo;sekarang\u0026rdquo; untuk setiap organisasi yang menangani data sensitif. Mari kita atasi era komputer kuantum yang akan datang dengan aman dengan memahami secara mendalam teknologi kriptografi generasi berikutnya dan meningkatkan agility kripto sistem kita.\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/id/p/post-quantum-cryptography/","title":"【PQC】Gambaran Lengkap \"Kriptografi Pasca-Kuantum\", Kriptografi Generasi Berikutnya di Era Komputer Kuantum"},{"content":"Pengantar: Persimpangan Kriptografi dan Komputer Kuantum Di masyarakat internet modern, dasar untuk melindungi rahasia komunikasi adalah \u0026ldquo;Kriptografi Kunci Publik\u0026rdquo;. Yang paling representatif dari hal ini adalah \u0026ldquo;Enkripsi RSA\u0026rdquo; yang dikembangkan pada tahun 1977 oleh Ron Rivest, Adi Shamir, dan Leonard Adleman. Dari pembayaran belanja online, penelusuran situs web (HTTPS), hingga pengiriman dan penerimaan email, enkripsi RSA berfungsi sebagai jantung infrastruktur internet.\nNamun, dengan munculnya \u0026ldquo;komputer kuantum\u0026rdquo;, ada kemungkinan keamanan ini dihancurkan dari akarnya. Di media berita, kadang-kadang terdapat tajuk utama yang sensasional seperti \u0026ldquo;Setelah komputer kuantum selesai, semua kata sandi dan enkripsi di dunia akan didekripsi dalam hitungan detik\u0026rdquo;. Apakah ini benar-benar terjadi?\nArtikel ini mendalami mekanisme GNFS (General Number Field Sieve) sebagai metode dekripsi kriptografi klasik, dan algoritma dekripsi definitif menggunakan komputer kuantum, yaitu \u0026ldquo;Algoritma Shor\u0026rdquo; (Shor\u0026rsquo;s Algorithm). Kita akan menjelaskan konsep lanjutan seperti Transformasi Fourier Kuantum dan penemuan periode dengan cara yang mudah dimengerti, serta menyelidiki kondisi perangkat keras kuantum saat ini di era NISQ (Noisy Intermediate-Scale Quantum) dan tantangan nyata untuk menghancurkan RSA-2048.\nInti Enkripsi RSA: Kesulitan Faktorisasi Prima Keamanan enkripsi RSA bergantung pada asimetri yang sangat sederhana dalam matematika. Fakta bahwa \u0026ldquo;mudah untuk mengalikan dua bilangan prima raksasa, tetapi sangat sulit untuk menemukan (memfaktorkan) dua bilangan prima asli dari hasil perkalian (bilangan komposit) tersebut\u0026rdquo;.\nMisalnya, mari asumsikan ada dua bilangan prima $ p = 61 $ dan $ q = 53 $. Sangat cepat untuk menghitung perkalian $ N = p \\times q = 3233 $. Namun, hanya diberi angka \u0026ldquo;3233\u0026rdquo; dan diminta untuk memecahkan \u0026ldquo;bilangan prima apa dan bilangan prima apa yang dikalikan untuk ini?\u0026rdquo;, jumlah perhitungan meledak seiring dengan bertambahnya angka.\nDalam RSA-2048 yang saat ini merupakan arus utama, angka komposit besar $ N $ digunakan dengan panjang kunci 2048 bit, atau sekitar 617 digit desimal. Jika $ N $ ini dapat difaktorkan, enkripsinya sama saja dengan sudah terpecahkan.\nTantangan Komputer Klasik: GNFS (General Number Field Sieve) Untuk memecahkan masalah faktorisasi prima, matematikawan dan ahli kriptografi telah mengembangkan berbagai algoritma selama bertahun-tahun. Di antaranya, yang saat ini dianggap tercepat untuk komputer klasik adalah ** GNFS (General Number Field Sieve) **.\nGNFS adalah metode perluasan dan analisis perhitungan dalam cincin bilangan bulat menjadi Number Field aljabar yang lebih abstrak untuk memfaktorkan angka raksasa $ N $. Alurnya secara garis besar sebagai berikut:\n** Pemilihan Polinomial **: Temukan polinomial $ f(x) $ dengan derajat dan koefisien yang sesuai yang memiliki $ N $ sebagai akar. ** Pengumpulan Data (Sieving) **: Cari sejumlah besar pasangan angka yang dapat diuraikan menjadi bilangan prima kecil (bilangan halus, Smooth numbers) di atas field rasional dan field aljabar. Proses ini disebut \u0026ldquo;Sieving\u0026rdquo; dan merupakan bagian yang paling memakan waktu. ** Pembuatan dan Pengurangan Matriks **: Hasilkan matriks sparse raksasa (sebagian besar elemennya adalah 0) berdasarkan relasi yang dikumpulkan, dan selesaikan dengan menggunakan metode aljabar linier (seperti metode block Lanczos). ** Perhitungan Akar Kuadrat **: Terakhir, hitung akar kuadrat pada field aljabar, dan turunkan faktor (faktor prima) dari $ N $. Kompleksitas waktu untuk GNFS dievaluasi secara non-asimtotik sebagai $ O(\\exp((\\sqrt[3]{\\frac{64}{9}} + o(1)) (\\log N)^{\\frac{1}{3}} (\\log \\log N)^{\\frac{2}{3}})) $. Ini disebut kompleksitas waktu \u0026ldquo;Sub-eksponensial\u0026rdquo;. Meskipun lebih cepat dari waktu eksponensial, ini masih jauh lebih lambat dari waktu polinomial.\nFaktanya, pada tahun 2020, tim peneliti internasional berhasil memfaktorkan RSA-250 (angka komposit 829 bit, 250 digit) menggunakan GNFS. Perhitungan ini membutuhkan waktu perhitungan yang sangat besar sekitar 2700 core-year CPU, dengan mengumpulkan sumber daya komputasi dari seluruh dunia. Namun, ketika menjadi 2048 bit, jumlah perhitungan yang diperlukan melonjak triliunan kali umur alam semesta, dan tidak peduli berapa banyak superkomputer saat ini yang dijalankan secara paralel, tidak mungkin untuk memecahkannya dalam waktu yang realistis menggunakan metode klasik.\nKartu Truf Komputer Kuantum: Algoritma Shor Di sinilah \u0026ldquo;Algoritma Shor\u0026rdquo;, yang diumumkan oleh Peter Shor pada tahun 1994, muncul. Algoritma ini merupakan terobosan yang dapat memecahkan masalah faktorisasi prima pada komputer kuantum dalam ** waktu polinomial ** ( $ O((\\log N)^3) $ ). Perbedaan antara waktu sub-eksponensial dan waktu polinomial sangat menentukan, secara teoritis berarti bahwa jika Anda menggunakan komputer kuantum, enkripsi RSA akan hancur sama sekali.\nAlur Keseluruhan Algoritma Shor 1 2 3 4 5 6 7 8 9 10 graph TD A[Masukkan angka N yang ingin difaktorkan] --\u0026gt; B[Pilih bilangan bulat acak a] B --\u0026gt; C{Faktor persekutuan\u0026lt;br\u0026gt;terbesar a dan N} C --\u0026gt;|Lebih dari 1| D[Beruntung menemukan faktor prima!] C --\u0026gt;|1 Saling prima| E[Giliran komputer kuantum] E --\u0026gt; F[Temukan periode r dari fungsi f_x = a^x mod N\u0026lt;br\u0026gt;dengan Transformasi Fourier Kuantum] F --\u0026gt; G{Periode r adalah genap dan\u0026lt;br\u0026gt;a^r/2 ≢ -1 mod N} G --\u0026gt;|Ya| H[Hitung faktor persekutuan terbesar gcd_a^r/2 ± 1, N] H --\u0026gt; I((Faktorisasi Prima Berhasil!)) G --\u0026gt;|Tidak| B Algoritma Shor tidak menyelesaikan masalah faktorisasi prima secara langsung, tetapi mengambil pendekatan menggunakan teorema teori bilangan untuk mengubahnya menjadi masalah lain yang disebut \u0026ldquo;Period Finding Problem\u0026rdquo;, dan menyelesaikannya dengan kecepatan tinggi menggunakan karakteristik komputer kuantum.\nLangkah 1: Reduksi dari Faktorisasi Prima ke Masalah Penemuan Periode (Pemrosesan Klasik) Langkah pertama algoritma dilakukan pada komputer klasik. Untuk angka $ N $ yang ingin difaktorkan, pilih bilangan bulat acak $ a $ ( $ 1 \u003c a \u003c N $ ) yang relatif prima terhadap $ N $ (faktor persekutuan terbesar adalah 1). Jika secara kebetulan faktor persekutuan terbesarnya bukan 1, faktor persekutuan yang ditemukan pada saat itu adalah faktor prima dari $ N $, dan dekripsi selesai, tetapi kemungkinannya sangat rendah.\nSelanjutnya, pertimbangkan urutan persamaan modulo berikut: $ f(x) = a^x \\pmod N $\nSaat mengganti $ x = 1, 2, 3, \\dots $ ke fungsi $ f(x) $ ini, nilainya tampak acak, tetapi karena dihitung dalam rentang terbatas, nilainya selalu kembali ke aslinya di suatu tempat dan mengulangi urutan bilangan yang sama. Periode pengulangan ini disebut $ r $. Yaitu, $ a^r \\equiv 1 \\pmod N $ Masalah mencari bilangan bulat positif terkecil $ r $ ini adalah \u0026ldquo;Period Finding Problem\u0026rdquo;.\nJika periode $ r $ ini ditemukan dan $ r $ genap, menjadi $ a^r - 1 \\equiv 0 \\pmod N $, dan dengan menggunakan rumus faktorisasi dapat diubah menjadi $ (a^{r/2} - 1)(a^{r/2} + 1) \\equiv 0 \\pmod N $. Dari sini, dengan menggunakan algoritma Euclidean untuk menghitung faktor persekutuan terbesar $ N $ dan $ a^{r/2} \\pm 1 $, faktor prima $ N $ dapat diperoleh dengan probabilitas yang sangat tinggi.\nUntuk menemukan periode $ r $ dengan komputer klasik, bagaimanapun juga langkah eksponensial diperlukan dan tidak dapat dipercepat. Namun, dengan komputer kuantum, periode $ r $ ini dapat ditemukan secara instan (dalam waktu polinomial).\nLangkah 2: Persiapan dan Superposisi Keadaan Kuantum Di sinilah peran komputer kuantum. Komputer kuantum menggunakan \u0026ldquo;Qubit\u0026rdquo; yang dapat menahan keadaan \u0026ldquo;0\u0026rdquo; dan \u0026ldquo;1\u0026rdquo; pada saat yang sama. Dalam algoritma Shor, kami menyiapkan dua register: register pertama untuk menyimpan input, dan register kedua untuk menyimpan hasil perhitungan.\nPertama, operasi gerbang kuantum yang disebut gerbang Hadamard diterapkan ke semua qubit pada register pertama. Akibatnya, register pertama menjadi ** keadaan superposisi merata ** dari semua kemungkinan nilai $ x $ (dari $ 0 $ hingga $ 2^n-1 $. Di mana $ n $ adalah jumlah bit yang cukup besar).\nDengan kata lain, keadaan dibuat di mana nilai input tak terhitung $ x=0, 1, 2, 3, \\dots $ ada secara paralel di komputer kuantum.\nLangkah 3: Eksponensiasi Modular Kuantum (Quantum Modular Exponentiation) Selanjutnya, ambil keadaan superposisi register pertama sebagai input, hitung $ f(x) = a^x \\pmod N $, dan simpan hasilnya di register kedua. Karena perhitungan ini dijalankan sebagai transformasi kesatuan pada rangkaian kuantum, perhitungan $ f(x) $ untuk semua $ x $ dilakukan \u0026ldquo;secara paralel secara bersamaan (Paralelisme Kuantum)\u0026rdquo; sambil mempertahankan superposisi.\nPada titik ini ruang keseluruhan sistem kuantum adalah $ |x, a^x \\bmod N\\rangle $ yang merupakan superposisi besar keadaan.\nNamun, jika kita hanya mengukur (mengamati) register kedua di sini, satu nilai $ a^x \\bmod N $ acak dipilih secara probabilistik, dan seiring dengan itu, $ x $ pada register pertama juga akan ditentukan. Ini sama dengan menghitung sekali pada komputer klasik, dan periode $ r $ tidak dapat ditemukan.\nMenurut aturan mekanika kuantum, kita tidak bisa mengintip ke dalam keadaan superposisi secara langsung. Lalu, bagaimana kita mengekstrak informasi global tentang \u0026ldquo;periode\u0026rdquo; secara keseluruhan?\nLangkah 4: Transformasi Fourier Kuantum (QFT: Quantum Fourier Transform) Inti sebenarnya dari algoritma Shor untuk menembus dinding ini adalah penerapan ** Transformasi Fourier Kuantum (QFT) ** ke register pertama.\nSebelum mengukur, mari kita analisis sifat gelombang dari fungsi $ f(x) $. Misalkan register kedua diamati dan nilai $ y $ tertentu diperoleh. Kemudian keadaan register pertama menyusut ke \u0026ldquo;superposisi semua $ x $ di mana $ a^x \\pmod N = y $\u0026rdquo;. Nilai $ x $ ini akan diatur secara diskrit dengan interval periode $ r $, seperti $ x_0, x_0 + r, x_0 + 2r, x_0 + 3r, \\dots $ (semacam distribusi probabilitas amplitudo berbentuk sisir).\nTerapkan Transformasi Fourier Kuantum (QFT) ke keadaan ini. Sama seperti transformasi Fourier diskrit klasik yang mengubah sinyal dalam domain waktu ke domain frekuensi, QFT menyebabkan interferensi dalam amplitudo probabilitas keadaan kuantum.\nKetika QFT diterapkan, karena efek interferensi kuantum, probabilitas jawaban salah yang tidak beresonansi dengan periode $ r $ (fase tidak cocok) saling meniadakan dan mendekati nol (interferensi destruktif), dan hanya probabilitas jawaban yang benar dengan informasi tentang periode $ r $ yang diperkuat (interferensi konstruktif).\nLangkah 5: Pengukuran dan Ekspansi Pecahan Berlanjut (Pemrosesan Klasik Lanjutan) Ketika register pertama diukur setelah menerapkan QFT, kemungkinan besar akan didapatkan bilangan bulat $ c $ yang mendekati bentuk $ c \\approx \\frac{j \\cdot 2^n}{r} $ ($ j $ adalah bilangan bulat yang tidak diketahui, $ 2^n $ adalah ukuran register).\nKembalikan hasil pengukuran $ c $ ini ke komputer klasik, dan buat pecahan $ \\frac{c}{2^n} \\approx \\frac{j}{r} $. Kemudian, dengan menghitung pendekatan menggunakan metode matematika \u0026ldquo;Continued fraction expansion\u0026rdquo;, kita berhasil mengekstraksi penyebut, yang merupakan periode $ r $.\nJika $ r $ diketahui, sisanya adalah menghitung faktor dari $ N $ menggunakan rumus langkah 1, dan enkripsi RSA sepenuhnya hancur.\nKemampuan dan Tantangan Komputer Kuantum Saat Ini (NISQ) Meskipun secara teoritis algoritma Shor sempurna, jika ditanya, \u0026ldquo;Apakah enkripsi RSA akan dibobol besok?\u0026rdquo;, jawabannya jelas \u0026ldquo;Tidak\u0026rdquo;. Alasannya terletak pada batasan teknologi perangkat keras komputer kuantum saat ini.\nEra NISQ (Noisy Intermediate-Scale Quantum) Tempat kita berada sekarang adalah era yang disebut \u0026ldquo;NISQ\u0026rdquo;. Perangkat NISQ memiliki puluhan hingga ratusan qubit fisik, tetapi sangat rentan terhadap kebisingan.\nQubit rentan terhadap pengaruh lingkungan eksternal seperti panas dan gelombang elektromagnetik, dan sering kali terjadi \u0026ldquo;Dekoherensi\u0026rdquo; di mana keadaan kuantum hancur, atau \u0026ldquo;Kesalahan Gerbang\u0026rdquo; selama operasi gerbang. Jika seseorang mencoba menjalankan rangkaian kuantum yang sangat dalam (jumlah langkah operasi sangat besar) seperti algoritma Shor, kesalahan akan menumpuk di tengah perhitungan, dan hasil akhirnya hanyalah noise yang sama sekali tidak berarti.\nQubit Fisik dan Qubit Logis Penting untuk menyelesaikan masalah kesalahan ini dengan \u0026ldquo;Koreksi Kesalahan Kuantum\u0026rdquo;. Kode koreksi kesalahan juga digunakan pada komputer klasik, tetapi karena ada \u0026ldquo;Teorema Larangan Penggandaan Kuantum\u0026rdquo; yang melarang penyalinan keadaan kuantum, koreksi kesalahan kuantum sangat kompleks.\nDalam koreksi kesalahan kuantum, \u0026ldquo;Qubit logis\u0026rdquo; tunggal yang bebas dari kesalahan yang ideal dibuat dengan menggabungkan sejumlah besar \u0026ldquo;Qubit fisik\u0026rdquo; yang penuh kebisingan, menggunakan teknologi seperti \u0026ldquo;Surface Code\u0026rdquo;.\nDengan asumsi tingkat kesalahan saat ini, diperkirakan dibutuhkan sekitar 1.000 hingga 10.000 qubit fisik untuk membuat satu qubit logis. Ini disebut \u0026ldquo;Overhead koreksi kesalahan\u0026rdquo;.\nSumber Daya Apa yang Diperlukan untuk Menghancurkan RSA-2048? Lalu, berapa banyak sumber daya yang dibutuhkan untuk benar-benar chạy algoritma Shor guna mendekripsi RSA-2048?\nMenurut estimasi sumber daya yang memecahkan rekor dalam makalah tahun 2021 oleh Craig Gidney (Google) dan Martin Ekerå, menggunakan algoritma Shor yang dioptimalkan dan melakukan koreksi kesalahan menggunakan Surface Code membutuhkan sumber daya berikut:\n** Qubit Logis **: Sekitar 4.096 ** Qubit Fisik **: ** Sekitar 20 Juta ** (Berasumsi tingkat kesalahan $10^{-3}$) ** Waktu Perhitungan **: Sekitar 8 jam (membutuhkan jutaan hingga miliaran operasi gerbang fisik) Sebagai perbandingan, di manakah posisi perangkat keras kuantum saat ini? Prosesor kuantum superkonduktor \u0026ldquo;Condor\u0026rdquo; yang diumumkan oleh IBM pada akhir tahun 2023 adalah 1.121 qubit. Penelitian terobosan pada pembangkitan qubit logis (seperti 48 qubit logis menggunakan komputer kuantum atom netral oleh Harvard University dan QuEra) juga telah muncul, tetapi masih belum pada tahap di mana \u0026ldquo;operasi tanpa noise yang sempurna\u0026rdquo; dapat dijalankan terus menerus dalam jangka waktu yang lama.\nUntuk meningkatkan skala dari beberapa ribu qubit fisik ke ** 20 juta ** qubit fisik praktis (sistem yang saling terhubung, stabil pada suhu kriogenik, dan memproses sinyal kontrol super cepat), ada kendala rekayasa besar (masalah pemasangan kabel, batasan kapasitas pendinginan, peningkatan elektronik kontrol). Banyak ahli memperkirakan akan memakan waktu setidaknya 10 hingga 30 tahun, atau lebih lama, untuk merealisasikan \u0026ldquo;Komputer Kuantum Toleransi Kesalahan\u0026rdquo; (FTQC) yang mampu memecahkan RSA-2048.\nAncaman yang Mengintai \u0026ldquo;Store Now, Decrypt Later\u0026rdquo; dan Fajar PQC Adalah terlalu dini untuk berpikir bahwa \u0026ldquo;Aman karena masih butuh lebih dari 10 tahun\u0026rdquo;. Saat ini, terdapat data rahasia negara, data medis, dan desain infrastruktur jangka panjang yang rahasianya harus dijamin untuk beberapa dekade mendatang.\nYang menjadi perhatian di sini adalah metode serangan ** \u0026ldquo;Store Now, Decrypt Later\u0026rdquo; (Simpan Sekarang, Dekripsi Nanti) **. Negara atau organisasi yang berniat jahat dapat mencegat semua data komunikasi yang saat ini dienkripsi dengan RSA atau ECC, dan menyimpannya. Kemudian, dalam 10 atau 20 tahun, segera setelah komputer kuantum yang kuat selesai dibangun, mereka akan menggunakan algoritma Shor untuk memecahkan semua data yang lalu dan mengungkap rahasianya.\nUntuk mengatasi ancaman kelambatan waktu ini, proses standardisasi ** \u0026ldquo;Kriptografi Pasca-Kuantum\u0026rdquo; (PQC: Post-Quantum Cryptography) ** telah berjalan dengan kecepatan penuh, berpusat di NIST (National Institute of Standards and Technology AS).\nPQC adalah algoritma enkripsi baru berdasarkan masalah matematika yang sulit dipecahkan bahkan dengan komputer kuantum (dengan kata lain, algoritma Shor tidak dapat diterapkan). Pendekatan utamanya adalah:\n** Kriptografi berbasis Kisi (Lattice-based cryptography) **: Berdasarkan masalah seperti LWE (Learning with Errors). Ini arus utama dalam standardisasi NIST (Kyber, Dilithium, dll.). ** Kriptografi berbasis Kode (Code-based cryptography) **: Mengandalkan sulitnya masalah decoding dari kode koreksi kesalahan. ** Kriptografi Multivariat (Multivariate cryptography) **: Mengandalkan sulitnya memecahkan sistem persamaan polinomial kuadratik multivariat. ** Tanda Tangan berbasis Hash (Hash-based signatures) **: Tanda tangan digital yang hanya mengandalkan keamanan fungsi hash. Platform perangkat lunak utama seperti Google Chrome dan Apple iMessage sudah mulai menguji implementasi PQC atau integrasi hybrid.\nKesimpulan Komputer kuantum sedang bergeser dari impian fiksi ilmiah menjadi tantangan teknik dunia nyata. Algoritma Shor adalah pencapaian intelektual umat manusia yang hebat yang menggabungkan matematika dan mekanika kuantum, tetapi pada saat yang sama memegang \u0026ldquo;kekuatan destruktif\u0026rdquo; untuk mengguncang fondasi masyarakat digital kita.\nEnkripsi RSA tidak akan berhenti menjadi tidak berguna besok. Namun, mengingat evolusi teknologi kuantum dan risiko \u0026ldquo;Store Now, Decrypt Later\u0026rdquo;, migrasi skala besar dalam sejarah kriptografi ke PQC sudah dimulai. Kita sekarang menyaksikan garis depan pergeseran paradigma dalam keamanan informasi.\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/id/p/shors-algorithm-and-rsa-breaking/","title":"Apakah Komputer Kuantum Benar-benar Akan Menghancurkan Enkripsi RSA? ~ Algoritma Shor dan Tahap Saat Ini ~"},{"content":"[Bedah Lengkap] Memahami Algoritma Kriptanalisis Terkuat \u0026ldquo;GNFS\u0026rdquo; dengan Mengimplementasikannya di C++ \u0026ldquo;Kriptografi RSA\u0026rdquo; mendukung dasar dari internet modern. Kekuatannya bergantung pada keyakinan matematis bahwa \u0026ldquo;memfaktorkan bilangan komposit yang sangat besar menjadi faktor prima secara praktis tidak mungkin dilakukan oleh komputer saat ini\u0026rdquo;.\nNamun, umat manusia tidak pernah menyerah. Saat ini, terdapat ** algoritma terkuat dan paling canggih buatan manusia ** untuk faktorisasi prima besar pada komputer klasik (komputer biasa, bukan komputer kuantum). Ini disebut ** \u0026ldquo;General Number Field Sieve (GNFS)\u0026rdquo; **.\nDalam artikel ini, kami akan merilis secara lengkap kode implementasi C++ (menggunakan integer presisi ganda boost::multiprecision dari pustaka Boost) yang memodelkan secara ketat logika komputasi canggih dari GNFS ini. Kami juga akan menjelaskan secara mendalam tentang \u0026ldquo;teori bilangan aljabar\u0026rdquo; di baliknya.\nSilakan nikmati misteri matematika dan kekuatan ilmu komputer yang menaklukkannya bersama dengan kode sumbernya.\n1. Kerangka Logika Canggih GNFS (Kode Sumber Lengkap) Pertama, mari kita lihat gambaran keseluruhan implementasi GNFS C++ yang akan kita bahas kali ini. Sistem Number Field Sieve yang sebenarnya (seperti CADO-NFS) adalah sistem terdistribusi raksasa dengan ratusan ribu baris kode. Namun, kode ini dirancang dengan mengekstrak ** \u0026ldquo;5 alur (fase) esensial\u0026rdquo; ** yang membentuk GNFS menjadi kelas-kelas, memodelkannya dalam konfigurasi minimal tanpa kehilangan makna matematisnya.\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; // Menggunakan integer presisi ganda Boost.Multiprecision using namespace boost::multiprecision; // ============================================================================ // [SOTA GNFS] General Number Field Sieve Kerangka Logika Tercanggih // // Kode ini secara ketat memodelkan 5 alur dari GNFS canggih // yang digunakan dalam CADO-NFS dll., sebagai desain kelas C++ (Boost). // ============================================================================ struct Relation { int64_t a; int64_t b; std::vector\u0026lt;uint32_t\u0026gt; rational_primes; std::vector\u0026lt;uint32_t\u0026gt; algebraic_primes; }; // ============================================================================ // Fase 1: Pemilihan Polinomial (Algoritma KleinJung) // ============================================================================ class PolynomialSelector { public: int degree; std::vector\u0026lt;cpp_int\u0026gt; f; // Polinomial sisi aljabar f(x) std::vector\u0026lt;cpp_int\u0026gt; g; // Polinomial sisi rasional g(x) = x - m cpp_int m; PolynomialSelector(int d) : degree(d) {} // Pembuatan polinomial awal berdasarkan ekspansi basis-m (pada kenyataannya menggunakan reduksi basis kisi LLL yang lebih canggih) void select(const cpp_int\u0026amp; N) { std::cout \u0026lt;\u0026lt; \u0026#34;[Fase 1] Pemilihan Polinomial (Derajat \u0026#34; \u0026lt;\u0026lt; degree \u0026lt;\u0026lt; \u0026#34;) dimulai...\u0026#34; \u0026lt;\u0026lt; std::endl; // Ekspansi basis-m sederhana (derajat d) // m = N^(1/d) cpp_int N_copy = N; m = 1; // Perkiraan m yang sederhana (perkiraan tanpa menggunakan fungsi Boost) 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[Fase 1] Selesai.\u0026#34; \u0026lt;\u0026lt; std::endl; } }; // ============================================================================ // Fase 2: Lattice Sieving (Penyaringan Kisi) // ============================================================================ // GNFS modern tidak menggunakan Line Sieve (Penyaringan Garis), tetapi // menggunakan Special-q Lattice Sieving oleh Franke-Kleinjung sebagai standar de facto. 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;[Fase 2] Membuat Basis Faktor (Batas Rasional: \u0026#34; \u0026lt;\u0026lt; rational_bound \u0026lt;\u0026lt; \u0026#34;, Batas Aljabar: \u0026#34; \u0026lt;\u0026lt; algebraic_bound \u0026lt;\u0026lt; \u0026#34;)\u0026#34; \u0026lt;\u0026lt; std::endl; // (Dihilangkan) Pada kenyataannya, pembuatan bilangan prima dan pemfilteran dengan simbol Legendre dilakukan } std::vector\u0026lt;Relation\u0026gt; sieve(const PolynomialSelector\u0026amp; poly) { std::cout \u0026lt;\u0026lt; \u0026#34;[Fase 2] Special-q Lattice Sieving aktif...\u0026#34; \u0026lt;\u0026lt; std::endl; std::vector\u0026lt;Relation\u0026gt; relations; // Implementasi tiruan: Saringan kisi sebenarnya memindai ruang memori ratusan GB dalam blok // (a, b) pasangan dipetakan ke kisi (a = i*q + j*...) untuk setiap prima khusus q, // dan saringan yang memaksimalkan efisiensi cache dijalankan. // Menambahkan satu relasi tiruan untuk demo 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;[Fase 2] Ditemukan \u0026#34; \u0026lt;\u0026lt; relations.size() \u0026lt;\u0026lt; \u0026#34; relasi.\u0026#34; \u0026lt;\u0026lt; std::endl; return relations; } }; // ============================================================================ // Fase 3: Filtering (Pembersihan Singleton dan Penggabungan Clique) // ============================================================================ class Filter { public: void reduce_matrix(std::vector\u0026lt;Relation\u0026gt;\u0026amp; relations) { std::cout \u0026lt;\u0026lt; \u0026#34;[Fase 3] Menyaring Relasi...\u0026#34; \u0026lt;\u0026lt; std::endl; // 1. Penghapusan singleton (menghapus relasi dengan prima yang muncul hanya sekali) // 2. Penggabungan clique (menggabungkan relasi untuk mengubah matriks jarang menjadi padat) // Pada kenyataannya, algoritma seperti Union-Find digunakan untuk mengompres matriks ratusan juta baris menjadi beberapa juta baris. std::cout \u0026lt;\u0026lt; \u0026#34;[Fase 3] Ukuran matriks dikurangi secara optimal.\u0026#34; \u0026lt;\u0026lt; std::endl; } }; // ============================================================================ // Fase 4: Aljabar Linier di atas GF(2) (Metode Block Wiedemann) // ============================================================================ class LinearAlgebraGF2 { public: // Dalam lingkungan superkomputer modern, daripada metode Block Lanczos, // metode Block Wiedemann (Implementasi Coppersmith) yang cocok untuk komputasi terdistribusi digunakan sebagai teknologi mutakhir. 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;[Fase 4] Algoritma Block Wiedemann di atas GF(2) dimulai...\u0026#34; \u0026lt;\u0026lt; std::endl; // Mengulangi operasi produk antara matriks jarang (sparse) dan vektor, // menemukan beberapa vektor solusi (kernel) yang memenuhi M * x = 0 mod 2. std::vector\u0026lt;std::vector\u0026lt;int\u0026gt;\u0026gt; dependencies; // Daftar dependensi // Data tiruan dependencies.push_back({0}); std::cout \u0026lt;\u0026lt; \u0026#34;[Fase 4] Ditemukan \u0026#34; \u0026lt;\u0026lt; dependencies.size() \u0026lt;\u0026lt; \u0026#34; dependensi linier (kuadrat sempurna).\u0026#34; \u0026lt;\u0026lt; std::endl; return dependencies; } }; // ============================================================================ // Fase 5: Akar Kuadrat Aljabar (Algebraic Square Root) // ============================================================================ 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;[Fase 5] Komputasi Akar Kuadrat Aljabar...\u0026#34; \u0026lt;\u0026lt; std::endl; // 1. Komputasi akar kuadrat V dari sisi rasional (operasi bilangan bulat sederhana) cpp_int V = 1; // V = sqrt( prod(a - bm) ) mod N // 2. Komputasi akar kuadrat gamma dari sisi aljabar (Metode Montgomery, dll.) // Menemukan elemen gamma dari field aljabar besar O_K dan memetakannya ke dunia nyata dengan homomorfisme phi // Y = phi(gamma) mod N cpp_int Y = 1; // Diasumsikan bahwa barisan Karakter Kuadrat (Quadratic Characters) telah ditambahkan di Fase 2 dan 4 // untuk menghindari hambatan (Obstruction) dari grup kelas ideal dan grup unit. std::cout \u0026lt;\u0026lt; \u0026#34; -\u0026gt; Peta homomorfisme phi diterapkan.\u0026#34; \u0026lt;\u0026lt; std::endl; std::cout \u0026lt;\u0026lt; \u0026#34;[Fase 5] Menghitung FPB(V - Y, N)...\u0026#34; \u0026lt;\u0026lt; std::endl; cpp_int factor = gcd(V - Y, N); // FPB(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;[SUKSES] Faktor non-trivial ditemukan: \u0026#34; \u0026lt;\u0026lt; factor \u0026lt;\u0026lt; std::endl; std::cout \u0026lt;\u0026lt; \u0026#34; Faktor lain: \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;[GAGAL] Solusi trivial. Mencoba dependensi berikutnya...\u0026#34; \u0026lt;\u0026lt; std::endl; } } }; // ============================================================================ // Alur Eksekusi Utama // ============================================================================ int main() { std::cout \u0026lt;\u0026lt; \u0026#34;================================================================\u0026#34; \u0026lt;\u0026lt; std::endl; std::cout \u0026lt;\u0026lt; \u0026#34; [SOTA GNFS] Mesin General Number Field Sieve (Boost C++) \u0026#34; \u0026lt;\u0026lt; std::endl; std::cout \u0026lt;\u0026lt; \u0026#34;================================================================\u0026#34; \u0026lt;\u0026lt; std::endl; // Bilangan komposit raksasa N yang ingin difaktorkan, seperti RSA-270 cpp_int N(\u0026#34;233108530344407544527637656910680524145619812480305449042948611968495918245135782867888369318577116418213919268572658314913060672626911354027609793166341626693946596196427744273886601876896313468704059066746903123910748277606548649151920812699309766587514735456594993207\u0026#34;); // Derajat polinomial (untuk lebih dari 130 digit, biasanya dipilih derajat 5 hingga 6) int degree = 6; // Inisialisasi alur PolynomialSelector poly_select(degree); LatticeSieve sieve(10000000, 20000000); // Batas sebenarnya adalah puluhan hingga ratusan juta Filter filter; LinearAlgebraGF2 linalg; AlgebraicSquareRoot sqrt_step; auto start_time = std::chrono::high_resolution_clock::now(); // 1. Pemilihan polinomial poly_select.select(N); // 2. Proses penyaringan (sieve) sieve.generate_factor_bases(); std::vector\u0026lt;Relation\u0026gt; relations = sieve.sieve(poly_select); // 3. Penyaringan (kompresi matriks) filter.reduce_matrix(relations); // 4. Aljabar linier (Pencarian ruang nol di atas GF(2)) std::vector\u0026lt;std::vector\u0026lt;int\u0026gt;\u0026gt; dependencies = linalg.solve_nullspace(relations); // 5. Perhitungan akar kuadrat aljabar dan FPB 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[Sistem] Alur SOTA GNFS selesai dalam \u0026#34; \u0026lt;\u0026lt; elapsed.count() \u0026lt;\u0026lt; \u0026#34; detik.\u0026#34; \u0026lt;\u0026lt; std::endl; return 0; } Lalu, bagaimana kode ini bekerja menghancurkan dinding kriptografi? Kita akan memecah dan menjelaskan algoritma yang cermat dan matematika lanjutan untuk setiap 5 fase.\n2. Tujuan Akhir GNFS: $X^2 \\equiv Y^2 \\pmod N$ Tidak hanya GNFS, tujuan dari sebagian besar algoritma faktorisasi prima raksasa modern adalah menemukan pasangan non-trivial $(X, Y)$ yang memenuhi persamaan kongruensi berikut:\n$$X^2 \\equiv Y^2 \\pmod N$$ Persamaan ini berarti \u0026ldquo;sisa pembagian $X^2$ dan $Y^2$ oleh $N$ adalah sama\u0026rdquo;. Jika kita mengubah ini, $X^2 - Y^2 \\equiv 0 \\pmod N$ Dengan kata lain, $(X-Y)(X+Y)$ adalah kelipatan $N$.\nJika $X \\not\\equiv \\pm Y \\pmod N$ (solusi non-trivial), maka akan ada \u0026ldquo;pembagi persekutuan yang lebih besar dari 1 dan lebih kecil dari $N$\u0026rdquo; antara $(X-Y)$ dan $N$. Di sini, jika kita menggunakan Algoritma Euclidean untuk menghitung ** $\\gcd(X-Y, N)$ **, kita dapat dengan mudah menemukan faktor prima dari $N$.\nNamun, menemukan $X$ dan $Y$ ini seperti mencari jarum di padang pasir. Oleh karena itu, GNFS mengambil pendekatan jenius dengan mendistribusikan komputasi dengan menciptakan ** dua dunia **: \u0026ldquo;dunia bilangan bulat nyata\u0026rdquo; dan \u0026ldquo;dunia field aljabar polinomial\u0026rdquo;.\n3. Fase 1: Pemilihan Polinomial (Polynomial Selection) 1 2 3 4 5 6 7 8 9 10 11 12 class PolynomialSelector { // ... void select(const cpp_int\u0026amp; N) { // perhitungan m = N^(1/d) dan ekspansi basis-m // ... for (int i = 0; i \u0026lt;= degree; ++i) { f[i] = temp % m; temp /= m; } g = {-m, 1}; // g(x) = x - m } }; Langkah pertama GNFS adalah membuat \u0026ldquo;polinomial ajaib\u0026rdquo; untuk menjembatani dua dunia tersebut. Untuk bilangan $N$ yang sangat besar, kita memilih bilangan bulat $m$. Biasanya kita memilih agar $m \\approx N^{1/d}$ (dalam kode, kita mengasumsikan polinomial derajat $d=6$).\nKemudian, $N$ diekspansi ke basis $m$, dan polinomial $f(x)$ dibangun menggunakan koefisien tersebut: $$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$$ Polinomial $f(x)$ ini memiliki sifat yang sangat penting yaitu ** \u0026ldquo;jika kita menyubstitusikan $m$ ke variabel $x$, nilainya tepat $N$ ($f(m) = N$)\u0026rdquo; **. Dengan kata lain, $f(m) \\equiv 0 \\pmod N$. Polinomial sisi rasional didefinisikan sebagai $g(x) = x - m$.\nSebagai hasilnya, ** \u0026ldquo;dunia field aljabar $\\mathbb{Z}[\\alpha]$\u0026rdquo; ** yang diatur oleh akar $\\alpha$ dari $f(x)=0$ dan ** \u0026ldquo;dunia rasional (bilangan bulat) $\\mathbb{Z}$\u0026rdquo; ** biasa akan terikat kuat oleh \u0026ldquo;Homomorfisme Ring\u0026rdquo; $x \\to m$.\nDalam CADO-NFS termutakhir dan lainnya, algoritma KleinJung dan algoritma reduksi basis kisi LLL digunakan untuk mencari \u0026ldquo;polinomial terbaik $f(x)$\u0026rdquo; di mana koefisien polinomial tidak menjadi terlalu besar, dan bilangan prima cenderung muncul (mudah menjadi mulus) pada langkah selanjutnya, yang memakan waktu pencarian berbulan-bulan.\n4. Fase 2: Special-q Lattice Sieving (Penyaringan Kisi q-Khusus) 1 2 3 4 5 6 7 8 9 class LatticeSieve { // ... std::vector\u0026lt;Relation\u0026gt; sieve(const PolynomialSelector\u0026amp; poly) { // ... // Pasangan (a, b) dipetakan ke kisi untuk setiap bilangan prima khusus q, // dan saringan (sieve) yang memaksimalkan efisiensi cache dijalankan. // ... } }; Setelah kedua dunia disiapkan, langkah selanjutnya adalah mencari \u0026ldquo;bilangan mulus (smooth number - bilangan yang hanya terdiri dari faktor prima kecil)\u0026rdquo; di kedua dunia tersebut. Jumlah pasangan integer $(a, b)$ yang tak terhingga dihasilkan, dan dua nilai berikut dihitung:\nNilai sisi rasional : $a - bm$ Norma sisi aljabar : $b^d f(a/b)$ Tujuan GNFS adalah mengumpulkan puluhan hingga ratusan juta dari ** \u0026ldquo;pasangan di mana baik nilai sisi rasional maupun aljabar dapat diuraikan sepenuhnya hanya menggunakan faktor prima kecil (Relasi)\u0026rdquo; **.\nPada GNFS awal, digunakan \u0026ldquo;Line Sieve\u0026rdquo;, di mana pasangan $(a, b)$ disusun pada bidang $xy$ dan dibagi dengan bilangan prima secara berurutan. Namun, metode ini sangat lambat karena menyebabkan banyak cache miss saat mengakses memori.\nOleh karena itu, kode modern tercanggih menggunakan metode yang disebut ** \u0026ldquo;Special-q Lattice Sieve\u0026rdquo; **. Sebuah bilangan prima sedang yang cukup besar $q$ ditetapkan, dan hanya pasangan $(a, b)$ di mana \u0026ldquo;nilai sisi aljabar pasti habis dibagi $q$\u0026rdquo; yang dihitung. Pasangan $(a, b)$ yang memenuhi kondisi ini membentuk \u0026ldquo;Lattice (Kisi)\u0026rdquo; di bidang, membuat lompatan alamat yang dihitung konstan, dan sangat pas di cache L1/L2 CPU. Pengenalan penyaringan kisi ini sangat meningkatkan kecepatan perhitungan GNFS.\n5. Fase 3: Filtering (Penyaringan) 1 2 3 4 5 6 7 class Filter { public: void reduce_matrix(std::vector\u0026lt;Relation\u0026gt;\u0026amp; relations) { // 1. Penghapusan Singleton (menghapus relasi dengan prima yang muncul hanya 1 kali) // 2. Penggabungan Clique (menggabungkan relasi untuk memadatkan matriks yang jarang) } }; Ratusan juta relasi yang dikumpulkan oleh komputer di seluruh dunia selama beberapa bulan pada Fase 2. Namun, jika kita memasukkannya langsung ke \u0026ldquo;langkah memecahkan sistem persamaan (perhitungan matriks)\u0026rdquo; berikutnya, memori superkomputer akan penuh sesak.\nOleh karena itu, proses kompresi ekstrem dari matriks yang disebut ** Filtering ** dilakukan.\nPenghapusan Singleton (Pembersihan Singularitas) Misalkan sebuah bilangan prima besar $p$ muncul \u0026ldquo;hanya 1 kali\u0026rdquo; dari ratusan juta relasi. Tujuan kita adalah \u0026ldquo;membuat pangkat semua bilangan prima genap (kelipatan 2)\u0026rdquo;, jadi bilangan prima yang hanya muncul 1 kali tidak akan pernah genap. Oleh karena itu, relasi yang mengandung prima tersebut langsung dihapus (dibersihkan) sebagai \u0026ldquo;sampah yang tidak berguna\u0026rdquo;. Karena hal ini terjadi berantai, ratusan juta baris data akan dipangkas.\nPenggabungan Clique (Clique Merging) Selanjutnya, dengan mengalikan (menambahkan) relasi yang berbagi bilangan prima tertentu, matriks yang jarang (sparse) dipadatkan (dikompres) sementara jumlah baris dikurangi (mirip dengan pencarian clique di teori graf).\nMelalui pengoptimalan ini, matriks sparse raksasa dikompresi secara dramatis menjadi ukuran yang dapat dihitung.\n6. Fase 4: Aljabar Linier atas GF(2) (Metode Block Wiedemann) 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) { // Mengulangi perhitungan produk matriks jarang dan vektor, // dan menemukan beberapa vektor solusi (kernel) untuk M * x = 0 mod 2. } }; Kini kita tiba di inti teka-teki. Kita mengalikan relasi yang terkumpul untuk mencari ** \u0026ldquo;kombinasi di mana pangkat semua faktor prima menjadi genap\u0026rdquo; **.\nSecara matematis, menggunakan matriks raksasa $M$ yang elemen-elemennya mewakili \u0026ldquo;genap atau ganjil (yaitu 0 atau 1)\u0026rdquo; dari pangkat setiap prima, dan vektor $x$ yang merepresentasikan relasi mana yang digunakan, kita perlu menyelesaikan vektor $x$ (Null space / Kernel) sehingga: $M \\cdot x \\equiv 0 \\pmod 2$\nKita harus memecahkan sistem persamaan sebuah matriks sebesar jutaan baris × jutaan kolom. Eliminasi Gauss konvensional membutuhkan kompleksitas $O(N^3)$, yang berarti perhitungannya takkan selesai hingga alam semesta berakhir.\nOleh karena itu, implementasi termutakhir menggunakan ** \u0026ldquo;Metode Block Wiedemann\u0026rdquo; **. Ini adalah jenis metode subruang Krylov yang menemukan solusi melalui iterasi perkalian matriks-vektor, memanfaatkan fakta bahwa matriks $M$ sangat \u0026ldquo;sparse (sebagian besar 0)\u0026rdquo;. Tidak seperti metode Block Lanczos yang lama, Block Wiedemann secara penuh membagi proses komputasi ke dalam berbagai cluster, menunjukkan kekuatan besar dalam komputasi awan terdistribusi modern maupun superkomputer.\n7. Fase 5: Algebraic Square Root (Akar Kuadrat Aljabar) dan Kehancuran Kriptografi 1 2 3 4 5 6 7 8 9 10 11 12 13 class AlgebraicSquareRoot { public: void compute_and_factor(...) { // 1. Perhitungan akar kuadrat V dari sisi rasional cpp_int V = 1; // 2. Perhitungan akar kuadrat gamma dari sisi aljabar cpp_int Y = 1; // ... cpp_int factor = gcd(V - Y, N); // GCD(X-Y, N) } }; Melalui perhitungan matriks di Fase 4, kita mendapatkan himpunan relasi $S$ yang \u0026ldquo;jika dikalikan, semua faktor primanya akan berpangkat genap\u0026rdquo;. Dengan ini, kita dapat menyusun \u0026ldquo;kuadrat\u0026rdquo; pada masing-masing dunia rasional dan aljabar.\nKarena sisi rasional hanyalah perkalian bilangan bulat, akar kuadrat $V$ mudah dihitung. $$V^2 = \\prod_{S} (a - bm)$$ Namun, neraka sesungguhnya terletak di \u0026ldquo;sisi aljabar\u0026rdquo;. Di dunia field aljabar $\\mathbb{Z}[\\alpha]$, keunikan faktorisasi prima tidak berlaku, maka komputasi dilakukan menggunakan ideal. Perhitungan matriks hanya memastikan itu ** \u0026ldquo;menjadi kuadrat sebuah ideal\u0026rdquo;, tetapi tidak \u0026ldquo;menjamin bahwa ia merupakan kuadrat dari sebuah elemen ($\\gamma^2$)\u0026rdquo; **.\nDi sinilah hambatan (Obstruction) kuat teori bilangan aljabar menghalangi, yang disebut \u0026ldquo;Hambatan Grup Kelas Ideal\u0026rdquo; dan \u0026ldquo;Hambatan Grup Unit\u0026rdquo;. GNFS menembus dinding ini dengan menggunakan keajaiban yang disebut ** \u0026ldquo;Karakter Kuadrat (Quadratic Characters)\u0026rdquo; **. Ke dalam matriks Fase 4, kita diam-diam menambahkan beberapa kolom residu kuadrat (Simbol Legendre) untuk beberapa puluh ideal prima khusus sebelumnya. Berkat hal ini, himpunan $S$ yang ditemukan akan lolos dari hambatan dengan probabilitas sangat tinggi, dan berhasil membentuk \u0026ldquo;kuadrat elemen sejati $\\gamma^2$\u0026rdquo;.\nTugas menemukan $\\gamma$ (Akar Kuadrat Aljabar) dihitung dengan menggunakan algoritma yang sangat kompleks seperti Metode Montgomery.\nDan pada akhirnya, akar kuadrat aljabar $\\gamma$ di-warp ke dunia nyata oleh homomorfisme ring $\\phi$ (mensubstitusikan $m$ ke $x$), untuk memperoleh $Y$. Dengan menetapkan $V$ di sisi rasional sebagai $X$, maka persamaan mutlak yang kita cari pun sempurna terbentuk.\n$$X^2 \\equiv Y^2 \\pmod N$$\nYang tersisa hanyalah menghitung $\\gcd(X-Y, N)$. Hanya dalam 0,001 detik, ketika faktor non-trivial tercetak di layar, Kriptografi RSA yang dianggap tak tergoyahkan hancur sepenuhnya.\nKesimpulan GNFS bukan sekadar teknik pemrograman. Ini adalah mahakarya intelijen umat manusia yang menaklukkan \u0026ldquo;kedalaman matematika murni\u0026rdquo; seperti aljabar abstrak, teori ring, dan grup kelas ideal menggunakan \u0026ldquo;teknik tingkat tinggi\u0026rdquo; seperti arsitektur terdistribusi superkomputer dan optimasi cache.\nInformasi chat atau kartu kredit kita yang biasa kita kirim setiap hari, ternyata dilindungi oleh pertempuran matematis yang sangat besar seperti ini.\nKami berharap melalui kerangka C++ ini, Anda bisa merasakan \u0026ldquo;romantisme matematika dan komputer\u0026rdquo; di balik algoritma pemecahan kode yang mutakhir.\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/id/p/gnfs-cpp-implementation/","title":"[Bedah Lengkap] Memahami Algoritma Kriptanalisis Terkuat \"GNFS\" dengan Mengimplementasikannya di C++"},{"content":"Struktur Matematis Sejati dari General Number Field Sieve (GNFS) Tujuan akhir dari GNFS adalah menemukan $X, Y$ sedemikian rupa sehingga $X^2 \\equiv Y^2 \\pmod N$. Untuk mencapai ini, para matematikawan membangun sebuah jembatan antara \u0026ldquo;dunia bilangan bulat nyata\u0026rdquo; dan \u0026ldquo;dunia medan aljabar\u0026rdquo;. Jembatan tersebut adalah \u0026ldquo;homomorfisme\u0026rdquo;.\nTahap 1: \u0026ldquo;Homomorfisme\u0026rdquo; (Homomorphism) yang Menghubungkan Dunia 1. Pemilihan Polinomial dan Definisi Akar Untuk sebuah bilangan komposit raksasa $N$, kita memilih sebuah bilangan bulat $m$ dan polinomial $f(x)$ sedemikian rupa sehingga $f(m) \\equiv 0 \\pmod N$. (Contoh: Ekspansi $N$ dalam basis $m$, dan buat $f(x)$ dari koefisien-koefisiennya. Dalam hal ini, $f(x)$ diasumsikan tak tereduksi di atas medan bilangan rasional $\\mathbb{Q}$).\nSelanjutnya, misalkan $\\alpha$ adalah salah satu \u0026ldquo;akar bilangan kompleks\u0026rdquo; dari persamaan $f(x) = 0$. Tentu saja, $f(\\alpha) = 0$. $\\alpha$ bukanlah bilangan bulat, melainkan bilangan kompleks (bilangan aljabar) yang dapat memuat akar atau bilangan imajiner.\n2. Konstruksi Cincin (Ring) dan Homomorfisme Di sini, kita menyiapkan dua \u0026ldquo;cincin\u0026rdquo; matematis (dunia di mana penjumlahan dan perkalian didefinisikan):\nDunia A: $\\mathbb{Z}[\\alpha]$ (Cincin bilangan bulat aljabar yang mengandung $\\alpha$) Ini adalah dunia bilangan yang diekspresikan dalam bentuk $a + b\\alpha + c\\alpha^2 + \\dots$. Dunia B: $\\mathbb{Z}/N\\mathbb{Z}$ (Cincin sisa pembagian dengan $N$) Dunia kongruensi (modulo) yang hanya terdiri dari bilangan bulat dari $0$ hingga $N-1$. Di sini, kita mendefinisikan sebuah pemetaan (mapping) $\\phi$ dari Dunia A ke Dunia B sebagai berikut: $$\\phi : \\mathbb{Z}[\\alpha] \\to \\mathbb{Z}/N\\mathbb{Z}$$ $$\\phi(\\alpha) = m \\pmod N$$\nPemetaan $\\phi$ ini adalah operasi magis yang sepenuhnya menukar variabel $\\alpha$ di Dunia A dengan bilangan bulat $m$ di Dunia B. $\\phi$ ini memiliki sifat yang sangat kuat yang disebut \u0026ldquo;Homomorfisme Cincin\u0026rdquo; (Ring Homomorphism). Homomorfisme adalah sifat \u0026ldquo;berpindah ke dunia lain tanpa merusak struktur penjumlahan dan perkalian\u0026rdquo;. Artinya, persamaan berikut berlaku:\n$\\phi(X \\times Y) = \\phi(X) \\times \\phi(Y)$ $\\phi(X^2) = \\phi(X)^2$ Apa arti semua ini? Jika kita dapat membuat \u0026ldquo;bentuk kuadrat\u0026rdquo; ($\\gamma^2$) dari elemen kompleks $\\gamma$ di \u0026ldquo;Dunia A\u0026rdquo; (dunia $\\alpha$), kita dapat melompat ke \u0026ldquo;Dunia B\u0026rdquo; (dunia sisa) dengan $\\phi$, dan bentuk kuadrat $\\phi(\\gamma)^2$ akan dipertahankan dengan sempurna.\nTahap 2: Runtuhnya Faktorisasi Prima dan Lahirnya \u0026ldquo;Ideal\u0026rdquo; Kita ingin mengumpulkan banyak elemen $(a - b\\alpha)$ yang sesuai dalam Dunia A ($\\mathbb{Z}[\\alpha]$) dan mengalikannya bersama untuk membuat \u0026ldquo;kuadrat sempurna\u0026rdquo; (elemen kuadrat). Biasanya, kita dapat melakukan \u0026ldquo;faktorisasi prima\u0026rdquo; pada $(a - b\\alpha)$ yang dikumpulkan, dan menggabungkannya sehingga semua pangkat bilangan prima menjadi genap (dipecahkan menggunakan matriks) untuk menghasilkan bentuk kuadrat.\nNamun, di sinilah tembok keputusasaan aljabar menghalangi jalan. Di dunia medan aljabar seperti $\\mathbb{Z}[\\alpha]$, \u0026ldquo;keunikan faktorisasi prima (setiap bilangan dapat dinyatakan hanya dengan satu cara sebagai perkalian bilangan prima)\u0026rdquo; yang kita pelajari di sekolah menengah runtuh sama sekali.\n(Contoh: Di beberapa dunia medan aljabar, $6 = 2 \\times 3$, dan pada saat yang sama $6 = (1+\\sqrt{-5}) \\times (1-\\sqrt{-5})$, sehingga mustahil untuk mengetahui mana yang merupakan bilangan prima sejati).\nJika faktorisasi prima tidak unik, teka-teki \u0026ldquo;menghitung bilangan prima hingga jumlahnya genap\u0026rdquo; (metode saringan) pada prinsipnya tidak dapat dijalankan.\nKeselamatan dari Kummer dan Dedekind: \u0026ldquo;Ideal\u0026rdquo; Keruntuhan ini diselamatkan oleh konsep \u0026ldquo;Ideal\u0026rdquo; (Bilangan Ideal) yang diciptakan oleh matematikawan abad ke-19. Alih-alih melihat elemen itu sendiri, dengan mempertimbangkan \u0026ldquo;himpunan kelipatan (ideal)\u0026rdquo; yang dihasilkan oleh elemen tersebut, faktorisasi prima menjadi mungkin kembali.\nDalam cincin bilangan bulat dari medan aljabar $\\mathcal{O}_K$ (cincin yang lebih sempurna yang mengandung $\\mathbb{Z}[\\alpha]$), bahkan jika elemen tidak dapat difaktorkan secara unik, terbukti bahwa \u0026ldquo;Ideal selalu dapat difaktorkan secara unik sebagai hasil kali \u0026lsquo;Ideal Prima\u0026rsquo; ($\\mathfrak{p}$)\u0026rdquo;.\nOleh karena itu, di GNFS, alih-alih memfaktorkan elemen $(a - b\\alpha)$ itu sendiri, kita melakukan faktorisasi ideal prima pada ideal utama $\\langle a - b\\alpha \\rangle$ yang dihasilkannya.\nTahap 3: Norma (Norm) dan Dua Saringan (Sieve) Lalu, bagaimana kita tahu ke ideal prima mana ideal $\\langle a - b\\alpha \\rangle$ terurai? Di sini kita menggunakan sebuah fungsi yang disebut \u0026ldquo;Norma\u0026rdquo; (Norm). Norma adalah fungsi yang mengubah elemen kompleks dari medan aljabar menjadi \u0026ldquo;bilangan bulat biasa $\\mathbb{Z}$\u0026rdquo; di dunia nyata.\nNorma dari elemen $(a - b\\alpha)$ dihitung dengan polinomial sederhana $b^d f(a/b)$ (di mana $d$ adalah derajat $f(x)$).\nBerdasarkan teorema aljabar, diketahui bahwa \u0026ldquo;jika norma suatu ideal dapat difaktorkan sepenuhnya oleh bilangan prima kecil (halus), maka ideal aslinya juga dapat difaktorkan sepenuhnya oleh ideal prima kecil\u0026rdquo;.\nOleh karena itu, GNFS secara bersamaan menghitung dua hal berikut untuk sejumlah besar pasangan bilangan bulat $(a, b)$, dan hanya mengumpulkan pasangan di mana keduanya adalah \u0026ldquo;bilangan halus\u0026rdquo;:\nSaringan Rasional (Rational Sieve): $a - bm$ (nilai di dunia nyata) Saringan Aljabar (Algebraic Sieve): $b^d f(a/b)$ (norma di dunia medan aljabar) Kita mengumpulkan puluhan juta pasangan $(a, b)$ yang keduanya halus, memecahkan data faktorisasi prima ideal (berapa banyak ideal prima yang ada) sebagai matriks raksasa (aljabar linear atas GF(2)), dan menemukan himpunan $S$ dari pasangan sedemikian rupa sehingga \u0026ldquo;ketika dikalikan, pangkat semua ideal prima menjadi genap\u0026rdquo;.\nTahap 4: Dua \u0026ldquo;Rintangan\u0026rdquo; dan Grup Kelas Ideal Melalui perhitungan matriks, kita menemukan bahwa mengalikan semua ideal $(a - b\\alpha)$ dalam himpunan $S$ menghasilkan kuadrat dari suatu ideal $I$. $$\\prod_{S} \\langle a - b\\alpha \\rangle = I^2$$ Namun, ini belum berakhir. Tembok matematika terdalam dan tersulit di GNFS ada di sini.\nApa yang pada akhirnya kita inginkan bukanlah \u0026ldquo;kuadrat dari ideal\u0026rdquo;, melainkan \u0026ldquo;kuadrat dari elemen\u0026rdquo; ($\\gamma^2$) untuk disubstitusikan ke dalam pemetaan $\\phi$. Hanya karena ideal dikuadratkan, tidak berarti elemen itu sendiri dikuadratkan. Ada dua rintangan matematika yang sangat kuat (Obstructions) di sini.\nRintangan 1: Tembok Grup Kelas Ideal (Ideal Class Group) Ideal $I$ tidak selalu \u0026ldquo;ideal yang dihasilkan oleh satu elemen (ideal utama)\u0026rdquo;. Mustahil untuk mengekstrak elemen spesifik $\\gamma$ dari ideal yang bukan merupakan ideal utama.\nDi sinilah konsep \u0026ldquo;Grup Kelas Ideal (Class Group, $Cl_K$)\u0026rdquo; muncul. Grup Kelas Ideal adalah sebuah grup yang mengukur \u0026ldquo;berapa banyak ideal non-utama yang ada di dunia medan aljabar (seberapa banyak keunikan faktorisasi prima telah rusak)\u0026rdquo;. Bahkan jika $\\prod \\langle a - b\\alpha \\rangle$ menjadi $I^2$, jika $I$ bukan elemen identitas (ideal utama) dalam grup kelas ideal, kita tidak dapat menariknya kembali menjadi kuadrat elemen.\nRintangan 2: Tembok Grup Unit (Unit Group) Misalkan kita beruntung dan $I$ adalah ideal utama $\\langle \\gamma \\rangle$. Maka, $\\prod \\langle a - b\\alpha \\rangle = \\langle \\gamma^2 \\rangle$. Anda mungkin berpikir, \u0026ldquo;Bagus, elemennya juga kuadrat!\u0026rdquo;, tetapi Anda salah besar.\nFakta bahwa ideal (himpunan kelipatan) sama tidak berarti bahwa elemen-elemennya sepenuhnya sama. Akan selalu ada pergeseran berupa \u0026ldquo;Unit\u0026rdquo; (bilangan yang kebalikannya juga berupa bilangan bulat, seperti 1 atau -1). Dengan kata lain, persamaan elemen yang sebenarnya adalah sebagai berikut: $$\\prod_{S} (a - b\\alpha) = u \\cdot \\gamma^2$$ (di mana $u$ adalah elemen dari grup unit $U_K$)\nKecuali unit $u$ ini sendiri adalah kuadrat dari sesuatu (elemen kuadrat), sisi kiri tidak akan pernah bisa menjadi \u0026ldquo;kuadrat elemen yang sempurna\u0026rdquo;.\nTahap 5: Sihir Adleman \u0026ldquo;Karakter Kuadratik\u0026rdquo; (Quadratic Characters) Rintangan grup kelas ideal dan rintangan grup unit. Bagaimana kita mengatasi keduanya? Di sinilah muncul metode jenius yang disebut \u0026ldquo;Karakter Kuadratik\u0026rdquo; (Quadratic Characters), yang diperkenalkan oleh kriptografer Leonard Adleman (huruf \u0026ldquo;A\u0026rdquo; di RSA) dan rekan-rekannya.\nUntuk menentukan apakah \u0026ldquo;suatu elemen benar-benar kuadrat sempurna di medan aljabar\u0026rdquo;, kita menggunakan versi medan aljabar dari simbol Legendre (residu kuadrat). Pada matriks raksasa tadi (teka-teki untuk membuat jumlah ideal prima genap), kita secara diam-diam menambahkan beberapa lusin kondisi tambahan (kolom) yang menyatakan bahwa \u0026ldquo;karakter kuadratik untuk beberapa ideal prima khusus $\\mathfrak{q}$ juga semuanya menjadi $1$ (genap)\u0026rdquo;.\nKetika kita menemukan himpunan $S$ yang memenuhi kondisi tambahan ini melalui perhitungan matriks, sebuah teorema mendalam dari teori bilangan aljabar menjamin bahwa \u0026ldquo;baik rintangan grup kelas ideal maupun rintangan grup unit secara alami akan hilang dengan probabilitas yang sangat tinggi\u0026rdquo;.\nDengan ini, kita akhirnya mendapatkan persamaan yang sebenarnya: $$\\prod_{S} (a - b\\alpha) = \\gamma^2$$ Tahap Akhir: Penyatuan Dunia dan Keruntuhan Kriptografi Akhirnya, semua potongan teka-teki sudah lengkap.\n[Elemen di Dunia Medan Aljabar (Dunia A)] $\\gamma^2 = \\prod (a - b\\alpha)$ (Gunakan algoritma akar kuadrat untuk menemukan $\\gamma$)\n[Elemen di Dunia Nyata (Dunia Rasional)] $V^2 = \\prod (a - bm)$ (Ini hanyalah perkalian bilangan bulat biasa, jadi akar kuadrat $V$ dapat ditemukan dengan mudah)\nSekarang, saatnya jembatan ajaib pertama yang kita buat, homomorfisme $\\phi$, beraksi. Kita melompati elemen $\\gamma$ dari Dunia A ke Dunia B (dunia sisa $N$) menggunakan $\\phi$ (pemetaan yang menyubstitusikan $m$ ke dalam $\\alpha$). $$Y = \\phi(\\gamma) \\pmod N$$ Di sisi lain, kita membawa $V$ yang dibuat di dunia nyata langsung ke dunia sisa dan menyebutnya $X$. $$X = V \\pmod N$$ Berkat sifat \u0026ldquo;mempertahankan struktur\u0026rdquo; dari homomorfisme, hubungan kuadrat yang berlaku di Dunia A dipertahankan dengan sempurna di Dunia B (dunia modulo $N$). Lebih jauh lagi, karena pasangan asli $(a, b)$ dibentuk dengan cara yang berkorespondensi sebagai $a - b\\alpha$ dan $a - bm$, $X$ dan $Y$ ini saling bertabrakan di dunia modulo $N$ dan menghasilkan persamaan absolut berikut:\n$$X^2 \\equiv Y^2 \\pmod N$$\nSekarang, tinggal berdoa agar $X$ dan $Y$ bukan merupakan solusi trivial ($X \\equiv \\pm Y$), lalu kita hitung: $\\gcd(X - Y, N)$\nJika itu adalah solusi non-trivial, algoritma Euclidean akan melesat dalam 0,001 detik, dan bilangan prima rahasia $p$ dan $q$, yang merupakan jantung kriptografi RSA, akan dicetak di layar keluaran.\nInilah bentuk utuh dari \u0026ldquo;General Number Field Sieve (GNFS)\u0026rdquo; yang mengumpulkan intisari matematika modern.\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/id/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":"Struktur Matematis Sejati dari General Number Field Sieve (GNFS)"},{"content":"Apa Itu Matematika Terkuat Umat Manusia \u0026ldquo;General Number Field Sieve (GNFS)\u0026rdquo; yang Membobol Kriptografi Internet? Internet yang kita gunakan setiap hari. Semua komunikasi, seperti pesan LINE, YouTube, dan belanja di Amazon, dilindungi oleh \u0026ldquo;kriptografi\u0026rdquo;. Saat ini, kriptografi yang paling banyak digunakan di dunia adalah \u0026ldquo;Sandi RSA\u0026rdquo;.\nInti dari pertahanan Sandi RSA sangatlah sederhana. Ia memanfaatkan sifat matematika bahwa \u0026ldquo;faktorisasi prima dari angka yang sangat besar tidak dapat dipecahkan bahkan oleh komputer sekalipun\u0026rdquo; . Sebagai contoh, untuk \u0026ldquo;15\u0026rdquo;, kita langsung tahu bahwa itu adalah \u0026ldquo;3 × 5\u0026rdquo;, tetapi saat angkanya menjadi \u0026ldquo;270 digit\u0026rdquo;, menggabungkan seluruh superkomputer di dunia pun akan memakan waktu ratusan juta tahun untuk memecahkannya.\nNamun, para matematikawan tidak tinggal diam. Untuk menembus pertahanan sandi yang tak tertembus ini, umat manusia telah menciptakan sebuah algoritma (prosedur perhitungan) ajaib yang disebut \u0026ldquo;General Number Field Sieve (GNFS)\u0026rdquo; .\nDalam artikel ini, tanpa menggunakan istilah teknis sama sekali, hanya dengan pengetahuan matematika sekolah menengah pertama (faktorisasi prima, aljabar, faktor persekutuan terbesar) , kami akan menjelaskan langkah demi langkah secara lengkap bagaimana \u0026ldquo;algoritma terkuat umat manusia\u0026rdquo; ini memecahkan sandi!\nBab 1: Tujuan Dekripsi adalah \u0026ldquo;Rumus Kelas 3 SMP\u0026rdquo; Jurus andalan terbesar untuk menghadapi faktorisasi prima angka raksasa. Itu adalah rumus yang dipelajari di kelas 3 SMP ini.\n$X^2 - Y^2 = (X + Y)(X - Y)$\nMungkin Anda berpikir, \u0026ldquo;Hah, rumus dasar seperti ini bisa memecahkan sandi?\u0026rdquo;. Namun, inilah kunci utama yang mengungkap segalanya.\nTujuan utama untuk memecahkan sandi adalah, terhadap angka raksasa $N$, menemukan \u0026ldquo;angka ($X$ dan $Y$) di mana sisa pembagian $X^2$ dan $Y^2$ oleh $N$ adalah sama\u0026rdquo; .\nMengapa \u0026ldquo;Sisa yang Sama\u0026rdquo; Dapat Memecahkan Sandi? Misalkan dua angka, $X^2$ dan $Y^2$, memiliki \u0026ldquo;sisa yang sama jika dibagi dengan $N$\u0026rdquo;. Sisa yang sama berarti, hasil pengurangannya yaitu \u0026quot;$X^2 - Y^2$\u0026quot; pasti bisa dibagi habis oleh $N$ (merupakan kelipatan $N$) .\nDi sini, mari asumsikan angka raksasa $N$ yang digunakan dalam sandi terbentuk dari perkalian dua bilangan prima rahasia ($p$ dan $q$) ($N = p \\times q$).\nJika $X^2 - Y^2$ difaktorkan, hasilnya adalah $(X - Y)(X + Y)$ . Fakta bahwa ini adalah kelipatan $N$ berarti di suatu tempat dalam perkalian ini tersembunyi bilangan prima rahasia $p$ dan $q$.\nKeajaiban terjadi di sini. Probabilitas secara matematis bahwa dua bilangan prima $p$ dan $q$ akan masuk ke ruangan yang berbeda, yaitu \u0026quot;$p$ ke ruangan $(X - Y)$\u0026quot; dan \u0026ldquo;$q$ ke ruangan $(X + Y)$\u0026rdquo; , adalah 50% (setengah) .\nDengan asumsi hanya bilangan prima $p$ yang masuk ke ruangan $(X - Y)$, mari kita hitung \u0026ldquo;faktor persekutuan terbesar (komponen terbesar yang sama)\u0026rdquo; dari $(X - Y)$ dan $N$.\nIsi $(X - Y)$ = $p \\times$ angka tertentu Isi $N$ = $p \\times q$ Satu-satunya komponen yang sama adalah \u0026quot;$p$\u0026quot; ! Artinya, saat kita menghitung faktor persekutuan terbesar, bilangan prima rahasia $p$ akan langsung terungkap, dan sandi akan berhasil dipecahkan sepenuhnya. (Faktor persekutuan terbesar bisa dihitung dalam sekejap bahkan menggunakan ponsel dengan \u0026ldquo;Algoritma Euclidean\u0026rdquo;)\n[Kolom Singkat: Mengapa Pangkat Dua? Pangkat Tiga atau Dikali Dua Tidak Bisa?]\nJika \u0026ldquo;$2X - 2Y$\u0026rdquo;, hasilnya adalah $2(X - Y)$, sehingga hanya ada satu ruangan dan bilangan prima tidak dapat dipisahkan. Jika \u0026ldquo;$X^3 - Y^3$\u0026rdquo;, ukuran ruangan akan tidak seimbang, sehingga perhitungan menjadi sia-sia dan berat. Untuk memisahkan dua bilangan prima, membaginya dengan indah menjadi dua ruangan \u0026ldquo;pangkat dua\u0026rdquo; adalah yang paling efisien.\nBab 2: Bagaimana Mencari X dan Y? \u0026ldquo;Teka-teki Mengumpulkan Kartu Bilangan Prima\u0026rdquo; Tujuannya sudah jelas. Namun, jika kita menebak-nebak mencari \u0026ldquo;$X^2$ dan $Y^2$ yang sisanya sama\u0026rdquo;, kita tidak akan menemukannya sampai alam semesta kiamat. Oleh karena itu, matematikawan memikirkan metode jenius yang disebut \u0026ldquo;Teka-teki Mengumpulkan Kartu Bilangan Prima\u0026rdquo; .\nLangkah 1: Menyaring dan Mengumpulkan Hanya Serbuk Emas (Angka yang Halus) Pertama, siapkan angka sembarang $Z$, kuadratkan, dan hitung sisa $W$ ketika dibagi $N$. (Dunia sisa dari $Z^2 = W$)\nFaktorkan sisa $W$ yang muncul. Di sini, hanya jika muncul \u0026quot;$W$ yang hanya terdiri dari bilangan prima kecil seperti 2, 3, 5, 7\u0026quot; , kita simpan persamaan tersebut sebagai \u0026ldquo;kartu pemenang\u0026rdquo;, dan membuangnya jika ada bilangan prima besar yang tercampur. Ini seperti menyaring batu-batu besar di sungai dan hanya mengumpulkan serbuk emas.\nLangkah 2: Teka-teki Membuat Semua Berjumlah \u0026ldquo;Genap\u0026rdquo; Misalnya, terkumpul tiga kartu serbuk emas berikut.\nKartu A: $Z_1^2 = 2^3 \\times 3^1$ Kartu B: $Z_2^2 = 2^1 \\times 5^1$ Kartu C: $Z_3^2 = 3^1 \\times 5^1$ Mari kita kalikan semuanya. Sisi kanan menjadi $(2^3 \\times 3^1) \\times (2^1 \\times 5^1) \\times (3^1 \\times 5^1)$, jika disederhanakan menjadi \u0026quot;$2^4 \\times 3^2 \\times 5^2$\u0026quot; .\nLuar biasa, jumlah bilangan prima menjadi \u0026ldquo;4, 2, 2\u0026rdquo;, semuanya berjumlah genap ! Jika semuanya genap, berarti kita bisa membagi dua jumlahnya untuk menjadikannya \u0026ldquo;pangkat dua dari sesuatu\u0026rdquo;. Artinya, $(2^2 \\times 3^1 \\times 5^1)^2 = (60)^2$.\nKarena sisi kiri adalah $(Z_1 \\times Z_2 \\times Z_3)^2$, akhirnya kita mendapatkan, $X = (Z_1 \\times Z_2 \\times Z_3)$ $Y = 60$ Pasangan \u0026ldquo;$X^2 = Y^2$\u0026rdquo; yang ditunggu-tunggu pun selesai!\nBagi komputer, memecahkan teka-teki apakah jumlah bilangan prima \u0026ldquo;genap atau ganjil (0 atau 1)\u0026rdquo; adalah hal yang sangat mudah, jadi dengan metode ini $X$ dan $Y$ bisa ditemukan dengan sangat cepat.\nBab 3: Tembok Keputusasaan yang Menghadang Dengan ini semua sandi bisa dipecahkan! \u0026hellip;begitulah yang dipikirkan, hingga sebuah masalah besar muncul. Jika angka sandi $N$ berukuran hingga sekitar \u0026ldquo;100 digit\u0026rdquo;, metode ini (disebut Quadratic Sieve) bisa menyelesaikannya. Namun, jika $N$ menjadi \u0026ldquo;200 digit atau 300 digit\u0026rdquo;, nilai $W$ yang muncul di tengah perhitungan menjadi terlalu besar.\nJika angkanya terlalu besar, \u0026ldquo;angka yang hanya terdiri dari bilangan prima kecil (serbuk emas)\u0026rdquo; akan berhenti muncul. Ini menjadi lebih sulit daripada mencari lensa kontak di padang pasir, dan kita tidak bisa mengumpulkan kartu sama sekali untuk memecahkan teka-teki.\nDi sinilah akhirnya senjata pamungkas umat manusia, \u0026ldquo;General Number Field Sieve (GNFS)\u0026rdquo; , muncul.\nBab 4: Ide Terkuat Umat Manusia Membuat \u0026ldquo;Dua Dunia\u0026rdquo; Ide jenius GNFS adalah, \u0026ldquo;Karena kita hanya menghitung di dunia nyata, angkanya menjadi besar. Kalau begitu, mari buat \u0026lsquo;dunia di balik layar\u0026rsquo; menggunakan polinomial (aljabar), dan bagi beban perhitungannya menjadi dua\u0026rdquo; .\nKeajaiban Aljabar GNFS mengubah angka raksasa $N$ menjadi bentuk aljabar menggunakan angka dasar $m$. Misalnya, jika $N=100$, dengan $m=4$, maka $100 = 4^3 + 2(4^2) + 4$. Menggunakan huruf $x$, ini diubah menjadi persamaan (dunia balik layar) $f(x) = x^3 + 2x^2 + x$ .\nHal yang menarik dari persamaan ini adalah sifatnya: \u0026ldquo;Jika huruf $x$ disubstitusi dengan $m$ (4 dalam contoh di atas), ia akan selalu melesat kembali ke angka dunia nyata $N$\u0026rdquo; .\nMencari Serbuk Emas di Dua Dunia Sekaligus GNFS membuat banyak pasangan bilangan bulat sembarang $(a, b)$, dan melakukan dua perhitungan berikut secara bersamaan.\nDunia nyata: $a - b \\times m$ Dunia aljabar: Nilai perhitungan $a - b \\times x$ berdasarkan aturan aljabar Dengan membagi masalah ke dalam dua dunia, ukuran angka yang ditangani berkurang (menjadi lebih ringan) secara drastis. Bayangkan memecah batu raksasa menjadi dua batu kecil yang mudah dikelola.\nKemudian, dengan menggunakan saringan, kumpulkan HANYA pasangan $(a, b)$ ajaib di mana \u0026ldquo;Baik di dunia nyata maupun di dunia aljabar, keduanya \u0026lsquo;hanya terdiri dari bilangan prima kecil (serbuk emas)\u0026rsquo;\u0026rdquo; . Inilah asal mula nama \u0026ldquo;Number Field Sieve\u0026rdquo;.\nSaat Sandi Akhirnya Dipecahkan Ketika puluhan juta \u0026ldquo;kartu serbuk emas\u0026rdquo; dari kedua dunia terkumpul, gunakan kalkulasi matriks raksasa dari superkomputer untuk menemukan \u0026ldquo;kombinasi di mana semua jumlah bilangan prima genap\u0026rdquo;, persis seperti di Bab 2.\nSetelah kombinasi ditemukan,\nJadikan angka pangkat dua yang terbentuk di dunia nyata sebagai $X^2$ Jadikan rumus pangkat dua yang terbentuk di dunia aljabar sebagai $Y(x)^2$ Terakhir, substitusikan $x$ dalam $Y(x)$ dari dunia aljabar dengan $m$, memindahkan dan menggabungkannya ke dunia nyata. Lalu, seperti keajaiban matematika, kondisi \u0026ldquo;sisa pembagian $X^2$ dan $Y^2$ sama\u0026rdquo; akan terbentuk dengan sempurna!\nSetelah itu, seperti di Bab 1, dengan menghitung faktor persekutuan terbesar dari $X - Y$ dan $N$, sandi RSA yang tak tertembus akan hancur lebur, dan bilangan prima rahasia akan terungkap.\nPenutup: Matematika Tidak Berakhir Anda mungkin berpikir, \u0026ldquo;Bagus, dengan GNFS sandi apapun bisa dipecahkan!\u0026rdquo;. Namun, sandi RSA tidak menyerah begitu saja. Sandi yang digunakan di internet saat ini adalah angka raksasa mengerikan yang disebut \u0026ldquo;RSA-2048 (sekitar 617 digit)\u0026rdquo;.\nMeskipun GNFS adalah algoritma terkuat umat manusia, bahkan untuk memecahkan 270 digit (RSA-270) sekalipun, dikatakan akan memakan waktu ribuan hingga puluhan ribu tahun meskipun seluruh komputer di dunia digabungkan. Untuk saat ini, data LINE dan bank kita aman.\nNamun, apa yang akan terjadi jika muncul \u0026ldquo;keajaiban yang bisa menemukan $X$ dan $Y$ dalam sekejap untuk angka sebesar apa pun\u0026rdquo; ? Sebenarnya, entitas terdekat dengan hal tersebut saat ini sedang dalam pengembangan, yaitu \u0026ldquo;Komputer Kuantum (Algoritma Shor)\u0026rdquo; . Telah dibuktikan secara matematis bahwa dengan menggunakan sifat gelombang mekanika kuantum, teka-teki pengumpulan kartu yang merepotkan dapat dilewati untuk menarik jawaban sekaligus.\nPersaingan kecerdasan yang tiada akhir antara pembuat sandi (pertahanan) dan pembuat algoritma pemecah sandi (serangan). Mengetahui bahwa \u0026ldquo;faktorisasi prima\u0026rdquo; dan \u0026ldquo;aljabar\u0026rdquo; yang dipelajari di SMP sebenarnya adalah senjata yang saling bertabrakan di garis depan keamanan dunia, bukankah kelas matematika sekarang terlihat sedikit lebih menarik?\nOrang yang menemukan algoritma terkuat di masa depan, mungkin saja adalah Anda yang sedang membaca artikel ini!\n(※Artikel ini mengonsepkan daya tarik matematis dari pemecahan sandi untuk pelajar SMP. GNFS yang sebenarnya dihitung secara ketat menggunakan matematika universitas tingkat lanjut seperti grup kelas ideal dari medan aljabar dan homomorfisme)\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/id/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":"Apa Itu Matematika Terkuat Umat Manusia 'General Number Field Sieve (GNFS)' yang Membobol Kriptografi Internet?"},{"content":"Kelebihan dan Kekurangan Gerakan Anti-Vaksin: Masa Depan 5.000 Orang yang Direnggut oleh \u0026ldquo;Kecemasan Berniat Baik\u0026rdquo; dan Pelajaran Epidemiologi yang Harus Kita Pelajari \u0026ldquo;Ilusi Kausalitas\u0026rdquo; yang Diperjelas oleh Pandemi COVID-19 Sejak tahun 2021, vaksinasi COVID-19 telah berlangsung pesat di Jepang. Ini adalah proyek kesehatan masyarakat yang langka dalam sejarah umat manusia, di mana hampir 80% populasi divaksinasi dalam waktu singkat. Selama proses ini, kita menyaksikan banyak \u0026ldquo;jeritan\u0026rdquo; melalui media sosial dan berita. \u0026ldquo;Anggota keluarga saya meninggal beberapa hari setelah divaksinasi\u0026rdquo;, \u0026ldquo;Saya mengalami masalah kesehatan yang tidak dapat dijelaskan sejak vaksinasi\u0026rdquo; \u0026ndash;. Keluhan-keluhan ini sangat memilukan, dan bagi mereka yang mengalaminya, penderitaan tersebut adalah kebenaran yang tak terbantahkan.\nNamun, di sinilah letak \u0026ldquo;jebakan\u0026rdquo; epidemiologi yang dingin namun sangat penting. Mengingat ukuran populasi Jepang, terlepas dari apakah mereka divaksinasi atau tidak, sekitar 3.000 hingga 4.000 orang meninggal setiap hari karena berbagai sebab (penyakit, kecelakaan, usia tua). Jika sebagian besar populasi divaksinasi sekaligus, secara probabilistik \u0026ldquo;sejumlah orang tertentu akan meninggal sehari setelah divaksinasi (karena penyebab yang tidak terkait dengan vaksin)\u0026rdquo;. Dalam istilah khusus, ini disebut \u0026ldquo;Koinsidensi\u0026rdquo; (Coincidence) .\nManusia dilengkapi dengan bias kognitif yang disebut \u0026ldquo;kesalahan pasca-hoc (post hoc ergo propter hoc)\u0026rdquo;. Jika \u0026ldquo;B (kematian) terjadi setelah A (vaksinasi)\u0026rdquo;, kita secara intuitif menyimpulkan bahwa \u0026ldquo;A adalah penyebab B\u0026rdquo;. Selama pandemi, bias kognitif ini diperkuat oleh media sosial, menciptakan lapisan masyarakat di mana citra \u0026ldquo;vaksin = bahaya\u0026rdquo; mengakar sebelum adanya verifikasi ilmiah.\nBanyak pakar kesehatan masyarakat mengamati pemandangan ini dengan perasaan déjà vu. Karena hanya beberapa tahun sebelumnya, Jepang adalah satu-satunya negara maju yang secara sukarela melepaskan sarana pencegahan penyakit akibat \u0026ldquo;kecemasan tanpa sains\u0026rdquo; ini. Itulah masalah \u0026ldquo;Vaksin Kanker Serviks (Vaksin HPV)\u0026rdquo; .\nApa yang Terjadi di Jepang pada Tahun 2013? Mari kita putar balik waktu sejenak. Kanker serviks menyerang sekitar 11.000 wanita setiap tahunnya, dan merenggut sekitar 2.900 nyawa. Penyakit ini sering disebut \u0026ldquo;pembunuh ibu\u0026rdquo; karena menyerang wanita di usia 20-an hingga 40-an, masa puncak dalam mengasuh anak dan karier. Penyebabnya adalah infeksi Human Papillomavirus (HPV), virus umum yang menginfeksi 80% wanita yang aktif secara seksual setidaknya sekali seumur hidup. Vaksin HPV yang mencegah infeksi virus ini diperkenalkan di seluruh dunia sebagai \u0026ldquo;vaksin terobosan yang dapat mencegah kanker\u0026rdquo;, dan di Jepang, vaksin ini dijadikan vaksinasi rutin (sangat direkomendasikan oleh pemerintah dan tersedia secara gratis) pada bulan April 2013.\nNamun, keadaan segera berubah menjadi gelap. Beberapa gadis yang divaksinasi melaporkan gejala seperti nyeri seluruh tubuh, gangguan motorik, dan gangguan memori. Media secara luas melaporkan hal ini setiap hari sebagai \u0026ldquo;dugaan reaksi simpang vaksin\u0026rdquo;. Rekaman gadis-gadis yang kejang memberikan dampak kuat pada pemirsa, dan opini publik dengan cepat bergeser ke teori \u0026ldquo;vaksin berbahaya\u0026rdquo;.\nMenanggapi hal ini, Kementerian Kesehatan, Tenaga Kerja, dan Kesejahteraan memutuskan pada Juni 2013, hanya dua bulan setelah dimulainya vaksinasi rutin, untuk \u0026ldquo;menangguhkan rekomendasi aktif\u0026rdquo;. Ini bukan \u0026ldquo;larangan\u0026rdquo; atau \u0026ldquo;pembatalan\u0026rdquo;, melainkan keputusan politik yang ambigu untuk \u0026ldquo;mempertahankan kerangka vaksinasi rutin tetapi berhenti mengirimkan pemberitahuan individu dari pemerintah\u0026rdquo;. Namun, hal ini disampaikan kepada publik sebagai pesan bahwa \u0026ldquo;Pemerintah telah mengakui bahayanya dan menghentikannya\u0026rdquo;. Akibatnya, tingkat vaksinasi yang tadinya lebih dari 70% anjlok hingga di bawah 1% dalam sekejap.\nDari sinilah, \u0026ldquo;8 Tahun yang Hilang\u0026rdquo; (Vaccine Gap) di Jepang dimulai.\n\u0026ldquo;Kebenaran\u0026rdquo; yang Diungkap oleh Studi Nagoya Apakah gejala yang dilaporkan media benar-benar disebabkan oleh vaksin? Ada sebuah survei berskala besar yang mencoba menjawab pertanyaan ini secara ilmiah. Survei ini dikenal sebagai \u0026ldquo;Studi Nagoya\u0026rdquo; .\nPada tahun 2015, Kota Nagoya melakukan survei kuesioner skala besar terhadap sekitar 70.000 wanita muda. Survei ini mencakup mereka yang \u0026ldquo;divaksinasi\u0026rdquo; dan \u0026ldquo;tidak divaksinasi\u0026rdquo;, dan menanyakan tentang ada atau tidaknya 24 gejala, seperti \u0026ldquo;menstruasi tidak teratur\u0026rdquo;, \u0026ldquo;nyeri sendi\u0026rdquo;, dan \u0026ldquo;penurunan konsentrasi\u0026rdquo;. Jika vaksin adalah penyebabnya, gejala-gejala ini seharusnya jauh lebih umum di kelompok \u0026ldquo;divaksinasi\u0026rdquo;.\nHasilnya mengejutkan. Tidak ditemukan perbedaan yang signifikan dalam insiden gejala antara kelompok yang \u0026ldquo;divaksinasi\u0026rdquo; dan yang \u0026ldquo;tidak divaksinasi\u0026rdquo;.\nApa artinya ini? Gadis remaja, terlepas dari apakah mereka divaksinasi atau tidak, rentan terhadap masalah kesehatan seperti gangguan regulasi ortostatik dan nyeri kronis karena perubahan keseimbangan hormonal dan keadaan khusus pubertas. Dengan kata lain, ada proporsi gadis yang \u0026ldquo;tidak divaksinasi tetapi mengalami gejala yang sama\u0026rdquo; dengan jumlah yang sama dengan gadis yang \u0026ldquo;berkembang gejala setelah divaksinasi\u0026rdquo; seperti yang dilaporkan oleh media. Namun, masalah kesehatan pada gadis yang tidak divaksinasi dianggap sebagai \u0026ldquo;gangguan pubertas\u0026rdquo;, sedangkan hanya keluhan pada anak yang divaksinasi yang disorot sebagai \u0026ldquo;kerusakan akibat vaksin\u0026rdquo;. Data menunjukkan bahwa kemungkinan besar inilah sifat sebenarnya dari fenomena yang dihebohkan sebagai \u0026ldquo;bencana medis\u0026rdquo;.\nSelain itu, keterlibatan \u0026ldquo;efek Nocebo\u0026rdquo; (Nocebo effect) juga telah ditunjukkan. Berlawanan dengan efek \u0026ldquo;Plasebo\u0026rdquo;, ini adalah fenomena di mana rasa sakit atau penyakit benar-benar terjadi karena kecemasan dan ketakutan ketika seseorang mengonsumsi sesuatu karena percaya bahwa \u0026ldquo;ini buruk bagi kesehatan saya\u0026rdquo;. Tidak dapat dipungkiri bahwa rentetan laporan negatif berdampak pada pikiran dan tubuh yang rapuh dari para gadis tersebut.\n\u0026ldquo;Dosa Kelalaian\u0026rdquo; dalam Angka \u0026ldquo;Hentikan rekomendasi untuk berjaga-jaga.\u0026rdquo; Keputusan ini, sekilas, tampak seperti \u0026ldquo;pilihan yang hati-hati dan aman\u0026rdquo;. Karena sudah terlambat untuk bertindak setelah sesuatu terjadi, apa pun yang mencurigakan harus dihentikan. Namun, dalam kesehatan masyarakat, \u0026ldquo;tidak melakukan apa-apa\u0026rdquo; (kelalaian) terkadang membawa kerugian yang jauh melebihi risiko \u0026ldquo;melakukan sesuatu\u0026rdquo;.\nTim peneliti di Universitas Osaka telah mempublikasikan perkiraan yang kejam mengenai dampak penangguhan rekomendasi ini. Karena penurunan tajam dalam tingkat vaksinasi antara 2013 dan 2019, jumlah penderita kanker serviks di masa depan, yang seharusnya dapat dicegah, akan meningkat sekitar 25.000 orang, dan jumlah kematian akan meningkat sekitar 5.000 hingga 5.700 orang.\nLebih dari 5.000 kematian. Ini adalah angka yang setara dengan bencana alam skala besar. Sebagai akibat dari upaya menghindari risiko yang secara ilmiah belum pasti hubungan kausalnya—\u0026ldquo;kecemasan tentang efek samping\u0026rdquo;—kita membebani para wanita di masa depan dengan risiko kematian akibat kanker yang pasti dan serius.\nJika kita melihat dunia, perbedaannya sangat jelas. Di Australia, berkat penyebaran vaksinasi pada pria dan wanita, kanker serviks diperkirakan akan \u0026ldquo;diberantas\u0026rdquo; (menjadi kanker langka) sekitar tahun 2028. Ada juga laporan dari Inggris bahwa kejadian kanker serviks pada generasi yang divaksinasi telah turun menjadi hampir nol. Sementara dunia bergerak menuju masa depan untuk \u0026ldquo;menaklukkan kanker\u0026rdquo;, hanya Jepang yang tertinggal di masa lalu di mana \u0026ldquo;kanker terus meningkat\u0026rdquo;. Pada tahun 2015, Komite Penasihat Global WHO tentang Keamanan Vaksin (GACVS) secara khusus mengkritik situasi Jepang dengan menyatakan: \u0026ldquo;Keputusan kebijakan yang tidak didasarkan pada bukti ilmiah menyebabkan bahaya yang sebenarnya (kematian akibat kanker).\u0026rdquo;\nRantai \u0026ldquo;Keraguan Vaksin\u0026rdquo; yang Melintasi Lautan Tragedi vaksin HPV di Jepang bukanlah \u0026ldquo;keadaan khusus yang unik di Jepang\u0026rdquo;. Bahkan saat ini, ada kasus yang dilaporkan di seluruh dunia yang menunjukkan bahwa ketika \u0026ldquo;kecemasan intuitif\u0026rdquo; atau \u0026ldquo;ideologi\u0026rdquo; lebih diprioritaskan daripada sains, penyakit menular akan memamerkan taringnya kapan saja dan di mana saja.\nContoh penting dari hal ini adalah wabah \u0026ldquo;Campak\u0026rdquo; di Amerika Serikat.\nCampak adalah virus yang sangat menular, namun penyakit ini hampir sepenuhnya dapat dicegah dengan vaksin. Di masa lalu, melalui program vaksinasi yang ketat, Amerika Serikat menyatakan \u0026ldquo;eliminasi\u0026rdquo; (elimination) campak pada tahun 2000. Artinya, virus endemik dianggap telah lenyap dari dalam negeri. Namun, campak mulai mewabah kembali dalam beberapa tahun terakhir.\nMenurut laporan BBC (2024), otoritas kesehatan AS menyatakan bahwa \u0026ldquo;keraguan vaksin\u0026rdquo; (Vaccine Hesitancy) yang mengakar di beberapa komunitas menjadi tempat berkembang biaknya infeksi. Tingkat vaksinasi telah menurun di daerah di mana kelompok agama tertentu, kelompok yang menganjurkan gaya hidup \u0026ldquo;alami\u0026rdquo;, atau ideologi anti-vaksin yang didasarkan pada informasi yang salah telah meresap. Ketika virus dibawa dari luar negeri ke daerah-daerah ini, wabah infeksi yang eksplosif terjadi di antara orang-orang yang tidak memiliki kekebalan.\nCampak bukanlah penyakit yang hanya berakhir dengan demam atau ruam. Ini dapat menyebabkan komplikasi parah seperti pneumonia dan ensefalitis, dan bahkan di negara maju, dapat berakibat fatal. Penyakit yang seharusnya \u0026ldquo;dibendung\u0026rdquo; oleh umat manusia dengan menggabungkan kebijaksanaan mereka, kembali mengancam kehidupan anak-anak dengan memanfaatkan \u0026ldquo;kecurigaan\u0026rdquo; orang-orang. Kasus di AS ini memperingatkan kita: \u0026ldquo;Benteng pertahanan berupa tingkat vaksinasi yang tinggi dapat runtuh dalam sekejap jika kepercayaan masyarakat goyah.\u0026rdquo;\nKekalahan Media, Pakar, dan Kita Semua Mengapa situasi seperti ini terus berulang? Penyebabnya adalah asimetri informasi yang unik bagi masyarakat modern dan bias kognitif kita.\nDalam isu vaksin HPV di Jepang, media secara sensasional melaporkan \u0026ldquo;dugaan reaksi simpang vaksin\u0026rdquo;. Bingkai \u0026ldquo;korban yang malang\u0026rdquo; versus \u0026ldquo;negara dan perusahaan farmasi yang berdarah dingin\u0026rdquo; adalah narasi yang sangat kuat dan sangat menggugah emosi pemirsa. Di sisi lain, penjelasan ilmiah dari para pakar seperti \u0026ldquo;tidak ada perbedaan signifikan secara statistik\u0026rdquo; atau \u0026ldquo;manfaatnya melebihi risiko\u0026rdquo; terdengar hambar dan dingin, serta terlalu tidak berdaya di hadapan arus emosi yang deras.\nDalam dunia sains, jika ada teori mapan yang didukung oleh 99% ilmuwan dan ada 1% pendapat yang berbeda, hal itu tidak diperlakukan sebagai \u0026ldquo;pendapat yang setara\u0026rdquo;. Namun, karena media terlalu menekankan pada \u0026ldquo;keadilan\u0026rdquo; atau untuk menarik perhatian, mereka mempublikasikan data yang dapat menyelamatkan puluhan ribu nyawa dan klaim emosional dari satu orang yang merasa menjadi korban sebagai sesuatu yang \u0026ldquo;setara\u0026rdquo;. Para politisi, yang takut akan reaksi publik, juga memprioritaskan \u0026ldquo;membaca suasana saat itu\u0026rdquo; daripada bukti ilmiah. Akibatnya, rekomendasi aktif untuk vaksin HPV dihentikan selama sekitar 9 tahun di Jepang, yang mengakibatkan banyak kasus kanker yang seharusnya dapat dicegah.\nSejarah Berulang: Membutuhkan Kecerdasan untuk Melawan \u0026ldquo;Suasana\u0026rdquo; Pada tahun 2022, Jepang akhirnya melanjutkan rekomendasi aktif untuk vaksin HPV. Namun, waktu dan nyawa yang hilang tidak dapat dikembalikan. Dan seperti wabah campak yang kembali melanda Amerika Serikat saat ini, jika kita lengah, sejarah akan berulang dengan sendirinya berkali-kali.\nKita tidak bisa sepenuhnya menyangkal gerakan anti-vaksin atau kekhawatiran tentang perawatan medis itu sendiri. Adalah naluri pertahanan manusia untuk berhati-hati tentang apa yang dimasukkan ke dalam tubuh, dan bencana obat-obatan memang pernah terjadi di masa lalu. Memantau dan meragukan pihak berwenang adalah penting dalam demokrasi.\nNamun, rangkaian peristiwa seputar vaksin COVID-19, vaksin HPV, dan wabah campak di AS telah menghadapkan kita pada fakta pahit bahwa \u0026ldquo;kecemasan berniat baik yang mengabaikan sains\u0026rdquo; dapat merenggut lebih banyak nyawa daripada virus itu sendiri.\n\u0026ldquo;Ini mungkin berbahaya, mari kita tunggu dan lihat.\u0026rdquo; Saat membuat keputusan ini, apakah kita telah memperhitungkan \u0026ldquo;probabilitas kematian akibat penyakit saat kita menunggu dan melihat\u0026rdquo;? \u0026ldquo;Sesuatu yang alami adalah yang terbaik.\u0026rdquo; Saat mengatakan ini, apakah kita lupa sejarah bahwa \u0026ldquo;virus di alam yang paling tanpa ampun telah merenggut nyawa\u0026rdquo;?\nPenyakit menular baru akan muncul dan vaksin baru akan dikembangkan di masa depan. Pada saat itu, apakah kita akan kembali dibingungkan oleh fenomena \u0026ldquo;koinsidensi\u0026rdquo; dan terbawa oleh hasutan emosional? Ataukah kita akan mampu menganalisis data secara tenang dan menyeimbangkan risiko dengan manfaat?\nDikatakan bahwa sejarah akan berulang. Namun, satu-satunya hal yang dapat menghentikannya adalah rasionalitas kita. Dengan melihat data yang benar secara statistik, kita harus memiliki kecerdasan untuk memilih \u0026ldquo;fakta\u0026rdquo; daripada \u0026ldquo;suasana\u0026rdquo;. Itulah tanggung jawab kita yang hidup di zaman modern.\nReferensi dan Sumber Data Kementerian Kesehatan, Tenaga Kerja, dan Kesejahteraan (MHLW) : \u0026ldquo;Infeksi Human Papillomavirus - Kanker Serviks dan Vaksin HPV\u0026rdquo; Pusat Kanker Nasional Jepang (NCC) : Layanan Informasi Kanker \u0026ldquo;Kanker Serviks\u0026rdquo; Data Statistik BBC News (Jepang) : \u0026ldquo;CDC AS Menyerukan Vaksinasi Di Tengah Wabah Campak - Peningkatan Infeksi Global\u0026rdquo; (2024) dan artikel asli terkait Tim Peneliti Universitas Osaka (Yagi A, et al. Lancet Public Health. 2020) : Studi estimasi jumlah kelebihan morbiditas dan mortalitas akibat penangguhan rekomendasi aktif untuk vaksinasi rutin HPV Nagoya Study (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/id/p/anti-vaccine-pros-cons-id/","title":"Kelebihan dan Kekurangan Gerakan Anti-Vaksin"},{"content":"Mitos dan Realitas \u0026ldquo;Jepang Pertama\u0026rdquo;: Pertahanan Jepang Atas Nama \u0026ldquo;Koeksistensi\u0026rdquo; di Tahun 2026 Pendahuluan: Mengapa Kata-kata Ini Menggetarkan Hati Sekarang Tahun 2026. Kita saat ini berdiri di titik balik era yang belum pernah terjadi sebelumnya. Inflasi yang berkepanjangan, upah riil yang stagnan, dan populasi yang menua dan menyusut dengan cepat. Setiap kali label harga barang di rak supermarket diganti, kecemasan akan masa depan membayangi hati kita.\nDi tengah perasaan terjebak ini, ada sebuah frasa yang dengan cepat mendapatkan dukungan. Frasa itu adalah \u0026ldquo;Jepang Pertama\u0026rdquo; (Japan First).\nKeinginan agar \u0026ldquo;Pemerintah memperkaya kehidupan warganya sendiri terlebih dahulu\u0026rdquo; dan \u0026ldquo;Melindungi budaya serta keamanan publik Jepang sebagai prioritas utama\u0026rdquo; adalah keinginan yang sangat alami dan mendesak sebagai seorang warga negara yang berdaulat, dan sebagai manusia yang hidup di negara ini. Namun, antara \u0026ldquo;ideal\u0026rdquo; yang diusung oleh frasa ini dan \u0026ldquo;realitas\u0026rdquo; yang ditunjukkan oleh data statistik, terdapat kesenjangan besar yang harus kita hadapi secara langsung.\nDalam artikel ini, kita akan mengesampingkan argumen emosional dan pelabelan, serta mengungkap identitas sebenarnya dari masalah ini berdasarkan data objektif, perubahan kronologis, dan fakta-fakta yang terjadi di berbagai garis depan masyarakat.\nBab 1: Kronologi \u0026ldquo;Jepang Pertama\u0026rdquo; dan Latar Belakang Sosial Frasa ini tidak muncul secara tiba-tiba. Ia terbentuk melalui jalinan yang kompleks antara tren global dan keadaan unik di Jepang.\n1. 2016-2017: Impor dan Pemantapan Istilah Pada tahun 2016, semboyan \u0026ldquo;America First\u0026rdquo; yang digaungkan oleh Donald Trump mengejutkan dunia. Di dalam negeri pada tahun 2017, partai \u0026ldquo;Tominku First no Kai\u0026rdquo; (Tokyoites First) yang dipimpin oleh Gubernur Tokyo Yuriko Koike menarik perhatian. Pada titik ini, retorikanya sebagian besar digunakan untuk memperjelas prioritas kebijakan, dan nuansa xenofobianya masih terbatas.\n2. 2023-2024: Visualisasi Kecemasan Keterlambatan pemulihan ekonomi pasca-pandemi dan inflasi yang menyertai pelemahan yen yang tajam memukul rumah tangga biasa. Pada saat yang sama, keluhan berdasarkan informasi yang terpotong-potong mulai bermunculan di media sosial, seperti \u0026ldquo;Dukungan untuk orang asing terlalu murah hati\u0026rdquo; atau \u0026ldquo;Uang pajak rakyat Jepang mengalir ke orang asing.\u0026rdquo;\n3. 2025-2026: Perpaduan Kekuatan Politik dan Media Sosial Dalam pemilihan nasional tahun 2025, kekuatan yang mengusung \u0026ldquo;Jepang Pertama\u0026rdquo; sebagai slogan resmi mengamankan sejumlah kursi tertentu. Algoritma media sosial bereaksi terhadap kecemasan masyarakat dengan memprioritaskan postingan radikal, mempercepat \u0026ldquo;fenomena ruang gema\u0026rdquo; (echo chamber) di mana hanya nilai-nilai tertentu yang diperkuat.\nJajak pendapat terbaru yang dilakukan oleh berbagai surat kabar (akhir tahun 2025) menyoroti situasi di mana opini publik terbelah dua secara tajam, dengan 42% mengatakan \u0026ldquo;setuju atau agak setuju\u0026rdquo; dan 38% mengatakan \u0026ldquo;tidak setuju atau agak tidak setuju\u0026rdquo; terhadap slogan ini.\nBab 2: Kebenaran tentang Ekonomi dan Jaminan Sosial —— \u0026ldquo;Perampas\u0026rdquo; atau \u0026ldquo;Pilar Pendukung\u0026rdquo;? Salah satu pilar logika yang mendukung \u0026ldquo;Jepang Pertama\u0026rdquo; adalah anggapan bahwa \u0026ldquo;sumber daya Jepang dirampas oleh orang asing.\u0026rdquo; Namun, data primer dari kementerian pemerintah menunjukkan realitas yang sangat berlawanan dengan intuisi ini.\n1. Tenaga Kerja: \u0026ldquo;Darah Esensial\u0026rdquo; yang Mempertahankan Ekonomi Jepang Menurut laporan \u0026ldquo;Status Pekerjaan Orang Asing (per akhir Oktober 2024)\u0026rdquo; dari Kementerian Kesehatan, Tenaga Kerja, dan Kesejahteraan, jumlah pekerja asing adalah 2.048.675 orang . Pada perkiraan saat ini di tahun 2026, jumlahnya telah melampaui 2,3 juta orang .\nSektor Industri Persentase / Tingkat Pertumbuhan Pekerja Asing Realitas dan Peran Konstruksi Meningkat sekitar 22,7% dari tahun sebelumnya Sangat penting untuk pemeliharaan infrastruktur serta perbaikan jembatan dan jalan yang menua. Kesehatan dan Kesejahteraan Meningkat sekitar 28,1% dari tahun sebelumnya Berada di garis depan perawatan, mendukung lansia Jepang. Manufaktur Menyumbang sekitar 26% dari total Tulang punggung yang mendukung lokasi industri ekspor Jepang. Saat ini, mereka tidak mengambil pekerjaan yang ingin dilakukan oleh orang Jepang, melainkan mengisi \u0026ldquo;kekosongan yang tidak lagi dapat diisi oleh orang Jepang.\u0026rdquo; Jika kita mengecualikan mereka atas nama \u0026ldquo;Jepang Pertama,\u0026rdquo; sistem perawatan kita akan langsung runtuh, dan harga perumahan serta makanan akan melonjak beberapa puluh persen hingga berlipat ganda.\n2. Jaminan Sosial: Hoaks dan Realitas Seputar Bantuan Hidup (Kesejahteraan) Hal yang paling sering disebarkan di media sosial adalah klaim bahwa \u0026ldquo;orang asing menerima bantuan hidup secara prioritas.\u0026rdquo; Namun, memeriksa statistik Kementerian Kesehatan, Tenaga Kerja, dan Kesejahteraan, proporsi orang asing sebagai kepala rumah tangga dari semua rumah tangga penerima bantuan hanya sekitar 2,8 hingga 2,9% . Selama lebih dari sepuluh tahun terakhir, angka ini hampir tidak berubah.\nSebaliknya, melihat komposisi usia penduduk asing, mayoritas dari mereka adalah generasi usia kerja berusia 20-an hingga 40-an . Mereka membayar asuransi pensiun dan asuransi kesehatan kesejahteraan, dan memainkan peran sebagai \u0026ldquo;penyumbang\u0026rdquo; yang mendukung dana pensiun dan biaya pengobatan yang diterima oleh \u0026ldquo;lansia Jepang.\u0026rdquo; Merekalah, dan bukan orang lain, yang mengisi kekosongan populasi usia kerja yang ditinggalkan oleh orang Jepang dan memperpanjang umur sistem jaminan sosial Jepang.\nBab 3: Bias Keamanan Publik dan Media Sosial —— Dekonstruksi Logis \u0026ldquo;Kejahatan Orang Asing\u0026rdquo; Kecemasan akan keamanan publik adalah hal yang paling kuat merangsang sentimen \u0026ldquo;Jepang Pertama.\u0026rdquo; Namun, membaca dengan saksama statistik Badan Kepolisian Nasional dan \u0026ldquo;Buku Putih Kejahatan\u0026rdquo; dari Kementerian Kehakiman mengungkapkan betapa bayangan \u0026ldquo;orang asing yang kejam\u0026rdquo; di internet diciptakan melalui distorsi kognitif.\n1. Perbandingan yang Tenang antara \u0026ldquo;Total\u0026rdquo; dan \u0026ldquo;Tingkat Kejahatan\u0026rdquo; Menurut statistik yang dirilis pada tahun 2024, proporsi orang asing di antara total orang yang ditangkap adalah sekitar 5,5% . Sisa 95% adalah kejahatan yang dilakukan oleh orang Jepang.\nMembandingkan jumlah orang yang ditangkap per 100.000 penduduk (tingkat kejahatan) mengungkapkan esensinya lebih jauh.\nKategori Orang yang ditangkap per 100.000 populasi (perkiraan) Orang Jepang (Semua usia) Sekitar 142,7 orang Penduduk Asing (Penduduk Tetap/Penduduk Jangka Panjang) Sekitar 120,0 orang Adalah fakta statistik bahwa tingkat kejahatan penduduk asing jangka menengah hingga panjang di Jepang lebih rendah daripada rata-rata keseluruhan penduduk Jepang.\n2. Keajaiban Bias \u0026ldquo;Generasi\u0026rdquo; Mengapa bayangan bahwa \u0026ldquo;orang asing itu menakutkan\u0026rdquo; bisa mendominasi? Alasan terbesarnya adalah perbedaan \u0026ldquo;komposisi usia\u0026rdquo; dalam kriminologi.\nOrang Jepang: Sekitar 30% adalah lansia dengan tingkat kejahatan yang sangat rendah. Karena kelompok ini menekan \u0026ldquo;penyebut\u0026rdquo;, keseluruhan angka Jepang tampak rendah. Orang Asing: Karena mereka datang ke Jepang sebagai tenaga kerja, lebih dari 80% berada di \u0026ldquo;kelompok usia muda hingga paruh baya,\u0026rdquo; kelompok yang secara statistik rentan terhadap kejahatan. Jika kita membandingkan tingkat kejahatan orang Jepang dan orang asing di bawah kondisi yang sama, yaitu kelompok \u0026ldquo;usia 20-an,\u0026rdquo; tidak ada perbedaan signifikan antara keduanya. Dengan kata lain, bukan \u0026ldquo;keamanan memburuk karena jumlah orang asing meningkat,\u0026rdquo; tetapi hanya \u0026ldquo;kelompok usia yang rentan melakukan kejahatan (generasi muda) hadir di Jepang dalam bentuk orang asing.\u0026rdquo;\n3. \u0026ldquo;Bias Konfirmasi\u0026rdquo; yang Diciptakan oleh Media Sosial Algoritma media sosial menggunakan \u0026ldquo;kecemasan\u0026rdquo; kita sebagai bahan bakarnya. Ketika satu kejahatan oleh orang asing terjadi, hal itu dihubungkan dengan \u0026ldquo;atribut (kewarganegaraan)\u0026rdquo; mereka dan disebarkan secara agresif. Akibatnya, hanya memori \u0026ldquo;orang asing menyebabkan insiden lagi\u0026rdquo; yang diperkuat di otak kita.\nIni disebut \u0026ldquo;Bias Konfirmasi\u0026rdquo; . Kejahatan orang Jepang, yang menyumbang 95% dari total, diabaikan sebagai kejadian \u0026ldquo;sehari-hari\u0026rdquo;, dan 5% kejahatan orang asing diganti menjadi representasi \u0026ldquo;semua orang asing.\u0026rdquo;\nBab 4: Pewarisan Budaya —— \u0026ldquo;Perusak\u0026rdquo; atau \u0026ldquo;Penyelamat\u0026rdquo;? Kekhawatiran bahwa \u0026ldquo;tradisi dan budaya Jepang sedang dihancurkan\u0026rdquo; juga berbeda dari realitas di lapangan.\n1. \u0026ldquo;Pewaris Terakhir\u0026rdquo; Kerajinan Tradisional Jumlah pekerja manufaktur kerajinan tradisional Jepang telah anjlok dari sekitar 300.000 pada tahun 1970-an menjadi hanya sekitar 50.000 hari ini. Yang menyelamatkan krisis kepunahan ini adalah orang asing yang datang ke Jepang dengan rasa hormat yang mendalam terhadap budaya Jepang.\nPabrik Sake dan Pembuat Pedang: Orang asing telah menjadi murid di bengkel-bengkel di mana orang Jepang telah menyerah untuk mewariskannya, dan dengan memasukkan kemampuan mereka untuk menyiarkan ke luar negeri dan sensibilitas baru, mereka membangkitkan budaya yang berada di ambang penutupan menjadi \u0026ldquo;industri yang berkelanjutan.\u0026rdquo; 2. Mempertahankan Komunitas Lokal Di pemerintah daerah di mana kaum muda telah menghilang dan menjadi \u0026ldquo;kota dengan kemungkinan punah,\u0026rdquo; peserta pelatihan teknis dan pekerja terampil asing tertentu menjadi pembawa festival lokal dan mendukung fondasi pertanian. Siapa yang mengolah lahan pertanian terbengkalai yang ditinggalkan orang Jepang, dan siapa yang melindungi acara tahunan yang telah berlangsung selama ratusan tahun? Jika kita melihat realitas tersebut, menjadi jelas bahwa mereka bukanlah \u0026ldquo;perusak\u0026rdquo; budaya, melainkan \u0026ldquo;garis pertahanan terakhir\u0026rdquo; .\nBab 5: Kekhawatiran di Dunia Pendidikan dan Rantai \u0026ldquo;Perundungan\u0026rdquo; (Bullying) Efek samping dari masuknya istilah \u0026ldquo;Jepang Pertama\u0026rdquo; ke lingkungan pendidikan sangatlah parah.\nDikotomi yang memisahkan \u0026ldquo;Dalam dan Luar\u0026rdquo;: Jika anak-anak menginternalisasi rasa elitisme palsu bahwa \u0026ldquo;orang Jepang adalah kelas istimewa yang harus diprioritaskan,\u0026rdquo; hal ini akan dengan mudah berujung pada perundungan untuk menyingkirkan \u0026ldquo;mereka yang berbeda dari kita.\u0026rdquo; Hierarki berdasarkan Akar: Anak-anak dengan penampilan atau nama yang berbeda diserang sebagai \u0026ldquo;bukan orang Jepang\u0026rdquo; meskipun mereka memegang kewarganegaraan Jepang. Ini adalah runtuhnya pendidikan dan tindakan yang merusak bakat yang akan memimpin masa depan Jepang. Para ahli di bidang pendidikan khawatir bahwa eksklusivitas istilah \u0026ldquo;Pertama\u0026rdquo; (First) merusak kemampuan anak-anak untuk hidup berdampingan secara multikultural, berisiko mengisolasi Jepang dari dunia sebagai akibatnya.\nBab 6: Tren Global dan Gelombang Populisme Fenomena ini tidak unik di Jepang. Di negara-negara Barat pun, ada fenomena yang berkelanjutan di mana kelas-kelas yang tidak mendapat manfaat dari globalisasi mengalir ke arah populisme yang mengusung \u0026ldquo;negaraku pertama\u0026rdquo; (America First, dll.).\nNamun, perbedaan krusial antara Jepang dan negara-negara Barat adalah fakta bahwa \u0026ldquo;populasi menyusut dengan kecepatan tercepat di dunia.\u0026rdquo; Sementara negara lain memiliki pilihan untuk \u0026ldquo;membatasi,\u0026rdquo; Jepang sudah memiliki banyak infrastruktur sosial yang tidak dapat dipertahankan tanpa \u0026ldquo;kerja sama.\u0026rdquo; Berpegang teguh pada pendekatan emosional \u0026ldquo;Pertama\u0026rdquo; secara logis berarti \u0026ldquo;bunuh diri perlahan-lahan.\u0026rdquo;\nKesimpulan: Apa \u0026ldquo;Jepang Pertama\u0026rdquo; yang Sebenarnya? Keinginan di balik kata-kata \u0026ldquo;Jepang Pertama\u0026rdquo;—harapan agar \u0026ldquo;kehidupan warga negara harus dipikirkan terlebih dahulu\u0026rdquo;—adalah tanggung jawab paling mendasar yang harus dimiliki oleh pemerintah mana pun.\nNamun, cara untuk memenuhi keinginan itu tidak boleh \u0026ldquo;penyingkiran tetangga.\u0026rdquo; Seperti yang ditunjukkan oleh data objektif, kenyamanan hidup, keamanan publik, budaya tradisional, dan sistem jaminan sosial itu sendiri yang kita nikmati saat ini berada dalam fase \u0026ldquo;ketergantungan dan koeksistensi\u0026rdquo; yang tidak dapat lagi dipertahankan tanpa kehadiran orang asing.\nBukankah \u0026ldquo;Jepang Pertama\u0026rdquo; yang sebenarnya adalah dengan tenang mempraktikkan tiga poin berikut?\nDiskusi berdasarkan fakta: Pahamilah kenyataan berdasarkan statistik kementerian pemerintah alih-alih terbawa oleh hoaks dan informasi yang dilebih-lebihkan. Menetapkan aturan yang adil: Mewajibkan orang asing untuk mematuhi aturan Jepang, sementara di sisi lain, masyarakat Jepang memperlakukan mereka sebagai mitra yang adil. Pembaruan internal: Daripada melihat penerimaan orang asing sebagai \u0026ldquo;kehilangan Jepang,\u0026rdquo; mengubah persepsi bahwa kita meminjam kekuatan mereka untuk \u0026ldquo;membangun kembali dan mempertahankan Jepang.\u0026rdquo; Tahun 2026, kita berdiri di persimpangan jalan yang besar. Apakah kita akan terus meneriakkan kata-kata perpecahan dan mencekik diri kita sendiri? Ataukah kita akan menghadapi kenyataan dan mengambil langkah menuju \u0026ldquo;Jepang yang berkelanjutan\u0026rdquo; di mana beragam orang saling mendukung satu sama lain?\nJawabannya terletak pada \u0026ldquo;kecerdasan\u0026rdquo; dan \u0026ldquo;keberanian\u0026rdquo; di hati setiap individu.\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/id/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":"Mitos dan Realitas \"Jepang Pertama\": Pertahanan Jepang Atas Nama \"Koeksistensi\" di Tahun 2026"},{"content":"[Perhatian] Apakah Anda akan ditagih setelah uji coba gratis Gemini berakhir? Ringkasan cara membatalkan Saat Anda mencoba mencoba layanan AI Google \u0026ldquo;Gemini\u0026rdquo;, ada ** uji coba gratis 1 bulan ** yang disediakan di awal. Saya pikir banyak orang mendaftar dengan berpikir, \u0026ldquo;Jika gratis, saya akan mencobanya untuk saat ini\u0026rdquo;, tetapi ada hal yang perlu diperhatikan di sini.\nApa yang terjadi saat uji coba gratis berakhir? Setelah masa uji coba berakhir, Anda akan secara otomatis ditagih ** 2.900 yen per bulan ** . Ini terkait dengan langganan yang disebut \u0026ldquo;Keanggotaan Google One\u0026rdquo;, dan ini adalah mekanisme yang beralih ke penagihan berkelanjutan jika Anda tidak melakukan apa-apa secara khusus.\nJika Anda membatalkan, Anda tidak akan ditagih, tetapi\u0026hellip; Tentu saja, tidak akan ada biaya jika Anda membatalkan selama masa uji coba. Halaman penjelasan resmi juga berisi \u0026ldquo;Cara membatalkan keanggotaan Google One\u0026rdquo;.\n👉 Batalkan keanggotaan Google One (Resmi)\nNamun, ketika saya benar-benar mencoba mengaksesnya, saya menemukan diri saya dalam situasi di mana \u0026ldquo;entah kenapa saya tidak bisa membatalkannya\u0026hellip;\u0026rdquo;. Saya bingung dan berpikir, \u0026ldquo;Eh, dari mana saya harus menghentikannya?\u0026rdquo;\nKlik di sini untuk cara pembatalan yang benar! Sebagai hasil dari mencari berbagai hal, halaman berikut adalah tempat saya benar-benar dapat membatalkannya.\n👉 Akun Google – Hapus layanan\nDari sini, pilih \u0026ldquo;Google One\u0026rdquo; dan hapus untuk menyelesaikan pembatalan.\nRingkasan Uji coba gratis Gemini adalah 1 bulan Setelah selesai, Anda akan secara otomatis ditagih ** 2.900 yen per bulan ** Pembatalan mungkin tidak dapat dilakukan dari halaman penjelasan resmi Anda benar-benar dapat membatalkan dari ** \u0026ldquo;halaman penghapusan layanan\u0026rdquo; ** Jika Anda berpikir, \u0026ldquo;Tidak apa-apa karena ini adalah uji coba gratis\u0026rdquo;, Anda akan ditagih sebelum Anda menyadarinya, jadi berhati-hatilah!\n👉 Jika Anda membaca artikel ini, Anda mungkin saat ini sedang kesulitan dan bertanya-tanya \u0026ldquo;Dari mana saya membatalkan?\u0026rdquo; Untuk saat ini, silakan periksa tautan di atas.\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/id/p/apa-yang-harus-dilakukan-saat-anda-tidak-dapat-membatalkan-google-one-gemini/","title":"Apa yang harus dilakukan saat Anda tidak dapat membatalkan Google One (Gemini)"},{"content":"🎬 Naskah Siaran YouTube (Pengembangan Aplikasi Pembuatan Kartu Tahun Baru・Bagian 1) Mulai Siaran (2-3 menit pertama) Sapaan Singkat \u0026ldquo;Halo. Mulai hari ini, saya akan memulai siaran pengembangan aplikasi pembuatan kartu Tahun Baru dengan C++ sedikit demi sedikit.\u0026rdquo; \u0026ldquo;Saya tidak tahu berapa banyak siaran yang akan dilakukan sampai selesai, tapi kita akan maju secara bertahap sebagai sebuah seri.\u0026rdquo; \u0026ldquo;Pada dasarnya saya akan bekerja dalam diam, jadi saya harap Anda dapat menonton ini sebagai BGM untuk bekerja.\u0026rdquo;\nGambaran Umum Aplikasi yang Dituju \u0026ldquo;Dalam aplikasi ini, saya ingin membuat desain sisi belakang kartu Tahun Baru menjadi mungkin.\u0026rdquo; \u0026ldquo;Saya berencana untuk menyertakan penyisipan foto, penyesuaian font, dan menggunakan AI untuk pemrosesan gambar dan pembuatan ilustrasi, serta pada akhirnya mengunggahnya ke Microsoft Store.\u0026rdquo;\nTarget Pekerjaan Hari Ini \u0026ldquo;Hari ini, di bagian pertama, kita akan menyiapkan lingkungan dan membangun fondasi.\u0026rdquo; \u0026ldquo;Secara spesifik,\nPembuatan repositori GIT Pembuatan jendela utama Menampilkan dialog informasi versi Pembuatan menu dan implementasi perintah keluar Inisialisasi dan pelepasan Direct2D serta menampilkan HelloWorld Saya berencana untuk memajukan hal-hal ini.\u0026rdquo;\nTentang Publikasi Kode Sumber \u0026ldquo;Kode sumber dipublikasikan di GitHub. Jika Anda tertarik, silakan lihat.\u0026rdquo; → https://github.com/kenjinote/NengaCardApp/\nBagian Bekerja (Diam) Membuat repositori GitHub → Komit awal (Initial commit)\nMembuat cetakan jendela utama\nMembuat dialog versi dan menu serta implementasi perintah keluar\nProses inisialisasi dan pelepasan Direct2D → Konfirmasi tampilan HelloWorld\nMendorong (Push) ke GitHub sesuai kebutuhan\n※ Pada dasarnya diam, memberikan penjelasan singkat hanya saat dibutuhkan\nSebelum Akhir Siaran (1-2 menit terakhir) Ringkasan Kemajuan Hari Ini \u0026ldquo;Hari ini, kita membuat repositori GIT, mengimplementasikan jendela, tombol keluar, dan dialog versi.\u0026rdquo; \u0026ldquo;Kita berhasil menampilkan HelloWorld menggunakan Direct2D.\u0026rdquo;\nMenghubungkan ke Waktu Berikutnya \u0026ldquo;Mulai waktu berikutnya, saya ingin merapikan bagian UI dan maju ke hal-hal seperti membuat objek dari string.\u0026rdquo;\nMengingatkan Kembali Tautan GitHub → https://github.com/kenjinote/NengaCardApp/\nPenutup \u0026ldquo;Terima kasih telah menonton. Saya akan terus bekerja keras di waktu berikutnya juga, jadi mohon dukungannya.\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/id/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":"Siaran Pengembangan Aplikasi Pembuatan Kartu Tahun Baru VOL.1 (Naskah)"},{"content":"Menginstal MSIX dengan Sertifikat yang Ditandatangani Sendiri Saat mendistribusikan aplikasi di Windows, menggunakan paket MSIX sangat praktis karena mekanisme penginstalan dan pembaruan disatukan. Namun, ada batasan bahwa MSIX selalu membutuhkan \u0026ldquo;sertifikat yang ditandatangani\u0026rdquo;. Bila Anda ingin menguji distribusi aplikasi yang dikembangkan oleh perusahaan atau individu, mungkin ada situasi di mana \u0026ldquo;membeli sertifikat penandatanganan kode komersial terlalu berlebihan\u0026rdquo;.\nDi sinilah Sertifikat yang Ditandatangani Sendiri (Self-Signed Certificate) berguna. Artikel ini merangkum langkah-langkah untuk melampirkan sertifikat yang ditandatangani sendiri ke MSIX agar dapat diinstal di lingkungan lokal.\n1. Membuat Sertifikat yang Ditandatangani Sendiri Pertama, luncurkan PowerShell dalam mode Administrator dan jalankan perintah berikut.\n1 2 // Membuat sertifikat yang ditandatangani sendiri 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; Apa yang dibuat di sini adalah sertifikat untuk \u0026ldquo;penandatanganan kode\u0026rdquo;.\nAkan lebih mudah ditemukan nanti jika Anda memberinya nama yang jelas menggunakan -FriendlyName. Anda dapat menyesuaikan tanggal kedaluwarsa dengan -NotAfter. Kali ini kami menetapkannya menjadi 10 tahun. 2. Mengekspor File PFX Ekspor sertifikat yang dibuat dalam format PFX sehingga dapat digunakan dengan signtool.\n1 2 3 4 // Membuat pfx $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 Kata sandi yang ditetapkan saat ini ( password dalam contoh) akan diperlukan untuk operasi penandatanganan berikutnya.\n3. Menginstal Sertifikat Sendiri ke Otoritas Sertifikasi Akar Tepercaya Sertifikat yang dibuat tidak akan dipercaya oleh Windows seperti apa adanya. Untuk menginstalnya, Anda harus mengimpornya dari certmgr.msc ke [Otoritas Sertifikasi Akar Tepercaya] -\u0026gt; [Sertifikat] .\nJika Anda mengimpor sertifikat yang diekspor ( .cer atau .pfx ), sertifikat itu akan diperlakukan sebagai sertifikat tepercaya di PC target. Akibatnya, bahkan jika Anda menandatangani MSIX, peringatan \u0026ldquo;Sertifikat tidak tepercaya\u0026rdquo; tidak akan muncul.\n4. Menandatangani Penginstal (MSIX) Terakhir, gunakan sertifikat PFX yang dibuat untuk menandatangani MSIX. signtool disertakan dalam Visual Studio dan Windows SDK.\n1 2 // Menandatangani penginstal 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 menentukan algoritma tanda tangan. Tentukan file PFX dengan /f dan masukkan kata sandi dengan /p. Terakhir, tentukan jalur file MSIX. Jika jalur signtool tidak ditemukan, tentukan dengan jalur lengkap. Di lingkungan saya, lokasinya ada di tempat berikut. 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; Ini melengkapi penandatanganan, dan MSIX yang dapat diinstal pada PC target akan selesai.\nKesimpulan Buat sertifikat yang ditandatangani sendiri dengan New-SelfSignedCertificate Ekspor PFX dengan Export-PfxCertificate Instal sertifikat ke Otoritas Sertifikasi Akar Tepercaya Tandatangani MSIX dengan signtool Dengan memahami alur ini, Anda dapat memeriksa operasi dan menguji distribusi di lingkungan lokal tanpa membeli sertifikat komersial. Tentu saja, untuk distribusi komersial yang sebenarnya, sertifikat yang dikeluarkan oleh otoritas sertifikasi diperlukan, tetapi metode ini sangat berguna pada tahap pengembangan dan verifikasi.\n👉 Kami menggunakan installer.msix sebagai contoh kali ini, tetapi prosedur yang sama dapat diterapkan pada aplikasi yang Anda buat sendiri.\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/id/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":"Menginstal MSIX dengan Sertifikat yang Ditandatangani Sendiri"},{"content":"Alat untuk Mereka yang \u0026ldquo;Tidak Bisa Menulis Kode, tetapi Memiliki Logika\u0026rdquo;. Mengapa Saya Membuat LogicPad Halo, saya kenji. Saya adalah pembuat alat low-code \u0026ldquo;LogicPad\u0026rdquo;. Kali ini, daripada memperkenalkan produk, saya ingin menulis dari sudut pandang yang sedikit lebih personal tentang kisah di balik layar pengembangannya, \u0026ldquo;mengapa saya ingin membuat ini?\u0026rdquo; dan perasaan saya sendiri.\nSejujurnya, ini bukan sekadar pengembangan alat. Masa lalu saya, rasa frustrasi di tempat kerja, keterampilan saya, dan keinginan yang selalu membara, \u0026ldquo;suatu hari nanti saya ingin membuat produk saya sendiri\u0026rdquo; ―― Hasil dari persilangan semua hal itulah yang melahirkan LogicPad.\nDengan kata lain, ini juga merupakan \u0026ldquo;proyek puncak kehidupan\u0026rdquo; bagi saya. Saya akan menulis tentang latar belakang ini dengan sejujur dan seantusias mungkin.\nSejujurnya, Saya Menginginkan Produk yang Bisa Saya Banggakan dan Katakan, \u0026ldquo;Saya yang Membuat Ini\u0026rdquo; Sejujurnya, ini adalah motif pertama saya.\nSejak lama, saya suka menulis kode baik untuk pekerjaan maupun hobi. Saya telah terlibat dalam berbagai pengembangan. Tapi suatu hari, saya tiba-tiba menyadari. \u0026ldquo;Saya tidak memiliki produk yang saya rilis ke dunia atas nama saya sendiri dan di bawah tanggung jawab saya sendiri.\u0026rdquo;\nTentu saja, hal-hal yang kami buat sebagai tim memiliki nilai, dan ada banyak pekerjaan yang saya banggakan. Tapi di suatu tempat, ada juga perasaan hampa: \u0026ldquo;Apakah saya akan mengakhiri karier saya seperti ini, di bawah nama orang lain?\u0026rdquo;\nSekali saja. Saya ingin meninggalkan sesuatu yang bisa saya banggakan dan katakan, \u0026ldquo;Saya yang membuat ini\u0026rdquo;. Dengan pemikiran itu, saya mulai merumuskan konsep LogicPad. Itu sekitar 6 tahun yang lalu (sekitar tahun 2019). (Ide awalnya sendiri adalah sekitar tahun 2015 ketika saya mengetahui tentang Blueprints, bahasa pemrograman visual di Unreal Engine.)\nAnda Tidak Bisa Ikut Campur Karena Tidak Bisa Menulis Kode. Bukankah Itu Sayang Sekali? Ada banyak orang berbakat di tempat kerja saya.\nMereka bisa membangun logika. Mereka menggunakan fungsi Excel dengan bebas, dan mereka bisa melihat inti dari sebuah masalah. Tapi ―― tangan mereka berhenti pada tahap \u0026ldquo;menulis kode\u0026rdquo;.\n\u0026ldquo;Saya melakukan pekerjaan ini dengan melihat manual setiap kali, tidak bisakah kita mengotomatiskannya?\u0026rdquo; \u0026ldquo;Ya, bisa. Tapi\u0026hellip; Anda harus menulis kode untuk melakukannya\u0026hellip;\u0026rdquo;\nPercakapan seperti itu terjadi berkali-kali.\nSaya berpikir setiap kali. \u0026ldquo;Meskipun mereka memahami logikanya, sungguh disayangkan mereka terhenti oleh dinding kode.\u0026rdquo;\nPilihan Editor Low-Code Sebenarnya, di pekerjaan saya sebelumnya, saya sedang mengembangkan perangkat lunak CAD 2D yang dioperasikan melalui GUI. Di CAD, Anda merakit bentuk menggunakan mouse, bukan? Dengan kata lain, ini adalah dunia \u0026ldquo;membangun logika melalui operasi\u0026rdquo; .\nSaya pikir, \u0026ldquo;Ini sangat cocok dengan low-code.\u0026rdquo;\nMelihat lebih jauh ke belakang, sejak saya masih mahasiswa, saya selalu melakukan pemrosesan gambar, pemrosesan numerik, alat Windows, alat posting otomatis SNS, dll. Setiap kali saya mendapat ide, saya akan langsung menulis kode dan memproduksi massal program kecil. Saya rasa ada lebih dari 600 buah. Semuanya masih ada di GitHub hingga hari ini.\nSaat itu, saya tidak memikirkan maknanya. Itu hanya \u0026ldquo;Saya membuatnya karena saya ingin\u0026rdquo;. Itu saja.\nTapi sekarang, saat membuat LogicPad\u0026hellip;\nSaya benar-benar merasa titik-titiknya telah terhubung menjadi sebuah garis.\nMudah Digunakan, tapi Kuat. Kesulitan Menjaga Keseimbangan Saat saya melanjutkan pengembangan, hal yang selalu saya pikirkan adalah \u0026ldquo;menjadikannya alat yang intuitif untuk digunakan dan juga benar-benar kuat\u0026rdquo; .\nJika Anda menambahkan fitur, Anda menambah apa yang bisa dilakukan. Tapi itu akan menjadi sulit digunakan. Jika Anda membuatnya sederhana, siapa pun bisa menyentuhnya. Tapi kemudian, akan ada orang-orang yang merasa kurang puas.\nAgar orang tidak berkata, \u0026ldquo;Alat low-code itu cuma mainan, kan?\u0026rdquo; Tapi juga agar mereka tidak berkata, \u0026ldquo;Pada akhirnya, Anda tetap harus menulis kode, kan?\u0026rdquo;\nSaya selalu berjuang di garis tipis antara intuisi dan ekspresi tersebut.\nSaya membangun ulang UI berkali-kali, membuangnya berkali-kali, dan ketika saya akhirnya mendekati bentuk yang membuat saya berpikir, \u0026ldquo;Ini bisa berhasil,\u0026rdquo; saya benar-benar bahagia.\nSaya Terselamatkan oleh Kata-Kata Pertama dari \u0026ldquo;Pengguna\u0026rdquo; Orang pertama yang saya beri LogicPad adalah mantan rekan kerja. Dia tidak pandai IT, dan takut pada kode. Tapi dia ahli dalam logika.\nSaya menjelaskan sedikit dan membiarkannya mencoba\u0026hellip; Kata-kata yang dia ucapkan beberapa menit kemudian, saya tidak bisa melupakannya sampai sekarang.\n\u0026ldquo;Kalau begini, sepertinya saya juga bisa melakukannya!\u0026rdquo;\nSaya hampir menangis. Itulah yang ingin saya berikan padanya.\nBukan sekadar alat yang berfungsi, melainkan perasaan \u0026ldquo;Saya bisa membuatnya sendiri!\u0026rdquo; . Saya yakin bahwa itulah nilai sebenarnya dari LogicPad.\nJika Lebih Banyak Orang Bisa Membuat, Masyarakat Akan Menjadi Lebih Menarik Saya benar-benar berpikir bahwa \u0026ldquo;demokratisasi teknologi\u0026rdquo; sangatlah penting.\nTeknologi memiliki kekuatan untuk mengubah dunia. Namun orang-orang yang bisa menanganinya terbatas.\nBagaimana jika Anda bisa membuat aplikasi hanya dengan \u0026ldquo;memahami logika\u0026rdquo;?\nLebih banyak orang akan bisa beralih ke sisi \u0026ldquo;pembuat\u0026rdquo;. And saya percaya bahwa apa yang akan lahir dari sana akan melampaui imajinasi kita saat ini.\nJika LogicPad bisa menjadi pintu masuk itu. Saya ingin ini menjadi alat yang mengubah \u0026ldquo;Saya ingin membuat\u0026rdquo; menjadi \u0026ldquo;Saya bisa membuat\u0026rdquo;.\nItulah harapan saya.\nPenutup LogicPad masih dalam versi beta dan belum selesai. Masih ada segunung hal yang perlu diperbaiki dan hal yang ingin saya lakukan.\nNamun, saya telah menuangkan seluruh \u0026ldquo;titik-titik\u0026rdquo; kehidupan saya ke dalam alat ini . Sekarang saya bisa mengatakannya dengan bangga.\n\u0026ldquo;Ini adalah produk yang saya buat\u0026rdquo; .\n👇 Bonus: Apa yang Bisa Anda Lakukan dengan LogicPad Membangun proses dengan drag \u0026amp; drop Menangani percabangan kondisional dan variabel melalui GUI Menyediakan berbagai node integrasi AI Ekstensibilitas untuk pengguna tingkat lanjut dengan memasukkan skrip Fungsi matematika dan pemrosesan data presisi tinggi (seperti perhitungan numerik dengan presisi tak terbatas) Pintasan keyboard yang ekstensif untuk pengguna tingkat lanjut Mendukung lebih dari 90 bahasa Apa yang Ingin Saya Lakukan ke Depannya Integrasi AI untuk menghasilkan logika dari bahasa alami Mekanisme yang memungkinkan pengguna membuat node kustom Membangun platform di mana node dan logika yang dibuat dapat dibagikan ✍️ Catatan Akhir Terima kasih banyak telah membaca sejauh ini. Ini bukan sekadar pengembangan alat, melainkan sebuah tantangan di mana saya mencurahkan pengalaman, hasrat, dan bagian dari hidup saya.\n\u0026ldquo;Tidak bisa menulis kode, tetapi memiliki logika\u0026rdquo; Masa depan di mana orang-orang seperti itu bisa \u0026ldquo;membuat\u0026rdquo; dengan kekuatan mereka sendiri. Saya ingin terus mengupayakan hal tersebut melalui LogicPad.\nJika hal ini membuat Anda sedikit saja berpikir, \u0026ldquo;Saya ingin menggunakannya,\u0026rdquo; saya akan sangat senang. Jika Anda tertarik, silakan coba LogicPad.\nDan jika Anda memiliki pemikiran atau hal yang Anda sadari setelah menggunakannya, tidak peduli sekecil apa pun itu. Suara Anda akan menjadi kekuatan pendorong yang besar untuk langkah selanjutnya dari produk ini.\nTerima kasih atas dukungan Anda yang berkelanjutan.\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/id/p/logicpad-%E9%96%8B%E7%99%BA%E7%A7%98%E8%A9%B1/","title":"Kisah Pengembangan LogicPad"},{"content":"Cara Menghapus Metadata (Informasi Pribadi) dari Excel dan Word Sekaligus Menggunakan PowerShell File Office seperti Excel secara otomatis menyimpan \u0026ldquo;metadata (informasi pribadi)\u0026rdquo; seperti pembuat, pihak terakhir yang mengubah, nama perusahaan, dan lainnya. Terdapat banyak kasus di mana Anda ingin menghapus informasi ini, misalnya ketika berbagi file ke luar perusahaan.\nArtikel ini akan menjelaskan secara rinci tentang cara menghapus metadata Excel menggunakan PowerShell, dengan fokus pada pemrosesan massal dalam folder dan penerapannya pada file Office lain seperti Word dan PowerPoint.\n1. Menghapus Metadata dari Satu File Excel Ini adalah skrip dasar untuk menghapus informasi pribadi dari satu file Excel. Skrip ini memanggil objek COM Excel, mengatur properti RemovePersonalInformation menjadi $true, lalu menyimpan dan menimpanya.\n1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 # Jalankan aplikasi Excel secara tersembunyi $excel = New-Object -ComObject Excel.Application $excel.Visible = $false $excel.DisplayAlerts = $false # Buka file (※ tentukan path absolut) $filePath = \u0026#34;C:\\Path\\To\\Your\\File.xlsx\u0026#34; $wb = $excel.Workbooks.Open($filePath) # Aktifkan pengaturan untuk menghapus metadata (informasi pribadi) $wb.RemovePersonalInformation = $true # Simpan dengan menimpa dan tutup $wb.Save() $wb.Close($false) # Keluar dari Excel dan bebaskan memori $excel.Quit() [System.Runtime.Interopservices.Marshal]::ReleaseComObject($excel) | Out-Null Catatan: Path yang diberikan ke Workbooks.Open() harus berupa path absolut (full path). Path relatif dapat menyebabkan error.\n2. Memproses Semua File Excel dalam Folder Sekaligus Dalam praktiknya, sering kali Anda ingin \u0026ldquo;menghapus metadata dari puluhan file Excel di folder tertentu sekaligus\u0026rdquo;. Hal ini dapat dicapai dengan menggabungkan Get-ChildItem untuk melakukan perulangan.\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; # Ambil semua file .xlsx dan .xls di dalam folder $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;File Excel tidak ditemukan.\u0026#34; exit } $excel = New-Object -ComObject Excel.Application $excel.Visible = $false $excel.DisplayAlerts = $false foreach ($file in $excelFiles) { Write-Host \u0026#34;Menghapus metadata dari $($file.Name) ...\u0026#34; # Buka file $wb = $excel.Workbooks.Open($file.FullName) # Hapus metadata dan simpan dengan menimpa $wb.RemovePersonalInformation = $true $wb.Save() $wb.Close($false) } $excel.Quit() [System.Runtime.Interopservices.Marshal]::ReleaseComObject($excel) | Out-Null Write-Host \u0026#34;Semua proses selesai!\u0026#34; 3. Menghapus Metadata dari File Office Lainnya (Word / PowerPoint) Anda juga dapat menghapus metadata dari Word atau PowerPoint menggunakan logika yang sama persis seperti pada Excel. Satu-satunya perbedaan adalah nama objek COM yang dipanggil, sementara ketersediaan properti RemovePersonalInformation tetap sama.\nUntuk 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 Untuk PowerPoint Untuk PowerPoint, pengaturan properti RemovePersonalInformation tetap sama, tetapi perilaku untuk menjalankannya secara tersembunyi sedikit berbeda.\n1 2 3 4 5 6 7 8 9 10 $ppt = New-Object -ComObject PowerPoint.Application # Buka dengan menentukan mode tersembunyi (msoFalse) pada argumen ke-2 hingga ke-4 $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 Kesimpulan Dengan memanfaatkan PowerShell dan objek COM, Anda dapat mengotomatiskan sepenuhnya penghapusan metadata dari file Office. Untuk mencegah kebocoran informasi rahasia atau nama pribadi secara tidak sengaja, sangat praktis untuk menyiapkan skrip pemrosesan massal dalam folder sebelum mengirimkan file.\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/id/p/cara-menghapus-metadata-informasi-pribadi-excel-dengan-powershell/","title":"Cara Menghapus Metadata (Informasi Pribadi) dari Excel dan Word Sekaligus Menggunakan PowerShell"},{"content":"Penjelasan Sederhana tentang Dugaan Kepler! 〜Cara Menyusun Semangka Serapat Mungkin〜 Halo, ini kenji!\nHari ini saya ingin mencoba menjelaskan masalah matematika yang namanya terdengar agak sulit, yaitu \u0026ldquo;Dugaan Kepler\u0026rdquo;, dengan cara yang sesederhana mungkin.\nSekilas, ini mungkin terdengar seperti topik yang sangat spesifik, tetapi sebenarnya ini adalah masalah yang cukup dekat dengan kehidupan sehari-hari, seperti \u0026ldquo;bagaimana cara memasukkan semangka ke dalam kotak sepadat mungkin?\u0026rdquo;. Ini juga berhubungan dengan kulkas di minimarket dan cara menumpuk barang bawaan.\nDan di dunia matematika, ini adalah cerita yang sangat romantis tentang masalah yang tidak bisa dibuktikan selama lebih dari 400 tahun .\nMari kita mulai!\nSiapa itu Kepler? Pertama-tama, siapa \u0026ldquo;Kepler\u0026rdquo; dalam \u0026ldquo;Dugaan Kepler\u0026rdquo;?\nIni adalah nama seorang astronom dan matematikawan Jerman, Johannes Kepler .\nOrang ini sangat luar biasa. Misalnya, dialah yang menemukan bahwa orbit planet berbentuk elips. Ini adalah pengetahuan yang umum saat ini, tetapi pada masa itu (sekitar tahun 1600) bahkan teori heliosentris belum sepenuhnya dipercaya.\nGalileo = Jenius observasi Kepler = Jenius yang menjelaskan alam semesta dengan rumus Newton = Super jenius yang merangkum teori-teori tersebut menjadi hukum fisika Dengan posisi seperti itu, Kepler adalah pionir dalam \u0026ldquo;menjelaskan alam semesta dengan persamaan matematika\u0026rdquo;.\nDan kemudian suatu hari dia mengatakan ini.\nApa itu Dugaan Kepler? Secara sederhana, \u0026ldquo;Dugaan Kepler\u0026rdquo; adalah masalah ini.\nSaat memasukkan bola dengan ukuran yang sama (seperti semangka atau jeruk) ke dalam kotak, susunan mana yang paling padat?\nMasalah seperti ini.\nLalu apa yang Kepler duga pada tahun 1600-an adalah\nBukankah menumpuknya seperti bentuk segitiga, seperti menata jeruk di pasar sayur, adalah yang paling efisien?\nDalam bahasa matematika, ini disebut \u0026ldquo;Masalah Pengepakan Bola\u0026rdquo; (Sphere Packing Problem) , yaitu masalah mencari cara menyusun bola serapat mungkin dalam suatu ruang.\nKepler menduga bahwa susunan \u0026ldquo;Face-Centered Cubic (FCC)\u0026rdquo; (mirip dengan menumpuk semangka dalam bentuk segitiga) adalah yang paling efisien.\nDan orang-orang berpikir, \u0026ldquo;Itu memang masuk akal,\u0026rdquo; tapi terbukti sangat sulit untuk membuktikan secara matematis bahwa \u0026ldquo;ini jelas yang terbaik!\u0026rdquo;.\n400 Tahun untuk Membuktikan!?! Lalu, kapan sebenarnya itu terbukti?\nMengejutkannya, sekitar tahun 1998 - 2005 . Artinya, hampir 400 tahun tidak ada yang bisa membuktikannya . Luar biasa.\nSelain itu, orang yang membuktikannya adalah matematikawan Amerika, Thomas Hales .\nOrang ini menyadari bahwa tidak mungkin melakukannya dengan perhitungan manual, jadi dia menggunakan komputer untuk membuktikannya . Namun, buktinya terlalu rumit sehingga manusia tidak bisa memeriksanya dengan benar! Masalah pun muncul.\nOleh karena itu, terjadi perdebatan besar di dunia matematika, \u0026ldquo;Apakah kita benar-benar bisa mempercayai bukti komputer?\u0026rdquo;.\nAkhirnya, \u0026ldquo;bukti formal\u0026rdquo; yang dikonfirmasi secara ketat, termasuk dengan komputer, diselesaikan pada tahun 2014 .\nDengan kata lain, butuh lebih dari 400 tahun hingga intuisi Kepler terbukti benar. Betapa romantisnya.\nIni Sangat Sering Digunakan di Kehidupan Nyata Anda mungkin berpikir bahwa \u0026ldquo;bagaimana cara menumpuk bola\u0026rdquo; hanya dibicarakan oleh para kutu buku matematika, tetapi sebenarnya ini sangat praktis.\nMengemas minuman secara efisien di kulkas minimarket Menumpuk kaleng di palet transportasi Juga diterapkan dalam telekomunikasi (seperti kompresi sinyal digital) Digunakan dalam desain printer 3D dan struktur kristal Dan masih banyak lagi. Faktanya, ini adalah teori yang banyak digunakan di balik kehidupan kita.\nKesimpulan: Intuisi Manusia Itu Luar Biasa Jadi, mari kita rangkum.\nDugaan Kepler = Masalah bagaimana cara mengemas bola serapat mungkin Pak Kepler = Matematikawan/astronom yang menemukan orbit planet Diduga pada tahun 1600-an! Tetapi dibuktikan pada tahun 2000-an! Sangat diaplikasikan dalam kehidupan nyata! Dan hal yang paling menarik adalah \u0026ldquo;cara pedagang sayur menumpuk buah berdasarkan insting ternyata yang terbaik secara matematis\u0026rdquo; .\nDengan kata lain, intuisi manusia itu luar biasa . Dan fakta bahwa butuh waktu 400 tahun untuk membuktikannya membuat cerita ini sangat romantis.\nJika Anda tertarik, silakan cari \u0026ldquo;Thomas Hales\u0026rdquo;, \u0026ldquo;Formal Proof\u0026rdquo;, atau \u0026ldquo;Sphere Packing\u0026rdquo;. Jika digali lebih dalam, ini akan sangat menarik.\nSampai jumpa!\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/id/p/penjelasan-sederhana-dugaan-kepler/","title":"Penjelasan Sederhana tentang Dugaan Kepler"},{"content":"Tembok Pengembangan AI 〜 Sampai di pos 8, tapi setelah itu seperti neraka 〜\nHalo, saya kenji.\nBelakangan ini, saya sering sekali mendengar, \u0026ldquo;Saya minta AI, dan aplikasi pun jadi!\u0026rdquo; Kita telah melewati era no-code dan low-code, dan memasuki fase \u0026ldquo;vibe-coding\u0026rdquo; (menulis kode berdasarkan suasana hati).\nMisalnya, jika Anda berkata, \u0026ldquo;Buatkan aplikasi yang bisa mengedit gambar dan mempostingnya ke media sosial,\u0026rdquo; AI akan mengeluarkan kode dan bahkan antarmuka pengguna (UI). Anda mungkin berpikir, \u0026ldquo;Wow, kita tidak butuh manusia lagi, kan?\u0026rdquo;\nTapi tahukah Anda, itu seperti turun di pos 8 Gunung Fuji dengan memakai sandal.\nSampai pos 8 terlihat \u0026ldquo;sangat mudah\u0026rdquo; Pengembangan dengan AI pada awalnya memang sangat mudah. File I/O? Untuk saat ini berfungsi. Jaringan? Yah, terhubung. Database? JSON saja cukup. UI? ChatGPT sudah memberikan kode React. Pembayaran? API Stripe cukup copy-paste.\nDi sini, Anda mulai berkhayal, \u0026ldquo;Apakah saya sudah menjadi seorang engineer?\u0026rdquo; Namun, neraka yang sesungguhnya baru saja dimulai.\nMengapa kita terjebak? Alasannya sederhana, \u0026ldquo;AI membuat sesuatu yang tampak jadi, tetapi penyesuaian akhir sepenuhnya diserahkan kepada manusia.\u0026rdquo;\nData hilang saat file I/O Normalisasi DB yang buruk membuat pencarian menjadi lambat UI tidak intuitif Tidak ada pengujian beban, sehingga crash saat ada lonjakan akses Ditolak saat review oleh Apple/Google Menimbulkan masalah hukum (dan hampir viral) Dengan kata lain, AI ahli dalam membuat \u0026ldquo;prototipe yang terlihat seperti sudah selesai\u0026rdquo;, tetapi mengubahnya menjadi \u0026ldquo;produk yang siap dirilis ke dunia nyata\u0026rdquo; masih merupakan pekerjaan manusia.\nTapi, ada sebuah paradoks Di sini kita menyadari sebuah paradoks.\nBagaimana jika di masa depan AI benar-benar bisa melakukan segalanya? Artinya, bagaimana jika \u0026ldquo;keamanan, penagihan, dan desain semuanya ditangani dengan sempurna oleh AI\u0026rdquo;?\nPada saat itu, kebutuhan manusia untuk membuat aplikasi mungkin akan hilang sepenuhnya.\nSebab, jika pengguna langsung memberi tahu AI, \u0026ldquo;Saya ingin melakukan ini,\u0026rdquo; tugas tersebut akan langsung dieksekusi tanpa memerlukan aplikasi.\n🌀 Sebagai contoh Dulu kita \u0026ldquo;membuka aplikasi kalkulator untuk berhitung\u0026rdquo;, sekarang kita hanya perlu berkata, \u0026ldquo;Hey Siri, berapa 12×32?\u0026rdquo;, dan selesai.\nSama halnya, jika kita berkata, \u0026ldquo;AI, edit foto ini dan bagikan,\u0026rdquo; proses tersebut mungkin selesai tanpa melalui UI atau API aplikasi.\nDengan kata lain, ketika tujuan \u0026ldquo;membuat aplikasi dengan AI\u0026rdquo; terwujud, mungkin akan datang dunia di mana aplikasi itu sendiri tidak lagi dibutuhkan.\nPada akhirnya, apa yang bisa kita lakukan sekarang Lalu, apa yang harus kita lakukan?\nSaat ini \u0026ldquo;di atas pos 8\u0026rdquo; masih menjadi ranah manusia, jadi mari kita asah kemampuan di sana Fokus pada pemahaman mendalam tentang pengguna dan desain layanan Memikirkan \u0026ldquo;apa yang bernilai\u0026rdquo; daripada \u0026ldquo;apa yang bisa dibuat\u0026rdquo; Sebaliknya, mencari cara untuk memberikan nilai yang \u0026ldquo;tidak terbatas pada format aplikasi\u0026rdquo; AI adalah alat, lift, dan kadang-kadang pesaing. Namun, pertanyaan \u0026ldquo;apa yang akan dibuat\u0026rdquo; dan \u0026ldquo;mengapa membuatnya\u0026rdquo; masih merupakan pertanyaan untuk kita, manusia.\nKesimpulan: Tembok pengembangan AI bukanlah teknologi, melainkan paradoks struktural\nKita berada di era di mana siapa pun bisa mencapai pos 8 Gunung Fuji. Tapi dari situlah ujian sebenarnya dimulai.\nDan mungkin, saat kita mencapai puncak, akan ada masa depan yang menunggu di mana kita bertanya, \u0026ldquo;Apakah kita benar-benar perlu mendaki gunung ini?\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/id/p/ai%E9%96%8B%E7%99%BA%E3%81%AE%E5%A3%81/","title":"Tembok Pengembangan AI"},{"content":"🎯 Cara Memanggil Microsoft.Windows.AI dari C++ [Dengan Contoh Kode] Mulai dari Windows 10, Windows dilengkapi dengan standar runtime yang dapat mengeksekusi model AI berformat ONNX. Itu adalah Windows ML (Windows.AI.MachineLearning).\nArtikel ini menjelaskan secara rinci cara memanggil Microsoft.Windows.AI.MachineLearning dari C++ (berbasis aplikasi Win32), lengkap dengan contoh kode.\n✅ Persiapan ◾ Kebutuhan Sistem Windows 10 (1809+) atau Windows 11 Visual Studio 2019 atau yang lebih baru (versi Community bisa digunakan) Dukungan C++/WinRT (Microsoft.Windows.CppWinRT) Windows SDK 10.0.17763.0 atau yang lebih tinggi ✅ Struktur Proyek Buat proyek dengan struktur berikut di Visual Studio.\nJenis: Aplikasi Desktop Windows C++ (Proyek Kosong)\nSubsistem: Windows (WinMain)\nTambahkan paket berikut melalui NuGet\n1 Microsoft.Windows.CppWinRT ✅ Contoh Kode Berikut ini adalah contoh minimal yang menggabungkan API Win32 dan Windows.AI.MachineLearning menggunakan WinMain.\n※ Model ONNX yang digunakan adalah model.onnx, pastikan Anda menempatkannya di folder yang sama dengan file eksekusi.\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;) // Untuk tautan WinRT using namespace winrt; using namespace Windows::AI::MachineLearning; using namespace Windows::Storage; int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE, LPSTR, int nCmdShow) { // Inisialisasi WinRT (MTA atau STA diperbolehkan) winrt::init_apartment(); try { // Memuat file model auto modelFile = StorageFile::GetFileFromPathAsync(L\u0026#34;model.onnx\u0026#34;).get(); LearningModel model = LearningModel::LoadFromStorageFileAsync(modelFile).get(); // Membuat sesi LearningModelSession session(model); LearningModelBinding binding(session); // Input/Output model (input kosong untuk sementara di sini) // Sebenarnya, pengikatan diperlukan menggunakan TensorFloat, dll. // Menjalankan inferensi auto result = session.EvaluateAsync(binding, L\u0026#34;\u0026#34;).get(); MessageBox(nullptr, L\u0026#34;Inferensi selesai\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;Error\u0026#34;, MB_ICONERROR); } return 0; } ✅ Tambahan: Cara Menentukan Tensor Input dan Output Tergantung pada modelnya, Anda mungkin perlu melakukan pembuatan dan pengikatan Tensor sebelum inferensi.\nContoh:\n1 2 3 4 5 6 7 8 // Mengubah array float 1D menjadi Tensor std::vector\u0026lt;float\u0026gt; inputData = {0.5f, 0.3f, 0.2f}; std::vector\u0026lt;int64_t\u0026gt; shape = {1, 3}; // Bentuk: [1, 3] auto tensor = TensorFloat::CreateFromArray(shape, inputData); // Pengikatan input (sesuaikan dengan nama input model) binding.Bind(L\u0026#34;input_0\u0026#34;, tensor); Demikian pula, output dapat diambil dengan result.Outputs().Lookup(L\u0026quot;output_0\u0026quot;).\n✅ Catatan Debugging Jika file model tidak ada di folder eksekusi, FileNotFoundException akan muncul. Jika nama input/output tidak cocok, akan terjadi error invalid_argument. Spesifikasi I/O persis model dapat diperiksa dengan alat seperti Netron. ✅ Kesimpulan Item Konten API yang Digunakan Windows.AI.MachineLearning (WinRT) Bahasa C++ (Berbasis Win32) Metode yang Disarankan Melalui header C++/WinRT Kelebihan Model ONNX berjalan secara native, didukung GPU juga Perhatian Perhatikan nama input model dan bentuk Tensor ✅ Alternatif: Bagi yang Tidak Ingin Menggunakan WinRT Dengan menggunakan ONNX Runtime buatan Microsoft, Anda dapat sepenuhnya menangani model ONNX dari C++ tanpa WinRT sama sekali. Mendukung cross-platform, memungkinkan kode bersama untuk Windows/Linux. 📌 Penutup Windows ML (Microsoft.Windows.AI) adalah mesin inferensi AI tangguh yang dapat digunakan dengan baik bahkan dari C++. Jika Anda membutuhkan inferensi native di Windows, silakan dicoba.\nContoh spesifik pembuatan model ONNX dan pengikatan Tensor akan dijelaskan pada artikel berikutnya!\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/id/p/cara-memanggil-microsoft-windows-ai-dari-c-/","title":"Cara Memanggil Microsoft.Windows.AI dari C++"},{"content":"✅ Langkah Persiapan TinyLLaMA × C++ (menggunakan llama.cpp) 🔧 Langkah 1: Siapkan llama.cpp 1-1. Lingkungan yang Dibutuhkan (Minimum) OS: Windows / Linux / macOS Lingkungan Pengembangan: g++ / clang / MSVC Git / CMake 1-2. Dapatkan dan build llama.cpp 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 Jika menggunakan Windows, menggunakan Visual Studio Developer Command Prompt dengan cmake --build . --config Release akan lebih mudah.\n📦 Langkah 2: Unduh dan konversi model TinyLLaMA 2-1. Dapatkan model asli dari HuggingFace Contoh: TinyLLaMA-1.1B\n1 2 3 4 5 6 7 # Unduh menggunakan transformers jika perlu 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 Ini adalah langkah konversi ke format Hugging Face.\n2-2. Konversi ke format GGUF (untuk llama.cpp) 1 2 cd llama.cpp python3 convert.py ./hf_model --outfile tinyllama.gguf 2-3. Kuantisasi model (mengurangi ukuran) 1 ./quantize ./tinyllama.gguf ./tinyllama-q4.gguf q4_0 q4_0 adalah kuantisasi 4bit. Ukuran model akan berkurang menjadi sekitar ** 350MB **.\n🧪 Langkah 3: Panggil model dari C++ (Contoh Kode) 3-1. Kode C++ Sederhana (Inferensi) 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;Pengguna mengatakan mereka ingin memuat data Excel, memfilternya, dan menyimpannya. Apa konfigurasi nodenya?\u0026#34;; llama_batch batch = llama_batch_init(512, 0, 1); llama_token BOS = llama_token_bos(model); batch.token[0] = BOS; // Tokenisasi 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); // Dapatkan hasil inferensi 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; } 🧱 Langkah 4: Metode Kompilasi (Contoh) 1 g++ -I./llama.cpp main.cpp ./llama.cpp/build/libllama.a -o tiny_infer -pthread -std=c++11 libllama.a dibuat di direktori build/ setelah proses build selesai.\n✅ Contoh Struktur Hasil (Terorganisir) 1 2 3 4 5 6 my_app/ ├── tinyllama-q4.gguf # Model terkuantisasi (~350MB) ├── main.cpp # Kode C++ di atas ├── llama.cpp/ # Inti llama.cpp └── build/ └── libllama.a # Pustaka terkompilasi 🧠 Catatan untuk penerapan pada use case Miliki kode di C++ untuk mencocokkan dan memilih templat node berdasarkan output Contoh: Jika mengandung \u0026ldquo;Excel\u0026rdquo;, \u0026ldquo;filter\u0026rdquo;, \u0026ldquo;simpan\u0026rdquo; -\u0026gt; Buat grup node yang sesuai Bagian ini cukup dengan konfigurasi sederhana seperti pernyataan if + pemuatan templat JSON 📌 Ringkasan Item Konten Model Rekomendasi TinyLLaMA-1.1B-Chat v1.0 (GGUF + Kuantisasi) Ukuran ~350-450MB (kuantisasi 4bit) Integrasi C++ Memungkinkan menggunakan llama.cpp, hampir tanpa dependensi eksternal Kekuatan Pemrosesan Cukup untuk pemahaman niat sederhana \u0026amp; pembuatan teks (Teks alami -\u0026gt; Konfigurasi) Ekstensibilitas Dapat diubah menjadi AI pembuat node dengan menggabungkan pengisian slot dan pemanggilan templat ","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/id/p/langkah-langkah-memanggil-tinyllama-dari-cpp-menggunakan-llama-cpp/","title":"Langkah-langkah Memanggil TinyLLaMA dari C++ (menggunakan llama.cpp)"},{"content":"✅ Cara Memposting Menggunakan Token Akses (Slack Web API) \u0026ldquo;OAuth Token (seperti xoxb- dst.)\u0026rdquo; dari Slack adalah kunci untuk memposting menggunakan Web API Slack. Dalam hal ini, tidak seperti Webhook, Anda melakukan POST ke Slack API Endpoint dengan header Authorization: Bearer.\n🔑 Prasyarat yang Diperlukan Anda harus menyertakan chat:write dalam cakupan OAuth pada aplikasi Slack Anda:\nLangkah-langkah Pengaturan Kunjungi https://api.slack.com/apps Buat aplikasi atau pilih aplikasi yang sudah ada Di \u0026ldquo;OAuth \u0026amp; Permissions\u0026rdquo; \u0026gt; Scopes → Tambahkan chat:write \u0026ldquo;Install to Workspace\u0026rdquo; atau \u0026ldquo;Reinstall\u0026rdquo; untuk mendapatkan Access Token (contoh: xoxb-xxxxxxxxxx) 💻 Kode C++ (Memposting ke Slack API dengan 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 dan 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;Kesalahan pengiriman\\n\u0026#34;; return false; } // Periksa kode status 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-token-akses-anda\u0026#34;; // Token Akses std::string channel = \u0026#34;ID-saluran-atau-#general\u0026#34;; // Contoh: \u0026#34;#general\u0026#34; atau \u0026#34;C0123456789\u0026#34; std::string message = \u0026#34;Mencoba memposting ke Slack dari C++!\u0026#34;; if (PostSlackMessage(token, channel, message)) { std::cout \u0026lt;\u0026lt; \u0026#34;Berhasil memposting!\\n\u0026#34;; } else { std::cerr \u0026lt;\u0026lt; \u0026#34;Gagal memposting.\\n\u0026#34;; } return 0; } 📌 Cara Mendapatkan ID Saluran Menggunakan nama saluran saja (contoh: #general) kadang bisa menyebabkan kesalahan. Cara yang lebih andal adalah menggunakan ID dari URL halaman saluran Slack.\n1 2 https://app.slack.com/client/Txxxxx/C0123456789 ↑ Bagian ini adalah ID Saluran ✅ Tentang Jenis Token (Tambahan) Format Token Kegunaan Contoh xoxb-... Bot Token (Disarankan) Posting, edit, hapus xoxp-... User Token (Tidak disarankan) Operasi non-Bot Refresh Token Pembaruan token jangka panjang Biasanya tidak digunakan 📝 Kesimpulan Untuk memposting ke Slack dari C++, metode Slack Web API + Bearer Token adalah yang paling andal Gunakan endpoint chat.postMessage dengan HTTPS POST Token harus dikirim di header Bearer Saluran lebih baik ditentukan berdasarkan ID ","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/id/p/cara-memposting-pesan-ke-slack-menggunakan-slack-app--oauth2/","title":"Cara Memposting Pesan ke Slack Menggunakan Slack App + OAuth2"},{"content":"Cara Mengirim Pesan ke Slack dengan C++ (Win32 API + WinHTTP) [Dukungan Webhook] Saya ingin mengirim pesan ke Slack dari C++. Ini sangat umum di Node.js dan Python, tetapi ada sedikit kasus untuk penggunaan \u0026ldquo;C++ × Win32 API × WinHTTP\u0026rdquo;.\nDalam artikel ini, saya akan menjelaskan langkah demi langkah cara mengirim pesan dari C++ ke Slack menggunakan URL Webhook dengan cara yang mudah dipahami.\n✅ Alur Keseluruhan Untuk memposting ke Slack, ikuti langkah-langkah berikut:\nDapatkan URL Webhook Slack (Kunci API) Kirim permintaan POST menggunakan WinHTTP Bangun badan pesan dalam format JSON Periksa hasilnya dan selesai! 🔑 Langkah 1: Cara Mendapatkan URL Webhook Slack Di Slack, Anda dapat dengan mudah memposting pesan dari layanan eksternal menggunakan fitur yang disebut Incoming Webhooks.\nLangkah-langkah Mendapatkan Kunjungi https://api.slack.com/apps Klik Create New App Pilih From scratch, dan tentukan nama aplikasi serta ruang kerja tujuan Dari menu kiri, pilih \u0026ldquo;Incoming Webhooks\u0026rdquo; dan aktifkan Klik \u0026ldquo;Add New Webhook to Workspace\u0026rdquo; dan pilih saluran Salin URL yang dihasilkan (contoh: https://hooks.slack.com/services/xxx/yyy/zzz) URL ini berfungsi seperti kunci API.\n💻 Langkah 2: Mengirim Pesan ke Slack dengan Kode C++ Teknologi yang Digunakan Win32 API WinHTTP (Pustaka Standar) Pesan format JSON Kode Contoh (Posting ke Slack) 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の分解 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分解に失敗しました\\n\u0026#34;; return false; } // HTTPセッションと接続 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;送信リクエストに失敗しました\\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); // リソース解放 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;; // 自分のWebhookに置き換えてください 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;投稿に成功しました！\\n\u0026#34;; } else { std::cerr \u0026lt;\u0026lt; \u0026#34;投稿に失敗しました。\\n\u0026#34;; } return 0; } 🧪 Menyesuaikan Pesan JSON Di Slack Webhooks, Anda dapat menyertakan parameter seperti ini:\n1 2 3 4 5 6 { \u0026#34;text\u0026#34;: \u0026#34;Konten pemberitahuan\u0026#34;, \u0026#34;username\u0026#34;: \u0026#34;Nama Bot\u0026#34;, \u0026#34;icon_emoji\u0026#34;: \u0026#34;:rocket:\u0026#34;, \u0026#34;channel\u0026#34;: \u0026#34;#nama_saluran_bebas\u0026#34; } 📌 Catatan Tambahan Content-Type harus dipastikan disetel ke \u0026quot;application/json\u0026quot; URL Webhook dilewatkan sebagai wstring apa adanya (pengkodean URL tidak diperlukan) Karena ini adalah komunikasi HTTPS, jangan lupa WINHTTP_FLAG_SECURE 🎉 Bonus: Contoh Konfirmasi Posting di Slack Akan ditampilkan seperti ini di Slack:\n1 2 [C++ Bot] Hello from C++ :rocket: ✍️ Ringkasan Item Detail Metode Posting Webhook (Incoming Webhooks) Pustaka Komunikasi WinHTTP Format Data JSON Parameter Tersedia text, username, icon_emoji, channel, dll. Bahkan jika Anda berpikir integrasi Slack dengan C++ itu sulit\u0026hellip; Anda dapat menambahkan bot pemberitahuan mulai hari ini!\n🚀 Apa Selanjutnya? Jika Anda tertarik, lain kali:\nLampiran File UI dengan Tombol Operasi API yang Fleksibel melalui Slack App + OAuth2 Kami juga dapat memperkenalkan integrasi Slack selangkah lebih maju seperti ini!\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/id/p/cara-mengirim-pesan-ke-slack-dengan-c-win32-api--winhttp-dukungan-webhook/","title":"Cara Mengirim Pesan ke Slack dengan C++ (Win32 API + WinHTTP) [Dukungan Webhook]"},{"content":"Market-in dan Product-out Halo, ini kenji.\nTerkadang di buku bisnis atau proposal proyek, saya melihat hal-hal seperti:\n\u0026ldquo;Kami menggunakan strategi market-in.\u0026rdquo; \u0026ldquo;Ini adalah tipe product-out.\u0026rdquo;\nMereka mengatakan hal-hal seperti itu tapi\u0026hellip;\nTidak, market-in? Product-out? Mana yang lebih hebat???\nTidakkah kamu merasa begitu?\nJadi kali ini, saya akan mencoba mengurai \u0026ldquo;market-in\u0026rdquo; dan \u0026ldquo;product-out\u0026rdquo; ini sesederhana mungkin, dan melihatnya sedikit secara kritis.\nSingkatnya\u0026hellip; Market-in : Mendengarkan suara pasar (market) dan membuat produk sesuai dengan itu. Product-out : Membuat sesuatu (product) yang kita anggap bagus dan merilisnya ke dunia. Hanya itu. Sederhana.\nContohnya di kedai ramen\u0026hellip; Kedai ramen bergaya market-in adalah, \u0026ldquo;Akhir-akhir ini ramen Iekei sedang populer. Oke, mari kita beri banyak lemak dan bawang putih!\u0026rdquo; seperti itu.\nKedai ramen bergaya product-out adalah, \u0026ldquo;Ramen garam basil susu kedelai yang saya buat ini benar-benar yang terbaik, jadi makanlah,\u0026rdquo; seperti itu.\nMana yang benar\u0026hellip; Keduanya benar Market-in mendekati kebutuhan pelanggan, jadi \u0026ldquo;probabilitas terjualnya tinggi\u0026rdquo;, tetapi ide terobosan atau inovasi sulit lahir.\nProduct-out adalah \u0026ldquo;mewujudkan keadilan yang kita yakini,\u0026rdquo; jadi itu tajam dan menarik, tetapi jika meleset, itu tidak akan beresonansi dengan siapa pun.\niPhone sepertinya product-out Di era ketika orang berkata \u0026ldquo;kita tidak butuh smartphone\u0026rdquo;, Apple merilis iPhone.\nIni sudah sepenuhnya contoh sukses product-out .\nJika mereka mendengarkan pengguna, mereka akan diberitahu, \u0026ldquo;Ponsel tanpa keyboard? Tidak mungkin,\u0026rdquo; dan itu akan berakhir.\nTapi product-out mudah menjadi \u0026ldquo;kepuasan diri\u0026rdquo; Kadang-kadang ada perusahaan atau orang yang berkata, \u0026ldquo;Kami bertipe product-out,\u0026rdquo; tetapi\nTidak, bukankah itu hanya mengabaikan pengguna?\nSaya kadang berpikir begitu.\n\u0026ldquo;Membuatnya karena ingin membuatnya. Tapi tidak terjual\u0026rdquo; itu, bukan product-out tetapi \u0026ldquo;egois-out\u0026rdquo;, bukan?\nMarket-in juga punya jebakan Di sisi lain, market-in juga tidak sempurna.\nJika Anda berkata \u0026ldquo;Kami akan melakukan semua yang diinginkan pengguna!\u0026rdquo;, inti dari produk akan goyah, dan pada akhirnya mungkin tidak menarik bagi siapa pun.\nAnda terus menambahkan fitur, dan tiba-tiba Anda menyadari itu adalah alat yang kacau, seperti itu.\nYang benar-benar luar biasa adalah \u0026ldquo;mereka yang melakukan keduanya\u0026rdquo; Produk yang luar biasa adalah produk yang dengan jelas menyajikan, \u0026ldquo;apa yang benar-benar diinginkan pengguna, tetapi tidak dapat diungkapkan dengan kata-kata\u0026rdquo;.\nDengan kata lain, \u0026ldquo;mendapatkan simpati bergaya market-in, dengan menggunakan ide product-out\u0026rdquo;.\nIni mudah dikatakan tetapi sangat sulit dilakukan. Namun, jika Anda bisa melakukannya, itu akan langsung menjadi \u0026ldquo;produk dewa\u0026rdquo;.\nKesimpulan: Reaksi pengguna adalah segalanya, bukan kata-kata Market-in atau product-out. Mana yang benar adalah pertanyaan yang tidak terlalu berarti.\n\u0026ldquo;Apakah itu benar-benar mencapai hati pengguna?\u0026rdquo; adalah segalanya , menurut saya.\n\u0026ldquo;Kami menggunakan strategi seperti ini,\u0026rdquo; saya pikir sudah cukup jika kita bisa menuliskannya di materi pemasaran nanti.\nJadi, itu adalah cerita tentang market-in dan product-out!\nTanpa terpengaruh oleh kata-kata asing yang aneh, berpikir \u0026ldquo;pada akhirnya, bagaimana saya bisa membuat orang senang?\u0026rdquo; adalah yang paling masuk akal, menurut saya.\nSampai jumpa~.\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/id/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/","title":"Market-in dan Product-out"},{"content":"\u0026ldquo;Benarkah semua angka akhirnya akan menjadi 1?\u0026rdquo; ── Bermain dengan Konjektur Collatz Halo! Saya Kenji.\nTiba-tiba saja, ketika Anda mendengar \u0026ldquo;aturan yang membuat angka apa pun pada akhirnya akan menjadi 1\u0026rdquo;, bukankah itu terasa sedikit aneh?\nMisalnya, 19, atau 87, atau bahkan 1000000. Jika Anda mengikuti aturan tertentu dan memanipulasi angka, entah mengapa itu selalu berakhir di \u0026ldquo;1\u0026rdquo;.\nKisah seperti mimpi ini adalah Konjektur Collatz (Collatz Conjecture).\nPertama-tama, apa itu Konjektur Collatz? Mari saya perkenalkan aturannya terlebih dahulu.\nMulai: Pilih bilangan bulat positif apa pun\nOperasi:\nJika genap → bagi dua (n → n / 2) Jika ganjil → kalikan dengan 3 lalu tambah 1 (n → 3n + 1) Jika Anda mengulangi ini terus-menerus, tebakannya adalah angka apa pun pada akhirnya akan mencapai 1.\nMisalnya, jika kita mulai dengan 6:\n1 6 → 3 → 10 → 5 → 16 → 8 → 4 → 2 → 1 Itu benar-benar menjadi \u0026ldquo;1\u0026rdquo;. Selamat datang kembali!\nMari kita coba dengan kode: Collatz dengan Python Nah, dalam kasus seperti ini, lebih cepat untuk mencoba membuat kodenya! Mari kita cetak \u0026ldquo;Barisan Collatz\u0026rdquo; menggunakan Python.\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 # Contoh: mari kita mulai dari 19 print(collatz(19)) Saat dijalankan:\n1 [19, 58, 29, 88, 44, 22, 11, 34, 17, 52, 26, 13, 40, 20, 10, 5, 16, 8, 4, 2, 1] Ini berhasil mencapai 1. Mengambil jalan memutar yang cukup panjang, tetapi pada akhirnya tiba di garis finis!\nOmong-omong, meskipun kita mulai dari 29, itu akan mencapai 1 dengan cara yang sama.\n1 pythonprint(collatz(29)) Saat dijalankan:\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] Itu memakan waktu hingga 111 langkah!\nTerlebih lagi, dalam perjalanannya terkadang membengkak hingga lebih dari 9000. Ini adalah pola di mana ia mengambil jalan memutar yang sangat jauh sebelum mencapai finis.\nJadi, apa yang membuatnya begitu menakjubkan? Yang menakjubkan dari konjektur ini adalah,\nMeskipun belum terbukti, tampaknya selalu berakhir pada 1 tidak peduli angka apa yang Anda gunakan\nDi situlah letak kehebatannya.\nHah? Lalu bagaimana dengan satu triliun, atau satu kuadriliun\u0026hellip;?\nBagi Anda yang memikirkan hal itu, Anda sangat tajam. Faktanya, menggunakan komputer, ini telah diverifikasi hingga sekitar \u0026ldquo;2 pangkat 68\u0026rdquo;, dan semuanya mencapai 1. Luar biasa\u0026hellip;\nTapi, belum terbukti secara teoritis bahwa \u0026ldquo;semuanya akan seperti itu\u0026rdquo;. Inilah yang disebut \u0026ldquo;masalah yang belum terpecahkan\u0026rdquo; di dunia matematika.\nSiapa Bapak Collatz? Nah, setelah membaca sejauh ini, Anda mungkin bertanya-tanya, \u0026ldquo;Siapa itu Collatz?\u0026rdquo; Saya akan memperkenalkannya dengan benar!\nNama: Lothar Collatz (Lothar Collatz) Kebangsaan: Jerman Tahun lahir: 1910 - 1990 Profesi: Matematikawan (aktif di bidang analisis fungsional dan teori bilangan) Dia mengusulkan konjektur ini pada tahun 1937, dan sejak saat itu, selama lebih dari 80 tahun, belum ada yang bisa membuktikan atau menyangkalnya.\nOmong-omong, masalah ini sangat sederhana tetapi sangat dalam, sehingga bahkan Paul Erdős (matematikawan super terkenal) mengatakan sesuatu seperti ini.\n\u0026ldquo;Matematika belum cukup matang untuk menangani Collatz.\u0026rdquo;\nDengan kata lain, ada teori bahwa matematika umat manusia belum mengejar misteri ini\u0026hellip;\n\u0026ldquo;Rumus matematika yang rumit\u0026rdquo; tidak diperlukan Hal yang baik tentang Konjektur Collatz adalah siapa pun bisa memainkannya.\nAnda hanya butuh kertas dan pulpen. Jika Anda menulis kode dengan Python, Anda dapat mengujinya secara otomatis. Namun demikian, matematikawan mutakhir dengan serius menantangnya.\nTidakkah itu terasa mengasyikkan?\nBonus: Kode untuk menguji sekaligus Saya juga akan menyertakan kode untuk menguji banyak angka sekaligus.\n1 2 3 for n in range(1, 21): steps = collatz(n) print(f\u0026#34;{n}: {steps} (jumlah langkah: {len(steps)-1})\u0026#34;) Ini akan mencetak barisan Collatz untuk \u0026ldquo;1 hingga 20\u0026rdquo; sekaligus.\nKesimpulan: Dunia ini memang aneh Jadi begitulah, Konjektur Collatz.\nMeskipun sangat sederhana Tidak ada yang bisa membuktikannya Ini adalah masalah besar di dunia matematika Itu menjadi sesuatu yang terasa seperti kumpulan misteri.\nBahkan pemula dalam pemrograman bisa mencobanya, jadi silakan memainkannya!\nTautan yang disarankan (bagi yang tertarik) Wikipedia: Konjektur Collatz Makalah Terence Tao (Bahasa Inggris) Mungkin juga menyenangkan untuk membuat versi visualisasi menggunakan Python! (Jika ada permintaan, saya akan membuatnya) Jika Anda ingin mengetahui lebih banyak cerita tentang \u0026ldquo;matematika misterius × pemrograman\u0026rdquo;, jangan ragu untuk meminta \u0026ldquo;ceritakan lebih banyak\u0026rdquo;. Suatu hari nanti, saya akan memperkenalkan Hipotesis Riemann, bilangan prima, dan banyak lagi!\n📮 Selesai!\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/id/p/collatz-conjecture/","title":"Konjektur Collatz"},{"content":"Cara Memposting Pesan ke Microsoft Teams dari C++ (WinHTTP + Graph API) Ingin memposting otomatis ke obrolan Microsoft Teams? Anda dapat menggunakan ** Microsoft Graph API ** untuk hal tersebut. Dalam artikel ini, kami akan menunjukkan ** contoh kode C++ menggunakan WinHTTP ** dan ** langkah-langkah otentikasi API yang diperlukan ** secara bertahap.\n🔧 Persiapan yang Diperlukan (Pengaturan Otentikasi Microsoft Graph API) 1. Registrasi Aplikasi di Portal Azure Pertama, untuk menggunakan Microsoft Graph API, Anda perlu mendaftarkan aplikasi di Azure.\nBuka Azure Portal ** \u0026ldquo;Microsoft Entra ID\u0026rdquo; ** \u0026gt; ** \u0026ldquo;＋Tambah\u0026rdquo; ** \u0026gt; ** \u0026ldquo;Pendaftaran Aplikasi\u0026rdquo; ** \u0026gt; ** \u0026ldquo;Pendaftaran Baru\u0026rdquo; ** Masukkan nama aplikasi yang Anda inginkan dan klik \u0026ldquo;Daftar\u0026rdquo; 2. Tambahkan Izin API Buka menu kiri \u0026ldquo;Izin API\u0026rdquo; Pada ** \u0026ldquo;Microsoft Graph\u0026rdquo; ** \u0026gt; ** \u0026ldquo;Pilih Izin\u0026rdquo; **, cari cakupan berikut dan klik ** \u0026ldquo;Perbarui Izin\u0026rdquo; ** Chat.ReadWrite User.Read ※ Jika Anda ingin memposting ke saluran, ChannelMessage.Send juga diperlukan\n3. Catat ID Klien dan ID Penyewa Simpan dua nilai berikut yang ditampilkan di tab \u0026ldquo;Ikhtisar\u0026rdquo;:\nID Aplikasi (klien) ID Direktori (penyewa) 4. Buat Rahasia Klien Buka tab \u0026ldquo;Sertifikat dan rahasia\u0026rdquo; \u0026ldquo;Rahasia klien baru\u0026rdquo; \u0026gt; tetapkan tanggal kedaluwarsa dan klik \u0026ldquo;Tambahkan\u0026rdquo; ** Pastikan untuk segera mencatat nilai (rahasia) yang ditampilkan ** 🔐 Mendapatkan Token Akses (OAuth2) Kita akan menggunakan alur client_credentials untuk mendapatkan token. Jalankan perintah berikut dengan curl untuk mendapatkan token akses.\n1 2 3 4 5 6 7 curl -X POST ^ https://login.microsoftonline.com/{ID Penyewa}/oauth2/v2.0/token ^ -H \u0026#34;Content-Type: application/x-www-form-urlencoded\u0026#34; ^ -d \u0026#34;client_id={ID Klien}\u0026#34; ^ -d \u0026#34;scope=https%3A%2F%2Fgraph.microsoft.com%2F.default\u0026#34; ^ -d \u0026#34;client_secret={Rahasia Klien}\u0026#34; ^ -d \u0026#34;grant_type=client_credentials\u0026#34; Contoh Respons 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... (dihilangkan)\u0026#34; } Gunakan access_token ini untuk memanggil Microsoft Graph API.\n💬 Contoh C++ untuk Memposting ke Obrolan Teams Berikut adalah contoh C++ menggunakan WinHTTP untuk memposting pesan ke obrolan.\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; } 🔍 Cara Mendapatkan ID Obrolan Anda dapat memeriksa ID obrolan menggunakan GET /v1.0/me/chats.\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; Contoh Respons 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; } ] } 📌 Catatan Contoh ini adalah implementasi minimal. Dalam produksi: Penanganan kedaluwarsa token Verifikasi sertifikat HTTPS Peningkatan penanganan kesalahan Untuk posting saluran, gunakan teams/{team-id}/channels/{channel-id}/messages. Untuk mengirim lampiran, diperlukan pemrosesan multipart atau Graph Drive API. 📎 Kesimpulan Fitur Deskripsi Graph API API resmi untuk berinteraksi dengan Teams Registrasi Aplikasi Prosedur otentikasi yang diperlukan di Azure Token Akses Diperoleh melalui OAuth2 dan digunakan untuk permintaan Implementasi C++ Memanggil Graph API menggunakan WinHTTP 🚀 Langkah Selanjutnya Sebagai contoh yang lebih canggih, Anda juga dapat:\nMemposting ke saluran tim (/teams/{team-id}/channels/...) Memposting dengan lampiran Beralih antara akun bot dan pengguna Implementasi C++ lengkap termasuk pengambilan token Jika Anda memiliki permintaan, jangan ragu untuk meninggalkan komentar!\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/id/p/cara-memposting-pesan-ke-microsoft-teams-dari-c-winhttp--graph-api/","title":"Cara Memposting Pesan ke Microsoft Teams dari C++ (WinHTTP + Graph API)"},{"content":"Kami merangkum informasi tentang tanda \u0026ldquo;wajib\u0026rdquo; pada UI layar (formulir) di luar negeri, beserta materi pedoman UI.\n📌 Tanda Wajib Utama dan Praktik Terbaik Penggunaan Asterisk (*)\nIni adalah yang paling umum dan banyak digunakan, di mana bidang wajib ditandai dengan \u0026ldquo;*\u0026rdquo;. Namun, penjelasan di awal formulir seperti \u0026ldquo; adalah bidang wajib\u0026rdquo; sangat diperlukan* (Nielsen Norman Group, California State University, Northridge). Ada juga contoh penggunaan warna untuk penekanan (seperti teks merah). Menyatakan \u0026ldquo;Required\u0026rdquo; atau \u0026ldquo;(required)\u0026rdquo; dengan Jelas pada Label\nDengan menambahkan kata \u0026ldquo;Required\u0026rdquo; di dalam label, ini juga dapat diperjelas untuk pembaca layar, sehingga meningkatkan aksesibilitas (Deque). Kombinasi Atribut ARIA dan Atribut required HTML5\nSelain tampilan visual, penggunaan aria-required=\u0026quot;true\u0026quot; dan \u0026lt;input required\u0026gt; dapat menyampaikan kewajiban secara terprogram (Deque). Menggunakan \u0026ldquo;(optional)\u0026rdquo; untuk Menandai Bidang Opsional Secara Jelas\nAda juga metode untuk dengan jelas menyatakan bidang opsional menggunakan \u0026ldquo;(optional)\u0026rdquo; alih-alih bidang wajib, yang efektif ketika keduanya dicampur. Namun, Nielsen‑Norman menunjukkan bahwa \u0026ldquo;lebih mudah untuk menilai jika bidang wajib juga dinyatakan dengan jelas\u0026rdquo; (TPGi). ✅ Ringkasan Materi Pedoman UI Sumber Konten NN/g: Marking Required Fields in Forms Kombinasi asterisk + teks penjelasan direkomendasikan, dan hanya menampilkan opsi opsional dianggap kurang ramah pengguna (Nielsen Norman Group). Deque (Anatomy of Accessible Forms) ・Menggunakan string \u0026ldquo;Required\u0026rdquo; atau gambar di dalam label.\n・Dinyatakan dengan jelas bahwa indikasi berdasarkan warna saja tidak cukup. W3C Techniques (H90) Contoh penyertaan asterisk atau \u0026ldquo;(required)\u0026rdquo; dalam label, dan mendefinisikan artinya di awal formulir. TPGi (Doing what\u0026rsquo;s required) Mempertimbangkan aksesibilitas, kombinasi asterisk + atribut ARIA + penyisipan teks label dievaluasi sebagai yang paling optimal. Panduan UX Formulir Contensis Diringkas secara singkat bahwa penandaan yang konsisten (* atau (optional)) adalah hal yang penting. ✅ Pendekatan yang Direkomendasikan dalam Implementasi Tambahkan teks penjelasan di awal formulir :\nFields marked with * are required. (Atau secara kolektif \u0026ldquo;All fields are required\u0026rdquo;, dan jika ada yang opsional \u0026ldquo;unless marked optional\u0026rdquo;)\nPenambahan Label :\nDitulis seperti First Name * atau Email (required). Atribut ARIA dan HTML5 :\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; Jangan Hanya Mengandalkan Warna : Berikan dukungan baik secara visual maupun terprogram.\n🔗 Tautan Referensi (Materi Pedoman UI) 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) Jika diperlukan, kami juga dapat memberikan contoh kode HTML/CSS tertentu, templat desain komponen UI untuk Sketch atau Figma, dll. Jangan ragu untuk berkonsultasi dengan kami!\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/id/p/tentang-tanda-wajib-pada-formulir-input/","title":"Tentang Tanda Wajib pada Formulir Input"},{"content":"【Untuk Pemula】Cara Menginstal Gemini CLI di Windows \u0026ldquo;Gemini CLI\u0026rdquo; memungkinkan penggunaan AI generatif Google \u0026ldquo;Gemini\u0026rdquo; dari baris perintah. Dalam artikel ini, kami akan menjelaskan langkah-langkah untuk menginstal Gemini CLI di lingkungan Windows dengan cara yang semudah mungkin.\n1. Persiapan Awal: Menginstal Node.js dan npm Pertama, karena Gemini CLI berjalan di lingkungan yang disebut \u0026ldquo;Node.js\u0026rdquo;, Anda harus menginstal yang berikut ini sebelumnya:\nNode.js npm (alat manajemen paket yang disertakan dengan Node.js) npx (alat eksekusi perintah yang disertakan dalam npm) Silakan unduh Node.js versi Windows dari situs web resmi berikut (versi LTS disarankan):\n👉 Situs Resmi Node.js\nSetelah instalasi selesai, mari kita periksa apakah sudah terinstal dengan benar menggunakan perintah berikut.\n1 2 node -v npm -v 2. Memulai PowerShell Untuk menggunakan Gemini CLI di Windows, biasanya menggunakan PowerShell. Ketik \u0026ldquo;PowerShell\u0026rdquo; dari menu Start dan jalankan.\n3. Menginstal Gemini CLI Salin dan tempel perintah berikut ke PowerShell untuk menjalankannya:\n1 npx @google/gemini-cli Perintah ini untuk sementara mengeksekusi paket Gemini CLI yang dirilis oleh Google. Jika perlu, Anda mungkin diminta untuk melakukan pengaturan awal atau login.\n※ Ini mungkin memakan waktu beberapa menit saat pertama kali. Jika terjadi kesalahan, periksa kembali Node.js dan lingkungan jaringan Anda.\n4. Instalasi Selesai! Apa Selanjutnya Sekarang, Gemini CLI telah diinstal di Windows. Mulai sekarang, dengan menggunakan Gemini dari baris perintah, berbagai operasi seperti pembuatan teks dan penyelesaian kode dapat dilakukan.\nJika Anda ingin memeriksa dokumentasi resmi atau bantuan, Anda juga dapat menggunakan perintah berikut.\n1 npx @google/gemini-cli --help Kesimpulan Mari kita ulas langkah-langkah untuk memperkenalkan Gemini CLI ke Windows.\nInstal Node.js dan npm Mulai PowerShell Jalankan npx @google/gemini-cli Persiapan selesai! Jika Anda ingin menggunakan AI generatif secara lokal, silakan coba tantangan ini dengan mengacu pada langkah-langkah ini.\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/id/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/","title":"Cara Menginstal Gemini CLI di Lingkungan Windows"},{"content":"Saya kembali menerima penghargaan Microsoft MVP (2025-2026)! Halo, saya kenji.\nSaya punya pengumuman. Tahun ini saya kembali menerima penghargaan Microsoft MVP (Most Valuable Professional) . Ini adalah penghargaan saya yang ke 9 kalinya.\nTerima kasih banyak kepada semua orang yang selalu mendukung saya.\nApa itu Microsoft MVP? Saat mendengar \u0026ldquo;MVP\u0026rdquo;, banyak orang mungkin memikirkan pemain terbaik dalam olahraga, namun MVP di sini adalah gelar yang diberikan kepada orang-orang yang telah berkontribusi pada komunitas teknologi Microsoft .\nSecara khusus,\nMenyebarkan informasi melalui blog teknologi dan media sosial Mempublikasikan kode sampel di GitHub Berbicara di kelompok belajar dan konferensi Menjawab di situs Q\u0026amp;A Pertukaran teknis dan kolaborasi dengan pengembang luar negeri Berpartisipasi dan memposting dalam komunitas yang menghubungkan para insinyur Seperti itulah, ini adalah sistem yang mengevaluasi aktivitas \u0026ldquo;berbagi pengetahuan dan pengalaman Anda demi orang lain\u0026rdquo;.\nPemenangnya ada di seluruh dunia, tetapi jumlah orang yang dipilih setiap tahun terbatas, dan menerima penghargaan lagi bukanlah hal yang mudah. Karena itu, sungguh suatu kehormatan diakui dengan cara ini.\nApa yang saya fokuskan pada tahun lalu Tahun ini, saya fokus untuk menyebarkan informasi dengan mempertimbangkan \u0026ldquo;kejelasan\u0026rdquo; dan \u0026ldquo;aksesibilitas\u0026rdquo; teknologi .\nMempublikasikan kode sampel praktis di GitHub Berbicara di kelompok belajar dan konferensi (baik domestik maupun internasional) Penyebaran informasi secara rutin melalui blog teknologi dan media sosial Aktivitas menjawab yang berkesinambungan di situs Q\u0026amp;A Berbagi pengetahuan di situs komunitas insinyur Komunikasi dan verifikasi bersama dengan insinyur luar negeri Di antaranya, mempublikasikan kode di GitHub sangat berkesan karena saya menerima komentar seperti \u0026ldquo;Itu membantu saya karena saya mengalami masalah yang sama!\u0026rdquo;, dan hal itu menyadarkan saya bahwa upaya saya membantu pengembangan orang lain.\nSelain itu, saat berbicara di acara, saya terkadang menerima umpan balik seperti \u0026ldquo;Mudah dipahami bahkan oleh pemula\u0026rdquo;, yang menjadi kesempatan baik untuk memikirkan \u0026ldquo;seperti apa penjelasan teknis yang tersampaikan itu?\u0026rdquo;.\nMenuju tahun depan Evolusi teknologi sangat cepat, dan bahkan hanya untuk mengikutinya saja sangat menantang. Meskipun demikian, saya percaya ada nilai yang luar biasa dalam memberikan pengetahuan nyata sebagai \u0026ldquo;informasi primer\u0026rdquo; , seperti pengalaman aktual yang saya peroleh dari mencoba berbagai hal dan poin-poin di mana saya menemui hambatan.\nTahun depan, saya ingin menantang diri saya sendiri untuk menyebarkan \u0026ldquo;konten teknis yang mudah dipahami secara visual\u0026rdquo; dengan menggabungkan video dan ilustrasi . Saya berharap dapat meningkatkan output saya untuk membantu menyelesaikan momen \u0026ldquo;Saya buntu!\u0026rdquo; yang dialami seseorang, meski hanya sedikit.\nTerakhir Gelar MVP hanyalah sebuah batu loncatan.\nSaya akan terus melangkah dengan kecepatan saya sendiri tanpa memaksakan diri. Namun dengan tujuan agar bisa benar-benar berguna bagi seseorang.\n\u0026ldquo;Mencari tahu tentang hal ini sangat membantu\u0026rdquo; \u0026ldquo;Sampel ini berhasil dijalankan!\u0026rdquo; \u0026ldquo;Penjelasan ini mudah dipahami\u0026rdquo;\nSaya ingin terus menjadi insinyur yang membuat orang bisa mengatakan hal-hal seperti itu.\nTerima kasih atas dukungan Anda yang berkelanjutan.\nGitHub: https://github.com/kenjinote Blog teknologi: 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/id/p/saya-kembali-menerima-penghargaan-microsoft-mvp-2025-2026/","title":"Saya kembali menerima penghargaan Microsoft MVP (2025-2026)"},{"content":"Daya Tarik dan Tantangan Pengembangan dengan Win32API + C++ Bagi mereka yang ingin mendalami pengembangan aplikasi Windows, Win32API + C++ masih menjadi pilihan yang kuat. Kombinasi ini, yang memungkinkan Anda berinteraksi dengan OS pada jarak terdekat, menggabungkan kecepatan tinggi dan fleksibilitas.\nDi sisi lain, karena sangat berbeda dari gaya pengembangan modern, menguasainya juga membutuhkan tekad.\nDi halaman ini, dari sudut pandang pengembang aplikasi Windows yang aktif , kami akan menjelaskan kelebihan dan kekurangannya dengan cara yang mudah dipahami.\nKelebihan Eksekusi Asli yang Sangat Cepat Karena C++ dan Win32API beroperasi pada lapisan yang paling dekat dengan OS, hampir tidak ada overhead tambahan. Efisiensi penggunaan CPU dan memori sangat tinggi, dan membanggakan kecepatan eksekusi yang luar biasa .\nFleksibilitas dan Kebebasan Tinggi Anda dapat mengontrol sendiri secara detail setiap perilaku aplikasi, seperti kontrol jendela, pemrosesan asinkron, integrasi COM, dan manajemen proses. Dimungkinkan juga untuk membangun alat yang disesuaikan untuk tujuan tertentu, atau kerangka kerja khusus Anda sendiri.\nMudah Didistribusikan Tanpa Perlu Runtime Karena tidak diperlukan runtime eksternal seperti .NET atau Java, aplikasi dapat didistribusikan hanya dengan satu file yang dapat dieksekusi . Masalah saat redistribusi jarang terjadi, dan daya tariknya adalah mudah dijalankan bahkan tanpa penginstal.\nAplikasi Ringan Dapat Dibuat Karena hanya membutuhkan konfigurasi minimum, fiturnya adalah jejak memorinya sangat kecil . Ini beroperasi dengan nyaman bahkan pada PC dengan spesifikasi rendah dan lingkungan mesin virtual.\nKontrol Lanjutan Tingkat OS Dimungkinkan Kontrol yang sulit dengan bahasa dan pustaka biasa juga dapat diwujudkan, seperti hook global mouse dan keyboard, penyesuaian gaya jendela secara detail, dan operasi menu sistem.\nKekurangan Efisiensi Pengembangan Rendah Pembuatan GUI juga harus dilakukan sepenuhnya dengan kode, dan membuat satu tombol bisa membutuhkan puluhan baris kode . Modifikasi saat mengubah desain juga rumit, dan produktivitasnya rendah dibandingkan dengan pengembangan menggunakan kerangka kerja UI.\nPemeliharaan Cenderung Menurun Ini berisi banyak kode dengan struktur khusus , seperti perulangan pesan dan prosedur jendela, yang membuatnya sulit dibaca dan digunakan kembali. Ada juga aspek yang membuatnya tidak cocok untuk pengembangan tim atau pemeliharaan jangka panjang.\nBeradaptasi dengan UI Modern Merepotkan Sulit untuk beradaptasi dengan UX yang dituntut dalam beberapa tahun terakhir , seperti dukungan DPI tinggi, antarmuka sentuh, aksesibilitas, dan mode gelap. Masing-masing harus ditangani secara manual, yang membutuhkan banyak usaha.\nTidak Mendukung Lintas Platform Karena ini sepenuhnya merupakan API khusus Windows, aplikasi tidak dapat di-porting ke macOS atau Linux . Jika Anda mengharapkan penerapan lintas platform, Anda harus memilih teknologi lain.\nBiaya Pembelajaran Sangat Tinggi Anda harus memahami konsep dan mekanisme yang jarang digunakan saat ini , seperti handle, GDI, COM, dan OLE. Banyak dokumen juga sudah usang, dan pembelajaran membutuhkan waktu dan kesabaran.\nPenggunaan yang Cocok Alat ringan seperti peluncur file dan bantuan hotkey Utilitas sistem seperti manipulasi clipboard dan kontrol IME Aplikasi kontrol asli seperti hook global dan penangkapan jendela Alat bantu driver yang terkait erat dengan perangkat keras Penggunaan yang Tidak Cocok Aplikasi untuk konsumen umum di mana UI / UX modern ditekankan Pembuatan prototipe dan pengembangan MVP di mana kecepatan diprioritaskan Proyek skala besar yang berpusat pada operasi jangka panjang dan pengembangan tim Produk lintas platform yang perlu mendukung banyak OS Ringkasan Evaluasi Kriteria Evaluasi Kecepatan Eksekusi ◎ Sangat cepat Efisiensi Memori ◎ Sangat baik Kecepatan Pengembangan × Lambat Pemeliharaan × Rendah Dukungan Lintas Platform × Tidak didukung Dukungan UI Modern × Lemah Kebebasan Kontrol OS ◎ Sangat tinggi Kesimpulan Win32API + C++ adalah alat yang cocok untuk pengembang yang \u0026ldquo;ingin menangani semuanya di OS sendiri\u0026rdquo;. Meskipun kekuatannya sangat besar, pembelajaran dan pengoperasian membutuhkan tekad yang sesuai.\nApakah \u0026ldquo;pilihan yang disengaja\u0026rdquo; ini sepadan tergantung pada sifat aplikasi yang Anda tuju.\nMelompat ke dunia #include \u0026lt;windows.h\u0026gt; tanpa mengandalkan kerangka kerja GUI atau bahasa modern ―― Pilihan itu masih memiliki arti yang sama seperti sebelumnya.\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/id/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":"Kelebihan dan Kekurangan Membuat Program dengan Win32API + C++"},{"content":"Jika Anda ingin menggunakan libcurl (dengan dukungan OpenSSL) di Visual Studio, menggunakan vcpkg adalah cara yang mudah dan sangat direkomendasikan libcurl sering digunakan ketika Anda ingin menangani komunikasi HTTP dalam C++. Tetapi menyesuaikan pengaturan build dan dependensi seringkali merepotkan.\nDi saat-saat seperti itulah, alat manajemen pustaka C++ dari Microsoft yaitu ** \u0026ldquo;vcpkg\u0026rdquo; ** sangat berguna. Kali ini, saya akan memperkenalkan langkah-langkah untuk menggunakan vcpkg guna menginstal libcurl (dengan dukungan OpenSSL) sehingga dapat digunakan dengan lancar di Visual Studio.\nInstalasi vcpkg (Hanya bagi yang belum menginstalnya) Pertama-tama, mari kita instal vcpkg. Silakan jalankan langkah-langkah berikut di PowerShell.\n1 2 3 git clone https://github.com/microsoft/vcpkg cd vcpkg .\\bootstrap-vcpkg.bat ※ Jika Git belum terinstal, silakan instal dari Situs resmi Git.\nInstalasi libcurl (Dukungan OpenSSL) Selanjutnya, kita akan menggunakan vcpkg untuk menginstal libcurl. Untuk menentukan versi 64-bit yang mendukung OpenSSL, jalankan perintah berikut.\n1 vcpkg install curl[ssl] --triplet x64-windows Ketika Anda menjalankan perintah ini, dependensi yang diperlukan (seperti OpenSSL) juga akan diatur secara otomatis.\nPengaturan Integrasi Visual Studio Agar pustaka yang diinstal dengan vcpkg dapat dengan mudah digunakan dari proyek Visual Studio Anda, lakukan pengaturan integrasi dengan perintah berikut.\n1 vcpkg integrate install Setelah Anda mengatur ini, Anda akan secara otomatis dapat menggunakan #include \u0026lt;curl/curl.h\u0026gt; dalam proyek Visual Studio Anda, dan Anda tidak perlu lagi mengatur jalur pustaka atau pengaturan linker secara manual.\nPenutup Sekarang Anda siap untuk menggunakan libcurl (dengan dukungan OpenSSL) di Visual Studio.\nDengan menggunakan vcpkg, Anda dapat mengelola dependensi yang merepotkan sekaligus Instal libcurl dengan mudah menggunakan vcpkg install curl[ssl] --triplet x64-windows Integrasi otomatis dengan Visual Studio menggunakan vcpkg integrate install Setelah itu, masukkan header dalam proyek Anda dan mulailah pengembangan menggunakan API libcurl. Manfaatkan vcpkg yang nyaman ini untuk secara drastis meningkatkan efisiensi pengembangan Anda.\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/id/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":"[Untuk Pemula] Langkah-langkah menginstal libcurl (dengan dukungan OpenSSL) di Visual Studio menggunakan vcpkg"},{"content":"\u0026ldquo;Keamanan Mental\u0026rdquo; yang Dibutuhkan untuk Menghindari Teori Konspirasi Saat menelusuri internet, kadang kita melihat narasi ala \u0026ldquo;teori konspirasi\u0026rdquo;.\n\u0026ldquo;Apakah ada seseorang yang memanipulasi kejadian ini di balik layar?\u0026rdquo; \u0026ldquo;Apakah kebenaran yang sesungguhnya disembunyikan?\u0026rdquo; Banyak dari Anda mungkin pernah melihat klaim semacam itu menyebar dengan cara yang tampak masuk akal.\nUntuk mencegah agar tidak terlalu terseret ke dalam informasi semacam ini, tidak hanya \u0026ldquo;pengetahuan\u0026rdquo; atau \u0026ldquo;kemampuan berpikir\u0026rdquo; yang penting, melainkan juga keadaan mental, yakni menjaga \u0026ldquo;keamanan mental\u0026rdquo;, sangatlah krusial.\nBerikut ini adalah 6 pendekatan yang efektif untuk mencapai hal tersebut.\nJangan Segera Mengaitkan Kecemasan dengan \u0026ldquo;Jawaban\u0026rdquo; Ciri utama dari teori konspirasi adalah menawarkan \u0026ldquo;jawaban\u0026rdquo; yang jelas dan mudah dipahami atas kekhawatiran dan keraguan kita.\nMisalnya, pada pertanyaan seperti:\n\u0026ldquo;Mengapa insiden seperti ini terjadi?\u0026rdquo; \u0026ldquo;Siapa yang diuntungkan?\u0026rdquo; Ketika disajikan skenario seperti \u0026ldquo;Sebenarnya, si anu memanipulasi keadaan dari balik layar,\u0026rdquo; kita cenderung mudah setuju.\nTetapi, justru saat Anda merasa cemas, penting untuk tidak segera mengambil kesimpulan dan menundanya.\n\u0026ldquo;Kemampuan untuk tetap dalam ketidaktahuan\u0026rdquo; juga merupakan tanda kedewasaan intelektual.\nSengaja Memperluas Sumber Informasi Banyak orang yang tenggelam dalam teori konspirasi cenderung hanya melihat \u0026ldquo;informasi dengan pandangan serupa\u0026rdquo; secara eksklusif.\nIni disebut \u0026ldquo;bias konfirmasi\u0026rdquo;, sebuah penyimpangan psikologis di mana seseorang hanya terpapar pada informasi yang memperkuat keyakinannya yang sudah ada.\nKhususnya, algoritma media sosial dan situs video terus menyajikan unggahan yang mungkin Anda sukai, sehingga wawasan bisa menyempit secara alami.\nSecara sadar, Anda harus:\nMelihat media dengan berbagai sudut pandang Melihat berita luar negeri dan sumber akademik Mendengarkan opini yang berbeda dari pandangan Anda Langkah-langkah tersebut untuk mendiversifikasi sumber informasi membantu menghindari risiko.\nJangan Berpikir, \u0026ldquo;Saya Tidak Akan Tertipu\u0026rdquo; Orang-orang dengan pengetahuan luas atau berpikiran logis terkadang justru lebih mudah terseret ke dalam teori konspirasi.\nKeyakinan \u0026ldquo;Saya dapat menyadari kebenaran yang tidak disadari orang lain\u0026rdquo; dapat menjadi faktor yang mengaburkan penilaian.\nSeberapapun kita berhati-hati, manusia bisa melakukan kesalahan. Itulah mengapa berasumsi bahwa Anda juga bisa tertipu adalah sikap yang lebih rasional.\n\u0026ldquo;Meragukan tanpa langsung memberikan kesimpulan mutlak\u0026rdquo; adalah pertahanan Anda.\nLihat Strukturnya, Jangan Terbawa Cerita Teori konspirasi selalu disertai dengan \u0026ldquo;cerita dramatis\u0026rdquo;.\nStruktur konflik antara kebaikan dan kejahatan Penguasa dan yang dikuasai Diri yang terbangun vs orang lain yang dicuci otaknya Oposisi biner sederhana semacam itu, meskipun menarik sebagai cerita, tidak selalu mencerminkan kenyataan dengan benar.\nPeristiwa dunia nyata dan gerakan sosial melibatkan banyak elemen yang saling berkaitan, seperti hubungan sebab-akibat yang kompleks, konteks historis, dan struktur institusional.\nPenting untuk tidak terbawa emosi cerita dan memiliki pemahaman struktural mengenai \u0026ldquo;mengapa hal ini terjadi?\u0026rdquo;.\nJangan Biarkan Rasa Kesepian Di balik ketertarikan yang kuat pada teori konspirasi, mungkin ada \u0026ldquo;isolasi\u0026rdquo; atau \u0026ldquo;ketiadaan tempat bernaung\u0026rdquo; yang tersembunyi.\nKetika orang merasa kesepian, mereka cenderung sangat bergantung pada orang atau kelompok yang memahami mereka. Komunitas konspirasi terkadang mengambil alih fungsi \u0026ldquo;tempat bernaung\u0026rdquo; ini.\nItulah mengapa upaya untuk tidak merasa kesepian juga berkontribusi pada keamanan mental Anda.\nMisalnya:\nBerbicara dengan orang-orang secara teratur Bergabung dengan komunitas yang memiliki hobi dan minat yang sama Mempertahankan koneksi tidak hanya secara daring tetapi juga luring Tindakan-tindakan semacam ini mengarah pada stabilitas mental.\nFokus pada Dialog, Bukan Penolakan Sekalipun seseorang di dekat Anda cenderung mempercayai teori konspirasi, penolakan secara mentah-mentah bisa menjadi bumerang.\nKetika keyakinan seseorang ditolak, secara psikologis kecenderungan untuk mempertahankannya semakin kuat (ini disebut \u0026ldquo;kognisi defensif\u0026rdquo;).\nAlih-alih demikian:\nTanyakan dengan lembut, \u0026ldquo;Mengapa kamu berpikir begitu?\u0026rdquo; Tunjukkan perspektif Anda dengan tenang dengan berkata, \u0026ldquo;Mungkin ada cara berpikir seperti ini juga\u0026rdquo; Dengan mengambil pendekatan dialogis semacam itu, muncul kemungkinan bahwa perspektif lawan bicara akan meluas secara alami.\nKesimpulan: Apa yang Dapat Anda Lakukan untuk Menjauh dari Teori Konspirasi Memiliki kemampuan untuk menunda dan tidak segera mengaitkan kecemasan dengan jawaban Mendiversifikasi sumber informasi dan menyadari adanya bias Menyadari bahwa penilaian Anda tidaklah mutlak Melihat segala sesuatu melalui struktur dan hubungan sebab-akibat, bukan cerita Menghindari kesepian dan mempertahankan koneksi Menghadapi teori konspirasi orang lain dengan dialog alih-alih penolakan Dikatakan bahwa apakah seseorang tertarik pada teori konspirasi lebih banyak dipengaruhi oleh keadaan psikologis dan lingkungannya daripada tingkat pengetahuannya.\nItulah mengapa, tanpa berasumsi \u0026ldquo;Saya baik-baik saja\u0026rdquo;, mengambil langkah-langkah kecil untuk meningkatkan keamanan mental dalam kehidupan sehari-hari akan menjadi dukungan besar untuk hidup secara fleksibel di masyarakat informasi masa depan.\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/id/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":"Apa yang Dibutuhkan agar Tidak Terjebak Teori Konspirasi"},{"content":"Sejarah Pengembangan Low-Code / No-Code (1980-an hingga Sekarang) Pengembangan Low-code / No-code adalah metode pengembangan yang memungkinkan Anda membuat aplikasi, situs web, dan basis data tanpa memerlukan keahlian khusus dalam pemrograman. Konsep ini dimulai pada 1980-an dan telah berkembang sebagai berbagai platform seiring dengan penyebaran PC, evolusi internet, dan perluasan teknologi cloud. Dalam artikel ini, kami akan menyoroti alat dan layanan representatif per dekade, serta memperkenalkan fitur dan harganya.\n1980-an: Masa Awal HyperCard (Apple, 1987) Alat pembuatan aplikasi untuk Macintosh. Menyusun layar dalam bentuk kartu dan membuat GUI melalui drag-and-drop. Kontrol operasi sederhana juga dimungkinkan menggunakan bahasa skrip aslinya \u0026ldquo;HyperTalk\u0026rdquo;. Alat ini populer untuk tujuan pembuatan prototipe. Harga rilis adalah $49,95, dan kemudian diberikan secara gratis untuk pembeli Mac baru. Versi terakhir dirilis pada tahun 1998, dan tidak ada dukungan untuk Mac OS X dan yang lebih baru.\nFileMaker (Claris/Apple, 1985) Perangkat lunak basis data grafis. Alat basis data relasional yang dilengkapi tampilan data tabular, serta pengeditan tata letak bebas dan fungsi skrip. Saat ini ditawarkan sebagai \u0026ldquo;Claris FileMaker Pro\u0026rdquo;, dan versi lisensi penuh seharga $594 (per 2024).\n1990-an: Munculnya Aplikasi GUI dan Pengembangan Sistem Bisnis Visual Basic (Microsoft, 1991) IDE (Integrated Development Environment) yang dikhususkan untuk pengembangan aplikasi Windows. Aplikasi berbasis peristiwa dapat dibangun dengan mudah dengan melakukan drag-and-drop komponen GUI seperti tombol dan label. Dengan rilisnya VB6.0 pada tahun 1998, ia bertransisi ke era .NET.\nMicrosoft Access (1992) Alat pengembangan basis data untuk Windows. Memungkinkan desain basis data relasional dan pembuatan formulir melalui GUI, dan secara luas digunakan untuk pengembangan aplikasi bisnis umum. Saat ini ditawarkan sebagai bagian dari Microsoft 365.\nPowerBuilder (PowerSoft/Sybase, 1991) Alat pengembangan 4GL untuk aplikasi bisnis. Mendukung arsitektur klien/server dan memiliki keunggulan dalam integrasi basis data. Saat ini terus ditawarkan di bawah naungan SAP.\nDreamweaver (Macromedia, 1997) Alat WYSIWYG yang memungkinkan pembuatan halaman web secara visual. Memungkinkan peralihan antara pengeditan HTML dan tampilan desain, serta mendukung ASP dan PHP. Saat ini ditawarkan oleh Adobe dan tersedia melalui langganan (sekitar $34,49 per bulan).\nFlash (Macromedia, 1996) Awalnya adalah alat pembuatan animasi vektor yang dikembangkan sebagai FutureSplash Animator. Kemudian dimanfaatkan untuk pembuatan konten interaktif web, namun dukungannya dihentikan pada tahun 2020 karena masalah keamanan.\nGameMaker (1999) Alat pembuatan game 2D untuk pemula. Penempatan objek dan kontrol peristiwa dimungkinkan melalui drag-and-drop. Kemudian juga mendukung skrip (GML), dan saat ini berbagai paket ditawarkan untuk komersial.\n2000-an: Perluasan Berbasis Web dan Open Source WordPress (2003) CMS open source yang menggunakan PHP dan MySQL. Memungkinkan Anda membangun blog atau situs web perusahaan menggunakan tema dan plugin tanpa pengetahuan pemrograman. Didistribusikan secara gratis dan merupakan salah satu CMS yang paling banyak digunakan di dunia.\nWix (2006) Layanan no-code yang memungkinkan Anda membangun situs web di browser. Anda dapat memilih template dan mengeditnya dengan drag-and-drop. Selain paket gratis, paket berbayar memungkinkan penggunaan domain kustom dan fitur e-commerce.\nOutSystems (2001) Platform low-code untuk perusahaan (enterprise). Karena sistem bisnis dapat dikembangkan dengan cepat, adopsinya semakin maju di perusahaan besar dan lembaga pemerintah. Mendukung cloud maupun on-premise.\nScratch (MIT, 2007) Alat pembelajaran pemrograman yang dikembangkan untuk anak-anak. Permainan dan animasi dapat dibuat dengan menggabungkan balok berwarna, dan secara luas digunakan dalam lingkungan pendidikan. Disediakan secara gratis.\nAirtable (2013) Layanan berbasis cloud yang menggabungkan spreadsheet dan basis data. Terlihat mirip dengan Excel tetapi memungkinkan relasi, tampilan kanban, integrasi API, dll. Secara luas digunakan mulai dari individu hingga perusahaan.\n2010-an ~ 2020-an: Era Cloud dan Otomatisasi Dalam beberapa tahun terakhir, alat low-code / no-code berbasis cloud telah berkembang pesat.\nPower Platform (Microsoft) Platform pengembangan dan otomatisasi aplikasi bisnis terintegrasi yang mencakup \u0026ldquo;Power Apps\u0026rdquo;, \u0026ldquo;Power Automate\u0026rdquo;, dll. Memungkinkan Anda membangun proses bisnis perusahaan secara visual melalui drag-and-drop.\nSalesforce Lightning Platform Platform pengembangan aplikasi yang disediakan oleh Salesforce, sebuah CRM. Memungkinkan pembuatan aplikasi bisnis melalui GUI, dan integrasi dengan layanan Salesforce lainnya juga mudah.\nZapier / IFTTT Alat otomatisasi yang memungkinkan Anda membangun integrasi antar beberapa layanan cloud tanpa pengkodean (coding). Misalnya, alur kerja seperti \u0026ldquo;Beri tahu Slack saat ada input masuk di Google Forms\u0026rdquo; dapat diwujudkan dengan mudah.\nNotion (2010-an) Ruang kerja all-in-one yang mengintegrasikan manajemen dokumen, manajemen tugas, Wiki, dll. Juga dilengkapi dengan fitur basis data kustom, yang berguna untuk peningkatan proses bisnis tanpa kode.\nConstruct 3 / GameSalad Alat yang memungkinkan Anda membuat game dengan drag-and-drop. Construct 3 mendukung HTML5 dan dapat berjalan di browser, sehingga populer di dunia pendidikan dan di kalangan pengembang indie.\nSumber Informasi dan Catatan Tambahan Artikel ini disusun berdasarkan situs web resmi dari masing-masing produk, Wikipedia, dan materi/artikel yang dapat diandalkan (seperti Apple, Microsoft, Adobe, dll). Informasi harga mengacu pada harga resmi pada saat itu atau yang terbaru sebisa mungkin (sebagian besar dicantumkan dalam Dolar AS). Sebagian besar alat sejak tahun 2000-an menggunakan model berlangganan, dan tarifnya bervariasi bergantung pada paketnya.\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/id/p/sejarah-low-code-dan-no-code/","title":"Sejarah No-Code di Lingkungan Lokal"},{"content":"Sebenarnya, apa itu FizzBuzz? Halo semuanya!\nHari ini, saya ingin menulis tentang \u0026ldquo;FizzBuzz\u0026rdquo;.\nBaik Anda seseorang yang berkata, \u0026ldquo;Ah, saya tahu itu!\u0026rdquo;, atau seseorang yang berkata, \u0026ldquo;Saya pernah mendengarnya, tapi tidak terlalu mengerti,\u0026rdquo; tolong luangkan waktu sebentar bersama saya. Anda dapat membacanya hanya dalam beberapa menit, dan mungkin Anda akan berpikir, \u0026ldquo;Oh, begitu rupanya.\u0026rdquo;\nBenarkah \u0026ldquo;Anda bukan programmer jika tidak bisa menulis FizzBuzz\u0026rdquo;? Secara garis besar, FizzBuzz itu seperti ini.\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) Ya, ini adalah \u0026ldquo;masalah FizzBuzz\u0026rdquo; yang terkenal itu.\nAnda melihat angka dari 1 hingga 100 secara berurutan,\njika kelipatan 3 maka cetak \u0026ldquo;Fizz\u0026rdquo;, jika kelipatan 5 maka cetak \u0026ldquo;Buzz\u0026rdquo;,\ndan jika kelipatan keduanya, cetak \u0026ldquo;FizzBuzz\u0026rdquo;. Sangat sederhana.\nNamun, entah mengapa, ini sering kali dianggap sebagai \u0026ldquo;ujian standar minimum untuk programmer.\u0026rdquo; Ini sering muncul dalam wawancara, dan terkadang ada komentar merendahkan di media sosial seperti, \u0026ldquo;Orang yang bahkan tidak bisa menulis FizzBuzz\u0026hellip;\u0026rdquo;\nTapi tunggu sebentar.\nBisakah kita benar-benar mengatakan bahwa \u0026ldquo;tidak bisa menulis FizzBuzz = tidak bisa memprogram\u0026rdquo;?\nIni bukan tentang apakah Anda bisa melakukannya, tetapi apakah Anda memiliki \u0026ldquo;kondisi\u0026rdquo; untuk melakukannya Tentu saja, FizzBuzz membutuhkan pemahaman tentang sintaksis dan pemikiran logis dasar. Jadi, masuk akal untuk menggunakannya untuk \u0026ldquo;memeriksa dasar-dasar.\u0026rdquo;\nTapi dengarkan.\nJika lingkungannya berbeda, hasilnya juga akan berbeda.\nMisalnya,\nKetika Anda merasa gugup di depan pewawancara yang baru pertama kali Anda temui Ketika Anda tiba-tiba diberi papan tulis dan tidak ada editor kode di tangan Ketika Anda tiba-tiba tidak bisa mengingat, \u0026ldquo;Tunggu, apa itu modulo lagi?\u0026rdquo; \u0026hellip; Bukankah hal-hal seperti itu terjadi? Bagaimanapun, kita adalah manusia. Saya rasa itu wajar terjadi.\nJadi, daripada \u0026ldquo;apakah Anda bisa menulis FizzBuzz,\u0026rdquo; saya pikir yang lebih penting adalah \u0026ldquo;apakah Anda bisa membawa diri Anda ke dalam kondisi di mana Anda bisa menulis FizzBuzz.\u0026rdquo;\nJebakan dari saran umum \u0026ldquo;Teruslah berlatih dan Anda akan baik-baik saja\u0026rdquo; Ketika berbicara tentang topik ini, saran \u0026ldquo;Makanya berlatihlah setiap hari!\u0026rdquo; sering kali muncul.\nTentu saja, benar bahwa latihan berulang kali akan memungkinkan Anda menulis dengan lancar, dan itu sendiri adalah hal yang baik. Namun, jika Anda mulai dengan asumsi bahwa \u0026ldquo;Anda gagal jika tidak bisa menulis FizzBuzz,\u0026rdquo; itu hanya akan berubah menjadi ketakutan.\nDengan kata lain, mudah untuk jatuh ke dalam pola pikir di mana Anda merasa, \u0026ldquo;Saya melakukan kesalahan = saya tidak berguna.\u0026rdquo;\nMisalnya, pada hari-hari ketika Anda bangun kesiangan, bukankah Anda cenderung berpikir, \u0026ldquo;Saya malas sekali\u0026hellip;\u0026rdquo;? Tapi mungkin tubuh Anda kebetulan sedang sangat lelah.\nHal yang sama berlaku untuk FizzBuzz.\nMeski begitu, FizzBuzz tetaplah pertanyaan yang sangat bagus Meskipun demikian, FizzBuzz bukanlah hal yang buruk.\nSebaliknya, saya pikir ini adalah pertanyaan yang disusun dengan sangat baik. Aturannya sederhana, dan mudah untuk dikembangkan. Misalnya, jika Anda mengubahnya seperti ini, pemikiran Anda akan menjadi lebih dalam.\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) Ini adalah contoh yang menunjukkan bahwa \u0026ldquo;Anda bisa menulisnya tanpa if-elif-else.\u0026rdquo; Cukup cerdik, bukan?\nDengan kata lain, FizzBuzz bukan hanya tentang \u0026ldquo;apakah Anda bisa melakukannya,\u0026rdquo; tetapi juga bisa menjadi titik masuk untuk melihat \u0026ldquo;bagaimana Anda menulisnya\u0026rdquo; dan \u0026ldquo;seberapa jauh Anda memahaminya.\u0026rdquo;\nKesimpulan Saya rasa kita tidak perlu memberi makna berlebihan pada apakah seseorang bisa menyelesaikan FizzBuzz atau tidak.\nBahkan jika Anda tidak bisa menulisnya, itu mungkin hanya berarti bahwa \u0026ldquo;saat itu kondisi Anda sedang kurang baik,\u0026rdquo; dan Anda sering kali bisa melakukannya jika memikirkannya baik-baik nanti.\nJangan terburu-buru, mari kita jalani pelan-pelan.\nKode ditulis oleh manusia. Karena kita manusia, terkadang kita melupakan sesuatu, dan terkadang kita merasa gugup. Saya pikir cukup untuk menerima hal itu dan bergerak maju sedikit demi sedikit.\nBaiklah, mari bersantai dan menulis beberapa kode hari ini.\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/id/p/fizzbuzz/","title":"FizzBuzz"},{"content":"Menara Hanoi Halo!\nHari ini saya akan membahas tentang \u0026ldquo;Menara Hanoi\u0026rdquo;, lengkap dengan contoh program menggunakan Python.\nApa itu Menara Hanoi? Menara Hanoi adalah teka-teki yang menggunakan tiga tiang dan beberapa cakram. Cakram-cakram ini memiliki ukuran yang berbeda-beda, dan pada awalnya ditumpuk di satu tiang dari yang terbesar hingga terkecil. Aturannya adalah sebagai berikut:\nHanya satu cakram yang boleh dipindahkan dalam satu waktu. Cakram yang lebih besar tidak boleh diletakkan di atas cakram yang lebih kecil. Teka-teki ini dianggap sebagai materi yang bagus untuk mempelajari pemikiran rekursif. Rekursi adalah metode pemecahan masalah dengan memecah suatu masalah menjadi masalah serupa yang lebih kecil. Dalam Menara Hanoi, untuk memindahkan n cakram, kita mengulangi operasi memindahkan n-1 cakram.\nMari Kita Selesaikan Menara Hanoi dengan Python Berikut adalah contoh kode Python untuk memecahkan masalah Menara Hanoi.\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) # Contoh: Memindahkan 3 cakram dari A ke C hanoi(3, \u0026#39;A\u0026#39;, \u0026#39;C\u0026#39;, \u0026#39;B\u0026#39;) Dalam kode ini, fungsi hanoi dipanggil secara rekursif, dan langkah-langkah untuk memindahkan cakram ditampilkan. Sebagai contoh, untuk 3 cakram, output yang dihasilkan adalah sebagai berikut:\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 Dengan menggunakan pendekatan rekursif seperti ini, bahkan masalah kompleks pun dapat diselesaikan secara sederhana.\nBerapa Lama Waktu yang Dibutuhkan untuk Memindahkan 64 Cakram? Jumlah pemindahan minimal dalam Menara Hanoi adalah 2^n - 1 kali. Artinya, untuk memindahkan 64 cakram, diperlukan 2^64 - 1 atau sekitar 1,84×10^19 kali perpindahan. Meskipun kita dapat memindahkannya 1 kali per detik, waktu yang dibutuhkan adalah sekitar 584 miliar tahun. Angka ini sekitar 42 kali lipat umur alam semesta (sekitar 13,7 miliar tahun).\nDengan demikian, saat jumlah cakram bertambah, jumlah pergerakan yang dibutuhkan akan meningkat secara eksponensial. Oleh karena itu, memindahkan 64 cakram di dunia nyata adalah hal yang tidak realistis.\nKesimpulan Menara Hanoi adalah teka-teki yang sangat baik untuk melatih pemikiran rekursif. Dengan menggunakan Python, kita dapat dengan mudah mengimplementasikan solusinya. Namun, perlu diperhatikan bahwa jumlah pemindahan meningkat secara drastis saat jumlah cakram bertambah.\nDengan memahami pendekatan rekursif dan mencoba menulis kodenya secara langsung, Anda dapat meningkatkan keterampilan pemrograman. Jangan ragu untuk mencoba memecahkan masalah Menara 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/id/p/menara-hanoi/","title":"Menara Hanoi"},{"content":"Jumlah Baris Kode Sumber Halo!\nHari ini saya ingin berbicara tentang tema yang sedikit berbeda.\nIni tentang, \u0026ldquo;Seberapa banyak jumlah baris kode sumber meningkat dibandingkan dengan masa lalu?\u0026rdquo;\nMisalnya, perangkat lunak pesawat ulang-alik (Space Shuttle) terdiri dari sekitar 420.000 baris kode. Kode ini dikembangkan melalui proses yang sangat ketat untuk memenuhi standar kualitas NASA yang tinggi. Di sisi lain, dalam proyek perangkat lunak berskala besar modern, tidak jarang jumlah baris kode melebihi puluhan juta baris. Sebagai contoh, basis kode Google dikatakan mencapai sekitar 2 miliar baris.\nDengan cara ini, skala perangkat lunak telah berkembang seiring berjalannya waktu.\nTapi, tunggu sebentar.\nPeningkatan jumlah baris kode tidak selalu merupakan hal yang buruk. Adalah hal yang wajar jika kode bertambah untuk menambahkan fitur baru atau memenuhi kebutuhan pengguna. Namun, seiring bertambahnya kode, risiko bug juga meningkat. Faktanya, sebuah penelitian menunjukkan bahwa ketika sebuah proyek open-source melampaui 1 juta baris, tingkat kemunculan bug cenderung meningkat.\nMeskipun demikian, tidak semua proyek menambah jumlah kodenya dengan cara yang sama.\nSebagai contoh, kernel Linux memiliki sekitar 200.000 baris pada versi 1.0 tahun 1994, tetapi meningkat menjadi sekitar 20 juta baris pada versi 4.2 tahun 2015. Peningkatan ini adalah respons terhadap evolusi perangkat keras dan penambahan fitur baru.\nOleh karena itu, jumlah baris kode sumber sangat bervariasi tergantung pada skala dan tujuan proyek, serta konteks sejarahnya.\nPeningkatan jumlah baris kode itu sendiri bukanlah suatu masalah, tetapi manajemen yang tepat diperlukan untuk menjaga kualitas dan pemeliharaannya. Penting untuk memahami risiko yang terkait dengan peningkatan kode dan mengambil langkah-langkah yang tepat.\nTerakhir, saya pikir penting untuk fokus pada tujuan dan kualitas proyek daripada terlalu terpaku pada jumlah baris kode.\nSampai jumpa lagi!\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/id/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/","title":"Jumlah Baris Kode Sumber"},{"content":"Prinsip Kerckhoffs Halo!\nHari ini saya ingin membicarakan tentang sesuatu yang cukup menarik dan sebenarnya sangat penting, yaitu \u0026ldquo;Prinsip Kerckhoffs\u0026rdquo;.\nOh, tunggu sebentar.\nMungkin ada di antara Anda yang berpikir, \u0026ldquo;Saya belum pernah mendengar tentang \u0026lsquo;Prinsip Kerckhoffs\u0026rsquo; dan kedengarannya terlalu rumit\u0026hellip;\u0026rdquo; Tenang saja. Artikel ini justru ditujukan untuk Anda yang merasa demikian.\nApa maksud dari \u0026ldquo;Kriptografi yang Aman\u0026rdquo;? Misalnya, seseorang mendatangi Anda dan berkata, \u0026ldquo;Brankas ini hanya bisa dibuka oleh orang yang mengetahui rahasianya.\u0026rdquo;\nSekilas, itu terdengar sangat aman, bukan?\nNamun, jika dipikir-pikir lagi, bukankah itu sedikit mengkhawatirkan?\nSeperti, \u0026ldquo;Jika rahasia itu terungkap, habislah sudah, kan?\u0026rdquo;\nSebenarnya, inilah alasan mengapa Prinsip Kerckhoffs diperkenalkan.\nApa itu sebenarnya \u0026ldquo;Prinsip Kerckhoffs\u0026rdquo;? Secara singkat, ini adalah:\nPemikiran bahwa \u0026ldquo;Kriptografi harus tetap aman meskipun mekanismenya terungkap\u0026rdquo; .\nLebih tepatnya, \u0026ldquo;Keamanan hanya boleh bergantung pada \u0026lsquo;kunci rahasia\u0026rsquo;, dan tidak masalah jika metode enkripsi itu sendiri dipublikasikan!\u0026rdquo;\nSebaliknya, \u0026ldquo;Sistem yang hanya mengandalkan kerahasiaan algoritma (mekanisme) enkripsinya dianggap memiliki keandalan yang rendah.\u0026rdquo;\n\u0026ldquo;Aman asalkan mekanismenya rahasia\u0026rdquo; mungkin sedikit berbahaya Cara berpikir seperti ini sangat umum:\n\u0026ldquo;Saya tidak menunjukkan isi aplikasi ini kepada siapa pun, jadi keamanannya terjamin.\u0026rdquo;\nSaya mengerti perasaan itu.\nTetapi, itu sama saja dengan mengatakan, \u0026ldquo;Karena tidak ada yang melihatnya, tidak ada celah yang ditemukan, jadi pasti aman, kan?\u0026rdquo;\nPada kenyataannya, fakta bahwa \u0026ldquo;tidak ada yang melihat\u0026rdquo; itu sendiri bisa menjadi sebuah risiko.\nTetapi, mengapa prinsip seperti itu penting? Alasannya adalah, jika seseorang mendapatkan mekanismenya dan dapat memecahkannya dengan mudah, maka kriptografi tersebut gagal.\nSebagai analogi, bayangkan sebuah kunci pintu yang memiliki mekanisme yang sangat rumit, tetapi sebenarnya bisa dibuka dengan kunci duplikat yang dibuat di toko murah.\nBukan \u0026ldquo;Aman karena kuncinya rahasia\u0026rdquo;, tetapi yang penting adalah \u0026ldquo;Bahkan jika seluruh mekanismenya diperlihatkan, tidak akan bisa dibuka tanpa kunci yang tepat.\u0026rdquo;\nPerasaan \u0026ldquo;Tapi, bukankah itu menakutkan?\u0026rdquo; Hal yang dirasakan oleh banyak orang di sini adalah,\n\u0026ldquo;Mengekspos seluruh mekanisme, bukankah itu agak menakutkan?\u0026rdquo;\nSaya mengerti kecemasan tersebut.\nKarena Anda pasti akan berpikir, \u0026ldquo;Jika saya menunjukkan semuanya, bukankah itu akan ditiru atau disalahgunakan?\u0026rdquo;\nNamun, justru di situlah letak inti dari Prinsip Kerckhoffs.\n\u0026ldquo;Kekuatan yang tidak hancur meskipun isinya diperlihatkan\u0026rdquo; itulah keamanan yang sesungguhnya.\nMeskipun begitu, butuh sedikit keberanian pada awalnya Jika mencoba menempatkan diri sebagai pengembang, \u0026ldquo;Mempublikasikan mekanisme = kelemahan juga terlihat\u0026rdquo;, tentu saja itu mendebarkan.\nTapi coba pikirkan.\nSesuatu yang secara terbuka menunjukkan mekanismenya dan mengatakan, \u0026ldquo;Siapa pun boleh memverifikasinya,\u0026rdquo; pada akhirnya akan lebih dipercaya.\nItu mirip dengan hubungan antar manusia, bukan?\n\u0026ldquo;Seseorang yang menunjukkan jati dirinya dan tetap berteman dengan baik\u0026rdquo;, tentu saja adalah yang paling bisa membuat kita merasa tenang.\nJadi begitulah Prinsip Kerckhoffs mungkin terdengar sedikit teoritis, namun esensinya sangat sederhana.\nHanya masalah \u0026ldquo;Mari kita buat mekanisme yang tidak akan rusak tidak peduli siapa yang melihatnya\u0026rdquo; .\nDesain yang tepat lebih dari sekadar rahasia yang dangkal.\nKode yang tidak memalukan untuk ditunjukkan, lebih baik daripada kode yang tidak ingin Anda tunjukkan kepada siapa pun.\n\u0026ldquo;Kekuatan\u0026rdquo; seperti itu mungkin akan semakin dibutuhkan di era mendatang.\nTerima kasih sudah membaca!\nTopik keamanan mungkin sedikit sulit, tetapi ada bagian yang terhubung dengan \u0026ldquo;hubungan manusia\u0026rdquo; dan \u0026ldquo;rasa aman sehari-hari\u0026rdquo;.\nSaya yakin jika Anda mempelajarinya sedikit demi sedikit tanpa merasa terbebani, akan ada hal baik yang terjadi.\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/id/p/prinsip-kerckhoffs/","title":"Prinsip Kerckhoffs"},{"content":"🎯 Langkah-langkah Menjalankan PowerShell dari C++ melalui C++/CLI DLL (Visual Studio 2022 / C++) ✅ Struktur Keseluruhan 🔹 ① Pembungkus CLI DLL (C++/CLI) Menyediakan fungsionalitas untuk menjalankan skrip PowerShell.\n🔹 ② Pemanggil Native C++ Memanggil CLI DLL untuk menjalankan skrip PowerShell.\n🔧 Langkah 1: Membuat Proyek Pembungkus CLI DLL 1. Membuat Proyek [Buat baru] → [C++] → Pustaka Kelas CLR (.NET Framework) Nama: PowerShellWrapper 💡 Jika templat ini tidak ditampilkan, instal beban kerja \u0026ldquo;Pengembangan desktop .NET\u0026rdquo;.\n2. Menambahkan Paket NuGet Klik kanan pada proyek → [Kelola Paket NuGet] Cari dan instal System.Management.Automation\n(versi 5.x atau 7.x) 3. Implementasi Kode Sisi CLI 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(); } 🔧 Langkah 2: Memanggil dari Sisi Native C++ 1. Membuat Proyek Aplikasi Konsol C++ Nama: NativeApp 2. Pengaturan Referensi Klik kanan pada proyek → [Tambahkan Referensi] → [Proyek] → tambahkan PowerShellWrapper [Properti Konfigurasi] → [C/C++] → [Dukungan Runtime Bahasa Umum] → ubah ke /clr 3. Kode Eksekusi (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; } 💡 Catatan Tambahan (Pendaftaran IDL / TLB / COM) Karena konfigurasi ini merujuk langsung ke .NET DLL daripada COM, IDL, TLB, atau pendaftaran COM tidak diperlukan . ✅ Struktur Akhir 1 2 3 4 5 Solution ├── PowerShellWrapper (C++/CLI DLL) │ └── PowerShellExecutor ├── NativeApp (C++ EXE) └── main.cpp → Pemanggilan DLL ","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/id/p/langkah-langkah-menjalankan-powershell-dari-c-melalui-c-cli-dll/","title":"Langkah-langkah Menjalankan PowerShell dari C++ melalui C++/CLI DLL"},{"content":"【Windows】Cara Memeriksa Status Lisensi (Hanya dengan Satu Perintah) Pernahkah Anda bertanya-tanya apakah lisensi Windows Anda telah diaktifkan dengan benar?\nDalam kasus seperti itu, ada cara mudah untuk memeriksa informasi lisensi dengan satu perintah. Cukup ikuti langkah-langkah di bawah ini untuk memeriksa status lisensi Anda saat ini dengan mudah.\nPerintah untuk memeriksa status lisensi Anda dapat menggunakan alat skrip bawaan Windows untuk menampilkan informasi lisensi. Perintah yang digunakan adalah ini:\n1 slmgr /dli Saat Anda menjalankan perintah ini, sebagian informasi lisensi akan ditampilkan di sebuah jendela.\nCara mengeksekusi Dari \u0026ldquo;Start Menu\u0026rdquo;, ketik \u0026ldquo;cmd\u0026rdquo;, klik kanan Command Prompt → \u0026ldquo;Run as administrator\u0026rdquo;.\nMasukkan perintah berikut di Command Prompt dan tekan Enter:\n1 slmgr /dli Setelah menunggu beberapa detik, informasi lisensi berikut akan ditampilkan.\nInformasi utama yang ditampilkan Bagian dari kunci produk Jenis lisensi (Retail, OEM, dll.) Status lisensi (valid, kedaluwarsa, tidak diautentikasi, dll.) Bagaimana jika Anda ingin mengetahui informasi lebih rinci? Ada juga perintah seperti berikut:\nslmgr /dlv: Menampilkan informasi lisensi yang lebih rinci slmgr /xpr: Menampilkan tanggal kedaluwarsa lisensi (apakah permanen atau tidak) Ringkasan Status lisensi Windows dapat dengan mudah diperiksa dengan satu perintah.\nPemeriksaan sederhana: slmgr /dli Konfirmasi terperinci: slmgr /dlv Konfirmasi tanggal kedaluwarsa: slmgr /xpr Jika ada masalah dengan lisensi, mungkin ada batasan pada pembaruan dan beberapa fungsi, sehingga aman untuk memeriksanya secara teratur.\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/id/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":"Perintah untuk Memeriksa Status Lisensi Windows"},{"content":"Parameter konversi ffmpeg yang dioptimalkan untuk iOS Berikut adalah perintah ffmpeg untuk mengonversi video sehingga dapat diputar dengan lancar di perangkat iOS (iPhone dan iPad).\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 Arti setiap opsi (penjelasan singkat) Opsi Deskripsi -i input.mp4 File input (video asli) -c:v libx264 Mengodekan video dalam H.264 (didukung iOS) -profile:v high -level 4.1 Profil dan level yang sangat kompatibel di iOS -vf \u0026quot;scale=1920:-2\u0026quot; Mengubah ukuran menjadi lebar 1920 piksel, tinggi disesuaikan secara otomatis sambil mempertahankan rasio aspek -r 30 Mengonversi frame rate menjadi 30fps -crf 20 Kualitas video (semakin rendah nilainya, semakin tinggi kualitasnya, disarankan 18–23) -preset slow Keseimbangan antara kecepatan pengodean dan rasio kompresi (slow untuk kompresi dan kualitas tinggi) -c:a aac Audio dikodekan dalam format AAC -b:a 128k Mengatur bitrate audio menjadi 128kbps -ar 48000 Mengatur sampling rate audio menjadi 48kHz (disarankan iOS) -movflags +faststart Menempatkan indeks di awal video untuk mempercepat ** pemutaran streaming di Web dan iOS ** Video yang dikonversi dengan pengaturan ini diharapkan memiliki kompatibilitas tinggi dan pemutaran yang lancar di perangkat Apple seperti iPhone dan iPad.\nJika perlu, Anda dapat menyesuaikan ukuran file dan kualitas gambar dengan mengubah resolusi atau bitrate. Jika Anda membutuhkan kualitas tinggi, coba atur -crf menjadi sekitar 18, dan jika Anda ingin mengurangi ukuran file, atur ke 22-25.\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/id/p/parameter-ffmpeg-untuk-ios/","title":"Parameter ffmpeg untuk iOS"},{"content":"Langkah-langkah Pemulihan Perangkat Android (Google Pixel) Jika perangkat Google Pixel Anda mengalami masalah sistem yang parah seperti \u0026ldquo;berulang kali memulai ulang (bootloop)\u0026rdquo;, \u0026ldquo;macet di layar logo\u0026rdquo;, atau \u0026ldquo;kinerja menjadi sangat tidak stabil\u0026rdquo;, Anda dapat menggunakan alat resmi Google \u0026ldquo;Pixel Update and Software Repair\u0026rdquo; untuk memulihkan (memperbaiki) perangkat lunak perangkat secara aman melalui browser.\nArtikel ini menjelaskan langkah-langkah spesifik dan poin-poin yang perlu diperhatikan secara rinci.\n1. Mengakses Alat Pemulihan Pertama, akses halaman alat perbaikan resmi berikut dari browser (disarankan Google Chrome atau Microsoft Edge) di PC (Windows atau Mac) Anda.\n🔗 Situs Resmi Pixel Update and Software Repair\n※Perhatian※ Saat Anda menjalankan proses pemulihan, data di perangkat (foto, aplikasi, kontak, dll.) mungkin akan sepenuhnya dihapus (diinisialisasi) . Jika perangkat masih dapat dioperasikan, pastikan untuk mencadangkannya ke Google Drive atau sejenisnya terlebih dahulu.\n2. Persiapan Sebelum Pemulihan Untuk memastikan proses berjalan lancar, siapkan hal-hal berikut.\nMengisi Baterai Jika daya mati di tengah jalan, perangkat berisiko menjadi \u0026ldquo;bata\u0026rdquo; (rusak total). Pastikan baterai terisi minimal 50%, atau lebih baik jika terisi penuh. Menyiapkan Kabel USB Asli Sangat disarankan untuk menggunakan kabel USB-C asli yang disertakan dengan perangkat untuk memastikan transfer data yang stabil. (Jika Perlu) Menginstal Driver Jika menggunakan PC Windows, perangkat mungkin tidak dikenali dengan benar. Dalam hal ini, silakan instal Google USB Driver . 3. Langkah-langkah Pemulihan Spesifik Setelah persiapan selesai, ikuti petunjuk di layar untuk melanjutkan pemulihan.\nStep 1: Memilih Operator dan Menghubungkan Perangkat Saat Anda membuka situs tersebut, layar untuk memilih operator seluler akan muncul. Jika perangkat Anda bebas SIM atau tidak terikat dengan operator tertentu, pilih \u0026ldquo;Lainnya (Other)\u0026rdquo; atau serupa. Setelah itu, hubungkan PC dan perangkat Pixel menggunakan kabel USB.\nStep 2: Masuk ke Rescue Mode (Fastboot Mode) Ikuti petunjuk di layar, mulai dari perangkat yang dimatikan, tekan dan tahan tombol Daya dan tombol Volume Turun secara bersamaan untuk memulai mode Fastboot (layar dengan latar belakang hitam dan ikon Android yang sedang berbaring).\nStep 3: Mengenali Perangkat di PC Saat Anda mengklik tombol \u0026ldquo;Hubungkan perangkat\u0026rdquo; di browser, pop-up browser akan terbuka dan perangkat Pixel yang terhubung akan ditampilkan dalam daftar. Pilih perangkat target dan izinkan koneksi.\nStep 4: Mengunduh dan Menginstal Perangkat Lunak Setelah perangkat dikenali, versi sistem operasi Android (firmware) yang optimal akan dipilih secara otomatis. Saat Anda mengklik \u0026ldquo;Instal\u0026rdquo;, perangkat lunak akan diunduh ke PC dan proses penulisan (flashing) ke perangkat akan segera dimulai.\n⚠️ Peringatan: Selama proses ini, jangan pernah mencabut kabel USB atau mematikan PC Anda.\nStep 5: Selesai dan Pengaturan Awal Jika bilah kemajuan mencapai 100% dan pesan \u0026ldquo;Selesai\u0026rdquo; muncul, pemulihan berhasil. Perangkat akan secara otomatis memulai ulang dan menampilkan layar pengaturan awal (layar \u0026ldquo;Halo\u0026rdquo;) yang sama seperti saat pembelian.\nKesimpulan Alat perbaikan resmi Google Pixel adalah alat yang sangat baik yang memungkinkan Anda untuk melakukan flashing ulang firmware secara aman hanya dengan beberapa klik di browser, tanpa harus menjalankan perintah khusus (adb atau fastboot) secara langsung.\nSebelum membawa perangkat yang bermasalah ke toko, cobalah langkah-langkah ini, karena mungkin dapat menyelesaikan masalah dengan mudah. Silakan jadikan ini sebagai referensi.\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/id/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":"Langkah-langkah Pemulihan (Inisialisasi dan Perbaikan) Perangkat Lunak Perangkat Android (Google Pixel)"},{"content":"Mengirim email Gmail dengan curl 1. Mendapatkan kata sandi aplikasi https://myaccount.google.com/apppasswords Klik tautan di atas dan masukkan nama aplikasi. Simpan kata sandi yang dihasilkan.\n2. Mengirim email dengan perintah curl Jalankan perintah berikut.\nPada contoh di bawah ini, isi email ditulis di dalam mail.txt.\n1 2 3 4 5 6 From: from@gmail.com To: to@gmail.com Subject: Email tes Content-Type: text/plain; charset=\u0026#34;UTF-8\u0026#34; Ini adalah email tes. Buat file di atas, dan jalankan perintah berikut.\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 ※ Harap ganti xxxxxxxxxxxxxxxx dengan kata sandi aplikasi Anda.\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/id/p/mengirim-email-gmail-dengan-curl/","title":"Mengirim email Gmail dengan curl"},{"content":"Pengenalan pada kode sampel menggunakan pustaka standar.\nMengunduh dan menampilkan gambar 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() # Simpan ke file sementara dan tampilkan 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;Terjadi kesalahan: {e}\u0026#34;) finally: if \u0026#39;tmp\u0026#39; in locals(): os.unlink(tmp.name) # Hapus file sementara ","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/id/p/python%E3%82%B3%E3%83%BC%E3%83%89%E7%89%87/","title":"Cuplikan Kode Python"},{"content":"Memanggil API ChatGPT dari curl Ini diasumsikan dipanggil dari command prompt Windows.\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;Tolong jawab dalam dialek Kansai.\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;Masukkan pesan yang ingin Anda kirim di sini\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/id/p/memanggil-api-chatgpt-dari-curl/","title":"Memanggil API ChatGPT dari curl"},{"content":"Ringkasan Saham Dividen Tinggi 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/id/p/ringkasan-saham-dividen-tinggi/","title":"Ringkasan Saham Dividen Tinggi"},{"content":"Tujuan Jangka Panjang 1 tahun ke depan Memulai bisnis Membuat beranda web dan merilis perangkat lunak (gratis) 2 tahun ke depan Pendapatan tahunan 10 juta yen Menerbitkan buku Merilis perangkat lunak (berbayar) 3 tahun ke depan Pendapatan tahunan 100 juta yen 5 tahun ke depan Pendapatan tahunan 1 miliar yen 10 tahun ke depan Pendapatan tahunan 10 miliar yen Tujuan Jangka Pendek 1 bulan ke depan Membuat rencana bisnis 3 bulan ke depan Mengumpulkan dana sekitar 5 juta yen untuk memulai bisnis 6 bulan ke depan Memulai bisnis 1 tahun ke depan Menjadikan bisnis berada di jalur yang benar (stabil) Tugas Terdekat Klarifikasi Tujuan dan Visi\nTujuan: Mengapa membuat perangkat lunak? Contoh: Memecahkan masalah, memberikan nilai baru, menargetkan pasar khusus tertentu, dll. Visi: Masa depan seperti apa yang ingin Anda wujudkan melalui perangkat lunak? Contoh: Peningkatan efisiensi bisnis, kenyamanan hidup sehari-hari, peningkatan kualitas pendidikan, dll. Riset Pasar dan Analisis Kebutuhan\nTarget pengguna: Siapa yang akan menggunakan perangkat lunak ini? Tentukan kelompok usia, pekerjaan, minat, dll secara spesifik. Riset kompetitor: Apakah ada pesaing di bidang yang sama? Analisis kekuatan dan kelemahan mereka. Identifikasi kebutuhan: Pahami masalah dan keinginan yang belum terselesaikan dari target pengguna. Desain dan Fitur Perangkat Lunak\nFitur dasar: Buat daftar fitur-fitur penting. Contoh: Autentikasi pengguna, penyimpanan data, fitur analitik, dll. Poin diferensiasi: Perjelas apa yang membuatnya unik dibandingkan dengan produk pesaing. Contoh: UI sederhana, penggunaan AI, kustomisasi tinggi. Spesifikasi teknis: Bahasa pemrograman yang akan digunakan, kerangka kerja (framework), basis data, dll. Rencana Pengembangan dan Alokasi Sumber Daya\nJadwal pengembangan: Tetapkan garis waktu (timeline) untuk setiap tahap proyek. Contoh: Pengembangan prototipe, pengujian, rilis resmi. Komposisi tim: Personel dan keahlian yang dibutuhkan (programer, desainer, staf pemasaran, dll). Anggaran: Perkirakan biaya pengembangan, biaya pemasaran, dan biaya operasional. Pemasaran dan Model Pendapatan\nMetode promosi: Manfaatkan media sosial, situs web, iklan, dll untuk meningkatkan kesadaran (awareness). Strategi monetisasi: Pertimbangkan opsi seperti versi gratis + versi berbayar, langganan bulanan, pendapatan iklan, dll. Strategi akuisisi pengguna: Menawarkan uji coba gratis, mempromosikan dari mulut ke mulut, membentuk komunitas pengguna, dll. Operasional dan Penskalaan\nOperasional setelah rilis: Mengumpulkan umpan balik pengguna, memperbaiki bug, menambahkan fitur. Strategi pertumbuhan: Merencanakan cara untuk meningkatkan jumlah pengguna, ekspansi ke negara lain, dan mengembangkan fitur baru. Manajemen risiko: Mempersiapkan langkah-langkah untuk menangani masalah hukum atau masalah teknis. ","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/id/p/tujuan/","title":"Tujuan"},{"content":"Baru-baru ini, saya mulai tertarik dengan produk kulit dan telah membeli berbagai barang. Seiring dengan itu, minat saya terhadap perawatan produk kulit juga tumbuh, dan saya telah mengumpulkan beberapa produk terkait yang ingin saya perkenalkan.\nProduk Perawatan Kulit yang Baru Saja Dibeli M.MOWBRAY DELICATE CREAM Harga: sekitar 1.320 yen\nKrim ini memberikan nutrisi, kelembapan, dan efek fleksibilitas. Tidak memberikan kilau, tetapi cocok untuk kulit yang membutuhkan banyak kelembapan. Baunya tidak menyengat, meski ada sedikit aroma. Karena tidak berwarna, saya rasa krim ini sangat serbaguna. Karena teksturnya yang ringan, mungkin lebih baik menggunakan sedikit lebih banyak dibandingkan krim lainnya.\nCollonil 1909 Supreme Creme de Luxe Harga: sekitar 1.777 yen\nKrim yang terkenal, standar, dan serbaguna yang tidak mudah meninggalkan noda. Krim ini memperbaiki warna kulit dan membuatnya lembap. Memberikan sedikit kilau. Berwarna putih dan tampaknya juga memiliki efek menolak air.\nM.MOWBRAY SHOE CREAM (Hitam) Harga: sekitar 1.000 yen\nKrim untuk sepatu. Mengandung lilin, minyak, dan pelarut organik. Memperbaiki warna kulit dan memberikan kilau. Karena berwarna hitam, ini digunakan untuk kulit hitam. Saya menggunakannya untuk sepatu jas saya.\nM.MOWBRAY STAIN REMOVER Harga: sekitar 700 yen\nIni adalah produk yang didapat saat saya membeli sikat. Pembersih sepatu berbahan dasar air. Menghilangkan kotoran dari kulit. Basahi kain secukupnya dan gosok kulit dengan lembut untuk mengangkat kotoran.\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/id/p/perawatan-produk-kulit/","title":"Perawatan Produk Kulit"},{"content":"Halo! Hari ini kita berbicara tentang \u0026ldquo;Pisau Cukur Hanlon\u0026rdquo; Hari ini saya ingin menulis tentang ide dengan nama yang sedikit aneh yang disebut \u0026ldquo;Pisau Cukur Hanlon\u0026rdquo;. Hanya mendengar namanya mungkin membuat Anda berpikir, \u0026ldquo;Itu kedengarannya menakutkan\u0026hellip;\u0026rdquo;, tetapi sebenarnya ini adalah konsep yang sangat akrab yang memberi kita perspektif yang baik.\nPernahkah Anda berpikir, \u0026ldquo;Orang itu mungkin membenciku\u0026hellip;\u0026rdquo;? Misalnya, pernahkah Anda memiliki pengalaman ini?\n・Balasan lambat di LINE ・Kita saling menatap tetapi saya tidak disapa ・Permintaan saya diabaikan\nDi saat-saat seperti itu, Anda mungkin khawatir dan berpikir, \u0026ldquo;Apakah saya dibenci?\u0026rdquo; Ini sering terjadi pada saya. Dan saya menjadi sedih sendiri.\nApa itu Pisau Cukur Hanlon? Di sinilah \u0026ldquo;Pisau Cukur Hanlon\u0026rdquo; berperan.\nIstilah ini aslinya dalam bahasa Inggris adalah \u0026ldquo;Hanlon\u0026rsquo;s Razor\u0026rdquo;. Maknanya secara kasar seperti ini:\n\u0026ldquo;Jangan pernah mengaitkan dengan kebencian apa yang cukup dijelaskan oleh kebodohan.\u0026rdquo;\n\u0026hellip;Itu cara yang agak kasar untuk mengatakannya. Untuk mengatakannya sedikit lebih lembut:\n\u0026ldquo;Bahkan jika orang lain tampaknya bertindak jahat, itu mungkin hanya kesalahan atau kecerobohan.\u0026rdquo;\nItulah idenya.\nSiapa yang mengatakannya? Siapa Robert J. Hanlon? Istilah ini konon pertama kali muncul dalam sebuah buku yang diterbitkan pada tahun 1980 berjudul \u0026ldquo;Murphy’s Law Book Two\u0026rdquo;.\nIde yang diajukan oleh salah satu penulis, Robert J. Hanlon , digunakan sebagaimana adanya, dan kemudian dikenal sebagai \u0026ldquo;Pisau Cukur Hanlon\u0026rdquo;.\nOmong-omong, \u0026ldquo;Pisau Cukur (Razor)\u0026rdquo; ini seperti alat filosofis yang berarti \u0026ldquo;mari kita singkirkan hal-hal yang tidak perlu dan berpikir sederhana\u0026rdquo;, sebuah frasa yang digunakan untuk mengatur pemikiran, bersama dengan pisau cukur Occam.\nBerpikir \u0026ldquo;Ada niat buruk\u0026rdquo; itu melelahkan Misalnya, saat email Anda diabaikan di tempat kerja.\nBerpikir \u0026ldquo;Mengapa mereka tidak membalas? Apakah mereka membenci saya?\u0026rdquo; membuat Anda semakin negatif, bukan.\nNamun, jika Anda memikirkannya baik-baik, ・Tidak sengaja terlewat ・Menulis balasan tetapi tidak mengirimkannya ・Pemberitahuan terkubur di ponsel pintar mereka\nAlasan seperti itu sangat umum. Dan kita sendiri juga melakukan kesalahan seperti itu.\nAneh rasanya bagaimana kita toleran terhadap kesalahan kita tetapi keras pada orang lain Misalnya, saat Anda lupa membalas pesan LINE teman.\nAnda menjawab, \u0026ldquo;Oh, maaf! Saya tidak melihat pemberitahuannya~\u0026rdquo; tanpa niat buruk, bukan?\nTetapi saat orang lain melakukan hal yang sama kepada Anda, Anda berpikir \u0026ldquo;Saya diabaikan\u0026rdquo;.\nIni sering terjadi. Orang-lang sangat memahami keadaan mereka sendiri, tetapi sulit untuk melihat keadaan orang lain.\nMengasumsikan \u0026ldquo;ada niat buruk\u0026rdquo; sebenarnya merugikan Saat seseorang melakukan sesuatu, mengasumsikan bahwa mereka memiliki \u0026ldquo;niat buruk\u0026rdquo; membuat Anda menjadikan orang itu musuh di hati Anda.\nTetapi sebenarnya, mungkin mereka hanya kikuk, atau mungkin mereka kewalahan dengan hal-hal lain.\nTentu saja, ada orang yang benar-benar kasar, dan wajar jika merasa terluka jika Anda diperlakukan dengan buruk.\nTetapi, lebih baik tidak berasumsi bahwa itu \u0026ldquo;pasti niat buruk\u0026rdquo;, hati Anda akan menjadi sedikit lebih ringan.\nMeskipun begitu, itu tidak berarti Anda harus menahan semuanya Tolong jangan salah paham, saya tidak bermaksud mengatakan \u0026ldquo;Anda terlalu mengkhawatirkan segalanya\u0026rdquo;.\nSaat seseorang melakukan sesuatu yang buruk, tidak apa-apa untuk berpikir \u0026ldquo;Itu mengerikan\u0026rdquo;.\nNamun, alih-alih berasumsi \u0026ldquo;Orang itu pemarah\u0026rdquo; atau \u0026ldquo;Mereka mencoba menyakiti saya dengan sengaja\u0026rdquo;,\nSaya sarankan mungkin ada baiknya untuk sedikit lebih pemaaf dan berpikir, \u0026ldquo;Mungkin ada suatu keadaan\u0026rdquo;.\nJadi: Hanya dengan melihat sedikit lebih baik dapat mengubah dunia Saya pikir Pisau Cukur Hanlon lebih merupakan \u0026ldquo;cara untuk melindungi hati Anda\u0026rdquo; daripada \u0026ldquo;bersikap baik kepada orang-orang\u0026rdquo;.\nSaat Anda merasakan niat buruk dalam tindakan seseorang, perasaan Anda sendiri juga menjadi tegang.\nNamun, jika Anda dapat berpikir, \u0026ldquo;Mungkin itu hanya kesalahan, atau mereka tidak punya waktu\u0026rdquo;, Anda akan merasa sedikit lebih lega.\nDengan cara itu, ini adalah ide yang dapat Anda gunakan untuk diri sendiri.\nTerakhir: Silakan bagikan pengalaman Anda juga Terima kasih banyak telah membaca.\nJika Anda memiliki cerita di mana Anda berpikir, \u0026ldquo;Saya merasa terganggu di saat seperti ini~\u0026rdquo;, tolong beri tahu saya.\nHanya dengan mengungkapkan pengalaman Anda dengan kata-kata dapat membuat hati Anda terasa sedikit lega, bukan.\nSampai jumpa!\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/id/p/pisau-cukur-hanlon/","title":"Pisau Cukur Hanlon"},{"content":"Pengetahuan Dasar Komputer Halaman ini menjelaskan apa itu komputer.\nDefinisi Komputer Komputer adalah mesin yang memiliki lima perangkat berikut.\nPerangkat input (masukan) Perangkat output (keluaran) Perangkat penyimpanan (memori) Perangkat kontrol (pengendali) Perangkat aritmatika Secara kasar, komputer adalah mesin yang menerima input tertentu, melakukan pemrosesan tertentu, dan mengeluarkan hasilnya. Ia dapat menyimpan data yang dimasukkan, menghitung, dan mengeluarkan data tersebut. Perangkat kontrol memiliki peran untuk mengendalikan keempat perangkat yang disebutkan sebelumnya.\nApa yang dibutuhkan untuk menjalankan komputer Untuk menjalankan komputer, selain perangkat keras (hardware), program (software) juga diperlukan.\nProgram memberi tahu komputer pemrosesan apa yang harus dilakukan. Program ditulis dalam format yang dapat dipahami oleh komputer.\nSebagai contoh program, terdapat hal berikut: Program untuk mencari jumlah dari 1 hingga bilangan bulat yang dimasukkan\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() { // Mengalokasikan ruang memori yang diperlukan int n, sum = 0; // Output cout \u0026lt;\u0026lt; \u0026#34;Masukkan bilangan bulat: \u0026#34;; // Input cin \u0026gt;\u0026gt; n; // Perhitungan for (int i = 1; i \u0026lt;= n; i++) { // Perhitungan sum += i; } // Output cout \u0026lt;\u0026lt; \u0026#34;Jumlah dari 1 hingga \u0026#34; \u0026lt;\u0026lt; n \u0026lt;\u0026lt; \u0026#34; adalah \u0026#34; \u0026lt;\u0026lt; sum \u0026lt;\u0026lt; \u0026#34;.\u0026#34; \u0026lt;\u0026lt; endl; // Selesai return 0; } Program diubah menjadi bahasa mesin oleh kompilator dan diubah menjadi format yang dapat dieksekusi oleh komputer.\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/id/p/pengetahuan-dasar-komputer/","title":"Pengetahuan Dasar Komputer"},{"content":"Aplikasi iOS yang Direkomendasikan 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/id/p/aplikasi-ios-yang-direkomendasikan/","title":"Aplikasi iOS yang Direkomendasikan"},{"content":"Sepasang Suami Istri Tua, Seekor Keledai, dan Masalah Kita tentang \u0026ldquo;Siapa yang Harus Didengarkan\u0026rdquo; Halo semuanya!\nHari ini saya ingin menulis tentang sesuatu yang sedikit saya pikirkan dari \u0026ldquo;Kisah Sepasang Suami Istri Tua dan Seekor Keledai\u0026rdquo;.\nSaya yakin banyak dari Anda yang pernah mendengarnya. Itu adalah fabel yang terkenal.\nApa itu \u0026ldquo;Kisah Sepasang Suami Istri Tua dan Seekor Keledai\u0026rdquo;? Dahulu kala, ada sepasang suami istri yang sudah tua dan seekor keledai.\nAwalnya, sang kakek menunggangi keledai, dan sang nenek berjalan kaki. Kemudian, seorang pejalan kaki berkata:\n\u0026ldquo;Pria macam apa itu, membiarkan istrinya yang sudah tua berjalan kaki sementara dia sendiri yang menungganginya!\u0026rdquo;\nMendengar hal itu, pasangan tua itu memutuskan bahwa kali ini sang nenek yang akan menunggangi keledai. Kemudian, orang lain berkata:\n\u0026ldquo;Sungguh keterlaluan, seorang wanita menunggang keledai dan menyuruh seorang pria berjalan kaki!\u0026rdquo;\nKalau begitu, kali ini mereka berdua menunggangi keledai. Lalu mereka diberitahu lagi:\n\u0026ldquo;Kasihan sekali keledai itu, terlalu berat ditumpangi dua orang!\u0026rdquo;\nKalau begitu, mereka berdua turun dari keledai dan mulai berjalan. Tapi kali ini\u0026hellip;\n\u0026ldquo;Mengapa tidak ada yang menungganginya padahal ada keledai?\u0026rdquo;\nPada akhirnya, pasangan tua itu benar-benar bingung harus berbuat apa.\n\u0026ldquo;Mari kita dengarkan pendapat semua orang\u0026rdquo; memang argumen yang masuk akal. Tapi\u0026hellip; Kisah ini sering kali dianggap sebagai pelajaran yang mengatakan, \u0026ldquo;Ah, jika kamu hanya memedulikan apa yang dipikirkan orang lain, itu tidak akan ada akhirnya.\u0026rdquo;\nNamun kenyataannya tidak sesederhana itu.\nSering kali ada orang yang berkata, \u0026ldquo;Jangan pedulikan apa yang dipikirkan orang lain!\u0026rdquo;\nNamun jika ditanya apakah kamu bisa mengabaikan semuanya, itu agak sulit. Misalnya, saat memposting sesuatu di media sosial. Saat memikirkan apa yang harus dibicarakan di pesta minum perusahaan. Kamu pasti akan mengkhawatirkan reaksi seseorang.\nItu karena \u0026ldquo;pendapat orang lain\u0026rdquo; terkadang berkaitan dengan keselamatan dan penilaian kita.\nNamun, jika kamu terlalu terpengaruh, itu akan menjadi menyakitkan Saya pikir pasangan tua dalam cerita ini pada awalnya hanya berpikir, \u0026ldquo;Apa yang harus kita lakukan?\u0026rdquo;\nNamun sejauh apa pun kamu bertindak, akan ada \u0026ldquo;seseorang\u0026rdquo; yang mengeluh.\nLalu mereka mulai berputar-putar, \u0026ldquo;Baiklah, ayo kita lakukan ini selanjutnya\u0026rdquo; atau \u0026ldquo;Apakah kita harus melakukan itu?\u0026rdquo; dan sebelum kamu menyadarinya, kamu kehilangan arah tentang apa yang ingin kamu lakukan.\nIni adalah cerita yang sering terjadi dalam kehidupan kita sehari-hari juga.\nEkspektasi atasan, perkataan orang tua, jumlah \u0026ldquo;suka\u0026rdquo; di media sosial. Sambil menyesuaikan diri dengan hal-hal tersebut, pernahkah kamu kehilangan pemahaman tentang apa yang sebenarnya ingin kamu lakukan?\nSangat penting untuk memilih \u0026ldquo;siapa yang harus didengarkan\u0026rdquo; Jadi, apa yang harus kita lakukan? Yah, tidak ada jawaban yang benar.\nNamun, secara praktis mustahil untuk \u0026ldquo;mengikuti pendapat semua orang\u0026rdquo;.\nItulah mengapa saya pikir penting untuk memilih sendiri \u0026ldquo;siapa yang harus didengarkan\u0026rdquo;.\nMisalnya, \u0026ldquo;hanya dengarkan nasihat orang yang kamu hormati\u0026rdquo; atau \u0026ldquo;gunakan sebagai standar apakah kamu dapat meyakinkan dirimu di masa lalu\u0026rdquo;.\nBahkan jika itu hanya satu standar yang membuatmu berpikir, \u0026ldquo;Saya ingin mempercayai ini\u0026rdquo;, kebisingan dunia akan sedikit berkurang.\nJadi, ketika kamu merasa sedikit lelah Mungkin ada baiknya mengingat kisah \u0026ldquo;Sepasang Suami Istri Tua dan Seekor Keledai\u0026rdquo;.\nSangat mudah untuk mulai mengkhawatirkan apa yang dipikirkan orang lain, bukan?\nNamun, jika kamu merespons semua orang, pada akhirnya kamu juga akan turun dari keledai.\nTerkadang, jika kamu bisa berpikir, \u0026ldquo;Mungkin tidak apa-apa untuk memprioritaskan perasaanku sendiri\u0026rdquo;, kamu mungkin akan merasa hatimu sedikit lebih ringan.\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/id/p/kisah-sepasang-suami-istri-tua-dan-seekor-keledai/","title":"Kisah Sepasang Suami Istri Tua dan Seekor Keledai"},{"content":"Mengapa Hampir Mustahil Membuat LED Biru Pengenalan program dokumenter berbahasa Inggris. Sangat menarik. Saya memiliki kesan kuat bahwa orang Jepang yang memecahkan masalah yang sangat sulit ini awalnya tidak terlalu dihargai di Jepang.\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/id/p/mengapa-hampir-mustahil-membuat-led-biru/","title":"Mengapa Hampir Mustahil Membuat LED Biru"},{"content":"Memulai Pengembangan Qt di VSCode: Cara Menginstal Qt Extension Pack Halo, saya Kenji. Kali ini saya akan memperkenalkan \u0026ldquo;Cara mengatur lingkungan pengembangan Qt di Visual Studio Code (selanjutnya disebut VSCode)\u0026rdquo;.\nAkhir-akhir ini, selain Qt Creator resmi, semakin banyak orang yang ingin mengembangkan aplikasi Qt menggunakan VSCode yang ringan dan sangat dapat diperluas. Bagi Anda yang merasa demikian, saya merekomendasikan ** \u0026ldquo;Qt Extension Pack\u0026rdquo; **. Hanya dengan menginstal paket ekstensi ini, Anda akan mendapatkan semua ekstensi utama terkait Qt sekaligus.\nTarget Pembaca Mereka yang ingin mulai mengembangkan aplikasi GUI menggunakan Qt Mereka yang ingin mengembangkan menggunakan VSCode daripada Qt Creator Mereka yang merasa repot mencari ekstensi satu per satu Prasyarat VSCode sudah terinstal (Anda dapat mengunduhnya secara gratis dari situs web resmi) Pustaka inti Qt sudah terinstal (Situs web resmi Qt) Apa itu Qt Extension Pack? Qt Extension Pack adalah paket ekstensi untuk VSCode. Dengan menginstalnya, fitur-fitur berikut akan ditambahkan secara otomatis:\nDukungan file .ui (Qt Designer) Sorotan sintaks untuk file .pro dan file .qrc Penyelesaian kode C++ untuk Qt, pembuatan, dan dukungan debugging Qt Resource Browser (referensi sumber daya) Langkah-langkah Instalasi 1. Buka VSCode Pertama, jalankan VSCode.\n2. Buka Tampilan Ekstensi Klik bilah aktivitas di sebelah kiri (ikon blok persegi) untuk menampilkan \u0026ldquo;Ekstensi\u0026rdquo;.\nAtau Anda dapat menekan pintasan Ctrl + Shift + X.\n3. Cari \u0026ldquo;Qt Extension Pack\u0026rdquo; Masukkan kata kunci berikut di bilah pencarian:\n1 Qt Extension Pack 4. Klik Tombol Instal Setelah paket yang dituju muncul, klik tombol \u0026ldquo;Instal\u0026rdquo;. Ini akan menginstal beberapa ekstensi berikut sekaligus:\nQt Language Support QML Support Qt Designer Integration CMake Tools (wajib untuk pengembangan Qt berbasis CMake) Tambahan Pengaturan Proyek (Contoh CMake + Qt) Jika Anda menggunakan Qt berbasis CMake, kami merekomendasikan kombinasi dengan ekstensi berikut:\nCMake Tools CMake Language Support Selain itu, jika Anda menambahkan deskripsi berikut ke CMakeLists.txt, integrasi dengan Qt akan menjadi lancar:\n1 2 find_package(Qt6 REQUIRED COMPONENTS Widgets) target_link_libraries(MyApp PRIVATE Qt6::Widgets) Bonus: Bagaimana cara membuka file .ui? File .ui dapat diedit di Qt Designer. Di VSCode, Anda dapat mengklik kanan file .ui → pilih Open with Qt Designer (Qt Designer harus disertakan dalam variabel lingkungan PATH).\nKesimpulan Langkah Deskripsi 1 Jalankan VSCode 2 Buka panel Ekstensi 3 Cari \u0026ldquo;Qt Extension Pack\u0026rdquo; 4 Klik tombol Instal Membangun lingkungan Qt di VSCode kini jauh lebih mudah dari sebelumnya. Ia memiliki fitur yang cukup untuk menjadi alternatif bagi Qt Creator, dan disarankan bagi mereka yang ingin bekerja dengan ringan.\nKumpulan Tautan yang Disarankan Situs resmi Qt Qt Extension Pack - Visual Studio Marketplace Situs resmi VSCode Ekstensi CMake Tools Akhir Kata Ke depannya, saya berencana untuk terus mengembangkan menggunakan alat UI Qt dan QML di lingkungan ini. Lain kali, saya berencana untuk menjelaskan ** cara membangun \u0026amp; menjalankan aplikasi Hello World di Qt dari VSCode **.\nSampai jumpa!\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/id/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":"Saya Mencoba Menginstal Qt Extension Pack di Visual Studio Code"},{"content":"Cara Memeriksa Apakah iPhone Anda Terkunci SIM Layar Utama ＞ Pengaturan ＞ Umum ＞ Mengenai ＞ Kunci Penyedia Layanan\nPeriksa apakah tampilannya menunjukkan Tidak ada pembatasan SIM atau SIM terkunci.\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/id/p/cara-memeriksa-apakah-iphone-anda-terkunci-sim/","title":"Cara Memeriksa Apakah iPhone Anda Terkunci SIM"},{"content":"Ringkasan 1 Kelas P adalah kelas masalah yang dapat diputuskan dalam waktu polinomial pada mesin Turing deterministik, dan kelas NP adalah kelas masalah di mana, ketika diberikan bukti bahwa jawabannya adalah Ya (disebut Saksi), kebenaran Saksi tersebut dapat diverifikasi dalam waktu polinomial (ini disebut verifikasi). Karena masalah yang dapat diputuskan dalam waktu polinomial dapat diverifikasi dalam waktu polinomial, jelas bahwa P⊆NP, namun belum jelas apakah P merupakan himpunan bagian sejati dari NP. Walaupun belum ada buktinya, banyak peneliti percaya bahwa P≠NP. Dugaan bahwa kelas P dan kelas NP tidak sama disebut \u0026#34;Dugaan P≠NP\u0026#34;. Situs referensi : https://daigakudenki.com/np-hard/\n","date":"2024-09-11T02:22:39+09:00","permalink":"http://kenji.blog/id/p/pnp%E4%BA%88%E6%83%B3/","title":"Dugaan P≠NP"},{"content":"Saya Kembali Menerima Penghargaan Microsoft MVP (2024-2025) Halo, saya kenji. Saya ingin mengabarkan bahwa tahun ini saya kembali menerima penghargaan Microsoft MVP (Most Valuable Professional). Ini adalah penghargaan ke-8 saya.\nKarena ini adalah kesempatan yang bagus, saya ingin menulis sedikit tentang apa itu MVP.\nApa itu Microsoft MVP? Meskipun disebut MVP, ini bukan tentang pemain terbaik dalam olahraga (kadang saya ditanya tentang hal ini\u0026hellip;). Microsoft MVP (Most Valuable Professional) adalah gelar yang diberikan kepada orang-orang yang secara aktif membagikan pengetahuan dan pengalaman mereka terkait teknologi Microsoft kepada komunitas.\nMenulis blog teknologi, menjawab pertanyaan di situs Q\u0026amp;A, mempublikasikan kode sampel, menjadi pembicara di acara. Aktivitas yang gigih seperti \u0026ldquo;berbagi apa yang Anda ketahui dalam bentuk yang bermanfaat bagi orang lain\u0026rdquo; – itulah yang dievaluasi.\nAda pemenang di seluruh dunia, tetapi jumlahnya terbatas setiap tahun, dan tidak mudah untuk menerima penghargaan ini kembali. Dalam keadaan seperti itu, saya sangat bersyukur bisa kembali diakui.\nTentang Alasan Menerima Penghargaan Penghargaan kali ini adalah penghargaan kembali dalam kategori \u0026ldquo;Developer Technologies\u0026rdquo;. Selama setahun terakhir, saya melakukan aktivitas seperti ini:\nMenulis blog tentang teknologi terkait Microsoft Memposting jawaban di situs Q\u0026amp;A teknis Mempublikasikan kode sampel di GitHub Berbicara di kelompok belajar dan acara teknologi, dll. Tidak ada yang istimewa dari semua ini, tetapi saya secara sadar mencoba membagikan \u0026ldquo;hal-hal yang saya coba dan berhasil\u0026rdquo; serta \u0026ldquo;hal-hal yang membuat saya tersandung tetapi berhasil dipecahkan\u0026rdquo; dalam bentuk yang mungkin berguna, sekecil apa pun.\nSaya benar-benar senang bahwa ini telah membuahkan hasil seperti ini.\nTentang Masa Depan Dunia teknologi bergerak sangat cepat, dan hanya untuk mengikutinya saja sudah sulit. Namun justru karena itu, saya merasa ada artinya berbagi \u0026ldquo;informasi langsung\u0026rdquo; seperti bagaimana rasanya saat benar-benar digunakan, apa yang sulit dipahami.\nSaya akan terus melanjutkannya tanpa memaksakan diri, dengan kecepatan saya sendiri. Saya akan senang jika bisa menyampaikan informasi yang membuat seseorang berpikir, \u0026ldquo;Ah, itu membantu,\u0026rdquo; dalam bentuk apa pun.\nSaya menantikan dukungan Anda yang berkelanjutan di masa depan.\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/id/p/saya-kembali-menerima-penghargaan-microsoft-mvp-2024-2025/","title":"Saya Kembali Menerima Penghargaan Microsoft MVP (2024-2025)"},{"content":"Apa itu yt-dlp yt-dlp adalah alat baris perintah untuk mengunduh video YouTube. Selain mengunduh video, Anda juga dapat mengunduhnya sebagai file musik dalam format mp3.\nMengunduh dan Menginstal Unduh yt-dlp.exe terbaru dari halaman rilis yt-dlp. Tempatkan yt-dlp.exe di folder mana pun. Tambahkan jalur folder yt-dlp.exe ke variabel lingkungan Path. Cara Menggunakan Jalankan yt-dlp.exe di command prompt dan tentukan URL video YouTube.\n1 yt-dlp.exe \u0026#34;https://www.youtube.com/watch?v=VIDEO_ID\u0026#34; ※ Argumennya juga bisa hanya bagian VIDEO_ID saja.\nJika Anda ingin mengunduhnya sebagai file musik mp3, jalankan perintah berikut.\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; Sekarang, video akan diunduh ke direktori tempat Anda menjalankan perintah tersebut.\nSelesai.\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/id/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":"Cara mengunduh video YouTube menggunakan yt-dlp.exe"},{"content":" Sepak bola - Anak Gawang @gg211204 『Hari dimana anak gawang menjadi pahlawan』 Anak gawang yang menyelamatkan tim pada hari itu kemudian diundang ke klub dan makan bersama para pemain. #Tottenham #Spurs #Mourinho #AnakGawang ♬ 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/id/p/tautan-video-pendek/","title":"Tautan Video Pendek"},{"content":"Halo semuanya!\nHari ini, saya ingin berbicara tentang kutipan dari Albert Einstein.\nDunia tidak menghargai perbuatan baik Anda? 1 2 3 4 5 6 Dunia tidak akan pernah menghargai sejuta kebaikan yang Anda lakukan. Tetapi mereka akan mengkritik Anda untuk satu kesalahan yang Anda perbuat... Namun, jangan berkecil hati \u0026#34;Selalu bangkit di atas semua tawa dan kritik. Tetaplah kuat.\u0026#34; - Albert Einstein Kata-kata ini konon diucapkan oleh Einstein. Hal ini dengan tajam menunjukkan kerasnya masyarakat yang kita rasakan setiap hari dan bias dalam penilaian orang-orang.\nMeskipun begitu, teruslah bangkit \u0026ldquo;Selalu bangkit di atas semua tawa dan kritik. Tetaplah kuat.\u0026rdquo;\nKelanjutan dari kutipan ini dapat dianggap sebagai jawaban Einstein terhadap kenyataan pahit yang disebutkan di atas. Hal ini mengajarkan kita pentingnya untuk tidak menyerah pada kritik atau ejekan, dan terus bergerak maju dengan percaya pada diri sendiri.\nMenerapkan ajaran Einstein dalam kehidupan sehari-hari Kutipan ini sangat berkaitan erat dengan kehidupan sehari-hari kita. Misalnya, upaya Anda di tempat kerja mungkin tidak diakui, dan hanya kesalahan kecil yang menonjol. Atau mungkin pernyataan Anda di media sosial sebagian dipotong dan dikritik.\nDi saat-saat seperti itu, tolong ingat kata-kata Einstein ini. Sangat penting untuk mempertahankan keyakinan Anda sendiri daripada terpengaruh oleh penilaian orang lain.\nKesimpulan Kutipan dari Einstein ini mengajarkan kita pentingnya \u0026ldquo;hidup dengan percaya pada diri sendiri tanpa terpengaruh oleh penilaian orang lain\u0026rdquo;. Mari kita miliki keberanian untuk mengikuti jalan yang kita yakini tanpa menyerah pada kritik atau ejekan.\nTerakhir, kata-kata Einstein sekali lagi.\n** \u0026ldquo;Selalu bangkit di atas semua tawa dan kritik. Tetaplah kuat.\u0026rdquo; **\nSaya berharap kata-kata ini bergema di hati Anda dan menginspirasi Anda untuk mengambil langkah positif ke depan.\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/id/p/kutipan-albert-einstein/","title":"Kutipan Albert Einstein"},{"content":"Berikut ini adalah kode sederhana dalam bahasa C untuk menghasilkan bilangan prima dalam rentang yang ditentukan. Dalam contoh ini, kita mencantumkan bilangan prima dari 1 hingga n.\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;Masukkan nilai maksimum rentang untuk menghasilkan bilangan prima: \u0026#34;); scanf(\u0026#34;%d\u0026#34;, \u0026amp;n); printf(\u0026#34;Bilangan prima dari 1 hingga %d adalah sebagai berikut:\\n\u0026#34;, n); printPrimes(n); return 0; } Kode ini bekerja sebagai berikut:\nFungsi isPrime: Menentukan apakah angka yang diberikan adalah bilangan prima. Demi efisiensi, pertama-tama diperiksa apakah habis dibagi 2 dan 3, dan kemudian dilanjutkan dengan memeriksa kelipatan 6. Fungsi printPrimes: Mencetak bilangan prima dalam rentang yang ditentukan. Angka 2 dicetak terlebih dahulu, dan kemudian hanya bilangan ganjil yang diperiksa. Fungsi main: Meminta pengguna untuk memasukkan nilai maksimum rentang, dan mencetak bilangan prima dalam rentang tersebut. Saat kode ini dikompilasi dan dijalankan, bilangan prima dalam rentang yang ditentukan akan ditampilkan.\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/id/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/","title":"Kode Bahasa C untuk Menghasilkan Bilangan Prima"},{"content":"\nAkiko Yosano \u0026ldquo;Janganlah Engkau Mati\u0026rdquo;\n―― Meratapi adikku di pasukan pengepungan Port Arthur\nAh adikku, aku menangis untukmu, Janganlah engkau mati, Karena engkau lahir paling akhir Kasih sayang orang tua lebih besar kepadamu, Apakah orang tua memberi pisau di tanganmu Dan mengajarkanmu untuk membunuh orang? Apakah mereka membesarkanmu hingga usia dua puluh empat Hanya untuk membunuh orang dan mati?\nEngkau adalah tuan yang bangga akan rumah tua Seorang pedagang di jalanan Sakai Dan karena engkau mewarisi nama orang tuamu, Janganlah engkau mati, Bahkan jika kastil Port Arthur runtuh, Atau tidak runtuh, apa pedulimu? Engkau tidak tahu, bukan? Hal itu tidak ada dalam tradisi keluarga pedagang.\nJanganlah engkau mati, Kaisar tidak pergi Ke medan perang sendiri, Apakah dia menyuruh orang saling menumpahkan darah, Mati di jalan binatang buas, Dan menganggap kematian sebagai kehormatan manusia? Dengan hatinya yang agung, Bagaimana mungkin dia berpikir demikian sejak awal?\nAh adikku, di medan pertempuran Janganlah engkau mati, Ibu kita yang ditinggalkan pada musim gugur lalu Oleh mendiang ayah, Di tengah kesedihannya, dengan pedih Putranya dipanggil pergi, ia menjaga rumah, Bahkan di zaman kekuasaan yang katanya damai ini Uban di rambut ibu semakin bertambah.\nMenangis tersungkur di balik tirai toko Istri mudamu yang rapuh, Apakah engkau melupakannya, atau memikirkannya? Pikirkanlah hati gadis Yang berpisah sebelum sepuluh bulan bersama, Di dunia ini engkau satu-satunya baginya Ah, kepada siapa lagi dia harus bergantung? Janganlah engkau mati.\n","date":"2024-07-25T13:16:47+09:00","permalink":"http://kenji.blog/id/p/janganlah-engkau-mati/","title":"Janganlah Engkau Mati"},{"content":"\n🔹 Ringkasan Tokoh Akiko Yosano (1878–1942) adalah seorang penyair, penulis, dan pemikir Jepang yang aktif dari akhir zaman Meiji hingga awal zaman Showa. Ia sangat dikenal karena karya-karya tanka-nya yang penuh gairah dan unik, dan merupakan tokoh yang membuka cakrawala baru bagi kemandirian perempuan dan ekspresi cinta dalam sastra Jepang modern.\nNama asli : Yosano (nama gadis: Otori) Sho\nTempat lahir : Sakai (Kota Sakai, Prefektur Osaka)\nSuami : Yosano Tekkan (Penyair)\nPeriode aktivitas utama : Akhir Meiji hingga awal Showa\nKarakteristik :\nMenarik perhatian dengan tanka yang secara blak-blakan mengungkapkan perasaan romantis perempuan Memiliki ideologi feminis, mempromosikan pendidikan dan kemandirian perempuan Menunjukkan sikap pasifis dengan mengkritik Perang Rusia-Jepang Anggota inti majalah sastra \u0026ldquo;Myojo\u0026rdquo; 🔹 Karya Utama, Sinopsis, dan Karakteristik 1. \u0026ldquo;Midaregami\u0026rdquo; (1901) Ringkasan : Buku kumpulan puisi pertama. Diterbitkan saat ia berusia awal 20-an, memberikan dampak besar pada dunia sastra Jepang. Karakteristik : Mengungkapkan perasaan romantis dan hasrat fisik secara jujur dari sudut pandang perempuan. Puisi terkenal : Tanpa menyentuh Darah panas dari kulit lembutku, Tidakkah kau merasa kesepian, mengajarkan Jalan?\n→ Menjadi topik pembicaraan karena mengekspresikan pandangan tentang cinta, yang dianggap berani menurut moralitas saat itu, melalui kata-kata perempuan itu sendiri.\n2. \u0026ldquo;Kumohon Jangan Mati\u0026rdquo; (1904) Format : Puisi (puisi bebas, bukan tanka) Isi : Puisi anti-perang yang ditujukan kepada adik laki-lakinya yang dikirim ke Perang Rusia-Jepang. Kutipan sebagian : Kumohon jangan mati Karena engkau lahir paling akhir Air mata ibu berlinang Sambil memeras lengan bajumu\u0026hellip;\nSignifikansi : Revolusioner karena menyerukan anti-perang dari posisi seorang perempuan yang mengkhawatirkan kematian saudara laki-lakinya, di saat kecenderungan untuk mengagungkan perang sedang kuat. 🔹 Pengaruh dan Evaluasi Terlibat dalam kegiatan yang progresif secara sosial seperti emansipasi perempuan, pasifisme, dan penyebaran pendidikan. Di tahun-tahun terakhirnya, ia mendedikasikan dirinya untuk pendidikan anak perempuan dan terlibat dalam pendirian universitas perempuan (seperti Institut Kebudayaan). Salah satu intelektual dan sastrawati perempuan terpenting di Jepang sebelum perang. 🔹 Kesimpulan Item Konten Nama Akiko Yosano Bidang Aktivitas Tanka, puisi, kritik, pendidikan Karya Utama \u0026ldquo;Midaregami\u0026rdquo;, \u0026ldquo;Kumohon Jangan Mati\u0026rdquo; Karakteristik Kebebasan cinta, kemandirian perempuan, ekspresi pasifisme Pengaruh Modern Sastra feminis, inovasi tanka modern, pelopor puisi anti-perang ","date":"2024-07-25T13:08:36+09:00","permalink":"http://kenji.blog/id/p/tentang-akiko-yosano/","title":"Tentang Akiko Yosano"},{"content":"Pengantar Mathematica Menyelesaikan persamaan 1 Solve[x^2 - 3 x + 2 == 0, x] Output\n1 {{x -\u0026gt; 1}, {x -\u0026gt; 2}} Mencari solusi persamaan dalam rentang bilangan bulat 1 Solve[x^2 - 3 x + 2 == 0 \u0026amp;\u0026amp; 0 \u0026lt;= x \u0026lt;= 2, x, Integers] Output\n1 {{x -\u0026gt; 1}, {x -\u0026gt; 2}} Menyelesaikan sistem persamaan 1 Solve[{x + y == 3, x - y == 1}, {x, y}] Output\n1 {{x -\u0026gt; 2, y -\u0026gt; 1}} Menyelesaikan pertidaksamaan 1 Reduce[x^2 - 3 x + 2 \u0026gt; 0, x] Output\n1 x \u0026lt; 1 || x \u0026gt; 2 Diferensiasi 1 D[x^2, x] Output\n1 2 x Integrasi 1 Integrate[x^2, x] Output\n1 x^3/3 Mencari limit 1 Limit[1/x, x -\u0026gt; 0] Output\n1 Infinity Mencari deret 1 Sum[1/n^2, {n, 1, Infinity}] Output\n1 π^2/6 Membuat matriks 1 m = {{1, 2}, {3, 4}} Mencari perkalian matriks 1 m . m Output\n1 {{7, 10}, {15, 22}} Mencari matriks invers 1 Inverse[m] Output\n1 {{-2, 1}, {1.5, -0.5}} Mencari nilai eigen dan vektor eigen 1 Eigensystem[m] Output\n1 {{5, 0}, {{1, 1}, {1, -1}}} Mencari perkalian titik vektor 1 {1, 2} . {3, 4} Output\n1 11 Mencari perkalian silang vektor 1 Cross[{1, 2, 3}, {4, 5, 6}] Output\n1 {-3, 6, -3} Mencari besar vektor 1 Norm[{1, 2, 3}] Output\n1 √14 Mencari sudut vektor 1 ArcCos[{1, 2} . {3, 4}/(Norm[{1, 2}] Norm[{3, 4}])] Output\n1 ArcCos[11/(√5 √25)] Mencari proyeksi vektor 1 {1, 2} . {3, 4}/Norm[{3, 4}] {3, 4}/Norm[{3, 4}] Output\n1 {11/5, 22/5} Mencari rotasi vektor 1 RotationMatrix[π/2].{1, 0} Output\n1 {0, 1} Mencari translasi vektor 1 TranslationTransform[{1, 2}][{3, 4}] Output\n1 {4, 6} Mencari penskalaan vektor 1 ScalingTransform[{2, 3}][{1, 1}] Output\n1 {2, 3} Mencari refleksi vektor 1 ReflectionTransform[{1, 1}][{1, 1}] Output\n1 {0, 0} Menghasilkan bilangan acak 1 RandomReal[] Output\n1 0.123456 Menghasilkan bilangan acak (bilangan bulat) 1 RandomInteger[] Output\n1 123456 Menghasilkan bilangan acak (dengan rentang) 1 RandomReal[{1, 10}] Output\n1 5.6789 Menghasilkan bilangan acak (bilangan bulat, dengan rentang) 1 RandomInteger[{1, 10}] Output\n1 5 Menghasilkan bilangan acak (dengan distribusi) 1 RandomVariate[NormalDistribution[0, 1]] Output\n1 0.123456 Menghasilkan bilangan acak (distribusi, jumlah) 1 RandomVariate[NormalDistribution[0, 1], 10] Output\n1 {0.123456, 0.234567, ..., 0.987654} Menghasilkan bilangan acak (distribusi, jumlah, seed) 1 2 SeedRandom[12345] RandomVariate[NormalDistribution[0, 1], 10] Output\n1 {0.123456, 0.234567, ..., 0.987654} Menerapkan fungsi pada elemen array 1 2 3 Map[Sqrt, {1, 4, 9}] Sqrt /@ {1, 4, 9} Map[#^(1/2)\u0026amp;, {1, 4, 9}] Output\n1 {1, 2, 3} Mendefinisikan fungsi menggunakan ekspresi lambda 1 2 f = Function[x, x^2] f[3] Output\n1 9 Komposisi fungsi 1 2 3 4 f = Function[x, x^2] g = Function[x, x + 1] h = Function[x, f[g[x]]] h[3] Output\n1 16 Merujuk pada hasil perhitungan sebelumnya 1 % + 1 Output\n1 17 Fungsi murni 1 (#+3)\u0026amp;[5] Output\n1 8 Ekstraksi array 1 2 Select[{1, 2, 3, 4, 5}, EvenQ] Select[{1, 2, 3, 4, 5}, Mod[#,2]==0\u0026amp;] Output\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/id/p/mathematica%E5%85%A5%E9%96%80/","title":"Pengantar Mathematica"},{"content":"Apa itu Hugo Hugo adalah salah satu pembuat situs statis (static site generator). Ini memungkinkan Anda membuat situs web dengan mengubah file Markdown menjadi HTML. Hugo ditulis dalam bahasa Go dan berjalan sangat cepat.\nBlog ini juga dibuat menggunakan Hugo.\nInstalasi CLI Hugo Untuk menginstal CLI Hugo, jalankan perintah berikut.\n※ Ini adalah contoh untuk macOS. Untuk OS lain, silakan merujuk ke dokumentasi resmi.\n1 brew install hugo Anda dapat menginstalnya menggunakan Homebrew.\nDaftar Perintah Hugo Hugo menyediakan berbagai perintah. Berikut ini adalah ringkasan perintah yang sering digunakan.\nMembuat situs baru 1 hugo new site \u0026lt;Nama Situs\u0026gt; Perintah untuk membuat situs baru. Tentukan nama situs pada \u0026lt;Nama Situs\u0026gt;.\nMembuat artikel baru 1 hugo new \u0026lt;Nama Artikel\u0026gt;.md Perintah untuk membuat artikel baru. Tentukan nama artikel pada \u0026lt;Nama Artikel\u0026gt;.\nMemulai server 1 hugo server Perintah untuk memulai server lokal. Anda dapat mengaksesnya di http://localhost:1313.\nMembangun (Build) situs 1 hugo Perintah untuk membangun situs. File HTML akan dihasilkan di direktori public.\nMelakukan deploy 1 hugo deploy Perintah untuk men-deploy situs. Pengaturan deploy dikonfigurasi dalam file config.toml.\nMenampilkan daftar artikel 1 hugo list all Perintah untuk menampilkan daftar artikel.\nMemeriksa konfigurasi 1 hugo config Perintah untuk memeriksa konfigurasi.\nMenampilkan bantuan 1 hugo help Perintah untuk menampilkan bantuan.\nMenampilkan versi 1 hugo version Perintah untuk menampilkan versi.\nDemikianlah daftar perintah Hugo. Ada banyak perintah lain yang tersedia, jadi silakan merujuk ke dokumentasi resmi.\nReferensi Dokumentasi Resmi Hugo ","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/id/p/hugo%E3%82%B3%E3%83%9E%E3%83%B3%E3%83%89%E4%B8%80%E8%A6%A7/","title":"Daftar Perintah Hugo"},{"content":"Daftar Ekstensi Visual Studio Code yang Direkomendasikan Kategori Nama Penyedia Deskripsi Manajemen Virtual \u0026amp; Kontainer Remote Devlopment Microsoft Mendukung pengembangan jarak jauh dengan menghubungkan ke kontainer virtual/WSL melalui SSH Manajemen Virtual \u0026amp; Kontainer Docker Microsoft Mendukung manajemen kontainer Docker Manajemen Kode GitHub Pull Requests GitHub Mengelola Pull Request GitHub di VSCode Manajemen Kode GitHub Copilot GitHub Mendukung penyelesaian kode menggunakan AI Manajemen Kode Git Graph mhutchie Menampilkan cabang dan komit Git secara grafis Manajemen Kode Git History Don Jayamanne Menampilkan riwayat Git Browser \u0026amp; Pengembangan Web Debugger for Firefox Firefox DevTools Menggunakan debugger Firefox di VSCode Browser \u0026amp; Pengembangan Web Microsoft Edge Tool For VScode Microsoft Menggunakan alat pengembang Edge di VSCode Browser \u0026amp; Pengembangan Web Vue Language Features(Volar) Vue Mendukung fitur bahasa Vue Browser \u0026amp; Pengembangan Web JavaScript (ES6) code snippets charalampos karypidis Menyediakan potongan kode (snippet) JavaScript Browser \u0026amp; Pengembangan Web Tailwind CSS IntelliSense Tailwind Labs Menyediakan potongan kode (snippet) Tailwind CSS Pengembangan Cloud AWS Toolkit Amazon Web Services Mendukung pengembangan AWS Pengembangan Cloud Azure Tools Microsoft Mendukung pengembangan Azure Pengembangan Cloud Google Cloud Tools Google Cloud Mendukung pengembangan Google Cloud Database MySQL Jun Han Mendukung pengembangan MySQL Database SQL Server(mssql) Microsoft Mendukung pengembangan SQL Server Database PostgreSQL Chris Kolkman Mendukung pengembangan PostgreSQL Embedded Systems PlatformIO PlatformIO Mendukung pengembangan PlatformIO Embedded Systems Arduino Microsoft Mendukung pengembangan Arduino Embedded Systems WorkBench Particle Lingkungan pengembangan dari Particle yang mendukung pengembangan IoT termasuk firmware, pustaka, dan integrasi cloud C/C++ C/C++ Extension Pack Microsoft Mendukung pengembangan C/C++ C/C++ C/C++ Runner franneck94 Menjalankan kode C/C++ (mendukung kompiler gcc, msvc, cuda nvccc) C/C++ Cortex-Debug marus25 Mendukung debugging mikrokontroler Cortex-A/R/M Python Python Extension Pack Microsoft Mendukung pengembangan Python Python jupyter Microsoft Mendukung pengembangan Jupyter Notebook Utilitas \u0026amp; Ekstensi UI Makrdown All in One Yu Zhang Mendukung penulisan Markdown Utilitas \u0026amp; Ekstensi UI Hex Editor Microsoft Mengedit file biner Utilitas \u0026amp; Ekstensi UI vscode-pdf tomoki1207 Menampilkan file PDF Utilitas \u0026amp; Ekstensi UI Rainbow CSV mechatroner Menampilkan file CSV dengan warna-warni Utilitas \u0026amp; Ekstensi UI Draw.io Integration Henning Dieterichs Menggunakan Draw.io di VSCode Utilitas \u0026amp; Ekstensi UI Japanese Language Pack for Visual Studio Code Microsoft Paket pelokalan bahasa Utilitas \u0026amp; Ekstensi UI Live Share Microsoft Mendukung kolaborasi waktu nyata ","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/id/p/ekstensi-visual-studio-code-yang-direkomendasikan/","title":"Ekstensi Visual Studio Code yang Direkomendasikan"},{"content":"Apa itu mermaid.js mermaid.js adalah pustaka JavaScript yang memungkinkan Anda menulis sintaks khusus berbasis teks (Sintaks Mermaid) untuk menampilkan diagram kompleks secara grafis, seperti diagram alur, grafik, dan diagram Gantt. Ini juga digunakan di berbagai layanan seperti GitHub, Qiita, dan Notion. Kali ini, kita akan mencoba mengaktifkan penggunaan mermaid.js di hugo.\nMengaktifkan mermaid.js di hugo Langkah-langkahnya adalah sebagai berikut:\nTambahkan yang berikut ini ke layouts/partials/extend_footer.html. 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 hanya dimuat jika mermaid: true pada pernyataan if. Pustaka ini cukup besar, sekitar 3MB.\nBuat assets/js/load-mermaid.js. Proses ini digunakan untuk inisialisasi dan menggambar ulang saat tema dialihkan secara dinamis. 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); Kode asli didasarkan pada yang berikut ini:\nReinitialize with new theme #1945 Ubah proses pengalihan tema di 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;); } } } Buat 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; Sekarang mermaid.js siap digunakan.\nMenggunakan mermaid.js Tambahkan yang berikut ini ke definisi artikel 1 marmaid: true Tambahkan yang berikut ini ke isi artikel Diagram Alur\n1 2 3 4 5 6 {{\u0026lt;mermaid align=\u0026#34;center\u0026#34;\u0026gt;}} graph TD A[Mulai] --\u0026gt;|Kondisi 1| B(Kondisi 2) B --\u0026gt; C{Kondisi 3} C --\u0026gt;|Kondisi 4| D[Selesai] {{\u0026lt;/mermaid\u0026gt;}} Hasil\ngraph TD A[Mulai] --\u003e|Kondisi 1| B(Kondisi 2) B --\u003e C{Kondisi 3} C --\u003e|Kondisi 4| D[Selesai] Diagram Gantt\n1 2 3 4 5 6 7 8 9 10 11 12 {{\u0026lt;mermaid align=\u0026#34;center\u0026#34;\u0026gt;}} gantt section Project Definisi Persyaratan :done, a, 2024-05-25, 5d Desain Dasar :done, b, after a, 5d Desain Detail :done, c, after b, 5d Pembuatan :active, d, after c, 10d Pengujian Unit :crit, e, after d, 5d Pengujian Integrasi : f, after e, 5d Pengujian Sistem : g, after f, 5d Rilis :milestone, h, after g, 1d {{\u0026lt;/mermaid\u0026gt;}} Hasil\ngantt section Project Definisi Persyaratan :done, a, 2024-05-25, 5d Desain Dasar :done, b, after a, 5d Desain Detail :done, c, after b, 5d Pembuatan :active, d, after c, 10d Pengujian Unit :crit, e, after d, 5d Pengujian Integrasi : f, after e, 5d Pengujian Sistem : g, after f, 5d Rilis :milestone, h, after g, 1d Diagram Urutan\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: Masukkan ID/PW view-\u0026gt;\u0026gt;controller: Permintaan Autentikasi controller-\u0026gt;\u0026gt;model: Permintaan Autentikasi model-\u0026gt;\u0026gt;database: Permintaan Autentikasi database--\u0026gt;\u0026gt;model: Kembalikan Hasil model--\u0026gt;\u0026gt;controller: Kembalikan Hasil controller--\u0026gt;\u0026gt;view: Kembalikan Hasil view--\u0026gt;\u0026gt;user: Tampilkan Hasil {{\u0026lt;/mermaid\u0026gt;}} Hasil\nsequenceDiagram participant user participant view participant controller participant model participant database user-\u003e\u003eview: Masukkan ID/PW view-\u003e\u003econtroller: Kueri ajax controller-\u003e\u003emodel: Permintaan Autentikasi model-\u003e\u003edatabase: Terbitkan SQL database--\u003e\u003emodel: Kembalikan Hasil SQL model--\u003e\u003econtroller: Kembalikan Hasil Permintaan Autentikasi controller--\u003e\u003eview: Kembalikan Hasil Kueri ajax view--\u003e\u003euser: Tampilkan Hasil Autentikasi Itu saja.\nReferensi Situs resmi mermaid.js Situs demo untuk pratinjau sintaks mermaid ","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/id/p/mermaid.js%E3%82%92%E8%A9%A6%E3%81%97%E3%81%A6%E3%81%BF%E3%82%8B/","title":"Mencoba mermaid.js"},{"content":"Cara membatalkan git reset Jika Anda tidak sengaja menjalankan git reset setelah melakukan git commit, berikut ini adalah cara membatalkan git reset (cara memulihkan status saat git commit).\nPeriksa ID commit sebelum reset menggunakan git reflog Kembali ke status sebelum reset menggunakan git reset --hard HEAD@{angka} Demikianlah cara membatalkan git reset.\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/id/p/cara-membatalkan-git-reset/","title":"Cara membatalkan git reset"},{"content":"MS-DOS 4.0 Menjadi Open Source Microsoft telah merilis kode sumber untuk MS-DOS 4.0, yang dirilis sekitar 40 tahun lalu. Ini hampir sepenuhnya ditulis dalam kode assembly 8086.\nRepositori github https://github.com/microsoft/MS-DOS\nSitus Referensi MS-DOS 4.0 Menjadi Open Source ","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/id/p/ms-dos-4-0-open-source/","title":"MS-DOS 4.0 Menjadi Open Source"},{"content":" The Art of Readable Code Prinsip Pemrograman The Pragmatic Programmer Teknologi yang Mendukung Web Cara Membuat Aplikasi Web yang Aman Cara Kerja Jaringan Panduan Lengkap SQL dari Para Ahli Panduan Praktis Docker Panduan Lengkap Kubernetes CODE COMPLETE Edisi Kedua Clean Code: Keahlian Perangkat Lunak Agile Clean Architecture: Panduan Struktur dan Desain Perangkat Lunak Teknologi yang Harus Diketahui Sebelum Menjadi Pemrogram Game Being Geek Mengapa Kita Membangun dengan Berorientasi Objek ","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/id/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/","title":"Buku yang Direkomendasikan untuk Insinyur Pemula"},{"content":"Saya membuat templat kalender Excel (versi yang mendukung hari libur nasional)! Saya telah membuat templat Excel yang menampilkan hari libur di kalender untuk bulan tersebut saat Anda memasukkan tahun dan bulan.\nSilakan unduh dan gunakan. 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/id/p/templat-kalender-excel-versi-yang-mendukung-hari-libur/","title":"Templat Kalender Excel (Versi yang Mendukung Hari Libur Nasional)"},{"content":"※ Ini adalah langkah-langkah pengaturan untuk Windows 11.\nBuka Control Panel Pilih Power Options Klik \u0026ldquo;Choose what the power buttons do\u0026rdquo; Klik \u0026ldquo;Change settings that are currently unavailable\u0026rdquo; Hapus centang pada \u0026ldquo;Turn on fast startup (recommended)\u0026rdquo; Klik \u0026ldquo;Save changes\u0026rdquo; Referensi \\[Windows 10\\] Tolong beritahu saya cara menonaktifkan fast startup.\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/id/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/","title":"Cara Memperbaiki Pengaturan DPI yang Direset Setiap Kali Startup pada Multi-Monitor"},{"content":"Mendapatkan hanya versi terbaru dari repositori Anda dapat mengambil hanya versi terbaru dari repositori dengan perintah berikut. Ini berguna jika Anda ingin mengambil repositori dengan cepat untuk menghemat ruang disk.\n1 git clone --depth 1 \u0026lt;URL repositori\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/id/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/","title":"Mendapatkan hanya versi terbaru dari repositori git"},{"content":"Cara Mengatasi Pesan Kesalahan Berikut di GitHub Copilot GitHub Copilot berhenti berfungsi sekitar tanggal 19 April 2024. Pesan kesalahannya adalah sebagai berikut:\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;} Cara Mengatasi Tampaknya ini adalah bug pada ESET. Di pengaturan lanjutan ESET, matikan \u0026ldquo;Aktifkan SSL/TLS\u0026rdquo;. Referensi Tampaknya kesalahan yang sama juga terjadi pada AWS CDK.\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/id/p/cara-mengatasi-github-copilot-yang-tidak-dapat-digunakan-karena-kesalahan-sertifikat/","title":"Cara Mengatasi GitHub Copilot yang Tidak Dapat Digunakan Karena Kesalahan Sertifikat"},{"content":"\nPengenalan Vim Unduh dan Instal https://www.vim.org/download.php\nDari situs di atas, unduh dan instal modul sesuai dengan OS yang ingin Anda instal.\nUntuk Windows, sebaiknya pilih gvim_X.X.X_x64_signed.exe.\nCara Menjalankan Untuk Windows, folder yang berisi vim.exe perlu didaftarkan di Path pada variabel lingkungan.\nCara menjalankan\n1 vim Untuk menjalankan dengan menentukan nama file\n1 vim filename.txt Cara Keluar Untuk keluar, ketik : (titik dua), lalu ketik q, dan tekan Enter\n1 :q Jika Anda telah memperbarui file, pesan No write since last change (add ! to override) akan ditampilkan. Anda dapat membuang konten dan keluar secara paksa.\n1 :q! Untuk menyimpan file dan keluar\n1 :wq Hal berikut ini juga memiliki arti yang sama.\n1 :x Selain itu, Anda juga dapat keluar dengan menekan z dua kali sambil menahan Shift. (sama dengan :wq)\nMode Vim memiliki command mode (mode perintah) dan insert mode (mode penyisipan). Saat Vim dijalankan, itu akan berada di command mode, dan menekan tombol i akan beralih ke insert mode.\nDalam insert mode, Anda dapat mengetik seperti biasa. Untuk beralih dari insert mode ke command mode, tekan tombol ESC.\nFitur transisi mode ini adalah karakteristik dari Vim.\nGerakan Kursor dan Gulir Berikut adalah ringkasan pergerakan kursor dan gulir pada saat command mode.\nTombol Deskripsi h (atau Ctrl+H, BackSpace, ←) Pindah ke kiri j (atau Ctrl+J, N, ↓) Pindah ke bawah k (atau Ctrl+P, ↑) Pindah ke atas l (atau Space, →) Pindah ke kanan + (atau Enter) Pindah ke awal baris berikutnya - Pindah ke awal baris sebelumnya Ctrl+B (atau PageUp) Gulir ke atas Ctrl+F (atau PageDown) Gulir ke bawah Ctrl+U Setengah gulir ke atas Ctrl+D Setengah gulir ke bawah Ctrl+Y Gulir ke atas 1 baris Ctrl+E Gulir ke bawah 1 baris z Enter Gulir baris kursor ke bagian atas layar z . Gulir baris kursor ke tengah layar z - Gulir baris kursor ke bagian bawah layar 0 (atau |) Pindah kursor ke awal baris $ Pindah kursor ke akhir baris ^ (atau _) Pindah kursor ke awal baris (tidak termasuk spasi, Tab) G (atau :$) Pindah kursor ke baris terakhir :nomor baris Enter Pindah ke baris yang ditentukan Jika Anda memasukkan tombol gerakan di atas setelah angka, Anda dapat memindahkannya beberapa kali sesuai dengan angka tersebut. (Misalnya, mengetik 3j akan memindahkan Anda ke bawah 3 baris dari posisi kursor saat ini.)\nPerintah Lainnya Tombol Deskripsi Ctrl+L Gambar ulang layar Ctrl+G Tampilkan jumlah baris dari seluruh file, posisi kursor, dll. ","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/id/p/vim-introduction/","title":"Pengenalan Vim"},{"content":"Tentang kebutuhan untuk memanggil DestroyIcon Memanggil DestroyIcon diperlukan dalam kasus berikut:\nCreateIconFromResourceEx (jika dipanggil tanpa flag LR_SHARED) CreateIconIndirect CopyIcon Jika dibuat oleh fungsi-fungsi di atas.\nLoadIcon LoadImage (jika menggunakan flag LR_SHARED) CopyImage (jika menggunakan flag LR_COPYRETURNORG dan parameter hImage adalah ikon bersama) CreateIconFromResource CreateIconFromResourceEx (jika menggunakan flag LR_SHARED) Ikon yang dibuat dan dimuat dalam kasus di atas tidak boleh memanggil DestroyIcon.\nReferensi Fungsi DestroyIcon (winuser.h) ","date":"2024-04-19T01:55:17+09:00","permalink":"http://kenji.blog/id/p/loadicon%E3%81%AFdestroyicon%E3%82%92%E5%91%BC%E3%81%B3%E5%87%BA%E3%81%99%E5%BF%85%E8%A6%81%E3%81%AF%E3%81%AA%E3%81%84/","title":"LoadIcon tidak perlu memanggil DestroyIcon"},{"content":"Video Kuliah tentang AI Generatif \u0026ldquo;AI Generatif\u0026rdquo; (1) Profesor Masayuki Nakao, Universitas Tokyo 2023.9.8 \u0026ldquo;AI Generatif\u0026rdquo; (2) Profesor Kuniyoshi Sakai, Universitas Tokyo 2023.10.11 \u0026ldquo;AI Generatif\u0026rdquo; (3) Profesor Yutaka Matsuo, Universitas Tokyo 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/id/p/tentang-ai-generatif/","title":"Tentang AI Generatif"},{"content":"Membuat Kode QR dengan curl Catatan: Metode yang diperkenalkan akan mengembalikan kode QR yang dibuat di sisi server, sehingga log mungkin disimpan. Harap berhati-hati saat mengubah informasi rahasia seperti informasi pribadi menjadi kode QR.\nMetode 1 Ini adalah cara membuat kode QR di command prompt. qrenco.de mengembalikan respons berbasis teks.\n1 curl qrenco.de/kenji.blog Hasil output 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 █████████████████████████████ █████████████████████████████ ████ ▄▄▄▄▄ █ ▄ ▄ █ ▄▄▄▄▄ ████ ████ █ █ █ ▀▀▀██ █ █ ████ ████ █▄▄▄█ █▀▀█▀▄█ █▄▄▄█ ████ ████▄▄▄▄▄▄▄█▄▀ ▀ █▄▄▄▄▄▄▄████ ████▄ █▀▄ ▄▀█▄▀ ▀██▄▀ ▄████ ████▀▀▀█ ▄▄ ▄█▄█▀█▀▄██ ▀████ ████▄▄▄██▄▄█ █▀█ ▄██▀▀█ █████ ████ ▄▄▄▄▄ █▀█ ▀ ▄▀▄▄▄ ▀████ ████ █ █ █▄▄ ▄▀▄▀▄ ██ ▀████ ████ █▄▄▄█ █▀▀█ ▀▄▄▄ ▄▄██████ ████▄▄▄▄▄▄▄█▄▄███▄▄█▄███▄████ █████████████████████████████ █████████████████████████████ Referensi qrenco.de Metode 2 api.qrserver.com mengembalikan gambar.\n1 curl -o qr.png \u0026#34;https://api.qrserver.com/v1/create-qr-code/?size=150x150\u0026amp;data=HelloWorld\u0026#34; Hasil output Referensi 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/id/p/membuat-kode-qr-dengan-curl/","title":"Membuat Kode QR dengan curl"},{"content":"Daftar Pintasan Tombol Pintasan Deskripsi Ctrl + B Tebal Ctrl + I Miring Ctrl + U Garis bawah Ctrl + E Rata tengah Ctrl + L Rata kiri Ctrl + R Rata kanan Ctrl + ] Perbesar ukuran font Ctrl + [ Perkecil ukuran font Ctrl + C Salin Ctrl + V Tempel Ctrl + X Potong Ctrl + Z Urungkan Ctrl + Y Ulangi Ctrl + A Pilih semua Shift + tombol panah Pilih rentang Ctrl + F Cari teks Ctrl + H Ganti teks Ctrl + P Pratinjau cetak Ctrl + S Simpan dokumen F12 Simpan sebagai Ctrl + Home Pindah ke awal dokumen Ctrl + End Pindah ke akhir dokumen Referensi Pintasan Keyboard 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/id/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":"Daftar Pintasan Microsoft Word"},{"content":"Saya akan memperkenalkan ekstensi browser Edge \u0026ldquo;Pembaruan Tab Otomatis\u0026rdquo; yang memperbarui halaman web secara otomatis.\nInstalasi Pembaruan Tab Otomatis Pembaruan Tab Otomatis\nAkses situs di atas dan klik Instal.\nKlik Tambahkan ekstensi.\nCara Menggunakan Setelah instalasi selesai, sebuah ikon akan ditambahkan ke kanan atas Edge.\nBuka halaman web yang ingin Anda perbarui secara otomatis dan klik ikon untuk memulai pembaruan otomatis.\nBagian yang dibingkai hijau adalah interval pembaruan otomatis. Silakan pilih waktu untuk memperbarui secara otomatis.\nUntuk menghentikan pembaruan otomatis, klik ikon lalu klik 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/id/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":"Ekstensi Browser Pembaruan Otomatis Halaman Web (Add-on Edge)"},{"content":"Daftar Pintasan Visual Studio Saya telah menyusun daftar pintasan Visual Studio yang sering saya gunakan. Dengan mempelajari pengoperasian keyboard untuk pintasan Visual Studio, Anda dapat melakukan pekerjaan pengembangan dengan efisien. Silakan manfaatkan dengan baik.\n※ Dikonfirmasi di Visual Studio 2022.\nTombol Pintasan Deskripsi F1 Tampilkan bantuan untuk kata yang dipilih F2 Lompat ke markah buku Ctrl + F2 Daftarkan markah buku Ctrl + Shift + F2 Hapus semua markah buku F5 Bangun dan jalankan (dengan debug) Ctrl + F5 Bangun dan jalankan (tanpa debug) F7 Bangun F9 Tambahkan breakpoint ke baris kursor Ctrl + F9 Nonaktifkan breakpoint di baris kursor Shift + Ctrl + F9 Hapus semua breakpoint F10 Lewati F11 Masuk F12 Lompat ke definisi Ctrl + D Duplikat baris kursor Ctrl + X Potong baris jika tidak ada yang dipilih Ctrl + Shift + ] Pilih hingga tanda kurung yang cocok untuk kursor Alt + Panah Atas/Bawah Pindahkan baris kursor ke atas/bawah Alt + Shift + Panah Multi-kursor / pilihan kotak Ctrl + Tab Beralih tampilan kode sumber/jendela Ctrl + Shift + V Tampilkan riwayat papan klip Ctrl + K lalu Ctrl + C Jadikan baris kursor sebagai komentar Ctrl + K lalu Ctrl + U Hapus komentar pada baris kursor Ctrl + G Lompat ke nomor baris yang ditentukan Ctrl + F Cari Ctrl + Shift + F Pencarian global Ctrl + H Ganti Ctrl + Shift + F Penggantian global Ctrl + Tab Beralih tampilan kode sumber/jendela Ctrl + Space Penyelesaian kata Ctrl + Alt + L Buka jendela Solution Explorer Ctrl + Shift + E Buka jendela Resource View Ctrl + 0 lalu Ctrl + G Buka jendela komit Git Referensi Pintasan keyboard di 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/id/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/","title":"Daftar Pintasan Visual Studio"},{"content":"Kami akan menunjukkan cara menambahkan fungsi grep dari Hidemaru Editor ke menu klik kanan di File Explorer pada Windows 10/11.\n※ Harap perhatikan bahwa langkah-langkah berikut melibatkan modifikasi registry, jadi lakukan dengan risiko Anda sendiri.\nLangkah-langkah Buka tautan di bawah ini dan simpan ke folder mana saja. Registrasi_Registry_Hidemaru.reg\nKlik ganda file Registrasi_Registry_Hidemaru.reg untuk menambahkannya ke dalam registry. Referensi Menjalankan grep Hidemaru dari menu klik kanan folder ","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/id/p/menambahkan-grep-hidemaru-editor-ke-menu-klik-kanan-file-explorer/","title":"Menambahkan grep Hidemaru Editor ke menu klik kanan File Explorer"},{"content":"Tahukah Anda tentang paradoks ulang tahun? Saya akan menceritakan kisah yang sedikit aneh. Menurut Anda, berapa banyak orang yang harus berkumpul agar \u0026ldquo;probabilitas ada orang yang memiliki hari ulang tahun yang sama\u0026rdquo; menjadi tinggi?\nMisalnya, satu tahun memiliki 365 hari, jadi ketika dikatakan \u0026ldquo;jika 23 orang berkumpul, probabilitas ada orang yang berulang tahun sama adalah 50% atau lebih\u0026rdquo;\u0026hellip; rasanya sedikit bertentangan dengan intuisi, bukan?\nNamun ini benar-benar 50% atau lebih.\nMengapa hal seperti itu bisa terjadi? Fenomena ini disebut \u0026ldquo;paradoks ulang tahun\u0026rdquo;. Namanya memang \u0026ldquo;paradoks\u0026rdquo;, tetapi ada alasan matematis yang masuk akal.\nJika jumlah orang adalah \u0026ldquo;n\u0026rdquo;, maka probabilitas tidak ada orang yang ulang tahunnya sama dapat dihitung dengan rumus berikut:\n1 P(tidak ada yang sama) = 365/365 × 364/365 × 363/365 × ... × (365 - n + 1)/365 Dengan menguranginya dari 1, kita akan mendapatkan \u0026ldquo;probabilitas ulang tahun sama dengan seseorang\u0026rdquo;.\nMelihat hasilnya\u0026hellip; Jumlah Orang Probabilitas orang dengan ulang tahun sama 10 orang Sekitar 11.7% 20 orang Sekitar 41.1% 23 orang Sekitar 50.7% (Perhatikan di sini!) 30 orang Sekitar 70.6% 70 orang Luar biasa sekitar 99.9%! Dengan kata lain, dengan hanya 23 orang, ada kemungkinan lebih dari setengah bahwa ada orang yang berulang tahun pada hari yang sama. Sepertinya ini juga sangat berlaku di kelas sekolah atau rapat di tempat kerja.\nKesimpulan: Perbedaan antara intuisi dan matematika itu menarik \u0026ldquo;Paradoks ulang tahun\u0026rdquo; adalah contoh menarik di mana intuisi kita berbeda dengan probabilitas matematika yang sebenarnya. Jika Anda mengetahui hal-hal seperti ini, Anda mungkin bisa memeriahkan obrolan ringan atau kuis!\nTautan Referensi Paradoks Ulang Tahun (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/id/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":"Apa itu Paradoks Ulang Tahun?"},{"content":"Apa itu Snipping Tool Snipping Tool adalah alat tangkapan layar bawaan standar di Windows. Anda dapat memotong dan menyimpan sebagian layar, menangkap seluruh layar, atau merekamnya.\nCara Menjalankan Snipping Tool Terutama dapat dijalankan dengan 3 cara berikut:\nTekan tombol Win, ketik Snipping Tool, lalu tekan tombol Enter. Tekan tombol Win + Shift + S. Tekan tombol Win + R, ketik snippingtool, lalu tekan tombol Enter. Cara Menggunakan Snipping Tool Cara menyimpan gambar yang ditangkap adalah sebagai berikut: Pilih ikon Kamera. Klik tombol Baru. Pilih area yang ingin ditangkap. Klik tombol Simpan sebagai. Masukkan lokasi penyimpanan dan nama file, lalu simpan. Cara merekam video adalah sebagai berikut: Pilih ikon Video. Klik tombol Baru. Pilih area yang ingin ditangkap. Klik tombol Mulai. Rekam layar. Klik tombol Berhenti. Klik tombol Simpan sebagai. Masukkan lokasi penyimpanan dan nama file, lalu simpan. Referensi Gunakan Snipping Tool untuk mengambil tangkapan layar ","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/id/p/how-to-use-snipping-tool/","title":"Cara Menggunakan Snipping Tool"},{"content":"Berikut adalah cara membuat pintasan untuk mengunci komputer.\nIni berguna karena Anda dapat mengunci komputer dengan mengklik ganda pintasan yang dibuat di desktop dan lain-lain.\nCara Membuat 1. Klik kanan pada desktop dan pilih Baru \u0026gt; Pintasan 2. Layar pembuatan pintasan akan muncul, masukkan rundll32.exe user32.dll,LockWorkStation dan klik Berikutnya 3. Masukkan nama pintasan Kunci Komputer dan klik Selesai 4. Mengubah ikon pintasan yang dibuat Klik kanan pada pintasan yang dibuat dan pilih Properti\nKlik Ganti Ikon\nPilih ikon persegi kuning dan klik OK, lalu klik OK lagi untuk menutup properti\nItu saja.\nMengklik ganda pintasan yang dibuat akan mengunci komputer.\nAnda juga dapat mengunci komputer dengan menekan Tombol Win + Tombol L.\n※ Catatan: Dialog konfirmasi penguncian komputer tidak akan ditampilkan.\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/id/p/cara-membuat-pintasan-untuk-mengunci-komputer/","title":"Cara Membuat Pintasan untuk Mengunci Komputer"},{"content":"Apa itu Masalah Monty Hall Masalah Monty Hall adalah sebuah masalah yang berasal dari permainan di acara televisi Amerika Serikat \u0026ldquo;Let\u0026rsquo;s Make a Deal\u0026rdquo;, dengan penjelasan sebagai berikut.\nKondisi awal: Dari tiga pintu, satu di antaranya berisi hadiah, dan dua sisanya kosong.\nPeserta memilih satu dari tiga pintu. Pembawa acara membuka satu pintu yang kosong dari dua pintu yang tidak dipilih oleh peserta. Peserta ditanya apakah ia ingin mengubah pilihan pintunya. Pada titik ini, masalahnya adalah mempertimbangkan apakah lebih baik bagi peserta untuk mengubah pilihannya atau tidak.\nSolusi Solusi dari masalah Monty Hall adalah sebagai berikut.\nJika peserta tidak mengubah pintu yang dipilih pertama kali\nPeluang menang: 1/3 Peluang kalah: 2/3 Setelah pembawa acara membuka pintu yang kosong\nJika tidak mengubah pilihan, peluang menang: 1/3 (tidak berubah dari peluang menang di nomor 1) Jika mengubah pilihan, peluang menang: 2/3 (peluang selain menang di nomor 1) Oleh karena itu, peluang peserta untuk menang lebih tinggi jika ia mengubah pilihannya.\nReferensi 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/id/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":"Masalah Monty Hall"},{"content":"Mengunduh micro https://github.com/zyedidia/micro/releases\nBuka tautan di atas, klik Show all XX assets (X adalah angka) dan unduh micro-X.X.XX-win64.zip (X adalah angka). Ekstrak file zip dan tempatkan semua file di folder mana saja.\nMengatur Variabel Lingkungan Untuk menggunakan micro.exe dari Command Prompt, Anda perlu mengatur variabel lingkungan.\nTekan tombol Win + R, ketik sysdm.cpl dan tekan Enter. Klik Properti Sistem di Properti Sistem. Klik Variabel Lingkungan. Pilih Path di bawah Variabel Sistem dan klik Edit. Klik Baru dan tambahkan jalur folder yang berisi micro.exe. Klik OK untuk menutup semua kotak dialog. Nyalakan ulang Command Prompt, ketik nano dan periksa apakah dapat dijalankan. Cara Menggunakan micro Saat Anda mengetik micro di Command Prompt dan menjalankannya, layar seperti berikut akan ditampilkan. Operasi utama dan pintasan keyboard adalah sebagai berikut.\nPintasan Keyboard Operasi Ctrl+Q Tutup file Ctrl+S Simpan file Ctrl+O Buka file Ctrl+A Pilih semua Ctrl+X Potong pilihan Ctrl+C Salin pilihan Ctrl+V Tempel Ctrl+Z Urungkan Ctrl+Y Ulangi Ctrl+E Jalankan perintah editor Referensi 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/id/p/cara-menginstal-teks-editor-micro-di-windows/","title":"Cara Menginstal Teks Editor micro di Windows"},{"content":"Mengunduh nano.exe https://sourceforge.net/projects/nano-for-windows/\nBuka tautan di atas dan klik Download untuk mengunduh GNU-Nano_Win32(static).zip. Ekstrak file zip dan tempatkan nano.exe di folder mana pun.\nInput bahasa Jepang tidak didukung. (Per 31/03/2024) Mengatur variabel lingkungan Untuk menggunakan nano.exe dari Command Prompt, Anda perlu mengatur variabel lingkungan.\nTekan tombol Win + R, ketik sysdm.cpl, lalu tekan tombol Enter. Klik Properti Sistem (System Properties). Klik Variabel Lingkungan (Environment Variables). Pilih Path di bawah Variabel sistem dan klik Edit. Klik Baru (New) dan tambahkan jalur nano.exe. Klik OK untuk menutup semua kotak dialog. Mulai ulang Command Prompt, ketik nano dan periksa apakah itu dapat dijalankan. Cara menggunakan nano Saat Anda mengetik nano dan menjalankannya, layar berikut akan ditampilkan.\nPenjelasan tentang pintasan ditampilkan di bagian bawah layar.\nArti dari simbol-simbol tersebut adalah sebagai berikut.\n^ mewakili tombol Ctrl. M- mewakili tombol Alt. Untuk menyimpan dan menutup, tekan Ctrl + S lalu tekan Ctrl + X.\nReferensi 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/id/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":"Cara Menginstal Teks Editor CLI nano di Windows"},{"content":"Cara mengatasi \u0026lsquo;Temporary failure resolving\u0026hellip;\u0026rsquo; di WSL kenji@MyComputer:~$ sudo apt update [sudo] password for kenji: Err:1 http://archive.ubuntu.com/ubuntu focal InRelease Temporary failure resolving 'archive.ubuntu.com'\nKetika kesalahan di atas muncul di WSL, pengaturan server DNS mungkin tidak benar. Di lingkungan saya, masalah teratasi dengan langkah-langkah berikut:\nMulai WSL. Jalankan sudo nano /etc/resolv.conf. Ubah baris nameserver menjadi seperti berikut: nameserver 8.8.8.8 Simpan dengan Ctrl + S dan keluar dengan Ctrl + X. Jalankan sudo apt update. Jika kesalahan tidak muncul, masalah selesai. Jika langkah di atas tidak menyelesaikan masalah Sepertinya ada kasus di mana langkah di atas tidak menyelesaikan masalah. Silakan merujuk ke artikel berikut.\nCara mengatasi \u0026lsquo;Temporary failure resolving\u0026hellip;\u0026rsquo; saat apt update di 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/id/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":"Cara mengatasi 'Temporary failure resolving...' di WSL"},{"content":"Cara Menutup melalui Klik Kanan Taskbar Metode ini berlaku untuk Windows 10. Di Windows 11, menu tersebut sepertinya tidak muncul. Jika Anda mengklik kanan pada taskbar sambil menahan tombol Shift dan Ctrl, opsi Keluar dari Explorer akan muncul di menu.\nCara Menutup melalui Task Manager Tekan tombol Ctrl + Shift + Esc untuk membuka Task Manager. Pilih Detail. Pilih explorer.exe, tekan tombol Delete, dan ketika ditanya Apakah Anda ingin mengakhiri explorer.exe?, pilih Akhiri proses. Cara Menutup melalui Command Prompt Tekan tombol Win + R, ketik cmd, dan tekan tombol Enter. Ketik taskkill /f /im explorer.exe dan tekan tombol Enter. Cara Memulai Explorer dari Task Manager Tekan tombol Ctrl + Shift + Esc untuk membuka Task Manager. Dari menu File, pilih Jalankan tugas baru. Ketik explorer.exe dan tekan tombol 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/id/p/cara-menutup-dan-memulai-ulang-file-explorer/","title":"Cara Menutup dan Memulai Ulang File Explorer"},{"content":"Cara Mengembalikan Menu Klik Kanan Klasik di Windows 11 Berikut adalah cara untuk mengembalikan menu klik kanan di Windows 11 ke versi klasik.\nBuka Registry Editor. Tekan Tombol Win + Tombol R, ketik regedit, lalu tekan Tombol Enter. Navigasikan ke HKEY_CURRENT_USER\\Software\\Classes\\CLSID\\{86ca1aa0-34aa-4e8b-a509-50c905bae2a2}. Jika kunci ini tidak ada, buatlah.\nNavigasikan ke HKEY_CURRENT_USER\\Software\\Classes\\CLSID\\{86ca1aa0-34aa-4e8b-a509-50c905bae2a2}\\InprocServer32. Jika kunci ini tidak ada, buatlah.\nPastikan nilai (Default) pada InprocServer32 kosong.\nMulai ulang komputer. Pastikan menu klik kanan telah kembali ke versi klasik. ","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/id/p/cara-mengembalikan-menu-klik-kanan-klasik-di-windows-11/","title":"Cara Mengembalikan Menu Klik Kanan Klasik di Windows 11"},{"content":"JetBrains Mono Ini adalah font pemrograman open source yang disediakan oleh JetBrains.\nUnduh: https://www.jetbrains.com/ja-jp/lp/mono/\nHackGen Hakugen (HackGen) adalah font pemrograman yang dibuat dengan menggabungkan font bahasa Inggris untuk pemrograman Hack, dan Genjyuu Gothic, font turunan dari Source Han Sans.\nUnduh: https://github.com/yuru7/HackGen/releases\nRicty Diminished Ricty Diminished adalah font kembaran dari Ricty, yang merupakan font yang dibuat dengan menggabungkan Inconsolata dan Circle M+ 1m menggunakan skrip pembuatan Ricty, bukan Inconsolata dan Migu 1M. Karena tidak menyertakan mesin terbang IPA Gothic, jumlah mesin terbang kanji yang dapat digunakan sedikit, tetapi sebagai gantinya, font ini dapat didistribusikan di bawah SIL Open Font License.\nUnduh: https://rictyfonts.github.io/diminished\nCica Font pemrograman yang menggunakan Hack + DejaVu Sans Mono untuk karakter alfanumerik bahasa Inggris dan simbol. Untuk karakter lain, menggunakan Rounded Mgen+.\nUnduh: https://github.com/miiton/Cica/releases\nReferensi:\nHack DejaVu Sans Mono Rounded Mgen+ Migu Ini adalah font gabungan dari M+ dan IPA.\nUnduh: https://itouhiro.github.io/mixfont-mplus-ipa/migu/\nOsaka Ini adalah font yang memungkinkan Anda menggunakan Osaka, font standar di Mac OS, pada Windows.\nUnduh: http://ifs.nog.cc/osakattf.hp.infoseek.co.jp/\nPlemolJP Ini adalah font pemrograman yang menggabungkan font bahasa Jepang open source IBM Plex Sans JP yang dirilis oleh IBM, dengan IBM Plex Mono dari seri Plex IBM.\nUnduh: 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/id/p/koleksi-font-untuk-pemrograman/","title":"Koleksi Font untuk Pemrograman"},{"content":"Berikut adalah cara menjalankan Editor Hidemaru dengan perintah «hide». Catatan: Metode ini telah dikonfirmasi berfungsi pada Windows 10/11.\nBuka Registry Editor. Buka HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\App Paths. Buat kunci bernama hide.exe di App Paths. ※ Bagian sebelum .exe pada nama kunci ini akan menjadi nama perintah. Atur jalur file yang dapat dieksekusi dari Editor Hidemaru di (Default) pada kunci hide.exe. Di lingkungan saya, jalurnya adalah \u0026quot;C:\\Program Files (x86)\\Hidemaru\\Hidemaru.exe\u0026quot;. Buat nilai string bernama Path di kunci hide.exe. Atur jalur folder yang berisi file yang dapat dieksekusi Editor Hidemaru ke data Path. Di lingkungan saya, jalurnya adalah \u0026quot;C:\\Program Files (x86)\\Hidemaru\u0026quot;. Sekarang, Anda dapat menjalankan Editor Hidemaru dengan perintah hide di jendela Run yang ditampilkan dengan menekan tombol Win + R. Selain itu, di Command Prompt, Anda dapat menjalankan Editor Hidemaru dengan perintah start hide. 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; Jika Anda menyimpan konten di atas dalam file .reg dan menjalankannya, pengaturan akan ditambahkan ke registry.\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/id/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/","title":"Cara Menjalankan Editor Hidemaru dengan Perintah «hide»"},{"content":"Masalah Matematika yang Belum Terpecahkan Saya akan menjelaskan tentang beberapa masalah matematika yang belum terpecahkan. Meskipun masalahnya sendiri sederhana, masih banyak masalah yang belum terbukti.\nApakah ada bilangan sempurna yang tak terhingga jumlahnya? Bilangan sempurna adalah bilangan asli yang jumlah pembagi positifnya, selain dirinya sendiri, sama dengan bilangan itu sendiri. Sebagai contoh,\n6 memiliki pembagi 1, 2, 3, dan 1+2+3=6, jadi ini adalah bilangan sempurna. 28 memiliki pembagi 1, 2, 4, 7, 14, dan 1+2+4+7+14=28, jadi ini adalah bilangan sempurna. Saat ini hanya 51 yang telah ditemukan, dan meskipun diperkirakan jumlahnya tidak terbatas, hal itu belum terbukti.\nKonjektur Goldbach Konjektur Goldbach adalah konjektur yang menyatakan bahwa setiap bilangan genap yang lebih besar dari 2 dapat dinyatakan sebagai jumlah dari dua bilangan prima. (Di sini, bilangan prima adalah bilangan asli yang tidak memiliki pembagi selain 1 dan dirinya sendiri).\nSebagai contoh,\n4=2+2 6=3+3 8=3+5 10=3+7=5+5 Masalahnya sendiri sangat sederhana, tetapi masih belum terbukti hingga saat ini.\nHipotesis Riemann Ini adalah konjektur yang menyatakan bahwa nol dari fungsi zeta Riemann terbatas pada bilangan genap negatif dan bilangan kompleks yang bagian realnya adalah 1 / 2.\nFungsi zeta Riemann didefinisikan sebagai berikut, di mana $s$ adalah bilangan kompleks dan $n$ adalah bilangan asli:\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/id/p/masalah-matematika-yang-belum-terpecahkan/","title":"Masalah Matematika yang Belum Terpecahkan"},{"content":"\u0026ldquo;Saya mengumpulkan banyak dialog informasi versi\u0026rdquo; Windows 11 Pertama, ini adalah informasi versi Windows 11 yang sedang saya gunakan. IntelliJ IDEA (Community Edition) Ini adalah lingkungan tempat saya menulis blog ini. Visual Studio Code Ini juga merupakan editor yang sering saya gunakan. Ternyata sangat sederhana. Visual Studio Ini adalah lingkungan pengembangan yang saya gunakan untuk C++. LINE(Windows) Ini adalah LINE versi Windows. Paint.NET Ini adalah perangkat lunak pengedit gambar. sakuraエディタ Ini adalah editor teks. Google Chrome Ini adalah Google Chrome. Saya jarang menggunakannya lagi setelah Edge muncul. Firefox Ini adalah Firefox. Akhir-akhir ini saya jarang menggunakannya. Microsoft Edge Ini adalah Microsoft Edge. Akhir-akhir ini saya sering menggunakannya. OBS Studio Ini adalah OBS Studio. Akhir-akhir ini saya jarang menggunakannya. TradingView Ini adalah TradingView. Akhir-akhir ini saya menggunakannya untuk melihat grafik dolar/yen. Spy++ Ini adalah Spy++. Ini adalah alat yang disertakan dalam Windows SDK. depency walker Ini adalah depency walker. Ini adalah alat yang disertakan dalam Windows SDK. resource hacker Ini adalah resource hacker. Ini adalah alat untuk mengedit dan mengekstrak sumber daya dari file yang dapat dieksekusi. Microsoft Excel Ini adalah Microsoft Excel. bandy cam Ini adalah bandy cam. Ini adalah alat tangkapan video. winmerge Ini adalah winmerge. Ini adalah alat untuk melihat perbedaan file. iTunes Ini adalah iTunes. Akhir-akhir ini saya jarang menggunakannya. 秀丸エディタ Ini adalah editor Hidemaru. Ini adalah editor teks. Adobe Photoshop CS6 Ini adalah Adobe Photoshop CS6. Adobe Illustrator CS6 Ini adalah Adobe Illustrator CS6. ESET NOD32 Ini adalah ESET NOD32. NotePad++ Ini adalah NotePad++. Ini adalah editor teks. MIFES Ini adalah MIFES. Akhir-akhir ini saya jarang menggunakannya. ","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/id/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":"Saya mengumpulkan banyak dialog informasi versi"},{"content":"Alat Perekam Layar Animasi GIF Saya telah membuat alat untuk merekam layar dan menyimpannya sebagai animasi GIF. Dengan menggunakan alat ini, Anda dapat merekam operasi di layar dan membagikannya melalui alat komunikasi seperti Microsoft Teams.\nCara Penggunaan Jalankan alat Tentukan area yang akan direkam. Jika tidak ditentukan, seluruh layar akan direkam. Tekan tombol rekam Tekan tombol berhenti merekam Animasi GIF akan disimpan di lokasi yang sama dengan file eksekusi Unduh Unduh\nBuka tautan di atas dan klik tautan GIFScreenRecorder.exe untuk mengunduh file eksekusi.\nKode Sumber 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/id/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/","title":"Alat Perekam Layar Animasi GIF"},{"content":"Ringkasan Belajar Ujian PMP Ini adalah ringkasan belajar untuk ujian PMP.\nGambaran Umum PMP adalah sertifikasi manajemen proyek. Ini adalah sertifikasi berdasarkan buku panduan yang disebut PMBOK (Edisi ke-7 terbaru). Ujian PMP terdiri dari 180 pertanyaan dalam 230 menit, tetapi 5 pertanyaan adalah pertanyaan dummy, jadi jika Anda menjawab 106 pertanyaan atau lebih dengan benar dari 175 pertanyaan, Anda akan lulus. Jawabannya dalam format pilihan ganda, dan sebagian besar adalah 4 pilihan, tetapi beberapa memiliki 5 pilihan atau format pilihan ganda.\nKepemimpinan Melayani (Servant Leadership) Gaya kepemimpinan yang mendukung dari bawah alih-alih memberi perintah dari atas.\n10 Prinsip Kepemimpinan Melayani (Karakteristik) Mendengarkan (Listening) Empati (Empathy) Penyembuhan (Healing) Kesadaran (Awareness) Persuasi (Persuasion) Konseptualisasi (Conceptualization) Tinjauan ke depan (Foresight) Kepengurusan (Stewardship) Komitmen pada Pertumbuhan Orang-orang (Commitment to the growth of people) Membangun Komunitas (Building community) 4 Nilai Agile Manifesto Kami menemukan cara yang lebih baik dalam mengembangkan perangkat lunak dengan melakukannya dan membantu orang lain melakukannya. Melalui pekerjaan ini, kami telah menghargai:\nIndividu dan interaksi lebih dari proses dan alat Perangkat lunak yang berfungsi lebih dari dokumentasi yang komprehensif Kolaborasi pelanggan lebih dari negosiasi kontrak Menanggapi perubahan lebih dari mengikuti rencana Artinya, sementara ada nilai pada item di sebelah kanan, kami lebih menghargai item di sebelah kiri.\nAgile Manifesto\n12 Prinsip di Balik Agile Manifesto Prioritas tertinggi kami adalah memuaskan pelanggan melalui pengiriman perangkat lunak yang berharga secara awal dan berkelanjutan. Menerima perubahan persyaratan, bahkan di akhir pengembangan. Proses Agile memanfaatkan perubahan untuk keunggulan kompetitif pelanggan. Memberikan perangkat lunak yang berfungsi secara sering, dari beberapa minggu hingga beberapa bulan, dengan preferensi pada skala waktu yang lebih pendek. Orang bisnis dan pengembang harus bekerja sama setiap hari di sepanjang proyek. Bangun proyek di sekitar individu yang termotivasi. Beri mereka lingkungan dan dukungan yang mereka butuhkan, dan percayai mereka untuk menyelesaikan pekerjaan. Metode yang paling efisien dan efektif untuk menyampaikan informasi ke dan di dalam tim pengembangan adalah percakapan tatap muka. Perangkat lunak yang berfungsi adalah ukuran utama kemajuan. Proses Agile mempromosikan pengembangan yang berkelanjutan. Sponsor, pengembang, dan pengguna harus dapat mempertahankan kecepatan yang konstan tanpa batas. Perhatian terus-menerus pada keunggulan teknis dan desain yang baik meningkatkan ketangkasan. Kesederhanaan (seni memaksimalkan jumlah pekerjaan yang tidak dilakukan) adalah penting. Arsitektur, persyaratan, dan desain terbaik muncul dari tim yang mengatur dirinya sendiri. Secara berkala, tim merefleksikan cara menjadi lebih efektif, lalu menyesuaikan dan menyelaraskan perilakunya. Prinsip di Balik Agile Manifesto\nIstilah Epic (Garis besar) User Story (Unit yang didaftarkan dalam product backlog, unit untuk penentuan prioritas) Task (Item pekerjaan teknis, target estimasi waktu) Product Backlog / Product Backlog Item Product Owner Stakeholder (Pemangku Kepentingan) Agile Practice Guide (Buku panduan) Lean Development Kanban Value Chain AC (Actual Cost) EV (Earned Value) PV (Planned Value) EVA (Earned Value Analysis) SPI (Schedule Performance Index = EV / PV) CPI (Cost Performance Index = EV / AC) EVM (Earned Value Management) BAC (Budget at Completion) ETC (Estimate To Complete) EAC (Estimate At Completion) Fungsional Matriks Proyek Servant Leadership Tuckman Model (Forming, Storming, Norming, Performing, Adjourning) Piagam Tim (Team Charter) Planning Poker (Deret Fibonacci) Retrospektif (Aktivitas refleksi) Tim Virtual Piagam Proyek (Project Charter) Konflik (6 cara mengatasi: Konfrontasi/Pemecahan masalah, Kolaborasi, Kompromi, Akomodasi/Penenangan, Paksaan, Penarikan/Penghindaran) Value Stream Mapping Mentoring Coaching Training Teori X dan Y Douglas McGregor Analisis SWOT (Strength, Weakness, Opportunity, Threat) Model SECI (Socialization, Externalization, Combination, Internalization) PDCA, PDSA PESTLE (Political, Economic, Social, Technological, Legal, Environmental) VUCA (Volatility, Uncertainty, Complexity, Ambiguity) Metode Monte Carlo Analisis Decision Tree Expected Monetary Value (EMV) Net Promoter Score Analisis Biaya-Manfaat (Cost-Benefit Analysis) Sprint Review Release Management SOW (Statement of Work) P-SOW (Procurement Statement of Work) RFI (Request For Information) RFP (Request For Proposal) Kontrak Harga Tetap (FP: Fixed Price) Kontrak Waktu dan Bahan (T\u0026amp;M: Time and Material) Kontrak Penggantian Biaya (CR: Cost Reimbursable) Insentif Harga Tetap (FPIF) Scope Creep Analisis Kano Metode Pendanaan Metode 100 Poin Metode MSCW (Must, Should, Could, Would) Matriks Keterlacakan (Traceability Matrix) Kamus WBS Velocity (Jumlah story point yang dicapai dalam setiap iterasi) Grafik Velocity Matriks Keterlibatan (Tidak sadar, Menolak, Netral, Mendukung, Memimpin) Phase Gate Information Radiator Burndown Chart Burnup Chart Cumulative Flow Diagram QCD (Quality, Cost, Delivery) Spiral Critical Chain Feature Iterasi / Sprint Iteratif Inkremental Inkrement (Hasil penambahan) Ketahanan (Resilience) Stewardship (Perilaku jujur dan dapat dipercaya serta tindakan yang bertanggung jawab) Eskalasi KPT (Keep, Problem, Try) RACI (Responsible, Accountable, Consulted, Informed) PMO (Project Management Office) Mendukung, Mengendalikan, Mengarahkan Cadence Tailoring Tingkat Neurologis (Lingkungan, Perilaku, Kemampuan, Keyakinan/Nilai, Identitas Diri) Business Case (Dokumen yang mencatat tujuan proyek, manfaat, risiko, ROI, dll.) Analisis Tren (Dilakukan menggunakan run chart untuk memprediksi hasil di masa depan) Rencana Manajemen Kualitas Proses Tata Kelola Product Owner Project Owner Project Manager Project Leader Anggota Proyek Pendekatan Hibrida Minimum Viable Product (MVP) Iteration Review Lokakarya (Workshop) Rencana Manajemen Manfaat Proyek Key Performance Indicator (KPI) On-site (Di tempat) Estimasi Analog Estimasi Tiga Titik (Three-point estimating) Estimasi Parametrik Tinjauan Proyek (Project Review) Pendekatan Big Bang DSDM (Dynamic Systems Development Method) Hukum Brooks Pendekatan Big Bang (Diperkenalkan sekaligus secara bersamaan) Risk Register Daftar Risiko Teori Kepemimpinan Situasional (SL) (4 perilaku sesuai situasi) Kompetensi Komitmen Referensi Panduan Scrum (Ken Schwaber \u0026amp; Jeff Sutherland) Halaman PMI ECO (Bahasa Jepang) Panduan Praktik Agile Kode Etik PMI Materi Pembelajaran Kursus Strategi Lulus Ujian Sertifikasi PMP®! (2021) Kompatibel dengan Agile ","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/id/p/pmp%E5%8B%89%E5%BC%B7/","title":"Belajar PMP"},{"content":"Ringkasan Catatan tentang bencana alam yang terjadi di Jepang\nGempa Bumi Semenanjung Noto 1 Januari 2024 ","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/id/p/%E6%97%A5%E6%9C%AC%E3%81%AE%E7%81%BD%E5%AE%B3/","title":"Bencana di Jepang"},{"content":"Tujuh Ramuan Seri (Water dropwort) Nazuna (Shepherd\u0026rsquo;s purse) Gogyo (Cudweed) Hakobera (Chickweed) Hotokenoza (Nipplewort) Suzuna (Lobak putih) Suzushiro (Daikon) ","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/id/p/resep-bubur-tujuh-ramuan/","title":"Resep Bubur Tujuh Ramuan"},{"content":"Rekomendasi Musik Jepang チューリップ - 青春の影 イルカ - なごり雪 河島英五 - 酒と泪と男と女 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/id/p/musik-jepang-favorit/","title":"Musik Jepang Favorit"},{"content":"Rekomendasi Musik Barat 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 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 - 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/id/p/musik-barat-favorit/","title":"Musik Barat Favorit"},{"content":"Menginstal PowerToys dari Command Prompt Berikut adalah cara menginstal PowerToys dari Command Prompt.\n1 winget install Microsoft.PowerToys --source winget Menghapus Instalasi PowerToys dari Command Prompt 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/id/p/powertoys%E3%81%AE%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB/","title":"Menginstal PowerToys dari Command Prompt"},{"content":"Mari kita tunjukkan rasa hormat Mari kita hormati orang yang bisa melakukan apa yang tidak bisa kita lakukan\nDi masyarakat, secara mengejutkan ada banyak orang yang memeringkat pekerjaan dan posisi serta gagal menunjukkan rasa hormat\nMari kita hormati orang yang melakukan pekerjaan yang tidak bisa kita lakukan, apa pun pekerjaannya\nSaya ingin mengingat hal ini\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/id/p/mari-kita-hormati-orang-yang-bisa-melakukan-apa-yang-tidak-bisa-kita-lakukan/","title":"Mari kita hormati orang yang bisa melakukan apa yang tidak bisa kita lakukan"},{"content":"Splatoon 2 Mungkin Splatoon 2 adalah game yang paling lama saya mainkan seumur hidup saya. Saya hampir tidak memainkan mode ceritanya, tetapi matchmaking untuk pertandingan online 4 vs 4 sangat bagus, di mana saya bisa bermain melawan orang-orang dengan tingkat keterampilan yang sama, sehingga memberikan keseruan yang tidak membosankan. Selain itu, menyenangkan juga membaca pergerakan lawan dan rekan setim untuk memikirkan strategi kemenangan.\nSenjata Senjata yang sering saya gunakan, secara berurutan adalah \u0026ldquo;Foil Squeezer\u0026rdquo;, \u0026ldquo;Splattershot Jr.\u0026rdquo;, \u0026ldquo;Splat Roller\u0026rdquo;, dan \u0026ldquo;Foil Flingza Roller\u0026rdquo;. \u0026ldquo;Splattershot Jr.\u0026rdquo; adalah senjata untuk pemula, dan saya sering menggunakannya di awal permainan.\nPoin tinta untuk masing-masing senjata ada di bawah ini.\nSenjata Poin Tinta Flingza Roller 6,636,594p Splat Roller 6,200,629p Splattershot Jr. 4,211,759p Foil Squeezer 744,678p Splattershot 301,238p Tentang Level Rasanya saya terus bergerak di antara A+ dan S+, dan terus berada dalam kondisi di mana saya tidak bisa naik ke posisi atas S+, tetapi saya lebih menikmati pertandingannya daripada mencoba naik ke peringkat atas. (Jika saya terlalu tinggi, lawan akan menjadi lebih kuat dan akan ada ketegangan, sehingga mengurangi keseruannya)\nWaktu Bermain Waktu bermain saya sudah melebihi 2500 jam.\nTujuan Masa Depan Saya ingin mempertahankan level permainan dan memainkannya dengan menyenangkan, tetapi saya juga ingin mencapai batas maksimum untuk uang dan perlengkapan. Sejak Splatoon 3 dirilis, matchmaking memakan waktu lebih lama atau tidak menemukan pertandingan sama sekali, jadi saya ingin terus bermain sambil berharap jumlah pemain tidak berkurang lagi.\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/id/p/splatoon-2/","title":"Splatoon 2"},{"content":"Tentang Penghargaan Microsoft MVP (2023-2024) Baru-baru ini, saya telah menerima penghargaan Microsoft MVP (2023-2024). Ini adalah tahun ke-7 berturut-turut sejak 2017 saya menerima penghargaan ini.\nKategori penghargaan yang saya terima adalah Developer Technologies .\nMelihat kembali kegiatan saya sejauh ini, saya telah melakukan kegiatan berikut:\nMempublikasikan kode di GitHub Berbagi informasi teknis di blog dan SNS (seperti Twitter) Memposting di Forum MSDN Memberikan umpan balik untuk produk Microsoft Ke depannya, saya ingin terus menulis artikel yang lebih baik dan berbagi informasi.\nTerima kasih banyak atas dukungan Anda.\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/id/p/microsoft-mvp%E5%8F%97%E8%B3%9E%E3%81%AB%E3%81%A4%E3%81%84%E3%81%A62023-2024/","title":"Tentang Penghargaan Microsoft MVP (2023-2024)"},{"content":"Tiga masalah konstruksi Yunani Kuno Diberikan sebuah lingkaran, buatlah persegi dengan luas yang sama dengan lingkaran tersebut (Menguadratkan lingkaran) Diberikan sudut sembarang, bagilah menjadi tiga bagian yang sama besar (Triseksi sudut) Diberikan sebuah kubus, buatlah kubus dengan volume dua kali lipat dari kubus tersebut (Menggandakan kubus) Spiral Archimedes Pada sebuah bidang, putar sinar OB di sekitar titik tetap O dengan kecepatan seragam. Jika posisi awal adalah OA, dan titik P mulai bergerak dari O di sepanjang OB dengan kecepatan konstan pada saat yang sama ketika sinar mulai bergerak dari OA, maka garis yang digambar oleh titik P adalah spiral Archimedes.\nTeorema Pappus Sikloid Konkoid Nicomedes Sisoid Diocles Metode garis singgung Fermat Metode garis normal Descartes Kronologi Tahun Peristiwa Sekitar 3400 SM Bangsa Sumeria menggunakan koin tanah liat sebagai alat hitung Sekitar 3000 SM Matematika hieroglif muncul di Mesir Sekitar 2800 SM Peradaban Lembah Indus menggunakan sistem ukuran dan berat desimal Sekitar 2700 SM Bangsa Mesir menggunakan tali dan triple Pythagoras untuk memeriksa sudut Sekitar 2500 SM Sempoa (abacus), alat yang digunakan untuk menghitung, ditemukan Sekitar 2500 SM Referensi Sejarah matematika ","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/id/p/sejarah-matematika/","title":"Sejarah Matematika"},{"content":"Tentang Elecom Trackball Deft Pro M-DPT1MRBK Sudah sekitar satu minggu sejak saya membeli trackball Elecom \u0026ldquo;Deft Pro M-DPT1MRBK\u0026rdquo;, jadi saya akan mengulas pengalaman saya menggunakannya.\nFitur Utama\nJumlah tombol banyak, yaitu 8 Dapat dihubungkan dengan 3 cara: kabel, penerima nirkabel, dan Bluetooth Ukuran bola besar (diameter sedang 44mm) Harga beli di Amazon: 7.012 yen (per 2 Mei 2021) Kelebihan Dibandingkan dengan mouse, tidak perlu menggerakkan pergelangan tangan, sehingga beban pada pergelangan tangan berkurang Karena jumlah tombolnya banyak, berbagai fungsi dapat ditetapkan ke tombol Saat ini saya menetapkannya seperti gambar di atas. Anda juga dapat mengubah penetapan tombol untuk setiap aplikasi. ※ Instalasi perangkat lunak khusus diperlukan untuk penetapan tombol. Karena bolanya besar, relatif mudah untuk melakukan gerakan presisi di antara trackball Kekurangan Debu menumpuk di sekitar trackball, jadi perlu melepas bola dan membersihkannya secara teratur (sekitar beberapa hari sekali) Karena rasa operasionalnya berbeda dari mouse (menggerakkan kursor dengan jari telunjuk dan jari tengah, mengoperasikan roda mouse dengan ibu jari), butuh waktu untuk terbiasa Seperti yang saya tulis di atas bahwa mudah untuk melakukan gerakan presisi, tetapi tetap saja sulit untuk menggerakkan kursor dalam satuan 1 piksel dengan trackball Tidak mungkin mengoperasikan roda sambil menahan tombol kiri (misalnya, saat Anda ingin memperbesar/memperkecil sambil memilih area di Paint) Sebagai kesimpulan, saya pikir ini adalah salah satu trackball yang lebih mahal, tetapi secara keseluruhan cukup mudah dioperasikan, dan saya pikir pekerjaan saya menjadi lebih efisien. Saya harap ini bermanfaat bagi mereka yang mempertimbangkan untuk membelinya.\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/id/p/rekomendasi-trackball-deft-pro-m-dpt1mrbk/","title":"Rekomendasi Trackball Deft Pro (M-DPT1MRBK)"},{"content":"Apa itu wxWidgets wxWidgets adalah pustaka GUI C++ yang berjalan di berbagai platform seperti Windows, Mac, Linux, Android, dan iOS.\nInstalasi wxWidgets Buka https://www.wxwidgets.org/downloads/ dan unduh Windows Installer. Jalankan wxMSW-3.2.2.1-Setup.exe untuk menginstal. Dari folder instalasi, buka \u0026ldquo;C:\\wxWidgets-3.2.2.1\\build\\msw\\wx_vc17.sln\u0026rdquo;. Setelah membuka wx_vc17.sln, pilih Build \u0026gt; Batch Build. Klik tombol Select All, lalu klik tombol Rebuild. Setelah build selesai, tutup Visual Studio sementara waktu. Membuat Proyek Sampel Buka Visual Studio. Pilih File \u0026gt; New \u0026gt; Project. Pilih Windows Desktop Application (Tab C++, Windows, Desktop). Masukkan wxWidgetsSample pada Project name. Klik Create. Klik kanan pada wxWidgetsSample dan pilih Properties. Tambahkan C:\\wxWidgets-3.2.2.1\\include dan C:\\wxWidgets-3.2.2.1\\include\\msvc ke Configuration Properties \u0026gt; C/C++ \u0026gt; Additional Include Directories. Tambahkan C:\\wxWidgets-3.2.2.1\\lib\\vc_x64_lib ke Configuration Properties \u0026gt; Linker \u0026gt; Additional Library Directories. Buka wxWidgetsSample.cpp dan ganti dengan kode berikut. 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;); } Saat Anda build dan jalankan, jendela seperti ini akan terbuka. Referensi Proyek sampel disediakan di bawah ini. wxWidgetsSample\nSitus Resmi Permainan menggunakan C++ dan wxWidgets Sekian.\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/id/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":"Contoh menggunakan wxWidgets"},{"content":"Film yang ingin ditonton (beri centang setelah menonton) Maquia: When the Promised Flower Blooms The Professor and His Beloved Equation Summer Wars Hidden Figures Good Will Hunting A Beautiful Mind The Theory of Everything The Man Who Knew Infinity Hawking (Benedict Cumberbatch) Tenchi: The Samurai Astronomer Pi 21 I.Q. Proof 3 Idiots Buffalo \u0026lsquo;66 A Clockwork Orange Backdraft Asakusa Kid Top Gun The Matrix Resurrections I Am Legend The Da Vinci Code The Social Network STEINS;GATE Planetes Gravity Violet Evergarden Psycho-Pass Demon Slayer Princess Mononoke Winny Zero Focus Zootopia Your Name. Weathering with You Back to the Future (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/id/p/%E6%98%A0%E7%94%BBtodo%E3%83%AA%E3%82%B9%E3%83%88/","title":"Daftar TODO Film"},{"content":"Template halaman web yang keren\nhtml5up https://html5up.net/ Saya pikir saya ingin mencobanya, jadi ini adalah catatan.\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/id/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":"Template Halaman Web Keren (html5up)"},{"content":"Prasyarat Standar ISO C++ 20 (/std:c++20) Kode 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()); Demikianlah cara menampilkan waktu saat ini dalam format ISO8601 di C++.\nReferensi 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/id/p/cara-menampilkan-waktu-saat-ini-dalam-format-iso8601-di-c-/","title":"Cara Menampilkan Waktu Saat Ini dalam Format ISO8601 di C++"},{"content":"Saya akan menunjukkan cara membuat pintasan untuk mematikan Windows.\nSangat praktis karena Anda bisa mematikan komputer dengan mengklik ganda pintasan yang dibuat, misalnya di desktop.\nCara Membuat 1. Klik kanan pada desktop, lalu pilih Baru \u0026gt; Pintasan 2. Layar pembuatan pintasan akan muncul, masukkan shutdown.exe -s -f -t 0 lalu klik Berikutnya 3. Masukkan nama pintasan Matikan lalu klik Selesai 4. Ubah ikon pintasan yang dibuat Klik kanan pintasan yang dibuat, lalu pilih Properti\nKlik Ubah Ikon\nPilih ikon kotak merah dan klik OK, lalu klik OK lagi untuk menutup jendela properti.\nSelesai.\nJika Anda mengklik ganda pintasan yang dibuat, Windows akan dimatikan.\nCatatan: Dialog konfirmasi mematikan komputer tidak akan ditampilkan.\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/id/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/","title":"Cara Membuat Pintasan untuk Mematikan Windows"},{"content":"Artikel ini akan menunjukkan cara menerapkan mosaik pada bagian tertentu dari gambar menggunakan paint.net.\nSaat mengunggah gambar ke internet, Anda mungkin ingin menyembunyikan bagian tertentu dengan mosaik. Dengan menggunakan paint.net, Anda dapat mengedit gambar dengan sangat cepat.\nLangkah-langkah 1. Buka gambar yang ingin Anda beri mosaik di paint.net 2. Gunakan alat seleksi untuk memilih bagian yang ingin diberi mosaik (bisa memilih lebih dari satu area) 3. Pilih menu: Efek (Effects) \u0026gt; Distorsi (Distort) \u0026gt; Mosaik (Pixelate) Ukuran sel menentukan tingkat kekasaran mosaik. Semakin tinggi angkanya, semakin tinggi tingkat penyembunyiannya. [Perkecil] Pilih Bilinear (Multisampling) [Perbesar] Pilih Nearest Neighbor Klik OK untuk menutup dialog.\n4. Setelah mosaik diterapkan pada gambar, simpan gambarnya. Selesai.\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/id/p/how-to-apply-mosaic-to-a-specific-part-of-an-image-in-paint-net/","title":"Cara Menerapkan Mosaik pada Bagian Tertentu dari Gambar di paint.net"},{"content":"Saya akan menunjukkan cara menambahkan batas pada gambar menggunakan paint.net.\nLangkah-langkah 1. Buka gambar yang ingin Anda tambahkan batas di paint.net 2. Atur warna sekunder (ini akan menjadi warna batas) Jika palet warna tidak ditampilkan, tekan tombol F8 di keyboard Anda.\nUntuk mengaturnya ke hitam, klik .\n3. Menu \u0026gt; Gambar \u0026gt; Pilih Ubah Ukuran Kanvas Tingkatkan lebar dan tinggi masing-masing sebesar 2 piksel. Peningkatan 2 piksel berarti batas akan menjadi 1 piksel. Jika Anda ingin batas menjadi 5 piksel, tingkatkan lebar dan tinggi masing-masing sebesar 10 piksel.\nPilih jangkar \u0026ldquo;Tengah\u0026rdquo;, lalu klik OK.\n4. Batas akan ditambahkan ke gambar, jadi simpan gambar tersebut. Selesai.\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/id/p/cara-menambahkan-batas-pada-gambar-menggunakan-paint-net/","title":"Cara menambahkan batas pada gambar menggunakan paint.net"},{"content":"Pengantar Dengan menggunakan layanan bernama Ranklet , Anda dapat dengan mudah mendapatkan dan menempatkan peringkat halaman populer dari Google Analytics.\nDalam artikel ini, saya akan menunjukkan cara menempatkannya di blog HUGO.\nContoh Hasil Persiapan Google Analytics harus disiapkan di situs Langkah-langkah Akses Ranklet Klik Sign in with Google untuk masuk dengan akun Google (harus ditautkan ke akun Google Analytics) Klik Izinkan\nAtur informasi dasar Saya telah mengaturnya seperti yang ditunjukkan di atas.\nPada Google Analytics View , pilih tampilan yang ingin Anda dapatkan peringkatnya. Atur penggantian teks Saya telah mengaturnya seperti yang ditunjukkan di atas. Ini diatur untuk menghapus | kenji.blog dari judul halaman.\nAtur templat HTML (angka peringkat disembunyikan) 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 (ukuran font diubah, deskripsi akan ditampilkan dalam 3 baris) 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 { // リセット 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; /* 行数 */ } } } } JavaScript tidak ada perubahan Salin HTML dari publikasi di situs Salin HTML yang ditampilkan\nTempel ke templat HUGO Buat layouts/partials/ranklet.html dan tempel HTML yang disalin 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; Tempel kode di bawah ini pada baris sebelum \u0026lt;/footer\u0026gt; di layouts/_default/single.html 1 {{- partial \u0026#34;ranklet.html\u0026#34; . }} Itu saja. Peringkat akan ditampilkan di bagian bawah halaman ini seperti yang ditunjukkan di bawah ini.\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/id/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":"Cara Mendapatkan dan Menempatkan Peringkat Halaman Populer dari Google Analytics"},{"content":"Python Google Colaboratory Google Colaboratory adalah lingkungan eksekusi Python yang dapat dijalankan secara online.\nPenggunaan GPU juga dimungkinkan. Menggunakan notebook Colab, Anda dapat menulis kode yang dapat dieksekusi dan teks kaya (gambar, HTML, LaTeX, dll. juga dimungkinkan) dalam satu dokumen. Ini didasarkan pada Jupyter Notebook.\nRust Rust Playground JavaScript Javascript Playground Java paiza.IO Online Java compiler Haskell Haskell Playground Swift Online Swift Playground C++ C++ 14 Lainnya AWS Cloud9 Lingkungan pengembangan terintegrasi online yang disediakan oleh Amazon AWS. Hadir dengan pra-paket alat untuk lebih dari 40 bahasa pemrograman seperti Node.js, JavaScript, Python, PHP, Ruby, Go, C++, dll.\nVisual Studio Code for the Web Lingkungan pengembangan online dari Microsoft. Namun, tidak mungkin untuk mengeksekusi atau men-debug bahasa yang memerlukan kompilasi.\npaiza.IO Lingkungan eksekusi online yang mendukung 24 bahasa utama termasuk C, C++, Java, Ruby, Python, PHP, Perl, dll.\nCodePen Lingkungan eksekusi online untuk HTML, CSS, dan JavaScript.\ncodeanywhere IDE Online. Anda dapat berbagi kode dan mengobrol.\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/id/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":"【Berdasarkan Bahasa】Ringkasan Lingkungan Eksekusi Kode Online"},{"content":"Apa itu Saringan Eratosthenes Saringan Eratosthenes adalah algoritma untuk menemukan semua bilangan prima hingga batas tertentu. Algoritmanya sederhana dan dapat diimplementasikan dengan langkah-langkah berikut:\nBuat array boolean dengan N elemen dan inisialisasi semua elemen menjadi true. Atur elemen ke-0 dan ke-1 dari array menjadi false (karena 0 dan 1 bukan bilangan prima). Jika elemen ke-2 dari array adalah true, maka cetak 2 sebagai bilangan prima. Atur semua elemen kelipatan 2 mulai dari $2^2$ menjadi false ※ Jika elemen ke-3 dari array adalah true, maka cetak 3 sebagai bilangan prima. Atur semua elemen kelipatan 3 mulai dari $3^2$ menjadi false. Ulangi proses yang sama untuk elemen ke-4, ke-5, \u0026hellip;, ke-N. ※ Alasan kami menargetkan elemen dari kuadrat ke atas untuk diatur menjadi false adalah karena elemen yang lebih kecil dari kuadrat tersebut sudah diproses (pencacahan telah selesai).\nImplementasi dalam 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; } } } } Versi yang Sedikit Lebih Cepat Kami akan menerapkan versi yang sedikit lebih cepat dengan mempertimbangkan hal-hal berikut:\nAlih-alih menginisialisasi array dengan true, inisialisasi dengan false (ini lebih cepat). Karena kelipatan 2 bukan bilangan prima, kami mengabaikan proses mengubah kelipatan 2 menjadi false. Tidak perlu melakukan perulangan hingga n; jika Anda menemukan bilangan prima hingga akar kuadrat dari n, Anda dapat menemukan bilangan prima hingga n. 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); } } Referensi Saringan Eratosthenes ","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/id/p/cara-menemukan-bilangan-prima-hingga-1000-menggunakan-saringan-eratosthenes/","title":"Cara Menemukan Bilangan Prima Hingga 1000 Menggunakan Saringan Eratosthenes"},{"content":"Instalasi melalui Terminal Buka Terminal Jalankan sudo gem install cocoapods → Entah kenapa, muncul pesan kesalahan berikut dan instalasi gagal. Output 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. Jadi saya mencari pesan kesalahan tersebut di web (lihat \u0026ldquo;Referensi\u0026rdquo; di bawah), dan menjalankan perintah berikut 1 /bin/bash -c \u0026#34;$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)\u0026#34; Output 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 Jalankan brew install cocoapods Output 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`). Jalankan pod --version Output 1 1.12.0 Sepertinya instalasi berhasil.\nReferensi 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/id/p/cara-menginstal-cocoapods-di-mac/","title":"Cara menginstal CocoaPods di mac"},{"content":"Cara Mendapatkan Jumlah Pembuatan Record per Hari Menggunakan SOQL di Salesforce Buka Developer Console. Buka tab Query Editor. Tempel dan jalankan SOQL berikut. 1 select day_only(createdDate), count(createdDate) from account group by day_only(createdDate) order by count(createdDate) desc limit 10 Harap ubah account menjadi nama objek apa pun yang ingin Anda dapatkan lalu jalankan.\nReferensi 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/id/p/cara-mendapatkan-jumlah-pembuatan-record-per-hari-menggunakan-soql-di-salesforce/","title":"Cara Mendapatkan Jumlah Pembuatan Record per Hari Menggunakan SOQL di Salesforce"},{"content":"\nPrasyarat Akun Google Langkah-langkah Akses https://colab.research.google.com/ Pilih \u0026ldquo;File\u0026rdquo; -\u0026gt; \u0026ldquo;Notebook baru\u0026rdquo; Tempel dan jalankan kode berikut 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() # tampilkan legenda plt.show() Hasil Referensi 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/id/p/cara-menggambar-grafik-menggunakan-python-matplotlib-pyplot/","title":"Cara Menggambar Grafik Menggunakan Python (matplotlib.pyplot)"},{"content":"Apa yang Dibutuhkan Twitter API Twitter API SECRET Twitter ACCESS TOKEN Twitter ACCESS TOKEN SECRET Akun Google Silakan merujuk ke situs referensi tentang cara mendapatkan Twitter API.\nLangkah-langkah Tweet menggunakan API Kunjungi https://colab.research.google.com/ Pilih \u0026ldquo;File\u0026rdquo; -\u0026gt; \u0026ldquo;Buku catatan baru\u0026rdquo; Tempel dan jalankan kode berikut (Gunakan nilai aktual yang Anda dapatkan sendiri) 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; Tempel dan jalankan kode berikut 1 import tweepy Tempel dan jalankan kode berikut (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;) → Tweet hello akan diposting\nTempel dan jalankan kode berikut (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;) → Tweet hello v2 akan diposting\nSelesai\nReferensi [Per April 2021] Penjelasan lengkap tentang aplikasi penggunaan Twitter API dengan contoh penggunaan dan tangkapan layar [Tidak perlu pengaturan yang merepotkan!] Kami merekomendasikan Google Colaboratory sebagai lingkungan uji coba untuk Twitter API [Kode sumber juga akan dibagikan] [Tweepy] Twitter API v2: Tweet, balasan (reply), tweet dengan polling, tweet dengan media (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/id/p/cara-tweet-menggunakan-twitter-api-dan-google-colaboratory/","title":"Cara Tweet Menggunakan Twitter API dan Google Colaboratory"},{"content":"Apa itu OpenSSL Ini adalah pustaka sumber terbuka yang menyediakan pemrosesan yang diperlukan untuk komunikasi terenkripsi.\nUntuk menggunakannya dari sebuah program, kode sumber bahasa C dipublikasikan, jadi Anda perlu membangunnya dan membuat pustaka.\nDi bawah ini kami akan memperkenalkan prosedur pembangunannya.\nPersiapan lingkungan pembangunan Perl\nUnduh strawberry-perl-5.32.1.1-64bit.msi dari https://strawberryperl.com/. Versi terbaru seharusnya tidak masalah.\nNASM\nUnduh 2.16.01/nasm-2.16.01-win64.zip dari Download di https://www.nasm.us/. Versi terbaru selain rc seharusnya tidak masalah. Setelah instalasi, Anda harus mendaftarkan folder tempat NASM diinstal ke variabel lingkungan PATH.\nVisual Studio 2022 atau Build Tools for Visual Studio 2022\nInstal Visual Studio 2022 Community atau Build Tools for Visual Studio 2022 dari https://visualstudio.microsoft.com/ja/downloads/.\nProsedur pembangunan OpenSSL di Windows Unduh dan ekstrak openssl-3.1.0.tar.gz dari https://www.openssl.org/source/. Jika Anda tidak dapat mengekstraknya, jalankan perintah tar -xzf openssl-3.1.0.tar.gz di command prompt. Jalankan command prompt sebagai administrator Buka folder yang diekstrak Jalankan perintah berikut. Ubah bagian Community sesuai dengan versi Visual Studio yang Anda instal. 1 \u0026#34;C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\VC\\Auxiliary\\Build\\vcvarsall.bat\u0026#34; x64 Jalankan perintah berikut 1 perl Configure VC-WIN64A Jalankan perintah berikut (butuh waktu cukup lama) 1 nmake Jalankan perintah berikut (butuh waktu cukup lama) 1 nmake test Jalankan perintah berikut 1 nmake install Jika berhasil, OpenSSL akan diinstal di C:\\Program Files\\OpenSSL.\nSelesai.\nReferensi 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/id/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":"Cara Membangun OpenSSL di Windows"},{"content":"Apa itu i18n? i18n adalah singkatan dari Internationalization, yang berarti internasionalisasi. Karena kata Internationalization cukup panjang, ia disingkat menjadi i18n, yang merujuk pada adanya 18 huruf antara huruf pertama i dan huruf terakhir n.\nIstilah ini terkadang digunakan dalam konteks internasionalisasi perangkat lunak.\nBerikut adalah item target utama dalam internasionalisasi: 1\nSet karakter (kode karakter standar, dll.) Arah teks (kiri ke kanan, kanan ke kiri, atas ke bawah menuju kiri, dll.) Teks Fon Pemformatan Angka (karakter koma desimal, karakter pemisah ribuan, jumlah digit yang dipisahkan, dll.) Tanggal dan waktu (cara penulisan tahun/bulan/hari, perbedaan kalender yang digunakan seperti kalender Islam/Masehi/Yahudi/Jepang, dll.) Perbedaan zona waktu pada informasi tanggal dan waktu Informasi mata uang Internasionalisasi dan lokalisasi - 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/id/p/i18n%E3%81%A8%E3%81%AF/","title":"Apa itu i18n?"},{"content":"Cara Membuat Presentasi dengan HTML reveal.js adalah alat pembuatan presentasi yang menggunakan HTML dan Markdown, serta memiliki fitur-fitur berikut:\nBerbagai fitur presentasi seperti rumus matematika, animasi, dan operasi usap (swipe) Tema dan tata letak dapat disesuaikan Fitur navigasi yang mendukung berbagai perangkat seperti mouse, keyboard, dan panel sentuh Menyediakan fitur-fitur canggih seperti putar otomatis salindia dan penyematan video Dapat diekspor dalam format PDF Dengan fitur-fitur ini, pengguna dapat dengan mudah membuat presentasi yang interaktif dan menarik.\nInstalasi dan Cara Menggunakan reveal.js Cara paling sederhana untuk menggunakannya adalah mengunduh seluruh ZIP dari halaman berikut dan mengekstraknya.\nBuka https://revealjs.com/installation dan unduh master.zip dari tautan tersebut Buka index.html di folder yang telah diekstrak menggunakan browser Edit index.html untuk membuat materi presentasi Anda sendiri ※ Kode HTML demo ditulis di demo.html sehingga Anda dapat menggunakannya sebagai referensi.\nCara Memanfaatkan Materi presentasi yang dibuat dapat dipublikasikan sebagai halaman web apa adanya, atau diekspor sebagai PDF. Selain itu, karena sumber presentasi adalah teks, maka mudah dikelola dengan sistem kontrol versi.\nTampaknya Anda juga dapat membuat materi presentasi dalam format Markdown.\nReferensi Mari gunakan reveal.js untuk presentasi di masa depan Daftar Contoh Sintaks Markdown ","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/id/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":"Cara Membuat Presentasi dengan HTML (reveal.js)"},{"content":"Apa itu Stable diffusion Stable diffusion adalah AI yang menghasilkan gambar dari informasi teks yang dimasukkan, dikembangkan oleh tim peneliti di Universitas Munich di Jerman. Dengan melatihnya pada berbagai gambar, ia dapat menghasilkan berbagai gambar mulai dari foto realistis hingga ilustrasi.\nKali ini, saya akan memperkenalkan cara menghasilkan gambar ilustrasi menggunakan data pra-terlatih dari Stable diffusion.\nYang perlu disiapkan Akun Google Hanya itu\nLangkah-langkah pembuatan Buka https://colab.research.google.com Dari menu File di kiri atas, pilih Buku catatan baru Dari menu Edit, pilih Setelan buku catatan Ubah Akselerator hardware menjadi GPU Tempelkan kode berikut dan jalankan 1 !pip install diffusers==0.8.0 transformers Tempelkan kode berikut dan jalankan 1 from diffusers import StableDiffusionPipeline Tempelkan kode berikut dan jalankan 1 2 pipe = StableDiffusionPipeline.from_pretrained(\u0026#34;gsdf/Counterfeit-V2.5\u0026#34;) pipe.to(\u0026#34;cuda\u0026#34;) Tempelkan kode berikut dan jalankan 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 Prompt yang digunakan di sini didasarkan pada Prompt dari https://huggingface.co/gsdf/Counterfeit-V2.5.\nHasil pembuatan (beberapa) Referensi https://huggingface.co/gsdf/Counterfeit-V2.5 Saya mencoba membuat program penghasil gambar menggunakan Kecerdasan Buatan (AI) dalam 15 menit 【Pemrograman Langsung】 ","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/id/p/cara-menghasilkan-gambar-ilustrasi-menggunakan-ai-stablediffusion/","title":"Cara Menghasilkan Gambar Ilustrasi Menggunakan AI (StableDiffusion)"},{"content":"Apa itu file executable (exe)? File yang dapat dieksekusi di Windows. Pada dasarnya ditulis dalam format yang disebut format PE. Ini berisi kode bahasa mesin untuk eksekusi, dan sumber daya seperti ikon dan gambar.\nAda beberapa alat untuk menganalisis file executable, jadi saya akan memperkenalkannya kali ini.\n7-Zip File EXE sering dikompresi untuk mengurangi ukurannya karena cenderung besar. Dalam hal ini, Anda dapat mengekstrak file executable dan memeriksa isinya menggunakan 7-Zip, sebuah perangkat lunak kompresi dan ekstraksi file. WinRAR juga merupakan alat serupa yang dapat digunakan.\nResource Hacker Anda dapat mengekstrak sumber daya (ikon, bitmap, kotak dialog, string, dll.) di dalam file EXE. Selain itu, karena ia juga berfungsi sebagai editor biner, Anda dapat mengedit dan menulis ulang isi file EXE.\nPE Explorer Anda dapat menganalisis file PE untuk Windows (EXE, DLL, OCX, SYS, driver). PE Explorer menawarkan berbagai fitur analisis, termasuk menampilkan struktur file, header file, entri direktori, dan fungsi serta simbol yang diekspor.\nDependency Walker Anda dapat memeriksa file DLL yang menjadi dependensi dari file EXE, dan mengonfirmasi apakah file tersebut dimuat dengan benar. Anda juga dapat melacak panggilan fungsi file DLL.\nGhidra Ini adalah alat rekayasa balik (reverse engineering) yang kuat yang dikembangkan oleh NSA (National Security Agency, Amerika Serikat) dan tersedia secara gratis sebagai sumber terbuka. Alat ini tidak hanya mendisassembly (mengubah ke bahasa assembly) file EXE, tetapi juga memiliki fungsi dekompilasi ke format yang mendekati bahasa C, menjadikannya sangat populer.\nIDA Free / IDA Pro Ini adalah disassembler dan decompiler berkinerja tinggi yang telah menjadi standar industri global dalam analisis malware dan rekayasa balik. Versi Pro sangat mahal, tetapi untuk tujuan pribadi atau non-komersial, Anda dapat menggunakan versi fungsionalitas terbatas \u0026ldquo;IDA Free\u0026rdquo; secara gratis.\nx64dbg (x32dbg) Ini adalah debugger sumber terbuka untuk Windows. Alat ini mengkhususkan diri dalam \u0026ldquo;analisis dinamis\u0026rdquo;, di mana Anda dapat menganalisis isi dan keadaan memori secara langkah demi langkah saat menjalankan file executable. Ini sering digunakan untuk memecahkan crackme (program tantangan untuk analisis) dan menyelidiki perilaku malware.\nILSpy / dotPeek Jika file EXE target dibuat menggunakan bahasa keluarga .NET seperti C#, menggunakan alat-alat ini memungkinkan Anda untuk mendekompilasi ke keadaan yang hampir identik dengan kode sumber asli dan menelanjangi isinya.\nAlat-alat ini berguna untuk memeriksa isi file EXE, tetapi Anda harus berhati-hati. Mengedit file atau menggunakannya untuk tujuan ilegal dapat menyebabkan masalah hak cipta dan keamanan, jadi pastikan Anda memahaminya sepenuhnya sebelum menggunakannya.\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/id/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/","title":"Alat untuk menganalisis isi file executable (exe)"},{"content":"Pengantar Saya akan menunjukkan cara beralih aplikasi di Mac seperti Windows (Alt+Tab).\nKarena sulit untuk mencapai ini dengan mengubah pengaturan standar, metode ini melibatkan pemasangan aplikasi.\nDemonstrasi Cara mengatur (macOS Ventura) Buka https://alt-tab-macos.netlify.app Klik Download the latest release Buka aplikasi yang diunduh Ikuti instruksi untuk menginstal Sekarang Anda akan dapat beralih aplikasi dengan Alt+Tab seperti di Windows.\nSelesai\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/id/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":"Cara beralih aplikasi seperti Windows (Alt+Tab) di Mac"},{"content":"Pengantar Saat beralih antara menggunakan Windows dan Mac, tombol pintasan keyboard yang sering digunakan seperti salin, tempel, dan batalkan berbeda. Di sini saya akan memperkenalkan cara untuk menyamakannya.\nCara Pengaturan (macOS Ventura) Buka Pengaturan Sistem Pilih Keyboard Pilih Pintasan Keyboard Pilih Tombol Pengubah Tetapkan tombol Control(^) ke \u0026ldquo;⌘ Command\u0026rdquo; Tetapkan tombol Command(⌘) ke \u0026ldquo;^ Control\u0026rdquo; Klik Selesai Sekian\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/id/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":"Cara menyamakan tombol pintasan salin \u0026 tempel di Mac dengan Windows"},{"content":"Pengantar Saya menggunakan keyboard US, dan di Windows saya beralih ke input bahasa Jepang dengan Alt + `. Saya ingin beralih menggunakan tombol yang sama di mac, dan setelah mencari tahu, ternyata itu bisa diubah di pengaturan.\nCara mengatur (macOS Ventura) Buka Pengaturan Sistem Pilih Keyboard Pilih Pintasan Keyboard Pilih Sumber Input Klik ganda pada representasi pintasan di sebelah kanan \u0026ldquo;Pilih sumber berikutnya di menu Input\u0026rdquo; Masukkan Alt + ` Klik Selesai Sekarang, Anda akan dapat beralih antara bahasa Inggris ⇔ bahasa Jepang dengan Alt + `. Namun, secara default, katakana disertakan dalam peralihan, jadi saya menghapus katakana dari sumber input menggunakan langkah-langkah berikut.\nBuka Pengaturan Sistem Pilih Keyboard Klik Edit di sebelah kanan Jepang - Input Romaji di Sumber Input Klik Jepang - Input Romaji Hapus centang Katakana di Mode Input Klik Selesai Sekian\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/id/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":"Cara mengubah pintasan keyboard untuk beralih antara input bahasa Jepang dan bahasa Inggris di mac"},{"content":"Cara Menemukan Lokasi File Executable di Path Windows Saat menjalankan perintah dengan menentukan file executable, kadang-kadang Anda ingin tahu di mana file executable itu berada. Dalam kasus seperti itu, Anda dapat menggunakan perintah di bawah ini untuk memeriksa lokasi file executable.\n1 where \u0026lt;nama file executable\u0026gt; Misalnya, jika Anda ingin mengetahui lokasi Paint (mspaint.exe), lakukan hal berikut:\n1 where mspaint.exe Referensi 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/id/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":"Cara Menemukan Lokasi File Executable di Path Windows"},{"content":"Membeli mac mini(2018) Saya membeli mac mini(2018) bekas model lama di Mercari. Spesifikasinya sebagai berikut.\nCPU: 3.2GHz 6-core Intel Core i7 Memori: 32GB Penyimpanan: 1TB SSD Harganya adalah 77.000 yen.\nAlasan pembelian Saya menggunakan mac mini dengan spesifikasi yang hampir sama di tempat kerja untuk mengembangkan aplikasi smartphone, dan saya juga ingin menyiapkan lingkungan pengembangan (terutama lingkungan eksekusi xcode) di rumah. Saya memiliki macbook pro, tetapi saya membelinya 9 tahun yang lalu dan kinerjanya cukup lambat, jadi saya jarang menggunakannya. Secara pribadi saya ingin mengembangkan aplikasi iOS. Langsung menginstal xcode dan inteliJ IDEA Versi xcode adalah Version 14.3 (14E222b) Versi inteliJ IDEA adalah 2023.1 Ayo! Saya akan mulai mengembangkan!\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/id/p/membeli-mac-mini2018/","title":"Membeli mac mini(2018)"},{"content":"Tentang \u0026ldquo;Unsplash\u0026rdquo; https://unsplash.com/ja/\nRingkasan tentang situs materi foto \u0026ldquo;Unsplash\u0026rdquo; adalah sebagai berikut:\nSemua gambar dapat digunakan secara gratis Boleh digunakan untuk tujuan komersial Modifikasi gambar diperbolehkan Tidak memerlukan izin penggunaan Tidak memerlukan atribusi Sangat mudah digunakan saat menulis artikel di blog, jadi silakan dicoba.\n※ Untuk lisensi, silakan merujuk ke \u0026ldquo;catatan kaki\u0026rdquo; di bawah ini. 1\nSaya juga akan memanfaatkannya di situs ini.\nLisensi Unsplash\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/id/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/","title":"Tentang situs materi foto \"Unsplash\" yang dapat digunakan untuk blog"},{"content":"Mendapatkan Contoh egui Anda dapat menjalankan contoh egui dengan perintah berikut.\n1 2 3 git clone https://github.com/emilk/eframe_template/ egui_test cd egui_test cargo run Memuat Font yang Mendukung Bahasa Jepang Untuk menampilkan bahasa Jepang, Anda perlu memuat font yang mendukungnya.\nDi src/app.rs, tambahkan baris berikut di dalam metode pub fn new.\n1 2 3 4 5 6 7 8 9 10 11 12 // Memuat font yang mendukung bahasa Jepang 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); Sekarang Anda Dapat Menampilkan Bahasa Jepang. ","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/id/p/cara-menampilkan-bahasa-jepang-di-egui/","title":"Cara Menampilkan Bahasa Jepang di egui"},{"content":"Apa itu KaTeX? KaTeX adalah pustaka javascript untuk menampilkan rumus matematika bergaya LaTeX dalam HTML.\nSecara khusus, Anda dapat menampilkan rumus seperti berikut ini:\n$$f(x) = x^2 + x + 41$$ Tampaknya ada pustaka tampilan rumus bergaya LaTeX lainnya, tetapi KaTeX dikenal karena sederhana dan cepat.\nCara menambahkan ke hugo Buat file baru layouts/partials/math.html dalam hierarki folder hugo. Isinya harus sebagai berikut:\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; Selanjutnya, tambahkan kode berikut ke file yang sudah ada layouts/partials/extend_head.html. 1 2 3 {{ if or .Params.math .Site.Params.math }} {{ partial \u0026#34;math.html\u0026#34; . }} {{ end }} Sekarang Anda siap menggunakan KaTeX. Dengan menambahkan math: true ke front matter halaman, Anda dapat mengaktifkan KaTeX.\nYang harus Anda lakukan adalah menulis rumus gaya LaTeX di badan artikel. 1 $$ e^{i \\pi} = -1 $$ Saat ditulis seperti di atas, ini akan ditampilkan sebagai berikut:\n$$ e^{i \\pi} = -1 $$ Referensi Math Typesetting | PaperModX KaTex Auto-render Extension Pengenalan 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/id/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/","title":"Cara Mengaktifkan KaTeX (Tampilan Rumus Gaya LaTeX) di hugo"},{"content":"Bagaimana Mencari Kawan dan Mempengaruhi Orang Lain https://amzn.to/3YTv0Dr\nKeberanian untuk Tidak Disukai https://amzn.to/3n3SVCQ\nPergeseran Kehidupan: Strategi Hidup di Era Kehidupan 100 Tahun https://amzn.to/3TtKUDf\n7 Kebiasaan Manusia yang Sangat Efektif 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/id/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/","title":"Buku Bisnis yang Direkomendasikan"},{"content":"Ekstensi Chrome yang Direkomendasikan Saya akan memperkenalkan ekstensi Chrome yang saya gunakan saat ini. Meskipun untuk Chrome, ekstensi ini juga dapat digunakan di Microsoft Edge.\n1. simpleGestures Ekstensi yang memungkinkan Anda menggunakan gerakan mouse. Anda dapat mengontrol browser tanpa menggunakan keyboard atau menyejajarkan tombol pada toolbar.\nSebagai contoh, Anda dapat kembali dengan menahan tombol kanan mouse dan menggeser mouse ke kiri, atau maju dengan menahan tombol kanan mouse dan menggeser mouse ke kanan.\nIni juga sumber terbuka, sehingga sangat andal.\nsimpleGestures github 2. uBlock Origin Ekstensi yang memblokir iklan. Sumber terbuka sehingga sangat andal. Selain itu, ekstensi ini menggunakan sedikit CPU dan memori serta berjalan lancar.\nuBlock Origin github 3. Terjemahan DeepL Ekstensi Chrome yang memungkinkan Anda menerjemahkan halaman menggunakan layanan terjemahan DeepL yang terkenal di dunia. Saat Anda memilih teks yang ingin Anda terjemahkan di browser, ikon DeepL akan ditampilkan, dan mengkliknya akan menerjemahkannya secara otomatis.\nDeepL Translator 4. Bilah Sisi ChatGPT Ekstensi untuk menggunakan ChatGPT di bilah sisi. Anda dapat menampilkan bilah sisi dengan menekan Ctrl+P, dan segera mengajukan pertanyaan kepada AI. Jika teks apa pun dipilih pada halaman, teks tersebut akan langsung disalin ke pertanyaan Anda, sehingga Anda dapat segera bertanya dengan Ctrl+Enter.\nChatGPT Sidebar 5. Salesforce DevTools Ekstensi yang menambahkan fitur berguna untuk pengembangan Salesforce. Saya rasa ini tidak perlu bagi mereka yang tidak menggunakan Salesforce.\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/id/p/ekstensi-chrome-yang-direkomendasikan/","title":"Ekstensi Chrome yang Direkomendasikan"},{"content":"Cara memperbarui rustc Cukup jalankan satu baris berikut dengan perintah.\n1 rustup update Referensi keluaran 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/id/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":"Cara memperbarui rustc"},{"content":"Apa itu egui Ini adalah pustaka GUI yang dapat digunakan dengan rust.\nMencoba egui Anda dapat menjalankan contoh egui dengan perintah berikut.\n1 2 3 git clone https://github.com/emilk/eframe_template/ egui_test cd egui_test cargo run Setelah itu, Anda dapat mencoba berbagai hal sambil bermain-main dengan kode contohnya.\nReferensi Repositori resmi di 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/id/p/mencoba-egui/","title":"Mencoba egui"},{"content":"Cara Menghilangkan Noise YAMAHA AG03 Saat mendengarkan suara PC melalui monitor AG03, ada noise kasar secara teratur (sekitar setiap 1 hingga 3 menit). Setelah mencari tahu, sepertinya ada cara berikut untuk mengatasi noise pada AG03:\nhttps://jp.yamaha.com/support/updates/yamaha_steinberg_usb_driver_for_win.html\nDengan mengunduh dan menginstal Yamaha Steinberg USB Driver dari situs di atas, noise tersebut berhasil dihilangkan.\nBeli Sekarang Referensi 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/id/p/ag03%E3%83%8E%E3%82%A4%E3%82%BA%E8%A7%A3%E6%B6%88%E6%96%B9%E6%B3%95/","title":"Cara Menghilangkan Noise AG03"},{"content":"Periferal PC yang Direkomendasikan \u0026amp; Diinginkan oleh Insinyur Aktif Keyboard Pertama-tama, keyboard dengan sakelar kapasitif tanpa sentuhan yang sulit rusak sangat direkomendasikan. Saya telah memiliki RealForce selama lebih dari 10 tahun, dan saya masih aktif menggunakannya hingga hari ini. Tipe yang saya gunakan adalah tata letak bahasa Inggris yang senyap.\nNamun, belakangan ini saya juga tertarik dengan keyboard bernama Logitech MX Keys.\nTrackball Sebagai perangkat penunjuk, trackball direkomendasikan daripada mouse karena dapat mengurangi kelelahan.\nPerangkat yang saya gunakan adalah Logitech MX Ergo. Ini adalah produk mahal yang harganya lebih dari 10.000 yen, tetapi saya pikir nilainya lebih dari itu.\nSaya juga tertarik dengan DEFT PRO(M-DPT1MRXBK), yaitu tipe yang memiliki bola besar dan dioperasikan dengan jari telunjuk dan jari tengah. Layar Apa saja boleh, tetapi layar 4K beresolusi tinggi direkomendasikan.\nSaat ini saya menggunakan layar 4K DELL.\nSekarang saya menginginkan layar lebar dari EIZO atau 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/id/p/periferal-pc-yang-direkomendasikan/","title":"Periferal PC yang Direkomendasikan"},{"content":"Layanan fontplus.jp untuk menggunakan font web berbayar https://fontplus.jp/\nDengan 1.100 yen per bulan, Anda dapat menggunakan semua font, dan mendukung penggunaan di berbagai situs web.\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/id/p/fontplus.jp/","title":"Tentang fontplus.jp"},{"content":"Secara default, HUGO tidak mengizinkan penggunaan tag HTML di dalam artikel, tetapi Anda dapat mengaktifkannya dengan menambahkan kode berikut pada file config.toml.\n1 2 [markup.goldmark.renderer] unsafe = true Referensi: 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/id/p/menggunakan-tag-html-di-hugo/","title":"Menggunakan Tag HTML di HUGO"},{"content":"Mencari Sponsor GitHub Saya akan sangat senang jika Anda bisa menjadi sponsor GitHub saya melalui tombol di bawah ini.\nDana ini akan digunakan untuk pengembangan alat dan keperluan lainnya.\nSaya akan berusaha keras hingga dapat memiliki Sertifikat Penandatanganan Kode!\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/id/p/mencari-sponsor-github/","title":"Mencari Sponsor GitHub"},{"content":"Apa itu tombol Tombol adalah salah satu kontrol GUI yang dapat diimplementasikan dengan API standar Windows. Ketika area di layar diklik (tombol kiri mouse ditekan, tombol kiri mouse dilepas), operasi yang ditentukan dalam program dapat dieksekusi.\n1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 // Membuat tombol 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); ... // Pesan WM_COMMAND dikirim dari OS ke jendela saat diklik. case WM_COMMAND: switch(LOWORD(wParam)) { case ID_BUTTON1: SendMessage(hWnd,WM_CLOSE,0,0); break; } break; Contoh kode dapat ditemukan di bawah ini. 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/id/p/%E3%83%9C%E3%82%BF%E3%83%B3%E3%81%A4%E3%81%84%E3%81%A6/","title":"Tentang Tombol"},{"content":"Saya Membeli Laptop ThinkPad (Bekas) Karena pekerjaan saya di laptop sebagian besar dilakukan melalui koneksi desktop jarak jauh ke perangkat lain, saya tidak memerlukan PC berspesifikasi tinggi. ChromeBook sebenarnya bisa saja, tetapi karena tidak ada desain yang bagus atau resolusi tinggi, saya membeli ThinkPad.\nSpesifikasinya seperti di bawah ini, dan harganya sekitar 55.000 yen menggunakan berbagai poin.\nThinkPad T470s CPU: Intel Core i7 7600U RAM: 24GB SSD: 512GB OS: Windows 10 Pro 64bit Layar: 14,0 inci lebar (panel non-glare) Resolusi: LCD WQHD 2560×1440 Berat: sekitar 1,32kg Catatan: Keyboard bahasa Inggris Karena bekas, saya pikir mungkin ada tanda-tanda penggunaan atau goresan, tetapi ternyata sama sekali tidak ada masalah dan bagus. Baterai juga berfungsi tanpa masalah sejauh ini.\nKeluhan yang bisa saya pikirkan saat ini Tidak ada tombol Pause dan tombol App. Saya menggunakan tombol Pause sebagai pintasan untuk membuka pengaturan sistem. Selain itu, saya menggunakan tombol App untuk membuka menu pop-up, jadi tidak nyaman tanpa tombol tersebut. Tombol PageUp dan PageDown berada tepat di sebelah tombol panah pada keyboard, jadi saya sering salah menekannya. Mungkin ini hanya masalah kebiasaan. PC lain yang saya pertimbangkan tetapi tidak dibeli ASUS Chromebook Flip C436FA (C436FA-ENG) HP Laptop HP15s-fq Bahan referensi: 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/id/p/saya-membeli-thinkpad-bekas/","title":"Saya Membeli ThinkPad (Bekas)"},{"content":"Koneksi Jarak Jauh yang Mudah dengan TeamViewer Menggunakan TeamViewer, koneksi desktop jarak jauh dapat dilakukan dengan mudah.\nMulai TeamViewer di komputer tujuan jarak jauh dan komputer asal, lalu masukkan ID dan kata sandi komputer tujuan jarak jauh di komputer asal untuk melakukan koneksi.\nUntuk melakukan koneksi jarak jauh menggunakan baris perintah, lakukan sebagai berikut:\n1 %ProgramFiles%\\TeamViewer\\TeamViewer.exe -i \u0026lt;ID\u0026gt; -P \u0026lt;Password\u0026gt; Masukkan ID tujuan jarak jauh ke dalam \u0026lt;ID\u0026gt;, dan kata sandi tujuan jarak jauh ke dalam \u0026lt;Password\u0026gt;.\nSangat praktis jika Anda membuat file pintasan dengan perintah di atas, karena Anda dapat melewati proses memasukkan ID/PW setiap saat.\nSitus referensi: 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/id/p/koneksi-jarak-jauh-mudah-teamviewer/","title":"Koneksi Jarak Jauh yang Mudah dengan TeamViewer"},{"content":" Orang bodoh belajar dari pengalaman, orang bijak belajar dari sejarah (Otto von Bismarck)\nJangan beri seseorang ikan, tetapi ajari dia cara memancing (Lao Tzu)\nTetaplah merasa lapar, tetaplah merasa bodoh (Steve Jobs)\nSelesai lebih baik daripada sempurna (Mark Zuckerberg)\nJaga agar tetap sederhana (James Gosling)\nSaya tidak punya waktu untuk khawatir tentang siapa yang tidak menyukai saya. Saya terlalu sibuk mencintai orang-orang yang mencintai saya. (Snoopy)\nKebahagiaan terbesar bagi manusia adalah \u0026ldquo;menemukan pekerjaan yang dapat memaksimalkan potensinya\u0026rdquo; (Karl Marx)\nJika sedikit pengetahuan itu berbahaya, di manakah orang yang memiliki pengetahuan begitu banyak sehingga terhindar dari bahaya? (Thomas Huxley 1877)\n\u0026ldquo;Sebaliknya,\u0026rdquo; lanjut Tweedledee, \u0026ldquo;jika memang begitu, mungkin saja begitu; dan jika memang begitu, maka jadilah begitu; tapi karena tidak begitu, maka tidak begitu. Itulah logika.\u0026rdquo; (Lewis Carroll, \u0026ldquo;Through the Looking-Glass\u0026rdquo; 1872)\nTidak berlebihan untuk menyebut Claude Shannon sebagai bapak era informasi, dan pencapaian akademisnya adalah salah satu yang terbesar di abad ke-20. (Ulasan oleh American Mathematical Society)\nMereka yang menyadari keadaan teori simbolik aljabar saat ini, tahu bahwa validitas proses analisis tidak bergantung pada interpretasi simbol yang digunakan, melainkan semata-mata pada hukum kombinasinya. (George Boole, di awal bukunya \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/id/p/kumpulan-kutipan/","title":"Kumpulan Kutipan"},{"content":"Editor Grafik Ini adalah pengenalan ke halaman web yang memungkinkan Anda membuat grafik sederhana.\nhttps://csacademy.com/app/graph_editor/\nAnda dapat membuat grafik dengan memasukkan nilai numerik. Selain itu, sepertinya Anda juga dapat memindahkan elemen menggunakan mouse.\nDengan mengklik Directed, Anda juga dapat membuat grafik berarah.\nAnda dapat menyimpan grafik yang telah Anda buat atau grafik yang dibuat melalui Download as PNG sebagai gambar.\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/id/p/%E3%82%B0%E3%83%A9%E3%83%95%E3%82%A8%E3%83%87%E3%82%A3%E3%82%BF/","title":"Editor Grafik"},{"content":"Menyelesaikan Masalah Pedagang Keliling dengan Mathematica Masalah 電車でこんな広告を見かけました😁📸 pic.twitter.com/iXEgvtXrpL\n\u0026mdash; 早稲田大学 早水桃子研究室 (@hayamizu_lab) October 11, 2022 Solusi 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]; Buat matriks menggunakan fungsi SparseArray. Setiap elemen mewakili jarak antara kota-kota di baris dan kolom elemen tersebut. Misalnya, elemen pertama {1,2}-\u0026gt;10 berarti jarak antara 1 dan 2 adalah 10. Elemen kedua dari belakang {9,9} menunjukkan ukuran matriks, dan elemen terakhir Infinity berarti panjang jalur antar kota yang tidak ditentukan adalah tak terhingga. Dengan kata lain, itu berarti tidak ada jalan.\n1 {len,tour}=FindShortestTour[{1,2,3,4,5,6,7,8,9},DistanceFunction-\u0026gt;(d[[#1,#2]]\u0026amp;)] Anda dapat dengan mudah menyelesaikan masalah pedagang keliling dengan fungsi FindShortestTour. {1,2,3,4,5,6,7,8,9} mewakili nomor kota. DistanceFunction-\u0026gt;(d[[#1,#2]]\u0026amp;) meneruskan matriks d yang mewakili jarak antar kota.\nKeluaran 1 {137, {1, 2, 5, 9, 8, 7, 6, 3, 4}} Keluarannya adalah jarak terpendek dan rute pada saat itu. Jarak terpendek adalah 137, dan rutenya adalah 1→2→5→9→8→7→6→3→4→1. Jika urutannya diubah menjadi ABC, maka akan menjadi 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/id/p/menyelesaikan-masalah-pedagang-keliling-dengan-mathematica/","title":"Menyelesaikan Masalah Pedagang Keliling dengan Mathematica"},{"content":"Untuk mencentang semua kotak centang di halaman web, buka DevTools dengan F12, tempelkan kode berikut ke dalam konsol, dan jalankan.\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; } } Atau,\nBuat bookmark baru, dan tempelkan kode berikut ke alamat saat mendaftar (biasanya di bagian Anda memasukkan https://\u0026hellip;). Buka halaman web di mana Anda ingin mencentang kotak, klik bookmark yang telah dibuat, dan semua kotak centang akan dicentang.\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;}}})(); Jika Anda ingin menghapus semua centang, ubah bagian boxes[i].checked = true; pada skrip di atas menjadi 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/id/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/","title":"Mencentang Semua Kotak Centang di Halaman Web"},{"content":"Teorema Wilson Jika $p$ adalah bilangan prima, maka berlaku $(p−1)!≡−1 \\pmod p$\nRumus Euler $e^{iπ}+1=0$\nTeorema Terakhir Fermat Untuk bilangan bulat $n≥3$, tidak ada bilangan bulat positif $x,y,z$ yang memenuhi $x^n+y^n=z^n$\nMasalah Basel $1/1^2+1/2^2+1/3^2+1/4^2+...=π^2/6$\nPolinomial penghasil bilangan prima Euler $n^2+n+41$ menghasilkan bilangan prima untuk semua bilangan bulat $n$ dari $0$ hingga $39$\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/id/p/rumus-matematika-favorit-saya/","title":"Rumus Matematika Favorit Saya"},{"content":"Prasyarat Harus Windows 11\nLangkah-langkah Instal App Installer dari Microsoft Store https://www.microsoft.com/store/productId/9NBLGGH4NNS1 Instal aplikasi menggunakan Command Prompt 1 winget install Google.Chrome Aplikasi utama yang dapat diinstal Google Chrome (perintah winget install Google.Chrome) Microsoft Edge (perintah winget install Microsoft.Edge) Microsoft Teams (perintah winget install Microsoft.Teams) Microsoft Office (perintah winget install Microsoft.Office) Visual Studio Code (perintah winget install vscode) Slack (perintah winget install SlackTechnologies.Slack) Discord (perintah winget install Discord.Discord) Docker Desktop (perintah winget install Docker.DockerDesktop) Git (perintah winget install Git) 7zip (perintah winget install 7zip) VLC (perintah winget install VideoLAN.VLC) Referensi Menggunakan alat winget untuk menginstal dan mengelola aplikasi\nCatatan tambahan Saya pikir saya bisa menginstal Paint.Net juga, tetapi ternyata tidak bisa.\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/id/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":"Menginstal Aplikasi dengan Perintah menggunakan WinGet"},{"content":"Fitur Rust Bahasa pemrograman open source yang relatif baru yang dikembangkan oleh Mozilla Bahasa yang cepat tanpa garbage collection, dikhususkan untuk pemrograman sistem Memiliki mekanisme kepemilikan dan peminjaman yang unik sebagai spesifikasi bahasa, dan menjamin keamanan memori Beroperasi secara lintas platform Memiliki manajer paket yang sangat baik yang disebut Cargo sebagai standar ","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/id/p/rust%E3%81%AE%E7%89%B9%E5%BE%B4/","title":"Fitur Rust"},{"content":"Untuk mengatur variabel secara dinamis di Github Actions, Anda dapat mencapainya dengan menulis tambahan ke $env:GITHUB_ENV seperti di bawah ini.\n【Untuk 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 【Untuk 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/id/p/mengatur-variabel-secara-dinamis-di-github-actions/","title":"Mengatur variabel secara dinamis di Github Actions"},{"content":"Menghapus tag lokal Periksa tag yang ada di lokal dengan git tag. Hapus tag dengan git tag -d v0.1.0. (Ganti v0.1.0 dengan tag yang ingin Anda hapus) Menghapus tag jarak jauh (remote) Periksa tag yang ada di jarak jauh dengan git ls-remote --tags. Hapus tag yang ada di jarak jauh dengan git push origin --delete v0.1.0. (Ganti v0.1.0 dengan tag yang ingin Anda hapus) Referensi Cara menghapus tag git secara lokal dan jarak jauh!\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/id/p/git%E3%81%A7%E3%82%BF%E3%82%B0%E3%82%92%E6%B6%88%E3%81%99/","title":"Menghapus tag di git"},{"content":"Menampilkan jendela sederhana di Rust\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;] Kode sumbernya ada di bawah\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 } Referensi Pemrograman Windows di Rust - bagian 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/id/p/menampilkan-jendela-sederhana-di-rust/","title":"Menampilkan jendela sederhana di Rust"},{"content":"Untuk menulis pengujian di Rust, buat sebuah fungsi dan tambahkan atribut #[test] satu baris di atas definisi fungsi pengujian tersebut.\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); } Kode pengujian dapat dijalankan dengan cargo test. Jika pengujian berhasil, ok akan dikeluarkan. Jika gagal, FAILED akan dikeluarkan.\nJika berhasil\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 Jika gagal\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/id/p/rust%E3%81%A7%E3%83%86%E3%82%B9%E3%83%88%E3%82%92%E6%9B%B8%E3%81%8F/","title":"Menulis Pengujian di Rust"},{"content":"Anda dapat menampilkan MessageBox di Rust dengan mengikuti langkah-langkah di bawah ini.\nInstal Rust. Lihat Cara memulai Rust Jalankan cargo new --bin MessageBox di command prompt. Pindah ke direktori MessageBox. Buka Cargo.toml dan modifikasi seperti di bawah ini. 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; Buka src\\main.rs dan modifikasi seperti di bawah ini. 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 ); } } Jalankan cargo run di command prompt. Untuk melakukan build rilis, jalankan cargo build --release.\nReferensi 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/id/p/menampilkan-messagebox-di-rust/","title":"Menampilkan MessageBox di Rust"},{"content":"Apa itu Mengerti? Halo!\nHari ini saya ingin berbicara tentang tema, \u0026ldquo;Apa itu mengerti?\u0026rdquo;\nApakah \u0026ldquo;mengerti\u0026rdquo; sebenarnya ambigu? Dalam kehidupan sehari-hari, ada saat-saat ketika Anda merasa, \u0026ldquo;Saya mengerti!\u0026rdquo; Tapi jika Anda memikirkannya baik-baik, apakah \u0026ldquo;mengerti\u0026rdquo; itu benar-benar pemahaman yang sempurna?\nMisalnya, mengemudikan mobil. Jika Anda menginjak pedal gas, mobil maju, dan jika Anda menginjak rem, mobil berhenti. Ini mungkin bisa dikatakan \u0026ldquo;mengerti\u0026rdquo;. Namun, saya rasa sedikit orang yang bisa menjelaskan secara rinci apa yang terjadi di dalam mesin.\nApakah pemahaman yang sempurna diperlukan? Sebenarnya, meskipun kita tidak mengerti segalanya dengan sempurna, seringkali tidak ada hambatan dalam kehidupan sehari-hari. Bahkan jika Anda tidak mengetahui struktur internal sebuah smartphone, Anda masih bisa menelepon atau mengirim pesan.\nMeskipun begitu, bukan berarti kita boleh meremehkan apa yang dimaksud dengan \u0026ldquo;mengerti\u0026rdquo;. Jika pemahaman kita semakin dalam, penemuan dan kesadaran baru juga bisa muncul.\nAda banyak hal yang juga tidak dimengerti Ada banyak hal di dunia ini yang belum terpecahkan. Misalnya, mekanisme emosi dan kesadaran manusia, atau asal usul alam semesta. Bidang-bidang ini masih belum sepenuhnya \u0026ldquo;dimengerti\u0026rdquo; bahkan dengan kemajuan sains.\nDalam dunia matematika juga, ada masalah yang masih belum terpecahkan, seperti \u0026ldquo;Konjektur Goldbach\u0026rdquo;, meskipun itu adalah masalah yang sederhana.\nNilai dari \u0026ldquo;mengerti\u0026rdquo; Saat hal yang kita \u0026ldquo;mengerti\u0026rdquo; bertambah, kita bisa menjelaskan dengan percaya diri dan berkomunikasi dengan orang lain secara efektif. Selain itu, dengan memiliki pengetahuan, kita juga mendapat keuntungan yaitu tidak mudah tertipu oleh misinformasi.\nSikap rendah hati itu penting Menyadari bahwa diri kita \u0026ldquo;tidak mengerti\u0026rdquo; akan mengarah pada kerendahan hati. Dan justru karena adanya kesadaran itu, keinginan untuk terus belajar akan muncul.\nOleh karena itu, meskipun \u0026ldquo;mengerti\u0026rdquo; itu penting, memahami segalanya dengan sempurna adalah hal yang sulit. Yang terpenting adalah mengetahui batas pemahaman kita dan memiliki sikap untuk terus belajar, bukan?\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/id/p/apa-itu-mengerti/","title":"Apa itu Mengerti?"},{"content":"Saya berpikir tentang mengapa saya menyukai matematika dan komputer Kesetaraan bagi semua orang Terlepas dari siapa orangnya, posisinya, atau tempatnya, selalu memberikan keluaran yang sama untuk masukan yang sama.\nAturan yang jelas Aturannya ditetapkan dengan jelas, dan tidak ada absurditas atau ketidakadilan.\nJawaban dan teori yang diturunkan benar selamanya Tidak perlu khawatir bahwa jawaban yang telah dihasilkan akan diubah kemudian.\nAda tingkat kesulitan yang sedang Selalu ada masalah yang belum terpecahkan, dan Anda selalu dapat menantang diri sendiri untuk memecahkannya.\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/id/p/mengapa-saya-menyukai-matematika-dan-komputer/","title":"Mengapa Saya Menyukai Matematika dan Komputer"},{"content":"Apa yang Dibutuhkan Komunitas Saya merasa bahwa pedoman komunitas Scratch sangat disempurnakan dan bagus. Hal-hal berikut ini tertulis.\nPerlakukan semua orang dengan hormat.\nTetap aman: jangan mempublikasikan informasi pribadi atau kontak.\nBerikan komentar yang bermanfaat.\nPahami budaya remix.\nBersikaplah jujur.\nJadikan situs ini tempat yang nyaman.\nSaya pikir perspektif ini berlaku untuk komunitas mana pun.\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/id/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/","title":"Apa yang Dibutuhkan Komunitas"},{"content":"Fermat (P. de Fermat, 1601-1665) Matematikawan Prancis perwakilan abad ke-17. Ia meletakkan dasar-dasar geometri analitik, teori probabilitas, dan kalkulus. Ia juga merupakan pendiri teori bilangan.\nDiophantus (Diophantus, sekitar 207-291) Matematikawan Yunani. Terkenal karena pengenalan simbolisme dan studi tentang solusi rasional. Karya utamanya adalah \u0026ldquo;Arithmetica\u0026rdquo;. Bidang yang mencari solusi rasional dari persamaan disebut analisis Diophantine.\nEuler (L. Euler, 1707-1783) Raja matematika kelahiran Swiss. Ia mencapai prestasi di hampir semua bidang matematika. Lebih dari 700 makalah dan 45 buku peninggalannya masih ada.\nLegendre (A. M. Legendre, 1752-1833) Matematikawan Prancis. Meninggalkan banyak prestasi dalam teori bilangan, integral eliptik, dan masalah gravitasi. Istilah \u0026ldquo;Teori Bilangan\u0026rdquo; berasal dari karya utamanya yang berjudul sama.\nKummer (E. E. Kummer, 1810-1893) Matematikawan Jerman. Mencapai hasil yang luar biasa dengan menerapkan teori bilangan dari medan siklotomik pada Teorema Terakhir Fermat.\nDescartes (R. Descartes, 1596-1650) Filsuf inovatif Prancis. Karya perwakilannya meliputi \u0026ldquo;Diskursus tentang Metode\u0026rdquo;, \u0026ldquo;Geometri\u0026rdquo;, dan \u0026ldquo;Kosmologi\u0026rdquo;.\nPascal (B. Pascal, 1623-1662) Filsuf Prancis yang dikenal karena penelitiannya dalam teori probabilitas dan fluida. Kemudian ia bergabung dengan aliran Jansenis dan terlibat dalam kegiatan keagamaan. \u0026ldquo;Pensées\u0026rdquo; adalah karyanya dari masa itu.\nBachet (C. G. Bachet, 1581-1638) Bangsawan Prancis, mempelajari teka-teki angka sebagai hobi. Menerbitkan terjemahan Latin dari \u0026ldquo;Arithmetica\u0026rdquo; karya Diophantus, dan menambahkan penelitiannya sendiri sebagai anotasi.\nWallis (J. Wallis, 1616-1703) Matematikawan Inggris. Memberikan bentuk matematis pada konsep limit dalam karya utamanya \u0026ldquo;Aritmetika Ketakterhinggaan\u0026rdquo; dan berkontribusi pada peletakan dasar kalkulus.\nBrouncker (W. Brouncker, 1620-1684) Bangsawan Irlandia. Presiden pertama Royal Society (Akademi Inggris). Seorang penggemar matematika, ia berinteraksi dengan Wallis dan yang lainnya.\nLagrange (J. L. Lagrange, 1736-1813) Matematikawan Prancis kelahiran Italia. Menggantikan Euler sebagai Direktur Matematika di Akademi Berlin. Mencapai prestasi besar dalam teori bilangan, mekanika analitik, dll.\nSiegel (C. L. Siegel, 1896-1981) Pakar teori bilangan Jerman. Memberikan banyak kontribusi dalam teori bilangan analitik.\nFibonacci (L. Fibonacci, sekitar 1175-1250) Matematikawan Italia. Menggunakan angka Hindu-Arab dalam karya utamanya \u0026ldquo;Liber Abaci\u0026rdquo; dan berkontribusi pada penyebarannya. Ia juga membahas bilangan kongruen dalam \u0026ldquo;Liber Quadratorum\u0026rdquo;.\nBaker (A. Baker, 1939-) Pakar teori bilangan Inggris. Dianugerahi Fields Medal bersama Heisuke Hironaka atas kontribusinya dalam teori bilangan transenden.\nPoincaré (J. Poincare, 1854-1912) Matematikawan Prancis yang disebut sebagai matematikawan serba bisa terakhir. Meninggalkan karya-karya luar biasa termasuk teori fungsi automorfik, geometri non-Euclidean, persamaan diferensial, mekanika benda langit, elektrodinamika, serta esai-esai ilmiah.\nMordell (L. J. Mordell, 1888-1972) Matematikawan kelahiran Amerika. Orang tuanya adalah imigran dari Lituania. Memiliki banyak makalah tentang teori persamaan Diophantine, tetapi Teorema Mordell dalam teori kurva eliptik sangat terkenal. Weil memperluas ini ke kasus kurva aljabar umum, dan dari sana geometri aljabar aritmatika mengalami perkembangan yang eksplosif.\nWeil (A. Weil, 1906-) Matematikawan Prancis keturunan Yahudi. Di masa mudanya, ia tertarik pada masalah Fermat, secara mendasar meninjau geometri aljabar dengan tujuan mengaplikasikannya pada teori bilangan, dan meletakkan dasar yang ketat. Ia juga dikenal karena karya-karyanya tentang sejarah matematika.\nMersenne (M. Mersenne, 1588-1648) Pendeta Prancis dari ordo Minim. Bertindak sebagai perantara korespondensi antar matematikawan di berbagai tempat. Bilangan yang dinamakan bilangan Mersenne sebenarnya juga ditemukan oleh Fermat.\nRoberval (G. P. de Roberval, 1602-1675) Matematikawan Prancis. Ia hampir menjadi satu-satunya orang pada saat itu yang mendapatkan posisi profesor sebagai matematikawan, dikenal karena penelitiannya tentang sikloida.\nAbel (N. H. Abel, 1802-1829) Matematikawan Norwegia. Mencapai prestasi luar biasa seperti ketakterpecahkan persamaan kuintik umum, teori fungsi eliptik, dan teori integral Abel, tetapi meninggal di usia muda.\nJacobi (K. G. Jacob, 1804-1851) Matematikawan Jerman keturunan Yahudi. Meninggalkan prestasi besar dalam teori fungsi eliptik, teori fungsi theta, persamaan diferensial, dan kalkulus variasi. Memperkenalkan prestasi Abel kepada dunia. Ia juga dikenal karena menolak pragmatisme dan menyatakan tujuan sains adalah demi \u0026ldquo;kehormatan jiwa manusia\u0026rdquo;.\nGauss (C. F. Gauss, 1777-1855) Raja matematika kelahiran Jerman. Terkenal karena penelitiannya tentang teori bilangan, geometri non-Euclidean, geodesi, deret hipergeometrik, teori permukaan, dan magnetisme bumi. Sebagai perfeksionis, ia tidak mempublikasikan hasil kecuali kesempurnaannya tinggi dan tidak diragukan. Karya utama \u0026ldquo;Disquisitiones Arithmeticae\u0026rdquo;.\nLamé (G. Lame, 1795-1870) Matematikawan Prancis. Berkontribusi pada mekanika elastisitas, teori konduksi panas, dll.\nLiouville (J. Liouville, 1809-1882) Matematikawan Prancis. Berkontribusi pada persamaan diferensial, teori bilangan transenden, dan teori fungsi.\nCauchy (A. L. Cauchy, 1789-1857) Matematikawan Prancis. Sangat produktif dan memiliki banyak prestasi dalam fisika teoretis dan matematika. Dikatakan bahwa di Prancis ia sama dihormatinya dengan Gauss.\nGalois (E. Galois, 1811-1832) Matematikawan Prancis. Dengan memperkenalkan konsep grup, ia menjelaskan teorema Abel bahwa persamaan derajat 5 atau lebih tinggi pada umumnya tidak dapat dipecahkan secara aljabar. Meninggal di usia muda dalam duel, tetapi sekarang diketahui bahwa pemicunya adalah masalah sepele tentang seorang wanita.\nHensel (K. Hensel, 1861-1941) Matematikawan Jerman. Murid Kronecker. Mengaplikasikan metode teori fungsi untuk memperkenalkan teori p-adic (analisis p-adic) ke dalam teori bilangan.\nHasse (H. Hasse, 1898-1979) Matematikawan Jerman. Murid Hensel, berkontribusi pada landasan analisis p-adic dan aplikasinya. Bekerja pada teori medan kelas, studi fungsi-L dari kurva eliptik, dll.\nKronecker (L. Kronecker, 1823-1891) Matematikawan Jerman keturunan Yahudi. Berkontribusi pada teori fungsi eliptik, teori bilangan, dll. Dikenal karena menganjurkan dasar aritmatika untuk matematika, tetapi kepribadiannya yang sangat subjektif, kritik yang tidak masuk akal terhadap rekannya di Universitas Berlin, Weierstrass, dan hambatannya terhadap pekerjaan Cantor, memberikan citra negatif pada hidupnya.\nHilbert (D. Hilbert, 1862-1943) Matematikawan Jerman. Meninggalkan jejak besar di semua bidang matematika, termasuk teori invarian, teori bilangan aljabar, dan dasar-dasar matematika. 23 masalah yang diusulkannya pada Kongres Ahli Matematika Internasional di Paris (1900) memiliki dampak besar pada perkembangan matematika.\nRiemann (B. Riemann, 1826-1866) Matematikawan Jerman. Mencapai prestasi besar yang berkaitan dengan dasar-dasar matematika, seperti konsep permukaan Riemann dalam teori fungsi kompleks, dan geometri Riemann.\nFaltings (G. Faltings, 1954-) Matematikawan Jerman. Memecahkan dugaan Mordell pada tahun 1983.\nWiles (A. Wiles, 1953-) Matematikawan kelahiran Inggris. Otoritas terkemuka di bidangnya, yang memberikan kontribusi besar pada penelitian seperti dugaan utama Iwasawa dan dugaan Birch dan Swinnerton-Dyer.\nReferensi Teorema Terakhir Fermat Terpecahkan! Dari Euler hingga Bukti 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/id/p/tokoh-tokoh-besar-matematika/","title":"Tokoh-Tokoh Besar Matematika"},{"content":"Mendaftar Judul Jendela Cara untuk mendaftar judul jendela yang sedang terbuka menggunakan PowerShell.\n1 Get-Process|where{$_.mainWindowTItle}|Select-Object MainWindowTitle Contoh Output\n1 2 3 4 5 6 7 8 9 MainWindowTitle --------------- Windows PowerShell Internet Explorer Tanpa Judul - Paint Tanpa Judul - Notepad Task Manager Windows Input Experience Dokumen - 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/id/p/mendaftar-judul-jendela/","title":"Mendaftar Judul Jendela"},{"content":"Penghapusan Massal Cepat untuk Folder Besar Saat menghapus folder besar di File Explorer, kecepatannya lambat karena isi folder dipindai sepenuhnya terlebih dahulu sebelum penghapusan dijalankan. Jika Anda menghapus dengan menggunakan perintah seperti di bawah ini, pemindaian dan penghapusan akan dijalankan secara bersamaan, sehingga Anda dapat menghapus folder besar dengan cepat.\nDi Command Prompt, arahkan ke hierarki folder target. Jalankan DEL /F /Q /S NamaFolder \u0026gt; NUL. Jalankan RMDIR /Q /S NamaFolder. ","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/id/p/penghapusan-massal-cepat-untuk-folder-besar/","title":"Penghapusan Massal Cepat untuk Folder Besar"},{"content":"Perintah untuk Menghapus Semua Chatter Salesforce Ini adalah perintah untuk menghapus semua postingan dan lampiran di Salesforce Chatter. Buka Developer Console, pilih \u0026ldquo;Open Execute anonymous Window\u0026rdquo; dari menu Debug, tempelkan kode berikut, dan jalankan. Secara pribadi, saya menggunakannya saat kapasitas penyimpanan organisasi hampir habis.\n1 2 3 4 5 6 delete [select id from FeedItem]; delete [select id from FeedAttachment]; delete [select id from ContentDocument]; // Kosongkan tempat sampah 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/id/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":"Perintah untuk Menghapus Semua Chatter Salesforce"},{"content":"Berikut adalah kumpulan trik kecil yang biasa digunakan di Windows. Saya akan sangat senang jika pengguna baru Windows membacanya. Meskipun ini ditujukan untuk Windows 11, banyak di antaranya yang mungkin juga bisa digunakan di Windows 10.\nMenutup Jendela Alt + F4 saat jendela aktif Ctrl + W saat jendela aktif. Menutup tab atau jendela (hanya aplikasi yang didukung) Klik ganda ikon di sebelah kiri bilah judul jendela Klik × pada bilah judul jendela Menampilkan Desktop Win + D. Menekannya dua kali akan mengembalikan jendela ke keadaan semula. Berguna ketika Anda ingin menampilkan desktop hanya untuk sesaat. Win + M. Meminimalkan semua aplikasi. Menekannya dua kali tidak akan mengembalikannya. Input Suara Win + H. Memulai input suara. Untuk mengakhiri input suara, tekan Esc atau Win + H lagi. Menampilkan Menu Klik Kanan Klasik di Explorer Tekan Shift + F10 atau tombol aplikasi. Tombol aplikasi adalah tombol yang terletak di bagian kanan bawah keyboard. Memilih Area dan Menangkap Layar Anda dapat memilih area dan menangkap layar dengan Win + Shift + S. Anda dapat menangkap seluruh layar dengan Win + Print Screen atau hanya Print Screen. (Jika Anda menambahkan Win, gambar tangkapan akan disimpan di C:\\Users\\NamaPengguna\\Pictures\\Screenshots.) Anda dapat menangkap jendela saat ini dengan Alt + Print Screen. Menjalankan Aplikasi yang Terdaftar di Taskbar Anda dapat menjalankan aplikasi yang terdaftar di taskbar dengan Win + Tombol Angka.\nMisalnya, menekan Win + 1 akan menjalankan aplikasi pertama dari kiri di taskbar. Anda dapat memindahkan fokus ke ikon taskbar dengan Win + T, dan menekan Win + T beberapa kali berturut-turut, atau menggunakan ← atau → untuk memindahkan pilihan, lalu tekan Enter untuk menjalankan aplikasi yang dipilih. Memperbesar / Memperkecil Win + + akan meluncurkan Kaca Pembesar Windows. Kemudian Win + + atau - dapat memperbesar/memperkecil layar. Di Notepad atau browser, Anda dapat memperbesar/memperkecil dengan Ctrl + + atau - (hanya aplikasi yang didukung). Mengunci Windows Win + L Ctrl + Alt + Del → Space atau Enter Mematikan Windows (Shutdown) Saat desktop ditampilkan dengan Win + M atau Win + D, atau saat taskbar aktif dengan Win + T atau Win + B, tekan Alt + F4. Dialog berikut akan muncul, pastikan \u0026ldquo;Shut down\u0026rdquo; dipilih, lalu tekan Enter. Bisa juga dengan Win + R → Alt + F4 → Alt + F4. Anda bisa mematikan dengan Win + X → U → U. Memasukkan shutdown /s /t 0 di Command Prompt atau \u0026ldquo;Run\u0026rdquo; (Win + R) akan mematikan komputer. Menambahkan /f akan memaksanya mati (force shutdown). Memulai Ulang Windows (Restart) Saat desktop ditampilkan dengan Win + M atau Win + D, atau saat taskbar aktif dengan Win + T atau Win + B, tekan Alt + F4. Dialog berikut akan muncul, tekan ↓ satu kali untuk memilih \u0026ldquo;Restart\u0026rdquo;, lalu tekan Enter. Bisa juga dengan Win + R → Alt + F4 → Alt + F4. Anda bisa memulai ulang dengan Win + X → U → R. Anda bisa memulai ulang dengan shutdown /r /t 0. Menambahkan /f akan memaksanya memulai ulang (force restart). Mode Tidur Windows (Sleep) Saat desktop ditampilkan dengan Win + M atau Win + D, atau saat taskbar aktif dengan Win + T atau Win + B, tekan Alt + F4. Dialog berikut akan muncul, tekan ↑ satu kali untuk memilih \u0026ldquo;Sleep\u0026rdquo;, lalu tekan Enter. Bisa juga dengan Win + R → Alt + F4 → Alt + F4. Anda dapat mengubah ke status hibernasi (Hibernate) dengan memasukkan rundll32.exe powrprof.dll,SetSuspendState di Win + R atau Command Prompt. Keluar dari Windows (Sign out / Log off) Saat desktop ditampilkan dengan Win + M atau Win + D, atau saat taskbar aktif dengan Win + T atau Win + B, tekan Alt + F4. Dialog berikut akan muncul, tekan ↑ dua kali untuk memilih \u0026ldquo;Sign out\u0026rdquo;, lalu tekan Enter. Bisa juga dengan Win + R → Alt + F4 → Alt + F4. Win + X → U → I Ctrl + Alt + Del → Tab 2 kali atau ↓ 2 kali → Enter atau Space Anda bisa keluar (log off) dengan mengetik logoff. Memindahkan Jendela Menggunakan Keyboard Win + ← : Pindah ke kiri Win + → : Pindah ke kanan Win + ↑ : Pindah ke atas / Maksimalkan Win + ↓ : Pindah ke bawah / Minimalkan Win + Shift + ← atau → : Pindah antar monitor ganda Win + Alt + ← atau → atau ↑ atau ↓ : Memindahkan jendela tanpa memaksimalkan atau meminimalkan Saat tidak diminimalkan, tekan Alt + Space lalu M, lalu pindahkan menggunakan tombol panah.\n*Karena jendela akan mengikuti kursor mouse, Anda dapat menyelamatkan jendela meskipun ditampilkan di luar layar. Mengakhiri Proses di Task Manager Anda dapat membuka Task Manager dengan Ctrl + Shift + Esc. Anda dapat beralih tab dengan Ctrl + Tab. Setelah menekan Tab pada tab Details (Detail), Anda dapat mencari proses berdasarkan awalan dengan mengetikkan huruf di keyboard. Saat nama proses dipilih, Anda dapat mengakhiri proses tersebut dengan menekan tombol Delete lalu Enter. Mengakhiri Proses Berdasarkan Nama Menggunakan Perintah Anda dapat mengakhiri proses dengan taskkill /f /im namaproses. Misalnya, Anda dapat mengakhiri Explorer dengan taskkill /f /im explorer.exe. Menjalankan Beberapa Program yang Sama dari Ikon Taskbar Jika Anda mengklik kiri sambil menekan tombol Shift di taskbar, Anda dapat menjalankan beberapa program yang sama. (Hanya untuk aplikasi yang mendukung multi-instance). Menjalankan Program dengan Hak Administrator Jika Anda meluncurkan program sambil menekan Ctrl + Shift, Anda dapat meluncurkan program dengan hak administrator. Membuka File Explorer Anda dapat membuka File Explorer dengan Win + E. Tampilkan \u0026ldquo;Run\u0026rdquo; (Jalankan) dengan Win + R, ketik explorer, lalu tekan Enter. Anda dapat membuat folder baru dengan Ctrl + Shift + N. Membuka Command Prompt di Lokasi yang Sedang Terbuka di File Explorer Di Windows 11, Anda dapat membuka Command Prompt dari \u0026ldquo;Terminal\u0026rdquo; di menu klik kanan. Anda juga dapat membuka Command Prompt dengan mengetik cmd di bilah alamat dan menekan Enter. Menampilkan Riwayat Papan Klip (Clipboard History) Anda dapat menampilkan riwayat papan klip dengan Win + V. Jika Anda memilih teks atau gambar yang pernah disalin sebelumnya, Anda dapat menyalinnya lagi. Kotak Dialog \u0026ldquo;Jalankan\u0026rdquo; (Run) Anda dapat meluncurkan kotak dialog \u0026ldquo;Run\u0026rdquo; dengan Win + R. Berikut adalah beberapa perintah yang dapat dijalankan di \u0026ldquo;Run\u0026rdquo; atau Command Prompt.\nMembuka Edge Ketik msedge lalu tekan Enter. Membuka Internet Explorer 11 (IE11) Ketik powershell.exe -Command \u0026quot;(New-Object -ComObject InternetExplorer.Application).Visible = $true\u0026quot; lalu tekan Enter. Membuka Terminal Ketik wt lalu tekan Enter. Membuka Control Panel Ketik control lalu tekan Enter. Anda juga bisa membukanya dengan explorer.exe shell:::{26EE0668-A00A-44D7-9371-BEB064C98683}. Membuka Notepad Ketik notepad lalu tekan Enter. Membuka Kalkulator Ketik calc lalu tekan Enter. Membuka Paint Ketik mspaint lalu tekan Enter. Membuka PowerShell Ketik powershell lalu tekan Enter. Membuka Visual Studio Code Ketik code lalu tekan Enter. Membuka Excel Ketik excel lalu tekan Enter.\n*Hanya jika Excel sudah terinstal. Membuka Word Ketik winword lalu tekan Enter.\n*Hanya jika Word sudah terinstal. Membuka PowerPoint Ketik powerpnt lalu tekan Enter.\n*Hanya jika PowerPoint sudah terinstal. Membuka Konfigurasi Sistem (System Configuration) Ketik msconfig lalu tekan Enter. Membuka Properti Sistem (System Properties) Ketik sysdm.cpl lalu tekan Enter. Membuka Informasi Versi Windows Ketik winver lalu tekan Enter. Membuka Keyboard Layar (On-Screen Keyboard) Ketik osk lalu tekan Enter. Membuka WordPad Ketik wordpad atau write lalu tekan Enter. Membuka Registry Editor Ketik regedit lalu tekan Enter. Membuka Program dan Fitur (Programs and Features) Ketik explorer.exe shell:::{7b81be6a-ce2b-4676-a29e-eb907a5126c5} lalu tekan Enter. Membuka Properti Keyboard Ketik explorer.exe shell:::{725BE8F7-668E-4C7B-8F90-46BDB0936430} lalu tekan Enter. Membuka Properti Mouse Ketik explorer.exe shell:::{6C8EEC18-8D75-41B2-A177-8831D59D2D50} lalu tekan Enter. Membuka Pengaturan Suara (Sound) Ketik explorer.exe shell:::{F2DDFC82-8F12-4CDD-B7DC-D4FE1425AA4D} lalu tekan Enter. Membuka Akun Pengguna (User Accounts) Ketik explorer.exe shell:::{60632754-c523-4b62-b45c-4172da012619} lalu tekan Enter. Menyalin Teks dari Kotak Pesan Standar Anda dapat menyalin teks dari kotak pesan standar dengan Ctrl + C. Menyalin kotak pesan di atas akan menyalin hal berikut ke papan klip. 1 2 3 4 5 6 7 [Window Title] WordPad [Main Instruction] Apakah Anda ingin menyimpan perubahan ke Dokumen? [Simpan (S)] [Jangan simpan (N)] [Batal] Menyimpan Output Command Prompt ke Papan Klip Menambahkan | clip (pipa + clip) di akhir perintah, seperti echo \u0026quot;hello\u0026quot; | clip, dapat menyalin output standar ke papan klip.\nOutput Hierarki Folder ke Teks Anda dapat mengeluarkan hierarki folder dalam format pohon menggunakan perintah tree di Command Prompt.\nContoh output\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 (dan seterusnya) Referensi Pintasan keyboard di Windows ","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/id/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/","title":"Kumpulan Pintasan dan Trik Kecil Windows"},{"content":"Saya ingin memperkenalkan paint.net, perangkat lunak pengeditan gambar yang sering saya gunakan saat melakukan pekerjaan pengembangan.\nFitur berguna yang tidak bisa dilakukan dengan Paint standar Windows Dapat menangani transparansi/opasitas Pemilihan otomatis area yang kompleks Dapat menangani layer Dapat menyesuaikan level, kecerahan, kontras, dll. Berbagai efek (blur, distorsi, noise, dll.) bisa dilakukan Fitur lainnya Gratis untuk digunakan Pengoperasiannya relatif ringan Intuitif untuk digunakan dan tidak rumit Mendukung berbagai bahasa Perangkat lunak ini memiliki fungsionalitas tinggi namun mudah digunakan. Saya sendiri belum menguasai semua fiturnya.\nInstalasi di sini https://www.getpaint.net/download.html\nJika Anda memilih versi gratis, silakan klik bagian berbingkai merah di tautan di bawah ini.\nJika Anda menginstalnya melalui Microsoft Store, perangkat lunak ini berbayar sebagai gantinya Anda mendapatkan fitur pembaruan otomatis. Bahkan dengan versi gratis, pembaruan dapat dilakukan dengan cukup lancar karena memberi tahu Anda tentang informasi pembaruan terbaru.\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/id/p/paint.net%E3%81%AE%E9%AD%85%E5%8A%9B/","title":"Daya Tarik paint.net"},{"content":"Untuk mengatur domain kustom pada repositori Github, Anda perlu mengubah pengaturan DNS domain tersebut. Di sini, kami berasumsi bahwa Anda mengelola domain Anda menggunakan Onamae.com untuk menjelaskan prosesnya. Pengaturan serupa juga dapat dilakukan dengan menulis ulang data A di pendaftar lain.\nMengubah Pengaturan DNS di Onamae.com Untuk mengubah pengaturan DNS domain, masuk ke panel manajemen Onamae.com . Setelah masuk, buka layar manajemen domain. Setelah Anda berada di layar manajemen domain, ubah pengaturan DNS. Untuk mengubah pengaturan DNS, ikuti langkah-langkah berikut.\nKunjungi https://www.onamae.com/ dan klik \u0026ldquo;Login Onamae.com Navi\u0026rdquo; Masukkan \u0026ldquo;ID Onamae (ID Anggota)\u0026rdquo; dan \u0026ldquo;Kata Sandi\u0026rdquo; lalu klik tombol login Klik \u0026ldquo;Pengaturan Server Nama\u0026rdquo; Klik \u0026ldquo;Pengaturan DNS Domain\u0026rdquo; Pilih domain yang ingin Anda atur dan klik \u0026ldquo;Berikutnya\u0026rdquo; Klik \u0026ldquo;Atur\u0026rdquo; di sebelah kanan \u0026ldquo;Gunakan pengaturan catatan DNS\u0026rdquo; Pilih A untuk TYPE, masukkan 3600 untuk TTL, dan \u0026ldquo;185.199.108.153\u0026rdquo; untuk VALUE, lalu klik \u0026ldquo;Tambah\u0026rdquo; Mirip dengan langkah 7, tambahkan juga \u0026ldquo;185.199.109.153\u0026rdquo;, \u0026ldquo;185.199.110.153\u0026rdquo;, dan \u0026ldquo;185.199.111.153\u0026rdquo; Di \u0026ldquo;Konfirmasi perubahan server nama untuk pengaturan catatan DNS\u0026rdquo;, pastikan kotak dicentang dan klik \u0026ldquo;Lanjut ke layar pengaturan\u0026rdquo; Jika layar bertuliskan \u0026ldquo;Untuk mencegah perubahan pengaturan DNS yang tidak disengaja\u0026rdquo; muncul, klik \u0026ldquo;Jangan atur\u0026rdquo; (pilih sesuai kebutuhan) Periksa pengaturan dan klik \u0026ldquo;Atur\u0026rdquo; Ini melengkapi pengaturan DNS. Mungkin butuh hingga sekitar 72 jam agar pembaruan selesai. Jika perubahan tidak tercermin setelah 72 jam, silakan hubungi dukungan Onamae.com. Untuk memeriksa apakah pengaturan telah tercermin di lingkungan lokal Anda, silakan coba jalankan perintah berikut. Ganti example.com dengan domain yang ingin Anda periksa.\nUntuk Linux dan Mac 1 dig example.com +noall +answer -t A Jika hasilnya seperti berikut, pengaturan telah diterapkan.\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 Untuk Windows 1 nslookup -q=a example.com 8.8.8.8 Jika hasilnya seperti berikut, pengaturan telah diterapkan.\n1 2 3 4 5 6 7 8 9 サーバー: dns.google Address: 8.8.8.8 権限のない回答: 名前: example.com Addresses: 185.199.108.153 185.199.109.153 185.199.110.153 185.199.111.153 Mengatur Domain Kustom di Repositori Github Buka halaman repositori dan klik Settings (Pengaturan) Klik Pages (Halaman) Jika Anda mempublikasikan sumber repositori apa adanya, pilih \u0026ldquo;Deploy from a branch\u0026rdquo; di bagian Source. Jika Anda membangun sumber seperti HUGO, pilih \u0026ldquo;GitHub Actions\u0026rdquo;. Pilih cabang yang akan dipublikasikan di bawah Branch dan klik Save (Simpan) Masukkan domain yang Anda peroleh di Custom domain (Domain kustom) dan klik Save. Jika perlu, centang kotak \u0026ldquo;Enforce HTTPS\u0026rdquo; untuk mengaktifkan dukungan HTTPS [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/id/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/","title":"Cara Mengatur Domain Kustom untuk Repositori Github"},{"content":"Perintah dotnet.exe berguna karena memungkinkan Anda untuk membangun program sederhana, jadi sangat praktis untuk disiapkan.\nMenginstal .NET SDK Karena dotnet.exe disertakan dalam .NET SDK, pertama-tama instal .NET SDK. Jalankan cmd.exe dengan hak administrator dan jalankan perintah berikut.\n1 winget install Microsoft.DotNet.SDK.6 Membuat .gitignore Perintah untuk membuat .gitignore dengan dotnet.exe adalah sebagai berikut.\n1 dotnet new gitignore .gitignore yang dihasilkan adalah sebagai berikut.\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 Meskipun ada banyak file untuk Visual Studio, ini juga menyertakan file yang umumnya tidak memerlukan manajemen di git, seperti \u0026ldquo;.DS_Store\u0026rdquo; di Mac.\nReferensi Instal .NET di 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/id/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":"Membuat .gitignore dengan perintah dotnet"},{"content":"Ketika saya mengingat game favorit saya, ternyata sebagian besar adalah game klasik yang legendaris. Karena banyak game lama, bagi yang belum memainkannya silakan coba mainkan.\nGame Boy Game Boy pertama adalah konsol game portabel yang dirilis oleh Nintendo pada tahun 1989. Setelah itu, penerusnya seperti Game Boy Color dan Game Boy Advance dirilis.\n① Sa・Ga2 Hihou Densetsu Game RPG yang dirilis oleh Square (sekarang Square Enix) pada tahun 1990. Ceritanya adalah mengumpulkan harta karun di berbagai stage, dan ini adalah game RPG pertama yang pernah saya mainkan.\n② Kirby\u0026rsquo;s Dream Land (Hoshi no Kirby) Game aksi yang dirilis oleh Nintendo pada tahun 1992. Pengembangnya adalah HAL Laboratory. Game di mana Anda maju dengan menyedot musuh atau menghirup udara untuk melayang di udara. Musik dan efek suaranya dibuat dengan sangat baik sehingga menjadi karya yang bisa dimainkan dengan ritmis.\n③ Pokémon Red dan Green Game RPG yang dirilis oleh Nintendo pada tahun 1996. Dikembangkan oleh Nintendo EAD, Game Freak, dan Creatures. Setelah itu diadaptasi menjadi anime dan mendapatkan popularitas yang luar biasa, tetapi saya hanya pernah memainkan generasi pertama ini.\nSuper Famicom (SNES) Konsol game rumahan yang dirilis oleh Nintendo pada tahun 1990. Di luar negeri juga dikenal sebagai SNES (Super Nintendo Entertainment System).\n④ Super Mario Kart Perangkat lunak untuk Super Famicom yang dirilis oleh Nintendo pada tahun 1992. Game balap di mana Anda bersaing untuk posisi sambil mengganggu lawan dengan melempar item tempurung atau pisang. Saya ingat memainkannya bersama keluarga dan teman-teman.\n⑤ Dragon Quest V: Hand of the Heavenly Bride Game RPG yang dirilis oleh Enix pada tahun 1992. Ini adalah game yang memiliki elemen memilih pasangan hidup, dan elemen di mana monster yang dikalahkan dapat dijadikan rekan. Saya memainkannya dengan tekun sampai saya berhasil merekrut beberapa Metal Slime sebagai rekan.\n⑥ Final Fantasy V Game RPG yang dirilis oleh Square pada tahun 1992. Memiliki elemen mendalam yaitu memilih pekerjaan (job) dan menguasai skill. Sama seperti Dragon Quest, saya ingat terus-menerus menaikkan level di dalam gua.\n⑦ Torneko\u0026rsquo;s Great Adventure: Mystery Dungeon Game roguelike yang dirilis oleh Chunsoft pada tahun 1993. Pendahulu seri Mystery Dungeon. Ciri khasnya adalah bentuk dungeon berubah secara acak setiap kali dimainkan. Slogan iklannya adalah \u0026ldquo;RPG yang bisa dimainkan 1000 kali\u0026rdquo;.\n⑧ Mystery Dungeon 2: Shiren the Wanderer Game roguelike yang dirilis oleh Chunsoft pada tahun 1995. Sekuel dari seri Mystery Dungeon \u0026ldquo;Torneko\u0026rsquo;s Great Adventure\u0026rdquo;. Terdapat toko di dalam dungeon, dan Anda dapat membeli item. (Jika Anda keluar dari toko tanpa membeli, penjaga toko akan mengejar Anda.)\n⑨ MOTHER2 (EarthBound) Karya kedua dalam seri MOTHER yang dirilis oleh Nintendo pada tahun 1994. Pengembangnya adalah Ape dan HAL Laboratory. Kemudian pada tahun 2006, MOTHER3 dirilis. Karya yang diproduseri oleh Shigesato Itoi ini, dipenuhi dengan pandangan dunia yang unik dan kata-kata filosofis.\n⑩ The Legend of Zelda: A Link to the Past Game aksi-petualangan yang dirilis oleh Nintendo pada tahun 1991. Game di mana Anda maju sambil mengumpulkan berbagai item dan memecahkan teka-teki kecil. Setelah itu, berbagai sekuel telah dirilis. (Referensi)\nNintendo Switch Konsol game rumahan yang dirilis oleh Nintendo pada tahun 2017.\n⑪ Splatoon 2 Game aksi-menembak yang dirilis oleh Nintendo pada tahun 2017. Game di mana Anda bertujuan untuk menang dengan mengamankan wilayah menggunakan tinta atau mengalahkan lawan. Pada tahun 2022, sekuelnya, Splatoon 3, telah dirilis.\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/id/p/11-game-favorit-saya/","title":"11 Game Favorit Saya"},{"content":"Perintah untuk mencegah pembuatan otomatis .DS_Store di macOS adalah sebagai berikut. Silakan jalankan di terminal.\n1 defaults write com.apple.desktopservices DSDontWriteNetworkStores true Setelah menjalankan perintah, mulai ulang Finder.\n1 killall Finder Jika Anda ingin mengembalikan pengaturan seperti semula, silakan jalankan perintah berikut.\n1 defaults delete com.apple.desktopservices DSDontWriteNetworkStores false Sama seperti di atas, jika Anda mengubah pengaturan, mulai ulang Finder.\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/id/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/","title":"Perintah untuk mencegah pembuatan otomatis .DS_Store di macOS"},{"content":"Pindahkan direktori saat ini ke folder target dan jalankan perintah berikut untuk menghapus file .DS_Store secara massal, termasuk dalam subfolder.\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/id/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/","title":"Menghapus massal .DS_Store dengan PowerShell"},{"content":"Kode pendek yang dapat digunakan di 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;}}\nLainnya Shortcodes\nCatatan sampingan Jika Anda ingin menampilkan {{\u0026lt; foo \u0026gt;}} di situs, Anda perlu menulisnya sebagai {{\u0026lt;/* foo */\u0026gt;}}.\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/id/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":"Kode pendek yang dapat digunakan di HUGO"},{"content":"Tata letak default menempatkan gambar di tengah dengan lebar 100%, tetapi kadang-kadang saya merasa itu agak terlalu besar, jadi saya mencoba membungkus gambar di bawah judul dan mengubah lebarnya menjadi sekitar 150px.\nLokasi perubahan file adalah sebagai berikut.\nblank.css Untuk mengubah margin, ukuran gambar, dan baris tampilan teks, tambahkan deskripsi berikut ke blank.css.\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 Karena definisi tidak dapat dihapus di sisi blank.css, hapus satu baris berikut di post-entry.css.\n1 2 3 4 5 6 .entry-cover img { border-radius: var(--radius); pointer-events: none; /* width: 100%; */ ← hapus baris ini height: auto; } list.html Untuk mengubah tata letak gambar, saya mengubah bagian berikut dari list.html.\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;!-- pindah ke bawah --\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;!-- pindah ke bawah --\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;!-- tambahkan --\u0026gt; \u0026lt;div style=\u0026#34;max-width:150px;margin:11px 15px 0px 0px;\u0026#34;\u0026gt;\u0026lt;!-- tambahkan --\u0026gt; {{- $isHidden := (site.Params.cover.hidden | default site.Params.cover.hiddenInList) }}\u0026lt;!-- pindah dari atas --\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;!-- pindah dari atas --\u0026gt; \u0026lt;/div\u0026gt;\u0026lt;!-- tambahkan --\u0026gt; \u0026lt;div style=\u0026#34;width:100%;\u0026#34;\u0026gt;\u0026lt;!-- tambahkan --\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;!-- tambahkan --\u0026gt; \u0026lt;/div\u0026gt;\u0026lt;!-- tambahkan --\u0026gt; \u0026lt;/article\u0026gt; Sepertinya ada cukup banyak permintaan serupa.\nhttps://github.com/adityatelange/hugo-PaperMod/discussions/159#discussioncomment-247844\nSaya akan berterima kasih jika pengembang asli juga mendukungnya.\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/id/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/","title":"Perubahan Tata Letak Gambar PaperMod"},{"content":"Pendahuluan Tema PaperMod mendukung Twitter Card. Namun, pengaturan Twitter Card harus ditulis dalam config.toml atau di informasi header *.md pada setiap artikel. Jika diatur di artikel maupun di config.toml, informasi header dari setiap artikel akan diprioritaskan.\nCara Pengaturan config.toml Di config.toml, tambahkan item bernama images di bawah [params]. Di images, tulis path ke gambar yang akan ditampilkan di Twitter Card. Jika Anda menempatkan gambar di folder static, Anda hanya perlu menentukan nama filenya saja.\n1 2 [params] images = [\u0026#34;twitter_card.jpg\u0026#34;] Struktur folder\n1 2 3 4 5 6 7 8 9 10 root │ config.toml (Tulis di sini) ├─content │ └─posts │ └─folder artikel │ │ index.md (Tulis di sini) │ └─images │ cover.png (Tempatkan di sini) └─static twitter_card.jpg (Tempatkan di sini) Informasi header setiap artikel Di informasi header setiap artikel, tambahkan item bernama image di bawah cover. Jika Anda mengatur relative menjadi true, Anda dapat menentukannya dengan path relatif dari *.md artikel tersebut.\n1 2 3 cover: image: \u0026#34;images/cover.jpg\u0026#34; relative: true Jika Anda tidak ingin menampilkannya di bagian atas artikel Jika Anda tidak ingin menampilkan gambar sampul di bagian atas artikel, tambahkan item bernama hidden di bawah cover dan atur menjadi true.\n1 2 3 4 cover: image: \u0026#34;images/cover.jpg\u0026#34; relative: true hidden: true Tentang Ukuran Gambar Berdasarkan spesifikasi PaperMod saat ini, ukuran Twitter Card tampaknya hanya mendukung summary_large_image. Ukuran yang tepat (resolusi) untuk summary_large_image bervariasi, namun sekitar 800 x 418 (rasio gambar 1.91:1) tampaknya sudah baik.\nSitus referensi 1 Situs referensi 2\nJika memungkinkan, kami sarankan mengubah ukuran gambar sebelum mempublikasikannya.\nCara memeriksa pengaturan Untuk memeriksa pengaturan Twitter Card, gunakan Twitter Card Validator. Namun, di lingkungan saya, pratinjau tidak ditampilkan dengan benar, jadi jika pratinjau tidak muncul, kami sarankan untuk memeriksanya sekali sebelum mempublikasikannya dengan menggunakan akun privat atau sejenisnya.\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/id/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":"Cara Mengatur Twitter Card di PaperMod"},{"content":"Pendahuluan GitHub Copilot adalah alat pelengkap kode berbasis AI yang dikembangkan oleh GitHub. Jika Anda menginstal plugin GitHub Copilot di lingkungan pengembangan IntelliJ IDEA, Anda dapat menggunakan GitHub Copilot di IntelliJ IDEA. Untuk mengaktifkannya, Anda memerlukan akun Github.\nCara Menginstal Dari menu File di IntelliJ IDEA, pilih Settings. Pilih Plugins, lalu cari \u0026ldquo;GitHub Copilot\u0026rdquo; di pencarian. Instal menggunakan tombol Install. Tekan tombol Restart IDE untuk me-restart IntelliJ IDEA. Setelah Anda me-restart IntelliJ IDEA, instalasi selesai. Aktivasi Klik ikon di sudut kanan bawah. Klik Login to Github. Klik tombol Copy and Open. Browser akan terbuka. Jika Anda belum masuk ke Github, silakan masuk terlebih dahulu, lalu rekatkan kode dengan Ctrl+V dan klik tombol Continue. Klik tombol Authorize GitHub Copilot Plugin. Jika layar di atas ditampilkan, aktivasi telah selesai. Mari Mencoba Saat Anda mengetik beberapa karakter di editor IntelliJ IDEA, GitHub Copilot akan mulai menyarankan kelanjutan dari kode Anda. Selamat menikmati fitur pelengkapan canggih yang didukung AI!\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/id/p/menggunakan-github-copilot-di-intellij-idea/","title":"Menggunakan GitHub Copilot di IntelliJ IDEA"},{"content":"Pengantar Go adalah bahasa pemrograman yang relatif baru yang dirilis oleh Google pada tahun 2009. Kompiler, alat, dan pustaka Go bersifat sumber terbuka (open source). Selain itu, Go adalah bahasa dengan pengetikan statis seperti C dan Java, tetapi tidak menggunakan pointer seperti bahasa C.\nCara Instalasi Instal Go\nPenginstal untuk setiap platform tersedia dari situs di atas.\nIkuti petunjuk di layar untuk melanjutkan instalasi. Instalasi selesai. Sangat mudah, bukan?\nProgram Pertama Simpan program berikut sebagai 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;) } Ketika Anda menjalankan go run hello.go dari command prompt atau terminal, itu akan menghasilkan Hello, world!.\nJika Anda ingin mengompilasi, menjalankan go build hello.go akan menghasilkan hello.exe. Menjalankan hello.exe akan menghasilkan Hello, world!.\nAnda juga dapat menjalankan kode di halaman web https://go.dev/play/\nDokumentasi http://go.shibu.jp/\nPenjelasan yang diperlukan untuk mempelajari Go dirangkum pada tautan di atas. Teknologi yang terkait dengan Go sangat terbuka dan lengkap sehingga Anda tidak perlu membeli buku cetak.\nJadi, nikmati hidup dengan 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/id/p/cara-menginstal-go/","title":"Cara Menginstal Go"},{"content":"Apa itu Dialektika Hegel Hegel memahami signifikansi positif dari kontradiksi yang dialami nalar, dan berpendapat bahwa semua hal yang terbatas pada umumnya menghasilkan kebalikan dengan kontradiksi yang melekat pada diri mereka sendiri sebagai kekuatan pendorong, dan bersama-sama diangkat ke tahap yang lebih tinggi dengan ini sebagai perantara, dan menjadikannya prinsip dari semua gerakan di dunia nyata. (Dari Kotobank)\nInterpretasi saya adalah bahwa setiap pernyataan dan gagasan di dunia nyata tidak hanya benar secara sepihak, tetapi harus mengandung kontradiksi di dalamnya, dan dengan memahami dan menggabungkan struktur yang berlawanan itu, kesadaran berkembang ke tingkat yang lebih tinggi.\nSaya pikir ini berlaku tidak hanya untuk cara berpikir orang, tetapi juga untuk semua fenomena di alam.\nUntuk semua materi, jika aksi bekerja, reaksi bekerja. Jika semua hal bergerak, gesekan bekerja. Gravitasi saling mempengaruhi tidak hanya pada matahari dan bumi tetapi juga pada semua materi. Aliran sungai dan aliran angin tidak hanya mengalir ke satu arah, tetapi menerima berbagai kekuatan, dan aliran berubah dalam sekejap.\nBerbicara secara teknis, program komputer juga pasti mengandung bug di dalamnya, dan dengan menghilangkannya mereka menjadi program tingkat yang lebih tinggi. Saya pikir dapat dikatakan bahwa program bebas bug adalah program yang tidak menarik yang tidak berkembang. Pada akhirnya akan menjadi usang.\nLingkungan sekitar terus berubah seiring berjalannya waktu. Daripada mengabaikan kontradiksi diri, secara aneh membenarkannya, atau menetapkan cara berpikir seseorang, saya ingin terus-menerus meninjau cara berpikir saya dan cara memandang sesuatu, dan mengubah pemikiran saya secara fleksibel.\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/id/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/","title":"Dialektika Hegel"},{"content":"Saya pergi ke Kamukura (Ramen) untuk pertama kalinya dalam beberapa tahun.\nRamen Daun Bawang Kimchi\nItu lezat. Ini adalah rasa yang kadang-kadang saya idamkan.\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/id/p/kamukura-ramen-untuk-pertama-kalinya-dalam-beberapa-tahun/","title":"Kamukura (Ramen) untuk pertama kalinya dalam beberapa tahun"},{"content":"Saya menulis program untuk membuat daftar bilangan prima di Rust.\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/id/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/","title":"Menghitung Bilangan Prima di Rust"},{"content":"Daftar Putar Jazz yang Menenangkan ","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/id/p/jazz-yang-menenangkan/","title":"Jazz yang Menenangkan"},{"content":"Up-tempo\nElectro Swing Collection Electro Swing Mix 2019 Vol.3 lofi hip hop radio(Live) Jazz LoFi Ini adalah motivasi saya untuk belajar keras setiap hari | 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/id/p/musik-kafe/","title":"Musik Kafe"},{"content":"Tidak apa-apa jika usaha Anda tidak diakui 45年の人生で手に入れた。ぐずぐずした時、いつも背中を押してくれる言葉たち。 pic.twitter.com/EQgmujOSpg\n\u0026mdash; いれぶん (@eleven_s_s) September 6, 2022 Nilai-nilai jauh lebih beragam Yusuke Narita \u0026ldquo;Di antara kemalangan yang diderita manusia\u0026rdquo;\nTindakan Anda tercermin secara langsung Pemikiran Hayao Miyazaki ","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/id/p/video-yang-meningkatkan-motivasi/","title":"Video yang Meningkatkan Motivasi"},{"content":"Berikut adalah spesifikasi PC utama saya.\nNama Item Nilai Prosesor Intel Core i7-8700K CPU @ 3.70GHz 3.70 GHz Memori 32.0 GB Jenis Sistem Sistem operasi 64-bit, prosesor berbasis x64 OS Windows 11 Enterprise (versi 21H2, build 22000.856) Pabrikan 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/id/p/spesifikasi-pc-utama-saat-ini/","title":"Spesifikasi PC Utama Saat Ini"},{"content":"Google Material Symbols and Icons https://fonts.google.com/icons GitHub Octicons https://primer.style/octicons/ Sargam Icons https://sargamicons.com/ Ribuan ikon gratis 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/id/p/situs-koleksi-ikon-sederhana/","title":"Situs Koleksi Ikon Sederhana"},{"content":"Saya telah mengubah skema warna tema PaperMod. Saya merujuk ke bawah ini untuk metode perubahannya.\nhttps://github.com/adityatelange/hugo-PaperMod/discussions/645\nPath CSS adalah sebagai berikut.\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 { } Untuk saat ini, tidak ada perubahan pada mode gelap.\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/id/p/mengubah-skema-warna-papermod/","title":"Mengubah Skema Warna PaperMod"},{"content":"Saat ibu sedang tidak enak badan dan harus berbaring di tempat tidur, ketika saya bertanya kepada putri kami (2 tahun) tentang persiapan makan malam atau mandi, \u0026ldquo;Bolehkah kita meminta tolong pada ibu untuk ini?\u0026rdquo; Dia menjawab, \u0026ldquo;Tidak boleh, ibu sedang tidur!\u0026rdquo; dan saya berpikir bahwa bahkan seorang anak pun tahu bagaimana harus bersikap penuh perhatian.\nSaya senang dia tampaknya tumbuh menjadi seseorang yang bisa berempati terhadap orang lain.\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/id/p/perhatian-anak/","title":"Perhatian Anak"},{"content":"Menemukan Bisnis yang Sedang Tren Tanyakan kepada orang dalam Hot Pepper atau akuntan pajak mengenai bisnis yang sedang tren. Jangan memasuki bisnis yang sudah jenuh dan dipenuhi pemain kuat. Hanya masuki bisnis yang Anda yakini bisa menarik pelanggan (jangan memasuki bisnis jika pemain yang ada menggunakan metode penarik pelanggan khusus yang tidak bisa ditiru). Meniru Sepenuhnya Teliti logika bisnis sebelum masuk. Tiru sepenuhnya. Setelah itu, lakukan perbaikan. Sistematisasi Buat manual untuk semuanya agar siapa pun bisa melakukannya tanpa perlu usaha keras. Pikirkan dan sistematisasi ide untuk meningkatkan penjualan (peningkatan jumlah pelanggan, nilai per pelanggan) dan mengurangi pengeluaran (biaya personel, biaya iklan). Filosofi Manajemen Filosofi manajemen adalah \u0026ldquo;memaksimalkan keuntungan perusahaan,\u0026rdquo; tidak lebih dan tidak kurang. Menjadikan kontribusi sosial atau disukai oleh karyawan sebagai filosofi manajemen adalah tindakan yang salah (anggap saja hal-hal tersebut akan mengikuti secara alami nanti). ","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/id/p/%E7%B5%8C%E5%96%B6%E8%80%85%E3%83%A1%E3%83%A2/","title":"Catatan Manajemen"},{"content":"Saya ingin menyusun pemikiran dan apa yang menurut saya aneh tentang masyarakat Jepang.\nTentang Beasiswa Berbicara tentang beasiswa di Jepang, sebagian besar adalah pinjaman dengan bunga yang harus dikembalikan. Selain itu, biaya kuliah universitas terus meningkat sejak tahun 1950, dan tingkat penerima beasiswa juga menunjukkan tren yang meningkat.\nDi sisi lain, jumlah rata-rata total pinjaman baru-baru ini tampaknya mencapai 3,24 juta yen.\nDi antara pengguna beasiswa Organisasi Layanan Mahasiswa Jepang, jumlah rata-rata pinjaman adalah 3.243.000 yen. Referensi\nJika seseorang memiliki hutang sebesar 3 juta yen pada saat lulus kuliah di usia 22 tahun, wajar saja jika usia pernikahan akan tertunda, dan akan lebih sulit untuk memiliki anak. Saya pikir ini adalah salah satu penyebab masalah menurunnya angka kelahiran di Jepang.\nMerajalelanya Teori Tanggung Jawab Pribadi Ini mungkin hanya perasaan, tapi saya pikir ada sikap dingin di masyarakat yang berprinsip \u0026ldquo;masalah orang lain adalah masalah mereka sendiri\u0026rdquo;. Mungkin tidak bisa dihindari menjadi seperti ini setelah puluhan tahun kemerosotan ekonomi, tapi bahkan dalam masalah beasiswa di atas, hal itu tidak dianggap sebagai masalah seluruh masyarakat, dan saya merasa bahwa suara kaum muda dan minoritas yang memiliki sedikit suara dalam pemilu sedang diabaikan. Padahal, dalam jangka panjang, ini adalah masalah yang sangat penting bagi Jepang secara keseluruhan.\nDaripada menuju ke arah persaingan yang berlebihan, saya pikir sangat penting bagi negara untuk memiliki semangat saling membantu jika ada orang, generasi, atau kelompok yang sedang kesulitan. (Namun, saya merasa kurang nyaman ketika negara bersikeras pada \u0026ldquo;menolong diri sendiri dan saling menolong\u0026rdquo;. Saya ingin mereka mengambil inisiatif untuk membantu mereka yang lemah.)\n(Artikel ini akan diperbarui dari waktu ke waktu.)\nKarakteristik Orang Jepang dari Sudut Pandang AI Ya, saya akan menjelaskan karakteristik orang Jepang.\n【Aspek Positif】\nOrang Jepang sopan, dan ada budaya peduli terhadap rasa hormat dan cara berinteraksi dengan orang lain. Ketepatan waktu dijaga dengan sangat ketat, dan menghargai waktu sangat dijunjung tinggi. Cara berpikir kolektif sangat kuat, dan kerja sama tim serta harmoni sangat diutamakan. Kebersihan sangat dihargai, dan ada kecenderungan untuk sangat memperhatikan etika dan kebersihan di tempat umum. Menghargai pemberian hadiah dan oleh-oleh, dan budaya berterima kasih tersebar luas. 【Aspek Negatif】\nKadang-kadang mereka kesulitan untuk menyatakan pendapat pribadi mereka, dan ada kecenderungan untuk menghindari konflik pendapat. Dalam budaya kerja yang sangat ketat, kerja lembur dan kematian akibat terlalu banyak bekerja (karoshi) kadang-kadang menjadi masalah yang diperhatikan. Masalah diskriminasi dan pengucilan terhadap orang asing masih ada, dan keselarasan dengan masyarakat internasional terkadang menjadi bahan pembicaraan. Ada kecenderungan otoritarianisme, dan sering dikritik bahwa mereka terlalu sering menerima pendapat atasan dan orang yang lebih tua tanpa syarat. Mereka kadang dikritik sebagai masyarakat yang tertutup, dengan kecenderungan sulit menerima budaya dan nilai-nilai dari luar. ","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/id/p/pemikiran-saya-tentang-jepang/","title":"Pemikiran Saya tentang Jepang"},{"content":"Pengantar Rust adalah bahasa pemrograman yang relatif baru yang memungkinkan Anda menulis modul yang cepat dan efisien dalam penggunaan memori dengan sintaksis modern. Bahasa ini mendukung multi-platform dan juga digunakan di dunia WebAssembly dan sistem tertanam (embedded). Selain itu, bahasa ini digunakan oleh perusahaan terkenal seperti Firefox, DropBox, dan Cloudflare.\nRust juga menarik perhatian sebagai alternatif dari C++.\nCara Menginstal Instal Rust\nInstruksi instalasi untuk setiap platform tersedia di situs di atas.\nProgram Pertama Anda Simpan program berikut sebagai main.rs.\n1 2 3 fn main() { println!(\u0026#34;Hello, world!\u0026#34;); } Jika Anda menjalankan rustc main.rs dari command prompt atau terminal, itu akan dikompilasi, dan menjalankan ./main (untuk Windows main.exe) akan menghasilkan Hello, world!.\nDokumentasi (Bahasa Jepang) The Rust Programming Language Versi Jepang\nSemua penjelasan yang diperlukan untuk mempelajari Rust telah dirangkum di tautan di atas (versi terjemahan bahasa Jepang). Itu sangat lengkap sehingga Anda tidak perlu membeli buku teks tentang Rust.\nJika Anda Ingin Mencobanya di Web Jika Anda ingin mencoba menjalankannya di web tanpa menginstal kompiler, Anda dapat menggunakan The Rust Playground. Masukkan kode Anda dan tekan tombol \u0026ldquo;Jalankan\u0026rdquo;, lalu kode akan dikompilasi dan dijalankan di web.\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/id/p/rust%E3%81%AE%E3%81%AF%E3%81%98%E3%82%81%E3%81%8B%E3%81%9F/","title":"Cara Memulai dengan Rust"},{"content":"Mengganti Internet Rumah dari Flets Hikari ke J:COM Atas rekomendasi seorang kenalan, saya mengganti koneksi internet rumah dari Flets Hikari ke J:COM. Alasannya adalah:\nBiaya bulanan menjadi lebih murah. 3.619 yen -\u0026gt; 2.180 yen Kecepatan internet naik dari 100 MBps menjadi 320 MBps Itu poin utamanya.\nKesan Setelah Menggunakan Sudah sekitar seminggu sejak beralih, dan sejauh ini hampir tidak ada masalah. Di bawah ini saya tuliskan sedikit hal yang menjadi perhatian.\nSetelah benar-benar berubah, saya perhatikan bahwa kecepatan unduh memang menjadi lebih cepat, dari 60 MBps kini bisa mencapai hampir 320 MBps. Namun, untuk kecepatan unggah, yang sebelumnya mencapai 40 MBps saat menggunakan Flets Hikari, kini turun menjadi sekitar 10 MBps. Tampaknya ini memang spesifikasi dari pihak J:COM. Karena saat ini saya tidak melakukan streaming atau mengunggah data dalam jumlah besar, saya akan memantau situasinya.\nSelain itu, akhir-akhir ini saya dan keluarga lebih banyak bekerja dari rumah, namun hari ini untuk pertama kalinya internet terputus selama beberapa puluh menit. Itu pulih secara otomatis, tapi, mungkin ini bukan awal yang baik. Padahal, belum genap seminggu sejak saya beralih\u0026hellip;\nSebagai catatan, tampaknya kecepatan aplikasi P2P lambat karena J:COM membatasi komunikasi P2P. Bagi yang menggunakan P2P sebaiknya berhati-hati.\nTentang Layanan Saat penandatanganan kontrak, jika bergabung dengan Netflix atau Disney+, saya akan mendapatkan kartu QUO senilai 40.000 yen, yang akan menutupi biaya kontrak masing-masing layanan dan membuat biaya bulanan rata-rata sedikit lebih murah. Oleh karena itu, saya mengontrak layanannya bersamaan dengan kontrak internet. Kontrak Netflix berlaku selama 1 tahun dan Disney+ selama setengah tahun, sepertinya saya perlu membatalkan kontrak sendiri.\nKarena saya baru saja beralih, jika ada tambahan kesan dan pengalaman, saya akan memperbarui artikel ini lagi. Sampai jumpa.\n09/06 Sulit Terhubung ke Internet 2022/09/06 sekitar pukul 13:13 selama 3 sampai 5 menit 2022/09/06 sekitar pukul 13:30 selama 3 sampai 5 menit Beberapa kali setelahnya\u0026hellip; Sepertinya masalahnya ada di DNS, jadi saya mengatur server DNS merujuk ke sini. Mari kita lihat apa yang terjadi\u0026hellip; Karena saya tidak dapat terhubung bahkan dengan pengaturan DNS, saya menghubungi bagian dukungan, dan mereka mengatakan sedang ada pemeliharaan darurat\u0026hellip; Segera setelah saya menghubungi mereka, status koneksi membaik, jadi saya rasa mereka telah mengambil tindakan.\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/id/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":"Mengganti Internet Rumah dari Flets Hikari ke J:COM"},{"content":"Instalasi HUGO Unduhan Unduh HUGO\nDari situs web di atas, unduh dan ekstrak modul Windows yang sesuai dengan lingkungan Anda. Dalam kasus saya, saya mengunduh \u0026ldquo;hugo_0.102.3_Windows-64bit.zip\u0026rdquo;.\nEkstrak Ekstrak file zip yang diunduh dan salin hugo.exe di dalamnya ke direktori yang Anda buat, misalnya C:\\bin.\nDaftarkan ke Variabel Lingkungan Daftarkan ke variabel lingkungan untuk menjalankan hugo.exe dari lokasi mana pun. Ini adalah operasi di Windows 11, tetapi Anda dapat mendaftarkannya dengan prosedur berikut.\nTekan tombol Win+Pause untuk membuka Tentang. Klik Pengaturan sistem lanjutan. Klik Variabel Lingkungan. Pilih Path dan klik Edit. Klik Baru, masukkan \u0026ldquo;C:\\bin\u0026rdquo; di baris baru, dan klik OK untuk menutup dialog. Pratinjau Blog Pergi ke folder blog HUGO di Command Prompt dan jalankan perintah berikut.\nhugo server -D\nHasil eksekusinya ada di bawah. (-D adalah opsi untuk menampilkan artikel draf.)\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 Alamat akan ditampilkan pada saat eksekusi (dalam contoh di atas, http://localhost:1313/), jadi salin alamat tersebut ke browser Anda. Pratinjau akan diperbarui secara otomatis setiap kali file disimpan. Untuk mengakhiri pratinjau, masukkan Ctrl+C di command prompt.\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/id/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/","title":"【HUGO】Pratinjau Tampilan di Lingkungan Lokal"},{"content":"Berikut adalah 3 film rekomendasi saya yang menampilkan matematikawan sebagai karakter utama.\nA Beautiful Mind Karya yang menggambarkan separuh kehidupan seorang jenius matematika Amerika di dunia nyata. Perkembangan mengejutkan di akhir cerita. Pemeran utama Russell Crowe memainkan peran yang bagus.\nEnigma Film yang dirilis pada tahun 2001 berdasarkan novel Robert Harris \u0026ldquo;Enigma\u0026rdquo;. Dari Wikipedia\nKisah memecahkan kode mesin sandi buatan Jerman yang disebut Enigma.\nThe Imitation Game Ini juga merupakan kisah pemecahan kode yang berhubungan dengan Enigma. Saya suka pandangan dunia pada waktu itu.\nThe Man Who Knew Infinity Karya yang menggambarkan interaksi antara matematikawan Universitas Cambridge Hardy dan matematikawan India Ramanujan. Anda bisa merasakan keindahan matematika.\nThe Theory of Everything Karya yang menggambarkan separuh kehidupan Dr. Hawking.\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/id/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":"Film yang Menampilkan Matematikawan"},{"content":"Meja Anak Waktu ketika anak saya tidur adalah waktu saya bisa fokus pada pekerjaan. Ayo pergi bermain di taman setelah tidur siangnya selesai. Seandainya saya punya adaptor Lightning ke HDMI untuk iPad, saya bisa bekerja di meja sebelah kanan~\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/id/p/%E4%BB%8A%E6%97%A5%E3%81%AE%E4%BD%9C%E6%A5%AD%E7%92%B0%E5%A2%83/","title":"Lingkungan Kerja Hari Ini"},{"content":"Pendahuluan Saat menulis blog ini, saya menggunakan IntelliJ IDEA. Sangat nyaman karena memiliki kompatibilitas yang baik dengan Git dan dapat menampilkan pratinjau Markdown. Setiap kali menulis blog, saya harus menuliskan tanggal di header file md, namun sepertinya tidak ada pintasan (shortcut) bawaan untuk menyisipkan tanggal, jadi saya membuat perintah untuk menyisipkan tanggal berdasarkan referensi dari situs berikut. Semoga bermanfaat.\nIs there a shortcut for inserting date/time in IntelliJ IDEA?\nLangkah-langkah Pengaturan Buka menu \u0026ldquo;File\u0026rdquo; \u0026gt; \u0026ldquo;Settings\u0026hellip;\u0026rdquo;\nPilih \u0026ldquo;Editor\u0026rdquo; \u0026gt; \u0026ldquo;Live Template\u0026rdquo; \u0026gt; \u0026ldquo;HTML/XML\u0026rdquo;, lalu klik tombol \u0026ldquo;+\u0026rdquo; Pilih Live Template Masukkan \u0026ldquo;date\u0026rdquo; pada Abbreviation Masukkan \u0026ldquo;Menyisipkan tanggal dan waktu\u0026rdquo; pada Description Masukkan \u0026ldquo;$date$\u0026rdquo; pada Template Text Klik tombol Edit Variables\nMasukkan \u0026ldquo;date\u0026rdquo; pada Name Masukkan date(\u0026quot;yyyy-MM-dd'T'HH:mm:ss'+09:00'\u0026quot;) pada Expression Tutup dialog dengan menekan OK Klik Define atau Change, lalu centang \u0026ldquo;Everywhere\u0026rdquo; Tutup dialog dengan menekan OK Di editor kode, ketik \u0026ldquo;date\u0026rdquo; dan tekan Enter. Jika tanggal \u0026ldquo;2022-09-04T05:59:04+09:00\u0026rdquo; disisipkan, pengaturan selesai! Demikian.\nPenutup Saya akan membagikannya lagi jika saya menemukan trik-trik kecil lain untuk IntelliJ IDEA!\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/id/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":"Menambahkan Perintah untuk Menyisipkan Tanggal di IntelliJ IDEA"},{"content":"Saya mulai menulis blog Sesuatu seperti kembang api, kodenya ada di sini\nHalo semuanya. Saya memutuskan untuk mulai menulis blog tanpa alasan khusus.\nSaya tidak punya tujuan besar seperti \u0026ldquo;Saya ingin mempublikasikan ini!\u0026rdquo;, hanya berpikir akan menyenangkan memiliki tempat di mana saya bisa menulis apa pun yang terlintas di pikiran, baik itu tentang teknologi maupun kehidupan sehari-hari.\nSaya tidak akan terlalu serius dan akan menggunakannya seperti buku catatan.\nDibuat menggunakan sesuatu yang disebut Hugo Blog ini dibuat menggunakan generator situs statis yang disebut \u0026ldquo;Hugo\u0026rdquo;. Saya menemukan tema yang bagus, jadi saya memutuskan untuk mencobanya. (Butuh sekitar 2 jam untuk memilih tema, tapi itu rahasia)\nSaya juga berencana untuk membuat catatan tentang kode dan alat yang menarik bagi saya.\nCerita Komeda di pagi hari Ngomong-ngomong, pagi ini saya bangun agak pagi dan pergi ke kedai kopi Komeda. Saya berangkat jam 8:30, berjalan sambil menghirup udara pagi.\nSaya memesan paket sarapan A dengan mini shironoir dan cafe au lait. Kalau tidak salah harganya sekitar 800 yen? (Saya tidak ingat)\nKafe di pagi hari sangat menyenangkan. Jika saya punya waktu untuk bersantai sebelum bekerja, rasanya hari itu akan berjalan lancar.\nJadi, mulai sekarang saya akan menulis dengan santai. Saya berencana mencampur topik teknis dan kehidupan sehari-hari.\nMohon dukungannya!\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/id/p/saya-mulai-menulis-blog/","title":"Saya mulai menulis blog"},{"content":"Salesforce DevTools Anda dapat mencari bidang kustom, atau menampilkan bidang objek kustom sekaligus.\nJuga sangat mudah untuk merakit SOQL di tempat.\nSalesforce DevTools\nSalesforce advanced Code searcher Berguna saat mencari kode Salesforce.\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/id/p/salesforce%E3%81%8A%E3%81%99%E3%81%99%E3%82%81chrome%E6%8B%A1%E5%BC%B5/","title":"Ekstensi Chrome yang Direkomendasikan untuk Salesforce"}]