<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Posts on Breeding and genetics</title>
    <link>https://blog.xijiang.org/posts/</link>
    <description>Recent content in Posts on Breeding and genetics</description>
    <generator>Hugo</generator>
    <language>en-us</language>
    <lastBuildDate>Thu, 21 May 2026 18:24:33 +0200</lastBuildDate>
    <atom:link href="https://blog.xijiang.org/posts/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>roasted meat pasta</title>
      <link>https://blog.xijiang.org/posts/roasted-meat-pasta/</link>
      <pubDate>Thu, 21 May 2026 18:24:33 +0200</pubDate>
      <guid>https://blog.xijiang.org/posts/roasted-meat-pasta/</guid>
      <description>&lt;p&gt;&lt;strong&gt;蒜香烤肉什锦炒意面食谱 (二人份)&lt;/strong&gt; 这份食谱利用了现有的胡萝卜、烤肉、&#xA;烤肠和意大利面，制作简单且风味十足。&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;roasted_meat_pasta.png&#34; alt=&#34;蒜香烤肉什锦炒意面&#34;&gt;&lt;/p&gt;&#xA;&lt;hr&gt;&#xA;&lt;h2 id=&#34;-食材清单&#34;&gt;🛒 食材清单&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;主食&lt;/strong&gt;：意大利面 (约 200g)&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;肉类&lt;/strong&gt;：吃剩的烤肉、烤肠 (切片或切丝)&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;蔬菜&lt;/strong&gt;：胡萝卜 (洗净切丝)&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;调料&lt;/strong&gt;：大蒜 (3-4瓣切末)、生抽、老抽、黑胡椒、食用油&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;可选&lt;/strong&gt;：煮面水 (预留一小碗)&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;hr&gt;&#xA;&lt;h2 id=&#34;-烹饪步骤&#34;&gt;🍳 烹饪步骤&lt;/h2&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;strong&gt;煮面&lt;/strong&gt;：&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;锅中烧水加盐，下意面。&lt;/li&gt;&#xA;&lt;li&gt;按包装说明时间&lt;strong&gt;减少 1-2 分钟&lt;/strong&gt;捞出（保持口感筋道）。&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;重要&lt;/strong&gt;：捞出前预留一小碗煮面水。&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;strong&gt;煸炒肉类&lt;/strong&gt;：&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;热锅少油，下入烤肉和烤肠片。&lt;/li&gt;&#xA;&lt;li&gt;中小火煸炒至表面微焦，散发烟熏香气。&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;strong&gt;炒制配菜&lt;/strong&gt;：&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;利用锅内余油，加入蒜末和胡萝卜丝。&lt;/li&gt;&#xA;&lt;li&gt;中火将胡萝卜丝炒至断生变软。&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;strong&gt;混合翻炒&lt;/strong&gt;：&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;加入煮好的意面。&lt;/li&gt;&#xA;&lt;li&gt;依次加入 2 勺生抽、半勺老抽、适量黑胡椒。&lt;/li&gt;&#xA;&lt;li&gt;如觉太干，分次加入煮面水。大火快炒至汤汁包裹面条。&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;strong&gt;出锅&lt;/strong&gt;：&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;试味后酌情加盐，装盘即可。&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;hr&gt;&#xA;&lt;h2 id=&#34;-小贴士&#34;&gt;💡 小贴士&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;风味升级&lt;/strong&gt;：可加入干辣椒或老干妈增加辣味。&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;配菜扩展&lt;/strong&gt;：洋葱或青椒也是绝佳的配搭。&lt;/li&gt;&#xA;&lt;/ul&gt;</description>
    </item>
    <item>
      <title>Pork neck dinner</title>
      <link>https://blog.xijiang.org/posts/pork-neck-dinner/</link>
      <pubDate>Thu, 21 May 2026 18:08:28 +0200</pubDate>
      <guid>https://blog.xijiang.org/posts/pork-neck-dinner/</guid>
      <description>&lt;p&gt;猪脖子肉（梅花肉/槽头肉部分）肉质细嫩且带有大理石纹路油脂，非常适合切片炒制。以下为您设计了两套风格不同的二人份组合。&lt;/p&gt;&#xA;&lt;hr&gt;&#xA;&lt;h2 id=&#34;方案一家常浓郁组合-咸鲜下饭油脂均衡&#34;&gt;方案一：【家常浓郁组合】—— 咸鲜下饭，油脂均衡&lt;/h2&gt;&#xA;&lt;p&gt;这套组合利用圆白菜的爽脆和猪肉的油脂，配合色彩丰富的蔬菜。&lt;/p&gt;&#xA;&lt;h3 id=&#34;1-酱香圆白菜炒猪脖子肉&#34;&gt;1. 酱香圆白菜炒猪脖子肉&lt;/h3&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;食材&lt;/strong&gt;：猪脖子肉 (250g)、圆白菜 (半个)、胡萝卜 (少量切片)。&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;做法&lt;/strong&gt;：&#xA;&lt;ol&gt;&#xA;&lt;li&gt;猪肉切薄片，用生抽、料酒、少许淀粉腌制15分钟。&lt;/li&gt;&#xA;&lt;li&gt;圆白菜洗净撕成大片，胡萝卜切片。&lt;/li&gt;&#xA;&lt;li&gt;热锅凉油，下猪肉片炒至变色盛出。&lt;/li&gt;&#xA;&lt;li&gt;锅留底油，下蒜末、干辣椒（可选）爆香，倒入圆白菜和胡萝卜大火快炒。&lt;/li&gt;&#xA;&lt;li&gt;圆白菜稍稍变软后，加1勺甜面酱（或蚝油）和半勺生抽。&lt;/li&gt;&#xA;&lt;li&gt;倒入肉片合炒均匀，收汁出锅。&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h3 id=&#34;2-清炒西兰花&#34;&gt;2. 清炒西兰花&lt;/h3&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;食材&lt;/strong&gt;：西兰花 (1个)、大蒜。&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;做法&lt;/strong&gt;：西兰花掰小朵焯水。锅中热油炒香蒜末，倒入西兰花，加盐和鸡精快速翻炒即可。&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;hr&gt;&#xA;&lt;h2 id=&#34;方案二鲜香清爽组合-清脆爽口健康搭配&#34;&gt;方案二：【鲜香清爽组合】—— 清脆爽口，健康搭配&lt;/h2&gt;&#xA;&lt;p&gt;这套组合突出芦笋和西兰花的原味，口感更加轻盈。&lt;/p&gt;&#xA;&lt;h3 id=&#34;1-芦笋胡萝卜炒肉片&#34;&gt;1. 芦笋胡萝卜炒肉片&lt;/h3&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;食材&lt;/strong&gt;：猪脖子肉 (250g)、芦笋 (250g)、胡萝卜 (1根)。&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;做法&lt;/strong&gt;：&#xA;&lt;ol&gt;&#xA;&lt;li&gt;芦笋斜切段，胡萝卜切片。&lt;/li&gt;&#xA;&lt;li&gt;猪肉切薄片，加盐、胡椒粉、橄榄油稍微抓匀。&lt;/li&gt;&#xA;&lt;li&gt;锅中烧水，水开后滴几滴油，放入芦笋和胡萝卜焯水30秒捞出沥干。&lt;/li&gt;&#xA;&lt;li&gt;热锅下肉片滑散炒熟。&lt;/li&gt;&#xA;&lt;li&gt;加入焯好水的蔬菜，加盐、蚝油调味。&lt;/li&gt;&#xA;&lt;li&gt;快速翻炒均匀，保持芦笋的脆嫩。&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h3 id=&#34;2-蒜蓉蒸炒圆白菜丝&#34;&gt;2. 蒜蓉蒸/炒圆白菜丝&lt;/h3&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;食材&lt;/strong&gt;：圆白菜 (剩余部分)、胡萝卜丝。&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;做法&lt;/strong&gt;：将圆白菜切细丝，与胡萝卜丝一起用大蒜、香油、生抽拌匀，或简单清炒。&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;hr&gt;&#xA;&lt;h2 id=&#34;-烹饪小贴士&#34;&gt;💡 烹饪小贴士&lt;/h2&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;&lt;strong&gt;猪脖子肉处理&lt;/strong&gt;：如果油脂较多，可以先下锅煸炒出部分猪油，再用这个油炒配菜，味道会特别香。&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;胡萝卜储备&lt;/strong&gt;：您有一公斤胡萝卜，可以多切一些丝或片放在冷藏备用，几乎任何炒菜加点胡萝卜都能提升颜色和营养。&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;米饭建议&lt;/strong&gt;：既然有米饭，炒菜时可以适当多留一点点汤汁（勾薄芡），拌饭效果极佳。&lt;/li&gt;&#xA;&lt;/ol&gt;</description>
    </item>
    <item>
      <title>Some interesting Julia codes</title>
      <link>https://blog.xijiang.org/posts/julia-features/</link>
      <pubDate>Tue, 17 Mar 2026 12:04:42 +0100</pubDate>
      <guid>https://blog.xijiang.org/posts/julia-features/</guid>
      <description>&lt;p&gt;Julia is fast, composable, dynamic, general, reproducible and open&#xA;source.  The codes below were taken from &lt;a href=&#34;https://julialang.org&#34;&gt;https://julialang.org&lt;/a&gt;.  I&#xA;found it very illustrating.&lt;/p&gt;&#xA;&lt;h2 id=&#34;multiple-dispatch&#34;&gt;Multiple dispatch&lt;/h2&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-julia&#34; data-lang=&#34;julia&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;struct&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;Dog&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;end&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;struct&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;Cat&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;end&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;dog, cat &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; Dog(), Cat()&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;meet(a&lt;span style=&#34;color:#f92672&#34;&gt;::&lt;/span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;Dog&lt;/span&gt;, b&lt;span style=&#34;color:#f92672&#34;&gt;::&lt;/span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;Dog&lt;/span&gt;) &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;The dogs play together&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;meet(a&lt;span style=&#34;color:#f92672&#34;&gt;::&lt;/span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;Dog&lt;/span&gt;, b&lt;span style=&#34;color:#f92672&#34;&gt;::&lt;/span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;Cat&lt;/span&gt;) &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;The dog chases the cat&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;meet(a&lt;span style=&#34;color:#f92672&#34;&gt;::&lt;/span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;Cat&lt;/span&gt;, b&lt;span style=&#34;color:#f92672&#34;&gt;::&lt;/span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;Dog&lt;/span&gt;) &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;The cat hisses at the dog&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;meet(a&lt;span style=&#34;color:#f92672&#34;&gt;::&lt;/span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;Cat&lt;/span&gt;, b&lt;span style=&#34;color:#f92672&#34;&gt;::&lt;/span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;Cat&lt;/span&gt;) &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;The cats ignore each other&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;meet(dog, cat)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;meet(dog, dog)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;meet(cat, cat)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;display-customization&#34;&gt;Display customization&lt;/h2&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-julia&#34; data-lang=&#34;julia&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;struct&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;Nutshell&lt;/span&gt;{&lt;span style=&#34;color:#66d9ef&#34;&gt;T&lt;/span&gt;}&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;contents&lt;span style=&#34;color:#f92672&#34;&gt;::&lt;/span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;T&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;end&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Base&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;show(io&lt;span style=&#34;color:#f92672&#34;&gt;::&lt;/span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;IO&lt;/span&gt;, n&lt;span style=&#34;color:#f92672&#34;&gt;::&lt;/span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;Nutshell&lt;/span&gt;) &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; print(io, &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;🥜 &amp;#34;&lt;/span&gt;, n&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;contents, &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34; 🥜&amp;#34;&lt;/span&gt;)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Nutshell(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;Julia&amp;#34;&lt;/span&gt;)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;unicode-and-math&#34;&gt;Unicode and math&lt;/h2&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-julia&#34; data-lang=&#34;julia&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;α, β &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;.5&lt;/span&gt;, &lt;span style=&#34;color:#ae81ff&#34;&gt;.3&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;f(x) &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; α &lt;span style=&#34;color:#f92672&#34;&gt;*&lt;/span&gt; x &lt;span style=&#34;color:#f92672&#34;&gt;+&lt;/span&gt; β&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Σ(v) &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; reduce(&lt;span style=&#34;color:#f92672&#34;&gt;+&lt;/span&gt;, v)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Σ(f&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;(&lt;span style=&#34;color:#ae81ff&#34;&gt;1&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;5&lt;/span&gt;))&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;comprehensions&#34;&gt;Comprehensions&lt;/h2&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-julia&#34; data-lang=&#34;julia&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;[x&lt;span style=&#34;color:#f92672&#34;&gt;^&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;2&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;for&lt;/span&gt; x &lt;span style=&#34;color:#66d9ef&#34;&gt;in&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;1&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;5&lt;/span&gt;]&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;broadcasting&#34;&gt;Broadcasting&lt;/h2&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-julia&#34; data-lang=&#34;julia&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;A &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; [&lt;span style=&#34;color:#ae81ff&#34;&gt;1&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;2&lt;/span&gt;; &lt;span style=&#34;color:#ae81ff&#34;&gt;3&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;4&lt;/span&gt;]&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;sin&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;(A) &lt;span style=&#34;color:#f92672&#34;&gt;.+&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;1&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;Dict&lt;/span&gt;(c &lt;span style=&#34;color:#f92672&#34;&gt;=&amp;gt;&lt;/span&gt; i &lt;span style=&#34;color:#66d9ef&#34;&gt;for&lt;/span&gt; (i, c) &lt;span style=&#34;color:#66d9ef&#34;&gt;in&lt;/span&gt; enumerate(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;julia&amp;#34;&lt;/span&gt;)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;piping-and-composition&#34;&gt;Piping and composition&lt;/h2&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-julia&#34; data-lang=&#34;julia&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;1&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;5&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;|&amp;gt;&lt;/span&gt; sum &lt;span style=&#34;color:#f92672&#34;&gt;|&amp;gt;&lt;/span&gt; sqrt&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;(sqrt &lt;span style=&#34;color:#f92672&#34;&gt;∘&lt;/span&gt; sum)(&lt;span style=&#34;color:#ae81ff&#34;&gt;1&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;5&lt;/span&gt;) &lt;span style=&#34;color:#75715e&#34;&gt;# equiv. above&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;map(exp &lt;span style=&#34;color:#f92672&#34;&gt;∘&lt;/span&gt; abs, [&lt;span style=&#34;color:#f92672&#34;&gt;-&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;1&lt;/span&gt;, &lt;span style=&#34;color:#ae81ff&#34;&gt;2&lt;/span&gt;, &lt;span style=&#34;color:#f92672&#34;&gt;-&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;3&lt;/span&gt;])&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;destructuring&#34;&gt;Destructuring&lt;/h2&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-julia&#34; data-lang=&#34;julia&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;(a, b, c) &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;1&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;3&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;a, c &lt;span style=&#34;color:#75715e&#34;&gt;# =&amp;gt; (1, 3)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;head, tail&lt;span style=&#34;color:#f92672&#34;&gt;...&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; [&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;first&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;second&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;third&amp;#34;&lt;/span&gt;]&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;head, tail &lt;span style=&#34;color:#75715e&#34;&gt;# =&amp;gt; (&amp;#34;first&amp;#34;, [&amp;#34;second&amp;#34;, &amp;#34;third&amp;#34;])&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;metaprogramming&#34;&gt;Metaprogramming&lt;/h2&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-julia&#34; data-lang=&#34;julia&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;ex &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;:&lt;/span&gt;(&lt;span style=&#34;color:#ae81ff&#34;&gt;1&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;+&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;2&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;*&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;3&lt;/span&gt;)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;typeof(ex) &lt;span style=&#34;color:#75715e&#34;&gt;# =&amp;gt; Expr&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;eval(ex)   &lt;span style=&#34;color:#75715e&#34;&gt;# =&amp;gt; 7&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;easy-package-install&#34;&gt;Easy package install&lt;/h2&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-julia&#34; data-lang=&#34;julia&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;using&lt;/span&gt; DataFrames&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# if not installed, prompted for installation, after &amp;#39;y&amp;#39; answer&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;df &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; DataFrame(name &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; [&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;Alice&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;Bob&amp;#34;&lt;/span&gt;], age &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; [&lt;span style=&#34;color:#ae81ff&#34;&gt;25&lt;/span&gt;, &lt;span style=&#34;color:#ae81ff&#34;&gt;30&lt;/span&gt;])&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;defaults-and-keywords-args&#34;&gt;Defaults and keywords args&lt;/h2&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-julia&#34; data-lang=&#34;julia&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;function&lt;/span&gt; greet(name, greeting &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;Hello&amp;#34;&lt;/span&gt;; punctuation &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;!&amp;#34;&lt;/span&gt;)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;$greeting&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;, &lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;$name$puctuation&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;end&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;greet(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;Julia&amp;#34;&lt;/span&gt;)  &lt;span style=&#34;color:#75715e&#34;&gt;# &amp;#34;Hello, Julia!&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;greet(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;world&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;Hi&amp;#34;&lt;/span&gt;; puctuation &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;.&amp;#34;&lt;/span&gt;) &lt;span style=&#34;color:#75715e&#34;&gt;# &amp;#34;Hi, world.&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;multi-threading&#34;&gt;Multi-threading&lt;/h2&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-julia&#34; data-lang=&#34;julia&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;function&lt;/span&gt; fib(n)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;n &lt;span style=&#34;color:#f92672&#34;&gt;&amp;lt;&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;2&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;return&lt;/span&gt; n&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;t &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; Threads&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;@spawn&lt;/span&gt; fib(n&lt;span style=&#34;color:#f92672&#34;&gt;-&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;2&lt;/span&gt;)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#66d9ef&#34;&gt;return&lt;/span&gt; fib(n&lt;span style=&#34;color:#f92672&#34;&gt;-&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;1&lt;/span&gt;) &lt;span style=&#34;color:#f92672&#34;&gt;+&lt;/span&gt; fetch(t)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;end&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;fib(&lt;span style=&#34;color:#ae81ff&#34;&gt;10&lt;/span&gt;)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Threads&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;nthreads() &lt;span style=&#34;color:#75715e&#34;&gt;# =&amp;gt; threads assigned to Julia&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;build-in-repl-modes&#34;&gt;Build-in REPL modes&lt;/h2&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-julia&#34; data-lang=&#34;julia&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# Default Julia mode, backspace from other modes&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# Press ] for package mode&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# Press ; for shell mode&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# Press ? for helps&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# Press $ for R mode, if RCall.jl is installed&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;code-introspection-simplified&#34;&gt;Code introspection (simplified)&lt;/h2&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-julia&#34; data-lang=&#34;julia&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;f(x, y) &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; x &lt;span style=&#34;color:#f92672&#34;&gt;+&lt;/span&gt; y&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;@code_warntype&lt;/span&gt; f(&lt;span style=&#34;color:#ae81ff&#34;&gt;1&lt;/span&gt;, &lt;span style=&#34;color:#ae81ff&#34;&gt;2&lt;/span&gt;)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;@code_llvm&lt;/span&gt; f(&lt;span style=&#34;color:#ae81ff&#34;&gt;1&lt;/span&gt;, &lt;span style=&#34;color:#ae81ff&#34;&gt;2&lt;/span&gt;)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;@code_native&lt;/span&gt; f(&lt;span style=&#34;color:#ae81ff&#34;&gt;1&lt;/span&gt;, &lt;span style=&#34;color:#ae81ff&#34;&gt;2&lt;/span&gt;)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description>
    </item>
    <item>
      <title>Running ASReml on Linux</title>
      <link>https://blog.xijiang.org/posts/running-asreml-on-linux/</link>
      <pubDate>Sat, 14 Feb 2026 16:28:34 +0100</pubDate>
      <guid>https://blog.xijiang.org/posts/running-asreml-on-linux/</guid>
      <description>&lt;p&gt;To run ASReml on a Linux system can be very tricky. This software has&#xA;built its reputation. It then don&amp;rsquo;t care very much about its&#xA;custormers. The following valid instructions were after many&#xA;combination tests. Had you any other alternatives, I would not&#xA;recommend ASReml, especially on Linux, where most serious computations&#xA;are carried on nowadays.&lt;/p&gt;&#xA;&lt;p&gt;The following instructions are to run a cloud instance of AlmaLinux9&#xA;one a AlmaLinux 10 system.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Resize root partition on an AlmaLinux OS</title>
      <link>https://blog.xijiang.org/posts/resize-root-partition-on-an-almalinux-os/</link>
      <pubDate>Fri, 13 Feb 2026 14:52:00 +0100</pubDate>
      <guid>https://blog.xijiang.org/posts/resize-root-partition-on-an-almalinux-os/</guid>
      <description>&lt;h1 id=&#34;resizing-root-partition-on-almalinux-10-lvm--xfs&#34;&gt;Resizing Root Partition on AlmaLinux 10 (LVM + XFS)&lt;/h1&gt;&#xA;&lt;p&gt;Since XFS filesystems cannot be shrunk, increasing the root partition requires backing up the &lt;code&gt;/home&lt;/code&gt; partition, deleting it, expanding &lt;code&gt;/root&lt;/code&gt;, and then recreating &lt;code&gt;/home&lt;/code&gt;.&lt;/p&gt;&#xA;&lt;h2 id=&#34;prerequisites&#34;&gt;Prerequisites&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;A backup location with enough space (e.g., &lt;code&gt;/mnt/w&lt;/code&gt;).&lt;/li&gt;&#xA;&lt;li&gt;Root or sudo access.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;hr&gt;&#xA;&lt;h2 id=&#34;step-1-backup-home-data&#34;&gt;Step 1: Backup Home Data&lt;/h2&gt;&#xA;&lt;p&gt;Backup all data from &lt;code&gt;/home&lt;/code&gt; to a temporary location.&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;sudo mkdir -p /mnt/w/home_backup&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;sudo rsync -aHAX --progress /home/ /mnt/w/home_backup/&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;step-2-unmount-and-remove-the-home-volume&#34;&gt;Step 2: Unmount and Remove the Home Volume&lt;/h2&gt;&#xA;&lt;p&gt;Ensure no processes are using &lt;code&gt;/home&lt;/code&gt;, then unmount it and remove the Logical Volume (LV).&lt;/p&gt;</description>
    </item>
    <item>
      <title>美国即将迎来麻疹大爆发</title>
      <link>https://blog.xijiang.org/posts/measles/</link>
      <pubDate>Tue, 10 Feb 2026 09:06:28 +0100</pubDate>
      <guid>https://blog.xijiang.org/posts/measles/</guid>
      <description>&lt;p&gt;【按：仓促写就】&lt;/p&gt;&#xA;&lt;p&gt;麻疹的疫苗相当有效，但是麻疹的 $R_0=12-18$，因此仍需要接种率在 97% 左&#xA;右才能达到群体免疫。与此相比，新冠的 $R_0$ 只有3-10，中国放开管制那几&#xA;个月新冠的疯狂传播不知道大家是否还有印象。&lt;/p&gt;&#xA;&lt;p&gt;这两个传染病的死亡率都不高，麻疹 0.1-0.2%，新冠 0.1-1%。但架不住人多。&#xA;如果没有疫苗保护，全世界的人死亡 0.1% 也是一个非常恐怖的数字。&lt;/p&gt;&#xA;&lt;p&gt;麻疹还有另外一个可怕之处就是它能清除人类的免疫记忆。这样即便一个人可以&#xA;在感染麻疹后活过来，但他/她要重新建立对各种传染病的免疫。往往在曾经的&#xA;免疫恢复前，有相当比例的已经挂了。这些人虽然不是直接死于麻疹，但因为曾&#xA;经感染麻疹则脱不了干系。&lt;/p&gt;&#xA;&lt;p&gt;麻疹疫苗与新冠 (RNA) 疫苗相比是长效的，新冠的疫苗只有半年多的有效期。&#xA;因此麻疹疫苗是最好的预防手段。&lt;/p&gt;&#xA;&lt;p&gt;上世纪有个英国医生在《柳叶刀》上发了一篇文章，说疫苗导致自闭。也不知道&#xA;这篇文章最终如何见刊，虽然这篇文章后来被撤下，但危害已经造成。这篇文章&#xA;成了近期反疫苗运动的重要背书。当然西方的反疫苗的历史由来已久，以后另文&#xA;再说。&lt;/p&gt;&#xA;&lt;p&gt;美国作为一个先进的发达国家，很早就成为消灭麻疹的国家。但题图可见，这一&#xA;届美国政府上台之后，反疫苗的小肯尼迪成了卫生部长，一位反疫苗的医生指导&#xA;全国免疫。长期的反疫苗运动终于开花结果，麻疹患者一年比一年多。今年才过&#xA;几周，麻疹患者已经接近去年的总数。&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;us-measles.jpg&#34; alt=&#34;&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;前几天有一个 MAGA 游行，人数不少，来自全美各地。后来发现其中有几位当日&#xA;感染麻疹，星星之火即将在美国燎原。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Local AI tools</title>
      <link>https://blog.xijiang.org/posts/local-ai-tools/</link>
      <pubDate>Thu, 05 Feb 2026 12:02:39 +0100</pubDate>
      <guid>https://blog.xijiang.org/posts/local-ai-tools/</guid>
      <description>&lt;p&gt;I am not an expert about nodejs. But gemini and copilot cli are&#xA;written in nodejs. One annoying issue before is that they have to be&#xA;installed globally which require root privileges. This post shows the&#xA;step to install them locally.&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;mkdir -p ~/Music/ai-tools&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;npm init -y&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;npm install @google/gemini-cli @github/copilot&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;cd ~/.local/bin&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;ln -s ~/Music/ai-tools/node_modules/.bin/gemini .&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;ln -s ~/Music/ai-tools/node_modules/.bin/copilot .&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;In the same directory, create a file called &lt;code&gt;update-cli-tools.sh&lt;/code&gt;.&lt;/p&gt;</description>
    </item>
    <item>
      <title>PDF to MarkDown</title>
      <link>https://blog.xijiang.org/posts/pdf-to-markdown/</link>
      <pubDate>Wed, 04 Feb 2026 13:03:52 +0100</pubDate>
      <guid>https://blog.xijiang.org/posts/pdf-to-markdown/</guid>
      <description>&lt;p&gt;We may have some old documents that are only on paper. The following&#xA;procedure is to convert them into MarkDown format. The latter can be&#xA;easily converted to easy to handle PDF files. If you have some graphic&#xA;card like mine, which is GeForce RTX 3060 Ti, with 12GiB VRAM, or&#xA;better, you can follow the steps below.&lt;/p&gt;&#xA;&lt;p&gt;The first step is to scan the papers into a PDF file. Then&lt;/p&gt;</description>
    </item>
    <item>
      <title>Setting up Hugo</title>
      <link>https://blog.xijiang.org/posts/setting-up-hugo/</link>
      <pubDate>Wed, 04 Feb 2026 06:35:36 +0100</pubDate>
      <guid>https://blog.xijiang.org/posts/setting-up-hugo/</guid>
      <description>&lt;h2 id=&#34;setting-up-hugo&#34;&gt;Setting up Hugo&lt;/h2&gt;&#xA;&lt;p&gt;Hugo generate static web files. This is how this blog was&#xA;compiled. Hugo can be installed locally. The generated contents are&#xA;synchronized to some remote servers.&lt;/p&gt;&#xA;&lt;h3 id=&#34;setting-up-the-remote&#34;&gt;Setting up the remote&lt;/h3&gt;&#xA;&lt;p&gt;A dedicated folder on my home server was setup to host the compiled&#xA;hugo files. The details are not shown here.&lt;/p&gt;&#xA;&lt;h3 id=&#34;setting-up-the-local&#34;&gt;Setting up the local&lt;/h3&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;sudo dnf install hugo&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# in the path where you want to save the blogs&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;hugo new site blog&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;cd blog&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;git init&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;git add hugo.toml&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;hugo new content content/posts/hugo.md &lt;span style=&#34;color:#75715e&#34;&gt;# this post&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;touch deploy.sh&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;git add deploy.sh&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ul&gt;&#xA;&lt;li&gt;deploy.sh&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;#!/usr/bin/env bash&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;hugo &lt;span style=&#34;color:#f92672&#34;&gt;&amp;amp;&amp;amp;&lt;/span&gt; rsync -avz --delete public/ remote:/var/www/blog/&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ul&gt;&#xA;&lt;li&gt;to deploy&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;./deploy.sh&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;$e^{i\pi}+1=0$&lt;/p&gt;</description>
    </item>
  </channel>
</rss>
