Files
DefectingCat.github.io/defect/irc-getting-started.html
DefectingCat 8c7085f18f
2020-11-02 02:17:54 +00:00

5 lines
25 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!DOCTYPE html><html lang="zh-CN" data-default-color-scheme="&#34;auto&#34;"><head><meta charset="UTF-8"><link rel="apple-touch-icon" sizes="76x76" href="/images/img/apple-touch-icon.webp"><link rel="icon" type="image/png" href="/images/img/favicon.webp"><meta name="viewport" content="width=device-width,initial-scale=1,maximum-scale=1,user-scalable=no,shrink-to-fit=no"><meta http-equiv="x-ua-compatible" content="ie=edge"><meta name="theme-color" content="#9DC8C8"><meta name="description" content=""><meta name="author" content="Defectink"><meta name="keywords" content=""><title>入坑IRC - 🍭Defectink</title><link rel="stylesheet" href="https://cdn.defectink.com/static/twitter-bootstrap/4.5.3/css/bootstrap.min.css"><link rel="stylesheet" href="https://cdn.defectink.com/static/github-markdown-css/4.0.0/github-markdown.min.css"><link rel="stylesheet" href="/lib/hint/hint.min.css"><link rel="stylesheet" href="https://cdn.defectink.com/static/highlight.js/10.0.0/styles/github-gist.min.css"><link rel="stylesheet" href="//at.alicdn.com/t/font_1749284_ba1fz6golrf.css"><link rel="stylesheet" href="https://cdn.defectink.com/static/t/font_1736178_kmeydafke9r.css"><link rel="stylesheet" href="/css/main.css"><link rel="stylesheet" href="/css/xfy.css"><script src="/js/utils.js"></script><script src="/js/color-schema.js"></script><meta name="generator" content="Hexo 5.2.0"><link rel="alternate" href="/xml/atom.xml" title="🍭Defectink" type="application/atom+xml"><link rel="alternate" href="/xml/rss.xml" title="🍭Defectink" type="application/rss+xml"></head><body><header style="height:75vh"><nav id="navbar" class="navbar fixed-top navbar-expand-lg navbar-dark scrolling-navbar"><div class="container"><a class="navbar-brand" href="/">&nbsp;<strong>🍭Defectink</strong>&nbsp;</a> <button id="navbar-toggler-btn" class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarSupportedContent" aria-controls="navbarSupportedContent" aria-expanded="false" aria-label="Toggle navigation"><div class="animated-icon"><span></span><span></span><span></span></div></button><div class="collapse navbar-collapse" id="navbarSupportedContent"><ul class="navbar-nav ml-auto text-center"><li class="nav-item"><a class="nav-link" href="/">🏠 首页</a></li><li class="nav-item dropdown"><a class="nav-link dropdown-toggle" href="#" role="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">📕 索引</a><div class="dropdown-menu" aria-labelledby="navbarDropdown"><a class="dropdown-item" href="/categories/">🎁 分类</a> <a class="dropdown-item" href="/tags/">🎐 标签</a></div></li><li class="nav-item"><a class="nav-link" href="/archives/">📂 归档</a></li><li class="nav-item"><a class="nav-link" href="/about/">🎃 关于</a></li><li class="nav-item"><a class="nav-link" href="/links/">🙆‍♀️ 小伙伴</a></li><li class="nav-item"><a class="nav-link" href="/pgp/">🔐 PGP</a></li><li class="nav-item" id="search-btn"><a class="nav-link" data-toggle="modal" data-target="#modalSearch">&nbsp;<i class="iconfont icon-search"></i>&nbsp;</a></li><li class="nav-item" id="color-toggle-btn"><a class="nav-link" href="javascript:">&nbsp;<i class="iconfont icon-dark" id="color-toggle-icon"></i>&nbsp;</a></li></ul></div></div></nav><div class="banner intro-2" id="background" parallax="true" style="background:url(/images/img/post.webp) no-repeat center center;background-size:cover"><div class="full-bg-img"><div class="mask flex-center" style="background-color:rgba(0,0,0,.3)"><div class="container page-header text-center fade-in-up"><span class="h2" id="subtitle"></span><div class="mt-3"><span class="post-meta mr-2"><i class="iconfont icon-author" aria-hidden="true"></i> Defectink</span><span class="post-meta"><i class="iconfont icon-date-fill" aria-hidden="true"></i> <time datetime="2020-08-22 18:37" pubdate>2020年8月22日 晚上</time></span></div><div class="mt-1"><span class="post-meta mr-2"><i class="iconfont icon-chart"></i> 2k 字</span><span class="post-meta mr-2"><i class="iconfont icon-clock-fill"></i> 26 分钟</span></div></div></div></div></div></header><main><div class="container-fluid"><div class="row"><div class="d-none d-lg-block col-lg-2"></div><div class="col-lg-8 nopadding-md"><div class="container nopadding-md" id="board-ctn"><div class="py-5" id="board"><article class="post-content mx-auto" id="post"><h1 style="display:none">入坑IRC</h1><p class="note note-info">本文最后水于2020年11月2日 凌晨</p><div class="markdown-body" id="post-body"><h2 id="IRC"><a href="#IRC" class="headerlink" title="IRC"></a>IRC</h2><p>IRC的全称为Internet Relay Chat是一种应用层的协议。主要用于聊天是早期互联网中主流的聊天工具在今天依然也有不少人活跃。要使用它需要使用客户端来连接到服务器。</p><h2 id="IRC的组成"><a href="#IRC的组成" class="headerlink" title="IRC的组成"></a>IRC的组成</h2><h3 id="服务器"><a href="#服务器" class="headerlink" title="服务器"></a>服务器</h3><p>IRC是一个分布式的C/S架构。通过连接到一个服务器就可以访问其连接的其他服务器上的频道。目前常见的有<code>irc.freenode.net</code></p><h3 id="频道"><a href="#频道" class="headerlink" title="频道"></a>频道</h3><p>频道存在于一个IRC服务器上。一个频道类似于一个聊天室频道名称必须以#符号开始,例如#irchelp。</p><h3 id="客户端"><a href="#客户端" class="headerlink" title="客户端"></a>客户端</h3><p>客户端用于连接至服务器,目前有很多种基于字符/GUI的跨平台软件。我用的是HexChat一款基于GUI的软件。</p><h2 id="使用"><a href="#使用" class="headerlink" title="使用"></a>使用</h2><p>简单的了解了IRC是一款用于聊天的应用协议之后就是开始使用了。既然是基于C/S架构的那么首先是准备好自己的客户端。我挑了一个常见的GUI客户端HexChat。</p><h3 id="昵称注册"><a href="#昵称注册" class="headerlink" title="昵称注册"></a>昵称注册</h3><p>IRC并不像现代的聊天软件一样需要先注册账号才能使用。它可以输入一个昵称后就进入服务器的频道内与人聊天。而昵称任然是需要唯一的所以想要使用自己的昵称而不被别人占用就需要注册昵称。类似于注册账号基于邮箱与密码。</p><p>注册过程很简单,首先需要在聊天窗口中输入注册的命令:</p><pre><code class="hljs cpp">/msg nickserv <span class="hljs-keyword">register</span> password email</code></pre><p>因为是在聊天框里输入命令,所以一定要注意命令格式,否则一不小心可能就会将明文的密码发到频道里。在注册昵称时推荐不加入任何频道,这样就不会不小心发出去了。</p><p>输入注册命令后就会收到认证的邮件邮件大概是这样的freenode</p><p><img src="../images/%E5%85%A5%E5%9D%91IRC/2020-08-22-11-55-07.webp" srcset="/images/img/loading.gif"></p><p>将邮件里的内容再输入一遍就注册完成了。</p><pre><code class="hljs markdown">/msg NickServ VERIFY REGISTER Defectink hr<span class="hljs-strong">****</span><span class="hljs-strong">****</span><span class="hljs-emphasis">*</span></code></pre><h3 id="认证"><a href="#认证" class="headerlink" title="认证"></a>认证</h3><p>当注册昵称过后,下次再使用这个昵称登录的时候就需要认证了。使用同样的<code>/msg</code>来进行认证:</p><pre><code class="hljs jboss-cli"><span class="hljs-string">/msg</span> nickserv identify password</code></pre><p>另一种说明身份的方法是设置服务器密码为您注册时提供的密码。</p><p>还可以对昵称设置进行保护即在登录认证时必须在30秒内向服务器表明身份否则就强制改为其他昵称并在一段时间内禁止此人使用此昵称即便是在说明身份后。在任意窗口中键入<code>/msg nickserv set enforce on</code>。如果你登陆时在30秒内未能表明身份且被改为其他名字请在改回原有名称前输入<code>/msg nickserv release username password</code>以解除。</p><h3 id="SASL"><a href="#SASL" class="headerlink" title="SASL"></a>SASL</h3><p>不少 IRC 客户端都支持使用 SASL 自动登录。只需找到相应的选项,在 SASL 用户名密码部分分别填入自己的昵称和NickServ密码就可以获得自动登录的效果。</p><p>不同的客户端有不同的设置方法文档也很多。这是对于HexCaht的</p><ol><li>Open the Network List (Ctrl + S)</li><li>The freenode network may already exist; find it in the list then click on Edit</li><li>In the <code>User name</code> field, enter your primary nick</li><li>Select <code>SASL (username + password)</code> for the <code>Login method</code> field</li><li>In the <code>Password</code> field, enter your NickServ password</li></ol><p><img src="../images/%E5%85%A5%E5%9D%91IRC/2020-08-22-15-28-26.webp" srcset="/images/img/loading.gif"></p><h2 id="频道-1"><a href="#频道-1" class="headerlink" title="频道"></a>频道</h2><p>以#号开头的字符串就是频道名,可以使用命令<code>/join</code>来加入频道。</p><p><code>/join #archlinux-cn</code></p><h3 id="建立频道"><a href="#建立频道" class="headerlink" title="建立频道"></a>建立频道</h3><p>创建频道同样也是使用<code>/join</code>来创建,如果创建的频道已经存在,则直接进入。建立频道可用于与自己的小伙伴聊天,也可以用于熟悉频道命令。</p><p>如果频道成功建立,那么我们就会成为频道的管理员。因为频道名和昵称一样需要具有唯一性,所以频道也需要注册。</p><p><code>/msg ChanServ REGISTER &lt;#channel&gt; &lt;passwd&gt;</code></p><p>一般频道都通过ChanServ这个机器人管理.</p><p><code>/msg ChanServ SET &lt;频道名&gt; GUARD ON</code></p><p>在已注册的频道上委任管理员OP</p><p><code>/msg ChanServ op #xfy Defectink</code></p><p>设置频道简介</p><p><code>/topic &lt;your_topic&gt;</code></p><h3 id="频道模式"><a href="#频道模式" class="headerlink" title="频道模式"></a>频道模式</h3><p>频道的模式用于设置频道的一些功能与限制。通过<code>/mode #channel</code>来列出频道模式,通过<code>/msg chanserv info #channel</code>来列出有MLOCK的模式。</p><p>使用<code>/mode #channel +(mode)</code>或者<code>/mode #channel -(mode)</code>来增加或删除模式。带有MLOCK的模式需要使用<code>/msg ChanServ SET #foo MLOCK +c</code></p><p>一些常用的模式:</p><table><thead><tr><th align="left">Mode(name)</th><th>Description</th></tr></thead><tbody><tr><td align="left">b (channel ban)</td><td>Prevent users from joining or speaking. Sending /mode #channel +b alone will return the current ban list. While on the channel, banned users will be unable to send to the channel or change nick. The most common form for a ban is +b nick!user@host. The wildcards * and ? are allowed, matching zero-or-more and exactly-one characters, respectively. Bans set on IP addresses will apply even if the affected user joins with a resolved or cloaked hostname. CIDR notation is supported in bans. The second form can be used for bans based on user data. You can append $#channel to any ban to redirect banned users to another channel.</td></tr><tr><td align="left">q (quiet)</td><td>Works like +b (ban user), but allows matching users to join the channel.</td></tr><tr><td align="left">c (colour filter)</td><td>Strip colour and formatting codes from channel messages.</td></tr><tr><td align="left">C (block CTCPs)</td><td>Blocks CTCP commands (other than /me actions).</td></tr><tr><td align="left">i (invite only)</td><td>Users are unable to join invite-only channels unless they are invited or match a +I entry.</td></tr><tr><td align="left">k (password)</td><td>To enter the channel, you must specify the password on your /join command. Keep in mind that modes locked with ChanServs MLOCK command can be seen by anyone recreating the channel; this includes keys. Also keep in mind that users being on the channel when +k is set will see the key as well.</td></tr><tr><td align="left">n (prevent external send)</td><td>Users outside the channel may not send messages to it. Keep in mind that bans and quiets will not apply to external users.</td></tr><tr><td align="left">l (join limit)</td><td>Takes a positive integer parameter. Limits the number of users who can be in the channel at the same time.</td></tr><tr><td align="left">m (moderated)</td><td>Only opped and voiced users can send to the channel. This mode does not prevent users from changing nicks.</td></tr><tr><td align="left">t (ops topic)</td><td>Only channel operators may set the channel topic.</td></tr></tbody></table><h3 id="管理员"><a href="#管理员" class="headerlink" title="管理员"></a>管理员</h3><p>频道管理员称为operation channel。通常为</p><ol><li>sop (super operator) 频道的註册者,拥有操作频道所有权限,包括踢人。</li><li>aop (auto operator) 频道註册者信任的共同管理者,拥有部分权限,和第三个的差异在於,离开频道后再进入还是能拥有管理权限。</li><li>op 普通管理者可能一旦离开频道就失去op。</li></ol><h2 id="weechat"><a href="#weechat" class="headerlink" title="weechat"></a>weechat</h2><p>weechat是一款基于命令行的客户端。</p><h3 id="添加服务器"><a href="#添加服务器" class="headerlink" title="添加服务器"></a>添加服务器</h3><pre><code class="hljs routeros"><span class="hljs-built_in">/server </span><span class="hljs-builtin-name">add</span> freenode chat.freenode.net</code></pre><h3 id="服务器选项"><a href="#服务器选项" class="headerlink" title="服务器选项"></a>服务器选项</h3><p>weechat的一些选项加油默认值昵称默认为终端用户名。</p><pre><code class="hljs stylus">/set irc<span class="hljs-selector-class">.server</span><span class="hljs-selector-class">.freenode</span><span class="hljs-selector-class">.nicks</span> <span class="hljs-string">&quot;mynick,mynick2,mynick3,mynick4,mynick5&quot;</span></code></pre><p>设置用户和真实姓名:</p><pre><code class="hljs stylus">/set irc<span class="hljs-selector-class">.server</span><span class="hljs-selector-class">.freenode</span><span class="hljs-selector-class">.username</span> <span class="hljs-string">&quot;My user name&quot;</span>
/set irc<span class="hljs-selector-class">.server</span><span class="hljs-selector-class">.freenode</span><span class="hljs-selector-class">.realname</span> <span class="hljs-string">&quot;My real name&quot;</span></code></pre><p>在启动时启用自动连接到服务器:</p><pre><code class="hljs applescript">/<span class="hljs-keyword">set</span> irc.server.freenode.autoconnect <span class="hljs-keyword">on</span></code></pre><p>使用SSL连接</p><pre><code class="hljs stylus">/set irc<span class="hljs-selector-class">.server</span><span class="hljs-selector-class">.freenode</span><span class="hljs-selector-class">.addresses</span> <span class="hljs-string">&quot;chat.freenode.net/7000&quot;</span>
/set irc<span class="hljs-selector-class">.server</span><span class="hljs-selector-class">.freenode</span><span class="hljs-selector-class">.ssl</span> on</code></pre><p>SASL</p><pre><code class="hljs stylus">/set irc<span class="hljs-selector-class">.server</span><span class="hljs-selector-class">.freenode</span><span class="hljs-selector-class">.sasl_username</span> <span class="hljs-string">&quot;mynick&quot;</span>
/set irc<span class="hljs-selector-class">.server</span><span class="hljs-selector-class">.freenode</span><span class="hljs-selector-class">.sasl_password</span> <span class="hljs-string">&quot;xxxxxxx&quot;</span></code></pre><p>nickserv</p><pre><code class="hljs stylus">/set irc<span class="hljs-selector-class">.server</span><span class="hljs-selector-class">.freenode</span><span class="hljs-selector-class">.command</span> <span class="hljs-string">&quot;/msg nickserv identify xxxxxxx&quot;</span></code></pre><p>autojoin</p><pre><code class="hljs stylus">/set irc<span class="hljs-selector-class">.server</span><span class="hljs-selector-class">.freenode</span><span class="hljs-selector-class">.autojoin</span> <span class="hljs-string">&quot;#channel1,#channel2&quot;</span></code></pre><h3 id="连接服务器"><a href="#连接服务器" class="headerlink" title="连接服务器"></a>连接服务器</h3><pre><code class="hljs arduino">/<span class="hljs-built_in">connect</span> freenode</code></pre><pre><code class="hljs arduino">/<span class="hljs-built_in">disconnect</span> freenode</code></pre><h3 id="窗口-缓冲区管理"><a href="#窗口-缓冲区管理" class="headerlink" title="窗口/缓冲区管理"></a>窗口/缓冲区管理</h3><pre><code class="hljs jboss-cli"><span class="hljs-string">/buffer</span>
<span class="hljs-string">/window</span></code></pre><p>例如将屏幕垂直分割为一个小窗口1/3宽度和一个大窗口2/3使用命令</p><pre><code class="hljs angelscript">/window splitv <span class="hljs-number">33</span></code></pre><p>删除分割:</p><pre><code class="hljs sas">/<span class="hljs-meta">window</span> <span class="hljs-meta">merge</span></code></pre><h2 id="一些常用的命令"><a href="#一些常用的命令" class="headerlink" title="一些常用的命令"></a>一些常用的命令</h2><table><thead><tr><th align="left">示例命令</th><th align="left">备注</th></tr></thead><tbody><tr><td align="left"><code>/server irc.freenode.net</code></td><td align="left">连接到 <code>freenode</code> 网络</td></tr><tr><td align="left"><code>/nick myName</code></td><td align="left">更换昵称为 myName</td></tr><tr><td align="left"><code>/msg nickserv register password me@163.com</code></td><td align="left">注册昵称, 密码为 password, 邮箱为 <a href="mailto:&#109;&#x65;&#64;&#x31;&#x36;&#x33;&#x2e;&#99;&#x6f;&#x6d;">&#109;&#x65;&#64;&#x31;&#x36;&#x33;&#x2e;&#99;&#x6f;&#x6d;</a></td></tr><tr><td align="left"><code>/join #java</code></td><td align="left">进入 #java 聊天室</td></tr><tr><td align="left"><code>/exit</code></td><td align="left">退出账户</td></tr><tr><td align="left"><code>/nick zhijia</code></td><td align="left">登陆或切换用户名</td></tr><tr><td align="left"><code>/msg NickServ identify &lt;password&gt;</code></td><td align="left">切换用户后登陆验证用户身份</td></tr><tr><td align="left"><code>/help</code></td><td align="left">帮助</td></tr><tr><td align="left"><code>/quit</code></td><td align="left">退出服务器</td></tr><tr><td align="left"><code>/whois 昵称</code></td><td align="left">查看某人的资料</td></tr><tr><td align="left"><code>/part</code></td><td align="left">离开频道</td></tr><tr><td align="left"><code>/query 昵称</code></td><td align="left">和某人开小窗口私聊</td></tr><tr><td align="left"><code>/away 原因</code></td><td align="left">离开</td></tr><tr><td align="left"><code>/away</code></td><td align="left">取消离开。当您不写原因时,就会取消离开状态</td></tr></tbody></table><h2 id="坑中"><a href="#坑中" class="headerlink" title="坑中"></a>坑中</h2><p>在今天日异月新的IM中IRC肯定是较小众。虽然几乎就是上个世纪流行的沟通方式了不过在今天回味一下也很棒如果有人在一起聊天的话就更棒了。</p><p>freenode有个web版入门体验很好。<a target="_blank" rel="noopener" href="https://webchat.freenode.net/">webchat</a></p><p>另外,#xfy on freenode.</p></div><hr><div><div class="post-metas mb-3"><div class="post-meta mr-3"><i class="iconfont icon-category"></i> <a class="hover-with-bg" href="/categories/%E6%97%A5%E5%B8%B8/">日常</a></div><div class="post-meta"><i class="iconfont icon-tags"></i> <a class="hover-with-bg" href="/tags/Linux/">Linux</a> <a class="hover-with-bg" href="/tags/tools/">tools</a> <a class="hover-with-bg" href="/tags/IRC/">IRC</a></div></div><p class="note note-warning"><a target="_blank" href="https://zh.wikipedia.org/wiki/Wikipedia:CC_BY-SA_3.0%E5%8D%8F%E8%AE%AE%E6%96%87%E6%9C%AC" rel="nofollow noopener noopener">CC BY-SA 3.0❤</a></p><div class="post-prevnext row"><article class="post-prev col-6"><a href="/defect/get-starting-for-node-js.html"><i class="iconfont icon-arrowleft"></i> <span class="hidden-mobile">Node.js之旅</span> <span class="visible-mobile">上一篇</span></a></article><article class="post-next col-6"><a href="/defect/function-of-javascript.html"><span class="hidden-mobile">JavaScript的函数</span> <span class="visible-mobile">下一篇</span><i class="iconfont icon-arrowright"></i></a></article></div></div><article class="comments" id="comments"><div id="vcomments"></div><script type="text/javascript">function loadValine(){addScript("https://cdn.defectink.com/static/valine/1.4.14/Valine.min.js",function(){new Valine({el:"#vcomments",app_id:"dD9t7mcIBVzJWag5ez6GPy2v-MdYXbMMI",app_key:"bWG6pmKsEscrH4JjrpNNAAy6",placeholder:"嘤嘤嘤???",path:window.location.pathname,avatar:"retro",meta:["nick","mail","link"],pageSize:"10",lang:"zh-CN",highlight:!0,recordIP:!1,serverURLs:""})})}waitElementVisible("vcomments",loadValine)</script><noscript>Please enable JavaScript to view the <a target="_blank" href="https://valine.js.org" rel="nofollow noopener noopener">comments powered by Valine.</a></noscript></article></article></div></div></div><div class="d-none d-lg-block col-lg-2 toc-container" id="toc-ctn"><div id="toc"><p class="toc-header"><i class="iconfont icon-list"></i>&nbsp;目录</p><div id="tocbot"></div></div></div></div></div></main><a id="scroll-top-button" href="#" role="button"><i class="iconfont icon-arrowup" aria-hidden="true"></i></a><div class="modal fade" id="modalSearch" tabindex="-1" role="dialog" aria-labelledby="ModalLabel" aria-hidden="true"><div class="modal-dialog modal-dialog-scrollable modal-lg" role="document"><div class="modal-content"><div class="modal-header text-center"><h4 class="modal-title w-100 font-weight-bold">搜索</h4><button type="button" id="local-search-close" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button></div><div class="modal-body mx-3"><div class="md-form mb-5"><input type="text" id="local-search-input" class="form-control validate"> <label data-error="x" data-success="v" for="local-search-input">关键词</label></div><div class="list-group" id="local-search-result"></div></div></div></div></div><footer class="text-center mt-5 py-3"><div class="footer-content"><a href="https://hexo.io" target="_blank" rel="nofollow noopener"><span>Hexo</span></a><i class="iconfont icon-love"></i> <a href="https://github.com/fluid-dev/hexo-theme-fluid" target="_blank" rel="nofollow noopener"><span>Fluid</span></a></div><div class="beian"><a href="http://beian.miit.gov.cn/" target="_blank" rel="nofollow noopener">皖ICP备17017808号</a></div></footer><script src="https://cdn.defectink.com/static/jquery/3.4.1/jquery.min.js"></script><script src="https://cdn.defectink.com/static/twitter-bootstrap/4.5.3/js/bootstrap.min.js"></script><script src="/js/debouncer.js"></script><script src="/js/main.js"></script><script src="/js/lazyload.js"></script><script defer="defer" src="https://cdn.defectink.com/static/clipboard.js/2.0.6/clipboard.min.js"></script><script src="/js/clipboard-use.js"></script><script src="/js/xfy.js"></script><script src="https://cdn.defectink.com/static/tocbot/4.11.1/tocbot.min.js"></script><script>$(document).ready(function(){var t=$("#board-ctn").offset().top;tocbot.init({tocSelector:"#tocbot",contentSelector:"#post-body",headingSelector:"h1,h2,h3,h4,h5,h6",linkClass:"tocbot-link",activeLinkClass:"tocbot-active-link",listClass:"tocbot-list",isCollapsedClass:"tocbot-is-collapsed",collapsibleClass:"tocbot-is-collapsible",collapseDepth:3,scrollSmooth:!0,headingsOffset:-t}),0<$(".toc-list-item").length&&$("#toc").css("visibility","visible")})</script><script src="https://cdn.defectink.com/static/typed.js/2.0.11/typed.min.js"></script><script>var typed=new Typed("#subtitle",{strings:[" ","入坑IRC&nbsp;"],cursorChar:"❤",typeSpeed:70,loop:!1});typed.stop(),$(document).ready(function(){$(".typed-cursor").addClass("h2"),typed.start()})</script><script src="/js/local-search.js"></script><script>var path="/xml/local-search.xml",inputArea=document.querySelector("#local-search-input");inputArea.onclick=function(){searchFunc(path,"local-search-input","local-search-result"),this.onclick=null}</script><script src="https://cdn.defectink.com/static/fancybox/3.5.7/jquery.fancybox.min.js"></script><link rel="stylesheet" href="https://cdn.defectink.com/static/fancybox/3.5.7/jquery.fancybox.min.css"><script>$("#post img:not(.no-zoom img, img[no-zoom]), img[zoom]").each(function(){var t=document.createElement("a");$(t).attr("data-fancybox","images"),$(t).attr("href",$(this).attr("src")),$(this).wrap(t)})</script><script src="https://cdn.defectink.com/static/mermaid/8.5.0/mermaid.min.js"></script><script>window.mermaid&&mermaid.initialize({theme:"default"})</script></body></html>