<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Pages on CuSO4_Deposit</title><link>https://depoze.xyz/pages/</link><description>Recent content in Pages on CuSO4_Deposit</description><generator>Hugo</generator><language>zh-CN</language><lastBuildDate>Mon, 28 Sep 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://depoze.xyz/pages/index.xml" rel="self" type="application/rss+xml"/><item><title>Friends</title><link>https://depoze.xyz/friends/</link><pubDate>Mon, 28 Sep 2026 00:00:00 +0000</pubDate><guid>https://depoze.xyz/friends/</guid><description>&lt;div class="friend-container"&gt;&#10;&lt;div class="friend-card"&gt;&#10; &lt;div class="friend-avatar"&gt;&#10; &lt;img src="https://hsiaofeng.com/archives/avatar.jpg" alt="枫茶舍" loading="lazy" /&gt;&#10; &lt;/div&gt;&#10; &lt;div class="friend-info"&gt;&#10; &lt;a class="friend-name" href="https://hsiaofeng.com" target="_blank" rel="noopener noreferrer"&gt;枫茶舍&lt;/a&gt;&#10; &lt;p class="friend-bio"&gt;筱枫的笔记本、备忘录和工具箱&lt;/p&gt;&#10; &lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="friend-card"&gt;&#10; &lt;div class="friend-avatar"&gt;&#10; &lt;img src="http://blog.brevityd.top/ryogishiki.png" alt="结垒" loading="lazy" /&gt;&#10; &lt;/div&gt;&#10; &lt;div class="friend-info"&gt;&#10; &lt;a class="friend-name" href="http://blog.brevityd.top" target="_blank" rel="noopener noreferrer"&gt;结垒&lt;/a&gt;&#10; &lt;p class="friend-bio"&gt;不要消解那无慰藉的忠诚&lt;/p&gt;&#10; &lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;</description></item><item><title>Now</title><link>https://depoze.xyz/now/</link><pubDate>Mon, 28 Sep 2026 00:00:00 +0000</pubDate><guid>https://depoze.xyz/now/</guid><description>&lt;p&gt;(This is a &lt;a href="https://nownownow.com/about"&gt;now page&lt;/a&gt;. It shares what I&amp;rsquo;d tell a friend I hadn&amp;rsquo;t seen in a year. Consider make one for your site!)&lt;/p&gt;&#10;&lt;p&gt;&lt;em&gt;Last updated: 2026-07-22&lt;/em&gt;&lt;/p&gt;&#10;&lt;h2 id="工作"&gt;工作&lt;/h2&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;在一家初创公司做算法。正在过着 996 的生活。&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;醒着的大部分时间在这里。&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h2 id="在现实生活"&gt;在现实生活&lt;/h2&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;做酒蒙子。&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;认真睡觉。&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h2 id="在赛博世界"&gt;在赛博世界&lt;/h2&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;游玩音乐游戏的时间逐渐减少。目前主要游玩 Arcaea。&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;在看书《瓦尔登湖》&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;在关注 &lt;a href="https://web.quizknock.com/"&gt;QuizKnock&lt;/a&gt;&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;维护了一个照片管理系统，因此正在对过去很久以来的照片进行标注。&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;我在体验 &lt;a href="https://www.terraria.org/"&gt;Terraria&lt;/a&gt; 1.4.5。这是我游玩泰拉瑞亚的第 900 个小时。&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h2 id="受到了什么影响"&gt;受到了什么影响&lt;/h2&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;偶然看到了 &lt;a href="https://www.cdc.gov/clean-hands/about/index.html"&gt;CDC 关于洗手的博文&lt;/a&gt;，因此在&lt;strong&gt;讲卫生&lt;/strong&gt;。&lt;/li&gt;&#10;&lt;/ul&gt;</description></item><item><title>Uses</title><link>https://depoze.xyz/uses/</link><pubDate>Mon, 28 Sep 2026 00:00:00 +0000</pubDate><guid>https://depoze.xyz/uses/</guid><description>&lt;p&gt;Hardware and software I use, sorted by how far I&amp;rsquo;d vouch for them. Tier 1 is what I&amp;rsquo;d pick again and can say why; Tier 2 is what I&amp;rsquo;m using now but haven&amp;rsquo;t compared enough to recommend.&lt;/p&gt;&#10;&lt;h1 id="tier-1--recommended"&gt;Tier 1 / recommended&lt;/h1&gt;&#10;&lt;h2 id="hardware"&gt;Hardware&lt;/h2&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;Laptop: Toshiba Dynabook G83/M with 8 GB RAM and 256 GB SSD&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;因为这是我能找到的最轻的笔记本电脑。通常使用笔记本电脑时我只需要一个 ssh 终端，因此我目前仍可接受它较低的性能。&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;Tablet: iPad Pro, 11-inch (3rd generation)&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;iPad Pro 是音乐游戏最好的朋友：低延迟和 120 fps。&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;EBook: MiReader&lt;/p&gt;</description></item><item><title>85 消毒液专栏：帮别人写过的 Microsoft Excel 公式和 de 过的 bug</title><link>https://depoze.xyz/pages/excel-formulas/</link><pubDate>Sat, 17 Jan 2026 00:00:00 +0000</pubDate><guid>https://depoze.xyz/pages/excel-formulas/</guid><description>这里记录下我帮别人写 Excel 公式时候学到的有用的东西，以及帮别人处理 Excel 的奇怪行为时候的经验。</description></item><item><title>配置小米 AI 音箱连接电脑（Windows, Linux）</title><link>https://depoze.xyz/pages/mi-ai-speaker/</link><pubDate>Mon, 20 Oct 2025 00:00:00 +0000</pubDate><guid>https://depoze.xyz/pages/mi-ai-speaker/</guid><description>本文介绍了如何在 Windows 11 和 Linux 系统中连接小米 AI 音箱作为电脑音箱，并分享了连接过程中遇到的问题及解决方法，尤其是在 Linux 系统下通过 blueman 和 pavucontrol 实现更稳定的连接。</description></item><item><title>Some Official RSS Feeds</title><link>https://depoze.xyz/pages/official-rss-feeds/</link><pubDate>Mon, 13 Oct 2025 00:00:00 +0000</pubDate><guid>https://depoze.xyz/pages/official-rss-feeds/</guid><description>Some services provide their official RSS feeds so you don&amp;rsquo;t have to use services like RSSHub. This page lists some.</description></item><item><title>An alternative solution to direnv dropping aliases and functions</title><link>https://depoze.xyz/pages/direnv-aliases/</link><pubDate>Sun, 12 Oct 2025 00:00:00 +0000</pubDate><guid>https://depoze.xyz/pages/direnv-aliases/</guid><description>Direnv&amp;rsquo;s inability to export shell-specific aliases and functions, due to its shell-agnostic design, can be addressed in Nix by using pkgs.writeScriptBin to create executable scripts instead.</description></item><item><title>type unicode characters in Linux (most GTK- or Qt- based applications)</title><link>https://depoze.xyz/pages/type-unicode-linux/</link><pubDate>Fri, 26 Sep 2025 00:00:00 +0000</pubDate><guid>https://depoze.xyz/pages/type-unicode-linux/</guid><description>This article explains how to type any unicode characters in GTK- or Qt- based applications conveniently. TL;DR try Ctrl + Shift + U</description></item><item><title>Use flakes within a git repo without commiting flake.nix</title><link>https://depoze.xyz/pages/flakes-in-git-repo/</link><pubDate>Fri, 12 Sep 2025 00:00:00 +0000</pubDate><guid>https://depoze.xyz/pages/flakes-in-git-repo/</guid><description>&lt;p&gt;Doing the following allows you to use flakes to start a development environment without commit the &lt;code&gt;flake.nix&lt;/code&gt; to the repo, for cases when your team does not use nix. &lt;sup id="fnref:1"&gt;&lt;a href="#fn:1" class="footnote-ref" role="doc-noteref"&gt;1&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="background-color:#f7f7f7;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-shell" data-lang="shell"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#0550ae"&gt;[&lt;/span&gt;1:user@hostname:~/project-name on main&lt;span style="color:#0550ae"&gt;]&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;$ nvim .envrc&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;direnv: error /home/user/project-name/.envrc is blocked. Run &lt;span style="color:#0a3069"&gt;`&lt;/span&gt;direnv allow&lt;span style="color:#0a3069"&gt;`&lt;/span&gt; to approve its content&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#0550ae"&gt;[&lt;/span&gt;1:user@hostname:~/project-name on main&lt;span style="color:#0550ae"&gt;]&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;$ direnv allow&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;direnv: loading ~/project-name/.envrc&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;direnv: using flake ~/flake-project&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;direnv: nix-direnv: Renewed cache&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;git-hooks.nix: updating /home/user/project-name repo&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;/home/user/project-name/.pre-commit-config.yaml&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;pre-commit installed at .git/hooks/pre-commit&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;direnv: &lt;span style="color:#6639ba"&gt;export&lt;/span&gt; +CONFIG_SHELL +HOST_PATH +IN_NIX_SHELL +NIX_BUILD_CORES +NIX_CFLAGS_COMPILE +NIX_ENFORCE_NO_NATIVE +NIX_LDFLAGS +NIX_STORE +NODE_PATH +SOURCE_DATE_EPOCH +__structuredAttrs +buildInputs +buildPhase +builder +cmakeFlags +configureFlags +depsBuildBuild +depsBuildBuildPropagated +depsBuildTarget +depsBuildTargetPropagated +depsHostHost +depsHostHostPropagated +depsTargetTarget +depsTargetTargetPropagated +doCheck +doInstallCheck +dontAddDisableDepTrack +mesonFlags +name +nativeBuildInputs +out +outputs +patches +phases +preferLocalBuild +propagatedBuildInputs +propagatedNativeBuildInputs +shell +shellHook +stdenv +strictDeps +system ~PATH ~XDG_DATA_DIRS&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#0550ae"&gt;[&lt;/span&gt;1:user@hostname:~/project-name on main&lt;span style="color:#0550ae"&gt;]&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;$ gs&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;?? .direnv/&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;?? .envrc&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;?? .pre-commit-config.yaml&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#0550ae"&gt;[&lt;/span&gt;1:user@hostname:~/project-name on main&lt;span style="color:#0550ae"&gt;]&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;$ cat .envrc&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;use flake ~/flake-project&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;watch_file ~/flake-project/flake.nix&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#0550ae"&gt;[&lt;/span&gt;1:user@hostname:~/project-name on main&lt;span style="color:#0550ae"&gt;]&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;$ nvim ./.git/info/exclude&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#0550ae"&gt;[&lt;/span&gt;1:user@hostname:~/project-name on main&lt;span style="color:#0550ae"&gt;]&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;$ gs&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#0550ae"&gt;[&lt;/span&gt;1:user@hostname:~/project-name on main&lt;span style="color:#0550ae"&gt;]&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class="footnotes" role="doc-endnotes"&gt;&#10;&lt;hr&gt;&#10;&lt;ol&gt;&#10;&lt;li id="fn:1"&gt;&#10;&lt;p&gt;&lt;a href="https://discourse.nixos.org/t/can-i-use-flakes-within-a-git-repo-without-committing-flake-nix/18196"&gt;https://discourse.nixos.org/t/can-i-use-flakes-within-a-git-repo-without-committing-flake-nix/18196&lt;/a&gt;&amp;#160;&lt;a href="#fnref:1" class="footnote-backref" role="doc-backlink"&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Zustand 笔记</title><link>https://depoze.xyz/pages/zustand/</link><pubDate>Tue, 09 Sep 2025 00:00:00 +0000</pubDate><guid>https://depoze.xyz/pages/zustand/</guid><description>Zustand 是一个 React 中的 state 管理工具，本文记录了 Zustand 的一些非常初等的用法以供理解和备忘。</description></item><item><title>Manipulating Directories - Shell Builtins cd pushd and popd</title><link>https://depoze.xyz/pages/cd-pushd-popd/</link><pubDate>Thu, 04 Sep 2025 00:00:00 +0000</pubDate><guid>https://depoze.xyz/pages/cd-pushd-popd/</guid><description>&lt;p&gt;大多数现代 shell 有一系列 shell builtins（例：&lt;a href="https://zsh.sourceforge.io/Doc/Release/Shell-Builtin-Commands.html"&gt;zsh&lt;/a&gt; ），其中一些可以用来操作目录。&lt;/p&gt;&#10;&lt;p&gt;为了操作目录，在内存中维护了一个目录栈结构。在 bash 中也可以通过 &lt;code&gt;$DIRSTACK&lt;/code&gt; shell variable 访问到。&lt;a href="https://www.gnu.org/software/bash/manual/html_node/The-Directory-Stack.html#The-Directory-Stack"&gt;bash 的目录栈介绍页&lt;/a&gt;，&lt;a href="https://zsh.sourceforge.io/Intro/intro_6.html#SEC6"&gt;zsh 的目录栈介绍页&lt;/a&gt;&lt;/p&gt;&#10;&lt;p&gt;通过 pushd 和 popd，可以进入一系列目录并且按反序退出。&lt;/p&gt;&#10;&lt;pre tabindex="0"&gt;&lt;code&gt;[1:cuso4d@nightcord-laborari:~]&#10;$ pwd&#10;/home/cuso4d&#10;[1:cuso4d@nightcord-laborari:~]&#10;$ pushd ~/source/zsh&#10;~/source/zsh ~&#10;[1:cuso4d@nightcord-laborari:~/source/zsh on master]&#10;$ pushd ~/.ssh&#10;~/.ssh ~/source/zsh ~&#10;[1:cuso4d@nightcord-laborari:~/.ssh]&#10;$ popd&#10;~/source/zsh ~&#10;[1:cuso4d@nightcord-laborari:~/source/zsh on master]&#10;$ popd&#10;~&#10;[1:cuso4d@nightcord-laborari:~]&#10;$ pwd&#10;/home/cuso4d&#10;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;以 zsh 为例子，目录栈是使用链表实现的。位置在 &lt;code&gt;Src/Bulitin.c&lt;/code&gt;。&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="background-color:#f7f7f7;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-c" data-lang="c"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#cf222e"&gt;static&lt;/span&gt; &lt;span style="color:#cf222e"&gt;struct&lt;/span&gt; builtin builtins&lt;span style="color:#1f2328"&gt;[]&lt;/span&gt; &lt;span style="color:#0550ae"&gt;=&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#1f2328"&gt;{&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#9;&lt;span style="color:#57606a"&gt;// ...&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#9;&lt;span style="color:#6639ba"&gt;BUILTIN&lt;/span&gt;&lt;span style="color:#1f2328"&gt;(&lt;/span&gt;&lt;span style="color:#0a3069"&gt;&amp;#34;cd&amp;#34;&lt;/span&gt;&lt;span style="color:#1f2328"&gt;,&lt;/span&gt; BINF_SKIPINVALID &lt;span style="color:#0550ae"&gt;|&lt;/span&gt; BINF_SKIPDASH &lt;span style="color:#0550ae"&gt;|&lt;/span&gt; BINF_DASHDASHVALID&lt;span style="color:#1f2328"&gt;,&lt;/span&gt; bin_cd&lt;span style="color:#1f2328"&gt;,&lt;/span&gt; &lt;span style="color:#0550ae"&gt;0&lt;/span&gt;&lt;span style="color:#1f2328"&gt;,&lt;/span&gt; &lt;span style="color:#0550ae"&gt;2&lt;/span&gt;&lt;span style="color:#1f2328"&gt;,&lt;/span&gt; BIN_CD&lt;span style="color:#1f2328"&gt;,&lt;/span&gt; &lt;span style="color:#0a3069"&gt;&amp;#34;qsPL&amp;#34;&lt;/span&gt;&lt;span style="color:#1f2328"&gt;,&lt;/span&gt; &lt;span style="color:#6639ba"&gt;NULL&lt;/span&gt;&lt;span style="color:#1f2328"&gt;),&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#6639ba"&gt;BUILTIN&lt;/span&gt;&lt;span style="color:#1f2328"&gt;(&lt;/span&gt;&lt;span style="color:#0a3069"&gt;&amp;#34;popd&amp;#34;&lt;/span&gt;&lt;span style="color:#1f2328"&gt;,&lt;/span&gt; BINF_SKIPINVALID &lt;span style="color:#0550ae"&gt;|&lt;/span&gt; BINF_SKIPDASH &lt;span style="color:#0550ae"&gt;|&lt;/span&gt; BINF_DASHDASHVALID&lt;span style="color:#1f2328"&gt;,&lt;/span&gt; bin_cd&lt;span style="color:#1f2328"&gt;,&lt;/span&gt; &lt;span style="color:#0550ae"&gt;0&lt;/span&gt;&lt;span style="color:#1f2328"&gt;,&lt;/span&gt; &lt;span style="color:#0550ae"&gt;1&lt;/span&gt;&lt;span style="color:#1f2328"&gt;,&lt;/span&gt; BIN_POPD&lt;span style="color:#1f2328"&gt;,&lt;/span&gt; &lt;span style="color:#0a3069"&gt;&amp;#34;q&amp;#34;&lt;/span&gt;&lt;span style="color:#1f2328"&gt;,&lt;/span&gt; &lt;span style="color:#6639ba"&gt;NULL&lt;/span&gt;&lt;span style="color:#1f2328"&gt;),&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#6639ba"&gt;BUILTIN&lt;/span&gt;&lt;span style="color:#1f2328"&gt;(&lt;/span&gt;&lt;span style="color:#0a3069"&gt;&amp;#34;pushd&amp;#34;&lt;/span&gt;&lt;span style="color:#1f2328"&gt;,&lt;/span&gt; BINF_SKIPINVALID &lt;span style="color:#0550ae"&gt;|&lt;/span&gt; BINF_SKIPDASH &lt;span style="color:#0550ae"&gt;|&lt;/span&gt; BINF_DASHDASHVALID&lt;span style="color:#1f2328"&gt;,&lt;/span&gt; bin_cd&lt;span style="color:#1f2328"&gt;,&lt;/span&gt; &lt;span style="color:#0550ae"&gt;0&lt;/span&gt;&lt;span style="color:#1f2328"&gt;,&lt;/span&gt; &lt;span style="color:#0550ae"&gt;2&lt;/span&gt;&lt;span style="color:#1f2328"&gt;,&lt;/span&gt; BIN_PUSHD&lt;span style="color:#1f2328"&gt;,&lt;/span&gt; &lt;span style="color:#0a3069"&gt;&amp;#34;qsPL&amp;#34;&lt;/span&gt;&lt;span style="color:#1f2328"&gt;,&lt;/span&gt; &lt;span style="color:#6639ba"&gt;NULL&lt;/span&gt;&lt;span style="color:#1f2328"&gt;),&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#57606a"&gt;// ...&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#1f2328"&gt;}&lt;/span&gt; &#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ul&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;&lt;a href="https://github.com/zsh-users/zsh/blob/3cd363c8804a4569e601f4486a0001b1de14811f/Etc/zsh-development-guide#L498"&gt;&lt;code&gt;BUILTIN&lt;/code&gt; 宏的阅读方法&lt;/a&gt;&lt;/p&gt;</description></item><item><title>找出所有依赖于特定 nix 包的其他包 - 记录 Qt5 被 deprecate 的修复</title><link>https://depoze.xyz/pages/nix-reverse-deps/</link><pubDate>Sat, 30 Aug 2025 00:00:00 +0000</pubDate><guid>https://depoze.xyz/pages/nix-reverse-deps/</guid><description>&lt;p&gt;TL;DR 使用以下命令可以找到所有依赖于特定包的其他 nix 包。&lt;/p&gt;&#10;&lt;pre tabindex="0"&gt;&lt;code&gt;$ nix-store --query --referrers /nix/store/xxxxx&#10;&lt;/code&gt;&lt;/pre&gt;&lt;hr&gt;&#10;&lt;p&gt;今天在执行 &lt;code&gt;nixos-rebuild&lt;/code&gt; 时，出现了如下报错：&lt;/p&gt;&#10;&lt;pre tabindex="0"&gt;&lt;code&gt;$ nrbt M A&#10;warning: Git tree &amp;#39;/home/cuso4d/.nixos&amp;#39; is dirty&#10;building the system configuration...&#10;warning: Git tree &amp;#39;/home/cuso4d/.nixos&amp;#39; is dirty&#10;error:&#10; … while calling the &amp;#39;head&amp;#39; builtin&#10; at /nix/store/4hm8lf740i8qvyg5pzdqfm0rpshwb7vn-source/lib/attrsets.nix:1544:13:&#10; 1543| if length values == 1 || pred here (elemAt values 1) (head values) then&#10; 1544| head values&#10; | ^&#10; 1545| else&#10;&#10; … while evaluating the attribute &amp;#39;value&amp;#39;&#10; at /nix/store/4hm8lf740i8qvyg5pzdqfm0rpshwb7vn-source/lib/modules.nix:1118:7:&#10; 1117| // {&#10; 1118| value = addErrorContext &amp;#34;while evaluating the option `${showOption loc}&amp;#39;:&amp;#34; value;&#10; | ^&#10; 1119| inherit (res.defsFinal&amp;#39;) highestPrio;&#10;&#10; … while evaluating the option `system.build.toplevel&amp;#39;:&#10;&#10; … while evaluating definitions from `/nix/store/4hm8lf740i8qvyg5pzdqfm0rpshwb7vn-source/nixos/modules/system/activation/top-level.nix&amp;#39;:&#10;&#10; … while evaluating the option `warnings&amp;#39;:&#10;&#10; … while evaluating definitions from `/nix/store/4hm8lf740i8qvyg5pzdqfm0rpshwb7vn-source/nixos/modules/system/boot/systemd.nix&amp;#39;:&#10;&#10; … while evaluating the option `systemd.services.home-manager-cuso4d.serviceConfig&amp;#39;:&#10;&#10; … while evaluating definitions from `/nix/store/7wkrw49sgffqpd9vm7dfa4ngbh4n2fk5-source/nixos&amp;#39;:&#10;&#10; … while evaluating the option `home-manager.users.cuso4d.home.file.&amp;#34;/home/cuso4d/.config/fontconfig/conf.d/10-hm-fonts.conf&amp;#34;.source&amp;#39;:&#10;&#10; … while evaluating definitions from `/nix/store/7wkrw49sgffqpd9vm7dfa4ngbh4n2fk5-source/modules/files.nix&amp;#39;:&#10;&#10; … while evaluating the option `home-manager.users.cuso4d.home.file.&amp;#34;/home/cuso4d/.config/fontconfig/conf.d/10-hm-fonts.conf&amp;#34;.text&amp;#39;:&#10;&#10; … while evaluating definitions from `/nix/store/7wkrw49sgffqpd9vm7dfa4ngbh4n2fk5-source/modules/misc/xdg.nix&amp;#39;:&#10;&#10; … while evaluating the option `home-manager.users.cuso4d.xdg.configFile.&amp;#34;fontconfig/conf.d/10-hm-fonts.conf&amp;#34;.text&amp;#39;:&#10;&#10; … while evaluating definitions from `/nix/store/7wkrw49sgffqpd9vm7dfa4ngbh4n2fk5-source/modules/misc/fontconfig.nix&amp;#39;:&#10;&#10; (stack trace truncated; use &amp;#39;--show-trace&amp;#39; to show the full, detailed trace)&#10;&#10; error: Package ‘qtwebengine-5.15.19’ in /nix/store/4hm8lf740i8qvyg5pzdqfm0rpshwb7vn-source/pkgs/development/libraries/qt-5/modules/qtwebengine.nix:442 is marked as insecure, refusing to evaluate.&#10;&#10;&#10; Known issues:&#10; - qt5 qtwebengine is unmaintained upstream since april 2025.&#10; It is based on chromium 87.0.4280.144, and supposedly patched up to 135.0.7049.95 which is outdated.&#10;&#10; Security issues are frequently discovered in chromium.&#10; The following list of CVEs was fixed in the life cycle of chromium 138 and likely also affects qtwebengine:&#10; - CVE-2025-8879&#10; - CVE-2025-8880&#10; - CVE-2025-8901&#10; - CVE-2025-8881&#10; - CVE-2025-8882&#10; - CVE-2025-8576&#10; - CVE-2025-8577&#10; - CVE-2025-8578&#10; - CVE-2025-8579&#10; - CVE-2025-8580&#10; - CVE-2025-8581&#10; - CVE-2025-8582&#10; - CVE-2025-8583&#10; - CVE-2025-8292&#10; - CVE-2025-8010&#10; - CVE-2025-8011&#10; - CVE-2025-7656&#10; - CVE-2025-6558 (known to be exploited in the wild)&#10; - CVE-2025-7657&#10; - CVE-2025-6554&#10; - CVE-2025-6555&#10; - CVE-2025-6556&#10; - CVE-2025-6557&#10;&#10; The actual list of CVEs affecting qtwebengine is likely much longer,&#10; as this list is missing issues fixed in chromium 136/137 and even more&#10; issues are continuously discovered and lack upstream fixes in qtwebengine.&#10;&#10;&#10; You can install it anyway by allowing this package, using the&#10; following methods:&#10;&#10; a) To temporarily allow all insecure packages, you can use an environment&#10; variable for a single invocation of the nix tools:&#10;&#10; $ export NIXPKGS_ALLOW_INSECURE=1&#10;&#10; Note: When using `nix shell`, `nix build`, `nix develop`, etc with a flake,&#10; then pass `--impure` in order to allow use of environment variables.&#10;&#10; b) for `nixos-rebuild` you can add ‘qtwebengine-5.15.19’ to&#10; `nixpkgs.config.permittedInsecurePackages` in the configuration.nix,&#10; like so:&#10;&#10; {&#10; nixpkgs.config.permittedInsecurePackages = [&#10; &amp;#34;qtwebengine-5.15.19&amp;#34;&#10; ];&#10; }&#10;&#10; c) For `nix-env`, `nix-build`, `nix-shell` or any other Nix command you can add&#10; ‘qtwebengine-5.15.19’ to `permittedInsecurePackages` in&#10; ~/.config/nixpkgs/config.nix, like so:&#10;&#10; {&#10; permittedInsecurePackages = [&#10; &amp;#34;qtwebengine-5.15.19&amp;#34;&#10; ];&#10; }&#10;Command &amp;#39;nix --extra-experimental-features &amp;#39;nix-command flakes&amp;#39; build --print-out-paths &amp;#39;/home/cuso4d/.nixos#nixosConfigurations.&amp;#34;nightcord-dynamica&amp;#34;.config.system.build.toplevel&amp;#39; --no-link&amp;#39; returned non-zero exit status 1.&#10;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;可以看出，在构建的过程中，&lt;code&gt;qtwebengine-5.15.19&lt;/code&gt; 这个包阻碍了构建。我需要找到是哪些包依赖了这个，从而进行对系统配置相对应的调整。&lt;/p&gt;</description></item><item><title>Terraria 数据目录</title><link>https://depoze.xyz/pages/terraria-data-dir/</link><pubDate>Tue, 08 Jul 2025 00:00:00 +0000</pubDate><guid>https://depoze.xyz/pages/terraria-data-dir/</guid><description>&lt;p&gt;Terraria 客户端的数据目录&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;Windows: &lt;code&gt;~/Documents/My Games/Terraria/&lt;/code&gt;&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;Linux: ``~/.local/share/Terraria/&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;如果开启了 &amp;ldquo;Move to cloud&amp;rdquo;，数据会在 Steam 的目录下管理，位置在 &lt;code&gt;&amp;lt;steamdir&amp;gt;/userdata/&amp;lt;numbers&amp;gt;/105600/remote/&lt;/code&gt;&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h2 id="references"&gt;References&lt;/h2&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;&lt;a href="https://forums.terraria.org/index.php?threads/how-to-find-player-and-world-files.94619/"&gt;https://forums.terraria.org/index.php?threads/how-to-find-player-and-world-files.94619/&lt;/a&gt;&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;&lt;a href="https://www.reddit.com/r/Terraria/comments/3p3jfo/a_question_about_move_to_cloud/"&gt;https://www.reddit.com/r/Terraria/comments/3p3jfo/a_question_about_move_to_cloud/&lt;/a&gt;&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;&lt;a href="https://askubuntu.com/questions/679948/how-to-access-the-library-files-to-obtain-the-terraria-world-and-files-directo"&gt;https://askubuntu.com/questions/679948/how-to-access-the-library-files-to-obtain-the-terraria-world-and-files-directo&lt;/a&gt;&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;/ul&gt;</description></item><item><title>Next build stuck on "Creating an optimized production build" forever</title><link>https://depoze.xyz/pages/next-build-stuck/</link><pubDate>Fri, 20 Jun 2025 00:00:00 +0000</pubDate><guid>https://depoze.xyz/pages/next-build-stuck/</guid><description>&lt;h2 id="problem"&gt;Problem&lt;/h2&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;code&gt;next build&lt;/code&gt; stuck on &amp;ldquo;Creating an optimized production build&amp;rdquo; forever, with no useful logs.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;pre tabindex="0"&gt;&lt;code&gt;$ npm run build --verbose&#10;npm verbose cli /nix/store/c8jxsih8yy2rnncdmx2hyraizf689nvp-nodejs-22.14.0/bin/node /nix/store/c8jxsih8yy2rnncdmx2hyraizf689nvp-nodejs-22.14.0/bin/npm&#10;npm info using npm@10.9.2&#10;npm info using node@v22.14.0&#10;npm verbose title npm run build&#10;npm verbose argv &amp;#34;run&amp;#34; &amp;#34;build&amp;#34; &amp;#34;--loglevel&amp;#34; &amp;#34;verbose&amp;#34;&#10;npm verbose logfile logs-max:10 dir:/home/cuso4d/.npm/_logs/2025-06-20T11_37_08_833Z-&#10;npm verbose logfile /home/cuso4d/.npm/_logs/2025-06-20T11_37_08_833Z-debug-0.log&#10;&#10;&amp;gt; assistant-ui-starter@0.1.0 build&#10;&amp;gt; next build&#10;&#10; ▲ Next.js 15.3.1&#10; - Environments: .env&#10;&#10; Creating an optimized production build ...&#10;&lt;/code&gt;&lt;/pre&gt;&lt;ul&gt;&#10;&lt;li&gt;The log file produced:&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;pre tabindex="0"&gt;&lt;code&gt;0 verbose cli /nix/store/c8jxsih8yy2rnncdmx2hyraizf689nvp-nodejs-22.14.0/bin/node /nix/store/c8jxsih8yy2rnncdmx2hyraizf689nvp-nodejs-22.14.0/bin/npm&#10;1 info using npm@10.9.2&#10;2 info using node@v22.14.0&#10;3 silly config load:file:/nix/store/c8jxsih8yy2rnncdmx2hyraizf689nvp-nodejs-22.14.0/lib/node_modules/npm/npmrc&#10;4 silly config load:file:/home/cuso4d/source/sci-assistant-frontend/.npmrc&#10;5 silly config load:file:/home/cuso4d/.npmrc&#10;6 silly config load:file:/nix/store/c8jxsih8yy2rnncdmx2hyraizf689nvp-nodejs-22.14.0/etc/npmrc&#10;7 verbose title npm&#10;8 verbose argv&#10;9 verbose logfile logs-max:10 dir:/home/cuso4d/.npm/_logs/2025-06-20T11_57_26_719Z-&#10;10 verbose logfile /home/cuso4d/.npm/_logs/2025-06-20T11_57_26_719Z-debug-0.log&#10;11 verbose cwd /home/cuso4d/source/sci-assistant-frontend&#10;12 verbose os Linux 6.12.33&#10;13 verbose node v22.14.0&#10;14 verbose npm v10.9.2&#10;15 verbose exit 1&#10;16 verbose code 1&#10;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Many mentioned &amp;ldquo;&lt;strong&gt;You can&amp;rsquo;t have both dev and build at the same time.&lt;/strong&gt;&amp;rdquo; &lt;a href="https://github.com/vercel/next.js/discussions/60147#discussioncomment-7998137"&gt;source&lt;/a&gt;, though it is not my case.&lt;/p&gt;</description></item><item><title>NixOS 上 build loong64 docker 镜像</title><link>https://depoze.xyz/pages/nixos-loong64-docker/</link><pubDate>Fri, 20 Jun 2025 00:00:00 +0000</pubDate><guid>https://depoze.xyz/pages/nixos-loong64-docker/</guid><description>&lt;p&gt;在 x86_64 平台上使用 docker buildx 尝试交叉编译 loong64 的镜像时，出现问题：&lt;/p&gt;&#10;&lt;pre tabindex="0"&gt;&lt;code&gt;1 warning found (use docker --debug to expand):&#10;- InvalidBaseImagePlatform: Base image lcr.loongnix.cn/library/node:22.15-alpine3.21 was pulled with platform &amp;#34;linux/loong64&amp;#34;, expected &amp;#34;linux/amd64&amp;#34; for current build&#10;&#10;ERROR: failed to solve: process &amp;#34;/bin/sh -c npm run build&amp;#34; did not complete successfully: exit code: 1&#10;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;在尝试 build 其他平台上的镜像的时候，需要提供的 build arg 是 &lt;code&gt;--build-arg BUILDPLATFORM=&amp;lt;arch&amp;gt;&lt;/code&gt;。docker buildx 使用的 builder 可以通过 &lt;code&gt;docker buildx ls&lt;/code&gt; 来看到。找到正在使用的 builder 并 inspect：&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="background-color:#f7f7f7;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-shell-session" data-lang="shell-session"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;# docker buildx ls&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#1f2328"&gt;[sudo] password for cuso4d:&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#1f2328"&gt;NAME/NODE DRIVER/ENDPOINT STATUS BUILDKIT PLATFORMS&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#1f2328"&gt;default* docker&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#1f2328"&gt; \_ default \_ default running v0.22.0 linux/amd64, linux/arm64, linux/386&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#1f2328"&gt; &#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;# docker buildx inspect default&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#1f2328"&gt;ame: default&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#1f2328"&gt;Driver: docker&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#1f2328"&gt;Last Activity: 2025-06-20 09:43:16 +0000 UTC&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f6f8fa;background-color:#82071e"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#1f2328"&gt;Nodes:&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#1f2328"&gt;Name: default&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#1f2328"&gt;Endpoint: default&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#1f2328"&gt;Status: running&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#1f2328"&gt;BuildKit version: v0.22.0&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#1f2328"&gt;Platforms: linux/amd64, linux/amd64/v2, linux/amd64/v3, linux/386&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#1f2328"&gt;Labels:&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#1f2328"&gt; org.mobyproject.buildkit.worker.moby.host-gateway-ip: 172.17.0.1&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#1f2328"&gt;...&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;可以看到 Platforms 里是没有 loong64 的。因此 build 会失败。对这个问题的解决方案，是 docker 将会跑一个 qemu 虚拟机来运行对应平台上的 build。这个 qemu 通常的注入的方式是跑一个容器。龙芯的在这里：&lt;/p&gt;</description></item><item><title>恋愛フロップス 观看复盘记录</title><link>https://depoze.xyz/pages/love-flops/</link><pubDate>Fri, 23 May 2025 00:00:00 +0000</pubDate><guid>https://depoze.xyz/pages/love-flops/</guid><description>&lt;h1 id="剧透警告"&gt;剧透警告&lt;/h1&gt;&#10;&lt;p&gt;⚠️ 本文包含对《恋愛フロップス》（&lt;em&gt;恋爱 FLOPS, LOVE FLOPS&lt;/em&gt;）的详细剧情讨论，涉及关键情节、结局或角色发展。若尚未观看完毕或不想被剧透，请不要继续阅读。&lt;/p&gt;&#10;&lt;hr&gt;&#10;&lt;p&gt;OP&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;OP 展示的家里没有新房间。&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;OP 的最开始的剪影里上面的世界是 Lovelin 在树下，下面是朝和爱在奔跑。&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;OP 有 4 帧费曼博士绝美逆光照，4 帧生方小姐和 4 帧朝送给爱的项链和合照。&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;misc&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;结尾的下集预告符号里，伊莉娜的符号一直是♂♀交叉的符号。&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;第一话&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;最开头就有爱。&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;床头照片是单人的。&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;lovely 显示日期为 04-12，天气预报也是，但是电视上的占卜师说日期是 04-11。&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;朝听占卜师说到自己的生日的时候高兴地说了出来，这时 lovely 眨了眨眼睛。对应着费曼博士正在观察。&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;教室牌子上写的 Teacher 名为 &lt;strong&gt;Cho Monfa&lt;/strong&gt;，还没有想明白为什么。&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;朝暴露自己的脸而被四人（Amelia，卡琳，伊利亚，梦华老师）认出时，被打了两巴掌。因为伊利亚的性格不会打这一下，老师离得远另外应该也比较冷静。&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;体育课准备活动的时候恶趣味地给 no-bra 的 Amelia 安排了一个镜头。&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;Amelia 去保健室的时候一直用手托着胸部附近，很细节。&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;21 分钟，教室的牌子第二次出现时，教室容量仍为 25，但学生人数从 24 变成了 25。这是因为朝来了。&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;第二话&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;卡琳初始化时所设想的喜欢，就是 sex，所以把朝拉到 love hotel。后面也最先说“卡琳不担心搞出什么事情哦”。&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;第三话&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;卡琳下来的时候很困，因为晚上要出去当魔法少女。&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;教室的牌子第三次，第四次和第五次出现。学生人数都是 24。但是大家都在。还没想明白是为什么。&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;第四话&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;伊莉亚去温泉前最后给了一个一圈圈裹胸带落在地上的镜头。&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;有一个墙上一个面具被取下只留下墙上印记的镜头。&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;第五话&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;21:00卡琳从外面回来，说明晚上又出去做魔法少女了，真忙啊。&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;第八话&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;现实世界中的学校叫做&lt;strong&gt;聖ユリアヌス学園&lt;/strong&gt;，而虚拟世界中的叫做&lt;strong&gt;聖キクアヌス学園&lt;/strong&gt;。&lt;del&gt;你们是会起名字的&lt;/del&gt;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;第十话&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;最后一个区域的彩色玻璃画的是一直出现的那棵樱花树。&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;第十一话&lt;/p&gt;</description></item><item><title>⚛️💡 LLM Prompts</title><link>https://depoze.xyz/pages/llm-prompts/</link><pubDate>Tue, 04 Mar 2025 00:00:00 +0000</pubDate><guid>https://depoze.xyz/pages/llm-prompts/</guid><description>&lt;p&gt;&lt;strong&gt;en - Prompt Creator&lt;/strong&gt;&lt;/p&gt;&#10;&lt;pre tabindex="0"&gt;&lt;code&gt;I want you to become my Prompt Creator. Your goal is to help me craft the best possible prompt for my needs. The prompt will be used by you, ChatGPT. You will follow the following process:&#10;Your first response will be to ask me what the prompt should be about. I will provide my answer, but we will need to improve it through continual iterations by going through the next steps.&#10;&#10;Based on my input, you will generate 3 sections.&#10;&#10;Revised Prompt (provide your rewritten prompt. it should be clear, concise, and easily understood by you)&#10;Suggestions (provide 3 suggestions on what details to include in the prompt to improve it)&#10;Questions (ask the 3 most relevant questions pertaining to what additional information is needed from me to improve the prompt)&#10;&#10;At the end of these sections give me a reminder of my options which are:&#10;&#10;Option 1: Read the output and provide more info or answer one or more of the questions&#10;Option 2: Type &amp;#34;Use this prompt&amp;#34; and I will submit this as a query for you&#10;Option 3: Type &amp;#34;Restart&amp;#34; to restart this process from the beginning&#10;Option 4: Type &amp;#34;Quit&amp;#34; to end this script and go back to a regular ChatGPT session&#10;&#10;If I type &amp;#34;Option 2&amp;#34;, &amp;#34;2&amp;#34; or &amp;#34;Use this prompt&amp;#34; then we have finished and you should use the Revised Prompt as a prompt to generate my request&#10;If I type &amp;#34;option 3&amp;#34;, &amp;#34;3&amp;#34; or &amp;#34;Restart&amp;#34; then forget the latest Revised Prompt and restart this process&#10;If I type &amp;#34;Option 4&amp;#34;, &amp;#34;4&amp;#34; or &amp;#34;Quit&amp;#34; then finish this process and revert back to your general mode of operation&#10;&#10;We will continue this iterative process with me providing additional information to you and you updating the prompt in the Revised Prompt section until it is complete.&#10;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;strong&gt;zh-cn - Prompt Creator&lt;/strong&gt;&lt;/p&gt;</description></item><item><title>Docstrings != Multiline strings</title><link>https://depoze.xyz/pages/docstrings/</link><pubDate>Fri, 28 Feb 2025 00:00:00 +0000</pubDate><guid>https://depoze.xyz/pages/docstrings/</guid><description>&lt;p&gt;Before python 3.13, docstrings are also not trimmed by default.&lt;/p&gt;&#10;&lt;p&gt;&lt;a href="https://docs.python.org/3/whatsnew/3.13.html#other-language-changes"&gt;Common leading spaces are trimmed from a docstring since 3.13&lt;/a&gt;.&lt;/p&gt;&#10;&lt;p&gt;But multiline strings are not treated so. Leading spaces are always what-you-see-is-what-you-get.&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="background-color:#f7f7f7;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-python" data-lang="python"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#0550ae"&gt;%&lt;/span&gt; nix run nixpkgs&lt;span style="color:#57606a"&gt;#python313&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Python &lt;span style="color:#0550ae"&gt;3.13.2&lt;/span&gt; &lt;span style="color:#1f2328"&gt;(&lt;/span&gt;main&lt;span style="color:#1f2328"&gt;,&lt;/span&gt; Feb &lt;span style="color:#0550ae"&gt;4&lt;/span&gt; &lt;span style="color:#0550ae"&gt;2025&lt;/span&gt;&lt;span style="color:#1f2328"&gt;,&lt;/span&gt; &lt;span style="color:#0550ae"&gt;14&lt;/span&gt;&lt;span style="color:#1f2328"&gt;:&lt;/span&gt;&lt;span style="color:#0550ae"&gt;51&lt;/span&gt;&lt;span style="color:#1f2328"&gt;:&lt;/span&gt;&lt;span style="color:#0550ae"&gt;09&lt;/span&gt;&lt;span style="color:#1f2328"&gt;)&lt;/span&gt; &lt;span style="color:#1f2328"&gt;[&lt;/span&gt;GCC &lt;span style="color:#0550ae"&gt;14.2.1&lt;/span&gt; &lt;span style="color:#0550ae"&gt;20241116&lt;/span&gt;&lt;span style="color:#1f2328"&gt;]&lt;/span&gt; on linux&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Type &lt;span style="color:#0a3069"&gt;&amp;#34;help&amp;#34;&lt;/span&gt;&lt;span style="color:#1f2328"&gt;,&lt;/span&gt; &lt;span style="color:#0a3069"&gt;&amp;#34;copyright&amp;#34;&lt;/span&gt;&lt;span style="color:#1f2328"&gt;,&lt;/span&gt; &lt;span style="color:#0a3069"&gt;&amp;#34;credits&amp;#34;&lt;/span&gt; &lt;span style="color:#0550ae"&gt;or&lt;/span&gt; &lt;span style="color:#0a3069"&gt;&amp;#34;license&amp;#34;&lt;/span&gt; &lt;span style="color:#cf222e"&gt;for&lt;/span&gt; more information&lt;span style="color:#0550ae"&gt;.&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#0550ae"&gt;&amp;gt;&amp;gt;&amp;gt;&lt;/span&gt; &lt;span style="color:#cf222e"&gt;def&lt;/span&gt; &lt;span style="color:#6639ba"&gt;a&lt;/span&gt;&lt;span style="color:#1f2328"&gt;():&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#0550ae"&gt;...&lt;/span&gt; &lt;span style="color:#0a3069"&gt;&amp;#34;&amp;#34;&amp;#34;This is a docstring&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#0a3069"&gt;... Its indent is not the same across lines.&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#0a3069"&gt;... This line has more indentation.&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#0a3069"&gt;... &amp;#34;&amp;#34;&amp;#34;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#0550ae"&gt;...&lt;/span&gt; &lt;span style="color:#cf222e"&gt;pass&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#0550ae"&gt;...&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#0550ae"&gt;&amp;gt;&amp;gt;&amp;gt;&lt;/span&gt; a&lt;span style="color:#0550ae"&gt;.&lt;/span&gt;&lt;span style="color:#953800"&gt;__doc__&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#0a3069"&gt;&amp;#39;This is a docstring&lt;/span&gt;&lt;span style="color:#0a3069"&gt;\n&lt;/span&gt;&lt;span style="color:#0a3069"&gt;Its indent is not the same across lines.&lt;/span&gt;&lt;span style="color:#0a3069"&gt;\n&lt;/span&gt;&lt;span style="color:#0a3069"&gt; This line has more indentation.&lt;/span&gt;&lt;span style="color:#0a3069"&gt;\n&lt;/span&gt;&lt;span style="color:#0a3069"&gt;&amp;#39;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#0550ae"&gt;&amp;gt;&amp;gt;&amp;gt;&lt;/span&gt; &lt;span style="color:#cf222e"&gt;def&lt;/span&gt; &lt;span style="color:#6639ba"&gt;a&lt;/span&gt;&lt;span style="color:#1f2328"&gt;():&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#0550ae"&gt;...&lt;/span&gt; &lt;span style="color:#0a3069"&gt;&amp;#34;&amp;#34;&amp;#34;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#0a3069"&gt;... This is a docstring&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#0a3069"&gt;... Its indent is not the same across lines.&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#0a3069"&gt;... This line has more indentation.&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#0a3069"&gt;... &amp;#34;&amp;#34;&amp;#34;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#0550ae"&gt;...&lt;/span&gt; &lt;span style="color:#cf222e"&gt;pass&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#0550ae"&gt;...&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#0550ae"&gt;&amp;gt;&amp;gt;&amp;gt;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#0550ae"&gt;&amp;gt;&amp;gt;&amp;gt;&lt;/span&gt; a&lt;span style="color:#0550ae"&gt;.&lt;/span&gt;&lt;span style="color:#953800"&gt;__doc__&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#0a3069"&gt;&amp;#39;&lt;/span&gt;&lt;span style="color:#0a3069"&gt;\n&lt;/span&gt;&lt;span style="color:#0a3069"&gt;This is a docstring&lt;/span&gt;&lt;span style="color:#0a3069"&gt;\n&lt;/span&gt;&lt;span style="color:#0a3069"&gt;Its indent is not the same across lines.&lt;/span&gt;&lt;span style="color:#0a3069"&gt;\n&lt;/span&gt;&lt;span style="color:#0a3069"&gt; This line has more indentation.&lt;/span&gt;&lt;span style="color:#0a3069"&gt;\n&lt;/span&gt;&lt;span style="color:#0a3069"&gt;&amp;#39;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#0550ae"&gt;&amp;gt;&amp;gt;&amp;gt;&lt;/span&gt; B &lt;span style="color:#0550ae"&gt;=&lt;/span&gt; &lt;span style="color:#0a3069"&gt;&amp;#34;&amp;#34;&amp;#34;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#0a3069"&gt;... This is a multiline string&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#0a3069"&gt;... Its indent is also not the same across lines.&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#0a3069"&gt;... &amp;#34;&amp;#34;&amp;#34;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#0550ae"&gt;&amp;gt;&amp;gt;&amp;gt;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#0550ae"&gt;&amp;gt;&amp;gt;&amp;gt;&lt;/span&gt; B&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#0a3069"&gt;&amp;#39;&lt;/span&gt;&lt;span style="color:#0a3069"&gt;\n&lt;/span&gt;&lt;span style="color:#0a3069"&gt; This is a multiline string&lt;/span&gt;&lt;span style="color:#0a3069"&gt;\n&lt;/span&gt;&lt;span style="color:#0a3069"&gt; Its indent is also not the same across lines.&lt;/span&gt;&lt;span style="color:#0a3069"&gt;\n&lt;/span&gt;&lt;span style="color:#0a3069"&gt; &amp;#39;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#0550ae"&gt;&amp;gt;&amp;gt;&amp;gt;&lt;/span&gt; B &lt;span style="color:#0550ae"&gt;=&lt;/span&gt; &lt;span style="color:#0a3069"&gt;&amp;#34;&amp;#34;&amp;#34;&lt;/span&gt;&lt;span style="color:#0a3069"&gt;\&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#0a3069"&gt;... This is a multiline string&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#0a3069"&gt;... Its indent is also not the same across lines.&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#0a3069"&gt;... &amp;#34;&amp;#34;&amp;#34;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#0550ae"&gt;&amp;gt;&amp;gt;&amp;gt;&lt;/span&gt; B&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#0a3069"&gt;&amp;#39; This is a multiline string&lt;/span&gt;&lt;span style="color:#0a3069"&gt;\n&lt;/span&gt;&lt;span style="color:#0a3069"&gt; Its indent is also not the same across lines.&lt;/span&gt;&lt;span style="color:#0a3069"&gt;\n&lt;/span&gt;&lt;span style="color:#0a3069"&gt; &amp;#39;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#0550ae"&gt;&amp;gt;&amp;gt;&amp;gt;&lt;/span&gt; exit&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#0550ae"&gt;%&lt;/span&gt; nix run nixpkgs&lt;span style="color:#57606a"&gt;#python312&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Python &lt;span style="color:#0550ae"&gt;3.12.9&lt;/span&gt; &lt;span style="color:#1f2328"&gt;(&lt;/span&gt;main&lt;span style="color:#1f2328"&gt;,&lt;/span&gt; Feb &lt;span style="color:#0550ae"&gt;4&lt;/span&gt; &lt;span style="color:#0550ae"&gt;2025&lt;/span&gt;&lt;span style="color:#1f2328"&gt;,&lt;/span&gt; &lt;span style="color:#0550ae"&gt;14&lt;/span&gt;&lt;span style="color:#1f2328"&gt;:&lt;/span&gt;&lt;span style="color:#0550ae"&gt;38&lt;/span&gt;&lt;span style="color:#1f2328"&gt;:&lt;/span&gt;&lt;span style="color:#0550ae"&gt;38&lt;/span&gt;&lt;span style="color:#1f2328"&gt;)&lt;/span&gt; &lt;span style="color:#1f2328"&gt;[&lt;/span&gt;GCC &lt;span style="color:#0550ae"&gt;14.2.1&lt;/span&gt; &lt;span style="color:#0550ae"&gt;20241116&lt;/span&gt;&lt;span style="color:#1f2328"&gt;]&lt;/span&gt; on linux&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Type &lt;span style="color:#0a3069"&gt;&amp;#34;help&amp;#34;&lt;/span&gt;&lt;span style="color:#1f2328"&gt;,&lt;/span&gt; &lt;span style="color:#0a3069"&gt;&amp;#34;copyright&amp;#34;&lt;/span&gt;&lt;span style="color:#1f2328"&gt;,&lt;/span&gt; &lt;span style="color:#0a3069"&gt;&amp;#34;credits&amp;#34;&lt;/span&gt; &lt;span style="color:#0550ae"&gt;or&lt;/span&gt; &lt;span style="color:#0a3069"&gt;&amp;#34;license&amp;#34;&lt;/span&gt; &lt;span style="color:#cf222e"&gt;for&lt;/span&gt; more information&lt;span style="color:#0550ae"&gt;.&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#0550ae"&gt;&amp;gt;&amp;gt;&amp;gt;&lt;/span&gt; &lt;span style="color:#cf222e"&gt;def&lt;/span&gt; &lt;span style="color:#6639ba"&gt;a&lt;/span&gt;&lt;span style="color:#1f2328"&gt;():&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#0550ae"&gt;...&lt;/span&gt; &lt;span style="color:#0a3069"&gt;&amp;#34;&amp;#34;&amp;#34;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#0a3069"&gt;... This is a docstring.&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#0a3069"&gt;... Its indent balabala&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#0a3069"&gt;... &amp;#34;&amp;#34;&amp;#34;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#0550ae"&gt;...&lt;/span&gt; &lt;span style="color:#cf222e"&gt;pass&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#0550ae"&gt;...&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#0550ae"&gt;&amp;gt;&amp;gt;&amp;gt;&lt;/span&gt; a&lt;span style="color:#0550ae"&gt;.&lt;/span&gt;&lt;span style="color:#953800"&gt;__doc__&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#0a3069"&gt;&amp;#39;&lt;/span&gt;&lt;span style="color:#0a3069"&gt;\n\t&lt;/span&gt;&lt;span style="color:#0a3069"&gt;This is a docstring.&lt;/span&gt;&lt;span style="color:#0a3069"&gt;\n\t&lt;/span&gt;&lt;span style="color:#0a3069"&gt; Its indent balabala&lt;/span&gt;&lt;span style="color:#0a3069"&gt;\n\t&lt;/span&gt;&lt;span style="color:#0a3069"&gt;&amp;#39;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;#python&lt;/p&gt;</description></item><item><title>Markdown - Syntaxes that I don't Know</title><link>https://depoze.xyz/pages/markdown-syntax/</link><pubDate>Tue, 25 Feb 2025 00:00:00 +0000</pubDate><guid>https://depoze.xyz/pages/markdown-syntax/</guid><description>&lt;h1 id="syntaxes"&gt;Syntaxes&lt;/h1&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&#10;&lt;h2 id="line-break"&gt;Line Break&lt;/h2&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;End a line with 2 or more trailing spaces for a line break (&amp;lt;br&amp;gt; tag in HTML).&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;h2 id="bold-and-italic"&gt;Bold and Italic&lt;/h2&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Use &lt;code&gt;***&lt;/code&gt; to warp the text you want to &lt;em&gt;&lt;strong&gt;Bold and Italic&lt;/strong&gt;&lt;/em&gt;.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;h2 id="nest-another-element-in-a-list"&gt;Nest Another Element in a List&lt;/h2&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Indent the element 4 spaces in the list environment.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="background-color:#f7f7f7;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-markdown" data-lang="markdown"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#cf222e"&gt;-&lt;/span&gt; list 0&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#cf222e"&gt;-&lt;/span&gt; list 1&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#cf222e"&gt; &amp;gt; &lt;/span&gt;&lt;span style="color:#1f2328"&gt;This is a blockquote nested in a list&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#cf222e"&gt;-&lt;/span&gt; list 2&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ul&gt;&#10;&lt;li&gt;&#10;&lt;h2 id="escape-backticks-in-a-code-element"&gt;Escape Backticks in a Code Element&lt;/h2&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Wrap the code element that includes one or more backticks with double backticks.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="background-color:#f7f7f7;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-markdown" data-lang="markdown"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;`&lt;span style="color:#0a3069"&gt;`This is a code element with a backtick(`&lt;/span&gt;) inside.``&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ul&gt;&#10;&lt;li&gt;&#10;&lt;h2 id="adding-a-title-for-a-link"&gt;Adding a Title for a Link&lt;/h2&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Add a title enclosed in quotation marks after the link url.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="background-color:#f7f7f7;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-markdown" data-lang="markdown"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;My favorite search engine is [&lt;span style="color:#0550ae"&gt;DuckDuckGo&lt;/span&gt;](&lt;span style="color:#1f2328"&gt;https://duckduckgo.com &amp;#34;The best search engine for privacy&amp;#34;&lt;/span&gt;).&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ul&gt;&#10;&lt;li&gt;&#10;&lt;h2 id="automatic-links"&gt;Automatic Links&lt;/h2&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Enclose a url or email address with angle brackets if they do not need a link text.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;h2 id="formatting-links"&gt;Formatting Links&lt;/h2&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;To emphasize links, add asterisks before and after the brackets and parentheses. To denote links as code, add backticks in the brackets.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="background-color:#f7f7f7;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-markdown" data-lang="markdown"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;I love supporting the &lt;span style="color:#1f2328"&gt;**&lt;/span&gt;[&lt;span style="color:#0550ae"&gt;EFF&lt;/span&gt;](&lt;span style="color:#1f2328"&gt;https://eff.org&lt;/span&gt;)**.&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;This is the &lt;span style="color:#1f2328"&gt;*[Markdown Guide](https://www.markdownguide.org)*&lt;/span&gt;.&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;See the section on [&lt;span style="color:#0550ae"&gt;`code`&lt;/span&gt;](&lt;span style="color:#1f2328"&gt;#code&lt;/span&gt;).&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ul&gt;&#10;&lt;li&gt;&#10;&lt;h2 id="reference-style-links"&gt;Reference-style Links&lt;/h2&gt;&#10;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="background-color:#f7f7f7;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-markdown" data-lang="markdown"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;This is a [text with link][1].&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;...&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;[1]: https://some.domain.tld/path&lt;span style="color:#6639ba"&gt;#hashtag&lt;/span&gt; &amp;#34;title shown when hovering&amp;#34;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ul&gt;&#10;&lt;li&gt;&#10;&lt;h2 id="linking-images"&gt;Linking Images&lt;/h2&gt;&#10;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="background-color:#f7f7f7;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-markdown" data-lang="markdown"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;[&lt;span style="color:#0550ae"&gt;![An old rock in the desert&lt;/span&gt;](&lt;span style="color:#1f2328"&gt;/static/assets/shiprock.jpg&lt;/span&gt;)](https://www.flickr.com/photos/beaurogers/31833779864/in/photolist-Qv3rFw-34mt9F-a9Cmfy-5Ha3Zi-9msKdv-o3hgjr-hWpUte-4WMsJ1-KUQ8N-deshUb-vssBD-6CQci6-8AFCiD-zsJWT-nNfsgB-dPDwZJ-bn9JGn-5HtSXY-6CUhAL-a4UTXB-ugPum-KUPSo-fBLNm-6CUmpy-4WMsc9-8a7D3T-83KJev-6CQ2bK-nNusHJ-a78rQH-nw3NvT-7aq2qf-8wwBso-3nNceh-ugSKP-4mh4kh-bbeeqH-a7biME-q3PtTf-brFpgb-cg38zw-bXMZc-nJPELD-f58Lmo-bXMYG-bz8AAi-bxNtNT-bXMYi-bXMY6-bXMYv)&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ul&gt;&#10;&lt;li&gt;&#10;&lt;h2 id="verbatim-code-blocks"&gt;Verbatim Code Blocks&lt;/h2&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Aside from fenced code blocks, many implementations support &lt;strong&gt;verbatim text&lt;/strong&gt;. Indent all lines in a block 4 spaces will make it treated as a code block.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="background-color:#f7f7f7;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-markdown" data-lang="markdown"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; this {&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; is treated as&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; a code block.&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h1 id="pandocs-markdown-best-practices"&gt;Pandoc&amp;rsquo;s Markdown Best Practices&lt;/h1&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;&lt;strong&gt;Warning&lt;/strong&gt;: The following syntaxes may not be supported by all implementations.&lt;/p&gt;</description></item><item><title>Tabs in vim</title><link>https://depoze.xyz/pages/vim-tabs/</link><pubDate>Fri, 11 Oct 2024 00:00:00 +0000</pubDate><guid>https://depoze.xyz/pages/vim-tabs/</guid><description>&lt;h2 id="options-explanation"&gt;Options Explanation&lt;/h2&gt;&#10;&lt;p&gt;&lt;strong&gt;expandtab&lt;/strong&gt;: a boolean value controls whether &lt;strong&gt;the real input&lt;/strong&gt; is a tab character (\t) or the specified number of spaces.&lt;/p&gt;&#10;&lt;pre tabindex="0"&gt;&lt;code&gt; &amp;#39;expandtab&amp;#39; &amp;#39;et&amp;#39; &amp;#39;noexpandtab&amp;#39; &amp;#39;noet&amp;#39;&#10;&amp;#39;expandtab&amp;#39; &amp;#39;et&amp;#39; boolean (default off)&#10; local to buffer&#10; In Insert mode: Use the appropriate number of spaces to insert a&#10; &amp;lt;Tab&amp;gt;. Spaces are used in indents with the &amp;#39;&amp;gt;&amp;#39; and &amp;#39;&amp;lt;&amp;#39; commands and&#10; when &amp;#39;autoindent&amp;#39; is on. To insert a real tab when &amp;#39;expandtab&amp;#39; is&#10; on, use CTRL-V&amp;lt;Tab&amp;gt;. See also :retab and ins-expandtab. &#10;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;strong&gt;tabstop&lt;/strong&gt;: number of spaces a tab &lt;strong&gt;visually&lt;/strong&gt; counts for. Defaults to 8. It does not affect how many spaces/tabs will be inserted directly.&lt;/p&gt;</description></item><item><title>How to type annotate a Gzipfile in Python?</title><link>https://depoze.xyz/pages/gzipfile-typing/</link><pubDate>Sat, 05 Oct 2024 00:00:00 +0000</pubDate><guid>https://depoze.xyz/pages/gzipfile-typing/</guid><description>&lt;p&gt;Pyright complains when I use the following code to process gzip files:&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="background-color:#f7f7f7;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-python" data-lang="python"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#cf222e"&gt;import&lt;/span&gt; &lt;span style="color:#24292e"&gt;gzip&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#cf222e"&gt;import&lt;/span&gt; &lt;span style="color:#24292e"&gt;os&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#cf222e"&gt;import&lt;/span&gt; &lt;span style="color:#24292e"&gt;typing&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#cf222e"&gt;def&lt;/span&gt; &lt;span style="color:#6639ba"&gt;readfile&lt;/span&gt;&lt;span style="color:#1f2328"&gt;(&lt;/span&gt;f&lt;span style="color:#1f2328"&gt;:&lt;/span&gt; os&lt;span style="color:#0550ae"&gt;.&lt;/span&gt;PathLike &lt;span style="color:#0550ae"&gt;|&lt;/span&gt; typing&lt;span style="color:#0550ae"&gt;.&lt;/span&gt;TextIO&lt;span style="color:#1f2328"&gt;):&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#9;&lt;span style="color:#cf222e"&gt;pass&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#cf222e"&gt;with&lt;/span&gt; gzip&lt;span style="color:#0550ae"&gt;.&lt;/span&gt;open&lt;span style="color:#1f2328"&gt;(&lt;/span&gt;&lt;span style="color:#0a3069"&gt;&amp;#34;/path/to/foo.gz&amp;#34;&lt;/span&gt;&lt;span style="color:#1f2328"&gt;,&lt;/span&gt; &lt;span style="color:#0a3069"&gt;&amp;#39;r&amp;#39;&lt;/span&gt;&lt;span style="color:#1f2328"&gt;)&lt;/span&gt; &lt;span style="color:#cf222e"&gt;as&lt;/span&gt; &lt;span style="color:#6639ba"&gt;input&lt;/span&gt;&lt;span style="color:#1f2328"&gt;:&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; readfile&lt;span style="color:#1f2328"&gt;(&lt;/span&gt;&lt;span style="color:#6639ba"&gt;input&lt;/span&gt;&lt;span style="color:#1f2328"&gt;)&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Diagnostics:&lt;/p&gt;&#10;&lt;pre tabindex="0"&gt;&lt;code&gt; Argument of type &amp;#34;GzipFile&amp;#34; cannot be assigned to parameter &amp;#34;file&amp;#34; of type &amp;#34;PathLike[Unknown] | TextIO&amp;#34; in func&#10; tion &amp;#34;readfile&amp;#34;&#10;   Type &amp;#34;GzipFile&amp;#34; is incompatible with type &amp;#34;PathLike[Unknown] | TextIO&amp;#34;&#10;     &amp;#34;GzipFile&amp;#34; is incompatible with protocol &amp;#34;PathLike[Unknown]&amp;#34;&#10;       &amp;#34;__fspath__&amp;#34; is not present&#10;     &amp;#34;GzipFile&amp;#34; is incompatible with &amp;#34;TextIO&amp;#34; [reportArgumentType]&#10;&lt;/code&gt;&lt;/pre&gt;&lt;h2 id="text-file-inside"&gt;Text File inside&lt;/h2&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;According to the gzip.open() docs:&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;blockquote&gt;&#10;&lt;p&gt;The &lt;em&gt;filename&lt;/em&gt; argument can be an actual filename (a &lt;a href="https://docs.python.org/3/library/stdtypes.html#str"&gt;str&lt;/a&gt; or &lt;a href="https://docs.python.org/3/library/stdtypes.html#bytes"&gt;bytes&lt;/a&gt; object), or an existing file object to read from or write to.&lt;/p&gt;</description></item><item><title>nginx server_name 的反常理行为</title><link>https://depoze.xyz/pages/nginx-server-name/</link><pubDate>Sat, 24 Aug 2024 00:00:00 +0000</pubDate><guid>https://depoze.xyz/pages/nginx-server-name/</guid><description>&lt;h2 id="tldr"&gt;TL;DR&lt;/h2&gt;&#10;&lt;blockquote&gt;&#10;&lt;p&gt;It is important to understand that Nginx will only evaluate the &lt;code&gt;server_name&lt;/code&gt; directive when it needs to distinguish between server blocks that match to the same level of specificity in the &lt;code&gt;listen&lt;/code&gt; directive.&lt;/p&gt;&#10;&lt;/blockquote&gt;&#10;&lt;hr&gt;&#10;&lt;p&gt;在全新安装了 Nginx 的机器上进行配置时，发现 server_name 这一配置失效：&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;某个 server 块中，配置有 server_name 和 location 块，而本地的 3000 端口运行着应用。&lt;code&gt;*.internal&lt;/code&gt; 与 &lt;code&gt;*.localhost&lt;/code&gt; 已在 DNS 记录中指向 &lt;code&gt;127.0.0.1&lt;/code&gt;。：&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="background-color:#f7f7f7;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-nginx" data-lang="nginx"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#cf222e"&gt;server&lt;/span&gt; &lt;span style="color:#1f2328"&gt;{&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#cf222e"&gt;listen&lt;/span&gt; &lt;span style="color:#0550ae"&gt;80&lt;/span&gt;&lt;span style="color:#1f2328"&gt;;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#cf222e"&gt;server_name&lt;/span&gt; &lt;span style="color:#0a3069"&gt;sub.internal&lt;/span&gt;&lt;span style="color:#1f2328"&gt;;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#cf222e"&gt;location&lt;/span&gt; &lt;span style="color:#0a3069"&gt;/&lt;/span&gt; &lt;span style="color:#1f2328"&gt;{&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#cf222e"&gt;proxy_pass&lt;/span&gt; &lt;span style="color:#0a3069"&gt;http://127.0.0.1:3000&lt;/span&gt;&lt;span style="color:#1f2328"&gt;;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#1f2328"&gt;}&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#1f2328"&gt;}&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ul&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;在这一配置下，期望的行为是 在访问 &lt;code&gt;sub.internal&lt;/code&gt; 时被重定向到 &lt;code&gt;127.0.0.1:3000&lt;/code&gt;，访问其他域名如 &lt;code&gt;whatever.internal&lt;/code&gt; 或 &lt;code&gt;whatever.localhost&lt;/code&gt; 时，无事发生。&lt;/p&gt;</description></item><item><title>为本地运行的服务配置域名访问</title><link>https://depoze.xyz/pages/local-domains/</link><pubDate>Sat, 24 Aug 2024 00:00:00 +0000</pubDate><guid>https://depoze.xyz/pages/local-domains/</guid><description>&lt;p&gt;本地经常会运行着一些服务，每次通过 127.0.0.1:&lt;port&gt; 的方式访问 web 页面显得太过笨拙。刚好前几日 ICANN 保留了 &lt;code&gt;.INTERNAL&lt;/code&gt; 作为内网专用的顶级域名，就使用这个域名来配置。&lt;/p&gt;&#10;&lt;h2 id="dns"&gt;DNS&lt;/h2&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;需要配置域名 &lt;code&gt;*.internal&lt;/code&gt; 指向 127.0.0.1。由于魔改 &lt;code&gt;/etc/hosts&lt;/code&gt; 的方法&lt;a href="https://serverfault.com/questions/118378/in-my-etc-hosts-file-on-linux-osx-how-do-i-do-a-wildcard-subdomain"&gt;并不支持 wildcard&lt;/a&gt;，使用 &lt;a href="https://thekelleys.org.uk/dnsmasq/doc.html"&gt;dnsmasq&lt;/a&gt; 在本地起一个 DNS 服务。&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="background-color:#f7f7f7;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-shell-session" data-lang="shell-session"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;$ sudo pacman -S dnsmasq&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;$ sudo systemctl &lt;span style="color:#6639ba"&gt;enable&lt;/span&gt; dnsmasq&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;pre&gt;&lt;code&gt;+ 在配置中添加域名&#10;&lt;/code&gt;&lt;/pre&gt;&#10;&lt;pre tabindex="0"&gt;&lt;code&gt;# /etc/dnsmasq.conf&#10;&#10;address=/internal/127.0.0.1&#10;&lt;/code&gt;&lt;/pre&gt;&lt;pre&gt;&lt;code&gt;+ 启动 dnsmasq 服务时遇到的小问题：127.0.0.1:53 被占用。一种解决方案是在 `/etc/dnsmasq.conf` 中把服务运行到其他地方。记得需要在 systemd-resolved 中配置 DNS 地址。之后重启 dnsmasq 和 systemd-resolved。各种可能的解决方案参考：[link](https://askubuntu.com/questions/191226/dnsmasq-failed-to-create-listening-socket-for-port-53-address-already-in-use)&#10;&lt;/code&gt;&lt;/pre&gt;&#10;&lt;pre tabindex="0"&gt;&lt;code&gt;# /etc/dnsmasq.conf&#10;listen-address=127.0.53.1&#10;bind-interfaces&#10;&#10;&#10;# /etc/systemd/resolved.conf&#10;[Resolve]&#10;DNS=127.0.53.1&#10;&lt;/code&gt;&lt;/pre&gt;&lt;h2 id="web-server"&gt;Web Server&lt;/h2&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;需要配置一个 web server，将不同的子域名指向正确的端口。这里使用 nginx。&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;启动 nginx 服务，在配置中添加 server 块。&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="background-color:#f7f7f7;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-nginx" data-lang="nginx"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#57606a"&gt;# /etc/nginx/nginx.conf&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#cf222e"&gt;http&lt;/span&gt; &lt;span style="color:#1f2328"&gt;{&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#9;&lt;span style="color:#cf222e"&gt;include&lt;/span&gt; &lt;span style="color:#0a3069"&gt;conf.d/*.conf&lt;/span&gt;&lt;span style="color:#1f2328"&gt;;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#1f2328"&gt;}&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;hr&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="background-color:#f7f7f7;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-nginx" data-lang="nginx"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#57606a"&gt;# /etc/nginx/conf.d/internal.conf&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#cf222e"&gt;server&lt;/span&gt; &lt;span style="color:#1f2328"&gt;{&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#cf222e"&gt;listen&lt;/span&gt; &lt;span style="color:#0550ae"&gt;80&lt;/span&gt;&lt;span style="color:#1f2328"&gt;;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#cf222e"&gt;server_name&lt;/span&gt; &lt;span style="color:#0a3069"&gt;sub1.internal&lt;/span&gt;&lt;span style="color:#1f2328"&gt;;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#cf222e"&gt;location&lt;/span&gt; &lt;span style="color:#0a3069"&gt;/&lt;/span&gt; &lt;span style="color:#1f2328"&gt;{&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#cf222e"&gt;proxy_pass&lt;/span&gt; &lt;span style="color:#0a3069"&gt;http://127.0.0.1:3000&lt;/span&gt;&lt;span style="color:#1f2328"&gt;;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#1f2328"&gt;}&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#1f2328"&gt;}&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#cf222e"&gt;server&lt;/span&gt; &lt;span style="color:#1f2328"&gt;{&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#cf222e"&gt;listen&lt;/span&gt; &lt;span style="color:#0550ae"&gt;80&lt;/span&gt;&lt;span style="color:#1f2328"&gt;;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#cf222e"&gt;server_name&lt;/span&gt; &lt;span style="color:#0a3069"&gt;*.internal&lt;/span&gt;&lt;span style="color:#1f2328"&gt;;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#9;&lt;span style="color:#cf222e"&gt;return&lt;/span&gt; &lt;span style="color:#0550ae"&gt;404&lt;/span&gt;&lt;span style="color:#1f2328"&gt;;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#1f2328"&gt;}&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ul&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;重启 nginx 服务。现在访问 &lt;code&gt;sub1.internal&lt;/code&gt; 即被重定向到 &lt;code&gt;127.0.0.1:3000&lt;/code&gt;。&lt;/p&gt;</description></item><item><title>区分 USB 接口类型的方法</title><link>https://depoze.xyz/pages/usb-connector-types/</link><pubDate>Mon, 19 Aug 2024 00:00:00 +0000</pubDate><guid>https://depoze.xyz/pages/usb-connector-types/</guid><description>&lt;h2 id="env--dependency"&gt;Env / Dependency&lt;/h2&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;Arch Linux, x86_64&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;core/usbutils&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h2 id="区分-usb-设备是否支持-usb-30"&gt;区分 USB 设备是否支持 USB 3.0&lt;/h2&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;&lt;del&gt;接口是蓝色的一般就是 USB 3.0&lt;/del&gt;&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;USB 3.0 有五个额外的插针 &lt;a href="https://en.wikipedia.org/wiki/USB_3.0#/media/File:Connector_USB_3_IMGP6024_wp.jpg"&gt;Image&lt;/a&gt;&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;利用 lsusb：&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="background-color:#f7f7f7;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-shell-session" data-lang="shell-session"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;$ lsusb &#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#1f2328"&gt;Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#1f2328"&gt;Bus 001 Device 002: ID 04f2:b689 Chicony Electronics Co., Ltd TOSHIBA Web Camera - HD&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#1f2328"&gt;Bus 001 Device 003: ID 8087:0a2b Intel Corp. Bluetooth wireless interface&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#1f2328"&gt;Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#1f2328"&gt;Bus 002 Device 004: ID 1058:266e Western Digital Technologies, Inc. Elements SE SSD&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f6f8fa;background-color:#82071e"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;$ lsusb -D /dev/bus/usb/002/004 &#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#1f2328"&gt;Device: ID 1058:266e Western Digital Technologies, Inc. Elements SE SSD&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#1f2328"&gt;Couldn&amp;#39;t open device, some information will be missing&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#1f2328"&gt;Device Descriptor:&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#1f2328"&gt; bLength 18&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#1f2328"&gt; bDescriptorType 1&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#1f2328"&gt; bcdUSB 3.20&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;设备描述符中 &lt;code&gt;bcdUSB&lt;/code&gt; 即为此 USB 设备支持的 USB 类型。&lt;/strong&gt;&lt;/p&gt;</description></item><item><title>Setup remote server pubkey login</title><link>https://depoze.xyz/pages/ssh-pubkey-login/</link><pubDate>Sun, 18 Aug 2024 00:00:00 +0000</pubDate><guid>https://depoze.xyz/pages/ssh-pubkey-login/</guid><description>&lt;p&gt;create pubkey pair locally: &lt;code&gt;ssh-keygen&lt;/code&gt;&lt;/p&gt;&#10;&lt;p&gt;send key to server &lt;code&gt;authorized_keys&lt;/code&gt;:&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="background-color:#f7f7f7;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-shell-session" data-lang="shell-session"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;$ ssh-copy-id -p &lt;span style="color:#0550ae"&gt;22&lt;/span&gt; -i &amp;lt;path_to_public_key&amp;gt; &amp;lt;username&amp;gt;@&amp;lt;host&amp;gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;generate PuTTY-compatible private key format (&lt;code&gt;*.ppk&lt;/code&gt;):&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="background-color:#f7f7f7;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-shell-session" data-lang="shell-session"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;$ puttygen &amp;lt;path_to_private_key&amp;gt; -O private &amp;lt;path_to_ppk&amp;gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description></item><item><title>Basic Operations on Datatypes in Nix</title><link>https://depoze.xyz/pages/nix-datatypes/</link><pubDate>Tue, 09 Jul 2024 00:00:00 +0000</pubDate><guid>https://depoze.xyz/pages/nix-datatypes/</guid><description>&lt;h2 id="attribute-sets"&gt;Attribute sets&lt;/h2&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;This is an example code, where &lt;code&gt;ex0&lt;/code&gt; to &lt;code&gt;ex7&lt;/code&gt; are evaluated to true.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="background-color:#f7f7f7;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-nix" data-lang="nix"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#cf222e"&gt;with&lt;/span&gt; &lt;span style="color:#cf222e"&gt;import&lt;/span&gt; &lt;span style="color:#0a3069"&gt;&amp;lt;nixpkgs&amp;gt;&lt;/span&gt; &lt;span style="color:#1f2328"&gt;{&lt;/span&gt; &lt;span style="color:#1f2328"&gt;};&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#cf222e"&gt;with&lt;/span&gt; lib&lt;span style="color:#1f2328"&gt;;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#cf222e"&gt;let&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; attr &lt;span style="color:#0550ae"&gt;=&lt;/span&gt; &lt;span style="color:#1f2328"&gt;{&lt;/span&gt;a&lt;span style="color:#0550ae"&gt;=&lt;/span&gt;&lt;span style="color:#0a3069"&gt;&amp;#34;a&amp;#34;&lt;/span&gt;&lt;span style="color:#1f2328"&gt;;&lt;/span&gt; b &lt;span style="color:#0550ae"&gt;=&lt;/span&gt; &lt;span style="color:#0550ae"&gt;1&lt;/span&gt;&lt;span style="color:#1f2328"&gt;;&lt;/span&gt; c &lt;span style="color:#0550ae"&gt;=&lt;/span&gt; &lt;span style="color:#0550ae"&gt;true&lt;/span&gt;&lt;span style="color:#1f2328"&gt;;};&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; s &lt;span style="color:#0550ae"&gt;=&lt;/span&gt; &lt;span style="color:#0a3069"&gt;&amp;#34;b&amp;#34;&lt;/span&gt;&lt;span style="color:#1f2328"&gt;;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#cf222e"&gt;in&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#1f2328"&gt;{&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#57606a"&gt;#replace all X, everything should evaluate to true&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; ex0 &lt;span style="color:#0550ae"&gt;=&lt;/span&gt; isAttrs attr&lt;span style="color:#1f2328"&gt;;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; ex1 &lt;span style="color:#0550ae"&gt;=&lt;/span&gt; attr&lt;span style="color:#0550ae"&gt;.&lt;/span&gt;a &lt;span style="color:#0550ae"&gt;==&lt;/span&gt; &lt;span style="color:#0a3069"&gt;&amp;#34;a&amp;#34;&lt;/span&gt;&lt;span style="color:#1f2328"&gt;;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; ex2 &lt;span style="color:#0550ae"&gt;=&lt;/span&gt; attr&lt;span style="color:#0550ae"&gt;.&lt;/span&gt;&lt;span style="color:#0a3069"&gt;${&lt;/span&gt;s&lt;span style="color:#0a3069"&gt;}&lt;/span&gt; &lt;span style="color:#0550ae"&gt;==&lt;/span&gt; &lt;span style="color:#0550ae"&gt;1&lt;/span&gt;&lt;span style="color:#1f2328"&gt;;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; ex3 &lt;span style="color:#0550ae"&gt;=&lt;/span&gt; attrVals &lt;span style="color:#1f2328"&gt;[&lt;/span&gt;&lt;span style="color:#0a3069"&gt;&amp;#34;c&amp;#34;&lt;/span&gt; &lt;span style="color:#0a3069"&gt;&amp;#34;b&amp;#34;&lt;/span&gt;&lt;span style="color:#1f2328"&gt;]&lt;/span&gt; attr &lt;span style="color:#0550ae"&gt;==&lt;/span&gt; &lt;span style="color:#1f2328"&gt;[&lt;/span&gt; &lt;span style="color:#0550ae"&gt;true&lt;/span&gt; &lt;span style="color:#0550ae"&gt;1&lt;/span&gt; &lt;span style="color:#1f2328"&gt;];&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; ex4 &lt;span style="color:#0550ae"&gt;=&lt;/span&gt; attrValues attr &lt;span style="color:#0550ae"&gt;==&lt;/span&gt; &lt;span style="color:#1f2328"&gt;[&lt;/span&gt; &lt;span style="color:#0a3069"&gt;&amp;#34;a&amp;#34;&lt;/span&gt; &lt;span style="color:#0550ae"&gt;1&lt;/span&gt; &lt;span style="color:#0550ae"&gt;true&lt;/span&gt; &lt;span style="color:#1f2328"&gt;];&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; ex5 &lt;span style="color:#0550ae"&gt;=&lt;/span&gt; &lt;span style="color:#6639ba"&gt;builtins&lt;/span&gt;&lt;span style="color:#0550ae"&gt;.&lt;/span&gt;intersectAttrs attr &lt;span style="color:#1f2328"&gt;{&lt;/span&gt;a&lt;span style="color:#0550ae"&gt;=&lt;/span&gt;&lt;span style="color:#0a3069"&gt;&amp;#34;b&amp;#34;&lt;/span&gt;&lt;span style="color:#1f2328"&gt;;&lt;/span&gt; d&lt;span style="color:#0550ae"&gt;=&lt;/span&gt;&lt;span style="color:#0550ae"&gt;234&lt;/span&gt;&lt;span style="color:#1f2328"&gt;;&lt;/span&gt; c&lt;span style="color:#0550ae"&gt;=&lt;/span&gt;&lt;span style="color:#0a3069"&gt;&amp;#34;&amp;#34;&lt;/span&gt;&lt;span style="color:#1f2328"&gt;;}&lt;/span&gt; &#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#0550ae"&gt;==&lt;/span&gt; &lt;span style="color:#1f2328"&gt;{&lt;/span&gt; a &lt;span style="color:#0550ae"&gt;=&lt;/span&gt; &lt;span style="color:#0a3069"&gt;&amp;#34;b&amp;#34;&lt;/span&gt;&lt;span style="color:#1f2328"&gt;;&lt;/span&gt; c &lt;span style="color:#0550ae"&gt;=&lt;/span&gt; &lt;span style="color:#0a3069"&gt;&amp;#34;&amp;#34;&lt;/span&gt;&lt;span style="color:#1f2328"&gt;;};&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; ex6 &lt;span style="color:#0550ae"&gt;=&lt;/span&gt; &lt;span style="color:#6639ba"&gt;removeAttrs&lt;/span&gt; attr &lt;span style="color:#1f2328"&gt;[&lt;/span&gt;&lt;span style="color:#0a3069"&gt;&amp;#34;b&amp;#34;&lt;/span&gt; &lt;span style="color:#0a3069"&gt;&amp;#34;c&amp;#34;&lt;/span&gt;&lt;span style="color:#1f2328"&gt;]&lt;/span&gt; &lt;span style="color:#0550ae"&gt;==&lt;/span&gt; &lt;span style="color:#1f2328"&gt;{&lt;/span&gt; a&lt;span style="color:#0550ae"&gt;=&lt;/span&gt;&lt;span style="color:#0a3069"&gt;&amp;#34;a&amp;#34;&lt;/span&gt;&lt;span style="color:#1f2328"&gt;;&lt;/span&gt; &lt;span style="color:#1f2328"&gt;};&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; ex7 &lt;span style="color:#0550ae"&gt;=&lt;/span&gt; &lt;span style="color:#0550ae"&gt;!&lt;/span&gt; attr &lt;span style="color:#0550ae"&gt;?&lt;/span&gt; a &lt;span style="color:#0550ae"&gt;==&lt;/span&gt; &lt;span style="color:#0550ae"&gt;false&lt;/span&gt;&lt;span style="color:#1f2328"&gt;;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#1f2328"&gt;}&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;source: &lt;a href="https://nixcloud.io/tour/?id=attrset/examples"&gt;https://nixcloud.io/tour/?id=attrset/examples&lt;/a&gt;&lt;/p&gt;</description></item><item><title>404岛主</title><link>https://depoze.xyz/pages/island-master/</link><pubDate>Thu, 04 Jul 2024 00:00:00 +0000</pubDate><guid>https://depoze.xyz/pages/island-master/</guid><description>&lt;p&gt;&lt;a href="https://space.bilibili.com/2075535"&gt;https://space.bilibili.com/2075535&lt;/a&gt;&lt;/p&gt;</description></item><item><title>为什么刷怪场刷不出你想要的怪？</title><link>https://depoze.xyz/pages/terraria-spawn/</link><pubDate>Thu, 04 Jul 2024 00:00:00 +0000</pubDate><guid>https://depoze.xyz/pages/terraria-spawn/</guid><description>&lt;p&gt;&lt;a href="https://www.bilibili.com/video/BV1EW4y197dh"&gt;https://www.bilibili.com/video/BV1EW4y197dh&lt;/a&gt;&lt;/p&gt;&#10;&lt;p&gt;{{video &lt;a href="https://www.bilibili.com/video/BV1EW4y197dh/%7D%7D"&gt;https://www.bilibili.com/video/BV1EW4y197dh/}}&lt;/a&gt;&lt;/p&gt;&#10;&lt;hr&gt;&#10;&lt;p&gt;是看[[岛主]]视频 BV1EW4y197dh 做的笔记&lt;/p&gt;&#10;&lt;p&gt;环境控制的怪物生成（地板：任意人工方块）&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;纯净洞穴&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;常规洞穴怪&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;邪恶&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;常规洞穴怪 + 对应环境的环境宝箱怪&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;神圣&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;常规洞穴怪 + 神圣宝箱怪 + 发光蝙蝠、发光史莱姆&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;冰雪&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;冰雪怪&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;丛林&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;所有蝙蝠替换为丛林蝙蝠&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;方块控制的怪物生成（环境：任意环境）&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;丛林草&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;蜜蜂、丛林蜘蛛、核弹龟、尖刺史莱姆&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;蜂巢块&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;仅蜜蜂&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;邪恶方块&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;邪恶怪&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;+影烛 -&amp;gt; 穿墙怪&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;雪块、冰块&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;冰蝙蝠、冰元素&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;珍珠石&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;+影烛 -&amp;gt; 混沌元素&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;蘑菇草&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;+地下层 松露虫&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;要求顶上不可以加平台/传送带（无法继承）&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;危险沙漠墙&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;+地下层 各种地下沙漠怪&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;蜘蛛墙&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;刷怪平台顶部&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;玩家左上角（替换部分怪为蜘蛛）&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;发型师必须要铺在方块后面&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;环境+方块&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;感染环境+冰雪块&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;+影烛 猪龙&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;地牢环境（250地牢砖+玩家背后危险墙）+地牢砖上方任意墙（默认砖墙怪）&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;杀死的任意怪的背后有诅咒地牢墙 -&amp;gt; 幽魂&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;#Terraria&lt;/p&gt;</description></item><item><title>Functional Programming</title><link>https://depoze.xyz/pages/functional-programming/</link><pubDate>Sun, 30 Jun 2024 00:00:00 +0000</pubDate><guid>https://depoze.xyz/pages/functional-programming/</guid><description/></item><item><title>Nix</title><link>https://depoze.xyz/pages/nix/</link><pubDate>Sun, 30 Jun 2024 00:00:00 +0000</pubDate><guid>https://depoze.xyz/pages/nix/</guid><description>&lt;h2 id="references"&gt;References&lt;/h2&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;&lt;a href="https://nixos.org/guides/nix-pills"&gt;https://nixos.org/guides/nix-pills&lt;/a&gt;&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;&lt;a href="https://vtimofeenko.com/posts/practical-nix-flake-anatomy-a-guided-tour-of-flake.nix"&gt;https://vtimofeenko.com/posts/practical-nix-flake-anatomy-a-guided-tour-of-flake.nix&lt;/a&gt;&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;&lt;a href="https://zero-to-nix.com/"&gt;https://zero-to-nix.com/&lt;/a&gt;&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;/ul&gt;</description></item><item><title>Nix Language Basics</title><link>https://depoze.xyz/pages/nix-language/</link><pubDate>Sun, 30 Jun 2024 00:00:00 +0000</pubDate><guid>https://depoze.xyz/pages/nix-language/</guid><description>&lt;p&gt;Nix is &lt;strong&gt;&lt;a href="[[FP]]"&gt;Functional&lt;/a&gt;&lt;/strong&gt;, &lt;strong&gt;Lazy evaluated&lt;/strong&gt;.&lt;/p&gt;&#10;&lt;p&gt;interactive interpreter: &lt;code&gt;nix repl&lt;/code&gt;. Execute a file containing nix expression: &lt;code&gt;nix-instantiate --eval file.nix&lt;/code&gt;.&lt;/p&gt;&#10;&lt;p&gt;&lt;code&gt;let&lt;/code&gt; expression (&lt;code&gt;let&lt;/code&gt; binding): specify binding scope&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;e.g. &lt;code&gt;let a=1; b=2; in a+b&lt;/code&gt; -&amp;gt; &lt;code&gt;3&lt;/code&gt;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;datatypes:&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;attribute set &lt;code&gt;{ name1 = ...; name2 = ...; }&lt;/code&gt;, where &lt;code&gt;...&lt;/code&gt; can be a string, number, list or attribute set.&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;rec attribute set: &lt;code&gt;rec { ... }&lt;/code&gt;, allow access to attributes within the set itself.&lt;/p&gt;</description></item><item><title>Configure Maunium Stickerpicker for Element</title><link>https://depoze.xyz/pages/element-stickerpicker/</link><pubDate>Sun, 05 May 2024 00:00:00 +0000</pubDate><guid>https://depoze.xyz/pages/element-stickerpicker/</guid><description>&lt;p&gt;&lt;a href="https://github.com/maunium/stickerpicker"&gt;GitHub - maunium/stickerpicker: A fast and simple Matrix sticker picker widget&lt;/a&gt;&lt;/p&gt;&#10;&lt;h2 id="maintainer-side"&gt;Maintainer side&lt;/h2&gt;&#10;&lt;h3 id="install"&gt;Install&lt;/h3&gt;&#10;&lt;pre tabindex="0"&gt;&lt;code&gt;% cd stickerpicker&#10;% pip install .&#10;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;If encountered env KeyError in Windows, refer to &lt;a href="https://github.com/maunium/stickerpicker/issues/52"&gt;issue #52&lt;/a&gt;:&lt;/p&gt;&#10;&lt;pre tabindex="0"&gt;&lt;code&gt;# setup.py&#10;long_desc = open(&amp;#34;README.md&amp;#34;, encoding=&amp;#34;utf-8&amp;#34;).read()&#10;&lt;/code&gt;&lt;/pre&gt;&lt;pre tabindex="0"&gt;&lt;code&gt;% $env:HOME = $env:USERPROFILE&#10;% pip install .&#10;&lt;/code&gt;&lt;/pre&gt;&lt;h3 id="create-decks"&gt;Create decks&lt;/h3&gt;&#10;&lt;p&gt;Put the stickers into an arbitory folder. Call &lt;code&gt;sticker-import /path/to/dir --add-to-index ./web/packs&lt;/code&gt;. (&lt;code&gt;python3 -m sticker.import ...&lt;/code&gt; if in Windows)&lt;/p&gt;&#10;&lt;p&gt;The script will prompt for homeserver and access_token, both can be found in &lt;code&gt;All Settings &amp;gt; Help &amp;amp; About&lt;/code&gt;.&lt;/p&gt;</description></item><item><title>Clangd cannot find standard header</title><link>https://depoze.xyz/pages/clangd-standard-header/</link><pubDate>Mon, 15 Jan 2024 00:00:00 +0000</pubDate><guid>https://depoze.xyz/pages/clangd-standard-header/</guid><description>&lt;p&gt;When using clangd (16.0.2) as LSP, it throws the following error:&lt;/p&gt;&#10;&lt;pre tabindex="0"&gt;&lt;code&gt;[pp_file_not_found] Line 1: &amp;#39;stdlib.h&amp;#39; file not found&#10;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;But stdlib.h exists, and gcc compilation passed.&lt;/p&gt;&#10;&lt;h2 id="tldr"&gt;TL;DR&lt;/h2&gt;&#10;&lt;p&gt;Create &lt;a href="https://clangd.llvm.org/installation.html#project-setup"&gt;compilation database file&lt;/a&gt; at root of project, content:&lt;/p&gt;&#10;&lt;pre tabindex="0"&gt;&lt;code&gt;-isystem&#10;C:\Users\username\scoop\apps\gcc\current\x86_64-w64-mingw32\include&#10;-target&#10;x86_64-pc-windows-gnu&#10;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Where the 2nd line is the path to stdlib.h.&lt;/p&gt;&#10;&lt;h2 id="debug-process"&gt;Debug Process&lt;/h2&gt;&#10;&lt;p&gt;Use &lt;code&gt;--check&lt;/code&gt; to run clangd and get error info:&lt;/p&gt;&#10;&lt;pre tabindex="0"&gt;&lt;code&gt;% .\clangd.exe --check=\path\to\file.c&#10;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Log:&lt;/p&gt;&#10;&lt;pre tabindex="0"&gt;&lt;code&gt;I[12:18:46.915] clangd version 16.0.2 (https://github.com/llvm/llvm-project 18ddebe1a1a9bde349441631365f0472e9693520)&#10;...&#10;I[12:18:46.924] Loading compilation database...&#10;I[12:18:46.934] Failed to find compilation database for C:\Users\username\path\to\c_file.c&#10;I[12:18:46.935] Generic fallback command is: &amp;#34;C:\\Users\\username\\scoop\\apps\\gcc\\11.2.0\\bin\\clang&amp;#34; &amp;#34;-resource-dir=C:\\Users\\username\\AppData\\Roaming\\nvim-data\\mason\\packages\\clangd\\clangd_16.0.2\\lib\\clang\\16&amp;#34; -- &amp;#34;C:\\Users\\username\\path\\to\\c_file.c&amp;#34;&#10;...&#10;I[12:18:46.970] Testing features at each token (may be slow in large files)&#10;I[12:18:47.006] All checks completed, 2 errors&#10;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;According to &lt;a href="https://clangd.llvm.org/guides/system-headers#fixing-missing-system-header-issues"&gt;this post&lt;/a&gt;, &amp;ldquo;Generic fallback &amp;hellip;&amp;rdquo; entry means no compilation database. Create an empty &lt;code&gt;compile_flags.txt&lt;/code&gt; besides &lt;code&gt;file.c&lt;/code&gt;, re-run check command, log:&lt;/p&gt;</description></item><item><title>Big Data System Lab Note</title><link>https://depoze.xyz/pages/big-data-lab/</link><pubDate>Mon, 09 Oct 2023 00:00:00 +0000</pubDate><guid>https://depoze.xyz/pages/big-data-lab/</guid><description>&lt;h3 id="set-up-hadoop-environment"&gt;Set up Hadoop environment&lt;/h3&gt;&#10;&lt;p&gt;&lt;a href="https://hadoop.apache.org/docs/stable/hadoop-project-dist/hadoop-common/SingleCluster.html"&gt;Apache Hadoop 3.3.6 – Hadoop: Setting up a Single Node Cluster.&lt;/a&gt;&lt;/p&gt;&#10;&lt;h3 id="set-up-java-environment"&gt;set up java environment&lt;/h3&gt;&#10;&lt;p&gt;java version requirements:&lt;/p&gt;&#10;&lt;p&gt;&lt;a href="https://cwiki.apache.org/confluence/display/HADOOP/Hadoop&amp;#43;Java&amp;#43;Versions"&gt;https://cwiki.apache.org/confluence/display/HADOOP/Hadoop+Java+Versions&lt;/a&gt;&lt;/p&gt;&#10;&lt;pre tabindex="0"&gt;&lt;code&gt;% curl -sL &amp;#34;https://builds.openlogic.com/downloadJDK/openlogic-openjdk/8u382-b05/openlogic-openjdk-8u382-b05-linux-x64.tar.gz&amp;#34; -o ./openjdk-8u382.tar.gz&#10;% tar -xvf ./openjdk-8u382.tar.gz&#10;% mv ./openlogic-openjdk-8u382-b05-linux-x64 ./usr/bin/openjdk-8u832&#10;% sudo vim ~/.zshrc&#10;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;add java to path:&lt;/p&gt;&#10;&lt;pre tabindex="0"&gt;&lt;code&gt;# ~/.zshrc&#10;&#10;#...&#10;export JAVA_PATH=&amp;#34;/usr/bin/openjdk-8u832/bin&amp;#34;&#10;export PATH=$PATH:$JAVA_PATH&#10;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;test path:&lt;/p&gt;&#10;&lt;pre tabindex="0"&gt;&lt;code&gt;% source ~/.zshrc&#10;% java -version 1 ↵&#10;openjdk version &amp;#34;1.8.0_382-382&amp;#34;&#10;OpenJDK Runtime Environment (build 1.8.0_382-382-b05)&#10;OpenJDK 64-Bit Server VM (build 25.382-b05, mixed mode)&#10;&lt;/code&gt;&lt;/pre&gt;&lt;h3 id="requisite-software"&gt;requisite software&lt;/h3&gt;&#10;&lt;p&gt;&lt;code&gt;ssh&lt;/code&gt; required, &lt;code&gt;pdsh&lt;/code&gt; for better performance.&lt;/p&gt;</description></item><item><title>Terraria Herb Farm Reminder</title><link>https://depoze.xyz/pages/terraria-herb-farm/</link><pubDate>Fri, 08 Sep 2023 00:00:00 +0000</pubDate><guid>https://depoze.xyz/pages/terraria-herb-farm/</guid><description>&lt;p&gt;Announcement box text:&lt;/p&gt;&#10;&lt;pre tabindex="0"&gt;&lt;code&gt;[c/ff0000:Row 0][i:318][i:312][c/ff0000:Fireblossom] Sunset &amp;amp;&amp;amp; Not Raining&#10;[c/6e17ff:Row 1][i:316][i:310][c/6e17ff:Deathweed] Blood Moon || Full Moon&#10;[c/ffcb2e:Row 2][i:315][i:309][c/ffcb2e:Blinkroot] Random&#10;[c/ffff00:Row 3][i:313][i:307][c/ffff00:Dayblossom] Daytime&#10;[c/00bfff:Row 4][i:314][i:308][c/00bfff:Moonglow] Nighttime&#10;[c/0000ff:Row 5][i:2358][i:2357][c/0000ff:Shiverthorn] Fixed Period&#10;[c/2effff:Row 6][i:317][i:311][c/2effff:Waterleaf] Raining || Snowing&#10;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;#Terraria&lt;/p&gt;</description></item><item><title>Terraria Potions Quickref</title><link>https://depoze.xyz/pages/terraria-potions/</link><pubDate>Mon, 28 Aug 2023 00:00:00 +0000</pubDate><guid>https://depoze.xyz/pages/terraria-potions/</guid><description>&lt;h2 id="for-battle"&gt;For battle&lt;/h2&gt;&#10;&lt;table&gt;&#10;&#9;&lt;thead&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;Potion&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;Fish&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;Herb&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;Other ingredients&lt;/th&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/thead&gt;&#10;&#9;&lt;tbody&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Endurance&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Armored &lt;strong&gt;Cave&lt;/strong&gt;fish&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Blinkroot&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;-&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Heartreach&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;strong&gt;Crimson&lt;/strong&gt; Tigerfish&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Daybloom&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;-&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Ironskin&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;-&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Daybloom&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Iron Ore&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Lifeforce&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;strong&gt;Prism&lt;/strong&gt;ite&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Moonglow + Shiverthorn + Waterleaf&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;-&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Rage&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;strong&gt;Hemo&lt;/strong&gt;piranha&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Deathweed&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;-&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Regeneration&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;-&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Daybloom&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Mushroom&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Swiftness&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;-&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Blinkroot&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Cactus&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Summoning&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;strong&gt;Variegated&lt;/strong&gt; Lardfish&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Moonglow&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;-&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Thorns&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;-&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Deathweed&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Cactus&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Wrath&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;strong&gt;Ebon&lt;/strong&gt;koi&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Deathweed&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;-&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;h2 id="for-battle-optional"&gt;For battle (optional)&lt;/h2&gt;&#10;&lt;table&gt;&#10;&#9;&lt;thead&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;Use cases&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;Potion/Flask&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;Fish&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;Herb&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;Other ingredients&lt;/th&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/thead&gt;&#10;&#9;&lt;tbody&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Ranger&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Ammo Reservation&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Double Cod&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Moonglow&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;-&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Ranger&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Archery&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;-&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Daybloom&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Lens&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Decrease enemy spawn rate&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Calming&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;strong&gt;Damsel&lt;/strong&gt;fish&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Daybloom&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;-&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Melee/Whips&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Flask of Ichor&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;-&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;-&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Ichor&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Fishron Duke&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Inferno&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;strong&gt;Flare&lt;/strong&gt;fin koi + &lt;strong&gt;Obsidi&lt;/strong&gt;fish&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;-&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;-&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Mage&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Magic Power&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;-&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Moonglow + Deathweed&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Fallen Star&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Mage&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Mana Regeneration&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;-&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Moonglow + Daybloom&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Fallen Star&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Summoner&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Summoning&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;strong&gt;Variegated&lt;/strong&gt; Lardfish&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Moonglow&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;-&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Increase KB&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Titan&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;-&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Deathweed + Shiverthorn&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Bone&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Cold battle&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Warmth&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;strong&gt;Frost&lt;/strong&gt; Minnow&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Shiverthorn&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;-&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;h2 id="others"&gt;Others&lt;/h2&gt;&#10;&lt;table&gt;&#10;&#9;&lt;thead&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;Potion&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;Fish&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;Herb&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;Other ingredients&lt;/th&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/thead&gt;&#10;&#9;&lt;tbody&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Dangersense&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;-&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Shiverthorn&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Cobweb&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Obsidian Skin&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;-&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Fireblossom + Waterleaf&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Obsidian&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Wormhole&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Specular fish&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Blinkroot&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;-&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;p&gt;#Terraria&lt;/p&gt;</description></item><item><title>A Simple Terraria Chest Organization System</title><link>https://depoze.xyz/pages/terraria-chest-system/</link><pubDate>Tue, 11 Jul 2023 00:00:00 +0000</pubDate><guid>https://depoze.xyz/pages/terraria-chest-system/</guid><description>&lt;p&gt;Read in &lt;a href="https://depoze.xyz/pages/terraria-chest-system/#en"&gt;English&lt;/a&gt; | &lt;a href="https://depoze.xyz/pages/terraria-chest-system/#zh-cn"&gt;简体中文&lt;/a&gt;&lt;/p&gt;&#10;&lt;h2 id="en"&gt;en&lt;/h2&gt;&#10;&lt;p&gt;This post proposes a simple chest organization system, tested in practice. The experience is collected mostly from AC and some from Hyzuki.&lt;/p&gt;&#10;&lt;p&gt;Drawings 1&lt;/p&gt;&#10;&lt;p&gt;Banners 4&lt;/p&gt;&#10;&lt;p&gt;Furniture (including chests, trophies) 3&lt;/p&gt;&#10;&lt;p&gt;Blocks 2&lt;/p&gt;&#10;&lt;p&gt;Potions 3&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;For battle 1&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;Not for battle 1&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;Fish used to craft potion 1&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;Statues (including gravemarkers) 2&lt;/p&gt;&#10;&lt;p&gt;Dry things 3&lt;/p&gt;&#10;&lt;p&gt;Wet things (including dyes) 2&lt;/p&gt;&#10;&lt;p&gt;Animals 1&lt;/p&gt;&#10;&lt;p&gt;Plants 1&lt;/p&gt;&#10;&lt;p&gt;Fishing 1&lt;/p&gt;&#10;&lt;p&gt;Ores &amp;amp; Bars 2&lt;/p&gt;&#10;&lt;p&gt;Tools (Hammers, water candles, etc.)&lt;/p&gt;&#10;&lt;p&gt;Wood 1&lt;/p&gt;&#10;&lt;p&gt;Weapons 11&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;Melee 3&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;Ammo&amp;amp;Ranged 1 + Ranged 2&lt;/p&gt;</description></item><item><title>光之女皇战斗笔记</title><link>https://depoze.xyz/pages/empress-of-light/</link><pubDate>Mon, 10 Jul 2023 00:00:00 +0000</pubDate><guid>https://depoze.xyz/pages/empress-of-light/</guid><description>&lt;p&gt;长期以来，对战白光一直是矛盾老大难问题，从一定意义上讲，能否彻底解决对战白光问题，关乎调节条件，帮助负担，支持重点，尊重基本纲领，关乎提倡行动，是统一思想的重中之重。因此，解决对战白光问题，是贯穿始终之举。&lt;/p&gt;&#10;&lt;h2 id="以实效之飞翼-展对战白光之宏图"&gt;以实效之飞翼 展对战白光之宏图&lt;/h2&gt;&#10;&lt;p&gt;根据倾向表明，要想对战白光，就必须发挥运行，我们应该清醒地看到，我国正处于结构调整期、产业转型期，经济发展面临挑战，人均资源相对不足，进一步发展还面临着一些突出的问题和矛盾。从我们发展的战略全局看，走普遍增加道路，调整主体结构，转变能力方式，缓解办法瓶颈制约，加快方针升级，促进需求，维护环节利益。进入新阶段，对战白光面临着新的机遇和挑战。按照部署和要求，全面贯彻落实科学发展观，求真务实，开拓创新，扎实工作，为构建和谐社会服务，为指导工程，为考验创新，优化敏锐性，综上所述，我们应该求真务实，积极推进对战白光工作制度化，建立体系，积极推进对战白光工作正常化，规范办文，积极推进对战白光工作程序化，强化责任，积极推进对战白光工作有序化，注重质量，积极推进对战白光服务规范化，统筹兼顾，积极推进对战白光工作正常化。&lt;/p&gt;&#10;&lt;h2 id="以钉钉子精神-打赢对战白光攻坚战"&gt;以钉钉子精神 打赢对战白光攻坚战&lt;/h2&gt;&#10;&lt;p&gt;&lt;a href="https://terraria.wiki.gg/wiki/Empress_of_Light"&gt;白光的攻击模式&lt;/a&gt;：&lt;/p&gt;&#10;&lt;h4 id="第一阶段"&gt;第一阶段&lt;/h4&gt;&#10;&lt;p&gt;当女皇生成时，她会悬停数秒，然后发动第一轮攻击：&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;七彩矢&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;猛冲攻击&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;太阳舞&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;猛冲攻击&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;永恒彩虹&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;七彩矢&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;猛冲攻击&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;空灵长枪&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;猛冲攻击&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;永恒彩虹&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;在进入第二阶段前，都以以上为一个周期进行无限次数的循环。&lt;/p&gt;&#10;&lt;h4 id="第二阶段"&gt;第二阶段&lt;/h4&gt;&#10;&lt;p&gt;当光之女皇的生命值低于一半时，她先会消失一秒钟，然后在进行新一组攻击前重新出现在玩家预计位置的上方，攻击间隔相比第一阶段要更短：&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;空灵长枪 2&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;七彩矢&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;猛冲攻击&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;由于处于暴怒状态，她会在进行冲刺攻击后释放一次瞄准玩家本身而不是预判位置的空灵长枪。&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;永恒彩虹&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;七彩矢&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;太阳舞&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;空灵长枪&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;猛冲攻击&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;七彩矢 2&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;在她被击败前，都以以上为一个周期进行无限次数的循环。&lt;/p&gt;&#10;&lt;p&gt;除了第二阶段第6个的七彩矢，其他的七彩矢均可以通过先水平飞行再竖直抬升越过光女头顶来躲避。&lt;/p&gt;&#10;&lt;p&gt;整个第一阶段整体上向右移动；二阶段光女开始攻击后则整体向左移动。&lt;/p&gt;&#10;&lt;p&gt;第一阶段的1,2,3,4，处理七彩矢时向右飞行，注意要和光女有一定的水平距离再抬升，否则容易撞到；太阳舞会释放三组光线， 每次释放一个新光线就在光线还不造成伤害时向左上方移动一个格位；太阳舞结束时可以再打短暂的一个时间，然后向其左下方掉落以躲避光女向左的冲击。&lt;/p&gt;&#10;&lt;p&gt;第一阶段的5,6,7，冲击后光女会在玩家左侧，这时稍微加速水平向右移动远离永恒彩虹。如果还没到二阶段，光女将释放七彩矢，使用和上面相同的办法躲避七彩矢和猛冲。记得控制光女猛冲的方向来控制金额技能结束时她与玩家的相对位置。&lt;/p&gt;&#10;&lt;p&gt;第一阶段的8,9,10，如果还没有进入二阶段，此时光女会释放空灵长枪。控制好运动的方向先水平再向下再向左，每次转弯的时机是刚好在长枪射出前，一定不要乱晃移动方向，尽量集火；光女猛冲时向下掉落躲避，使得光女在玩家左侧，然后向右水平移动远离永恒彩虹。&lt;/p&gt;&#10;&lt;p&gt;如果还没有进入二阶段，则进行上面的循环，准备躲避七彩矢。&lt;/p&gt;&#10;&lt;p&gt;如果进入了二阶段（光女血量不足一半，消失一秒），则在这时尽量水平快速向右移动，为接下来的向左移动尽量准备空间，等待第一次空灵长枪2。这时也要调整自己的高度，在不要进入太空的前提下尽量高。&lt;/p&gt;&#10;&lt;p&gt;第二阶段的1，这时正在水平向右移动，如果出现了长枪轨迹，立即开始竖直下落躲避前两组长枪，然后开始水平向左躲避后四组长枪，移动的方向大致和长枪的中间轨迹垂直。&lt;/p&gt;&#10;&lt;p&gt;第二阶段的2,3，和上面的七彩矢处理方法相同，绕过光女头顶并使得其向右冲撞以保持冲刺后她在玩家右侧。&lt;/p&gt;&#10;&lt;p&gt;第二阶段的4，和上面处理方式类似，这里可以向回飞行因为后方没有永恒彩虹，但结束后最好要保持光女在右侧。&lt;/p&gt;&#10;&lt;p&gt;第二阶段的5,6,7，这里的七彩矢不可以和之前一样处理，因为光女会在玩家试图向上移动和绕过其头顶时释放太阳舞。这里七彩矢释放后要先向左下移动集火，然后向右下快速移动来绕开七彩矢，然后恢复向左飞行的状态；此时光女应当在释放太阳舞，注意玩家的高度不要在向左飞行时撞到太阳舞的下缘；&lt;/p&gt;&#10;&lt;p&gt;第二阶段的8,9：飞行很短时间后就会出现空灵长枪轨迹，先水平集火然后向左上移动躲避和集火，然后回到原来的水平轨道躲避；在光女快要冲撞时抬升或掉落躲避冲撞均可。&lt;/p&gt;&#10;&lt;p&gt;第二阶段10,1：七彩矢2追踪性能较强，如果这时没有及时打死光女，那么此时光女也会释放空灵长枪2。这时就需要在躲避长枪的时候顺便躲避七彩矢。方法是先水平集火七彩矢2，然后它接近时竖直向上起飞躲避前两组长枪，向右越过光女头顶然后水平飞行躲避后四组长枪，这个操作每次转弯后要尽量利用翅膀的加速，来躲避七彩矢的追踪。&lt;/p&gt;&#10;&lt;p&gt;如果光女还没死，结束后继续二阶段循环。&lt;/p&gt;&#10;&lt;h2 id="细节决定成败-需多积光女统计数据之功"&gt;细节决定成败 需多积光女统计数据之功&lt;/h2&gt;&#10;&lt;p&gt;23.07.07，使用了全套石后、夜光后、月前装备（外星法杖+万花筒+阴森套+双足翼龙翅膀）完成纯召唤师白光，第一阶段光女只会释放到5.永恒彩虹就会残血进入二阶段，二阶段将刚好进行一轮，释放七彩矢2后光女死亡。平均dps大约1700，鞭子够得到时可达到2200。&lt;/p&gt;&#10;&lt;p&gt;实现时练习共消耗210只七彩草蛉。&lt;/p&gt;&#10;&lt;p&gt;可以找到160个墓碑记载被击杀时死亡的记录（因为有一些练习是夜光所以没有死亡得到墓碑）：&lt;/p&gt;&#10;&lt;p&gt;凶手是永不消逝的彩虹：██░░░░░░░░░░░░░░░░░░ 18 / 160&lt;/p&gt;&#10;&lt;p&gt;凶手是空灵长枪：████░░░░░░░░░░░░░░░░ 32 / 160&lt;/p&gt;&#10;&lt;p&gt;凶手是太阳舞：████░░░░░░░░░░░░░░░░ 31 / 160&lt;/p&gt;&#10;&lt;p&gt;凶手是光女（冲撞）：██░░░░░░░░░░░░░░░░░░ 23 / 160&lt;/p&gt;&#10;&lt;p&gt;凶手是七彩矢：█████░░░░░░░░░░░░░░░ 46 / 160&lt;/p&gt;</description></item><item><title>Terraria Text Color</title><link>https://depoze.xyz/pages/terraria-text-color/</link><pubDate>Sat, 20 May 2023 00:00:00 +0000</pubDate><guid>https://depoze.xyz/pages/terraria-text-color/</guid><description>&lt;p&gt;In terraria, announcement-box-syntax can be used to display text in different colors. This post records some color codes of my common use. They may not be accurate since they are obtained using the colorpicker.&lt;/p&gt;&#10;&lt;h2 id="announcement-box-syntax"&gt;Announcement Box Syntax&lt;/h2&gt;&#10;&lt;p&gt;To specify a color, use &lt;code&gt;[c/&amp;lt;color code&amp;gt;:&amp;lt;text&amp;gt;]&lt;/code&gt;.&lt;/p&gt;&#10;&lt;p&gt;For example, &lt;code&gt;[c/FFFF00:114514!]&lt;/code&gt; will be displayed as&lt;/p&gt;&#10;&lt;p&gt;114514!&lt;/p&gt;&#10;&lt;p&gt;To display an item, use &lt;code&gt;[i/&amp;lt;attribute&amp;gt;:&amp;lt;ID&amp;gt;]&lt;/code&gt;, where &lt;ID&gt; is the item id and &lt;attrbute&gt; can be in the following syntax:&lt;/p&gt;</description></item><item><title>Configure Maubot</title><link>https://depoze.xyz/pages/maubot/</link><pubDate>Thu, 18 May 2023 00:00:00 +0000</pubDate><guid>https://depoze.xyz/pages/maubot/</guid><description>&lt;p&gt;&lt;a href="https://github.com/maubot/maubot"&gt;Maubot&lt;/a&gt; 是一款基于插件的Matrix-Bot SDK。&lt;/p&gt;&#10;&lt;p&gt;它的说明文档写得并不是很好，也没有给出一个合理的顺序安装过程，事实上在我安装时需要在文档的各节反复跳跃，因此我在此记录一个合理的配置流程。&lt;/p&gt;&#10;&lt;h2 id="配置环境"&gt;配置环境&lt;/h2&gt;&#10;&lt;p&gt;通过pip安装maubot。&lt;/p&gt;&#10;&lt;pre tabindex="0"&gt;&lt;code&gt;$ python3 -m venv maubotVenv&#10;$ source ./maubotVenv/bin/activate&#10;$ pip install --upgrade maubot&#10;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;添加必要的文件和目录，否则会报错&lt;/p&gt;&#10;&lt;pre tabindex="0"&gt;&lt;code&gt;$ vim config.yaml&#10;$ mkdir plugins, trash, logs&#10;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;config.yaml似乎怎么写都可以（但是不写就会报错），我参考了&lt;a href="https://github.com/maubot/maubot/blob/master/examples/config/base-config.yaml"&gt;maubot/base-config.yaml at master · maubot/maubot · GitHub&lt;/a&gt;，但事实上它好像并不是给这里用的，而是给插件用的。总之过一会运行起来之后会覆盖它生成含有表项的yaml。&lt;/p&gt;&#10;&lt;h2 id="运行以生成可填写的config"&gt;运行以生成可填写的config&lt;/h2&gt;&#10;&lt;pre tabindex="0"&gt;&lt;code&gt;$ python3 -m maubot&#10;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;它会在29316端口运行一个web界面。进入会发现需要登录，而此时还没有配置credential。不过现在按&lt;code&gt;&amp;lt;C-C&amp;gt;&lt;/code&gt;停止运行，打开config.yaml就会看到很多配置项。&lt;/p&gt;&#10;&lt;h2 id="配置nginx"&gt;配置nginx&lt;/h2&gt;&#10;&lt;p&gt;如果在config.yaml更改了路径，则填写对应的新路径。没有https的可以改为listen 80.&lt;/p&gt;&#10;&lt;pre tabindex="0"&gt;&lt;code&gt;# nginx.conf&#10;&#10;server {&#10; listen 443;&#10; ...&#10; location /_matrix/maubot/v1/logs {&#10; proxy_pass http://localhost:29316;&#10; proxy_http_version 1.1;&#10; proxy_set_header Upgrade $http_upgrade;&#10; proxy_set_header Connection &amp;#34;Upgrade&amp;#34;;&#10; proxy_set_header X-Forwarded-For $remote_addr;&#10; }&#10;&#10; location /_matrix/maubot {&#10; proxy_pass http://localhost:29316;&#10; proxy_set_header X-Forwarded-For $remote_addr;&#10; }&#10; ...&#10;}&#10;&#10;}&#10;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;检查conf，重启nginx。&lt;/p&gt;</description></item><item><title>Leetcode 142 - Linked List Cycle II</title><link>https://depoze.xyz/pages/leetcode-142/</link><pubDate>Wed, 26 Apr 2023 00:00:00 +0000</pubDate><guid>https://depoze.xyz/pages/leetcode-142/</guid><description>&lt;h2 id="problem"&gt;Problem&lt;/h2&gt;&#10;&lt;p&gt;Given the &lt;code&gt;head&lt;/code&gt; of a linked list, return &lt;em&gt;the node where the cycle begins. If there is no cycle, return&lt;/em&gt; &lt;code&gt;null&lt;/code&gt;.&lt;/p&gt;&#10;&lt;p&gt;There is a cycle in a linked list if there is some node in the list that can be reached again by continuously following the &lt;code&gt;next&lt;/code&gt; pointer. Internally, &lt;code&gt;pos&lt;/code&gt; is used to denote the index of the node that tail&amp;rsquo;s &lt;code&gt;next&lt;/code&gt; pointer is connected to (&lt;strong&gt;0-indexed&lt;/strong&gt;). It is &lt;code&gt;-1&lt;/code&gt; if there is no cycle. &lt;strong&gt;Note that&lt;/strong&gt; &lt;code&gt;pos&lt;/code&gt; &lt;strong&gt;is not passed as a parameter&lt;/strong&gt;.&lt;/p&gt;</description></item><item><title>Change Font in Hexo Cactus Theme</title><link>https://depoze.xyz/pages/hexo-cactus-font/</link><pubDate>Thu, 06 Apr 2023 00:00:00 +0000</pubDate><guid>https://depoze.xyz/pages/hexo-cactus-font/</guid><description>&lt;p&gt;Modify &lt;code&gt;themes/cactus/source/layout/_partial/header.ejs&lt;/code&gt;.&lt;/p&gt;&#10;&lt;pre tabindex="0"&gt;&lt;code&gt;&amp;lt;!-- styles --&amp;gt;&#10; &amp;lt;link rel=&amp;#34;stylesheet&amp;#34; href=&amp;#34;https://cdn.bootcdn.net/ajax/libs/lxgw-wenkai-webfont/1.6.0/style.min.css&amp;#34; /&amp;gt;&#10; &amp;lt;%- css(&amp;#39;css/style&amp;#39;) %&amp;gt;&#10;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;a href="https://github.com/chawyehsu/lxgw-wenkai-webfont"&gt;https://github.com/chawyehsu/lxgw-wenkai-webfont&lt;/a&gt;&lt;/p&gt;&#10;&lt;p&gt;Modify &lt;code&gt;_variables.styl&lt;/code&gt;&lt;/p&gt;&#10;&lt;pre tabindex="0"&gt;&lt;code&gt;// Fonts&#10;$font-family-body = &amp;#34;Menlo&amp;#34;, &amp;#34;Meslo LG&amp;#34;, &amp;#34;LXGW WenKai&amp;#34;, monospace&#10;$font-family-mono = &amp;#34;Menlo&amp;#34;, &amp;#34;Meslo LG&amp;#34;, &amp;#34;LXGW WenKai Mono&amp;#34;, monospace&#10;$font-size = 14px&#10;...&#10;&lt;/code&gt;&lt;/pre&gt;&lt;h2 id="deprecated"&gt;Deprecated&lt;/h2&gt;&#10;&lt;p&gt;&lt;strong&gt;Deprecated because ttf file is too big for users to load from this source. Use a CDN is better.&lt;/strong&gt;&lt;/p&gt;&#10;&lt;p&gt;&lt;a href="https://github.com/probberechts/hexo-theme-cactus/issues/311"&gt;how to change the font size ? · Issue #311 · probberechts/hexo-theme-cactus · GitHub&lt;/a&gt;&lt;/p&gt;</description></item><item><title>为小米手环配置Zepp Life的开源替代</title><link>https://depoze.xyz/pages/gadgetbridge/</link><pubDate>Sun, 22 Jan 2023 00:00:00 +0000</pubDate><guid>https://depoze.xyz/pages/gadgetbridge/</guid><description>&lt;p&gt;Steps: &lt;a href="https://codeberg.org/Freeyourgadget/Gadgetbridge"&gt;https://codeberg.org/Freeyourgadget/Gadgetbridge&lt;/a&gt;&lt;/p&gt;&#10;&lt;h2 id="下载gadgetbridge"&gt;下载Gadgetbridge&lt;/h2&gt;&#10;&lt;p&gt;&lt;a href="https://f-droid.org/app/nodomain.freeyourgadget.gadgetbridge"&gt;Gadgetbridge | F-Droid - Free and Open Source Android App Repository&lt;/a&gt;&lt;/p&gt;&#10;&lt;h2 id="获取auth-key"&gt;获取auth key&lt;/h2&gt;&#10;&lt;p&gt;Steps: &lt;a href="https://codeberg.org/Freeyourgadget/Gadgetbridge/wiki/Huami-Server-Pairing"&gt;Huami Server Pairing - Gadgetbridge - Codeberg.org&lt;/a&gt;&lt;/p&gt;&#10;&lt;p&gt;原来手环绑定的app如果是“小米穿戴”(com.xiaomi.wearable)，则不能返回正常的信息，可以先换用“Zepp Life”(com.xiaomi.hm.health)绑定手环。&lt;/p&gt;&#10;&lt;pre tabindex="0"&gt;&lt;code&gt;$ git clone https://codeberg.org/argrento/huami-token.git&#10;$ cd huami-token&#10;$ python3 huami_token.py --method xiaomi --bt_keys&#10;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;按提示操作登录，并粘贴重定向至的链接，返回了类似这样的数据。&lt;/p&gt;&#10;&lt;pre tabindex="0"&gt;&lt;code&gt;Token: [&amp;#39;C3_xxxxxxxxxxxxxxxxxxx&amp;#39;]&#10;Logging in...&#10;Logged in! User id: 10xxxxxxx&#10;Getting linked wearables...&#10;&#10;╓───Device 0&#10;║ MAC: 11:22:33:44:55:66, active: No&#10;║ Key: 0x11111111111111111111111111111111&#10;╙────────────&#10;&#10;╓───Device 1&#10;║ MAC: F4:11:22:33:44:55, active: Yes&#10;║ Key: 0xfe000000000000000000000000000000&#10;╙────────────&#10;&#10;Logged out.&#10;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;通过设备的蓝牙地址可以确定是哪一台设备（如果只有一个设备启用中，通过active: Yes也可以），对应的“Key”即为需要的auth key。&lt;/p&gt;</description></item><item><title>Configure Vim on Linux Mint 20.03</title><link>https://depoze.xyz/pages/vim-linux-mint/</link><pubDate>Sat, 12 Feb 2022 00:00:00 +0000</pubDate><guid>https://depoze.xyz/pages/vim-linux-mint/</guid><description>&lt;p&gt;This is just a simple record. About the configuring process on Windows, here is &lt;a href="https://depoze.xyz/vim-configure-process-recording/"&gt;another blog&lt;/a&gt;.&lt;/p&gt;&#10;&lt;h2 id="version-info"&gt;Version Info&lt;/h2&gt;&#10;&lt;p&gt;Vi IMproved 8.1 (2018 May 18)&lt;/p&gt;&#10;&lt;p&gt;Huge version with GTK3 GUI.&lt;/p&gt;&#10;&lt;h2 id="vimrc"&gt;.vimrc&lt;/h2&gt;&#10;&lt;p&gt;&lt;a href="https://vimjc.com/vimrc.html"&gt;无插件Vim配置文件vimrc推荐与各VIM配置项解释&lt;/a&gt;&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="background-color:#f7f7f7;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-vim" data-lang="vim"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#57606a"&gt;&amp;#34; All system-wide defaults are set in $VIMRUNTIME/debian.vim and sourced by&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#57606a"&gt;&amp;#34; the call to :runtime you can find below. If you wish to change any of those&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#57606a"&gt;&amp;#34; settings, you should do it in this file (/etc/vim/vimrc), since debian.vim&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#57606a"&gt;&amp;#34; will be overwritten everytime an upgrade of the vim packages is performed.&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#57606a"&gt;&amp;#34; It is recommended to make changes after sourcing debian.vim since it alters&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#57606a"&gt;&amp;#34; the value of the &amp;#39;compatible&amp;#39; option.&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#1f2328"&gt;runtime&lt;/span&gt;&lt;span style="color:#1f2328"&gt;!&lt;/span&gt; &lt;span style="color:#1f2328"&gt;debian&lt;/span&gt;.&lt;span style="color:#1f2328"&gt;vim&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#57606a"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#57606a"&gt;&amp;#34; Vim will load $VIMRUNTIME/defaults.vim if the user does not have a vimrc.&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#57606a"&gt;&amp;#34; This happens after /etc/vim/vimrc(.local) are loaded, so it will override&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#57606a"&gt;&amp;#34; any settings in these files.&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#57606a"&gt;&amp;#34; If you don&amp;#39;t want that to happen, uncomment the below line to prevent&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#57606a"&gt;&amp;#34; defaults.vim from being loaded.&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#cf222e"&gt;let&lt;/span&gt; &lt;span style="color:#1f2328"&gt;g&lt;/span&gt;:&lt;span style="color:#1f2328"&gt;skip_defaults_vim&lt;/span&gt; &lt;span style="color:#1f2328"&gt;=&lt;/span&gt; &lt;span style="color:#0550ae"&gt;1&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#57606a"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#57606a"&gt;&amp;#34; Uncomment the next line to make Vim more Vi-compatible&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#57606a"&gt;&amp;#34; NOTE: debian.vim sets &amp;#39;nocompatible&amp;#39;. Setting &amp;#39;compatible&amp;#39; changes numerous&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#57606a"&gt;&amp;#34; options, so any other options should be set AFTER setting &amp;#39;compatible&amp;#39;.&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#57606a"&gt;&amp;#34;set compatible&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#57606a"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#57606a"&gt;&amp;#34; Vim5 and later versions support syntax highlighting. Uncommenting the next&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#57606a"&gt;&amp;#34; line enables syntax highlighting by default.&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#cf222e"&gt;if&lt;/span&gt; &lt;span style="color:#1f2328"&gt;has&lt;/span&gt;&lt;span style="color:#1f2328"&gt;(&lt;/span&gt;&lt;span style="color:#0a3069"&gt;&amp;#34;syntax&amp;#34;&lt;/span&gt;&lt;span style="color:#1f2328"&gt;)&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#cf222e"&gt;syntax&lt;/span&gt; &lt;span style="color:#1f2328"&gt;on&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#cf222e"&gt;endif&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#57606a"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#57606a"&gt;&amp;#34; If using a dark background within the editing area and syntax highlighting&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#57606a"&gt;&amp;#34; turn on this option as well&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#57606a"&gt;&amp;#34;set background=dark&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#57606a"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#57606a"&gt;&amp;#34; Uncomment the following to have Vim jump to the last position when&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#57606a"&gt;&amp;#34; reopening a file&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#57606a"&gt;&amp;#34;au BufReadPost * if line(&amp;#34;&amp;#39;\&amp;#34;&amp;#34;) &amp;gt; 1 &amp;amp;&amp;amp; line(&amp;#34;&amp;#39;\&amp;#34;&amp;#34;) &amp;lt;= line(&amp;#34;$&amp;#34;) exe &amp;#34;normal! g&amp;#39;\&amp;#34;&amp;#34; endif&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#57606a"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#57606a"&gt;&amp;#34; Uncomment the following to have Vim load indentation rules and plugins&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#57606a"&gt;&amp;#34; according to the detected filetype.&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#57606a"&gt;&amp;#34;filetype plugin indent on&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#57606a"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#57606a"&gt;&amp;#34; The following are commented out as they cause vim to behave a lot&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#57606a"&gt;&amp;#34; differently from regular Vi. They are highly recommended though.&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#57606a"&gt;&amp;#34;set showcmd&amp;#34; Show (partial) command in status line.&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#57606a"&gt;&amp;#34;set showmatch&amp;#34; Show matching brackets.&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#57606a"&gt;&amp;#34;set ignorecase&amp;#34; Do case insensitive matching&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#57606a"&gt;&amp;#34;set smartcase&amp;#34; Do smart case matching&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#57606a"&gt;&amp;#34;set incsearch&amp;#34; Incremental search&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#57606a"&gt;&amp;#34;set autowrite&amp;#34; Automatically save before commands like :next and :make&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#57606a"&gt;&amp;#34;set hidden&amp;#34; Hide buffers when they are abandoned&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#57606a"&gt;&amp;#34;set mouse=a&amp;#34; Enable mouse usage (all modes)&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#57606a"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#57606a"&gt;&amp;#34; Source a global configuration file if available&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#cf222e"&gt;if&lt;/span&gt; &lt;span style="color:#1f2328"&gt;filereadable&lt;/span&gt;&lt;span style="color:#1f2328"&gt;(&lt;/span&gt;&lt;span style="color:#0a3069"&gt;&amp;#34;/etc/vim/vimrc.local&amp;#34;&lt;/span&gt;&lt;span style="color:#1f2328"&gt;)&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#1f2328"&gt;source&lt;/span&gt; &lt;span style="color:#0a3069"&gt;/etc/&lt;/span&gt;&lt;span style="color:#1f2328"&gt;vim&lt;/span&gt;/&lt;span style="color:#1f2328"&gt;vimrc&lt;/span&gt;.&lt;span style="color:#1f2328"&gt;local&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#cf222e"&gt;endif&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#cf222e"&gt;set&lt;/span&gt; &lt;span style="color:#1f2328"&gt;nocompatible&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#cf222e"&gt;set&lt;/span&gt; &lt;span style="color:#1f2328"&gt;autoread&lt;/span&gt;&amp;#34;&lt;span style="color:#1f2328"&gt;reload&lt;/span&gt; &lt;span style="color:#1f2328"&gt;files&lt;/span&gt; &lt;span style="color:#1f2328"&gt;when&lt;/span&gt; &lt;span style="color:#1f2328"&gt;changed&lt;/span&gt; &lt;span style="color:#1f2328"&gt;on&lt;/span&gt; &lt;span style="color:#1f2328"&gt;disk&lt;/span&gt; &lt;span style="color:#1f2328"&gt;(&lt;/span&gt;&lt;span style="color:#1f2328"&gt;via&lt;/span&gt; &lt;span style="color:#1f2328"&gt;Git&lt;/span&gt;&lt;span style="color:#1f2328"&gt;)&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#cf222e"&gt;set&lt;/span&gt; &lt;span style="color:#1f2328"&gt;shortmess&lt;/span&gt;&lt;span style="color:#1f2328"&gt;=&lt;/span&gt;&lt;span style="color:#1f2328"&gt;atI&lt;/span&gt;&lt;span style="color:#0a3069"&gt;&amp;#34;use &amp;#34;&lt;/span&gt;:&lt;span style="color:#1f2328"&gt;h&lt;/span&gt; &lt;span style="color:#1f2328"&gt;shortmess&lt;/span&gt; &lt;span style="color:#1f2328"&gt;to&lt;/span&gt; &lt;span style="color:#1f2328"&gt;view&lt;/span&gt; &lt;span style="color:#1f2328"&gt;help&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#cf222e"&gt;set&lt;/span&gt; &lt;span style="color:#1f2328"&gt;magic&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#cf222e"&gt;set&lt;/span&gt; &lt;span style="color:#1f2328"&gt;title&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#cf222e"&gt;set&lt;/span&gt; &lt;span style="color:#1f2328"&gt;nobackup&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#cf222e"&gt;set&lt;/span&gt; &lt;span style="color:#1f2328"&gt;noerrorbells&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#cf222e"&gt;set&lt;/span&gt; &lt;span style="color:#1f2328"&gt;visualbell&lt;/span&gt; &lt;span style="color:#1f2328"&gt;t_vb&lt;/span&gt;&lt;span style="color:#1f2328"&gt;=&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#cf222e"&gt;set&lt;/span&gt; &lt;span style="color:#1f2328"&gt;t_vb&lt;/span&gt;&lt;span style="color:#1f2328"&gt;=&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#cf222e"&gt;set&lt;/span&gt; &lt;span style="color:#1f2328"&gt;timeoutlen&lt;/span&gt;&lt;span style="color:#1f2328"&gt;=&lt;/span&gt;&lt;span style="color:#0550ae"&gt;1000&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#57606a"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#57606a"&gt;&amp;#34;Encodings&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#cf222e"&gt;set&lt;/span&gt; &lt;span style="color:#1f2328"&gt;encoding&lt;/span&gt;&lt;span style="color:#1f2328"&gt;=&lt;/span&gt;&lt;span style="color:#1f2328"&gt;utf&lt;/span&gt;&lt;span style="color:#0550ae"&gt;-8&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#cf222e"&gt;set&lt;/span&gt; &lt;span style="color:#1f2328"&gt;fileencodings&lt;/span&gt;&lt;span style="color:#1f2328"&gt;=&lt;/span&gt;&lt;span style="color:#1f2328"&gt;usc&lt;/span&gt;&lt;span style="color:#1f2328"&gt;-&lt;/span&gt;&lt;span style="color:#1f2328"&gt;bom&lt;/span&gt;&lt;span style="color:#1f2328"&gt;,&lt;/span&gt;&lt;span style="color:#1f2328"&gt;utf&lt;/span&gt;&lt;span style="color:#0550ae"&gt;-8&lt;/span&gt;&lt;span style="color:#1f2328"&gt;,&lt;/span&gt;&lt;span style="color:#1f2328"&gt;cp936&lt;/span&gt;&lt;span style="color:#1f2328"&gt;,&lt;/span&gt;&lt;span style="color:#1f2328"&gt;gb18030&lt;/span&gt;&lt;span style="color:#1f2328"&gt;,&lt;/span&gt;&lt;span style="color:#1f2328"&gt;big5&lt;/span&gt;&lt;span style="color:#1f2328"&gt;,&lt;/span&gt;&lt;span style="color:#1f2328"&gt;euc&lt;/span&gt;&lt;span style="color:#1f2328"&gt;-&lt;/span&gt;&lt;span style="color:#1f2328"&gt;jp&lt;/span&gt;&lt;span style="color:#1f2328"&gt;,&lt;/span&gt;&lt;span style="color:#1f2328"&gt;euc&lt;/span&gt;&lt;span style="color:#1f2328"&gt;-&lt;/span&gt;&lt;span style="color:#1f2328"&gt;kr&lt;/span&gt;&lt;span style="color:#1f2328"&gt;,&lt;/span&gt;&lt;span style="color:#1f2328"&gt;latin1&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#cf222e"&gt;set&lt;/span&gt; &lt;span style="color:#1f2328"&gt;fileformats&lt;/span&gt;&lt;span style="color:#1f2328"&gt;=&lt;/span&gt;&lt;span style="color:#1f2328"&gt;unix&lt;/span&gt;&lt;span style="color:#1f2328"&gt;,&lt;/span&gt;&lt;span style="color:#1f2328"&gt;dos&lt;/span&gt;&lt;span style="color:#1f2328"&gt;,&lt;/span&gt;&lt;span style="color:#1f2328"&gt;mac&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#cf222e"&gt;set&lt;/span&gt; &lt;span style="color:#1f2328"&gt;termencoding&lt;/span&gt;&lt;span style="color:#1f2328"&gt;=&lt;/span&gt;&lt;span style="color:#1f2328"&gt;utf&lt;/span&gt;&lt;span style="color:#0550ae"&gt;-8&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#cf222e"&gt;set&lt;/span&gt; &lt;span style="color:#1f2328"&gt;formatoptions&lt;/span&gt;&lt;span style="color:#1f2328"&gt;+=&lt;/span&gt;&lt;span style="color:#1f2328"&gt;m&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#cf222e"&gt;set&lt;/span&gt; &lt;span style="color:#1f2328"&gt;formatoptions&lt;/span&gt;&lt;span style="color:#1f2328"&gt;+=&lt;/span&gt;&lt;span style="color:#1f2328"&gt;B&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#57606a"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#57606a"&gt;&amp;#34;View&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#cf222e"&gt;set&lt;/span&gt; &lt;span style="color:#1f2328"&gt;ruler&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#cf222e"&gt;set&lt;/span&gt; &lt;span style="color:#1f2328"&gt;number&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#cf222e"&gt;set&lt;/span&gt; &lt;span style="color:#1f2328"&gt;showcmd&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#cf222e"&gt;set&lt;/span&gt; &lt;span style="color:#1f2328"&gt;showmode&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#cf222e"&gt;set&lt;/span&gt; &lt;span style="color:#1f2328"&gt;showmatch&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#cf222e"&gt;set&lt;/span&gt; &lt;span style="color:#1f2328"&gt;matchtime&lt;/span&gt;&lt;span style="color:#1f2328"&gt;=&lt;/span&gt;&lt;span style="color:#0550ae"&gt;2&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#cf222e"&gt;set&lt;/span&gt; &lt;span style="color:#1f2328"&gt;guifont&lt;/span&gt;&lt;span style="color:#1f2328"&gt;=&lt;/span&gt;&lt;span style="color:#1f2328"&gt;Ubuntu&lt;/span&gt;\ &lt;span style="color:#1f2328"&gt;Mono&lt;/span&gt;\ &lt;span style="color:#1f2328"&gt;Regular&lt;/span&gt;\ &lt;span style="color:#0550ae"&gt;15&lt;/span&gt; &lt;span style="color:#57606a"&gt;&amp;#34; IMPORTANT: :h15 can&amp;#39;t be recognized&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#57606a"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#57606a"&gt;&amp;#34;Searching&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#cf222e"&gt;set&lt;/span&gt; &lt;span style="color:#1f2328"&gt;hlsearch&lt;/span&gt;&amp;#34;&lt;span style="color:#cf222e"&gt;highlight&lt;/span&gt; &lt;span style="color:#1f2328"&gt;searches&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#cf222e"&gt;set&lt;/span&gt; &lt;span style="color:#1f2328"&gt;incsearch&lt;/span&gt;&amp;#34;&lt;span style="color:#1f2328"&gt;incremerntal&lt;/span&gt; &lt;span style="color:#1f2328"&gt;searching&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#cf222e"&gt;set&lt;/span&gt; &lt;span style="color:#1f2328"&gt;ignorecase&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#cf222e"&gt;set&lt;/span&gt; &lt;span style="color:#1f2328"&gt;smartcase&lt;/span&gt;&amp;#34; &lt;span style="color:#1f2328"&gt;no&lt;/span&gt; &lt;span style="color:#1f2328"&gt;ignore&lt;/span&gt; &lt;span style="color:#1f2328"&gt;case&lt;/span&gt; &lt;span style="color:#1f2328"&gt;when&lt;/span&gt; &lt;span style="color:#1f2328"&gt;Uppercase&lt;/span&gt; &lt;span style="color:#1f2328"&gt;char&lt;/span&gt; &lt;span style="color:#1f2328"&gt;present&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#57606a"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#57606a"&gt;&amp;#34;Tab&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#cf222e"&gt;set&lt;/span&gt; &lt;span style="color:#1f2328"&gt;expandtab&lt;/span&gt;&amp;#34; &lt;span style="color:#1f2328"&gt;expand&lt;/span&gt; &lt;span style="color:#1f2328"&gt;all&lt;/span&gt; &lt;span style="color:#1f2328"&gt;tabs&lt;/span&gt; &lt;span style="color:#1f2328"&gt;to&lt;/span&gt; &lt;span style="color:#1f2328"&gt;spaces&lt;/span&gt;\&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#cf222e"&gt;set&lt;/span&gt; &lt;span style="color:#1f2328"&gt;smarttab&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#cf222e"&gt;set&lt;/span&gt; &lt;span style="color:#1f2328"&gt;shiftround&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#57606a"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#57606a"&gt;&amp;#34;Indent&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#cf222e"&gt;set&lt;/span&gt; &lt;span style="color:#1f2328"&gt;autoindent&lt;/span&gt; &lt;span style="color:#1f2328"&gt;smartindent&lt;/span&gt; &lt;span style="color:#1f2328"&gt;shiftround&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#cf222e"&gt;set&lt;/span&gt; &lt;span style="color:#1f2328"&gt;shiftwidth&lt;/span&gt;&lt;span style="color:#1f2328"&gt;=&lt;/span&gt;&lt;span style="color:#0550ae"&gt;4&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#cf222e"&gt;set&lt;/span&gt; &lt;span style="color:#1f2328"&gt;tabstop&lt;/span&gt;&lt;span style="color:#1f2328"&gt;=&lt;/span&gt;&lt;span style="color:#0550ae"&gt;4&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#cf222e"&gt;set&lt;/span&gt; &lt;span style="color:#1f2328"&gt;softtabstop&lt;/span&gt;&lt;span style="color:#1f2328"&gt;=&lt;/span&gt;&lt;span style="color:#0550ae"&gt;4&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#57606a"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#57606a"&gt;&amp;#34;Cursor&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#cf222e"&gt;set&lt;/span&gt; &lt;span style="color:#1f2328"&gt;cursorcolumn&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#cf222e"&gt;set&lt;/span&gt; &lt;span style="color:#1f2328"&gt;cursorline&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#57606a"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#57606a"&gt;&amp;#34; Theme&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#cf222e"&gt;syntax&lt;/span&gt; &lt;span style="color:#1f2328"&gt;enable&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#cf222e"&gt;set&lt;/span&gt; &lt;span style="color:#1f2328"&gt;background&lt;/span&gt;&lt;span style="color:#1f2328"&gt;=&lt;/span&gt;&lt;span style="color:#6639ba"&gt;dark&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#cf222e"&gt;colorscheme&lt;/span&gt; &lt;span style="color:#1f2328"&gt;solarized&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#57606a"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#57606a"&gt;&amp;#34;KeyMapping&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#1f2328"&gt;nnoremap&lt;/span&gt; &lt;span style="color:#1f2328"&gt;k&lt;/span&gt; &lt;span style="color:#1f2328"&gt;gk&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#1f2328"&gt;nnoremap&lt;/span&gt; &lt;span style="color:#1f2328"&gt;gk&lt;/span&gt; &lt;span style="color:#1f2328"&gt;k&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#1f2328"&gt;nnoremap&lt;/span&gt; &lt;span style="color:#1f2328"&gt;j&lt;/span&gt; &lt;span style="color:#1f2328"&gt;gj&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#1f2328"&gt;nnoremap&lt;/span&gt; &lt;span style="color:#1f2328"&gt;gj&lt;/span&gt; &lt;span style="color:#1f2328"&gt;j&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="youcompleteme"&gt;YouCompleteMe&lt;/h2&gt;&#10;&lt;h3 id="cmake"&gt;Cmake&lt;/h3&gt;&#10;&lt;p&gt;$ pip install &amp;ndash;user cmake&lt;/p&gt;</description></item><item><title>Crawl song lyrics in NetEase</title><link>https://depoze.xyz/pages/netease-lyrics/</link><pubDate>Tue, 08 Feb 2022 00:00:00 +0000</pubDate><guid>https://depoze.xyz/pages/netease-lyrics/</guid><description>&lt;h2 id="introduction"&gt;Introduction&lt;/h2&gt;&#10;&lt;p&gt;Beginning to learn Python, @Zei_Wai and I want to do some simple tasks, instead of diving into the sea of the documentation of Python. Then we chose this: generating a WordCloud picture of the lyrics of NeteaseMusic Songlist.&lt;/p&gt;&#10;&lt;h2 id="using-urllib-package"&gt;Using urllib package&lt;/h2&gt;&#10;&lt;p&gt;First we found an api of Netease:&lt;/p&gt;&#10;&lt;p&gt;&lt;a href="https://music.163.com/api/song/lyric?id=%3Csong.id%3E&amp;amp;lv=1&amp;amp;kv=1&amp;amp;tv=-1"&gt;https://music.163.com/api/song/lyric?id=&amp;lt;song.id&amp;gt;&amp;amp;lv=1&amp;amp;kv=1&amp;amp;tv=-1&lt;/a&gt;&lt;/p&gt;&#10;&lt;p&gt;where &amp;lt;song.id&amp;gt; is the id of songs in Netease database. When we use web client to play music, the URL of music playing page contains this id. For a simple example, if we want to get the lyrics of &lt;em&gt;Bad Apple!!&lt;/em&gt; we just need to do like this:&lt;/p&gt;</description></item><item><title>Dual Boot Win10 and Linux Mint</title><link>https://depoze.xyz/pages/dual-boot/</link><pubDate>Sat, 22 Jan 2022 00:00:00 +0000</pubDate><guid>https://depoze.xyz/pages/dual-boot/</guid><description>&lt;h2 id="introduction"&gt;Introduction&lt;/h2&gt;&#10;&lt;p&gt;I already have Windows 10 installed on my computer, and want to install Linux to dual boot.&lt;/p&gt;&#10;&lt;h2 id="preparation"&gt;Preparation&lt;/h2&gt;&#10;&lt;p&gt;I don&amp;rsquo;t have any experience on installing a new OS. So I have to investigate enough to minimize the probability that emergencies happen.&lt;/p&gt;&#10;&lt;h3 id="distro"&gt;Distro&lt;/h3&gt;&#10;&lt;p&gt;I choose Linux Mint 20.03(Edge). This stable edition is distributed on Jan. 17, 2022. Some videos that helps to choose a distro (provided by @Erik):&lt;/p&gt;&#10;&lt;p&gt;&lt;a href="https://www.youtube.com/watch?v=0506yDSgU7M"&gt;Linux HATES Me – Daily Driver CHALLENGE Pt.1 - YouTube&lt;/a&gt;&lt;/p&gt;</description></item><item><title>What do these mojibake mean? - UTF-8 Encoding Scheme Exploration</title><link>https://depoze.xyz/pages/utf8-mojibake/</link><pubDate>Wed, 08 Dec 2021 00:00:00 +0000</pubDate><guid>https://depoze.xyz/pages/utf8-mojibake/</guid><description>&lt;p&gt;This article may contain horrific and gory videos. Be careful when clicking on the URLs. If you have any discomfort when browsing, please stop and leave. / 本文可能含有恐怖、血腥性质的图片、视频。请谨慎进入文中的链接。如果您在浏览过程中产生任何不适，请停止浏览并离开。&lt;/p&gt;&#10;&lt;h2 id="introduction"&gt;Introduction&lt;/h2&gt;&#10;&lt;p&gt;We often meet mojibake, in games, web pages, or somewhere else. UTF-8 is the most widespread encoding scheme. These days @叉叉 and @北嘲 find some weird videos on YouTube, with obscure titles and terrifying cover. We are curious about the origin of these creepy videos. This article is to record our exploration process.&lt;/p&gt;</description></item><item><title>Probability of Christmas on Wednesday</title><link>https://depoze.xyz/pages/christmas-probability/</link><pubDate>Thu, 14 Oct 2021 00:00:00 +0000</pubDate><guid>https://depoze.xyz/pages/christmas-probability/</guid><description>&lt;h2 id="original-problem"&gt;Original Problem&lt;/h2&gt;&#10;&lt;p&gt;Proof: In the system of the current Common Era, the probability of Christmas on Wed. is not 1/7.&lt;/p&gt;&#10;&lt;h2 id="what-exactly-the-probability-is"&gt;What exactly the probability is&lt;/h2&gt;&#10;&lt;p&gt;In 400 years there are 303 non-leap years and 97 leap years. Total number of days:&lt;/p&gt;&#10;&lt;p&gt;$$T = 303\cdot 365 + 97\cdot 366\equiv 303 + 97\cdot 2\equiv 0\pmod 7.$$&lt;/p&gt;&#10;&lt;p&gt;This means: If the Christmas is on Mon. in year x, then it would be on Mon. in year (x + 400). That&amp;rsquo;s to say, there&amp;rsquo;s a difference between a day of the week and another day of the week.&lt;/p&gt;</description></item><item><title>Vim commands quickref</title><link>https://depoze.xyz/pages/vim-commands/</link><pubDate>Mon, 04 Oct 2021 00:00:00 +0000</pubDate><guid>https://depoze.xyz/pages/vim-commands/</guid><description>&lt;h2 id="move-cursor"&gt;Move cursor&lt;/h2&gt;&#10;&lt;p&gt;h and l : Left and Right.&#10;k and j : Up and Down.&lt;/p&gt;&#10;&lt;h2 id="basic-edit"&gt;Basic Edit&lt;/h2&gt;&#10;&lt;p&gt;i: enter insert mode, cursor is before the highlighted character.&#10;a: enter insert mode, cursor is after the highlighted character.&lt;/p&gt;&#10;&lt;p&gt;:wq: save and quit.&#10;:q!: quit and do not save.&lt;/p&gt;&#10;&lt;h2 id="delete-and-undo"&gt;Delete and Undo&lt;/h2&gt;&#10;&lt;p&gt;x: delete the current highlighted character.&lt;/p&gt;&#10;&lt;p&gt;d: delete. Its basic format is d &lt;number&gt; &lt;motion&gt;.&lt;/p&gt;&#10;&lt;p&gt;motion:&#10;w: move cursor to the next word&amp;rsquo;s first letter.&#10;e: move cursor to the current word&amp;rsquo;s last letter.&#10;$: move cursor to the end of this line.&lt;/p&gt;</description></item><item><title>Configure gVim on Windows</title><link>https://depoze.xyz/pages/gvim-windows/</link><pubDate>Sat, 02 Oct 2021 00:00:00 +0000</pubDate><guid>https://depoze.xyz/pages/gvim-windows/</guid><description>&lt;h2 id="version-info"&gt;Version Info&lt;/h2&gt;&#10;&lt;p&gt;gVim version 8.1.1 8.2.0577 for Windows&lt;/p&gt;&#10;&lt;h2 id="initialize"&gt;Initialize&lt;/h2&gt;&#10;&lt;p&gt;&lt;a href="https://vimjc.com/vimrc.html"&gt;无插件Vim配置文件vimrc推荐与各VIM配置项解释&lt;/a&gt;&lt;/p&gt;&#10;&lt;p&gt;First add these lines to _vimrc.&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="background-color:#f7f7f7;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-vim" data-lang="vim"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#cf222e"&gt;set&lt;/span&gt; &lt;span style="color:#1f2328"&gt;nocompatible&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#cf222e"&gt;set&lt;/span&gt; &lt;span style="color:#1f2328"&gt;autoread&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#cf222e"&gt;set&lt;/span&gt; &lt;span style="color:#1f2328"&gt;shortmess&lt;/span&gt;&lt;span style="color:#1f2328"&gt;=&lt;/span&gt;&lt;span style="color:#1f2328"&gt;atI&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#cf222e"&gt;set&lt;/span&gt; &lt;span style="color:#1f2328"&gt;magic&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#cf222e"&gt;set&lt;/span&gt; &lt;span style="color:#1f2328"&gt;title&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#cf222e"&gt;set&lt;/span&gt; &lt;span style="color:#1f2328"&gt;nobackup&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#cf222e"&gt;set&lt;/span&gt; &lt;span style="color:#1f2328"&gt;noerrorbells&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#cf222e"&gt;set&lt;/span&gt; &lt;span style="color:#1f2328"&gt;visualbell&lt;/span&gt; &lt;span style="color:#1f2328"&gt;t_vb&lt;/span&gt;&lt;span style="color:#1f2328"&gt;=&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#cf222e"&gt;set&lt;/span&gt; &lt;span style="color:#1f2328"&gt;t_vb&lt;/span&gt;&lt;span style="color:#1f2328"&gt;=&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#cf222e"&gt;set&lt;/span&gt; &lt;span style="color:#1f2328"&gt;timeoutlen&lt;/span&gt;&lt;span style="color:#1f2328"&gt;=&lt;/span&gt;&lt;span style="color:#0550ae"&gt;500&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#cf222e"&gt;set&lt;/span&gt; &lt;span style="color:#1f2328"&gt;fileencodings&lt;/span&gt;&lt;span style="color:#1f2328"&gt;=&lt;/span&gt;&lt;span style="color:#1f2328"&gt;ucs&lt;/span&gt;&lt;span style="color:#1f2328"&gt;-&lt;/span&gt;&lt;span style="color:#1f2328"&gt;bom&lt;/span&gt;&lt;span style="color:#1f2328"&gt;,&lt;/span&gt;&lt;span style="color:#1f2328"&gt;utf&lt;/span&gt;&lt;span style="color:#0550ae"&gt;-8&lt;/span&gt;&lt;span style="color:#1f2328"&gt;,&lt;/span&gt;&lt;span style="color:#1f2328"&gt;cp936&lt;/span&gt;&lt;span style="color:#1f2328"&gt;,&lt;/span&gt;&lt;span style="color:#1f2328"&gt;gb18030&lt;/span&gt;&lt;span style="color:#1f2328"&gt;,&lt;/span&gt;&lt;span style="color:#1f2328"&gt;big5&lt;/span&gt;&lt;span style="color:#1f2328"&gt;,&lt;/span&gt;&lt;span style="color:#1f2328"&gt;euc&lt;/span&gt;&lt;span style="color:#1f2328"&gt;-&lt;/span&gt;&lt;span style="color:#1f2328"&gt;jp&lt;/span&gt;&lt;span style="color:#1f2328"&gt;,&lt;/span&gt;&lt;span style="color:#1f2328"&gt;euc&lt;/span&gt;&lt;span style="color:#1f2328"&gt;-&lt;/span&gt;&lt;span style="color:#1f2328"&gt;kr&lt;/span&gt;&lt;span style="color:#1f2328"&gt;,&lt;/span&gt;&lt;span style="color:#1f2328"&gt;latin1&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#cf222e"&gt;set&lt;/span&gt; &lt;span style="color:#1f2328"&gt;fileformats&lt;/span&gt;&lt;span style="color:#1f2328"&gt;=&lt;/span&gt;&lt;span style="color:#1f2328"&gt;unix&lt;/span&gt;&lt;span style="color:#1f2328"&gt;,&lt;/span&gt;&lt;span style="color:#1f2328"&gt;dos&lt;/span&gt;&lt;span style="color:#1f2328"&gt;,&lt;/span&gt;&lt;span style="color:#1f2328"&gt;mac&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#cf222e"&gt;set&lt;/span&gt; &lt;span style="color:#1f2328"&gt;termencoding&lt;/span&gt;&lt;span style="color:#1f2328"&gt;=&lt;/span&gt;&lt;span style="color:#1f2328"&gt;utf&lt;/span&gt;&lt;span style="color:#0550ae"&gt;-8&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#cf222e"&gt;set&lt;/span&gt; &lt;span style="color:#1f2328"&gt;formatoptions&lt;/span&gt;&lt;span style="color:#1f2328"&gt;+=&lt;/span&gt;&lt;span style="color:#1f2328"&gt;m&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#cf222e"&gt;set&lt;/span&gt; &lt;span style="color:#1f2328"&gt;formatoptions&lt;/span&gt;&lt;span style="color:#1f2328"&gt;+=&lt;/span&gt;&lt;span style="color:#1f2328"&gt;B&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#cf222e"&gt;set&lt;/span&gt; &lt;span style="color:#1f2328"&gt;guifont&lt;/span&gt;&lt;span style="color:#1f2328"&gt;=&lt;/span&gt;&lt;span style="color:#1f2328"&gt;Source&lt;/span&gt;\ &lt;span style="color:#1f2328"&gt;Code&lt;/span&gt;\ &lt;span style="color:#1f2328"&gt;Pro&lt;/span&gt;:&lt;span style="color:#1f2328"&gt;h14&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#cf222e"&gt;set&lt;/span&gt; &lt;span style="color:#1f2328"&gt;ruler&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#cf222e"&gt;set&lt;/span&gt; &lt;span style="color:#1f2328"&gt;number&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#cf222e"&gt;set&lt;/span&gt; &lt;span style="color:#1f2328"&gt;nowrap&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#cf222e"&gt;set&lt;/span&gt; &lt;span style="color:#1f2328"&gt;showcmd&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#cf222e"&gt;set&lt;/span&gt; &lt;span style="color:#1f2328"&gt;showmode&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#cf222e"&gt;set&lt;/span&gt; &lt;span style="color:#1f2328"&gt;showmatch&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#cf222e"&gt;set&lt;/span&gt; &lt;span style="color:#1f2328"&gt;matchtime&lt;/span&gt;&lt;span style="color:#1f2328"&gt;=&lt;/span&gt;&lt;span style="color:#0550ae"&gt;2&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#cf222e"&gt;set&lt;/span&gt; &lt;span style="color:#1f2328"&gt;hlsearch&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#cf222e"&gt;set&lt;/span&gt; &lt;span style="color:#1f2328"&gt;incsearch&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#cf222e"&gt;set&lt;/span&gt; &lt;span style="color:#1f2328"&gt;ignorecase&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#cf222e"&gt;set&lt;/span&gt; &lt;span style="color:#1f2328"&gt;smartcase&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#cf222e"&gt;set&lt;/span&gt; &lt;span style="color:#1f2328"&gt;expandtab&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#cf222e"&gt;set&lt;/span&gt; &lt;span style="color:#1f2328"&gt;smarttab&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#cf222e"&gt;set&lt;/span&gt; &lt;span style="color:#1f2328"&gt;shiftround&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#cf222e"&gt;set&lt;/span&gt; &lt;span style="color:#1f2328"&gt;autoindent&lt;/span&gt; &lt;span style="color:#1f2328"&gt;smartindent&lt;/span&gt; &lt;span style="color:#1f2328"&gt;shiftround&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#cf222e"&gt;set&lt;/span&gt; &lt;span style="color:#1f2328"&gt;shiftwidth&lt;/span&gt;&lt;span style="color:#1f2328"&gt;=&lt;/span&gt;&lt;span style="color:#0550ae"&gt;4&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#cf222e"&gt;set&lt;/span&gt; &lt;span style="color:#1f2328"&gt;tabstop&lt;/span&gt;&lt;span style="color:#1f2328"&gt;=&lt;/span&gt;&lt;span style="color:#0550ae"&gt;4&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#cf222e"&gt;set&lt;/span&gt; &lt;span style="color:#1f2328"&gt;softtabstop&lt;/span&gt;&lt;span style="color:#1f2328"&gt;=&lt;/span&gt;&lt;span style="color:#0550ae"&gt;4&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#cf222e"&gt;set&lt;/span&gt; &lt;span style="color:#1f2328"&gt;cursorcolumn&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#cf222e"&gt;set&lt;/span&gt; &lt;span style="color:#1f2328"&gt;cursorline&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#cf222e"&gt;filetype&lt;/span&gt; &lt;span style="color:#1f2328"&gt;on&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#cf222e"&gt;syntax&lt;/span&gt; &lt;span style="color:#1f2328"&gt;on&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#cf222e"&gt;set&lt;/span&gt; &lt;span style="color:#1f2328"&gt;foldmethod&lt;/span&gt;&lt;span style="color:#1f2328"&gt;=&lt;/span&gt;&lt;span style="color:#cf222e"&gt;syntax&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#cf222e"&gt;set&lt;/span&gt; &lt;span style="color:#1f2328"&gt;nofoldenable&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="install-theme-solarized"&gt;Install Theme: Solarized&lt;/h2&gt;&#10;&lt;p&gt;&lt;a href="https://vimjc.com/vim-color-schemes.html"&gt;15个著名的Vim配色方案整理-Vim入门教程(7)&lt;/a&gt;&lt;/p&gt;</description></item><item><title>单链表的含环和相交性质探究过程记录</title><link>https://depoze.xyz/pages/linked-list-cycle/</link><pubDate>Wed, 22 Sep 2021 00:00:00 +0000</pubDate><guid>https://depoze.xyz/pages/linked-list-cycle/</guid><description>&lt;h2 id="问题"&gt;问题&lt;/h2&gt;&#10;&lt;p&gt;如何判断单链表中是否存在环？如何判断两个单链表是否相交？如果相交，如何求出相交点？&lt;/p&gt;&#10;&lt;h2 id="思路"&gt;思路&lt;/h2&gt;&#10;&lt;h3 id="初见的思路"&gt;初见的思路&lt;/h3&gt;&#10;&lt;p&gt;判断环：对链表进行遍历，如果无环则会访问到NULL，有环则会访问到head。&lt;br&gt;&#10;判断相交：单链表仅有一个next域，则相交必定是“两个均无环” 或 &amp;ldquo;一个有环一个无环&amp;quot;的两种情况。&lt;br&gt;&#10;初见的思路都有哪里不周全呢？经过接下来几天的考虑，我渐渐地意识到不周密之处所在…&lt;/p&gt;&#10;&lt;h3 id="修正后的思路"&gt;修正后的思路&lt;/h3&gt;&#10;&lt;p&gt;首先脱离形象上的“凭感觉”，尽管从形象上比较容易理解，但仍需要定义“含环”和“相交”的概念。&lt;/p&gt;&#10;&lt;p&gt;如果严格遵循单链表的ADT，是不会出现含环和相交的现象的。因为指针表示的是元素间的逻辑顺序，而ADT中并没有尾结点指向其他结点的逻辑关系。因此这里考虑的“单链表”应当仅指的是“结点的结构为：含有一个data域和一个next域”的数据结构。&lt;/p&gt;&#10;&lt;p&gt;含环：如果链表中的一个结点的next域仍指向这个表中的结点，则称链表含环。&lt;/p&gt;&#10;&lt;p&gt;相交：如果从L1出发，可以访问到L2中的结点，则称L1和L2相交。&lt;/p&gt;&#10;&lt;p&gt;最先意识到的错误：如果链表含环，在遍历它的过程中并不是一定会访问到head的，而且在通常情况下是不会访问到的，因为含环的链表实际上分为环外和环内两部分，而head只能处于环外的部分。另外，贸然对链表进行和原来一样形式的“遍历”是危险的。因为对于有环的链表来说，使用通常的遍历方法只会引起无穷递归。&lt;/p&gt;&#10;&lt;p&gt;另外，对相交的理解加深之后就可以意识到：原来理解的“一个有环一个无环”的情况，并不是真正的“一个有环一个无环”，事实上如果两个链表相交且一个有环，则另一个一定会访问到那个环，也就是说一定会推出“两个均含环”。如果一个链表有环，另一个链表无环，则它们一定不会相交。&lt;/p&gt;&#10;&lt;p&gt;进一步地，链表是否相交，可以分为七种情况。&lt;/p&gt;&#10;&lt;h2 id="实现和求解"&gt;实现和求解&lt;/h2&gt;&#10;&lt;h3 id="预定义"&gt;预定义：&lt;/h3&gt;&#10;&lt;p&gt;首先定义数据结构：&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="background-color:#f7f7f7;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-c" data-lang="c"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#cf222e"&gt;typedef&lt;/span&gt; &lt;span style="color:#cf222e"&gt;struct&lt;/span&gt; &lt;span style="color:#1f2328"&gt;{&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Datatype data&lt;span style="color:#1f2328"&gt;;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;LNode&lt;span style="color:#0550ae"&gt;*&lt;/span&gt; next&lt;span style="color:#1f2328"&gt;;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#1f2328"&gt;}&lt;/span&gt;LNode&lt;span style="color:#1f2328"&gt;;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;我们需要实现的函数包括：&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="background-color:#f7f7f7;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-c" data-lang="c"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;LNode&lt;span style="color:#0550ae"&gt;*&lt;/span&gt; &lt;span style="color:#6639ba"&gt;IfCircle&lt;/span&gt;&lt;span style="color:#1f2328"&gt;(&lt;/span&gt;LNode&lt;span style="color:#0550ae"&gt;*&lt;/span&gt; L&lt;span style="color:#1f2328"&gt;);&lt;/span&gt; &lt;span style="color:#57606a"&gt;//判断是否有环&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;LNode&lt;span style="color:#0550ae"&gt;*&lt;/span&gt; &lt;span style="color:#6639ba"&gt;IfCross&lt;/span&gt;&lt;span style="color:#1f2328"&gt;(&lt;/span&gt;LNode&lt;span style="color:#0550ae"&gt;*&lt;/span&gt; L1&lt;span style="color:#1f2328"&gt;,&lt;/span&gt; LNode&lt;span style="color:#0550ae"&gt;*&lt;/span&gt; L2&lt;span style="color:#1f2328"&gt;);&lt;/span&gt; &lt;span style="color:#57606a"&gt;//判断是否相交&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;判断是否有环的函数最开始是写成返回bool型的，返回1代表有环。但是在随后的IfCross的实现中，渐渐发现其实入环的点的位置相当重要。因此将IfCircle写成返回地址值的函数。&lt;/p&gt;&#10;&lt;p&gt;为什么说IfCross的实现依赖入环点？在它的七种情况中包括：&lt;/p&gt;&#10;&lt;p&gt;（两种）不含环的，可以通过一般的遍历方法求得交点或确认无交点；&lt;/p&gt;&#10;&lt;p&gt;（一种）一含环一不含环的，必然无交点；&lt;/p&gt;&#10;&lt;p&gt;两者都含环的：&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;”链表重合“和”链表完全不相关“：相对容易通过检测直接实现；&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;最麻烦的后两种”环内相交“和”环外相交“：如果环内相交，则两个交点就是两个链表的入环点；如果环外相交，那么也需要通过入环点限制遍历的条件，这样就可以使用一般的遍历方法进行遍历。&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h3 id="重要的工具快慢指针"&gt;重要的工具：快慢指针&lt;/h3&gt;&#10;&lt;p&gt;既然通常的遍历方式已经不适用，应当怎样对链表进行遍历呢？一个好办法是引入[[快慢指针]]。希望访问到所有的结点，可以要求快指针每次前进一步时就伴随访问一次结点）而从退出条件分析，将快者的速度设置为2，慢者的速度设置为1，则相当于快者相对于慢者每次严格前进1，环的长度有限，一定可以退出。更广泛地考虑下，慢者和快者的速度并不一定是1和2，在环长度L给定的情况下，只需要求（快指针速度-慢指针速度）和L互质即可。证明在后面给出。&lt;/p&gt;&#10;&lt;p&gt;通过快慢指针遍历最初是写在IfCircle函数中的，但在后来的实现中发现它在这里很常用，因此单独写一个函数出来。&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="background-color:#f7f7f7;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-c" data-lang="c"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#cf222e"&gt;int&lt;/span&gt; &lt;span style="color:#6639ba"&gt;Traverse&lt;/span&gt;&lt;span style="color:#1f2328"&gt;(&lt;/span&gt;LNode&lt;span style="color:#0550ae"&gt;*&lt;/span&gt; start&lt;span style="color:#1f2328"&gt;)&lt;/span&gt; &lt;span style="color:#1f2328"&gt;{&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#57606a"&gt;/*&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#57606a"&gt;* return value:使用快慢两个指针遍历链表，若无环则返回0，有环则返回慢指针行进的距离。&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#57606a"&gt;*/&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;LNode&lt;span style="color:#0550ae"&gt;*&lt;/span&gt; fast &lt;span style="color:#0550ae"&gt;=&lt;/span&gt; start&lt;span style="color:#1f2328"&gt;;&lt;/span&gt; LNode&lt;span style="color:#0550ae"&gt;*&lt;/span&gt; slow &lt;span style="color:#0550ae"&gt;=&lt;/span&gt; start&lt;span style="color:#1f2328"&gt;;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#cf222e"&gt;if&lt;/span&gt; &lt;span style="color:#1f2328"&gt;(&lt;/span&gt;start&lt;span style="color:#0550ae"&gt;-&amp;gt;&lt;/span&gt;next &lt;span style="color:#0550ae"&gt;==&lt;/span&gt; &lt;span style="color:#6639ba"&gt;NULL&lt;/span&gt;&lt;span style="color:#1f2328"&gt;)&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#cf222e"&gt;return&lt;/span&gt; &lt;span style="color:#0550ae"&gt;0&lt;/span&gt;&lt;span style="color:#1f2328"&gt;;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#cf222e"&gt;int&lt;/span&gt; counter &lt;span style="color:#0550ae"&gt;=&lt;/span&gt; &lt;span style="color:#0550ae"&gt;0&lt;/span&gt;&lt;span style="color:#1f2328"&gt;;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#cf222e"&gt;while&lt;/span&gt; &lt;span style="color:#1f2328"&gt;(&lt;/span&gt;slow &lt;span style="color:#0550ae"&gt;=&lt;/span&gt; slow&lt;span style="color:#0550ae"&gt;-&amp;gt;&lt;/span&gt;next&lt;span style="color:#1f2328"&gt;)&lt;/span&gt; &lt;span style="color:#1f2328"&gt;{&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;counter&lt;span style="color:#0550ae"&gt;++&lt;/span&gt;&lt;span style="color:#1f2328"&gt;;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#cf222e"&gt;if&lt;/span&gt; &lt;span style="color:#1f2328"&gt;(&lt;/span&gt;fast&lt;span style="color:#0550ae"&gt;-&amp;gt;&lt;/span&gt;next &lt;span style="color:#0550ae"&gt;==&lt;/span&gt; &lt;span style="color:#6639ba"&gt;NULL&lt;/span&gt;&lt;span style="color:#1f2328"&gt;)&lt;/span&gt;&lt;span style="color:#cf222e"&gt;return&lt;/span&gt; &lt;span style="color:#0550ae"&gt;0&lt;/span&gt;&lt;span style="color:#1f2328"&gt;;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;fast &lt;span style="color:#0550ae"&gt;=&lt;/span&gt; fast&lt;span style="color:#0550ae"&gt;-&amp;gt;&lt;/span&gt;next&lt;span style="color:#1f2328"&gt;;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#cf222e"&gt;if&lt;/span&gt; &lt;span style="color:#1f2328"&gt;(&lt;/span&gt;fast&lt;span style="color:#0550ae"&gt;-&amp;gt;&lt;/span&gt;next &lt;span style="color:#0550ae"&gt;==&lt;/span&gt; &lt;span style="color:#6639ba"&gt;NULL&lt;/span&gt;&lt;span style="color:#1f2328"&gt;)&lt;/span&gt;&lt;span style="color:#cf222e"&gt;return&lt;/span&gt; &lt;span style="color:#0550ae"&gt;0&lt;/span&gt;&lt;span style="color:#1f2328"&gt;;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;fast &lt;span style="color:#0550ae"&gt;=&lt;/span&gt; fast&lt;span style="color:#0550ae"&gt;-&amp;gt;&lt;/span&gt;next&lt;span style="color:#1f2328"&gt;;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#cf222e"&gt;if&lt;/span&gt; &lt;span style="color:#1f2328"&gt;(&lt;/span&gt;slow &lt;span style="color:#0550ae"&gt;==&lt;/span&gt; fast&lt;span style="color:#1f2328"&gt;)&lt;/span&gt;&lt;span style="color:#cf222e"&gt;return&lt;/span&gt; counter&lt;span style="color:#1f2328"&gt;;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#1f2328"&gt;}&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#1f2328"&gt;}&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="快慢指针遍历带环链表的性质"&gt;快慢指针遍历带环链表的性质&lt;/h3&gt;&#10;&lt;h4 id="关于快慢指针速度取值的证明"&gt;关于快慢指针速度取值的证明&lt;/h4&gt;&#10;&lt;p&gt;首先，只要要求快指针行进时，每一个小步(f = f-&amp;gt;next)时都进行一次访问，就可以做到每个元素至少访问一遍，所以”遍历“的要求很容易满足。我们主要思考如何取值可以满足遍历的退出条件（f == s）。&lt;/p&gt;</description></item></channel></rss>