<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>教程 on MoeJueのブログ</title>
    <link>https://ja.moejue.cn/zh-hant/categories/%E6%95%99%E7%A8%8B/</link>
    <description>Recent content in 教程 on MoeJueのブログ</description>
    <generator>Hugo</generator>
    <language>zh-hant</language>
    <lastBuildDate>Sat, 06 Sep 2025 02:02:54 +0000</lastBuildDate>
    <atom:link href="https://ja.moejue.cn/zh-hant/categories/%E6%95%99%E7%A8%8B/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>[筆記] Git 常用命令大全（按場景分類）</title>
      <link>https://ja.moejue.cn/zh-hant/posts/264/</link>
      <pubDate>Mon, 02 Jun 2025 06:58:42 +0000</pubDate>
      <guid>https://ja.moejue.cn/zh-hant/posts/264/</guid>
      <description>&lt;p&gt;適用於日常開發中對 Git 的常見操作。透過分類整理，幫助你快速上手或查閱。&lt;/p&gt;&#xA;&lt;hr&gt;&#xA;&lt;h2 id=&#34;-基礎指令&#34;&gt;📦 基礎指令&lt;/h2&gt;&#xA;&lt;p&gt;指令&lt;/p&gt;&#xA;&lt;p&gt;用途&lt;/p&gt;&#xA;&lt;p&gt;&lt;code&gt;git init&lt;/code&gt;&lt;/p&gt;&#xA;&lt;p&gt;初始化一個 Git 儲存庫（建立 &lt;code&gt;.git&lt;/code&gt; 資料夾）。&lt;/p&gt;&#xA;&lt;p&gt;&lt;code&gt;git clone &amp;lt;url&amp;gt;&lt;/code&gt;&lt;/p&gt;&#xA;&lt;p&gt;將遠端儲存庫複製到本地。&lt;/p&gt;&#xA;&lt;p&gt;&lt;code&gt;git status&lt;/code&gt;&lt;/p&gt;&#xA;&lt;p&gt;查看目前工作目錄狀態（檔案修改、暫存等）。&lt;/p&gt;&#xA;&lt;p&gt;&lt;code&gt;git add &amp;lt;file&amp;gt;&lt;/code&gt;&lt;/p&gt;&#xA;&lt;p&gt;將檔案新增到暫存區。&lt;/p&gt;&#xA;&lt;p&gt;&lt;code&gt;git commit -m &amp;quot;message&amp;quot;&lt;/code&gt;&lt;/p&gt;&#xA;&lt;p&gt;提交暫存區檔案到本地儲存庫，並新增提交訊息。&lt;/p&gt;&#xA;&lt;p&gt;&lt;code&gt;git log&lt;/code&gt;&lt;/p&gt;&#xA;&lt;p&gt;查看提交歷史。&lt;/p&gt;&#xA;&lt;hr&gt;&#xA;&lt;h2 id=&#34;-分支管理&#34;&gt;🌱 分支管理&lt;/h2&gt;&#xA;&lt;p&gt;指令&lt;/p&gt;&#xA;&lt;p&gt;用途&lt;/p&gt;&#xA;&lt;p&gt;&lt;code&gt;git branch&lt;/code&gt;&lt;/p&gt;&#xA;&lt;p&gt;查看本地分支列表。&lt;/p&gt;&#xA;&lt;p&gt;&lt;code&gt;git branch &amp;lt;branch-name&amp;gt;&lt;/code&gt;&lt;/p&gt;&#xA;&lt;p&gt;建立一個新分支。&lt;/p&gt;&#xA;&lt;p&gt;&lt;code&gt;git checkout &amp;lt;branch-name&amp;gt;&lt;/code&gt;&lt;/p&gt;&#xA;&lt;p&gt;切換到指定分支。&lt;/p&gt;&#xA;&lt;p&gt;&lt;code&gt;git switch &amp;lt;branch-name&amp;gt;&lt;/code&gt;&lt;/p&gt;&#xA;&lt;p&gt;切換到指定分支（推薦使用的新指令）。&lt;/p&gt;&#xA;&lt;p&gt;&lt;code&gt;git merge &amp;lt;branch-name&amp;gt;&lt;/code&gt;&lt;/p&gt;&#xA;&lt;p&gt;將指定分支合併到目前分支。&lt;/p&gt;&#xA;&lt;p&gt;&lt;code&gt;git branch -d &amp;lt;branch-name&amp;gt;&lt;/code&gt;&lt;/p&gt;&#xA;&lt;p&gt;刪除已合併的分支。&lt;/p&gt;&#xA;&lt;p&gt;&lt;code&gt;git branch -D &amp;lt;branch-name&amp;gt;&lt;/code&gt;&lt;/p&gt;&#xA;&lt;p&gt;強制刪除分支。&lt;/p&gt;&#xA;&lt;hr&gt;&#xA;&lt;h2 id=&#34;-遠端儲存庫操作&#34;&gt;🌍 遠端儲存庫操作&lt;/h2&gt;&#xA;&lt;p&gt;指令&lt;/p&gt;&#xA;&lt;p&gt;用途&lt;/p&gt;</description>
    </item>
    <item>
      <title>什麼是Web3.0，與區塊鏈又有什麼關係？</title>
      <link>https://ja.moejue.cn/zh-hant/posts/202/</link>
      <pubDate>Mon, 17 Jun 2024 12:59:22 +0000</pubDate>
      <guid>https://ja.moejue.cn/zh-hant/posts/202/</guid>
      <description>&lt;p&gt;又是一個莫名其妙的詞語的新起-。- 我大致歸納為以下幾個點&lt;/p&gt;&#xA;&lt;h2 id=&#34;什麼是web30&#34;&gt;什麼是web3.0&lt;/h2&gt;&#xA;&lt;p&gt;Web 3.0（Web3）是下一代網際網路的發展方向，旨在創建一個更加去中心化、用戶控制和數據保護的網路環境。與之前的Web 1.0（靜態網頁）和Web 2.0（動態、互動式網頁和社交媒體）不同，Web 3.0的核心理念和技術包括以下幾個方面：&lt;/p&gt;&#xA;&lt;h3 id=&#34;去中心化&#34;&gt;去中心化：&lt;/h3&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;區塊鏈技術：Web 3.0的核心是區塊鏈技術，它提供了一個去中心化的帳本，記錄所有的交易和數據變化。這意味著數據不再由單一的中央伺服器控制，而是分佈在多個節點上。&lt;/li&gt;&#xA;&lt;li&gt;分佈式應用（DApps）：這些應用程式運行在區塊鏈網路上，沒有中心化的控制者。DApps的用戶可以直接進行交易和互動，而無需通過中介機構。&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h3 id=&#34;用戶控制和數據保護&#34;&gt;用戶控制和數據保護：&lt;/h3&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;用戶主權身份：在Web 3.0中，用戶可以完全控制自己的數位身份和數據。通過加密技術，用戶可以決定誰可以訪問他們的数据以及如何使用這些數據。&lt;/li&gt;&#xA;&lt;li&gt;數據所有權：用戶的數據儲存在去中心化的網路上，用戶擁有數據的所有權，而不是由大公司集中管理和控制。&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h3 id=&#34;智能合約&#34;&gt;智能合約：&lt;/h3&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;自動執行協議：智能合約是在區塊鏈上運行的自動化協議，當滿足特定條件時自動執行。這種技術可以用於各種場景，如金融交易、供應鏈管理和法律合約。 互操作性：&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;跨平台和跨鏈技術：Web 3.0致力於實現不同區塊鏈和分佈式網路之間的互操作性，使得數據和資產可以在不同平台之間無縫轉移。&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h3 id=&#34;去信任化和透明度&#34;&gt;去信任化和透明度：&lt;/h3&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;無信任機制：Web 3.0通過區塊鏈技術實現了無信任機制，即參與者無需互相信任或依賴第三方中介，就能進行安全的交易和互動。&lt;/li&gt;&#xA;&lt;li&gt;透明性：所有交易和數據變更記錄在區塊鏈上，公開透明且不可篡改，提高了信任度和安全性。&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h3 id=&#34;web-30的應用場景&#34;&gt;Web 3.0的應用場景&lt;/h3&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;去中心化金融（DeFi）：通過智能合約和區塊鏈技術，提供無需中介的金融服務，如借貸、交易和投資。&lt;/li&gt;&#xA;&lt;li&gt;數位身份：用戶可以創建和管理自己的數位身份，控制個人數據的訪問和使用。&lt;/li&gt;&#xA;&lt;li&gt;供應鏈管理：通過區塊鏈技術，實現供應鏈的透明和可追溯性，防止偽造和欺詐。&lt;/li&gt;&#xA;&lt;li&gt;內容創作和分發：藝術家、音樂家和作家可以直接與觀眾互動和交易，獲得更公平的收益分配。&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;h2 id=&#34;那什麼又是區塊鏈呢&#34;&gt;那什麼又是區塊鏈呢？&lt;/h2&gt;&#xA;&lt;p&gt;區塊鏈技術是一種分佈式帳本技術（Distributed Ledger Technology, DLT），用於記錄交易和資訊的不可篡改、去中心化的資料庫。區塊鏈技術的核心思想是通過去中心化的方式實現數據的安全、透明和可信。&lt;/p&gt;&#xA;&lt;h3 id=&#34;區塊鏈的基本原理&#34;&gt;區塊鏈的基本原理&lt;/h3&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;區塊（Block）：&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;區塊是包含交易記錄的數據包。每個區塊包含多個交易和一個哈希值（用於唯一標識該區塊）。&lt;/li&gt;&#xA;&lt;li&gt;區塊還包含上一個區塊的哈希值，從而將所有區塊連接成鏈，形成區塊鏈。&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;鏈（Chain）：&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;區塊通過哈希值相互連接，形成一個鏈式結構。每個區塊包含前一個區塊的哈希值，這使得區塊鏈中的數據難以篡改。&lt;/li&gt;&#xA;&lt;li&gt;如果試圖更改一個區塊中的數據，將導致該區塊及其後續所有區塊的哈希值發生變化，需要重新計算所有這些區塊的哈希值，這幾乎是不可能的。&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;去中心化（Decentralization）：&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;區塊鏈網路中的所有節點（電腦）都保存一個完整的區塊鏈副本，這些副本通過共識機制保持一致。&lt;/li&gt;&#xA;&lt;li&gt;沒有中央機構控制或管理區塊鏈，數據由所有節點共同維護。&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;共識機制（Consensus Mechanism）：&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;區塊鏈網路使用共識機制來確保所有節點對區塊鏈的狀態達成一致。常見的共識機制包括工作量證明（Proof of Work, PoW）和權益證明（Proof of Stake, PoS）。&lt;/li&gt;&#xA;&lt;li&gt;工作量證明（PoW）：礦工通過解決複雜的數學問題來驗證交易，並將其添加到區塊鏈中。解決問題需要大量計算能力，確保了區塊鏈的安全性。 權益證明（PoS）：驗證者根據其持有的加密貨幣數量和其他因素來驗證交易，並獲得相應的獎勵。&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;加密技術（Cryptography）： -區塊鏈使用加密技術確保數據的安全性和隱私性。每個交易都使用公鑰和私鑰進行簽名和驗證，確保只有合法的所有者才能發起交易。&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;h3 id=&#34;區塊鏈的優點&#34;&gt;區塊鏈的優點&lt;/h3&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;安全性：&#xA;&lt;ul&gt;&#xA;&lt;li&gt;數據分佈在多個節點上，沒有單點故障，攻擊者難以篡改數據。 每個區塊包含上一個區塊的哈希值，篡改一個區塊需要更改整個鏈條，成本極高。&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;p&gt;2.透明性：&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;區塊鏈上的所有交易記錄都是公開可見的，任何人都可以查閱。 交易記錄不可篡改，提高了系統的透明度和信任度。&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;3.去中心化：&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;沒有中央控制機構，所有節點平等參與網路的維護和管理，防止了單點控制和權力集中。&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;4.不可篡改性：&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;一旦數據被寫入區塊鏈，就很難被篡改，確保了數據的完整性和真實性。&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h3 id=&#34;區塊鏈的應用場景&#34;&gt;區塊鏈的應用場景&lt;/h3&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;加密貨幣：&lt;/p&gt;</description>
    </item>
    <item>
      <title>誰是Po主？</title>
      <link>https://ja.moejue.cn/zh-hant/posts/68/</link>
      <pubDate>Mon, 25 Jun 2018 07:53:09 +0000</pubDate>
      <guid>https://ja.moejue.cn/zh-hant/posts/68/</guid>
      <description>&lt;p&gt;自從我率先使用微博的雲儲存作為二次元隨機API的圖片儲存庫後，網上便延伸出許多類似的二次元隨機API，在我所知的這些中挑選了幾個訪問看了下，發現許多圖片都相當眼熟。並且圖片連結也能在我資料庫中找到，這不就是我上傳的嗎？&#xA;難道他們都是採集我的嗎？&#xA;當然口說無憑，需要依據&#xA;然後選取了我已知的十個API接口，均為儲存在新浪圖床的二次元API。掛在伺服器上採集了一早上，採集了差不多10萬張，經過篩選重複無效的後僅剩一萬張左右。令人詫異，說明十個接口數據基本相同&#xA;接著透過程式分析出連結的上傳者，在這一萬張中，有75%的圖片均來自幻想領域圖床&#xA;雖然透過新浪圖片地址識別出新浪用戶已經不是什麼秘密了&#xA;&lt;a href=&#34;https://sandbox.runjs.cn/show/fx9b4hyv&#34;target=&#34;_blank&#34;&#xA;  class=&#34;inline-flex items-center gap-1&#34;&#xA;&gt;線上演示地址&#xA;  &lt;svg id=&#34;external-link&#34; class=&#34;h-3 w-3 flex-shrink-0&#34;&#xA;    fill=&#34;none&#34;&#xA;    stroke=&#34;currentColor&#34;&#xA;    viewBox=&#34;0 0 24 24&#34;&gt;&lt;path fill=&#34;none&#34; stroke=&#34;currentColor&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34; stroke-width=&#34;2&#34; d=&#34;M15 3h6v6m-11 5L21 3m-3 10v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6&#34;/&gt;&lt;/svg&gt;&#xA;&lt;/a&gt; 這個是js版本的，程式碼可直接右鍵獲取&#xA;透過識別可發現，API中的大量圖片均來自幻想領域圖床微博上傳，也就是我自個上傳的，那些所謂的API是不是盜版我的，自己心裡有數&#xA;&#xA;&lt;figure class=&#34;image-figure not-prose my-8&#34; &#xA;        data-lightbox-enabled=&#34;false&#34;&#xA;        data-gallery-type=&#34;auto&#34;&gt;&#xA;  &lt;div class=&#34;image-container&#34;&gt;&#xA;    &lt;img&#xA;    src=&#34;https://image.baidu.com/search/down?url=https://tva1.sinaimg.cn//large/0072Vf1pgy1fsnjxvkx9jj30fv08i0zn.jpg&#34;&#xA;    alt=&#34;&#34;&#xA;    &#xA;    &#xA;    loading=&#34;lazy&#34;&#xA;    decoding=&#34;async&#34;&#xA;    data-gallery-src=&#34;https://image.baidu.com/search/down?url=https://tva1.sinaimg.cn//large/0072Vf1pgy1fsnjxvkx9jj30fv08i0zn.jpg&#34;&#xA;    data-gallery-alt=&#34;&#34;&#xA;    data-gallery-title=&#34;&#34; /&gt;&lt;/div&gt;&#xA;&#xA;  &lt;/figure&gt;&#xA;原理揭秘：&#xA;由於現在註冊的微博帳號uid都很大，上傳的圖片基本都是007開頭的，所以下面這張圖片是我隨便在微博上挑了個老號複製過來的&#xA;連結為 &lt;a href=&#34;https://wxt.sinaimg.cn/thumb300/9d0d09ably1fsn7m0jyzzj20m80cidgm.jpg&#34;target=&#34;_blank&#34;&#xA;  class=&#34;inline-flex items-center gap-1&#34;&#xA;&gt;https://wxt.sinaimg.cn/thumb300/9d0d09ably1fsn7m0jyzzj20m80cidgm.jpg&#xA;  &lt;svg id=&#34;external-link&#34; class=&#34;h-3 w-3 flex-shrink-0&#34;&#xA;    fill=&#34;none&#34;&#xA;    stroke=&#34;currentColor&#34;&#xA;    viewBox=&#34;0 0 24 24&#34;&gt;&lt;path fill=&#34;none&#34; stroke=&#34;currentColor&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34; stroke-width=&#34;2&#34; d=&#34;M15 3h6v6m-11 5L21 3m-3 10v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6&#34;/&gt;&lt;/svg&gt;&#xA;&lt;/a&gt; 的圖&lt;/p&gt;</description>
    </item>
    <item>
      <title>網頁抓包之我的歌單</title>
      <link>https://ja.moejue.cn/zh-hant/posts/31/</link>
      <pubDate>Tue, 05 Jun 2018 11:04:05 +0000</pubDate>
      <guid>https://ja.moejue.cn/zh-hant/posts/31/</guid>
      <description>&lt;p&gt;最近看到不少人部落格都發了關於網頁抓包的教學，然後也激起了我的興(zhuang)趣(bi)，就誕生了這篇文章&#xA;也剛好前段時間，&lt;a href=&#34;https://music.52ecy.cn/&#34;target=&#34;_blank&#34;&#xA;  class=&#34;inline-flex items-center gap-1&#34;&#xA;&gt;我的歌單&#xA;  &lt;svg id=&#34;external-link&#34; class=&#34;h-3 w-3 flex-shrink-0&#34;&#xA;    fill=&#34;none&#34;&#xA;    stroke=&#34;currentColor&#34;&#xA;    viewBox=&#34;0 0 24 24&#34;&gt;&lt;path fill=&#34;none&#34; stroke=&#34;currentColor&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34; stroke-width=&#34;2&#34; d=&#34;M15 3h6v6m-11 5L21 3m-3 10v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6&#34;/&gt;&lt;/svg&gt;&#xA;&lt;/a&gt;對接酷狗的API失效了，趁機修復一下，順便寫個圖文教學。那麼就拿酷狗「開刀」&#xA;關於抓包的概念&lt;/p&gt;&#xA;&#xA;  &lt;blockquote&#xA;    class=&#34;border-primary bg-muted/30 hover:bg-muted/40 my-6 rounded-r-lg border-l-4 py-4 pr-4 pl-6 italic transition-all duration-200 ease-out hover:translate-x-1&#34;&gt;&#xA;    &lt;div class=&#34;prose prose-sm max-w-none&#34;&gt;&#xA;      &lt;p&gt;抓包（packet capture）就是將網路傳輸發送與接收的資料包進行截獲、重發、編輯、轉存等操作，也用來檢查網路安全。抓包也經常被用來進行資料截取等。&lt;/p&gt;&#xA;&lt;p&gt;——來自基佬百科&lt;/p&gt;&#xA;&#xA;    &lt;/div&gt;&#xA;  &lt;/blockquote&gt;&lt;script&gt;&#xA;function toggleAlert(alertId) {&#xA;  const content = document.getElementById(alertId + &#39;-content&#39;);&#xA;  const chevron = document.getElementById(alertId + &#39;-chevron&#39;);&#xA;  const header = content.previousElementSibling;&#xA;  &#xA;  if (content.classList.contains(&#39;hidden&#39;)) {&#xA;    content.classList.remove(&#39;hidden&#39;);&#xA;    chevron.style.transform = &#39;rotate(0deg)&#39;;&#xA;    header.setAttribute(&#39;aria-expanded&#39;, &#39;true&#39;);&#xA;  } else {&#xA;    content.classList.add(&#39;hidden&#39;);&#xA;    chevron.style.transform = &#39;rotate(-90deg)&#39;;&#xA;    header.setAttribute(&#39;aria-expanded&#39;, &#39;false&#39;);&#xA;  }&#xA;}&#xA;&#xA;&#xA;document.addEventListener(&#39;DOMContentLoaded&#39;, function() {&#xA;  const collapsedAlerts = document.querySelectorAll(&#39;.alert-content.hidden&#39;);&#xA;  collapsedAlerts.forEach(function(content) {&#xA;    const alertId = content.id.replace(&#39;-content&#39;, &#39;&#39;);&#xA;    const chevron = document.getElementById(alertId + &#39;-chevron&#39;);&#xA;    if (chevron) {&#xA;      chevron.style.transform = &#39;rotate(-90deg)&#39;;&#xA;    }&#xA;  });&#xA;});&#xA;&lt;/script&gt;&#xA;&#xA;&lt;p&gt;我們這裡講的是對網頁傳輸的資料進行截取，並不涉及重發、編輯等影響網路安全的操作。&#xA;其實關於&lt;a href=&#34;https://www.52ecy.cn/tag/%E6%8A%93%E5%8C%85&#34;target=&#34;_blank&#34;&#xA;  class=&#34;inline-flex items-center gap-1&#34;&#xA;&gt;抓包&#xA;  &lt;svg id=&#34;external-link&#34; class=&#34;h-3 w-3 flex-shrink-0&#34;&#xA;    fill=&#34;none&#34;&#xA;    stroke=&#34;currentColor&#34;&#xA;    viewBox=&#34;0 0 24 24&#34;&gt;&lt;path fill=&#34;none&#34; stroke=&#34;currentColor&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34; stroke-width=&#34;2&#34; d=&#34;M15 3h6v6m-11 5L21 3m-3 10v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6&#34;/&gt;&lt;/svg&gt;&#xA;&lt;/a&gt;的文章，我早在16年的時候就已經發布了多篇，但是由於文章年久失修，圖片有的丟失，有的損壞，順序也全亂了。&#xA;抓包對於做WEB開發的人來說，可能會比較陌生，尤其是後端，但我是做桌面應用程式出身的，使用起來就得心應手。&#xA;目的：&lt;/p&gt;</description>
    </item>
    <item>
      <title>在 Linux 上安裝 PHP 環境</title>
      <link>https://ja.moejue.cn/zh-hant/posts/65/</link>
      <pubDate>Mon, 07 May 2018 06:52:32 +0000</pubDate>
      <guid>https://ja.moejue.cn/zh-hant/posts/65/</guid>
      <description>&lt;p&gt;學習環境：Centos 7.2 正式版_64位&lt;/p&gt;&#xA;&lt;p&gt;# 更新來源&#xA;yum update&lt;/p&gt;&#xA;&lt;h1 id=&#34;安裝-nginx&#34;&gt;安裝 Nginx&lt;/h1&gt;&#xA;&lt;p&gt;yum install nginx -y&lt;/p&gt;&#xA;&lt;h1 id=&#34;安裝-mysql&#34;&gt;安裝 MySQL&lt;/h1&gt;&#xA;&lt;p&gt;wget &lt;a href=&#34;https://repo.mysql.com//mysql57-community-release-el7-11.noarch.rpm&#34;target=&#34;_blank&#34;&#xA;  class=&#34;inline-flex items-center gap-1&#34;&#xA;&gt;https://repo.mysql.com//mysql57-community-release-el7-11.noarch.rpm&#xA;  &lt;svg id=&#34;external-link&#34; class=&#34;h-3 w-3 flex-shrink-0&#34;&#xA;    fill=&#34;none&#34;&#xA;    stroke=&#34;currentColor&#34;&#xA;    viewBox=&#34;0 0 24 24&#34;&gt;&lt;path fill=&#34;none&#34; stroke=&#34;currentColor&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34; stroke-width=&#34;2&#34; d=&#34;M15 3h6v6m-11 5L21 3m-3 10v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6&#34;/&gt;&lt;/svg&gt;&#xA;&lt;/a&gt;&#xA;yum localinstall mysql57-community-release-el7-11.noarch.rpm&lt;/p&gt;&#xA;&lt;h1 id=&#34;安裝-php-72&#34;&gt;安裝 PHP 7.2&lt;/h1&gt;&#xA;&lt;p&gt;rpm -Uvh &lt;a href=&#34;https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm&#34;target=&#34;_blank&#34;&#xA;  class=&#34;inline-flex items-center gap-1&#34;&#xA;&gt;https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm&#xA;  &lt;svg id=&#34;external-link&#34; class=&#34;h-3 w-3 flex-shrink-0&#34;&#xA;    fill=&#34;none&#34;&#xA;    stroke=&#34;currentColor&#34;&#xA;    viewBox=&#34;0 0 24 24&#34;&gt;&lt;path fill=&#34;none&#34; stroke=&#34;currentColor&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34; stroke-width=&#34;2&#34; d=&#34;M15 3h6v6m-11 5L21 3m-3 10v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6&#34;/&gt;&lt;/svg&gt;&#xA;&lt;/a&gt;&#xA;rpm -Uvh &lt;a href=&#34;https://mirror.webtatic.com/yum/el7/webtatic-release.rpm&#34;target=&#34;_blank&#34;&#xA;  class=&#34;inline-flex items-center gap-1&#34;&#xA;&gt;https://mirror.webtatic.com/yum/el7/webtatic-release.rpm&#xA;  &lt;svg id=&#34;external-link&#34; class=&#34;h-3 w-3 flex-shrink-0&#34;&#xA;    fill=&#34;none&#34;&#xA;    stroke=&#34;currentColor&#34;&#xA;    viewBox=&#34;0 0 24 24&#34;&gt;&lt;path fill=&#34;none&#34; stroke=&#34;currentColor&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34; stroke-width=&#34;2&#34; d=&#34;M15 3h6v6m-11 5L21 3m-3 10v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6&#34;/&gt;&lt;/svg&gt;&#xA;&lt;/a&gt;&#xA;yum update&#xA;yum install -y php72w-cli php72w-common php72w-dba php72w-devel php72w-fpm php72w-gd php72w-imap php72w-mbstring php72w-mysql php72w-pdo php72w-pdo_dblib php72w-pear php72w-pecl-igbinary php72w-pecl-xdebug php72w-process php72w-xml php72w-xmlrpc php72w-opcache php72w-pecl-memcached php72w-pecl-mongodb php72w-pecl-redis&lt;/p&gt;</description>
    </item>
    <item>
      <title>Git簡單的使用步驟</title>
      <link>https://ja.moejue.cn/zh-hant/posts/64/</link>
      <pubDate>Tue, 03 Apr 2018 12:04:32 +0000</pubDate>
      <guid>https://ja.moejue.cn/zh-hant/posts/64/</guid>
      <description>&lt;p&gt;本文不闡述任何概念性知識，僅僅只是做一個筆記，簡單的使用步驟，如遇障礙，請Google一下&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;使用SSH 完成 Git 與 GitHub 的綁定&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;生成 &lt;code&gt;SSH key&lt;/code&gt;&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;div&#xA;  class=&#34;code-block-container border-border bg-card my-6 overflow-hidden rounded-xl border shadow-sm transition-all duration-200 ease-out hover:-translate-y-0.5 hover:shadow-md&#34;&gt;&#xA;  &#xA;  &lt;div&#xA;    class=&#34;code-block-header bg-muted/30 border-border flex items-center justify-between border-b px-4 py-3&#34;&gt;&#xA;    &#xA;    &lt;div class=&#34;flex items-center gap-2&#34;&gt;&#xA;      &lt;div class=&#34;text-muted-foreground flex-shrink-0&#34;&gt;&#xA;        &#xA;  &lt;svg class=&#34;h-4 w-4&#34;&#xA;    fill=&#34;none&#34;&#xA;    stroke=&#34;currentColor&#34;&#xA;    viewBox=&#34;0 0 24 24&#34;&gt;&lt;path stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34; stroke-width=&#34;2&#34; d=&#34;M10 20l4-16m4 4l4 4-4 4M6 16l-4-4 4-4&#34; /&gt;&#xA;&lt;/svg&gt;&#xA;      &lt;/div&gt;&#xA;      &lt;span class=&#34;text-muted-foreground text-sm font-medium&#34;&gt;&#xA;        PLAINTEXT&#xA;      &lt;/span&gt;&#xA;    &lt;/div&gt;&#xA;&#xA;    &#xA;    &lt;div class=&#34;flex items-center gap-2&#34;&gt;&#xA;      &lt;button&#xA;          class=&#34;collapse-code-btn text-muted-foreground hover:text-primary hover:bg-primary/10 focus:ring-primary/20 flex items-center gap-1.5 rounded-md px-2 py-1 text-xs font-medium transition-all duration-200 ease-out focus:ring-2 focus:outline-none&#34;&#xA;          data-code-id=&#34;code-0&#34;&#xA;          data-default-state=&#34;expanded&#34;&#xA;          data-collapsed=&#34;false&#34;&#xA;          data-auto-collapse-lines=&#34;30&#34;&#xA;          data-auto-collapse-height=&#34;400&#34;&#xA;          data-collapsed-height=&#34;120&#34;&#xA;          title=&#34;折りたたむ&#34;&#xA;          aria-label=&#34;折りたたむ&#34;&gt;&#xA;          &lt;span class=&#34;collapse-icon&#34;&gt;&#xA;            &#xA;  &lt;svg class=&#34;h-3 w-3&#34;&#xA;    fill=&#34;none&#34;&#xA;    stroke=&#34;currentColor&#34;&#xA;    viewBox=&#34;0 0 24 24&#34;&gt;&lt;path fill=&#34;currentColor&#34; d=&#34;M7.41 15.41L12 10.83l4.59 4.58L18 14l-6-6l-6 6z&#34;/&gt;&lt;/svg&gt;&#xA;          &lt;/span&gt;&#xA;          &lt;span class=&#34;collapse-text hidden sm:inline&#34;&#xA;            &gt;折りたたむ&lt;/span&#xA;          &gt;&#xA;        &lt;/button&gt;&#xA;      &lt;button&#xA;        class=&#34;copy-code-btn text-muted-foreground hover:text-primary hover:bg-primary/10 focus:ring-primary/20 flex items-center gap-1.5 rounded-md px-2 py-1 text-xs font-medium transition-all duration-200 ease-out focus:ring-2 focus:outline-none&#34;&#xA;        data-code-id=&#34;code-0&#34;&#xA;        title=&#34;コピー&#34;&#xA;        aria-label=&#34;コピー&#34;&gt;&#xA;        &lt;span class=&#34;copy-icon&#34;&gt;&#xA;          &#xA;  &lt;svg class=&#34;h-3 w-3&#34;&#xA;    fill=&#34;none&#34;&#xA;    stroke=&#34;currentColor&#34;&#xA;    viewBox=&#34;0 0 24 24&#34;&gt;&lt;path stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34; stroke-width=&#34;2&#34; d=&#34;M8 16H6a2 2 0 01-2-2V6a2 2 0 012-2h8a2 2 0 012 2v2m-6 12h8a2 2 0 002-2v-8a2 2 0 00-2-2h-8a2 2 0 00-2 2v8a2 2 0 002 2z&#34; /&gt;&#xA;&lt;/svg&gt;&#xA;        &lt;/span&gt;&#xA;        &lt;span class=&#34;copy-text hidden sm:inline&#34;&#xA;          &gt;コピー&lt;/span&#xA;        &gt;&#xA;      &lt;/button&gt;&#xA;    &lt;/div&gt;&#xA;  &lt;/div&gt;&#xA;&#xA;  &#xA;  &lt;div class=&#34;code-block-content relative&#34; id=&#34;code-0&#34;&gt;&#xA;    &lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;ssh-keygen -t rsa&lt;/code&gt;&lt;/pre&gt;&#xA;    &#xA;    &lt;div&#xA;      class=&#34;collapse-overlay to-card/90 pointer-events-none absolute inset-0 bg-gradient-to-b from-transparent via-transparent opacity-0 transition-opacity duration-300&#34;&gt;&#xA;      &lt;div&#xA;        class=&#34;text-muted-foreground bg-card/80 border-border/50 hover:bg-primary/10 hover:text-primary hover:border-primary/30 absolute bottom-4 left-1/2 -translate-x-1/2 cursor-pointer rounded-full border px-3 py-1.5 text-xs backdrop-blur-sm transition-all duration-200&#34;&gt;&#xA;        クリックして展開し、詳細を表示&#xA;      &lt;/div&gt;&#xA;    &lt;/div&gt;&#xA;  &lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&#xA;&#xA;&lt;script&gt;&#xA;(function() {&#xA;  const codeId = &#39;code-0&#39;;&#xA;  const copyBtn = document.querySelector(&#39;.copy-code-btn[data-code-id=&#34;&#39; + codeId + &#39;&#34;]&#39;);&#xA;  const collapseBtn = document.querySelector(&#39;.collapse-code-btn[data-code-id=&#34;&#39; + codeId + &#39;&#34;]&#39;);&#xA;  const codeContainer = document.getElementById(codeId);&#xA;&#xA;  if (!codeContainer) return;&#xA;&#xA;  &#xA;  if (copyBtn) {&#xA;    const copyIcon = copyBtn.querySelector(&#39;.copy-icon&#39;);&#xA;    const copyText = copyBtn.querySelector(&#39;.copy-text&#39;);&#xA;&#xA;    copyBtn.addEventListener(&#39;click&#39;, async function() {&#xA;      try {&#xA;        &#xA;        let codeText = &#39;&#39;;&#xA;&#xA;        &#xA;        const codeTableCell = codeContainer.querySelector(&#39;.lntd:last-child code&#39;);&#xA;        if (codeTableCell) {&#xA;          codeText = codeTableCell.textContent || codeTableCell.innerText;&#xA;        } else {&#xA;          &#xA;          const codeElement = codeContainer.querySelector(&#39;code&#39;);&#xA;          if (codeElement) {&#xA;            &#xA;            const hasInlineLineNumbers = codeElement.querySelector(&#39;.ln&#39;);&#xA;            if (hasInlineLineNumbers) {&#xA;              &#xA;              const codeLines = codeElement.querySelectorAll(&#39;.cl&#39;);&#xA;              if (codeLines.length &gt; 0) {&#xA;                codeText = Array.from(codeLines)&#xA;                  .map(line =&gt; {&#xA;                    const text = line.textContent || line.innerText;&#xA;                    &#xA;                    return text.replace(/\n+$/, &#39;&#39;);&#xA;                  })&#xA;                  .join(&#39;\n&#39;)&#xA;                  .replace(/\n+$/, &#39;&#39;); &#xA;              } else {&#xA;                &#xA;                const allText = codeElement.textContent || codeElement.innerText;&#xA;                codeText = allText.replace(/^\d+/gm, &#39;&#39;).replace(/^\s+/gm, &#39;&#39;);&#xA;              }&#xA;            } else {&#xA;              &#xA;              codeText = codeElement.textContent || codeElement.innerText;&#xA;            }&#xA;          } else {&#xA;            &#xA;            codeText = codeContainer.textContent || codeContainer.innerText;&#xA;          }&#xA;        }&#xA;&#xA;        &#xA;        codeText = codeText.trim();&#xA;&#xA;        &#xA;        await navigator.clipboard.writeText(codeText);&#xA;&#xA;        &#xA;        copyIcon.innerHTML = `\n  \u003csvg class=\u0022h-3 w-3\u0022\n    fill=\u0022none\u0022\n    stroke=\u0022currentColor\u0022\n    viewBox=\u00220 0 24 24\u0022\u003e\u003cpath stroke-linecap=\u0022round\u0022 stroke-linejoin=\u0022round\u0022 stroke-width=\u00222\u0022 d=\u0022M5 13l4 4L19 7\u0022 \/\u003e\n\u003c\/svg\u003e`;&#xA;        if (copyText) {&#xA;          copyText.textContent = &#39;コピーしました&#39;;&#xA;        }&#xA;        copyBtn.classList.add(&#39;text-green-600&#39;);&#xA;&#xA;        &#xA;        setTimeout(() =&gt; {&#xA;          copyIcon.innerHTML = `\n  \u003csvg class=\u0022h-3 w-3\u0022\n    fill=\u0022none\u0022\n    stroke=\u0022currentColor\u0022\n    viewBox=\u00220 0 24 24\u0022\u003e\u003cpath stroke-linecap=\u0022round\u0022 stroke-linejoin=\u0022round\u0022 stroke-width=\u00222\u0022 d=\u0022M8 16H6a2 2 0 01-2-2V6a2 2 0 012-2h8a2 2 0 012 2v2m-6 12h8a2 2 0 002-2v-8a2 2 0 00-2-2h-8a2 2 0 00-2 2v8a2 2 0 002 2z\u0022 \/\u003e\n\u003c\/svg\u003e`;&#xA;          if (copyText) {&#xA;            copyText.textContent = &#39;コピー&#39;;&#xA;          }&#xA;          copyBtn.classList.remove(&#39;text-green-600&#39;);&#xA;        }, 2000);&#xA;&#xA;      } catch (err) {&#xA;        console.error(&#39;复制失败:&#39;, err);&#xA;&#xA;        &#xA;        const range = document.createRange();&#xA;        const codeElement = codeContainer.querySelector(&#39;code&#39;) || codeContainer;&#xA;        range.selectNodeContents(codeElement);&#xA;        const selection = window.getSelection();&#xA;        selection.removeAllRanges();&#xA;        selection.addRange(range);&#xA;&#xA;        &#xA;        if (copyText) {&#xA;          copyText.textContent = &#39;選択済み&#39;;&#xA;        }&#xA;&#xA;        setTimeout(() =&gt; {&#xA;          if (copyText) {&#xA;            copyText.textContent = &#39;コピー&#39;;&#xA;          }&#xA;          selection.removeAllRanges();&#xA;        }, 2000);&#xA;      }&#xA;    });&#xA;  }&#xA;&#xA;  &#xA;  if (collapseBtn) {&#xA;    const collapseIcon = collapseBtn.querySelector(&#39;.collapse-icon&#39;);&#xA;    const collapseText = collapseBtn.querySelector(&#39;.collapse-text&#39;);&#xA;    const collapseOverlay = codeContainer.querySelector(&#39;.collapse-overlay&#39;);&#xA;&#xA;    &#xA;    let codeElement = codeContainer.querySelector(&#39;pre.chroma&#39;);&#xA;    if (!codeElement) {&#xA;      codeElement = codeContainer.querySelector(&#39;pre&#39;);&#xA;    }&#xA;&#xA;    const defaultState = collapseBtn.dataset.defaultState || &#39;expanded&#39;;&#xA;    const isCollapsedAttr = collapseBtn.dataset.collapsed === &#39;true&#39;;&#xA;    const autoCollapseLines = parseInt(collapseBtn.dataset.autoCollapseLines) || 30;&#xA;    const autoCollapseHeight = parseInt(collapseBtn.dataset.autoCollapseHeight) || 400;&#xA;    const collapsedHeight = parseInt(collapseBtn.dataset.collapsedHeight) || 120;&#xA;&#xA;    let isCollapsed = false;&#xA;&#xA;    &#xA;    function initCollapse() {&#xA;      &#xA;      const shouldCollapse = isCollapsedAttr ||&#xA;                           defaultState === &#39;collapsed&#39; ||&#xA;                           shouldAutoCollapse();&#xA;&#xA;      if (shouldCollapse) {&#xA;        setCollapsed(true, false); &#xA;      }&#xA;    }&#xA;&#xA;    function shouldAutoCollapse() {&#xA;      &#xA;      if (codeElement) {&#xA;        const lines = codeElement.querySelectorAll(&#39;.line, .cl&#39;);&#xA;        const height = codeElement.offsetHeight;&#xA;        return lines.length &gt; autoCollapseLines || height &gt; autoCollapseHeight;&#xA;      }&#xA;&#xA;      &#xA;      const containerHeight = codeContainer.offsetHeight;&#xA;      if (containerHeight &gt; autoCollapseHeight) {&#xA;        return true;&#xA;      }&#xA;&#xA;      &#xA;      const textContent = codeContainer.textContent || codeContainer.innerText || &#39;&#39;;&#xA;      const estimatedLines = textContent.split(&#39;\n&#39;).length;&#xA;      return estimatedLines &gt; autoCollapseLines;&#xA;    }&#xA;&#xA;    function setCollapsed(collapsed, animate = true) {&#xA;      if (!collapseOverlay) return;&#xA;&#xA;      isCollapsed = collapsed;&#xA;&#xA;      if (collapsed) {&#xA;        &#xA;        codeContainer.style.maxHeight = collapsedHeight + &#39;px&#39;;&#xA;        codeContainer.style.overflow = &#39;hidden&#39;;&#xA;        collapseOverlay.style.opacity = &#39;1&#39;;&#xA;        collapseOverlay.style.pointerEvents = &#39;auto&#39;;&#xA;&#xA;        &#xA;        collapseIcon.innerHTML = `\n  \u003csvg class=\u0022h-3 w-3\u0022\n    fill=\u0022none\u0022\n    stroke=\u0022currentColor\u0022\n    viewBox=\u00220 0 24 24\u0022\u003e\u003cpath stroke-linecap=\u0022round\u0022 stroke-linejoin=\u0022round\u0022 stroke-width=\u00222\u0022 d=\u0022M19 9l-7 7-7-7\u0022 \/\u003e\n\u003c\/svg\u003e`;&#xA;        if (collapseText) {&#xA;          collapseText.textContent = &#39;展開&#39;;&#xA;        }&#xA;        collapseBtn.title = &#39;展開&#39;;&#xA;&#xA;      } else {&#xA;        &#xA;        codeContainer.style.maxHeight = &#39;&#39;;&#xA;        codeContainer.style.overflow = &#39;&#39;;&#xA;        collapseOverlay.style.opacity = &#39;0&#39;;&#xA;        collapseOverlay.style.pointerEvents = &#39;none&#39;;&#xA;&#xA;        &#xA;        collapseIcon.innerHTML = `\n  \u003csvg class=\u0022h-3 w-3\u0022\n    fill=\u0022none\u0022\n    stroke=\u0022currentColor\u0022\n    viewBox=\u00220 0 24 24\u0022\u003e\u003cpath fill=\u0022currentColor\u0022 d=\u0022M7.41 15.41L12 10.83l4.59 4.58L18 14l-6-6l-6 6z\u0022\/\u003e\u003c\/svg\u003e`;&#xA;        if (collapseText) {&#xA;          collapseText.textContent = &#39;折りたたむ&#39;;&#xA;        }&#xA;        collapseBtn.title = &#39;折りたたむ&#39;;&#xA;      }&#xA;&#xA;      &#xA;      if (animate) {&#xA;        codeContainer.style.transition = &#39;max-height 0.3s ease-out&#39;;&#xA;        setTimeout(() =&gt; {&#xA;          codeContainer.style.transition = &#39;&#39;;&#xA;        }, 300);&#xA;      }&#xA;    }&#xA;&#xA;    function toggleCollapse() {&#xA;      setCollapsed(!isCollapsed, true);&#xA;    }&#xA;&#xA;    &#xA;    collapseBtn.addEventListener(&#39;click&#39;, toggleCollapse);&#xA;&#xA;    &#xA;    if (collapseOverlay) {&#xA;      collapseOverlay.addEventListener(&#39;click&#39;, () =&gt; {&#xA;        if (isCollapsed) {&#xA;          setCollapsed(false, true);&#xA;        }&#xA;      });&#xA;    }&#xA;&#xA;    &#xA;    initCollapse();&#xA;  }&#xA;})();&#xA;&lt;/script&gt;&#xA;&lt;p&gt;指定 RSA 演算法生成金鑰，之後就會生成兩個檔案，分別為id_rsa和id_rsa.pub，即私鑰id_rsa和公鑰id_rsa.pub。對於這兩個檔案&lt;/p&gt;</description>
    </item>
    <item>
      <title>幻想領域圖床使用幫助</title>
      <link>https://ja.moejue.cn/zh-hant/posts/63/</link>
      <pubDate>Mon, 19 Mar 2018 11:56:29 +0000</pubDate>
      <guid>https://ja.moejue.cn/zh-hant/posts/63/</guid>
      <description>&lt;p&gt;由於許多人在安裝使用過程中遇到問題，因此還是得總結一下，如果還不能解決可以加群向萬能的群友提問&lt;/p&gt;&#xA;&lt;h2 id=&#34;驗證碼不顯示&#34;&gt;驗證碼不顯示&lt;/h2&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;檢查伺服器是否支援 GD 圖形處理庫&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;檢查伺服器 WEB 環境&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;Apache：如果你的程式安裝在二級目錄下，修改程式根目錄下的 .htaccess 檔案&lt;/p&gt;&#xA;&lt;div&#xA;  class=&#34;code-block-container border-border bg-card my-6 overflow-hidden rounded-xl border shadow-sm transition-all duration-200 ease-out hover:-translate-y-0.5 hover:shadow-md&#34;&gt;&#xA;  &#xA;  &lt;div&#xA;    class=&#34;code-block-header bg-muted/30 border-border flex items-center justify-between border-b px-4 py-3&#34;&gt;&#xA;    &#xA;    &lt;div class=&#34;flex items-center gap-2&#34;&gt;&#xA;      &lt;div class=&#34;text-muted-foreground flex-shrink-0&#34;&gt;&#xA;        &#xA;  &lt;svg class=&#34;h-4 w-4&#34;&#xA;    fill=&#34;none&#34;&#xA;    stroke=&#34;currentColor&#34;&#xA;    viewBox=&#34;0 0 24 24&#34;&gt;&lt;path stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34; stroke-width=&#34;2&#34; d=&#34;M10 20l4-16m4 4l4 4-4 4M6 16l-4-4 4-4&#34; /&gt;&#xA;&lt;/svg&gt;&#xA;      &lt;/div&gt;&#xA;      &lt;span class=&#34;text-muted-foreground text-sm font-medium&#34;&gt;&#xA;        PLAINTEXT&#xA;      &lt;/span&gt;&#xA;    &lt;/div&gt;&#xA;&#xA;    &#xA;    &lt;div class=&#34;flex items-center gap-2&#34;&gt;&#xA;      &lt;button&#xA;          class=&#34;collapse-code-btn text-muted-foreground hover:text-primary hover:bg-primary/10 focus:ring-primary/20 flex items-center gap-1.5 rounded-md px-2 py-1 text-xs font-medium transition-all duration-200 ease-out focus:ring-2 focus:outline-none&#34;&#xA;          data-code-id=&#34;code-0&#34;&#xA;          data-default-state=&#34;expanded&#34;&#xA;          data-collapsed=&#34;false&#34;&#xA;          data-auto-collapse-lines=&#34;30&#34;&#xA;          data-auto-collapse-height=&#34;400&#34;&#xA;          data-collapsed-height=&#34;120&#34;&#xA;          title=&#34;折りたたむ&#34;&#xA;          aria-label=&#34;折りたたむ&#34;&gt;&#xA;          &lt;span class=&#34;collapse-icon&#34;&gt;&#xA;            &#xA;  &lt;svg class=&#34;h-3 w-3&#34;&#xA;    fill=&#34;none&#34;&#xA;    stroke=&#34;currentColor&#34;&#xA;    viewBox=&#34;0 0 24 24&#34;&gt;&lt;path fill=&#34;currentColor&#34; d=&#34;M7.41 15.41L12 10.83l4.59 4.58L18 14l-6-6l-6 6z&#34;/&gt;&lt;/svg&gt;&#xA;          &lt;/span&gt;&#xA;          &lt;span class=&#34;collapse-text hidden sm:inline&#34;&#xA;            &gt;折りたたむ&lt;/span&#xA;          &gt;&#xA;        &lt;/button&gt;&#xA;      &lt;button&#xA;        class=&#34;copy-code-btn text-muted-foreground hover:text-primary hover:bg-primary/10 focus:ring-primary/20 flex items-center gap-1.5 rounded-md px-2 py-1 text-xs font-medium transition-all duration-200 ease-out focus:ring-2 focus:outline-none&#34;&#xA;        data-code-id=&#34;code-0&#34;&#xA;        title=&#34;コピー&#34;&#xA;        aria-label=&#34;コピー&#34;&gt;&#xA;        &lt;span class=&#34;copy-icon&#34;&gt;&#xA;          &#xA;  &lt;svg class=&#34;h-3 w-3&#34;&#xA;    fill=&#34;none&#34;&#xA;    stroke=&#34;currentColor&#34;&#xA;    viewBox=&#34;0 0 24 24&#34;&gt;&lt;path stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34; stroke-width=&#34;2&#34; d=&#34;M8 16H6a2 2 0 01-2-2V6a2 2 0 012-2h8a2 2 0 012 2v2m-6 12h8a2 2 0 002-2v-8a2 2 0 00-2-2h-8a2 2 0 00-2 2v8a2 2 0 002 2z&#34; /&gt;&#xA;&lt;/svg&gt;&#xA;        &lt;/span&gt;&#xA;        &lt;span class=&#34;copy-text hidden sm:inline&#34;&#xA;          &gt;コピー&lt;/span&#xA;        &gt;&#xA;      &lt;/button&gt;&#xA;    &lt;/div&gt;&#xA;  &lt;/div&gt;&#xA;&#xA;  &#xA;  &lt;div class=&#34;code-block-content relative&#34; id=&#34;code-0&#34;&gt;&#xA;    &lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;&amp;lt;IfModule mod_rewrite.c&amp;gt;&#xA;RewriteEngine on&#xA;RewriteCond %{REQUEST_FILENAME} !-d&#xA;RewriteCond %{REQUEST_FILENAME} !-f&#xA;Rewritebase /你的二級目錄名/index.php&#xA;RewriteRule ^(.*)$ /你的二級目錄名/index.php?/$1 [L]&#xA;&amp;lt;/IfModule&amp;gt;&lt;/code&gt;&lt;/pre&gt;&#xA;    &#xA;    &lt;div&#xA;      class=&#34;collapse-overlay to-card/90 pointer-events-none absolute inset-0 bg-gradient-to-b from-transparent via-transparent opacity-0 transition-opacity duration-300&#34;&gt;&#xA;      &lt;div&#xA;        class=&#34;text-muted-foreground bg-card/80 border-border/50 hover:bg-primary/10 hover:text-primary hover:border-primary/30 absolute bottom-4 left-1/2 -translate-x-1/2 cursor-pointer rounded-full border px-3 py-1.5 text-xs backdrop-blur-sm transition-all duration-200&#34;&gt;&#xA;        クリックして展開し、詳細を表示&#xA;      &lt;/div&gt;&#xA;    &lt;/div&gt;&#xA;  &lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&#xA;&#xA;&lt;script&gt;&#xA;(function() {&#xA;  const codeId = &#39;code-0&#39;;&#xA;  const copyBtn = document.querySelector(&#39;.copy-code-btn[data-code-id=&#34;&#39; + codeId + &#39;&#34;]&#39;);&#xA;  const collapseBtn = document.querySelector(&#39;.collapse-code-btn[data-code-id=&#34;&#39; + codeId + &#39;&#34;]&#39;);&#xA;  const codeContainer = document.getElementById(codeId);&#xA;&#xA;  if (!codeContainer) return;&#xA;&#xA;  &#xA;  if (copyBtn) {&#xA;    const copyIcon = copyBtn.querySelector(&#39;.copy-icon&#39;);&#xA;    const copyText = copyBtn.querySelector(&#39;.copy-text&#39;);&#xA;&#xA;    copyBtn.addEventListener(&#39;click&#39;, async function() {&#xA;      try {&#xA;        &#xA;        let codeText = &#39;&#39;;&#xA;&#xA;        &#xA;        const codeTableCell = codeContainer.querySelector(&#39;.lntd:last-child code&#39;);&#xA;        if (codeTableCell) {&#xA;          codeText = codeTableCell.textContent || codeTableCell.innerText;&#xA;        } else {&#xA;          &#xA;          const codeElement = codeContainer.querySelector(&#39;code&#39;);&#xA;          if (codeElement) {&#xA;            &#xA;            const hasInlineLineNumbers = codeElement.querySelector(&#39;.ln&#39;);&#xA;            if (hasInlineLineNumbers) {&#xA;              &#xA;              const codeLines = codeElement.querySelectorAll(&#39;.cl&#39;);&#xA;              if (codeLines.length &gt; 0) {&#xA;                codeText = Array.from(codeLines)&#xA;                  .map(line =&gt; {&#xA;                    const text = line.textContent || line.innerText;&#xA;                    &#xA;                    return text.replace(/\n+$/, &#39;&#39;);&#xA;                  })&#xA;                  .join(&#39;\n&#39;)&#xA;                  .replace(/\n+$/, &#39;&#39;); &#xA;              } else {&#xA;                &#xA;                const allText = codeElement.textContent || codeElement.innerText;&#xA;                codeText = allText.replace(/^\d+/gm, &#39;&#39;).replace(/^\s+/gm, &#39;&#39;);&#xA;              }&#xA;            } else {&#xA;              &#xA;              codeText = codeElement.textContent || codeElement.innerText;&#xA;            }&#xA;          } else {&#xA;            &#xA;            codeText = codeContainer.textContent || codeContainer.innerText;&#xA;          }&#xA;        }&#xA;&#xA;        &#xA;        codeText = codeText.trim();&#xA;&#xA;        &#xA;        await navigator.clipboard.writeText(codeText);&#xA;&#xA;        &#xA;        copyIcon.innerHTML = `\n  \u003csvg class=\u0022h-3 w-3\u0022\n    fill=\u0022none\u0022\n    stroke=\u0022currentColor\u0022\n    viewBox=\u00220 0 24 24\u0022\u003e\u003cpath stroke-linecap=\u0022round\u0022 stroke-linejoin=\u0022round\u0022 stroke-width=\u00222\u0022 d=\u0022M5 13l4 4L19 7\u0022 \/\u003e\n\u003c\/svg\u003e`;&#xA;        if (copyText) {&#xA;          copyText.textContent = &#39;コピーしました&#39;;&#xA;        }&#xA;        copyBtn.classList.add(&#39;text-green-600&#39;);&#xA;&#xA;        &#xA;        setTimeout(() =&gt; {&#xA;          copyIcon.innerHTML = `\n  \u003csvg class=\u0022h-3 w-3\u0022\n    fill=\u0022none\u0022\n    stroke=\u0022currentColor\u0022\n    viewBox=\u00220 0 24 24\u0022\u003e\u003cpath stroke-linecap=\u0022round\u0022 stroke-linejoin=\u0022round\u0022 stroke-width=\u00222\u0022 d=\u0022M8 16H6a2 2 0 01-2-2V6a2 2 0 012-2h8a2 2 0 012 2v2m-6 12h8a2 2 0 002-2v-8a2 2 0 00-2-2h-8a2 2 0 00-2 2v8a2 2 0 002 2z\u0022 \/\u003e\n\u003c\/svg\u003e`;&#xA;          if (copyText) {&#xA;            copyText.textContent = &#39;コピー&#39;;&#xA;          }&#xA;          copyBtn.classList.remove(&#39;text-green-600&#39;);&#xA;        }, 2000);&#xA;&#xA;      } catch (err) {&#xA;        console.error(&#39;复制失败:&#39;, err);&#xA;&#xA;        &#xA;        const range = document.createRange();&#xA;        const codeElement = codeContainer.querySelector(&#39;code&#39;) || codeContainer;&#xA;        range.selectNodeContents(codeElement);&#xA;        const selection = window.getSelection();&#xA;        selection.removeAllRanges();&#xA;        selection.addRange(range);&#xA;&#xA;        &#xA;        if (copyText) {&#xA;          copyText.textContent = &#39;選択済み&#39;;&#xA;        }&#xA;&#xA;        setTimeout(() =&gt; {&#xA;          if (copyText) {&#xA;            copyText.textContent = &#39;コピー&#39;;&#xA;          }&#xA;          selection.removeAllRanges();&#xA;        }, 2000);&#xA;      }&#xA;    });&#xA;  }&#xA;&#xA;  &#xA;  if (collapseBtn) {&#xA;    const collapseIcon = collapseBtn.querySelector(&#39;.collapse-icon&#39;);&#xA;    const collapseText = collapseBtn.querySelector(&#39;.collapse-text&#39;);&#xA;    const collapseOverlay = codeContainer.querySelector(&#39;.collapse-overlay&#39;);&#xA;&#xA;    &#xA;    let codeElement = codeContainer.querySelector(&#39;pre.chroma&#39;);&#xA;    if (!codeElement) {&#xA;      codeElement = codeContainer.querySelector(&#39;pre&#39;);&#xA;    }&#xA;&#xA;    const defaultState = collapseBtn.dataset.defaultState || &#39;expanded&#39;;&#xA;    const isCollapsedAttr = collapseBtn.dataset.collapsed === &#39;true&#39;;&#xA;    const autoCollapseLines = parseInt(collapseBtn.dataset.autoCollapseLines) || 30;&#xA;    const autoCollapseHeight = parseInt(collapseBtn.dataset.autoCollapseHeight) || 400;&#xA;    const collapsedHeight = parseInt(collapseBtn.dataset.collapsedHeight) || 120;&#xA;&#xA;    let isCollapsed = false;&#xA;&#xA;    &#xA;    function initCollapse() {&#xA;      &#xA;      const shouldCollapse = isCollapsedAttr ||&#xA;                           defaultState === &#39;collapsed&#39; ||&#xA;                           shouldAutoCollapse();&#xA;&#xA;      if (shouldCollapse) {&#xA;        setCollapsed(true, false); &#xA;      }&#xA;    }&#xA;&#xA;    function shouldAutoCollapse() {&#xA;      &#xA;      if (codeElement) {&#xA;        const lines = codeElement.querySelectorAll(&#39;.line, .cl&#39;);&#xA;        const height = codeElement.offsetHeight;&#xA;        return lines.length &gt; autoCollapseLines || height &gt; autoCollapseHeight;&#xA;      }&#xA;&#xA;      &#xA;      const containerHeight = codeContainer.offsetHeight;&#xA;      if (containerHeight &gt; autoCollapseHeight) {&#xA;        return true;&#xA;      }&#xA;&#xA;      &#xA;      const textContent = codeContainer.textContent || codeContainer.innerText || &#39;&#39;;&#xA;      const estimatedLines = textContent.split(&#39;\n&#39;).length;&#xA;      return estimatedLines &gt; autoCollapseLines;&#xA;    }&#xA;&#xA;    function setCollapsed(collapsed, animate = true) {&#xA;      if (!collapseOverlay) return;&#xA;&#xA;      isCollapsed = collapsed;&#xA;&#xA;      if (collapsed) {&#xA;        &#xA;        codeContainer.style.maxHeight = collapsedHeight + &#39;px&#39;;&#xA;        codeContainer.style.overflow = &#39;hidden&#39;;&#xA;        collapseOverlay.style.opacity = &#39;1&#39;;&#xA;        collapseOverlay.style.pointerEvents = &#39;auto&#39;;&#xA;&#xA;        &#xA;        collapseIcon.innerHTML = `\n  \u003csvg class=\u0022h-3 w-3\u0022\n    fill=\u0022none\u0022\n    stroke=\u0022currentColor\u0022\n    viewBox=\u00220 0 24 24\u0022\u003e\u003cpath stroke-linecap=\u0022round\u0022 stroke-linejoin=\u0022round\u0022 stroke-width=\u00222\u0022 d=\u0022M19 9l-7 7-7-7\u0022 \/\u003e\n\u003c\/svg\u003e`;&#xA;        if (collapseText) {&#xA;          collapseText.textContent = &#39;展開&#39;;&#xA;        }&#xA;        collapseBtn.title = &#39;展開&#39;;&#xA;&#xA;      } else {&#xA;        &#xA;        codeContainer.style.maxHeight = &#39;&#39;;&#xA;        codeContainer.style.overflow = &#39;&#39;;&#xA;        collapseOverlay.style.opacity = &#39;0&#39;;&#xA;        collapseOverlay.style.pointerEvents = &#39;none&#39;;&#xA;&#xA;        &#xA;        collapseIcon.innerHTML = `\n  \u003csvg class=\u0022h-3 w-3\u0022\n    fill=\u0022none\u0022\n    stroke=\u0022currentColor\u0022\n    viewBox=\u00220 0 24 24\u0022\u003e\u003cpath fill=\u0022currentColor\u0022 d=\u0022M7.41 15.41L12 10.83l4.59 4.58L18 14l-6-6l-6 6z\u0022\/\u003e\u003c\/svg\u003e`;&#xA;        if (collapseText) {&#xA;          collapseText.textContent = &#39;折りたたむ&#39;;&#xA;        }&#xA;        collapseBtn.title = &#39;折りたたむ&#39;;&#xA;      }&#xA;&#xA;      &#xA;      if (animate) {&#xA;        codeContainer.style.transition = &#39;max-height 0.3s ease-out&#39;;&#xA;        setTimeout(() =&gt; {&#xA;          codeContainer.style.transition = &#39;&#39;;&#xA;        }, 300);&#xA;      }&#xA;    }&#xA;&#xA;    function toggleCollapse() {&#xA;      setCollapsed(!isCollapsed, true);&#xA;    }&#xA;&#xA;    &#xA;    collapseBtn.addEventListener(&#39;click&#39;, toggleCollapse);&#xA;&#xA;    &#xA;    if (collapseOverlay) {&#xA;      collapseOverlay.addEventListener(&#39;click&#39;, () =&gt; {&#xA;        if (isCollapsed) {&#xA;          setCollapsed(false, true);&#xA;        }&#xA;      });&#xA;    }&#xA;&#xA;    &#xA;    initCollapse();&#xA;  }&#xA;})();&#xA;&lt;/script&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;Nginx：找到設定檔 nginx-conf，在 location / 段中修改加入以下內容&lt;/p&gt;</description>
    </item>
    <item>
      <title>各種語言的OEP大全</title>
      <link>https://ja.moejue.cn/zh-hant/posts/35/</link>
      <pubDate>Fri, 19 May 2017 03:08:23 +0000</pubDate>
      <guid>https://ja.moejue.cn/zh-hant/posts/35/</guid>
      <description>&lt;p&gt;&lt;strong&gt;平時要找 OEP 對照確實比較麻煩，我就整理了一下，直接在本文中查看並認識 OEP，&lt;/strong&gt;&lt;br&gt;&#xA;&lt;strong&gt;或者右鍵點擊圖片儲存到本機     點擊可查看大圖&lt;/strong&gt;&lt;br&gt;&#xA;&lt;strong&gt;如果對您有幫助的話，請留言評論一下吧~&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;VC6 與易語言&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;&#xA;&lt;figure class=&#34;image-figure not-prose my-8&#34; &#xA;        data-lightbox-enabled=&#34;false&#34;&#xA;        data-gallery-type=&#34;auto&#34;&gt;&#xA;  &lt;div class=&#34;image-container&#34;&gt;&#xA;    &lt;img&#xA;    src=&#34;https://image.baidu.com/search/down?url=https://tva1.sinaimg.cn//large/0072Vf1pgy1fqi8qw5vw6j30f908vmy4.jpg&#34;&#xA;    alt=&#34;&#34;&#xA;    &#xA;    &#xA;    loading=&#34;lazy&#34;&#xA;    decoding=&#34;async&#34;&#xA;    data-gallery-src=&#34;https://image.baidu.com/search/down?url=https://tva1.sinaimg.cn//large/0072Vf1pgy1fqi8qw5vw6j30f908vmy4.jpg&#34;&#xA;    data-gallery-alt=&#34;&#34;&#xA;    data-gallery-title=&#34;&#34; /&gt;&lt;/div&gt;&#xA;&#xA;  &lt;/figure&gt;&lt;br&gt;&#xA;Delphi7&lt;br&gt;&#xA;&lt;strong&gt;&#xA;&lt;figure class=&#34;image-figure not-prose my-8&#34; &#xA;        data-lightbox-enabled=&#34;false&#34;&#xA;        data-gallery-type=&#34;auto&#34;&gt;&#xA;  &lt;div class=&#34;image-container&#34;&gt;&#xA;    &lt;img&#xA;    src=&#34;https://image.baidu.com/search/down?url=https://tva1.sinaimg.cn//large/0072Vf1ply1fqi8qwc0kxj30hf08u0u1.jpg&#34;&#xA;    alt=&#34;&#34;&#xA;    &#xA;    &#xA;    loading=&#34;lazy&#34;&#xA;    decoding=&#34;async&#34;&#xA;    data-gallery-src=&#34;https://image.baidu.com/search/down?url=https://tva1.sinaimg.cn//large/0072Vf1ply1fqi8qwc0kxj30hf08u0u1.jpg&#34;&#xA;    data-gallery-alt=&#34;&#34;&#xA;    data-gallery-title=&#34;&#34; /&gt;&lt;/div&gt;&#xA;&#xA;  &lt;/figure&gt;&lt;/strong&gt;&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;VB5&lt;br&gt;&#xA;&lt;strong&gt;&#xA;&lt;figure class=&#34;image-figure not-prose my-8&#34; &#xA;        data-lightbox-enabled=&#34;false&#34;&#xA;        data-gallery-type=&#34;auto&#34;&gt;&#xA;  &lt;div class=&#34;image-container&#34;&gt;&#xA;    &lt;img&#xA;    src=&#34;https://image.baidu.com/search/down?url=https://tva1.sinaimg.cn//large/0072Vf1ply1fqi8qw8khaj30f608qjsb.jpg&#34;&#xA;    alt=&#34;&#34;&#xA;    &#xA;    &#xA;    loading=&#34;lazy&#34;&#xA;    decoding=&#34;async&#34;&#xA;    data-gallery-src=&#34;https://image.baidu.com/search/down?url=https://tva1.sinaimg.cn//large/0072Vf1ply1fqi8qw8khaj30f608qjsb.jpg&#34;&#xA;    data-gallery-alt=&#34;&#34;&#xA;    data-gallery-title=&#34;&#34; /&gt;&lt;/div&gt;&#xA;&#xA;  &lt;/figure&gt;&lt;/strong&gt;&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;VB6&lt;br&gt;&#xA;&lt;strong&gt;&#xA;&lt;figure class=&#34;image-figure not-prose my-8&#34; &#xA;        data-lightbox-enabled=&#34;false&#34;&#xA;        data-gallery-type=&#34;auto&#34;&gt;&#xA;  &lt;div class=&#34;image-container&#34;&gt;&#xA;    &lt;img&#xA;    src=&#34;https://image.baidu.com/search/down?url=https://tva1.sinaimg.cn//large/0072Vf1pgy1fqi8qw0u4ej30f608qwfd.jpg&#34;&#xA;    alt=&#34;&#34;&#xA;    &#xA;    &#xA;    loading=&#34;lazy&#34;&#xA;    decoding=&#34;async&#34;&#xA;    data-gallery-src=&#34;https://image.baidu.com/search/down?url=https://tva1.sinaimg.cn//large/0072Vf1pgy1fqi8qw0u4ej30f608qwfd.jpg&#34;&#xA;    data-gallery-alt=&#34;&#34;&#xA;    data-gallery-title=&#34;&#34; /&gt;&lt;/div&gt;&#xA;&#xA;  &lt;/figure&gt;&lt;/strong&gt;&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;BC++&lt;br&gt;&#xA;&lt;strong&gt;&#xA;&lt;figure class=&#34;image-figure not-prose my-8&#34; &#xA;        data-lightbox-enabled=&#34;false&#34;&#xA;        data-gallery-type=&#34;auto&#34;&gt;&#xA;  &lt;div class=&#34;image-container&#34;&gt;&#xA;    &lt;img&#xA;    src=&#34;https://image.baidu.com/search/down?url=https://tva1.sinaimg.cn//large/0072Vf1pgy1fqi8qw68tpj30f608qgmc.jpg&#34;&#xA;    alt=&#34;&#34;&#xA;    &#xA;    &#xA;    loading=&#34;lazy&#34;&#xA;    decoding=&#34;async&#34;&#xA;    data-gallery-src=&#34;https://image.baidu.com/search/down?url=https://tva1.sinaimg.cn//large/0072Vf1pgy1fqi8qw68tpj30f608qgmc.jpg&#34;&#xA;    data-gallery-alt=&#34;&#34;&#xA;    data-gallery-title=&#34;&#34; /&gt;&lt;/div&gt;&#xA;&#xA;  &lt;/figure&gt;&lt;/strong&gt;&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;**VS2008Debug&lt;br&gt;&#xA;&lt;strong&gt;&#xA;&lt;figure class=&#34;image-figure not-prose my-8&#34; &#xA;        data-lightbox-enabled=&#34;false&#34;&#xA;        data-gallery-type=&#34;auto&#34;&gt;&#xA;  &lt;div class=&#34;image-container&#34;&gt;&#xA;    &lt;img&#xA;    src=&#34;https://image.baidu.com/search/down?url=https://tva1.sinaimg.cn//large/0072Vf1pgy1fqi8qywq8zj30fx0da3zb.jpg&#34;&#xA;    alt=&#34;&#34;&#xA;    &#xA;    &#xA;    loading=&#34;lazy&#34;&#xA;    decoding=&#34;async&#34;&#xA;    data-gallery-src=&#34;https://image.baidu.com/search/down?url=https://tva1.sinaimg.cn//large/0072Vf1pgy1fqi8qywq8zj30fx0da3zb.jpg&#34;&#xA;    data-gallery-alt=&#34;&#34;&#xA;    data-gallery-title=&#34;&#34; /&gt;&lt;/div&gt;&#xA;&#xA;  &lt;/figure&gt;&lt;/strong&gt;&lt;br&gt;&#xA;**&lt;/p&gt;</description>
    </item>
    <item>
      <title>各種語言按鈕事件特徵碼</title>
      <link>https://ja.moejue.cn/zh-hant/posts/34/</link>
      <pubDate>Mon, 15 May 2017 05:31:08 +0000</pubDate>
      <guid>https://ja.moejue.cn/zh-hant/posts/34/</guid>
      <description>&lt;p&gt;調試軟體，最重要的就是下斷點，那麼如何下斷點，就是一門重要的技巧&lt;/p&gt;&#xA;&lt;p&gt;比如：彈提示框，就下MessageBoxA，註冊表的，就下RegOpenKeyA等等&lt;br&gt;&#xA;當然，能直接下到按鈕事件，當然更為方便，因為到了按鈕事件後，很快就會到達核心程式碼，離你的破解也就不遠了&lt;br&gt;&#xA;本文就總結一下各類語言找按鈕事件的方法，當然也可以借助工具，如VBexplorer，DEDE，ECE等等&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;一、VB程式&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;其實，VB的按鈕事件的找法是最為普遍的，也就是大家所謂的萬能斷點，其實也不僅僅是針對按鈕事件，還有很多其他的用處，如取消NAG，啟動框，灰色按鈕或隱藏按鈕，啟動時的timer事件等等，具體的就自己去總結吧，這裡只講按鈕事件!&lt;br&gt;&#xA;OD載入後，CTRL+B 查找 816C24&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;二、Delphi和BC++程式&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;Delphi和BC++都是同一公司開發的，故查找方法都一樣，當然你也可以使用DEDE.&lt;br&gt;&#xA;OD載入後，CTRL+G，轉到00401000處&lt;br&gt;&#xA;然後就CTRL+B,查找特徵碼740E8BD38B83????????FF93????????&lt;br&gt;&#xA;下面的工作就是不斷的CTRL+L繼續查找和F2下斷了&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;三、易語言&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;易語言的這種查找方法，同樣適合有殼的程式，其他的就必須脫殼後再繼續操作了&lt;br&gt;&#xA;OD載入後，就F9運行程式吧，當程式運行後，&lt;br&gt;&#xA;然後CTRL+B，查找FF 55 FC 5F 5E&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;四、VC++程式(非MFC程式)&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;OD載入後,單擊滑鼠右鍵，選擇&amp;quot;查找&amp;quot;，然後是&amp;quot;所有命令”&lt;br&gt;&#xA;在彈出的輸入框裡，寫入特徵程式碼 sub eax,0a&lt;br&gt;&#xA;然後斷下後，F7跟進，F8幾次,就來到按鈕事件了&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;五、MFC類程式&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;當然判斷MFC和非MFC的程式,靠大家自己去判斷了&lt;br&gt;&#xA;運行程式然後就CTRL+F，查找特徵程式碼:sub eax,0a&lt;br&gt;&#xA;斷下後F7跟進,F8幾次,就會來到按鈕事件程式碼處了!&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;總結類：各種語言按鈕事件特徵碼&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;VB：&lt;/strong&gt;&lt;br&gt;&#xA;816C24&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;Delphi &amp;amp; BC++ ：&lt;/strong&gt;&lt;br&gt;&#xA;740E8BD38B83????????FF93????????&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;MFC：&lt;/strong&gt;&lt;br&gt;&#xA;sub eax,0a&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;VC++：&lt;/strong&gt;&lt;br&gt;&#xA;sub eax,0a&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;易語言：&lt;/strong&gt;&lt;br&gt;&#xA;FF 55 FC 5F 5E或(e-debug)&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;萬能斷點：&lt;/strong&gt;&lt;br&gt;&#xA;F3A58BC883E103F3A4E8&lt;/p&gt;&#xA;&lt;p&gt;按鈕事件如何使用 請去看我的&lt;a href=&#34;http://www.52ecy.pw/post-28.html&#34;target=&#34;_blank&#34;&#xA;  class=&#34;inline-flex items-center gap-1&#34;&#xA;&gt;零基礎學破解系列教程&#xA;  &lt;svg id=&#34;external-link&#34; class=&#34;h-3 w-3 flex-shrink-0&#34;&#xA;    fill=&#34;none&#34;&#xA;    stroke=&#34;currentColor&#34;&#xA;    viewBox=&#34;0 0 24 24&#34;&gt;&lt;path fill=&#34;none&#34; stroke=&#34;currentColor&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34; stroke-width=&#34;2&#34; d=&#34;M15 3h6v6m-11 5L21 3m-3 10v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6&#34;/&gt;&lt;/svg&gt;&#xA;&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>零基礎學破解系列教程大綱第一季</title>
      <link>https://ja.moejue.cn/zh-hant/posts/33/</link>
      <pubDate>Mon, 08 May 2017 02:00:51 +0000</pubDate>
      <guid>https://ja.moejue.cn/zh-hant/posts/33/</guid>
      <description>&lt;p&gt;&lt;strong&gt;目的：本套教學目的是為了防破解，雖說這是一套講破解方面知識的教學，但是我們只有知道了破解者是如何破解我們的軟體，我們才能更好、更有效地防止我們的軟體被破解&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;基礎入門篇&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;pre&gt;&lt;code&gt;   1、中文搜尋與Nop                       [第一節下載地址](http://bbs.125.la/forum.php?mod=viewthread&amp;amp;tid=14017567)： 如何對程式進行編譯保存&#xA;&#xA;   2、je與jmp使用 z標誌位               [第二節下載地址](http://bbs.125.la/forum.php?mod=viewthread&amp;amp;tid=14018591)：實戰了一款不知道什麼的網路驗證的爆破&#xA;&#xA;   3、本地重啟驗證                          [第三節下載地址](http://bbs.125.la/forum.php?mod=viewthread&amp;amp;tid=14019645)：透過兩次的編譯保存進行爆破&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;&lt;strong&gt;按鈕事件篇&lt;/strong&gt;&lt;br&gt;&#xA;1、易語言按鈕事件，萬能斷點      &lt;a href=&#34;http://bbs.125.la/thread-14021176-1-1.html&#34;target=&#34;_blank&#34;&#xA;  class=&#34;inline-flex items-center gap-1&#34;&#xA;&gt;按鈕事件篇下載地址&#xA;  &lt;svg id=&#34;external-link&#34; class=&#34;h-3 w-3 flex-shrink-0&#34;&#xA;    fill=&#34;none&#34;&#xA;    stroke=&#34;currentColor&#34;&#xA;    viewBox=&#34;0 0 24 24&#34;&gt;&lt;path fill=&#34;none&#34; stroke=&#34;currentColor&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34; stroke-width=&#34;2&#34; d=&#34;M15 3h6v6m-11 5L21 3m-3 10v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6&#34;/&gt;&lt;/svg&gt;&#xA;&lt;/a&gt;：依靠易語言體區分真正的易語言程式&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;提高篇&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;pre&gt;&lt;code&gt;            1、網路驗證        [提高篇第一節下載地址](http://bbs.125.la/thread-14022484-1-1.html)：單步偵錯過程中注意暫存器和堆疊視窗的變化，注意可疑跳轉&#xA;&#xA;          2、帶殼程式的偵錯(401000處)，打補丁(記憶體)     [提高篇第二節下載地址](http://bbs.125.la/thread-14023855-1-1.html)：（白寶雲網路驗證快速破解技巧）  &#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;&lt;strong&gt;脫殼篇&lt;/strong&gt;&lt;br&gt;&#xA;1、ESP定律                        &lt;a href=&#34;http://bbs.125.la/thread-14025607-1-1.html&#34;target=&#34;_blank&#34;&#xA;  class=&#34;inline-flex items-center gap-1&#34;&#xA;&gt;脫殼篇下載地址&#xA;  &lt;svg id=&#34;external-link&#34; class=&#34;h-3 w-3 flex-shrink-0&#34;&#xA;    fill=&#34;none&#34;&#xA;    stroke=&#34;currentColor&#34;&#xA;    viewBox=&#34;0 0 24 24&#34;&gt;&lt;path fill=&#34;none&#34; stroke=&#34;currentColor&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34; stroke-width=&#34;2&#34; d=&#34;M15 3h6v6m-11 5L21 3m-3 10v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6&#34;/&gt;&lt;/svg&gt;&#xA;&lt;/a&gt;：注意一定要在xp系統下脫殼&lt;/p&gt;</description>
    </item>
    <item>
      <title>58同城的登錄（RSA演算法）</title>
      <link>https://ja.moejue.cn/zh-hant/posts/16/</link>
      <pubDate>Wed, 23 Nov 2016 08:27:09 +0000</pubDate>
      <guid>https://ja.moejue.cn/zh-hant/posts/16/</guid>
      <description>&lt;p&gt;58同城的登入（RSA演算法）&lt;/p&gt;&#xA;&lt;p&gt;這一次。又是一個精彩的登入演算法解析&lt;/p&gt;&#xA;&lt;p&gt;目標位址：&#xA;&lt;a href=&#34;https://passport.58.com/login&#34;target=&#34;_blank&#34;&#xA;  class=&#34;inline-flex items-center gap-1&#34;&#xA;&gt;https://passport.58.com/login&#xA;  &lt;svg id=&#34;external-link&#34; class=&#34;h-3 w-3 flex-shrink-0&#34;&#xA;    fill=&#34;none&#34;&#xA;    stroke=&#34;currentColor&#34;&#xA;    viewBox=&#34;0 0 24 24&#34;&gt;&lt;path fill=&#34;none&#34; stroke=&#34;currentColor&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34; stroke-width=&#34;2&#34; d=&#34;M15 3h6v6m-11 5L21 3m-3 10v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6&#34;/&gt;&lt;/svg&gt;&#xA;&lt;/a&gt;?（58 同城）&#xA;用到的工具：&#xA;js 除錯工具（我這裡用的是改自某論壇的 js 除錯工具，相對智慧化了）&#xA;抓包工具（我這次就直接使用瀏覽器的 F12 了，搜尋關鍵字更方便）&lt;/p&gt;&#xA;&lt;p&gt;提示：由於這篇文章發表於 1 年前，年久失修，圖片內容已遺失！&lt;/p&gt;</description>
    </item>
    <item>
      <title>新浪微博動態 RSA 分析圖文 &#43; 登入</title>
      <link>https://ja.moejue.cn/zh-hant/posts/13/</link>
      <pubDate>Wed, 12 Oct 2016 06:50:19 +0000</pubDate>
      <guid>https://ja.moejue.cn/zh-hant/posts/13/</guid>
      <description>&lt;p&gt;新浪微博動態 RSA 分析&lt;/p&gt;&#xA;&lt;p&gt;一、用到的工具&#xA;1.ie 瀏覽器（9 以上的版本）&#xA;2.httpwatch （中英文都可以）&#xA;3.js 偵錯工具&lt;/p&gt;&#xA;&lt;p&gt;目標網站：&lt;a href=&#34;http://weibo.com/&#34;target=&#34;_blank&#34;&#xA;  class=&#34;inline-flex items-center gap-1&#34;&#xA;&gt;http://weibo.com&#xA;  &lt;svg id=&#34;external-link&#34; class=&#34;h-3 w-3 flex-shrink-0&#34;&#xA;    fill=&#34;none&#34;&#xA;    stroke=&#34;currentColor&#34;&#xA;    viewBox=&#34;0 0 24 24&#34;&gt;&lt;path fill=&#34;none&#34; stroke=&#34;currentColor&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34; stroke-width=&#34;2&#34; d=&#34;M15 3h6v6m-11 5L21 3m-3 10v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6&#34;/&gt;&lt;/svg&gt;&#xA;&lt;/a&gt; (新浪微博)&lt;/p&gt;&#xA;&lt;p&gt;二、抓包&#xA;還是遵從我們上一次的抓包流程，養成良好的習慣，這裡就不多做說明。&#xA;&#xA;&lt;figure class=&#34;image-figure not-prose my-8&#34; &#xA;        data-lightbox-enabled=&#34;false&#34;&#xA;        data-gallery-type=&#34;auto&#34;&gt;&#xA;  &lt;div class=&#34;image-container&#34;&gt;&#xA;    &lt;img&#xA;    src=&#34;https://image.baidu.com/search/down?url=https://tva1.sinaimg.cn//large/0072Vf1pgy1fqh2ixqxrdj30m808p421.jpg&#34;&#xA;    alt=&#34;&#34;&#xA;    &#xA;    &#xA;    loading=&#34;lazy&#34;&#xA;    decoding=&#34;async&#34;&#xA;    data-gallery-src=&#34;https://image.baidu.com/search/down?url=https://tva1.sinaimg.cn//large/0072Vf1pgy1fqh2ixqxrdj30m808p421.jpg&#34;&#xA;    data-gallery-alt=&#34;&#34;&#xA;    data-gallery-title=&#34;&#34; /&gt;&lt;/div&gt;&#xA;&#xA;  &lt;/figure&gt;&#xA;&#xA;&lt;figure class=&#34;image-figure not-prose my-8&#34; &#xA;        data-lightbox-enabled=&#34;false&#34;&#xA;        data-gallery-type=&#34;auto&#34;&gt;&#xA;  &lt;div class=&#34;image-container&#34;&gt;&#xA;    &lt;img&#xA;    src=&#34;https://image.baidu.com/search/down?url=https://tva1.sinaimg.cn//large/0072Vf1pgy1fqh2ixmpmdj30ja06r3z4.jpg&#34;&#xA;    alt=&#34;&#34;&#xA;    &#xA;    &#xA;    loading=&#34;lazy&#34;&#xA;    decoding=&#34;async&#34;&#xA;    data-gallery-src=&#34;https://image.baidu.com/search/down?url=https://tva1.sinaimg.cn//large/0072Vf1pgy1fqh2ixmpmdj30ja06r3z4.jpg&#34;&#xA;    data-gallery-alt=&#34;&#34;&#xA;    data-gallery-title=&#34;&#34; /&gt;&lt;/div&gt;&#xA;&#xA;  &lt;/figure&gt;&lt;/p&gt;&#xA;&lt;p&gt;&#xA;&lt;figure class=&#34;image-figure not-prose my-8&#34; &#xA;        data-lightbox-enabled=&#34;false&#34;&#xA;        data-gallery-type=&#34;auto&#34;&gt;&#xA;  &lt;div class=&#34;image-container&#34;&gt;&#xA;    &lt;img&#xA;    src=&#34;https://image.baidu.com/search/down?url=https://tva1.sinaimg.cn//large/0072Vf1pgy1fqh2ixpef1j30m60azgn3.jpg&#34;&#xA;    alt=&#34;&#34;&#xA;    &#xA;    &#xA;    loading=&#34;lazy&#34;&#xA;    decoding=&#34;async&#34;&#xA;    data-gallery-src=&#34;https://image.baidu.com/search/down?url=https://tva1.sinaimg.cn//large/0072Vf1pgy1fqh2ixpef1j30m60azgn3.jpg&#34;&#xA;    data-gallery-alt=&#34;&#34;&#xA;    data-gallery-title=&#34;&#34; /&gt;&lt;/div&gt;&#xA;&#xA;  &lt;/figure&gt;&#xA;&#xA;&lt;figure class=&#34;image-figure not-prose my-8&#34; &#xA;        data-lightbox-enabled=&#34;false&#34;&#xA;        data-gallery-type=&#34;auto&#34;&gt;&#xA;  &lt;div class=&#34;image-container&#34;&gt;&#xA;    &lt;img&#xA;    src=&#34;https://image.baidu.com/search/down?url=https://tva1.sinaimg.cn//large/0072Vf1pgy1fqh2ixrm8wj30k008rdgm.jpg&#34;&#xA;    alt=&#34;&#34;&#xA;    &#xA;    &#xA;    loading=&#34;lazy&#34;&#xA;    decoding=&#34;async&#34;&#xA;    data-gallery-src=&#34;https://image.baidu.com/search/down?url=https://tva1.sinaimg.cn//large/0072Vf1pgy1fqh2ixrm8wj30k008rdgm.jpg&#34;&#xA;    data-gallery-alt=&#34;&#34;&#xA;    data-gallery-title=&#34;&#34; /&gt;&lt;/div&gt;&#xA;&#xA;  &lt;/figure&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>中國電信登入RSA演算法&#43;分析圖文</title>
      <link>https://ja.moejue.cn/zh-hant/posts/14/</link>
      <pubDate>Fri, 30 Sep 2016 01:29:10 +0000</pubDate>
      <guid>https://ja.moejue.cn/zh-hant/posts/14/</guid>
      <description>&lt;p&gt;廢話不多說！&lt;/p&gt;&#xA;&lt;p&gt;一、用到的工具&lt;/p&gt;&#xA;&lt;p&gt;1.ie瀏覽器（9以上的版本）&lt;/p&gt;&#xA;&lt;p&gt;2.httpwatch （中英文都可以）&lt;/p&gt;&#xA;&lt;p&gt;3.js偵錯工具&lt;/p&gt;&#xA;&lt;p&gt;目標網站：&lt;a href=&#34;http://xz.189.cn/sso/LoginServlet&#34;target=&#34;_blank&#34;&#xA;  class=&#34;inline-flex items-center gap-1&#34;&#xA;&gt;http://xz.189.cn/sso/LoginServlet&#xA;  &lt;svg id=&#34;external-link&#34; class=&#34;h-3 w-3 flex-shrink-0&#34;&#xA;    fill=&#34;none&#34;&#xA;    stroke=&#34;currentColor&#34;&#xA;    viewBox=&#34;0 0 24 24&#34;&gt;&lt;path fill=&#34;none&#34; stroke=&#34;currentColor&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34; stroke-width=&#34;2&#34; d=&#34;M15 3h6v6m-11 5L21 3m-3 10v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6&#34;/&gt;&lt;/svg&gt;&#xA;&lt;/a&gt; 電信189登入&lt;/p&gt;&#xA;&lt;p&gt;二、抓包：&lt;/p&gt;&#xA;&lt;p&gt;1.抓包前先清除網站的cookie和快取&#xA;&lt;a href=&#34;https://image.baidu.com/search/down?url=https://tva1.sinaimg.cn//large/0072Vf1pgy1fqh27cuooyj30l90cv0u6.jpg&#34;target=&#34;_blank&#34;&#xA;  class=&#34;inline-flex items-center gap-1&#34;&#xA;&gt;&#xA;&lt;figure class=&#34;image-figure not-prose my-8&#34; &#xA;        data-lightbox-enabled=&#34;false&#34;&#xA;        data-gallery-type=&#34;auto&#34;&gt;&#xA;  &lt;div class=&#34;image-container&#34;&gt;&#xA;    &lt;img&#xA;    src=&#34;https://image.baidu.com/search/down?url=https://tva1.sinaimg.cn//large/0072Vf1pgy1fqh27cuooyj30l90cv0u6.jpg&#34;&#xA;    alt=&#34;&#34;&#xA;    &#xA;    &#xA;    loading=&#34;lazy&#34;&#xA;    decoding=&#34;async&#34;&#xA;    data-gallery-src=&#34;https://image.baidu.com/search/down?url=https://tva1.sinaimg.cn//large/0072Vf1pgy1fqh27cuooyj30l90cv0u6.jpg&#34;&#xA;    data-gallery-alt=&#34;&#34;&#xA;    data-gallery-title=&#34;&#34; /&gt;&lt;/div&gt;&#xA;&#xA;  &lt;/figure&gt;&#xA;  &lt;svg id=&#34;external-link&#34; class=&#34;h-3 w-3 flex-shrink-0&#34;&#xA;    fill=&#34;none&#34;&#xA;    stroke=&#34;currentColor&#34;&#xA;    viewBox=&#34;0 0 24 24&#34;&gt;&lt;path fill=&#34;none&#34; stroke=&#34;currentColor&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34; stroke-width=&#34;2&#34; d=&#34;M15 3h6v6m-11 5L21 3m-3 10v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6&#34;/&gt;&lt;/svg&gt;&#xA;&lt;/a&gt;&lt;/p&gt;</description>
    </item>
  </channel>
</rss>
