<?xml version="1.0" encoding="UTF-8"?><rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>QuiYu Blog</title><description>是一个聚焦生活杂项的随性空间，收录日常感悟、兴趣碎片与多元思考，笔触轻松，内容不拘，为读者提供自在惬意的阅读角落。！</description><link>https://blog.quiyu.top/</link><language>zh_CN</language><item><title>使用Termux搭建cloudreve</title><link>https://blog.quiyu.top/posts/cloudreve/</link><guid isPermaLink="true">https://blog.quiyu.top/posts/cloudreve/</guid><description>详细介绍如何在Termux环境下搭建Cloudreve个人网盘，包括依赖安装、配置优化及远程访问设置</description><pubDate>Thu, 07 Aug 2025 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;在数字化时代，拥有个人云盘能便捷地存储和管理文件。今天，就为大家详细介绍如何在安卓设备的Termux环境里搭建Cloudreve。&lt;/p&gt;
&lt;p&gt;前期准备&lt;/p&gt;
&lt;p&gt;确保你的安卓设备已安装Termux应用，可从官方渠道或应用商店获取。安装完成后，打开Termux，准备后续操作。&lt;/p&gt;
&lt;p&gt;更新Termux软件包&lt;/p&gt;
&lt;p&gt;为保证安装的软件是最新版本，修复潜在问题，在Termux终端输入并执行以下代码：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;apt update &amp;amp;&amp;amp; apt upgrade

&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;这会更新软件包列表，并升级已安装的软件包。&lt;/p&gt;
&lt;p&gt;安装依赖
Cloudreve运行依赖特定软件环境，我们需安装必要工具，如&lt;code&gt;unzip&lt;/code&gt;用于解压文件，&lt;code&gt;wget&lt;/code&gt;用于下载文件 ，在终端输入命令安装：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;apt install wget&amp;amp;&amp;amp;apt install unzip
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;创建一个文件夹&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;mkdir cloud
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;进入文件夹目录&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;cd cloud
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;下载Cloudreve安装包&lt;/p&gt;
&lt;p&gt;使用&lt;code&gt;wget&lt;/code&gt;下载Cloudreve安装包，在Termux终端输入命令（注意：需根据Cloudreve官方最新发布版本链接调整）：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;wget https://github.com/cloudreve/Cloudreve/releases/download/3.8.3/cloudreve_3.8.3_linux_arm64.tar.gz
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;上述命令以&lt;code&gt;v3.8.3&lt;/code&gt;版本的Linux arm64架构安装包为例，实际操作请前往Cloudreve官方仓库查看最新稳定版本链接并替换。&lt;/p&gt;
&lt;p&gt;解压安装包
下载完成后，解压压缩包，输入以下命令：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;tar -zxvf cloudreve_3.8.3_linux_arm64.tar.gz
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;赋予cloudreve权限&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;chmod +x./cloudreve
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;启动Cloudreve
一切就绪后，在Termux终端输入命令启动Cloudreve：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;./cloudreve
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;启动成功后，在浏览器访问了&lt;code&gt;http://127.0.0.1:5212&lt;/code&gt;（默认端口，若在配置文件修改端口，使用修改后的端口访问），按页面提示完成初始化设置，就能使用私人云盘了！&lt;/p&gt;
&lt;p&gt;接下来安装cpolar内网穿透
cpolar它支持http/https/tcp协议，可以永久免费使用不限制流量，无需公网IP，也不用设置路由器。用过一段时间后你会发现，它甚至还可以直接在家中实现小型的云服务。&lt;/p&gt;
&lt;p&gt;创建一个sources.list.d的文件夹:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;mkdir -p $PREFIX/etc/apt/sources.list.d
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;添加cpolar下载源文件&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;echo &quot;deb [trusted=yes] http://termux.cpolar.com termux extras&quot; &amp;gt;&amp;gt; $PREFIX/etc/apt/sources.list.d/cpolar.list
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;更新仓库&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;pkg update
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;安装cpolar&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;pkg install cpolar
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;安装Termux服务，注意: 安装完成后记得关闭重启一下Termux才生效!!&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;pkg install termux-services
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;设置开机自启&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;sv up cpolar
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;cpolar.yml主配置文件路径位置&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;$PREFIX/etc/cpolar/cpolar.yml
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;然后在手机浏览器我们输入&lt;code&gt;http://localhost:9200&lt;/code&gt;即可看到cpolar管理界面，使用在cpolar官网注册的账号即可登陆&lt;/p&gt;
</content:encoded></item><item><title>使用条款-云盘</title><link>https://blog.quiyu.top/posts/%E5%85%8D%E8%B4%A3%E5%A3%B0%E6%98%8E/</link><guid isPermaLink="true">https://blog.quiyu.top/posts/%E5%85%8D%E8%B4%A3%E5%A3%B0%E6%98%8E/</guid><pubDate>Sun, 23 Nov 2025 00:00:00 GMT</pubDate><content:encoded>&lt;h2&gt;秋雨云使用条款&lt;/h2&gt;
&lt;h3&gt;1. 服务使用前提&lt;/h3&gt;
&lt;p&gt;用户需通过有效邮箱完成注册，提交信息需真实有效；注册成功即视为同意本条款及关联隐私政策，未满18周岁用户需经监护人同意方可使用服务；平台仅对注册信息进行基础格式校验，信息真实性由用户负责，造假引发的风险自行承担。&lt;/p&gt;
&lt;h3&gt;2. 账号使用规范&lt;/h3&gt;
&lt;p&gt;账号允许用户自行转借、共享，但需提前知晓相关风险；用户需妥善保管账号密码并定期更换，平台提供登录异常提醒基础功能，因账号转借共享导致的泄露、被盗用或违规使用等损失，均由账号注册人自行承担。&lt;/p&gt;
&lt;h3&gt;3. 服务范围与限制&lt;/h3&gt;
&lt;p&gt;平台基于开源项目稳定提供文件存储、管理、分享核心服务，保障日常使用流畅性；不支持违规内容传输、商业推广等行为，有权根据合规要求或开源项目更新调整功能，重大变更将提前通过邮箱或公告通知。&lt;/p&gt;
&lt;h3&gt;4. 禁止行为约定&lt;/h3&gt;
&lt;p&gt;严禁上传/分享涉黄、涉政、诈骗、侵权等违规内容，不得利用平台从事违法活动；平台配备基础违规内容筛查机制，对明显违规信息进行处置，同时接受监管通知与用户合规投诉并配合处理，违规使用引发的法律责任由用户自行承担。&lt;/p&gt;
&lt;h3&gt;5. 服务变更与终止&lt;/h3&gt;
&lt;p&gt;平台可因开源项目迭代、技术升级、合规要求合理变更服务规则，或在不可抗力、严重违规情形下终止服务，常规调整将提前通知；用户注销账号后，平台将按规则完成数据清理，数据留存遵循相关法规，服务终止前用户需自行备份重要数据。&lt;/p&gt;
&lt;h3&gt;6. 知识产权声明&lt;/h3&gt;
&lt;p&gt;平台服务依托开源项目搭建，相关技术、界面等知识产权归对应开源项目方所有，平台仅按开源协议合理使用，不享有所有权；用户上传合法内容的知识产权归自身所有，授权平台用于服务运行所需的存储、传输等操作，因内容侵权引发的纠纷由用户自行承担责任，与平台无关。&lt;/p&gt;
&lt;h3&gt;7. 违规处罚规则&lt;/h3&gt;
&lt;p&gt;对违反条款的行为，平台将按情节采取警告、限制功能、封号等梯度处罚，处罚前会通过邮箱告知违规事由；情节严重涉嫌违法的，移交司法机关，用户自行承担法律责任，支持合理申诉并核实处理。&lt;/p&gt;
&lt;h3&gt;8. 技术支持与责任界定&lt;/h3&gt;
&lt;p&gt;平台依托开源社区资源提供基础故障排查、功能咨询服务，工作日内响应用户合理诉求；因网络波动、开源项目漏洞、不可抗力等非平台可控因素导致的服务中断，平台将尽力协调恢复，不承担额外赔偿责任，用户需理解技术服务的合理边界。&lt;/p&gt;
&lt;h3&gt;9. 文件安全与数据保障&lt;/h3&gt;
&lt;p&gt;平台采用开源项目自带的加密存储、访问权限管控等措施保障文件安全，定期进行数据备份；因用户误操作、第三方攻击（平台已履行开源项目安全配置义务）或未备份导致的文件丢失、泄露，风险由用户自行承担，平台可提供必要的排查协助。&lt;/p&gt;
&lt;h3&gt;10. 第三方服务关联责任&lt;/h3&gt;
&lt;p&gt;用户通过平台访问第三方服务时，平台仅提供合规链接跳转，不介入第三方服务流程；第三方服务引发的信息安全、财产损失等问题，由用户与第三方协商解决，平台可协助提供跳转记录等基础信息。&lt;/p&gt;
</content:encoded></item><item><title>隐私政策</title><link>https://blog.quiyu.top/posts/%E9%9A%90%E7%A7%81%E6%94%BF%E7%AD%96/</link><guid isPermaLink="true">https://blog.quiyu.top/posts/%E9%9A%90%E7%A7%81%E6%94%BF%E7%AD%96/</guid><pubDate>Sun, 23 Nov 2025 00:00:00 GMT</pubDate><content:encoded>&lt;h2&gt;秋雨云隐私政策&lt;/h2&gt;
&lt;h3&gt;1. 信息收集最小化原则&lt;/h3&gt;
&lt;p&gt;秋雨云仅收集服务运行必需的基础信息，包括注册时提交的账号、联系方式，用于完成账号核验与服务开通，严格遵循“最小必要”原则，不额外采集无关个人数据，信息使用范围仅限保障服务基础运行，不涉及任何商业推广或第三方共享。&lt;/p&gt;
&lt;h3&gt;2. 信息存储安全免责说明&lt;/h3&gt;
&lt;p&gt;用户信息依托合规存储环境进行保存，平台已采取常规加密传输、访问权限管控等技术措施，但互联网存储存在天然不可控风险。若因第三方存储设施故障、网络攻击、技术漏洞、不可抗力等非平台可控因素导致信息安全问题，平台已履行必要协调对接义务的，不承担任何责任。&lt;/p&gt;
&lt;h3&gt;3. 信息共享与披露边界&lt;/h3&gt;
&lt;p&gt;平台严格保护用户隐私，未经用户明确书面许可或法律法规强制性要求，绝不向任何第三方披露用户个人信息。仅在配合监管部门合法调查、应对有效投诉举报等法定情形下，按流程提供必要且最小范围的信息，不额外泄露无关数据。&lt;/p&gt;
&lt;h3&gt;4. 用户信息自主管理责任&lt;/h3&gt;
&lt;p&gt;用户可通过平台指定渠道自主查询、修改个人注册信息，申请删除资料的，平台将在核实用户身份后依法合规处理。因技术限制、数据留存合规要求、第三方存储规则等原因无法满足全部诉求的，平台将说明原因，不承担由此产生的相关责任，用户需自行把控信息管理风险。&lt;/p&gt;
&lt;h3&gt;5. 敏感信息风险完全自担&lt;/h3&gt;
&lt;p&gt;用户存储、分享身份证号、财务数据、私人影像、健康信息等敏感内容时，需自行评估传播风险，谨慎设置访问权限与分享范围。因用户操作不当、分享设置失误、账号使用疏忽等导致的敏感信息泄露、滥用，所有责任由用户自行承担，平台不承担任何赔偿或连带责任。&lt;/p&gt;
&lt;h3&gt;6. 第三方服务信息隔离机制&lt;/h3&gt;
&lt;p&gt;用户通过平台访问第三方网站、使用第三方插件或辅助功能时，第三方的信息收集、使用、存储规则遵循其自身隐私政策，与秋雨云无任何关联。平台不参与、不干预第三方信息处理流程，亦不承担因第三方违规收集、滥用用户信息引发的任何责任，建议用户仔细阅读第三方隐私条款后再行使用。&lt;/p&gt;
&lt;h3&gt;7. 服务通知推送规范&lt;/h3&gt;
&lt;p&gt;平台仅发送与服务运行直接相关的必要通知，包括服务功能调整公告、合规政策更新、系统维护提示等，绝不发送任何商业广告类信息。此类通知为保障服务正常运行的必要内容，用户无法取消订阅，平台将合理控制推送频率，避免干扰用户使用体验。&lt;/p&gt;
&lt;h3&gt;8. 未成年人信息保护约定&lt;/h3&gt;
&lt;p&gt;未满18周岁的用户需在法定监护人明确同意后使用服务，监护人对未成年人的账号注册、信息提交、文件存储与分享行为承担全部责任。若监护人发现被监护子女的信息存在异常使用或泄露风险，可联系平台申请核查，平台将提供必要协助，但不承担因监护不当、用户自身操作导致的信息安全责任。&lt;/p&gt;
&lt;h3&gt;9. 隐私政策更新告知规则&lt;/h3&gt;
&lt;p&gt;平台可根据法律法规修订、服务功能优化、运营规划调整等需求，对隐私政策进行合理变更，更新后将通过平台公告形式告知用户。用户继续使用服务即视为完全认可更新后的条款；若不接受变更内容，可选择终止使用服务，平台将按合规要求处理留存的用户信息，不承担额外责任。&lt;/p&gt;
&lt;h3&gt;10. 信息安全全流程责任边界&lt;/h3&gt;
&lt;p&gt;平台不提供账号安全提醒、异常登录监测等专项功能，用户需自行承担账号保管责任，包括但不限于设置复杂密码、定期更换密码、不向他人泄露账号信息、不在公共设备随意登录等。因账号密码泄露、授权他人使用不当、设备安全防护不足、网络环境不安全等导致的信息泄露、账号被盗用、文件被篡改等问题，全部责任由用户自行承担，平台不承担任何直接或间接损失赔偿责任。&lt;/p&gt;
&lt;h3&gt;11. 文件内容信息免责&lt;/h3&gt;
&lt;p&gt;平台不对用户存储、分享的文件内容进行任何形式的信息安全审核，文件中包含的个人信息、敏感数据等的保护责任完全由用户自行承担。因文件内容涉及的信息泄露、侵权纠纷等，与平台无关，平台不承担相关法律责任。&lt;/p&gt;
</content:encoded></item><item><title>Markdown Extended Features</title><link>https://blog.quiyu.top/posts/markdown-extended/</link><guid isPermaLink="true">https://blog.quiyu.top/posts/markdown-extended/</guid><description>Read more about Markdown features in Fuwari</description><pubDate>Wed, 01 May 2024 00:00:00 GMT</pubDate><content:encoded>&lt;h2&gt;GitHub Repository Cards&lt;/h2&gt;
&lt;p&gt;You can add dynamic cards that link to GitHub repositories, on page load, the repository information is pulled from the GitHub API.&lt;/p&gt;
&lt;p&gt;::github{repo=&quot;Fabrizz/MMM-OnSpotify&quot;}&lt;/p&gt;
&lt;p&gt;Create a GitHub repository card with the code &lt;code&gt;::github{repo=&quot;&amp;lt;owner&amp;gt;/&amp;lt;repo&amp;gt;&quot;}&lt;/code&gt;.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;::github{repo=&quot;saicaca/fuwari&quot;}
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;Admonitions&lt;/h2&gt;
&lt;p&gt;Following types of admonitions are supported: &lt;code&gt;note&lt;/code&gt; &lt;code&gt;tip&lt;/code&gt; &lt;code&gt;important&lt;/code&gt; &lt;code&gt;warning&lt;/code&gt; &lt;code&gt;caution&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;:::note
Highlights information that users should take into account, even when skimming.
:::&lt;/p&gt;
&lt;p&gt;:::tip
Optional information to help a user be more successful.
:::&lt;/p&gt;
&lt;p&gt;:::important
Crucial information necessary for users to succeed.
:::&lt;/p&gt;
&lt;p&gt;:::warning
Critical content demanding immediate user attention due to potential risks.
:::&lt;/p&gt;
&lt;p&gt;:::caution
Negative potential consequences of an action.
:::&lt;/p&gt;
&lt;h3&gt;Basic Syntax&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;:::note
Highlights information that users should take into account, even when skimming.
:::

:::tip
Optional information to help a user be more successful.
:::
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;Custom Titles&lt;/h3&gt;
&lt;p&gt;The title of the admonition can be customized.&lt;/p&gt;
&lt;p&gt;:::note[MY CUSTOM TITLE]
This is a note with a custom title.
:::&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;:::note[MY CUSTOM TITLE]
This is a note with a custom title.
:::
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;GitHub Syntax&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;[!TIP]
&lt;a href=&quot;https://github.com/orgs/community/discussions/16925&quot;&gt;The GitHub syntax&lt;/a&gt; is also supported.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;pre&gt;&lt;code&gt;&amp;gt; [!NOTE]
&amp;gt; The GitHub syntax is also supported.

&amp;gt; [!TIP]
&amp;gt; The GitHub syntax is also supported.
&lt;/code&gt;&lt;/pre&gt;
</content:encoded></item><item><title>Expressive Code Example</title><link>https://blog.quiyu.top/posts/expressive-code/</link><guid isPermaLink="true">https://blog.quiyu.top/posts/expressive-code/</guid><description>How code blocks look in Markdown using Expressive Code.</description><pubDate>Wed, 10 Apr 2024 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Here, we&apos;ll explore how code blocks look using &lt;a href=&quot;https://expressive-code.com/&quot;&gt;Expressive Code&lt;/a&gt;. The provided examples are based on the official documentation, which you can refer to for further details.&lt;/p&gt;
&lt;h2&gt;Expressive Code&lt;/h2&gt;
&lt;h3&gt;Syntax Highlighting&lt;/h3&gt;
&lt;p&gt;&lt;a href=&quot;https://expressive-code.com/key-features/syntax-highlighting/&quot;&gt;Syntax Highlighting&lt;/a&gt;&lt;/p&gt;
&lt;h4&gt;Regular syntax highlighting&lt;/h4&gt;
&lt;pre&gt;&lt;code&gt;console.log(&apos;This code is syntax highlighted!&apos;)
&lt;/code&gt;&lt;/pre&gt;
&lt;h4&gt;Rendering ANSI escape sequences&lt;/h4&gt;
&lt;pre&gt;&lt;code&gt;ANSI colors:
- Regular: [31mRed[0m [32mGreen[0m [33mYellow[0m [34mBlue[0m [35mMagenta[0m [36mCyan[0m
- Bold:    [1;31mRed[0m [1;32mGreen[0m [1;33mYellow[0m [1;34mBlue[0m [1;35mMagenta[0m [1;36mCyan[0m
- Dimmed:  [2;31mRed[0m [2;32mGreen[0m [2;33mYellow[0m [2;34mBlue[0m [2;35mMagenta[0m [2;36mCyan[0m

256 colors (showing colors 160-177):
[38;5;160m160 [38;5;161m161 [38;5;162m162 [38;5;163m163 [38;5;164m164 [38;5;165m165[0m
[38;5;166m166 [38;5;167m167 [38;5;168m168 [38;5;169m169 [38;5;170m170 [38;5;171m171[0m
[38;5;172m172 [38;5;173m173 [38;5;174m174 [38;5;175m175 [38;5;176m176 [38;5;177m177[0m

Full RGB colors:
[38;2;34;139;34mForestGreen - RGB(34, 139, 34)[0m

Text formatting: [1mBold[0m [2mDimmed[0m [3mItalic[0m [4mUnderline[0m
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;Editor &amp;amp; Terminal Frames&lt;/h3&gt;
&lt;p&gt;&lt;a href=&quot;https://expressive-code.com/key-features/frames/&quot;&gt;Editor &amp;amp; Terminal Frames&lt;/a&gt;&lt;/p&gt;
&lt;h4&gt;Code editor frames&lt;/h4&gt;
&lt;pre&gt;&lt;code&gt;console.log(&apos;Title attribute example&apos;)
&lt;/code&gt;&lt;/pre&gt;
&lt;hr /&gt;
&lt;pre&gt;&lt;code&gt;&amp;lt;!-- src/content/index.html --&amp;gt;
&amp;lt;div&amp;gt;File name comment example&amp;lt;/div&amp;gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;h4&gt;Terminal frames&lt;/h4&gt;
&lt;pre&gt;&lt;code&gt;echo &quot;This terminal frame has no title&quot;
&lt;/code&gt;&lt;/pre&gt;
&lt;hr /&gt;
&lt;pre&gt;&lt;code&gt;Write-Output &quot;This one has a title!&quot;
&lt;/code&gt;&lt;/pre&gt;
&lt;h4&gt;Overriding frame types&lt;/h4&gt;
&lt;pre&gt;&lt;code&gt;echo &quot;Look ma, no frame!&quot;
&lt;/code&gt;&lt;/pre&gt;
&lt;hr /&gt;
&lt;pre&gt;&lt;code&gt;# Without overriding, this would be a terminal frame
function Watch-Tail { Get-Content -Tail 20 -Wait $args }
New-Alias tail Watch-Tail
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;Text &amp;amp; Line Markers&lt;/h3&gt;
&lt;p&gt;&lt;a href=&quot;https://expressive-code.com/key-features/text-markers/&quot;&gt;Text &amp;amp; Line Markers&lt;/a&gt;&lt;/p&gt;
&lt;h4&gt;Marking full lines &amp;amp; line ranges&lt;/h4&gt;
&lt;pre&gt;&lt;code&gt;// Line 1 - targeted by line number
// Line 2
// Line 3
// Line 4 - targeted by line number
// Line 5
// Line 6
// Line 7 - targeted by range &quot;7-8&quot;
// Line 8 - targeted by range &quot;7-8&quot;
&lt;/code&gt;&lt;/pre&gt;
&lt;h4&gt;Selecting line marker types (mark, ins, del)&lt;/h4&gt;
&lt;pre&gt;&lt;code&gt;function demo() {
  console.log(&apos;this line is marked as deleted&apos;)
  // This line and the next one are marked as inserted
  console.log(&apos;this is the second inserted line&apos;)

  return &apos;this line uses the neutral default marker type&apos;
}
&lt;/code&gt;&lt;/pre&gt;
&lt;h4&gt;Adding labels to line markers&lt;/h4&gt;
&lt;pre&gt;&lt;code&gt;// labeled-line-markers.jsx
&amp;lt;button
  role=&quot;button&quot;
  {...props}
  value={value}
  className={buttonClassName}
  disabled={disabled}
  active={active}
&amp;gt;
  {children &amp;amp;&amp;amp;
    !active &amp;amp;&amp;amp;
    (typeof children === &apos;string&apos; ? &amp;lt;span&amp;gt;{children}&amp;lt;/span&amp;gt; : children)}
&amp;lt;/button&amp;gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;h4&gt;Adding long labels on their own lines&lt;/h4&gt;
&lt;pre&gt;&lt;code&gt;// labeled-line-markers.jsx
&amp;lt;button
  role=&quot;button&quot;
  {...props}

  value={value}
  className={buttonClassName}

  disabled={disabled}
  active={active}
&amp;gt;

  {children &amp;amp;&amp;amp;
    !active &amp;amp;&amp;amp;
    (typeof children === &apos;string&apos; ? &amp;lt;span&amp;gt;{children}&amp;lt;/span&amp;gt; : children)}
&amp;lt;/button&amp;gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;h4&gt;Using diff-like syntax&lt;/h4&gt;
&lt;pre&gt;&lt;code&gt;+this line will be marked as inserted
-this line will be marked as deleted
this is a regular line
&lt;/code&gt;&lt;/pre&gt;
&lt;hr /&gt;
&lt;pre&gt;&lt;code&gt;--- a/README.md
+++ b/README.md
@@ -1,3 +1,4 @@
+this is an actual diff file
-all contents will remain unmodified
 no whitespace will be removed either
&lt;/code&gt;&lt;/pre&gt;
&lt;h4&gt;Combining syntax highlighting with diff-like syntax&lt;/h4&gt;
&lt;pre&gt;&lt;code&gt;  function thisIsJavaScript() {
    // This entire block gets highlighted as JavaScript,
    // and we can still add diff markers to it!
-   console.log(&apos;Old code to be removed&apos;)
+   console.log(&apos;New and shiny code!&apos;)
  }
&lt;/code&gt;&lt;/pre&gt;
&lt;h4&gt;Marking individual text inside lines&lt;/h4&gt;
&lt;pre&gt;&lt;code&gt;function demo() {
  // Mark any given text inside lines
  return &apos;Multiple matches of the given text are supported&apos;;
}
&lt;/code&gt;&lt;/pre&gt;
&lt;h4&gt;Regular expressions&lt;/h4&gt;
&lt;pre&gt;&lt;code&gt;console.log(&apos;The words yes and yep will be marked.&apos;)
&lt;/code&gt;&lt;/pre&gt;
&lt;h4&gt;Escaping forward slashes&lt;/h4&gt;
&lt;pre&gt;&lt;code&gt;echo &quot;Test&quot; &amp;gt; /home/test.txt
&lt;/code&gt;&lt;/pre&gt;
&lt;h4&gt;Selecting inline marker types (mark, ins, del)&lt;/h4&gt;
&lt;pre&gt;&lt;code&gt;function demo() {
  console.log(&apos;These are inserted and deleted marker types&apos;);
  // The return statement uses the default marker type
  return true;
}
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;Word Wrap&lt;/h3&gt;
&lt;p&gt;&lt;a href=&quot;https://expressive-code.com/key-features/word-wrap/&quot;&gt;Word Wrap&lt;/a&gt;&lt;/p&gt;
&lt;h4&gt;Configuring word wrap per block&lt;/h4&gt;
&lt;pre&gt;&lt;code&gt;// Example with wrap
function getLongString() {
  return &apos;This is a very long string that will most probably not fit into the available space unless the container is extremely wide&apos;
}
&lt;/code&gt;&lt;/pre&gt;
&lt;hr /&gt;
&lt;pre&gt;&lt;code&gt;// Example with wrap=false
function getLongString() {
  return &apos;This is a very long string that will most probably not fit into the available space unless the container is extremely wide&apos;
}
&lt;/code&gt;&lt;/pre&gt;
&lt;h4&gt;Configuring indentation of wrapped lines&lt;/h4&gt;
&lt;pre&gt;&lt;code&gt;// Example with preserveIndent (enabled by default)
function getLongString() {
  return &apos;This is a very long string that will most probably not fit into the available space unless the container is extremely wide&apos;
}
&lt;/code&gt;&lt;/pre&gt;
&lt;hr /&gt;
&lt;pre&gt;&lt;code&gt;// Example with preserveIndent=false
function getLongString() {
  return &apos;This is a very long string that will most probably not fit into the available space unless the container is extremely wide&apos;
}
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;Collapsible Sections&lt;/h2&gt;
&lt;p&gt;&lt;a href=&quot;https://expressive-code.com/plugins/collapsible-sections/&quot;&gt;Collapsible Sections&lt;/a&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;// All this boilerplate setup code will be collapsed
import { someBoilerplateEngine } from &apos;@example/some-boilerplate&apos;
import { evenMoreBoilerplate } from &apos;@example/even-more-boilerplate&apos;

const engine = someBoilerplateEngine(evenMoreBoilerplate())

// This part of the code will be visible by default
engine.doSomething(1, 2, 3, calcFn)

function calcFn() {
  // You can have multiple collapsed sections
  const a = 1
  const b = 2
  const c = a + b

  // This will remain visible
  console.log(`Calculation result: ${a} + ${b} = ${c}`)
  return c
}

// All this code until the end of the block will be collapsed again
engine.closeConnection()
engine.freeMemory()
engine.shutdown({ reason: &apos;End of example boilerplate code&apos; })
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;Line Numbers&lt;/h2&gt;
&lt;p&gt;&lt;a href=&quot;https://expressive-code.com/plugins/line-numbers/&quot;&gt;Line Numbers&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;Displaying line numbers per block&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;// This code block will show line numbers
console.log(&apos;Greetings from line 2!&apos;)
console.log(&apos;I am on line 3&apos;)
&lt;/code&gt;&lt;/pre&gt;
&lt;hr /&gt;
&lt;pre&gt;&lt;code&gt;// Line numbers are disabled for this block
console.log(&apos;Hello?&apos;)
console.log(&apos;Sorry, do you know what line I am on?&apos;)
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;Changing the starting line number&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;console.log(&apos;Greetings from line 5!&apos;)
console.log(&apos;I am on line 6&apos;)
&lt;/code&gt;&lt;/pre&gt;
</content:encoded></item><item><title>Simple Guides for Fuwari</title><link>https://blog.quiyu.top/posts/guide/</link><guid isPermaLink="true">https://blog.quiyu.top/posts/guide/</guid><description>How to use this blog template.</description><pubDate>Mon, 01 Apr 2024 00:00:00 GMT</pubDate><content:encoded>&lt;blockquote&gt;
&lt;p&gt;Cover image source: &lt;a href=&quot;https://image.civitai.com/xG1nkqKTMzGDvpLrqFT7WA/208fc754-890d-4adb-9753-2c963332675d/width=2048/01651-1456859105-(colour_1.5),girl,_Blue,yellow,green,cyan,purple,red,pink,_best,8k,UHD,masterpiece,male%20focus,%201boy,gloves,%20ponytail,%20long%20hair,.jpeg&quot;&gt;Source&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;This blog template is built with &lt;a href=&quot;https://astro.build/&quot;&gt;Astro&lt;/a&gt;. For the things that are not mentioned in this guide, you may find the answers in the &lt;a href=&quot;https://docs.astro.build/&quot;&gt;Astro Docs&lt;/a&gt;.&lt;/p&gt;
&lt;h2&gt;Front-matter of Posts&lt;/h2&gt;
&lt;pre&gt;&lt;code&gt;---
title: My First Blog Post
published: 2023-09-09
description: This is the first post of my new Astro blog.
image: ./cover.jpg
tags: [Foo, Bar]
category: Front-end
draft: false
---
&lt;/code&gt;&lt;/pre&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Attribute&lt;/th&gt;
&lt;th&gt;Description&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;title&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;The title of the post.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;published&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;The date the post was published.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;description&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;A short description of the post. Displayed on index page.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;image&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;The cover image path of the post.&amp;lt;br/&amp;gt;1. Start with &lt;code&gt;http://&lt;/code&gt; or &lt;code&gt;https://&lt;/code&gt;: Use web image&amp;lt;br/&amp;gt;2. Start with &lt;code&gt;/&lt;/code&gt;: For image in &lt;code&gt;public&lt;/code&gt; dir&amp;lt;br/&amp;gt;3. With none of the prefixes: Relative to the markdown file&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;tags&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;The tags of the post.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;category&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;The category of the post.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;draft&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;If this post is still a draft, which won&apos;t be displayed.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h2&gt;Where to Place the Post Files&lt;/h2&gt;
&lt;p&gt;Your post files should be placed in &lt;code&gt;src/content/posts/&lt;/code&gt; directory. You can also create sub-directories to better organize your posts and assets.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;src/content/posts/
├── post-1.md
└── post-2/
    ├── cover.png
    └── index.md
&lt;/code&gt;&lt;/pre&gt;
</content:encoded></item><item><title>Markdown Example</title><link>https://blog.quiyu.top/posts/markdown/</link><guid isPermaLink="true">https://blog.quiyu.top/posts/markdown/</guid><description>A simple example of a Markdown blog post.</description><pubDate>Sun, 01 Oct 2023 00:00:00 GMT</pubDate><content:encoded>&lt;h1&gt;An h1 header&lt;/h1&gt;
&lt;p&gt;Paragraphs are separated by a blank line.&lt;/p&gt;
&lt;p&gt;2nd paragraph. &lt;em&gt;Italic&lt;/em&gt;, &lt;strong&gt;bold&lt;/strong&gt;, and &lt;code&gt;monospace&lt;/code&gt;. Itemized lists
look like:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;this one&lt;/li&gt;
&lt;li&gt;that one&lt;/li&gt;
&lt;li&gt;the other one&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Note that --- not considering the asterisk --- the actual text
content starts at 4-columns in.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Block quotes are
written like so.&lt;/p&gt;
&lt;p&gt;They can span multiple paragraphs,
if you like.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Use 3 dashes for an em-dash. Use 2 dashes for ranges (ex., &quot;it&apos;s all
in chapters 12--14&quot;). Three dots ... will be converted to an ellipsis.
Unicode is supported. ☺&lt;/p&gt;
&lt;h2&gt;An h2 header&lt;/h2&gt;
&lt;p&gt;Here&apos;s a numbered list:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;first item&lt;/li&gt;
&lt;li&gt;second item&lt;/li&gt;
&lt;li&gt;third item&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Note again how the actual text starts at 4 columns in (4 characters
from the left side). Here&apos;s a code sample:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;# Let me re-iterate ...
for i in 1 .. 10 { do-something(i) }
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;As you probably guessed, indented 4 spaces. By the way, instead of
indenting the block, you can use delimited blocks, if you like:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;define foobar() {
    print &quot;Welcome to flavor country!&quot;;
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;(which makes copying &amp;amp; pasting easier). You can optionally mark the
delimited block for Pandoc to syntax highlight it:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;import time
# Quick, count to ten!
for i in range(10):
    # (but not *too* quick)
    time.sleep(0.5)
    print i
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;An h3 header&lt;/h3&gt;
&lt;p&gt;Now a nested list:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;First, get these ingredients:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;carrots&lt;/li&gt;
&lt;li&gt;celery&lt;/li&gt;
&lt;li&gt;lentils&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Boil some water.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Dump everything in the pot and follow
this algorithm:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt; find wooden spoon
 uncover pot
 stir
 cover pot
 balance wooden spoon precariously on pot handle
 wait 10 minutes
 goto first step (or shut off burner when done)
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Do not bump wooden spoon or it will fall.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Notice again how text always lines up on 4-space indents (including
that last line which continues item 3 above).&lt;/p&gt;
&lt;p&gt;Here&apos;s a link to &lt;a href=&quot;http://foo.bar&quot;&gt;a website&lt;/a&gt;, to a &lt;a href=&quot;local-doc.html&quot;&gt;local
doc&lt;/a&gt;, and to a &lt;a href=&quot;#an-h2-header&quot;&gt;section heading in the current
doc&lt;/a&gt;. Here&apos;s a footnote [^1].&lt;/p&gt;
&lt;p&gt;[^1]: Footnote text goes here.&lt;/p&gt;
&lt;p&gt;Tables can look like this:&lt;/p&gt;
&lt;p&gt;size material color&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;9 leather brown
10 hemp canvas natural
11 glass transparent&lt;/p&gt;
&lt;p&gt;Table: Shoes, their sizes, and what they&apos;re made of&lt;/p&gt;
&lt;p&gt;(The above is the caption for the table.) Pandoc also supports
multi-line tables:&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;keyword text&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;red Sunsets, apples, and
other red or reddish
things.&lt;/p&gt;
&lt;p&gt;green Leaves, grass, frogs
and other things it&apos;s
not easy being.&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;A horizontal rule follows.&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;Here&apos;s a definition list:&lt;/p&gt;
&lt;p&gt;apples
: Good for making applesauce.
oranges
: Citrus!
tomatoes
: There&apos;s no &quot;e&quot; in tomatoe.&lt;/p&gt;
&lt;p&gt;Again, text is indented 4 spaces. (Put a blank line between each
term/definition pair to spread things out more.)&lt;/p&gt;
&lt;p&gt;Here&apos;s a &quot;line block&quot;:&lt;/p&gt;
&lt;p&gt;| Line one
| Line too
| Line tree&lt;/p&gt;
&lt;p&gt;and images can be specified like so:&lt;/p&gt;
&lt;p&gt;Inline math equations go in like so: $\omega = d\phi / dt$. Display
math should get its own line and be put in in double-dollarsigns:&lt;/p&gt;
&lt;p&gt;$$I = \int \rho R^{2} dV$$&lt;/p&gt;
&lt;p&gt;$$
\begin{equation*}
\pi
=3.1415926535
;8979323846;2643383279;5028841971;6939937510;5820974944
;5923078164;0628620899;8628034825;3421170679;\ldots
\end{equation*}
$$&lt;/p&gt;
&lt;p&gt;And note that you can backslash-escape any punctuation characters
which you wish to be displayed literally, ex.: `foo`, *bar*, etc.&lt;/p&gt;
</content:encoded></item><item><title>Include Video in the Posts</title><link>https://blog.quiyu.top/posts/video/</link><guid isPermaLink="true">https://blog.quiyu.top/posts/video/</guid><description>This post demonstrates how to include embedded video in a blog post.</description><pubDate>Tue, 01 Aug 2023 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Just copy the embed code from YouTube or other platforms, and paste it in the markdown file.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;---
title: Include Video in the Post
published: 2023-10-19
// ...
---

&amp;lt;iframe width=&quot;100%&quot; height=&quot;468&quot; src=&quot;https://www.youtube.com/embed/5gIf0_xpFPI?si=N1WTorLKL0uwLsU_&quot; title=&quot;YouTube video player&quot; frameborder=&quot;0&quot; allowfullscreen&amp;gt;&amp;lt;/iframe&amp;gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;YouTube&lt;/h2&gt;
&lt;p&gt;&amp;lt;iframe width=&quot;100%&quot; height=&quot;468&quot; src=&quot;https://www.youtube.com/embed/5gIf0_xpFPI?si=N1WTorLKL0uwLsU_&quot; title=&quot;YouTube video player&quot; frameborder=&quot;0&quot; allow=&quot;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share&quot; allowfullscreen&amp;gt;&amp;lt;/iframe&amp;gt;&lt;/p&gt;
&lt;h2&gt;Bilibili&lt;/h2&gt;
&lt;p&gt;&amp;lt;iframe width=&quot;100%&quot; height=&quot;468&quot; src=&quot;//player.bilibili.com/player.html?bvid=BV1fK4y1s7Qf&amp;amp;p=1&quot; scrolling=&quot;no&quot; border=&quot;0&quot; frameborder=&quot;no&quot; framespacing=&quot;0&quot; allowfullscreen=&quot;true&quot;&amp;gt; &amp;lt;/iframe&amp;gt;&lt;/p&gt;
</content:encoded></item></channel></rss>