<?xml version="1.0" encoding="UTF-8"?><rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>脆脆鲨的海底城堡</title><description>shack shack~</description><link>https://fuwari.vercel.app/</link><language>zh_CN</language><item><title>炸裂推文</title><link>https://fuwari.vercel.app/posts/crazy_post/</link><guid isPermaLink="true">https://fuwari.vercel.app/posts/crazy_post/</guid><pubDate>Tue, 14 Apr 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;转载，供各位参考：
曾经我还是处女的时候，看av里男优各种无套抽插，表情狰狞，应该是非常爽的。
所以就非常想知道做爱到底是啥感觉。
然而搜遍了各种论坛，虽然很多人号称身经百战，但他们描述做爱，词汇也极其匮乏，逃不出：紧，水多，嫩这几个词。实在叫人失望。
直到后来自己也身经百战，时常想着把这样的感觉准确的描述出来，供给现在还是处男的人参考。&lt;/p&gt;
&lt;p&gt;然而自己真正去写，却发现，一来事后很难准确记忆当时的感觉，二是不同人之间差异真的太小，我自己也很难准确区分，三是很难向没有经验的人描述一种感觉。看过我之前帖子的人都知道我这人认真起来是很变态的。我想了很多办法，尝试了多种文体，终于，我觉得我找到了可以稍微准确的描述的办法，于是记录。&lt;/p&gt;
&lt;p&gt;我相信这篇文章是全网唯一一篇同类型作品。以后可能也很难有人写这东西。&lt;/p&gt;
&lt;p&gt;以上是序。&lt;/p&gt;
&lt;p&gt;【阅读背景】
假设读者都是处男，或者经验人数很少的男性。
假设读者撸过管。
假设读者通过图片，视频，了解过女性器的外观。知道各部位的名称。&lt;/p&gt;
&lt;p&gt;【目录】&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;味道&lt;/li&gt;
&lt;li&gt;处女感觉&lt;/li&gt;
&lt;li&gt;正常位感觉&lt;/li&gt;
&lt;li&gt;后入感觉&lt;/li&gt;
&lt;li&gt;女上感觉&lt;/li&gt;
&lt;li&gt;内射感觉&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;【正文】&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;味道
如果事前洗澡，重点且仔细的清洁过阴唇区域，并且没有妇科疾病，那么整个阴唇区域都是没有味道的。即使凑近闻，也几乎闻不到任何味道。
这个区域留不住沐浴露的气味，因为接触面积太小了。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;如果清洁没那么细致，会留下2种常见的气味。一种是汗酸味，这个汗酸味跟男性运动后的汗味并不一样，没有那么浓烈，算得上是稀释后的汗味。
另一种常见气味是淡淡的血腥味，这个来源是阴道内的分泌物发酵和月经残留。
当然也有两种常见气味混合起来的，那种就相对更难闻一些。&lt;/p&gt;
&lt;p&gt;如果事前完全不洗澡，那整个下部会被更浓的尿骚味覆盖。&lt;/p&gt;
&lt;p&gt;以上是闻到的气味。&lt;/p&gt;
&lt;p&gt;如果是舔或者含住阴唇，那么通常只有2种味道：没有味道，或者淡咸味。
咸味和前面的汗酸味是同源，都是来自阴唇表面的汗腺分泌。这种味道非常淡，甚至阴唇表面被口水涂满稀释之后，也尝不出咸味了。
但如果洗澡的时候这个区域的沐浴露没有清洗彻底，会尝到苦味，那就是沐浴露的味道。&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;处女感觉
特别说明，这里只讨论处女膜没有破的类型。有些处女没有性经验，但处女膜破损，不在此讨论。我假设读者对处女和处女膜有正确认知，不再赘述科普。
从这一节开始，我们重点讨论阴茎本体的感觉。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;处女通常自身润滑的条件非常差，所以分两种情况介绍。
一种是自身不分泌润滑，要靠使用润滑剂助力插入。商用的人体润滑剂种类很多，这里以常见宇宙之爱为例。这种润滑剂只需要2滴即可提供丝滑且持久的润滑效果。
润滑好的龟头抵在处女膜前，会非常清晰的感受到前面是一个“无法穿透”的弹性实体，继续发力，到龟头实际穿过处女膜，通常会有一种错觉，觉得是龟头把这个弹性体压缩了，而不是穿透。但实际确实是进去了。
因为龟头是软的，这时的处女膜实际没有破裂。破裂发生在继续向前，阴茎体进入阴道至少一半的时候。
而进入一半的阴茎，主要感觉是从一个弹性物体穿过，进入了另外一个弱一点的弹性物体，能感受到这个物体四面八方包裹着阴茎，并把阴茎向外推。只要阴茎向后退一点，前面立刻被回填。
整根插入，可以感受到阴茎根部被一个比较均匀的力量包裹，龟头部分稍微宽松。阴茎在里面移动并没有太多的摩擦感，但阴茎根部巨大的压迫感会让快感迅速上升。
实时上这种紧迫感主要来自女生第一次做爱的紧张情绪，一些处女会在第一次做爱一段时候后，逐渐放松，阴茎根部的压迫感会逐渐消失。&lt;/p&gt;
&lt;p&gt;另一种是自身会分泌润滑（俗称淫水），自身润滑是一种稀薄，无色，无味的液体。相比商品润滑剂，自身润滑容易干，暴露在空气中不到一分钟就会失去润滑效果。
如果只依赖自身润滑，通常阴茎只能进入一半，就会遇到巨大的阻力，这个阻力来自失去润滑的阴道内壁被拉扯。这时候阴茎继续进入也会有被拉扯的轻微痛感。
如果自身润滑分泌充分，那么体验和使用商品润滑剂基本一致。
但如果自身润滑过量分泌（所谓的大量淫水），则会在阴茎插入后不久，阴道提前放松，阴茎根部的压迫感降低，整体体验和常规做爱区别不大。&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;正常位感觉
女在下，M字腿，男在上。这个姿势有不同的叫法，也有叫传教士的，这里就叫正常位。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;通常由于体型卡位，阴茎是无法完全进入的，会留1-2cm在外面。所以这个体位不讨论阴茎根部体验。
这个姿势的兼容性很高，无论男女身高差多少，总能通过调整角度，用这个姿势完成一场性爱。
于是，这一节里，我们重点讨论在无套条件下，不同女性的不同体验。
经过充分提前润滑（靠自身或者润滑剂），在这个姿势下都非常容易直接一插到底。在刚开始做的前几分钟，阴道通常没有完全展开，入口处略收紧。于是阴茎会感受到中后部受到均匀压迫，中部没有明显感觉。如果阴茎够长，龟头部会触抵到宫颈，是一个光滑的半球型硬物，基本没有弹性。
以上是对压力的感受。
当开始抽插移动时，不同女性的差异开始展现。对于靠自身润滑偏差的女性，阴茎感受到的是一种偏粘稠的肉感，你能非常清晰的感受到内部的一些颗粒在刮蹭阴茎和龟头。这种粘稠状态会持续很久 ，直到阴道缓慢的分泌出更多润滑。
对于润滑较好，或者润滑液倒太多的情况，通常会感受到内部极其丝滑，阴茎像在冰面上滑行一样，可以毫不费力的进出。而且通常主要快感都由压迫感提供，也比较微弱。&lt;/p&gt;
&lt;p&gt;在做爱前中期，阴道没有完全进入状态，内部是几乎没有收缩动作的。这里的收缩是指阴道无意识抽动，而非女生主动缩阴动作。
这两者的区别是，主动缩阴调动的是入口的肌肉，你会感觉到入口处像有一条宽橡皮筋突然紧勒了一下。可以尝试自己用拇指和食指构成一个环，不留缝隙的圈在阴茎中部，然后轻微而快速的收紧一下，就是同样的感觉。
而无意识收缩会发生在更内部一点，阴道中段，力道不大，那种感觉就像你在撸管时，有另一个人过来握住你的手轻轻按了一下，让你在习惯了一种压迫感的时候，随机的感受到一点变化。&lt;/p&gt;
&lt;p&gt;到了中后期，阴道充分舒展，压迫感降低，有经验的女生开始产生无意识收缩，而另外一些人全程会保持一个状态，没有收缩。对于阴茎而言，这意味着快感的轻微下降，但可以通过更快抽插弥补快感。&lt;/p&gt;
&lt;p&gt;也可以通过女生把腿并拢的姿势，增加相关肌肉的束紧力，把阴道压迫感恢复到刚开始做的水平。&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;后入感觉
后入也是一系列姿势的统称，有站地上后入，也有小狗式后入。但共性都是女生背对着。
所有的后入，感觉上与正常位都有较大区别。一个是后入的阴茎主要是背面与阴道接触，背面受的摩擦力更大，而背面神经更丰富。二个是在后入状态，女生通常更容易下意识收紧入口，导致入口附近一段距离有宽橡皮筋一样的束紧感。
但由于阴道支撑结构的关系，如果是小狗式后入，则阴道的深处会更加宽松，龟头在里面几乎没有明显感觉。如果是站立后入，则稍好。
并且由于屁股形状，后入通常也更难整根插入，在外面会留下2-4公分。但如何双方身高差合适，也有可能插到底，并且龟头碰到宫颈口。后入位感受到的宫颈口是一块凸起的硬块区域，位于龟头下方。如果阴茎够长，则是龟头系带和宫颈口摩擦。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;还有一种后入位是女生完全趴着，双腿张开。这个姿势对阴茎长度考验极大，如果能顺利插入，就能感受到前面的体验之外，额外增加跟正常位一样的均匀包裹感。&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;女上感觉
女上位，主要讨论男在下，女正面面对，在上的这一种姿势。
根据女生经验不同，分为两类。一类是经验较浅，以上下运动为主。这种情况阴道的包裹感比正常位弱，比后入强。但通常可以插入到底，并且子宫位置会因为重力往下移，所以也更容易顶到宫颈口，也就是每一下龟头都戳到一个硬物。这个感觉比较强，会覆盖掉不够强的阴道摩擦感，加上女生在上并不好动，速度比较慢，整体的快感比较弱。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;另一类就是经过一定训练，掌握了女上技巧。在合适的坐姿下，在下的男生不会承受太多的女身体重，并且女生也比较好发力。可以上下和前后运动，也就是一般人说的，会“摇”。这种感觉是阴茎的背面和腹面分别承受阴道摩擦，背面受力时和后入感觉类似，腹面受力时和正常位插入类似。但区别是前后运动的移动距离一般不大，相当于阴茎一直保持着深度插入状态，只有阴茎根部一段在参与摩擦。&lt;/p&gt;
&lt;p&gt;这里我们没有讨论女上位的其他女生技巧。有些人确实可以在运动时配合一些主动收缩动作，来增加快感的多样性。但这个因人而异，而且也不是主要快感来源。所以不展开。&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;内射感觉
只要会撸管，就会射精。射精的感觉当然不用我描述。所以这一节重点讲讲在阴道里射精，和用手撸，或者戴套射，体外射，到底有什么区别。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;首先，前面几节有讲到在阴道里的快感是相对温和，均匀的。所以到达高潮的过程，通常也不会很快，也是呈缓慢上升的状态。在经过一段时间的摩擦之后，阴道内的温度会比最开始轻微的上升，并且内部的润滑也更丰富。这时候阴茎只会感受到一个湿润，微热的柔软通道，感受不到其他细节。
射精发生时，如果阴茎抵到了最深处，则可以感受到射出的精液迅速包裹了龟头，精液的温度并没有比阴道内更高，所以只会感受到有偏稠的液体在前面，没有温度差。而如果阴茎没有到底，那么射出的精液不会堆积在龟头，你也只会感受到阴茎在受约束的软肉里抽动，感受不到精液是如何喷出去的。&lt;/p&gt;
&lt;p&gt;那么可以理解，在最后阶段拔出外射，就相当于一下子失去了软肉的约束，阴茎的快感突然下降，后面就和用手撸射的体验差不多了。&lt;/p&gt;
&lt;p&gt;而戴套，主要差异点在于射精时，大量精液堆积在套里，会阻塞后面精液的喷出，而让你有一种轻微的射不出去的错觉。&lt;/p&gt;
&lt;p&gt;当然如果射精时，女生主动配合进行收缩，夹紧。会产生一种类似二次高潮的感觉，也就是男生在射精的第一次喷射是高潮顶峰，之后每次喷射快感都弱于前一次。二次高潮就是在后面的某次喷射时，再次快感上升，超越前一次。但就算女生配合，这样的感觉也不是每次都有&lt;/p&gt;
</content:encoded></item><item><title>Nginx 启用 webdav</title><link>https://fuwari.vercel.app/posts/webdav/</link><guid isPermaLink="true">https://fuwari.vercel.app/posts/webdav/</guid><pubDate>Wed, 09 Jul 2025 00:00:00 GMT</pubDate><content:encoded>&lt;h2&gt;Nginx 启用 webdav 服务&lt;/h2&gt;
&lt;pre&gt;&lt;code&gt;server {
        listen 443 ssl;
        server_name example.com;

        ssl_certificate &amp;lt;/path/to/crt&amp;gt;;
        ssl_certificate_key &amp;lt;/path/to/key&amp;gt;;

        ssl_protocols TLSv1.2 TLSv1.3;
        ssl_ciphers HIGH:!aNULL:!MD5:!ADH:!RC4:!DH:!DHE;
        ssl_prefer_server_ciphers on;
        ssl_session_cache shared:SSL:10m;
        ssl_session_timeout 10m;

        location /webdav {
                return 301 /webdav/;
        }

        location /webdav/ {
                alias /exdisk/;
                dav_methods PUT DELETE MKCOL COPY MOVE PROPFIND REPORT;
                create_full_put_path on;
                dav_access user:rw group:rw all:r;
                autoindex on;
                auth_basic &quot;WebDAV Restricted Access&quot;;
                auth_basic_user_file /etc/nginx/.htpasswd;
        }
        error_log /var/log/nginx/webdav_error.log warn;
        access_log /var/log/nginx/webdav_access.log;
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;:::note
如果要在第三方 app(如 Infuse) 中使用 webdav，则需要自行编译 Nginx 添加 profind
:::&lt;/p&gt;
&lt;h2&gt;webdav 启用认证&lt;/h2&gt;
&lt;pre&gt;&lt;code&gt;# 首先安装 apache-util
sudo apt install apache-util -y

# 生成认证信息，根据提示输入密码
htpasswd -c /path/to/.htaccess [username]
&lt;/code&gt;&lt;/pre&gt;
</content:encoded></item><item><title>那些假装会看的技术文档</title><link>https://fuwari.vercel.app/posts/learndocs/</link><guid isPermaLink="true">https://fuwari.vercel.app/posts/learndocs/</guid><pubDate>Mon, 28 Apr 2025 00:00:00 GMT</pubDate><content:encoded>&lt;h2&gt;技术文档收录&lt;/h2&gt;
&lt;h3&gt;JavaScript&lt;/h3&gt;
&lt;p&gt;&lt;a href=&quot;https://zh.javascript.info/&quot;&gt;现代 JavaScript 教程&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;https://zh.javascript.info/&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;TypeScript&lt;/h3&gt;
&lt;p&gt;&lt;a href=&quot;https://jkchao.github.io/typescript-book-chinese/&quot;&gt;深入理解 TypeScript&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;https://jkchao.github.io/typescript-book-chinese/&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Next.js&lt;/h3&gt;
&lt;p&gt;&lt;a href=&quot;https://nextjscn.org/docs&quot;&gt;Next.js 文档&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;https://nextjscn.org/docs&lt;/li&gt;
&lt;/ul&gt;
</content:encoded></item><item><title>ImmortalWRT 编译 dockerd 错误</title><link>https://fuwari.vercel.app/posts/opcompile/</link><guid isPermaLink="true">https://fuwari.vercel.app/posts/opcompile/</guid><pubDate>Fri, 25 Apr 2025 00:00:00 GMT</pubDate><content:encoded>&lt;h1&gt;ImmortalWRT 编译错误&lt;/h1&gt;
&lt;blockquote&gt;
&lt;p&gt;当然部分也适用于 &lt;em&gt;&lt;strong&gt;OpenWRT&lt;/strong&gt;&lt;/em&gt; ~&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2&gt;编译 dockerd 错误&lt;/h2&gt;
&lt;h3&gt;错误描述&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;# Verify CLI is the same version
( CLI_MAKEFILE=&quot;../docker/Makefile&quot;; CLI_VERSION=$( grep --only-matching --perl-regexp &apos;(?&amp;lt;=PKG_VERSION:=)(.*)&apos; &quot;${CLI_MAKEFILE}&quot; ); if [ &quot;${CLI_VERSION}&quot; != &quot;27.3.1&quot; ]; then echo &quot;ERROR: Expected &apos;PKG_VERSION:=27.3.1&apos; in &apos;${CLI_MAKEFILE}&apos;, found &apos;PKG_VERSION:=${CLI_VERSION}&apos;&quot;; exit 1; fi )
# Verify PKG_GIT_SHORT_COMMIT
( EXPECTED_PKG_GIT_SHORT_COMMIT=$( /home/immortalwrt/feeds/smpackage/dockerd/git-short-commit.sh &apos;github.com/moby/moby&apos; &apos;v27.3.1&apos; &apos;/home/immortalwrt/tmp/git-short-commit/dockerd-27.3.1&apos; ); if [ &quot;${EXPECTED_PKG_GIT_SHORT_COMMIT}&quot; != &quot;c710b88&quot; ]; then echo &quot;ERROR: Expected &apos;PKG_GIT_SHORT_COMMIT:=${EXPECTED_PKG_GIT_SHORT_COMMIT}&apos;, found &apos;PKG_GIT_SHORT_COMMIT:=c710b88&apos;&quot;; exit 1; fi )
Trying remote &apos;github.com/moby/moby&apos;
fatal: &apos;github.com/moby/moby&apos; does not appear to be a git repository
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.
Trying remote &apos;https://github.com/moby/moby&apos;
From https://github.com/moby/moby
 * tag               v27.3.1    -&amp;gt; FETCH_HEAD
HEAD is now at 41ca978 Merge pull request #48525 from thaJeztah/27.x_backport_govulncheck_permissions
ERROR: Expected &apos;PKG_GIT_SHORT_COMMIT:=41ca978&apos;, found &apos;PKG_GIT_SHORT_COMMIT:=c710b88&apos;
make[2]: *** [Makefile:199: /home/immortalwrt/build_dir/target-x86_64_musl/dockerd-27.3.1/.prepared_9f6697b8d87997c892a7544841d20b42_6664517399ebbbc92a37c5bb081b5c53] Error 1
make[2]: Leaving directory &apos;/home/immortalwrt/feeds/smpackage/dockerd&apos;
time: package/feeds/smpackage/dockerd/compile#1.06#0.98#5.13
    ERROR: package/feeds/smpackage/dockerd failed to build.
make[1]: *** [package/Makefile:179: package/feeds/smpackage/dockerd/compile] Error 1
make[1]: Leaving directory &apos;/home/immortalwrt&apos;
make: *** [/home/immortalwrt/include/toplevel.mk:233: package/feeds/smpackage/dockerd/compile] Error 2
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;解决方法&lt;/h3&gt;
&lt;p&gt;问题原因是使用的 &lt;code&gt;small-package&lt;/code&gt; 包中 &lt;code&gt;dockerd&lt;/code&gt; 版本与 &lt;code&gt;luci-app-dockerman&lt;/code&gt; 版本不一致，且 &lt;em&gt;&lt;strong&gt;Makefile&lt;/strong&gt;&lt;/em&gt; 文件中搜索路径有问题&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;注意，因为上游项目会不定时更新，因此显示的版本会与本文不一致；
需要自行判断，修改文件&lt;/p&gt;
&lt;/blockquote&gt;
&lt;pre&gt;&lt;code&gt;PKG_NAME:=dockerd
PKG_VERSION:=27.3.1
PKG_RELEASE:=1
PKG_LICENSE:=Apache-2.0
PKG_LICENSE_FILES:=LICENSE

PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_GIT_URL:=github.com/moby/moby
PKG_GIT_REF:=v$(PKG_VERSION)
PKG_SOURCE_URL:=https://codeload.$(PKG_GIT_URL)/tar.gz/$(PKG_GIT_REF)?
PKG_HASH:=d18208d9e0b6421307342cdef266193984c97c87177b9262b1113e6e9e7e020e
# PKG_HASH:=5c9402ef5886be7683260a424c02de199b45b7e15633d90e03faaf672f7041fc
PKG_GIT_SHORT_COMMIT:=41ca978
# 修改下面文件路径，也可改为绝对路径

define Build/Prepare
	$(Build/Prepare/Default)
	# Verify dependencies are the vendored version
	$(call EnsureVendoredVersion,../../packages/utils/containerd/Makefile,containerd.installer)
	$(call EnsureVendoredVersion,../../packages/utils/runc/Makefile,runc.installer)
	$(call EnsureVendoredVersion,../../packages/utils/tini/Makefile,tini.installer)

&lt;/code&gt;&lt;/pre&gt;
</content:encoded></item><item><title>开发中自用环境配置工具</title><link>https://fuwari.vercel.app/posts/myenv/</link><guid isPermaLink="true">https://fuwari.vercel.app/posts/myenv/</guid><pubDate>Thu, 24 Apr 2025 00:00:00 GMT</pubDate><content:encoded>&lt;h2&gt;开发中一些环境配置工具&lt;/h2&gt;
&lt;h3&gt;Python&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;使用 &lt;code&gt;uv&lt;/code&gt; 进行管理&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h4&gt;Linux/MacOS 安装&lt;/h4&gt;
&lt;pre&gt;&lt;code&gt;curl -LsSf https://astral.sh/uv/install.sh | sh
&lt;/code&gt;&lt;/pre&gt;
&lt;h4&gt;Windows 安装&lt;/h4&gt;
&lt;pre&gt;&lt;code&gt;scoop install uv                # 如果安装了 scoop
winget install --id astral-sh.uv -e
&lt;/code&gt;&lt;/pre&gt;
&lt;h4&gt;通过 pipx 安装&lt;/h4&gt;
&lt;pre&gt;&lt;code&gt;pipx install uv | pip install uv
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;安装特定版本 python&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;uv python list
uv python install 3.11
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;uv 基本使用&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;# 创建 venv 环境
uv venv .venv                   # uv venv &amp;lt;name&amp;gt;
source .venv/Script/activate    # 激活虚拟环境

# 创建 python 项目
uv init

# 添加 python 项目需要的包
# uv add 可以导出对应 requirements.txt
uv add &amp;lt;package_name&amp;gt;
uv pip install &amp;lt;package_name&amp;gt;

# 清理包
# uv remove 可以移除所有的依赖包
uv remove &amp;lt;package_name&amp;gt;
uv pip uninstall &amp;lt;package_name&amp;gt;

# 清理环境
uv clean                        # 删除当前目录内容
uv cache clean                  # 清理 cache 目录

# 同步其余项目环境
uv sync                         # 类似 pip install -r requirements.txt

# 运行 python 文件
uv run example.py
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;NodeJS&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;使用 fnm+pnpm 进行管理&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h4&gt;fnm 安装&lt;/h4&gt;
&lt;pre&gt;&lt;code&gt;curl -fsSL https://fnm.vercel.app/install | bash
# 如果 shell 是 zsh、bash 和 fish
curl -fsSL https://raw.githubusercontent.com/Schniz/fnm/refs/heads/master/.ci/install.sh | sh -
&lt;/code&gt;&lt;/pre&gt;
&lt;h4&gt;fnm 使用&lt;/h4&gt;
&lt;pre&gt;&lt;code&gt;fnm install --lts
&lt;/code&gt;&lt;/pre&gt;
&lt;h4&gt;pnpm 安装&lt;/h4&gt;
&lt;pre&gt;&lt;code&gt;curl -fsSL https://get.pnpm.io/install.sh | sh -
&lt;/code&gt;&lt;/pre&gt;
</content:encoded></item><item><title>富士 X-H2 场景参数</title><link>https://fuwari.vercel.app/posts/fujipara/</link><guid isPermaLink="true">https://fuwari.vercel.app/posts/fujipara/</guid><pubDate>Thu, 03 Apr 2025 00:00:00 GMT</pubDate><content:encoded>&lt;h2&gt;场景参数设置&lt;/h2&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;场景&lt;/th&gt;
&lt;th&gt;胶片模拟&lt;/th&gt;
&lt;th&gt;白平衡&lt;/th&gt;
&lt;th&gt;色调曲线&lt;/th&gt;
&lt;th&gt;色彩效果&lt;/th&gt;
&lt;th&gt;彩色FX蓝色&lt;/th&gt;
&lt;th&gt;颜色&lt;/th&gt;
&lt;th&gt;动态范围&lt;/th&gt;
&lt;th&gt;其他参数&lt;/th&gt;
&lt;th&gt;核心调整逻辑&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;室外晴天 (正午)&lt;/td&gt;
&lt;td&gt;ProNeg.Std / Classic Chrome&lt;/td&gt;
&lt;td&gt;5600K-6000K 偏移 R+1 B-1&lt;/td&gt;
&lt;td&gt;H-2 S+1&lt;/td&gt;
&lt;td&gt;弱&lt;/td&gt;
&lt;td&gt;-2&lt;/td&gt;
&lt;td&gt;-1&lt;/td&gt;
&lt;td&gt;DR400%&lt;/td&gt;
&lt;td&gt;曝光补偿 -0.3EV&lt;/td&gt;
&lt;td&gt;压制高光过曝，降低黄红偏色，ProNeg.Std 柔化肤色，Classic Chrome 需谨慎高对比&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;室外晴天 (晨/昏)&lt;/td&gt;
&lt;td&gt;Astia / Classic Negative&lt;/td&gt;
&lt;td&gt;5200K-5400K 偏移 R+1 B-2&lt;/td&gt;
&lt;td&gt;H 0 S 0&lt;/td&gt;
&lt;td&gt;强&lt;/td&gt;
&lt;td&gt;0&lt;/td&gt;
&lt;td&gt;0&lt;/td&gt;
&lt;td&gt;DR200%&lt;/td&gt;
&lt;td&gt;-&lt;/td&gt;
&lt;td&gt;保留自然光影，Astia 柔滑肤色，Classic Negative 增强暖调，需注意暗部偏绿&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;室内水族馆&lt;/td&gt;
&lt;td&gt;Eterna / ProNeg.Hi&lt;/td&gt;
&lt;td&gt;3200K-4000K 偏移 R+2 B-4&lt;/td&gt;
&lt;td&gt;H-1 S+2&lt;/td&gt;
&lt;td&gt;强&lt;/td&gt;
&lt;td&gt;-3&lt;/td&gt;
&lt;td&gt;-2&lt;/td&gt;
&lt;td&gt;-&lt;/td&gt;
&lt;td&gt;ISO 1600-6400 降噪 -2&lt;/td&gt;
&lt;td&gt;大幅削弱蓝光污染，Eterna 低饱和电影感，ProNeg.Hi 需提亮阴影补偿高 ISO 下的灰暗肤色&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;室外阴天/多云&lt;/td&gt;
&lt;td&gt;Classic Chrome / ProNeg.Std&lt;/td&gt;
&lt;td&gt;6000K-6500K 偏移 R+2 B-1&lt;/td&gt;
&lt;td&gt;H+1 S-1&lt;/td&gt;
&lt;td&gt;中&lt;/td&gt;
&lt;td&gt;+1&lt;/td&gt;
&lt;td&gt;+1&lt;/td&gt;
&lt;td&gt;DR200%&lt;/td&gt;
&lt;td&gt;-&lt;/td&gt;
&lt;td&gt;Classic Chrome 增强冷调对比，ProNeg.Std 需提高饱和度补偿阴天色偏&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;室内商场 (复杂光)&lt;/td&gt;
&lt;td&gt;PROVIA / Classic Negative&lt;/td&gt;
&lt;td&gt;自动白平衡 (AWB) 微调 R+1 B-2&lt;/td&gt;
&lt;td&gt;H-1 S+1&lt;/td&gt;
&lt;td&gt;弱&lt;/td&gt;
&lt;td&gt;-1&lt;/td&gt;
&lt;td&gt;0&lt;/td&gt;
&lt;td&gt;DR400%&lt;/td&gt;
&lt;td&gt;点测光+人脸识别&lt;/td&gt;
&lt;td&gt;PROVIA 平衡混合光源，Classic Negative 需提亮暗部防偏绿，优先保护高光细节&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h2&gt;通用技巧&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;RAW 格式&lt;/strong&gt;：复杂光线下建议拍摄 RAW，便于后期调整白平衡和色彩&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;曝光补偿&lt;/strong&gt;：
&lt;ul&gt;
&lt;li&gt;强光场景：-0.3EV&lt;/li&gt;
&lt;li&gt;阴天或暗光：+0.7EV&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;肤色优化&lt;/strong&gt;：
&lt;ul&gt;
&lt;li&gt;开启肤色优先模式&lt;/li&gt;
&lt;li&gt;或通过白平衡偏移微调 (如 R +1, B -1 提升红润感)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;实时预览&lt;/strong&gt;：通过 EVF/LCD 直接观察色彩效果，快速调整参数&lt;/li&gt;
&lt;/ol&gt;
</content:encoded></item><item><title>Windows+WSL 实战</title><link>https://fuwari.vercel.app/posts/wsl/</link><guid isPermaLink="true">https://fuwari.vercel.app/posts/wsl/</guid><pubDate>Wed, 02 Apr 2025 00:00:00 GMT</pubDate><content:encoded>&lt;h2&gt;WSL 安装&lt;/h2&gt;
&lt;blockquote&gt;
&lt;p&gt;以下内容针对 Windows 中没有 wsl 命令的机器，若有可直接跳过&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;安装条件： Windows 10 版本 2004 及更高版本（内部版本 19041 及更高版本）或 Windows 11&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/blockquote&gt;
&lt;p&gt;以管理员身份打开 PowerShell （&amp;gt; PowerShell &amp;gt; 右键单击 &amp;gt; 以管理员身份运行） 并输入以下命令：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;重启并执行 &lt;code&gt;wsl --set-default-version 2&lt;/code&gt; 设置 wsl2 为默认版本&lt;/p&gt;
&lt;h2&gt;WSL 使用&lt;/h2&gt;
&lt;h3&gt;安装 Linux 分发版 (以 Debian 为例)&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;# 列出可用的 Linux 分发版
wsl --list --online
# 以下是可安装的有效分发的列表。
# 使用 &apos;wsl.exe --install &amp;lt;Distro&amp;gt;&apos; 安装。
# NAME                            FRIENDLY NAME
# AlmaLinux-8                     AlmaLinux OS 8
# AlmaLinux-9                     AlmaLinux OS 9
# AlmaLinux-Kitten-10             AlmaLinux OS Kitten 10
# Debian                          Debian GNU/Linux
# SUSE-Linux-Enterprise-15-SP5    SUSE Linux Enterprise 15 SP5
# SUSE-Linux-Enterprise-15-SP6    SUSE Linux Enterprise 15 SP6
# Ubuntu                          Ubuntu
# Ubuntu-24.04                    Ubuntu 24.04 LTS
# kali-linux                      Kali Linux Rolling
# openSUSE-Tumbleweed             openSUSE Tumbleweed
# openSUSE-Leap-15.6              openSUSE Leap 15.6
# Ubuntu-18.04                    Ubuntu 18.04 LTS
# Ubuntu-20.04                    Ubuntu 20.04 LTS
# Ubuntu-22.04                    Ubuntu 22.04 LTS
# OracleLinux_7_9                 Oracle Linux 7.9
# OracleLinux_8_7                 Oracle Linux 8.7
# OracleLinux_9_1                 Oracle Linux 9.1
# 安装发行版
# wsl --install -d Debian
wsl --install -d &amp;lt;Distro&amp;gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;(可选) 更改 Linux 发行版安装位置&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;# 列出已经安装的发行版
wsl -l -v
#   NAME      STATE           VERSION
# * Debian    Running         2
# wsl --export &amp;lt;NAME&amp;gt; &amp;lt;PATH&amp;gt;
wsl --export Debian L:\debian.tar
# 等待导出完成后注销原有的发行版
# wsl --unregister &amp;lt;NAME&amp;gt;
wsl --unregister Debian
# 在新位置安装
# wsl --import &amp;lt;NAME&amp;gt; &amp;lt;新地址&amp;gt; &amp;lt;源地址&amp;gt;
wsl --import Debian L:\wsl\ L:\debian.tar
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;WSL 设置&lt;/h3&gt;
&lt;p&gt;新版本 WSL 可以使用 GUI 应用 *** WSL Settings ***管理，&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;[wsl2]
# 分配内存大小
memory=8G
# 分配核心数量
processors=6
# 交换空间
swap=4G
# 设置为 mirrored 可以同步宿主机上的网络环境
# 强烈建议开启!!!
networkingMode=mirrored
# 分配的磁盘大小
defaultVhdSize=25G
# 如果需要使用公司类的 VPN 啧设置为 true
autoProxy=false
[experimental]
# 检测空闲 CPU 使用率后，自动释放缓存的内存
# 设置为 gradual 以慢速释放缓存的内存，设置为 dropCache 以立即释放缓存的内存
autoMemoryReclaim=dropCache
# 如果设置为 True，将会允许容器通过分配给主机的 IP 地址连接到主机，或允许主机通过该地址连接到容器
hostAddressLoopback=true
# 新创建的 VHD 将自动设置为稀疏
sparseVhd=true
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;与 Windows 联动设置&lt;/h2&gt;
&lt;h3&gt;终端设置&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;终端指 Windows 的 &lt;strong&gt;终端&lt;/strong&gt; 应用&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h4&gt;更改字体&lt;/h4&gt;
&lt;p&gt;如果要使用 &lt;code&gt;zsh&lt;/code&gt; 类似终端，请下载 *** Nerd Font *** 字体&lt;/p&gt;
&lt;p&gt;&lt;code&gt;&amp;lt;NAME&amp;gt; -&amp;gt; 外观 -&amp;gt; 字体&lt;/code&gt;&lt;/p&gt;
&lt;h4&gt;终端滚动&lt;/h4&gt;
&lt;p&gt;&lt;code&gt;&amp;lt;NAME&amp;gt; -&amp;gt; 高级 -&amp;gt; 历史记录大小 -&amp;gt; 999999&lt;/code&gt;&lt;/p&gt;
&lt;h3&gt;使用 VSCode 编辑文件&lt;/h3&gt;
&lt;p&gt;在 VSCode 中安装 &lt;strong&gt;WSL&lt;/strong&gt; 插件，即可在 WSL 中通过 &lt;code&gt;code&lt;/code&gt; 命令启动&lt;/p&gt;
&lt;h4&gt;已知问题&lt;/h4&gt;
&lt;p&gt;通过 &lt;code&gt;code .&lt;/code&gt; 启动 VSCode 时可能会遇到 VSCode 启动后 WSL 立即关闭的情况&lt;/p&gt;
&lt;p&gt;可通过卸载 WSL 插件，在 WSL Console 中通过 &lt;code&gt;code&lt;/code&gt; 来唤起安装插件即可解决&lt;/p&gt;
&lt;h3&gt;编译设置&lt;/h3&gt;
&lt;p&gt;由于 WSL 中 PATH 路径会有 Windows 的环境变量，在编译时推荐使用下面命令编译&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;make PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;或者修改 &lt;code&gt;/etc/wsl.conf&lt;/code&gt; 文件，设置 &lt;code&gt;appendWindowsPath=false&lt;/code&gt; 禁止加载 Windows 环境变量&lt;/p&gt;
</content:encoded></item><item><title>重装 Windows 时跳过微软账户登录</title><link>https://fuwari.vercel.app/posts/skipwinacc/</link><guid isPermaLink="true">https://fuwari.vercel.app/posts/skipwinacc/</guid><pubDate>Mon, 31 Mar 2025 00:00:00 GMT</pubDate><content:encoded>&lt;ol&gt;
&lt;li&gt;在 Windows 11 OOBE 登录用户账户界面按 Shift+F10 打开命令提示符 (CMD)&lt;/li&gt;
&lt;li&gt;在命令提示符窗口中输入命令 &lt;code&gt;start ms-cxh:localonly&lt;/code&gt; 按回车&lt;/li&gt;
&lt;li&gt;此时系统将自动打开微软账户管理的窗口，在这里可以输入用户名称&lt;/li&gt;
&lt;li&gt;在这里输入用户名和密码后继续即可，此时不再需要 BypassNRO 脚本或注册表&lt;/li&gt;
&lt;/ol&gt;
&lt;h3&gt;旧时跳过联网方法&lt;/h3&gt;
&lt;p&gt;使用 &lt;code&gt;OOBE\BYPASSNRO&lt;/code&gt; 跳过&lt;/p&gt;
</content:encoded></item><item><title>富士相机胶片模拟</title><link>https://fuwari.vercel.app/posts/fujicam/</link><guid isPermaLink="true">https://fuwari.vercel.app/posts/fujicam/</guid><pubDate>Tue, 18 Mar 2025 00:00:00 GMT</pubDate><content:encoded>&lt;blockquote&gt;
&lt;p&gt;以下内容由 deepseek 生成&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3&gt;PROVIA/标准（万能基准）&lt;/h3&gt;
&lt;p&gt;效果：5%蓝色增强 + 3%绿色提亮&lt;/p&gt;
&lt;p&gt;场景：晴天街拍/产品摄影，X-H2的ISO160-12800表现最稳定&lt;/p&gt;
&lt;h3&gt;Velvia/鲜艳（自然风光）&lt;/h3&gt;
&lt;p&gt;红色饱和度+18%，绿色亮度-15%&lt;/p&gt;
&lt;p&gt;场景：日出/秋叶，搭配X-H2的像素位移功能可提升30%细节&lt;/p&gt;
&lt;h3&gt;ASTIA/柔和（人像专精）&lt;/h3&gt;
&lt;p&gt;橙色明度+8%，黄色色相偏绿3°&lt;/p&gt;
&lt;p&gt;场景：逆光人像/婚礼跟拍，建议开启「皮肤柔化」功能&lt;/p&gt;
&lt;h3&gt;Classic Chrome（纪实经典）&lt;/h3&gt;
&lt;p&gt;降低2档高光曲线，阴影添加5%青色&lt;/p&gt;
&lt;p&gt;场景：咖啡馆/城市街景，配合X-H2的「阴影色调-2」效果最佳&lt;/p&gt;
&lt;h3&gt;PRO Neg.Hi（商业摄影）&lt;/h3&gt;
&lt;p&gt;动态范围扩展15%，保留±4EV细节&lt;/p&gt;
&lt;p&gt;场景：服装静物/建筑摄影，需搭配X-H2的HEIF格式&lt;/p&gt;
&lt;h3&gt;PRO Neg.Standard（影棚人像）&lt;/h3&gt;
&lt;p&gt;洋红色饱和度-20%，肤色过渡更平滑&lt;/p&gt;
&lt;p&gt;场景：商业人像，建议关闭「色彩效果」设置&lt;/p&gt;
&lt;h3&gt;黑白（高对比）&lt;/h3&gt;
&lt;p&gt;红色滤镜等效效果，天空压暗15%&lt;/p&gt;
&lt;p&gt;场景：建筑结构/抽象摄影，搭配ND滤镜效果更佳&lt;/p&gt;
&lt;h3&gt;黑白+Ye滤镜（黄镜模拟）&lt;/h3&gt;
&lt;p&gt;蓝色通道降30%亮度，云层层次增强&lt;/p&gt;
&lt;p&gt;场景：风光转黑白，建议ISO控制在400以下&lt;/p&gt;
&lt;h3&gt;黑白+R滤镜（红镜特效）&lt;/h3&gt;
&lt;p&gt;绿色通道降50%，增强树叶纹理&lt;/p&gt;
&lt;p&gt;场景：森林/植被特写，需开启「清晰度+2」&lt;/p&gt;
&lt;h3&gt;黑白+G滤镜（绿镜模拟）&lt;/h3&gt;
&lt;p&gt;红色通道降40%，肤色更柔和&lt;/p&gt;
&lt;p&gt;场景：肖像转黑白，建议搭配柔光罩使用&lt;/p&gt;
&lt;h3&gt;Sepia/怀旧棕（复古特效）&lt;/h3&gt;
&lt;p&gt;添加15%棕色调，高光泛黄&lt;/p&gt;
&lt;p&gt;场景：历史建筑/古董物件，建议开启「颗粒效果」&lt;/p&gt;
&lt;h3&gt;Classic Neg.经典负片（胶片质感）&lt;/h3&gt;
&lt;p&gt;青色阴影偏移+8%，橙色高光增强&lt;/p&gt;
&lt;p&gt;场景：扫街/日常记录，搭配「色彩+1」效果更明显&lt;/p&gt;
&lt;h3&gt;ETERNA（电影级视频）&lt;/h3&gt;
&lt;p&gt;压缩30%动态范围，阴影添加灰阶&lt;/p&gt;
&lt;p&gt;场景：阴天视频拍摄，必须开启F-Log模式&lt;/p&gt;
&lt;h3&gt;ETERNA Bleach Bypass（高对比电影）&lt;/h3&gt;
&lt;p&gt;饱和度降60%，对比度+25%&lt;/p&gt;
&lt;p&gt;场景：情绪化短片，需手动控制曝光+1.5档&lt;/p&gt;
&lt;h3&gt;Nostalgic Neg.怀旧负片（褪色回忆）&lt;/h3&gt;
&lt;p&gt;黄绿色偏移+12%，高光泛琥珀色&lt;/p&gt;
&lt;p&gt;场景：雨天/废墟探索，建议关闭「清晰度」设置&lt;/p&gt;
&lt;h3&gt;Acros（细腻灰阶）&lt;/h3&gt;
&lt;p&gt;红色敏感度提高20%，保留更多暗部细节&lt;/p&gt;
&lt;p&gt;场景：人文纪实，建议使用X-H2的8K视频截图&lt;/p&gt;
&lt;h3&gt;Acros+Ye滤镜（黄镜优化）&lt;/h3&gt;
&lt;p&gt;蓝色降35%，增强金属反光&lt;/p&gt;
&lt;p&gt;场景：工业摄影/机械特写，需搭配偏振镜&lt;/p&gt;
&lt;h3&gt;Acros+R滤镜（红镜强化）&lt;/h3&gt;
&lt;p&gt;绿色通道降55%，增强木质纹理&lt;/p&gt;
&lt;p&gt;场景：古建筑内部，建议ISO不超过1600&lt;/p&gt;
&lt;h3&gt;Acros+G滤镜（绿镜特调）&lt;/h3&gt;
&lt;p&gt;红色降45%，肤色过渡更自然&lt;/p&gt;
&lt;p&gt;场景：舞台剧/戏剧拍摄，需配合3200K白平衡&lt;/p&gt;
</content:encoded></item><item><title>Linux 下安装 oh-my-zsh</title><link>https://fuwari.vercel.app/posts/zsh/</link><guid isPermaLink="true">https://fuwari.vercel.app/posts/zsh/</guid><pubDate>Tue, 11 Mar 2025 00:00:00 GMT</pubDate><content:encoded>&lt;h2&gt;安装 Zsh&lt;/h2&gt;
&lt;pre&gt;&lt;code&gt;apt update -y &amp;amp;&amp;amp; apt install zsh -y
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;安装 oh-my-zsh&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;使用 curl 下载安装&lt;/li&gt;
&lt;/ul&gt;
&lt;pre&gt;&lt;code&gt;sh -c &quot;$(curl -fsSL https://raw.githubusercontent.com/robbyrussell/oh-my-zsh/master/tools/install.sh)&quot;
&lt;/code&gt;&lt;/pre&gt;
&lt;ul&gt;
&lt;li&gt;使用 wget 下载安装&lt;/li&gt;
&lt;/ul&gt;
&lt;pre&gt;&lt;code&gt;sh -c &quot;$(wget -O- https://raw.githubusercontent.com/robbyrussell/oh-my-zsh/master/tools/install.sh)&quot;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Oh My Zsh 安装完成后会提示你设置 zsh 为默认 sehll 。如果没有提示，输入下面的命令进行设置：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;chsh -s $(which zsh)
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;修改 oh-my-zsh 配置&lt;/h2&gt;
&lt;h3&gt;修改主题&lt;/h3&gt;
&lt;p&gt;可以根据 &lt;a href=&quot;https://github.com/ohmyzsh/ohmyzsh/wiki/Themes&quot;&gt;官方主题&lt;/a&gt; 或者 &lt;a href=&quot;https://github.com/ohmyzsh/ohmyzsh/wiki/External-themes&quot;&gt;额外主题&lt;/a&gt; 中来选择自己喜欢的主题&lt;/p&gt;
&lt;p&gt;如果你不知道选择什么，可以试试在 &lt;a href=&quot;https://www.slant.co/topics/7553/~theme-for-oh-my-zsh&quot;&gt;主题排名&lt;/a&gt; 中看下&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;sed -i &apos;/^ZSH_THEME=/c\ZSH_THEME=&quot;ys&quot;&apos; ~/.zshrc
source ~/.zshrc
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;安装插件&lt;/h3&gt;
&lt;h4&gt;代码高亮&lt;/h4&gt;
&lt;pre&gt;&lt;code&gt;git clone https://github.com/zsh-users/zsh-syntax-highlighting $ZSH_CUSTOM/plugins/zsh-syntax-highlighting
&lt;/code&gt;&lt;/pre&gt;
&lt;h4&gt;自动建议&lt;/h4&gt;
&lt;pre&gt;&lt;code&gt;git clone https://github.com/zsh-users/zsh-autosuggestions $ZSH_CUSTOM/plugins/zsh-autosuggestions
&lt;/code&gt;&lt;/pre&gt;
&lt;h4&gt;自动补全&lt;/h4&gt;
&lt;pre&gt;&lt;code&gt;git clone https://github.com/zsh-users/zsh-completions $ZSH_CUSTOM/plugins/zsh-completions
# 另外还需要配置
[ -z &quot;`grep &quot;autoload -U compinit &amp;amp;&amp;amp; compinit&quot; ~/.zshrc`&quot; ] &amp;amp;&amp;amp; echo &quot;autoload -U compinit &amp;amp;&amp;amp; compinit&quot; &amp;gt;&amp;gt; ~/.zshrc
&lt;/code&gt;&lt;/pre&gt;
&lt;h4&gt;将插件写入配置中&lt;/h4&gt;
&lt;pre&gt;&lt;code&gt;sed -i &apos;/^plugins=/c\plugins=(git sudo z zsh-syntax-highlighting zsh-autosuggestions zsh-completions)&apos; ~/.zshrc
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;性能优化&lt;/h3&gt;
&lt;h4&gt;zsh-defer 延迟加载&lt;/h4&gt;
&lt;pre&gt;&lt;code&gt;git clone https://github.com/romkatv/zsh-defer.git ~/zsh-defer
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;在 &lt;code&gt;~/.zshrc&lt;/code&gt; 顶部添加下面命令&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;source ~/zsh-defer/zsh-defer.plugin.zsh
# 记得替换为自己的路径
zsh-defer source $ZSH_CUSTOM/plugins/zsh-autosuggestions/zsh-autosuggestions.zsh
zsh-defer source $ZSH_CUSTOM/plugins/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh
&lt;/code&gt;&lt;/pre&gt;
</content:encoded></item><item><title>Homebrew 安装及使用</title><link>https://fuwari.vercel.app/posts/homebrew/</link><guid isPermaLink="true">https://fuwari.vercel.app/posts/homebrew/</guid><pubDate>Mon, 10 Mar 2025 00:00:00 GMT</pubDate><content:encoded>&lt;h2&gt;安装 Homebrew&lt;/h2&gt;
&lt;p&gt;直接复制下面命令到终端即可&lt;/p&gt;
&lt;p&gt;&lt;code&gt;/bin/bash -c &quot;$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)&quot;&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;如果你没有合适的网络环境，可以使用修改后的脚本，按照提示操作&lt;/p&gt;
&lt;p&gt;&lt;code&gt;/bin/zsh -c &quot;$(curl -fsSL https://gitee.com/cunkai/HomebrewCN/raw/master/Homebrew.sh)&quot;&lt;/code&gt;&lt;/p&gt;
&lt;h2&gt;Homebrew 命令&lt;/h2&gt;
&lt;pre&gt;&lt;code&gt;# 移除所有 HomeBrew 缓存
brew cleanup --prune 0
# 移除未安装的软件包
brew cleanup -s
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;拓展&lt;/h2&gt;
&lt;p&gt;Homebrew 清理脚本&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;#!/bin/bash

# 文件计数
file_count=0
link_count=0
incomplete_count=0

# 清理 HomeBrew Cask 下载缓存
for cask_link in $(find ~/Library/Caches/Homebrew/Cask -type l)
do
    # 将 Cask 软件包移至废纸篓
    # let file_count++
    # trash $(realpath $cask_link)
    let link_count++
    rm $link
done

# 清理 HomeBrew 下载缓存
for link in $(find ~/Library/Caches/Homebrew -type l)
do
    let file_count++
    trash $(realpath $link)
    let link_count++
    rm $link
done

# 获取 *.incomplete 文件数量
let incomplete_count=$(ls -l ~/Library/Caches/Homebrew/downloads/*.incomplete | wc -l)
# 清理未完成的下载
rm ~/Library/Caches/Homebrew/downloads/*.incomplete

# 复数输出函数
plural() {
    if [ $1 -gt 1 ]
    then
        echo &quot;$1 $2s&quot;
    else
        echo &quot;$1 $2&quot;
    fi
}

# 输出消息提示
echo &quot;Pruned $(plural $link_count &quot;symbolic link&quot;), $(plural $file_count &quot;file&quot;) and $(plural $incomplete_count &quot;incomplete download&quot;) from $(realpath ~/Library/Caches/Homebrew)&quot;

# 调用 `brew cleanup`
# echo &apos;Running `brew cleanup`&apos;
# brew cleanup
&lt;/code&gt;&lt;/pre&gt;
</content:encoded></item><item><title>MacOS 上安装 Sunshine</title><link>https://fuwari.vercel.app/posts/macos_sunshine/</link><guid isPermaLink="true">https://fuwari.vercel.app/posts/macos_sunshine/</guid><pubDate>Mon, 10 Mar 2025 00:00:00 GMT</pubDate><content:encoded>&lt;h2&gt;安装 Homebrew&lt;/h2&gt;
&lt;p&gt;直接复制下面命令到终端即可&lt;/p&gt;
&lt;p&gt;&lt;code&gt;/bin/bash -c &quot;$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)&quot;&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;如果你没有合适的网络环境，可以使用修改后的脚本，按照提示操作&lt;/p&gt;
&lt;p&gt;&lt;code&gt;/bin/zsh -c &quot;$(curl -fsSL https://gitee.com/cunkai/HomebrewCN/raw/master/Homebrew.sh)&quot;&lt;/code&gt;&lt;/p&gt;
&lt;h2&gt;安装 Sunshine&lt;/h2&gt;
&lt;p&gt;进入 &lt;code&gt;终端&lt;/code&gt; 中输入&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;brew tap LizardByte/homebrew
# 下面二选一即可
brew install sunshine / brew install sunshine-beta
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;安装完毕后通过 sunshine 命令启动，后台默认为 localhost:47990，默认用户名：&lt;code&gt;admin&lt;/code&gt;，密码：&lt;code&gt;admin&lt;/code&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;如果你忘记了密码可以通过 &lt;code&gt;sunshine creds &amp;lt;new_user&amp;gt; &amp;lt;new_password&amp;gt;&lt;/code&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;如果你希望开机自启，请在安装后输入以下命令：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;brew services start lizardbyte/homebrew/sunshine
# 如果是 beta 版则是
brew services start lizardbyte/homebrew/sunshine-beta
# 备用命令
codesign -s - --force --deep /usr/local/Cellar/sunshine-beta/&amp;lt;version_path&amp;gt;/bin/sunshine
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;启动后按照系统提示进行授权即可&lt;/p&gt;
&lt;h2&gt;安装虚拟音频&lt;/h2&gt;
&lt;p&gt;设备连接 MacOS 的 Sunshine 后会发现没有音频，可以通过安装 &lt;em&gt;&lt;strong&gt;BlackHole 2ch&lt;/strong&gt;&lt;/em&gt; 解决&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;brew install blackhole-2ch
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;去 Sunshine 后台 Audio 页面手动添加设备应用即可&lt;/p&gt;
</content:encoded></item><item><title>给 Windows RDP 套上 🔒</title><link>https://fuwari.vercel.app/posts/windows_rdp_ssl/</link><guid isPermaLink="true">https://fuwari.vercel.app/posts/windows_rdp_ssl/</guid><pubDate>Fri, 07 Mar 2025 00:00:00 GMT</pubDate><content:encoded>&lt;h2&gt;获取 SSL 证书&lt;/h2&gt;
&lt;p&gt;可以通过 &lt;em&gt;&lt;strong&gt;ZeroSSL&lt;/strong&gt;&lt;/em&gt; 或者 &lt;em&gt;&lt;strong&gt;Let&apos;s Encrypt&lt;/strong&gt;&lt;/em&gt; 并结合 &lt;em&gt;&lt;strong&gt;ACME&lt;/strong&gt;&lt;/em&gt; 自行签发证书，将证书下载到本地备用&lt;/p&gt;
&lt;p&gt;通过 powershell/cmd，将证书导为 pfx 格式&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;openssl pkcs12 -export -out &amp;lt;文件名&amp;gt;.pfx -inkey &amp;lt;文件名&amp;gt;.key -in &amp;lt;文件名&amp;gt;.crt
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;安装证书&lt;/h2&gt;
&lt;p&gt;可以直接点击 pfx 文件进行安装&lt;/p&gt;
&lt;p&gt;&lt;code&gt;存储位置：本地计算机&lt;/code&gt; -&amp;gt; &lt;code&gt;证书存储：个人&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;通过 &lt;code&gt;WIN+R&lt;/code&gt; 输入 &lt;code&gt;certlm.msc&lt;/code&gt;，选择 &lt;code&gt;证书-本地计算机&lt;/code&gt; -&amp;gt; &lt;code&gt;个人&lt;/code&gt; -&amp;gt; &lt;code&gt;证书&lt;/code&gt; -&amp;gt; &lt;code&gt;双击添加的证书名&lt;/code&gt; -&amp;gt; &lt;code&gt;详细信息&lt;/code&gt; -&amp;gt; &lt;code&gt;指纹&lt;/code&gt;，复制指纹值备用&lt;/p&gt;
&lt;h2&gt;配置 RDP 服务&lt;/h2&gt;
&lt;p&gt;在 powershell/cmd 中输入&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;wmic /namespace:\\root\cimv2\TerminalServices PATH Win32_TSGeneralSetting Set SSLCertificateSHA1Hash=&quot;&amp;lt;刚才获得的指纹值&amp;gt;&quot;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;重启 TermService&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;net stop termservice
net start termservice
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;现在可以尝试连接，如没有生效，在客户端在执行一次相同的操作&lt;/p&gt;
&lt;h4&gt;参考链接&lt;/h4&gt;
&lt;p&gt;&lt;a href=&quot;https://blog.berd.moe/archives/remote-desktop-setup-ssl-certificate/&quot;&gt;简单的给远程桌面连接 (Remote Desktop) 配置自定义 SSL 证书&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>MacOS 环境下编译 ImmortalWRT 一二事</title><link>https://fuwari.vercel.app/posts/openwrt_macos/</link><guid isPermaLink="true">https://fuwari.vercel.app/posts/openwrt_macos/</guid><description>在 MacOS 系统下配置并编译 ImmortalWRT</description><pubDate>Fri, 28 Feb 2025 00:00:00 GMT</pubDate><content:encoded>&lt;h2&gt;硬件说明&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Mac mini M4&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;注意&lt;/strong&gt;：MacOS 系统应为 &quot;大小写敏感&quot;，否则无法编译！&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2&gt;环境准备&lt;/h2&gt;
&lt;h3&gt;安装 Xcode 环境&lt;/h3&gt;
&lt;p&gt;在 App Store 中安装 Xcode&lt;/p&gt;
&lt;h3&gt;安装 Homebrew&lt;/h3&gt;
&lt;p&gt;直接复制下面命令到终端即可&lt;/p&gt;
&lt;p&gt;&lt;code&gt;/bin/bash -c &quot;$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)&quot;&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;如果你没有合适的网络环境，可以使用修改后的脚本，按照提示操作&lt;/p&gt;
&lt;p&gt;&lt;code&gt;/bin/zsh -c &quot;$(curl -fsSL https://gitee.com/cunkai/HomebrewCN/raw/master/Homebrew.sh)&quot;&lt;/code&gt;&lt;/p&gt;
&lt;h3&gt;安装编译所需的依赖&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;brew unlink awk
brew install coreutils diffutils findutils gawk gnu-getopt gnu-tar grep make ncurses pkg-config wget quilt xz
brew install gcc@11
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;intel 芯片&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;echo &apos;export PATH=&quot;/usr/local/opt/coreutils/libexec/gnubin:$PATH&quot;&apos; &amp;gt;&amp;gt; ~/.bashrc
echo &apos;export PATH=&quot;/usr/local/opt/findutils/libexec/gnubin:$PATH&quot;&apos; &amp;gt;&amp;gt; ~/.bashrc
echo &apos;export PATH=&quot;/usr/local/opt/gnu-getopt/bin:$PATH&quot;&apos; &amp;gt;&amp;gt; ~/.bashrc
echo &apos;export PATH=&quot;/usr/local/opt/gnu-tar/libexec/gnubin:$PATH&quot;&apos; &amp;gt;&amp;gt; ~/.bashrc
echo &apos;export PATH=&quot;/usr/local/opt/grep/libexec/gnubin:$PATH&quot;&apos; &amp;gt;&amp;gt; ~/.bashrc
echo &apos;export PATH=&quot;/usr/local/opt/gnu-sed/libexec/gnubin:$PATH&quot;&apos; &amp;gt;&amp;gt; ~/.bashrc
echo &apos;export PATH=&quot;/usr/local/opt/make/libexec/gnubin:$PATH&quot;&apos; &amp;gt;&amp;gt; ~/.bashrc
source ~/.bashrc
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Apple M 系列芯片&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;echo &apos;export PATH=&quot;/opt/homebrew/opt/coreutils/libexec/gnubin:$PATH&quot;&apos; &amp;gt;&amp;gt; ~/.bashrc
echo &apos;export PATH=&quot;/opt/homebrew/opt/findutils/libexec/gnubin:$PATH&quot;&apos; &amp;gt;&amp;gt; ~/.bashrc
echo &apos;export PATH=&quot;/opt/homebrew/opt/gnu-getopt/bin:$PATH&quot;&apos; &amp;gt;&amp;gt; ~/.bashrc
echo &apos;export PATH=&quot;/opt/homebrew/opt/gnu-tar/libexec/gnubin:$PATH&quot;&apos; &amp;gt;&amp;gt; ~/.bashrc
echo &apos;export PATH=&quot;/opt/homebrew/opt/grep/libexec/gnubin:$PATH&quot;&apos; &amp;gt;&amp;gt; ~/.bashrc
echo &apos;export PATH=&quot;/opt/homebrew/opt/gnu-sed/libexec/gnubin:$PATH&quot;&apos; &amp;gt;&amp;gt; ~/.bashrc
echo &apos;export PATH=&quot;/opt/homebrew/opt/make/libexec/gnubin:$PATH&quot;&apos; &amp;gt;&amp;gt; ~/.bashrc
source ~/.bashrc
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;初始化编译环境&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;# 拉取源代码
git clone -b master --single-branch --filter=blob:none https://github.com/immortalwrt/immortalwrt

# 或者使用 openwrt 24
git clone -b openwrt-24.10 --single-branch --filter=blob:none https://github.com/immortalwrt/immortalwrt

cd immortalwrt

# 添加 small 源
sed -i &apos;1i src-git kenzo https://github.com/kenzok8/openwrt-packages&apos; feeds.conf.default
sed -i &apos;2i src-git small https://github.com/kenzok8/small&apos; feeds.conf.default
# 更新 feed 源
./scripts/feeds update -a &amp;amp;&amp;amp; rm -rf feeds/luci/applications/luci-app-mosdns
rm -rf feeds/packages/net/{alist,adguardhome,mosdns,xray*,v2ray*,v2ray*,sing*,smartdns}
rm -rf feeds/packages/utils/v2dat
rm -rf feeds/packages/lang/golang
git clone https://github.com/kenzok8/golang feeds/packages/lang/golang
./scripts/feeds install -a
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;配置 OpenWRT 选项&lt;/h2&gt;
&lt;pre&gt;&lt;code&gt;make menuconfig
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;编译固件&lt;/h2&gt;
&lt;pre&gt;&lt;code&gt;make -j$(nproc) V=s
&lt;/code&gt;&lt;/pre&gt;
&lt;ul&gt;
&lt;li&gt;编译 Alist 时可能会报 &lt;code&gt;fuse.h 文件未找到&lt;/code&gt; 的问题，这里提供下我的解决方法：&lt;/li&gt;
&lt;/ul&gt;
&lt;pre&gt;&lt;code&gt;brew install --cask macfuse
# 如果安装后还会有相同的错误，按照下面的方式设置
TARGET_CFLAGS=&quot;&amp;lt;path_to_macfuse_include&amp;gt;&quot;
TARGET_LDFLAGS=&quot;&amp;lt;path_to_macfuse_lib&amp;gt;&quot;
# 确保 MacOS 已经加载 macFUSE9 (如果加载可以在访达中看到 macFUSE)
sudo kextload /Library/Filesystems/macfuse.fs/Contents/Extensions/11/macfuse.kext
&lt;/code&gt;&lt;/pre&gt;
&lt;ul&gt;
&lt;li&gt;go 不支持 MacOS&lt;/li&gt;
&lt;/ul&gt;
&lt;pre&gt;&lt;code&gt;brew install go
# make menuconfig 后选择使用外部的 go /opt/homebrew/go
&lt;/code&gt;&lt;/pre&gt;
</content:encoded></item><item><title>Linux 下创建 Swap</title><link>https://fuwari.vercel.app/posts/swap/</link><guid isPermaLink="true">https://fuwari.vercel.app/posts/swap/</guid><pubDate>Mon, 17 Feb 2025 00:00:00 GMT</pubDate><content:encoded>&lt;h1&gt;Linux 下创建 swap 交换文件&lt;/h1&gt;
&lt;h3&gt;创建 swapfile (非 root 用户记得加入 sudo)&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;# 使用 fallocate 创建
fallocate -l 4G /swapfile
# 使用 dd 创建
dd if=/dev/zero of=/swapfile bs=1M count=4096
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;设置权限&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;chmod 600 /swapfile
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;格式化文并启用 swap&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;mkswap /swapfile
swapon /swapfile
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;写入系统设置自动挂载&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;echo &apos;/swapfile none swap sw 0 0&apos; | sudo tee -a /etc/fstab
&lt;/code&gt;&lt;/pre&gt;
</content:encoded></item></channel></rss>