<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>折腾笔记</title>
	<atom:link href="https://www.hu365.dev/blog/category/records/feed/" rel="self" type="application/rss+xml" />
	<link>https://www.hu365.dev</link>
	<description>Justin Woo（吴晓虎）的个人博客，生命不息，学习不止</description>
	<lastBuildDate>Sun, 18 Feb 2024 01:34:53 +0000</lastBuildDate>
	<language>zh-CN</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.4.3</generator>

<image>
	<url>https://www.hu365.dev/wp-content/uploads/2022/10/cropped-logo-正矩形.blue_-32x32.png</url>
	<title>折腾笔记</title>
	<link>https://www.hu365.dev</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Xampp MySql 不能启动记录</title>
		<link>https://www.hu365.dev/blog/2023/01/295/</link>
		
		<dc:creator><![CDATA[Justin]]></dc:creator>
		<pubDate>Tue, 31 Jan 2023 11:26:00 +0000</pubDate>
				<category><![CDATA[折腾笔记]]></category>
		<category><![CDATA[xampp]]></category>
		<guid isPermaLink="false">https://www.hu365.dev/?p=295</guid>

					<description><![CDATA[一：错误展示 过完春节回来，忽然就启动不了了，错误日志如下 二：解决办法 不会的东西就要学，搜索引擎好助手，参考链接：xampp windows mariadb not starting &#8211; Stack Overflow 白话版：使用mysql安装 <a href="https://www.hu365.dev/blog/2023/01/295/" class="cosmoswp-btn">阅读更多</a>]]></description>
										<content:encoded><![CDATA[
<h2 class="wp-block-heading">一：错误展示</h2>



<p>过完春节回来，忽然就启动不了了，错误日志如下</p>



<pre class="EnlighterJSRAW" data-enlighter-language="prolog" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">Cannot find checkpoint record at LSN (1,0x60c9)
2023-01-31 16:47:40 0 [ERROR] mysqld.exe: Aria recovery failed. Please run aria_chk -r on all Aria tables and delete all aria_log.######## files
2023-01-31 16:47:40 0 [ERROR] Plugin 'Aria' init function returned error.
2023-01-31 16:47:40 0 [ERROR] Plugin 'Aria' registration as a STORAGE ENGINE failed.
2023-01-31 16:47:40 0 [Note] InnoDB: Mutexes and rw_locks use Windows interlocked functions
2023-01-31 16:47:40 0 [Note] InnoDB: Uses event mutexes
2023-01-31 16:47:40 0 [Note] InnoDB: Compressed tables use zlib 1.2.12
2023-01-31 16:47:40 0 [Note] InnoDB: Number of pools: 1
2023-01-31 16:47:40 0 [Note] InnoDB: Using SSE2 crc32 instructions
2023-01-31 16:47:40 0 [Note] InnoDB: Initializing buffer pool, total size = 16M, instances = 1, chunk size = 16M
2023-01-31 16:47:40 0 [Note] InnoDB: Completed initialization of buffer pool
2023-01-31 16:47:40 0 [Note] InnoDB: 128 out of 128 rollback segments are active.
2023-01-31 16:47:40 0 [Note] InnoDB: Creating shared tablespace for temporary tables
2023-01-31 16:47:40 0 [Note] InnoDB: Setting file 'C:\xampp\mysql\data\ibtmp1' size to 12 MB. Physically writing the file full; Please wait ...
2023-01-31 16:47:40 0 [Note] InnoDB: File 'C:\xampp\mysql\data\ibtmp1' size is now 12 MB.
2023-01-31 16:47:40 0 [Note] InnoDB: Waiting for purge to start
2023-01-31 16:47:41 0 [Note] InnoDB: 10.4.27 started; log sequence number 29968412; transaction id 12673
2023-01-31 16:47:41 0 [Note] InnoDB: Loading buffer pool(s) from C:\xampp\mysql\data\ib_buffer_pool
2023-01-31 16:47:41 0 [Note] Plugin 'FEEDBACK' is disabled.
2023-01-31 16:47:41 0 [ERROR] Could not open mysql.plugin table. Some plugins may be not loaded
2023-01-31 16:47:41 0 [ERROR] Failed to initialize plugins.
2023-01-31 16:47:41 0 [ERROR] Aborting</pre>



<h2 class="wp-block-heading">二：解决办法</h2>



<p>不会的东西就要学，搜索引擎好助手，参考链接：<br><a href="https://stackoverflow.com/questions/59410692/xampp-windows-mariadb-not-starting/59411279#59411279">xampp windows mariadb not starting &#8211; Stack Overflow</a></p>



<p>白话版：使用<code>mysql</code>安装目录下<code>bin</code>文件夹下的工具<code>aria_chk</code>检测修复所有数据文件<code>.MAI</code></p>



<ol>
<li>用管理员权限打开<code>cmd</code>，因为我默认安装在系统盘</li>



<li><code>cd C:\xampp\mysql\data</code>，此为<code>xampp</code>安装路径中的<code>data</code>目录</li>



<li><code>..\bin\aria_chk -r mysql\*.MAI</code>，执行检测修复</li>



<li><code>del aria_log.*</code>，删除当前目录（<code>data</code>）下所有<code>aria_log.########</code>文件</li>
</ol>



<p>重新启动即可</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>批量重命名工具：PowerRename</title>
		<link>https://www.hu365.dev/blog/2022/12/205/</link>
		
		<dc:creator><![CDATA[Justin]]></dc:creator>
		<pubDate>Sat, 10 Dec 2022 07:50:44 +0000</pubDate>
				<category><![CDATA[折腾笔记]]></category>
		<category><![CDATA[PowerRename]]></category>
		<category><![CDATA[PowerToys]]></category>
		<category><![CDATA[工具]]></category>
		<guid isPermaLink="false">https://www.hu365.dev/?p=205</guid>

					<description><![CDATA[参考链接： 一：Microsoft PowerToys 今天在整理音乐资源 然后发现mp3tag无法实现歌词歌曲同步修改（不记得上一次是怎么重命名的了）于是需要再寻求一个批量重命名的方法/工具结果被我发现了：Microsoft PowerToys 该工具包是微 <a href="https://www.hu365.dev/blog/2022/12/205/" class="cosmoswp-btn">阅读更多</a>]]></description>
										<content:encoded><![CDATA[
<p>参考链接：</p>



<ul>
<li><a href="https://learn.microsoft.com/zh-cn/windows/powertoys/">Microsoft PowerToys | Microsoft Learn</a></li>
</ul>



<h2 class="wp-block-heading">一：Microsoft PowerToys</h2>



<p>今天在整理音乐资源</p>



<ol>
<li>使用<code><a href="https://www.mp3tag.de/en/">mp3tag</a></code>批量修改文件信息，批量修改文件名为：【歌手 &#8211; 歌曲名】</li>



<li>再用<code><a href="https://github.com/real-zony/ZonyLrcToolsX">ZonyLrcToolsX</a></code>批量获取歌词文件，以上命名方式是为了提高准确度</li>



<li>得到数据后，在有文件夹分类的情况下，想把文件名改为【歌曲名】</li>
</ol>



<p>然后发现<code>mp3tag</code>无法实现歌词歌曲同步修改（不记得上一次是怎么重命名的了）<br>于是需要再寻求一个批量重命名的方法/工具<br>结果被我发现了：<a href="https://learn.microsoft.com/zh-cn/windows/powertoys/"><code>Microsoft PowerToys</code></a></p>



<p>该工具包是微软自己维护开发的，稳定性和安全性不用质疑<br>系统要求：<code>Windows 10 v2004 (19041)</code> 及以上版本或<code>Windows 11</code><br>总算又为<code>Windows 11</code>找到一个“更香”的理由了</p>



<h2 class="wp-block-heading">二：PowerRename</h2>



<p><code>PowerRename</code>属于<code>Microsoft PowerToys</code>中的一个小工具，其他还有很多功能扩展的工具，需要自己慢慢去探索<br>就我个人而言，<code>PowerRename</code>已经满足了我对批量重命名的要求：</p>



<ul>
<li>支持文件夹、子文件夹下批量修改，可以直接在文件夹上右键启用工具</li>



<li>支持单独文件勾选，排除某些特殊情况</li>



<li>支持正则匹配，这对于编码人员来说挺友好</li>



<li>实时的预览对比，再确认修改之前可以反复尝试</li>
</ul>



<figure class="wp-block-image size-large"><a href="https://www.hu365.dev/wp-content/uploads/2022/12/2022-12-10-153836-jpg.webp"><img data-dominant-color="e0e6ec" data-has-transparency="false" style="--dominant-color: #e0e6ec;" fetchpriority="high" decoding="async" width="1024" height="586" src="https://www.hu365.dev/wp-content/uploads/2022/12/2022-12-10-153836-1024x586.webp" alt="PowerRename" class="not-transparent wp-image-206" srcset="https://www.hu365.dev/wp-content/uploads/2022/12/2022-12-10-153836-1024x586.webp 1024w, https://www.hu365.dev/wp-content/uploads/2022/12/2022-12-10-153836-300x172.webp 300w, https://www.hu365.dev/wp-content/uploads/2022/12/2022-12-10-153836-768x439.webp 768w, https://www.hu365.dev/wp-content/uploads/2022/12/2022-12-10-153836-jpg.webp 1386w" sizes="(max-width: 1024px) 100vw, 1024px" /></a></figure>



<p>当然，要吐槽的地方也有，那就是速度有点慢</p>



<figure class="wp-block-image size-large"><a href="https://www.hu365.dev/wp-content/uploads/2022/12/2022-12-10-154343-jpg.webp"><img data-dominant-color="e4e9ed" data-has-transparency="false" style="--dominant-color: #e4e9ed;" decoding="async" width="1024" height="586" src="https://www.hu365.dev/wp-content/uploads/2022/12/2022-12-10-154343-1024x586.webp" alt="PowerRename" class="not-transparent wp-image-207" srcset="https://www.hu365.dev/wp-content/uploads/2022/12/2022-12-10-154343-1024x586.webp 1024w, https://www.hu365.dev/wp-content/uploads/2022/12/2022-12-10-154343-300x172.webp 300w, https://www.hu365.dev/wp-content/uploads/2022/12/2022-12-10-154343-768x439.webp 768w, https://www.hu365.dev/wp-content/uploads/2022/12/2022-12-10-154343-jpg.webp 1386w" sizes="(max-width: 1024px) 100vw, 1024px" /></a></figure>



<p>不过我这是是在【网络位置】的【网盘】操作，受网络速度影响挺大<br>没再测试本地磁盘的速度情况了，需求实现还是很香<br></p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>PVE 6.1.3 升级 7.0 记录</title>
		<link>https://www.hu365.dev/blog/2022/12/193/</link>
		
		<dc:creator><![CDATA[Justin]]></dc:creator>
		<pubDate>Thu, 08 Dec 2022 03:33:15 +0000</pubDate>
				<category><![CDATA[折腾笔记]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[PVE]]></category>
		<guid isPermaLink="false">https://www.hu365.dev/?p=193</guid>

					<description><![CDATA[参考文档： 一：升级到6.4.x 之前一直用的6.1.3，那首要任务是升级到6.4.x不过升级的过程也是困难重重 1.1：更换软件源 参考文档：Package Repositories &#8211; Proxmox VE 在执行更新时，出现未认证的错误提示， <a href="https://www.hu365.dev/blog/2022/12/193/" class="cosmoswp-btn">阅读更多</a>]]></description>
										<content:encoded><![CDATA[
<p>参考文档：</p>



<ul>
<li><a href="https://pve.proxmox.com/wiki/Upgrade_from_6.x_to_7.0">Upgrade from 6.x to 7.0 &#8211; Proxmox VE</a></li>
</ul>



<h2 class="wp-block-heading">一：升级到6.4.x</h2>



<p>之前一直用的<code>6.1.3</code>，那首要任务是升级到<code>6.4.x</code><br>不过升级的过程也是困难重重</p>



<h3 class="wp-block-heading">1.1：更换软件源</h3>



<p>参考文档：<a href="https://pve.proxmox.com/wiki/Package_Repositories">Package Repositories &#8211; Proxmox VE</a></p>



<p>在执行更新时，出现未认证的错误提示，这是因为在文件<br><code>/etc/apt/sources.list.d/pve-enterprise.list</code><br>中默认使用了企业版软件源，此处需要更换为免费版软件源</p>



<pre class="EnlighterJSRAW" data-enlighter-language="powershell" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">#企业源
#deb https://enterprise.proxmox.com/debian/pve buster pve-enterprise
#非订阅源
deb http://download.proxmox.com/debian/pve buster pve-no-subscription</pre>



<h3 class="wp-block-heading">1.2：生成公钥</h3>



<p>以为换了源就万事大吉？结果又出现<br><code>the following signatures couldn’t be verified because the public key is not available</code></p>



<p>看意思是公钥失效/不存在，正好找到一个类似问题，参照问答中的方式，重建公钥<br>参考链接：<a href="https://forum.proxmox.com/threads/public-key-not-available-when-using-apt-update.112108/">[SOLVED] &#8211; Public key not available when using apt update | Proxmox Support Forum</a></p>



<pre class="EnlighterJSRAW" data-enlighter-language="powershell" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">#安装
wget https://enterprise.proxmox.com/debian/proxmox-release-bullseye.gpg -O /etc/apt/trusted.gpg.d/proxmox-release-bullseye.gpg
#验证
sha512sum -c &lt;(echo "7fb03ec8a1675723d2853b84aa4fdb49a46a3bb72b9951361488bfd19b29aab0a789a4f8c7406e71a69aabbc727c936d3549731c4659ffa1a08f44db8fdcebfa /etc/apt/trusted.gpg.d/proxmox-release-bullseye.gpg")</pre>



<p>可惜，还是同样报错···这时又找到另一个文章：<br><a href="https://chrisjean.com/fix-apt-get-update-the-following-signatures-couldnt-be-verified-because-the-public-key-is-not-available/">Fix apt-get update “the following signatures couldn’t be verified because the public key is not available” </a></p>



<pre class="EnlighterJSRAW" data-enlighter-language="powershell" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group=""># XXXXXX 是错误提示中的公钥
apt-key adv --keyserver keyserver.ubuntu.com --recv-keys XXXXXX</pre>



<p>具体方法、原因没来得及考究，不过问题算是解决了···</p>



<h3 class="wp-block-heading">1.3：扩容root</h3>



<p>以为万事大吉，但是更新过程却提示失败，在确认<code>root</code>剩余空间只有几百兆时，觉得这就是问题所在了<br>用指令<code><a rel="noreferrer noopener" href="https://www.daemon-systems.org/man/lvresize.8.html" target="_blank">lvresize</a></code>实现扩容<br>参考相关提问：<a href="https://forum.proxmox.com/threads/pve-root-directory-runs-out-of-space-why-and-what-should-i-do.102988/">pve-root directory runs out of space: Why and What should I do?</a><br>合并<code>local-lvm</code>、<code>swap</code>空间到<code>pve/root</code></p>



<pre class="EnlighterJSRAW" data-enlighter-language="powershell" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group=""># 移除绑定，不影响数据
pvesm remove local-lvm

# 删除空间，会清除内容
lvremove /dev/pve/data

# 可选: 删除缓存空间，对于安装在低速介质的系统可能会影响速度
#lvremove /dev/pve/swap
# 移除启动加载
#sed -i '/ swap /d' /etc/fstab

# 增加空闲空间到 root
lvresize -l +100%FREE --resizefs /dev/pve/root</pre>



<p>在这之后，终于可以顺畅地更新了</p>



<h2 class="wp-block-heading">二：更新准备</h2>



<p>执行官方检测工具，检测升级环境</p>



<pre class="EnlighterJSRAW" data-enlighter-language="powershell" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">pve6to7 --full</pre>



<p>把所有可修复的内容都修复，包括<code>FAILURES</code>、<code>WARNINGS</code>项</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>linuxserver/nginx 中添加 imagick</title>
		<link>https://www.hu365.dev/blog/2022/11/172/</link>
		
		<dc:creator><![CDATA[Justin]]></dc:creator>
		<pubDate>Thu, 10 Nov 2022 02:49:35 +0000</pubDate>
				<category><![CDATA[折腾笔记]]></category>
		<category><![CDATA[imagick]]></category>
		<category><![CDATA[wordpress]]></category>
		<guid isPermaLink="false">https://www.hu365.dev/?p=172</guid>

					<description><![CDATA[参考文档： 一：WordPress站点健康 二：安装imagick 环境：linuxserver/nginx:latest [2022-11-04] 记得很久以前是不需要手动安装的，可能某一个版本之后又把这个组件移除了 查看更新日志： 有明确提到移除了php7 <a href="https://www.hu365.dev/blog/2022/11/172/" class="cosmoswp-btn">阅读更多</a>]]></description>
										<content:encoded><![CDATA[
<p>参考文档：</p>



<ul>
<li><a href="https://registry.hub.docker.com/r/linuxserver/nginx#Versions">linuxserver/nginx &#8211; Docker Image | Docker Hub</a></li>
</ul>



<h2 class="wp-block-heading">一：WordPress站点健康</h2>



<figure class="wp-block-image size-full"><a href="https://www.hu365.dev/wp-content/uploads/2022/11/1611290602-jpeg.webp"><img data-dominant-color="f0eceb" data-has-transparency="false" style="--dominant-color: #f0eceb;" decoding="async" width="480" height="175" src="https://www.hu365.dev/wp-content/uploads/2022/11/1611290602-jpeg.webp" alt="" class="not-transparent wp-image-173" srcset="https://www.hu365.dev/wp-content/uploads/2022/11/1611290602-jpeg.webp 480w, https://www.hu365.dev/wp-content/uploads/2022/11/1611290602-300x109.webp 300w" sizes="(max-width: 480px) 100vw, 480px" /></a></figure>



<h2 class="wp-block-heading">二：安装imagick</h2>



<p>环境：<code>linuxserver/nginx:latest</code> <code>[2022-11-04]</code></p>



<p>记得很久以前是不需要手动安装的，可能某一个版本之后又把这个组件移除了</p>



<p>查看更新日志：</p>



<figure class="wp-block-image size-full"><a href="https://www.hu365.dev/wp-content/uploads/2022/11/微信图片_20221110104004-jpeg.webp"><img data-dominant-color="f7f5f5" data-has-transparency="false" style="--dominant-color: #f7f5f5;" loading="lazy" decoding="async" width="822" height="471" src="https://www.hu365.dev/wp-content/uploads/2022/11/微信图片_20221110104004-jpeg.webp" alt="" class="not-transparent wp-image-174" srcset="https://www.hu365.dev/wp-content/uploads/2022/11/微信图片_20221110104004-jpeg.webp 822w, https://www.hu365.dev/wp-content/uploads/2022/11/微信图片_20221110104004-300x172.webp 300w, https://www.hu365.dev/wp-content/uploads/2022/11/微信图片_20221110104004-768x440.webp 768w" sizes="(max-width: 822px) 100vw, 822px" /></a><figcaption class="wp-element-caption"><a href="https://registry.hub.docker.com/r/linuxserver/nginx#Versions">linuxserver/nginx &#8211; Docker Image | Docker Hub</a></figcaption></figure>



<p>有明确提到移除了<code>php7-pecl-imagick</code>，并有写出自定义添加的方法：</p>



<p></p>



<figure class="wp-block-image size-full"><a href="https://www.hu365.dev/wp-content/uploads/2022/11/微信图片_20221110104253-jpg.webp"><img data-dominant-color="2e343a" data-has-transparency="false" style="--dominant-color: #2e343a;" loading="lazy" decoding="async" width="831" height="230" src="https://www.hu365.dev/wp-content/uploads/2022/11/微信图片_20221110104253-jpg.webp" alt="" class="not-transparent wp-image-175" srcset="https://www.hu365.dev/wp-content/uploads/2022/11/微信图片_20221110104253-jpg.webp 831w, https://www.hu365.dev/wp-content/uploads/2022/11/微信图片_20221110104253-300x83.webp 300w, https://www.hu365.dev/wp-content/uploads/2022/11/微信图片_20221110104253-768x213.webp 768w" sizes="(max-width: 831px) 100vw, 831px" /></a><figcaption class="wp-element-caption"><a href="https://github.com/linuxserver/docker-mods/tree/swag-imagemagick">linuxserver/docker-mods at swag-imagemagick (github.com)</a></figcaption></figure>



<p>在环境变量中添加：<code>-e DOCKER_MODS=linuxserver/mods:swag-imagemagick</code><br>或者选择用图形界面/其他方法都可以</p>



<h2 class="wp-block-heading">三：Happy Ending</h2>



<figure class="wp-block-image size-full"><a href="https://www.hu365.dev/wp-content/uploads/2022/11/微信图片_20221110104834-jpg.webp"><img data-dominant-color="f1f1f3" data-has-transparency="false" style="--dominant-color: #f1f1f3;" loading="lazy" decoding="async" width="646" height="432" src="https://www.hu365.dev/wp-content/uploads/2022/11/微信图片_20221110104834-jpg.webp" alt="" class="not-transparent wp-image-176" srcset="https://www.hu365.dev/wp-content/uploads/2022/11/微信图片_20221110104834-jpg.webp 646w, https://www.hu365.dev/wp-content/uploads/2022/11/微信图片_20221110104834-300x201.webp 300w" sizes="(max-width: 646px) 100vw, 646px" /></a></figure>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>一个前端工程启动报错的问题</title>
		<link>https://www.hu365.dev/blog/2022/10/167/</link>
		
		<dc:creator><![CDATA[Justin]]></dc:creator>
		<pubDate>Sun, 30 Oct 2022 04:08:00 +0000</pubDate>
				<category><![CDATA[折腾笔记]]></category>
		<category><![CDATA[BOM]]></category>
		<category><![CDATA[Byte order mark]]></category>
		<category><![CDATA[UTF-8]]></category>
		<guid isPermaLink="false">https://www.hu365.dev/?p=167</guid>

					<description><![CDATA[相关参考链接： 一：启动报错 在一个协作的前端工程，拉取代码之后，启动工程出现如下错误： 从错误日志看，是第一个字符JSON转换时就抛出错误 对比相关代码，并没有发现特殊的字符，甚至全选粘贴改成相同内容，仍然提示相同错误直接替换文件，或者回退到老版本又正常 于 <a href="https://www.hu365.dev/blog/2022/10/167/" class="cosmoswp-btn">阅读更多</a>]]></description>
										<content:encoded><![CDATA[
<p>相关参考链接：</p>



<ul>
<li><a href="https://zh.wikipedia.org/wiki/%E4%BD%8D%E5%85%83%E7%B5%84%E9%A0%86%E5%BA%8F%E8%A8%98%E8%99%9F">字节顺序标记 &#8211; 维基百科，自由的百科全书 (wikipedia.org)</a></li>



<li><a href="https://www.w3.org/International/questions/qa-byte-order-mark">The byte-order mark (BOM) in HTML (w3.org)</a></li>
</ul>



<h2 class="wp-block-heading">一：启动报错</h2>



<p>在一个协作的前端工程，拉取代码之后，启动工程出现如下错误：</p>



<figure class="wp-block-image size-large"><a href="https://www.hu365.dev/wp-content/uploads/2022/11/1611290602-1-jpg.webp"><img data-dominant-color="313338" data-has-transparency="false" style="--dominant-color: #313338;" loading="lazy" decoding="async" width="1024" height="365" src="https://www.hu365.dev/wp-content/uploads/2022/11/1611290602-1-1024x365.webp" alt="" class="not-transparent wp-image-178" srcset="https://www.hu365.dev/wp-content/uploads/2022/11/1611290602-1-1024x365.webp 1024w, https://www.hu365.dev/wp-content/uploads/2022/11/1611290602-1-300x107.webp 300w, https://www.hu365.dev/wp-content/uploads/2022/11/1611290602-1-768x274.webp 768w, https://www.hu365.dev/wp-content/uploads/2022/11/1611290602-1-jpg.webp 1093w" sizes="(max-width: 1024px) 100vw, 1024px" /></a><figcaption class="wp-element-caption">看起来是JSON转换报错</figcaption></figure>



<p>从错误日志看，是第一个字符<code>JSON</code>转换时就抛出错误</p>



<p>对比相关代码，并没有发现特殊的字符，甚至全选粘贴改成相同内容，仍然提示相同错误<br>直接替换文件，或者回退到老版本又正常</p>



<p>于是再对比差异，发现：</p>



<figure class="wp-block-image size-full"><a href="https://www.hu365.dev/wp-content/uploads/2022/11/微信图片_20221110112037-jpg.webp"><img data-dominant-color="33353b" data-has-transparency="false" style="--dominant-color: #33353b;" loading="lazy" decoding="async" width="695" height="183" src="https://www.hu365.dev/wp-content/uploads/2022/11/微信图片_20221110112037-jpg.webp" alt="" class="not-transparent wp-image-179" srcset="https://www.hu365.dev/wp-content/uploads/2022/11/微信图片_20221110112037-jpg.webp 695w, https://www.hu365.dev/wp-content/uploads/2022/11/微信图片_20221110112037-300x79.webp 300w" sizes="(max-width: 695px) 100vw, 695px" /></a></figure>



<p>编码没问题，但多出来的 BOM是什么</p>



<h2 class="wp-block-heading">二：<strong>字节顺序标记</strong></h2>



<h3 class="wp-block-heading">2.1：BOM（byte-order mark）</h3>



<blockquote class="wp-block-quote">
<p>是位于码点<code>U+FEFF</code>的统一码字符的名称。当以<code>UTF-16</code>或<code>UTF-32</code>来将<code>UCS/</code>统一码字符所组成的字符串编码时，这个字符被用来标示其字节序。它常被用来当做标示文件是以<code>UTF-8</code>、<code>UTF-16</code>或<code>UTF-32</code>编码的标记。</p>
<cite>中文维基百科</cite></blockquote>



<blockquote class="wp-block-quote">
<p>【谷歌翻译】</p>



<p>在 1993 年初引入<code>UTF-8</code>之前，传输<code>Unicode</code>文本的预期方式是使用 16 位代码单元，使用称为<code>UCS-2</code>的编码，后来扩展到<code>UTF-16</code>。16 位代码单元可以用两种方式表示为字节：最高有效字节在前（<code>big-endian</code>）或最低有效字节在前（<code>little-endian</code>）。为了传达正在使用的字节顺序，在流的开头使用了<code>U+FEFF</code>（字节顺序标记）作为幻数，该幻数在逻辑上不是流所表示的文本的一部分。</p>
<cite>W3C</cite></blockquote>



<h3 class="wp-block-heading">2.2：UTF-8 中的 BOM</h3>



<blockquote class="wp-block-quote">
<p>在<code>UTF-8</code>中，虽然在<code>Unicode</code>标准上允许字节顺序标记的存在，但实际上并不一定需要。<code>UTF-8</code>编码过的字节顺序标记则被用来标示它是<code>UTF-8</code>的文件。它只用来标示一个<code>UTF-8</code>的文件，而不用来说明字节顺序。</p>



<p>许多<code>Windows</code>程序（包含记事本）会需要添加字节顺序标记到<code>UTF-8</code>文件，否则将无法正确解析编码，而出现乱码。然而，在类<code>Unix</code>系统中，这种做法则不被建议采用。</p>



<p><code>Unicode</code>标准允许在<code>UTF-8</code>中使用<code>BOM</code>，但并不要求或推荐使用它。字节顺序在<code>UTF-8</code>中没有任何意义，所以它在<code>UTF-8</code>中的唯一用途是在开始时发出信号，表明文本流是用<code>UTF-8</code>编码的，或者表明它是从包含可选<code>BOM</code>的文本流转换到<code>UTF-8</code>的。</p>
<cite>中文维基百科</cite></blockquote>



<blockquote class="wp-block-quote">
<p>【谷歌翻译】</p>



<p>在<code>UTF-8</code>编码中，<code>BOM</code>的存在不是必需的，因为与<code>UTF-16</code>编码不同，字符中没有替代的字节序列。但是，<code>BOM</code>仍可能出现在<code>UTF-8</code>编码文本中，或者作为编码转换的副产品，或者因为它是由编辑器添加以将内容标记为<code>UTF-8</code>。在这种情况下，<code>BOM</code>通常称为<code>UTF-8</code>签名。</p>
<cite>W3C</cite></blockquote>



<h3 class="wp-block-heading">2.3：JSON 中的 BOM</h3>



<p>由于在文件前插入了不可见但又实际存在的字符（<code>\UFEFF</code>），导致<code>JSON</code>无法正常解析字符串<br>这就是问题所在</p>



<h2 class="wp-block-heading">三：解决方法</h2>



<p>本人使用<code>jetbrains</code>系列软件开发，软件中自带“添加”/“移除”<code>BOM</code>的选项<br>不过这个问题也不是很罕见的问题了，估摸着大部分编辑器应该都自带该选项功能</p>



<figure class="wp-block-image size-full"><a href="https://www.hu365.dev/wp-content/uploads/2022/11/微信图片_20221110121042-jpg.webp"><img data-dominant-color="3f3f43" data-has-transparency="false" style="--dominant-color: #3f3f43;" loading="lazy" decoding="async" width="528" height="494" src="https://www.hu365.dev/wp-content/uploads/2022/11/微信图片_20221110121042-jpg.webp" alt="" class="not-transparent wp-image-180" srcset="https://www.hu365.dev/wp-content/uploads/2022/11/微信图片_20221110121042-jpg.webp 528w, https://www.hu365.dev/wp-content/uploads/2022/11/微信图片_20221110121042-300x281.webp 300w" sizes="(max-width: 528px) 100vw, 528px" /></a></figure>



<p></p>



<p></p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>服务模型：IaaS、PaaS 和 SaaS</title>
		<link>https://www.hu365.dev/blog/2022/10/163/</link>
		
		<dc:creator><![CDATA[Justin]]></dc:creator>
		<pubDate>Sun, 16 Oct 2022 08:50:36 +0000</pubDate>
				<category><![CDATA[折腾笔记]]></category>
		<category><![CDATA[IAAS]]></category>
		<category><![CDATA[PAAS]]></category>
		<category><![CDATA[SAAS]]></category>
		<category><![CDATA[云服务]]></category>
		<guid isPermaLink="false">https://www.hu365.dev/?p=163</guid>

					<description><![CDATA[内容纯属搬运，相关参考链接： IaaS、PaaS、SaaS &#8211; 云服务模型概述 &#8211; 英特尔® (intel.cn) IaaS，PaaS，SaaS 的区别 &#8211; 阮一峰的网络日志 (ruanyifeng.com) 一：基础定义  <a href="https://www.hu365.dev/blog/2022/10/163/" class="cosmoswp-btn">阅读更多</a>]]></description>
										<content:encoded><![CDATA[
<p>内容纯属搬运，相关参考链接：</p>



<ul><li><a href="https://www.intel.cn/content/www/cn/zh/cloud-computing/as-a-service.html">IaaS、PaaS、SaaS &#8211; 云服务模型概述 &#8211; 英特尔® (intel.cn)</a></li><li><a href="https://www.ruanyifeng.com/blog/2017/07/iaas-paas-saas.html">IaaS，PaaS，SaaS 的区别 &#8211; 阮一峰的网络日志 (ruanyifeng.com)</a></li></ul>



<h2 class="wp-block-heading">一：基础定义</h2>



<h3 class="wp-block-heading">1.1：IaaS：Infrastructure-as-a-service</h3>



<p>基础设施服务<br>云服务提供商可以拥有并管理那些运行您的软件堆栈的硬件。它包括服务器、网络和存储</p>



<h3 class="wp-block-heading">1.2：PaaS：Platform-as-a-service</h3>



<p>平台服务<br>在<code>IaaS</code>基础服务的基础上，还提供了操作系统和数据库</p>



<h3 class="wp-block-heading">1.3：SaaS：Software-as-a-service</h3>



<p>软件服务<br>在<code>PaaS</code>平台服务的基础上，还提供了应用程序、功能和数据<br>为最终用户提供了最多的支持，是所有交付模型中最简单的一种</p>



<h2 class="wp-block-heading">二：图示对比</h2>



<figure class="wp-block-image size-full"><a href="https://www.hu365.dev/wp-content/uploads/2022/10/Understanding-IaaS-SaaS-and-PaaS-cloud-service-models-jpg.webp"><img data-dominant-color="b1c8c3" data-has-transparency="false" style="--dominant-color: #b1c8c3;" loading="lazy" decoding="async" width="854" height="479" src="https://www.hu365.dev/wp-content/uploads/2022/10/Understanding-IaaS-SaaS-and-PaaS-cloud-service-models-jpg.webp" alt="" class="not-transparent wp-image-164" srcset="https://www.hu365.dev/wp-content/uploads/2022/10/Understanding-IaaS-SaaS-and-PaaS-cloud-service-models-jpg.webp 854w, https://www.hu365.dev/wp-content/uploads/2022/10/Understanding-IaaS-SaaS-and-PaaS-cloud-service-models-300x168.webp 300w, https://www.hu365.dev/wp-content/uploads/2022/10/Understanding-IaaS-SaaS-and-PaaS-cloud-service-models-768x431.webp 768w, https://www.hu365.dev/wp-content/uploads/2022/10/Understanding-IaaS-SaaS-and-PaaS-cloud-service-models-512x288.webp 512w" sizes="(max-width: 854px) 100vw, 854px" /></a></figure>
]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
