<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>教程 on 阿珏酱のBlog</title>
    <link>https://zh.moejue.cn/tags/%E6%95%99%E7%A8%8B/</link>
    <description>Recent content from 阿珏酱のBlog</description>
    <generator>Hugo</generator>
    <language>zh-cn</language>
    
    <managingEditor>xxx@example.com (MoeJue)</managingEditor>
    <webMaster>xxx@example.com (MoeJue)</webMaster>
    
    <copyright>本博客所有文章除特别声明外，均采用 BY-NC-SA 许可协议。转载请注明出处！</copyright>
    
    <lastBuildDate>Sat, 20 Jun 2026 11:45:33 +0000</lastBuildDate>
    
    
    <atom:link href="https://zh.moejue.cn/tags/%E6%95%99%E7%A8%8B/index.xml" rel="self" type="application/rss&#43;xml" />
    

    
    

    <item>
      <title>MoeKoeMusic-Plugins设计理念</title>
      <link>https://zh.moejue.cn/posts/334/</link>
      <pubDate>Sat, 20 Jun 2026 11:45:33 &#43;0000</pubDate>
      <author>xxx@example.com (MoeJue)</author>
      <guid>https://zh.moejue.cn/posts/334/</guid>
      <description>
        <![CDATA[<h1>MoeKoeMusic-Plugins设计理念</h1><p>作者：MoeJue（xxx@example.com）</p>
        
          <p>一开始做 MoeKoe Music 插件生态的时候，还没有在线插件市场这个功能<br>
后来在社区的建议下便有了这个插件市场 <a href="https://github.com/orgs/MoeKoeMusic/discussions/888">增加官方/社区插件仓库以扩展产品功能</a></p>
<blockquote>
<p>插件可以由社区开发，那插件市场应该怎么管？</p>
</blockquote>
<p>最直接的做法当然是把所有插件源码都收进一个大仓库里。但这个方案越想越别扭。每个插件都有自己的作者、自己的发布节奏、自己的构建方式。把它们全塞进官方仓库，不仅维护成本高，也会把责任边界搞得很模糊。</p>
<p>所以这个仓库最后没有被设计成“插件源码仓库”，而是变成了一个“插件登记与索引仓库”。它只做几件事：</p>
<ul>
<li>接收插件上架、更新、下架和举报申请</li>
<li>自动做一轮基础校验和静态识别</li>
<li>把人工审核通过时的插件快照记录下来</li>
<li>维护客户端可以读取的 <code>plugins.json</code></li>
<li>顺手把 README 里的插件列表更新出来，方便人看</li>
</ul>
<p>一个可追溯的登记簿：谁提交的、审核的是哪个版本、下载地址是什么、是否有网络或文件权限，都落在一份清楚的数据里。</p>
<h2 id="市场索引而不是源码仓库">
<a class="header-anchor" href="#%e5%b8%82%e5%9c%ba%e7%b4%a2%e5%bc%95%e8%80%8c%e4%b8%8d%e6%98%af%e6%ba%90%e7%a0%81%e4%bb%93%e5%ba%93"></a>
市场索引，而不是源码仓库
</h2><p>仓库根目录最重要的文件是 <code>plugins.json</code>。它就是插件市场真正消费的数据源。</p>
<pre><code>{
  &quot;id&quot;: &quot;custom-app-background&quot;,
  &quot;name&quot;: &quot;自定义背景图&quot;,
  &quot;description&quot;: &quot;为MoeKoe Music提供自定义背景图能力，支持透明度调节。&quot;,
  &quot;iconUrl&quot;: &quot;...&quot;,
  &quot;version&quot;: &quot;1.0.0&quot;,
  &quot;minversion&quot;: &quot;1.6.1&quot;,
  &quot;...&quot;:&quot;....&quot;,
  &quot;buildRequired&quot;: false,
  &quot;networkAccess&quot;: false,
  &quot;fileAccess&quot;: false,
  &quot;binaryContent&quot;: false,
  &quot;snapshot&quot;: {
    &quot;iconUrl&quot;: &quot;...&quot;,
    &quot;repository&quot;: &quot;MoeKoeMusic/custom-app-background-plugin&quot;,
    &quot;commitSha&quot;: &quot;dbf72d38c8cf6b1d1cefdf8ce15798d565678995&quot;,
    &quot;downloadUrl&quot;: &quot;hxx.zip&quot;,
    &quot;release&quot;: null
  }
}
</code></pre>
<p>我不想让市场记录永远指向插件仓库“当前最新代码”。因为作者今天提交的代码，和审核那天看到的代码，可能已经不是同一份东西了。插件市场真正应该承认的是：审核通过时的那个版本。</p>
<p>所以这个项目里面有一个核心原则：</p>
<blockquote>
<p>上架的不是一个会漂移的仓库地址，而是一个已经锁定的快照。</p>
</blockquote>
<p>对于不需要编译的插件，快照锁到默认分支当时的 commit。对于需要编译的插件，快照锁到对应的 Release tag 和发行附件。这样后面真出了问题，也能回头知道当时到底审核了什么。</p>
<h2 id="action-先跑人最后拍板">
<a class="header-anchor" href="#action-%e5%85%88%e8%b7%91%e4%ba%ba%e6%9c%80%e5%90%8e%e6%8b%8d%e6%9d%bf"></a>
Action 先跑，人最后拍板
</h2><p>用户提交 Issue 时，需要选择：</p>
        
        <hr><p>本文2026-06-20首发于<a href='https://zh.moejue.cn/'>阿珏酱のBlog</a>，最后修改于2026-06-20</p>]]>
      </description>
      
        <category>折腾代码</category>
      
    </item>
    
    

    <item>
      <title>基于Web3.0的区块链图片上传</title>
      <link>https://zh.moejue.cn/posts/201/</link>
      <pubDate>Mon, 17 Jun 2024 12:57:43 &#43;0000</pubDate>
      <author>xxx@example.com (MoeJue)</author>
      <guid>https://zh.moejue.cn/posts/201/</guid>
      <description>
        <![CDATA[<h1>基于Web3.0的区块链图片上传</h1><p>作者：MoeJue（xxx@example.com）</p>
        
          <p>开始前，我们先简单了解一下基本的概念，我大致归纳为以下几个点 <a href="https://www.cnblogs.com/Ajue/p/18252827">什么是Web3.0，和区块链又有什么关系？</a>（上回的文章不就派上用场了）</p>
<p>需求：开发一个基于Python的Web 3.0图片上传系统。这个系统将允许用户上传图片，并将图片存储在去中心化的网络上，同时记录交易信息在区块链上。 本就是写着玩的，想过要写成用户认证文件操作集成全套管理的，让他‘终将成为图片上传服务的最终解决方案’ 实际下来却发现不是很实际，就作罢了，奈何我一直以来对图片这么执着</p>
<h3 id="步骤概述">
<a class="header-anchor" href="#%e6%ad%a5%e9%aa%a4%e6%a6%82%e8%bf%b0"></a>
步骤概述
</h3><ol>
<li><strong>环境设置</strong>：使用Python开发，安装必要的Python库。</li>
<li><strong>IPFS集成</strong>：将图片上传到IPFS，获取图片的CID（Content Identifier）。</li>
<li><strong>区块链集成</strong>：将IPFS CID记录在区块链上。</li>
<li><strong>Web接口</strong>：使用Flask创建一个Web接口，允许用户上传图片。</li>
</ol>
<h3 id="详细步骤">
<a class="header-anchor" href="#%e8%af%a6%e7%bb%86%e6%ad%a5%e9%aa%a4"></a>
详细步骤
</h3><h4 id="1-环境设置">
<a class="header-anchor" href="#1-%e7%8e%af%e5%a2%83%e8%ae%be%e7%bd%ae"></a>
1. 环境设置
</h4><p>安装所需的Python库：</p>
<pre tabindex="0"><code>pip install flask web3 ipfshttpclient
</code></pre><h4 id="2-ipfs集成">
<a class="header-anchor" href="#2-ipfs%e9%9b%86%e6%88%90"></a>
2. IPFS集成
</h4><p>IPFS（InterPlanetary File System）是一种点对点的文件存储协议。我们可以使用<code>ipfshttpclient</code>库来与IPFS网络交互。</p>
<p>首先，确保你已经安装并运行了IPFS节点。如果还没有安装IPFS，可以在<a href="https://ipfs.io">IPFS官网</a>找到安装指南。</p>
<p>以下是上传图片到IPFS的代码示例：</p>
<pre tabindex="0"><code>import ipfshttpclient

def upload_to_ipfs(file_path):
    client = ipfshttpclient.connect(&#39;/ip4/127.0.0.1/tcp/5001&#39;)
    res = client.add(file_path)
    return res[&#39;Hash&#39;]
</code></pre><h4 id="3-区块链集成">
<a class="header-anchor" href="#3-%e5%8c%ba%e5%9d%97%e9%93%be%e9%9b%86%e6%88%90"></a>
3. 区块链集成
</h4><p>使用<code>web3.py</code>库将IPFS CID记录到区块链上。我们将以太坊（Ethereum）作为示例区块链。</p>
<p>以下是一个简单的智能合约示例，用于存储IPFS CID：</p>
<pre tabindex="0"><code>pragma solidity ^0.8.0;

contract IPFSStorage {
    mapping(address =&gt; string[]) public userCIDs;

    function storeCID(string memory cid) public {
        userCIDs[msg.sender].push(cid);
    }

    function getCIDs() public view returns (string[] memory) {
        return userCIDs[msg.sender];
    }
}
</code></pre><p>编译并部署该合约后，使用以下Python代码与智能合约交互：</p>
        
        <hr><p>本文2024-06-17首发于<a href='https://zh.moejue.cn/'>阿珏酱のBlog</a>，最后修改于2025-07-06</p>]]>
      </description>
      
        <category>折腾代码</category>
      
    </item>
    
    

    <item>
      <title>什么是Web3.0，和区块链又有什么关系？</title>
      <link>https://zh.moejue.cn/posts/202/</link>
      <pubDate>Mon, 17 Jun 2024 12:59:22 &#43;0000</pubDate>
      <author>xxx@example.com (MoeJue)</author>
      <guid>https://zh.moejue.cn/posts/202/</guid>
      <description>
        <![CDATA[<h1>什么是Web3.0，和区块链又有什么关系？</h1><p>作者：MoeJue（xxx@example.com）</p>
        
          <p>又是一个莫名其妙的词语的新起-。- 我大致归纳为以下几个点</p>
<h2 id="什么是web30">
<a class="header-anchor" href="#%e4%bb%80%e4%b9%88%e6%98%afweb30"></a>
什么是web3.0
</h2><p>Web 3.0（Web3）是下一代互联网的发展方向，旨在创建一个更加去中心化、用户控制和数据保护的网络环境。与之前的Web 1.0（静态网页）和Web 2.0（动态、交互式网页和社交媒体）不同，Web 3.0的核心理念和技术包括以下几个方面：</p>
<h3 id="去中心化">
<a class="header-anchor" href="#%e5%8e%bb%e4%b8%ad%e5%bf%83%e5%8c%96"></a>
去中心化：
</h3><ul>
<li>区块链技术：Web 3.0的核心是区块链技术，它提供了一个去中心化的账本，记录所有的交易和数据变化。这意味着数据不再由单一的中央服务器控制，而是分布在多个节点上。</li>
<li>分布式应用（DApps）：这些应用程序运行在区块链网络上，没有中心化的控制者。DApps的用户可以直接进行交易和互动，而无需通过中介机构。</li>
</ul>
<h3 id="用户控制和数据保护">
<a class="header-anchor" href="#%e7%94%a8%e6%88%b7%e6%8e%a7%e5%88%b6%e5%92%8c%e6%95%b0%e6%8d%ae%e4%bf%9d%e6%8a%a4"></a>
用户控制和数据保护：
</h3><ul>
<li>用户主权身份：在Web 3.0中，用户可以完全控制自己的数字身份和数据。通过加密技术，用户可以决定谁可以访问他们的数据以及如何使用这些数据。</li>
<li>数据所有权：用户的数据存储在去中心化的网络上，用户拥有数据的所有权，而不是由大公司集中管理和控制。</li>
</ul>
<h3 id="智能合约">
<a class="header-anchor" href="#%e6%99%ba%e8%83%bd%e5%90%88%e7%ba%a6"></a>
智能合约：
</h3><ul>
<li>
<p>自动执行协议：智能合约是在区块链上运行的自动化协议，当满足特定条件时自动执行。这种技术可以用于各种场景，如金融交易、供应链管理和法律合同。 互操作性：</p>
</li>
<li>
<p>跨平台和跨链技术：Web 3.0致力于实现不同区块链和分布式网络之间的互操作性，使得数据和资产可以在不同平台之间无缝转移。</p>
</li>
</ul>
<h3 id="去信任化和透明度">
<a class="header-anchor" href="#%e5%8e%bb%e4%bf%a1%e4%bb%bb%e5%8c%96%e5%92%8c%e9%80%8f%e6%98%8e%e5%ba%a6"></a>
去信任化和透明度：
</h3><ul>
<li>无信任机制：Web 3.0通过区块链技术实现了无信任机制，即参与者无需互相信任或依赖第三方中介，就能进行安全的交易和互动。</li>
<li>透明性：所有交易和数据变更记录在区块链上，公开透明且不可篡改，提高了信任度和安全性。</li>
</ul>
<h3 id="web-30的应用场景">
<a class="header-anchor" href="#web-30%e7%9a%84%e5%ba%94%e7%94%a8%e5%9c%ba%e6%99%af"></a>
Web 3.0的应用场景
</h3><ol>
<li>去中心化金融（DeFi）：通过智能合约和区块链技术，提供无需中介的金融服务，如借贷、交易和投资。</li>
<li>数字身份：用户可以创建和管理自己的数字身份，控制个人数据的访问和使用。</li>
<li>供应链管理：通过区块链技术，实现供应链的透明和可追溯性，防止伪造和欺诈。</li>
<li>内容创作和分发：艺术家、音乐家和作家可以直接与观众互动和交易，获得更公平的收益分配。</li>
</ol>
<h2 id="那什么又是区块链呢">
<a class="header-anchor" href="#%e9%82%a3%e4%bb%80%e4%b9%88%e5%8f%88%e6%98%af%e5%8c%ba%e5%9d%97%e9%93%be%e5%91%a2"></a>
那什么又是区块链呢？
</h2><p>区块链技术是一种分布式账本技术（Distributed Ledger Technology, DLT），用于记录交易和信息的不可篡改、去中心化的数据库。区块链技术的核心思想是通过去中心化的方式实现数据的安全、透明和可信。</p>
<h3 id="区块链的基本原理">
<a class="header-anchor" href="#%e5%8c%ba%e5%9d%97%e9%93%be%e7%9a%84%e5%9f%ba%e6%9c%ac%e5%8e%9f%e7%90%86"></a>
区块链的基本原理
</h3><ol>
<li>
<p>区块（Block）：</p>
<ul>
<li>区块是包含交易记录的数据包。每个区块包含多个交易和一个哈希值（用于唯一标识该区块）。</li>
<li>区块还包含上一个区块的哈希值，从而将所有区块连接成链，形成区块链。</li>
</ul>
</li>
<li>
<p>链（Chain）：</p>
<ul>
<li>区块通过哈希值相互连接，形成一个链式结构。每个区块包含前一个区块的哈希值，这使得区块链中的数据难以篡改。</li>
<li>如果试图更改一个区块中的数据，将导致该区块及其后续所有区块的哈希值发生变化，需要重新计算所有这些区块的哈希值，这几乎是不可能的。</li>
</ul>
</li>
<li>
<p>去中心化（Decentralization）：</p>
<ul>
<li>区块链网络中的所有节点（计算机）都保存一个完整的区块链副本，这些副本通过共识机制保持一致。</li>
<li>没有中央机构控制或管理区块链，数据由所有节点共同维护。</li>
</ul>
</li>
<li>
<p>共识机制（Consensus Mechanism）：</p>
<ul>
<li>区块链网络使用共识机制来确保所有节点对区块链的状态达成一致。常见的共识机制包括工作量证明（Proof of Work, PoW）和权益证明（Proof of Stake, PoS）。</li>
<li>工作量证明（PoW）：矿工通过解决复杂的数学问题来验证交易，并将其添加到区块链中。解决问题需要大量计算能力，确保了区块链的安全性。 权益证明（PoS）：验证者根据其持有的加密货币数量和其他因素来验证交易，并获得相应的奖励。</li>
</ul>
</li>
<li>
<p>加密技术（Cryptography）： -区块链使用加密技术确保数据的安全性和隐私性。每个交易都使用公钥和私钥进行签名和验证，确保只有合法的所有者才能发起交易。</p>
        
        <hr><p>本文2024-06-17首发于<a href='https://zh.moejue.cn/'>阿珏酱のBlog</a>，最后修改于2025-07-06</p>]]>
      </description>
      
        <category>教程</category>
      
    </item>
    
    

    <item>
      <title>Git简单的使用步骤</title>
      <link>https://zh.moejue.cn/posts/64/</link>
      <pubDate>Tue, 03 Apr 2018 12:04:32 &#43;0000</pubDate>
      <author>xxx@example.com (MoeJue)</author>
      <guid>https://zh.moejue.cn/posts/64/</guid>
      <description>
        <![CDATA[<h1>Git简单的使用步骤</h1><p>作者：MoeJue（xxx@example.com）</p>
        
          <p>本文并不阐述任何概念性知识，仅仅只是做一个笔记，简单是使用步骤，如遇障碍，请Google一下</p>
<ul>
<li>使用SSH 完成 Git 与 GitHub 的绑定</li>
</ul>
<p>1. 生成 <code>SSH key</code></p>
<p>ssh-keygen -t rsa</p>
<p>指定 RSA 算法生成密钥，之后就就会生成两个文件，分别为id_rsa和id_rsa.pub，即密钥id_rsa和公钥id_rsa.pub. 对于这两个文件</p>
<p>2. 添加 SSH key<br>
github.com -&gt; Settings -&gt; SSH and GPG -&gt; New SSH key<br>
将公钥id_rsa.pub的内容粘贴到Key处的位置（Titles的内容不填写也没事），然后点击Add SSH key 即可。</p>
<p>3. 验证绑定是否成功</p>
<p>ssh -T <a href="mailto:git@github.com">git@github.com</a></p>
<ul>
<li>把本地项目推送到github的命令</li>
</ul>
<p>(1) 打开你的目录</p>
<p>cd demo</p>
<p>(2) 初始化版本库，用于生成git文件</p>
<p>git init</p>
<p>(3) 将所有文件添加到缓存区</p>
<p>git add *</p>
<p>(4) 提交当前工作空间的修改内容</p>
<p>git commit -m &ldquo;first commit&rdquo;</p>
<p>(5) 将仓库连接到远程服务器</p>
<p>git remote add origin <server>(就是上面你仓库的地址)</p>
<p>(6) 将改动推送到所添加的服务器上</p>
        
        <hr><p>本文2018-04-03首发于<a href='https://zh.moejue.cn/'>阿珏酱のBlog</a>，最后修改于2025-06-02</p>]]>
      </description>
      
        <category>教程</category>
      
    </item>
    
    

    <item>
      <title>[笔记]Git常用命令大全</title>
      <link>https://zh.moejue.cn/posts/57/</link>
      <pubDate>Sat, 16 Jun 2018 08:56:21 &#43;0000</pubDate>
      <author>xxx@example.com (MoeJue)</author>
      <guid>https://zh.moejue.cn/posts/57/</guid>
      <description>
        <![CDATA[<h1>[笔记]Git常用命令大全</h1><p>作者：MoeJue（xxx@example.com）</p>
        
          <p>继上一次后，抽空整理了个比较全的Git常用命令，找到了一张非常棒的导图，非常高清的（1759*3162）。</p>
<p>查看、添加、提交、删除、找回，重置修改文件</p>
<p>git help <command> # 显示command的help</p>
<p>git show # 显示某次提交的内容 git show $id</p>
<p>git co &ndash; <file> # 抛弃工作区修改</p>
<p>git co . # 抛弃工作区修改</p>
<p>git add <file> # 将工作文件修改提交到本地暂存区</p>
<p>git add . # 将所有修改过的工作文件提交暂存区</p>
<p>git rm <file> # 从版本库中删除文件</p>
<p>git rm <file> &ndash;cached # 从版本库中删除文件，但不删除文件</p>
<p>git reset <file> # 从暂存区恢复到工作文件</p>
<p>git reset &ndash; . # 从暂存区恢复到工作文件</p>
<p>git reset &ndash;hard # 恢复最近一次提交过的状态，即放弃上次提交后的所有本次修改</p>
<p>git ci <file> git ci . git ci -a # 将git add, git rm和git ci等操作都合并在一起做　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　git ci -am &ldquo;some comments&rdquo;</p>
        
        <hr><p>本文2018-06-16首发于<a href='https://zh.moejue.cn/'>阿珏酱のBlog</a>，最后修改于2025-06-02</p>]]>
      </description>
      
        <category>折腾代码</category>
      
    </item>
    
    

    <item>
      <title>[笔记] Git 常用命令大全（按场景分类）</title>
      <link>https://zh.moejue.cn/posts/264/</link>
      <pubDate>Mon, 02 Jun 2025 06:58:42 &#43;0000</pubDate>
      <author>xxx@example.com (MoeJue)</author>
      <guid>https://zh.moejue.cn/posts/264/</guid>
      <description>
        <![CDATA[<h1>[笔记] Git 常用命令大全（按场景分类）</h1><p>作者：MoeJue（xxx@example.com）</p>
        
          <blockquote>
<p>适用于日常开发中对 Git 的常见操作。通过分类整理，帮助你快速上手或查阅。</p>
</blockquote>
<hr>
<h2 id="-基础命令">
<a class="header-anchor" href="#-%e5%9f%ba%e7%a1%80%e5%91%bd%e4%bb%a4"></a>
📦 基础命令
</h2><p>命令</p>
<p>作用</p>
<p><code>git init</code></p>
<p>初始化一个 Git 仓库（创建 <code>.git</code> 文件夹）。</p>
<p><code>git clone &lt;url&gt;</code></p>
<p>克隆远程仓库到本地。</p>
<p><code>git status</code></p>
<p>查看当前工作目录状态（文件修改、暂存等）。</p>
<p><code>git add &lt;file&gt;</code></p>
<p>添加文件到暂存区。</p>
<p><code>git commit -m &quot;message&quot;</code></p>
<p>提交暂存区文件到本地仓库，并添加提交信息。</p>
<p><code>git log</code></p>
<p>查看提交历史。</p>
<hr>
<h2 id="-分支管理">
<a class="header-anchor" href="#-%e5%88%86%e6%94%af%e7%ae%a1%e7%90%86"></a>
🌱 分支管理
</h2><p>命令</p>
<p>作用</p>
<p><code>git branch</code></p>
<p>查看本地分支列表。</p>
<p><code>git branch &lt;branch-name&gt;</code></p>
<p>创建一个新分支。</p>
<p><code>git checkout &lt;branch-name&gt;</code></p>
<p>切换到指定分支。</p>
<p><code>git switch &lt;branch-name&gt;</code></p>
<p>切换到指定分支（推荐使用的新命令）。</p>
<p><code>git merge &lt;branch-name&gt;</code></p>
<p>合并指定分支到当前分支。</p>
<p><code>git branch -d &lt;branch-name&gt;</code></p>
<p>删除已合并的分支。</p>
<p><code>git branch -D &lt;branch-name&gt;</code></p>
<p>强制删除分支。</p>
<hr>
<h2 id="-远程仓库操作">
<a class="header-anchor" href="#-%e8%bf%9c%e7%a8%8b%e4%bb%93%e5%ba%93%e6%93%8d%e4%bd%9c"></a>
🌍 远程仓库操作
</h2><p>命令</p>
        
        <hr><p>本文2025-06-02首发于<a href='https://zh.moejue.cn/'>阿珏酱のBlog</a>，最后修改于2025-06-02</p>]]>
      </description>
      
        <category>教程</category>
      
    </item>
    
    

    <item>
      <title>打赢复活赛,我活过来了</title>
      <link>https://zh.moejue.cn/posts/206/</link>
      <pubDate>Thu, 03 Oct 2024 02:48:02 &#43;0000</pubDate>
      <author>xxx@example.com (MoeJue)</author>
      <guid>https://zh.moejue.cn/posts/206/</guid>
      <description>
        <![CDATA[<h1>打赢复活赛,我活过来了</h1><p>作者：MoeJue（xxx@example.com）</p>
        
          <h3 id="近况">
<a class="header-anchor" href="#%e8%bf%91%e5%86%b5"></a>
近况
</h3><p>距离上次的闲言碎语已经两个多月没说话了,是时候整理整理我的思绪了. 上回是发表了一堆感慨,之后就没声了,所以是有一点仓促了,后续的活就跟不上了.</p>
<p>又是一年国庆,果然我的国庆堪比双十一. 之前旗下的三个域名(52ecy.cn,moeins.cn,moeins.com),虽然复活赛是打赢了,但是装备没有了.</p>
<p>所以只能新购域名了,同时又把博客给恢复了,可能还是想自己折腾吧,挂靠在博客园还是不大舒服的样子.</p>
<p>之前一直在用的emlog,这会也来场大动作,直接给系统换到了WordPress,同时也换上了新主题. 这款主题是由<a href="https://www.boxmoe.com/">专收爆米花</a>在21年前后的时候就发布了,那会我在loc看到的时候我就star了 一直在我GitHub里躺了4年<a href="https://github.com/iAJue/lolimeow">lolimeow</a>,因为那会一直在用emlog,所以就不愿意折腾. 乘此契机,干脆一战到底,所以也是花了点大功夫,包括数据的迁移,和主题的适配.</p>
<p>虽然作者一直以来都在积极推进主题的更新,也正因此我在使用中没有遇到太大的麻烦,但也有缺少我之前系统的设定,所以我也一并把这个主题做了更新,并且pull到了原仓库.上面放的GitHub的链接是我更新后的. <img src="https://gh-proxy.com/github.com/iAJue/MoeJueBlogPic/blob/master/Images/2024/10/03/78350c19ly8hu90no7xm8j20w414kdue.jpg" alt=""> 最麻烦的数据迁移部分,我在网上兜兜转转了半天,只找到exe版本的,先不说exe版本给人一种莫名的不放心的感觉,况且我现在用的还是Mac的系统,根本就不能直接运行. 所谓自己动手丰衣足食,所以我只能花点时间给自己写一个迁移脚本了. GitHub的地址我放在了文章的底部了,可以完美迁移emlog的数据到WordPress系统中. 不愧是我! <img src="https://gh-proxy.com/github.com/iAJue/MoeJueBlogPic/blob/master/Images/2024/10/03/78350c19ly8hu86bsccndj21hc0u0gr1.jpg" alt=""></p>
<p>图片我还是一样,一份存七牛云备份,一份存新浪图床,转过来发现市场上没有好用适合我的七牛云插件,我又自己撸了一个 <img src="https://gh-proxy.com/github.com/iAJue/MoeJueBlogPic/blob/master/Images/2024/10/03/78350c19ly8hu8aervippj20z608i0ws.jpg" alt=""> <img src="https://gh-proxy.com/github.com/iAJue/MoeJueBlogPic/blob/master/Images/2024/10/03/78350c19ly8hu8aexj66gj20zw12yk01.jpg" alt=""></p>
<h3 id="新域名">
<a class="header-anchor" href="#%e6%96%b0%e5%9f%9f%e5%90%8d"></a>
新域名
</h3><p>虽然我也很不想,但是又只能换域名了,之前的域名就给人做嫁衣了. 萌音系列: MoeKot.cn. 萌音系列的包括(萌音笔记,萌音发卡,萌音社区,萌音商城等)以后都会放在这个域名下. 主站系列: MoeJue.cn. 这个是我的主站,包括博客和一些不带系列的项目都会放到这个域名下面.</p>
<h4 id="解释">
<a class="header-anchor" href="#%e8%a7%a3%e9%87%8a"></a>
解释
</h4><p>Moe: 日文里的“萌え”的读音,罗马音的写法,中文里一般翻译成“萌”. Kot: 日语&quot;声音&quot;的意思,罗马音写法. Jue: 阿珏酱的简版音译.</p>
<h3 id="博客">
<a class="header-anchor" href="#%e5%8d%9a%e5%ae%a2"></a>
博客
</h3><p>我又是一个特别念旧和重感情的人,所以连之前的博客我都一同保留下来了. <a href="http://xlog.moejue.cn/">Xlog</a> <a href="https://www.cnblogs.com/Ajue">cnblogs</a> <a href="https://log.MoeJue.cn">emlog</a> <a href="https://blog.moejue.cn">Blog</a> 相关的网站的域名我也做了迁移,就不一一列出来了,当然也可能会漏掉一些链接没替换全.</p>
<p>所有的数据都是原汁原味的,不漏掉每一个人的数据. 甚至是博客的注册用户的数据我也一同搬迁过来了,可以直接在新系统上登录,密码是一样的.</p>
<h5 id="快来star一下吧">
<a class="header-anchor" href="#%e5%bf%ab%e6%9d%a5star%e4%b8%80%e4%b8%8b%e5%90%a7"></a>
快来star一下吧!
</h5><p>食用方法也一并写到了README.md里了,如果有什么问题也可以直接提交issue.</p>
<h4 id="emlog迁移wordpress脚本">
<a class="header-anchor" href="#emlog%e8%bf%81%e7%a7%bbwordpress%e8%84%9a%e6%9c%ac"></a>
<a href="https://github.com/iAJue/migrate_emlog_to_wp">emlog迁移WordPress脚本</a>
</h4><p>我的博客即将同步至腾讯云开发者社区，邀请大家一同入驻：<a href="https://cloud.tencent.com/developer/support-plan?invite_code=15kxzzid10tgx">https://cloud.tencent.com/developer/support-plan?invite_code=15kxzzid10tgx</a></p>
        
        <hr><p>本文2024-10-03首发于<a href='https://zh.moejue.cn/'>阿珏酱のBlog</a>，最后修改于2024-10-26</p>]]>
      </description>
      
        <category>折腾代码</category>
      
    </item>
    
    

    <item>
      <title>Android查看apk安装包的AndroidManifest.xml文件</title>
      <link>https://zh.moejue.cn/posts/110/</link>
      <pubDate>Sun, 19 Apr 2020 09:15:54 &#43;0000</pubDate>
      <author>xxx@example.com (MoeJue)</author>
      <guid>https://zh.moejue.cn/posts/110/</guid>
      <description>
        <![CDATA[<h1>Android查看apk安装包的AndroidManifest.xml文件</h1><p>作者：MoeJue（xxx@example.com）</p>
        
          <p><strong>起因</strong><br>
上周在做安卓系统的厂家推送功能，某些机型无法离线厂推，所以准备解包apk看一下打包参数是否出问题。</p>
<p><strong>序言</strong><br>
在Android开发中，可能需要从我们自己的应用跳转到别的应用的界面，但是在不知道别的应用的包名以及类名的情况下，是很难做到这一点的，有个最简单的方法就是下载应用的apk文件，然后修改后缀名为zip或者rar,之后解压文件，在解压出来的文件中，就会有一个AndroidManifest.xml的文件，但是打开之后，可能是乱码，这就尴尬了，那怎么办呢？</p>
<p>AXMLPrinter2.jar是一款常用的apk反编译工具，主要用于反编译apk文件，包括包名、版本号和图标等信息，可以用AXMLPrinter2对androidmanifest.xml反编译进行明文查看。</p>
<p><strong>使用方法</strong><br>
1、 下载工具AXMLPrinter2.jar工具 地址：https://code.google.com/archive/p/android4me/downloads<br>
2、 将要查看的AndroidManfist.xml文件拷贝至与工具相同文件夹下<br>
3、 在当前文件夹打开DOS窗口<br>
4、 执行如下命令</p>
<p>java -jar AXMLPrinter2.jar AndroidManifest.xml &raquo; AndroidManifest.txt</p>
<p>执行完该命令后会在该文件夹生成AndroidManifest.txt文件，该文件便是解码后的文件。</p>
<p>当然，可能有些执行后就会报错 ：&lsquo;java&rsquo; 不是内部或外部命令，也不是可运行的程序 或批处理文件。<br>
这是因为没有安装Java环境或未配置环境变量导致的。</p>
<p><strong>安装JDK</strong><br>
首先先来回顾下安装JDK的过程</p>
<p>1. 下载JDK并安装</p>
<p>JDK1.6、1.7、1.8任君选择下载，想用哪个直接下载哪个吧<br>
官方网站下载JDK <a href="https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html">https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html</a><br>
安装很简单，无脑下一步操作就行了，这里不再赘述</p>
<p>2. 配置JDK环境变量</p>
<p>（1）右击电脑中的“我的电脑”，win10为“这台电脑”，选择“属性”，选择高级系统设置 ，在新界面中选择“环境变量”，我们只编辑“系统变量”就可以了<br>
<img src="https://gh-proxy.com/github.com/iAJue/MoeJueBlogPic/blob/master/Images/2020/04/19/0072Vf1ply1gdz8ohzbxnj30y10hz435.jpg" alt=""><br>
（2） 点击新建添加变量名为“JAVA_HOME”，变量值为“C:\Program Files\Java\jdk1.8.0_60”，这个值就是你安装的JDK路径，你安装到了哪里，就用那个地址就行<br>
<img src="https://gh-proxy.com/github.com/iAJue/MoeJueBlogPic/blob/master/Images/2020/04/19/0072Vf1ply1gdz8ozylg5j30m20lldi6.jpg" alt="">再新建一个变量名为“CLASSPATH”，变量值为“.;%JAVA_HOME%/lib/dt.jar;%JAVA_HOME%/lib/tools.jar”的变量，并确定保存，注意值内的“.;”不要漏掉，每一个符号都不能少</p>
<p>最关键的一步来了，找找有没有叫“path”的变量，大小写都行，没有则新建，有则直接点编辑<br>
如果已经有path这个变量了，那么里面一定保存了一些内容，我们不管它，为了更方便编辑，我们把其中的变量值先复制出来</p>
<p>然后将内容粘贴到文本编辑器中，在内容的最前面添加内容“%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin;”，结果如下<br>
<img src="https://gh-proxy.com/github.com/iAJue/MoeJueBlogPic/blob/master/Images/2020/04/19/0072Vf1ply1gdz8py2u6ij30tm0jl77z.jpg" alt=""><br>
然后再把整个值复制后粘贴到之前编辑的变量值中，确定保存。</p>
<p>回顾一下上边的步骤，其中总共添加了三个值：<br>
JAVA_HOME：C:\Program Files\Java\jdk1.8.0_60<br>
CLASSPATH：.;%JAVA_HOME%/lib/dt.jar;%JAVA_HOME%/lib/tools.jar<br>
PATH：%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin;</p>
<p>下面是验证安装是否成功</p>
<p>win+R打开运行，输入cmd后打开命令行<br>
输入“java”，正常会显示一大堆的操作提示<br>
输入“java -version” ,正常会显示你安装的java版本号信息<br>
输入“javac”，正常会显示javac的一些用法</p>
<p>完结撒花！</p>
        
        <hr><p>本文2020-04-19首发于<a href='https://zh.moejue.cn/'>阿珏酱のBlog</a>，最后修改于2020-04-19</p>]]>
      </description>
      
        <category>折腾代码</category>
      
    </item>
    
    

    <item>
      <title>支付宝当面付对接</title>
      <link>https://zh.moejue.cn/posts/107/</link>
      <pubDate>Sat, 04 Apr 2020 02:35:18 &#43;0000</pubDate>
      <author>xxx@example.com (MoeJue)</author>
      <guid>https://zh.moejue.cn/posts/107/</guid>
      <description>
        <![CDATA[<h1>支付宝当面付对接</h1><p>作者：MoeJue（xxx@example.com）</p>
        
          <p>当面付顾名思义，面对面付款，帮助商家在线下消费场景下实现快速收款；当面付产品支持条码支付和扫码支付两种付款方式。<br>
我们这里对接的就是扫码支付<br>
扫码支付，指用户打开支付宝钱包中的“扫一扫”功能，扫描商家展示在某收银场景下的二维码并进行支付的模式。该模式适用于线下实体店支付、面对面支付等场景。业务流程如下图所示：<br>
<img src="https://gh-proxy.com/github.com/iAJue/MoeJueBlogPic/blob/master/Images/2020/04/04/0072Vf1ply1gciwmfk760j30kf071dfz.jpg" alt=""><br>
由于当面付的签约非常简单，允许个体工商户/个人商户签约。所以该方式也被大量用于线上的扫码支付，由于该方式违反了支付宝的相关条款，有一定风险，咱作为技术交流，暂且先抛开这个问题。</p>
<p>作为技术对接，即使你没有签约当面付产品，也是可以进行开发的。<br>
支付能力直接涉及到交易与资金，为了方便开放者调试支付能力，开放平台已经准备好沙箱环境，包括沙箱环境账号和沙箱版支付宝钱包，这样开发者就可以在沙箱环境调试了。点击了解<a href="https://docs.open.alipay.com/200/105311">如何接入沙箱</a>并<a href="https://openhome.alipay.com/platform/appDaily.htm">接入沙箱环境</a>。<br>
<img src="https://gh-proxy.com/github.com/iAJue/MoeJueBlogPic/blob/master/Images/2020/04/04/0072Vf1ply1gciwn0aa2ej30sq0ptwi3.jpg" alt=""><br>
所以我这边开发使用的是沙箱环境，毕竟里面好多钱，随便用。<br>
<img src="https://gh-proxy.com/github.com/iAJue/MoeJueBlogPic/blob/master/Images/2020/04/04/0072Vf1ply1gciwlx66oxj30cn0qo0tj.jpg" alt=""><br>
首先先下载相应的开发语言的sdk 下载：https://docs.open.alipay.com/194/105201/<br>
扫码支付文档：https://docs.open.alipay.com/194/106078/</p>
<p><strong>配置密钥</strong><br>
为了保证交易双方（商户和支付宝）的身份和数据安全，开发者在调用接口前，需要配置双方密钥，对交易数据进行双方校验。<br>
下载<a href="https://docs.open.alipay.com/291/105971">支付宝开放平台开发助手</a>进行密钥生成。<br>
生成密钥后，开发者需要在开放平台开发者中心进行密钥配置，配置完成后可以获取支付宝公钥<br>
<img src="https://gh-proxy.com/github.com/iAJue/MoeJueBlogPic/blob/master/Images/2020/04/04/0072Vf1ply1gciwnhq0ztj30u00lo0y6.jpg" alt=""><br>
<strong>设计接入</strong><br>
由于我这边的设计不需要用到轮询(后面会说)，所以没有加上<br>
以下是我业务中的相关代码</p>
<pre><code>public function pay(){

    if (request()-&gt;isPost()) {
        
        // (必填) 商户网站订单系统中唯一订单号，64个字符以内，只能包含字母、数字、下划线，
        // 需保证商户系统端不能重复，建议通过数据库sequence生成，
        $uid = Session::get('sq.uid');
        $outTradeNo = order\_num() . $uid;

        // (必填) 订单标题，粗略描述用户的支付目的。如“xxx品牌xxx门店当面付扫码消费”
        $subject = '聚合平台用户积分充值';

        // (必填) 订单总金额，单位为元，不能超过1亿元
        // 如果同时传入了【打折金额】,【不可打折金额】,【订单总金额】三者,则必须满足如下条件:【订单总金额】=【打折金额】+【不可打折金额】
        $totalAmount = input('post.pay\_money/f');
        if($totalAmount &lt; 1){
            return \['status' =&gt; 1, 'msg' =&gt; '最低充值金额1元'\];
        }
        if($totalAmount &gt; 9999999){
            return \['status' =&gt; 1, 'msg' =&gt; '充值最大金额不能超过9999999元'\];
        }


        // (不推荐使用) 订单可打折金额，可以配合商家平台配置折扣活动，如果订单部分商品参与打折，可以将部分商品总价填写至此字段，默认全部商品可打折
        // 如果该值未传入,但传入了【订单总金额】,【不可打折金额】 则该值默认为【订单总金额】- 【不可打折金额】
        //String discountableAmount = &quot;1.00&quot;; //

        // (可选) 订单不可打折金额，可以配合商家平台配置折扣活动，如果酒水不参与打折，则将对应金额填写至此字段
        // 如果该值未传入,但传入了【订单总金额】,【打折金额】,则该值默认为【订单总金额】-【打折金额】
        // $undiscountableAmount = &quot;0.01&quot;;

        // 卖家支付宝账号ID，用于支持一个签约账号下支持打款到不同的收款账号，(打款到sellerId对应的支付宝账号)
        // 如果该字段为空，则默认为与支付宝签约的商户的PID，也就是appid对应的PID
        //$sellerId = &quot;&quot;;

        // 订单描述，可以对交易或商品进行一个详细地描述，比如填写&quot;购买商品2件共15.00元&quot;
        $body = &quot;聚合平台用户积分充值&quot; . $totalAmount . '元';

        //商户操作员编号，添加此参数可以为商户操作员做销售统计
        // $operatorId = &quot;&quot;;

        // (可选) 商户门店编号，通过门店号和商家后台可以配置精准到门店的折扣信息，详询支付宝技术支持
        // $storeId = &quot;&quot;;

        // 支付宝的店铺编号
        // $alipayStoreId= &quot;&quot;;

        // 业务扩展参数，目前可添加由支付宝分配的系统商编号(通过setSysServiceProviderId方法)，系统商开发使用,详情请咨询支付宝技术支持
        // $providerId = &quot;&quot;; //系统商pid,作为系统商返佣数据提取的依据
        // $extendParams = new ExtendParams();
        // $extendParams-&gt;setSysServiceProviderId($providerId);
        // $extendParamsArr = $extendParams-&gt;getExtendParams();

        // 支付超时，线下扫码交易定义为5分钟
        $timeExpress = &quot;5m&quot;;

        // 商品明细列表，需填写购买商品详细信息，
        // $goodsDetailList = array();

        // // 创建一个商品信息，参数含义分别为商品id（使用国标）、名称、单价（单位为分）、数量，如果需要添加商品类别，详见GoodsDetail
        // $goods1 = new GoodsDetail();
        // $goods1-&gt;setGoodsId(&quot;apple-01&quot;);
        // $goods1-&gt;setGoodsName(&quot;iphone&quot;);
        // $goods1-&gt;setPrice(3000);
        // $goods1-&gt;setQuantity(1);
        // //得到商品1明细数组
        // $goods1Arr = $goods1-&gt;getGoodsDetail();

        // // 继续创建并添加第一条商品信息，用户购买的产品为“xx牙刷”，单价为5.05元，购买了两件
        // $goods2 = new GoodsDetail();
        // $goods2-&gt;setGoodsId(&quot;apple-02&quot;);
        // $goods2-&gt;setGoodsName(&quot;ipad&quot;);
        // $goods2-&gt;setPrice(1000);
        // $goods2-&gt;setQuantity(1);
        // //得到商品1明细数组
        // $goods2Arr = $goods2-&gt;getGoodsDetail();

        // $goodsDetailList = array($goods1Arr,$goods2Arr);

        //第三方应用授权令牌,商户授权系统商开发模式下使用
        $appAuthToken = &quot;&quot;;//根据真实值填写

        // 创建请求builder，设置请求参数
        $qrPayRequestBuilder = new AlipayTradePrecreateContentBuilder();
        $qrPayRequestBuilder-&gt;setOutTradeNo($outTradeNo);
        $qrPayRequestBuilder-&gt;setTotalAmount($totalAmount);
        $qrPayRequestBuilder-&gt;setTimeExpress($timeExpress);
        $qrPayRequestBuilder-&gt;setSubject($subject);
        $qrPayRequestBuilder-&gt;setBody($body);
        // $qrPayRequestBuilder-&gt;setUndiscountableAmount($undiscountableAmount);
        // $qrPayRequestBuilder-&gt;setExtendParams($extendParamsArr);
        // $qrPayRequestBuilder-&gt;setGoodsDetailList($goodsDetailList);
        // $qrPayRequestBuilder-&gt;setStoreId($storeId);
        // $qrPayRequestBuilder-&gt;setOperatorId($operatorId);
        // $qrPayRequestBuilder-&gt;setAlipayStoreId($alipayStoreId);

        $qrPayRequestBuilder-&gt;setAppAuthToken($appAuthToken);


        // 调用qrPay方法获取当面付应答
        require ROOT\_PATH.'extend/f2fpay/config/config.php';
        $qrPay = new AlipayTradeService($config);
        $qrPayResult = $qrPay-&gt;qrPay($qrPayRequestBuilder);

        //  根据状态值进行业务处理
        switch ($qrPayResult-&gt;getTradeStatus()){
            case &quot;SUCCESS&quot;:
                $response = $qrPayResult-&gt;getResponse();

                Db::name('order')
                    -&gt;insert(\[
                        'uid' =&gt; $uid,
                        'pay\_id' =&gt; $outTradeNo,
                        'money' =&gt; $totalAmount,
                        'creat\_time' =&gt; time(),
                        'subject' =&gt; $subject
                    \]);

                return \['status' =&gt; 0, 'msg' =&gt; '支付宝创建订单二维码成功!!!&quot;','data' =&gt; \[
                    'qr\_code' =&gt; $response-&gt;qr\_code,
                    'outTradeNo' =&gt; $outTradeNo
                \]\];
                // $qrcode = $qrPay-&gt;create\_erweima($response-&gt;qr\_code);
                // echo $qrcode;
                // print\_r($response);
                break;
            case &quot;FAILED&quot;:
                return \['status' =&gt; 1, 'msg' =&gt; '支付宝创建订单二维码失败!!!&quot;'\];
                // if(!empty($qrPayResult-&gt;getResponse())){
                //     print\_r($qrPayResult-&gt;getResponse());
                // }
                break;
            case &quot;UNKNOWN&quot;:
                return \['status' =&gt; 1, 'msg' =&gt; '系统异常，状态未知!!!&quot;'\];
                // echo &quot;系统异常，状态未知!!!&quot;.&quot;&lt;br&gt;--------------------------&lt;br&gt;&quot;;
                // if(!empty($qrPayResult-&gt;getResponse())){
                //     print\_r($qrPayResult-&gt;getResponse());
                // }
                break;
            default:
                return \['status' =&gt; 1, 'msg' =&gt; '不支持的返回状态，创建订单二维码返回异常!!!'\];
                break;
        }
        return ;
    }


}
</code></pre>
<p>以上就是当面付预下单代码<br>
关于这个SDK，我非常有必要吐槽一下，哪个货写的demo，还在PHP例子里引入了个lotusphp框架，一大堆没有用的东西，完全没有考虑我们开发者能不能接受的了。<br>
我也是花了点时间，把SDK给精简了一下，只拿出我需要的部分，放入了我自己的框架中，加上了namespace，自动加载。<br>
<img src="https://gh-proxy.com/github.com/iAJue/MoeJueBlogPic/blob/master/Images/2020/04/04/0072Vf1ply1gciwodh05dj30af0egdho.jpg" alt=""><br>
扫码支付有一个独有的功能&mdash;-异步通知<br>
这个也正是线上支付最为需要的功能<br>
当收银台调用预下单请求 API 生成二维码展示给用户后，用户通过手机扫描二维码进行支付，支付宝会将该笔订单的变更信息，沿着商户调用预下单请求时所传入的异步通知地址 notify_url，通过 POST 请求的形式将支付结果作为参数通知到商户系统。<br>
<img src="https://gh-proxy.com/github.com/iAJue/MoeJueBlogPic/blob/master/Images/2020/04/04/0072Vf1ply1gciwouog84j30o10cu768.jpg" alt=""><br>
记住这个异步通知地址需要在应用那设置一下。</p>
        
        <hr><p>本文2020-04-04首发于<a href='https://zh.moejue.cn/'>阿珏酱のBlog</a>，最后修改于2020-04-04</p>]]>
      </description>
      
        <category>折腾代码</category>
      
    </item>
    
    

    <item>
      <title>discuz论坛个人空间自定义css样式</title>
      <link>https://zh.moejue.cn/posts/109/</link>
      <pubDate>Tue, 24 Mar 2020 13:23:51 &#43;0000</pubDate>
      <author>xxx@example.com (MoeJue)</author>
      <guid>https://zh.moejue.cn/posts/109/</guid>
      <description>
        <![CDATA[<h1>discuz论坛个人空间自定义css样式</h1><p>作者：MoeJue（xxx@example.com）</p>
        
          <p>前几天闲来无事，然后就去找了一下discuz论坛的漏洞，然后还真就找到了，在顺便的就写成了个软件，再就顺势的水一篇<br>
下面这是事件起因<br>
<img src="https://gh-proxy.com/github.com/iAJue/MoeJueBlogPic/blob/master/Images/2020/03/24/0072Vf1ply1gd4tebhwgwj309s0aojss.jpg" alt=""><br>
这个漏洞对网站并没有太大的危害，仅只能自定义个人空间的css样式，对网站数据并不构成威胁，还请放心。</p>
<p>软件效果即可以自定义discuz个人空间的装扮的css样式，丰富美化个人空间，让其不再单调。</p>
<ul>
<li>测试discuz版本X3.4，其他版本自测。</li>
<li>仅测试了全球主机交流论坛(站长求放过)，同版本discuz理论通用</li>
<li>未开通个人空间的论坛不可用</li>
<li>自定义css不建议过多且建议压缩成一行，以免导致失败</li>
<li>协议头正常情况下，理论可以不用修改，放置文本框主要是为了方便扩展</li>
<li>如果操作的是loc论坛，默认会收听并添加阿珏酱为好友 [#手动滑稽 + 狗头保命]</li>
</ul>
<p>本软件仅本地请求，不上传任何数据到服务器。<br>
软件有加壳，杀软可能误报，还请放心食用<img src="https://gh-proxy.com/github.com/iAJue/MoeJueBlogPic/blob/master/Images/2020/03/24/0072Vf1ply1gd46ipbb1uj30jl0drac8.jpg" alt=""><br>
<strong>获取cookie</strong></p>
<hr>
<ul>
<li>浏览器打开开发人员工具(F12)，进入目标网站，在登录状态下的任何页面即可，开发人员工具切换到Network选项栏，刷新页面(F5)，找到并点击当前域名的请求数据的Headers栏，Request Headers处的cookie。知道大家肯定听不懂我再说什么，所以我特意做了图</li>
</ul>
<blockquote>
<p><img src="https://gh-proxy.com/github.com/iAJue/MoeJueBlogPic/blob/master/Images/2020/03/24/0072Vf1ply1gd47v5klf2j30iq0hhjw1.jpg" alt=""></p>
</blockquote>
<ul>
<li>第二种方法操作更简单快捷，但是这种方法适用于你知道自己想要的cookie是哪一个。如下图所示</li>
</ul>
<blockquote>
<p><img src="https://gh-proxy.com/github.com/iAJue/MoeJueBlogPic/blob/master/Images/2020/03/24/0072Vf1ply1gd47uobcsaj30nj0ammz9.jpg" alt=""></p>
</blockquote>
<p>第一种方法中的开发人员工具在早期的博文中也有使用过，但没有讲到如何获取cookie。推荐还是第一种，cookie反正不怕多，但少了就不行了<br>
<strong>免责声明</strong></p>
<hr>
<ol>
<li>
<p>本软件仅供学习交流使用！</p>
</li>
<li>
<p>本软件作者不承担任何责任！</p>
</li>
<li>
<p>使用本软件即视为同意本条款！</p>
</li>
</ol>
<p><strong>下载</strong></p>
<hr>
<p>下面这个下载样式已经好几年没用过了，今天终于重出江湖了<br>
.down_link{background:url(&lsquo;<a href="https://www.52ecy.cn/content/uploadfile/201707/md-bg.jpeg%27">https://www.52ecy.cn/content/uploadfile/201707/md-bg.jpeg'</a>) no-repeat 100% 0% #fffdff; border: 1px solid #faf8fb; border-radius: 2px; color: #666; font-size: 14px; margin-bottom: 10px; padding: 5px 20px;}.downbtn{background: none repeat scroll 0 0 #1BA1E2; border: 0 none; border-radius: 2px; color: #FFFFFF; cursor: pointer; font-family: &ldquo;Open Sans&rdquo;,&ldquo;Hiragino Sans GB&rdquo;,&ldquo;Microsoft YaHei&rdquo;,&ldquo;WenQuanYi Micro Hei&rdquo;,Arial,Verdana,Tahoma,sans-serif; font-size: 14px; margin: -4px 20px 0 0; padding: 8px 30px;text-transform:none;text-decoration:none;} .downlink a{text-decoration:none;} .downlink a{text-decoration:none;font-size:15px;} .downlink a:link{color: #ffffff;} .downlink a:visited{color: #ffffff;} .downlink a:hover{color: #ffffff;} .downlink a:active{color: #ffffff;} .downbtn{background: none repeat scroll 0 0 #1BA1E2; border: 0 none; border-radius: 2px; color: #FFFFFF !important; cursor: pointer; font-family: &ldquo;Open Sans&rdquo;,&ldquo;Hiragino Sans GB&rdquo;,&ldquo;Microsoft YaHei&rdquo;,&ldquo;WenQuanYi Micro Hei&rdquo;,Arial,Verdana,Tahoma,sans-serif; font-size: 14px; margin: -4px 20px 0 0; padding: 8px 30px;} .yanshibtn{background: none repeat scroll 0 0 #d33431; border: 0 none; border-radius: 2px; color: #FFFFFF!important; cursor: pointer; font-family: &ldquo;Open Sans&rdquo;,&ldquo;Hiragino Sans GB&rdquo;,&ldquo;Microsoft YaHei&rdquo;,&ldquo;WenQuanYi Micro Hei&rdquo;,Arial,Verdana,Tahoma,sans-serif; font-size: 14px; margin: -4px 20px 0 0; padding: 8px 30px;text-transform:none;text-decoration:none;} .downbtn:hover,.yanshibtn:hover{background: none repeat scroll 0 0 #9B59B6; border: 0 none; border-radius: 2px; color: #FFFFFF!important; cursor: pointer; font-family: &ldquo;Open Sans&rdquo;,&ldquo;Hiragino Sans GB&rdquo;,&ldquo;Microsoft YaHei&rdquo;,&ldquo;WenQuanYi Micro Hei&rdquo;,Arial,Verdana,Tahoma,sans-serif; font-size: 14px; margin: -4px 20px 0 0; padding: 8px 30px;} .downbtn a:hover,.yanshibtn a:hover{background: none repeat scroll 0 0 #9B59B6; border: 0 none; border-radius: 2px; color: #FFFFFF; cursor: pointer; font-family: &ldquo;Open Sans&rdquo;,&ldquo;Hiragino Sans GB&rdquo;,&ldquo;Microsoft YaHei&rdquo;,&ldquo;WenQuanYi Micro Hei&rdquo;,Arial,Verdana,Tahoma,sans-serif; font-size: 14px; margin: -4px 20px 0 0; padding: 8px 30px;}</p>
        
        <hr><p>本文2020-03-24首发于<a href='https://zh.moejue.cn/'>阿珏酱のBlog</a>，最后修改于2020-03-24</p>]]>
      </description>
      
        <category>折腾代码</category>
      
    </item>
    
  </channel>
</rss>
