<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
xmlns:content="http://purl.org/rss/1.0/modules/content/"
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
xmlns:atom="http://www.w3.org/2005/Atom"
xmlns:wfw="http://wellformedweb.org/CommentAPI/">
<channel>
<title>一世繁华 - 杂物间</title>
<link>https://blog.hantaotao.top/category/utility/</link>
<atom:link href="https://blog.hantaotao.top/feed/category/utility/" rel="self" type="application/rss+xml" />
<language>zh-CN</language>
<description></description>
<lastBuildDate>Mon, 12 Jan 2026 23:37:00 +0800</lastBuildDate>
<pubDate>Mon, 12 Jan 2026 23:37:00 +0800</pubDate>
<item>
<title>观影笔记：《Pluto: 冥王》</title>
<link>https://blog.hantaotao.top/archives/194/</link>
<guid>https://blog.hantaotao.top/archives/194/</guid>
<pubDate>Mon, 12 Jan 2026 23:37:00 +0800</pubDate>
<dc:creator>小韩</dc:creator>
<description><![CDATA[观看地址：https://www.bilibili.com/bangumi/play/ss107627?t=3748&amp;spm_id_from=333.1007.top_right_bar...]]></description>
<content:encoded xml:lang="zh-CN"><![CDATA[
<p>观看地址：</p><pre><code>https://www.bilibili.com/bangumi/play/ss107627?t=3748&amp;spm_id_from=333.1007.top_right_bar_window_history.content.click</code></pre><p><br><br>这个故事的世界观发生在一个科技极度发达的未来，人工智能已经诞生出灵魂，机器人的人权已经受到法律保护，且被绝大多数人所接受。同时这个故事的世界观也是《铁臂阿童木》的衍生剧。<br>机器人被设定成不可说谎，不可伤害人类，但是诞生了灵魂的机器人会逐渐成长，会感受到爱、感受到快乐、感受到悲伤、感受到痛苦以及感受到憎恶。憎恶在剧中是一个很重要的概念，当机器人的憎恶积累到了顶点，不再可控时，机器人就能突破程序的限制，由缺陷变得完美。当然，其他乐观的情绪感情兴许也可以帮助机器人突破程序限制，只不过负面的程序会更加容易。<br><br><br>不过，机器人在憎恶的引导下突破了程序的限制变得完整之后呢，憎恶之中只会诞生憎恶，憎恶的尽头是虚无。即便是一个充满着憎恶的人在生活之中，也可能会感受到他人的温暖，会和世界，会和自己和解，会放下憎恶，重新拥抱生活。机器人的记忆就像硬盘里的档案一样，只要不删除，就会一直存在，且清晰如当日，机器人也会遗忘吗？也许会慢慢变得会吧。<br><br></p><hr><p><br><br>题外话，我们总是在说国漫崛起，国漫的发展不仅要从画面、动作发力，国漫崛起也不可缺优秀的剧作人，有时作品的精神内核才是关键。</p>
]]></content:encoded>
<slash:comments>4</slash:comments>
<comments>https://blog.hantaotao.top/archives/194/#comments</comments>
<wfw:commentRss>https://blog.hantaotao.top/feed/category/utility/</wfw:commentRss>
</item>
<item>
<title>Ubuntu上Fcitx5框架输入法折腾</title>
<link>https://blog.hantaotao.top/archives/193/</link>
<guid>https://blog.hantaotao.top/archives/193/</guid>
<pubDate>Sun, 11 Jan 2026 15:31:22 +0800</pubDate>
<dc:creator>小韩</dc:creator>
<description><![CDATA[本文参考以下链接https://zhuanlan.zhihu.com/p/1891416207569166711https://zhuanlan.zhihu.com/p/508797663ubu...]]></description>
<content:encoded xml:lang="zh-CN"><![CDATA[
<p>本文参考以下链接</p><pre><code>
https://zhuanlan.zhihu.com/p/1891416207569166711
https://zhuanlan.zhihu.com/p/508797663
</code></pre><p>ubuntu自带的输入法着实有点难用，经过一番调教，终于是有一个还算能用的结果。</p><p>1、首先卸载旧的Fcitx框架</p><pre><code>sudo apt-get remove --purge fcitx
sudo apt-get autoremove
</code></pre><p>2、安装Fcitx5</p><pre><code>sudo apt install fcitx5 \
fcitx5-chinese-addons \
fcitx5-frontend-gtk4 fcitx5-frontend-gtk3 fcitx5-frontend-gtk2 \
fcitx5-frontend-qt5
</code></pre><p>3、将Fcitx5设置为默认输入法</p><p>键入</p><pre><code>im-config</code></pre><p>根据窗口提示，将首选输入法设置为Fcitx5</p><p>4、打开Fcitx5 Configration，添加拼音输入法并进行配置<br><img src="http://image.hantaotao.top/image/2026/01-06/Fcitx5/Pastedimage20260111151052-min.jpg" alt="" title=""></p><ul><li>首先添加拼音；</li><li>其次将拼音挪到第一位次；</li><li>最后，选择拼音输入法，选择中间那个尺寸，进行拼音输入法的配置页面。<br><img src="http://image.hantaotao.top/image/2026/01-06/Fcitx5/Pastedimage20260111151300-min.jpg" alt="" title=""></li></ul><p>在这个页面，可以进行候选词个数设置，控制快捷键来切换候选词页面，例如“【“和”】”，其次还能选择在线词库，目前支持添加搜狗的词库。<br><img src="http://image.hantaotao.top/image/2026/01-06/Fcitx5/Pastedimage20260111151713-min.jpg" alt="" title=""><br>最后，进行UI字体大小的设置，默认的有点小。</p><p>5、环境变量设置<br>在/etc/environment文件中，添加以下内容：</p><pre><code>GTK_IM_MODULE=fcitx
QT_IM_MODULE=fcitx
XMODIFIERS=@im=fcitx</code></pre><p>6、设置开机自启动</p><ul><li><p>安装gnome-tweaks</p><pre><code>sudo apt install gnome-tweaks</code></pre></li><li>在应用启动界面，搜索Tweaks，在“开机启动程序“里，添加Fcitx5。</li></ul><p>以上。</p>
]]></content:encoded>
<slash:comments>2</slash:comments>
<comments>https://blog.hantaotao.top/archives/193/#comments</comments>
<wfw:commentRss>https://blog.hantaotao.top/feed/category/utility/</wfw:commentRss>
</item>
<item>
<title>Obsidian自用主题分享</title>
<link>https://blog.hantaotao.top/archives/181/</link>
<guid>https://blog.hantaotao.top/archives/181/</guid>
<pubDate>Sun, 03 Aug 2025 22:55:00 +0800</pubDate>
<dc:creator>小韩</dc:creator>
<description><![CDATA[0 前言使用了obsidian挺长时间了，在主题商店一直没有找到一款主题能够满足自己的需求，故借助于豆包，魔改了一个主题。分享出来。主要的特点有：（1）一级目录居中，其余层级靠左，图片居中；（2...]]></description>
<content:encoded xml:lang="zh-CN"><![CDATA[
<h1>0 前言</h1><p>使用了obsidian挺长时间了，在主题商店一直没有找到一款主题能够满足自己的需求，故借助于豆包，魔改了一个主题。分享出来。<br>主要的特点有：<br>（1）一级目录居中，其余层级靠左，图片居中；<br>（2）导航栏文件夹名字黑色加粗，文件名字不加粗，当前选中的文件会突出显示。<br>（3）导航栏文字缩进，字体，颜色等都可以方便调整，主要目的是为了自己看着舒服。<br><img src="http://image.hantaotao.top/image/2025/08/obsidianTheme/%E5%BF%AB%E7%85%A71-min.png" alt="" title=""></p><h1>1 使用教程</h1><p>（1）下载<a href="https://blog.hantaotao.top/go/aHR0cHM6Ly9naXRodWIuY29tL0hhbi1UYW8tR2l0L29ic2lkaWFuVGhlbWU" pjax="no" target="_blank">样式文件</a>，拖放到CSS代码片段所存储的文件中。<br><img src="http://image.hantaotao.top/image/2025/08/obsidianTheme/%E5%BF%AB%E7%85%A72-min.png" alt="" title=""><br>（2）在CSS代码片段中打开对应开关即可。<br>（3）如何想要自定义颜色、缩进等，可以直接编辑css文件。</p><hr><p>如果访问Github不方便，也可自建.css文档，复制以下代码进去即可。</p><pre><code class="lang-css">/* 浅色模式 */
.theme-light {
  /* 所有标题颜色改为黑色 */
  --h1-color: #000000;
  --h2-color: #000000;
  --h3-color: #000000;
  --h4-color: #000000;
  --h5-color: #000000;
  --h6-color: #000000;

  /* list 相关样式 */
  --list-spacing: 0.3rem;
  --list-marker-color: #696969;
  /* 表格颜色交替 */
  --table-row-alt-background: #f8f8f8;
  /* 代码块颜色 - 增强对比度 */
  --code-normal: #333333;
  --code-background: #f0f0f0;
  /* 链接颜色 */
  --link-external-color: #4183c4;
  /* 导航栏及大纲样式逻辑 */
  --folder-weight: 600; /* 各级标题（对应文件夹）加粗 */
  --folder-color: #000000; /* 标题默认黑色 */
  --file-weight: 500; /* 普通内容不加粗（大纲中主要针对标题） */
  --file-color: #555555;
  --current-file-weight: 700; /* 当前激活标题额外加粗 */
  --current-file-color: #165DFF; /* 当前激活标题蓝色 */
  --nav-active-bg: #ffff4d; /* 当前项背景亮黄色 */
  --nav-active-color: #165DFF;
  /* 导航栏图标颜色 */
  --nav-collapse-icon-color: #444;
  --nav-collapse-icon-color-collapsed: #222;
  /* 引用 */
  --blockquote-border-thickness: 4px;
  --blockquote-border-color: rgb(223, 226, 229);
  /* 选中文字的背景色 */
  --text-selection: #7CA4EB;
  /* 亮度调整 */
  filter: brightness(95%);
  /* inline 代码块 - 增强显示 */
  --inline-code-bg: #e8e8e8;
  --inline-code-border: #d0d0d0;
}

/* 深色模式下的调整 */
.theme-dark {
  /* 所有标题颜色改为白色 */
  --h1-color: #ffffff;
  --h2-color: #ffffff;
  --h3-color: #ffffff;
  --h4-color: #ffffff;
  --h5-color: #ffffff;
  --h6-color: #ffffff;

  /* list 相关样式 */
  --list-spacing: 0.3rem;
  --list-marker-color: #E0FFFF;
  /* 表格颜色交替 */
  --table-row-alt-background: #363636;
  /* 代码块颜色 - 增强对比度 */
  --code-normal: #e0e0e0;
  --code-background: #2d2d2d;
  /* 链接颜色 */
  --link-external-color: #6ccda4;
  /* 导航栏及大纲样式逻辑 */
  --folder-weight: 600; /* 各级标题加粗 */
  --folder-color: #ffffff; /* 标题默认白色 */
  --file-weight: 500; /* 普通内容不加粗 */
  --file-color: #bbbbbb;
  --current-file-weight: 700; /* 当前激活标题额外加粗 */
  --current-file-color: #7CB3FF; /* 当前激活标题蓝色 */
  --nav-active-bg: #ffff4d; /* 当前项背景亮黄色 */
  --nav-active-color: #7CB3FF;
  /* 导航栏图标颜色 */
  --nav-collapse-icon-color: #aaa;
  --nav-collapse-icon-color-collapsed: #ddd;
  /* 引用 */
  --blockquote-border-thickness: 4px;
  --blockquote-border-color: #444;
  /* 选中文字的背景色 */
  --text-selection: #7CA4EB;
  /* 亮度调整 */
  filter: brightness(80%);
  /* inline 代码块 - 增强显示 */
  --inline-code-bg: #3d3d3d;
  --inline-code-border: #4a4a4a;
}

/* 统一设置 inline 代码块样式 */
span.cm-inline-code {
  background-color: var(--inline-code-bg) !important;
  border: 1px solid var(--inline-code-border) !important;
  padding: 0 4px !important;
  border-radius: 3px !important;
}

/* quiet-outline */
.quiet-outline .n-tree-node-content {
  font-weight: 500;
}

/* 标题基础样式（导航栏逻辑同步：所有标题加粗） */
.HyperMD-header {
  padding-bottom: 0.4rem !important;
  font-weight: var(--folder-weight) !important; /* 编辑模式标题加粗 */
}

/* 一级标题额外增加加粗效果 */
.HyperMD-header-1, .inline-title[data-level=&#039;1&#039;], .HyperMD-list-line .cm-header-1,
h1, .markdown-rendered h1 {
  font-weight: 700 !important;
}

/* 阅读模式大纲（标题层级）同步导航栏逻辑 */
/* 1. 所有标题加粗（对应文件夹加粗） */
.markdown-rendered h1,
.markdown-rendered h2,
.markdown-rendered h3,
.markdown-rendered h4,
.markdown-rendered h5,
.markdown-rendered h6 {
  font-weight: var(--folder-weight) !important;
  color: var(--folder-color) !important;
}

/* 2. 当前激活的标题（对应导航栏当前选中项）突出显示 */
.markdown-rendered h1.is-active,
.markdown-rendered h2.is-active,
.markdown-rendered h3.is-active,
.markdown-rendered h4.is-active,
.markdown-rendered h5.is-active,
.markdown-rendered h6.is-active {
  font-weight: var(--current-file-weight) !important;
  color: var(--current-file-color) !important;
  background-color: var(--nav-active-bg) !important;
  padding-left: 0.5rem !important;
  padding-right: 0.5rem !important;
  border-radius: 3px !important;
}

/* 3. 大纲面板（目录）同步样式 */
.outline-item {
  font-weight: var(--folder-weight) !important; /* 大纲目录项加粗 */
}

.outline-item.is-active {
  font-weight: var(--current-file-weight) !important;
  color: var(--current-file-color) !important;
  background-color: var(--nav-active-bg) !important;
  border-radius: 3px !important;
}

/* 引用 */
.HyperMD-quote {
  color: #666;
  opacity: 0.9;
}

/* 隐藏链接图片 */
.external-link {
  padding-right: 0;
  background-size: 0;
}

/* 代码块样式增强 - 移除行间距 */
.HyperMD-codeblock {
  tab-size: 4;
  padding: 1rem !important;
  border-radius: 4px !important;
  font-weight: 500 !important;
  line-height: 1.3 !important;
  margin-bottom: 1rem !important;
}

/* 确保代码块内每行之间没有额外间距 */
.cm-line.HyperMD-codeblock {
  padding-top: 0 !important;
  padding-bottom: 0 !important;
  margin-top: 0 !important;
  margin-bottom: 0 !important;
  min-height: auto !important;
}

/* 代码块文字颜色 */
.cm-s-obsidian .cm-keyword { color: #0066cc !important; }
.cm-s-obsidian .cm-def { color: #cc0000 !important; }
.cm-s-obsidian .cm-variable { color: var(--code-normal) !important; }
.cm-s-obsidian .cm-string { color: #008000 !important; }
.cm-s-obsidian .cm-comment { color: #6a9955 !important; opacity: 0.9; }

/* list 行首添加空白 */
.HyperMD-list-line &gt; .cm-formatting-list + span:before {
  content: &#039;  &#039;;
}

/* list 相关样式 */
.markdown-source-view.mod-cm6 :is(.HyperMD-list-line-1, .HyperMD-list-line-5) .list-bullet:after {
  height: 5.5px;
  width: 5.5px;
  border-radius: 50%;
  background-color: var(--list-marker-color);
}

.markdown-source-view.mod-cm6 :is(.HyperMD-list-line-2, .HyperMD-list-line-6) .list-bullet:after {
  height: 4px;
  width: 4px;
  background-color: Transparent;
  border-color: var(--list-marker-color);
  border-style: solid;
  border-radius: 50%;
  border-width: 1.5px;
}

.markdown-source-view.mod-cm6 :is(.HyperMD-list-line-3, .HyperMD-list-line-7) .list-bullet:after {
  height: 5.5px;
  width: 5.5px;
  border-radius: 0%;
  background-color: var(--list-marker-color);
}

.markdown-source-view.mod-cm6 :is(.HyperMD-list-line-4, .HyperMD-list-line-8) .list-bullet:after {
  height: 4px;
  width: 4px;
  background-color: Transparent;
  border-color: var(--list-marker-color);
  border-style: solid;
  border-radius: 0%;
  border-width: 1.5px;
}

/* 图片居中及说明文字 */
img {
  display: block !important;
  margin-left: auto !important;
  margin-right: auto !important;
}

.markdown-source-view.mod-cm6 .cm-content &gt; * {
  margin: auto auto !important;
}

.image-embed[alt]:after {
  content: attr(alt);
  display: block;
  margin: 0.2rem 1rem 1rem 1rem;
  font-size: 90%;
  line-height: 1.4;
  color: var(--text-faint);
  text-align: center;
}

/* 编辑模式：标题样式（保持层级感） */
/* 一级标题居中 */
.HyperMD-header-1, .inline-title[data-level=&#039;1&#039;], .HyperMD-list-line .cm-header-1 {
  font-variant: var(--h1-variant);
  letter-spacing: -0.015em;
  line-height: var(--h1-line-height);
  font-size: var(--h1-size);
  color: var(--h1-color);
  text-align: center;
  font-style: var(--h1-style);
  font-family: var(--h1-font);
}

/* 二级及以下标题靠左 */
.HyperMD-header-2, .inline-title[data-level=&#039;2&#039;], .HyperMD-list-line .cm-header-2 {
  font-size: 1.5rem !important;
}

.HyperMD-header-3, .inline-title[data-level=&#039;3&#039;], .HyperMD-list-line .cm-header-3 {
  font-size: 1.3rem !important;
}

.HyperMD-header-4, .inline-title[data-level=&#039;4&#039;], .HyperMD-list-line .cm-header-4 {
  font-size: 1.1rem !important;
}

.HyperMD-header-5, .inline-title[data-level=&#039;5&#039;], .HyperMD-list-line .cm-header-5 {
  font-size: 1rem !important;
}

.HyperMD-header-6, .inline-title[data-level=&#039;6&#039;], .HyperMD-list-line .cm-header-6 {
  font-size: 0.9rem !important;
}

/* 阅读模式：标题样式（保持层级感） */
/* 一级标题居中 */
h1, .markdown-rendered h1 {
  font-size: 2rem !important;
  text-align: center;
  margin-block-start: 1.5rem !important;
  margin-block-end: 1rem !important;
}

/* 二级及以下标题靠左 */
h2, .markdown-rendered h2 {
  font-size: 1.5rem !important;
  margin-block-start: 1.2rem !important;
  margin-block-end: 0.8rem !important;
}

h3, .markdown-rendered h3 {
  font-size: 1.3rem !important;
  margin-block-start: 1rem !important;
  margin-block-end: 0.6rem !important;
}

h4, .markdown-rendered h4 {
  font-size: 1.1rem !important;
  margin-block-start: 0.8rem !important;
  margin-block-end: 0.5rem !important;
}

h5, .markdown-rendered h5 {
  font-size: 1rem !important;
  margin-block-start: 0.7rem !important;
  margin-block-end: 0.4rem !important;
}

h6, .markdown-rendered h6 {
  font-size: 0.9rem !important;
  margin-block-start: 0.6rem !important;
  margin-block-end: 0.3rem !important;
}

/* 导航栏核心样式 */
/* 清除所有默认缩进和边距 */
.nav-folder-title, .nav-file-title,
.n-tree-node, .n-tree-children {
  padding-left: 0 !important;
  padding-right: 0 !important;
  margin-left: 0 !important;
  margin-right: 0 !important;
}

/* 导航项基础样式（统一左对齐，通过固定缩进保证同级别对齐） */
/* 一级导航（最外层）：文件夹和文件统一缩进 */
.nav-folder, .nav-file {
  padding-left: 3px !important; /* 基础缩进，确保图标+文字对齐 */
  transition: all 0.2s ease !important;
}

/* 二级导航（一级文件夹的子项）：统一缩进 */
.nav-folder &gt; .nav-folder-children .nav-folder,
.nav-folder &gt; .nav-folder-children .nav-file {
  padding-left: 3px !important; 
}

/* 三级导航：统一缩进 */
.nav-folder &gt; .nav-folder-children .nav-folder &gt; .nav-folder-children .nav-folder,
.nav-folder &gt; .nav-folder-children .nav-folder &gt; .nav-folder-children .nav-file {
  padding-left: 3px !important; 
}

/* 四级导航：统一缩进 */
.nav-folder &gt; .nav-folder-children .nav-folder &gt; .nav-folder-children .nav-folder &gt; .nav-folder-children .nav-folder,
.nav-folder &gt; .nav-folder-children .nav-folder &gt; .nav-folder-children .nav-folder &gt; .nav-folder-children .nav-file {
  padding-left: 3px !important; 
}

/* 1. 所有文件夹加粗显示 */
.nav-folder .nav-folder-title-content {
  font-weight: var(--folder-weight) !important;
  color: var(--folder-color) !important;
}

/* 2. 普通文件不加粗 */
.nav-file .nav-file-title-content {
  font-weight: var(--file-weight) !important;
  color: var(--file-color) !important;
}

/* 3. 当前选中的文件（含文件夹）加粗为蓝色 */
.nav-file-title.is-active .nav-file-title-content,
.nav-folder-title.is-active .nav-folder-title-content {
  font-weight: var(--current-file-weight) !important;
  color: var(--current-file-color) !important;
}

/* 层级字号差异 */
.nav-folder-title-content, .nav-file-title-content {
  font-size: 100% !important;
}

.nav-folder &gt; .nav-folder-children .nav-folder-title-content,
.nav-folder &gt; .nav-folder-children .nav-file-title-content {
  font-size: 99% !important;
}

.nav-folder &gt; .nav-folder-children .nav-folder &gt; .nav-folder-children .nav-folder-title-content,
.nav-folder &gt; .nav-folder-children .nav-folder &gt; .nav-folder-children .nav-file-title-content {
  font-size: 99% !important;
}

.nav-folder &gt; .nav-folder-children .nav-folder &gt; .nav-folder-children .nav-folder &gt; .nav-folder-children .nav-folder-title-content,
.nav-folder &gt; .nav-folder-children .nav-folder &gt; .nav-folder-children .nav-folder &gt; .nav-folder-children .nav-file-title-content {
  font-size: 99% !important;
}

/* 当前项背景框样式 */
.nav-file-title.is-active,
.nav-folder-title.is-active {
  background-color: var(--nav-active-bg) !important;
  border-radius: 3px !important;
  padding-left: 0px !important;
}

/* 导航栏图标样式 */
.nav-folder .nav-collapse-icon {
  color: var(--folder-color) !important;
  opacity: 0.9 !important;
}

.nav-file .nav-collapse-icon {
  color: var(--file-color) !important;
  opacity: 0.8 !important;
}

/* 当前项图标同步为蓝色 */
.nav-file-title.is-active .nav-collapse-icon,
.nav-folder-title.is-active .nav-collapse-icon {
  color: var(--current-file-color) !important;
  opacity: 1 !important;
}

/* 导航栏悬停效果 */
.nav-folder-title:hover, .nav-file-title:hover {
  background-color: rgba(0, 0, 0, 0.05) !important;
  border-radius: 3px !important;
}
.theme-dark .nav-folder-title:hover, 
.theme-dark .nav-file-title:hover {
  background-color: rgba(255, 255, 255, 0.05) !important;
}
</code></pre>
]]></content:encoded>
<slash:comments>10</slash:comments>
<comments>https://blog.hantaotao.top/archives/181/#comments</comments>
<wfw:commentRss>https://blog.hantaotao.top/feed/category/utility/</wfw:commentRss>
</item>
<item>
<title>找到错误的那个内存条</title>
<link>https://blog.hantaotao.top/archives/155/</link>
<guid>https://blog.hantaotao.top/archives/155/</guid>
<pubDate>Wed, 11 Dec 2024 09:04:00 +0800</pubDate>
<dc:creator>小韩</dc:creator>
<description><![CDATA[1 前言主板上内存插槽比较多，当安装内存条未全部识别时，进行排查需要一些技巧。2 问题排查2.1 主板原理图准备找到对应主板的原理图，以超微H11dsi的主板为例，从图中可以看到，每一个内存插槽...]]></description>
<content:encoded xml:lang="zh-CN"><![CDATA[
<h1>1 前言</h1><p>主板上内存插槽比较多，当安装内存条未全部识别时，进行排查需要一些技巧。</p><h1>2 问题排查</h1><h2>2.1 主板原理图准备</h2><p>找到对应主板的原理图，以超微H11dsi的主板为例，从图中可以看到，每一个内存插槽都是有编号的，与自己安装的内存插槽进行比对，以确认编号。<br><img src="http://image.hantaotao.top/image/2024/%E6%9D%82%E4%B8%83%E6%9D%82%E5%85%AB/2024/%E5%86%85%E5%AD%98%E6%9D%A1%E8%AF%86%E5%88%AB/241210215324-min.png" alt="" title=""></p><h2>2.2 工具准备</h2><p>使用<code>AIDA64</code>，或直接使用<code>图吧工具箱</code>，里面也有AIDA64的工具。<br>计算机-DMI-内存设备<br><img src="http://image.hantaotao.top/image/2024/%E6%9D%82%E4%B8%83%E6%9D%82%E5%85%AB/2024/%E5%86%85%E5%AD%98%E6%9D%A1%E8%AF%86%E5%88%AB/241210215727-min.png" alt="" title=""><br>按照2.1所得到的安装内存编号进行比对以确认哪一个内存出问题了，之后关机，下电，橡皮擦一下金手指来尝试解决即可。</p><p>其实在windows自带的任务管理器的内存显示页也有内存插槽显示，但是不全。<br><img src="http://image.hantaotao.top/image/2024/%E6%9D%82%E4%B8%83%E6%9D%82%E5%85%AB/2024/%E5%86%85%E5%AD%98%E6%9D%A1%E8%AF%86%E5%88%AB/241210220534-min.png" alt="" title=""></p><h1>3 快乐玩耍</h1><p>DONE</p>
]]></content:encoded>
<slash:comments>4</slash:comments>
<comments>https://blog.hantaotao.top/archives/155/#comments</comments>
<wfw:commentRss>https://blog.hantaotao.top/feed/category/utility/</wfw:commentRss>
</item>
<item>
<title>个人密码管理工具（Vaultwarden）</title>
<link>https://blog.hantaotao.top/archives/153/</link>
<guid>https://blog.hantaotao.top/archives/153/</guid>
<pubDate>Mon, 09 Dec 2024 18:05:00 +0800</pubDate>
<dc:creator>小韩</dc:creator>
<description><![CDATA[1. 镜像准备1.1 说明主要解决密码安全储存与多端读写问题，借助NAS实现，通过docker容器构建密码存储服务器，定期备份。1.2 镜像下载极空间里docker仓库的docker hub因为...]]></description>
<content:encoded xml:lang="zh-CN"><![CDATA[
<h1>1. 镜像准备</h1><h2>1.1 说明</h2><p>主要解决密码安全储存与多端读写问题，借助NAS实现，通过docker容器构建密码存储服务器，定期备份。</p><h2>1.2 镜像下载</h2><p>极空间里docker仓库的docker hub因为某些原因处于不可用状态，因而无论是检索还是拉取都会报网络错误。民间大神解决此问题的方法五花八门，例如换镜像源等。<br>我的想法是既然NAS端的网络问题不太好解决，电脑端网络比较畅通，那就采取本地导入镜像的方式。</p><ul><li>安装电脑端安装<a href="https://blog.hantaotao.top/go/W0RvY2tlcjo" pjax="no" target="_blank" title="Accelerated Container Application Development](https://www.docker.com/">docker desktop</a>)软件；</li><li>不要登录账户，直接使用；</li><li>之后就可以检索镜像进行下载了。</li><li>由于我的NAS处理器架构是arm64的，而docke desktop默认下载的架构是amd64的，因而需要下载指定架构的镜像。</li><li><p>-开启Docker CLId 的试验特性，docker desktop 的Preferences=&gt;&gt;Docker Engine -experimental 的值设置成 true</p><pre><code>{
&quot;registry-mirrors&quot;: [
  &quot;https://registry.cn-hangzhou.aliyuncs.com&quot;
],
&quot;insecure-registries&quot;: [
  &quot;0.0.0.0/0&quot;,
  &quot;dockerhub.kubesphere.local:443&quot;
],
&quot;debug&quot;: true,
&quot;experimental&quot;: true
}
</code></pre></li><li><p>在拉取镜像前指定架构，例如我需要拉取<code>vaultwarden/server</code>镜像，则使用如下命令，其中<code>--platform=arm64</code>即指定架构。</p><pre><code>docker pull --platform=arm64 vaultwarden/server</code></pre></li><li><p>进行镜像的导出。</p><pre><code>docker images   // 显示已下载镜像
docker save -o vaultwarder.tar vaultwarden/server:latest   //导出名字为vaultwarden/server:latest的镜像，并命名为vaultwarder.tar，极空间仅支持有tag信息的tar文件导入</code></pre></li><li>导出的文件在文件夹<code>C:\Users\Admin</code>中。</li><li><p>之后就可以将此文件导入到极空间的docker中了。</p><h1>2. 镜像安装</h1><h2>2.1 基本设置</h2><p>Vaultwarden需要的系统资源实在是太小，因而cpu为1，内存1024足够。</p></li></ul><h2>2.2 文件夹路径</h2><p>这里推荐使用真实路径，安装在固态里，加快读写速度，延长机械硬盘寿命。</p><p><img src="http://image.hantaotao.top/image/2024/杂七杂八/2024/密码管理/38-min.png" alt="38-min.png" title="38-min.png"></p><h2>2.3 端口映射</h2><p>主要映射80及3012端口（80是登录端口，3012是什么我就不知道了，参考的别人的教程，猜测是为了便于做域名访问的，如果不需要可以删除）。</p><p><img src="http://image.hantaotao.top/image/2024/杂七杂八/2024/密码管理/42-min.png" alt="42-min.png" title="42-min.png"></p><h2>2.4 环境配置</h2><p>设置SIGNUPS_ALLOWED 、 TZ 即可，设置如下：  <br>SIGNUPS_ALLOWED 控制注册是否开放，true开放注册，false关闭注册  <br> TZ 控制时区，默认时区是utc，TZ设置为 Asia/Shanghai 可以修改时区上海</p><p><img src="http://image.hantaotao.top/image/2024/杂七杂八/2024/密码管理/35-min.png" alt="35-min.png" title="35-min.png"></p><h2>2.5 登录使用</h2><ul><li>我不需要域名访问，所以就不设置域名反代理了。</li><li>使用<code>IP:端口</code>的方式访问，先注册，再登录，最后使用！</li></ul><p><img src="http://image.hantaotao.top/image/2024/杂七杂八/2024/密码管理/26-min.png" alt="26-min.png" title="26-min.png"></p><h2>2.6 HTTPS访问</h2><p>（20241210更新）突然发现极空间系统更新后，自带了一个花生壳的应用，打开后登录账户可以白嫖一个内网穿透的服务（包含域名，会自动设置SSL加密）<br><img src="http://image.hantaotao.top/image/2024/杂七杂八/2024/密码管理/45055-min.png" alt="45055-min.png" title="45055-min.png"><br>搞完之后就可以直接用域名访问了，需要注意的是白嫖的服务，带宽只有1Mbps，月流量是1G，不过对于Vaultwarden这种存密码，只传输字节的服务，足够用了！</p><h1>3. 其它</h1><p>相对来说，镜像获取那步比较麻烦，出问题在NAS的网络问题上，若可以直接在路由器里设置代理，则一劳永逸！<br>这是我打包好的Vaultwarden镜像，若有需要可直接使用，下完完成后删除<code>.rar</code>后缀即可。</p><pre><code>https://www.123684.com/s/peN6Vv-mr3kh?提取码:2024</code></pre><p>安卓安装包</p><pre><code>https://www.123684.com/s/peN6Vv-d83kh?提取码:8888</code></pre><p>有问题留言沟通。</p>
]]></content:encoded>
<slash:comments>0</slash:comments>
<comments>https://blog.hantaotao.top/archives/153/#comments</comments>
<wfw:commentRss>https://blog.hantaotao.top/feed/category/utility/</wfw:commentRss>
</item>
<item>
<title>docker安装禅道</title>
<link>https://blog.hantaotao.top/archives/152/</link>
<guid>https://blog.hantaotao.top/archives/152/</guid>
<pubDate>Sat, 02 Nov 2024 22:27:00 +0800</pubDate>
<dc:creator>小韩</dc:creator>
<description><![CDATA[公司在使用禅道作为项目管理软件，了解到禅道有开源版本，且支持docker部署，因此折腾一下。将禅道用于个人，将人生视作一个产品，进行技能学习的分解，分解成一个个单独的项目，最后添加任务的执行，得...]]></description>
<content:encoded xml:lang="zh-CN"><![CDATA[
<p>公司在使用禅道作为项目管理软件，了解到禅道有开源版本，且支持docker部署，因此折腾一下。<br>将禅道用于个人，将人生视作一个产品，进行技能学习的分解，分解成一个个单独的项目，最后添加任务的执行，得益于禅道任务创建逻辑还算清晰，配置smtp后还能邮件通知，也许是一件有意思的事情。<br>这里以极空间上的docker为例（因为只有极空间的设备）。</p><h1>1.镜像拉取与容器设置</h1><ul><li><p>首先进行镜像的拉取，这里选用开源版进行安装。</p><pre><code class="lang-c++">docker pull hub.zentao.net/app/zentao:[TAG]  //这里的[TAG]是版本标签，例如我安装最新版本的开源稳定镜像，就替换成 latest

docker pull hub.zentao.net/app/zentao:latest</code></pre></li><li>拉取完成之后，将镜像导入容器，进行相关设置，将我设置的相关截图粘贴如下：</li></ul><p>02655</p><ul><li>端口号这里可以设置别的。但需要记住，是后面访问禅道页面的端口号。<br><img src="https://image.hantaotao.top/image/2024/杂项/DCOKER-chandao/20241029202717-min.png" alt="20241029202717-min.png" title="20241029202717-min.png"></li><li>我这里为了便于管理使用了真实路径。<br><img src="https://image.hantaotao.top/image/2024/杂项/DCOKER-chandao/20241029221457-min.png" alt="20241029221457-min.png" title="20241029221457-min.png"></li><li><p>在环境这里添加<code>MYSQL_INTERNAL=true</code> 以使用内置的MySql服务，默认用户名为<code>root</code>,密码是<code>123456</code><br><img src="https://image.hantaotao.top/image/2024/杂项/DCOKER-chandao/20241029221517-min.png" alt="20241029221517-min.png" title="20241029221517-min.png"></p><h1>2.部署设置</h1></li><li>容器启动后，可以在浏览器或者极空间的远程访问里使用<code>极空间ip:端口号</code>来进入禅道<br>在一通设置之后，可能会遇到报错，如下图所示：<br><img src="https://image.hantaotao.top/image/2024/杂项/DCOKER-chandao/LJWYL5D(KT5WX2-JQ87SRIV.png" alt="LJWYL5D(KT5WX2-JQ87SRIV.png" title="LJWYL5D(KT5WX2-JQ87SRIV.png"></li><li><p>解决办法是，进入容器的SSH命令窗口：<br>第一步：将/config/config.php中的customSession值修改成如下值：</p><pre><code> $config-&gt;customSession = true;</code></pre><p>第二步：将/config/config.php中:</p><pre><code>$config-&gt;framework-&gt;filterCSRF = true;  
修改为：
$config-&gt;framework-&gt;filterCSRF = false;</code></pre></li></ul><p>第三步：执行如下命令：</p><pre><code>$ mkdir -p /apps/zentao/tmp/session
$ chmod 777 -R /apps/zentao/tmp/session</code></pre><p>之后就可以正常安装与使用了，在设置页面会让输入一个账号作为管理员账号，这里建议不要设置成自己常使用的账号，进入权限分离，管理员账号用以创建任务与评审，个人账号用于任务执行。</p>
]]></content:encoded>
<slash:comments>0</slash:comments>
<comments>https://blog.hantaotao.top/archives/152/#comments</comments>
<wfw:commentRss>https://blog.hantaotao.top/feed/category/utility/</wfw:commentRss>
</item>
<item>
<title>关于超微h11dsi主板M.2固态装系统相关：备忘</title>
<link>https://blog.hantaotao.top/archives/151/</link>
<guid>https://blog.hantaotao.top/archives/151/</guid>
<pubDate>Mon, 07 Oct 2024 19:37:00 +0800</pubDate>
<dc:creator>小韩</dc:creator>
<description><![CDATA[序Win11 ltsc最近发布了，之前为CFD计算装了一台双路工作站，主板是超微h11dsi，cpu是epyc 7551 ×2，内存16×8，储存是双固态：m.2接口512G，sata接口1t，...]]></description>
<content:encoded xml:lang="zh-CN"><![CDATA[
<h1>序</h1><p>Win11 ltsc最近发布了，之前为CFD计算装了一台双路工作站，主板是超微h11dsi，cpu是epyc 7551 ×2，内存16×8，储存是双固态：m.2接口512G，sata接口1t，系统是Ubuntu，安装在m.2固态中；<br>计划将系统由ubuntu改为win11 ltsc，折腾花费了一定时间，为后续方便，记录如下：</p><h1>备忘</h1><p>设置项相关如下：</p><p><img src="https://image.hantaotao.top/image/2024/杂七杂八/2024/h11dsi/IMG_20241007_180534-min.jpg" alt="IMG_20241007_180534-min.jpg" title="IMG_20241007_180534-min.jpg"></p><p>如果装系统过程中，出现了诸如磁盘控制器，分区相关，可以将同一块硬盘的驱动器全部删除，然后重新分配分区，再进行安装。</p><p>由于主板上不具备tpm，cpu也不在win11支持的目录内，因而无法直接使用u盘启动来安装win11，或可通过修改系统安装的文件的方式实现；<br>这里我是先安装了win10 Ltsc 然后在cmd里使用<code> &quot;XX:\XX\setup.exe&quot; /product server  </code>命令来绕过检测进行安装的。</p><h1>其它</h1><p>此外，如果加装了独立显卡，在装好了驱动之后，可以把主板上的核显禁用掉，具体就是那个VGA Priority。<br>若有其它问题可留言交流。</p>
]]></content:encoded>
<slash:comments>1</slash:comments>
<comments>https://blog.hantaotao.top/archives/151/#comments</comments>
<wfw:commentRss>https://blog.hantaotao.top/feed/category/utility/</wfw:commentRss>
</item>
<item>
<title>ubuntu安装starccm+</title>
<link>https://blog.hantaotao.top/archives/134/</link>
<guid>https://blog.hantaotao.top/archives/134/</guid>
<pubDate>Sat, 17 Aug 2024 12:41:00 +0800</pubDate>
<dc:creator>小韩</dc:creator>
<description><![CDATA[1.安装进入在安装程序压缩包所在目录打开终端，进行安装包的解压缩：tar -zxvf XXXX.tar.gz  //XXXX.tar.gz 是压缩包名字进入解压缩得到的文件夹，里面会存在安装程序...]]></description>
<content:encoded xml:lang="zh-CN"><![CDATA[
<h1>1.安装进入</h1><p>在安装程序压缩包所在目录打开终端，进行安装包的解压缩：</p><pre><code>tar -zxvf XXXX.tar.gz  //XXXX.tar.gz 是压缩包名字</code></pre><p>进入解压缩得到的文件夹，里面会存在安装程序，以.sh结尾，在所在目录打开终端：</p><pre><code>sudo ./ XXX.sh</code></pre><h1>2.过程安装</h1><p>安装注意事项如下：</p><ul><li>安装时不要选择默认，选择自定义/高级 安装。</li><li>不要加入用户体验/卓越计划什么之类的计划。</li><li>不要安装License Manage</li><li>安装完成。</li></ul><h1>3.激活使用</h1><h1>4.报错处理</h1><h2>4.1 对文件夹没有权限写入</h2><p>如果在执行<code>./ XXX.sh</code>后安装时没有写入权限，可以使用<code>sudo ./ XXX.sh</code>，如果还是不行，需要使用root用户运行安装程序。</p><pre><code>sudo passwd root</code></pre><p>首先确认当前用户密码，之后会进行root用户的密码设置。</p><pre><code>su root</code></pre><p>切换到root用户，再次执行<code>./ XXX.sh</code>即可。</p>
]]></content:encoded>
<slash:comments>0</slash:comments>
<comments>https://blog.hantaotao.top/archives/134/#comments</comments>
<wfw:commentRss>https://blog.hantaotao.top/feed/category/utility/</wfw:commentRss>
</item>
<item>
<title>ubuntu18.04 安装AX210驱动</title>
<link>https://blog.hantaotao.top/archives/133/</link>
<guid>https://blog.hantaotao.top/archives/133/</guid>
<pubDate>Sat, 17 Aug 2024 12:40:00 +0800</pubDate>
<dc:creator>小韩</dc:creator>
<description><![CDATA[安装18.04后，内核版本应该是5.4.10，安装驱动无需升级内核，使用下属方法，成功配置驱动。方法安装必要软件包sudo apt install flex bison克隆backport仓库，...]]></description>
<content:encoded xml:lang="zh-CN"><![CDATA[
<blockquote>安装18.04后，内核版本应该是5.4.10，安装驱动无需升级内核，使用下属方法，成功配置驱动。</blockquote><h1>方法</h1><p>安装必要软件包</p><pre><code>sudo apt install flex bison</code></pre><p>克隆backport仓库，编译并安装</p><pre><code>git clone https://github.com/intel/backport-iwlwifi.git
cd backport-iwlwifi
sudo make defconfig-iwlwifi-public
sudo make
sudo make install</code></pre><p>最后一步,从intel官网下载所需固件,解压出来,将ucode文件复制在/lib/firmware下:<a href="https://blog.hantaotao.top/go/aHR0cHM6Ly93d3cuaW50ZWwuY29tL2NvbnRlbnQvd3d3L3VzL2VuL3N1cHBvcnQvYXJ0aWNsZXMvMDAwMDA1NTExL3dpcmVsZXNzLmh0bWw" pjax="no" target="_blank">intel官网</a><br>经过测试，AX210网卡可以使用如下固件：<code>iwlwifi-ty-a0-gf-a0-59.ucode</code></p><p><img src="https://image.hantaotao.top/image/2024/杂七杂八/2024/ubuntu_AX210/Pasted_image_20240815110541-min.png" alt="Pasted_image_20240815110541-min.png" title="Pasted_image_20240815110541-min.png"></p><p>放到/firmware 目录下后，执行下面命令：</p><pre><code>sudo cp iwlwifi-* /lib/firmware/</code></pre><p>之后重启即可</p><pre><code>sudo reboot</code></pre><h1>错误处理</h1><h2>1.不存在XX文件或XX文件夹</h2><blockquote>ls 一下，因为有可能里面套了一个文件夹，那个文件夹才是真正需要的，cd进去再执行命令即可。</blockquote><h2>2.编译错误</h2><p>参考这个<a href="https://blog.hantaotao.top/go/W-aXoOe6vw" pjax="no" target="_blank" title="- 在 Ubuntu 18.04 下运行英特尔 Wi-Fi 6 AX210 适配器 - 询问 Ubuntu (askubuntu.com">解决办法</a>](<a href="https://blog.hantaotao.top/go/aHR0cHM6Ly9hc2t1YnVudHUuY29tL3F1ZXN0aW9ucy8xMzY4MjQwL3J1bm5pbmctaW50ZWwtd2ktZmktNi1heDIxMC1hZGFwdGVyLXVuZGVyLXVidW50dS0xOC0wNA" pjax="no" target="_blank">https://askubuntu.com/questions/1368240/running-intel-wi-fi-6-ax210-adapter-under-ubuntu-18-04</a>))。</p>
]]></content:encoded>
<slash:comments>0</slash:comments>
<comments>https://blog.hantaotao.top/archives/133/#comments</comments>
<wfw:commentRss>https://blog.hantaotao.top/feed/category/utility/</wfw:commentRss>
</item>
<item>
<title> BearSimple主题foot.php 页脚文件备份</title>
<link>https://blog.hantaotao.top/archives/82/</link>
<guid>https://blog.hantaotao.top/archives/82/</guid>
<pubDate>Thu, 04 Jan 2024 17:43:00 +0800</pubDate>
<dc:creator>小韩</dc:creator>
<description><![CDATA[记录添加自定义备案号的位置，即如下代码的位置，要注意 &lt;a href=&quot;https://icp.gov.moe/?keyword=XXXX&quot; target=&quot;...]]></description>
<content:encoded xml:lang="zh-CN"><![CDATA[
<p>记录添加自定义备案号的位置，即如下代码的位置，要注意</p><pre><code class="lang-html"> &lt;a href=&quot;https://icp.gov.moe/?keyword=XXXX&quot; target=&quot;_blank&quot;&gt; | 萌ICP备XXXX号&lt;/a&gt;
</code></pre><hr><p>后面对主题升级的时候，需要注意对这部分进行更改。</p><pre><code class="lang-html">&lt;?php if (!defined(&#039;__TYPECHO_ROOT_DIR__&#039;)) exit; ?&gt;
        &lt;/div&gt;
&lt;/div&gt;
&lt;footer id=&quot;footer&quot; role=&quot;contentinfo&quot; class=&quot;break&quot;&gt;
    
    &lt;?php if(Bsoptions(&#039;FriendLinkChoose&#039;) == true &amp;&amp; Bsoptions(&#039;FriendLinkFoot&#039;) == true) :?&gt;
&lt;?php if((Bsoptions(&#039;FriendLink_place&#039;) == &#039;1&#039;) || (Bsoptions(&#039;FriendLink_place&#039;) == &#039;2&#039; &amp;&amp; $this-&gt;is(&#039;index&#039;))) :?&gt;
    &lt;?php if(!empty(Bsoptions(&#039;FriendLink&#039;))) :?&gt;
    
    &lt;div class=&quot;ui small horizontal divided list&quot;&gt;
    友情链接：
    &lt;?php foreach (getFriendLink() as $FriendLinks): ?&gt;
  &lt;div class=&quot;item&quot;&gt;
    &lt;div class=&quot;content&quot;&gt;
      &lt;div&gt;&lt;a href=&quot;&lt;?php echo $FriendLinks[2]; ?&gt;&quot; title=&quot;&lt;?php echo $FriendLinks[1]; ?&gt;&quot;&lt;?php echo parselink($FriendLinks[2]); ?&gt;&gt;&lt;?php echo $FriendLinks[0]; ?&gt;&lt;/a&gt;&lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;
 &lt;?php endforeach;?&gt;
&lt;/div&gt;
&lt;br&gt;
&lt;?php endif;?&gt;
&lt;?php endif;?&gt;&lt;?php endif;?&gt;


 &lt;?php if(Bsoptions(&#039;CustomizationFooterCode&#039;)): ?&gt;&lt;?php echo Bsoptions(&#039;CustomizationFooterCode&#039;); ?&gt;&lt;br&gt;&lt;?php endif; ?&gt;
    © &lt;?php echo date(&#039;Y&#039;); ?&gt; &lt;a href=&quot;&lt;?php $this-&gt;options-&gt;siteUrl(); ?&gt;&quot;&gt;&lt;?php $this-&gt;options-&gt;title(); ?&gt;&lt;/a&gt;&lt;?php if(Bsoptions(&#039;allOfCharacters&#039;) == true): ?&gt; （&lt;i class=&quot;pencil alternate icon&quot;&gt;&lt;/i&gt;本站总字数:&lt;?php echo allOfCharacters(); ?&gt;字）&lt;?php endif; ?&gt;

&lt;br&gt;
    &lt;?php _e(&#039;Powered by &lt;a href=&quot;http://www.typecho.org&quot;&gt;Typecho&lt;/a&gt; &amp; &lt;a href=&quot;https://github.com/whitebearcode/typecho-bearsimple&quot;&gt; BearSimple&lt;/a&gt;  &#039;); ?&gt;
    &lt;?php if (Bsoptions(&#039;IcpBa&#039;) || Bsoptions(&#039;PoliceBa&#039;)): ?&gt;&lt;br&gt;&lt;?php endif; ?&gt;
     &lt;?php if (Bsoptions(&#039;PoliceBa&#039;)): ?&gt;&lt;img style=&quot;vertical-align: middle;&quot; src=&quot;&lt;?php AssetsDir();?&gt;assets/image/police.png&quot;&gt;&lt;a href=&quot;http://www.beian.gov.cn/portal/registerSystemInfo?recordcode=&lt;?php echo parseNumber(Bsoptions(&#039;PoliceBa&#039;)); ?&gt;&quot;&gt;&lt;?php echo Bsoptions(&#039;PoliceBa&#039;); ?&gt;&lt;/a&gt;&lt;?php endif; ?&gt;&lt;?php if (Bsoptions(&#039;IcpBa&#039;) &amp;&amp; Bsoptions(&#039;PoliceBa&#039;)): ?&gt;  | &lt;?php endif; ?&gt;&lt;?php if (Bsoptions(&#039;IcpBa&#039;)): ?&gt;&lt;a href=&quot;https://beian.miit.gov.cn/&quot;&gt;&lt;?php echo Bsoptions(&#039;IcpBa&#039;); ?&gt;&lt;/a&gt;&lt;?php endif; ?&gt;
     &lt;a href=&quot;https://icp.gov.moe/?keyword=XXXX&quot; target=&quot;_blank&quot;&gt; | 萌ICP备XXXX号&lt;/a&gt;
     &lt;?php if(Bsoptions(&#039;load_Time&#039;) == &#039;1&#039;): ?&gt;&lt;br&gt;&lt;?php echo loadtime();?&gt;&lt;?php endif; ?&gt;
&lt;/footer&gt;    


&lt;/div&gt;

&lt;/div&gt;
&lt;/div&gt;

&lt;!-- Popup Loading --&gt;
&lt;?php if(Bsoptions(&#039;Popup&#039;) == true) :?&gt;
&lt;ul id=&quot;announcement&quot; style=&quot;visibility:hidden;&quot;&gt;

&lt;?php foreach(announmentget() as $announment){ ?&gt;
    &lt;li&gt;
        &lt;?php echo $announment; ?&gt;
    &lt;/li&gt;
&lt;?php } ?&gt;
&lt;/ul&gt;
&lt;?php endif; ?&gt;
&lt;!-- end --&gt;

&lt;!-- Pjax Loading --&gt;
&lt;?php if(Bsoptions(&#039;Pjax&#039;) == true) :?&gt;
&lt;div class=&quot;bs-pjax bs-pjax-mask&quot;&gt;&lt;/div&gt;
&lt;div class=&quot;bs-pjax bs-pjax-anim&quot;&gt;
    &lt;div&gt;
        &lt;span class=&quot;bs-pjax-1&quot;&gt;&lt;/span&gt;
        &lt;span class=&quot;bs-pjax-2&quot;&gt;&lt;/span&gt;
        &lt;span class=&quot;bs-pjax-3&quot;&gt;&lt;/span&gt;
        &lt;span class=&quot;bs-pjax-4&quot;&gt;&lt;/span&gt;
        &lt;span class=&quot;bs-pjax-5&quot;&gt;&lt;/span&gt;
        &lt;span class=&quot;bs-pjax-6&quot;&gt;&lt;/span&gt;
        &lt;span class=&quot;bs-pjax-7&quot;&gt;&lt;/span&gt;
    &lt;/div&gt;
&lt;/div&gt;
&lt;?php endif; ?&gt;
&lt;!-- end --&gt;


&lt;!-- Bstheme Panel Loading --&gt;

&lt;div class=&quot;bscorner-btn-group&quot;&gt;
&lt;?php if(Bsoptions(&#039;Control_Panel&#039;) == true) :?&gt;
    &lt;div id=&quot;bs-theme-control&quot; title=&quot;设置&quot; class=&quot;bscorner-btn&quot;&gt;
        &lt;i class=&quot;settings icon&quot; aria-hidden=&quot;true&quot;&gt;&lt;/i&gt;
    &lt;/div&gt;
    &lt;?php endif; ?&gt;
    &lt;?php if(Bsoptions(&#039;Top&#039;) == true) :?&gt;
    &lt;div id=&quot;bs-scroll-to-top&quot; title=&quot;返回顶部&quot; class=&quot;bscorner-btn&quot; style=&quot;display:none&quot;&gt;
        &lt;i class=&quot;&lt;?php if(empty(Bsoptions(&#039;TopSrc&#039;))){echo &#039;fa fa-chevron-up&#039;;}else{echo Bsoptions(&#039;TopSrc&#039;);}; ?&gt;&quot; aria-hidden=&quot;true&quot;&gt;&lt;/i&gt;
    &lt;/div&gt;
    &lt;?php endif; ?&gt;
&lt;/div&gt;

&lt;?php if(Bsoptions(&#039;Control_Panel&#039;) == true) :?&gt;
&lt;div class=&quot;bstheme-control-panel&quot; style=&quot;display:none&quot;&gt;
&lt;h4 class=&quot;ui center aligned icon header&quot;&gt;
  &lt;i class=&quot;settings icon&quot;&gt;&lt;/i&gt;
  &lt;div class=&quot;content&quot;&gt;
    设置中心
  &lt;/div&gt;
&lt;/h4&gt;
       &lt;?php if (Bsoptions(&#039;Translate&#039;) == &quot;11&quot;): ?&gt;&lt;p&gt;&lt;?php $this-&gt;need(&#039;modules/translate.php&#039;); ?&gt;&lt;/p&gt;&lt;?php endif; ?&gt;
       &lt;?php if (Bsoptions(&#039;Translate&#039;) == &quot;1&quot;): ?&gt;&lt;p&gt;&lt;a id=&quot;translateLink&quot; class=&quot;ui mini button&quot;&gt;切换为繁體&lt;/a&gt;&lt;/p&gt;&lt;?php endif; ?&gt;


&lt;?php if(Bsoptions(&#039;Darkmode&#039;) == true) :?&gt;
 &lt;div class=&quot;bstheme-control-dark&quot;&gt;
&lt;div class=&quot;switch-check has-label&quot;&gt;
                &lt;input type=&quot;checkbox&quot; id=&quot;darkmode&quot; value=&quot;true&quot; name=&quot;darkmode&quot;&gt;
                &lt;label class=&quot;label&quot; for=&quot;darkmode&quot;&gt;
                    &lt;span class=&quot;slider-check&quot;&gt;&lt;/span&gt;
                &lt;/label&gt;
            &lt;/div&gt;
 
&lt;/div&gt;
&lt;?php endif; ?&gt;
&lt;/div&gt;
&lt;?php endif; ?&gt;
&lt;!-- end --&gt;
&lt;!-- ServiceWorker Loading --&gt;
&lt;?php if(!empty(Bsoptions(&#039;ServiceWorker&#039;)) &amp;&amp; ishttps() == true): ?&gt;
        &lt;script&gt;
            var serviceWorkerUri = &#039;/&lt;?php echo Bsoptions(&#039;ServiceWorker&#039;); ?&gt;&#039;;
            if (&#039;serviceWorker&#039; in navigator) {  
                navigator.serviceWorker.register(serviceWorkerUri).then(function() {
                    if (navigator.serviceWorker.controller) {
                        console.log(&#039;Service worker 已经成功运行。&#039;);
                    } else {
                    console.log(&#039;Service worker 当前存在缓存需要更新。&#039;);
                    }
                }).catch(function(error) {
                    console.log(&#039;错误: &#039; + error);
                });
            } else {
                console.log(&#039;Service worker 无法支持当前浏览器.&#039;);
            }
        &lt;/script&gt;
        &lt;?php else: ?&gt;
        &lt;script&gt;
        if (&#039;serviceWorker&#039; in navigator) {
            navigator.serviceWorker.getRegistrations().then(function(registrations) {
            for(let registration of registrations) {
                registration.unregister()
            }}).catch(function(err) {
                console.log(&#039;Service worker 注册失败: &#039;, err);
            });
        }
        &lt;/script&gt;
        &lt;?php endif; ?&gt;
&lt;!-- end --&gt;

&lt;script&gt;
&lt;?php if(Bsoptions(&#039;Login_hidden&#039;) == true): ?&gt;
function isLogin(){
    $.ajax({
                        type: &quot;POST&quot;,
                        async:true,
                        url: &quot;&lt;?php getIsLogin(); ?&gt;&quot;,
                        data: {
                            &quot;action&quot;: &#039;find&#039;,
                        },
                        dateType: &quot;json&quot;,
                        success: function(json) {
                            res = JSON.parse(json);
        switch(res.code){
            case 0:
        $(&#039;#bs-islogin&#039;).fadeOut();
    $(&#039;#bs-login&#039;).fadeIn();
    break;
    case 1:
       switch(res.group){ 
           case &#039;administrator&#039; || &#039;editor&#039;:
       $(&#039;#bs-islogin&#039;).html(&#039;&lt;a href=&quot;&#039;+res.url+&#039;&quot; pjax=&quot;no&quot;&gt;&lt;?php _e(&#039;进入管理中心&#039;); ?&gt;&lt;/a&gt;&#039;).fadeIn();
       &lt;?php if(Bsoptions(&#039;UserCenterOpen&#039;) == true):?&gt;
       
       $(&#039;#bs-islogin2&#039;).html(&#039;&lt;a href=&quot;&lt;?php $this-&gt;options-&gt;siteUrl(); ?&gt;&lt;?php if($this-&gt;options-&gt;rewrite == 0 || $this-&gt;options-&gt;rewrite == &#039;&#039;):?&gt;index.php/&lt;?php endif;?&gt;usercenter&quot; pjax=&quot;no&quot;&gt;&lt;?php _e(&#039;进入用户中心&#039;); ?&gt;&lt;/a&gt;&#039;).fadeIn();
       &lt;?php endif; ?&gt;
    $(&#039;#bs-login&#039;).fadeOut();
    break;
    default:
    &lt;?php if(Bsoptions(&#039;UserCenterOpen&#039;) == true):?&gt;
       $(&#039;#bs-islogin2&#039;).html(&#039;&lt;a href=&quot;&lt;?php $this-&gt;options-&gt;siteUrl(); ?&gt;&lt;?php if($this-&gt;options-&gt;rewrite == 0 || $this-&gt;options-&gt;rewrite == &#039;&#039;):?&gt;index.php/&lt;?php endif;?&gt;usercenter&quot; pjax=&quot;no&quot;&gt;&lt;?php _e(&#039;进入用户中心&#039;); ?&gt;&lt;/a&gt;&#039;).fadeIn();
     &lt;?php endif; ?&gt;
    $(&#039;#bs-login&#039;).fadeOut();
    break;
       }
        }
        
                        },
                        
                        error: function() {
                            toastr.warning(&quot;状态获取失败&quot;);
                        }
                    });
         
}
isLogin();
&lt;?php endif; ?&gt;
window.article_element = &#039;&lt;?php switch(Bsoptions(&#039;Article_forma&#039;)){
    case &#039;3&#039;:
        echo &#039;.wrappers&#039;;
    break;
       case &#039;2&#039;:
         echo   &#039;.ui.segment.diymode&#039;;
           break;
           case &#039;1&#039;:
              echo  &#039;.bs-simplestyle-container&#039;;
               break;
               case &#039;5&#039;:
                 echo   &#039;.blog-card&#039;;
                   break;
                   case &#039;4&#039;:
                     echo   &#039;.ui.vertical.segment&#039;;
                       break;
                       case &#039;6&#039;:
                     echo   &#039;.post-item&#039;;
                       break;
                       default: echo &#039;.ui.segment.diymode&#039;;
                       
}?&gt;
&#039;;
&lt;/script&gt;



&lt;?php if(Bsoptions(&#039;Scroll&#039;) == true): ?&gt;
&lt;!--目录树TOC--&gt;
&lt;script src=&quot;&lt;?php AssetsDir();?&gt;assets/vendors/bs-toc/bs-toc.min.js&quot; type=&quot;text/javascript&quot;&gt;&lt;/script&gt;
&lt;script&gt;
  window.tocManager.displayDisableTocTips = false;
 window.tocManager.generateToc();  
&lt;/script&gt;
&lt;!-- end --&gt;
    &lt;?php endif; ?&gt;
    &lt;?php if(Bsoptions(&#039;Lightbox&#039;) == true) :?&gt;
&lt;script src=&quot;//lib.baomitu.com/fancyapps-ui/5.0.29/fancybox/fancybox.umd.min.js&quot;&gt;&lt;/script&gt;
&lt;?php endif; ?&gt;
    &lt;?php if(Bsoptions(&#039;MathJax&#039;) == true):?&gt;
&lt;script src=&quot;//lib.baomitu.com/mathjax/2.7.9/MathJax.js?config=TeX-AMS-MML_HTMLorMML&quot; defer&gt;&lt;/script&gt;    
&lt;?php endif; ?&gt;
&lt;?php if(Bsoptions(&#039;Mermaid&#039;) == true):?&gt;
&lt;script type=&quot;module&quot;&gt;
    import mermaid from &#039;//lib.baomitu.com/mermaid/10.6.1/mermaid.esm.min.mjs&#039;;
    mermaid.initialize({startOnLoad:true});
    &lt;?php if(Bsoptions(&#039;Pjax&#039;) == true) :?&gt;
    $(document).on(&#039;pjax:complete&#039;, function () {
    mermaid.init();    
    });
    &lt;?php endif; ?&gt;
&lt;/script&gt;
&lt;?php endif; ?&gt;

&lt;!-- 引入Pjax --&gt;
&lt;?php if(Bsoptions(&#039;Pjax&#039;) == true) :?&gt;
&lt;script src=&quot;&lt;?php AssetsDir();?&gt;assets/js/jquery.pjax.js&quot;&gt;&lt;/script&gt;
&lt;?php endif;?&gt;
&lt;!-- 引入全局控制 --&gt;
&lt;script type=&quot;text/javascript&quot; src=&quot;//lib.baomitu.com/fomantic-ui/2.9.3/semantic.min.js&quot; defer&gt;&lt;/script&gt;
&lt;script type=&quot;text/javascript&quot; src=&quot;&lt;?php AssetsDir();?&gt;assets/js/app.bundle.min.js?v=&lt;?php echo themeVersion(); ?&gt;&quot; defer&gt;&lt;/script&gt;

&lt;?php if(Bsoptions(&#039;Pjax&#039;) == true) :?&gt;
&lt;script&gt;
$(document).on(&#039;pjax:complete&#039;, function () {
if (document.getElementById(&#039;echarts_pie&#039;)) EchartsInit();
&lt;?php if(Bsoptions(&#039;CustomizationFooterJsPjaxCode&#039;)): ?&gt;&lt;?php echo Bsoptions(&#039;CustomizationFooterJsPjaxCode&#039;); ?&gt;&lt;?php endif; ?&gt;
    &lt;?php if(Bsoptions(&#039;Scroll&#039;) == true): ?&gt;
window.tocManager.displayDisableTocTips = false;
            window.tocManager.generateToc();
            &lt;?php endif; ?&gt;
&lt;?php if(Bsoptions(&#039;Codehightlight&#039;) == true) :?&gt;
if (typeof Prism !== &#039;undefined&#039;) {
        var pres = document.getElementsByTagName(&#039;pre&#039;); for (var i = 0; i &lt; pres.length; i++) { if (pres[i].getElementsByTagName(&#039;code&#039;).length &gt; 0) pres[i].className  = &#039;&lt;?php if(Bsoptions(&#039;showLineNumber&#039;) == 1) :?&gt;line-numbers &lt;?php endif; ?&gt;language-&#039;;document.getElementsByTagName(&#039;code&#039;).className  = &#039;language-&#039;; }
        Prism.highlightAll(true,null);
    };
&lt;?php endif; ?&gt;
});
&lt;/script&gt;
&lt;?php endif; ?&gt;
&lt;?php if(Bsoptions(&#039;CommentTyping&#039;) == true) :?&gt;
&lt;script type=&quot;text/javascript&quot; src=&quot;&lt;?php AssetsDir();?&gt;assets/js/commentTyping.js&quot;&gt;&lt;/script&gt;
&lt;?php endif; ?&gt;
&lt;?php $this-&gt;footer(); ?&gt;
&lt;?php if(Bsoptions(&#039;Codehightlight&#039;) == true) :?&gt;
&lt;script&gt;
if (typeof Prism !== &#039;undefined&#039;) {
        var pres = document.getElementsByTagName(&#039;pre&#039;); for (var i = 0; i &lt; pres.length; i++) { if (pres[i].getElementsByTagName(&#039;code&#039;).length &gt; 0) pres[i].className  = &#039;&lt;?php if(Bsoptions(&#039;showLineNumber&#039;) == 1) :?&gt;line-numbers &lt;?php endif; ?&gt;language-&#039;;document.getElementsByTagName(&#039;code&#039;).className  = &#039;language-&#039;; }
        Prism.highlightAll(true,null);
    };
    &lt;/script&gt;
&lt;?php endif; ?&gt;
&lt;?php if(Bsoptions(&#039;CustomizationFooterJsCode&#039;)): ?&gt;&lt;?php echo Bsoptions(&#039;CustomizationFooterJsCode&#039;); ?&gt;&lt;?php endif; ?&gt;
&lt;script src=&quot;&lt;?php AssetsDir();?&gt;assets/js/instantPage.js&quot; type=&quot;module&quot;&gt;&lt;/script&gt;
&lt;/body&gt;
&lt;/html&gt;
&lt;?php if(Bsoptions(&#039;Compress&#039;) == true) :?&gt;
&lt;?php $html_source = ob_get_contents();
ob_clean();
print compressHtml($html_source);
ob_end_flush(); ?&gt;
&lt;?php endif; ?&gt;
</code></pre>
]]></content:encoded>
<slash:comments>0</slash:comments>
<comments>https://blog.hantaotao.top/archives/82/#comments</comments>
<wfw:commentRss>https://blog.hantaotao.top/feed/category/utility/</wfw:commentRss>
</item>
</channel>
</rss>