<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<rss version="2.0" 
  xmlns:content="http://purl.org/rss/1.0/modules/content/" 
  xmlns:dc="http://purl.org/dc/elements/1.1/" 
  xmlns:atom="http://www.w3.org/2005/Atom" 
  xmlns:sy="http://purl.org/rss/1.0/modules/syndication/" 
  xmlns:media="http://search.yahoo.com/mrss/">
  <channel>
    <title>Eval-EXEC</title>
    <link>https://evex.one/</link>
    <description>Recent content on Eval-EXEC</description>
    <generator>Hugo -- gohugo.io</generator>
    <language>en</language>
    <managingEditor>execvy@gmail.com (EXEC)</managingEditor>
    <webMaster>execvy@gmail.com (EXEC)</webMaster>
    <copyright>©2026</copyright>
    <lastBuildDate>Sat, 18 Oct 2025 14:38:54 +0800</lastBuildDate>
    
        <atom:link href="https://evex.one/index.xml" rel="self" type="application/rss+xml" />
    
      
      
      
        
      
        
      
        
      
        
      
        
      
        
      
        
      
        
      
        
      
        
      

      
      <item>
        <title>在 NixOS 里享受 linux-cachyos 内核</title>
        <link>https://evex.one/posts/linux/cathyos/</link>
        <pubDate>Sat, 18 Oct 2025 14:38:54 +0800</pubDate>
        <author>execvy@gmail.com (EXEC)</author>
        <atom:modified>Sat, 18 Oct 2025 14:38:54 +0800</atom:modified>
        <guid>https://evex.one/posts/linux/cathyos/</guid>
        <description>&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;❯ uname -a
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Linux Mufasa 6.17.3-cachyos &lt;span class=&#34;c1&#34;&gt;#1-NixOS SMP PREEMPT_DYNAMIC Wed Oct 15 10:04:23 UTC 2025 x86_64 GNU/Linux&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;最近我在 NixOS 里使用了 &lt;a href=&#34;https://github.com/chaotic-cx/nyx&#34;&gt;https://github.com/chaotic-cx/nyx&lt;/a&gt;，顺利切换到了 linux-cachyos 内核。这样做是为了享受 linux-cachyos 提供的 BORE 调度器。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;❯ sudo dmesg &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; grep -i &lt;span class=&#34;s2&#34;&gt;&amp;#34;bore\|sched\|scheduler&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;o&#34;&gt;[&lt;/span&gt;    0.301841&lt;span class=&#34;o&#34;&gt;]&lt;/span&gt; BORE CPU Scheduler modification 6.5.2 by Masahito Suzuki
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;o&#34;&gt;[&lt;/span&gt;    0.301914&lt;span class=&#34;o&#34;&gt;]&lt;/span&gt; rcu: RCU calculated value of scheduler-enlistment delay is &lt;span class=&#34;m&#34;&gt;50&lt;/span&gt; jiffies.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;o&#34;&gt;[&lt;/span&gt;    1.138316&lt;span class=&#34;o&#34;&gt;]&lt;/span&gt; io scheduler mq-deadline registered
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;o&#34;&gt;[&lt;/span&gt;    1.138320&lt;span class=&#34;o&#34;&gt;]&lt;/span&gt; io scheduler kyber registered
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;o&#34;&gt;[&lt;/span&gt;    1.138322&lt;span class=&#34;o&#34;&gt;]&lt;/span&gt; Adaptive Deadline I/O Scheduler 3.1.6 by Masahito Suzuki
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;o&#34;&gt;[&lt;/span&gt;    1.138324&lt;span class=&#34;o&#34;&gt;]&lt;/span&gt; io scheduler adios registered
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;o&#34;&gt;[&lt;/span&gt;    1.138333&lt;span class=&#34;o&#34;&gt;]&lt;/span&gt; io scheduler bfq registered
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;o&#34;&gt;[&lt;/span&gt;    1.247483&lt;span class=&#34;o&#34;&gt;]&lt;/span&gt; sched_clock: Marking stable &lt;span class=&#34;o&#34;&gt;(&lt;/span&gt;1240100139, 6557985&lt;span class=&#34;o&#34;&gt;)&lt;/span&gt;-&amp;gt;&lt;span class=&#34;o&#34;&gt;(&lt;/span&gt;1295860107, -49201983&lt;span class=&#34;o&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;o&#34;&gt;[&lt;/span&gt;    6.595751&lt;span class=&#34;o&#34;&gt;]&lt;/span&gt; sched_ext: BPF scheduler &lt;span class=&#34;s2&#34;&gt;&amp;#34;lavd_1.0.16_x86_64_unknown_linux_gnu&amp;#34;&lt;/span&gt; enabled
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;BORE（Burst-Oriented Response Enhancer）是对 EEVDF/CFS 等公平调度算法的一种扩展调度器实现，其设计目标是在混合负载场景中提升交互性和系统响应性，同时尽量保持公平性。&lt;/p&gt;</description>
        
        <dc:creator>EXEC</dc:creator>
        <media:content url="https://evex.one/https://wiki.cachyos.org/_astro/logo.DVTdAJi6.svg" medium="image"><media:title type="html">featured image</media:title></media:content>
        
        
        
          
            
              <category>linux</category>
            
          
            
              <category>cathyos</category>
            
          
        
        
          
            
              <category>linux</category>
            
          
        
        
          
            
              <category>linux</category>
            
          
        
      </item>
      
      <item>
        <title>Today I Learned/Thought/Found</title>
        <link>https://evex.one/til/til/</link>
        <pubDate>Sat, 28 Jun 2025 16:15:50 +0800</pubDate>
        <author>execvy@gmail.com (EXEC)</author>
        <atom:modified>Sat, 28 Jun 2025 16:15:50 +0800</atom:modified>
        <guid>https://evex.one/til/til/</guid>
        <description>&lt;p&gt;记录每天所&lt;strong&gt;学到的&lt;/strong&gt;、&lt;strong&gt;想到的&lt;/strong&gt;和&lt;strong&gt;遇到的&lt;/strong&gt;：&lt;/p&gt;
&lt;h2 id=&#34;how-core-git-developers-configure-git&#34;&gt;How Core Git Developers Configure Git&lt;/h2&gt;
&lt;p&gt;&lt;a href=&#34;https://blog.gitbutler.com/how-git-core-devs-configure-git&#34;&gt;https://blog.gitbutler.com/how-git-core-devs-configure-git&lt;/a&gt;&lt;/p&gt;
&lt;h2 id=&#34;ld_debug&#34;&gt;LD_DEBUG&lt;/h2&gt;
&lt;p&gt;&lt;a href=&#34;https://bnikolic.co.uk/blog/linux-ld-debug.html&#34;&gt;https://bnikolic.co.uk/blog/linux-ld-debug.html&lt;/a&gt;&lt;/p&gt;
&lt;h2 id=&#34;loginctl-enable-linger&#34;&gt;loginctl enable-linger&lt;/h2&gt;
&lt;p&gt;我今天发现，执行 &lt;code&gt;ssh remoe_host &amp;quot;xxx.sh&amp;quot;（xxx.sh 里有 nohup ./cmd &amp;amp;&amp;gt; /dev/null &amp;amp;）&lt;/code&gt;， &lt;code&gt;./cmd&lt;/code&gt; 竟然在 &lt;code&gt;ssh&lt;/code&gt; 命令执行结束后停止。研究了一下，在我的环境下，这种行为和这两个东西有关：&lt;/p&gt;</description>
        
        <dc:creator>EXEC</dc:creator>
        <media:content url="https://evex.one/til.png" medium="image"><media:title type="html">featured image</media:title></media:content>
        
        
        
          
            
              <category>TIL</category>
            
          
        
        
          
            
              <category>TIL</category>
            
          
        
        
          
            
              <category>TIL</category>
            
          
        
      </item>
      
      <item>
        <title>咖啡馆的体验，我的随身装备与软件工具分享：ra-multiplex, sunshine, moonlight, watchman</title>
        <link>https://evex.one/posts/linux/linux-remote-workflows/</link>
        <pubDate>Fri, 27 Dec 2024 20:03:40 +0800</pubDate>
        <author>execvy@gmail.com (EXEC)</author>
        <atom:modified>Fri, 27 Dec 2024 20:03:40 +0800</atom:modified>
        <guid>https://evex.one/posts/linux/linux-remote-workflows/</guid>
        <description>&lt;p&gt;&lt;a href=&#34;https://www.flaticon.com/free-icons/food-and-restaurant&#34; title=&#34;food and restaurant icons&#34;&gt;The icon is created by Febrian Hidayat&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;最近，我常常带着笔记本去小区附近的咖啡店工作。人类是群居动物，我一个人宅在家太久了，不和人说话，难免会感到压抑，而且一天三顿外卖的生活对健康也不友好。在咖啡店工作，不仅能换个环境，还可以和店员聊聊天（那家咖啡店的店员有程序员，有做金融的，有互联创业公司合伙人，我们也有很多共同话题可以聊）。午饭和晚饭也能顺便去附近餐厅解决，比点外卖健康多了。&lt;/p&gt;</description>
        
        <dc:creator>EXEC</dc:creator>
        <media:content url="https://evex.one//images/breakfast.png" medium="image"><media:title type="html">featured image</media:title></media:content>
        
        
        
          
            
          
        
        
          
            
          
        
        
          
            
          
        
      </item>
      
      <item>
        <title>近期的生活日记🍂北方的秋天🍂 </title>
        <link>https://evex.one/posts/life/2024-09-07/</link>
        <pubDate>Fri, 06 Sep 2024 23:18:01 +0800</pubDate>
        <author>execvy@gmail.com (EXEC)</author>
        <atom:modified>Fri, 06 Sep 2024 23:18:01 +0800</atom:modified>
        <guid>https://evex.one/posts/life/2024-09-07/</guid>
        <description>&lt;p&gt;&lt;a href=&#34;https://www.flaticon.com/free-icons/autumn&#34; title=&#34;autumn icons&#34;&gt;Autumn icons created by justicon - Flaticon&lt;/a&gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;自古逢秋悲寂寥，我言秋日胜春朝。&lt;br /&gt;
晴空一鹤排云上，便引诗情到碧霄。&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;今天是 9 月 6 日，越来越冷了，可以穿厚厚的冲锋衣了。&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;今天是 9 月 12日，我正计划着去寻找秋天的景色。&lt;/p&gt;</description>
        
        <dc:creator>EXEC</dc:creator>
        <media:content url="https://evex.one//images/icons-autum-tree.png" medium="image"><media:title type="html">featured image</media:title></media:content>
        
        
        
          
            
          
        
        
          
            
          
        
        
          
            
          
        
      </item>
      
      <item>
        <title>记录第一次给 GNU/Emacs 上游贡献代码的经历</title>
        <link>https://evex.one/posts/emacs/emacs-contribution/</link>
        <pubDate>Thu, 04 Jul 2024 12:12:40 +0800</pubDate>
        <author>execvy@gmail.com (EXEC)</author>
        <atom:modified>Thu, 04 Jul 2024 12:12:40 +0800</atom:modified>
        <guid>https://evex.one/posts/emacs/emacs-contribution/</guid>
        <description>&lt;p&gt;Recently, I noticed that when I open a large number of buffers in Emacs (for example, all 1000+ files in a Rust project), switching between tabs using &lt;code&gt;tab-line&lt;/code&gt; becomes noticeably sluggish. I suspected a performance issue somewhere.&lt;/p&gt;
&lt;p&gt;After conducting a thorough investigation using &lt;code&gt;(profiler-start)&lt;/code&gt; and &lt;code&gt;(profiler-report)&lt;/code&gt;, I obtained the following CPU usage statistics:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;3344  84% - redisplay_internal (C function)
2665  67%  - eval
2608  66%   - tab-line-format
2607  66%    - tab-line-tabs-fixed-window-buffers
2520  63%     - #&amp;lt;byte-code-function 337&amp;gt;
2507  63%      - seq-position
2489  63%       - seq-do
2485  63%        - mapc
2130  54%         - #&amp;lt;byte-code-function 3A4&amp;gt;
 623  15%            equal
   2   0%            throw
  12   0%         make-closure
  84   2%     + tab-line-tabs-window-buffers
   1   0%    + tab-line-cache-key-default
  48   1%   + mode--line-format-right-align
   5   0%   + breadcrumb--header-line
   2   0%   + if
   1   0%     unless
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Upon identifying the corresponding code, it became clear that the performance bottleneck was within the &lt;code&gt;tab-line-tabs-fixed-window-buffers&lt;/code&gt; function:&lt;/p&gt;</description>
        
        <dc:creator>EXEC</dc:creator>
        <media:content url="https://evex.one/https://www.gnu.org/graphics/meditate-tiny.jpg" medium="image"><media:title type="html">featured image</media:title></media:content>
        
        
        
          
            
              <category>emacs</category>
            
          
        
        
          
            
              <category>emacs</category>
            
          
        
        
          
            
              <category>emacs</category>
            
          
        
      </item>
      
      <item>
        <title>Enhance Emacs rg.el with which-function support</title>
        <link>https://evex.one/posts/emacs/rg-which-function/</link>
        <pubDate>Thu, 02 May 2024 11:33:13 +0800</pubDate>
        <author>execvy@gmail.com (EXEC)</author>
        <atom:modified>Thu, 02 May 2024 11:33:13 +0800</atom:modified>
        <guid>https://evex.one/posts/emacs/rg-which-function/</guid>
        <description>&lt;p&gt;I frequently use rg.el in my daily work. While rg only displays the content of&lt;br /&gt;
the target lines, I want Emacs&amp;rsquo; rg.el to tell me what the &lt;code&gt;which-function&lt;/code&gt; is&lt;br /&gt;
for the target content after searching. Therefore, I modified &lt;code&gt;which-function&lt;/code&gt;&lt;br /&gt;
and made some hacks to rg.el.&lt;/p&gt;
&lt;p&gt;The effect is as follows:&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;./posts/emacs/rg-which-function/emacs_rg.svg&#34;&gt;&lt;/p&gt;
&lt;p&gt;The Source code:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;12
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;13
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;14
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;15
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;16
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;17
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;18
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;19
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;20
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;21
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;22
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;23
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;24
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;25
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;26
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;27
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;28
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;29
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;30
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;31
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;32
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;33
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;34
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;35
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;36
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;37
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;38
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;39
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;40
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;41
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;42
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;43
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;44
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;45
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;46
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;47
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;48
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;49
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;50
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;51
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;52
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;53
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;54
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;55
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;56
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;57
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;58
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;59
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;60
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;61
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;62
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;63
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;64
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;65
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;66
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;67
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;68
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;69
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;70
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;71
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;72
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;73
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;74
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-elisp&#34; data-lang=&#34;elisp&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;defun&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;shorten-string&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;str&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;	&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;&amp;gt;&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;length&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;str&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;30&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;		&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;concat&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;substring&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;str&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;15&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;…&amp;#34;&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;substring&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;str&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;-14&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;	  &lt;span class=&#34;nv&#34;&gt;str&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;defun&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;exec/rg-hack&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;	&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;interactive&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;	&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;let*&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;((&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;msg&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;get-text-property&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;point&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;ss&#34;&gt;&amp;#39;compilation-message&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;	  &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;msg&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;		  &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;let*&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;((&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;loc&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;compilation--message-&amp;gt;loc&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;msg&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                 &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;file&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;caar&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;compilation--loc-&amp;gt;file-struct&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;loc&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                 &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;line&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;compilation--loc-&amp;gt;line&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;loc&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                 &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;col&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;compilation--loc-&amp;gt;col&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;loc&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                 &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;function_name&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;				  &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;exec/lsp-which-function&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;file&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;line&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;col&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                 &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;text&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;				  &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;format&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;%-30s │&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;						  &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;shorten-string&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;or&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;function_name&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;))))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                 &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;ov&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;				  &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;make-overlay&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;line-beginning-position&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;								&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;1+&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;line-beginning-position&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;								&lt;span class=&#34;no&#34;&gt;nil&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;								&lt;span class=&#34;no&#34;&gt;t&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;			&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;overlay-put&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;             &lt;span class=&#34;nv&#34;&gt;ov&lt;/span&gt; &lt;span class=&#34;ss&#34;&gt;&amp;#39;before-string&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;             &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;propertize&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;text&lt;/span&gt; &lt;span class=&#34;ss&#34;&gt;&amp;#39;face&lt;/span&gt; &lt;span class=&#34;ss&#34;&gt;&amp;#39;font-lock-property-name-face&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;			&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;overlay-put&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;ov&lt;/span&gt; &lt;span class=&#34;ss&#34;&gt;&amp;#39;evaporate&lt;/span&gt; &lt;span class=&#34;no&#34;&gt;t&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)))))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;defun&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;exec/rg-hint-all&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;kp&#34;&gt;&amp;amp;rest&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;args&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;	&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;interactive&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;	&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;sit-for&lt;/span&gt; &lt;span class=&#34;mf&#34;&gt;0.01&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;	&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;with-current-buffer&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;rg-buffer-name&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;	  &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;defvar-local&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;rg-hack-lines&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;	  &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;while&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;and&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;not&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;eobp&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;))&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;&amp;lt;&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;rg-hack-lines&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;300&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;		&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;exec/rg-hack&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;		&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;forward-line&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;		&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;setq-local&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;rg-hack-lines&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;1+&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;rg-hack-lines&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;		&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;%&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;rg-hack-lines&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;10&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;			&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;sit-for&lt;/span&gt; &lt;span class=&#34;mf&#34;&gt;0.01&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;	  &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;goto-char&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;point-min&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;	&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;unless&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;exec/which-function-current-buffer-already-exist&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;	  &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;exec/which-function-last-buffer-name&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;		  &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;kill-buffer&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;find-file-noselect&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;exec/which-function-last-buffer-name&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;		&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;	  &lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;	&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;setq-local&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;exec/which-function-current-buffer-already-exist&lt;/span&gt; &lt;span class=&#34;no&#34;&gt;nil&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;	&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;setq-local&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;exec/which-function-last-buffer-name&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;	&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;defvar-local&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;exec/which-function-last-buffer-name&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;defvar-local&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;exec/which-function-current-buffer-already-exist&lt;/span&gt; &lt;span class=&#34;no&#34;&gt;nil&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;defun&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;exec/lsp-which-function&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;file&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;line&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;column&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;	&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;unless&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;eq&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;file&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;exec/which-function-last-buffer-name&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;	  &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;unless&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;exec/which-function-current-buffer-already-exist&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;		&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;exec/which-function-last-buffer-name&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;			&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;kill-buffer&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;find-file-noselect&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;exec/which-function-last-buffer-name&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;		  &lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;		&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;	  &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;setq-local&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;exec/which-function-current-buffer-already-exist&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;get-file-buffer&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;file&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;	  &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;setq-local&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;exec/which-function-last-buffer-name&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;file&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;	&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;let&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;((&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;buffer&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;find-file-noselect&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;file&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;	  &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;with-current-buffer&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;buffer&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;		&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;goto-line&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;line&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;		&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;move-to-column&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;column&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;		&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;which-function&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;))))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;defun&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;exec/setup-rg-hint&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;kp&#34;&gt;&amp;amp;rest&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;args&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;	&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;add-to-list&lt;/span&gt; &lt;span class=&#34;ss&#34;&gt;&amp;#39;compilation-finish-functions&lt;/span&gt; &lt;span class=&#34;ss&#34;&gt;&amp;#39;exec/rg-hint-all&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;add-hook&lt;/span&gt; &lt;span class=&#34;ss&#34;&gt;&amp;#39;rg-mode-hook&lt;/span&gt; &lt;span class=&#34;ss&#34;&gt;&amp;#39;exec/setup-rg-hint&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;</description>
        
        <dc:creator>EXEC</dc:creator>
        <media:content url="https://evex.one//images/EmacsIcon.png" medium="image"><media:title type="html">featured image</media:title></media:content>
        
        
        
          
            
              <category>Emacs</category>
            
          
        
        
          
            
              <category>Emacs</category>
            
          
        
        
          
            
              <category>Emacs</category>
            
          
        
      </item>
      
      <item>
        <title>近期的生活日记 ❄️ 北方的冬天 ❄️</title>
        <link>https://evex.one/posts/life/2023-12-07/</link>
        <pubDate>Thu, 07 Dec 2023 23:18:26 +0800</pubDate>
        <author>execvy@gmail.com (EXEC)</author>
        <atom:modified>Thu, 07 Dec 2023 23:18:26 +0800</atom:modified>
        <guid>https://evex.one/posts/life/2023-12-07/</guid>
        <description>&lt;p&gt;我好恐惧，恐惧时间的流逝，所以迫不及待的想把看到的感受到的都记录下来。&lt;/p&gt;
&lt;p&gt;于是，我记了好多好多，到现在我的 &lt;code&gt;org-journal&lt;/code&gt; 已经写下六千多行了。。。。&lt;br /&gt;
&lt;img src=&#34;../2023-12-07/dired_org_journal.png&#34;&gt;&lt;/p&gt;
&lt;p&gt;有了 Emacs 的 Org Journal，我就喜欢到处记&lt;br /&gt;
有了 2 亿像素的 Galaxy， 我就到处拍，走到哪拍到哪。&lt;/p&gt;</description>
        
        <dc:creator>EXEC</dc:creator>
        <media:content url="https://evex.one//images/icons8-diary-64.png" medium="image"><media:title type="html">featured image</media:title></media:content>
        
        
        
          
            
              <category>life</category>
            
          
        
        
          
            
              <category>life</category>
            
          
        
        
          
            
              <category>life</category>
            
          
        
      </item>
      
      <item>
        <title>Linux 下使用 xkb 将 CapsLock 键映射为 Ctrl 键, 同时将 Ctrl 键映射为 Hyper 键</title>
        <link>https://evex.one/posts/linux/xkb/</link>
        <pubDate>Sun, 26 Nov 2023 23:21:00 +0800</pubDate>
        <author>execvy@gmail.com (EXEC)</author>
        <atom:modified>Sun, 26 Nov 2023 23:21:00 +0800</atom:modified>
        <guid>https://evex.one/posts/linux/xkb/</guid>
        <description>&lt;p&gt;&amp;ldquo;将 CapsLock 键映射为 Ctrl 键, 同时将 Ctrl 键映射为 Hyper 键&amp;rdquo; 的最简单的做法是给 &lt;code&gt;XkbOptions&lt;/code&gt; 选项设置 &lt;code&gt;ctrl:hyper_capscontrol&lt;/code&gt;!&lt;br /&gt;
你可以用&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;localectl list-x11-keymap-options
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;来查看XkbOptions 所有的可选项&lt;br /&gt;
然后在这几个环境变量中查看对应的 XkbOption 的源码：&lt;/p&gt;</description>
        
        <dc:creator>EXEC</dc:creator>
        <media:content url="https://evex.one//images/keyboard.png" medium="image"><media:title type="html">featured image</media:title></media:content>
        
        
        
          
            
              <category>linux</category>
            
          
            
              <category>xkb</category>
            
          
        
        
          
            
              <category>linux</category>
            
          
        
        
          
            
              <category>linux</category>
            
          
        
      </item>
      
      <item>
        <title>SearXNG，启动！</title>
        <link>https://evex.one/posts/backend/searxng/</link>
        <pubDate>Mon, 02 Oct 2023 19:18:24 +0800</pubDate>
        <author>execvy@gmail.com (EXEC)</author>
        <atom:modified>Mon, 02 Oct 2023 19:18:24 +0800</atom:modified>
        <guid>https://evex.one/posts/backend/searxng/</guid>
        <description>&lt;p&gt;&lt;img src=&#34;https://docs.searxng.org/_static/searxng-wordmark.svg&#34;&gt;&lt;/p&gt;
&lt;p&gt;了解一下 &lt;a href=&#34;https://docs.searxng.org/index.html&#34;&gt;SearXNG&lt;/a&gt;&lt;/p&gt;
&lt;h2 id=&#34;searxng-的优点&#34;&gt;SearXNG 的优点：&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;聚合 70 个（ 甚至更多）搜索引擎的搜索结果&lt;/li&gt;
&lt;li&gt;隐私&lt;/li&gt;
&lt;li&gt;快速&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;使用-docker-启动-searxng&#34;&gt;使用 docker 启动 SearXNG。&lt;/h2&gt;
&lt;p&gt;在本地自己用 &lt;code&gt;docker&lt;/code&gt; 搭建一个 &lt;code&gt;SearXNG&lt;/code&gt; 服务非常简单：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;6
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;docker run --rm &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;se&#34;&gt;&lt;/span&gt;             -d -p 8080:8080 &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;se&#34;&gt;&lt;/span&gt;             -v &lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;${&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;PWD&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;}&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;/searxng:/etc/searxng&amp;#34;&lt;/span&gt; &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;se&#34;&gt;&lt;/span&gt;             -e &lt;span class=&#34;s2&#34;&gt;&amp;#34;BASE_URL=http://localhost:8080/&amp;#34;&lt;/span&gt; &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;se&#34;&gt;&lt;/span&gt;             -e &lt;span class=&#34;s2&#34;&gt;&amp;#34;INSTANCE_NAME=my-instance&amp;#34;&lt;/span&gt; &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;se&#34;&gt;&lt;/span&gt;             searxng/searxng
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;然后浏览器访问 http://localhost:8080 就能看到 &lt;code&gt;SearXNG&lt;/code&gt; 的搜索界面了。&lt;/p&gt;</description>
        
        <dc:creator>EXEC</dc:creator>
        <media:content url="https://evex.one/https://docs.searxng.org/_static/searxng-wordmark.svg" medium="image"><media:title type="html">featured image</media:title></media:content>
        
        
        
          
            
              <category>searxng</category>
            
          
        
        
          
            
              <category>tech</category>
            
          
        
        
          
            
              <category>privacy</category>
            
          
        
      </item>
      
      <item>
        <title>入手了一款分体式红轴机械键盘</title>
        <link>https://evex.one/posts/fun/mistel_keyboard/</link>
        <pubDate>Fri, 22 Sep 2023 17:20:31 +0800</pubDate>
        <author>execvy@gmail.com (EXEC)</author>
        <atom:modified>Fri, 22 Sep 2023 17:20:31 +0800</atom:modified>
        <guid>https://evex.one/posts/fun/mistel_keyboard/</guid>
        <description>&lt;p&gt;我以前一直使用罗技的一款全尺寸红轴机械键盘。首先觉得长度太长了，小键盘区域我几乎不用，而且我觉得使用这款键盘时，手腕的肌肉略微有点紧张。&lt;/p&gt;
&lt;p&gt;所以想着，要是有那种分成两半的键盘就好了，这样我就能打开肩膀，伸展双臂了。&lt;/p&gt;</description>
        
        <dc:creator>EXEC</dc:creator>
        <media:content url="https://evex.one//images/Microsoft-Fluentui-Emoji-3d-Keyboard-3d.512.png" medium="image"><media:title type="html">featured image</media:title></media:content>
        
        
        
          
            
              <category>keyboard</category>
            
          
        
        
          
            
              <category>hardware</category>
            
          
        
        
          
            
              <category>keyboard</category>
            
          
        
      </item>
      
      <item>
        <title>Cargo Test 的测试隔离性；使用 nextest-rs/nextest 来运行 Rust 的单元测试</title>
        <link>https://evex.one/posts/rust/nextest/</link>
        <pubDate>Fri, 10 Feb 2023 18:27:58 +0800</pubDate>
        <author>execvy@gmail.com (EXEC)</author>
        <atom:modified>Fri, 10 Feb 2023 18:27:58 +0800</atom:modified>
        <guid>https://evex.one/posts/rust/nextest/</guid>
        <description>&lt;h2 id=&#34;随便写一个测试-mod包含多个单元测试&#34;&gt;随便写一个测试 mod，包含多个单元测试：&lt;/h2&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code class=&#34;language-rust#[cfg(test)]&#34; data-lang=&#34;rust#[cfg(test)]&#34;&gt;mod tests {
    use std::time::Duration;

    fn print_my_pid_and_tid() {
        let pid = std::process::id();
        let tid = nix::unistd::gettid();

        println!(&amp;#34;my pid is {}, tid is {}&amp;#34;, pid, tid);
    }

    fn hard_job() {
        std::thread::sleep(Duration::from_secs(2));
    }

    macro_rules! generate_test_functions {
        ($name:ident) =&amp;gt; {
            #[test]
            fn $name() {
                hard_job();
                print_my_pid_and_tid();
            }
        };
    }

    generate_test_functions!(test_0);
    generate_test_functions!(test_1);
    generate_test_functions!(test_2);
    generate_test_functions!(test_3);
    generate_test_functions!(test_4);
    generate_test_functions!(test_5);
    generate_test_functions!(test_6);
    generate_test_functions!(test_7);
    generate_test_functions!(test_8);
    generate_test_functions!(test_9);
    generate_test_functions!(test_10);
    generate_test_functions!(test_11);
    generate_test_functions!(test_12);
    generate_test_functions!(test_13);
    generate_test_functions!(test_14);
    generate_test_functions!(test_15);
    generate_test_functions!(test_16);
    generate_test_functions!(test_17);
    generate_test_functions!(test_18);
    generate_test_functions!(test_19);
}
&lt;/code&gt;&lt;/pre&gt;&lt;h2 id=&#34;运行整个测试-mod&#34;&gt;运行整个测试 mod：&lt;/h2&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;cargo &lt;span class=&#34;nb&#34;&gt;test&lt;/span&gt; -- --nocapture
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;执行结果：&lt;/p&gt;</description>
        
        <dc:creator>EXEC</dc:creator>
        <media:content url="https://evex.one/images/rust/Rust_programming_language_black_logo.svg" medium="image"><media:title type="html">featured image</media:title></media:content>
        
        
        
          
            
              <category>rust</category>
            
          
        
        
          
            
              <category>rust</category>
            
          
        
        
          
            
              <category>rust</category>
            
          
        
      </item>
      
      <item>
        <title>一个有趣问题： 如何让 3 个 goroutine 按顺序循环打印出 ABC?</title>
        <link>https://evex.one/posts/go/go-print-abc/</link>
        <pubDate>Thu, 02 Jun 2022 20:32:36 +0800</pubDate>
        <author>execvy@gmail.com (EXEC)</author>
        <atom:modified>Thu, 02 Jun 2022 20:32:36 +0800</atom:modified>
        <guid>https://evex.one/posts/go/go-print-abc/</guid>
        <description>&lt;p&gt;刚刚我在网上冲浪，发现了这个一个问题，于是我想了一下，给了以下几种方法：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;12
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;13
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;14
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;15
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;16
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;17
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;18
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;19
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;20
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;21
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;22
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;23
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;24
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;25
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;26
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;27
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;28
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;29
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;30
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;31
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;32
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;33
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;34
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;35
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;36
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;37
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;38
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;39
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;40
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;41
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;42
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;43
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;44
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;45
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;46
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;47
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;48
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;49
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;50
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;51
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;52
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-golang&#34; data-lang=&#34;golang&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kd&#34;&gt;func&lt;/span&gt; &lt;span class=&#34;nf&#34;&gt;fun1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;	&lt;span class=&#34;nx&#34;&gt;bagA&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;:=&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;make&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;kd&#34;&gt;chan&lt;/span&gt; &lt;span class=&#34;kd&#34;&gt;struct&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;{})&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;	&lt;span class=&#34;nx&#34;&gt;bagB&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;:=&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;make&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;kd&#34;&gt;chan&lt;/span&gt; &lt;span class=&#34;kd&#34;&gt;struct&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;{})&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;	&lt;span class=&#34;nx&#34;&gt;bagC&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;:=&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;make&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;kd&#34;&gt;chan&lt;/span&gt; &lt;span class=&#34;kd&#34;&gt;struct&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;{})&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;	&lt;span class=&#34;nx&#34;&gt;ctx&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;cancel&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;:=&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;context&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;WithCancel&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;context&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;Background&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;())&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;	&lt;span class=&#34;k&#34;&gt;go&lt;/span&gt; &lt;span class=&#34;kd&#34;&gt;func&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;		&lt;span class=&#34;k&#34;&gt;for&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;			&lt;span class=&#34;k&#34;&gt;select&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;			&lt;span class=&#34;k&#34;&gt;case&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;lt;-&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;ctx&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;Done&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;():&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;				&lt;span class=&#34;k&#34;&gt;return&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;			&lt;span class=&#34;k&#34;&gt;default&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;			&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;			&lt;span class=&#34;o&#34;&gt;&amp;lt;-&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;bagA&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;			&lt;span class=&#34;nb&#34;&gt;println&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;A&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;			&lt;span class=&#34;nx&#34;&gt;bagB&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;lt;-&lt;/span&gt; &lt;span class=&#34;kd&#34;&gt;struct&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;{}{}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;		&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;	&lt;span class=&#34;p&#34;&gt;}()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;	&lt;span class=&#34;k&#34;&gt;go&lt;/span&gt; &lt;span class=&#34;kd&#34;&gt;func&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;		&lt;span class=&#34;k&#34;&gt;for&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;			&lt;span class=&#34;k&#34;&gt;select&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;			&lt;span class=&#34;k&#34;&gt;case&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;lt;-&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;ctx&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;Done&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;():&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;				&lt;span class=&#34;k&#34;&gt;return&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;			&lt;span class=&#34;k&#34;&gt;default&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;			&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;			&lt;span class=&#34;o&#34;&gt;&amp;lt;-&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;bagB&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;			&lt;span class=&#34;nb&#34;&gt;println&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;B&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;			&lt;span class=&#34;nx&#34;&gt;bagC&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;lt;-&lt;/span&gt; &lt;span class=&#34;kd&#34;&gt;struct&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;{}{}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;		&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;	&lt;span class=&#34;p&#34;&gt;}()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;	&lt;span class=&#34;k&#34;&gt;go&lt;/span&gt; &lt;span class=&#34;kd&#34;&gt;func&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;		&lt;span class=&#34;k&#34;&gt;for&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;			&lt;span class=&#34;k&#34;&gt;select&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;			&lt;span class=&#34;k&#34;&gt;case&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;lt;-&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;ctx&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;Done&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;():&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;				&lt;span class=&#34;k&#34;&gt;return&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;			&lt;span class=&#34;k&#34;&gt;default&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;			&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;			&lt;span class=&#34;o&#34;&gt;&amp;lt;-&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;bagC&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;			&lt;span class=&#34;nb&#34;&gt;println&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;C&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;			&lt;span class=&#34;nx&#34;&gt;bagA&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;lt;-&lt;/span&gt; &lt;span class=&#34;kd&#34;&gt;struct&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;{}{}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;		&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;	&lt;span class=&#34;p&#34;&gt;}()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;	&lt;span class=&#34;k&#34;&gt;go&lt;/span&gt; &lt;span class=&#34;kd&#34;&gt;func&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;		&lt;span class=&#34;nx&#34;&gt;bagA&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;lt;-&lt;/span&gt; &lt;span class=&#34;kd&#34;&gt;struct&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;{}{}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;	&lt;span class=&#34;p&#34;&gt;}()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;	&lt;span class=&#34;nx&#34;&gt;stop&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;:=&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;make&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;kd&#34;&gt;chan&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;os&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;Signal&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;	&lt;span class=&#34;nx&#34;&gt;signal&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;Notify&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;stop&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;os&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;Interrupt&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;syscall&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;SIGTERM&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;	&lt;span class=&#34;o&#34;&gt;&amp;lt;-&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;stop&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;	&lt;span class=&#34;nf&#34;&gt;cancel&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;这段代码还可以简化成这样：&lt;/p&gt;</description>
        
        <dc:creator>EXEC</dc:creator>
        <media:content url="https://evex.one/https://raw.githubusercontent.com/egonelbre/gophers/master/vector/computer/music.svg" medium="image"><media:title type="html">featured image</media:title></media:content>
        
        
        
          
            
              <category>golang</category>
            
          
        
        
          
            
              <category>golang</category>
            
          
        
        
          
            
              <category>golang</category>
            
          
        
      </item>
      
      <item>
        <title>康威的生命游戏（Rust &#43; WebAssembly）</title>
        <link>https://evex.one/posts/fun/conways_game_of_life/</link>
        <pubDate>Mon, 31 Jan 2022 10:47:23 +0800</pubDate>
        <author>execvy@gmail.com (EXEC)</author>
        <atom:modified>Mon, 31 Jan 2022 10:47:23 +0800</atom:modified>
        <guid>https://evex.one/posts/fun/conways_game_of_life/</guid>
        <description>&lt;p&gt;很早之前就知道有一个有趣的东西叫 conway&amp;rsquo;s game of life (康威的人生游戏)，前段时间我用 &lt;code&gt;Rust&lt;/code&gt; 实现了一遍，并且尝试将原作者提出的 &lt;code&gt;2d&lt;/code&gt;版本改成&lt;code&gt;3d&lt;/code&gt;版；还尝试了 &lt;code&gt;Rust WebAssembly&lt;/code&gt;，在网页上欣赏生命游戏。&lt;/p&gt;</description>
        
        <dc:creator>EXEC</dc:creator>
        <media:content url="https://evex.one//images/fun/gameoflife.png" medium="image"><media:title type="html">featured image</media:title></media:content>
        
        
        
          
            
              <category>rust</category>
            
          
        
        
          
            
              <category>rust</category>
            
          
        
        
          
            
              <category>rust</category>
            
          
        
      </item>
      
      <item>
        <title>[翻译/搬运] 写出安全 bash script 的简洁模板</title>
        <link>https://evex.one/posts/linux/safe-bash-script/</link>
        <pubDate>Mon, 14 Dec 2020 19:30:59 +0800</pubDate>
        <author>execvy@gmail.com (EXEC)</author>
        <atom:modified>Mon, 14 Dec 2020 19:30:59 +0800</atom:modified>
        <guid>https://evex.one/posts/linux/safe-bash-script/</guid>
        <description>&lt;p&gt;英文原文在此： &lt;a href=&#34;https://betterdev.blog/minimal-safe-bash-script-template&#34;&gt;Better DEv- Minimal safe Bash script template&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;几乎每位后端开发工程师都需要写&lt;code&gt;bash script&lt;/code&gt;, 但几乎没人会说：“啊，我喜欢&lt;code&gt;bash script&lt;/code&gt;”, 所以大多数人写的&lt;code&gt;bash script&lt;/code&gt;都不是很给力。&lt;/p&gt;</description>
        
        <dc:creator>EXEC</dc:creator>
        <media:content url="https://evex.one/http://phil.lavin.me.uk/wp-content/uploads/2012/02/bash.jpg" medium="image"><media:title type="html">featured image</media:title></media:content>
        
        
        
          
            
              <category>翻译/搬运</category>
            
          
        
        
          
            
              <category>programming</category>
            
          
        
        
          
            
              <category>bash</category>
            
          
        
      </item>
      
      <item>
        <title>介绍一下我的生产力工具</title>
        <link>https://evex.one/posts/linux/my_linux/</link>
        <pubDate>Sat, 28 Nov 2020 23:55:50 +0800</pubDate>
        <author>execvy@gmail.com (EXEC)</author>
        <atom:modified>Sat, 28 Nov 2020 23:55:50 +0800</atom:modified>
        <guid>https://evex.one/posts/linux/my_linux/</guid>
        <description>&lt;p&gt;我的计算机是我日常打交道最多的设备, 就像是我的一位老朋友. 他懂我的心意.&lt;/p&gt;</description>
        
        <dc:creator>EXEC</dc:creator>
        <media:content url="https://evex.one/https://upload.wikimedia.org/wikipedia/commons/thumb/f/f1/Icons8_flat_linux.svg/768px-Icons8_flat_linux.svg.png" medium="image"><media:title type="html">featured image</media:title></media:content>
        
        
        
          
            
              <category>linux</category>
            
          
        
        
          
            
              <category>linux</category>
            
          
        
        
          
            
          
        
      </item>
      
      <item>
        <title>不容忽视的 Goroutine Leak 以及如何排查</title>
        <link>https://evex.one/posts/go/goroutine-leak/</link>
        <pubDate>Mon, 28 Sep 2020 10:47:23 +0800</pubDate>
        <author>execvy@gmail.com (EXEC)</author>
        <atom:modified>Mon, 28 Sep 2020 10:47:23 +0800</atom:modified>
        <guid>https://evex.one/posts/go/goroutine-leak/</guid>
        <description>&lt;p&gt;我们可以用 &lt;code&gt;golang&lt;/code&gt; 很轻松地进行并发编程，但是在并发编程过程中，得留意 &lt;code&gt;goroutine&lt;/code&gt; 的泄露。&lt;/p&gt;
&lt;h2 id=&#34;什么是-goroutine-泄露&#34;&gt;什么是 goroutine 泄露&lt;/h2&gt;
&lt;p&gt;其实 &lt;code&gt;goroutine&lt;/code&gt; 泄露就是内存泄露的一种：你开启了一个 &lt;code&gt;goroutine&lt;/code&gt; ,但是你开启完了就把它忘了或者不管它了，它以后是死是活，忙不忙，是不是阻塞了，你都就不关心它！（&lt;strong&gt;渣男/渣女行为&lt;/strong&gt;）。然后这个 &lt;code&gt;goroutine&lt;/code&gt; 要是一直活着就会占用你的内存资源，虽然一个 &lt;code&gt;goroutine&lt;/code&gt; 占用的内存资源很少，但是要是成千上万的 &lt;code&gt;goroutine&lt;/code&gt; 泄露了，后果还是很严重的。这就是 &lt;code&gt;goroutine&lt;/code&gt; 泄露。&lt;/p&gt;</description>
        
        <dc:creator>EXEC</dc:creator>
        <media:content url="https://evex.one/https://raw.githubusercontent.com/egonelbre/gophers/master/vector/adventure/hiking.svg" medium="image"><media:title type="html">featured image</media:title></media:content>
        
        
        
          
            
              <category>并发编程</category>
            
          
        
        
          
            
              <category>programming</category>
            
          
        
        
          
            
              <category>golang</category>
            
          
        
      </item>
      
      <item>
        <title>Condition Variables: 搞明白 go 语言的 sync.Cond</title>
        <link>https://evex.one/posts/go/sync.cond/</link>
        <pubDate>Sat, 29 Aug 2020 10:53:57 +0800</pubDate>
        <author>execvy@gmail.com (EXEC)</author>
        <atom:modified>Sat, 29 Aug 2020 10:53:57 +0800</atom:modified>
        <guid>https://evex.one/posts/go/sync.cond/</guid>
        <description>&lt;p&gt;条件变量（Condition VAriables）是一种并发原语，条件变量允许一个线程在某个条件不满足的时候进入睡眠状态，当条件满足时再唤醒它。条件变量还支持当条件满足时，唤醒一个（wake one）和唤醒所有（wake all）。&lt;/p&gt;</description>
        
        <dc:creator>EXEC</dc:creator>
        <media:content url="https://evex.one/https://dwglogo.com/wp-content/uploads/2017/08/Golang-logo-003.svg" medium="image"><media:title type="html">featured image</media:title></media:content>
        
        
        
          
            
              <category>并发编程</category>
            
          
        
        
          
            
              <category>programming</category>
            
          
        
        
          
            
          
        
      </item>
      
      <item>
        <title>MIT 6.S081 操作系统 课后实验笔记[Lab Utils &amp; System Call]</title>
        <link>https://evex.one/posts/os/6.828/lab_utils/</link>
        <pubDate>Fri, 01 May 2020 11:33:58 +0800</pubDate>
        <author>execvy@gmail.com (EXEC)</author>
        <atom:modified>Fri, 01 May 2020 11:33:58 +0800</atom:modified>
        <guid>https://evex.one/posts/os/6.828/lab_utils/</guid>
        <description>&lt;h1 id=&#34;实验环境搭建&#34;&gt;实验环境搭建&lt;/h1&gt;
&lt;p&gt;课程主页：&lt;a href=&#34;https://pdos.csail.mit.edu/6.828/&#34;&gt;MIT 6.S081 Operating System&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;最开始&lt;code&gt;make qemu&lt;/code&gt;报错，提示我没有 riscv64 版本的 binutils：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;12
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;13
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;14
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;15
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&amp;gt; make qemu
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;***
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;*** Error: Couldn&lt;span class=&#34;s1&#34;&gt;&amp;#39;t find a riscv64 version of GCC/binutils.
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s1&#34;&gt;*** To turn off this error, run &amp;#39;&lt;/span&gt;gmake &lt;span class=&#34;nv&#34;&gt;TOOLPREFIX&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; ...&lt;span class=&#34;s1&#34;&gt;&amp;#39;.
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s1&#34;&gt;***
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s1&#34;&gt;gcc    -c -o kernel/entry.o kernel/entry.S
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s1&#34;&gt;kernel/entry.S: Assembler messages:
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s1&#34;&gt;kernel/entry.S:11: Error: no such instruction: `la sp,stack0&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;kernel/entry.S:12: Error: no such instruction: &lt;span class=&#34;sb&#34;&gt;`&lt;/span&gt;li a0,1024*4&lt;span class=&#34;s1&#34;&gt;&amp;#39;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s1&#34;&gt;kernel/entry.S:13: Error: no such instruction: `csrr a1,mhartid&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;kernel/entry.S:14: Error: no such instruction: &lt;span class=&#34;sb&#34;&gt;`&lt;/span&gt;addi a1,a1,1&lt;span class=&#34;s1&#34;&gt;&amp;#39;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s1&#34;&gt;kernel/entry.S:15: Error: too many memory references for `mul&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;kernel/entry.S:16: Error: too many memory references &lt;span class=&#34;k&#34;&gt;for&lt;/span&gt; &lt;span class=&#34;sb&#34;&gt;`&lt;/span&gt;add&lt;span class=&#34;s1&#34;&gt;&amp;#39;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s1&#34;&gt;kernel/entry.S:20: Error: no such instruction: `j spin&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;make: *** &lt;span class=&#34;o&#34;&gt;[&lt;/span&gt;&amp;lt;builtin&amp;gt;: kernel/entry.o&lt;span class=&#34;o&#34;&gt;]&lt;/span&gt; Error &lt;span class=&#34;m&#34;&gt;1&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;&lt;code&gt;ArchLinux&lt;/code&gt; 这样安装相关依赖，其他系统参考： &lt;a href=&#34;https://pdos.csail.mit.edu/6.828/2019/tools.html&#34;&gt;6.S081 tools / Fall 2020&lt;/a&gt;&lt;/p&gt;</description>
        
        <dc:creator>EXEC</dc:creator>
        <media:content url="https://evex.one/https://gateway.ipfs.io/ipfs/Qmc71dEuCjU9HA7f5jnQYP6TkeVYaKCMBs3ZZBvgRoUmfa" medium="image"><media:title type="html">featured image</media:title></media:content>
        
        
        
          
            
              <category>lab 6.S081</category>
            
          
        
        
          
            
              <category>os</category>
            
          
        
        
          
            
              <category>6.S081</category>
            
          
        
      </item>
      
      <item>
        <title>MIT-6.824 分布式系统 课后实验 Lab3 A (Fault-tolerant Key/Value Service)</title>
        <link>https://evex.one/posts/distribution/6.824/lab_3/</link>
        <pubDate>Wed, 22 Apr 2020 10:11:09 +0800</pubDate>
        <author>execvy@gmail.com (EXEC)</author>
        <atom:modified>Wed, 22 Apr 2020 10:11:09 +0800</atom:modified>
        <guid>https://evex.one/posts/distribution/6.824/lab_3/</guid>
        <description>&lt;p&gt;在&lt;code&gt;lab2&lt;/code&gt;已经完成了简单的&lt;code&gt;raft&lt;/code&gt;, 在&lt;code&gt;lab3&lt;/code&gt;里要完成一个&lt;code&gt;key-value&lt;/code&gt;数据库。&lt;/p&gt;
&lt;p&gt;数据库服务端应该有这三个接口：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;Get(key string) &lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Put(key, value string)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Append(key, value string)&lt;/code&gt; // 如果 key 不存在，那么有等同于 Put&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;客户端和 &lt;code&gt;Clerk&lt;/code&gt;交互， &lt;code&gt;Clerk&lt;/code&gt;和&lt;code&gt;raft server&lt;/code&gt; 交互。&lt;/p&gt;</description>
        
        <dc:creator>EXEC</dc:creator>
        <media:content url="https://evex.one/http://www.marcellodb.org/images/logo/icon_blue_512x512.png" medium="image"><media:title type="html">featured image</media:title></media:content>
        
        
        
          
            
              <category>distribution</category>
            
          
        
        
          
            
              <category>lab</category>
            
          
        
        
          
            
              <category>6.824</category>
            
          
        
      </item>
      
      <item>
        <title>MIT-6.824 分布式系统 课后实验 Lab2 A/B/C (Raft Election, Log Replication, Persistence)</title>
        <link>https://evex.one/posts/distribution/6.824/lab_2/</link>
        <pubDate>Tue, 31 Mar 2020 10:11:09 +0800</pubDate>
        <author>execvy@gmail.com (EXEC)</author>
        <atom:modified>Tue, 31 Mar 2020 10:11:09 +0800</atom:modified>
        <guid>https://evex.one/posts/distribution/6.824/lab_2/</guid>
        <description>&lt;h2 id=&#34;raft-简要介绍&#34;&gt;raft 简要介绍&lt;/h2&gt;
&lt;p&gt;&lt;code&gt;raft&lt;/code&gt;是一种分布式一致性算法，可以先看看这里：&lt;a href=&#34;https://raft.github.io/&#34;&gt;Raft Consensus Algorithm&lt;/a&gt; 的互动小程序来对&lt;code&gt;raft&lt;/code&gt;有个感性的认知，然后再读 paper。&lt;/p&gt;
&lt;h3 id=&#34;raft-的角色&#34;&gt;raft 的角色&lt;/h3&gt;
&lt;p&gt;论文：&lt;em&gt;/In Search of an Understandable Consensus Algorithm&lt;/em&gt; 里描述的 raft 算法有这几种角色：&lt;/p&gt;</description>
        
        <dc:creator>EXEC</dc:creator>
        <media:content url="https://evex.one//images/lab/lab-icon-fs8.png" medium="image"><media:title type="html">featured image</media:title></media:content>
        
        
        
          
            
              <category>distribution</category>
            
          
        
        
          
            
              <category>lab</category>
            
          
        
        
          
            
              <category>6.824</category>
            
          
        
      </item>
      
      <item>
        <title>MIT-6.824 分布式系统 课后实验 Lab1 (Map Reduce) </title>
        <link>https://evex.one/posts/distribution/6.824/lab_1/</link>
        <pubDate>Tue, 24 Mar 2020 23:37:25 +0800</pubDate>
        <author>execvy@gmail.com (EXEC)</author>
        <atom:modified>Tue, 24 Mar 2020 23:37:25 +0800</atom:modified>
        <guid>https://evex.one/posts/distribution/6.824/lab_1/</guid>
        <description>&lt;h2 id=&#34;map-reduce-论文阅读&#34;&gt;Map-Reduce 论文阅读&lt;/h2&gt;
&lt;h2 id=&#34;分析&#34;&gt;分析&lt;/h2&gt;
&lt;p&gt;实验要求 在 &lt;code&gt;mr/master.go, mr/worker.go, and mr/rpc.go.&lt;/code&gt; 中编码，并且只指定了 &lt;code&gt;reduce worker&lt;/code&gt;的数量：&lt;code&gt;nreduce&lt;/code&gt;。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;master&lt;/code&gt;最后要以  &lt;code&gt;go run mrmaster.go pg-*.txt&lt;/code&gt; 的方式运行，每一个&lt;code&gt;.txt&lt;/code&gt;文件对应一个&lt;code&gt;split&lt;/code&gt;，一个&lt;code&gt;split&lt;/code&gt;分派一个&lt;code&gt;mapworker&lt;/code&gt;&lt;/p&gt;</description>
        
        <dc:creator>EXEC</dc:creator>
        <media:content url="https://evex.one//images/lab/lab.jpeg" medium="image"><media:title type="html">featured image</media:title></media:content>
        
        
        
          
            
              <category>distribution</category>
            
          
        
        
          
            
              <category>lab</category>
            
          
        
        
          
            
              <category>6.824</category>
            
          
        
      </item>
      
      <item>
        <title>Kernel Panic: 我把 Arch 滚挂了</title>
        <link>https://evex.one/posts/linux/kernel-panic-after-upgrade-arch-packages/</link>
        <pubDate>Sun, 01 Mar 2020 19:23:31 +0800</pubDate>
        <author>execvy@gmail.com (EXEC)</author>
        <atom:modified>Sun, 01 Mar 2020 19:23:31 +0800</atom:modified>
        <guid>https://evex.one/posts/linux/kernel-panic-after-upgrade-arch-packages/</guid>
        <description>&lt;h2 id=&#34;美好的早晨&#34;&gt;美好的早晨&lt;/h2&gt;
&lt;p&gt;因为疫情，最近在家远程办公呢，像往常一样，我每天早上起床做的第一件事情就是解锁我的 &lt;code&gt;Linux&lt;/code&gt; 系统，打开终端，执行：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo pacman -Syu
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;像往常一样，我等待着更新的过程，但是这次，我发现在下载并校验完待更新的包之后，在快要进入升级过程末尾的 &lt;code&gt;commit changes&lt;/code&gt; 之前时，终端卡死，键盘鼠标无响应，连 &lt;code&gt;tty&lt;/code&gt; 都进不去，等了 20 分钟都没响应，就长按电源强制关机了，等到我再次开机之后，看到了这样的画面：&lt;/p&gt;</description>
        
        <dc:creator>EXEC</dc:creator>
        <media:content url="https://evex.one/kernel_panic_logo.png" medium="image"><media:title type="html">featured image</media:title></media:content>
        
        
        
          
            
              <category>linux</category>
            
          
        
        
          
            
              <category>linux</category>
            
          
        
        
          
            
              <category>linux</category>
            
          
        
      </item>
      
      <item>
        <title>[课后作业] 数据结构与算法</title>
        <link>https://evex.one/til/algorithm/</link>
        <pubDate>Sun, 10 Nov 2019 23:30:20 +0800</pubDate>
        <author>execvy@gmail.com (EXEC)</author>
        <atom:modified>Sun, 10 Nov 2019 23:30:20 +0800</atom:modified>
        <guid>https://evex.one/til/algorithm/</guid>
        <description>&lt;p&gt;数据结构这块先是看了浙江大学的数据结构公开课和《数据结构与算法》黑皮书, 看完之后感觉自己好像都懂了，其实并没理解。所以定两个计划：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;完成课后作业代码&lt;/li&gt;
&lt;li&gt;完成&lt;code&gt;leetcode&lt;/code&gt; 的 &lt;code&gt;Daily Challenge&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;我的习题答案在这：&lt;a href=&#34;https://github.com/eval-exec/Algorithm&#34;&gt;eval-exec/Algorithm&lt;/a&gt;&lt;br /&gt;
才疏学浅，请多批评。&lt;/p&gt;</description>
        
        <dc:creator>EXEC</dc:creator>
        <media:content url="https://evex.one/https://gateway.ipfs.io/ipfs/QmcnstWwrV61xSV72Bho56JViV3hrdXWzwZ9Hkg4TxU79s" medium="image"><media:title type="html">featured image</media:title></media:content>
        
        
        
          
            
              <category>note</category>
            
          
        
        
          
            
          
        
        
          
            
          
        
      </item>
      

    
  </channel>
</rss>
