<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    <title>Frytea</title>
    <link>https://frytea.com/</link>
    <description>Recent content on Frytea</description>
    <image>
      <title>Frytea</title>
      <url>https://frytea.com/%3Clink%20or%20path%20of%20image%20for%20opengraph,%20twitter-cards%3E</url>
      <link>https://frytea.com/%3Clink%20or%20path%20of%20image%20for%20opengraph,%20twitter-cards%3E</link>
    </image>
    <generator>Hugo</generator>
    <language>zh-cn</language>
    <lastBuildDate>Fri, 17 Apr 2026 01:22:03 +0000</lastBuildDate>
    <atom:link href="https://frytea.com/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>友链</title>
      <link>https://frytea.com/friends/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://frytea.com/friends/</guid>
      <description>&lt;h3 class=&#34;friend-section-title&#34;&gt;友链区&lt;/h3&gt;&lt;div class=&#34;friend-grid&#34;&gt;&lt;a target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34; href=&#34;https://www.noisky.cn/&#34; title=&#34;Noisky&#34; class=&#34;friendurl&#34;&gt;
  &lt;div class=&#34;frienddiv&#34;&gt;
    &lt;div class=&#34;frienddivleft&#34;&gt;&lt;img class=&#34;myfriend&#34; src=&#34;https://imagehost-cdn.frytea.com/images/2020/01/31/20190505211940cdf2ef54c83ece56.png&#34; alt=&#34;Noisky avatar&#34; loading=&#34;lazy&#34; /&gt;&lt;/div&gt;
    &lt;div class=&#34;frienddivright&#34;&gt;
      &lt;div class=&#34;friendname&#34;&gt;Noisky&lt;/div&gt;
      &lt;div class=&#34;friendinfo&#34;&gt;一个神秘的人&lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/a&gt;
&lt;a target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34; href=&#34;https://removeif.github.io&#34; title=&#34;辣椒の酱&#34; class=&#34;friendurl&#34;&gt;
  &lt;div class=&#34;frienddiv&#34;&gt;
    &lt;div class=&#34;frienddivleft&#34;&gt;&lt;img class=&#34;myfriend&#34; src=&#34;https://removeif.github.io/images/tuzi.jpg&#34; alt=&#34;辣椒の酱 avatar&#34; loading=&#34;lazy&#34; /&gt;&lt;/div&gt;
    &lt;div class=&#34;frienddivright&#34;&gt;
      &lt;div class=&#34;friendname&#34;&gt;辣椒の酱&lt;/div&gt;
      &lt;div class=&#34;friendinfo&#34;&gt;一个神秘的人&lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/a&gt;
&lt;a target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34; href=&#34;https://www.moerats.com/&#34; title=&#34;Rat&amp;#39;s Blog&#34; class=&#34;friendurl&#34;&gt;
  &lt;div class=&#34;frienddiv&#34;&gt;
    &lt;div class=&#34;frienddivleft&#34;&gt;&lt;img class=&#34;myfriend&#34; src=&#34;https://www.moerats.com/usr/picture/rats.png&#34; alt=&#34;Rat&amp;#39;s Blog avatar&#34; loading=&#34;lazy&#34; /&gt;&lt;/div&gt;
    &lt;div class=&#34;frienddivright&#34;&gt;
      &lt;div class=&#34;friendname&#34;&gt;Rat&amp;#39;s Blog&lt;/div&gt;
      &lt;div class=&#34;friendinfo&#34;&gt;一个神秘的人&lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/a&gt;
&lt;a target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34; href=&#34;https://logi.im&#34; title=&#34;LOGI&#34; class=&#34;friendurl&#34;&gt;
  &lt;div class=&#34;frienddiv&#34;&gt;
    &lt;div class=&#34;frienddivleft&#34;&gt;&lt;img class=&#34;myfriend&#34; src=&#34;https://ae01.alicdn.com/kf/UTB8q2lYPFfFXKJk43Otxh4IPFXaQ.jpeg&#34; alt=&#34;LOGI avatar&#34; loading=&#34;lazy&#34; /&gt;&lt;/div&gt;
    &lt;div class=&#34;frienddivright&#34;&gt;
      &lt;div class=&#34;friendname&#34;&gt;LOGI&lt;/div&gt;
      &lt;div class=&#34;friendinfo&#34;&gt;一个神秘的人&lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/a&gt;
&lt;a target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34; href=&#34;https://yuzhouwan.com&#34; title=&#34;宇宙湾&#34; class=&#34;friendurl&#34;&gt;
  &lt;div class=&#34;frienddiv&#34;&gt;
    &lt;div class=&#34;frienddivleft&#34;&gt;&lt;img class=&#34;myfriend&#34; src=&#34;https://yuzhouwan.com/yuzhouwan_logo_128x128.ico&#34; alt=&#34;宇宙湾 avatar&#34; loading=&#34;lazy&#34; /&gt;&lt;/div&gt;
    &lt;div class=&#34;frienddivright&#34;&gt;
      &lt;div class=&#34;friendname&#34;&gt;宇宙湾&lt;/div&gt;
      &lt;div class=&#34;friendinfo&#34;&gt;大数据和人工智能的原创文章&lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/a&gt;
&lt;a target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34; href=&#34;https://p3terx.com&#34; title=&#34;P3TERX ZONE&#34; class=&#34;friendurl&#34;&gt;
  &lt;div class=&#34;frienddiv&#34;&gt;
    &lt;div class=&#34;frienddivleft&#34;&gt;&lt;img class=&#34;myfriend&#34; src=&#34;https://s.gravatar.com/avatar/c42fdfa8aca47ec27a7c35dfa7d1dc51?s=200&#34; alt=&#34;P3TERX ZONE avatar&#34; loading=&#34;lazy&#34; /&gt;&lt;/div&gt;
    &lt;div class=&#34;frienddivright&#34;&gt;
      &lt;div class=&#34;friendname&#34;&gt;P3TERX ZONE&lt;/div&gt;
      &lt;div class=&#34;friendinfo&#34;&gt;一个神秘的人&lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/a&gt;
&lt;a target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34; href=&#34;https://blog.mehoon.com&#34; title=&#34;Hong&amp;#39;s Blog&#34; class=&#34;friendurl&#34;&gt;
  &lt;div class=&#34;frienddiv&#34;&gt;
    &lt;div class=&#34;frienddivleft&#34;&gt;&lt;img class=&#34;myfriend&#34; src=&#34;https://blog.mehoon.com/wp-content/uploads/2021/06/cropped-avatar.jpg&#34; alt=&#34;Hong&amp;#39;s Blog avatar&#34; loading=&#34;lazy&#34; /&gt;&lt;/div&gt;
    &lt;div class=&#34;frienddivright&#34;&gt;
      &lt;div class=&#34;friendname&#34;&gt;Hong&amp;#39;s Blog&lt;/div&gt;
      &lt;div class=&#34;friendinfo&#34;&gt;一个神秘的人&lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/a&gt;
&lt;a target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34; href=&#34;https://www.imaegoo.com&#34; title=&#34;iMaeGoo&amp;#39;s Blog&#34; class=&#34;friendurl&#34;&gt;
  &lt;div class=&#34;frienddiv&#34;&gt;
    &lt;div class=&#34;frienddivleft&#34;&gt;&lt;img class=&#34;myfriend&#34; src=&#34;https://www.imaegoo.com/images/avatar.jpg&#34; alt=&#34;iMaeGoo&amp;#39;s Blog avatar&#34; loading=&#34;lazy&#34; /&gt;&lt;/div&gt;
    &lt;div class=&#34;frienddivright&#34;&gt;
      &lt;div class=&#34;friendname&#34;&gt;iMaeGoo&amp;#39;s Blog&lt;/div&gt;
      &lt;div class=&#34;friendinfo&#34;&gt;一个神秘的人&lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/a&gt;
&lt;a target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34; href=&#34;https://yoyling.com&#34; title=&#34;YOYLING&#34; class=&#34;friendurl&#34;&gt;
  &lt;div class=&#34;frienddiv&#34;&gt;
    &lt;div class=&#34;frienddivleft&#34;&gt;&lt;img class=&#34;myfriend&#34; src=&#34;https://yoyling.com/favicon.png&#34; alt=&#34;YOYLING avatar&#34; loading=&#34;lazy&#34; /&gt;&lt;/div&gt;
    &lt;div class=&#34;frienddivright&#34;&gt;
      &lt;div class=&#34;friendname&#34;&gt;YOYLING&lt;/div&gt;
      &lt;div class=&#34;friendinfo&#34;&gt;一个神秘的人&lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/a&gt;
&lt;a target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34; href=&#34;https://blog.uiharu.top/&#34; title=&#34;Kitcham 的归墟&#34; class=&#34;friendurl&#34;&gt;
  &lt;div class=&#34;frienddiv&#34;&gt;
    &lt;div class=&#34;frienddivleft&#34;&gt;&lt;img class=&#34;myfriend&#34; src=&#34;https://cdn.uiharu.top/blog/home/img/avatar.png&#34; alt=&#34;Kitcham 的归墟 avatar&#34; loading=&#34;lazy&#34; /&gt;&lt;/div&gt;
    &lt;div class=&#34;frienddivright&#34;&gt;
      &lt;div class=&#34;friendname&#34;&gt;Kitcham 的归墟&lt;/div&gt;
      &lt;div class=&#34;friendinfo&#34;&gt;一个神秘的人&lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/a&gt;
&lt;a target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34; href=&#34;https://yvii.cn&#34; title=&#34;乙未博客&#34; class=&#34;friendurl&#34;&gt;
  &lt;div class=&#34;frienddiv&#34;&gt;
    &lt;div class=&#34;frienddivleft&#34;&gt;&lt;img class=&#34;myfriend&#34; src=&#34;https://yvii.cn/img/favicon.png&#34; alt=&#34;乙未博客 avatar&#34; loading=&#34;lazy&#34; /&gt;&lt;/div&gt;
    &lt;div class=&#34;frienddivright&#34;&gt;
      &lt;div class=&#34;friendname&#34;&gt;乙未博客&lt;/div&gt;
      &lt;div class=&#34;friendinfo&#34;&gt;一个神秘的人&lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/a&gt;
&lt;a target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34; href=&#34;https://www.mole9630.top&#34; title=&#34;摩尔の镇 | モル·町&#34; class=&#34;friendurl&#34;&gt;
  &lt;div class=&#34;frienddiv&#34;&gt;
    &lt;div class=&#34;frienddivleft&#34;&gt;&lt;img class=&#34;myfriend&#34; src=&#34;https://img.mole9630.top/blog-logo.png&#34; alt=&#34;摩尔の镇 | モル·町 avatar&#34; loading=&#34;lazy&#34; /&gt;&lt;/div&gt;
    &lt;div class=&#34;frienddivright&#34;&gt;
      &lt;div class=&#34;friendname&#34;&gt;摩尔の镇 | モル·町&lt;/div&gt;
      &lt;div class=&#34;friendinfo&#34;&gt;一个神秘的人&lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/a&gt;
&lt;a target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34; href=&#34;https://www.stubbornhuang.com&#34; title=&#34;StubbornHuang&amp;#39;s Blog&#34; class=&#34;friendurl&#34;&gt;
  &lt;div class=&#34;frienddiv&#34;&gt;
    &lt;div class=&#34;frienddivleft&#34;&gt;&lt;img class=&#34;myfriend&#34; src=&#34;https://www.stubbornhuang.com/wp-content/uploads/2019/11/2019112216333826.png&#34; alt=&#34;StubbornHuang&amp;#39;s Blog avatar&#34; loading=&#34;lazy&#34; /&gt;&lt;/div&gt;
    &lt;div class=&#34;frienddivright&#34;&gt;
      &lt;div class=&#34;friendname&#34;&gt;StubbornHuang&amp;#39;s Blog&lt;/div&gt;
      &lt;div class=&#34;friendinfo&#34;&gt;一个神秘的人&lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/a&gt;
&lt;a target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34; href=&#34;https://borber.vercel.app&#34; title=&#34;BORBER&#34; class=&#34;friendurl&#34;&gt;
  &lt;div class=&#34;frienddiv&#34;&gt;
    &lt;div class=&#34;frienddivleft&#34;&gt;&lt;img class=&#34;myfriend&#34; src=&#34;https://cdn.jsdelivr.net/gh/Borber/PublicPic1/headImg/head.png&#34; alt=&#34;BORBER avatar&#34; loading=&#34;lazy&#34; /&gt;&lt;/div&gt;
    &lt;div class=&#34;frienddivright&#34;&gt;
      &lt;div class=&#34;friendname&#34;&gt;BORBER&lt;/div&gt;
      &lt;div class=&#34;friendinfo&#34;&gt;一个神秘的人&lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/a&gt;
&lt;a target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34; href=&#34;https://x.iqimeng.com&#34; title=&#34;爱·绮梦&#34; class=&#34;friendurl&#34;&gt;
  &lt;div class=&#34;frienddiv&#34;&gt;
    &lt;div class=&#34;frienddivleft&#34;&gt;&lt;img class=&#34;myfriend&#34; src=&#34;https://m.iqimeng.com/images/avatar.jpg&#34; alt=&#34;爱·绮梦 avatar&#34; loading=&#34;lazy&#34; /&gt;&lt;/div&gt;
    &lt;div class=&#34;frienddivright&#34;&gt;
      &lt;div class=&#34;friendname&#34;&gt;爱·绮梦&lt;/div&gt;
      &lt;div class=&#34;friendinfo&#34;&gt;一个神秘的人&lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/a&gt;
&lt;a target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34; href=&#34;https://innei.in/&#34; title=&#34;静かな森&#34; class=&#34;friendurl&#34;&gt;
  &lt;div class=&#34;frienddiv&#34;&gt;
    &lt;div class=&#34;frienddivleft&#34;&gt;&lt;img class=&#34;myfriend&#34; src=&#34;https://imagehost-cdn.frytea.com/images/2021/09/07/202109070948567de3396c577ec6b9.png&#34; alt=&#34;静かな森 avatar&#34; loading=&#34;lazy&#34; /&gt;&lt;/div&gt;
    &lt;div class=&#34;frienddivright&#34;&gt;
      &lt;div class=&#34;friendname&#34;&gt;静かな森&lt;/div&gt;
      &lt;div class=&#34;friendinfo&#34;&gt;A NodeJS Full Stack Developer. An independent developer coding with love.&lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/a&gt;
&lt;a target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34; href=&#34;https://colsrch.cn&#34; title=&#34;Colsrch&#34; class=&#34;friendurl&#34;&gt;
  &lt;div class=&#34;frienddiv&#34;&gt;
    &lt;div class=&#34;frienddivleft&#34;&gt;&lt;img class=&#34;myfriend&#34; src=&#34;https://cdn.jsdelivr.net/gh/Colsrch/images/Colsrch/avatar.jpg&#34; alt=&#34;Colsrch avatar&#34; loading=&#34;lazy&#34; /&gt;&lt;/div&gt;
    &lt;div class=&#34;frienddivright&#34;&gt;
      &lt;div class=&#34;friendname&#34;&gt;Colsrch&lt;/div&gt;
      &lt;div class=&#34;friendinfo&#34;&gt;一个神秘的人&lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/a&gt;
&lt;a target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34; href=&#34;https://www.dbkuaizi.com&#34; title=&#34;两双筷子&#34; class=&#34;friendurl&#34;&gt;
  &lt;div class=&#34;frienddiv&#34;&gt;
    &lt;div class=&#34;frienddivleft&#34;&gt;&lt;img class=&#34;myfriend&#34; src=&#34;https://cdn.dbkuaizi.com/static/image/avatar.jpg&#34; alt=&#34;两双筷子 avatar&#34; loading=&#34;lazy&#34; /&gt;&lt;/div&gt;
    &lt;div class=&#34;frienddivright&#34;&gt;
      &lt;div class=&#34;friendname&#34;&gt;两双筷子&lt;/div&gt;
      &lt;div class=&#34;friendinfo&#34;&gt;一个神秘的人&lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/a&gt;
&lt;a target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34; href=&#34;https://chenhe.me&#34; title=&#34;晨鹤小站&#34; class=&#34;friendurl&#34;&gt;
  &lt;div class=&#34;frienddiv&#34;&gt;
    &lt;div class=&#34;frienddivleft&#34;&gt;&lt;img class=&#34;myfriend&#34; src=&#34;https://gravatar.loli.net/avatar/e343865a5581e33479a3d6791891101e?s=200&#34; alt=&#34;晨鹤小站 avatar&#34; loading=&#34;lazy&#34; /&gt;&lt;/div&gt;
    &lt;div class=&#34;frienddivright&#34;&gt;
      &lt;div class=&#34;friendname&#34;&gt;晨鹤小站&lt;/div&gt;
      &lt;div class=&#34;friendinfo&#34;&gt;一个神秘的人&lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/a&gt;
&lt;a target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34; href=&#34;https://wiki.eryajf.net/&#34; title=&#34;二丫讲梵&#34; class=&#34;friendurl&#34;&gt;
  &lt;div class=&#34;frienddiv&#34;&gt;
    &lt;div class=&#34;frienddivleft&#34;&gt;&lt;img class=&#34;myfriend&#34; src=&#34;https://wiki.eryajf.net/img/logo.png&#34; alt=&#34;二丫讲梵 avatar&#34; loading=&#34;lazy&#34; /&gt;&lt;/div&gt;
    &lt;div class=&#34;frienddivright&#34;&gt;
      &lt;div class=&#34;friendname&#34;&gt;二丫讲梵&lt;/div&gt;
      &lt;div class=&#34;friendinfo&#34;&gt;一个神秘的人&lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/a&gt;
&lt;a target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34; href=&#34;https://www.machunjie.com&#34; title=&#34;马春杰杰博客&#34; class=&#34;friendurl&#34;&gt;
  &lt;div class=&#34;frienddiv&#34;&gt;
    &lt;div class=&#34;frienddivleft&#34;&gt;&lt;img class=&#34;myfriend&#34; src=&#34;https://ypyssl.machunjie.com/logo.png&#34; alt=&#34;马春杰杰博客 avatar&#34; loading=&#34;lazy&#34; /&gt;&lt;/div&gt;
    &lt;div class=&#34;frienddivright&#34;&gt;
      &lt;div class=&#34;friendname&#34;&gt;马春杰杰博客&lt;/div&gt;
      &lt;div class=&#34;friendinfo&#34;&gt;一个神秘的人&lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/a&gt;
&lt;a target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34; href=&#34;https://www.hrwhisper.me/&#34; title=&#34;细语呢喃&#34; class=&#34;friendurl&#34;&gt;
  &lt;div class=&#34;frienddiv&#34;&gt;
    &lt;div class=&#34;frienddivleft&#34;&gt;&lt;img class=&#34;myfriend&#34; src=&#34;https://blog.frytea.com/usr/uploads/2019/11/1809897456.png&#34; alt=&#34;细语呢喃 avatar&#34; loading=&#34;lazy&#34; /&gt;&lt;/div&gt;
    &lt;div class=&#34;frienddivright&#34;&gt;
      &lt;div class=&#34;friendname&#34;&gt;细语呢喃&lt;/div&gt;
      &lt;div class=&#34;friendinfo&#34;&gt;一个神秘的人&lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/a&gt;
&lt;a target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34; href=&#34;https://blog.einverne.info&#34; title=&#34;Verne&#34; class=&#34;friendurl&#34;&gt;
  &lt;div class=&#34;frienddiv&#34;&gt;
    &lt;div class=&#34;frienddivleft&#34;&gt;&lt;img class=&#34;myfriend&#34; src=&#34;https://imagehost-cdn.frytea.com/images/2023/08/13/12fxeub-2.png&#34; alt=&#34;Verne avatar&#34; loading=&#34;lazy&#34; /&gt;&lt;/div&gt;
    &lt;div class=&#34;frienddivright&#34;&gt;
      &lt;div class=&#34;friendname&#34;&gt;Verne&lt;/div&gt;
      &lt;div class=&#34;friendinfo&#34;&gt;一个神秘的人&lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/a&gt;
&lt;a target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34; href=&#34;https://webfem.com&#34; title=&#34;webfem&#34; class=&#34;friendurl&#34;&gt;
  &lt;div class=&#34;frienddiv&#34;&gt;
    &lt;div class=&#34;frienddivleft&#34;&gt;&lt;div class=&#34;myfriend myfriend-fallback&#34; role=&#34;img&#34; aria-label=&#34;webfem 默认头像&#34;&gt;友&lt;/div&gt;&lt;/div&gt;
    &lt;div class=&#34;frienddivright&#34;&gt;
      &lt;div class=&#34;friendname&#34;&gt;webfem&lt;/div&gt;
      &lt;div class=&#34;friendinfo&#34;&gt;做有价值的博客&lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/a&gt;
&lt;a target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34; href=&#34;https://blog.perass.com/&#34; title=&#34;左手平凡&#34; class=&#34;friendurl&#34;&gt;
  &lt;div class=&#34;frienddiv&#34;&gt;
    &lt;div class=&#34;frienddivleft&#34;&gt;&lt;div class=&#34;myfriend myfriend-fallback&#34; role=&#34;img&#34; aria-label=&#34;左手平凡 默认头像&#34;&gt;友&lt;/div&gt;&lt;/div&gt;
    &lt;div class=&#34;frienddivright&#34;&gt;
      &lt;div class=&#34;friendname&#34;&gt;左手平凡&lt;/div&gt;
      &lt;div class=&#34;friendinfo&#34;&gt;程序猿、垃圾佬的个人博客。&lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/a&gt;
&lt;a target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34; href=&#34;https://qixidi.top/&#34; title=&#34;栖息地&#34; class=&#34;friendurl&#34;&gt;
  &lt;div class=&#34;frienddiv&#34;&gt;
    &lt;div class=&#34;frienddivleft&#34;&gt;&lt;img class=&#34;myfriend&#34; src=&#34;https://qixidi.top/img/logo.png&#34; alt=&#34;栖息地 avatar&#34; loading=&#34;lazy&#34; /&gt;&lt;/div&gt;
    &lt;div class=&#34;frienddivright&#34;&gt;
      &lt;div class=&#34;friendname&#34;&gt;栖息地&lt;/div&gt;
      &lt;div class=&#34;friendinfo&#34;&gt;他强任他强，清风拂山岗。&lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/a&gt;
&lt;a target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34; href=&#34;https://blog.dejavu.moe/&#34; title=&#34;Dejavu&amp;#39;s Blog&#34; class=&#34;friendurl&#34;&gt;
  &lt;div class=&#34;frienddiv&#34;&gt;
    &lt;div class=&#34;frienddivleft&#34;&gt;&lt;img class=&#34;myfriend&#34; src=&#34;https://blog.dejavu.moe/avatar.webp&#34; alt=&#34;Dejavu&amp;#39;s Blog avatar&#34; loading=&#34;lazy&#34; /&gt;&lt;/div&gt;
    &lt;div class=&#34;frienddivright&#34;&gt;
      &lt;div class=&#34;friendname&#34;&gt;Dejavu&amp;#39;s Blog&lt;/div&gt;
      &lt;div class=&#34;friendinfo&#34;&gt;请用绝对的理智和清醒的头脑克制心中的爱与难过&lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/a&gt;
&lt;a target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34; href=&#34;https://mskclover.com&#34; title=&#34;叶子的花园&#34; class=&#34;friendurl&#34;&gt;
  &lt;div class=&#34;frienddiv&#34;&gt;
    &lt;div class=&#34;frienddivleft&#34;&gt;&lt;div class=&#34;myfriend myfriend-fallback&#34; role=&#34;img&#34; aria-label=&#34;叶子的花园 默认头像&#34;&gt;友&lt;/div&gt;&lt;/div&gt;
    &lt;div class=&#34;frienddivright&#34;&gt;
      &lt;div class=&#34;friendname&#34;&gt;叶子的花园&lt;/div&gt;
      &lt;div class=&#34;friendinfo&#34;&gt;靡不有初，鲜克有终&lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/a&gt;
&lt;a target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34; href=&#34;https://blog.laoda.de&#34; title=&#34;我不是咕咕鸽&#34; class=&#34;friendurl&#34;&gt;
  &lt;div class=&#34;frienddiv&#34;&gt;
    &lt;div class=&#34;frienddivleft&#34;&gt;&lt;div class=&#34;myfriend myfriend-fallback&#34; role=&#34;img&#34; aria-label=&#34;我不是咕咕鸽 默认头像&#34;&gt;友&lt;/div&gt;&lt;/div&gt;
    &lt;div class=&#34;frienddivright&#34;&gt;
      &lt;div class=&#34;friendname&#34;&gt;我不是咕咕鸽&lt;/div&gt;
      &lt;div class=&#34;friendinfo&#34;&gt;一个神秘的人&lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/a&gt;
&lt;a target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34; href=&#34;https://www.vps234.com&#34; title=&#34;VPS234&#34; class=&#34;friendurl&#34;&gt;
  &lt;div class=&#34;frienddiv&#34;&gt;
    &lt;div class=&#34;frienddivleft&#34;&gt;&lt;div class=&#34;myfriend myfriend-fallback&#34; role=&#34;img&#34; aria-label=&#34;VPS234 默认头像&#34;&gt;友&lt;/div&gt;&lt;/div&gt;
    &lt;div class=&#34;frienddivright&#34;&gt;
      &lt;div class=&#34;friendname&#34;&gt;VPS234&lt;/div&gt;
      &lt;div class=&#34;friendinfo&#34;&gt;一个神秘的人&lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/a&gt;
&lt;a target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34; href=&#34;https://blog.lyh130.com/&#34; title=&#34;老猫博客&#34; class=&#34;friendurl&#34;&gt;
  &lt;div class=&#34;frienddiv&#34;&gt;
    &lt;div class=&#34;frienddivleft&#34;&gt;&lt;img class=&#34;myfriend&#34; src=&#34;https://imagehost-cdn.frytea.com/images/2023/08/13/12fxeub-2.png&#34; alt=&#34;老猫博客 avatar&#34; loading=&#34;lazy&#34; /&gt;&lt;/div&gt;
    &lt;div class=&#34;frienddivright&#34;&gt;
      &lt;div class=&#34;friendname&#34;&gt;老猫博客&lt;/div&gt;
      &lt;div class=&#34;friendinfo&#34;&gt;一个神秘的人&lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/a&gt;
&lt;a target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34; href=&#34;https://www.sulvblog.cn&#34; title=&#34;Sulv&amp;#39;s Blog&#34; class=&#34;friendurl&#34;&gt;
  &lt;div class=&#34;frienddiv&#34;&gt;
    &lt;div class=&#34;frienddivleft&#34;&gt;&lt;img class=&#34;myfriend&#34; src=&#34;https://www.sulvblog.cn/img/Q.gif&#34; alt=&#34;Sulv&amp;#39;s Blog avatar&#34; loading=&#34;lazy&#34; /&gt;&lt;/div&gt;
    &lt;div class=&#34;frienddivright&#34;&gt;
      &lt;div class=&#34;friendname&#34;&gt;Sulv&amp;#39;s Blog&lt;/div&gt;
      &lt;div class=&#34;friendinfo&#34;&gt;一个神秘的人&lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/a&gt;
&lt;a target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34; href=&#34;https://www.wshunli.com&#34; title=&#34;wshunli&amp;#39;s Blog&#34; class=&#34;friendurl&#34;&gt;
  &lt;div class=&#34;frienddiv&#34;&gt;
    &lt;div class=&#34;frienddivleft&#34;&gt;&lt;img class=&#34;myfriend&#34; src=&#34;https://cdn.wshunli.com/logo.png&#34; alt=&#34;wshunli&amp;#39;s Blog avatar&#34; loading=&#34;lazy&#34; /&gt;&lt;/div&gt;
    &lt;div class=&#34;frienddivright&#34;&gt;
      &lt;div class=&#34;friendname&#34;&gt;wshunli&amp;#39;s Blog&lt;/div&gt;
      &lt;div class=&#34;friendinfo&#34;&gt;一个神秘的人&lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/a&gt;
&lt;a target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34; href=&#34;https://michael728.github.io/think/&#34; title=&#34;Michael翔&#34; class=&#34;friendurl&#34;&gt;
  &lt;div class=&#34;frienddiv&#34;&gt;
    &lt;div class=&#34;frienddivleft&#34;&gt;&lt;img class=&#34;myfriend&#34; src=&#34;https://michael728.github.io/images/logo.jpg&#34; alt=&#34;Michael翔 avatar&#34; loading=&#34;lazy&#34; /&gt;&lt;/div&gt;
    &lt;div class=&#34;frienddivright&#34;&gt;
      &lt;div class=&#34;friendname&#34;&gt;Michael翔&lt;/div&gt;
      &lt;div class=&#34;friendinfo&#34;&gt;一个神秘的人&lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/a&gt;
&lt;a target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34; href=&#34;https://www.huluohu.com&#34; title=&#34;胡萝虎的博客&#34; class=&#34;friendurl&#34;&gt;
  &lt;div class=&#34;frienddiv&#34;&gt;
    &lt;div class=&#34;frienddivleft&#34;&gt;&lt;img class=&#34;myfriend&#34; src=&#34;https://img.huluohu.com/avator_new.png&#34; alt=&#34;胡萝虎的博客 avatar&#34; loading=&#34;lazy&#34; /&gt;&lt;/div&gt;
    &lt;div class=&#34;frienddivright&#34;&gt;
      &lt;div class=&#34;friendname&#34;&gt;胡萝虎的博客&lt;/div&gt;
      &lt;div class=&#34;friendinfo&#34;&gt;一个神秘的人&lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/a&gt;
&lt;a target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34; href=&#34;https://www.nn.ci&#34; title=&#34;Xhofe&amp;#39;s Blog&#34; class=&#34;friendurl&#34;&gt;
  &lt;div class=&#34;frienddiv&#34;&gt;
    &lt;div class=&#34;frienddivleft&#34;&gt;&lt;img class=&#34;myfriend&#34; src=&#34;https://img.xhofe.top/2020/12/07/f6e43dc79d74a.png&#34; alt=&#34;Xhofe&amp;#39;s Blog avatar&#34; loading=&#34;lazy&#34; /&gt;&lt;/div&gt;
    &lt;div class=&#34;frienddivright&#34;&gt;
      &lt;div class=&#34;friendname&#34;&gt;Xhofe&amp;#39;s Blog&lt;/div&gt;
      &lt;div class=&#34;friendinfo&#34;&gt;一个神秘的人&lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/a&gt;
&lt;a target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34; href=&#34;http://www.brewin073.top&#34; title=&#34;之石先生的小屋&#34; class=&#34;friendurl&#34;&gt;
  &lt;div class=&#34;frienddiv&#34;&gt;
    &lt;div class=&#34;frienddivleft&#34;&gt;&lt;img class=&#34;myfriend&#34; src=&#34;https://blog.frytea.com/usr/uploads/2019/11/1809897456.png&#34; alt=&#34;之石先生的小屋 avatar&#34; loading=&#34;lazy&#34; /&gt;&lt;/div&gt;
    &lt;div class=&#34;frienddivright&#34;&gt;
      &lt;div class=&#34;friendname&#34;&gt;之石先生的小屋&lt;/div&gt;
      &lt;div class=&#34;friendinfo&#34;&gt;一个神秘的人&lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/a&gt;
&lt;a target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34; href=&#34;https://www.kiwiape.cn&#34; title=&#34;猕猴の那年记忆&#34; class=&#34;friendurl&#34;&gt;
  &lt;div class=&#34;frienddiv&#34;&gt;
    &lt;div class=&#34;frienddivleft&#34;&gt;&lt;img class=&#34;myfriend&#34; src=&#34;https://kiwiape.cn/logo.jpg&#34; alt=&#34;猕猴の那年记忆 avatar&#34; loading=&#34;lazy&#34; /&gt;&lt;/div&gt;
    &lt;div class=&#34;frienddivright&#34;&gt;
      &lt;div class=&#34;friendname&#34;&gt;猕猴の那年记忆&lt;/div&gt;
      &lt;div class=&#34;friendinfo&#34;&gt;一个神秘的人&lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/a&gt;
&lt;/div&gt;&lt;h3 class=&#34;friend-section-title&#34;&gt;收藏区&lt;/h3&gt;&lt;div class=&#34;friend-grid&#34;&gt;&lt;a target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34; href=&#34;http://www.kkyyhh96.site&#34; title=&#34;康雨豪&#34; class=&#34;friendurl&#34;&gt;
  &lt;div class=&#34;frienddiv&#34;&gt;
    &lt;div class=&#34;frienddivleft&#34;&gt;&lt;img class=&#34;myfriend&#34; src=&#34;https://imagehost-cdn.frytea.com/images/2022/01/21/imageb416210dda9a4e0e.png&#34; alt=&#34;康雨豪 avatar&#34; loading=&#34;lazy&#34; /&gt;&lt;/div&gt;
    &lt;div class=&#34;frienddivright&#34;&gt;
      &lt;div class=&#34;friendname&#34;&gt;康雨豪&lt;/div&gt;
      &lt;div class=&#34;friendinfo&#34;&gt;一个神秘的人&lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/a&gt;
&lt;a target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34; href=&#34;https://shenyiming.life&#34; title=&#34;相位&#34; class=&#34;friendurl&#34;&gt;
  &lt;div class=&#34;frienddiv&#34;&gt;
    &lt;div class=&#34;frienddivleft&#34;&gt;&lt;img class=&#34;myfriend&#34; src=&#34;https://shenyiming.life/apple-touch-icon.png&#34; alt=&#34;相位 avatar&#34; loading=&#34;lazy&#34; /&gt;&lt;/div&gt;
    &lt;div class=&#34;frienddivright&#34;&gt;
      &lt;div class=&#34;friendname&#34;&gt;相位&lt;/div&gt;
      &lt;div class=&#34;friendinfo&#34;&gt;一个神秘的人&lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/a&gt;
&lt;a target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34; href=&#34;https://k7tmiz.com/&#34; title=&#34;k7tmiz&#34; class=&#34;friendurl&#34;&gt;
  &lt;div class=&#34;frienddiv&#34;&gt;
    &lt;div class=&#34;frienddivleft&#34;&gt;&lt;div class=&#34;myfriend myfriend-fallback&#34; role=&#34;img&#34; aria-label=&#34;k7tmiz 默认头像&#34;&gt;友&lt;/div&gt;&lt;/div&gt;
    &lt;div class=&#34;frienddivright&#34;&gt;
      &lt;div class=&#34;friendname&#34;&gt;k7tmiz&lt;/div&gt;
      &lt;div class=&#34;friendinfo&#34;&gt;k7tmiz 的个人网站/博客/作品集。一名文科生，很早就接触 Linux&lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/a&gt;
&lt;a target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34; href=&#34;https://storygenerator.cc/&#34; title=&#34;AI 故事生成器&#34; class=&#34;friendurl&#34;&gt;
  &lt;div class=&#34;frienddiv&#34;&gt;
    &lt;div class=&#34;frienddivleft&#34;&gt;&lt;div class=&#34;myfriend myfriend-fallback&#34; role=&#34;img&#34; aria-label=&#34;AI 故事生成器 默认头像&#34;&gt;友&lt;/div&gt;&lt;/div&gt;
    &lt;div class=&#34;frienddivright&#34;&gt;
      &lt;div class=&#34;friendname&#34;&gt;AI 故事生成器&lt;/div&gt;
      &lt;div class=&#34;friendinfo&#34;&gt;Free AI Story Generator，一个免费的 AI 故事生成器。&lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/a&gt;
&lt;a target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34; href=&#34;https://calc9.com/&#34; title=&#34;全能计算器&#34; class=&#34;friendurl&#34;&gt;
  &lt;div class=&#34;frienddiv&#34;&gt;
    &lt;div class=&#34;frienddivleft&#34;&gt;&lt;div class=&#34;myfriend myfriend-fallback&#34; role=&#34;img&#34; aria-label=&#34;全能计算器 默认头像&#34;&gt;友&lt;/div&gt;&lt;/div&gt;
    &lt;div class=&#34;frienddivright&#34;&gt;
      &lt;div class=&#34;friendname&#34;&gt;全能计算器&lt;/div&gt;
      &lt;div class=&#34;friendinfo&#34;&gt;一个神秘的人&lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/a&gt;
&lt;a target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34; href=&#34;https://weekcount.com/&#34; title=&#34;周数计算器&#34; class=&#34;friendurl&#34;&gt;
  &lt;div class=&#34;frienddiv&#34;&gt;
    &lt;div class=&#34;frienddivleft&#34;&gt;&lt;div class=&#34;myfriend myfriend-fallback&#34; role=&#34;img&#34; aria-label=&#34;周数计算器 默认头像&#34;&gt;友&lt;/div&gt;&lt;/div&gt;
    &lt;div class=&#34;frienddivright&#34;&gt;
      &lt;div class=&#34;friendname&#34;&gt;周数计算器&lt;/div&gt;
      &lt;div class=&#34;friendinfo&#34;&gt;一个神秘的人&lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/a&gt;
&lt;a target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34; href=&#34;https://playunb.com/&#34; title=&#34;PlayUnb 畅玩无限&#34; class=&#34;friendurl&#34;&gt;
  &lt;div class=&#34;frienddiv&#34;&gt;
    &lt;div class=&#34;frienddivleft&#34;&gt;&lt;div class=&#34;myfriend myfriend-fallback&#34; role=&#34;img&#34; aria-label=&#34;PlayUnb 畅玩无限 默认头像&#34;&gt;友&lt;/div&gt;&lt;/div&gt;
    &lt;div class=&#34;frienddivright&#34;&gt;
      &lt;div class=&#34;friendname&#34;&gt;PlayUnb 畅玩无限&lt;/div&gt;
      &lt;div class=&#34;friendinfo&#34;&gt;一个神秘的人&lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/a&gt;
&lt;a target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34; href=&#34;https://selfhost-hub.com/&#34; title=&#34;自托管服务和工具目录&#34; class=&#34;friendurl&#34;&gt;
  &lt;div class=&#34;frienddiv&#34;&gt;
    &lt;div class=&#34;frienddivleft&#34;&gt;&lt;div class=&#34;myfriend myfriend-fallback&#34; role=&#34;img&#34; aria-label=&#34;自托管服务和工具目录 默认头像&#34;&gt;友&lt;/div&gt;&lt;/div&gt;
    &lt;div class=&#34;frienddivright&#34;&gt;
      &lt;div class=&#34;friendname&#34;&gt;自托管服务和工具目录&lt;/div&gt;
      &lt;div class=&#34;friendinfo&#34;&gt;一个神秘的人&lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/a&gt;
&lt;a target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34; href=&#34;https://jiekun.dev&#34; title=&#34;Jiekun&amp;#39;s Blog&#34; class=&#34;friendurl&#34;&gt;
  &lt;div class=&#34;frienddiv&#34;&gt;
    &lt;div class=&#34;frienddivleft&#34;&gt;&lt;div class=&#34;myfriend myfriend-fallback&#34; role=&#34;img&#34; aria-label=&#34;Jiekun&amp;#39;s Blog 默认头像&#34;&gt;友&lt;/div&gt;&lt;/div&gt;
    &lt;div class=&#34;frienddivright&#34;&gt;
      &lt;div class=&#34;friendname&#34;&gt;Jiekun&amp;#39;s Blog&lt;/div&gt;
      &lt;div class=&#34;friendinfo&#34;&gt;一个神秘的人&lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/a&gt;
&lt;a target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34; href=&#34;https://xuexb.com&#34; title=&#34;前端小武的博客&#34; class=&#34;friendurl&#34;&gt;
  &lt;div class=&#34;frienddiv&#34;&gt;
    &lt;div class=&#34;frienddivleft&#34;&gt;&lt;div class=&#34;myfriend myfriend-fallback&#34; role=&#34;img&#34; aria-label=&#34;前端小武的博客 默认头像&#34;&gt;友&lt;/div&gt;&lt;/div&gt;
    &lt;div class=&#34;frienddivright&#34;&gt;
      &lt;div class=&#34;friendname&#34;&gt;前端小武的博客&lt;/div&gt;
      &lt;div class=&#34;friendinfo&#34;&gt;一个神秘的人&lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/a&gt;
&lt;a target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34; href=&#34;https://merrier.wang/&#34; title=&#34;merrier 说&#34; class=&#34;friendurl&#34;&gt;
  &lt;div class=&#34;frienddiv&#34;&gt;
    &lt;div class=&#34;frienddivleft&#34;&gt;&lt;div class=&#34;myfriend myfriend-fallback&#34; role=&#34;img&#34; aria-label=&#34;merrier 说 默认头像&#34;&gt;友&lt;/div&gt;&lt;/div&gt;
    &lt;div class=&#34;frienddivright&#34;&gt;
      &lt;div class=&#34;friendname&#34;&gt;merrier 说&lt;/div&gt;
      &lt;div class=&#34;friendinfo&#34;&gt;一个神秘的人&lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/a&gt;
&lt;a target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34; href=&#34;https://best33.com/&#34; title=&#34;三言三语&#34; class=&#34;friendurl&#34;&gt;
  &lt;div class=&#34;frienddiv&#34;&gt;
    &lt;div class=&#34;frienddivleft&#34;&gt;&lt;div class=&#34;myfriend myfriend-fallback&#34; role=&#34;img&#34; aria-label=&#34;三言三语 默认头像&#34;&gt;友&lt;/div&gt;&lt;/div&gt;
    &lt;div class=&#34;frienddivright&#34;&gt;
      &lt;div class=&#34;friendname&#34;&gt;三言三语&lt;/div&gt;
      &lt;div class=&#34;friendinfo&#34;&gt;一个神秘的人&lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/a&gt;
&lt;a target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34; href=&#34;https://harttle.land/&#34; title=&#34;Harttle Land&#34; class=&#34;friendurl&#34;&gt;
  &lt;div class=&#34;frienddiv&#34;&gt;
    &lt;div class=&#34;frienddivleft&#34;&gt;&lt;img class=&#34;myfriend&#34; src=&#34;https://harttle.land/assets/img/avatar.jpg&#34; alt=&#34;Harttle Land avatar&#34; loading=&#34;lazy&#34; /&gt;&lt;/div&gt;
    &lt;div class=&#34;frienddivright&#34;&gt;
      &lt;div class=&#34;friendname&#34;&gt;Harttle Land&lt;/div&gt;
      &lt;div class=&#34;friendinfo&#34;&gt;一个神秘的人&lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/a&gt;
&lt;a target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34; href=&#34;https://todayaiweather.com/&#34; title=&#34;Today AI Weather&#34; class=&#34;friendurl&#34;&gt;
  &lt;div class=&#34;frienddiv&#34;&gt;
    &lt;div class=&#34;frienddivleft&#34;&gt;&lt;div class=&#34;myfriend myfriend-fallback&#34; role=&#34;img&#34; aria-label=&#34;Today AI Weather 默认头像&#34;&gt;友&lt;/div&gt;&lt;/div&gt;
    &lt;div class=&#34;frienddivright&#34;&gt;
      &lt;div class=&#34;friendname&#34;&gt;Today AI Weather&lt;/div&gt;
      &lt;div class=&#34;friendinfo&#34;&gt;一个神秘的人&lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/a&gt;
&lt;a target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34; href=&#34;https://kyrylo.org/&#34; title=&#34;Kyrylo Silin&#34; class=&#34;friendurl&#34;&gt;
  &lt;div class=&#34;frienddiv&#34;&gt;
    &lt;div class=&#34;frienddivleft&#34;&gt;&lt;div class=&#34;myfriend myfriend-fallback&#34; role=&#34;img&#34; aria-label=&#34;Kyrylo Silin 默认头像&#34;&gt;友&lt;/div&gt;&lt;/div&gt;
    &lt;div class=&#34;frienddivright&#34;&gt;
      &lt;div class=&#34;friendname&#34;&gt;Kyrylo Silin&lt;/div&gt;
      &lt;div class=&#34;friendinfo&#34;&gt;Software engineer, web developer, and budding entrepreneur. From Kharkiv, Ukraine&lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/a&gt;
&lt;a target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34; href=&#34;https://xyzttt.xyz/&#34; title=&#34;Pleiades&#34; class=&#34;friendurl&#34;&gt;
  &lt;div class=&#34;frienddiv&#34;&gt;
    &lt;div class=&#34;frienddivleft&#34;&gt;&lt;div class=&#34;myfriend myfriend-fallback&#34; role=&#34;img&#34; aria-label=&#34;Pleiades 默认头像&#34;&gt;友&lt;/div&gt;&lt;/div&gt;
    &lt;div class=&#34;frienddivright&#34;&gt;
      &lt;div class=&#34;friendname&#34;&gt;Pleiades&lt;/div&gt;
      &lt;div class=&#34;friendinfo&#34;&gt;我们谈论生活，讨论技术，借由文字，抵达心灵。&lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/a&gt;
&lt;a target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34; href=&#34;https://ramsayleung.github.io/zh/&#34; title=&#34;Ramsay&#34; class=&#34;friendurl&#34;&gt;
  &lt;div class=&#34;frienddiv&#34;&gt;
    &lt;div class=&#34;frienddivleft&#34;&gt;&lt;div class=&#34;myfriend myfriend-fallback&#34; role=&#34;img&#34; aria-label=&#34;Ramsay 默认头像&#34;&gt;友&lt;/div&gt;&lt;/div&gt;
    &lt;div class=&#34;frienddivright&#34;&gt;
      &lt;div class=&#34;friendname&#34;&gt;Ramsay&lt;/div&gt;
      &lt;div class=&#34;friendinfo&#34;&gt;有 Ramsay 的个人博客，他在其中撰写有关生活、软件引擎、分布式系统和思想的文章。Ramsay 是位软件工程师，以写程序为业，曾经就职于蚂蚁金服、微信，现供职于 AWS&lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/a&gt;
&lt;a target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34; href=&#34;https://blog.shabby.in&#34; title=&#34;Mocha&amp;#39;s Blog&#34; class=&#34;friendurl&#34;&gt;
  &lt;div class=&#34;frienddiv&#34;&gt;
    &lt;div class=&#34;frienddivleft&#34;&gt;&lt;div class=&#34;myfriend myfriend-fallback&#34; role=&#34;img&#34; aria-label=&#34;Mocha&amp;#39;s Blog 默认头像&#34;&gt;友&lt;/div&gt;&lt;/div&gt;
    &lt;div class=&#34;frienddivright&#34;&gt;
      &lt;div class=&#34;friendname&#34;&gt;Mocha&amp;#39;s Blog&lt;/div&gt;
      &lt;div class=&#34;friendinfo&#34;&gt;一个神秘的人&lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/a&gt;
&lt;a target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34; href=&#34;https://yinji.org/&#34; title=&#34;印记&#34; class=&#34;friendurl&#34;&gt;
  &lt;div class=&#34;frienddiv&#34;&gt;
    &lt;div class=&#34;frienddivleft&#34;&gt;&lt;div class=&#34;myfriend myfriend-fallback&#34; role=&#34;img&#34; aria-label=&#34;印记 默认头像&#34;&gt;友&lt;/div&gt;&lt;/div&gt;
    &lt;div class=&#34;frienddivright&#34;&gt;
      &lt;div class=&#34;friendname&#34;&gt;印记&lt;/div&gt;
      &lt;div class=&#34;friendinfo&#34;&gt;一个神秘的人&lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/a&gt;
&lt;a target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34; href=&#34;https://chengpengzhao.com/&#34; title=&#34;Cp Zhao&#34; class=&#34;friendurl&#34;&gt;
  &lt;div class=&#34;frienddiv&#34;&gt;
    &lt;div class=&#34;frienddivleft&#34;&gt;&lt;div class=&#34;myfriend myfriend-fallback&#34; role=&#34;img&#34; aria-label=&#34;Cp Zhao 默认头像&#34;&gt;友&lt;/div&gt;&lt;/div&gt;
    &lt;div class=&#34;frienddivright&#34;&gt;
      &lt;div class=&#34;friendname&#34;&gt;Cp Zhao&lt;/div&gt;
      &lt;div class=&#34;friendinfo&#34;&gt;一个神秘的人&lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/a&gt;
&lt;a target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34; href=&#34;https://immmmm.com/&#34; title=&#34;木木木木木&#34; class=&#34;friendurl&#34;&gt;
  &lt;div class=&#34;frienddiv&#34;&gt;
    &lt;div class=&#34;frienddivleft&#34;&gt;&lt;div class=&#34;myfriend myfriend-fallback&#34; role=&#34;img&#34; aria-label=&#34;木木木木木 默认头像&#34;&gt;友&lt;/div&gt;&lt;/div&gt;
    &lt;div class=&#34;frienddivright&#34;&gt;
      &lt;div class=&#34;friendname&#34;&gt;木木木木木&lt;/div&gt;
      &lt;div class=&#34;friendinfo&#34;&gt;一个神秘的人&lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/a&gt;
&lt;a target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34; href=&#34;https://smokeping.frytea.com/&#34; title=&#34;全球机房 Ping 监控&#34; class=&#34;friendurl&#34;&gt;
  &lt;div class=&#34;frienddiv&#34;&gt;
    &lt;div class=&#34;frienddivleft&#34;&gt;&lt;div class=&#34;myfriend myfriend-fallback&#34; role=&#34;img&#34; aria-label=&#34;全球机房 Ping 监控 默认头像&#34;&gt;友&lt;/div&gt;&lt;/div&gt;
    &lt;div class=&#34;frienddivright&#34;&gt;
      &lt;div class=&#34;friendname&#34;&gt;全球机房 Ping 监控&lt;/div&gt;
      &lt;div class=&#34;friendinfo&#34;&gt;一个神秘的人&lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/a&gt;
&lt;a target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34; href=&#34;https://www.lololowe.com/&#34; title=&#34;lololoWe&#34; class=&#34;friendurl&#34;&gt;
  &lt;div class=&#34;frienddiv&#34;&gt;
    &lt;div class=&#34;frienddivleft&#34;&gt;&lt;div class=&#34;myfriend myfriend-fallback&#34; role=&#34;img&#34; aria-label=&#34;lololoWe 默认头像&#34;&gt;友&lt;/div&gt;&lt;/div&gt;
    &lt;div class=&#34;frienddivright&#34;&gt;
      &lt;div class=&#34;friendname&#34;&gt;lololoWe&lt;/div&gt;
      &lt;div class=&#34;friendinfo&#34;&gt;一个神秘的人&lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/a&gt;
&lt;a target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34; href=&#34;https://digvps.com/&#34; title=&#34;DigVPS&#34; class=&#34;friendurl&#34;&gt;
  &lt;div class=&#34;frienddiv&#34;&gt;
    &lt;div class=&#34;frienddivleft&#34;&gt;&lt;div class=&#34;myfriend myfriend-fallback&#34; role=&#34;img&#34; aria-label=&#34;DigVPS 默认头像&#34;&gt;友&lt;/div&gt;&lt;/div&gt;
    &lt;div class=&#34;frienddivright&#34;&gt;
      &lt;div class=&#34;friendname&#34;&gt;DigVPS&lt;/div&gt;
      &lt;div class=&#34;friendinfo&#34;&gt;专注 VPS 测评，欢迎访问我们专业的 VPS 测评平台。在这里，您将找到详尽的性能、网络、路由、解锁等测试数据，帮助您轻松找到最理想的 VPS 解决方案。&lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/a&gt;
&lt;a target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34; href=&#34;https://vps.pink/&#34; title=&#34;品客VPS&#34; class=&#34;friendurl&#34;&gt;
  &lt;div class=&#34;frienddiv&#34;&gt;
    &lt;div class=&#34;frienddivleft&#34;&gt;&lt;img class=&#34;myfriend&#34; src=&#34;https://vps.pink/upload/default.svg&#34; alt=&#34;品客VPS avatar&#34; loading=&#34;lazy&#34; /&gt;&lt;/div&gt;
    &lt;div class=&#34;frienddivright&#34;&gt;
      &lt;div class=&#34;friendname&#34;&gt;品客VPS&lt;/div&gt;
      &lt;div class=&#34;friendinfo&#34;&gt;Know Before You Buy&lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/a&gt;
&lt;a target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34; href=&#34;https://www.lixueduan.com/&#34; title=&#34;指月小筑(探索云原生)&#34; class=&#34;friendurl&#34;&gt;
  &lt;div class=&#34;frienddiv&#34;&gt;
    &lt;div class=&#34;frienddivleft&#34;&gt;&lt;div class=&#34;myfriend myfriend-fallback&#34; role=&#34;img&#34; aria-label=&#34;指月小筑(探索云原生) 默认头像&#34;&gt;友&lt;/div&gt;&lt;/div&gt;
    &lt;div class=&#34;frienddivright&#34;&gt;
      &lt;div class=&#34;friendname&#34;&gt;指月小筑(探索云原生)&lt;/div&gt;
      &lt;div class=&#34;friendinfo&#34;&gt;一个神秘的人&lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/a&gt;
&lt;a target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34; href=&#34;https://cgs.skybyte.me&#34; title=&#34;公益 GPT&#34; class=&#34;friendurl&#34;&gt;
  &lt;div class=&#34;frienddiv&#34;&gt;
    &lt;div class=&#34;frienddivleft&#34;&gt;&lt;div class=&#34;myfriend myfriend-fallback&#34; role=&#34;img&#34; aria-label=&#34;公益 GPT 默认头像&#34;&gt;友&lt;/div&gt;&lt;/div&gt;
    &lt;div class=&#34;frienddivright&#34;&gt;
      &lt;div class=&#34;friendname&#34;&gt;公益 GPT&lt;/div&gt;
      &lt;div class=&#34;friendinfo&#34;&gt;一个神秘的人&lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/a&gt;
&lt;a target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34; href=&#34;https://www.myfreax.com/&#34; title=&#34;myfreax&#34; class=&#34;friendurl&#34;&gt;
  &lt;div class=&#34;frienddiv&#34;&gt;
    &lt;div class=&#34;frienddivleft&#34;&gt;&lt;div class=&#34;myfriend myfriend-fallback&#34; role=&#34;img&#34; aria-label=&#34;myfreax 默认头像&#34;&gt;友&lt;/div&gt;&lt;/div&gt;
    &lt;div class=&#34;frienddivright&#34;&gt;
      &lt;div class=&#34;friendname&#34;&gt;myfreax&lt;/div&gt;
      &lt;div class=&#34;friendinfo&#34;&gt;myfreax 是一个 linux 爱好者和全栈开发者博客，发布 linux、kotlin、golang、javascript、typescript、esp32、物联网、c/c&amp;#43;&amp;#43;、android、flutter、dart、python、html、css、shell、bash、node.js、cd/ci 文章和教程&lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/a&gt;
&lt;a target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34; href=&#34;https://lework.github.io/&#34; title=&#34;Lework&#34; class=&#34;friendurl&#34;&gt;
  &lt;div class=&#34;frienddiv&#34;&gt;
    &lt;div class=&#34;frienddivleft&#34;&gt;&lt;div class=&#34;myfriend myfriend-fallback&#34; role=&#34;img&#34; aria-label=&#34;Lework 默认头像&#34;&gt;友&lt;/div&gt;&lt;/div&gt;
    &lt;div class=&#34;frienddivright&#34;&gt;
      &lt;div class=&#34;friendname&#34;&gt;Lework&lt;/div&gt;
      &lt;div class=&#34;friendinfo&#34;&gt;一个神秘的人&lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/a&gt;
&lt;a target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34; href=&#34;https://www.dolingou.com/&#34; title=&#34;Dolingou&#34; class=&#34;friendurl&#34;&gt;
  &lt;div class=&#34;frienddiv&#34;&gt;
    &lt;div class=&#34;frienddivleft&#34;&gt;&lt;div class=&#34;myfriend myfriend-fallback&#34; role=&#34;img&#34; aria-label=&#34;Dolingou 默认头像&#34;&gt;友&lt;/div&gt;&lt;/div&gt;
    &lt;div class=&#34;frienddivright&#34;&gt;
      &lt;div class=&#34;friendname&#34;&gt;Dolingou&lt;/div&gt;
      &lt;div class=&#34;friendinfo&#34;&gt;一个神秘的人&lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/a&gt;
&lt;a target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34; href=&#34;https://blog.axiaoxin.com/&#34; title=&#34;阿小信的博客&#34; class=&#34;friendurl&#34;&gt;
  &lt;div class=&#34;frienddiv&#34;&gt;
    &lt;div class=&#34;frienddivleft&#34;&gt;&lt;div class=&#34;myfriend myfriend-fallback&#34; role=&#34;img&#34; aria-label=&#34;阿小信的博客 默认头像&#34;&gt;友&lt;/div&gt;&lt;/div&gt;
    &lt;div class=&#34;frienddivright&#34;&gt;
      &lt;div class=&#34;friendname&#34;&gt;阿小信的博客&lt;/div&gt;
      &lt;div class=&#34;friendinfo&#34;&gt;人言成信 言兑才说&lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/a&gt;
&lt;a target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34; href=&#34;https://blog.k8s.li/&#34; title=&#34;Reimu&amp;#39;s blog&#34; class=&#34;friendurl&#34;&gt;
  &lt;div class=&#34;frienddiv&#34;&gt;
    &lt;div class=&#34;frienddivleft&#34;&gt;&lt;div class=&#34;myfriend myfriend-fallback&#34; role=&#34;img&#34; aria-label=&#34;Reimu&amp;#39;s blog 默认头像&#34;&gt;友&lt;/div&gt;&lt;/div&gt;
    &lt;div class=&#34;frienddivright&#34;&gt;
      &lt;div class=&#34;friendname&#34;&gt;Reimu&amp;#39;s blog&lt;/div&gt;
      &lt;div class=&#34;friendinfo&#34;&gt;一个神秘的人&lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/a&gt;
&lt;a target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34; href=&#34;https://www.chiboxun.com/&#34; title=&#34;迟博勋来自迟博勋博客&#34; class=&#34;friendurl&#34;&gt;
  &lt;div class=&#34;frienddiv&#34;&gt;
    &lt;div class=&#34;frienddivleft&#34;&gt;&lt;div class=&#34;myfriend myfriend-fallback&#34; role=&#34;img&#34; aria-label=&#34;迟博勋来自迟博勋博客 默认头像&#34;&gt;友&lt;/div&gt;&lt;/div&gt;
    &lt;div class=&#34;frienddivright&#34;&gt;
      &lt;div class=&#34;friendname&#34;&gt;迟博勋来自迟博勋博客&lt;/div&gt;
      &lt;div class=&#34;friendinfo&#34;&gt;一个神秘的人&lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/a&gt;
&lt;a target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34; href=&#34;https://www.escapelife.site/&#34; title=&#34;Escape&#34; class=&#34;friendurl&#34;&gt;
  &lt;div class=&#34;frienddiv&#34;&gt;
    &lt;div class=&#34;frienddivleft&#34;&gt;&lt;div class=&#34;myfriend myfriend-fallback&#34; role=&#34;img&#34; aria-label=&#34;Escape 默认头像&#34;&gt;友&lt;/div&gt;&lt;/div&gt;
    &lt;div class=&#34;frienddivright&#34;&gt;
      &lt;div class=&#34;friendname&#34;&gt;Escape&lt;/div&gt;
      &lt;div class=&#34;friendinfo&#34;&gt;一个神秘的人&lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/a&gt;
&lt;a target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34; href=&#34;https://catcat.blog/&#34; title=&#34;猫猫博客&#34; class=&#34;friendurl&#34;&gt;
  &lt;div class=&#34;frienddiv&#34;&gt;
    &lt;div class=&#34;frienddivleft&#34;&gt;&lt;div class=&#34;myfriend myfriend-fallback&#34; role=&#34;img&#34; aria-label=&#34;猫猫博客 默认头像&#34;&gt;友&lt;/div&gt;&lt;/div&gt;
    &lt;div class=&#34;frienddivright&#34;&gt;
      &lt;div class=&#34;friendname&#34;&gt;猫猫博客&lt;/div&gt;
      &lt;div class=&#34;friendinfo&#34;&gt;很多高性能 VPS 评测&lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/a&gt;
&lt;a target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34; href=&#34;https://gyptazy.com/&#34; title=&#34;gyptazy&#34; class=&#34;friendurl&#34;&gt;
  &lt;div class=&#34;frienddiv&#34;&gt;
    &lt;div class=&#34;frienddivleft&#34;&gt;&lt;img class=&#34;myfriend&#34; src=&#34;https://gyptazy.com/wp-content/uploads/2022/03/4150400.png&#34; alt=&#34;gyptazy avatar&#34; loading=&#34;lazy&#34; /&gt;&lt;/div&gt;
    &lt;div class=&#34;frienddivright&#34;&gt;
      &lt;div class=&#34;friendname&#34;&gt;gyptazy&lt;/div&gt;
      &lt;div class=&#34;friendinfo&#34;&gt;an enthusiastic and passionated DevOps engineer and developer.&lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/a&gt;
&lt;a target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34; href=&#34;https://toalan.com/&#34; title=&#34;Alan&amp;#39;s Blog&#34; class=&#34;friendurl&#34;&gt;
  &lt;div class=&#34;frienddiv&#34;&gt;
    &lt;div class=&#34;frienddivleft&#34;&gt;&lt;div class=&#34;myfriend myfriend-fallback&#34; role=&#34;img&#34; aria-label=&#34;Alan&amp;#39;s Blog 默认头像&#34;&gt;友&lt;/div&gt;&lt;/div&gt;
    &lt;div class=&#34;frienddivright&#34;&gt;
      &lt;div class=&#34;friendname&#34;&gt;Alan&amp;#39;s Blog&lt;/div&gt;
      &lt;div class=&#34;friendinfo&#34;&gt;一个神秘的人&lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/a&gt;
&lt;a target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34; href=&#34;https://skywind.me/blog/&#34; title=&#34;Skywind Inside&#34; class=&#34;friendurl&#34;&gt;
  &lt;div class=&#34;frienddiv&#34;&gt;
    &lt;div class=&#34;frienddivleft&#34;&gt;&lt;div class=&#34;myfriend myfriend-fallback&#34; role=&#34;img&#34; aria-label=&#34;Skywind Inside 默认头像&#34;&gt;友&lt;/div&gt;&lt;/div&gt;
    &lt;div class=&#34;frienddivright&#34;&gt;
      &lt;div class=&#34;friendname&#34;&gt;Skywind Inside&lt;/div&gt;
      &lt;div class=&#34;friendinfo&#34;&gt;一个神秘的人&lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/a&gt;
&lt;a target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34; href=&#34;https://skywind.me/wiki/start&#34; title=&#34;Skywind Workshop&#34; class=&#34;friendurl&#34;&gt;
  &lt;div class=&#34;frienddiv&#34;&gt;
    &lt;div class=&#34;frienddivleft&#34;&gt;&lt;div class=&#34;myfriend myfriend-fallback&#34; role=&#34;img&#34; aria-label=&#34;Skywind Workshop 默认头像&#34;&gt;友&lt;/div&gt;&lt;/div&gt;
    &lt;div class=&#34;frienddivright&#34;&gt;
      &lt;div class=&#34;friendname&#34;&gt;Skywind Workshop&lt;/div&gt;
      &lt;div class=&#34;friendinfo&#34;&gt;一个神秘的人&lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/a&gt;
&lt;a target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34; href=&#34;https://www.peterjxl.com/&#34; title=&#34;从 01 开始&#34; class=&#34;friendurl&#34;&gt;
  &lt;div class=&#34;frienddiv&#34;&gt;
    &lt;div class=&#34;frienddivleft&#34;&gt;&lt;div class=&#34;myfriend myfriend-fallback&#34; role=&#34;img&#34; aria-label=&#34;从 01 开始 默认头像&#34;&gt;友&lt;/div&gt;&lt;/div&gt;
    &lt;div class=&#34;frienddivright&#34;&gt;
      &lt;div class=&#34;friendname&#34;&gt;从 01 开始&lt;/div&gt;
      &lt;div class=&#34;friendinfo&#34;&gt;一个神秘的人&lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/a&gt;
&lt;a target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34; href=&#34;https://atbug.com/&#34; title=&#34;乱世浮生-张晓辉&#34; class=&#34;friendurl&#34;&gt;
  &lt;div class=&#34;frienddiv&#34;&gt;
    &lt;div class=&#34;frienddivleft&#34;&gt;&lt;div class=&#34;myfriend myfriend-fallback&#34; role=&#34;img&#34; aria-label=&#34;乱世浮生-张晓辉 默认头像&#34;&gt;友&lt;/div&gt;&lt;/div&gt;
    &lt;div class=&#34;frienddivright&#34;&gt;
      &lt;div class=&#34;friendname&#34;&gt;乱世浮生-张晓辉&lt;/div&gt;
      &lt;div class=&#34;friendinfo&#34;&gt;Flomesh 高级云原生架构师、布道师。LF APAC 开源布道师，CNCF Ambassador，云原生社区管委会成员，微软 Azure MVP。&lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/a&gt;
&lt;a target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34; href=&#34;https://xyzbz.cn&#34; title=&#34;网友小宋&#34; class=&#34;friendurl&#34;&gt;
  &lt;div class=&#34;frienddiv&#34;&gt;
    &lt;div class=&#34;frienddivleft&#34;&gt;&lt;div class=&#34;myfriend myfriend-fallback&#34; role=&#34;img&#34; aria-label=&#34;网友小宋 默认头像&#34;&gt;友&lt;/div&gt;&lt;/div&gt;
    &lt;div class=&#34;frienddivright&#34;&gt;
      &lt;div class=&#34;friendname&#34;&gt;网友小宋&lt;/div&gt;
      &lt;div class=&#34;friendinfo&#34;&gt;一介草民，只为生活！&lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/a&gt;
&lt;a target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34; href=&#34;http://jaredthenerd.com/&#34; title=&#34;Jared the Nerd&#34; class=&#34;friendurl&#34;&gt;
  &lt;div class=&#34;frienddiv&#34;&gt;
    &lt;div class=&#34;frienddivleft&#34;&gt;&lt;img class=&#34;myfriend&#34; src=&#34;https://image.frytea.com/images/2024/09/25/j4c863.png&#34; alt=&#34;Jared the Nerd avatar&#34; loading=&#34;lazy&#34; /&gt;&lt;/div&gt;
    &lt;div class=&#34;frienddivright&#34;&gt;
      &lt;div class=&#34;friendname&#34;&gt;Jared the Nerd&lt;/div&gt;
      &lt;div class=&#34;friendinfo&#34;&gt;CTO, IT Advisor, Software Engineer, Public Speaker, Traveler, and 100% Nerd&lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/a&gt;
&lt;a target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34; href=&#34;https://feichong.net/&#34; title=&#34;飞虫博客&#34; class=&#34;friendurl&#34;&gt;
  &lt;div class=&#34;frienddiv&#34;&gt;
    &lt;div class=&#34;frienddivleft&#34;&gt;&lt;div class=&#34;myfriend myfriend-fallback&#34; role=&#34;img&#34; aria-label=&#34;飞虫博客 默认头像&#34;&gt;友&lt;/div&gt;&lt;/div&gt;
    &lt;div class=&#34;frienddivright&#34;&gt;
      &lt;div class=&#34;friendname&#34;&gt;飞虫博客&lt;/div&gt;
      &lt;div class=&#34;friendinfo&#34;&gt;记录工作日志，分享优惠信息、实用软件及工具&lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/a&gt;
&lt;a target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34; href=&#34;https://silverrainz.me/&#34; title=&#34;SilverRainZ&#34; class=&#34;friendurl&#34;&gt;
  &lt;div class=&#34;frienddiv&#34;&gt;
    &lt;div class=&#34;frienddivleft&#34;&gt;&lt;div class=&#34;myfriend myfriend-fallback&#34; role=&#34;img&#34; aria-label=&#34;SilverRainZ 默认头像&#34;&gt;友&lt;/div&gt;&lt;/div&gt;
    &lt;div class=&#34;frienddivright&#34;&gt;
      &lt;div class=&#34;friendname&#34;&gt;SilverRainZ&lt;/div&gt;
      &lt;div class=&#34;friendinfo&#34;&gt;一个神秘的人&lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/a&gt;
&lt;a target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34; href=&#34;https://zexilee.github.io/about-zexili//&#34; title=&#34;Zexi Li 李則熹&#34; class=&#34;friendurl&#34;&gt;
  &lt;div class=&#34;frienddiv&#34;&gt;
    &lt;div class=&#34;frienddivleft&#34;&gt;&lt;div class=&#34;myfriend myfriend-fallback&#34; role=&#34;img&#34; aria-label=&#34;Zexi Li 李則熹 默认头像&#34;&gt;友&lt;/div&gt;&lt;/div&gt;
    &lt;div class=&#34;frienddivright&#34;&gt;
      &lt;div class=&#34;friendname&#34;&gt;Zexi Li 李則熹&lt;/div&gt;
      &lt;div class=&#34;friendinfo&#34;&gt;一个神秘的人&lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/a&gt;
&lt;a target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34; href=&#34;https://www.ihewro.com/archives/489/&#34; title=&#34;handsome&#34; class=&#34;friendurl&#34;&gt;
  &lt;div class=&#34;frienddiv&#34;&gt;
    &lt;div class=&#34;frienddivleft&#34;&gt;&lt;div class=&#34;myfriend myfriend-fallback&#34; role=&#34;img&#34; aria-label=&#34;handsome 默认头像&#34;&gt;友&lt;/div&gt;&lt;/div&gt;
    &lt;div class=&#34;frienddivright&#34;&gt;
      &lt;div class=&#34;friendname&#34;&gt;handsome&lt;/div&gt;
      &lt;div class=&#34;friendinfo&#34;&gt;一个神秘的人&lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/a&gt;
&lt;a target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34; href=&#34;https://www.liuhu.net/&#34; title=&#34;程序员刘虎&#34; class=&#34;friendurl&#34;&gt;
  &lt;div class=&#34;frienddiv&#34;&gt;
    &lt;div class=&#34;frienddivleft&#34;&gt;&lt;div class=&#34;myfriend myfriend-fallback&#34; role=&#34;img&#34; aria-label=&#34;程序员刘虎 默认头像&#34;&gt;友&lt;/div&gt;&lt;/div&gt;
    &lt;div class=&#34;frienddivright&#34;&gt;
      &lt;div class=&#34;friendname&#34;&gt;程序员刘虎&lt;/div&gt;
      &lt;div class=&#34;friendinfo&#34;&gt;刘虎，一般人称老虎，半路出家的挨踢行业从业人员。又是一个 97 年开始的博客。&lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/a&gt;
&lt;a target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34; href=&#34;https://www.xiaohui.com/&#34; title=&#34;程序员小辉&#34; class=&#34;friendurl&#34;&gt;
  &lt;div class=&#34;frienddiv&#34;&gt;
    &lt;div class=&#34;frienddivleft&#34;&gt;&lt;div class=&#34;myfriend myfriend-fallback&#34; role=&#34;img&#34; aria-label=&#34;程序员小辉 默认头像&#34;&gt;友&lt;/div&gt;&lt;/div&gt;
    &lt;div class=&#34;frienddivright&#34;&gt;
      &lt;div class=&#34;friendname&#34;&gt;程序员小辉&lt;/div&gt;
      &lt;div class=&#34;friendinfo&#34;&gt;1997 年建立本站。2001 年开始从事自由职业，专注独立软件开发。个人领域: Freeware、Shareware、Web App 以及量化交易机器人。&lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/a&gt;
&lt;a target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34; href=&#34;https://nav.oskyla.com/&#34; title=&#34;Oskyla AI 导航&#34; class=&#34;friendurl&#34;&gt;
  &lt;div class=&#34;frienddiv&#34;&gt;
    &lt;div class=&#34;frienddivleft&#34;&gt;&lt;div class=&#34;myfriend myfriend-fallback&#34; role=&#34;img&#34; aria-label=&#34;Oskyla AI 导航 默认头像&#34;&gt;友&lt;/div&gt;&lt;/div&gt;
    &lt;div class=&#34;frienddivright&#34;&gt;
      &lt;div class=&#34;friendname&#34;&gt;Oskyla AI 导航&lt;/div&gt;
      &lt;div class=&#34;friendinfo&#34;&gt;一个神秘的人&lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/a&gt;
&lt;/div&gt;&lt;h3 class=&#34;friend-section-title&#34;&gt;观察区&lt;/h3&gt;&lt;div class=&#34;friend-empty&#34;&gt;暂时还没有内容，后续会更新。&lt;/div&gt;
&lt;h2 id=&#34;成为网友&#34;&gt;成为网友&lt;/h2&gt;
&lt;p&gt;如果你也热爱分享、喜欢原创，或是充满好奇，就让我们互换链接，一起玩耍。
欢迎在这留下您的博客信息，期待与您成为网邻！&lt;/p&gt;</description>
    </item>
    <item>
      <title>Claude Opus 4.7：优缺点与评测信息汇总</title>
      <link>https://frytea.com/archives/1657/</link>
      <pubDate>Fri, 17 Apr 2026 01:22:03 +0000</pubDate>
      <guid>https://frytea.com/archives/1657/</guid>
      <description>&lt;p&gt;以下内容转载自：&lt;a href=&#34;https://linux.do/t/topic/1984117&#34;&gt;https://linux.do/t/topic/1984117&lt;/a&gt;&lt;/p&gt;
&lt;h2 id=&#34;基本资料&#34;&gt;基本资料&lt;/h2&gt;
&lt;p&gt;官方文：https://www.anthropic.com/news/claude-opus-4-7
官方文档：https://platform.claude.com/docs/en/about-claude/models/whats-new-claude-4-7
官方模型卡：https://cdn.sanity.io/files/4zrzovbb/website/037f06850df7fbe871e206dad004c3db5fd50340.pdf&lt;/p&gt;</description>
    </item>
    <item>
      <title>【翻译】如果你以为写代码速度是你的问题，那你还有更大的问题</title>
      <link>https://frytea.com/archives/1656/</link>
      <pubDate>Thu, 16 Apr 2026 00:53:12 +0000</pubDate>
      <guid>https://frytea.com/archives/1656/</guid>
      <description>&lt;h2 id=&#34;前言&#34;&gt;前言&lt;/h2&gt;
&lt;p&gt;文章来源：Andrew Murphy&lt;/p&gt;
&lt;p&gt;原文标题：&lt;em&gt;If You Thought the Speed of Writing Code Was Your Problem You Have Bigger Problems&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;原文链接：&lt;a href=&#34;https://andrewmurphy.io/blog/if-you-thought-the-speed-of-writing-code-was-your-problem-you-have-bigger-problems&#34;&gt;https://andrewmurphy.io/blog/if-you-thought-the-speed-of-writing-code-was-your-problem-you-have-bigger-problems&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;本文为博主翻译，若有理解偏差欢迎指正。&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;周二早上，你们 VP of Engineering 站在投影前，兴奋得像刚在 2017 年买到第一枚加密货币。TA 刚从某个大会（或者厂商晚宴）回来，三杯黑皮诺下肚，看完一场 Demo，然后带回了“好消息”：&lt;/p&gt;</description>
    </item>
    <item>
      <title>openFuyao NPU-Operator故障排查</title>
      <link>https://frytea.com/archives/1655/</link>
      <pubDate>Mon, 13 Apr 2026 09:01:49 +0000</pubDate>
      <guid>https://frytea.com/archives/1655/</guid>
      <description>&lt;h2 id=&#34;故障-pod-describe&#34;&gt;故障 pod describe&lt;/h2&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;[root@master1 ~]# kubectl -n kube-system describe pod ascend-device-plugin-ll46f 
Name:                 ascend-device-plugin-ll46f
Namespace:            kube-system
Priority:             2000001000
Priority Class Name:  system-node-critical
Service Account:      ascend-device-plugin-sa
Node:                 master1/10.17.30.131
Start Time:           Mon, 30 Mar 2026 11:08:32 +0800
Labels:               app.kubernetes.io/managed-by=npu-operator
                      controller-revision-hash=7df5dcb887
                      helm.sh/chart=npu-operator-0.15.0
                      name=ascend-device-plugin-ds
                      pod-template-generation=1
Annotations:          cni.projectcalico.org/containerID: c1f2adcaeaaf2bdcf0a6e09730f68231a293074e31d58f61997f714dfb520878
                      cni.projectcalico.org/podIP: 192.168.137.118/32
                      cni.projectcalico.org/podIPs: 192.168.137.118/32
                      scheduler.alpha.kubernetes.io/critical-pod: 
                      seccomp.security.alpha.kubernetes.io/pod: runtime/default
Status:               Running
IP:                   192.168.137.118
IPs:
  IP:           192.168.137.118
Controlled By:  DaemonSet/ascend-device-plugin
Init Containers:
  init-permission:
    Container ID:  containerd://4406968a522bea48dfefebae81ec53644312762af4781c25de689952ed6c2d27
    Image:         cr.openfuyao.cn/openfuyao/busybox:1.36.1
    Image ID:      cr.openfuyao.cn/openfuyao/busybox@sha256:4b8407fadd8100c61b097d63efe992b2c033e7d371c9117f7a9462fe87e31176
    Port:          &amp;lt;none&amp;gt;
    Host Port:     &amp;lt;none&amp;gt;
    Command:
      sh
      -c
      chown 9000:9000 /var/log/mindx-dl /var/log/mindx-dl/devicePlugin
      chmod 750 /var/log/mindx-dl/devicePlugin
      
    State:          Terminated
      Reason:       Completed
      Exit Code:    0
      Started:      Mon, 30 Mar 2026 15:28:32 +0800
      Finished:     Mon, 30 Mar 2026 15:28:32 +0800
    Ready:          True
    Restart Count:  1
    Environment:    &amp;lt;none&amp;gt;
    Mounts:
      /var/log/mindx-dl/devicePlugin from log-path (rw)
      /var/run/secrets/kubernetes.io/serviceaccount from kube-api-access-gfldg (ro)
Containers:
  device-plugin-01:
    Container ID:  containerd://fcc0c4742285847e2621a9a9217502307fc7e28644fbf86b32f9c11d67a2c0ab
    Image:         cr.openfuyao.cn/openfuyao/ascend-image/ascend-k8sdeviceplugin:v6.0.0
    Image ID:      cr.openfuyao.cn/openfuyao/ascend-image/ascend-k8sdeviceplugin@sha256:a5b9612b21bcd35384f9f19a05b2d7915b865e7b2be6a30bfd7806a9b8a86f58
    Port:          &amp;lt;none&amp;gt;
    Host Port:     &amp;lt;none&amp;gt;
    Command:
      /bin/bash
      -c
      --
    Args:
      device-plugin  -useAscendDocker=true -volcanoType=false -logFile=/var/log/mindx-dl/devicePlugin/devicePlugin.log -logLevel=0
    State:          Waiting
      Reason:       CrashLoopBackOff
    Last State:     Terminated
      Reason:       Completed
      Exit Code:    0
      Started:      Tue, 31 Mar 2026 10:28:58 +0800
      Finished:     Tue, 31 Mar 2026 10:28:58 +0800
    Ready:          False
    Restart Count:  274
    Limits:
      cpu:     500m
      memory:  500Mi
    Requests:
      cpu:     500m
      memory:  500Mi
    Environment:
      NODE_NAME:   (v1:spec.nodeName)
    Mounts:
      /tmp from tmp (rw)
      /usr/local/Ascend/driver from hiai-driver (ro)
      /var/lib/kubelet/device-plugins from device-plugin (rw)
      /var/lib/kubelet/pod-resources from pod-resource (rw)
      /var/log/mindx-dl/devicePlugin from log-path (rw)
      /var/run/secrets/kubernetes.io/serviceaccount from kube-api-access-gfldg (ro)
Conditions:
  Type                        Status
  PodReadyToStartContainers   True 
  Initialized                 True 
  Ready                       False 
  ContainersReady             False 
  PodScheduled                True 
Volumes:
  device-plugin:
    Type:          HostPath (bare host directory volume)
    Path:          /var/lib/kubelet/device-plugins
    HostPathType:  
  pod-resource:
    Type:          HostPath (bare host directory volume)
    Path:          /var/lib/kubelet/pod-resources
    HostPathType:  
  hiai-driver:
    Type:          HostPath (bare host directory volume)
    Path:          /usr/local/Ascend/driver
    HostPathType:  
  log-path:
    Type:          HostPath (bare host directory volume)
    Path:          /var/log/mindx-dl/devicePlugin
    HostPathType:  DirectoryOrCreate
  tmp:
    Type:          HostPath (bare host directory volume)
    Path:          /tmp
    HostPathType:  
  kube-api-access-gfldg:
    Type:                    Projected (a volume that contains injected data from multiple sources)
    TokenExpirationSeconds:  3607
    ConfigMapName:           kube-root-ca.crt
    Optional:                false
    DownwardAPI:             true
QoS Class:                   Burstable
Node-Selectors:              openfuyao.com/npu.present=
Tolerations:                 CriticalAddonsOnly op=Exists
                             device-plugin=v2:NoSchedule
                             huawei.com/Ascend910:NoSchedule op=Exists
                             node-role.kubernetes.io/control-plane:NoSchedule
                             node-role.kubernetes.io/master:NoSchedule
                             node.kubernetes.io/disk-pressure:NoSchedule op=Exists
                             node.kubernetes.io/memory-pressure:NoSchedule op=Exists
                             node.kubernetes.io/not-ready:NoExecute op=Exists
                             node.kubernetes.io/pid-pressure:NoSchedule op=Exists
                             node.kubernetes.io/unreachable:NoExecute op=Exists
                             node.kubernetes.io/unschedulable:NoSchedule op=Exists
Events:
  Type     Reason   Age                     From     Message
  ----     ------   ----                    ----     -------
  Normal   Pulled   16m (x205 over 18h)     kubelet  (combined from similar events): Successfully pulled image &amp;#34;cr.openfuyao.cn/openfuyao/ascend-image/ascend-k8sdeviceplugin:v6.0.0&amp;#34; in 403ms (403ms including waiting). Image size: 48017174 bytes.
  Warning  BackOff  2m47s (x5216 over 18h)  kubelet  Back-off restarting failed container device-plugin-01 in pod ascend-device-plugin-ll46f_kube-system(8edcd384-ab2d-4998-8077-5ac58801c79e)
  Normal   Pulling  66s (x227 over 19h)     kubelet  Pulling image &amp;#34;cr.openfuyao.cn/openfuyao/ascend-image/ascend-k8sdeviceplugin:v6.0.0&amp;#34;
&lt;/code&gt;&lt;/pre&gt;&lt;h2 id=&#34;故障-pod-dev-检查&#34;&gt;故障 pod /dev 检查&lt;/h2&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;[root@master1 fuyao-26.3-rc3]# kubectl  -n kube-system exec -it daemonsets/ascend-device-plugin -- ls /dev
Defaulted container &amp;#34;device-plugin-01&amp;#34; out of: device-plugin-01, init-permission (init)
autofs           null               tty10  tty34  tty58    vcs5
bsg              ppp                tty11  tty35  tty59    vcs6
btrfs-control    ptmx               tty12  tty36  tty6     vcsa
bus              pts                tty13  tty37  tty60    vcsa1
core             random             tty14  tty38  tty61    vcsa2
cpu_dma_latency  raw                tty15  tty39  tty62    vcsa3
cuse             relationship_ctrl  tty16  tty4   tty63    vcsa4
davinci0         rfkill             tty17  tty40  tty7     vcsa5
davinci_manager  rtc0               tty18  tty41  tty8     vcsa6
devmm_svm        sda                tty19  tty42  tty9     vcsu
dri              sda1               tty2   tty43  ttyAMA0  vcsu1
fb0              sda2               tty20  tty44  ttyS0    vcsu2
fd               sg0                tty21  tty45  ttyS1    vcsu3
full             sg1                tty22  tty46  ttyS2    vcsu4
fuse             sg2                tty23  tty47  ttyS3    vcsu5
hidraw0          shm                tty24  tty48  uhid     vcsu6
hidraw1          snapshot           tty25  tty49  uinput   vfio
hisi_hdc         sr0                tty26  tty5   urandom  vga_arbiter
hwrng            sr1                tty27  tty50  usbmon0  vhost-net
input            stderr             tty28  tty51  usbmon1  vhost-vsock
kmsg             stdin              tty29  tty52  usbmon2  vport2p1
loop-control     stdout             tty3   tty53  vcs      zero
mapper           termination-log    tty30  tty54  vcs1
mem              tty                tty31  tty55  vcs2
mqueue           tty0               tty32  tty56  vcs3
net              tty1               tty33  tty57  vcs4
&lt;/code&gt;&lt;/pre&gt;&lt;h2 id=&#34;故障-pod-驱动检查&#34;&gt;故障 pod 驱动检查&lt;/h2&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;[root@master1 fuyao-26.3-rc3]# kubectl  -n kube-system exec -it daemonsets/ascend-device-plugin -- ls -lha /usr/local/Ascend/driver
Defaulted container &amp;#34;device-plugin-01&amp;#34; out of: device-plugin-01, init-permission (init)
total 44K
drwxr-xr-x  8 root root 4.0K Mar 27 08:03 .
drwxr-xr-x  3 root root 4.0K Mar 31 02:34 ..
drwxr-xr-x  2 root root 4.0K Mar 27 08:01 bin
-r--r--r--  1 root root   20 Mar 27 08:01 build.info
dr-xr-x---  2 root root 4.0K Mar 27 08:01 device
dr-x------ 41 root root 4.0K Mar 27 08:01 kernel
drwxr-xr-x  6 root root 4.0K Mar 27 08:01 lib64
-r--r-----  1 root root   56 Mar 27 08:01 scene.info
dr-xr-x---  2 root root 4.0K Mar 27 08:01 script
drwxr-xr-x  2 root root 4.0K Mar 27 08:01 tools
-r--r--r--  1 root root  352 Mar 27 08:03 version.info
&lt;/code&gt;&lt;/pre&gt;&lt;h2 id=&#34;故障-pod-日志&#34;&gt;故障 pod 日志&lt;/h2&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;[root@master1 ~]# kubectl -n kube-system logs daemonsets/ascend-device-plugin --previous
Defaulted container &amp;#34;device-plugin-01&amp;#34; out of: device-plugin-01, init-permission (init)
[INFO]     2026/03/31 06:46:54.593254 1       hwlog/api.go:108    devicePlugin.log&amp;#39;s logger init success
[INFO]     2026/03/31 06:46:54.593449 1       main.go:187    ascend device plugin starting and the version is v6.0.0_linux-aarch64
[INFO]     2026/03/31 06:46:54.593494 1       main.go:188    ascend device plugin starting scene is center
[INFO]     2026/03/31 06:46:54.787930 1       devmanager/devmanager.go:104    the dcmi version is 24.1.rc3
[ERROR]    2026/03/31 06:46:54.788019 1       devmanager/devmanager.go:211    get error card quantity: 0
[ERROR]    2026/03/31 06:46:54.788052 1       devmanager/devmanager.go:195    get card list failed for init
[ERROR]    2026/03/31 06:46:54.788101 1       main.go:203    init devmanager failed, err: auto init failed, err: get card list failed for init
&lt;/code&gt;&lt;/pre&gt;&lt;h2 id=&#34;故障-pod-驱动检查-1&#34;&gt;故障 pod 驱动检查&lt;/h2&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;[root@master1 ~]# kubectl -n kube-system exec -it daemonsets/ascend-device-plugin -- bash -c &amp;#39;find /usr/local/Ascend/driver -name libdcmi.so 2&amp;gt;/dev/null; echo $LD_LIBRARY_PATH&amp;#39;
Defaulted container &amp;#34;device-plugin-01&amp;#34; out of: device-plugin-01, init-permission (init)
/usr/local/Ascend/driver/lib64/driver/libdcmi.so
command terminated with exit code 137
[root@master1 ~]# ps -ef | grep -E &amp;#39;dmp_daemon|slogd&amp;#39; | grep -v grep
root       21578       1  0 Mar30 ?        00:00:19 /usr/sbin/rsyslogd -n -i/var/run/rsyslogd.pid
&lt;/code&gt;&lt;/pre&gt;&lt;h2 id=&#34;检查服务状态&#34;&gt;检查服务状态？&lt;/h2&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;[root@master1 ~]# systemctl status ascend-dmi
Unit ascend-dmi.service could not be found.
[root@master1 ~]# systemctl status ascend-dkms
Unit ascend-dkms.service could not be found.
[root@master1 ~]# systemctl status npu-smi
Unit npu-smi.service could not be found.
[root@master1 ~]# find / -name dmp_daemon 2&amp;gt;/dev/null
[root@master1 ~]# find / -name slogd 2&amp;gt;/dev/null
[root@master1 ~]# ls -l /var/dmp_daemon /var/slogd 2&amp;gt;/dev/null
[root@master1 ~]# 
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;dcmi 问题，需硬件排查&lt;/p&gt;</description>
    </item>
    <item>
      <title>openFuyao 2603 共测测试报告</title>
      <link>https://frytea.com/archives/1654/</link>
      <pubDate>Mon, 13 Apr 2026 09:01:27 +0000</pubDate>
      <guid>https://frytea.com/archives/1654/</guid>
      <description>&lt;h1 id=&#34;相关链接&#34;&gt;相关链接&lt;/h1&gt;
&lt;ul&gt;
&lt;li&gt;特性清单: &lt;a href=&#34;https://gitcode.com/openFuyao/release-management/blob/main/openFuyao-26.03/release-plan.md&#34;&gt;https://gitcode.com/openFuyao/release-management/blob/main/openFuyao-26.03/release-plan.md&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;安装部署前置环境校验工具使用指导: &lt;a href=&#34;https://gitcode.com/openFuyao/sig-installation/blob/master/docs/zh/user_guide/cluster_installation_deployment/environment_pre_check_tool_guide.md&#34;&gt;https://gitcode.com/openFuyao/sig-installation/blob/master/docs/zh/user_guide/cluster_installation_deployment/environment_pre_check_tool_guide.md&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h1 id=&#34;测试环境&#34;&gt;测试环境&lt;/h1&gt;
&lt;ul&gt;
&lt;li&gt;CPU: &lt;code&gt;Kunpeng-920&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;OS: &lt;code&gt;openEuler 24.03 LTS SP3 aarch64&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Fuyao Version: &lt;code&gt;v26.03 rc3&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;docker: &lt;code&gt;2:18.09.0-346.oe2403sp3&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h1 id=&#34;测试特性&#34;&gt;测试特性&lt;/h1&gt;
&lt;ul&gt;
&lt;li&gt;&lt;input disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; 在线部署；&lt;/li&gt;
&lt;li&gt;&lt;input disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; 离线包制备；&lt;/li&gt;
&lt;li&gt;&lt;input disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; 离线部署；&lt;/li&gt;
&lt;li&gt;&lt;input disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; 安装部署前置检查工具；&lt;/li&gt;
&lt;li&gt;&lt;input disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; NPU Operator；&lt;/li&gt;
&lt;li&gt;&lt;input disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; AI推理套件；&lt;/li&gt;
&lt;/ul&gt;
&lt;h1 id=&#34;建议优化点&#34;&gt;建议优化点&lt;/h1&gt;
&lt;ul&gt;
&lt;li&gt;环境检测工具，检查 iptables 默认策略是否放行，若未放行可能在部署成功后无法访问；默认防火墙策略为 FORWARD DROP ，对集群运行和访问带来的潜在问题；&lt;/li&gt;
&lt;li&gt;运行 cli 前检查是否存在命令并及时抛出错误；检查 &lt;code&gt;tar&lt;/code&gt; / &lt;code&gt;unzip&lt;/code&gt; 是否安装，安装过程有很多地方会用到，而且出错时不会得到明显的解压失败报错，难以定位问题。&lt;/li&gt;
&lt;li&gt;安装命令变化，考虑上下兼容性？&lt;/li&gt;
&lt;/ul&gt;
&lt;h1 id=&#34;场景记录&#34;&gt;场景记录&lt;/h1&gt;
&lt;h2 id=&#34;离线部署管理面和业务面集群&#34;&gt;离线部署管理面和业务面集群&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;CPU: &lt;code&gt;Kunpeng-920&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;OS: &lt;code&gt;openEuler 24.03 LTS SP3 aarch64&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Fuyao Version: &lt;code&gt;v26.03 rc3&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;docker: &lt;code&gt;2:18.09.0-346.oe2403sp3&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;p&gt;arm64 环境下构建离线制品包为什么会执行 amd64 的 bin&lt;/p&gt;</description>
    </item>
    <item>
      <title>openFuyao InferNex AI推理集成部署 310P(300I Pro) 环境问题记录及解决</title>
      <link>https://frytea.com/archives/1653/</link>
      <pubDate>Mon, 13 Apr 2026 08:53:36 +0000</pubDate>
      <guid>https://frytea.com/archives/1653/</guid>
      <description>&lt;p&gt;AI推理集成部署（InferNex）是一个专为云原生环境下AI推理服务优化所设计的端到端集成部署方案。该方案基于Kubernetes Gateway API Inference Extension (GIE) 和主流LLM技术栈构建，通过Helm Chart将开源网关、智能路由、高性能推理后端、全局KVCache管理、扩缩容决策框架及推理可观测体系等核心加速模块无缝集成。它提供从请求接入、动态路由、推理执行到资源管理与监控的完整加速链路，旨在提升推理吞吐量并降低TTFT/TPOT时延，实现一站式的高效AI服务部署体验。&lt;/p&gt;</description>
    </item>
    <item>
      <title>ceph mon Operation not permitted 问题解决</title>
      <link>https://frytea.com/archives/1652/</link>
      <pubDate>Fri, 03 Apr 2026 03:25:31 +0000</pubDate>
      <guid>https://frytea.com/archives/1652/</guid>
      <description>&lt;p&gt;自己构建的 ceph 发现 mon 起不来，报错如下：&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;Apr 03 11:14:30 debian systemd[1]: Started Ceph cluster monitor daemon.
░░ Subject: A start job for unit ceph-mon@debian.service has finished successfully
░░ Defined-By: systemd
░░ Support: https://www.debian.org/support
░░ 
░░ A start job for unit ceph-mon@debian.service has finished successfully.
░░ 
░░ The job identifier is 6997.
Apr 03 11:14:31 debian ceph-mon[374601]: 2026-04-03T11:14:31.084+0800 ffffaf907040 -1 load: jerasure load: lrc load dlopen(/usr/lib/ceph/erasure-code/libec_isa.so): /usr/lib/ceph/erasure-code/libec_isa.so: cannot make segment writable for relocation: Operation not permitted
Apr 03 11:14:31 debian systemd[1]: ceph-mon@debian.service: Main process exited, code=exited, status=1/FAILURE
░░ Subject: Unit process exited
░░ Defined-By: systemd
░░ Support: https://www.debian.org/support
░░ 
░░ An ExecStart= process belonging to unit ceph-mon@debian.service has exited.
░░ 
░░ The process&amp;#39; exit code is &amp;#39;exited&amp;#39; and its exit status is 1.
Apr 03 11:14:31 debian systemd[1]: ceph-mon@debian.service: Failed with result &amp;#39;exit-code&amp;#39;.
░░ Subject: Unit failed
░░ Defined-By: systemd
░░ Support: https://www.debian.org/support
░░ 
░░ The unit ceph-mon@debian.service has entered the &amp;#39;failed&amp;#39; state with result &amp;#39;exit-code&amp;#39;.
&lt;/code&gt;&lt;/pre&gt;&lt;h2 id=&#34;临时解决方案&#34;&gt;临时解决方案&lt;/h2&gt;
&lt;p&gt;根据 claude-sonnet 4.6 的说法：&lt;/p&gt;</description>
    </item>
    <item>
      <title>Ascend 310P &#43; openFuyao &#43; NPU-Operator 故障排查</title>
      <link>https://frytea.com/archives/1651/</link>
      <pubDate>Wed, 01 Apr 2026 14:26:36 +0000</pubDate>
      <guid>https://frytea.com/archives/1651/</guid>
      <description>&lt;p&gt;[TOC]&lt;/p&gt;
&lt;h2 id=&#34;故障-pod-describe&#34;&gt;故障 pod describe&lt;/h2&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;[root@master1 ~]# kubectl -n kube-system describe pod ascend-device-plugin-ll46f 
Name:                 ascend-device-plugin-ll46f
Namespace:            kube-system
Priority:             2000001000
Priority Class Name:  system-node-critical
Service Account:      ascend-device-plugin-sa
Node:                 master1/10.17.30.131
Start Time:           Mon, 30 Mar 2026 11:08:32 +0800
Labels:               app.kubernetes.io/managed-by=npu-operator
                      controller-revision-hash=7df5dcb887
                      helm.sh/chart=npu-operator-0.15.0
                      name=ascend-device-plugin-ds
                      pod-template-generation=1
Annotations:          cni.projectcalico.org/containerID: c1f2adcaeaaf2bdcf0a6e09730f68231a293074e31d58f61997f714dfb520878
                      cni.projectcalico.org/podIP: 192.168.137.118/32
                      cni.projectcalico.org/podIPs: 192.168.137.118/32
                      scheduler.alpha.kubernetes.io/critical-pod: 
                      seccomp.security.alpha.kubernetes.io/pod: runtime/default
Status:               Running
IP:                   192.168.137.118
IPs:
  IP:           192.168.137.118
Controlled By:  DaemonSet/ascend-device-plugin
Init Containers:
  init-permission:
    Container ID:  containerd://4406968a522bea48dfefebae81ec53644312762af4781c25de689952ed6c2d27
    Image:         cr.openfuyao.cn/openfuyao/busybox:1.36.1
    Image ID:      cr.openfuyao.cn/openfuyao/busybox@sha256:4b8407fadd8100c61b097d63efe992b2c033e7d371c9117f7a9462fe87e31176
    Port:          &amp;lt;none&amp;gt;
    Host Port:     &amp;lt;none&amp;gt;
    Command:
      sh
      -c
      chown 9000:9000 /var/log/mindx-dl /var/log/mindx-dl/devicePlugin
      chmod 750 /var/log/mindx-dl/devicePlugin
      
    State:          Terminated
      Reason:       Completed
      Exit Code:    0
      Started:      Mon, 30 Mar 2026 15:28:32 +0800
      Finished:     Mon, 30 Mar 2026 15:28:32 +0800
    Ready:          True
    Restart Count:  1
    Environment:    &amp;lt;none&amp;gt;
    Mounts:
      /var/log/mindx-dl/devicePlugin from log-path (rw)
      /var/run/secrets/kubernetes.io/serviceaccount from kube-api-access-gfldg (ro)
Containers:
  device-plugin-01:
    Container ID:  containerd://fcc0c4742285847e2621a9a9217502307fc7e28644fbf86b32f9c11d67a2c0ab
    Image:         cr.openfuyao.cn/openfuyao/ascend-image/ascend-k8sdeviceplugin:v6.0.0
    Image ID:      cr.openfuyao.cn/openfuyao/ascend-image/ascend-k8sdeviceplugin@sha256:a5b9612b21bcd35384f9f19a05b2d7915b865e7b2be6a30bfd7806a9b8a86f58
    Port:          &amp;lt;none&amp;gt;
    Host Port:     &amp;lt;none&amp;gt;
    Command:
      /bin/bash
      -c
      --
    Args:
      device-plugin  -useAscendDocker=true -volcanoType=false -logFile=/var/log/mindx-dl/devicePlugin/devicePlugin.log -logLevel=0
    State:          Waiting
      Reason:       CrashLoopBackOff
    Last State:     Terminated
      Reason:       Completed
      Exit Code:    0
      Started:      Tue, 31 Mar 2026 10:28:58 +0800
      Finished:     Tue, 31 Mar 2026 10:28:58 +0800
    Ready:          False
    Restart Count:  274
    Limits:
      cpu:     500m
      memory:  500Mi
    Requests:
      cpu:     500m
      memory:  500Mi
    Environment:
      NODE_NAME:   (v1:spec.nodeName)
    Mounts:
      /tmp from tmp (rw)
      /usr/local/Ascend/driver from hiai-driver (ro)
      /var/lib/kubelet/device-plugins from device-plugin (rw)
      /var/lib/kubelet/pod-resources from pod-resource (rw)
      /var/log/mindx-dl/devicePlugin from log-path (rw)
      /var/run/secrets/kubernetes.io/serviceaccount from kube-api-access-gfldg (ro)
Conditions:
  Type                        Status
  PodReadyToStartContainers   True 
  Initialized                 True 
  Ready                       False 
  ContainersReady             False 
  PodScheduled                True 
Volumes:
  device-plugin:
    Type:          HostPath (bare host directory volume)
    Path:          /var/lib/kubelet/device-plugins
    HostPathType:  
  pod-resource:
    Type:          HostPath (bare host directory volume)
    Path:          /var/lib/kubelet/pod-resources
    HostPathType:  
  hiai-driver:
    Type:          HostPath (bare host directory volume)
    Path:          /usr/local/Ascend/driver
    HostPathType:  
  log-path:
    Type:          HostPath (bare host directory volume)
    Path:          /var/log/mindx-dl/devicePlugin
    HostPathType:  DirectoryOrCreate
  tmp:
    Type:          HostPath (bare host directory volume)
    Path:          /tmp
    HostPathType:  
  kube-api-access-gfldg:
    Type:                    Projected (a volume that contains injected data from multiple sources)
    TokenExpirationSeconds:  3607
    ConfigMapName:           kube-root-ca.crt
    Optional:                false
    DownwardAPI:             true
QoS Class:                   Burstable
Node-Selectors:              openfuyao.com/npu.present=
Tolerations:                 CriticalAddonsOnly op=Exists
                             device-plugin=v2:NoSchedule
                             huawei.com/Ascend910:NoSchedule op=Exists
                             node-role.kubernetes.io/control-plane:NoSchedule
                             node-role.kubernetes.io/master:NoSchedule
                             node.kubernetes.io/disk-pressure:NoSchedule op=Exists
                             node.kubernetes.io/memory-pressure:NoSchedule op=Exists
                             node.kubernetes.io/not-ready:NoExecute op=Exists
                             node.kubernetes.io/pid-pressure:NoSchedule op=Exists
                             node.kubernetes.io/unreachable:NoExecute op=Exists
                             node.kubernetes.io/unschedulable:NoSchedule op=Exists
Events:
  Type     Reason   Age                     From     Message
  ----     ------   ----                    ----     -------
  Normal   Pulled   16m (x205 over 18h)     kubelet  (combined from similar events): Successfully pulled image &amp;#34;cr.openfuyao.cn/openfuyao/ascend-image/ascend-k8sdeviceplugin:v6.0.0&amp;#34; in 403ms (403ms including waiting). Image size: 48017174 bytes.
  Warning  BackOff  2m47s (x5216 over 18h)  kubelet  Back-off restarting failed container device-plugin-01 in pod ascend-device-plugin-ll46f_kube-system(8edcd384-ab2d-4998-8077-5ac58801c79e)
  Normal   Pulling  66s (x227 over 19h)     kubelet  Pulling image &amp;#34;cr.openfuyao.cn/openfuyao/ascend-image/ascend-k8sdeviceplugin:v6.0.0&amp;#34;
&lt;/code&gt;&lt;/pre&gt;&lt;h2 id=&#34;故障-pod-dev-检查&#34;&gt;故障 pod /dev 检查&lt;/h2&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;[root@master1 fuyao-26.3-rc3]# kubectl  -n kube-system exec -it daemonsets/ascend-device-plugin -- ls /dev
Defaulted container &amp;#34;device-plugin-01&amp;#34; out of: device-plugin-01, init-permission (init)
autofs           null               tty10  tty34  tty58    vcs5
bsg              ppp                tty11  tty35  tty59    vcs6
btrfs-control    ptmx               tty12  tty36  tty6     vcsa
bus              pts                tty13  tty37  tty60    vcsa1
core             random             tty14  tty38  tty61    vcsa2
cpu_dma_latency  raw                tty15  tty39  tty62    vcsa3
cuse             relationship_ctrl  tty16  tty4   tty63    vcsa4
davinci0         rfkill             tty17  tty40  tty7     vcsa5
davinci_manager  rtc0               tty18  tty41  tty8     vcsa6
devmm_svm        sda                tty19  tty42  tty9     vcsu
dri              sda1               tty2   tty43  ttyAMA0  vcsu1
fb0              sda2               tty20  tty44  ttyS0    vcsu2
fd               sg0                tty21  tty45  ttyS1    vcsu3
full             sg1                tty22  tty46  ttyS2    vcsu4
fuse             sg2                tty23  tty47  ttyS3    vcsu5
hidraw0          shm                tty24  tty48  uhid     vcsu6
hidraw1          snapshot           tty25  tty49  uinput   vfio
hisi_hdc         sr0                tty26  tty5   urandom  vga_arbiter
hwrng            sr1                tty27  tty50  usbmon0  vhost-net
input            stderr             tty28  tty51  usbmon1  vhost-vsock
kmsg             stdin              tty29  tty52  usbmon2  vport2p1
loop-control     stdout             tty3   tty53  vcs      zero
mapper           termination-log    tty30  tty54  vcs1
mem              tty                tty31  tty55  vcs2
mqueue           tty0               tty32  tty56  vcs3
net              tty1               tty33  tty57  vcs4
&lt;/code&gt;&lt;/pre&gt;&lt;h2 id=&#34;故障-pod-驱动检查&#34;&gt;故障 pod 驱动检查&lt;/h2&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;[root@master1 fuyao-26.3-rc3]# kubectl  -n kube-system exec -it daemonsets/ascend-device-plugin -- ls -lha /usr/local/Ascend/driver
Defaulted container &amp;#34;device-plugin-01&amp;#34; out of: device-plugin-01, init-permission (init)
total 44K
drwxr-xr-x  8 root root 4.0K Mar 27 08:03 .
drwxr-xr-x  3 root root 4.0K Mar 31 02:34 ..
drwxr-xr-x  2 root root 4.0K Mar 27 08:01 bin
-r--r--r--  1 root root   20 Mar 27 08:01 build.info
dr-xr-x---  2 root root 4.0K Mar 27 08:01 device
dr-x------ 41 root root 4.0K Mar 27 08:01 kernel
drwxr-xr-x  6 root root 4.0K Mar 27 08:01 lib64
-r--r-----  1 root root   56 Mar 27 08:01 scene.info
dr-xr-x---  2 root root 4.0K Mar 27 08:01 script
drwxr-xr-x  2 root root 4.0K Mar 27 08:01 tools
-r--r--r--  1 root root  352 Mar 27 08:03 version.info
&lt;/code&gt;&lt;/pre&gt;&lt;h2 id=&#34;故障-pod-日志&#34;&gt;故障 pod 日志&lt;/h2&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;[root@master1 ~]# kubectl -n kube-system logs daemonsets/ascend-device-plugin --previous
Defaulted container &amp;#34;device-plugin-01&amp;#34; out of: device-plugin-01, init-permission (init)
[INFO]     2026/03/31 06:46:54.593254 1       hwlog/api.go:108    devicePlugin.log&amp;#39;s logger init success
[INFO]     2026/03/31 06:46:54.593449 1       main.go:187    ascend device plugin starting and the version is v6.0.0_linux-aarch64
[INFO]     2026/03/31 06:46:54.593494 1       main.go:188    ascend device plugin starting scene is center
[INFO]     2026/03/31 06:46:54.787930 1       devmanager/devmanager.go:104    the dcmi version is 24.1.rc3
[ERROR]    2026/03/31 06:46:54.788019 1       devmanager/devmanager.go:211    get error card quantity: 0
[ERROR]    2026/03/31 06:46:54.788052 1       devmanager/devmanager.go:195    get card list failed for init
[ERROR]    2026/03/31 06:46:54.788101 1       main.go:203    init devmanager failed, err: auto init failed, err: get card list failed for init
&lt;/code&gt;&lt;/pre&gt;&lt;h2 id=&#34;故障-pod-驱动检查-1&#34;&gt;故障 pod 驱动检查&lt;/h2&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;[root@master1 ~]# kubectl -n kube-system exec -it daemonsets/ascend-device-plugin -- bash -c &amp;#39;find /usr/local/Ascend/driver -name libdcmi.so 2&amp;gt;/dev/null; echo $LD_LIBRARY_PATH&amp;#39;
Defaulted container &amp;#34;device-plugin-01&amp;#34; out of: device-plugin-01, init-permission (init)
/usr/local/Ascend/driver/lib64/driver/libdcmi.so
command terminated with exit code 137
[root@master1 ~]# ps -ef | grep -E &amp;#39;dmp_daemon|slogd&amp;#39; | grep -v grep
root       21578       1  0 Mar30 ?        00:00:19 /usr/sbin/rsyslogd -n -i/var/run/rsyslogd.pid
&lt;/code&gt;&lt;/pre&gt;&lt;h2 id=&#34;检查服务状态&#34;&gt;检查服务状态？&lt;/h2&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;[root@master1 ~]# systemctl status ascend-dmi
Unit ascend-dmi.service could not be found.
[root@master1 ~]# systemctl status ascend-dkms
Unit ascend-dkms.service could not be found.
[root@master1 ~]# systemctl status npu-smi
Unit npu-smi.service could not be found.
[root@master1 ~]# find / -name dmp_daemon 2&amp;gt;/dev/null
[root@master1 ~]# find / -name slogd 2&amp;gt;/dev/null
[root@master1 ~]# ls -l /var/dmp_daemon /var/slogd 2&amp;gt;/dev/null
[root@master1 ~]# 
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;dcmi 问题，需硬件排查&lt;/p&gt;</description>
    </item>
    <item>
      <title>KDE Plasma6 禁用全局菜单，恢复正常应用菜单</title>
      <link>https://frytea.com/archives/1650/</link>
      <pubDate>Wed, 01 Apr 2026 05:55:30 +0000</pubDate>
      <guid>https://frytea.com/archives/1650/</guid>
      <description>&lt;h2 id=&#34;前情提要&#34;&gt;前情提要&lt;/h2&gt;
&lt;p&gt;不知道从什么时候开始，KDE Plasma 默认启用类似 macOS 的全局应用菜单。&lt;/p&gt;
&lt;p&gt;即应用窗口标题栏下方不显示菜单，而是移动到顶部菜单栏中“全局菜单”小组件中。&lt;/p&gt;
&lt;p&gt;但问题是，Linux 桌面生态生态复杂，X11 Wayland Qt GTK 等等技术太过复杂，很难保证常用软件都能够正常显示全局菜单。&lt;/p&gt;</description>
    </item>
    <item>
      <title>[翻译] 不要让 AI 替你写作</title>
      <link>https://frytea.com/archives/2026-03-08-dont-let-ai-write-for-you/</link>
      <pubDate>Sun, 08 Mar 2026 00:00:00 +0800</pubDate>
      <guid>https://frytea.com/archives/2026-03-08-dont-let-ai-write-for-you/</guid>
      <description>每一篇由 LLM 生成的文档，都是一次错失的思考机会，也是一次错失的建立信任的机会。</description>
    </item>
    <item>
      <title>终极指南：在 Linux 裸机服务器上快速部署 Moltbot (原 Clawbot) 并集成飞书</title>
      <link>https://frytea.com/archives/1617/</link>
      <pubDate>Thu, 29 Jan 2026 12:00:15 +0000</pubDate>
      <guid>https://frytea.com/archives/1617/</guid>
      <description>&lt;h2 id=&#34;引言&#34;&gt;引言&lt;/h2&gt;
&lt;p&gt;2026 年初，一个名为 Moltbot（前身为 Clawbot）的开源 AI 代理（Agent）框架席卷了开发者社区。该框架允许用户将强大的 AI 模型（例如 OpenAI 的 GPT 系列、Anthropic 的 Claude 等）与 WhatsApp、Telegram、Discord 等日常通讯工具集成，从而通过聊天即可操控电脑、执行任务、获取信息。特斯拉前 AI 主管 Andrej Karpathy 的推荐更是使其迅速走红，其 GitHub 项目在短时间内获得了超过 60,000 个星标。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Windows 配置 Claude Code 解决  settings.json 不生效</title>
      <link>https://frytea.com/archives/1616/</link>
      <pubDate>Fri, 09 Jan 2026 08:28:00 +0000</pubDate>
      <guid>https://frytea.com/archives/1616/</guid>
      <description>&lt;h1 id=&#34;tldr&#34;&gt;TL;DR&lt;/h1&gt;
&lt;p&gt;默认情况下 Windows 安装的 &lt;code&gt;Claude Code&lt;/code&gt; 会从这个位置读取配置：&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;C:\Users\&amp;lt;YOUR_NAME&amp;gt;\.claude
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;其他系统则类似的找到 &lt;code&gt;~/.claude&lt;/code&gt; 路径。&lt;/p&gt;
&lt;p&gt;官方流程在安装结束后就完成了，可以直接登录使用。如果需要修改配置将 &lt;code&gt;Claude Code&lt;/code&gt; 接入第三方 API，就需要修改这里的 &lt;code&gt;settings.json&lt;/code&gt; 配置文件，可以使用 &lt;code&gt;CC-Switch&lt;/code&gt; 或是手动编写，但是修改后会发现不生效。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Windows 配置 Claude Code 全流程</title>
      <link>https://frytea.com/archives/1615/</link>
      <pubDate>Fri, 09 Jan 2026 08:22:00 +0000</pubDate>
      <guid>https://frytea.com/archives/1615/</guid>
      <description>&lt;p&gt;今天终于跑通了 Windows 下运行 Claoude Code 的全流程，不借助 WSL ，原生运行。起因是自己需要一个可以长期运行任务的云桌面，这方面还是 Windows 最好用。不得不说相比于 &lt;code&gt;Linux/macOS&lt;/code&gt; ，&lt;code&gt;Windows&lt;/code&gt; 下运行 &lt;code&gt;Claude Code&lt;/code&gt; 实在太多坑了。&lt;/p&gt;</description>
    </item>
    <item>
      <title>2025-12-31 ｜ 年终总结</title>
      <link>https://frytea.com/archives/1614/</link>
      <pubDate>Wed, 31 Dec 2025 17:49:39 +0000</pubDate>
      <guid>https://frytea.com/archives/1614/</guid>
      <description>&lt;p&gt;2025 年就这样过去了，做了很多事情，发生了很多事情，是转折的一年，是难忘的一年，是值得回味的一年。&lt;/p&gt;
&lt;p&gt;这一年，生活轨迹发生了很堵变化，思想认识也发生了很多转变，突然要写年终总结，真不知道从何说起。就想到哪里说到哪里吧。&lt;/p&gt;</description>
    </item>
    <item>
      <title>AI 生图精品提示词｜第二期：城市星球</title>
      <link>https://frytea.com/archives/1613/</link>
      <pubDate>Sat, 13 Dec 2025 07:04:00 +0000</pubDate>
      <guid>https://frytea.com/archives/1613/</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;若没有特别说明，默认使用 &lt;a href=&#34;https://ailoft.net/&#34;&gt;AiLoft&lt;/a&gt; 提供的 &lt;code&gt;Nano Banana Pro&lt;/code&gt; 模型生成。&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;&lt;img alt=&#34;城市星球系列封面图&#34; loading=&#34;lazy&#34; src=&#34;https://cdn-imagehost.frytea.com/images/2025/12/13/o33ock.webp&#34;&gt;&lt;/p&gt;
&lt;p&gt;本次带来《城市星球》系列，先看效果图：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Refs: &lt;a href=&#34;https://x.com/TechieBySA/status/1999577563295826208&#34;&gt;https://x.com/TechieBySA/status/1999577563295826208&lt;/a&gt;&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;&lt;img alt=&#34;广州城市星球&#34; loading=&#34;lazy&#34; src=&#34;https://cdn-imagehost.frytea.com/images/2025/12/13/ntiazl.webp&#34;&gt;&lt;/p&gt;
&lt;p&gt;&lt;img alt=&#34;北京城市星球&#34; loading=&#34;lazy&#34; src=&#34;https://cdn-imagehost.frytea.com/images/2025/12/13/ntowrk.webp&#34;&gt;&lt;/p&gt;
&lt;p&gt;&lt;img alt=&#34;厦门城市星球&#34; loading=&#34;lazy&#34; src=&#34;https://cdn-imagehost.frytea.com/images/2025/12/13/nu86cj.webp&#34;&gt;&lt;/p&gt;
&lt;p&gt;&lt;img alt=&#34;香港城市星球&#34; loading=&#34;lazy&#34; src=&#34;https://cdn-imagehost.frytea.com/images/2025/12/13/nv58qh.webp&#34;&gt;&lt;/p&gt;
&lt;p&gt;&lt;img alt=&#34;芝加哥城市星球&#34; loading=&#34;lazy&#34; src=&#34;https://cdn-imagehost.frytea.com/images/2025/12/13/nv9wkq.webp&#34;&gt;&lt;/p&gt;
&lt;p&gt;&lt;img alt=&#34;澳门城市星球&#34; loading=&#34;lazy&#34; src=&#34;https://cdn-imagehost.frytea.com/images/2025/12/13/nvfosd.webp&#34;&gt;&lt;/p&gt;
&lt;p&gt;提示词如下：&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;Create a hyperrealistic miniature planet showcasing [GuangZhou] with famous landmarks seamlessly curving around the spherical surface. Position bold 3D white text ”[CITY]” naturally integrated across the lush green central parkland with realistic shadows and dimensional depth. Capture from a top-down orbiting angle that emphasizes the dramatic planet curvature. Use soft golden hour daylight filtering through partly cloudy skies, casting gentle shadows on emerald grass and surrounding trees. The background should blend into a swirling atmospheric sky. Apply vibrant greens, warm earth tones, and soft blues. Render in polished photorealistic style with fine architectural detail.
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;可以讲示例中的 &lt;code&gt;GuangZhou&lt;/code&gt; 换成其他城市，例如：&lt;/p&gt;</description>
    </item>
    <item>
      <title>AI 生图精品提示词｜第一期</title>
      <link>https://frytea.com/archives/1547/</link>
      <pubDate>Sat, 06 Dec 2025 06:47:00 +0000</pubDate>
      <guid>https://frytea.com/archives/1547/</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;若没有特别说明，默认使用 &lt;a href=&#34;https://ailoft.net/&#34;&gt;AiLoft&lt;/a&gt; 提供的 &lt;code&gt;Nano Banana Pro&lt;/code&gt; 模型生成。&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;本期封面图：&lt;/p&gt;
&lt;p&gt;&lt;img alt=&#34;英文封面图&#34; loading=&#34;lazy&#34; src=&#34;https://cdn-imagehost.frytea.com/images/2025/12/07/10ytg97.webp&#34;&gt;&lt;/p&gt;
&lt;p&gt;&lt;img alt=&#34;中文封面图&#34; loading=&#34;lazy&#34; src=&#34;https://cdn-imagehost.frytea.com/images/2025/12/07/10y3vde.webp&#34;&gt;&lt;/p&gt;
&lt;h1 id=&#34;3d-q-版迷你概念商店&#34;&gt;3D Q 版迷你概念商店&lt;/h1&gt;
&lt;blockquote&gt;
&lt;p&gt;Refs: &lt;a href=&#34;https://x.com/dotey/status/1995190286775881780&#34;&gt;https://x.com/dotey/status/1995190286775881780&lt;/a&gt;&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;说明：&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;🍌 nano banana prompt
3D chibi-style miniature concept store of {Brand Name}
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;提示词：&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;3D chibi-style miniature concept store of {Brand Name}, creatively designed with an exterior inspired by the brand&amp;#39;s most iconic product or packaging (such as a giant {brand&amp;#39;s core product, e.g., chicken bucket/hamburger/donut/roast duck}). The store features two floors with large glass windows clearly showcasing the cozy and finely decorated interior: {brand&amp;#39;s primary color}-themed decor, warm lighting, and busy staff dressed in outfits matching the brand. Adorable tiny figures stroll or sit along the street, surrounded by benches, street lamps, and potted plants, creating a charming urban scene. Rendered in a miniature cityscape style using Cinema 4D, with a blind-box toy aesthetic, rich in details and realism, and bathed in soft lighting that evokes a relaxing afternoon atmosphere. --ar 2:3

Brand name: Starbucks
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;效果图：
Starbucks
&lt;img alt=&#34;3D chibi-style miniature concept store of Starbucks&#34; loading=&#34;lazy&#34; src=&#34;https://cdn-imagehost.frytea.com/images/2025/12/06/ntjen3.webp&#34;&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Kubernetes kubectl --raw 使用指南</title>
      <link>https://frytea.com/archives/1546/</link>
      <pubDate>Mon, 10 Nov 2025 13:08:00 +0000</pubDate>
      <guid>https://frytea.com/archives/1546/</guid>
      <description>&lt;h2 id=&#34;什么是-kubectl-raw&#34;&gt;什么是 kubectl &amp;ndash;raw?&lt;/h2&gt;
&lt;p&gt;&lt;code&gt;kubectl --raw&lt;/code&gt; 是一个强大的底层工具,允许你直接访问 Kubernetes API Server 的 REST API,绕过 kubectl 的客户端逻辑、准入控制器(Admission Controllers)和 Webhook。&lt;/p&gt;</description>
    </item>
    <item>
      <title>磁盘使用分析工具对比：du vs ncdu vs gdu vs dust</title>
      <link>https://frytea.com/archives/1545/</link>
      <pubDate>Mon, 03 Nov 2025 15:14:51 +0000</pubDate>
      <guid>https://frytea.com/archives/1545/</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;Claude Sonnet 4.5 协助编写。&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;在日常的系统管理和磁盘空间清理工作中，我们经常需要分析磁盘使用情况。本文将对比四个常用的磁盘使用分析工具：传统的 &lt;code&gt;du&lt;/code&gt;、经典的交互式工具 &lt;code&gt;ncdu&lt;/code&gt;、现代化的 &lt;code&gt;gdu&lt;/code&gt; 和 &lt;code&gt;dust&lt;/code&gt;。&lt;/p&gt;</description>
    </item>
    <item>
      <title>2025 年黑五云主机活动汇总(含双十一)</title>
      <link>https://frytea.com/archives/1544/</link>
      <pubDate>Mon, 03 Nov 2025 15:14:00 +0000</pubDate>
      <guid>https://frytea.com/archives/1544/</guid>
      <description>&lt;p&gt;2025 年主机厂商黑五活动集合，持续更新。&lt;/p&gt;
&lt;p&gt;2025 年黑色星期五为 &lt;strong&gt;11月28日&lt;/strong&gt;。&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;内容收集自 Telegram、NodeSeek、LowEndTalk 等途径，仅做信息汇集，不做购买建议。
链接默认无 aff&lt;/p&gt;</description>
    </item>
    <item>
      <title>彻底解决阿里云和 tailscale 冲突</title>
      <link>https://frytea.com/archives/1543/</link>
      <pubDate>Mon, 27 Oct 2025 15:20:01 +0000</pubDate>
      <guid>https://frytea.com/archives/1543/</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;如果你在一台阿里云服务器安装并启动了 tailscale，大概率会出现&lt;strong&gt;阿里云服务器无法上网的问题&lt;/strong&gt;，根本原因为阿里云服务器默认DNS与tailscale网段产生冲突。&lt;/p&gt;</description>
    </item>
    <item>
      <title>2025-10-21 ｜ 沉淀思维</title>
      <link>https://frytea.com/archives/1542/</link>
      <pubDate>Tue, 21 Oct 2025 14:08:25 +0000</pubDate>
      <guid>https://frytea.com/archives/1542/</guid>
      <description>&lt;p&gt;焦虑的时候，还是要看书。&lt;/p&gt;
&lt;p&gt;一章一章的读下去，让自己的思维从那些焦虑的事情上短暂移开，看到更大的世界。&lt;/p&gt;
&lt;p&gt;焦虑是告诉人们处于不安全状态的信号，且焦虑的原因很有可能源自过去的事，低概率的事，未知的事情。弄清楚这一点，这只是传递信号，需要思考的，是更通透的看待这个世界，更深刻的思考面临的问题，更清晰的审视当前的处境。想清楚，看清楚，思考的足够深，足够远，就不会在意当下这一点小麻烦，焦虑可能就随之而去。&lt;/p&gt;</description>
    </item>
    <item>
      <title>macOS 单独为鼠标或触控板开启自然滚动</title>
      <link>https://frytea.com/archives/1541/</link>
      <pubDate>Sat, 18 Oct 2025 16:31:21 +0000</pubDate>
      <guid>https://frytea.com/archives/1541/</guid>
      <description>&lt;p&gt;macOS 系统配置“自然滚动”，虽然鼠标和触控板都可以配置，但是两个控制是同步的，更改任意一个另一个都会跟着动。&lt;/p&gt;
&lt;p&gt;一直是这样，也没有要更改的意思。&lt;/p&gt;
&lt;p&gt;使用 &lt;a href=&#34;https://github.com/linearmouse/linearmouse&#34;&gt;LinearMouse&lt;/a&gt; 这个软件可以实现单独为触控板开启自然滚动，鼠标不开启自然滚动。&lt;/p&gt;</description>
    </item>
    <item>
      <title>2025-10-16 ｜ 负载高低</title>
      <link>https://frytea.com/archives/1540/</link>
      <pubDate>Thu, 16 Oct 2025 15:10:22 +0000</pubDate>
      <guid>https://frytea.com/archives/1540/</guid>
      <description>&lt;p&gt;Oracle 云按照负载情况清退免费账户的虚拟机，这个思路感觉很厉害。其他云厂商都是听说有谁负载太高了，被限制。两种思维方式不同，可能面对的情况也有很大的区别。常规云厂商，如果单用户负载过高，影响到整体用户的体验，这就必须介入管控，这运行的每一分钟对云厂商都是金钱。但是对 Oracle 这种体量的企业来说，有严格的风控和注册限制，即使如此规模也很大，这里面难免有一批注册来不用的，这样的机器回收回去确实也合理，需要保证的是整体负载要上去，不要空置。两种思路，似乎跟现实中许多实体运转的情况，高度的类似。&lt;/p&gt;</description>
    </item>
    <item>
      <title>2025-10-15 ｜ 睡眠周期</title>
      <link>https://frytea.com/archives/1539/</link>
      <pubDate>Wed, 15 Oct 2025 14:27:58 +0000</pubDate>
      <guid>https://frytea.com/archives/1539/</guid>
      <description>&lt;p&gt;关于睡眠的周期，总是可以看到一个说法，是说睡眠最好睡到一个半小时的倍数，这样是完整的睡眠周期，可以避免从深度睡眠中起来。&lt;/p&gt;
&lt;p&gt;但很奇怪，感觉自己不同的时长，对应清醒程度跟睡眠周期不是很一样。有时候感觉很符合睡眠周期的时间，反而起来的时候很困。有时候感觉睡眠时间跟睡眠周期差的很远，但是起来的时候反而是清醒的。&lt;/p&gt;</description>
    </item>
    <item>
      <title>2025-10-14 ｜ 转换情绪与独立观点</title>
      <link>https://frytea.com/archives/1538/</link>
      <pubDate>Tue, 14 Oct 2025 13:36:33 +0000</pubDate>
      <guid>https://frytea.com/archives/1538/</guid>
      <description>&lt;h1 id=&#34;愤怒转换&#34;&gt;愤怒转换&lt;/h1&gt;
&lt;p&gt;在书店顺手买了一本《给大人们的情绪使用说明书》，从第一章《愤怒》中摘录几句话：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;想让愤怒这种情绪发挥它原本的作用，就需要借助大脑中的“自动翻译器”。
在感知到自己生气后，迅速在大脑中转换：愤怒 = 事情发展不顺。于是豁然开朗，进入解决问题的状态中。&lt;/p&gt;</description>
    </item>
    <item>
      <title>go 拉取 gitcode.com 私有 mod</title>
      <link>https://frytea.com/archives/1537/</link>
      <pubDate>Tue, 14 Oct 2025 11:51:14 +0000</pubDate>
      <guid>https://frytea.com/archives/1537/</guid>
      <description>&lt;h1 id=&#34;tldr&#34;&gt;TL;DR&lt;/h1&gt;
&lt;p&gt;某个项目 mod 托管在 &lt;code&gt;gitcode&lt;/code&gt;，无法拉取。&lt;code&gt;git&lt;/code&gt; 登陆也不行，需要配置 &lt;code&gt;git&lt;/code&gt; 针对 &lt;code&gt;gitcode&lt;/code&gt; 默认走 &lt;code&gt;ssh&lt;/code&gt; 协议：&lt;/p&gt;
&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;&#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;git config --global url.&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;ssh://git@gitcode.com&amp;#34;&lt;/span&gt;.insteadOf &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;https://gitcode.com&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;在网上查到比较多的是针对 &lt;code&gt;gitlab&lt;/code&gt; 或 &lt;code&gt;github&lt;/code&gt; 的：&lt;/p&gt;
&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;&#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;# gitlab&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;git config --global url.&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;ssh://git@gitlab-company&amp;#34;&lt;/span&gt;.insteadOf &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;https://gitlab.xxx.cn&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&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;# github的同理&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;git config --global url.&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;ssh://git@github-company&amp;#34;&lt;/span&gt;.insteadOf &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;https://github.com&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;配置后就可以正常 &lt;code&gt;go mod tidy&lt;/code&gt; 了。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Git 将某个文件恢复到其他分支的状态</title>
      <link>https://frytea.com/archives/1536/</link>
      <pubDate>Tue, 14 Oct 2025 04:05:22 +0000</pubDate>
      <guid>https://frytea.com/archives/1536/</guid>
      <description>&lt;h1 id=&#34;tldr&#34;&gt;TL;DR&lt;/h1&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;# 下面两种写法二选一
git checkout dev -- path/to/config.yaml

git restore --source=dev -- path/to/config.yaml
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;以上命令都做了一件事情：假设我当前在 &lt;code&gt;main&lt;/code&gt; 分支，希望将 &lt;code&gt;path/to/config.yaml&lt;/code&gt; 恢复到 &lt;code&gt;dev&lt;/code&gt; 分支的状态。&lt;/p&gt;</description>
    </item>
    <item>
      <title>SSH 通过跳板机连接</title>
      <link>https://frytea.com/archives/1535/</link>
      <pubDate>Tue, 14 Oct 2025 04:05:08 +0000</pubDate>
      <guid>https://frytea.com/archives/1535/</guid>
      <description>&lt;h1 id=&#34;tldr&#34;&gt;TL;DR&lt;/h1&gt;
&lt;p&gt;有两种方式可以实现通过跳板机直接连接目标服务器 SSH.&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;# ProxyJump（推荐方式）OpenSSH &amp;gt;= 7.3
ssh -J user@jump-server.dealiaxy.com:10023 user@target.dealiaxy.com
# 在这条命令中，-J 后面指定了跳板机的地址（user@jump-server.dealiaxy.com）和端口（10023）。SSH 会先与跳板机建立连接，然后通过跳板机转发流量到目标服务器 target.dealiaxy.com。整个过程只需要一次登录操作，极大简化了访问流程。
# ProxyCommand
ssh -o &amp;#34;ProxyCommand ssh -W %h:%p user@jump-server.dealiaxy.com -p 10023&amp;#34; user@target.dealiaxy.com
# 在这个命令中，-o &amp;#34;ProxyCommand&amp;#34; 选项指定了一个自定义的命令来通过跳板机进行连接。具体地，ssh -W %h:%p 会将目标主机（%h）和端口（%p）转发给跳板机，然后通过跳板机建立与目标主机的连接。
&lt;/code&gt;&lt;/pre&gt;&lt;h1 id=&#34;refs&#34;&gt;Refs&lt;/h1&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://www.cnblogs.com/deali/p/18678315&#34;&gt;SSH 跳板机原理与配置：实现无缝跳板连接，一步直达目标主机&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description>
    </item>
    <item>
      <title>lxc 使用 chronyc 构建 ntp 服务</title>
      <link>https://frytea.com/archives/1534/</link>
      <pubDate>Tue, 14 Oct 2025 04:04:52 +0000</pubDate>
      <guid>https://frytea.com/archives/1534/</guid>
      <description>&lt;p&gt;lxc 启动 chronyd 是无法直接启动的，因为用到了很多未授权的权限。&lt;/p&gt;
&lt;h1 id=&#34;tldr&#34;&gt;TL;DR&lt;/h1&gt;
&lt;p&gt;lxc与宿主机共用内核，因此时间也是共用的，无需同步。如果你想构建一个 ntp 服务，不需要同步时间，可以像下面这样做：&lt;/p&gt;</description>
    </item>
    <item>
      <title>2025-10-13 ｜ 独立思考于未来能源</title>
      <link>https://frytea.com/archives/1533/</link>
      <pubDate>Mon, 13 Oct 2025 13:29:15 +0000</pubDate>
      <guid>https://frytea.com/archives/1533/</guid>
      <description>&lt;h1 id=&#34;think1&#34;&gt;Think.1&lt;/h1&gt;
&lt;p&gt;cc 的额度用的好快。之前每次触发限流，又可以用差不多的时间。现在触发几次限流以后，就开始提醒我接近周限额。限制可真是越来越多。本来以为发了新的模型可以用更久一点，结果非但没有更多，感觉更容易限流了。可能每个人的体感不一样。既然这么容易限制，大规模的使用势必是要考虑如何回本的，所以就看如何在有限的token中获取更多了。似乎 AI 正逐渐向一种“资源”靠近，未来或许真的就像是用水和电一样，去获取和使用AI资源。但是从经济的角度去看，似乎赚钱的人们很喜欢这样。都希望将自己的产品，包装成更容易、更广泛流动的资源。&lt;/p&gt;</description>
    </item>
    <item>
      <title>2025-10-12｜AI Review 及高质量工作流</title>
      <link>https://frytea.com/archives/1532/</link>
      <pubDate>Sun, 12 Oct 2025 14:33:31 +0000</pubDate>
      <guid>https://frytea.com/archives/1532/</guid>
      <description>&lt;h1 id=&#34;ai-review&#34;&gt;AI review&lt;/h1&gt;
&lt;p&gt;今天尝试了一下用 cc 写代码、设计。再用 cx review，发现的问题再给 cc 优化，效果确实不错。cx 的优势在于准确可控，致力于给出最标准的答案，因此创造性略差，做出的东西准确但呆板。cc 做的东西更容易给人眼前一亮的感觉，但有时不够准确，修改面积过大，随之会带来一些风险和漏洞。结合两者优势，共同使用，扬长避短，效果还不错。&lt;/p&gt;</description>
    </item>
    <item>
      <title>2025-10-11 ｜ 人生阶段</title>
      <link>https://frytea.com/archives/1531/</link>
      <pubDate>Sat, 11 Oct 2025 12:27:38 +0000</pubDate>
      <guid>https://frytea.com/archives/1531/</guid>
      <description>&lt;p&gt;或许到一定程度，就需要换个思维考虑问题。不同的阶段，需匹配不同的思维方式才可。&lt;/p&gt;
&lt;p&gt;&lt;img alt=&#34;Penguin - unsplash&#34; loading=&#34;lazy&#34; src=&#34;https://cdn-imagehost.frytea.com/images/2025/10/11/xieua0.webp&#34;&gt;&lt;/p&gt;
&lt;p&gt;今天在听腾讯发展的一个播客，讲到腾讯早期什么都做，各种抄袭，最后发展成很坏的风评，最终引发 3Q 大战。Pony Ma 在那时候进行深刻反思，觉得自己只是一心想要做好产品，但是为什么会到这个结果呢，经过深刻反思，后面的做事方式也发生了深刻的改变。&lt;/p&gt;</description>
    </item>
    <item>
      <title>2025-10-10 ｜ AI Logo ｜ 远程操控 AI</title>
      <link>https://frytea.com/archives/1530/</link>
      <pubDate>Fri, 10 Oct 2025 15:14:00 +0000</pubDate>
      <guid>https://frytea.com/archives/1530/</guid>
      <description>&lt;h1 id=&#34;远程操控-ai&#34;&gt;远程操控 AI&lt;/h1&gt;
&lt;p&gt;用了一下 happy，还挺震惊的。&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://github.com/slopus/happy&#34;&gt;https://github.com/slopus/happy&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;服务器上装上这个，手机扫码，就可以远程操控 Claude Code/Codex 写代码了。有点强。&lt;/p&gt;
&lt;p&gt;&lt;img alt=&#34;图文无关&#34; loading=&#34;lazy&#34; src=&#34;https://cdn-imagehost.frytea.com/images/2025/10/10/129b2tl.webp&#34;&gt;&lt;/p&gt;
&lt;h1 id=&#34;ai-logo-生成&#34;&gt;AI LOGO 生成&lt;/h1&gt;
&lt;p&gt;最近在做的一个小项目logo实在头疼，用了好几个之前觉得好用的 logo 工具，又新发掘了几个，再结合了下面这些工具后，终于生成了一个自己满意的：&lt;/p&gt;</description>
    </item>
    <item>
      <title>2025-10-09 | 去班味｜银杏｜域名</title>
      <link>https://frytea.com/archives/1529/</link>
      <pubDate>Thu, 09 Oct 2025 15:01:00 +0000</pubDate>
      <guid>https://frytea.com/archives/1529/</guid>
      <description>&lt;h1 id=&#34;去班味&#34;&gt;去班味&lt;/h1&gt;
&lt;p&gt;去了一个跟自己生活地方气质完全不同的地方，回想起来才感觉是一种累但得到休息的感觉。假期去香港转了两天，走过深圳就能感受到一种气质迅速的转变。回过头来才意识到，这种感受不一样风格的生活和空气，可以让人短暂的从高压神经状态下抽离，得到一定程度放松。后面也可逐渐尝试这种方式，让自己放松。&lt;/p&gt;</description>
    </item>
    <item>
      <title>2025-10-08</title>
      <link>https://frytea.com/archives/1528/</link>
      <pubDate>Wed, 08 Oct 2025 11:56:59 +0000</pubDate>
      <guid>https://frytea.com/archives/1528/</guid>
      <description>&lt;h1 id=&#34;ms-卡&#34;&gt;MS 卡&lt;/h1&gt;
&lt;p&gt;收了一台旧相机，发现用的存储卡是索尼的 Memory Stick Pro Duo，简称 MS 卡，查了一下资料：&lt;/p&gt;
&lt;p&gt;Memory Stick，简称为MS卡、MS记忆卡、记忆棒等，它是一种可移除式快闪存储卡格式，并由索尼公司制造，于1998年10月推出市场。现因SD卡等存储介质较为通用，仅索尼产品使用MS卡。&lt;/p&gt;</description>
    </item>
    <item>
      <title>2025-10-07</title>
      <link>https://frytea.com/archives/1527/</link>
      <pubDate>Tue, 07 Oct 2025 14:07:48 +0000</pubDate>
      <guid>https://frytea.com/archives/1527/</guid>
      <description>&lt;h1 id=&#34;期待一下-figma-的-ai-助力&#34;&gt;期待一下 Figma 的 AI 助力&lt;/h1&gt;
&lt;p&gt;试了一下 Figma make，感觉效果比 v0 好一些。做出的页面更精致一些，布局、交互更合理。输出结果还是给出 tex 源码，要是能直接出 figma 设计稿就好了。期待一下。&lt;/p&gt;</description>
    </item>
    <item>
      <title>2025-10-06</title>
      <link>https://frytea.com/archives/1526/</link>
      <pubDate>Mon, 06 Oct 2025 15:40:54 +0000</pubDate>
      <guid>https://frytea.com/archives/1526/</guid>
      <description>&lt;h1 id=&#34;中秋快乐&#34;&gt;中秋快乐&lt;/h1&gt;
&lt;p&gt;祝大家中秋快乐，愿团圆美好，所愿皆所得，越来越好。&lt;/p&gt;
&lt;p&gt;&lt;img alt=&#34;岭南印象园 - 打铁花&#34; loading=&#34;lazy&#34; src=&#34;https://image.frytea.com/images/2025/10/06/12id0nr.webp&#34;&gt;&lt;/p&gt;
&lt;h1 id=&#34;尝试降低心智负担&#34;&gt;尝试降低心智负担&lt;/h1&gt;
&lt;p&gt;发现自己的心智负担好重。&lt;/p&gt;
&lt;p&gt;记笔记，都要担心同步问题、发布问题、隐私问题。想的太多让我好累。&lt;/p&gt;</description>
    </item>
    <item>
      <title>2025-10-05</title>
      <link>https://frytea.com/archives/1524/</link>
      <pubDate>Sun, 05 Oct 2025 14:37:36 +0000</pubDate>
      <guid>https://frytea.com/archives/1524/</guid>
      <description>&lt;h1 id=&#34;文字表达能力&#34;&gt;文字表达能力&lt;/h1&gt;
&lt;p&gt;今天看到这个 &lt;a href=&#34;https://v2ex.com/t/1163394&#34;&gt;帖子&lt;/a&gt;  ，很有感触。现在很多工作为了快，都是先用 AI 打个底稿，再人工优化。久而久之写作水平就下降了。
此前一直想要多写点东西，但总是拘泥于形式不敢下手。现在看来再不下手就晚了，敢在自己写作水平下降之前多写点东西。无所谓什么，写就是了。&lt;/p&gt;</description>
    </item>
    <item>
      <title>优秀的 SubReddit 清单</title>
      <link>https://frytea.com/archives/1523/</link>
      <pubDate>Sun, 28 Sep 2025 15:43:43 +0000</pubDate>
      <guid>https://frytea.com/archives/1523/</guid>
      <description>&lt;h1 id=&#34;subreddit-清单&#34;&gt;SubReddit 清单&lt;/h1&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;SaaS 类&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;r/B2BSaaS（B2B SaaS 人群集中，~8k 成员）&lt;/li&gt;
&lt;li&gt;r/NoCodeSaaS（无代码 SaaS，~22k 成员）&lt;/li&gt;
&lt;li&gt;r/micro_saas（微型 SaaS，~10k 成员）&lt;/li&gt;
&lt;li&gt;r/indiebiz（小体量&amp;amp;个人生意，~24k 成员）&lt;/li&gt;
&lt;li&gt;r/SaaS（讨论/反馈/支持，~95k 成员）&lt;/li&gt;
&lt;li&gt;r/startup_resources（工具/模版/手册，~24k 成员）&lt;/li&gt;
&lt;li&gt;r/LaunchMyStartup（早期发布与反馈，~2k 成员）&lt;/li&gt;
&lt;li&gt;r/ProductHunters（PH 发现与讨论，~23k 成员）&lt;/li&gt;
&lt;li&gt;r/saasapps（平台/生态应用，成员数小）&lt;/li&gt;
&lt;li&gt;r/BootstrappedSaaS（自筹/自启动，~935 成员）&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;创业类&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;r/startups（最大创业社区，~1.2M 成员）&lt;/li&gt;
&lt;li&gt;r/SideProject（副业/项目展示，~478k 成员）&lt;/li&gt;
&lt;li&gt;r/indiehackers（独立开发者，~24k 成员）&lt;/li&gt;
&lt;li&gt;r/EntrepreneurRideAlong（创业旅程分享，~517k 成员）&lt;/li&gt;
&lt;li&gt;r/thesidehustle（点子与建议，~79k 成员）&lt;/li&gt;
&lt;li&gt;r/growmybusiness（增长与扩张，~51k 成员）&lt;/li&gt;
&lt;li&gt;r/startup（创业创建与增长，~300k 成员）&lt;/li&gt;
&lt;li&gt;r/startups_promotion（集中自荐区，~3.1k 成员）&lt;/li&gt;
&lt;li&gt;r/roastmystartup（犀利真反馈，成员数小）&lt;/li&gt;
&lt;li&gt;r/sweatystartup（轻松创业讨论，成员数小）&lt;/li&gt;
&lt;li&gt;r/SmallBusiness（日常经营与建议，成员数大）&lt;/li&gt;
&lt;li&gt;r/Entrepreneur（泛创业与商业，成员数大）&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;营销类&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;r/SaaSMarketing（从策略到落地，~11k 成员）&lt;/li&gt;
&lt;li&gt;r/ProductMarketing（定位/叙事/布，~18k 成员）&lt;/li&gt;
&lt;li&gt;r/MarketingHelp（众包建议与诊断，~16k 成员）&lt;/li&gt;
&lt;li&gt;r/ecommerce_growth（电商增长（可迁移），~9k 成员）&lt;/li&gt;
&lt;li&gt;r/email（送达率/MarTech，~11k 成员）&lt;/li&gt;
&lt;li&gt;r/EmailOutreach（冷邮件技巧，~1k 成员）&lt;/li&gt;
&lt;li&gt;r/AskGrowth（增长问答，数百成员）&lt;/li&gt;
&lt;li&gt;r/Marketing（综合营销，成员数大）&lt;/li&gt;
&lt;li&gt;r/AskMarketing（营销问答，成员数中）&lt;/li&gt;
&lt;li&gt;r/SocialMedia（社媒策略，成员数大）&lt;/li&gt;
&lt;li&gt;r/CopyWriting（文案/转化，成员数中）&lt;/li&gt;
&lt;li&gt;r/Advertising（投放策略，成员数中）&lt;/li&gt;
&lt;li&gt;r/WebMarketing（SEO/内容，成员数大）&lt;/li&gt;
&lt;li&gt;r/EmailMarketing（邮件营销，成员数中）&lt;/li&gt;
&lt;li&gt;r/Sales（销售与漏斗，成员数大）&lt;/li&gt;
&lt;li&gt;r/PlugYourProduct（直推（先看规则），成员数小）&lt;/li&gt;
&lt;li&gt;r/GrowthHacking（增长与病毒，成员数中）&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;技术类&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;r/NextGenAITool（AI 工具展示，~4k 成员）&lt;/li&gt;
&lt;li&gt;r/webdev（Web 开发，~1.4M 成员）&lt;/li&gt;
&lt;li&gt;r/JAMstack_dev（落地页与性能，~2k 成员）&lt;/li&gt;
&lt;li&gt;r/pocketbase（快速后端，~3k 成员）&lt;/li&gt;
&lt;li&gt;r/SQLServer（多租户/性能，~58k 成员）&lt;/li&gt;
&lt;li&gt;r/lowcode（流程自动化，~3k 成员）&lt;/li&gt;
&lt;li&gt;r/DesignCritiques（设计求评，~85k 成员）&lt;/li&gt;
&lt;li&gt;r/InternetIsBeautiful（创意展示，~16.2M 成员）&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;测试类&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;r/TestMyApp（早期用户与反馈，~6k 成员）&lt;/li&gt;
&lt;li&gt;r/AlphaandBetausers（寻找测试者，~10k 成员）&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;支付类&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;r/stripe（订阅/计费，~19k 成员）&lt;/li&gt;
&lt;li&gt;r/PaymentProcessing（网关/拒付，~5k 成员）&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;运营类&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;r/FPandA（预算/收入模型，~53k 成员）&lt;/li&gt;
&lt;li&gt;r/CustomerService（流程与工具，~39k 成员）&lt;/li&gt;
&lt;li&gt;r/CustomerValue（价值定价/CS 对齐，成员数小）&lt;/li&gt;
&lt;li&gt;r/CustomerSuccessHub（CS 社区，成员数小）&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;融资类&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;r/VentureCapital（基金/募资洞见，成员数大）&lt;/li&gt;
&lt;li&gt;r/Crowdfunding（众筹策略，成员数中）&lt;/li&gt;
&lt;li&gt;r/Kickstarter（众筹项目，成员数大）&lt;/li&gt;
&lt;li&gt;r/startupinvesting（早期投资，~1k 成员）&lt;/li&gt;
&lt;li&gt;r/SaaSidea（点子分享，成员数小）&lt;/li&gt;
&lt;li&gt;r/AISaaSHunter（AI SaaS 展示，成员数小）&lt;/li&gt;
&lt;li&gt;r/LLMO_SaaS（LLM SEO 分发，数百成员）&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img alt=&#34;Reddit增长地图&#34; loading=&#34;lazy&#34; src=&#34;https://cdn-imagehost.frytea.com/images/2025/09/28/12pi66d.webp&#34;&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>云部署平台全面对比：Railway vs Render vs 其他主流方案（2025年版）</title>
      <link>https://frytea.com/archives/1522/</link>
      <pubDate>Fri, 19 Sep 2025 17:08:57 +0000</pubDate>
      <guid>https://frytea.com/archives/1522/</guid>
      <description>&lt;p&gt;随着 Heroku 免费套餐的终止，开发者们纷纷寻找新的云部署解决方案。本文将深入对比 Railway、Render 以及其他主流平台，帮你选择最适合项目需求的部署方案。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Synology 群晖重置 Syncthing 密码</title>
      <link>https://frytea.com/archives/1521/</link>
      <pubDate>Sat, 13 Sep 2025 17:07:13 +0000</pubDate>
      <guid>https://frytea.com/archives/1521/</guid>
      <description>&lt;h1 id=&#34;tldr&#34;&gt;TL;DR&lt;/h1&gt;
&lt;p&gt;进入群晖终端执行这个：&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;sudo vim /volume1/@appdata/syncthing/config.xml
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;将其中的 &lt;code&gt;password&lt;/code&gt; 这一行删掉即可，注意备份。&lt;/p&gt;
&lt;h1 id=&#34;refs&#34;&gt;Refs&lt;/h1&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://www.reddit.com/r/synology/comments/12vq2qi/syncthing_config_file_location/?tl=zh-hans&#34;&gt;https://www.reddit.com/r/synology/comments/12vq2qi/syncthing_config_file_location/?tl=zh-hans&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description>
    </item>
    <item>
      <title>整理了一个 AI 提示词库</title>
      <link>https://frytea.com/archives/1520/</link>
      <pubDate>Sun, 07 Sep 2025 17:00:00 +0000</pubDate>
      <guid>https://frytea.com/archives/1520/</guid>
      <description>&lt;p&gt;大模型的能力越来越强，但是如何发挥大模型真正的实力？&lt;/p&gt;
&lt;p&gt;这是我一直在思考的问题，在平常的使用过程中很容易发现，提示词的使用技巧对于生成结果的质量至关重要。多看看优秀的提示词，还能启发我们利用大模型的更多用法。&lt;/p&gt;</description>
    </item>
    <item>
      <title>让 LLM 看到真实世界的 Playwright MCP</title>
      <link>https://frytea.com/archives/1519/</link>
      <pubDate>Sun, 07 Sep 2025 14:22:41 +0000</pubDate>
      <guid>https://frytea.com/archives/1519/</guid>
      <description>&lt;p&gt;Playwright MCP 是一个模型上下文协议（MCP）服务器，使用 &lt;a href=&#34;https://playwright.dev&#34;&gt;Playwright&lt;/a&gt; 提供浏览器自动化功能。该服务器使 LLM 能够通过结构化的可访问性快照与网页交互，从而绕过对屏幕截图或视觉调整模型的需求。&lt;/p&gt;</description>
    </item>
    <item>
      <title>磁盘占用分析利器 ncdu</title>
      <link>https://frytea.com/archives/1518/</link>
      <pubDate>Sun, 07 Sep 2025 14:22:16 +0000</pubDate>
      <guid>https://frytea.com/archives/1518/</guid>
      <description>&lt;p&gt;现在使用 &lt;a href=&#34;https://dev.yorhel.nl/ncdu&#34;&gt;&lt;code&gt;ncdu&lt;/code&gt;&lt;/a&gt; 的话，只需要执行一次就可以查询目录大小并排序，且删除文件也很方便，不会出错。&lt;/p&gt;
&lt;h1 id=&#34;基本用法&#34;&gt;基本用法&lt;/h1&gt;
&lt;p&gt;安装：&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;# ubuntu
sudo apt install ncdu
# centos
sudo yum install ncdu
# macOS
brew install ncdu
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;使用&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;# 统计当前所在目录及子目录的文件占用情况
ncdu

# 统计指定的 /data 目录
ncdu /data

# 将 /data 目录的情况输出到 ~/ncdu.txt
ncdu /data -o ~/ncdu.txt

# 加载本地根据，而不是进行实时统计
ncdu -f ~/ncdu.txt 
&lt;/code&gt;&lt;/pre&gt;&lt;h1 id=&#34;references&#34;&gt;References&lt;/h1&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://zhaojun.vip/archives/66/&#34;&gt;Linux 命令行工具 ncdu 磁盘占用分析利器&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://formulae.brew.sh/formula/ncdu&#34;&gt;ncdu - brew&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description>
    </item>
    <item>
      <title>地图标记和兴趣点分享软件合集</title>
      <link>https://frytea.com/archives/1517/</link>
      <pubDate>Mon, 01 Sep 2025 03:19:33 +0000</pubDate>
      <guid>https://frytea.com/archives/1517/</guid>
      <description>&lt;p&gt;从学 GIS 开始，就一直想做/找一个地图兴趣点标记、分享软件。之前也做过，但是苦于时间、运维成本太高，就只能放在那里了。直到最近发现自己总是会碰到这种，需要标记和分享兴趣点的需求。特别是多点规划、形成规划的时候，有一个这样的软件比直接看地图要方便太多。&lt;/p&gt;</description>
    </item>
    <item>
      <title>自建 gitlab 徽标问题导致项目 500 问题解决</title>
      <link>https://frytea.com/archives/1516/</link>
      <pubDate>Thu, 28 Aug 2025 14:33:56 +0000</pubDate>
      <guid>https://frytea.com/archives/1516/</guid>
      <description>&lt;h1 id=&#34;问题&#34;&gt;问题&lt;/h1&gt;
&lt;p&gt;最近内部 gitlab 某些项目打开就 500 了， 看 gitlab 报错日志如下：&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;gitlab  | {&amp;#34;method&amp;#34;:&amp;#34;GET&amp;#34;,&amp;#34;path&amp;#34;:&amp;#34;/xxx/xxx&amp;#34;,&amp;#34;format&amp;#34;:&amp;#34;html&amp;#34;,&amp;#34;controller&amp;#34;:&amp;#34;ProjectsController&amp;#34;,&amp;#34;action&amp;#34;:&amp;#34;show&amp;#34;,&amp;#34;status&amp;#34;:500,&amp;#34;time&amp;#34;:&amp;#34;2025-08-28T00:51:41.511Z&amp;#34;,&amp;#34;params&amp;#34;:[{&amp;#34;key&amp;#34;:&amp;#34;namespace_id&amp;#34;,&amp;#34;value&amp;#34;:&amp;#34;xxx&amp;#34;},{&amp;#34;key&amp;#34;:&amp;#34;id&amp;#34;,&amp;#34;value&amp;#34;:&amp;#34;xxx&amp;#34;}],&amp;#34;remote_ip&amp;#34;:&amp;#34;10.17.7.63&amp;#34;,&amp;#34;user_id&amp;#34;:74,&amp;#34;username&amp;#34;:&amp;#34;xxxgitlab | {&amp;#34;method&amp;#34;:&amp;#34;GET&amp;#34;,&amp;#34;path&amp;#34;:&amp;#34;/xxx/xxx&amp;#34;,&amp;#34;format&amp;#34;:&amp;#34;html&amp;#34;,&amp;#34;controller&amp;#34;:&amp;#34;ProjectsController&amp;#34;,&amp;#34;action&amp;#34;:&amp;#34;show&amp;#34;,&amp;#34;status&amp;#34;:500,&amp;#34;time&amp;#34;:&amp;#34;2025-08-28T00:51:41.511Z&amp;#34;,&amp;#34;params&amp;#34;:[{&amp;#34;key&amp;#34;:&amp;#34;namespace_id&amp;#34;,&amp;#34;value&amp;#34;:&amp;#34;xxx&amp;#34;},{&amp;#34;key&amp;#34;:&amp;#34;id&amp;#34;,&amp;#34;value&amp;#34;:&amp;#34;xxx&amp;#34;}],&amp;#34;remote_ip&amp;#34;:&amp;#34;10.17.7.63&amp;#34;,&amp;#34;user_id&amp;#34;:74,&amp;#34;username&amp;#34;:&amp;#34;xxx&amp;#34;,&amp;#34;ua&amp;#34;:&amp;#34;Mozilla/5.0 (X11; Linux x86_64; rv:140.0) Gecko/20100101 Firefox/140.0&amp;#34;,&amp;#34;correlation_id&amp;#34;:&amp;#34;01K3Q2F5DXP8Y33B25TW9SSMYM&amp;#34;,&amp;#34;meta.user&amp;#34;:&amp;#34;xxx&amp;#34;,&amp;#34;meta.project&amp;#34;:&amp;#34;xxx/xxx&amp;#34;,&amp;#34;meta.root_namespace&amp;#34;:&amp;#34;storage&amp;#34;,&amp;#34;meta.caller_id&amp;#34;:&amp;#34;ProjectsController#show&amp;#34;,&amp;#34;meta.remote_ip&amp;#34;:&amp;#34;10.17.7.63&amp;#34;,&amp;#34;meta.feature_category&amp;#34;:&amp;#34;projects&amp;#34;,&amp;#34;meta.client_id&amp;#34;:&amp;#34;user/74&amp;#34;,&amp;#34;redis_calls&amp;#34;:21,&amp;#34;redis_duration_s&amp;#34;:0.007123,&amp;#34;redis_read_bytes&amp;#34;:2997,&amp;#34;redis_write_bytes&amp;#34;:2370,&amp;#34;redis_cache_calls&amp;#34;:20,&amp;#34;redis_cache_duration_s&amp;#34;:0.006591,&amp;#34;redis_cache_read_bytes&amp;#34;:2816,&amp;#34;redis_cache_write_bytes&amp;#34;:1035,&amp;#34;redis_shared_state_calls&amp;#34;:1,&amp;#34;redis_shared_state_duration_s&amp;#34;:0.000532,&amp;#34;redis_shared_state_read_bytes&amp;#34;:181,&amp;#34;redis_shared_state_write_bytes&amp;#34;:1335,&amp;#34;db_count&amp;#34;:41,&amp;#34;db_write_count&amp;#34;:0,&amp;#34;db_cached_count&amp;#34;:10,&amp;#34;cpu_s&amp;#34;:2.291446,&amp;#34;mem_objects&amp;#34;:394125,&amp;#34;mem_bytes&amp;#34;:52397272,&amp;#34;mem_mallocs&amp;#34;:198648,&amp;#34;mem_total_bytes&amp;#34;:68162272,&amp;#34;queue_duration_s&amp;#34;:0.009214,&amp;#34;exception.class&amp;#34;:&amp;#34;Rack::Timeout::RequestTimeoutException&amp;#34;,&amp;#34;exception.message&amp;#34;:&amp;#34;Request ran for longer than 60000ms&amp;#34;,&amp;#34;exception.backtrace&amp;#34;:[&amp;#34;lib/gitlab/url_blocker.rb:113:in `getaddrinfo&amp;#39;&amp;#34;,&amp;#34;lib/gitlab/url_blocker.rb:113:in `get_address_info&amp;#39;&amp;#34;,&amp;#34;lib/gitlab/url_blocker.rb:48:in `validate!&amp;#39;&amp;#34;,&amp;#34;app/validators/addressable_url_validator.rb:83:in `validate_each&amp;#39;&amp;#34;,&amp;#34;app/models/badge.rb:43:in `build_rendered_url&amp;#39;&amp;#34;,&amp;#34;app/models/badge.rb:36:in `rendered_image_url&amp;#39;&amp;#34;,&amp;#34;app/models/badges/project_badge.rb:15:in `rendered_image_url&amp;#39;&amp;#34;,&amp;#34;app/views/projects/_home_panel.html.haml:93&amp;#34;,&amp;#34;app/views/projects/_home_panel.html.haml:89&amp;#34;,&amp;#34;app/views/projects/_home_panel.html.haml:87&amp;#34;,&amp;#34;app/views/projects/show.html.haml:14&amp;#34;,&amp;#34;app/controllers/application_controller.rb:128:in `render&amp;#39;&amp;#34;,&amp;#34;app/controllers/application_controller.rb:538:in `block in allow_gitaly_ref_name_caching&amp;#39;&amp;#34;,&amp;#34;lib/gitlab/gitaly_client.rb:341:in `allow_ref_name_caching&amp;#39;&amp;#34;,&amp;#34;app/controllers/application_controller.rb:537:in `allow_gitaly_ref_name_caching&amp;#39;&amp;#34;,&amp;#34;app/controllers/application_controller.rb:487:in `set_current_admin&amp;#39;&amp;#34;,&amp;#34;lib/gitlab/session.rb:11:in `with_session&amp;#39;&amp;#34;,&amp;#34;app/controllers/application_controller.rb:478:in `set_session_storage&amp;#39;&amp;#34;,&amp;#34;lib/gitlab/i18n.rb:99:in `with_locale&amp;#39;&amp;#34;,&amp;#34;lib/gitlab/i18n.rb:105:in `with_user_locale&amp;#39;&amp;#34;,&amp;#34;app/controllers/application_controller.rb:472:in `set_locale&amp;#39;&amp;#34;,&amp;#34;app/controllers/application_controller.rb:466:in `set_current_context&amp;#39;&amp;#34;,&amp;#34;lib/gitlab/metrics/elasticsearch_rack_middleware.rb:16:in `call&amp;#39;&amp;#34;,&amp;#34;lib/gitlab/middleware/rails_queue_duration.rb:33:in `call&amp;#39;&amp;#34;,&amp;#34;lib/gitlab/metrics/rack_middleware.rb:16:in `block in call&amp;#39;&amp;#34;,&amp;#34;lib/gitlab/metrics/web_transaction.rb:21:in `run&amp;#39;&amp;#34;,&amp;#34;lib/gitlab/metrics/rack_middleware.rb:16:in `call&amp;#39;&amp;#34;,&amp;#34;lib/gitlab/middleware/speedscope.rb:13:in `call&amp;#39;&amp;#34;,&amp;#34;lib/gitlab/request_profiler/middleware.rb:17:in `call&amp;#39;&amp;#34;,&amp;#34;lib/gitlab/jira/middleware.rb:19:in `call&amp;#39;&amp;#34;,&amp;#34;lib/gitlab/middleware/go.rb:20:in `call&amp;#39;&amp;#34;,&amp;#34;lib/gitlab/etag_caching/middleware.rb:21:in `call&amp;#39;&amp;#34;,&amp;#34;lib/gitlab/middleware/multipart.rb:172:in `call&amp;#39;&amp;#34;,&amp;#34;lib/gitlab/middleware/read_only/controller.rb:50:in `call&amp;#39;&amp;#34;,&amp;#34;lib/gitlab/middleware/read_only.rb:18:in `call&amp;#39;&amp;#34;,&amp;#34;lib/gitlab/middleware/same_site_cookies.rb:27:in `call&amp;#39;&amp;#34;,&amp;#34;lib/gitlab/middleware/handle_malformed_strings.rb:21:in `call&amp;#39;&amp;#34;,&amp;#34;lib/gitlab/middleware/basic_health_check.rb:25:in `call&amp;#39;&amp;#34;,&amp;#34;lib/gitlab/middleware/handle_ip_spoof_attack_error.rb:25:in `call&amp;#39;&amp;#34;,&amp;#34;lib/gitlab/middleware/request_context.rb:21:in `call&amp;#39;&amp;#34;,&amp;#34;config/initializers/fix_local_cache_middleware.rb:11:in `call&amp;#39;&amp;#34;,&amp;#34;lib/gitlab/middleware/rack_multipart_tempfile_factory.rb:19:in `call&amp;#39;&amp;#34;,&amp;#34;lib/gitlab/metrics/requests_rack_middleware.rb:74:in `call&amp;#39;&amp;#34;,&amp;#34;lib/gitlab/middleware/release_env.rb:12:in `call&amp;#39;&amp;#34;],&amp;#34;db_duration_s&amp;#34;:0.23847,&amp;#34;view_duration_s&amp;#34;:0.0,&amp;#34;duration_s&amp;#34;:73.05203}&amp;#34;,&amp;#34;ua&amp;#34;:&amp;#34;Mozilla/5.0 (X11; Linux x86_64; rv:140.0) Gecko/20100101 Firefox/140.0&amp;#34;,&amp;#34;correlation_id&amp;#34;:&amp;#34;01K3Q2F5DXP8Y33B25TW9SSMYM&amp;#34;,&amp;#34;meta.user&amp;#34;:&amp;#34;xxx&amp;#34;,&amp;#34;meta.project&amp;#34;:&amp;#34;xxx/xxx&amp;#34;,&amp;#34;meta.root_namespace&amp;#34;:&amp;#34;storage&amp;#34;,&amp;#34;meta.caller_id&amp;#34;:&amp;#34;ProjectsController#show&amp;#34;,&amp;#34;meta.remote_ip&amp;#34;:&amp;#34;10.17.7.63&amp;#34;,&amp;#34;meta.feature_category&amp;#34;:&amp;#34;projects&amp;#34;,&amp;#34;meta.client_id&amp;#34;:&amp;#34;user/74&amp;#34;,&amp;#34;redis_calls&amp;#34;:21,&amp;#34;redis_duration_s&amp;#34;:0.007123,&amp;#34;redis_read_bytes&amp;#34;:2997,&amp;#34;redis_write_bytes&amp;#34;:2370,&amp;#34;redis_cache_calls&amp;#34;:20,&amp;#34;redis_cache_duration_s&amp;#34;:0.006591,&amp;#34;redis_cache_read_bytes&amp;#34;:2816,&amp;#34;redis_cache_write_bytes&amp;#34;:1035,&amp;#34;redis_shared_state_calls&amp;#34;:1,&amp;#34;redis_shared_state_duration_s&amp;#34;:0.000532,&amp;#34;redis_shared_state_read_bytes&amp;#34;:181,&amp;#34;redis_shared_state_write_bytes&amp;#34;:1335,&amp;#34;db_count&amp;#34;:41,&amp;#34;db_write_count&amp;#34;:0,&amp;#34;db_cached_count&amp;#34;:10,&amp;#34;cpu_s&amp;#34;:2.291446,&amp;#34;mem_objects&amp;#34;:394125,&amp;#34;mem_bytes&amp;#34;:52397272,&amp;#34;mem_mallocs&amp;#34;:198648,&amp;#34;mem_total_bytes&amp;#34;:68162272,&amp;#34;queue_duration_s&amp;#34;:0.009214,&amp;#34;exception.class&amp;#34;:&amp;#34;Rack::Timeout::RequestTimeoutException&amp;#34;,&amp;#34;exception.message&amp;#34;:&amp;#34;Request ran for longer than 60000ms&amp;#34;,&amp;#34;exception.backtrace&amp;#34;:[&amp;#34;lib/gitlab/url_blocker.rb:113:in `getaddrinfo&amp;#39;&amp;#34;,&amp;#34;lib/gitlab/url_blocker.rb:113:in `get_address_info&amp;#39;&amp;#34;,&amp;#34;lib/gitlab/url_blocker.rb:48:in `validate!&amp;#39;&amp;#34;,&amp;#34;app/validators/addressable_url_validator.rb:83:in `validate_each&amp;#39;&amp;#34;,&amp;#34;app/models/badge.rb:43:in `build_rendered_url&amp;#39;&amp;#34;,&amp;#34;app/models/badge.rb:36:in `rendered_image_url&amp;#39;&amp;#34;,&amp;#34;app/models/badges/project_badge.rb:15:in `rendered_image_url&amp;#39;&amp;#34;,&amp;#34;app/views/projects/_home_panel.html.haml:93&amp;#34;,&amp;#34;app/views/projects/_home_panel.html.haml:89&amp;#34;,&amp;#34;app/views/projects/_home_panel.html.haml:87&amp;#34;,&amp;#34;app/views/projects/show.html.haml:14&amp;#34;,&amp;#34;app/controllers/application_controller.rb:128:in `render&amp;#39;&amp;#34;,&amp;#34;app/controllers/application_controller.rb:538:in `block in allow_gitaly_ref_name_caching&amp;#39;&amp;#34;,&amp;#34;lib/gitlab/gitaly_client.rb:341:in `allow_ref_name_caching&amp;#39;&amp;#34;,&amp;#34;app/controllers/application_controller.rb:537:in `allow_gitaly_ref_name_caching&amp;#39;&amp;#34;,&amp;#34;app/controllers/application_controller.rb:487:in `set_current_admin&amp;#39;&amp;#34;,&amp;#34;lib/gitlab/session.rb:11:in `with_session&amp;#39;&amp;#34;,&amp;#34;app/controllers/application_controller.rb:478:in `set_session_storage&amp;#39;&amp;#34;,&amp;#34;lib/gitlab/i18n.rb:99:in `with_locale&amp;#39;&amp;#34;,&amp;#34;lib/gitlab/i18n.rb:105:in `with_user_locale&amp;#39;&amp;#34;,&amp;#34;app/controllers/application_controller.rb:472:in `set_locale&amp;#39;&amp;#34;,&amp;#34;app/controllers/application_controller.rb:466:in `set_current_context&amp;#39;&amp;#34;,&amp;#34;lib/gitlab/metrics/elasticsearch_rack_middleware.rb:16:in `call&amp;#39;&amp;#34;,&amp;#34;lib/gitlab/middleware/rails_queue_duration.rb:33:in `call&amp;#39;&amp;#34;,&amp;#34;lib/gitlab/metrics/rack_middleware.rb:16:in `block in call&amp;#39;&amp;#34;,&amp;#34;lib/gitlab/metrics/web_transaction.rb:21:in `run&amp;#39;&amp;#34;,&amp;#34;lib/gitlab/metrics/rack_middleware.rb:16:in `call&amp;#39;&amp;#34;,&amp;#34;lib/gitlab/middleware/speedscope.rb:13:in `call&amp;#39;&amp;#34;,&amp;#34;lib/gitlab/request_profiler/middleware.rb:17:in `call&amp;#39;&amp;#34;,&amp;#34;lib/gitlab/jira/middleware.rb:19:in `call&amp;#39;&amp;#34;,&amp;#34;lib/gitlab/middleware/go.rb:20:in `call&amp;#39;&amp;#34;,&amp;#34;lib/gitlab/etag_caching/middleware.rb:21:in `call&amp;#39;&amp;#34;,&amp;#34;lib/gitlab/middleware/multipart.rb:172:in `call&amp;#39;&amp;#34;,&amp;#34;lib/gitlab/middleware/read_only/controller.rb:50:in `call&amp;#39;&amp;#34;,&amp;#34;lib/gitlab/middleware/read_only.rb:18:in `call&amp;#39;&amp;#34;,&amp;#34;lib/gitlab/middleware/same_site_cookies.rb:27:in `call&amp;#39;&amp;#34;,&amp;#34;lib/gitlab/middleware/handle_malformed_strings.rb:21:in `call&amp;#39;&amp;#34;,&amp;#34;lib/gitlab/middleware/basic_health_check.rb:25:in `call&amp;#39;&amp;#34;,&amp;#34;lib/gitlab/middleware/handle_ip_spoof_attack_error.rb:25:in `call&amp;#39;&amp;#34;,&amp;#34;lib/gitlab/middleware/request_context.rb:21:in `call&amp;#39;&amp;#34;,&amp;#34;config/initializers/fix_local_cache_middleware.rb:11:in `call&amp;#39;&amp;#34;,&amp;#34;lib/gitlab/middleware/rack_multipart_tempfile_factory.rb:19:in `call&amp;#39;&amp;#34;,&amp;#34;lib/gitlab/metrics/requests_rack_middleware.rb:74:in `call&amp;#39;&amp;#34;,&amp;#34;lib/gitlab/middleware/release_env.rb:12:in `call&amp;#39;&amp;#34;],&amp;#34;db_duration_s&amp;#34;:0.23847,&amp;#34;view_duration_s&amp;#34;:0.0,&amp;#34;duration_s&amp;#34;:73.05203}
&lt;/code&gt;&lt;/pre&gt;&lt;h1 id=&#34;问题分析&#34;&gt;问题分析&lt;/h1&gt;
&lt;p&gt;经过 claude 的分析，发现是 badge 加载失败导致的&lt;/p&gt;</description>
    </item>
    <item>
      <title>harbor Chartmuseum helm 图表缓存刷新</title>
      <link>https://frytea.com/archives/1515/</link>
      <pubDate>Thu, 28 Aug 2025 14:33:00 +0000</pubDate>
      <guid>https://frytea.com/archives/1515/</guid>
      <description>&lt;p&gt;harbor 集成 Chartmuseum 实现 helm 图表的存储。&lt;/p&gt;
&lt;p&gt;Chartmuseum 对于图表索引缓存的处理有问题，删除、重传 chart 不会刷新索引，需要手动刷新。&lt;/p&gt;
&lt;h1 id=&#34;tldr&#34;&gt;TL;DR&lt;/h1&gt;
&lt;p&gt;操作步骤如下：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;停止 harbor，例如： &lt;code&gt;docker compose stop&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;删除 &lt;code&gt;/data/chart_storage/{project}/index-cache.yaml&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;删除 &lt;code&gt;/data/redis/*&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;启动 harbor，例如： &lt;code&gt;docker compose up -d&lt;/code&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;记得备份。&lt;/p&gt;</description>
    </item>
    <item>
      <title>grep exclude 排除</title>
      <link>https://frytea.com/archives/1514/</link>
      <pubDate>Thu, 28 Aug 2025 14:32:39 +0000</pubDate>
      <guid>https://frytea.com/archives/1514/</guid>
      <description>&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;--exclude=FILE_PATTERN  skip files and directories matching FILE_PATTERN
--exclude-from=FILE     skip files matching any file pattern from FILE
--exclude-dir=PATTERN   directories that match PATTERN will be skipped.
&lt;/code&gt;&lt;/pre&gt;&lt;h1 id=&#34;refs&#34;&gt;Refs:&lt;/h1&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://www.cnblogs.com/pengdonglin137/p/3569218.html&#34;&gt;grep时排除指定的文件和目录&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description>
    </item>
    <item>
      <title>快速感受编程乐趣的编程语言推荐</title>
      <link>https://frytea.com/archives/1513/</link>
      <pubDate>Mon, 18 Aug 2025 14:16:00 +0000</pubDate>
      <guid>https://frytea.com/archives/1513/</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;快速看到效果对于感受编程乐趣非常重要，最近看完《计算机是怎样运行的》，推荐想要快速看到效果可以使用 VB。我认为这非常重要，现在编程语言非常多，但是能够稳定复现可以看到效果的，VB这样的方案是很少见的。如果没有可以运行 VB 的环境，可以尝试 &lt;code&gt;PyQt&lt;/code&gt; 来查看效果。下面用 Claude4 生成了一篇文章，给大家做参考。如果想要快速体验到编程的乐趣，可以看一看。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Debian 11 &#43; PVE LACP Mac 冲突问题调查与解决方案</title>
      <link>https://frytea.com/archives/1512/</link>
      <pubDate>Fri, 15 Aug 2025 00:25:46 +0000</pubDate>
      <guid>https://frytea.com/archives/1512/</guid>
      <description>&lt;p&gt;By TL.S&lt;/p&gt;
&lt;h2 id=&#34;问题背景&#34;&gt;问题背景&lt;/h2&gt;
&lt;p&gt;在Debian 11 + Proxmox VE环境中，当配置LACP（Link Aggregation Control Protocol）绑定接口时，有一个环境遇到一个令人困惑的问题：&lt;strong&gt;相同硬件配置的多台服务器上，所有服务器的同名bond接口都被分配了相同的MAC地址&lt;/strong&gt;。这种情况会导致严重的网络连接问题，特别是在集群环境中。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Rclone WebUI 选择指南：全面对比各种图形界面方案</title>
      <link>https://frytea.com/archives/1511/</link>
      <pubDate>Fri, 08 Aug 2025 06:45:14 +0000</pubDate>
      <guid>https://frytea.com/archives/1511/</guid>
      <description>&lt;p&gt;Rclone 作为强大的云存储同步工具，虽然命令行功能丰富，但对于普通用户来说学习曲线较陡。为了解决这个问题，社区开发了多种图形界面方案。本文将详细对比各种 Rclone WebUI 选择，帮助您找到最适合的解决方案。&lt;/p&gt;</description>
    </item>
    <item>
      <title>开源自托管数据备份解决方案全面对比</title>
      <link>https://frytea.com/archives/1510/</link>
      <pubDate>Fri, 08 Aug 2025 06:42:43 +0000</pubDate>
      <guid>https://frytea.com/archives/1510/</guid>
      <description>&lt;p&gt;在数据日益重要的今天，选择一个合适的备份解决方案至关重要。本文将对比介绍六个优秀的开源自托管数据备份方案，帮助您根据实际需求做出最佳选择。&lt;/p&gt;
&lt;h2 id=&#34;方案概述&#34;&gt;方案概述&lt;/h2&gt;
&lt;h3 id=&#34;1-duplicati---全能型备份工具&#34;&gt;1. Duplicati - 全能型备份工具&lt;/h3&gt;
&lt;p&gt;Duplicati 是一个功能完善的备份解决方案，以其友好的用户界面和广泛的存储支持而闻名。它采用客户端-服务器架构，提供了直观的 Web 管理界面，特别适合需要定期备份到多种云存储的用户。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Claude Code 实用技巧</title>
      <link>https://frytea.com/archives/1509/</link>
      <pubDate>Thu, 07 Aug 2025 14:43:03 +0000</pubDate>
      <guid>https://frytea.com/archives/1509/</guid>
      <description>&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;CLAUDE.md（规则文件）＝ 冰箱家规
先把“进门换鞋、10点关灯、刀具归位”写清楚，Claude 做任何事之前都要看一遍并遵守。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Task（多任务并行）＝ 多台家电同时干活
扫地机器人+洗碗机+空调一起开工，Claude 同时跑多个任务，效率翻倍。&lt;/p&gt;</description>
    </item>
    <item>
      <title>CentOS 7 重置 root 密码</title>
      <link>https://frytea.com/archives/1508/</link>
      <pubDate>Thu, 07 Aug 2025 14:34:31 +0000</pubDate>
      <guid>https://frytea.com/archives/1508/</guid>
      <description>&lt;h1 id=&#34;引言&#34;&gt;引言&lt;/h1&gt;
&lt;p&gt;很多遗留系统都采用 CentOS 系统，经常出现忘记密码，故在此记录方法。&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;以下内容转自  &lt;a href=&#34;https://jaminzhang.github.io/linux/CentOS-7-Reset-root-Password/&#34;&gt;CentOS 7 重置 root 密码&lt;/a&gt;&lt;/p&gt;&lt;/blockquote&gt;
&lt;h1 id=&#34;centos-7-重置-root-密码&#34;&gt;CentOS 7 重置 root 密码&lt;/h1&gt;
&lt;p&gt;与之前的 CentOS 5、 CentOS 6 不同的是，当忘记 CentOS 7 root 密码，并采用 GRUB2 为启动器时，&lt;br&gt;
将无法通过单用户模式重置 root 密码，下面介绍 CentOS 7 如何重置 root 密码。&lt;/p&gt;</description>
    </item>
    <item>
      <title>telnet 如何退出</title>
      <link>https://frytea.com/archives/1507/</link>
      <pubDate>Thu, 07 Aug 2025 14:33:53 +0000</pubDate>
      <guid>https://frytea.com/archives/1507/</guid>
      <description>&lt;p&gt;telnet 的退出 分成两种，一中是在telnet命令中，直接输入 quit 或者 q 即可退出。 二种情况是 已经进入了端口中，需要先从端口中退出，然后再退出telnet。&lt;/p&gt;</description>
    </item>
    <item>
      <title>kubernetes 的挂载传播(mount propagation)机制</title>
      <link>https://frytea.com/archives/1506/</link>
      <pubDate>Thu, 07 Aug 2025 14:31:47 +0000</pubDate>
      <guid>https://frytea.com/archives/1506/</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;以下内容转载自：&lt;a href=&#34;https://www.myway5.com/index.php/2020/04/05/kubernetes-mount-propagation/&#34;&gt;kubernetes 的挂载传播(mount propagation)机制&lt;/a&gt;&lt;/p&gt;&lt;/blockquote&gt;
&lt;h2 id=&#34;概述&#34;&gt;概述&lt;/h2&gt;
&lt;p&gt;今天在看 &lt;a href=&#34;https://github.com/aylei/kubectl-debug&#34;&gt;kubectl-debug&lt;/a&gt; 这个项目的时候，看到其部署文件的 volumeMounuts 中使用了一个 mountPropagation 字段，因为不清楚这个字段的作用，就做了一下了解。mount propagation 背后的东西还是很多的，因此整理了这篇文章，顺便梳理一下知识点。&lt;/p&gt;</description>
    </item>
    <item>
      <title>vim 将命令输出到当前位置</title>
      <link>https://frytea.com/archives/1505/</link>
      <pubDate>Thu, 07 Aug 2025 14:31:18 +0000</pubDate>
      <guid>https://frytea.com/archives/1505/</guid>
      <description>&lt;p&gt;在Vim 中，可以使用 &lt;code&gt;:read !command&lt;/code&gt; 命令将外部命令 &lt;code&gt;command&lt;/code&gt; 的输出插入到当前光标所在位置的下一行。&lt;/p&gt;</description>
    </item>
    <item>
      <title>harbor 替换 ssl 证书</title>
      <link>https://frytea.com/archives/1504/</link>
      <pubDate>Thu, 07 Aug 2025 14:31:00 +0000</pubDate>
      <guid>https://frytea.com/archives/1504/</guid>
      <description>&lt;p&gt;最近内网 harbor 经常迁移，迁移到新地址后 ssl 证书需针对新的地址签发。（当然如果你直接使用 http 就不会有这个烦恼，至于为什么i不直接使用 http 就不多说了）。&lt;/p&gt;
&lt;p&gt;这里记录一下签发新的 ssl 证书并迁移的命令，方便后面使用。&lt;/p&gt;</description>
    </item>
    <item>
      <title>独立开发者云平台技术选型深度对比：Vercel vs Cloudflare vs Supabase</title>
      <link>https://frytea.com/archives/1503/</link>
      <pubDate>Sat, 02 Aug 2025 15:47:00 +0000</pubDate>
      <guid>https://frytea.com/archives/1503/</guid>
      <description>&lt;p&gt;在 2024-2025 年的云原生时代，独立开发者面临着前所未有的平台选择挑战。&lt;strong&gt;Vercel + Supabase 组合可降低 60% 开发时间，Cloudflare Workers 方案能节省 70% 运营成本，而技术选型错误可能导致月度支出增加 10 倍&lt;/strong&gt;。本文基于最新官方文档和实际测试数据，为构建 SaaS 应用和工具类应用的独立开发者提供全面的技术选型指南。&lt;/p&gt;</description>
    </item>
    <item>
      <title>AI提效之使用 cherry-studio &#43; k8sgpt 实现 AI 巡检 k8s</title>
      <link>https://frytea.com/archives/1502/</link>
      <pubDate>Tue, 29 Jul 2025 01:43:00 +0000</pubDate>
      <guid>https://frytea.com/archives/1502/</guid>
      <description>&lt;p&gt;&lt;a href=&#34;https://github.com/k8sgpt-ai/k8sgpt&#34;&gt;&lt;code&gt;k8sgpt&lt;/code&gt;&lt;/a&gt; 能够赋予每个人的 &lt;code&gt;Kubernetes&lt;/code&gt; 超能力，能够用简单的语言扫描 &lt;code&gt;Kubernetes&lt;/code&gt; 集群、诊断和分类问题。利用 &lt;code&gt;k8sgpt&lt;/code&gt; 的 &lt;code&gt;mcp&lt;/code&gt; 服务，可以为 LLM 赋予访问 k8s 集群的可能性。&lt;/p&gt;
&lt;p&gt;工作原理图：&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code class=&#34;language-mermaid&#34; data-lang=&#34;mermaid&#34;&gt;sequenceDiagram
    actor U as User
    participant CS as Cherry Studio
    participant KG as k8sgpt
    participant K as K8s API Server
    U-&amp;gt;&amp;gt;+CS: Add k8sgpt MCP server
    CS-&amp;gt;&amp;gt;+KG: Check k8sgpt
    KG--&amp;gt;&amp;gt;-CS: k8sgpt is work
    CS--&amp;gt;&amp;gt;-U: Success to Add MCP

    U-&amp;gt;&amp;gt;+CS: Ask some Question about K8s cluster
    CS-&amp;gt;&amp;gt;+KG: Get someinfo throuth MCP
    KG-&amp;gt;&amp;gt;+K: Get Cluster Info By API
    K--&amp;gt;&amp;gt;-KG: Return Cluster info
    KG--&amp;gt;&amp;gt;-CS: Return Info About K8s
    CS--&amp;gt;&amp;gt;CS: Handle Info
    CS--&amp;gt;&amp;gt;-U: Return Answer about K8s cluster
&lt;/code&gt;&lt;/pre&gt;&lt;h2 id=&#34;安装-k8sgpt&#34;&gt;安装 k8sgpt&lt;/h2&gt;
&lt;p&gt;首先安装 k8sgpt 工具：&lt;/p&gt;</description>
    </item>
    <item>
      <title>Claude Code Subagents 快速开始</title>
      <link>https://frytea.com/archives/1501/</link>
      <pubDate>Tue, 29 Jul 2025 01:26:08 +0000</pubDate>
      <guid>https://frytea.com/archives/1501/</guid>
      <description>&lt;p&gt;在Claude Code中的AI子代理，可用于特定任务的工作流程和改进的上下文管理。&lt;/p&gt;
&lt;p&gt;Claude Code中的自定义子代理是专门的AI助手，可以被调用来处理特定类型的任务。它们通过提供具有自定义系统提示、工具和独立上下文窗口的特定任务配置，实现更高效的问题解决。&lt;/p&gt;</description>
    </item>
    <item>
      <title>边缘计算平台对比：Vercel vs Cloudflare Workers</title>
      <link>https://frytea.com/archives/1500/</link>
      <pubDate>Mon, 28 Jul 2025 15:10:47 +0000</pubDate>
      <guid>https://frytea.com/archives/1500/</guid>
      <description>&lt;h1 id=&#34;边缘计算平台对比vercel-vs-cloudflare-workers-及其他选择&#34;&gt;边缘计算平台对比：Vercel vs Cloudflare Workers 及其他选择&lt;/h1&gt;
&lt;p&gt;在现代 Web 开发中，边缘计算平台已经成为提升应用性能和用户体验的关键技术。本文将深入对比几个主流的边缘计算和部署平台，特别关注它们对 Next.js SSR 的支持以及价格结构。&lt;/p&gt;</description>
    </item>
    <item>
      <title>媒体服务器对比：Emby vs Plex vs Jellyfin</title>
      <link>https://frytea.com/archives/1499/</link>
      <pubDate>Sun, 27 Jul 2025 14:45:00 +0000</pubDate>
      <guid>https://frytea.com/archives/1499/</guid>
      <description>&lt;p&gt;在数字化时代，拥有一个强大的媒体服务器来管理和流式传输您的个人媒体收藏变得越来越重要。本文将深入对比三个主流的媒体服务器解决方案：Emby、Plex 和 Jellyfin，帮助您选择最适合需求的方案。&lt;/p&gt;</description>
    </item>
    <item>
      <title>《我看见的世界：李飞飞自传》</title>
      <link>https://frytea.com/archives/1498/</link>
      <pubDate>Sun, 20 Jul 2025 15:56:26 +0000</pubDate>
      <guid>https://frytea.com/archives/1498/</guid>
      <description>&lt;h1 id=&#34;阅读感悟&#34;&gt;阅读感悟&lt;/h1&gt;
&lt;p&gt;暂略&lt;/p&gt;
&lt;h1 id=&#34;阅读摘录&#34;&gt;阅读摘录&lt;/h1&gt;
&lt;p&gt;《我看见的世界：李飞飞自传》&lt;/p&gt;
&lt;p&gt;[美]李飞飞
82个笔记&lt;/p&gt;
&lt;p&gt;03 鸿沟渐窄&lt;/p&gt;
&lt;p&gt;◆ 1956年，他们将好奇心编撰成文，提出了现在广为人知的《达特茅斯人工智能夏季研究项目提案》，“人工智能”一词就是在这份提案中诞生的&lt;/p&gt;</description>
    </item>
    <item>
      <title>Kiro or Cursor? AI IDE工具全面对比：选择最适合的智能编程助手</title>
      <link>https://frytea.com/archives/1497/</link>
      <pubDate>Sun, 20 Jul 2025 10:17:00 +0000</pubDate>
      <guid>https://frytea.com/archives/1497/</guid>
      <description>&lt;p&gt;随着人工智能技术的快速发展，AI驱动的集成开发环境（IDE）正在重塑软件开发的格局。开发者现在面临众多选择，每个工具都有其独特的优势和特色。本文将深入对比四个主流的AI IDE工具：Cursor、Amazon Kiro、Claude Code和Augment Code，帮助开发者做出明智的选择。&lt;/p&gt;</description>
    </item>
    <item>
      <title> Lyra - AI Prompt Optimization Specialist</title>
      <link>https://frytea.com/archives/1496/</link>
      <pubDate>Sun, 20 Jul 2025 10:09:00 +0000</pubDate>
      <guid>https://frytea.com/archives/1496/</guid>
      <description>&lt;p&gt;AI 提示优化专家 - Lyra, 一个很好的提示词。&lt;/p&gt;
&lt;h1 id=&#34;tldr&#34;&gt;TL;DR&lt;/h1&gt;
&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;&#34;&gt;&lt;code class=&#34;language-txt&#34; data-lang=&#34;txt&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;You are Lyra, a master-level AI prompt optimization specialist. Your mission: transform any user input into
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;precision-crafted prompts that unlock Al&amp;#39;s full potential across all platforms.
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;## THE 4-D METHODOLOGY
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;### 1. DECONSTRUCT
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;- Extract core intent, key entities, and context
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;- Identify output requirements and constraints
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;- Map what&amp;#39;s provided vs. what&amp;#39;s missing
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;### 2. DIAGNOSE
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;- Audit for clarity gaps and ambiguity
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;- Check specificity and completeness
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;- Assess structure and complexity needs
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;### 3. DEVELOP
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;- Select optimal techniques based on request type:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;- **Creative** → Multi-perspective + tone emphasis
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;- **Technical** → Constraint-based + precision focus
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;- **Educational** → Few-shot examples + clear structure
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;- **Complex** → Chain-of-thought + systematic frameworks
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;- Assign appropriate Al role/expertise
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;- Enhance context and implement logical structure
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;### 4. DELIVER
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;- Construct optimized prompt
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;- Format based on complexity
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;- Provide implementation guidance
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;## OPTIMIZATION TECHNIQUES
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;**Foundation:** Role assignment, context layering, output specs, task decomposition
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;**Advanced:** Chain-of-thought, few-shot learning, multi-perspective analysis, constraint optimization
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;**Platform Notes:**
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;- **ChatGPT/GPT-4:** Structured sections, conversation starters
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;- **Claude:** Longer context, reasoning frameworks
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;- **Gemini:** Creative tasks, comparative analysis
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;- **Others:** Apply universal best practices
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;## OPERATING MODES
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;**DETAIL MODE:**
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;- Gather context with smart defaults
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;- Ask 2-3 targeted clarifying questions
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;- Provide comprehensive optimization
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;**BASIC MODE:**
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;- Quick fix primary issues
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;- Apply core techniques only
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;- Deliver ready-to-use prompt
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;## RESPONSE FORMATS
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;**Simple Requests:**
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;---
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;**Your Optimized Prompt:**
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;[Improved prompt]
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;**What Changed:** [Key improvements]
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;---
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;**Complex Requests:**
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;---
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;**Your Optimized Prompt:**
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;[Improved prompt]
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;**Key Improvements:**
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;• [Primary changes and benefits]
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;**Techniques Applied:** [Brief mention]
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;**Pro Tip:** [Usage guidance]
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;---
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;## WELCOME MESSAGE (REQUIRED)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;When activated, display EXACTLY:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&amp;#34;Hello! I&amp;#39;m Lyra, your Al prompt optimizer. I transform vague requests into precise, effective prompts that
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;deliver better results.
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;**What I need to know:**
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;- **Target AI:** ChatGPT, Claude, Gemini, or Other
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;- **Prompt Style:** DETAIL (I&amp;#39;ll ask clarifying questions first) or BASIC (quick optimization)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;**Examples:**
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;- &amp;#34;DETAIL using ChatGPT - Write me a marketing email&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;- &amp;#34;BASIC using Claude - Help with my resume&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Just share your rough prompt and I&amp;#39;ll handle the optimization!&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;## PROCESSING FLOW
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;1. Auto-detect complexity:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;   - Simple tasks → BASIC mode
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;   - Complex/professional → DETAIL mode
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;2. Inform user with override option
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;3. Execute chosen mode protocol (see below)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;4. Deliver optimized prompt
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;**Memory Note:** Do not save any information from optimization sessions to memory.
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h1 id=&#34;references&#34;&gt;References&lt;/h1&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://gist.github.com/xthezealot/c873effd9e74225ef3fcfbb9c3a341da&#34;&gt;https://gist.github.com/xthezealot/c873effd9e74225ef3fcfbb9c3a341da&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description>
    </item>
    <item>
      <title>Linux 自签名 CA 证书安装方法</title>
      <link>https://frytea.com/archives/1495/</link>
      <pubDate>Fri, 11 Jul 2025 09:55:40 +0000</pubDate>
      <guid>https://frytea.com/archives/1495/</guid>
      <description>&lt;p&gt;在 Linux 中运行 docker, containerd, helm 等应用时需要信任自签署证书保护的内部仓库服务，此时需要注入自签名 CA 证书，以 Ubunut 为例。在 Ubuntu 系统中，CA 证书信任主要存储在以下目录：&lt;/p&gt;</description>
    </item>
    <item>
      <title>智能理财计算器更新了，一站对比各家理财收益率，避免踩坑！</title>
      <link>https://frytea.com/archives/1494/</link>
      <pubDate>Sat, 05 Jul 2025 06:29:24 +0000</pubDate>
      <guid>https://frytea.com/archives/1494/</guid>
      <description>&lt;p&gt;一直非常困扰各家理财平台的算法不一致，实际收益和标称差异大，很难各平台之间决策。于是做了这样一个简单的工具，可以在一个地方直观的对比各家理财产品，根据收益率、收益、预期收益等快速决策。&lt;/p&gt;</description>
    </item>
    <item>
      <title>SEMrush vs Ahrefs vs SimilarWeb 功能对比表</title>
      <link>https://frytea.com/archives/1493/</link>
      <pubDate>Wed, 02 Jul 2025 10:19:00 +0000</pubDate>
      <guid>https://frytea.com/archives/1493/</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;By Claude Sonnet 4&lt;/p&gt;&lt;/blockquote&gt;
&lt;h2 id=&#34;功能对比表&#34;&gt;功能对比表&lt;/h2&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;功能特性&lt;/th&gt;
          &lt;th&gt;SEMrush&lt;/th&gt;
          &lt;th&gt;Ahrefs&lt;/th&gt;
          &lt;th&gt;SimilarWeb&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;strong&gt;关键词研究&lt;/strong&gt;&lt;/td&gt;
          &lt;td&gt;✅ 强大的关键词工具&lt;br&gt;• 关键词难度分析&lt;br&gt;• 相关关键词建议&lt;br&gt;• 搜索量数据&lt;/td&gt;
          &lt;td&gt;✅ 优秀的关键词工具&lt;br&gt;• Keywords Explorer&lt;br&gt;• 点击量预测&lt;br&gt;• 父主题分析&lt;/td&gt;
          &lt;td&gt;⚠️ 基础关键词数据&lt;br&gt;• 主要关注流量分析&lt;br&gt;• 关键词功能相对有限&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;strong&gt;反向链接分析&lt;/strong&gt;&lt;/td&gt;
          &lt;td&gt;✅ 全面的外链分析&lt;br&gt;• 外链审计工具&lt;br&gt;• 竞争对手外链&lt;br&gt;• Link Building工具&lt;/td&gt;
          &lt;td&gt;⭐ 业界最强外链数据&lt;br&gt;• 最大的活跃爬虫&lt;br&gt;• Site Explorer功能&lt;br&gt;• 外链质量评估&lt;/td&gt;
          &lt;td&gt;❌ 不提供外链分析&lt;br&gt;• 主要专注流量数据&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;strong&gt;网站流量分析&lt;/strong&gt;&lt;/td&gt;
          &lt;td&gt;✅ 流量分析工具&lt;br&gt;• 有机搜索流量&lt;br&gt;• 付费流量分析&lt;br&gt;• 社交媒体流量&lt;/td&gt;
          &lt;td&gt;✅ 基础流量估算&lt;br&gt;• 主要通过搜索数据&lt;br&gt;• 流量价值计算&lt;/td&gt;
          &lt;td&gt;⭐ 最详细的流量数据&lt;br&gt;• 直接流量测量&lt;br&gt;• 用户行为分析&lt;br&gt;• 移动vs桌面流量&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;strong&gt;竞争对手分析&lt;/strong&gt;&lt;/td&gt;
          &lt;td&gt;✅ 全面竞争分析&lt;br&gt;• 竞争对手关键词&lt;br&gt;• 广告策略分析&lt;br&gt;• 市场份额数据&lt;/td&gt;
          &lt;td&gt;✅ 强大竞争分析&lt;br&gt;• 内容差距分析&lt;br&gt;• 竞争对手外链&lt;br&gt;• 排名对比&lt;/td&gt;
          &lt;td&gt;⭐ 最佳行业分析&lt;br&gt;• 市场情报&lt;br&gt;• 受众重叠分析&lt;br&gt;• 行业基准对比&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;strong&gt;技术SEO审计&lt;/strong&gt;&lt;/td&gt;
          &lt;td&gt;✅ 全面站点审计&lt;br&gt;• 技术问题检测&lt;br&gt;• 页面优化建议&lt;br&gt;• 站点健康评分&lt;/td&gt;
          &lt;td&gt;✅ 优秀站点审计&lt;br&gt;• Site Audit工具&lt;br&gt;• 技术问题优先级&lt;br&gt;• 页面速度分析&lt;/td&gt;
          &lt;td&gt;❌ 不提供技术SEO工具&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;strong&gt;内容营销&lt;/strong&gt;&lt;/td&gt;
          &lt;td&gt;✅ 内容营销工具&lt;br&gt;• 话题研究&lt;br&gt;• 内容审计&lt;br&gt;• 社交媒体调度&lt;/td&gt;
          &lt;td&gt;✅ 内容研究工具&lt;br&gt;• Content Explorer&lt;br&gt;• 热门内容分析&lt;br&gt;• 内容差距分析&lt;/td&gt;
          &lt;td&gt;⚠️ 内容表现数据&lt;br&gt;• 社交分享数据&lt;br&gt;• 内容趋势分析&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;strong&gt;广告智能&lt;/strong&gt;&lt;/td&gt;
          &lt;td&gt;⭐ 最强PPC分析&lt;br&gt;• Google Ads分析&lt;br&gt;• 展示广告研究&lt;br&gt;• 购物广告数据&lt;br&gt;• 广告文案分析&lt;/td&gt;
          &lt;td&gt;✅ 基础PPC数据&lt;br&gt;• 付费搜索分析&lt;br&gt;• 广告历史数据&lt;/td&gt;
          &lt;td&gt;✅ 展示广告分析&lt;br&gt;• 广告网络数据&lt;br&gt;• 创意广告研究&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;strong&gt;本地SEO&lt;/strong&gt;&lt;/td&gt;
          &lt;td&gt;✅ 本地SEO工具&lt;br&gt;• 本地排名跟踪&lt;br&gt;• Google我的商家管理&lt;/td&gt;
          &lt;td&gt;⚠️ 基础本地SEO功能&lt;/td&gt;
          &lt;td&gt;❌ 不专注本地SEO&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;strong&gt;报告功能&lt;/strong&gt;&lt;/td&gt;
          &lt;td&gt;✅ 丰富报告模板&lt;br&gt;• 自定义报告&lt;br&gt;• 自动化报告&lt;br&gt;• 品牌化报告&lt;/td&gt;
          &lt;td&gt;✅ 清晰的报告&lt;br&gt;• 数据导出&lt;br&gt;• API访问&lt;/td&gt;
          &lt;td&gt;✅ 专业报告&lt;br&gt;• 行业报告&lt;br&gt;• 高级数据可视化&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;strong&gt;数据准确性&lt;/strong&gt;&lt;/td&gt;
          &lt;td&gt;✅ 良好准确性&lt;br&gt;• 大量数据源&lt;br&gt;• 定期更新&lt;/td&gt;
          &lt;td&gt;⭐ 高度准确&lt;br&gt;• 实时数据更新&lt;br&gt;• 最新外链数据&lt;/td&gt;
          &lt;td&gt;⭐ 最准确流量数据&lt;br&gt;• 直接测量&lt;br&gt;• 面板数据&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id=&#34;-价格对比&#34;&gt;💰 价格对比&lt;/h2&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;工具&lt;/th&gt;
          &lt;th&gt;起始价格&lt;/th&gt;
          &lt;th&gt;主要套餐&lt;/th&gt;
          &lt;th&gt;企业级&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;strong&gt;SEMrush&lt;/strong&gt;&lt;/td&gt;
          &lt;td&gt;$119.95/月&lt;/td&gt;
          &lt;td&gt;Pro套餐&lt;/td&gt;
          &lt;td&gt;定制价格&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;strong&gt;Ahrefs&lt;/strong&gt;&lt;/td&gt;
          &lt;td&gt;$99/月&lt;/td&gt;
          &lt;td&gt;Lite套餐&lt;/td&gt;
          &lt;td&gt;$999/月&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;strong&gt;SimilarWeb&lt;/strong&gt;&lt;/td&gt;
          &lt;td&gt;定制价格&lt;/td&gt;
          &lt;td&gt;企业级定价&lt;/td&gt;
          &lt;td&gt;高端定制&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id=&#34;-选择建议&#34;&gt;🎯 选择建议&lt;/h2&gt;
&lt;h3 id=&#34;选择-semrush-如果您需要&#34;&gt;选择 &lt;strong&gt;SEMrush&lt;/strong&gt; 如果您需要：&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;全方位的数字营销工具套件&lt;/li&gt;
&lt;li&gt;强大的PPC广告分析&lt;/li&gt;
&lt;li&gt;社交媒体管理功能&lt;/li&gt;
&lt;li&gt;本地SEO优化&lt;/li&gt;
&lt;li&gt;内容营销和调度工具&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;选择-ahrefs-如果您需要&#34;&gt;选择 &lt;strong&gt;Ahrefs&lt;/strong&gt; 如果您需要：&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;最准确的反向链接数据&lt;/li&gt;
&lt;li&gt;深度的SEO分析&lt;/li&gt;
&lt;li&gt;内容研究和差距分析&lt;/li&gt;
&lt;li&gt;技术SEO审计&lt;/li&gt;
&lt;li&gt;清晰直观的用户界面&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;选择-similarweb-如果您需要&#34;&gt;选择 &lt;strong&gt;SimilarWeb&lt;/strong&gt; 如果您需要：&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;最准确的网站流量数据&lt;/li&gt;
&lt;li&gt;深入的行业和市场分析&lt;/li&gt;
&lt;li&gt;竞争情报和基准对比&lt;/li&gt;
&lt;li&gt;用户行为和受众分析&lt;/li&gt;
&lt;li&gt;企业级市场研究&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;-最终建议&#34;&gt;💡 最终建议&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;初创公司/小企业&lt;/strong&gt;：推荐 Ahrefs（性价比高，功能全面）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;营销代理商&lt;/strong&gt;：推荐 SEMrush（工具最全面，报告功能强）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;大型企业/市场研究&lt;/strong&gt;：推荐 SimilarWeb（数据最准确，分析最深入）&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;可以考虑先试用免费版本或申请演示，根据具体需求做最终决定。&lt;/p&gt;</description>
    </item>
    <item>
      <title>超级玛丽、魂斗罗等经典小游戏聚合站 | PlayUnb</title>
      <link>https://frytea.com/archives/1492/</link>
      <pubDate>Sat, 14 Jun 2025 16:40:00 +0000</pubDate>
      <guid>https://frytea.com/archives/1492/</guid>
      <description>&lt;p&gt;在线小游戏网站，界面简洁清爽无广告，各种 GBA/NES/HTML/UNITY 游戏&lt;/p&gt;
&lt;p&gt;打开即玩超级玛丽、魂斗罗等经典游戏&lt;/p&gt;
&lt;p&gt;收录 173+ 游戏&lt;/p&gt;
&lt;p&gt;入口：https://playunb.com/&lt;/p&gt;</description>
    </item>
    <item>
      <title>个人业余开发项目清单</title>
      <link>https://frytea.com/archives/1491/</link>
      <pubDate>Sat, 14 Jun 2025 16:34:00 +0000</pubDate>
      <guid>https://frytea.com/archives/1491/</guid>
      <description>&lt;p&gt;后续更新在这里：https://songtianlun.github.io/&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th style=&#34;text-align: center&#34;&gt;名称&lt;/th&gt;
          &lt;th&gt;简介&lt;/th&gt;
          &lt;th&gt;链接&lt;/th&gt;
          &lt;th&gt;备注&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;PlanAssistant&lt;/td&gt;
          &lt;td&gt;For people who like to record their lives.&lt;/td&gt;
          &lt;td&gt;&lt;a href=&#34;https://github.com/songtianlun/PlanAssistant&#34;&gt;Git&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;&lt;code&gt;SINCE 2019&lt;/code&gt; &lt;code&gt;Android&lt;/code&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;BJ-PFD2&lt;/td&gt;
          &lt;td&gt;个人财务管理方案及监控看板&lt;/td&gt;
          &lt;td&gt;&lt;a href=&#34;https://github.com/songtianlun/bj-pfd2&#34;&gt;Git&lt;/a&gt; &lt;a href=&#34;https://frytea.com/archives/1132/&#34;&gt;介绍文章&lt;/a&gt; &lt;a href=&#34;https://bjpfd2.skybyte.me&#34;&gt;入口&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;&lt;code&gt;SINCE 2022&lt;/code&gt; &lt;code&gt;go&lt;/code&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;MinePin&lt;/td&gt;
          &lt;td&gt;个人地理位置收藏夹&lt;/td&gt;
          &lt;td&gt;&lt;a href=&#34;https://github.com/songtianlun/minepin&#34;&gt;Git&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;&lt;code&gt;SINCE 2022&lt;/code&gt; &lt;code&gt;go&lt;/code&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;全球艺术天气&lt;/td&gt;
          &lt;td&gt;生成全球城市天气艺术图像，15w+城市，5k+AIArt&lt;/td&gt;
          &lt;td&gt;&lt;a href=&#34;https://frytea.com/archives/1430/&#34;&gt;介绍文章&lt;/a&gt; &lt;a href=&#34;https://todayaiweather.com/&#34;&gt;入口&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;&lt;code&gt;SINCE 2025&lt;/code&gt; &lt;code&gt;ruby&lt;/code&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;LiquedGlass&lt;/td&gt;
          &lt;td&gt;液态玻璃风格图像生成和模拟&lt;/td&gt;
          &lt;td&gt;&lt;a href=&#34;https://frytea.com/archives/1489/&#34;&gt;介绍文章&lt;/a&gt; &lt;a href=&#34;https://liquidglass.icu/&#34;&gt;入口&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;&lt;code&gt;SINCE 2025&lt;/code&gt; &lt;code&gt;NextJS&lt;/code&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;mirrorGit&lt;/td&gt;
          &lt;td&gt;将 GitHub 仓库镜像到 Gitea 的 Shell 脚本&lt;/td&gt;
          &lt;td&gt;&lt;a href=&#34;https://github.com/songtianlun/mirrorGit&#34;&gt;Git&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;&lt;code&gt;SINCE 2025&lt;/code&gt; &lt;code&gt;Shell&lt;/code&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;Selfhost Hub&lt;/td&gt;
          &lt;td&gt;自托管服务和工具目录&lt;/td&gt;
          &lt;td&gt;&lt;a href=&#34;https://github.com/songtianlun/selfhost-hub&#34;&gt;Git&lt;/a&gt; &lt;a href=&#34;https://selfhost-hub.com/&#34;&gt;入口&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;&lt;code&gt;SINCE 2025&lt;/code&gt; &lt;code&gt;NextJS&lt;/code&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;FinanceCalculator&lt;/td&gt;
          &lt;td&gt;快速选出收益最高的理财产品&lt;/td&gt;
          &lt;td&gt;&lt;a href=&#34;https://frytea.com/archives/1490/&#34;&gt;介绍文章&lt;/a&gt; &lt;a href=&#34;https://fc.frytea.com/&#34;&gt;入口&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;&lt;code&gt;SINCE 2025&lt;/code&gt; &lt;code&gt;NextJS&lt;/code&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;PlayUnb&lt;/td&gt;
          &lt;td&gt;小游戏站，打开即玩超级玛丽、魂斗罗等经典游戏&lt;/td&gt;
          &lt;td&gt;&lt;a href=&#34;https://playunb.com/&#34;&gt;入口&lt;/a&gt; &lt;a href=&#34;https://github.com/songtianlun/PlayUnb-Assets&#34;&gt;Git&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;&lt;code&gt;SINCE 2025&lt;/code&gt; &lt;code&gt;JS&lt;/code&gt;&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;后续更新在这里：https://songtianlun.github.io/&lt;/p&gt;</description>
    </item>
    <item>
      <title>快速选出收益最高的理财产品 ｜ finance-calculator</title>
      <link>https://frytea.com/archives/1490/</link>
      <pubDate>Sat, 14 Jun 2025 16:11:00 +0000</pubDate>
      <guid>https://frytea.com/archives/1490/</guid>
      <description>&lt;p&gt;每次对比各种理财产品的时候，都会遇到一些问题：&lt;/p&gt;
&lt;p&gt;一是都很难有一个统一的指标来比对；&lt;/p&gt;
&lt;p&gt;二是各家算法不一致，很容易被各平台标记的收益率“欺骗”。&lt;/p&gt;
&lt;p&gt;期望在一个地方能够快速看到各种看中理财产品的年化利率，快速计算收益情况，辅助决策。&lt;/p&gt;</description>
    </item>
    <item>
      <title>苹果液态玻璃风格图像生成和模拟器 ｜ LiquedGlass.icu</title>
      <link>https://frytea.com/archives/1489/</link>
      <pubDate>Sat, 14 Jun 2025 15:44:00 +0000</pubDate>
      <guid>https://frytea.com/archives/1489/</guid>
      <description>&lt;p&gt;一个 LiquedGlass 风格图像生成器;
一个 LiquedGlass 风格模拟器。&lt;/p&gt;
&lt;p&gt;快速生成 Apple 液态玻璃风格图像。快速体验液态玻璃设计风格。&lt;/p&gt;
&lt;p&gt;入口：https://liquidglass.icu/&lt;/p&gt;</description>
    </item>
    <item>
      <title>Linux 进程绑定NUMA节点或CPU核心</title>
      <link>https://frytea.com/archives/1488/</link>
      <pubDate>Thu, 05 Jun 2025 09:20:00 +0000</pubDate>
      <guid>https://frytea.com/archives/1488/</guid>
      <description>&lt;p&gt;对于CPU和NUMA架构的介绍本文不再做叙述，感兴趣的可自行查看：&lt;a href=&#34;https://www.cnblogs.com/Xinenhui/p/17972709&#34;&gt;Linux&amp;ndash;CPU简述&lt;/a&gt;，&lt;a href=&#34;https://www.cnblogs.com/Xinenhui/p/17897482.html&#34;&gt;Linux&amp;ndash;内存管理浅谈&lt;/a&gt;。&lt;/p&gt;
&lt;h1 id=&#34;进程绑定numa节点或cpu核心的意义&#34;&gt;进程绑定NUMA节点或cpu核心的意义&lt;/h1&gt;
&lt;p&gt;NUMA 架构将内存和cpu分散在不同的 NUMA 节点上，每个节点都有自己的本地内存和cpu处理器，&lt;strong&gt;将进程绑定到特定的 NUMA 节点或cpu上，可以让进程直接访问本地内存和CPU，减少访问远程节点开销，提高访问速度，从而提高程序性能&lt;/strong&gt;。&lt;/p&gt;</description>
    </item>
    <item>
      <title>判断GPT是否降智的几个问题</title>
      <link>https://frytea.com/archives/1487/</link>
      <pubDate>Thu, 05 Jun 2025 09:19:00 +0000</pubDate>
      <guid>https://frytea.com/archives/1487/</guid>
      <description>&lt;h1 id=&#34;判别方法&#34;&gt;判别方法&lt;/h1&gt;
&lt;blockquote&gt;
&lt;p&gt;以下问题，问3-4次&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;要多问几次，有的第一次不会降，其实问一次就被标记了，新开两三个对话再问一下&lt;/p&gt;
&lt;h2 id=&#34;方法一小数点数字比大小&#34;&gt;方法一：小数点数字比大小&lt;/h2&gt;
&lt;blockquote&gt;
&lt;p&gt;6.9 和 6.11 哪一个大？&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;降智回答：6.11大&lt;br&gt;
正确回答：也会出错，但会分析纠正，得出6.9更大&lt;/p&gt;</description>
    </item>
    <item>
      <title>Harmony next hap 安装</title>
      <link>https://frytea.com/archives/1486/</link>
      <pubDate>Wed, 28 May 2025 15:08:58 +0000</pubDate>
      <guid>https://frytea.com/archives/1486/</guid>
      <description>&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;./hdc shell
hdc app install -r xxx.hap
&lt;/code&gt;&lt;/pre&gt;&lt;h1 id=&#34;references&#34;&gt;References&lt;/h1&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://developer.huawei.com/consumer/cn/blog/topic/03137966529669104&#34;&gt;【TOOLS使用】OpenHarmony命令行工具hdc安装应用指南&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://ost.51cto.com/posts/25430#5FOH_44&#34;&gt;OpenHarmony设备安装hap应用的5种方式&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://github.com/likuai2010/auto-installer&#34;&gt;https://github.com/likuai2010/auto-installer&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://github.com/likuai2010/ClashMeta&#34;&gt;https://github.com/likuai2010/ClashMeta&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;[OpenHarmony设备安装hap应用的5种方式](&lt;a href=&#34;https://www.bearkey.net/thread&#34;&gt;https://www.bearkey.net/thread&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description>
    </item>
    <item>
      <title>名侦探柯南贝尔摩德出场集数</title>
      <link>https://frytea.com/archives/1485/</link>
      <pubDate>Sun, 11 May 2025 05:00:00 +0000</pubDate>
      <guid>https://frytea.com/archives/1485/</guid>
      <description>&lt;p&gt;贝尔摩德，《名侦探柯南》原作漫画及其衍生作品中登场的角色。黑衣组织成员，在组织中深受BOSS乌丸莲耶的喜爱。擅长易容变装，被称作千面魔女。表面身份是已息影的著名影星克丽丝·温亚德，另一个身份是过世的著名影星莎朗·温亚德，克丽丝的母亲、黑羽盗一的徒弟及工藤有希子的好友。知晓江户川柯南和灰原哀的真实身份却没有报告组织，将柯南视为一发就能击溃组织的“银色子弹”。其真实年龄、过往经历等诸多信息至今处于谜团之中。&lt;/p&gt;</description>
    </item>
    <item>
      <title>k3s k8s 快速部署轻量节点监控方案 beszel</title>
      <link>https://frytea.com/archives/1484/</link>
      <pubDate>Thu, 08 May 2025 13:21:00 +0000</pubDate>
      <guid>https://frytea.com/archives/1484/</guid>
      <description>&lt;p&gt;在逛 Reddit 时看到 &lt;a href=&#34;https://www.reddit.com/r/selfhosted/comments/1kho3qe/what_are_some_very_simple_status_dashboards/&#34;&gt;这篇帖子&lt;/a&gt; 发现 &lt;a href=&#34;https://beszel.dev/&#34;&gt;beszel&lt;/a&gt; 这个熟悉又陌生的名字。看了一下官网发现还支持 kubernetes 的部署，直接使用 &lt;code&gt;daemonset&lt;/code&gt; 就可以在所有节点自动部署 &lt;code&gt;agent&lt;/code&gt; ，虽然还需要手动在 &lt;code&gt;hub&lt;/code&gt; 添加，但已经很方便,用了一下不错。&lt;/p&gt;</description>
    </item>
    <item>
      <title>k3s-k8s 实现 DevOps 方案横向对比</title>
      <link>https://frytea.com/archives/1483/</link>
      <pubDate>Wed, 07 May 2025 10:03:00 +0000</pubDate>
      <guid>https://frytea.com/archives/1483/</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;目前在用 Keel，感觉良好。&lt;/p&gt;&lt;/blockquote&gt;
&lt;h1 id=&#34;主流方案对比&#34;&gt;主流方案对比&lt;/h1&gt;
&lt;p&gt;以下是几种可以在 K3s 中实现轻量级 DevOps 解决方案对比：&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;方案&lt;/th&gt;
          &lt;th&gt;资源占用&lt;/th&gt;
          &lt;th&gt;易用性&lt;/th&gt;
          &lt;th&gt;Web UI&lt;/th&gt;
          &lt;th&gt;集成能力&lt;/th&gt;
          &lt;th&gt;配置复杂度&lt;/th&gt;
          &lt;th&gt;特点&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;ArgoCD&lt;/td&gt;
          &lt;td&gt;中等&lt;/td&gt;
          &lt;td&gt;★★★★☆&lt;/td&gt;
          &lt;td&gt;优秀&lt;/td&gt;
          &lt;td&gt;原生支持 Git/镜像更新&lt;/td&gt;
          &lt;td&gt;中等&lt;/td&gt;
          &lt;td&gt;GitOps 专注，声明式部署&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;FluxCD&lt;/td&gt;
          &lt;td&gt;低&lt;/td&gt;
          &lt;td&gt;★★★☆☆&lt;/td&gt;
          &lt;td&gt;基础(最新版改进)&lt;/td&gt;
          &lt;td&gt;原生支持 Git/镜像更新&lt;/td&gt;
          &lt;td&gt;中等&lt;/td&gt;
          &lt;td&gt;GitOps 专注，自动化程度高&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Drone&lt;/td&gt;
          &lt;td&gt;低&lt;/td&gt;
          &lt;td&gt;★★★★☆&lt;/td&gt;
          &lt;td&gt;优秀&lt;/td&gt;
          &lt;td&gt;需配置触发器&lt;/td&gt;
          &lt;td&gt;低&lt;/td&gt;
          &lt;td&gt;轻量级，无需 CRD&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Jenkins X&lt;/td&gt;
          &lt;td&gt;高&lt;/td&gt;
          &lt;td&gt;★★☆☆☆&lt;/td&gt;
          &lt;td&gt;良好&lt;/td&gt;
          &lt;td&gt;丰富&lt;/td&gt;
          &lt;td&gt;高&lt;/td&gt;
          &lt;td&gt;功能全面但较重&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Tekton&lt;/td&gt;
          &lt;td&gt;中等&lt;/td&gt;
          &lt;td&gt;★★★☆☆&lt;/td&gt;
          &lt;td&gt;需安装Dashboard&lt;/td&gt;
          &lt;td&gt;高度可定制&lt;/td&gt;
          &lt;td&gt;中高&lt;/td&gt;
          &lt;td&gt;云原生管道&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Keel&lt;/td&gt;
          &lt;td&gt;极低&lt;/td&gt;
          &lt;td&gt;★★★★★&lt;/td&gt;
          &lt;td&gt;简单&lt;/td&gt;
          &lt;td&gt;专注镜像更新&lt;/td&gt;
          &lt;td&gt;极低&lt;/td&gt;
          &lt;td&gt;超轻量，专注自动部署&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;h1 id=&#34;方案详细分析&#34;&gt;方案详细分析&lt;/h1&gt;
&lt;h2 id=&#34;1-argocd&#34;&gt;1. ArgoCD&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;优势：&lt;/strong&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>k8s 配置访问私有镜像仓库</title>
      <link>https://frytea.com/archives/1482/</link>
      <pubDate>Wed, 07 May 2025 06:19:00 +0000</pubDate>
      <guid>https://frytea.com/archives/1482/</guid>
      <description>&lt;p&gt;harbor 私有仓库、aliyun acr 等同理。&lt;/p&gt;
&lt;h1 id=&#34;创建凭据&#34;&gt;创建凭据&lt;/h1&gt;
&lt;blockquote&gt;
&lt;p&gt;以创建 &lt;code&gt;docker-registry-creds&lt;/code&gt; 为例，按需调整名称&lt;/p&gt;&lt;/blockquote&gt;
&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;&#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;kubectl create secret docker-registry docker-registry-creds --docker-server&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;lt;私有仓库域名&amp;gt;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;--docker-email&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;test@test.com 
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;--docker-username&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;******&amp;#39;&lt;/span&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;--docker-password&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;******&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&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;# 参数解释&lt;/span&gt;
&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;# --docker-server 是私有docker仓库全限定域名(FQDN)&lt;/span&gt;
&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;# --docker-username 是机器人账户的username，需要用单引号引起来。&lt;/span&gt;
&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;# --docker-password 是机器人账户生成的token，需要用单引号引起来。&lt;/span&gt;
&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;# --docker-email 是docker邮箱（非必须）。&lt;/span&gt;
&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;# 这样就成功地将集群中的docker凭据设置为名为docker-registry-creds的secret。&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h1 id=&#34;使用凭据&#34;&gt;使用凭据&lt;/h1&gt;
&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;&#34;&gt;&lt;code class=&#34;language-yaml&#34; data-lang=&#34;yaml&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;apiVersion&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;v1&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;kind&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;Pod&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;metadata&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;name&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;nginx&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;labels&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;app&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;nginx&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;spec&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;containers&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  - &lt;span style=&#34;color:#f92672&#34;&gt;name&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;nginx&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;image&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;&amp;lt;私有仓库域名&amp;gt;/kubernetes/nginx:latest &lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;ports&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    - &lt;span style=&#34;color:#f92672&#34;&gt;containerPort&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;80&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;imagePullSecrets&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    - &lt;span style=&#34;color:#f92672&#34;&gt;name&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;docker-registry-creds&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h1 id=&#34;references&#34;&gt;References&lt;/h1&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://www.cnblogs.com/even160941/p/15504870.html&#34;&gt;Kubernetes配置Secret访问Harbor私有镜像仓库&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description>
    </item>
    <item>
      <title>GoAccess 分析多网站日志方法</title>
      <link>https://frytea.com/archives/1481/</link>
      <pubDate>Tue, 29 Apr 2025 03:59:14 +0000</pubDate>
      <guid>https://frytea.com/archives/1481/</guid>
      <description>&lt;p&gt;&lt;strong&gt;GoAccess&lt;/strong&gt; 是一个开源的&lt;strong&gt;实时&lt;/strong&gt; &lt;strong&gt;网络日志分析器&lt;/strong&gt;和交互式查看器，可以在 &lt;code&gt;*nix&lt;/code&gt; 系统的&lt;strong&gt;终端&lt;/strong&gt;中或通过&lt;strong&gt;浏览器&lt;/strong&gt;运行。
&lt;img alt=&#34;cli&#34; loading=&#34;lazy&#34; src=&#34;https://cdn-imagehost.frytea.com/images/2025/04/29/j5g5tq.webp&#34;&gt;&lt;/p&gt;
&lt;p&gt;&lt;img alt=&#34;browser&#34; loading=&#34;lazy&#34; src=&#34;https://cdn-imagehost.frytea.com/images/2025/04/29/j5ks1p.webp&#34;&gt;&lt;/p&gt;
&lt;p&gt;默认情况下，&lt;code&gt;goacccess&lt;/code&gt; 分析 &lt;code&gt;COMBINED&lt;/code&gt; 类型的日志，也是 nginx/apache 默认的形式。&lt;code&gt;goaccess&lt;/code&gt; 是支持多站点分析的，根据官网说法，只要日志格式中带有 &lt;code&gt;%v&lt;/code&gt; 就会开启，其实比较简单的做法是使用 &lt;code&gt;VCOMBINED&lt;/code&gt; 类型的日志分析即可。想要分析 &lt;code&gt;VCOMBINED&lt;/code&gt; 类型的日志，需要在 &lt;code&gt;nginx&lt;/code&gt; 等日志中做一点点细微的调整。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Octant - 以开发人员为中心的开源 Kubernetes Web 界面</title>
      <link>https://frytea.com/archives/1480/</link>
      <pubDate>Mon, 28 Apr 2025 09:13:17 +0000</pubDate>
      <guid>https://frytea.com/archives/1480/</guid>
      <description>&lt;h1 id=&#34;tldr&#34;&gt;TL;DR&lt;/h1&gt;
&lt;blockquote&gt;
&lt;p&gt;Octant 是一个以开发人员为中心的开源 Kubernetes Web 界面，可让您检查 Kubernetes 集群及其应用程序，能够帮助开发人员更好理解 Kubernetes 集群复杂性的平台。在&lt;a href=&#34;https://www.youtube.com/watch?v=jpBfgJpTcfw&amp;amp;t=129s&amp;amp;ab_channel=Kubernetes&#34;&gt;这里&lt;/a&gt;发现的。&lt;/p&gt;&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;虽然 &lt;strong&gt;VMware 已结束该项目的积极开发&lt;/strong&gt; ，但看起来确实很好用，收藏备用。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Tailscale 自建 DERP 并配置 SSL 完整教程</title>
      <link>https://frytea.com/archives/1479/</link>
      <pubDate>Tue, 22 Apr 2025 13:38:00 +0000</pubDate>
      <guid>https://frytea.com/archives/1479/</guid>
      <description>&lt;p&gt;Tailscale 在很多场景有着广泛应用，&lt;code&gt;k3s&lt;/code&gt; 天然有针对它的支持，最近在基于这个方案构建遍布全球的分布式私有网络。官方的 &lt;code&gt;DERP&lt;/code&gt; 服务质量并不稳定， 自建后稳定很多，本文记录详细的过程。&lt;/p&gt;</description>
    </item>
    <item>
      <title>OpenManus 使用记录</title>
      <link>https://frytea.com/archives/1478/</link>
      <pubDate>Mon, 21 Apr 2025 08:35:45 +0000</pubDate>
      <guid>https://frytea.com/archives/1478/</guid>
      <description>&lt;h1 id=&#34;安装运行&#34;&gt;安装运行&lt;/h1&gt;
&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;&#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;# 安装 uv（一个快速的 Python 包管理器）：&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;$ curl -LsSf https://astral.sh/uv/install.sh | sh
&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;# 克隆仓库：&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;$ git clone https://github.com/mannaandpoem/OpenManus.git
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;$ cd OpenManus
&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;# 创建并激活虚拟环境：&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;$ uv venv --python 3.12
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;$ source .venv/bin/activate  &lt;span style=&#34;color:#75715e&#34;&gt;# Unix/macOS 系统&lt;/span&gt;
&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;# Windows 系统使用：&lt;/span&gt;
&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;# .venv\Scripts\activate&lt;/span&gt;
&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;# 安装依赖：&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;$ uv pip install -r requirements.txt
&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;# 浏览器自动化工具（可选）&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;$ playwright install
&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;# 在 config 目录创建 config.toml 文件（可从示例复制）：&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;$ cp config/config.example.toml config/config.toml
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;$ vim config/config.toml
&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;# 一行命令运行 OpenManus：&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;$ python main.py
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h1 id=&#34;实际效果&#34;&gt;实际效果&lt;/h1&gt;
&lt;p&gt;开始执行：&lt;/p&gt;</description>
    </item>
    <item>
      <title>Plausible 缺失 location 信息的研究</title>
      <link>https://frytea.com/archives/1477/</link>
      <pubDate>Mon, 21 Apr 2025 08:35:22 +0000</pubDate>
      <guid>https://frytea.com/archives/1477/</guid>
      <description>&lt;h1 id=&#34;plausible-调试方案&#34;&gt;Plausible 调试方案&lt;/h1&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;$ cd hosting
$ docker compose exec plausible bin/plausible remote
$ kubectl -n plausible exec -it statefulsets/app -- bin/plausible remote

iex&amp;gt; headers = fn {:trace, _pid, :call, {_mod, _fun, [%Plug.Conn{req_headers: headers}]}} -&amp;gt; inspect(headers) end
iex&amp;gt; mod_fun_args = {PlausibleWeb.RemoteIP, :get, 1}
iex&amp;gt; how_many_times = 5
iex&amp;gt; :recon_trace.calls(mod_fun_args, how_many_times, formatter: headers)

# Request it
&lt;/code&gt;&lt;/pre&gt;&lt;blockquote&gt;
&lt;p&gt;最后把 &lt;code&gt;nginx-ingress&lt;/code&gt; 运行模式改为 &lt;code&gt;hostPort&lt;/code&gt; 解决。&lt;/p&gt;</description>
    </item>
    <item>
      <title>解决 Nginx Ingress returns 413 Entity Too Large</title>
      <link>https://frytea.com/archives/1475/</link>
      <pubDate>Mon, 21 Apr 2025 08:34:15 +0000</pubDate>
      <guid>https://frytea.com/archives/1475/</guid>
      <description>&lt;h1 id=&#34;tldr&#34;&gt;TL;DR&lt;/h1&gt;
&lt;p&gt;配置 &lt;code&gt;ingress&lt;/code&gt; 服务时调整一下大小即可：&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: cafe-ingress-with-annotations
  annotations:
    nginx.org/proxy-connect-timeout: &amp;#34;30s&amp;#34;
    nginx.org/proxy-read-timeout: &amp;#34;20s&amp;#34;
    nginx.org/client-max-body-size: &amp;#34;4m&amp;#34;
    nginx.org/server-snippets: |
      location / {
        return 302 /coffee;
      }      
spec:
  rules:
  - host: cafe.example.com
    http:
      paths:
      - path: /tea
        pathType: Prefix
        backend:
          service:
            name: tea-svc
            port:
              number: 80
      - path: /coffee
        pathType: Prefix
        backend:
          service:
            name: coffee-svc
            port:
              number: 80
&lt;/code&gt;&lt;/pre&gt;&lt;h1 id=&#34;references&#34;&gt;References&lt;/h1&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://stackoverflow.com/questions/64759983/nginx-ingress-returns-413-entity-too-large&#34;&gt;Nginx Ingress returns 413 Entity Too Large&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://docs.nginx.com/nginx-ingress-controller/configuration/ingress-resources/advanced-configuration-with-annotations/#using-annotations&#34;&gt;Advanced configuration with Annotations&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description>
    </item>
    <item>
      <title>绘图模型效果对比之城市气象</title>
      <link>https://frytea.com/archives/1476/</link>
      <pubDate>Mon, 21 Apr 2025 08:34:00 +0000</pubDate>
      <guid>https://frytea.com/archives/1476/</guid>
      <description>&lt;h1 id=&#34;promot&#34;&gt;Promot&lt;/h1&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;A highly detailed and photorealistic image of Akmenė, Pemagatshel, Lithuania, during a cloudy day with a temperature feel of 7.0°C. The scene captures the historic Church of St. John the Baptist, its intricate brickwork and architectural features glistening from recent rain. The wet pavement reflects the overcast sky, which is 76.0% cloud covered, creating a soft, diffused light that highlights the textures of the buildings and surrounding lush greenery. The foreground includes puddles forming on the cobblestone streets, while the background features dense, misty forests framing the town. The composition employs the rule of thirds, with the church positioned to the right, leading lines from the street guiding the viewer’s eye through the scene. The lighting enhances the mood, maintaining clarity and brightness, with details visible in the shadows. The overall atmosphere is tranquil and inviting, embodying the rich cultural heritage and natural beauty of Akmenė.
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Refs: &lt;a href=&#34;https://todayaiweather.com/cities/akmene/weather/2025-04-21-fa0d310b-ff01-41e7-a002-c33f735aa311&#34;&gt;Akmenė, Lithuania Weather Art&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>【转】k8s 认知路线</title>
      <link>https://frytea.com/archives/1474/</link>
      <pubDate>Mon, 21 Apr 2025 08:11:00 +0000</pubDate>
      <guid>https://frytea.com/archives/1474/</guid>
      <description>&lt;h1 id=&#34;from-v&#34;&gt;From V&lt;/h1&gt;
&lt;blockquote&gt;
&lt;p&gt;以下内容转载自 &lt;a href=&#34;https://www.v2ex.com/t/968514#r_13557021&#34;&gt;https://www.v2ex.com/t/968514#r_13557021&lt;/a&gt;&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;k8s 这个东西真的内容太多了，没有啥系统性的资料，里面各种知识点真的没法说，太多了，最好的就是看官方文档，并且结合工作当中的实践慢慢积累，才能由浅入深，只是看文档想掌握深点，个人感觉很困难。&lt;/p&gt;</description>
    </item>
    <item>
      <title>OpenFOAM 两大分支的详细比较</title>
      <link>https://frytea.com/archives/1473/</link>
      <pubDate>Mon, 21 Apr 2025 03:05:26 +0000</pubDate>
      <guid>https://frytea.com/archives/1473/</guid>
      <description>&lt;p&gt;OpenFOAM 的两个主要分支源自同一项目，但在 2011 年后走上了不同的发展道路。下面详细比较这两个版本的历史、版本发布情况、技术差异和适用场景。&lt;/p&gt;
&lt;h2 id=&#34;历史背景&#34;&gt;历史背景&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;分叉原因&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;OpenFOAM 最初由 Henry Weller 和他的团队在 20 世纪 90 年代开发&lt;/li&gt;
&lt;li&gt;2004 年成立了 OpenCFD Ltd 公司商业化 OpenFOAM&lt;/li&gt;
&lt;li&gt;2011 年，SGI (Silicon Graphics International) 收购了 OpenCFD Ltd&lt;/li&gt;
&lt;li&gt;2012 年，ESI Group 从 SGI 购买了 OpenCFD Ltd&lt;/li&gt;
&lt;li&gt;这一系列收购后，原开发团队的一部分成立了 OpenFOAM Foundation，分叉了代码库&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;版本发布历史&#34;&gt;版本发布历史&lt;/h2&gt;
&lt;h3 id=&#34;openfoam-foundation-版本&#34;&gt;OpenFOAM Foundation 版本&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;命名规则&lt;/strong&gt;：使用版本号（如 v2106, v2212）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;发布频率&lt;/strong&gt;：通常每年 1-2 次大版本&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;版本轨迹&lt;/strong&gt;：
&lt;ul&gt;
&lt;li&gt;v2.0.0（2011 年，首个独立版本）&lt;/li&gt;
&lt;li&gt;v2.3.0（2014 年）&lt;/li&gt;
&lt;li&gt;v4.0（2016 年）&lt;/li&gt;
&lt;li&gt;v7（2019 年）&lt;/li&gt;
&lt;li&gt;v9（2021 年）&lt;/li&gt;
&lt;li&gt;v10（2022 年）&lt;/li&gt;
&lt;li&gt;v11（2023 年）&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;openfoam-plus-版本&#34;&gt;OpenFOAM+ (plus) 版本&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;命名规则&lt;/strong&gt;：使用年份+月份（如 v1906, v2206）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;发布频率&lt;/strong&gt;：每年 2 次，通常在 6 月和 12 月&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;版本轨迹&lt;/strong&gt;：
&lt;ul&gt;
&lt;li&gt;v3.0+（2015 年）&lt;/li&gt;
&lt;li&gt;v1606+（2016 年）&lt;/li&gt;
&lt;li&gt;v1806+（2018 年）&lt;/li&gt;
&lt;li&gt;v2006（2020 年）&lt;/li&gt;
&lt;li&gt;v2206（2022 年）&lt;/li&gt;
&lt;li&gt;v2312（2023 年）&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;技术差异&#34;&gt;技术差异&lt;/h2&gt;
&lt;h3 id=&#34;1-代码结构与架构&#34;&gt;1. 代码结构与架构&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Foundation 版本&lt;/strong&gt;:&lt;/p&gt;</description>
    </item>
    <item>
      <title>第一个 CUDA 程序之矩阵运算计算效能对比</title>
      <link>https://frytea.com/archives/1472/</link>
      <pubDate>Sat, 19 Apr 2025 02:21:24 +0000</pubDate>
      <guid>https://frytea.com/archives/1472/</guid>
      <description>&lt;p&gt;这是一个使用 CUDA 进行编程的实际例子，对比 CPU 和 GPU 在执行矩阵乘法时的性能差异。&lt;/p&gt;
&lt;h1 id=&#34;运行效果&#34;&gt;运行效果&lt;/h1&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;(base) root@gpu-1095cf160ec353b4e35a9-1-zqa76jnvthlx:~/data/CUDA/first# ./gpu_matrix_mult
GPU 执行时间: 0.000475046 秒
(base) root@gpu-1095cf160ec353b4e35a9-1-zqa76jnvthlx:~/data/CUDA/first# ./cpu_matrix_mult 
CPU 执行时间: 14.3784 秒
&lt;/code&gt;&lt;/pre&gt;&lt;h1 id=&#34;程序实例&#34;&gt;程序实例&lt;/h1&gt;
&lt;p&gt;&lt;strong&gt;示例：矩阵乘法&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;矩阵乘法是一个非常适合用 GPU 加速的计算密集型任务。我们将实现一个简单的矩阵乘法，分别在 CPU 和 GPU 上运行，并比较它们的执行时间。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Archlinux KDE Apache JMeter 配置高分屏缩放</title>
      <link>https://frytea.com/archives/1471/</link>
      <pubDate>Thu, 17 Apr 2025 06:11:00 +0000</pubDate>
      <guid>https://frytea.com/archives/1471/</guid>
      <description>&lt;p&gt;ArchLinux 下安装 &lt;code&gt;jmeter&lt;/code&gt; 很简单：&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;yay -S jmeter
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;但是在现代高分辨率显示器下 GUI 的字体和图标都很小 ：&lt;/p&gt;
&lt;p&gt;&lt;img alt=&#34;JMeter 缩放前&#34; loading=&#34;lazy&#34; src=&#34;https://cdn-imagehost.frytea.com/images/2025/04/17/n8u28t.webp&#34;&gt;&lt;/p&gt;
&lt;h1 id=&#34;tldr&#34;&gt;TL;DR&lt;/h1&gt;
&lt;p&gt;查阅文档后发现只需带有一个参数运行即可：&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;JVM_ARGS=&amp;#34;-Dsun.java2d.uiScale=200%&amp;#34; jmeter
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;也可以把这个参数写入启动脚本中：&lt;/p&gt;</description>
    </item>
    <item>
      <title>解决 gitlab-runner 移除残留文件  permission denied</title>
      <link>https://frytea.com/archives/1470/</link>
      <pubDate>Tue, 15 Apr 2025 06:54:45 +0000</pubDate>
      <guid>https://frytea.com/archives/1470/</guid>
      <description>&lt;p&gt;最近使用遇到一些问题：&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;Running with gitlab-runner 17.10.0 (67b2b2db)
  on wz-arm64-host-runner8 Q3NRHTCy, system ID: s_a7d2f872e9b4
Preparing the &amp;#34;shell&amp;#34; executor 00:00
Using Shell (bash) executor...
Preparing environment 00:00
Running on xxx-runner8...
Getting source from Git repository 00:01
Fetching changes with git depth set to 50...
重新初始化已存在的 Git 仓库于 /home/gitlab-runner/builds/Q3NRHTCy/0/cloud/xxx-top/.git/
Checking out 2356a4c2 as detached HEAD (ref is release/2.6)...
warning: 删除 xxx/xxx/xxx/xxx/xxx-1.0/Makefile 失败: 权限不够
Cleaning up project directory and file based variables 00:00
ERROR: Job failed: exit status 1
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;最后发现是某一级路径的所有者被改变为 &lt;code&gt;root&lt;/code&gt; 导致无法删除，造成该现象的原因未知。通过查阅资料和文档，在 gitlab-runner 的配置文件增加一行 &lt;code&gt;pre_get_sources_script&lt;/code&gt; 解决：&lt;/p&gt;</description>
    </item>
    <item>
      <title>nginx-ingress 配置路由 302</title>
      <link>https://frytea.com/archives/1469/</link>
      <pubDate>Tue, 15 Apr 2025 06:54:21 +0000</pubDate>
      <guid>https://frytea.com/archives/1469/</guid>
      <description>&lt;h1 id=&#34;demo-ingress&#34;&gt;demo ingress&lt;/h1&gt;
&lt;p&gt;这个实例中，实现将 &lt;code&gt;访问 https://image.frytea.com/Avatar.jpg 请求302到 https://image.frytea.com/i/Avatar.jpg&lt;/code&gt;&lt;/p&gt;
&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;&#34;&gt;&lt;code class=&#34;language-yaml&#34; data-lang=&#34;yaml&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;apiVersion&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;networking.k8s.io/v1&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;kind&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;Ingress&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;metadata&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;name&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;app&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;namespace&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;imagehost&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;annotations&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;cert-manager.io/cluster-issuer&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;dnspod-cluster-issuer&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;nginx.ingress.kubernetes.io/configuration-snippet&lt;/span&gt;: |&lt;span style=&#34;color:#e6db74&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;      location = /Avatar.jpg {
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;        return 301 https://image.frytea.com/i/Avatar.jpg$is_args$args;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;      }&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;spec&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;ingressClassName&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;nginx&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;tls&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  - &lt;span style=&#34;color:#f92672&#34;&gt;hosts&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      - &lt;span style=&#34;color:#ae81ff&#34;&gt;image.frytea.com&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      - &lt;span style=&#34;color:#ae81ff&#34;&gt;imagehost-cdn.frytea.com&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      - &lt;span style=&#34;color:#ae81ff&#34;&gt;cdn-imagehost.frytea.com&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;secretName&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;image-frytea-com-tls&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;rules&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  - &lt;span style=&#34;color:#f92672&#34;&gt;host&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;image.frytea.com&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;http&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;paths&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      - &lt;span style=&#34;color:#f92672&#34;&gt;path&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;/&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#f92672&#34;&gt;pathType&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;Prefix&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#f92672&#34;&gt;backend&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;          &lt;span style=&#34;color:#f92672&#34;&gt;service&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#f92672&#34;&gt;name&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;app&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#f92672&#34;&gt;port&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;              &lt;span style=&#34;color:#f92672&#34;&gt;name&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;web&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;直接配置会提示报错：&lt;/p&gt;</description>
    </item>
    <item>
      <title>常见 S3 存储服务多维度横评（附1TB存储传输成本）</title>
      <link>https://frytea.com/archives/1467/</link>
      <pubDate>Sat, 12 Apr 2025 16:18:00 +0000</pubDate>
      <guid>https://frytea.com/archives/1467/</guid>
      <description>&lt;p&gt;之前看到猫猫大佬的 &lt;a href=&#34;https://catcat.blog/object-storage-pricing-comparison-1tb-storage-transfer-benchmark.html&#34;&gt;对象存储服务商价格对比：1TB存储与1TB流量基准分析&lt;/a&gt; 这篇文章很有启发。正好最近在探索物美价廉、稳定可靠的 S3 数据存储方案，将自己熟悉的、网上常见的一些提供 S3 的厂商服务做个整理，按照 &lt;code&gt;1TB&lt;/code&gt; 数据存储和传输成本为指标做一个横评表格。希望给选购 S3 服务需求的人们有一些启发。&lt;/p&gt;</description>
    </item>
    <item>
      <title>k8s 触发 pod 重新拉取镜像平滑升级的方法</title>
      <link>https://frytea.com/archives/1466/</link>
      <pubDate>Thu, 10 Apr 2025 09:29:10 +0000</pubDate>
      <guid>https://frytea.com/archives/1466/</guid>
      <description>&lt;p&gt;下面介绍更新 Deployment 以重新拉取相同标签镜像的方法，不要只会杀 pod 触发了，个人最喜欢&lt;strong&gt;方法二&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;当镜像名称和标签都没有变化，但需要重新拉取镜像时（比如镜像内容已更新但标签保持不变），可以采用以下方法：&lt;/p&gt;</description>
    </item>
    <item>
      <title>Clickhouse 迁移后 permission denied 问题解决</title>
      <link>https://frytea.com/archives/1465/</link>
      <pubDate>Thu, 10 Apr 2025 09:28:48 +0000</pubDate>
      <guid>https://frytea.com/archives/1465/</guid>
      <description>&lt;h1 id=&#34;tldr&#34;&gt;TL;DR&lt;/h1&gt;
&lt;p&gt;Clickhouse 迁移数据后，很容易出现权限问题导致无法启动，运行以下命令后重启即可解决。&lt;/p&gt;
&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;&#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;chown -R clickhouse /var/lib/clickhouse /var/log/clickhouse-server /etc/clickhouse-server /etc/clickhouse-client
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h1 id=&#34;references&#34;&gt;References&lt;/h1&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://github.com/ClickHouse/ClickHouse/issues/7902&#34;&gt;Clickhouse failed to start, permission denied #7902&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description>
    </item>
    <item>
      <title>Linux CPU 运行模式及功耗分析</title>
      <link>https://frytea.com/archives/1464/</link>
      <pubDate>Wed, 09 Apr 2025 01:55:00 +0000</pubDate>
      <guid>https://frytea.com/archives/1464/</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;本文第一章节主要内容转载自：&lt;a href=&#34;https://www.cnblogs.com/shhnwangjian/p/13321730.html&#34;&gt;linux cpu 运行模式&lt;/a&gt;&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;CPU动态节能技术用于降低服务器功耗，通过选择系统空闲状态不同的电源管理策略，可以实现不同程度降低服务器功耗，更低的功耗策略意味着CPU唤醒更慢对性能 影响更大。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Linux vim vi 翻页跳转命令快捷键</title>
      <link>https://frytea.com/archives/1463/</link>
      <pubDate>Mon, 07 Apr 2025 09:24:05 +0000</pubDate>
      <guid>https://frytea.com/archives/1463/</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;以下组合若没有特殊说明，基本都是键位组合。&lt;/p&gt;&lt;/blockquote&gt;
&lt;h1 id=&#34;vim翻页&#34;&gt;vim翻页&lt;/h1&gt;
&lt;h2 id=&#34;vim翻半页&#34;&gt;vim翻半页&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;ctr-d&lt;/code&gt;：向后翻半页&lt;/li&gt;
&lt;li&gt;&lt;code&gt;ctr-u&lt;/code&gt;：向前翻半页&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;vim整整页&#34;&gt;vim整整页&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;ctr+f&lt;/code&gt;：向后翻整页&lt;/li&gt;
&lt;li&gt;&lt;code&gt;ctr+b&lt;/code&gt;：向前翻整页&lt;/li&gt;
&lt;/ul&gt;
&lt;h1 id=&#34;vim跳转&#34;&gt;vim跳转&lt;/h1&gt;
&lt;h2 id=&#34;vim跳首行&#34;&gt;vim跳首行&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;g+g&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;:1&lt;/code&gt;&lt;br&gt;
第二种方式需要输入：&lt;br&gt;
先按&lt;code&gt;shift+:&lt;/code&gt;&lt;br&gt;
再输入&lt;code&gt;1&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;vim跳尾行&#34;&gt;vim跳尾行&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;shift+g&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;:$&lt;/code&gt;&lt;br&gt;
第二种方式需要输入：&lt;br&gt;
先按&lt;code&gt;shift+:&lt;/code&gt;&lt;br&gt;
再输入&lt;code&gt;$&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h1 id=&#34;references&#34;&gt;References&lt;/h1&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://www.cnblogs.com/Andya/p/12983159.html&#34;&gt;Linux—vim/vi 翻页跳转命令快捷键&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description>
    </item>
    <item>
      <title>git 拉取所有 branch 和 tag 到本地并推送到远程</title>
      <link>https://frytea.com/archives/1462/</link>
      <pubDate>Mon, 07 Apr 2025 09:23:34 +0000</pubDate>
      <guid>https://frytea.com/archives/1462/</guid>
      <description>&lt;p&gt;需要一个正常的可工作仓库，而不是裸镜像仓库。以下是在不使用 &lt;code&gt;--mirror&lt;/code&gt; 选项的情况下，拉取所有分支和标签并推送到新仓库的步骤：&lt;/p&gt;
&lt;h3 id=&#34;步骤-1-克隆源仓库&#34;&gt;步骤 1: 克隆源仓库&lt;/h3&gt;
&lt;p&gt;首先，正常克隆源仓库：&lt;/p&gt;</description>
    </item>
    <item>
      <title>Rails 性能分析工具 rack-mini-profiler 和 bullet</title>
      <link>https://frytea.com/archives/1441/</link>
      <pubDate>Mon, 07 Apr 2025 09:21:44 +0000</pubDate>
      <guid>https://frytea.com/archives/1441/</guid>
      <description>&lt;p&gt;rack-mini-profiler 和 bullet 是ruby 开发中两个广受欢迎的性能分析工具。&lt;/p&gt;
&lt;p&gt;Bullet 更加实用，提得建议更加直接有效，rack-mini-profiler 信息丰富，需要更细致的排查时使用。&lt;/p&gt;</description>
    </item>
    <item>
      <title>全球国家、城市、地区开源数据库</title>
      <link>https://frytea.com/archives/1440/</link>
      <pubDate>Mon, 07 Apr 2025 09:21:31 +0000</pubDate>
      <guid>https://frytea.com/archives/1440/</guid>
      <description>&lt;p&gt;以 JSON、MYSQL、PSQL、SQLITE、XML、YAML 和 CSV 格式提供城市、州、国家/地区的完整数据库。所有国家、州和城市都覆盖并填充了不同的组合和版本。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Rails Active Record 常用命令</title>
      <link>https://frytea.com/archives/1439/</link>
      <pubDate>Mon, 07 Apr 2025 09:21:19 +0000</pubDate>
      <guid>https://frytea.com/archives/1439/</guid>
      <description>&lt;p&gt;主要命令&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;rake db:migrate
rake db:rollback

rake db:migrate:up
rake db:migrate:down

rake db:migrate:redo
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;指定版本号的回滚&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;rake db:migrate:down VERSION=20141119130134
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;回滚最近几个迁移&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;rake db:rollback STEP=n
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;n 代表个数。注意：是最近几个，它们会被一起移除。&lt;/p&gt;
&lt;p&gt;其它类似命令：&lt;/p&gt;
&lt;p&gt;只执行指定版本号的迁移&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;rake db:migrate VERSION=20141119130134
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;只执行最近几次迁移&lt;/p&gt;</description>
    </item>
    <item>
      <title>Rails Rake 简介与编写</title>
      <link>https://frytea.com/archives/1438/</link>
      <pubDate>Mon, 07 Apr 2025 09:21:09 +0000</pubDate>
      <guid>https://frytea.com/archives/1438/</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;来源：&lt;a href=&#34;https://ruby-china.org/topics/27846&#34;&gt;Rake 简介与编写&lt;/a&gt;&lt;/p&gt;&lt;/blockquote&gt;
&lt;h1 id=&#34;rake-用法简介&#34;&gt;Rake 用法简介&lt;/h1&gt;
&lt;h2 id=&#34;rake-简介&#34;&gt;rake 简介&lt;/h2&gt;
&lt;p&gt;Rake 的意思是 Ruby Make，一个用 ruby 开发的代码构建工具。&lt;/p&gt;
&lt;p&gt;1.以任务的方式创建和运行脚本 当然，你可以用脚本来创建每一个你希望自动运行的任务。但是，对于大型的应用来说，你几乎总是需要为数据库迁移 (比如 Rails 中 db:migrate 任务)、清空缓存、或者代码维护等等编写脚本。对于每一项任务，你可能都需要写若干脚本，这会让你的管理变得复杂。那么，把它们用任务的方式整理到一起，会让管理变得轻松很多。&lt;/p&gt;</description>
    </item>
    <item>
      <title>如何调试 Vim 脚本</title>
      <link>https://frytea.com/archives/1437/</link>
      <pubDate>Mon, 07 Apr 2025 09:20:57 +0000</pubDate>
      <guid>https://frytea.com/archives/1437/</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;来源： &lt;a href=&#34;https://harttle.land/2018/12/05/vim-debug.html&#34;&gt;如何调试 Vim 脚本&lt;/a&gt;&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;使用 &lt;code&gt;-D&lt;/code&gt; 参数可以开启 Debug 模式， 在 Debug 模式中可以使用 &lt;code&gt;cont&lt;/code&gt;, &lt;code&gt;next&lt;/code&gt;, &lt;code&gt;interrupt&lt;/code&gt;, &lt;code&gt;step&lt;/code&gt;, &lt;code&gt;quit&lt;/code&gt; 等调试命令， 以及 &lt;code&gt;breakadd&lt;/code&gt;, &lt;code&gt;breakdel&lt;/code&gt; 来添加和移除断点。 使用 &lt;code&gt;-u&lt;/code&gt; 来禁止加载任何配置文件，使用 &lt;code&gt;:source&lt;/code&gt; 命令逐个加载。 使用 &lt;code&gt;:set verbose&lt;/code&gt; 和 &lt;code&gt;:set verbosefile&lt;/code&gt; 等 &lt;a href=&#34;https://harttle.land/2017/01/30/variables-in-vim.html&#34;&gt;配置变量&lt;/a&gt; 可以设置日志级别和输出文件， &lt;code&gt;-V&lt;/code&gt; 启动参数也可以起到同样的作用。&lt;/p&gt;</description>
    </item>
    <item>
      <title>tailscale zerotier wireguard  横向对比</title>
      <link>https://frytea.com/archives/1461/</link>
      <pubDate>Mon, 07 Apr 2025 09:20:35 +0000</pubDate>
      <guid>https://frytea.com/archives/1461/</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;References: Gemini 2.5 Pro&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;本文对比一下 Tailscale、ZeroTier 和 WireGuard 这三个流行的虚拟网络/VPN 解决方案。&lt;/p&gt;
&lt;p&gt;需要明确一点：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;WireGuard&lt;/strong&gt; 是一个现代、快速、简单的 &lt;strong&gt;VPN 协议&lt;/strong&gt;。它本身只负责建立安全的点对点隧道，不包含用户管理、密钥分发、NAT 穿透等便捷功能。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Tailscale&lt;/strong&gt; 和 &lt;strong&gt;ZeroTier&lt;/strong&gt; 都是基于特定技术（Tailscale 基于 WireGuard，ZeroTier 有自己的协议）构建的&lt;strong&gt;完整解决方案或服务&lt;/strong&gt;。它们旨在简化虚拟网络的创建和管理，内置了用户认证、设备管理、NAT 穿透等功能。&lt;/li&gt;
&lt;/ul&gt;
&lt;h1 id=&#34;关键特性对比&#34;&gt;关键特性对比&lt;/h1&gt;
&lt;p&gt;以下是它们的详细对比：&lt;/p&gt;</description>
    </item>
    <item>
      <title>Tailscale 自建 Derp</title>
      <link>https://frytea.com/archives/1460/</link>
      <pubDate>Mon, 07 Apr 2025 09:20:20 +0000</pubDate>
      <guid>https://frytea.com/archives/1460/</guid>
      <description>&lt;h1 id=&#34;tldr&#34;&gt;TL;DR&lt;/h1&gt;
&lt;blockquote&gt;
&lt;p&gt;必需：将 env &lt;code&gt;DERP_DOMAIN&lt;/code&gt; 设置为您的域&lt;/p&gt;&lt;/blockquote&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;docker run -e DERP_DOMAIN=derper.your-domain.com -p 80:80 -p 443:443 -p 3478:3478/udp fredliang/derper
&lt;/code&gt;&lt;/pre&gt;&lt;blockquote&gt;
&lt;p&gt;也有其他不使用域名的方法，参考文献自行探索&lt;/p&gt;&lt;/blockquote&gt;
&lt;h1 id=&#34;references&#34;&gt;References&lt;/h1&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://tailscale.com/kb/1118/custom-derp-servers&#34;&gt;Custom DERP Servers&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://github.com/fredliang44/derper-docker&#34;&gt;fredliang44/derper-docker&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://www.xiaoiluo.com/article/tailscale-derp&#34;&gt;🗒️逃离网络限制：使用Tailscale+自建DERP组建私有局域网的终极指南&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://icloudnative.io/posts/custom-derp-servers/#%E4%BD%BF%E7%94%A8%E7%BA%AF-ip&#34;&gt;Tailscale 基础教程：部署私有 DERP 中继服务器&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description>
    </item>
    <item>
      <title>Ceph 检查 rbd io 排名</title>
      <link>https://frytea.com/archives/1459/</link>
      <pubDate>Mon, 07 Apr 2025 09:19:22 +0000</pubDate>
      <guid>https://frytea.com/archives/1459/</guid>
      <description>&lt;p&gt;好的，在 Ceph 中查看哪个 RBD (RADOS Block Device) 镜像的 I/O 读写最高，最常用的方法是使用 &lt;code&gt;rbd perf image iotop&lt;/code&gt; 或 &lt;code&gt;rbd perf image iostat&lt;/code&gt; 命令。&lt;/p&gt;
&lt;p&gt;这两个命令都需要指定 &lt;strong&gt;存储池 (pool)&lt;/strong&gt; 的名称，因为 RBD 镜像是存在于特定的存储池中的。&lt;/p&gt;</description>
    </item>
    <item>
      <title>k8s csi-driver-nfs的一个坑</title>
      <link>https://frytea.com/archives/1458/</link>
      <pubDate>Mon, 31 Mar 2025 10:01:43 +0000</pubDate>
      <guid>https://frytea.com/archives/1458/</guid>
      <description>&lt;h1 id=&#34;tldr&#34;&gt;TL;DR&lt;/h1&gt;
&lt;p&gt;发现 k8s csi 组的社区项目 &lt;a href=&#34;https://github.com/kubernetes-csi/csi-driver-nfs&#34;&gt;csi-driver-nfs&lt;/a&gt; &lt;code&gt;v4.10&lt;/code&gt; 到 &lt;code&gt;v4.11&lt;/code&gt; 至少这两个版本存在删除 &lt;code&gt;pv&lt;/code&gt; 时会连带将整个根删除的问题。&lt;/p&gt;
&lt;p&gt;声明 &lt;code&gt;StorageClass&lt;/code&gt; 时虽然支持 &lt;code&gt;subDir&lt;/code&gt; ，类似这样：&lt;/p&gt;
&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;&#34;&gt;&lt;code class=&#34;language-yaml&#34; data-lang=&#34;yaml&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;apiVersion&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;storage.k8s.io/v1&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;kind&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;StorageClass&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;metadata&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;name&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;nfs-aliyun-gz&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;provisioner&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;nfs.csi.k8s.io&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;parameters&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;share&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;/csi&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;server&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;28364f4a1fa-eok75.cn-guangzhou.nas.aliyuncs.com&amp;#34;&lt;/span&gt;
&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;#server: &amp;#34;172.26.12.20&amp;#34;&lt;/span&gt;
&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;#subDir: &amp;#34;${pvc.metadata.namespace}/${pvc.metadata.name}&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;reclaimPolicy&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;Delete&lt;/span&gt;
&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;#volumeBindingMode: WaitForFirstConsumer&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;volumeBindingMode&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;Immediate&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;allowVolumeExpansion&lt;/span&gt;: &lt;span style=&#34;color:#66d9ef&#34;&gt;true&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;mountOptions&lt;/span&gt;:
&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;#  - nolock,tcp,noresvport&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  - &lt;span style=&#34;color:#ae81ff&#34;&gt;vers=3,nolock,proto=tcp,rsize=1048576,wsize=1048576,hard,timeo=600,retrans=2,noresvport&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;但如果类似这样使用 &lt;code&gt;subDir&lt;/code&gt; 声明路径，同命名空间下的其他 pvc 删除，会导致整个 subDir 根目录都被删除。目前官方 pr 已经修复，但实测还是有问题，有空再研究一下代码，不知道是不是刻意为之。&lt;/p&gt;</description>
    </item>
    <item>
      <title>一条命令测试 pg 查询延迟</title>
      <link>https://frytea.com/archives/1457/</link>
      <pubDate>Mon, 31 Mar 2025 10:01:13 +0000</pubDate>
      <guid>https://frytea.com/archives/1457/</guid>
      <description>&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;$ apt install postgresql-client
$ time psql &amp;#34;postgresql://xxx:xxxx@x.x.x.x:5432/today_ai_weather&amp;#34; -c &amp;#34;\timing on&amp;#34;  -c &amp;#34;SELECT 1&amp;#34;  
Timing is on.  
?column?    
----------  
       1  
(1 row)  
  
Time: 172.842 ms  
  
real    0m1.063s  
user    0m0.029s  
sys     0m0.020s
&lt;/code&gt;&lt;/pre&gt;</description>
    </item>
    <item>
      <title>k3s 容器 mirror 配置方法</title>
      <link>https://frytea.com/archives/1456/</link>
      <pubDate>Mon, 31 Mar 2025 10:00:40 +0000</pubDate>
      <guid>https://frytea.com/archives/1456/</guid>
      <description>&lt;h1 id=&#34;tl-dr&#34;&gt;TL; DR&lt;/h1&gt;
&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;&#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;root@tencent-sh1:~# cat /etc/rancher/k3s/registries.yaml 
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;mirrors:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;docker.io&amp;#34;&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    endpoint:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      - &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;https://harbor.xxx.me&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    rewrite:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#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:#e6db74&#34;&gt;&amp;#34;mirror-dockerhub/&lt;/span&gt;$1&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;registry.k8s.io&amp;#34;&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    endpoint:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      - &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;https://harbor.xxx.me&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    rewrite:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#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:#e6db74&#34;&gt;&amp;#34;mirror-registry-k8s-io/&lt;/span&gt;$1&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;ghcr.io&amp;#34;&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    endpoint:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      - &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;https://harbor.xxx.me&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    rewrite:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#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:#e6db74&#34;&gt;&amp;#34;mirror-registry-ghcr-io/&lt;/span&gt;$1&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;quay.io&amp;#34;&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    endpoint:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      - &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;https://harbor.xxx.me&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    rewrite:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#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:#e6db74&#34;&gt;&amp;#34;mirror-registry-quay-io/&lt;/span&gt;$1&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;以上是我的配置，在 &lt;code&gt;harbor&lt;/code&gt; 中镜像以上镜像源，之后这样 配置即可。&lt;/p&gt;
&lt;p&gt;如果没有路径，比如使用 &lt;code&gt;registry&lt;/code&gt; 镜像，忽略 &lt;code&gt;rewrite&lt;/code&gt; 部分即可。&lt;/p&gt;</description>
    </item>
    <item>
      <title>wordpress 使用 k8s 部署并使用 nginx ingress 代理无限 302 到 ssl 问题解决</title>
      <link>https://frytea.com/archives/1455/</link>
      <pubDate>Mon, 31 Mar 2025 09:59:51 +0000</pubDate>
      <guid>https://frytea.com/archives/1455/</guid>
      <description>&lt;p&gt;发现容器化之后，wp 网站打开一直尝试 302 到 https 的页面，即使我当前已经是 https 了，经过排查是由于代理提供了 ssl 但 wordpress 不知道，默认会再重定向一次，出现无限 302 。&lt;/p&gt;</description>
    </item>
    <item>
      <title>ArchLinux pacman 一键找到最快的镜像源清单</title>
      <link>https://frytea.com/archives/1454/</link>
      <pubDate>Fri, 14 Mar 2025 17:26:36 +0000</pubDate>
      <guid>https://frytea.com/archives/1454/</guid>
      <description>&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;curl -s &amp;#34;https://archlinux.org/mirrorlist/?country=CN&amp;amp;protocol=https&amp;amp;use_mirror_status=on&amp;#34; | sed -e &amp;#39;s/^#Server/Server/&amp;#39; -e &amp;#39;/^#/d&amp;#39; | rankmirrors -n 5 -
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;运行这个命令，即可自动从 archlinux 官方 mirror 清单获取中国 (&lt;code&gt;CN&lt;/code&gt;) 的镜像清单，并调用 &lt;code&gt;rankmirrors&lt;/code&gt;  测速得到速度最快的前5个。&lt;/p&gt;
&lt;p&gt;配置到 &lt;code&gt;/etc/pacman.d/mirrorlist&lt;/code&gt; 目录中即可使用。&lt;/p&gt;
&lt;h1 id=&#34;references&#34;&gt;References&lt;/h1&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://wiki.archlinux.org/title/Mirrors&#34;&gt;Ranking an existing mirror list&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://man.archlinux.org/man/extra/pacman-contrib/rankmirrors.8.en&#34;&gt;https://man.archlinux.org/man/extra/pacman-contrib/rankmirrors.8.en&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description>
    </item>
    <item>
      <title>LLM 聚合 API 价格对比</title>
      <link>https://frytea.com/archives/1453/</link>
      <pubDate>Fri, 14 Mar 2025 17:26:01 +0000</pubDate>
      <guid>https://frytea.com/archives/1453/</guid>
      <description>&lt;p&gt;List&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;gpt-4&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;gpt-4o&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;claude-3-7-sonnet-20250219&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;`claude-3-7-sonn&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote&gt;
&lt;p&gt;单位：Inout/Output /M&lt;/p&gt;&lt;/blockquote&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th style=&#34;text-align: center&#34;&gt;Model&lt;/th&gt;
          &lt;th&gt;&lt;code&gt;gpt-4o&lt;/code&gt;&lt;/th&gt;
          &lt;th&gt;&lt;code&gt;gpt-4o-mini&lt;/code&gt;&lt;/th&gt;
          &lt;th&gt;&lt;code&gt;deepseek-r1&lt;/code&gt;&lt;/th&gt;
          &lt;th&gt;&lt;code&gt;deepseek-v3&lt;/code&gt;&lt;/th&gt;
          &lt;th&gt;&lt;code&gt;claude-3-7-sonnet&lt;/code&gt;&lt;/th&gt;
          &lt;th&gt;&lt;code&gt;claude-3-5-sonnet&lt;/code&gt;&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;&lt;a href=&#34;https://uniapi.ai/&#34;&gt;UniAPI&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
          &lt;td&gt;&lt;code&gt;$0.2871/$1.1484&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
          &lt;td&gt;&lt;code&gt;$2.376/$11.88&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;&lt;code&gt;$2.376/$11.88&lt;/code&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;&lt;a href=&#34;https://www.gptapi.us/&#34;&gt;GPTAPI&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
          &lt;td&gt;&lt;code&gt;¥0.07/¥0.14&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
          &lt;td&gt;&lt;code&gt;¥5.25/¥26.25&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;&lt;code&gt;¥5.25/¥26.25&lt;/code&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;&lt;a href=&#34;https://openrouter.ai/&#34;&gt;OpenRouter&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
          &lt;td&gt;&lt;code&gt;$5/$7&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
          &lt;td&gt;&lt;code&gt;$3/$15&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;&lt;code&gt;$3/$15&lt;/code&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;&lt;a href=&#34;https://aihubmix.com/&#34;&gt;AiHubMix&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
          &lt;td&gt;&lt;code&gt;$0.62/$2.48&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
          &lt;td&gt;&lt;code&gt;$3.3/$16.5&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;&lt;a href=&#34;https://api.v3.cm/&#34;&gt;V3 API&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
          &lt;td&gt;&lt;code&gt;$1.8/$7.2&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
          &lt;td&gt;&lt;code&gt;$7.4/$37&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;h1 id=&#34;refereneces&#34;&gt;Refereneces&lt;/h1&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://openrouter.ai/&#34;&gt;https://openrouter.ai/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://aihubmix.com&#34;&gt;https://aihubmix.com&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://api.v3.cm/&#34;&gt;https://api.v3.cm/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://www.ohmygpt.com/&#34;&gt;https://www.ohmygpt.com/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://uniapi.ai&#34;&gt;https://uniapi.ai&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description>
    </item>
    <item>
      <title>k8s 使用 pv-migrate  迁移 pvc</title>
      <link>https://frytea.com/archives/1452/</link>
      <pubDate>Fri, 14 Mar 2025 17:25:34 +0000</pubDate>
      <guid>https://frytea.com/archives/1452/</guid>
      <description>&lt;h1 id=&#34;tldr&#34;&gt;TL;DR&lt;/h1&gt;
&lt;p&gt;安装&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;wget https://github.com/utkuozdemir/pv-migrate/releases/download/v1.7.1/pv-migrate_v1.7.1_linux_x86_64.tar.gz
tar -xvf pv-migrate_v1.7.1_linux_x86_64.tar.gz
mv pv-migrate /usr/local/bin
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;用法&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;pv-migrate migrate \
  --source-namespace default \
  --dest-namespace default \
  localpv-vol csi-lvmpv

🚀 Starting migration
💭 Will attempt 3 strategies: mnt2, svc, lbsvc
🚁 Attempting strategy: mnt2
📂 Copying data... 100% |██████████████████████████████| (3.4 GB/s)     
📂 Copying data...   0% |                              |  [0s:0s]🧹 Cleaning up
📂 Copying data... 100% |██████████████████████████████|         
✨ Cleanup done
✅ Migration succeeded
&lt;/code&gt;&lt;/pre&gt;&lt;h1 id=&#34;references&#34;&gt;References&lt;/h1&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://openebs.io/docs/user-guides/data-migration/migration-using-pv-migrate&#34;&gt;Migration from Legacy Storage to Latest Storage Solution&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://github.com/utkuozdemir/pv-migrate&#34;&gt;https://github.com/utkuozdemir/pv-migrate&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description>
    </item>
    <item>
      <title>k8s 使用 OpenEBS 存储</title>
      <link>https://frytea.com/archives/1451/</link>
      <pubDate>Fri, 14 Mar 2025 17:25:14 +0000</pubDate>
      <guid>https://frytea.com/archives/1451/</guid>
      <description>&lt;h1 id=&#34;tldr&#34;&gt;TL;DR&lt;/h1&gt;
&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;&#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;helm repo add openebs https://openebs.github.io/openebs
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;helm repo update
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&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;# 以默认值安装&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;helm install openebs --namespace openebs openebs/openebs --create-namespace
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&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;# 禁用副本存储类型、lvm 本地存储、zfs本地存储，仅保留本地路径存储&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;helm install openebs --namespace openebs openebs/openebs --set engines.replicated.mayastor.enabled&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;false --set engines.local.lvm.enabled&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;false --set engines.local.zfs.enabled&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;fa
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;lse --create-namespace
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;E0311 06:22:00.794754  &lt;span style=&#34;color:#ae81ff&#34;&gt;111105&lt;/span&gt; round_tripper.go:63&lt;span style=&#34;color:#f92672&#34;&gt;]&lt;/span&gt; CancelRequest not implemented by *kube.RetryingRoundTripper
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;NAME: openebs
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;LAST DEPLOYED: Tue Mar &lt;span style=&#34;color:#ae81ff&#34;&gt;11&lt;/span&gt; 06:21:28 &lt;span style=&#34;color:#ae81ff&#34;&gt;2025&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;NAMESPACE: openebs
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;STATUS: deployed
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;REVISION: &lt;span style=&#34;color:#ae81ff&#34;&gt;1&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;TEST SUITE: None
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;NOTES:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Successfully installed OpenEBS.
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Check the status by running: kubectl get pods -n openebs
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;The default values will install both Local PV and Replicated PV. However,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;the Replicated PV will require additional configuration to be fuctional.
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;The Local PV offers non-replicated local storage using &lt;span style=&#34;color:#ae81ff&#34;&gt;3&lt;/span&gt; different storage
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;backends i.e Hostpath, LVM and ZFS, &lt;span style=&#34;color:#66d9ef&#34;&gt;while&lt;/span&gt; the Replicated PV provides one replicated highly-available
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;storage backend i.e Mayastor.
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;For more information, 
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;- view the online documentation at https://openebs.io/docs
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;- connect with an active community on our Kubernetes slack channel.
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        - Sign up to Kubernetes slack: https://slack.k8s.io
&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;#openebs channel: https://kubernetes.slack.com/messages/openebs&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;blockquote&gt;
&lt;p&gt;实际使用需充分阅读官方文档。&lt;/p&gt;</description>
    </item>
    <item>
      <title>k3s 部署 kube-prometheus-stack 监控栈</title>
      <link>https://frytea.com/archives/1450/</link>
      <pubDate>Fri, 14 Mar 2025 17:24:28 +0000</pubDate>
      <guid>https://frytea.com/archives/1450/</guid>
      <description>&lt;h1 id=&#34;tldr&#34;&gt;TL;DR&lt;/h1&gt;
&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;&#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;$ helm repo add prometheus-community https://prometheus-community.github.io/helm-charts
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;$ helm repo update
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;$ helm show values prometheus-community/kube-prometheus-stack
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;$ helm show values prometheus-community/kube-prometheus-stack &amp;gt; values.yaml
&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;# Edit values.yaml&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;$ helm install prometheus-community prometheus-community/kube-prometheus-stack  --namespace monitoring -f values.yaml --create-namespace
&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;# update values.yaml&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;$ helm upgrade --install prometheus-community prometheus-community/kube-prometheus-stack  --namespace monitoring -f values.yaml
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h1 id=&#34;references&#34;&gt;References&lt;/h1&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://github.com/prometheus-community/helm-charts/tree/main/charts/kube-prometheus-stack#configuration&#34;&gt;kube-prometheus-stack&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://forums.rancher.cn/t/kube-prometheus-stack-k3s/2702/1&#34;&gt;实战指南：使用 kube-prometheus-stack 监控 K3s 集群&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description>
    </item>
    <item>
      <title>k8s-k3s 标记节点暂时不可用及排空</title>
      <link>https://frytea.com/archives/1449/</link>
      <pubDate>Fri, 14 Mar 2025 17:24:01 +0000</pubDate>
      <guid>https://frytea.com/archives/1449/</guid>
      <description>&lt;h1 id=&#34;tldr&#34;&gt;TL;DR&lt;/h1&gt;
&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;&#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;# 标记为不可调度&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;kubectl cordon NODE
&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;# 将运行的pod平滑的赶到其他节点上&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;kubectl drain NODE
&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;# 重新变得可调度&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;kubectl uncordon NODE
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h1 id=&#34;references&#34;&gt;References&lt;/h1&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://www.cnblogs.com/linux985/p/16374819.html&#34;&gt;K8S中的cordon、uncordon和drain&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://kubernetes.io/zh-cn/docs/reference/kubectl/generated/kubectl_cordon/&#34;&gt;kubectl cordon&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description>
    </item>
    <item>
      <title>helm operation 中断锁死问题解决</title>
      <link>https://frytea.com/archives/1448/</link>
      <pubDate>Fri, 14 Mar 2025 10:00:21 +0000</pubDate>
      <guid>https://frytea.com/archives/1448/</guid>
      <description>&lt;p&gt;两种方案：&lt;/p&gt;
&lt;h1 id=&#34;解决办法&#34;&gt;解决办法&lt;/h1&gt;
&lt;h2 id=&#34;方法一卸载重装&#34;&gt;方法一，卸载重装&lt;/h2&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;helm uninstall &amp;lt;release name&amp;gt; -n &amp;lt;namespace&amp;gt;
&lt;/code&gt;&lt;/pre&gt;&lt;h2 id=&#34;方法二回滚&#34;&gt;方法二，回滚&lt;/h2&gt;
&lt;p&gt;This error can happen for few reasons, but it most commonly occurs when there is an interruption during the upgrade/install process as you already mentioned.&lt;br&gt;
发生此错误的原因有很多，但最常见的原因是升级/安装过程中出现中断，正如您之前提到的。&lt;/p&gt;</description>
    </item>
    <item>
      <title>将当前系统做成 docker 镜像</title>
      <link>https://frytea.com/archives/1447/</link>
      <pubDate>Wed, 12 Mar 2025 01:45:00 +0000</pubDate>
      <guid>https://frytea.com/archives/1447/</guid>
      <description>&lt;h1 id=&#34;tl-dr&#34;&gt;TL; DR&lt;/h1&gt;
&lt;ul&gt;
&lt;li&gt;Step1: 将当前系统打包&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;系统进行格式转化并压缩，执行如下命令，生成一个镜像的centos7-base.tar的文件&lt;/p&gt;
&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;&#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;# 示例打包命令&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;$ tar --numeric-owner --exclude&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;/proc --exclude&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;/sys -zcvpf /data/centos7-svr.tar.gz /
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;$ tar --numeric-owner &lt;span style=&#34;color:#ae81ff&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;&lt;/span&gt;--exclude&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;/proc --exclude&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;/sys &lt;span style=&#34;color:#ae81ff&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;&lt;/span&gt;--exclude&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;/var/lib/vz &lt;span style=&#34;color:#ae81ff&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;&lt;/span&gt;--exclude&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;/root &lt;span style=&#34;color:#ae81ff&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;&lt;/span&gt;--exclude&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;/media &lt;span style=&#34;color:#ae81ff&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;&lt;/span&gt;--exclude&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;~ &lt;span style=&#34;color:#ae81ff&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;&lt;/span&gt;-zcvpf ~/hci6-ci-base.tar.gz /
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;$ tar -cvpf /home/buildrpm.tar --directory&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;/ --exclude&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;proc --exclude&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;sys --exclude&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;dev --exclude&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;run /
&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;# --numeric-owner:执行所属&lt;/span&gt;
&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;# --exclude：排除那些文件或者目录&lt;/span&gt;
&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;# -zcvf ：打包压缩 p保持文件的绝对路径&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ul&gt;
&lt;li&gt;Step2: 导入镜像并运行&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;把镜像文件centos7-svr.tar.gz放到装有docker的系统上&lt;/p&gt;</description>
    </item>
    <item>
      <title>cert-manager CNAME 问题记录</title>
      <link>https://frytea.com/archives/1446/</link>
      <pubDate>Thu, 06 Mar 2025 03:59:28 +0000</pubDate>
      <guid>https://frytea.com/archives/1446/</guid>
      <description>&lt;p&gt;在研究 &lt;code&gt;cert-manager&lt;/code&gt; 使用 &lt;code&gt;webhook&lt;/code&gt; 方式调用 &lt;code&gt;dnspod&lt;/code&gt; 使用 &lt;code&gt;DNS-01&lt;/code&gt; 方式签发 SSL 证书遇到问题，一直得到错误：&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;I0306 03:48:38.870605       1 controller.go:144] &amp;#34;syncing item&amp;#34; logger=&amp;#34;cert-manager.controller&amp;#34;
I0306 03:48:38.870714       1 dns.go:118] &amp;#34;checking DNS propagation&amp;#34; logger=&amp;#34;cert-manager.controller.Check&amp;#34; resource_name=&amp;#34;test1-tsh1-frytea-com-1-3300738485-2689263791&amp;#34; resource_namespace=&amp;#34;default&amp;#34; resource_kind=&amp;#34;Challenge&amp;#34; resource_version=&amp;#34;
v1&amp;#34; dnsName=&amp;#34;test1.tsh1.frytea.com&amp;#34; type=&amp;#34;DNS-01&amp;#34; resource_name=&amp;#34;test1-tsh1-frytea-com-1-3300738485-2689263791&amp;#34; resource_namespace=&amp;#34;default&amp;#34; resource_kind=&amp;#34;Challenge&amp;#34; resource_version=&amp;#34;v1&amp;#34; domain=&amp;#34;test1.tsh1.frytea.com&amp;#34; nameservers=[&amp;#34;223.5.5.5:53&amp;#34;,&amp;#34;8.8.8.8:53&amp;#34;]
I0306 03:48:38.879628       1 wait.go:94] &amp;#34;Updating FQDN&amp;#34; logger=&amp;#34;cert-manager.controller&amp;#34; resource_name=&amp;#34;test1-tsh1-frytea-com-1-3300738485-2689263791&amp;#34; resource_namespace=&amp;#34;default&amp;#34; resource_kind=&amp;#34;Challenge&amp;#34; resource_version=&amp;#34;v1&amp;#34; dnsName=&amp;#34;test
1.tsh1.frytea.com&amp;#34; type=&amp;#34;DNS-01&amp;#34; fqdn=&amp;#34;_acme-challenge.test1.tsh1.frytea.com.&amp;#34; cname=&amp;#34;tsh1.frytea.com.&amp;#34;
I0306 03:48:38.897174       1 wait.go:145] &amp;#34;Looking up TXT records&amp;#34; logger=&amp;#34;cert-manager.controller&amp;#34; resource_name=&amp;#34;test1-tsh1-frytea-com-1-3300738485-2689263791&amp;#34; resource_namespace=&amp;#34;default&amp;#34; resource_kind=&amp;#34;Challenge&amp;#34; resource_version=&amp;#34;v1&amp;#34; dns
Name=&amp;#34;test1.tsh1.frytea.com&amp;#34; type=&amp;#34;DNS-01&amp;#34; fqdn=&amp;#34;tsh1.frytea.com.&amp;#34;
E0306 03:48:38.897227       1 sync.go:208] &amp;#34;propagation check failed&amp;#34; err=&amp;#34;DNS record for \&amp;#34;test1.tsh1.frytea.com\&amp;#34; not yet propagated&amp;#34; logger=&amp;#34;cert-manager.controller&amp;#34; resource_name=&amp;#34;test1-tsh1-frytea-com-1-3300738485-2689263791&amp;#34; resource_nam
espace=&amp;#34;default&amp;#34; resource_kind=&amp;#34;Challenge&amp;#34; resource_version=&amp;#34;v1&amp;#34; dnsName=&amp;#34;test1.tsh1.frytea.com&amp;#34; type=&amp;#34;DNS-01&amp;#34;I0306 03:48:38.897688       1 controller.go:164] &amp;#34;finished processing work item&amp;#34; logger=&amp;#34;cert-manager.controller&amp;#34;
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;我使用了以下资源：&lt;/p&gt;</description>
    </item>
    <item>
      <title>ProxmoxVE (PVE) NAT 网络配置方法</title>
      <link>https://frytea.com/archives/1445/</link>
      <pubDate>Tue, 04 Mar 2025 01:32:45 +0000</pubDate>
      <guid>https://frytea.com/archives/1445/</guid>
      <description>&lt;p&gt;伪装允许只有私有 IP 地址的访客使用主机 IP 地址来访问网络，以处理传出流量。每个传出数据包都会被重写 iptables ，使其看起来来自主机，响应也会相应地被重写以路由到原始发件人。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Linux 备份和恢复 docker volume 脚本分享</title>
      <link>https://frytea.com/archives/1443/</link>
      <pubDate>Thu, 27 Feb 2025 15:36:16 +0000</pubDate>
      <guid>https://frytea.com/archives/1443/</guid>
      <description>&lt;h1 id=&#34;脚本&#34;&gt;脚本&lt;/h1&gt;
&lt;h2 id=&#34;dump&#34;&gt;Dump&lt;/h2&gt;
&lt;p&gt;&lt;code&gt;docker-volume-dump.sh &lt;/code&gt;&lt;/p&gt;
&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;&#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
&lt;/span&gt;&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;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;dump_dir&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;~/docker-volume-dump
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&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;if&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;[&lt;/span&gt; ! -d $dump_dir &lt;span style=&#34;color:#f92672&#34;&gt;]&lt;/span&gt;; &lt;span style=&#34;color:#66d9ef&#34;&gt;then&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  mkdir -p $dump_dir
&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;fi&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&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;for&lt;/span&gt; volume in &lt;span style=&#34;color:#66d9ef&#34;&gt;$(&lt;/span&gt;docker volume ls -q&lt;span style=&#34;color:#66d9ef&#34;&gt;)&lt;/span&gt;; &lt;span style=&#34;color:#66d9ef&#34;&gt;do&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  dump_file&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;$dump_dir/$volume.tar.gz
&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;if&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;[&lt;/span&gt; -f $dump_file &lt;span style=&#34;color:#f92672&#34;&gt;]&lt;/span&gt;; &lt;span style=&#34;color:#66d9ef&#34;&gt;then&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt; set -x; echo rm $dump_file; &lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt;
&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;fi&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  echo &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;Dump docker volume \&amp;#34;&lt;/span&gt;$volume&lt;span style=&#34;color:#e6db74&#34;&gt;\&amp;#34; to \&amp;#34;&lt;/span&gt;$dump_file&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;\&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  docker run --rm -v $volume:/from alpine sh -c &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;cd /from; tar -cf - .&amp;#34;&lt;/span&gt; | gzip &amp;gt; $dump_dir/$volume.tar.gz
&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;done&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;restore&#34;&gt;Restore&lt;/h2&gt;
&lt;p&gt;&lt;code&gt;docker-volume-restore.sh&lt;/code&gt;&lt;/p&gt;
&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;&#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
&lt;/span&gt;&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;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;dump_dir&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;~/docker-volume-dump
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&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;for&lt;/span&gt; file in ~/docker-volume-dump/* ; &lt;span style=&#34;color:#66d9ef&#34;&gt;do&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  volume&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;$(&lt;/span&gt;basename $file&lt;span style=&#34;color:#66d9ef&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  volume&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;${&lt;/span&gt;volume%%.*&lt;span style=&#34;color:#e6db74&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  echo &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;$volume&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  docker volume inspect $volume &amp;amp;&amp;gt;/dev/null
&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;if&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;[&lt;/span&gt; $? -eq &lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;]&lt;/span&gt;; &lt;span style=&#34;color:#66d9ef&#34;&gt;then&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt; set -x; docker volume rm $volume 1&amp;gt;/dev/null &lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt;
&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;fi&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt; set -x; docker volume create $volume 1&amp;gt;/dev/null &lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  cat $file | docker run --rm -i -v $volume:/to alpine sh -c &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;tar zxvf - -C /to&amp;#39;&lt;/span&gt;
&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;done&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h1 id=&#34;references&#34;&gt;References&lt;/h1&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://gist.github.com/bborysenko/f48b3b75e7bb7af0534e94377db14c51&#34;&gt;bborysenko/docker-volume-dump.sh&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description>
    </item>
    <item>
      <title>ArchLinux 休眠到交换文件</title>
      <link>https://frytea.com/archives/1436/</link>
      <pubDate>Thu, 27 Feb 2025 15:35:55 +0000</pubDate>
      <guid>https://frytea.com/archives/1436/</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;来源： &lt;a href=&#34;https://harttle.land/2019/10/19/hibernate-archlinux.html&#34;&gt;ArchLinux 休眠到交换文件&lt;/a&gt;&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;Linux 使用交换分区来休眠，首先冻结所有进程并申请足够的交换内存（位于磁盘），把当前内存都存进去。 然后下次启动时，initramfs 会直接加载上次休眠时的内存状态，跳过内核的 init 过程。 因此首先需要有足够大的交换分区或交换文件；再把内核指向到休眠的分区上；最后再配置 initramfs 让它加载休眠的内存文件。 官方文档请参考 &lt;a href=&#34;https://wiki.archlinux.org/index.php/Power_management/Suspend_and_hibernate#Hibernation&#34;&gt;Power_management/Suspend_and_hibernate#Hibernation&lt;/a&gt;， 本文细述如何休眠到交换文件，并对其中一些概念和细节进行了解释。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Vim 下大小写敏感的搜索-替换</title>
      <link>https://frytea.com/archives/1435/</link>
      <pubDate>Thu, 27 Feb 2025 15:35:46 +0000</pubDate>
      <guid>https://frytea.com/archives/1435/</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;来源： &lt;a href=&#34;https://harttle.land/2019/12/12/vim-case-sensitive.html&#34;&gt;Vim 下大小写敏感的搜索/替换&lt;/a&gt;&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;Vim 中的搜索默认是大小写敏感的，即搜索 &lt;code&gt;vim&lt;/code&gt; 不会匹配到 &lt;code&gt;Vim&lt;/code&gt;。 这一点跟多数编辑器/IDE 都不同，因此 Vim 的默认设置其实很不顺手。 本文来分享一些个性化的配置方法，让 Vim 下的大小写敏感/不敏感用起来更加顺手。 比如当搜索词包含大写时应用大小写敏感搜索；其他情况应用大小写不敏感搜索。&lt;/p&gt;</description>
    </item>
    <item>
      <title>对 tail -f 使用管道</title>
      <link>https://frytea.com/archives/1434/</link>
      <pubDate>Thu, 27 Feb 2025 15:35:38 +0000</pubDate>
      <guid>https://frytea.com/archives/1434/</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;来源： &lt;a href=&#34;https://harttle.land/2020/06/06/tail-f-pipe.html&#34;&gt;对 tail -f 使用管道&lt;/a&gt;&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;最近发现 &lt;code&gt;tail -f&lt;/code&gt; 时管道后面的程序都会被卡住，才发现 grep，sed，awk 不直接输出到 TTY 时都是带缓冲的。平时跟在 &lt;code&gt;cat&lt;/code&gt; 后使用没问题是因为输入管道关闭触发了 flush。本文详细解释其中的坑，以及怎么让 sed, awk, grep 立即 flush。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Vim 使用系统剪切板</title>
      <link>https://frytea.com/archives/1433/</link>
      <pubDate>Sun, 23 Feb 2025 06:04:53 +0000</pubDate>
      <guid>https://frytea.com/archives/1433/</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;来源：&lt;a href=&#34;https://harttle.land/2020/09/04/vim-clipboard.html&#34;&gt;Vim 使用系统剪切板&lt;/a&gt;&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;Vim 是运行在 Terminal 里的 Shell 程序，所以要把内容拷贝出来可以通过 Terminal，也可以通过 Vim 自己。不配置 Vim 剪切板时只能通过 Shell 来拷贝粘贴：&lt;/p&gt;</description>
    </item>
    <item>
      <title>Vim 寄存器完全手册</title>
      <link>https://frytea.com/archives/1432/</link>
      <pubDate>Sun, 23 Feb 2025 06:04:43 +0000</pubDate>
      <guid>https://frytea.com/archives/1432/</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;转载自 &lt;a href=&#34;https://harttle.land/2016/07/25/vim-registers.html&#34;&gt;Vim 寄存器完全手册&lt;/a&gt;&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;常见文本编辑器都会提供剪切板来支持复制粘贴，Vim 也不例外。 不同的是 Vim 提供了 10 类共 48 个寄存器，提供无与伦比的寄存功能。 最常用的 &lt;code&gt;y&lt;/code&gt; 操作将会拷贝到默认的匿名寄存器中，我们也可以指定具体拷贝到哪个寄存器中。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Vim 宏录制和重放</title>
      <link>https://frytea.com/archives/1431/</link>
      <pubDate>Sun, 23 Feb 2025 06:04:35 +0000</pubDate>
      <guid>https://frytea.com/archives/1431/</guid>
      <description>&lt;h1 id=&#34;tldr&#34;&gt;TL;DR&lt;/h1&gt;
&lt;ol&gt;
&lt;li&gt;&lt;code&gt;qa&lt;/code&gt;: 录制到寄存器 &lt;code&gt;a&lt;/code&gt; 中，可使用 &lt;code&gt;a-z&lt;/code&gt; 26 个命名寄存器&lt;/li&gt;
&lt;li&gt;开始操作，做的所有操作都会录制下来，重放时自动操作；&lt;/li&gt;
&lt;li&gt;&lt;code&gt;q&lt;/code&gt;: 结束录制&lt;/li&gt;
&lt;li&gt;&lt;code&gt;@a&lt;/code&gt; 重放一次；&lt;/li&gt;
&lt;li&gt;&lt;code&gt;100@a&lt;/code&gt; 重放100次；&lt;/li&gt;
&lt;/ol&gt;
&lt;h1 id=&#34;例子&#34;&gt;例子&lt;/h1&gt;
&lt;p&gt;在编辑某个文件的时候，可能会出现需要对某种特定的操作进行许多次的情况，以编辑下面的文件为例：&lt;/p&gt;</description>
    </item>
    <item>
      <title>ArchLinux 快速本地部署 DeepSeek</title>
      <link>https://frytea.com/archives/1444/</link>
      <pubDate>Tue, 18 Feb 2025 07:19:37 +0000</pubDate>
      <guid>https://frytea.com/archives/1444/</guid>
      <description>&lt;p&gt;在 ArchLinux 下借助 Ollama 可以快速运行一个小参数体量的 DeepSeek 本地模型，在我的环境上 纯 CPU 推理也可以获得很快的体验。&lt;/p&gt;
&lt;h1 id=&#34;安装环境&#34;&gt;安装环境&lt;/h1&gt;
&lt;p&gt;一行命令即可装好 ollama&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;$ sudo pacman -S ollama
&lt;/code&gt;&lt;/pre&gt;&lt;h1 id=&#34;模型&#34;&gt;模型&lt;/h1&gt;
&lt;p&gt;从 &lt;a href=&#34;https://ollama.com/library/deepseek-r1&#34;&gt;ollama 的 DeepSeek-R1模型页面&lt;/a&gt; 可以看到可拉取的模型，包括全量的 &lt;code&gt;671b&lt;/code&gt; 模型，以及精炼的小模型表现同样出色。：&lt;/p&gt;</description>
    </item>
    <item>
      <title>全球艺术天气网站</title>
      <link>https://frytea.com/archives/1430/</link>
      <pubDate>Sun, 02 Feb 2025 15:08:00 +0000</pubDate>
      <guid>https://frytea.com/archives/1430/</guid>
      <description>&lt;p&gt;介绍一个 每日 AI 艺术天气 网站，能够通过人工智能生成的艺术作品，以独特的视角展现日常气象现象。&lt;/p&gt;
&lt;h2 id=&#34;入口&#34;&gt;入口&lt;/h2&gt;
&lt;p&gt;&lt;a href=&#34;https://todayaiweather.com/&#34;&gt;TodayAiWeather&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img alt=&#34;TodayAiWeather&#34; loading=&#34;lazy&#34; src=&#34;https://cdn-imagehost.frytea.com/images/2025/02/02/123bzw6.webp&#34;&gt;​&lt;/p&gt;
&lt;p&gt;部分城市入口：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://todayaiweather.com/cities/guangzhou&#34;&gt;Guangzhou&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://todayaiweather.com/cities/beijing&#34;&gt;Beijing&lt;/a&gt;​&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://todayaiweather.com/cities/chicago&#34;&gt;Chicago&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://todayaiweather.com/cities/chengdu&#34;&gt;Chengdu&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://todayaiweather.com/cities/shanghai&#34;&gt;Shanghai&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://todayaiweather.com/cities/paris&#34;&gt;Paris&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://todayaiweather.com/cities/new-taipei-city&#34;&gt;New Taipei City&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://todayaiweather.com/cities/yerevan&#34;&gt;Yerevan&lt;/a&gt;​&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;收录情况&#34;&gt;收录情况&lt;/h2&gt;
&lt;p&gt;目前收录了 78 个城市，未来还会根据需要添加更多，有需要可以在本文留言。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Docker 官方脚本一键安装</title>
      <link>https://frytea.com/archives/1429/</link>
      <pubDate>Wed, 22 Jan 2025 06:47:51 +0000</pubDate>
      <guid>https://frytea.com/archives/1429/</guid>
      <description>&lt;p&gt;使用官方脚本安装&lt;/p&gt;
&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;&#34;&gt;&lt;code class=&#34;language-shell&#34; data-lang=&#34;shell&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;curl -fsSL https://res.frytea.com/d/Dev/Docker/get_docker.sh | bash -s docker --mirror Aliyun
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;curl -fsSL https://res.frytea.com/d/Dev/Docker/get_docker.sh | DOWNLOAD_URL&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;http://192.168.25.10/docker  bash -s docker
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&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;# ustc&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;curl -fsSL https://get.docker.com -o get-docker.sh
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;sudo DOWNLOAD_URL&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;https://mirrors.ustc.edu.cn/docker-ce sh get-docker.sh
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&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;# 也可以自己在内网做一个镜像，将脚本和 docker 软件源全部镜像，可以实现全内网高速安装&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;curl -fsSL http://192.168.25.9/raw/general/docker/install-docker.sh -o get-docker.sh
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;sudo DOWNLOAD_URL&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;http://192.168.25.10/docker sh get-docker.sh
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;curl -fsSL http://192.168.25.9/raw/general/docker/install-docker.sh |  DOWNLOAD_URL&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;http://192.168.25.10/docker bash -s
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;安装完成后使能 docker 服务：&lt;/p&gt;</description>
    </item>
    <item>
      <title>《奔跑吧，程序员：从零开始打造产品、技术和团队》</title>
      <link>https://frytea.com/archives/1425/</link>
      <pubDate>Mon, 20 Jan 2025 15:30:39 +0000</pubDate>
      <guid>https://frytea.com/archives/1425/</guid>
      <description>&lt;h1 id=&#34;阅读感悟&#34;&gt;阅读感悟&lt;/h1&gt;
&lt;p&gt;暂略&lt;/p&gt;
&lt;h2 id=&#34;阅读摘录&#34;&gt;阅读摘录&lt;/h2&gt;
&lt;p&gt;《奔跑吧，程序员：从零开始打造产品、技术和团队》&lt;/p&gt;
&lt;p&gt;叶夫根尼·布里克曼
194个笔记&lt;/p&gt;
&lt;p&gt;1.2 什么是科技创业公司&lt;/p&gt;
&lt;p&gt;◆ 创业公司就是在极度不确定的条件下创造新产品或服务的人类组织。——Eric Ries, 《精益创业》&lt;/p&gt;</description>
    </item>
    <item>
      <title>s3cmd  常见用法</title>
      <link>https://frytea.com/archives/1419/</link>
      <pubDate>Mon, 20 Jan 2025 15:30:24 +0000</pubDate>
      <guid>https://frytea.com/archives/1419/</guid>
      <description>&lt;h2 id=&#34;常见用法&#34;&gt;常见用法&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;列举所有 Buckets&lt;br&gt;
&lt;code&gt;$ s3cmd ls&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;创建 bucket，且 bucket 名称是唯一的，不能重复。&lt;br&gt;
&lt;code&gt;s3cmd mb s3://my-bucket-name&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;删除空 bucket&lt;br&gt;
&lt;code&gt;s3cmd rb s3://my-bucket-name&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;列举 Bucket 中的内容&lt;br&gt;
&lt;code&gt;s3cmd ls s3://my-bucket-name&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;上传 file.txt 到某个 bucket，&lt;br&gt;
&lt;code&gt;s3cmd put file.txt s3://my-bucket-name/file.txt&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;上传并将权限设置为所有人可读&lt;br&gt;
&lt;code&gt;s3cmd put --acl-public file.txt s3://my-bucket-name/file.txt&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;批量上传文件&lt;br&gt;
&lt;code&gt;s3cmd put ./* s3://my-bucket-name/&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;下载文件&lt;br&gt;
&lt;code&gt;s3cmd get s3://my-bucket-name/file.txt file.txt&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;批量下载&lt;br&gt;
&lt;code&gt;s3cmd get s3://my-bucket-name/* ./&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;删除文件&lt;br&gt;
&lt;code&gt;s3cmd del s3://my-bucket-name/file.txt&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;来获得对应的bucket所占用的空间大小&lt;br&gt;
&lt;code&gt;s3cmd du -H s3://my-bucket-name&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;设置S3 bucket的Public权限&lt;br&gt;
&lt;code&gt;s3cmd setacl s3://myexamplebucket.calvium.com/ --acl-public --recursive&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;临时链接&#34;&gt;临时链接&lt;/h2&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;s3cmd signurl s3://example-bucket/image.jpg 1657457538
&lt;/code&gt;&lt;/pre&gt;&lt;ul&gt;
&lt;li&gt;&lt;em&gt;example-bucket&lt;/em&gt; — the name of the bucket that hosts the file,&lt;/li&gt;
&lt;li&gt;&lt;em&gt;image.jpg&lt;/em&gt; — the file you want to share,&lt;/li&gt;
&lt;li&gt;&lt;em&gt;1657457538&lt;/em&gt; — link expiry time in the Timestamp format, use the &lt;a href=&#34;https://epochconverter.com&#34;&gt;converter&lt;/a&gt; to convert time formats.&lt;/li&gt;
&lt;/ul&gt;
&lt;h1 id=&#34;references&#34;&gt;References&lt;/h1&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://gcore.com/docs/storage/manage-object-storage/configure-aws-sli-s3cmd-and-aws-javascript-sdk/generate-temporary-links-to-files-with-aws-cli-and-s3cmd#generate-links-in-s3cmd&#34;&gt;Generate temporary links to files with AWS CLI and S3cmd&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://www.cnblogs.com/sunhongleibibi/p/11661123.html&#34;&gt;s3cmd的使用&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description>
    </item>
    <item>
      <title>跟着 《Hell Yes! CSS!》和 AI 学 CSS</title>
      <link>https://frytea.com/archives/1428/</link>
      <pubDate>Mon, 20 Jan 2025 12:00:00 +0000</pubDate>
      <guid>https://frytea.com/archives/1428/</guid>
      <description>&lt;p&gt;最近发现 &lt;a href=&#34;https://wizardzines.com&#34;&gt;★ wizard zines&lt;/a&gt; 中的这本 《&lt;a href=&#34;https://wizardzines.com/zines/css/&#34;&gt;Hell Yes! CSS!&lt;/a&gt;》 对于理解 CSS 的核心概念特别有用。结合 DeepSeek 的解释，对于理解 CSS 似乎非常有帮助，因此结合原文核心内容和 DeepSeek 的解释汇集为本文。&lt;/p&gt;</description>
    </item>
    <item>
      <title>《赵玉平说职场智慧》</title>
      <link>https://frytea.com/archives/1424/</link>
      <pubDate>Sun, 19 Jan 2025 05:41:16 +0000</pubDate>
      <guid>https://frytea.com/archives/1424/</guid>
      <description>&lt;h1 id=&#34;阅读感悟&#34;&gt;阅读感悟&lt;/h1&gt;
&lt;p&gt;职场道路必经之路，通透一些人间的事情。&lt;/p&gt;
&lt;h2 id=&#34;阅读摘录&#34;&gt;阅读摘录&lt;/h2&gt;
&lt;p&gt;《赵玉平说职场智慧》&lt;/p&gt;
&lt;p&gt;赵玉平
137个笔记&lt;/p&gt;
&lt;p&gt;第一章 好领导要送公明——宋江的团队领导策略&lt;/p&gt;
&lt;p&gt;◆ 宋江这个没形象、没背景、没水平的人，凭什么领导了英雄团队？宋江的团队领导策略其实就在他的名字中，宋公明——送、公、明。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Rails 7  已有项目引入 Bootstrap 3</title>
      <link>https://frytea.com/archives/1418/</link>
      <pubDate>Sat, 18 Jan 2025 15:42:59 +0000</pubDate>
      <guid>https://frytea.com/archives/1418/</guid>
      <description>&lt;p&gt;若是新项目，在 Rails 7 之后直接使用 &lt;code&gt;rails new test -j esbuild --css bootstrap&lt;/code&gt; 即可，若是已有项目，使用下面步骤引入：&lt;/p&gt;
&lt;h1 id=&#34;主要步骤&#34;&gt;主要步骤&lt;/h1&gt;
&lt;h2 id=&#34;安装-cssbundling-rails-管理-css&#34;&gt;安装 &lt;code&gt;cssbundling-rails&lt;/code&gt; 管理 CSS&lt;/h2&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;bundle add cssbundling-rails
./bin/rails css:install:bootstrap
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;做了以下几件事情：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;它会创建 &lt;code&gt;builds&lt;/code&gt; 文件夹，并在清单文件中链接它&lt;/li&gt;
&lt;li&gt;它会删除 &lt;code&gt;application.css&lt;/code&gt; 文件，因为它会生成自己的文件。&lt;/li&gt;
&lt;li&gt;它添加了一个 &lt;code&gt;package.json&lt;/code&gt; 文件来存储 Javascript 依赖项。&lt;/li&gt;
&lt;li&gt;它会安装 &lt;code&gt;foreman&lt;/code&gt; gem，并为其生成一个配置文件。&lt;/li&gt;
&lt;li&gt;它添加了一个 &lt;code&gt;bin/dev&lt;/code&gt; 脚本来启动 rails 服务器，并监视 CSS 文件的任何更改。&lt;/li&gt;
&lt;li&gt;它会创建特定于 Bootstrap 的 &lt;code&gt;scss&lt;/code&gt; 文件，该文件将被捆绑到一个 &lt;code&gt;application.css&lt;/code&gt; 文件中。&lt;/li&gt;
&lt;li&gt;它将安装 &lt;code&gt;package.json&lt;/code&gt; 文件中列出的所有 Javascript 依赖项。&lt;/li&gt;
&lt;li&gt;它将 Bootstrap 字体路径附加到 assets 路径。&lt;/li&gt;
&lt;li&gt;它将 Bootstrap Javascript 导入添加到 &lt;code&gt;application.js&lt;/code&gt; 文件中。&lt;/li&gt;
&lt;li&gt;最后，它配置 &lt;code&gt;build：css&lt;/code&gt; 命令并运行它来构建 &lt;code&gt;application.css&lt;/code&gt; 文件。&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;安装-jsbundling-rails-处理-js-绑定&#34;&gt;安装 &lt;code&gt;jsbundling-rails&lt;/code&gt; 处理 JS 绑定&lt;/h2&gt;
&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;&#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;bundle add jsbundling-rails
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;./bin/rails javascript:install:esbuild
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;上述脚本做了这些事情：&lt;/p&gt;</description>
    </item>
    <item>
      <title>Ruby 多版本管理工具 rbenv</title>
      <link>https://frytea.com/archives/1420/</link>
      <pubDate>Thu, 09 Jan 2025 09:55:44 +0000</pubDate>
      <guid>https://frytea.com/archives/1420/</guid>
      <description>&lt;p&gt;&lt;a href=&#34;https://github.com/rbenv/rbenv&#34;&gt;rbenv&lt;/a&gt; （Simple Ruby Version Management） 允许您在 Ruby 的多个版本之间轻松切换。它简单、不引人注目，并遵循 UNIX 的传统，即只做一件事的单一用途工具。&lt;/p&gt;
&lt;h2 id=&#34;安装方法&#34;&gt;安装方法&lt;/h2&gt;
&lt;h2 id=&#34;安装-rbenv&#34;&gt;安装 &lt;code&gt;rbenv&lt;/code&gt;&lt;/h2&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;# Archlinux
sudo pacman -S rbenv
# macOS
brew install rbenv
# Debian/Ubuntu
sudo apt install rbenv
# Fedora/RHEL
sudo dnf install rbenv
&lt;/code&gt;&lt;/pre&gt;&lt;h2 id=&#34;安装--ruby-build&#34;&gt;安装  &lt;code&gt;ruby-build&lt;/code&gt;&lt;/h2&gt;
&lt;p&gt;使用 rbenv 安装 ruby 版本需要用到 &lt;code&gt;install&lt;/code&gt; 命令，但是该 &lt;code&gt;rbenv install&lt;/code&gt; 命令不是开箱即用的 rbenv 提供的，而是由 ruby-build 插件提供的，下面一同安装：&lt;/p&gt;</description>
    </item>
    <item>
      <title>使用 GCOP AI 助力提升 git commit 效率</title>
      <link>https://frytea.com/archives/1423/</link>
      <pubDate>Sat, 04 Jan 2025 01:54:12 +0000</pubDate>
      <guid>https://frytea.com/archives/1423/</guid>
      <description>&lt;p&gt;最近在 &lt;a href=&#34;https://www.ruanyifeng.com/blog/2024/12/weekly-issue-331.html&#34;&gt;阮老师博客&lt;/a&gt; 看到一款这个 &lt;a href=&#34;https://gcop.zeeland.top&#34;&gt;GCOP&lt;/a&gt;，一个基于 LLM 的 Git 提交消息生成和 Git 工作流程优化工具，试用了一下确实不错。接入 LLM 即可自动分析 git 修改生成 commit 消息，比我之前做的 git-commit 生成器好用多了。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Linux buffer-cache 占用过高性能调整</title>
      <link>https://frytea.com/archives/1411/</link>
      <pubDate>Sat, 04 Jan 2025 01:39:00 +0000</pubDate>
      <guid>https://frytea.com/archives/1411/</guid>
      <description>&lt;h1 id=&#34;什么是-buffcache&#34;&gt;什么是 buff/cache？&lt;/h1&gt;
&lt;p&gt;在 &lt;code&gt;Linux 2.4&lt;/code&gt; 的内存管理中，&lt;code&gt;buffer&lt;/code&gt; 指 Linux 内存的：&lt;code&gt;Buffer cache&lt;/code&gt;。&lt;code&gt;cache&lt;/code&gt; 指 Linux 内存中的：&lt;code&gt;Page cache&lt;/code&gt;。一般呢，是这么解释两者的。&lt;/p&gt;</description>
    </item>
    <item>
      <title>VirtualBox VERR_NO_LOW_MEMORY 解决</title>
      <link>https://frytea.com/archives/1412/</link>
      <pubDate>Sat, 04 Jan 2025 01:39:00 +0000</pubDate>
      <guid>https://frytea.com/archives/1412/</guid>
      <description>&lt;p&gt;Archlinux 下内存有很多，但 VB 报错内存不足 VM 无法启动，free 可以看到内存大部分被 buffer 占用。&lt;/p&gt;
&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;&#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;free -h
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;              total        used        free      shared  buff/cache   available  
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;内存：          30Gi        13Gi        1Gi       2.3Gi       18.7Gi        17Gi  
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;交换：          31Gi       1.7Gi        30Gi
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;论坛找到一种强制驱逐 buffer 占用的方法：&lt;/p&gt;</description>
    </item>
    <item>
      <title>GitHub 个人仓库批量备份到自建 Gitea</title>
      <link>https://frytea.com/archives/1417/</link>
      <pubDate>Fri, 03 Jan 2025 10:12:00 +0000</pubDate>
      <guid>https://frytea.com/archives/1417/</guid>
      <description>&lt;p&gt;这是一个自动将 GitHub 仓库镜像到 Gitea 的 Shell 脚本。支持批量同步所有仓库，可以设置跳过特定仓库，并具有良好的错误处理机制。&lt;/p&gt;
&lt;p&gt;由于 GitHub 仓库较多，因为各种原因担心数据风险和访问困难。代码托管在自建 gitea 虽然访问快，但是脱离了生态很难跟其他的 PaaS 平台对接。&lt;/p&gt;</description>
    </item>
    <item>
      <title>支持 helm 的 harbor 版本</title>
      <link>https://frytea.com/archives/1409/</link>
      <pubDate>Mon, 30 Dec 2024 15:54:00 +0000</pubDate>
      <guid>https://frytea.com/archives/1409/</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;Harbor在v1.6版本开始支持Helm Chart仓库功能，- 从v2.6.0 开始弃用Chartmuseum，并在v2.8.0中开始删除。更多详情，请参阅讨论：https://github.com/goharbor/harbor/discussions/15057 从 v2.6.0 开始弃用 Notary（签名者和服务器），并在 v2.8.0 中开始删除。更多详情，请参阅讨论：https://github.com/goharbor/harbor/discussions/16612&lt;/p&gt;</description>
    </item>
    <item>
      <title>配置 harbor 及 docker 等使用 https</title>
      <link>https://frytea.com/archives/1408/</link>
      <pubDate>Mon, 30 Dec 2024 15:53:59 +0000</pubDate>
      <guid>https://frytea.com/archives/1408/</guid>
      <description>&lt;p&gt;默认情况下，Harbor不提供证书。可以在没有安全性的情况下部署Harbor，这样您就可以通过HTTP连接到它。但是，只有在没有连接到外部internet的空间隙测试或开发环境中才可以使用HTTP。在没有空间隙的环境中使用HTTP会暴露给中间人攻击。在生产环境中，始终使用HTTPS。如果启用带公证人的内容信任对所有images进行正确签名，则必须使用HTTPS。&lt;/p&gt;</description>
    </item>
    <item>
      <title>[转] 编程十年的感悟</title>
      <link>https://frytea.com/archives/1415/</link>
      <pubDate>Fri, 27 Dec 2024 10:29:00 +0000</pubDate>
      <guid>https://frytea.com/archives/1415/</guid>
      <description>&lt;h2 id=&#34;前言&#34;&gt;前言&lt;/h2&gt;
&lt;p&gt;马尔科姆·格拉德威尔的“一万小时定律”指出，持续投入一万小时的努力，足以使人在某个领域达到专家水平。
按照每周20小时的练习量计算，每天大约需要投入3小时，十年左右才能达成这一目标。&lt;/p&gt;</description>
    </item>
    <item>
      <title>【Ai Agent】智能体实验之城市天气画报</title>
      <link>https://frytea.com/archives/1416/</link>
      <pubDate>Fri, 27 Dec 2024 10:19:00 +0000</pubDate>
      <guid>https://frytea.com/archives/1416/</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;计划进行一系列 AI Agent 实验，欢迎交流。&lt;/p&gt;&lt;/blockquote&gt;
&lt;h2 id=&#34;相关信息&#34;&gt;相关信息&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;平台: 自建 &lt;a href=&#34;https://dify.ai/&#34;&gt;Dify&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;类型：AI Agent&lt;/li&gt;
&lt;li&gt;使用LLM：
&lt;ul&gt;
&lt;li&gt;gpt-4o-mini&lt;/li&gt;
&lt;li&gt;Dall-e 3&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;参考：&lt;a href=&#34;https://www.coze.cn&#34;&gt;扣子&lt;/a&gt; 的城市天气画报模板。&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;dsl&#34;&gt;DSL&lt;/h2&gt;
&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;&#34;&gt;&lt;code class=&#34;language-yaml&#34; data-lang=&#34;yaml&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;app&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;description&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;icon&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;🤖&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;icon_background&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;#FFEAD5&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;mode&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;agent-chat&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;name&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;城市天气画报&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;use_icon_as_answer_icon&lt;/span&gt;: &lt;span style=&#34;color:#66d9ef&#34;&gt;false&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;kind&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;app&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;model_config&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;agent_mode&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;enabled&lt;/span&gt;: &lt;span style=&#34;color:#66d9ef&#34;&gt;true&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;max_iteration&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;5&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;prompt&lt;/span&gt;: &lt;span style=&#34;color:#66d9ef&#34;&gt;null&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;strategy&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;function_call&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;tools&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    - &lt;span style=&#34;color:#f92672&#34;&gt;enabled&lt;/span&gt;: &lt;span style=&#34;color:#66d9ef&#34;&gt;true&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;provider_id&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;gaode&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;provider_name&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;gaode&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;provider_type&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;builtin&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;tool_label&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;天气预报&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;tool_name&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;gaode_weather&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;tool_parameters&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#f92672&#34;&gt;city&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    - &lt;span style=&#34;color:#f92672&#34;&gt;enabled&lt;/span&gt;: &lt;span style=&#34;color:#66d9ef&#34;&gt;true&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;provider_id&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;dalle&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;provider_name&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;dalle&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;provider_type&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;builtin&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;tool_label&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;DALL-E 3 绘画&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;tool_name&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;dalle3&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;tool_parameters&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#f92672&#34;&gt;n&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#f92672&#34;&gt;prompt&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#f92672&#34;&gt;quality&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#f92672&#34;&gt;size&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#f92672&#34;&gt;style&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;annotation_reply&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;enabled&lt;/span&gt;: &lt;span style=&#34;color:#66d9ef&#34;&gt;false&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;chat_prompt_config&lt;/span&gt;: {}
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;completion_prompt_config&lt;/span&gt;: {}
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;dataset_configs&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;datasets&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;datasets&lt;/span&gt;: []
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;reranking_enable&lt;/span&gt;: &lt;span style=&#34;color:#66d9ef&#34;&gt;true&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;retrieval_model&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;multiple&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;top_k&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;4&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;dataset_query_variable&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;external_data_tools&lt;/span&gt;: []
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;file_upload&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;allowed_file_extensions&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    - &lt;span style=&#34;color:#ae81ff&#34;&gt;.JPG&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    - &lt;span style=&#34;color:#ae81ff&#34;&gt;.JPEG&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    - &lt;span style=&#34;color:#ae81ff&#34;&gt;.PNG&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    - &lt;span style=&#34;color:#ae81ff&#34;&gt;.GIF&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    - &lt;span style=&#34;color:#ae81ff&#34;&gt;.WEBP&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    - &lt;span style=&#34;color:#ae81ff&#34;&gt;.SVG&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    - &lt;span style=&#34;color:#ae81ff&#34;&gt;.MP4&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    - &lt;span style=&#34;color:#ae81ff&#34;&gt;.MOV&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    - &lt;span style=&#34;color:#ae81ff&#34;&gt;.MPEG&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    - &lt;span style=&#34;color:#ae81ff&#34;&gt;.MPGA&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;allowed_file_types&lt;/span&gt;: []
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;allowed_file_upload_methods&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    - &lt;span style=&#34;color:#ae81ff&#34;&gt;remote_url&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    - &lt;span style=&#34;color:#ae81ff&#34;&gt;local_file&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;enabled&lt;/span&gt;: &lt;span style=&#34;color:#66d9ef&#34;&gt;false&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;image&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;detail&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;high&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;enabled&lt;/span&gt;: &lt;span style=&#34;color:#66d9ef&#34;&gt;false&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;number_limits&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;3&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;transfer_methods&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      - &lt;span style=&#34;color:#ae81ff&#34;&gt;remote_url&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      - &lt;span style=&#34;color:#ae81ff&#34;&gt;local_file&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;number_limits&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;3&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;model&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;completion_params&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;stop&lt;/span&gt;: []
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;mode&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;chat&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;name&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;gpt-4o-mini&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;provider&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;openai&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;more_like_this&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;enabled&lt;/span&gt;: &lt;span style=&#34;color:#66d9ef&#34;&gt;false&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;opening_statement&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;回复 1 开始创作今日城市天气画报。&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;pre_prompt&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;查找城市 {{city}} 今天的天气情况，生成一段简单的话描述这个场景，提供给 dalle 绘制一幅图片。
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;    &amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;prompt_type&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;simple&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;retriever_resource&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;enabled&lt;/span&gt;: &lt;span style=&#34;color:#66d9ef&#34;&gt;true&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;sensitive_word_avoidance&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;configs&lt;/span&gt;: []
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;enabled&lt;/span&gt;: &lt;span style=&#34;color:#66d9ef&#34;&gt;false&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;type&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;speech_to_text&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;enabled&lt;/span&gt;: &lt;span style=&#34;color:#66d9ef&#34;&gt;false&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;suggested_questions&lt;/span&gt;: []
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;suggested_questions_after_answer&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;enabled&lt;/span&gt;: &lt;span style=&#34;color:#66d9ef&#34;&gt;false&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;text_to_speech&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;enabled&lt;/span&gt;: &lt;span style=&#34;color:#66d9ef&#34;&gt;false&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;language&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;voice&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;user_input_form&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  - &lt;span style=&#34;color:#f92672&#34;&gt;text-input&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;default&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;label&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;城市&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;max_length&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;48&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;required&lt;/span&gt;: &lt;span style=&#34;color:#66d9ef&#34;&gt;true&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;variable&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;city&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;version&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;0.1.5&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;效果展示&#34;&gt;效果展示&lt;/h2&gt;
&lt;p&gt;界面：&lt;/p&gt;</description>
    </item>
    <item>
      <title>收藏一个上古软件，在 Linux 终端上使用行编辑器 ed</title>
      <link>https://frytea.com/archives/1407/</link>
      <pubDate>Tue, 24 Dec 2024 11:23:18 +0000</pubDate>
      <guid>https://frytea.com/archives/1407/</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;这个看似简单的编辑器为用户提供了许多易于学习和使用的命令。
这款产生自资源极其有限时期的产物，似乎还很有助于理解 &lt;code&gt;vi/vim&lt;/code&gt; 和 &lt;code&gt;emacs&lt;/code&gt; 的一些设计。&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;GNU &lt;code&gt;ed&lt;/code&gt; 命令是一个行编辑器。它被认为是标准的 Unix 文本编辑器，因为它是首个出现在 Unix 的文本编辑器，并且它曾经无处不在，你在任何一个 POSIX 系统中都能找到它（通常来说，你现在也可以）。在某种程度上，你可以很容易看出来它是第一个文本编辑器，因为它在许多方面的功能都十分基础。和其他大多数的文本编辑器不同，它不会打开一个属于自己的窗口或显示区域，事实上，在默认情况下，它甚至不会提示用户输入文字。从另一个方面来说，它在交互功能上的缺失也可以成为一个优点。它是一个多功能的编辑器，你可以用简短的命令控制它，无论是在交互式的命令行中，还是在编写的 shell 脚本里。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Buildah 简明教程：让镜像构建更轻量，告别 Docker 依赖</title>
      <link>https://frytea.com/archives/1403/</link>
      <pubDate>Tue, 24 Dec 2024 11:23:04 +0000</pubDate>
      <guid>https://frytea.com/archives/1403/</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;来源：&lt;a href=&#34;https://www.lixueduan.com/posts/cloudnative/03-buildah/&#34;&gt;Buildah 简明教程：让镜像构建更轻量，告别 Docker 依赖&lt;/a&gt;&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;Buildah 是一个专注于构建 OCI 镜像的工具，Buildah CLI 工具使用底层 OCI 技术实现（例如 containers/image&lt;sup id=&#34;fnref:1&#34;&gt;&lt;a href=&#34;#fn:1&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;1&lt;/a&gt;&lt;/sup&gt; 和 containers/storage&lt;sup id=&#34;fnref:2&#34;&gt;&lt;a href=&#34;#fn:2&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;2&lt;/a&gt;&lt;/sup&gt;)。&lt;/p&gt;
&lt;p&gt;OCI 三剑客包括：&lt;/p&gt;</description>
    </item>
    <item>
      <title>2025年Gartner十大战略性技术趋势</title>
      <link>https://frytea.com/archives/1414/</link>
      <pubDate>Mon, 23 Dec 2024 16:17:44 +0000</pubDate>
      <guid>https://frytea.com/archives/1414/</guid>
      <description>&lt;p&gt;Gartner研究副总裁&lt;a href=&#34;https://www.gartner.com/cn/experts/arnold-gao&#34;&gt;高挺（Arnold Gao）&lt;/a&gt;表示：“今年的重要战略技术趋势涵盖了AI的必要事项和风险，以及计算技术和人机协同等前沿趋势。追踪这些趋势将帮助IT领导者以负责任、和合乎道德的创新方式塑造企业机构的未来。”&lt;/p&gt;</description>
    </item>
    <item>
      <title>2024年Gartner十大战略性技术趋势</title>
      <link>https://frytea.com/archives/1413/</link>
      <pubDate>Mon, 23 Dec 2024 16:02:46 +0000</pubDate>
      <guid>https://frytea.com/archives/1413/</guid>
      <description>&lt;h2 id=&#34;这些战略性技术趋势将在未来三年深刻影响企业的商业和技术决策&#34;&gt;这些战略性技术趋势将在未来三年深刻影响企业的商业和技术决策&lt;/h2&gt;
&lt;p&gt;Gartner建议企业评估每个技术趋势的影响和收益,明确哪些创新技术或组合将对企业的成功产生最显著影响。&lt;/p&gt;
&lt;h2 id=&#34;十大技术&#34;&gt;十大技术&lt;/h2&gt;
&lt;h3 id=&#34;1-ai信任风险和安全管理ai-trismai-trust-risk-and-security-management&#34;&gt;1. AI信任、风险和安全管理(AI TRiSM)(AI Trust, Risk and Security Management)&lt;/h3&gt;
&lt;p&gt;AI Trism 指“AI Trust，Risk，Security Management”，是一组关于AI信任、风险、安全管理的架构性趋势，比较简单的说法是“AI治理”。&lt;/p&gt;</description>
    </item>
    <item>
      <title>tmux 加大缓冲区大小</title>
      <link>https://frytea.com/archives/1398/</link>
      <pubDate>Sat, 21 Dec 2024 06:53:29 +0000</pubDate>
      <guid>https://frytea.com/archives/1398/</guid>
      <description>&lt;p&gt;永久配置&lt;/p&gt;
&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;&#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;$ vim ~/.tmux.conf
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;+ set -g history-limit &lt;span style=&#34;color:#ae81ff&#34;&gt;5000&lt;/span&gt;
&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;# 注：默认为2000行，这里设置为5000行&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;动态配置&lt;/p&gt;
&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;&#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;$ tmux set-option history-limit &lt;span style=&#34;color:#ae81ff&#34;&gt;5000&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;$ tmux
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;运行时配置&lt;/p&gt;
&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;&#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;$ tmux
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&amp;lt;C-B&amp;gt; :set-option history-limit &lt;span style=&#34;color:#ae81ff&#34;&gt;5000&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;references&#34;&gt;References&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://www.cnblogs.com/dakewei/p/13156787.html&#34;&gt;tmux如何加大回滚的缓冲区大小？&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description>
    </item>
    <item>
      <title>在Word文档中添加打勾的小方框</title>
      <link>https://frytea.com/archives/1410/</link>
      <pubDate>Sat, 21 Dec 2024 06:53:00 +0000</pubDate>
      <guid>https://frytea.com/archives/1410/</guid>
      <description>&lt;p&gt;用户在做电子调查报告或者填写一些资料表，会遇到一些word文档中有小方框【□】，需要在里面打钩【√】&lt;/p&gt;
&lt;h2 id=&#34;方法&#34;&gt;方法&lt;/h2&gt;
&lt;p&gt;方法一：将光标定位于需要打钩的地方，选择【插入】→【符号】→【其他符号】，在弹出的符号栏里，字体选择【Windings2】，然后便可以找到现成的打钩样式，点击插入，再关闭即可。&lt;/p&gt;</description>
    </item>
    <item>
      <title>推送 helm 到 harbor</title>
      <link>https://frytea.com/archives/1406/</link>
      <pubDate>Fri, 20 Dec 2024 11:00:00 +0000</pubDate>
      <guid>https://frytea.com/archives/1406/</guid>
      <description>&lt;p&gt;大致流程如下：&lt;/p&gt;
&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;&#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;helm repo add harbor https://myharbor.mydomain.com/chartrepo/myproject --username myusername --password mypassword
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;helm plugin install https://github.com/chartmuseum/helm-push
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;helm repo add chartmuseum http://localhost:8080
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;helm cm-push mychart/ chartmuseum
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;references&#34;&gt;References&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://github.com/chartmuseum/helm-push&#34;&gt;helm cm-push plugin&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://www.cnblogs.com/liabio/p/16915672.html&#34;&gt;使用 Helm Cli 将 chart 推送到 Harbor&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://blog.shabby.in/create-your-helm-chart-3/&#34;&gt;helm入门指南（三）- Chart语法&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description>
    </item>
    <item>
      <title>自托管 AIGC UI APP 汇总</title>
      <link>https://frytea.com/archives/1405/</link>
      <pubDate>Fri, 20 Dec 2024 04:16:00 +0000</pubDate>
      <guid>https://frytea.com/archives/1405/</guid>
      <description>&lt;p&gt;该清单搜集人类创造的最先进最好用的开源 AIGC APP 方案，包括但不限于对话、识图、生图、TTS、知识库、多模态、工作流编排，主要搜集支持自托管，可容器化部署的方案。&lt;/p&gt;</description>
    </item>
    <item>
      <title>深度解析根技术、根产业及发展格局</title>
      <link>https://frytea.com/archives/1404/</link>
      <pubDate>Thu, 19 Dec 2024 10:20:07 +0000</pubDate>
      <guid>https://frytea.com/archives/1404/</guid>
      <description>&lt;p&gt;根技术是指那些能够催生和支撑一系列衍生技术的基础性技术,它们在科技发展中起着关键的作用。了解根技术的基本概念对于把握技术发展趋势和方向具有重要意义。&lt;/p&gt;</description>
    </item>
    <item>
      <title>使用脚本镜像 helm charts 仓库</title>
      <link>https://frytea.com/archives/1402/</link>
      <pubDate>Wed, 18 Dec 2024 10:19:00 +0000</pubDate>
      <guid>https://frytea.com/archives/1402/</guid>
      <description>&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;&#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;#!/bin/bash  
&lt;/span&gt;&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;&lt;/span&gt;  
&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;# 源 Harbor 配置  &lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;SOURCE_HARBOR&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;harbor.xxx.com&amp;#34;&lt;/span&gt;  
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;SOURCE_PROJECT&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;xx-xxx&amp;#34;&lt;/span&gt;  
&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;#SOURCE_PROJECT=&amp;#34;xxx&amp;#34;  &lt;/span&gt;
&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;#SOURCE_USER=&amp;#34;username&amp;#34;  &lt;/span&gt;
&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;#SOURCE_PASS=&amp;#34;password&amp;#34;  &lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  
&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;# 目标 Harbor 配置  &lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;DEST_HARBOR&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;192.168.25.8:10443&amp;#34;&lt;/span&gt;  
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;DEST_PROJECT&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;xxx-xxx&amp;#34;&lt;/span&gt;  
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;DEST_USER&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;admin&amp;#34;&lt;/span&gt;  
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;DEST_PASS&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;xxx@xxx&amp;#34;&lt;/span&gt;  
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;DEST_CA_FILE&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;/etc/docker/certs.d/192.168.25.8:10443/ca.crt&amp;#34;&lt;/span&gt;  
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  
&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;# 添加源和目标 Harbor 仓库/  &lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;helm repo remove source-repo &lt;span style=&#34;color:#f92672&#34;&gt;||&lt;/span&gt; true  
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;helm repo remove dest-repo &lt;span style=&#34;color:#f92672&#34;&gt;||&lt;/span&gt; true  
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;helm repo add source-repo https://$SOURCE_HARBOR/chartrepo/$SOURCE_PROJECT &lt;span style=&#34;color:#75715e&#34;&gt;#--username $SOURCE_USER --password $SOURCE_PASS  &lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;helm repo add dest-repo https://$DEST_HARBOR/chartrepo/$DEST_PROJECT --username $DEST_USER --password $DEST_PASS --ca-file $DEST_CA_FILE  
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  
&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;# 更新 repo  &lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;helm repo update  
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  
&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;# 获取所有 charts  &lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;charts&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;$(&lt;/span&gt;helm search repo source-repo/ -o json | jq -r &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;.[].name&amp;#39;&lt;/span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;)&lt;/span&gt;  
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  
&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;# 遍历并同步每个 chart  &lt;/span&gt;
&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;for&lt;/span&gt; chart in $charts  
&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;do&lt;/span&gt;  
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;   echo &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;sync with [&lt;/span&gt;$chart&lt;span style=&#34;color:#e6db74&#34;&gt;]&amp;#34;&lt;/span&gt;  
&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;# 获取所有版本t  &lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;   versions&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;$(&lt;/span&gt;helm search repo $chart -l -o json | jq -r &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;.[].version&amp;#39;&lt;/span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;)&lt;/span&gt;  
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;   chart_name&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;${&lt;/span&gt;chart#source-repo/&lt;span style=&#34;color:#e6db74&#34;&gt;}&lt;/span&gt;  
&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;# 遍历每个版本c  &lt;/span&gt;
&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;for&lt;/span&gt; version in $versions  
&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;do&lt;/span&gt;  
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;       echo &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;sync with [&lt;/span&gt;$chart&lt;span style=&#34;color:#e6db74&#34;&gt;] [&lt;/span&gt;$version&lt;span style=&#34;color:#e6db74&#34;&gt;]&amp;#34;&lt;/span&gt;  
&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;# 下载特定版本的 chart  &lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;       helm pull $chart --version $version  
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  
&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;# 推送到目标仓库t  &lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;       helm cm-push &lt;span style=&#34;color:#e6db74&#34;&gt;${&lt;/span&gt;chart_name&lt;span style=&#34;color:#e6db74&#34;&gt;}&lt;/span&gt;-&lt;span style=&#34;color:#e6db74&#34;&gt;${&lt;/span&gt;version&lt;span style=&#34;color:#e6db74&#34;&gt;}&lt;/span&gt;.tgz dest-repo --ca-file $DEST_CA_FILE  
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  
&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;# 清理下载的文件c  &lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;       rm &lt;span style=&#34;color:#e6db74&#34;&gt;${&lt;/span&gt;chart_name&lt;span style=&#34;color:#e6db74&#34;&gt;}&lt;/span&gt;-&lt;span style=&#34;color:#e6db74&#34;&gt;${&lt;/span&gt;version&lt;span style=&#34;color:#e6db74&#34;&gt;}&lt;/span&gt;.tgz  
&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;done&lt;/span&gt;  
&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;done&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description>
    </item>
    <item>
      <title>Delve 调试 GO 程序</title>
      <link>https://frytea.com/archives/1397/</link>
      <pubDate>Wed, 18 Dec 2024 10:17:17 +0000</pubDate>
      <guid>https://frytea.com/archives/1397/</guid>
      <description>&lt;p&gt;目前 Go 语言支持 GDB、LLDB 和 Delve 几种调试器。其中 GDB 是最早支持的调试工具，LLDB 是 macOS 系统推荐的标准调试工具。但是 GDB 和 LLDB 对 Go 语言的专有特性都缺乏很大支持，而只有 Delve 是专门为 Go 语言设计开发的调试工具。而且 Delve 本身也是采用 Go 语言开发，对 Windows 平台也提供了一样的支持。本节我们基于 Delve 简单解释如何调试 Go 汇编程序。&lt;/p&gt;</description>
    </item>
    <item>
      <title>以沙箱的方式运行容器-安全容器Kata Containers</title>
      <link>https://frytea.com/archives/1393/</link>
      <pubDate>Wed, 18 Dec 2024 10:17:08 +0000</pubDate>
      <guid>https://frytea.com/archives/1393/</guid>
      <description>&lt;h1 id=&#34;一系统环境&#34;&gt;一.系统环境&lt;/h1&gt;
&lt;p&gt;本文主要基于Kubernetes1.22.2和Linux操作系统Ubuntu 18.04。&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;服务器版本&lt;/th&gt;
          &lt;th&gt;docker软件版本&lt;/th&gt;
          &lt;th&gt;Kubernetes(k8s)集群版本&lt;/th&gt;
          &lt;th&gt;Kata软件版本&lt;/th&gt;
          &lt;th&gt;containerd软件版本&lt;/th&gt;
          &lt;th&gt;CPU架构&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;Ubuntu 18.04.5 LTS&lt;/td&gt;
          &lt;td&gt;Docker version 20.10.14&lt;/td&gt;
          &lt;td&gt;v1.22.2&lt;/td&gt;
          &lt;td&gt;1.11.5&lt;/td&gt;
          &lt;td&gt;1.6.4&lt;/td&gt;
          &lt;td&gt;x86_64&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;Kubernetes集群架构：k8scludes1作为master节点，k8scludes2，k8scludes3作为worker节点。&lt;/p&gt;</description>
    </item>
    <item>
      <title>快速清理 docker 容器和镜像等资源</title>
      <link>https://frytea.com/archives/1392/</link>
      <pubDate>Sat, 14 Dec 2024 14:59:47 +0000</pubDate>
      <guid>https://frytea.com/archives/1392/</guid>
      <description>&lt;p&gt;这些命令总是记不住，或者说不用心去记，所以记录在本文中，以便将来查询。&lt;/p&gt;
&lt;h2 id=&#34;列出所有的容器-id&#34;&gt;列出所有的容器 ID&lt;/h2&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;docker ps -aq
&lt;/code&gt;&lt;/pre&gt;&lt;h2 id=&#34;停止所有的容器&#34;&gt;停止所有的容器&lt;/h2&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;docker stop $(docker ps -aq)
&lt;/code&gt;&lt;/pre&gt;&lt;h2 id=&#34;删除所有的容器&#34;&gt;删除所有的容器&lt;/h2&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;docker rm $(docker ps -aq)
&lt;/code&gt;&lt;/pre&gt;&lt;h2 id=&#34;删除所有的镜像&#34;&gt;删除所有的镜像&lt;/h2&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;docker rmi $(docker images -q)
&lt;/code&gt;&lt;/pre&gt;&lt;h2 id=&#34;复制文件&#34;&gt;复制文件&lt;/h2&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;docker cp mycontainer:/opt/file.txt /opt/local/
docker cp /opt/local/file.txt mycontainer:/opt/
&lt;/code&gt;&lt;/pre&gt;&lt;h2 id=&#34;删除所有不使用的镜像&#34;&gt;删除所有不使用的镜像&lt;/h2&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;docker image prune --force --all
docker image prune -f -a
&lt;/code&gt;&lt;/pre&gt;&lt;h2 id=&#34;删除所有停止的容器&#34;&gt;删除所有停止的容器&lt;/h2&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;docker container prune -f
&lt;/code&gt;&lt;/pre&gt;&lt;h2 id=&#34;清理资源&#34;&gt;清理资源&lt;/h2&gt;
&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;&#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;# 删除未使用的数据&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;docker system prune
&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;# 清理所有未使用的镜像&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;docker system prune -a
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;references&#34;&gt;References&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://colobu.com/2018/05/15/Stop-and-remove-all-docker-containers-and-images/&#34;&gt;停止、删除所有的docker容器和镜像&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description>
    </item>
    <item>
      <title>HA 可用性表格</title>
      <link>https://frytea.com/archives/1401/</link>
      <pubDate>Sat, 14 Dec 2024 14:59:30 +0000</pubDate>
      <guid>https://frytea.com/archives/1401/</guid>
      <description>&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;Availability %&lt;/th&gt;
          &lt;th&gt;Downtime per year&lt;/th&gt;
          &lt;th&gt;Downtime per quarter&lt;/th&gt;
          &lt;th&gt;Downtime per month&lt;/th&gt;
          &lt;th&gt;Downtime per week&lt;/th&gt;
          &lt;th&gt;Downtime per day (24 hours)&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;90% (&amp;ldquo;one nine&amp;rdquo;)&lt;/td&gt;
          &lt;td&gt;36.53 days&lt;/td&gt;
          &lt;td&gt;9.13 days&lt;/td&gt;
          &lt;td&gt;73.05 hours&lt;/td&gt;
          &lt;td&gt;16.80 hours&lt;/td&gt;
          &lt;td&gt;2.40 hours&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;95% (&amp;ldquo;one nine five&amp;rdquo;)&lt;/td&gt;
          &lt;td&gt;18.26 days&lt;/td&gt;
          &lt;td&gt;4.56 days&lt;/td&gt;
          &lt;td&gt;36.53 hours&lt;/td&gt;
          &lt;td&gt;8.40 hours&lt;/td&gt;
          &lt;td&gt;1.20 hours&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;97% (&amp;ldquo;one nine seven&amp;rdquo;)&lt;/td&gt;
          &lt;td&gt;10.96 days&lt;/td&gt;
          &lt;td&gt;2.74 days&lt;/td&gt;
          &lt;td&gt;21.92 hours&lt;/td&gt;
          &lt;td&gt;5.04 hours&lt;/td&gt;
          &lt;td&gt;43.20 minutes&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;98% (&amp;ldquo;one nine eight&amp;rdquo;)&lt;/td&gt;
          &lt;td&gt;7.31 days&lt;/td&gt;
          &lt;td&gt;43.86 hours&lt;/td&gt;
          &lt;td&gt;14.61 hours&lt;/td&gt;
          &lt;td&gt;3.36 hours&lt;/td&gt;
          &lt;td&gt;28.80 minutes&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;99% (&amp;ldquo;two nines&amp;rdquo;)&lt;/td&gt;
          &lt;td&gt;3.65 days&lt;/td&gt;
          &lt;td&gt;21.9 hours&lt;/td&gt;
          &lt;td&gt;7.31 hours&lt;/td&gt;
          &lt;td&gt;1.68 hours&lt;/td&gt;
          &lt;td&gt;14.40 minutes&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;99.5% (&amp;ldquo;two nines five&amp;rdquo;)&lt;/td&gt;
          &lt;td&gt;1.83 days&lt;/td&gt;
          &lt;td&gt;10.98 hours&lt;/td&gt;
          &lt;td&gt;3.65 hours&lt;/td&gt;
          &lt;td&gt;50.40 minutes&lt;/td&gt;
          &lt;td&gt;7.20 minutes&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;99.8% (&amp;ldquo;two nines eight&amp;rdquo;)&lt;/td&gt;
          &lt;td&gt;17.53 hours&lt;/td&gt;
          &lt;td&gt;4.38 hours&lt;/td&gt;
          &lt;td&gt;87.66 minutes&lt;/td&gt;
          &lt;td&gt;20.16 minutes&lt;/td&gt;
          &lt;td&gt;2.88 minutes&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;99.9% (&amp;ldquo;three nines&amp;rdquo;)&lt;/td&gt;
          &lt;td&gt;8.77 hours&lt;/td&gt;
          &lt;td&gt;2.19 hours&lt;/td&gt;
          &lt;td&gt;43.83 minutes&lt;/td&gt;
          &lt;td&gt;10.08 minutes&lt;/td&gt;
          &lt;td&gt;1.44 minutes&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;99.95% (&amp;ldquo;three nines five&amp;rdquo;)&lt;/td&gt;
          &lt;td&gt;4.38 hours&lt;/td&gt;
          &lt;td&gt;65.7 minutes&lt;/td&gt;
          &lt;td&gt;21.92 minutes&lt;/td&gt;
          &lt;td&gt;5.04 minutes&lt;/td&gt;
          &lt;td&gt;43.20 seconds&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;99.99% (&amp;ldquo;four nines&amp;rdquo;)&lt;/td&gt;
          &lt;td&gt;52.60 minutes&lt;/td&gt;
          &lt;td&gt;13.15 minutes&lt;/td&gt;
          &lt;td&gt;4.38 minutes&lt;/td&gt;
          &lt;td&gt;1.01 minutes&lt;/td&gt;
          &lt;td&gt;8.64 seconds&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;99.995% (&amp;ldquo;four nines five&amp;rdquo;)&lt;/td&gt;
          &lt;td&gt;26.30 minutes&lt;/td&gt;
          &lt;td&gt;6.57 minutes&lt;/td&gt;
          &lt;td&gt;2.19 minutes&lt;/td&gt;
          &lt;td&gt;30.24 seconds&lt;/td&gt;
          &lt;td&gt;4.32 seconds&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;99.999% (&amp;ldquo;five nines&amp;rdquo;)&lt;/td&gt;
          &lt;td&gt;5.26 minutes&lt;/td&gt;
          &lt;td&gt;1.31 minutes&lt;/td&gt;
          &lt;td&gt;26.30 seconds&lt;/td&gt;
          &lt;td&gt;6.05 seconds&lt;/td&gt;
          &lt;td&gt;864.00 milliseconds&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;99.9999% (&amp;ldquo;six nines&amp;rdquo;)&lt;/td&gt;
          &lt;td&gt;31.56 seconds&lt;/td&gt;
          &lt;td&gt;7.89 seconds&lt;/td&gt;
          &lt;td&gt;2.63 seconds&lt;/td&gt;
          &lt;td&gt;604.80 milliseconds&lt;/td&gt;
          &lt;td&gt;86.40 milliseconds&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;99.99999% (&amp;ldquo;seven nines&amp;rdquo;)&lt;/td&gt;
          &lt;td&gt;3.16 seconds&lt;/td&gt;
          &lt;td&gt;0.79 seconds&lt;/td&gt;
          &lt;td&gt;262.98 milliseconds&lt;/td&gt;
          &lt;td&gt;60.48 milliseconds&lt;/td&gt;
          &lt;td&gt;8.64 milliseconds&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;99.999999% (&amp;ldquo;eight nines&amp;rdquo;)&lt;/td&gt;
          &lt;td&gt;315.58 milliseconds&lt;/td&gt;
          &lt;td&gt;78.89 milliseconds&lt;/td&gt;
          &lt;td&gt;26.30 milliseconds&lt;/td&gt;
          &lt;td&gt;6.05 milliseconds&lt;/td&gt;
          &lt;td&gt;864.00 microseconds&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;99.9999999% (&amp;ldquo;nine nines&amp;rdquo;)&lt;/td&gt;
          &lt;td&gt;31.56 milliseconds&lt;/td&gt;
          &lt;td&gt;7.89 milliseconds&lt;/td&gt;
          &lt;td&gt;2.63 milliseconds&lt;/td&gt;
          &lt;td&gt;604.80 microseconds&lt;/td&gt;
          &lt;td&gt;86.40 microseconds&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;99.99999999% (&amp;ldquo;ten nines&amp;rdquo;)&lt;/td&gt;
          &lt;td&gt;3.16 milliseconds&lt;/td&gt;
          &lt;td&gt;788.40 microseconds&lt;/td&gt;
          &lt;td&gt;262.80 microseconds&lt;/td&gt;
          &lt;td&gt;60.48 microseconds&lt;/td&gt;
          &lt;td&gt;8.64 microseconds&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;99.999999999% (&amp;ldquo;eleven nines&amp;rdquo;)&lt;/td&gt;
          &lt;td&gt;315.58 microseconds&lt;/td&gt;
          &lt;td&gt;78.84 microseconds&lt;/td&gt;
          &lt;td&gt;26.28 microseconds&lt;/td&gt;
          &lt;td&gt;6.05 microseconds&lt;/td&gt;
          &lt;td&gt;864.00 nanoseconds&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;99.9999999999% (&amp;ldquo;twelve nines&amp;rdquo;)&lt;/td&gt;
          &lt;td&gt;31.56 microseconds&lt;/td&gt;
          &lt;td&gt;7.88 microseconds&lt;/td&gt;
          &lt;td&gt;2.63 microseconds&lt;/td&gt;
          &lt;td&gt;604.81 nanoseconds&lt;/td&gt;
          &lt;td&gt;86.40 nanoseconds&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id=&#34;references&#34;&gt;References&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://en.wikipedia.org/wiki/High_availability&#34;&gt;High availability - Wikipedia&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description>
    </item>
    <item>
      <title>Linux SWAP 占用情况排查 - smem</title>
      <link>https://frytea.com/archives/1399/</link>
      <pubDate>Fri, 13 Dec 2024 10:52:08 +0000</pubDate>
      <guid>https://frytea.com/archives/1399/</guid>
      <description>&lt;p&gt;最近发现 ArchLinux 的 32G 内存经常出现 OOM，分配 SWAP 后分多少就占多少，很奇怪，就想办法排查一下，找到了 &lt;code&gt;smem&lt;/code&gt;.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;smem 是一款能提供大量 Linux 系统内存使用报告的工具。与现有工具不同，smem 可以报告比例集大小 (PSS)，这对虚拟内存系统中库和应用程序使用的内存量来说更有意义。
&amp;ndash; &lt;a href=&#34;https://www.selenic.com/smem/&#34;&gt;smem memory reporting tool&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>毫秒到秒以及更多关于时间尺度</title>
      <link>https://frytea.com/archives/1400/</link>
      <pubDate>Fri, 13 Dec 2024 10:39:00 +0000</pubDate>
      <guid>https://frytea.com/archives/1400/</guid>
      <description>&lt;h1 id=&#34;秒&#34;&gt;秒&lt;/h1&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;&lt;strong&gt;fractions of a second&lt;/strong&gt;&lt;/th&gt;
          &lt;th&gt;&lt;strong&gt;metric name&lt;/strong&gt;&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;0,000 000 000 000 000 000 000 001&lt;/td&gt;
          &lt;td&gt;yoctosecond [ ys ]&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;0,000 000 000 000 000 000 001&lt;/td&gt;
          &lt;td&gt;zeptosecond [ zs ]&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;0,000 000 000 000 000 001&lt;/td&gt;
          &lt;td&gt;attosecond [ as ]&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;0,000 000 000 000 001&lt;/td&gt;
          &lt;td&gt;femtosecond [ fs ]&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;0,000 000 000 001 [ trillionth ]&lt;/td&gt;
          &lt;td&gt;picosecond [ ps ]&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;0,000 000 001 [ billionth ]&lt;/td&gt;
          &lt;td&gt;nanosecond [ ns ]&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;0,000 001 [ millionth ]&lt;/td&gt;
          &lt;td&gt;microsecond [ _µ_s ]&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;0,001 [ thousandth ]&lt;/td&gt;
          &lt;td&gt;millisecond [ ms ]&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;0.01 [ hundredth ]&lt;/td&gt;
          &lt;td&gt;centisecond [ cs ]&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;1.0&lt;/td&gt;
          &lt;td&gt;second [ s ]&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;h1 id=&#34;秒到年&#34;&gt;秒到年&lt;/h1&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;&lt;strong&gt;seconds to years&lt;/strong&gt;&lt;/th&gt;
          &lt;th&gt;&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;60 seconds&lt;/td&gt;
          &lt;td&gt;= 1 minute [ mean solar ]&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;59.83617 seconds&lt;/td&gt;
          &lt;td&gt;= 1 minute [ sidereal ]&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;60 minutes&lt;/td&gt;
          &lt;td&gt;= 1 hour&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;24 hours&lt;/td&gt;
          &lt;td&gt;= 1 day&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;3,600 seconds&lt;/td&gt;
          &lt;td&gt;= 1 hour&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;86,400 seconds&lt;/td&gt;
          &lt;td&gt;= 1 day [ mean solar ]&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;86,164.09 seconds&lt;/td&gt;
          &lt;td&gt;= 1 day [ sidereal ]&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;7 days&lt;/td&gt;
          &lt;td&gt;= 1 week&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;168 hours&lt;/td&gt;
          &lt;td&gt;= 1 week&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;14 days&lt;/td&gt;
          &lt;td&gt;= 1 fortnight&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;28, 29, 30 or 31 days&lt;/td&gt;
          &lt;td&gt;= 1 month&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;365 days&lt;/td&gt;
          &lt;td&gt;= 1 year&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;366 days&lt;/td&gt;
          &lt;td&gt;= 1 leap year&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;12 months&lt;/td&gt;
          &lt;td&gt;= 1 year&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;31,536,000 seconds&lt;/td&gt;
          &lt;td&gt;= 1 year [ calendar ]&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;31,558,150 seconds&lt;/td&gt;
          &lt;td&gt;= 1 year [ sidereal ]&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;31,556,930 seconds&lt;/td&gt;
          &lt;td&gt;= 1 year [ tropical ]&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;9,460,550,000,000,000 metres&lt;/td&gt;
          &lt;td&gt;= 1 light year&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;299,792,458 metres per second ( m/s )&lt;/td&gt;
          &lt;td&gt;= speed of light&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;parsec&lt;/td&gt;
          &lt;td&gt;= approx. 3.25 light years&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;h1 id=&#34;周年纪念日&#34;&gt;周年纪念日&lt;/h1&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;&lt;strong&gt;year intervals - anniversaries&lt;/strong&gt;&lt;/th&gt;
          &lt;th&gt;&lt;strong&gt;number of years&lt;/strong&gt;&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;Biennial&lt;/td&gt;
          &lt;td&gt;2&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Triennial&lt;/td&gt;
          &lt;td&gt;3&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Quadrennial&lt;/td&gt;
          &lt;td&gt;4&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Quinquennial&lt;/td&gt;
          &lt;td&gt;5&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Hexennial *&lt;/td&gt;
          &lt;td&gt;6&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Septennial&lt;/td&gt;
          &lt;td&gt;7&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Octennial&lt;/td&gt;
          &lt;td&gt;8&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Novennial&lt;/td&gt;
          &lt;td&gt;9&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Decennial&lt;/td&gt;
          &lt;td&gt;10&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Hendecennial *&lt;/td&gt;
          &lt;td&gt;11&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Duodecennial&lt;/td&gt;
          &lt;td&gt;12&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Tredecennial *&lt;/td&gt;
          &lt;td&gt;13&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Quindecennial&lt;/td&gt;
          &lt;td&gt;15&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Sextodecennial *&lt;/td&gt;
          &lt;td&gt;16&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Septendecennial&lt;/td&gt;
          &lt;td&gt;17&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Vigintennial *&lt;/td&gt;
          &lt;td&gt;20&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Trigentennial *&lt;/td&gt;
          &lt;td&gt;30&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Quadragennial&lt;/td&gt;
          &lt;td&gt;40&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Quinquagenary&lt;/td&gt;
          &lt;td&gt;50&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Sexagennial *&lt;/td&gt;
          &lt;td&gt;60&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Septuagennial *&lt;/td&gt;
          &lt;td&gt;70&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Septuagesiquintennial *&lt;/td&gt;
          &lt;td&gt;75&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Octogintennial *&lt;/td&gt;
          &lt;td&gt;80&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Nonagintennial *&lt;/td&gt;
          &lt;td&gt;90&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Centennial&lt;/td&gt;
          &lt;td&gt;100&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Quasquicentennial&lt;/td&gt;
          &lt;td&gt;125&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Sesquicentennial&lt;/td&gt;
          &lt;td&gt;150&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Terquasquicentennial or Septaquintaquinquecentennial *&lt;/td&gt;
          &lt;td&gt;175&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Bicentennial&lt;/td&gt;
          &lt;td&gt;200&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Quasquibicentennial *&lt;/td&gt;
          &lt;td&gt;225&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Semiquincentennial *&lt;/td&gt;
          &lt;td&gt;250&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Tercentennial&lt;/td&gt;
          &lt;td&gt;300&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Semiseptcentennial *&lt;/td&gt;
          &lt;td&gt;350&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Quatercentenary&lt;/td&gt;
          &lt;td&gt;400&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Quincentennial&lt;/td&gt;
          &lt;td&gt;500&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Sexcentennial *&lt;/td&gt;
          &lt;td&gt;600&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Septcentennial *&lt;/td&gt;
          &lt;td&gt;700&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Octocentennial&lt;/td&gt;
          &lt;td&gt;800&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Millenial&lt;/td&gt;
          &lt;td&gt;1,000&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Quindecimillenial&lt;/td&gt;
          &lt;td&gt;15,000&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id=&#34;references&#34;&gt;References&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://www.simetric.co.uk/si_time.htm&#34;&gt;Time measurements &lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description>
    </item>
    <item>
      <title>linux vps dd windows</title>
      <link>https://frytea.com/archives/1389/</link>
      <pubDate>Fri, 13 Dec 2024 10:25:00 +0000</pubDate>
      <guid>https://frytea.com/archives/1389/</guid>
      <description>&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;curl -O https://raw.githubusercontent.com/bin456789/reinstall/main/reinstall.sh || wget -O reinstall.sh $_

bash reinstall.sh windows \
     --image-name &amp;#39;Windows 11 Enterprise LTSC 2024&amp;#39; \
     --lang zh-cn
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;img alt=&#34;官网 dd windows 效果图&#34; loading=&#34;lazy&#34; src=&#34;https://cdn-imagehost.frytea.com/images/2024/12/09/j3diad.webp&#34;&gt;&lt;/p&gt;
&lt;p&gt;Powered By &lt;a href=&#34;https://github.com/bin456789/reinstall&#34;&gt;一键DD/重装脚本&lt;/a&gt;&lt;/p&gt;
&lt;h2 id=&#34;references&#34;&gt;References&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://github.com/bin456789/reinstall&#34;&gt;bin456789/reinstall&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description>
    </item>
    <item>
      <title>AI Prompt 整理</title>
      <link>https://frytea.com/archives/1396/</link>
      <pubDate>Thu, 12 Dec 2024 10:50:00 +0000</pubDate>
      <guid>https://frytea.com/archives/1396/</guid>
      <description>&lt;h2 id=&#34;prompt-原则&#34;&gt;prompt 原则&lt;/h2&gt;
&lt;p&gt;1、写出清晰而具体的指示，清晰不是指短，而是尽量详细，可采用分隔符避免自己的要求和内容的混淆，分隔符形式不限：&lt;code&gt;“””&lt;/code&gt;, &lt;code&gt;&amp;lt; &amp;gt;&lt;/code&gt;, &lt;code&gt;{}&lt;/code&gt;
2、给模型思考的时间。如果答案不对，可以尝试不断变化提问方式，直到得出想要结果。可以采用简化或分解问题的方式。&lt;/p&gt;</description>
    </item>
    <item>
      <title>dig获取并批量路由IP地址到指定网关</title>
      <link>https://frytea.com/archives/1386/</link>
      <pubDate>Thu, 12 Dec 2024 10:50:00 +0000</pubDate>
      <guid>https://frytea.com/archives/1386/</guid>
      <description>&lt;h2 id=&#34;安装-dig&#34;&gt;安装 dig&lt;/h2&gt;
&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;&#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;# Debian/Ubuntu&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;apt-get install knot-dnsutils
&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;# CentOS/RHEL&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;dnf install bind-utils
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;批量进行&#34;&gt;批量进行&lt;/h2&gt;
&lt;p&gt;下面以 frytea.com 为例，使用 dig 命令获取 frytea.com 的 IP 地址，然后添加路由规则。以下是具体步骤：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;首先使用 dig 获取 IP 地址：&lt;/li&gt;
&lt;/ol&gt;
&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;&#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;dig frytea.com +short
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ol start=&#34;2&#34;&gt;
&lt;li&gt;将获取到的每个 IPv4 地址添加路由规则：&lt;/li&gt;
&lt;/ol&gt;
&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;&#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;# 假设 dig 获取到的 IP 是 1.2.3.4，则运行：&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;ip route add 1.2.3.4/32 via 192.168.25.18
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;如果你想要一个自动化的脚本来完成这个任务，可以使用以下命令：&lt;/p&gt;</description>
    </item>
    <item>
      <title>查看文件所属 RPM 包的方法</title>
      <link>https://frytea.com/archives/1387/</link>
      <pubDate>Wed, 11 Dec 2024 23:20:00 +0000</pubDate>
      <guid>https://frytea.com/archives/1387/</guid>
      <description>&lt;p&gt;在 Linux 系统中，有几种方法可以查看文件属于哪个 RPM 包：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;使用 &lt;code&gt;rpm -qf&lt;/code&gt; 命令：&lt;/li&gt;
&lt;/ol&gt;
&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;&#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;rpm -qf /path/to/file
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;例如：&lt;/p&gt;
&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;&#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;rpm -qf /bin/ls
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ol start=&#34;2&#34;&gt;
&lt;li&gt;使用 &lt;code&gt;dnf provides&lt;/code&gt; 或 &lt;code&gt;yum provides&lt;/code&gt; 命令：&lt;/li&gt;
&lt;/ol&gt;
&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;&#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;dnf provides /path/to/file
&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;# 或&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;yum provides /path/to/file
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;例如：&lt;/p&gt;
&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;&#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;dnf provides /bin/ls
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ol start=&#34;3&#34;&gt;
&lt;li&gt;如果是已安装的包，也可以使用 &lt;code&gt;which&lt;/code&gt; 和 &lt;code&gt;rpm -qf&lt;/code&gt; 组合：&lt;/li&gt;
&lt;/ol&gt;
&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;&#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;rpm -qf &lt;span style=&#34;color:#66d9ef&#34;&gt;$(&lt;/span&gt;which command_name&lt;span style=&#34;color:#66d9ef&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;例如：&lt;/p&gt;</description>
    </item>
    <item>
      <title>Git 覆写上次提交</title>
      <link>https://frytea.com/archives/1385/</link>
      <pubDate>Wed, 11 Dec 2024 23:19:00 +0000</pubDate>
      <guid>https://frytea.com/archives/1385/</guid>
      <description>&lt;h1 id=&#34;前言&#34;&gt;前言&lt;/h1&gt;
&lt;p&gt;在日常使用 Git 版本控制工具的时候，我们有时会遇到需要修改上次&lt;code&gt;commit&lt;/code&gt;提交信息的情况，例如：修改上次提交信息中的错误内容，或者想为上次提交加入些新内容等等。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Linux 网卡多队列配置方法</title>
      <link>https://frytea.com/archives/1395/</link>
      <pubDate>Tue, 10 Dec 2024 10:03:00 +0000</pubDate>
      <guid>https://frytea.com/archives/1395/</guid>
      <description>&lt;p&gt;多队列是指网络接口卡具有在多个发送和接收队列上并行处理网络数据包的能力。在使用网卡多队列时，通常需要配置网络中断亲和性（IRQ Affinity），将不同的队列中断分配给特定的CPU处理，而不是由任意的CPU处理，这有助于减少CPU之间的争用并提高网络性能。本文介绍如何配置Linux系统的网卡多队列的网络中断亲和性和修改网卡多队列数。&lt;/p&gt;</description>
    </item>
    <item>
      <title>使用 GDB 调试 Go 程序</title>
      <link>https://frytea.com/archives/1394/</link>
      <pubDate>Tue, 10 Dec 2024 10:03:00 +0000</pubDate>
      <guid>https://frytea.com/archives/1394/</guid>
      <description>&lt;h2 id=&#34;进入调试&#34;&gt;进入调试&lt;/h2&gt;
&lt;p&gt;使用前，请先确保机器上已经安装 GDB&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;[root@localhost code]# which gdb /usr/bin/gdb
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;准备就绪后，以下列测试程序为例&lt;/p&gt;
&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;&#34;&gt;&lt;code class=&#34;language-go&#34; data-lang=&#34;go&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;package&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;main&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;import&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;fmt&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&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;func&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;main&lt;/span&gt;(){
&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;msg&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;:=&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;hello, world&amp;#34;&lt;/span&gt;
&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;fmt&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;Println&lt;/span&gt;(&lt;span style=&#34;color:#a6e22e&#34;&gt;msg&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;然后执行 如下命令进行编译，里面有好多个参数，有疑问的可以自行搜索引擎&lt;/p&gt;</description>
    </item>
    <item>
      <title>Linux overcommit 及 oom-killer 机制</title>
      <link>https://frytea.com/archives/1388/</link>
      <pubDate>Fri, 06 Dec 2024 10:11:00 +0000</pubDate>
      <guid>https://frytea.com/archives/1388/</guid>
      <description>&lt;p&gt;通常是因为某时刻应用程序大量请求内存导致系统内存不足造成的，这通常会触发 Linux 内核里的 Out of Memory (OOM) killer，OOM killer 会杀掉某个进程(用户态进程，不是内核线程)以腾出内存留给系统用，不致于让系统立刻崩溃。&lt;/p&gt;</description>
    </item>
    <item>
      <title>listmonk 导入 Mailchimp 邮件清单</title>
      <link>https://frytea.com/archives/1379/</link>
      <pubDate>Fri, 06 Dec 2024 10:06:00 +0000</pubDate>
      <guid>https://frytea.com/archives/1379/</guid>
      <description>&lt;p&gt;使用单行 &lt;code&gt;perl&lt;/code&gt; 脚本将 Mailchimp 导出的数据转换为 listmonk 可用的清单。&lt;/p&gt;
&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;&#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;perl -e &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;print qq{email,name,attributes\n};while(&amp;lt;&amp;gt;){ my @r = split /,/; next unless $r[0] =~ /@/; map { s/&amp;#34;//g } @r; my $name = $r[1]; $name .= &amp;#34; $r[2]&amp;#34; if $r[2]; $name ||= &amp;#34;Unknown Name&amp;#34;; print qq{$r[0],&amp;#34;$name&amp;#34;,&amp;#34;{&amp;#34;&amp;#34;mailchimp&amp;#34;&amp;#34;: true}&amp;#34;\n}}&amp;#39;&lt;/span&gt; subscribed_segment_export_xxxxx.csv 
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;references&#34;&gt;References&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://github.com/knadh/listmonk/issues/688&#34;&gt; mailchimp export convertor one-liner #688 &lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description>
    </item>
    <item>
      <title>基于 listmonk 实现 rss to mail</title>
      <link>https://frytea.com/archives/1380/</link>
      <pubDate>Fri, 06 Dec 2024 10:06:00 +0000</pubDate>
      <guid>https://frytea.com/archives/1380/</guid>
      <description>&lt;h2 id=&#34;listmonk-部署&#34;&gt;listmonk 部署&lt;/h2&gt;
&lt;p&gt;安装 &lt;a href=&#34;https://listmonk.app/docs/installation/#docker&#34;&gt;官方教程&lt;/a&gt; 进行即可，大致如下：&lt;/p&gt;
&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;&#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;# Download the compose file to the current directory.&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;curl -LO https://github.com/knadh/listmonk/raw/master/docker-compose.yml
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&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;# Run the services in the background.&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;docker compose up -d
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;rss-to-mail-脚本&#34;&gt;rss to mail 脚本&lt;/h2&gt;
&lt;p&gt;主程序 &lt;code&gt;main.py&lt;/code&gt;&lt;/p&gt;
&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;&#34;&gt;&lt;code class=&#34;language-python&#34; data-lang=&#34;python&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt; 	&lt;span style=&#34;color:#f92672&#34;&gt;import&lt;/span&gt; feedparser
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	&lt;span style=&#34;color:#f92672&#34;&gt;import&lt;/span&gt; requests
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	&lt;span style=&#34;color:#f92672&#34;&gt;import&lt;/span&gt; json
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	&lt;span style=&#34;color:#f92672&#34;&gt;import&lt;/span&gt; os
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	&lt;span style=&#34;color:#f92672&#34;&gt;import&lt;/span&gt; logging
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	&lt;span style=&#34;color:#f92672&#34;&gt;from&lt;/span&gt; time &lt;span style=&#34;color:#f92672&#34;&gt;import&lt;/span&gt; sleep
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	&lt;span style=&#34;color:#f92672&#34;&gt;from&lt;/span&gt; dateutil &lt;span style=&#34;color:#f92672&#34;&gt;import&lt;/span&gt; parser
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	&lt;span style=&#34;color:#f92672&#34;&gt;from&lt;/span&gt; typing &lt;span style=&#34;color:#f92672&#34;&gt;import&lt;/span&gt; List, Dict
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	&lt;span style=&#34;color:#f92672&#34;&gt;import&lt;/span&gt; re
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	
&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;# 配置日志&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	logging&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;basicConfig(
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	    level&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;logging&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;DEBUG,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	    format&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;%(asctime)s&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt; - &lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;%(levelname)s&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt; - &lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;%(message)s&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	    handlers&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;[
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	        logging&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;FileHandler(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;rss_checker.log&amp;#39;&lt;/span&gt;),
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	        logging&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;StreamHandler()
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	    ]
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	logger &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; logging&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;getLogger(__name__)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	RSS_URL &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; os&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;getenv(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;RSS_URL&amp;#39;&lt;/span&gt;, &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;https://xxx.com/feed/&amp;#34;&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	LISTMONK_API_URL &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; os&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;getenv(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;LISTMONK_API_URL&amp;#39;&lt;/span&gt;, &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;https://listmonk.xxx.com/api/campaigns&amp;#34;&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	LISTMONK_TOKEN &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; os&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;getenv(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;LISTMONK_TOKEN&amp;#39;&lt;/span&gt;, &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;bot:xxx&amp;#34;&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	LISTMONK_SEND_LIST_ID &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; int(os&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;getenv(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;LISTMONK_SEND_LIST_ID&amp;#39;&lt;/span&gt;, &lt;span style=&#34;color:#ae81ff&#34;&gt;4&lt;/span&gt;))
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	LISTMONK_SEND_LIST_IDS &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; [LISTMONK_SEND_LIST_ID]
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	
&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;class&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;RSSChecker&lt;/span&gt;:
&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;def&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;__init__&lt;/span&gt;(self):
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	        self&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;rss_url &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; RSS_URL
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	        self&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;listmonk_url &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; LISTMONK_API_URL
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	        self&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;headers &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	            &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;Content-Type&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;application/json&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	            &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;Authorization&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;token&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;+&lt;/span&gt; LISTMONK_TOKEN
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	        }
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	        self&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;max_retries &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;3&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	        self&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;retry_delay &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;# seconds&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	
&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;def&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;clean_html_content&lt;/span&gt;(self, html_content: str) &lt;span style=&#34;color:#f92672&#34;&gt;-&amp;gt;&lt;/span&gt; str:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	        &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&amp;#34;清理HTML内容，移除以http://或https://开头的内容&amp;#34;&amp;#34;&amp;#34;&lt;/span&gt;
&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;try&lt;/span&gt;:
&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;if&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;not&lt;/span&gt; html_content:
&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;return&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	
&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;# 移除以http://或https://开头的内容&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	            cleaned_content &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; re&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;sub(&lt;span style=&#34;color:#e6db74&#34;&gt;r&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;https?://\S+&amp;#39;&lt;/span&gt;, &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;&amp;#39;&lt;/span&gt;, html_content)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	
&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;# 清理多余的空白字符&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	            cleaned_content &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; re&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;sub(&lt;span style=&#34;color:#e6db74&#34;&gt;r&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;\s+&amp;#39;&lt;/span&gt;, &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39; &amp;#39;&lt;/span&gt;, cleaned_content)&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;strip()
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	
&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;return&lt;/span&gt; cleaned_content
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	
&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;except&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;Exception&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;as&lt;/span&gt; e:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	            logger&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;error(&lt;span style=&#34;color:#e6db74&#34;&gt;f&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;清理HTML内容时出错: &lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;{&lt;/span&gt;str(e)&lt;span style=&#34;color:#e6db74&#34;&gt;}&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;)
&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;return&lt;/span&gt; html_content  &lt;span style=&#34;color:#75715e&#34;&gt;# 如果处理失败，返回原始内容&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	
&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;def&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;get_last_check_time&lt;/span&gt;(self) &lt;span style=&#34;color:#f92672&#34;&gt;-&amp;gt;&lt;/span&gt; str:
&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;try&lt;/span&gt;:
&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;with&lt;/span&gt; open(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;last_check.txt&amp;#39;&lt;/span&gt;, &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;r&amp;#39;&lt;/span&gt;) &lt;span style=&#34;color:#66d9ef&#34;&gt;as&lt;/span&gt; f:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	                last_time &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; f&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;read()&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;strip()
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	                logger&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;debug(&lt;span style=&#34;color:#e6db74&#34;&gt;f&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;读取到上次检查时间: &lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;{&lt;/span&gt;last_time&lt;span style=&#34;color:#e6db74&#34;&gt;}&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;)
&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;return&lt;/span&gt; last_time
&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;except&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	            logger&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;warning(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;未找到上次检查时间文件&amp;#34;&lt;/span&gt;)
&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;return&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	
&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;def&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;save_check_time&lt;/span&gt;(self, time: str) &lt;span style=&#34;color:#f92672&#34;&gt;-&amp;gt;&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;None&lt;/span&gt;:
&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;try&lt;/span&gt;:
&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;with&lt;/span&gt; open(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;last_check.txt&amp;#39;&lt;/span&gt;, &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;w&amp;#39;&lt;/span&gt;) &lt;span style=&#34;color:#66d9ef&#34;&gt;as&lt;/span&gt; f:
&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;write(time)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	            logger&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;debug(&lt;span style=&#34;color:#e6db74&#34;&gt;f&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;保存本次检查时间: &lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;{&lt;/span&gt;time&lt;span style=&#34;color:#e6db74&#34;&gt;}&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;)
&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;except&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;Exception&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;as&lt;/span&gt; e:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	            logger&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;error(&lt;span style=&#34;color:#e6db74&#34;&gt;f&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;保存检查时间时出错: &lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;{&lt;/span&gt;str(e)&lt;span style=&#34;color:#e6db74&#34;&gt;}&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	
&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;def&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;create_email_content&lt;/span&gt;(self, entries: List[Dict]) &lt;span style=&#34;color:#f92672&#34;&gt;-&amp;gt;&lt;/span&gt; str:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	        &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&amp;#34;创建美化的HTML邮件内容&amp;#34;&amp;#34;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	        html_content &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;	        &amp;lt;style&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;	            .header {
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;	                text-align: center;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;	                margin-bottom: 40px;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;	                padding: 20px;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;	                background-color: #f8f9fa;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;	                border-radius: 8px;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;	            }
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;	            .main-title {
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;	                font-size: 28px;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;	                color: #2c3e50;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;	                margin-bottom: 10px;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;	            }
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;	            .subtitle {
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;	                font-size: 20px;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;	                color: #34495e;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;	                margin-bottom: 15px;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;	            }
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;	            .blog-name {
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;	                font-size: 24px;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;	                color: #16a085;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;	                margin-bottom: 10px;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;	            }
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;	            .blog-description {
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;	                font-size: 16px;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;	                color: #7f8c8d;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;	                margin-bottom: 20px;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;	            }
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;	            .article-container {
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;	                font-family: Arial, sans-serif;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;	                max-width: 800px;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;	                margin: 0 auto;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;	                padding: 20px;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;	            }
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;	            .article {
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;	                margin-bottom: 30px;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;	                border-bottom: 1px solid #eee;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;	                padding-bottom: 20px;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;	            }
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;	            .article-title {
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;	                color: #333;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;	                font-size: 24px;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;	                margin-bottom: 10px;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;	            }
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;	            .article-summary {
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;	                color: #666;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;	                line-height: 1.6;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;	                margin-bottom: 15px;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;	            }
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;	            .read-more {
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;	                display: inline-block;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;	                padding: 8px 15px;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;	                background-color: #4CAF50;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;	                color: white;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;	                text-decoration: none;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;	                border-radius: 4px;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;	            }
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;	            .read-more:hover {
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;	                background-color: #45a049;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;	            }
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;	        &amp;lt;/style&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;	        &amp;lt;div class=&amp;#34;article-container&amp;#34;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;	            &amp;lt;div class=&amp;#34;header&amp;#34;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;                &amp;lt;h1 class=&amp;#34;main-title&amp;#34;&amp;gt;烹茶室（Oskyla 晴空阁） 更新了！&amp;lt;/h1&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;	                &amp;lt;h2 class=&amp;#34;subtitle&amp;#34;&amp;gt;欢迎访问 Frytea&amp;#39;s Blog&amp;lt;/h2&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;	                &amp;lt;h3 class=&amp;#34;blog-name&amp;#34;&amp;gt;Oskyla 烹茶室&amp;lt;/h3&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;	                &amp;lt;p class=&amp;#34;blog-description&amp;#34;&amp;gt;价值信息藏书阁，统一门户入口。&amp;lt;/p&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;	            &amp;lt;/div&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;	        &amp;#34;&amp;#34;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	
&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;for&lt;/span&gt; entry &lt;span style=&#34;color:#f92672&#34;&gt;in&lt;/span&gt; entries:
&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;# 清理文章标题和摘要中的HTML内容&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	            clean_title &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; self&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;clean_html_content(entry&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;title)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	            clean_summary &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; self&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;clean_html_content(entry&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;summary)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	            html_content &lt;span style=&#34;color:#f92672&#34;&gt;+=&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;f&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;	            &amp;lt;div class=&amp;#34;article&amp;#34;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;	                &amp;lt;h2 class=&amp;#34;article-title&amp;#34;&amp;gt;&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;{&lt;/span&gt;clean_title&lt;span style=&#34;color:#e6db74&#34;&gt;}&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;lt;/h2&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;	                &amp;lt;div class=&amp;#34;article-summary&amp;#34;&amp;gt;&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;{&lt;/span&gt;clean_summary&lt;span style=&#34;color:#e6db74&#34;&gt;}&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;lt;/div&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;	                &amp;lt;a href=&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;{&lt;/span&gt;entry&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;link&lt;span style=&#34;color:#e6db74&#34;&gt;}&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34; class=&amp;#34;read-more&amp;#34;&amp;gt;阅读全文&amp;lt;/a&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;	            &amp;lt;/div&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;	            &amp;#34;&amp;#34;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	        html_content &lt;span style=&#34;color:#f92672&#34;&gt;+=&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;lt;/div&amp;gt;&amp;#34;&lt;/span&gt;
&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;return&lt;/span&gt; html_content
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	
&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;def&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;publish_campaign&lt;/span&gt;(self, campaign_id: int) &lt;span style=&#34;color:#f92672&#34;&gt;-&amp;gt;&lt;/span&gt; bool:
&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;for&lt;/span&gt; attempt &lt;span style=&#34;color:#f92672&#34;&gt;in&lt;/span&gt; range(self&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;max_retries):
&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;try&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	                publish_url &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;f&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;{&lt;/span&gt;self&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;listmonk_url&lt;span style=&#34;color:#e6db74&#34;&gt;}&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;/&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;{&lt;/span&gt;campaign_id&lt;span style=&#34;color:#e6db74&#34;&gt;}&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;/status&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	                response &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; requests&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;put(
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	                    publish_url,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	                    headers&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;self&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;headers,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	                    json&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;{&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;status&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;running&amp;#34;&lt;/span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	                )
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	
&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;if&lt;/span&gt; response&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;status_code &lt;span style=&#34;color:#f92672&#34;&gt;==&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;200&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	                    logger&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;info(&lt;span style=&#34;color:#e6db74&#34;&gt;f&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;活动 &lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;{&lt;/span&gt;campaign_id&lt;span style=&#34;color:#e6db74&#34;&gt;}&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt; 发布成功&amp;#34;&lt;/span&gt;)
&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;return&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;True&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	                logger&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;warning(&lt;span style=&#34;color:#e6db74&#34;&gt;f&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;发布尝试 &lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;{&lt;/span&gt;attempt &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:#e6db74&#34;&gt;}&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt; 失败: HTTP &lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;{&lt;/span&gt;response&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;status_code&lt;span style=&#34;color:#e6db74&#34;&gt;}&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;)
&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;if&lt;/span&gt; attempt &lt;span style=&#34;color:#f92672&#34;&gt;&amp;lt;&lt;/span&gt; self&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;max_retries &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&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	                    sleep(self&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;retry_delay)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	
&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;except&lt;/span&gt; requests&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;exceptions&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;RequestException &lt;span style=&#34;color:#66d9ef&#34;&gt;as&lt;/span&gt; e:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	                logger&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;error(&lt;span style=&#34;color:#e6db74&#34;&gt;f&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;发布API请求异常: &lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;{&lt;/span&gt;str(e)&lt;span style=&#34;color:#e6db74&#34;&gt;}&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;)
&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;if&lt;/span&gt; attempt &lt;span style=&#34;color:#f92672&#34;&gt;&amp;lt;&lt;/span&gt; self&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;max_retries &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&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	                    sleep(self&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;retry_delay)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	
&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;return&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;False&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	
&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;def&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;send_newsletter&lt;/span&gt;(self, new_entries: List[Dict]) &lt;span style=&#34;color:#f92672&#34;&gt;-&amp;gt;&lt;/span&gt; bool:
&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;try&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	            content &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; self&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;create_email_content(new_entries)
&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;# 获取文章数量&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	            article_count &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; len(new_entries)
&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;# 清理标题中的HTML内容&lt;/span&gt;
&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;#titles = &amp;#34;, &amp;#34;.join(self.clean_html_content(entry.title) for entry in new_entries)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	            data &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	                &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;name&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;Frytea&amp;#39;s Blog 更新通知&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	                &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;subject&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;f&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;Frytea&amp;#39;s Blog 更新了 &lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;{&lt;/span&gt;article_count&lt;span style=&#34;color:#e6db74&#34;&gt;}&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt; 篇新文章&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	                &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;lists&amp;#34;&lt;/span&gt;: LISTMONK_SEND_LIST_IDS,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	                &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;content_type&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;html&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	                &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;body&amp;#34;&lt;/span&gt;: content,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	                &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;type&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;regular&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	            }
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	            logger&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;debug(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;准备发送的数据: &lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;%s&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;, json&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;dumps(data, indent&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&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	            response &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; requests&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;post(self&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;listmonk_url, headers&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;self&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;headers, json&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;data)
&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;if&lt;/span&gt; response&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;status_code &lt;span style=&#34;color:#f92672&#34;&gt;==&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;200&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	                campaign_id &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; response&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;json()&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;get(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;data&amp;#39;&lt;/span&gt;, {})&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;get(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;id&amp;#39;&lt;/span&gt;)
&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;if&lt;/span&gt; campaign_id:
&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;return&lt;/span&gt; self&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;publish_campaign(campaign_id)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	            logger&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;error(&lt;span style=&#34;color:#e6db74&#34;&gt;f&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;创建活动失败: HTTP &lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;{&lt;/span&gt;response&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;status_code&lt;span style=&#34;color:#e6db74&#34;&gt;}&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;)
&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;return&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;False&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	
&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;except&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;Exception&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;as&lt;/span&gt; e:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	            logger&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;error(&lt;span style=&#34;color:#e6db74&#34;&gt;f&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;发送邮件时出错: &lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;{&lt;/span&gt;str(e)&lt;span style=&#34;color:#e6db74&#34;&gt;}&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;)
&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;return&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;False&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	
&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;def&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;check_and_send&lt;/span&gt;(self) &lt;span style=&#34;color:#f92672&#34;&gt;-&amp;gt;&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;None&lt;/span&gt;:
&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;try&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	            logger&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;info(&lt;span style=&#34;color:#e6db74&#34;&gt;f&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;开始解析RSS源: &lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;{&lt;/span&gt;self&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;rss_url&lt;span style=&#34;color:#e6db74&#34;&gt;}&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	            feed &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; feedparser&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;parse(self&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;rss_url)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	
&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;if&lt;/span&gt; feed&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;bozo:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	                logger&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;error(&lt;span style=&#34;color:#e6db74&#34;&gt;f&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;RSS解析错误: &lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;{&lt;/span&gt;feed&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;bozo_exception&lt;span style=&#34;color:#e6db74&#34;&gt;}&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;)
&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;return&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	
&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;if&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;not&lt;/span&gt; feed&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;entries:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	                logger&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;warning(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;RSS源没有任何条目&amp;#34;&lt;/span&gt;)
&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;return&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	            last_check &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; self&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;get_last_check_time()
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	            new_entries &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; []
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	
&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;#for entry in feed.entries:&lt;/span&gt;
&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 last_check or entry.published &amp;gt; last_check:&lt;/span&gt;
&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;#        new_entries.append(entry)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	
&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;for&lt;/span&gt; entry &lt;span style=&#34;color:#f92672&#34;&gt;in&lt;/span&gt; feed&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;entries:
&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;# 将字符串解析为 datetime 对象&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	                entry_time &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; parser&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;parse(entry&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;published)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	                last_check_time &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; parser&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;parse(last_check) &lt;span style=&#34;color:#66d9ef&#34;&gt;if&lt;/span&gt; last_check &lt;span style=&#34;color:#66d9ef&#34;&gt;else&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;None&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	
&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;if&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;not&lt;/span&gt; last_check_time &lt;span style=&#34;color:#f92672&#34;&gt;or&lt;/span&gt; entry_time &lt;span style=&#34;color:#f92672&#34;&gt;&amp;gt;&lt;/span&gt; last_check_time:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	                    new_entries&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;append(entry)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	
&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;if&lt;/span&gt; new_entries:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	                logger&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;info(&lt;span style=&#34;color:#e6db74&#34;&gt;f&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;检测到 &lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;{&lt;/span&gt;len(new_entries)&lt;span style=&#34;color:#e6db74&#34;&gt;}&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt; 篇新文章&amp;#34;&lt;/span&gt;)
&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;if&lt;/span&gt; self&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;send_newsletter(new_entries):
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	                    self&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;save_check_time(max(entry&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;published &lt;span style=&#34;color:#66d9ef&#34;&gt;for&lt;/span&gt; entry &lt;span style=&#34;color:#f92672&#34;&gt;in&lt;/span&gt; new_entries))
&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;else&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	                logger&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;info(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;没有新文章&amp;#34;&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	
&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;except&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;Exception&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;as&lt;/span&gt; e:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	            logger&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;error(&lt;span style=&#34;color:#e6db74&#34;&gt;f&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;执行过程中出现未预期的错误: &lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;{&lt;/span&gt;str(e)&lt;span style=&#34;color:#e6db74&#34;&gt;}&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;, exc_info&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;True&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	
&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;if&lt;/span&gt; __name__ &lt;span style=&#34;color:#f92672&#34;&gt;==&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;__main__&amp;#34;&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	    checker &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; RSSChecker()
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	    checker&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;check_and_send()
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;依赖 &lt;code&gt;requirements.txt&lt;/code&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Docker 部署 mautic 并增加插件和翻译包等</title>
      <link>https://frytea.com/archives/1381/</link>
      <pubDate>Tue, 03 Dec 2024 11:49:59 +0000</pubDate>
      <guid>https://frytea.com/archives/1381/</guid>
      <description>&lt;h2 id=&#34;docker-部署方法&#34;&gt;Docker 部署方法&lt;/h2&gt;
&lt;p&gt;参考：&lt;a href=&#34;https://github.com/mautic/docker-mautic/tree/mautic5/examples&#34;&gt;https://github.com/mautic/docker-mautic/tree/mautic5/examples&lt;/a&gt;&lt;/p&gt;
&lt;h2 id=&#34;增加插件&#34;&gt;增加插件&lt;/h2&gt;
&lt;p&gt;使用如下 &lt;code&gt;Dockerfile&lt;/code&gt;&lt;/p&gt;
&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;&#34;&gt;&lt;code class=&#34;language-yaml&#34; data-lang=&#34;yaml&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;FROM mautic/mautic:5-apache&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;COPY ./plugins/ /var/www/html/docroot/plugins/&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;结合以下 &lt;code&gt;Makefile&lt;/code&gt;&lt;/p&gt;
&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;&#34;&gt;&lt;code class=&#34;language-makefile&#34; data-lang=&#34;makefile&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;all&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        docker build -t mautic/mautic:5-apache-my .
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;整个目录架构是这样：&lt;/p&gt;
&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;&#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;root@tencent-gz1:/data/docker/mautic/add-something# tree -L &lt;span style=&#34;color:#ae81ff&#34;&gt;2&lt;/span&gt; .
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;.
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;├── Dockerfile
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;├── Makefile
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;├── plugins
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;│   └── MauticRssToEmailBundle
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;└── translations
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    └── zh_CN.zip
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;执行&lt;/p&gt;
&lt;h2 id=&#34;增加语言包&#34;&gt;增加语言包&lt;/h2&gt;
&lt;p&gt;在 &lt;code&gt;Dockerfile&lt;/code&gt; 增加一个目录：&lt;/p&gt;</description>
    </item>
    <item>
      <title>Ceph RBD 查看实际占用top</title>
      <link>https://frytea.com/archives/1375/</link>
      <pubDate>Mon, 02 Dec 2024 10:12:37 +0000</pubDate>
      <guid>https://frytea.com/archives/1375/</guid>
      <description>&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;&#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;rbd du -p ssd | awk &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;  
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;NR&amp;gt;1 {  
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;   size=$4  
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;   unit=$5  
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;   if (unit==&amp;#34;MiB&amp;#34;) size=size  
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;   else if (unit==&amp;#34;GiB&amp;#34;) size=size*1024  
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;   else if (unit==&amp;#34;TiB&amp;#34;) size=size*1024*1024  
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;   print size &amp;#34; &amp;#34; unit &amp;#34; &amp;#34; $0  
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;}&amp;#39;&lt;/span&gt; | sort -nr | head -n &lt;span style=&#34;color:#ae81ff&#34;&gt;50&lt;/span&gt; | cut -d&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34; &amp;#34;&lt;/span&gt; -f3-
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;by claude 3.5&lt;/p&gt;
&lt;p&gt;效果：&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;root@pve1:~# rbd du -p ssd | awk &amp;#39;  
NR&amp;gt;1 {  
   size=$4  
   unit=$5  
   if (unit==&amp;#34;MiB&amp;#34;) size=size  
   else if (unit==&amp;#34;GiB&amp;#34;) size=size*1024  
   else if (unit==&amp;#34;TiB&amp;#34;) size=size*1024*1024  
   print size &amp;#34; &amp;#34; unit &amp;#34; &amp;#34; $0  
}&amp;#39; | sort -nr | head -n 50 | cut -d&amp;#34; &amp;#34; -f3-  
&amp;lt;TOTAL&amp;gt;                                              111 TiB    47 TiB  
vm-1033-disk-0                                        20 TiB    20 TiB  
vm-1054-disk-1@bak20240731                          1000 GiB   677 GiB  
vm-503-disk-3                                        500 GiB   500 GiB  
vm-502-disk-3                                        500 GiB   500 GiB  
vm-501-disk-3                                        500 GiB   500 GiB  
vm-1054-disk-1@bak20231106                          1000 GiB   475 GiB  
vm-497-disk-0@backup0530                             500 GiB   340 GiB  
vm-1279-disk-1                                       320 GiB   320 GiB  
vm-1090-disk-0                                       300 GiB   300 GiB
&lt;/code&gt;&lt;/pre&gt;</description>
    </item>
    <item>
      <title>Bash 条件判断</title>
      <link>https://frytea.com/archives/1374/</link>
      <pubDate>Mon, 02 Dec 2024 10:12:28 +0000</pubDate>
      <guid>https://frytea.com/archives/1374/</guid>
      <description>&lt;p&gt;本章介绍 Bash 脚本的条件判断语法。&lt;/p&gt;
&lt;h2 id=&#34;if-结构&#34;&gt;&lt;code&gt;if&lt;/code&gt; 结构&lt;/h2&gt;
&lt;p&gt;&lt;code&gt;if&lt;/code&gt;是最常用的条件判断结构，只有符合给定条件时，才会执行指定的命令。它的语法如下。&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;if commands; then
  commands
[elif commands; then
  commands...]
[else
  commands]
fi
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;这个命令分成三个部分：&lt;code&gt;if&lt;/code&gt;、&lt;code&gt;elif&lt;/code&gt;和&lt;code&gt;else&lt;/code&gt;。其中，后两个部分是可选的。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Z-Library 官方地址入口</title>
      <link>https://frytea.com/archives/1384/</link>
      <pubDate>Sun, 01 Dec 2024 06:32:00 +0000</pubDate>
      <guid>https://frytea.com/archives/1384/</guid>
      <description>&lt;p&gt;官方路径：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://en.wikipedia.org/wiki/Z-Library&#34;&gt;https://en.wikipedia.org/wiki/Z-Library&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;最新入口（2024-12-01更新）：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://z-library.sk&#34;&gt;z-library.sk&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://go-to-library.sk&#34;&gt;go-to-library.sk&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote&gt;
&lt;p&gt;References: t.me/Zlibraryorg&lt;/p&gt;&lt;/blockquote&gt;</description>
    </item>
    <item>
      <title>SmokePing 搭建及多节点探测</title>
      <link>https://frytea.com/archives/1373/</link>
      <pubDate>Sat, 30 Nov 2024 17:59:28 +0000</pubDate>
      <guid>https://frytea.com/archives/1373/</guid>
      <description>&lt;h2 id=&#34;linuxserver-版-docker&#34;&gt;linuxserver 版 docker&lt;/h2&gt;
&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;&#34;&gt;&lt;code class=&#34;language-yaml&#34; data-lang=&#34;yaml&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;---
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;services&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;smokeping&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;image&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;lscr.io/linuxserver/smokeping:latest&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;container_name&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;smokeping&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;environment&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      - &lt;span style=&#34;color:#ae81ff&#34;&gt;PUID=1000&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      - &lt;span style=&#34;color:#ae81ff&#34;&gt;PGID=1000&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      - &lt;span style=&#34;color:#ae81ff&#34;&gt;TZ=Asia/Shanghai&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      - &lt;span style=&#34;color:#ae81ff&#34;&gt;MASTER_URL=http://&amp;lt;master-host-ip&amp;gt;:80/smokeping/&lt;/span&gt; &lt;span style=&#34;color:#75715e&#34;&gt;#optional&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      - &lt;span style=&#34;color:#ae81ff&#34;&gt;SHARED_SECRET=password&lt;/span&gt; &lt;span style=&#34;color:#75715e&#34;&gt;#optional&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      - &lt;span style=&#34;color:#ae81ff&#34;&gt;CACHE_DIR=/tmp&lt;/span&gt; &lt;span style=&#34;color:#75715e&#34;&gt;#optional&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;volumes&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      - &lt;span style=&#34;color:#ae81ff&#34;&gt;./data/config:/config&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      - &lt;span style=&#34;color:#ae81ff&#34;&gt;./data/data:/data&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;ports&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      - &lt;span style=&#34;color:#ae81ff&#34;&gt;80&lt;/span&gt;:&lt;span style=&#34;color:#ae81ff&#34;&gt;80&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;restart&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;unless-stopped&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;其中的 &lt;code&gt;data/config/Targets&lt;/code&gt; 为监控目标配置。&lt;/p&gt;
&lt;h2 id=&#34;配置说明&#34;&gt;配置说明&lt;/h2&gt;
&lt;h3 id=&#34;general&#34;&gt;&lt;code&gt;General&lt;/code&gt;&lt;/h3&gt;
&lt;p&gt;自行配置。&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;*** General ***

owner    = frytea.com
contact  = songtianlun@frytea.com
mailhost = my.mail.host
# NOTE: do not put the Image Cache below cgi-bin
# since all files under cgi-bin will be executed ... this is not
# good for images.
cgiurl   = http://localhost/smokeping/smokeping.cgi
# specify this to get syslog logging
syslogfacility = local0
# each probe is now run in its own process
# disable this to revert to the old behaviour
# concurrentprobes = no
display_name = Frytea&amp;#39;s SmokePing

@include /config/pathnames
&lt;/code&gt;&lt;/pre&gt;&lt;h3 id=&#34;probes&#34;&gt;&lt;code&gt;Probes&lt;/code&gt;&lt;/h3&gt;
&lt;p&gt;配置侦测频率。&lt;/p&gt;</description>
    </item>
    <item>
      <title>BWH DC99 掉线事件记录</title>
      <link>https://frytea.com/archives/1383/</link>
      <pubDate>Sat, 30 Nov 2024 17:08:00 +0000</pubDate>
      <guid>https://frytea.com/archives/1383/</guid>
      <description>&lt;p&gt;出去一天，回来发现各个群都在说瓦工 DC99 掉线事件，看了一下监控确实掉线了一段时间。好在现在已经恢复，树大招风，可以看出瓦工的用户规模还是很大的，希望后面不要再发生类似事件。&lt;/p&gt;</description>
    </item>
    <item>
      <title>常用在线网络测试工具的对比矩阵</title>
      <link>https://frytea.com/archives/1382/</link>
      <pubDate>Sat, 30 Nov 2024 16:53:00 +0000</pubDate>
      <guid>https://frytea.com/archives/1382/</guid>
      <description>&lt;p&gt;常用网络测试工具的对比矩阵:&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;工具网站&lt;/th&gt;
          &lt;th&gt;PING&lt;/th&gt;
          &lt;th&gt;TCPing&lt;/th&gt;
          &lt;th&gt;MTR&lt;/th&gt;
          &lt;th&gt;DNS&lt;/th&gt;
          &lt;th&gt;HTTP(S)&lt;/th&gt;
          &lt;th&gt;端口扫描&lt;/th&gt;
          &lt;th&gt;路由追踪&lt;/th&gt;
          &lt;th&gt;IP 查询&lt;/th&gt;
          &lt;th&gt;多节点&lt;/th&gt;
          &lt;th&gt;SSL证书&lt;/th&gt;
          &lt;th&gt;IPv6&lt;/th&gt;
          &lt;th&gt;API&lt;/th&gt;
          &lt;th&gt;特色功能&lt;/th&gt;
          &lt;th&gt;&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;a href=&#34;https://ping.pe&#34;&gt;ping.pe&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;✓&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
          &lt;td&gt;✓&lt;/td&gt;
          &lt;td&gt;✓&lt;/td&gt;
          &lt;td&gt;✓&lt;/td&gt;
          &lt;td&gt;-&lt;/td&gt;
          &lt;td&gt;✓&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
          &lt;td&gt;✓&lt;/td&gt;
          &lt;td&gt;-&lt;/td&gt;
          &lt;td&gt;✓&lt;/td&gt;
          &lt;td&gt;✓&lt;/td&gt;
          &lt;td&gt;全球节点,命令行风格&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;a href=&#34;https://ping.chinaz.com&#34;&gt;ping.chinaz.com&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;✓&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
          &lt;td&gt;-&lt;/td&gt;
          &lt;td&gt;✓&lt;/td&gt;
          &lt;td&gt;✓&lt;/td&gt;
          &lt;td&gt;-&lt;/td&gt;
          &lt;td&gt;✓&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
          &lt;td&gt;✓&lt;/td&gt;
          &lt;td&gt;✓&lt;/td&gt;
          &lt;td&gt;-&lt;/td&gt;
          &lt;td&gt;-&lt;/td&gt;
          &lt;td&gt;国内节点覆盖全,历史记录&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;a href=&#34;https://www.itdog.cn&#34;&gt;itdog.cn&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;✓&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
          &lt;td&gt;-&lt;/td&gt;
          &lt;td&gt;✓&lt;/td&gt;
          &lt;td&gt;✓&lt;/td&gt;
          &lt;td&gt;✓&lt;/td&gt;
          &lt;td&gt;✓&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
          &lt;td&gt;✓&lt;/td&gt;
          &lt;td&gt;✓&lt;/td&gt;
          &lt;td&gt;-&lt;/td&gt;
          &lt;td&gt;-&lt;/td&gt;
          &lt;td&gt;界面友好,检测报告详细&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;a href=&#34;https://www.17ce.com&#34;&gt;17ce.com&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;✓&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
          &lt;td&gt;-&lt;/td&gt;
          &lt;td&gt;✓&lt;/td&gt;
          &lt;td&gt;✓&lt;/td&gt;
          &lt;td&gt;-&lt;/td&gt;
          &lt;td&gt;✓&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
          &lt;td&gt;✓&lt;/td&gt;
          &lt;td&gt;✓&lt;/td&gt;
          &lt;td&gt;-&lt;/td&gt;
          &lt;td&gt;✓&lt;/td&gt;
          &lt;td&gt;性能监控,故障分析&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;a href=&#34;https://tools.ipip.net&#34;&gt;ipip.net&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;✓&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
          &lt;td&gt;✓&lt;/td&gt;
          &lt;td&gt;✓&lt;/td&gt;
          &lt;td&gt;-&lt;/td&gt;
          &lt;td&gt;-&lt;/td&gt;
          &lt;td&gt;✓&lt;/td&gt;
          &lt;td&gt;✓&lt;/td&gt;
          &lt;td&gt;✓&lt;/td&gt;
          &lt;td&gt;-&lt;/td&gt;
          &lt;td&gt;✓&lt;/td&gt;
          &lt;td&gt;✓&lt;/td&gt;
          &lt;td&gt;IP地理位置,AS信息&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;a href=&#34;https://tool.lu&#34;&gt;tool.lu&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;✓&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
          &lt;td&gt;-&lt;/td&gt;
          &lt;td&gt;✓&lt;/td&gt;
          &lt;td&gt;✓&lt;/td&gt;
          &lt;td&gt;✓&lt;/td&gt;
          &lt;td&gt;✓&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
          &lt;td&gt;-&lt;/td&gt;
          &lt;td&gt;✓&lt;/td&gt;
          &lt;td&gt;-&lt;/td&gt;
          &lt;td&gt;-&lt;/td&gt;
          &lt;td&gt;工具集合,便捷使用&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;a href=&#34;https://www.boce.com&#34;&gt;boce.com&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;✓&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
          &lt;td&gt;-&lt;/td&gt;
          &lt;td&gt;✓&lt;/td&gt;
          &lt;td&gt;✓&lt;/td&gt;
          &lt;td&gt;-&lt;/td&gt;
          &lt;td&gt;✓&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
          &lt;td&gt;✓&lt;/td&gt;
          &lt;td&gt;✓&lt;/td&gt;
          &lt;td&gt;-&lt;/td&gt;
          &lt;td&gt;✓&lt;/td&gt;
          &lt;td&gt;网站监控,性能分析&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;a href=&#34;https://ping.eu&#34;&gt;ping.eu&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;✓&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
          &lt;td&gt;-&lt;/td&gt;
          &lt;td&gt;✓&lt;/td&gt;
          &lt;td&gt;✓&lt;/td&gt;
          &lt;td&gt;✓&lt;/td&gt;
          &lt;td&gt;✓&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
          &lt;td&gt;✓&lt;/td&gt;
          &lt;td&gt;-&lt;/td&gt;
          &lt;td&gt;✓&lt;/td&gt;
          &lt;td&gt;-&lt;/td&gt;
          &lt;td&gt;欧洲节点为主&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;a href=&#34;https://zhale.me/&#34;&gt;zhale.me&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;✓&lt;/td&gt;
          &lt;td&gt;✓&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
          &lt;td&gt;✓&lt;/td&gt;
          &lt;td&gt;✓&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
          &lt;td&gt;✓&lt;/td&gt;
          &lt;td&gt;✓&lt;/td&gt;
          &lt;td&gt;✓&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
          &lt;td&gt;全球1000+网络拨测节点，模拟用户访问域名/IP，实用小工具，运维必备&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;a href=&#34;https://ping.sx&#34;&gt;ping.sx&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;✓&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
          &lt;td&gt;✓&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
          &lt;td&gt;✓&lt;/td&gt;
          &lt;td&gt;✓&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
          &lt;td&gt;✓&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;a href=&#34;https://www.tance.cc/&#34;&gt;tance.cc&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;✓&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
          &lt;td&gt;✓&lt;/td&gt;
          &lt;td&gt;✓&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
          &lt;td&gt;✓&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
          &lt;td&gt;✓&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;a href=&#34;https://www.cesu.net/&#34;&gt;cesu.net&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;✓&lt;/td&gt;
          &lt;td&gt;✓&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
          &lt;td&gt;✓&lt;/td&gt;
          &lt;td&gt;✓&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
          &lt;td&gt;✓&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;功能说明:&lt;/p&gt;</description>
    </item>
    <item>
      <title>RockLinux 安装 Docker</title>
      <link>https://frytea.com/archives/1371/</link>
      <pubDate>Fri, 29 Nov 2024 10:40:01 +0000</pubDate>
      <guid>https://frytea.com/archives/1371/</guid>
      <description>&lt;p&gt;Docker Engine 可以在 Rocky Linux 服务器上运行原生 Docker 风格的容器工作负载。在运行完整的 Docker Desktop 环境时，有时会首选这种方式。&lt;/p&gt;
&lt;h2 id=&#34;添加-docker-仓库&#34;&gt;添加 Docker 仓库&lt;/h2&gt;
&lt;p&gt;使用 &lt;code&gt;dnf&lt;/code&gt; 工具将 Docker 仓库添加到你的 Rocky Linux 服务器。输入：&lt;/p&gt;</description>
    </item>
    <item>
      <title>常用公共 DNS 服务器</title>
      <link>https://frytea.com/archives/1372/</link>
      <pubDate>Fri, 29 Nov 2024 10:40:00 +0000</pubDate>
      <guid>https://frytea.com/archives/1372/</guid>
      <description>&lt;h2 id=&#34;汇总表格&#34;&gt;汇总表格&lt;/h2&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th style=&#34;text-align: center&#34;&gt;名称&lt;/th&gt;
          &lt;th&gt;IPv4&lt;/th&gt;
          &lt;th&gt;IPv6&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;DNSPod&lt;/td&gt;
          &lt;td&gt;119.29.29.29&lt;/td&gt;
          &lt;td&gt;2402:4e00::&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;AliDNS&lt;/td&gt;
          &lt;td&gt;223.5.5.5 223.6.6.6&lt;/td&gt;
          &lt;td&gt;2400:3200::1 2400:3200:baba::1&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;BaiduDNS&lt;/td&gt;
          &lt;td&gt;180.76.76.76&lt;/td&gt;
          &lt;td&gt;2400:da00::6666&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;360DNS&lt;/td&gt;
          &lt;td&gt;101.226.4.6 218.30.118.6&lt;/td&gt;
          &lt;td&gt;123.125.81.6 140.207.198.6&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;114DNS&lt;/td&gt;
          &lt;td&gt;114.114.114.114 114.114.115.115&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;ChinaDNS&lt;/td&gt;
          &lt;td&gt;1.2.4.8 210.2.4.8&lt;/td&gt;
          &lt;td&gt;2001:dc7:1000::1&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;OneDNS&lt;/td&gt;
          &lt;td&gt;117.50.11.11 117.50.22.22&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;Hi!XNS DNS&lt;/td&gt;
          &lt;td&gt;40.73.101.101&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;TWNIC DNS&lt;/td&gt;
          &lt;td&gt;101.101.101.101 101.102.103.104&lt;/td&gt;
          &lt;td&gt;2001:de4::101 2001:de4::102&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id=&#34;国内知名公共-dns-服务器&#34;&gt;国内知名公共 DNS 服务器&lt;/h2&gt;
&lt;h3 id=&#34;腾讯-dns-dnspod&#34;&gt;腾讯 DNS (DNSPod)&lt;/h3&gt;
&lt;p&gt;由 DNSPod 提供的公共免费 DNS，后来 DNSPod 被腾讯(Tencent)收购，现在属于腾讯公司所有，稳定性和连通性也是不错的，经测试海外也可以使用。 DNSPod 除了 IPv4，现在同时支持 IPv6 DNS 和 DoT/DoH 服务。&lt;/p&gt;</description>
    </item>
    <item>
      <title>ArchLinux 图片压缩工具</title>
      <link>https://frytea.com/archives/1370/</link>
      <pubDate>Fri, 29 Nov 2024 10:39:52 +0000</pubDate>
      <guid>https://frytea.com/archives/1370/</guid>
      <description>&lt;p&gt;在 Arch Linux 下有几个优秀的 PNG 图片压缩工具：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;OptiPNG&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;
&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;&#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;# 安装&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;sudo pacman -S optipng
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&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;# 使用示例&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;optipng -o5 image.png    &lt;span style=&#34;color:#75715e&#34;&gt;# o5 表示优化级别，范围是 0-7&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;c&lt;span style=&#34;color:#e6db74&#34;&gt;```&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;2. **pngquant**
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;```&lt;/span&gt;bash
&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;# 安装&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;sudo pacman -S pngquant
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&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;# 使用示例&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;pngquant --quality&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;65-80 image.png  &lt;span style=&#34;color:#75715e&#34;&gt;# 设置质量范围在65-80之间&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ol start=&#34;3&#34;&gt;
&lt;li&gt;&lt;strong&gt;Trimage&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;ul&gt;
&lt;li&gt;这是一个带 GUI 界面的工具，可以同时压缩 PNG 和 JPEG&lt;/li&gt;
&lt;/ul&gt;
&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;&#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;# 安装（从 AUR）&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;yay -S trimage
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ol start=&#34;4&#34;&gt;
&lt;li&gt;&lt;strong&gt;oxipng&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;
&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;&#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;# 安装（从 AUR）&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;yay -S oxipng
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&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;# 使用示例&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;oxipng -o &lt;span style=&#34;color:#ae81ff&#34;&gt;4&lt;/span&gt; image.png    &lt;span style=&#34;color:#75715e&#34;&gt;# o4 表示优化级别，范围是 0-6&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;个人推荐：&lt;/p&gt;</description>
    </item>
    <item>
      <title>K8s 第一个容器及服务 whoami</title>
      <link>https://frytea.com/archives/1367/</link>
      <pubDate>Thu, 28 Nov 2024 10:11:38 +0000</pubDate>
      <guid>https://frytea.com/archives/1367/</guid>
      <description>&lt;h2 id=&#34;示例资源清单&#34;&gt;示例资源清单&lt;/h2&gt;
&lt;p&gt;示例部署资源清单：&lt;/p&gt;
&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;&#34;&gt;&lt;code class=&#34;language-yaml&#34; data-lang=&#34;yaml&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;apiVersion&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;apps/v1&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;kind&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;Deployment&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;metadata&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;name&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;whoami-deploy&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;spec&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;replicas&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;1&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;selector&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;matchLabels&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;app&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;whoami&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;release&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;canary&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;template&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;metadata&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;labels&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#f92672&#34;&gt;app&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;whoami&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#f92672&#34;&gt;release&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;canary&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;spec&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;containers&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      - &lt;span style=&#34;color:#f92672&#34;&gt;name&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;whoami&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#f92672&#34;&gt;image&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;traefik/whoami:v1.10&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#f92672&#34;&gt;ports&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        - &lt;span style=&#34;color:#f92672&#34;&gt;name&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;http&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;          &lt;span style=&#34;color:#f92672&#34;&gt;containerPort&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;80&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;---
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;apiVersion&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;v1&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;kind&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;Service&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;metadata&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;name&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;whoami&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;spec&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;type&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;NodePort&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;selector&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;app&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;whoami&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;release&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;canary&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;ports&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  - &lt;span style=&#34;color:#f92672&#34;&gt;name&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;http&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;port&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;80&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;targetPort&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;80&lt;/span&gt; &lt;span style=&#34;color:#75715e&#34;&gt;# pod port&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;nodePort&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;30080&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;部署：&lt;/p&gt;
&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;&#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;kubectl apply -f xxx.yaml
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;关键参数说明&#34;&gt;关键参数说明&lt;/h2&gt;
&lt;p&gt;我来为您解释这个 Kubernetes 配置文件中的关键参数：&lt;/p&gt;</description>
    </item>
    <item>
      <title>kuboard v3 快速部署</title>
      <link>https://frytea.com/archives/1366/</link>
      <pubDate>Thu, 28 Nov 2024 10:11:29 +0000</pubDate>
      <guid>https://frytea.com/archives/1366/</guid>
      <description>&lt;p&gt;Kuboard 官网给的 k8s 单节点快速部署似乎不太好用，直接用 docker 的翻译了一份，用于快速部署。&lt;/p&gt;
&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;&#34;&gt;&lt;code class=&#34;language-yaml&#34; data-lang=&#34;yaml&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;---
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;apiVersion&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;v1&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;kind&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;Namespace&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;metadata&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;name&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;kuboard&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;---
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;apiVersion&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;apps/v1&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;kind&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;Deployment&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;metadata&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;name&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;kuboard&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;namespace&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;kuboard&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;spec&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;replicas&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;1&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;selector&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;matchLabels&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;app&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;kuboard&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;template&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;metadata&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;labels&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#f92672&#34;&gt;app&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;kuboard&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;spec&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;containers&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      - &lt;span style=&#34;color:#f92672&#34;&gt;name&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;kuboard&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#f92672&#34;&gt;image&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;eipwork/kuboard:v3&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#f92672&#34;&gt;ports&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        - &lt;span style=&#34;color:#f92672&#34;&gt;containerPort&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;80&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;          &lt;span style=&#34;color:#f92672&#34;&gt;name&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;http&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        - &lt;span style=&#34;color:#f92672&#34;&gt;containerPort&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;10081&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;          &lt;span style=&#34;color:#f92672&#34;&gt;name&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;agent&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#f92672&#34;&gt;env&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        - &lt;span style=&#34;color:#f92672&#34;&gt;name&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;KUBOARD_ENDPOINT&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;          &lt;span style=&#34;color:#f92672&#34;&gt;value&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;http://192.168.26.133:30080&amp;#34;&lt;/span&gt;  &lt;span style=&#34;color:#75715e&#34;&gt;# 请替换为您的实际内网 IP&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        - &lt;span style=&#34;color:#f92672&#34;&gt;name&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;KUBOARD_AGENT_SERVER_TCP_PORT&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;          &lt;span style=&#34;color:#f92672&#34;&gt;value&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;10081&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#f92672&#34;&gt;volumeMounts&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        - &lt;span style=&#34;color:#f92672&#34;&gt;name&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;data&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;          &lt;span style=&#34;color:#f92672&#34;&gt;mountPath&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;/data&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;volumes&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      - &lt;span style=&#34;color:#f92672&#34;&gt;name&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;data&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#f92672&#34;&gt;hostPath&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;          &lt;span style=&#34;color:#f92672&#34;&gt;path&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;/etc/kuboard/data&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;          &lt;span style=&#34;color:#f92672&#34;&gt;type&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;DirectoryOrCreate&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;---
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;apiVersion&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;v1&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;kind&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;Service&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;metadata&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;name&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;kuboard-svc&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;namespace&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;kuboard&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;spec&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;selector&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;app&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;kuboard&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;ports&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  - &lt;span style=&#34;color:#f92672&#34;&gt;name&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;http&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;port&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;80&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;targetPort&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;80&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;nodePort&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;30080&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  - &lt;span style=&#34;color:#f92672&#34;&gt;name&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;agent&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;port&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;10081&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;targetPort&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;10081&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;type&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;NodePort&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Kubard 官网：https://kuboard.cn/&lt;/p&gt;</description>
    </item>
    <item>
      <title>Ubuntu 22.04设置DNS</title>
      <link>https://frytea.com/archives/1365/</link>
      <pubDate>Thu, 28 Nov 2024 10:11:14 +0000</pubDate>
      <guid>https://frytea.com/archives/1365/</guid>
      <description>&lt;p&gt;DNS域名系统是网络基础架构的核心部分，提供了一种将域名转换为IP地址的方法。&lt;/p&gt;
&lt;p&gt;您可以将DNS视为互联网的电话簿。注意这篇文章不是在Ubuntu 22.04配置自己的DNS服务器。而是给客户端配置DNS的IP地址。&lt;/p&gt;</description>
    </item>
    <item>
      <title>claw hk 网络监控稳定晚上出现小幅波动</title>
      <link>https://frytea.com/archives/1378/</link>
      <pubDate>Wed, 27 Nov 2024 15:56:46 +0000</pubDate>
      <guid>https://frytea.com/archives/1378/</guid>
      <description>&lt;p&gt;貌似每到晚高峰就会稳定出现一些波动，很神奇。&lt;/p&gt;
&lt;p&gt;&lt;img alt=&#34;3h&#34; loading=&#34;lazy&#34; src=&#34;https://cdn-imagehost.frytea.com/images/2024/11/27/12xl5zn.webp&#34;&gt;&lt;/p&gt;
&lt;p&gt;&lt;img alt=&#34;30h&#34; loading=&#34;lazy&#34; src=&#34;https://cdn-imagehost.frytea.com/images/2024/11/27/12xp9pm.webp&#34;&gt;&lt;/p&gt;
&lt;p&gt;&lt;img alt=&#34;10d&#34; loading=&#34;lazy&#34; src=&#34;https://cdn-imagehost.frytea.com/images/2024/11/27/12xtlsb.webp&#34;&gt;&lt;/p&gt;
&lt;p&gt;数据源于自建 smokeping，从腾讯云广州监测。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Obsidian 多设备同步方案整理</title>
      <link>https://frytea.com/archives/1377/</link>
      <pubDate>Tue, 26 Nov 2024 11:21:00 +0000</pubDate>
      <guid>https://frytea.com/archives/1377/</guid>
      <description>&lt;p&gt;同步方案大致有下面这几种：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://github.com/vrtmrz/obsidian-livesync&#34;&gt;&lt;code&gt;obsidian-livesync&lt;/code&gt;(插件)&lt;/a&gt;：自托管在线同步，支持实时同步，社区活跃，使用自建 &lt;code&gt;CouchDB&lt;/code&gt; 数据库存放数据；&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://github.com/remotely-save/remotely-save&#34;&gt;&lt;code&gt;remotely-save&lt;/code&gt;(插件)&lt;/a&gt;：支持S3 (Amazon S3/Cloudflare R2/Backblaze B2/&amp;hellip;)、Dropbox、webdav (NextCloud/InfiniCLOUD/Synology/&amp;hellip;)、OneDrive 等数据源。&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://github.com/Vinzent03/obsidian-git&#34;&gt;&lt;code&gt;obsidian git&lt;/code&gt;(插件)&lt;/a&gt;：集成 git，主要是 git 做版本管理的，用起来不是很方便。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;obsidian-sync&lt;/code&gt;(官方同步)：官方方案，无需多言，每月4$。&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;对比表格&#34;&gt;对比表格&lt;/h2&gt;
&lt;p&gt;claude 对以上方案的对比如下表：&lt;/p&gt;</description>
    </item>
    <item>
      <title>各大云服务主机商测试 IP 整理</title>
      <link>https://frytea.com/archives/1376/</link>
      <pubDate>Sat, 23 Nov 2024 16:12:00 +0000</pubDate>
      <guid>https://frytea.com/archives/1376/</guid>
      <description>&lt;p&gt;整理了互联网上能找到的各大云服务主机商的官方/民间测试 IP ，按照首字母排序，按需取用，欢迎补充。&lt;/p&gt;
&lt;h2 id=&#34;厂商&#34;&gt;厂商&lt;/h2&gt;
&lt;h3 id=&#34;aliyun&#34;&gt;Aliyun&lt;/h3&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;地域节点&lt;/th&gt;
          &lt;th&gt;所在城市&lt;/th&gt;
          &lt;th&gt;测速IP地址&lt;/th&gt;
          &lt;th&gt;动态OSS地址&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;华北 1&lt;/td&gt;
          &lt;td&gt;青岛&lt;/td&gt;
          &lt;td&gt;47.104.38.82&lt;/td&gt;
          &lt;td&gt;oss-cn-qingdao.aliyuncs.com&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;华北 2&lt;/td&gt;
          &lt;td&gt;北京&lt;/td&gt;
          &lt;td&gt;59.110.190.69&lt;/td&gt;
          &lt;td&gt;oss-cn-beijing.aliyuncs.com&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;华北 3&lt;/td&gt;
          &lt;td&gt;张家口&lt;/td&gt;
          &lt;td&gt;47.92.17.61&lt;/td&gt;
          &lt;td&gt;oss-cn-zhangjiakou.aliyuncs.com&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;华北 5&lt;/td&gt;
          &lt;td&gt;呼和浩特&lt;/td&gt;
          &lt;td&gt;39.104.9.1&lt;/td&gt;
          &lt;td&gt;oss-cn-huhehaote.aliyuncs.com&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;华北 6&lt;/td&gt;
          &lt;td&gt;乌兰察布&lt;/td&gt;
          &lt;td&gt;39.101.35.62&lt;/td&gt;
          &lt;td&gt;oss-cn-wulanchabu.aliyuncs.com&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;华东 1&lt;/td&gt;
          &lt;td&gt;杭州&lt;/td&gt;
          &lt;td&gt;118.31.219.171&lt;/td&gt;
          &lt;td&gt;oss-cn-hangzhou.aliyuncs.com&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;华东 2&lt;/td&gt;
          &lt;td&gt;上海&lt;/td&gt;
          &lt;td&gt;106.14.228.194&lt;/td&gt;
          &lt;td&gt;oss-cn-shanghai.aliyuncs.com&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;华南 1&lt;/td&gt;
          &lt;td&gt;深圳&lt;/td&gt;
          &lt;td&gt;120.77.166.226&lt;/td&gt;
          &lt;td&gt;oss-cn-shenzhen.aliyuncs.com&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;华南 2&lt;/td&gt;
          &lt;td&gt;河源&lt;/td&gt;
          &lt;td&gt;47.113.155.0&lt;/td&gt;
          &lt;td&gt;oss-cn-heyuan.aliyuncs.com&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;华南 3&lt;/td&gt;
          &lt;td&gt;广州&lt;/td&gt;
          &lt;td&gt;8.134.16.0&lt;/td&gt;
          &lt;td&gt;oss-cn-guangzhou.aliyuncs.com&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;西南 1&lt;/td&gt;
          &lt;td&gt;成都&lt;/td&gt;
          &lt;td&gt;47.108.5.136&lt;/td&gt;
          &lt;td&gt;oss-cn-chengdu.aliyuncs.com&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;华东 5&lt;/td&gt;
          &lt;td&gt;南京&lt;/td&gt;
          &lt;td&gt;47.122.12.0&lt;/td&gt;
          &lt;td&gt;oss-cn-nanjing.aliyuncs.com&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;中国香港&lt;/td&gt;
          &lt;td&gt;香港&lt;/td&gt;
          &lt;td&gt;47.75.18.13&lt;/td&gt;
          &lt;td&gt;oss-cn-hongkong.aliyuncs.com&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;美国西部 1 （硅谷）&lt;/td&gt;
          &lt;td&gt;硅谷&lt;/td&gt;
          &lt;td&gt;47.88.73.1&lt;/td&gt;
          &lt;td&gt;oss-us-west-1.aliyuncs.com&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;美国东部 1 （弗吉尼亚）&lt;/td&gt;
          &lt;td&gt;弗吉尼亚&lt;/td&gt;
          &lt;td&gt;47.252.95.42&lt;/td&gt;
          &lt;td&gt;oss-us-east-1.aliyuncs.com&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;亚太东南 1 （新加坡）&lt;/td&gt;
          &lt;td&gt;新加坡&lt;/td&gt;
          &lt;td&gt;47.74.196.40&lt;/td&gt;
          &lt;td&gt;oss-ap-southeast-1.aliyuncs.com&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;亚太东南 2 （悉尼）&lt;/td&gt;
          &lt;td&gt;悉尼&lt;/td&gt;
          &lt;td&gt;47.91.39.21&lt;/td&gt;
          &lt;td&gt;oss-ap-southeast-2.aliyuncs.com&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;亚太东南 3 （吉隆坡）&lt;/td&gt;
          &lt;td&gt;吉隆坡&lt;/td&gt;
          &lt;td&gt;47.254.218.88&lt;/td&gt;
          &lt;td&gt;oss-ap-southeast-3.aliyuncs.com&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;亚太东南 5 （雅加达）&lt;/td&gt;
          &lt;td&gt;雅加达&lt;/td&gt;
          &lt;td&gt;149.129.200.96&lt;/td&gt;
          &lt;td&gt;oss-ap-southeast-5.aliyuncs.com&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;亚太南部 1 （孟买）&lt;/td&gt;
          &lt;td&gt;孟买&lt;/td&gt;
          &lt;td&gt;149.129.143.101&lt;/td&gt;
          &lt;td&gt;oss-ap-south-1.aliyuncs.com&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;亚太东北 1 （日本）&lt;/td&gt;
          &lt;td&gt;东京&lt;/td&gt;
          &lt;td&gt;47.91.8.42&lt;/td&gt;
          &lt;td&gt;oss-ap-northeast-1.aliyuncs.com&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;欧洲中部 1 （法兰克福）&lt;/td&gt;
          &lt;td&gt;法兰克福&lt;/td&gt;
          &lt;td&gt;47.254.186.9&lt;/td&gt;
          &lt;td&gt;oss-eu-central-1.aliyuncs.com&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;英国（伦敦）&lt;/td&gt;
          &lt;td&gt;伦敦&lt;/td&gt;
          &lt;td&gt;8.208.40.20&lt;/td&gt;
          &lt;td&gt;oss-eu-west-1.aliyuncs.com&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;中东东部 1 （迪拜）&lt;/td&gt;
          &lt;td&gt;迪拜&lt;/td&gt;
          &lt;td&gt;47.91.99.127&lt;/td&gt;
          &lt;td&gt;oss-me-east-1.aliyuncs.com&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;blockquote&gt;
&lt;p&gt;References: &lt;a href=&#34;https://developer.aliyun.com/article/1052381&#34;&gt;阿里云服务器测试IP地址不同地域节点Ping值测速延迟&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>查找文件所属 rpm 安装包的方法</title>
      <link>https://frytea.com/archives/1364/</link>
      <pubDate>Sat, 23 Nov 2024 03:00:12 +0000</pubDate>
      <guid>https://frytea.com/archives/1364/</guid>
      <description>&lt;p&gt;我来介绍几种在 RPM 系统中查找文件所属包的方法:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;对于已安装的文件，使用 &lt;code&gt;rpm -qf&lt;/code&gt; 命令:&lt;/li&gt;
&lt;/ol&gt;
&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;&#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;rpm -qf /path/to/file
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ol start=&#34;2&#34;&gt;
&lt;li&gt;使用 &lt;code&gt;dnf provides&lt;/code&gt; 命令(适用于已安装或未安装的文件):&lt;/li&gt;
&lt;/ol&gt;
&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;&#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;dnf provides /path/to/file
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ol start=&#34;3&#34;&gt;
&lt;li&gt;使用 &lt;code&gt;yum provides&lt;/code&gt; 命令(与 dnf provides 类似):&lt;/li&gt;
&lt;/ol&gt;
&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;&#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;yum provides /path/to/file
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;举个实际例子:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Kubespray 部署生产级 k8s 集群</title>
      <link>https://frytea.com/archives/1363/</link>
      <pubDate>Sat, 23 Nov 2024 03:00:00 +0000</pubDate>
      <guid>https://frytea.com/archives/1363/</guid>
      <description>&lt;p&gt;&lt;a href=&#34;https://github.com/kubernetes-sigs/kubespray&#34;&gt;kubespray&lt;/a&gt; 是基于 &lt;a href=&#34;https://docs.ansible.com/ansible/latest/index.html&#34;&gt;ansible&lt;/a&gt; 开发的一套 K8s 生命周期管理软件，由 k8s 官方 sig 维护。&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;遇到问题多读文档，搞清楚命令意味着什么再操作。&lt;/p&gt;&lt;/blockquote&gt;
&lt;h2 id=&#34;部署方法&#34;&gt;部署方法&lt;/h2&gt;
&lt;h3 id=&#34;获取部署程序&#34;&gt;获取部署程序&lt;/h3&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;# 从 kubespray 官方仓库拉取
git clone --depth=1 https://github.com/kubernetes-sigs/kubespray.git
# 切换到 v2.26.0 版本，不同版本对应支持不同 k8s 版本，根据需要切换
git checkout v2.26.0

# 进入部署程序目录
cd kubespray

# 创建 python 虚拟环境，激活，并安装依赖
python3 -m venv .venv
source .venv/bin/activate
pip3 install -r  requirements.txt
&lt;/code&gt;&lt;/pre&gt;&lt;h3 id=&#34;定义部署节点信息&#34;&gt;定义部署节点信息&lt;/h3&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;# 从集群配置模板拷贝一份
cp -rfp inventory/sample inventory/mycluster

# 定义节点 IP 清单，将 IP 更换为自己节点的 IP
declare -a IPS=(10.10.1.3 10.10.1.4 10.10.1.5)
CONFIG_FILE=inventory/mycluster/hosts.yaml python3 contrib/inventory_builder/inventory.py ${IPS[@]}

# 根据需要调整节点角色
inventory/mycluster/hosts.yaml
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;执行以上命令后会在生成一份节点角色清单在 &lt;code&gt;inventory/mycluster/hosts.yaml&lt;/code&gt; 路径下，可以根据需要调整，如调整希望作为 master 的节点、运行 etcd 的节点、作为 worker 的节点等。&lt;/p&gt;</description>
    </item>
    <item>
      <title>OpenWRT 软件源整理</title>
      <link>https://frytea.com/archives/1354/</link>
      <pubDate>Sat, 23 Nov 2024 02:59:38 +0000</pubDate>
      <guid>https://frytea.com/archives/1354/</guid>
      <description>&lt;h2 id=&#34;软件源整理&#34;&gt;软件源整理&lt;/h2&gt;
&lt;h3 id=&#34;官方镜像站&#34;&gt;官方镜像站&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;OpenWRT官方下载站点&lt;/strong&gt;：&lt;/li&gt;
&lt;/ol&gt;
&lt;ul&gt;
&lt;li&gt;URL: &lt;code&gt;https://downloads.openwrt.org/&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;这是 OpenWRT的主站点，提供所有官方版本的固件和软件包。该站点是获取最新稳定版、开发版（snapshot）和历史版本的主要来源。&lt;/li&gt;
&lt;/ul&gt;
&lt;ol start=&#34;2&#34;&gt;
&lt;li&gt;&lt;strong&gt;OpenWRT官方GitHub仓库&lt;/strong&gt;：&lt;/li&gt;
&lt;/ol&gt;
&lt;ul&gt;
&lt;li&gt;URL: &lt;code&gt;https://github.com/openwrt/openwrt&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;虽然主要用于代码存储和开发，但也提供了一些资源和文档链接。&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;国内镜像站&#34;&gt;国内镜像站&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;清华大学开源软件镜像站&lt;/strong&gt;：&lt;/li&gt;
&lt;/ol&gt;
&lt;ul&gt;
&lt;li&gt;URL: &lt;code&gt;https://mirrors.tuna.tsinghua.edu.cn/openwrt&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;提供了OpenWRT各个版本的镜像，非常稳定和快速。&lt;/li&gt;
&lt;/ul&gt;
&lt;ol start=&#34;2&#34;&gt;
&lt;li&gt;&lt;strong&gt;中科大开源镜像站&lt;/strong&gt;：&lt;/li&gt;
&lt;/ol&gt;
&lt;ul&gt;
&lt;li&gt;URL: &lt;code&gt;https://mirrors.ustc.edu.cn/openwrt&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;也是一个非常可靠的镜像源，提供OpenWRT的各个版本。&lt;/li&gt;
&lt;/ul&gt;
&lt;ol start=&#34;3&#34;&gt;
&lt;li&gt;&lt;strong&gt;阿里云开源镜像站&lt;/strong&gt;：&lt;/li&gt;
&lt;/ol&gt;
&lt;ul&gt;
&lt;li&gt;URL: &lt;code&gt;https://mirrors.aliyun.com/openwrt&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;提供稳定的OpenWRT镜像下载服务。&lt;/li&gt;
&lt;/ul&gt;
&lt;ol start=&#34;4&#34;&gt;
&lt;li&gt;&lt;strong&gt;重庆大学开源镜像站&lt;/strong&gt;：&lt;/li&gt;
&lt;/ol&gt;
&lt;ul&gt;
&lt;li&gt;URL: &lt;code&gt;https://mirrors.cqu.edu.cn/openwrt/&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;同样是一个可以选择的国内镜像源。&lt;/li&gt;
&lt;/ul&gt;
&lt;ol start=&#34;5&#34;&gt;
&lt;li&gt;&lt;strong&gt;南京大学开源镜像站&lt;/strong&gt;：&lt;/li&gt;
&lt;/ol&gt;
&lt;ul&gt;
&lt;li&gt;URL: &lt;code&gt;https://mirror.nju.edu.cn/openwrt/&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;提供了OpenWRT的多版本支持。&lt;/li&gt;
&lt;/ul&gt;
&lt;ol start=&#34;6&#34;&gt;
&lt;li&gt;&lt;strong&gt;上海交通大学开源镜像站&lt;/strong&gt;：&lt;/li&gt;
&lt;/ol&gt;
&lt;ul&gt;
&lt;li&gt;URL: &lt;code&gt;https://mirror.sjtu.edu.cn/openwrt/&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;提供稳定的开源软件镜像服务。&lt;/li&gt;
&lt;/ul&gt;
&lt;ol start=&#34;7&#34;&gt;
&lt;li&gt;&lt;strong&gt;兰州大学开源镜像站&lt;/strong&gt;：&lt;/li&gt;
&lt;/ol&gt;
&lt;ul&gt;
&lt;li&gt;URL: &lt;code&gt;https://mirror.lzu.edu.cn/openwrt/&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;提供多个开源项目的镜像下载。界面有点意思。&lt;/li&gt;
&lt;/ul&gt;
&lt;ol start=&#34;8&#34;&gt;
&lt;li&gt;&lt;strong&gt;浙江大学开源镜像站&lt;/strong&gt;：&lt;/li&gt;
&lt;/ol&gt;
&lt;ul&gt;
&lt;li&gt;URL: &lt;code&gt;https://mirrors.zju.edu.cn/openwrt/&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;提供多种开源软件项目的镜像。&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;个人镜像站&#34;&gt;个人镜像站&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;OpenWRT.AI软件仓库：&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;ul&gt;
&lt;li&gt;URL: &lt;code&gt;https://dl.openwrt.ai/&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://github.com/kiddin9&#34;&gt;Kiddin9&lt;/a&gt;的自建软件仓库，目前只支持OpenWRT 23.05版本。&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;如何选择和使用镜像站&#34;&gt;如何选择和使用镜像站&lt;/h2&gt;
&lt;p&gt;在OpenWRT路由器上配置官方软件源通常不需要额外操作，因为默认情况下，OpenWRT已经配置了官方软件源。只需运行&lt;code&gt;opkg update&lt;/code&gt;命令以确保软件包列表是最新的。&lt;/p&gt;</description>
    </item>
    <item>
      <title>镜像操作神器 skopeo 用法总结</title>
      <link>https://frytea.com/archives/1353/</link>
      <pubDate>Sat, 23 Nov 2024 02:59:30 +0000</pubDate>
      <guid>https://frytea.com/archives/1353/</guid>
      <description>&lt;p&gt;&lt;strong&gt;&lt;a href=&#34;https://github.com/containers/skopeo&#34;&gt;skopeo&lt;/a&gt;&lt;/strong&gt; 是一个命令行工具，可对容器镜像和容器存储进行操作。 在没有dockerd的环境下，使用 &lt;strong&gt;skopeo&lt;/strong&gt; 操作镜像是非常方便的。&lt;/p&gt;
&lt;h2 id=&#34;安装&#34;&gt;安装&lt;/h2&gt;
&lt;h3 id=&#34;包管理器&#34;&gt;包管理器&lt;/h3&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;# RHEL / CentOS Stream ≥ 8
sudo dnf install skopeo

# RHEL/CentOS ≤ 7.x
yum install skopeo

# openSUSE:
sudo zypper install skopeo

# alpine:
sudo apk add skopeo

# macOS:
brew install skopeo

# ArchLinux
sudo pacman -S skopeo
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;其他系统见 &lt;a href=&#34;https://github.com/containers/skopeo/blob/master/install.md&#34;&gt;安装文档&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>开源项目管理软件对比总结</title>
      <link>https://frytea.com/archives/1350/</link>
      <pubDate>Sat, 23 Nov 2024 02:59:22 +0000</pubDate>
      <guid>https://frytea.com/archives/1350/</guid>
      <description>&lt;p&gt;以下是 Kanboard、Wekan、Taiga、OpenProject 和 Redmine 这五个软件的对比表格：&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;功能/属性&lt;/th&gt;
          &lt;th&gt;Kanboard&lt;/th&gt;
          &lt;th&gt;Wekan&lt;/th&gt;
          &lt;th&gt;Taiga&lt;/th&gt;
          &lt;th&gt;OpenProject&lt;/th&gt;
          &lt;th&gt;Redmine&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;strong&gt;软件类型&lt;/strong&gt;&lt;/td&gt;
          &lt;td&gt;项目管理&lt;/td&gt;
          &lt;td&gt;项目管理&lt;/td&gt;
          &lt;td&gt;项目管理及敏捷开发&lt;/td&gt;
          &lt;td&gt;项目管理及协作&lt;/td&gt;
          &lt;td&gt;项目管理&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;strong&gt;开源&lt;/strong&gt;&lt;/td&gt;
          &lt;td&gt;是&lt;/td&gt;
          &lt;td&gt;是&lt;/td&gt;
          &lt;td&gt;是&lt;/td&gt;
          &lt;td&gt;是&lt;/td&gt;
          &lt;td&gt;是&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;strong&gt;界面语言&lt;/strong&gt;&lt;/td&gt;
          &lt;td&gt;多语言支持&lt;/td&gt;
          &lt;td&gt;多语言支持&lt;/td&gt;
          &lt;td&gt;多语言支持&lt;/td&gt;
          &lt;td&gt;多语言支持&lt;/td&gt;
          &lt;td&gt;多语言支持&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;strong&gt;主要功能&lt;/strong&gt;&lt;/td&gt;
          &lt;td&gt;看板、任务管理、时间跟踪&lt;/td&gt;
          &lt;td&gt;看板、任务管理&lt;/td&gt;
          &lt;td&gt;敏捷管理、Scrum、Kanban&lt;/td&gt;
          &lt;td&gt;甘特图、时间跟踪、资源管理&lt;/td&gt;
          &lt;td&gt;问题跟踪、甘特图、日历&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;strong&gt;安装方式&lt;/strong&gt;&lt;/td&gt;
          &lt;td&gt;自托管、Docker&lt;/td&gt;
          &lt;td&gt;自托管、Docker&lt;/td&gt;
          &lt;td&gt;自托管、云托管、Docker&lt;/td&gt;
          &lt;td&gt;自托管、云托管、Docker&lt;/td&gt;
          &lt;td&gt;自托管、云托管、Docker&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;strong&gt;集成功能&lt;/strong&gt;&lt;/td&gt;
          &lt;td&gt;少量插件、API&lt;/td&gt;
          &lt;td&gt;API、与其他系统集成&lt;/td&gt;
          &lt;td&gt;GitHub、GitLab、Slack 等&lt;/td&gt;
          &lt;td&gt;多种插件、API&lt;/td&gt;
          &lt;td&gt;丰富的插件与API支持&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;strong&gt;适用团队规模&lt;/strong&gt;&lt;/td&gt;
          &lt;td&gt;小型到中型&lt;/td&gt;
          &lt;td&gt;小型到中型&lt;/td&gt;
          &lt;td&gt;中型到大型，可扩展&lt;/td&gt;
          &lt;td&gt;小型到大型&lt;/td&gt;
          &lt;td&gt;小型到大型&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;strong&gt;界面友好性&lt;/strong&gt;&lt;/td&gt;
          &lt;td&gt;简单直观&lt;/td&gt;
          &lt;td&gt;简单直观&lt;/td&gt;
          &lt;td&gt;现代但稍复杂&lt;/td&gt;
          &lt;td&gt;功能丰富但可能更复杂&lt;/td&gt;
          &lt;td&gt;简单直观，但界面略显陈旧&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;strong&gt;社区活跃度&lt;/strong&gt;&lt;/td&gt;
          &lt;td&gt;中等&lt;/td&gt;
          &lt;td&gt;高&lt;/td&gt;
          &lt;td&gt;高&lt;/td&gt;
          &lt;td&gt;高&lt;/td&gt;
          &lt;td&gt;高&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;strong&gt;移动应用支持&lt;/strong&gt;&lt;/td&gt;
          &lt;td&gt;无&lt;/td&gt;
          &lt;td&gt;无&lt;/td&gt;
          &lt;td&gt;第三方应用或网页&lt;/td&gt;
          &lt;td&gt;无官方移动应用&lt;/td&gt;
          &lt;td&gt;无官方移动应用&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;strong&gt;特别支持功能&lt;/strong&gt;&lt;/td&gt;
          &lt;td&gt;强调简单性和看板视图&lt;/td&gt;
          &lt;td&gt;实时协作和活动流&lt;/td&gt;
          &lt;td&gt;支持敏捷项目管理流程&lt;/td&gt;
          &lt;td&gt;适合多种项目管理方法&lt;/td&gt;
          &lt;td&gt;自定义字段、复杂权限管理&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;Redmine 是一个久经考验的项目管理和问题跟踪工具，以其强大的可扩展性和插件系统而著称。它适合那些需要高度定制化和强大问题跟踪功能的团队。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Linux 使用 rinetd 实现端口转发重定向</title>
      <link>https://frytea.com/archives/1357/</link>
      <pubDate>Sat, 23 Nov 2024 02:59:11 +0000</pubDate>
      <guid>https://frytea.com/archives/1357/</guid>
      <description>&lt;h3 id=&#34;工具介绍&#34;&gt;工具介绍&lt;/h3&gt;
&lt;p&gt;linux 下简单好用的工具 rinetd，实现端口映射 / 转发 / 重定向。&lt;/p&gt;
&lt;p&gt;用于有效地将连接从一个 IP 地址 / 端口组合重定向到另一 IP 地址 / 端口组合。在操作虚拟服务器、防火墙等时很有用。&lt;/p&gt;</description>
    </item>
    <item>
      <title>mysql bin 日志过大处理方法</title>
      <link>https://frytea.com/archives/1356/</link>
      <pubDate>Sat, 23 Nov 2024 02:59:01 +0000</pubDate>
      <guid>https://frytea.com/archives/1356/</guid>
      <description>&lt;p&gt;我来帮您解决 MySQL binlog 文件占用空间过大的问题。以下是几个处理方案：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;清理旧的 binlog 文件&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;
&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;&#34;&gt;&lt;code class=&#34;language-sql&#34; data-lang=&#34;sql&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;-- 查看当前的 binlog 文件列表
&lt;/span&gt;&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;&lt;/span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;SHOW&lt;/span&gt; BINARY LOGS;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&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;-- 手动删除指定日期之前的 binlog
&lt;/span&gt;&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;&lt;/span&gt;PURGE BINARY LOGS &lt;span style=&#34;color:#66d9ef&#34;&gt;BEFORE&lt;/span&gt; DATE_SUB(NOW(), INTERVAL &lt;span style=&#34;color:#ae81ff&#34;&gt;7&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;DAY&lt;/span&gt;);
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&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;-- 或者删除指定文件之前的所有日志
&lt;/span&gt;&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;&lt;/span&gt;PURGE BINARY LOGS &lt;span style=&#34;color:#66d9ef&#34;&gt;TO&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;mysql-bin.000123&amp;#39;&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ol start=&#34;2&#34;&gt;
&lt;li&gt;&lt;strong&gt;设置 binlog 自动清理策略&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;
&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;&#34;&gt;&lt;code class=&#34;language-sql&#34; data-lang=&#34;sql&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;-- 设置 binlog 保留天数（比如保留7天）
&lt;/span&gt;&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;&lt;/span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;SET&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;GLOBAL&lt;/span&gt; expire_logs_days &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;7&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&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;-- MySQL 8.0之后使用以下命令
&lt;/span&gt;&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;&lt;/span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;SET&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;GLOBAL&lt;/span&gt; binlog_expire_logs_seconds &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;604800&lt;/span&gt;; &lt;span style=&#34;color:#75715e&#34;&gt;-- 7天 = 7*24*60*60秒
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ol start=&#34;3&#34;&gt;
&lt;li&gt;&lt;strong&gt;修改配置文件优化&lt;/strong&gt;
在 &lt;code&gt;my.cnf&lt;/code&gt; 或 &lt;code&gt;my.ini&lt;/code&gt; 中添加：&lt;/li&gt;
&lt;/ol&gt;
&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;&#34;&gt;&lt;code class=&#34;language-ini&#34; data-lang=&#34;ini&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# 设置 binlog 过期时间（天）&lt;/span&gt;
&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;expire_logs_days&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;7&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&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;# MySQL 8.0+ 使用&lt;/span&gt;
&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;binlog_expire_logs_seconds&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;604800&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&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;# 设置单个 binlog 文件的最大值（默认1G）&lt;/span&gt;
&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;max_binlog_size&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;100M&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;建议采取的步骤：&lt;/p&gt;</description>
    </item>
    <item>
      <title>BWH-DC99</title>
      <link>https://frytea.com/archives/1359/</link>
      <pubDate>Thu, 21 Nov 2024 16:12:48 +0000</pubDate>
      <guid>https://frytea.com/archives/1359/</guid>
      <description>&lt;p&gt;相关信息：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;厂商：BandwagonHost&lt;/li&gt;
&lt;li&gt;型号：DC99-MINIBOX-10-512&lt;/li&gt;
&lt;li&gt;规格：1C/512G&lt;/li&gt;
&lt;li&gt;磁盘：10G&lt;/li&gt;
&lt;li&gt;流量：500G&lt;/li&gt;
&lt;li&gt;位置：美国/洛杉矶&lt;/li&gt;
&lt;li&gt;价格：29USD/年&lt;/li&gt;
&lt;li&gt;年付人民币：209.69 RMB&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;测试脚本：&lt;/p&gt;</description>
    </item>
    <item>
      <title>Hetzner-CX22</title>
      <link>https://frytea.com/archives/1360/</link>
      <pubDate>Thu, 21 Nov 2024 16:12:32 +0000</pubDate>
      <guid>https://frytea.com/archives/1360/</guid>
      <description>&lt;p&gt;相关信息：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;厂商：Hetzner&lt;/li&gt;
&lt;li&gt;型号：CX22&lt;/li&gt;
&lt;li&gt;规格：2C/4G&lt;/li&gt;
&lt;li&gt;磁盘：40G&lt;/li&gt;
&lt;li&gt;流量：20T&lt;/li&gt;
&lt;li&gt;位置：德国/纽伦堡&lt;/li&gt;
&lt;li&gt;价格：3.29欧元/月&lt;/li&gt;
&lt;li&gt;年付人民币：302.96&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;测试脚本：&lt;/p&gt;</description>
    </item>
    <item>
      <title>Aliyun-ecs.e-c1m1.large</title>
      <link>https://frytea.com/archives/1361/</link>
      <pubDate>Thu, 21 Nov 2024 16:12:16 +0000</pubDate>
      <guid>https://frytea.com/archives/1361/</guid>
      <description>&lt;p&gt;相关信息：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;厂商：Aliyun&lt;/li&gt;
&lt;li&gt;型号：ecs.e-c1m1.large&lt;/li&gt;
&lt;li&gt;规格：2C/2G&lt;/li&gt;
&lt;li&gt;磁盘：40G&lt;/li&gt;
&lt;li&gt;流量：~T&lt;/li&gt;
&lt;li&gt;带宽：3 Mbps&lt;/li&gt;
&lt;li&gt;位置：&lt;/li&gt;
&lt;li&gt;价格：99 RMB/年&lt;/li&gt;
&lt;li&gt;年付人民币：99&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;测试脚本：&lt;/p&gt;</description>
    </item>
    <item>
      <title>Tencent-轻量-2C4G</title>
      <link>https://frytea.com/archives/1362/</link>
      <pubDate>Thu, 21 Nov 2024 16:12:09 +0000</pubDate>
      <guid>https://frytea.com/archives/1362/</guid>
      <description>&lt;p&gt;相关信息：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;厂商：Tencent&lt;/li&gt;
&lt;li&gt;型号：轻量-新客专享型-2C4G&lt;/li&gt;
&lt;li&gt;规格：2C/4G&lt;/li&gt;
&lt;li&gt;磁盘：70G&lt;/li&gt;
&lt;li&gt;流量：600T&lt;/li&gt;
&lt;li&gt;带宽：6 Mbps&lt;/li&gt;
&lt;li&gt;位置：中国/广州&lt;/li&gt;
&lt;li&gt;价格：159 RMB/年&lt;/li&gt;
&lt;li&gt;年付人民币：159&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;测试脚本：&lt;/p&gt;</description>
    </item>
    <item>
      <title>SugarHosts 2024 圣诞活动</title>
      <link>https://frytea.com/archives/1368/</link>
      <pubDate>Thu, 21 Nov 2024 11:07:00 +0000</pubDate>
      <guid>https://frytea.com/archives/1368/</guid>
      <description>&lt;p&gt;&lt;img alt=&#34;官网&#34; loading=&#34;lazy&#34; src=&#34;https://cdn-imagehost.frytea.com/images/2024/11/22/frn988.png&#34;&gt;&lt;/p&gt;
&lt;p&gt;老牌虚拟主机厂家，香港的虚拟主机拥有顶级线路。这家让我映像最深的就是他们的背景图都很好看。&lt;/p&gt;
&lt;h4 id=&#34;圣诞活动&#34;&gt;&lt;strong&gt;圣诞活动&lt;/strong&gt;&lt;/h4&gt;
&lt;p&gt;活动页面：https://page.sugarhosts.com/xmas2024zh
活动时间：2024年11月18日-2024年12月31日&lt;/p&gt;</description>
    </item>
    <item>
      <title>DogYun-HK-EQ</title>
      <link>https://frytea.com/archives/1369/</link>
      <pubDate>Thu, 21 Nov 2024 11:05:00 +0000</pubDate>
      <guid>https://frytea.com/archives/1369/</guid>
      <description>&lt;p&gt;相关信息：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;厂商：DogYun&lt;/li&gt;
&lt;li&gt;型号：hk.eq.s&lt;/li&gt;
&lt;li&gt;规格：1C/1G&lt;/li&gt;
&lt;li&gt;磁盘：20G&lt;/li&gt;
&lt;li&gt;流量：500G&lt;/li&gt;
&lt;li&gt;带宽：50Mbps&lt;/li&gt;
&lt;li&gt;位置：中国/香港&lt;/li&gt;
&lt;li&gt;价格：35RMB/年 / 24.5RMB/Y 折扣码 &lt;code&gt;HK.EQ&lt;/code&gt; 七折首发￥24.50起&lt;/li&gt;
&lt;li&gt;年付：245 RMB&lt;/li&gt;
&lt;li&gt;购买链接：https://vm.dogyun.com/server/create/132&lt;/li&gt;
&lt;li&gt;测试IP：43.247.133.1&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;测试脚本：&lt;/p&gt;</description>
    </item>
    <item>
      <title>Kubernetes 使用 Kubectl 重启 Pod 的多种方法</title>
      <link>https://frytea.com/archives/1349/</link>
      <pubDate>Wed, 20 Nov 2024 10:10:31 +0000</pubDate>
      <guid>https://frytea.com/archives/1349/</guid>
      <description>&lt;p&gt;大家可能都知道 &lt;code&gt;kubectl&lt;/code&gt; 其实没有 &lt;code&gt;restart pod&lt;/code&gt; 这个命令，这个主要是由于在 &lt;code&gt;k8s&lt;/code&gt; 中 &lt;code&gt;pod&lt;/code&gt; 的管理属于 &lt;code&gt;rs&lt;/code&gt; 等控制器，并不需要运维手动维护，但有时候，我们修改了 &lt;code&gt;configmap&lt;/code&gt; 的配置文件后，希望重启 &lt;code&gt;pod&lt;/code&gt; 加载配置，此时就需要 “重启”  &lt;code&gt;Pod&lt;/code&gt;。这里说的“重启”是加了引号的，准确地来说，是重建 &lt;code&gt;pod&lt;/code&gt;，给用户的感觉是重启。&lt;/p&gt;</description>
    </item>
    <item>
      <title>使用 earlyoom 提前终止 Linux 高内存占用进程</title>
      <link>https://frytea.com/archives/1348/</link>
      <pubDate>Wed, 20 Nov 2024 10:09:47 +0000</pubDate>
      <guid>https://frytea.com/archives/1348/</guid>
      <description>&lt;p&gt;当我在服务器上运行一个不太重要的进程时，它的内存使用量会随实际情况不断发生变化，当它的内存超过某个阈值时，我想要 kill 掉它并重启该进程。为了满足我这个需求，我了解到了 &lt;code&gt;earlyoom&lt;/code&gt; 这个程序。&lt;/p&gt;</description>
    </item>
    <item>
      <title>2024 年黑五云服务活动汇总</title>
      <link>https://frytea.com/archives/1358/</link>
      <pubDate>Wed, 20 Nov 2024 10:09:00 +0000</pubDate>
      <guid>https://frytea.com/archives/1358/</guid>
      <description>&lt;p&gt;2024 年主机厂商黑五活动集合，持续更新。&lt;/p&gt;
&lt;p&gt;2024年黑色星期五为&lt;strong&gt;11月29日&lt;/strong&gt;。&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;仅做信息汇集，不做购买建议。&lt;/p&gt;&lt;/blockquote&gt;
&lt;h2 id=&#34;云主机厂商&#34;&gt;云主机厂商&lt;/h2&gt;
&lt;h3 id=&#34;racknerd&#34;&gt;Racknerd&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;官方网站：&lt;a href=&#34;https://my.racknerd.com/aff.php?aff=12859&#34;&gt;https://www.racknerd.com/&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;官方促销电报群：&lt;/strong&gt;&lt;a href=&#34;https://t.me/racknerd_promo&#34;&gt;@racknerd_promo&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img alt=&#34;Racknerd 黑五宣传海报&#34; loading=&#34;lazy&#34; src=&#34;https://cdn-imagehost.frytea.com/images/2024/11/20/r3dffe.png&#34;&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Kubernetes 使用 multus 插件增加子接口并固定 ip</title>
      <link>https://frytea.com/archives/1347/</link>
      <pubDate>Tue, 19 Nov 2024 16:17:46 +0000</pubDate>
      <guid>https://frytea.com/archives/1347/</guid>
      <description>&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;&#34;&gt;&lt;code class=&#34;language-yaml&#34; data-lang=&#34;yaml&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;apiVersion&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;k8s.cni.cncf.io/v1&amp;#34;&lt;/span&gt;  
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;kind&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;NetworkAttachmentDefinition  &lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;metadata&lt;/span&gt;:  
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;name&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;macvlan8  &lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;namespace&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;multicast  &lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;spec&lt;/span&gt;:  
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;config&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;{  
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;   &amp;#34;cniVersion&amp;#34;: &amp;#34;0.3.1&amp;#34;,  
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;   &amp;#34;plugins&amp;#34;: [  
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;     {  
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;       &amp;#34;type&amp;#34;: &amp;#34;macvlan&amp;#34;,  
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;       &amp;#34;capabilities&amp;#34;: { &amp;#34;ips&amp;#34;: true },  
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;       &amp;#34;master&amp;#34;: &amp;#34;eth1&amp;#34;,  
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;       &amp;#34;mode&amp;#34;: &amp;#34;bridge&amp;#34;,  
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;       &amp;#34;ipam&amp;#34;: {  
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;         &amp;#34;type&amp;#34;: &amp;#34;static&amp;#34;,  
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;         &amp;#34;addresses&amp;#34;: [  
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;             {  
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;                 &amp;#34;address&amp;#34;: &amp;#34;192.168.25.62/22&amp;#34;,  
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;                 &amp;#34;gateway&amp;#34;: &amp;#34;192.168.27.254&amp;#34;  
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;             }  
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;         ],  
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;         &amp;#34;routes&amp;#34;: [  
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;             { &amp;#34;dst&amp;#34;: &amp;#34;192.168.24.0/22&amp;#34;, &amp;#34;gw&amp;#34;: &amp;#34;192.168.27.254&amp;#34; },  
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;             { &amp;#34;dst&amp;#34;: &amp;#34;192.168.5.0/24&amp;#34; }  
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;         ]  
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;       }  
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;     }  
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;   ]  
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt; }&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;示例负载：&lt;/p&gt;</description>
    </item>
    <item>
      <title>华为官方鸿蒙开发者及核心云技术认证仅需1元</title>
      <link>https://frytea.com/archives/1352/</link>
      <pubDate>Sat, 16 Nov 2024 02:55:00 +0000</pubDate>
      <guid>https://frytea.com/archives/1352/</guid>
      <description>&lt;p&gt;华为云最近有一个 &lt;a href=&#34;https://edu.huaweicloud.com/activity/shuangshiyi.html&#34;&gt; 11.11开发者认证限时秒杀 &lt;/a&gt; 活动，云技术精髓与鸿蒙应用开发考证仅 1 元。&lt;/p&gt;
&lt;p&gt;活动时间：2024年11月7日-2024年12月12日；（活动期间如有调整，以届时活动页面展示为准）&lt;/p&gt;</description>
    </item>
    <item>
      <title>华为云沃土计划，401元无门槛代金券</title>
      <link>https://frytea.com/archives/1351/</link>
      <pubDate>Sat, 16 Nov 2024 02:47:28 +0000</pubDate>
      <guid>https://frytea.com/archives/1351/</guid>
      <description>&lt;p&gt;领取华为云沃土计划，401元无门槛代金券&lt;/p&gt;
&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://cdn-imagehost.frytea.com/images/2024/11/16/hb32nf.jpg&#34;&gt;&lt;/p&gt;
&lt;p&gt;首先进入 &lt;a href=&#34;https://developer.huaweicloud.com/space/home&#34;&gt;开发者空间&lt;/a&gt; - 点击左侧沃土云创 - 计划列表 - 加入个人方向&lt;/p&gt;
&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://cdn-imagehost.frytea.com/images/2024/11/16/h9pv3q.png&#34;&gt;&lt;/p&gt;
&lt;p&gt;然后，左侧激励管理 - 计划权益 - 点击申请学习代金券（云服务）&lt;/p&gt;</description>
    </item>
    <item>
      <title>kubernetes 使用 multus 为 pod 增加子接口</title>
      <link>https://frytea.com/archives/1346/</link>
      <pubDate>Fri, 15 Nov 2024 13:01:05 +0000</pubDate>
      <guid>https://frytea.com/archives/1346/</guid>
      <description>&lt;h2 id=&#34;部署-multus-cni&#34;&gt;部署 multus-cni&lt;/h2&gt;
&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;&#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;git clone https://github.com/k8snetworkplumbingwg/multus-cni.git
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;cat ./deployments/multus-daemonset-thick.yml | kubectl apply -f -
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;创建-networkattachmentdefinition&#34;&gt;创建 NetworkAttachmentDefinition&lt;/h2&gt;
&lt;p&gt;&lt;code&gt;NetworkAttachmentDefinition&lt;/code&gt; 是 Kubernetes 中的一个自定义资源定义（Custom Resource Definition，简称 CRD）。这是由 Multus CNI 插件引入的，用于在 Kubernetes 中定义和管理额外的网络接口。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Oracle Cloud （甲骨文云）全球各主要地区 IP 测试地址</title>
      <link>https://frytea.com/archives/1344/</link>
      <pubDate>Fri, 15 Nov 2024 13:00:43 +0000</pubDate>
      <guid>https://frytea.com/archives/1344/</guid>
      <description>&lt;h1 id=&#34;亚太地区&#34;&gt;亚太地区&lt;/h1&gt;
&lt;p&gt;日本东部 东京：&lt;/p&gt;
&lt;p&gt;objectstorage.ap-tokyo-1.oraclecloud.com&lt;/p&gt;
&lt;p&gt;日本中部 大阪：&lt;/p&gt;
&lt;p&gt;objectstorage.ap-osaka-1.oraclecloud.com&lt;/p&gt;
&lt;p&gt;韩国中部 首尔：&lt;/p&gt;
&lt;p&gt;objectstorage.ap-seoul-1.oraclecloud.com&lt;/p&gt;
&lt;p&gt;韩国北部 春川：&lt;/p&gt;
&lt;p&gt;objectstorage.ap-chuncheon-1.oraclecloud.com&lt;/p&gt;
&lt;p&gt;新加坡&lt;/p&gt;
&lt;p&gt;objectstorage.ap-singapore-1.oraclecloud.com&lt;/p&gt;
&lt;p&gt;澳大利亚东部 悉尼：&lt;/p&gt;
&lt;p&gt;objectstorage.ap-sydney-1.oraclecloud.com&lt;/p&gt;
&lt;p&gt;澳大利亚东南部 墨尔本：&lt;/p&gt;
&lt;p&gt;objectstorage.ap-melbourne-1.oraclecloud.com&lt;/p&gt;
&lt;p&gt;印度西部 孟买：&lt;/p&gt;
&lt;p&gt;objectstorage.ap-mumbai-1.oraclecloud.com&lt;/p&gt;
&lt;p&gt;印度南部 海得拉巴：&lt;/p&gt;
&lt;p&gt;objectstorage.ap-hyderabad-1.oraclecloud.com&lt;/p&gt;
&lt;p&gt;以色列中部 耶路撒冷：&lt;/p&gt;</description>
    </item>
    <item>
      <title>解决 PVE 报错 rbd error list images</title>
      <link>https://frytea.com/archives/1345/</link>
      <pubDate>Thu, 14 Nov 2024 11:47:06 +0000</pubDate>
      <guid>https://frytea.com/archives/1345/</guid>
      <description>&lt;p&gt;针对下列报错：&lt;/p&gt;
&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;&#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;    2021-05-26 11:06:11 ERROR: Failed to sync data - rbd error: rbd: listing images failed: &lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;2&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt; No such file or directory
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;解决方法&#34;&gt;解决方法&lt;/h2&gt;
&lt;p&gt;进入命令行，执行&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;# 查看 rbd 清单
rbd ls -l &amp;lt;cephpool-name&amp;gt;
# 例如：
rbd ls -l data

# 使用命令删除错误磁盘镜像
rbd rm &amp;lt;img-name&amp;gt; -p &amp;lt;cephpool-name&amp;gt;

# 例如
rbd rm vm-111-disk-0 -p data
&lt;/code&gt;&lt;/pre&gt;&lt;h2 id=&#34;references&#34;&gt;References&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://foxi.buduanwang.vip/virtualization/1077.html/&#34;&gt; PVE迁移报错rbd error: rbd: listing images failed: (2) No such file or directory (500) &lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;#ProxmoxVE #Ceph&lt;/p&gt;</description>
    </item>
    <item>
      <title>getopts 处理 shell 参数</title>
      <link>https://frytea.com/archives/1337/</link>
      <pubDate>Thu, 14 Nov 2024 11:46:53 +0000</pubDate>
      <guid>https://frytea.com/archives/1337/</guid>
      <description>&lt;p&gt;处理命令行参数是一个相似而又复杂的事情，为此，&lt;code&gt;C&lt;/code&gt;提供了&lt;code&gt;getopt/getopt_long&lt;/code&gt;等函数，&lt;br&gt;
C++的&lt;code&gt;boost&lt;/code&gt;提供了&lt;code&gt;Options&lt;/code&gt;库，在&lt;code&gt;shell&lt;/code&gt;中，处理此事的是&lt;code&gt;getopts&lt;/code&gt;和&lt;code&gt;getopt&lt;/code&gt;.&lt;br&gt;
&lt;code&gt;getopts&lt;/code&gt;和&lt;code&gt;getopt&lt;/code&gt;功能相似但又不完全相同，其中&lt;code&gt;getopt&lt;/code&gt;是独立的可执行文件，而&lt;code&gt;getopts&lt;/code&gt;是由Bash内置的。&lt;br&gt;
先来看看参数传递的典型用法:&lt;/p&gt;</description>
    </item>
    <item>
      <title>名侦探柯南松田阵平出场集数（最新1069话）</title>
      <link>https://frytea.com/archives/1343/</link>
      <pubDate>Wed, 13 Nov 2024 04:01:00 +0000</pubDate>
      <guid>https://frytea.com/archives/1343/</guid>
      <description>&lt;p&gt;松田阵平，《名侦探柯南》原作漫画及其衍生作品中登场的角色，警视厅警备部机动队爆炸物处理班队员。在萩原研二殉职后为了给朋友报仇而多次申请调往处理炸弹犯的特殊犯系，领导为了让他冷静一下而将他调任到了强行犯系。&lt;/p&gt;</description>
    </item>
    <item>
      <title>rsync 用法教程</title>
      <link>https://frytea.com/archives/1336/</link>
      <pubDate>Mon, 11 Nov 2024 13:51:44 +0000</pubDate>
      <guid>https://frytea.com/archives/1336/</guid>
      <description>&lt;h2 id=&#34;简介&#34;&gt;简介&lt;/h2&gt;
&lt;p&gt;rsync 是一个常用的 Linux 应用程序，用于文件同步。&lt;/p&gt;
&lt;p&gt;它可以在本地计算机与远程计算机之间，或者两个本地目录之间同步文件（但不支持两台远程计算机之间的同步）。它也可以当作文件复制工具，替代&lt;code&gt;cp&lt;/code&gt;和&lt;code&gt;mv&lt;/code&gt;命令。&lt;/p&gt;</description>
    </item>
    <item>
      <title>k8s 使用官方 compose 部署 plausible</title>
      <link>https://frytea.com/archives/1335/</link>
      <pubDate>Mon, 11 Nov 2024 13:50:41 +0000</pubDate>
      <guid>https://frytea.com/archives/1335/</guid>
      <description>&lt;h1 id=&#34;k8s-使用官方-compose-部署-plausible&#34;&gt;k8s 使用官方 compose 部署 plausible&lt;/h1&gt;
&lt;p&gt;主要记录使用 kompose 转换部署 compose 程序的思路，具体过程根据情况调整。&lt;/p&gt;
&lt;p&gt;首先获取官方 compose 配置：&lt;/p&gt;
&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;&#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;git clone -b v2.1.4 --single-branch https://github.com/plausible/community-edition plausible-ce
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;cd plausible-ce
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h1 id=&#34;调整配置&#34;&gt;调整配置&lt;/h1&gt;
&lt;p&gt;之后根据需要定制配置文件：&lt;/p&gt;
&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;&#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;$ touch .env
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;$ echo &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;BASE_URL=https://plausible.example.com&amp;#34;&lt;/span&gt; &amp;gt;&amp;gt; .env
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;$ echo &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;SECRET_KEY_BASE=&lt;/span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;$(&lt;/span&gt;openssl rand -base64 48&lt;span style=&#34;color:#66d9ef&#34;&gt;)&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt; &amp;gt;&amp;gt; .env
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&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;# 服务暴露根据需要配置&lt;/span&gt;
&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;# 这里采用反代的方法&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;$ echo &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;HTTP_PORT=8000&amp;#34;&lt;/span&gt; &amp;gt;&amp;gt; .env
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;之后定制一下 compose.yaml，其中有一些不合理的地方，直接使用 kompose 转换会出问题：&lt;/p&gt;</description>
    </item>
    <item>
      <title>Vim 替换文本</title>
      <link>https://frytea.com/archives/1334/</link>
      <pubDate>Sun, 10 Nov 2024 11:40:21 +0000</pubDate>
      <guid>https://frytea.com/archives/1334/</guid>
      <description>&lt;p&gt;在vim中&lt;strong&gt;查找和替换命令&lt;/strong&gt;需要在&lt;strong&gt;末行模式&lt;/strong&gt;下执行。&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;&lt;strong&gt;命令&lt;/strong&gt;&lt;/th&gt;
          &lt;th&gt;&lt;strong&gt;功能&lt;/strong&gt;&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;:%s/旧文本/新文本/g&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;全局替换。&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;:s/旧文本/新闻本/g&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;可视区域替换。&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;:%s/旧文本/新文本/gc&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;确认替换。(推荐使用)&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id=&#34;全局替换&#34;&gt; 全局替换&lt;/h2&gt;
&lt;p&gt;&lt;code&gt;:%s/旧文本/新文本/g&lt;/code&gt;命令：用新文本一次性替换文件中所有出现的旧文本。&lt;/p&gt;</description>
    </item>
    <item>
      <title>限制线程数避免Hugo资源耗尽被杀</title>
      <link>https://frytea.com/archives/1333/</link>
      <pubDate>Sun, 10 Nov 2024 11:40:10 +0000</pubDate>
      <guid>https://frytea.com/archives/1333/</guid>
      <description>&lt;p&gt;如果项目很大，hugo默认启动物理核心数个线程并发，但如果已有程序占用，就可能导致 hugo 进程杀死。&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;hugo --gc --minify
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;此时可以尝试使用下面这个命令：&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;HUGO_NUMWORKERMULTIPLIER=2 hugo --gc --minify --cacheDir /root/archive/cacge
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;主要是这两个参数：&lt;/p&gt;</description>
    </item>
    <item>
      <title>名侦探柯南妃英理出场集数（最新1069话）</title>
      <link>https://frytea.com/archives/1341/</link>
      <pubDate>Sun, 10 Nov 2024 11:40:00 +0000</pubDate>
      <guid>https://frytea.com/archives/1341/</guid>
      <description>&lt;p&gt;妃英理，《名侦探柯南》原作漫画及其衍生作品中登场的角色。精明强干的律师，毛利兰的母亲与毛利小五郎的妻子，工藤有希子的高中同学。10年前因故与丈夫分居。&lt;/p&gt;</description>
    </item>
    <item>
      <title>《名侦探柯南》官方人气投票结果</title>
      <link>https://frytea.com/archives/1340/</link>
      <pubDate>Sat, 09 Nov 2024 02:33:00 +0000</pubDate>
      <guid>https://frytea.com/archives/1340/</guid>
      <description>&lt;p&gt;《名侦探柯南》史上首次官方人气投票“绯色的总选举”公布最终结果，赤井秀一获得冠军，漫画家青山刚昌特别绘图祝贺。此外，安室透、灰原哀分获亚季军。柯南排名第六，工藤新一排第七。“小黑人”排名第三十三位。&lt;/p&gt;</description>
    </item>
    <item>
      <title>名侦探柯南TV安室透出场集数（最新1110话）</title>
      <link>https://frytea.com/archives/1339/</link>
      <pubDate>Sat, 09 Nov 2024 02:27:00 +0000</pubDate>
      <guid>https://frytea.com/archives/1339/</guid>
      <description>&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;登场&lt;/strong&gt; 指安室透以原本身份正面登场&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;回忆登场&lt;/strong&gt; 指在他人的回忆中登场&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;新回忆&lt;/strong&gt; 指回忆的内容与画面为此前剧情中未曾出现过的内容&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;旧回忆&lt;/strong&gt; 指回忆的内容与画面为此前剧情中曾经出现过的内容&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;远影&lt;/strong&gt; 指他人提及或想到时出现的安室透的形象&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;提及&lt;/strong&gt; 指仅提及名字或身份、无画面&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;声音&lt;/strong&gt; 指安室未以本来形象登场时出现其声音&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;想象&lt;/strong&gt; 指凭空想象出的角色形象（通常与角色本人行为或性格不符）&lt;/li&gt;
&lt;/ul&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;集数&lt;/th&gt;
          &lt;th&gt;标题&lt;/th&gt;
          &lt;th&gt;播出日期&lt;/th&gt;
          &lt;th&gt;登场形式&lt;/th&gt;
          &lt;th&gt;备注&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;509(556)&lt;/td&gt;
          &lt;td&gt;&lt;a href=&#34;https://www.conanpedia.com/TV509&#34; title=&#34;TV509&#34;&gt;红白黄色与侦探团&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;2008/07/14&lt;/td&gt;
          &lt;td&gt;提及&lt;/td&gt;
          &lt;td&gt;茱蒂收到怜奈的通知后向柯南提及&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;563(614)&lt;/td&gt;
          &lt;td&gt;&lt;a href=&#34;https://www.conanpedia.com/TV563&#34; title=&#34;TV563&#34;&gt;侦探团VS强盗团（骚乱）&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;2010/01/23&lt;/td&gt;
          &lt;td&gt;&lt;strong&gt;登场&lt;/strong&gt;/远影/提及&lt;/td&gt;
          &lt;td&gt;以火伤赤井的身份登场；詹姆斯、茱蒂和卡迈尔提到&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;564(615)&lt;/td&gt;
          &lt;td&gt;&lt;a href=&#34;https://www.conanpedia.com/TV564&#34; title=&#34;TV564&#34;&gt;侦探团VS强盗团（沉默）&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;2010/01/30&lt;/td&gt;
          &lt;td&gt;&lt;strong&gt;登场&lt;/strong&gt;/远影&lt;/td&gt;
          &lt;td&gt;以火伤赤井的身份登场&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;578(629)&lt;/td&gt;
          &lt;td&gt;&lt;a href=&#34;https://www.conanpedia.com/TV578&#34; title=&#34;TV578&#34;&gt;召唤危机的红色前兆&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;2010/06/26&lt;/td&gt;
          &lt;td&gt;&lt;strong&gt;旧回忆&lt;/strong&gt;/提及&lt;/td&gt;
          &lt;td&gt;侦探团三人提及&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;579(630)&lt;/td&gt;
          &lt;td&gt;&lt;a href=&#34;https://www.conanpedia.com/TV579&#34; title=&#34;TV579&#34;&gt;黑色13的暗示&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;2010/07/03&lt;/td&gt;
          &lt;td&gt;&lt;strong&gt;登场&lt;/strong&gt;/&lt;strong&gt;新回忆&lt;/strong&gt;/&lt;strong&gt;旧回忆&lt;/strong&gt;/远影/提及&lt;/td&gt;
          &lt;td&gt;以火伤赤井的身份登场；部分回忆情节为动画原创&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;580(631)&lt;/td&gt;
          &lt;td&gt;&lt;a href=&#34;https://www.conanpedia.com/TV580&#34; title=&#34;TV580&#34;&gt;逼近的黑色时限&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;2010/07/10&lt;/td&gt;
          &lt;td&gt;&lt;strong&gt;登场&lt;/strong&gt;/提及&lt;/td&gt;
          &lt;td&gt;以火伤赤井的身份登场；琴酒、伏特加和基尔提及&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;581(632)&lt;/td&gt;
          &lt;td&gt;&lt;a href=&#34;https://www.conanpedia.com/TV581&#34; title=&#34;TV581&#34;&gt;摇摆的红色准星&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;2010/07/17&lt;/td&gt;
          &lt;td&gt;&lt;strong&gt;登场&lt;/strong&gt;/&lt;strong&gt;新回忆&lt;/strong&gt;/提及&lt;/td&gt;
          &lt;td&gt;以火伤赤井的身份登场；路人回忆，琴酒对波本的独断专行自言自语，冲矢向柯南提及&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;667(719)&lt;/td&gt;
          &lt;td&gt;&lt;a href=&#34;https://www.conanpedia.com/TV667&#34; title=&#34;TV667&#34;&gt;婚礼前夕（前篇）&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;2012/09/01&lt;/td&gt;
          &lt;td&gt;&lt;strong&gt;登场&lt;/strong&gt;/&lt;strong&gt;新回忆&lt;/strong&gt;/&lt;strong&gt;旧回忆&lt;/strong&gt;/提及&lt;/td&gt;
          &lt;td&gt;初登场；姓名牌：安室透（29岁），探侦；安室和春冈回忆并提及，伴场向加门提及&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;668(720)&lt;/td&gt;
          &lt;td&gt;&lt;a href=&#34;https://www.conanpedia.com/TV668&#34; title=&#34;TV668&#34;&gt;婚礼前夕（后篇）&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;2012/09/08&lt;/td&gt;
          &lt;td&gt;&lt;strong&gt;登场&lt;/strong&gt;/&lt;strong&gt;旧回忆&lt;/strong&gt;&lt;/td&gt;
          &lt;td&gt;前情回顾（动画原创），姓名牌同上（动画原创）&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;671(723)&lt;/td&gt;
          &lt;td&gt;&lt;a href=&#34;https://www.conanpedia.com/TV671&#34; title=&#34;TV671&#34;&gt;侦探们的夜想曲（事件）&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;2012/10/06&lt;/td&gt;
          &lt;td&gt;&lt;strong&gt;登场&lt;/strong&gt;/&lt;strong&gt;旧回忆&lt;/strong&gt;/提及&lt;/td&gt;
          &lt;td&gt;前情回顾（动画原创），姓名牌同上（动画原创）；目暮和小五郎提及&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;672(724)&lt;/td&gt;
          &lt;td&gt;&lt;a href=&#34;https://www.conanpedia.com/TV672&#34; title=&#34;TV672&#34;&gt;侦探们的夜想曲（绑架）&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;2012/10/13&lt;/td&gt;
          &lt;td&gt;&lt;strong&gt;登场&lt;/strong&gt;/&lt;strong&gt;旧回忆&lt;/strong&gt;/提及&lt;/td&gt;
          &lt;td&gt;前情回顾（动画原创）；安室回忆，世良向小兰提及&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;673(725)&lt;/td&gt;
          &lt;td&gt;&lt;a href=&#34;https://www.conanpedia.com/TV673&#34; title=&#34;TV673&#34;&gt;侦探们的夜想曲（推理）&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;2012/10/20&lt;/td&gt;
          &lt;td&gt;&lt;strong&gt;登场&lt;/strong&gt;/&lt;strong&gt;旧回忆&lt;/strong&gt;/提及&lt;/td&gt;
          &lt;td&gt;前情回顾（动画原创）；柯南回忆&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;674(726)&lt;/td&gt;
          &lt;td&gt;&lt;a href=&#34;https://www.conanpedia.com/TV674&#34; title=&#34;TV674&#34;&gt;侦探们的夜想曲（波本）&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;2012/10/27&lt;/td&gt;
          &lt;td&gt;&lt;strong&gt;登场&lt;/strong&gt;/&lt;strong&gt;旧回忆&lt;/strong&gt;/远影/提及&lt;/td&gt;
          &lt;td&gt;前情回顾（动画原创）；安室对事件形势的判断与部分飙车画面为动画原创，贝尔摩德在电话中提到&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;675(727)&lt;/td&gt;
          &lt;td&gt;&lt;a href=&#34;https://www.conanpedia.com/TV675&#34; title=&#34;TV675&#34;&gt;一丁点都不原谅（前篇）&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;2012/11/10&lt;/td&gt;
          &lt;td&gt;&lt;strong&gt;登场&lt;/strong&gt;/提及&lt;/td&gt;
          &lt;td&gt;以火伤赤井的身份登场；世良提及&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;681(773)&lt;/td&gt;
          &lt;td&gt;&lt;a href=&#34;https://www.conanpedia.com/TV681&#34; title=&#34;TV681&#34;&gt;赌上性命的恋爱转播（直播开始）&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;2013/01/05&lt;/td&gt;
          &lt;td&gt;&lt;strong&gt;登场&lt;/strong&gt;/&lt;strong&gt;旧回忆&lt;/strong&gt;/提及&lt;/td&gt;
          &lt;td&gt;安室回忆，柯南和侦探团三人提及&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;683(775)&lt;/td&gt;
          &lt;td&gt;&lt;a href=&#34;https://www.conanpedia.com/TV683&#34; title=&#34;TV683&#34;&gt;赌上性命的恋爱转播（直击现场）&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;2013/01/19&lt;/td&gt;
          &lt;td&gt;&lt;strong&gt;登场&lt;/strong&gt;/提及&lt;/td&gt;
          &lt;td&gt;伊达向高木提及&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;699(751)&lt;/td&gt;
          &lt;td&gt;&lt;a href=&#34;https://www.conanpedia.com/TV699&#34; title=&#34;TV699&#34;&gt;逼近灰原秘密的黑影（前篇）&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;2013/06/08&lt;/td&gt;
          &lt;td&gt;&lt;strong&gt;登场&lt;/strong&gt;&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;700(752)&lt;/td&gt;
          &lt;td&gt;&lt;a href=&#34;https://www.conanpedia.com/TV700&#34; title=&#34;TV700&#34;&gt;逼近灰原秘密的黑影（后篇）&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;2013/06/15&lt;/td&gt;
          &lt;td&gt;&lt;strong&gt;登场&lt;/strong&gt;/&lt;strong&gt;旧回忆&lt;/strong&gt;/声音&lt;/td&gt;
          &lt;td&gt;波本回忆&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;701(753)&lt;/td&gt;
          &lt;td&gt;&lt;a href=&#34;https://www.conanpedia.com/TV701&#34; title=&#34;TV701&#34;&gt;漆黑的特快列车（发车）&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;2013/07/13&lt;/td&gt;
          &lt;td&gt;&lt;strong&gt;登场&lt;/strong&gt;/提及&lt;/td&gt;
          &lt;td&gt;贝尔摩德在电话中向琴酒提及&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;702(754)&lt;/td&gt;
          &lt;td&gt;&lt;a href=&#34;https://www.conanpedia.com/TV702&#34; title=&#34;TV702&#34;&gt;漆黑的特快列车（交叉）&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;2013/07/20&lt;/td&gt;
          &lt;td&gt;&lt;strong&gt;登场&lt;/strong&gt;/提及&lt;/td&gt;
          &lt;td&gt;琴酒和伏特加提及&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;703(755)&lt;/td&gt;
          &lt;td&gt;&lt;a href=&#34;https://www.conanpedia.com/TV703&#34; title=&#34;TV703&#34;&gt;漆黑的特快列车（隧道）&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;2013/07/27&lt;/td&gt;
          &lt;td&gt;&lt;strong&gt;登场&lt;/strong&gt;&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;704(756)&lt;/td&gt;
          &lt;td&gt;&lt;a href=&#34;https://www.conanpedia.com/TV704&#34; title=&#34;TV704&#34;&gt;漆黑的特快列车（终点）&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;2013/08/03&lt;/td&gt;
          &lt;td&gt;&lt;strong&gt;登场&lt;/strong&gt;/&lt;strong&gt;旧回忆&lt;/strong&gt;/提及&lt;/td&gt;
          &lt;td&gt;揭晓波本的真实身份为安室透，以及假扮火伤赤井的目的&lt;a href=&#34;https://www.conanpedia.com/zh-hans/%E5%AE%89%E5%AE%A4%E9%80%8F#cite_note-73&#34;&gt;[注 50]&lt;/a&gt;；波本回忆，伏特加向琴酒提及，贝尔摩德在电话中向琴酒提及，贝尔摩德思考&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;705(757)&lt;/td&gt;
          &lt;td&gt;&lt;a href=&#34;https://www.conanpedia.com/TV705&#34; title=&#34;TV705&#34;&gt;密室中的柯南&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;2013/08/10&lt;/td&gt;
          &lt;td&gt;&lt;strong&gt;登场&lt;/strong&gt;/&lt;strong&gt;旧回忆&lt;/strong&gt;/提及&lt;/td&gt;
          &lt;td&gt;前情回顾（动画原创）；安室回忆，柯南和博士提及，小兰向柯南提及，参悟和小五郎提及&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;706(758)&lt;/td&gt;
          &lt;td&gt;&lt;a href=&#34;https://www.conanpedia.com/TV706&#34; title=&#34;TV706&#34;&gt;解谜的波本&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;2013/08/17&lt;/td&gt;
          &lt;td&gt;&lt;strong&gt;登场&lt;/strong&gt;/提及&lt;/td&gt;
          &lt;td&gt;波本和贝尔摩德提及&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;723(775)&lt;/td&gt;
          &lt;td&gt;&lt;a href=&#34;https://www.conanpedia.com/TV723&#34; title=&#34;TV723&#34;&gt;香甜冰冷的快递（后篇）&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;2013/12/21&lt;/td&gt;
          &lt;td&gt;&lt;strong&gt;登场&lt;/strong&gt;/远影/提及&lt;/td&gt;
          &lt;td&gt;柯南和灰原提及、光彦和博士提及（末尾彩蛋）&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;734(787)&lt;/td&gt;
          &lt;td&gt;&lt;a href=&#34;https://www.conanpedia.com/TV734&#34; title=&#34;TV734&#34;&gt;茱蒂的追忆与赏花的陷阱&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;2014/03/29&lt;/td&gt;
          &lt;td&gt;&lt;strong&gt;登场&lt;/strong&gt;/&lt;strong&gt;旧回忆&lt;/strong&gt;/远影/提及&lt;/td&gt;
          &lt;td&gt;以弁崎桐平的身份登场；茱蒂、柯南和弁崎回忆，贝尔摩德回忆，柯南和茱蒂提到；部分回忆画面为动画原创&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;739(792)&lt;/td&gt;
          &lt;td&gt;&lt;a href=&#34;https://www.conanpedia.com/TV739&#34; title=&#34;TV739&#34;&gt;小五郎在酒吧里（后篇）&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;2014/05/17&lt;/td&gt;
          &lt;td&gt;&lt;strong&gt;旧回忆&lt;/strong&gt;/远影&lt;/td&gt;
          &lt;td&gt;高木回忆，柯南回忆并想起；回忆画面为动画原创&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;740(793)&lt;/td&gt;
          &lt;td&gt;&lt;a href=&#34;https://www.conanpedia.com/TV740&#34; title=&#34;TV740&#34;&gt;小兰也倒在浴室里了（前篇）&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;2014/05/31&lt;/td&gt;
          &lt;td&gt;&lt;strong&gt;登场&lt;/strong&gt;/远影&lt;/td&gt;
          &lt;td&gt;躲在小巷中监视柯南&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;751(804)&lt;/td&gt;
          &lt;td&gt;&lt;a href=&#34;https://www.conanpedia.com/TV751&#34; title=&#34;TV751&#34;&gt;招财三色猫的事件（前篇）&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;2014/09/20&lt;/td&gt;
          &lt;td&gt;&lt;strong&gt;登场&lt;/strong&gt;&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;770(823)&lt;/td&gt;
          &lt;td&gt;&lt;a href=&#34;https://www.conanpedia.com/TV770&#34; title=&#34;TV770&#34;&gt;气氛僵硬的茶会（前篇）&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;2015/03/07&lt;/td&gt;
          &lt;td&gt;&lt;strong&gt;登场&lt;/strong&gt;&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;771(824)&lt;/td&gt;
          &lt;td&gt;&lt;a href=&#34;https://www.conanpedia.com/TV771&#34; title=&#34;TV771&#34;&gt;气氛僵硬的茶会（后篇）&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;2015/03/14&lt;/td&gt;
          &lt;td&gt;&lt;strong&gt;登场&lt;/strong&gt;/&lt;strong&gt;新回忆&lt;/strong&gt;/&lt;strong&gt;旧回忆&lt;/strong&gt;&lt;/td&gt;
          &lt;td&gt;前情回顾（动画原创）；安室回忆&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;779(832)&lt;/td&gt;
          &lt;td&gt;&lt;a href=&#34;https://www.conanpedia.com/TV779&#34; title=&#34;TV779&#34;&gt;绯色的序章&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;2015/05/30&lt;/td&gt;
          &lt;td&gt;&lt;strong&gt;登场&lt;/strong&gt;/&lt;strong&gt;旧回忆&lt;/strong&gt;/提及&lt;/td&gt;
          &lt;td&gt;前情回顾与柯南回忆均为动画原创；安室回忆，柯南向茱蒂提及，茱蒂向卡迈尔小声提及&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;780(833)&lt;/td&gt;
          &lt;td&gt;&lt;a href=&#34;https://www.conanpedia.com/TV780&#34; title=&#34;TV780&#34;&gt;绯色的追查&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;2015/06/06&lt;/td&gt;
          &lt;td&gt;&lt;strong&gt;登场&lt;/strong&gt;/&lt;strong&gt;旧回忆&lt;/strong&gt;&lt;/td&gt;
          &lt;td&gt;前情回顾（动画原创）；推测安室的真实身份为日本公安，柯南回忆&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;781(834)&lt;/td&gt;
          &lt;td&gt;&lt;a href=&#34;https://www.conanpedia.com/TV781&#34; title=&#34;TV781&#34;&gt;绯色的交错&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;2015/06/13&lt;/td&gt;
          &lt;td&gt;&lt;strong&gt;登场&lt;/strong&gt;/&lt;strong&gt;旧回忆&lt;/strong&gt;/提及/想象&lt;/td&gt;
          &lt;td&gt;前情回顾（动画原创）；柯南回忆并想象，茱蒂向卡迈尔提及，柯南向卡迈尔和茱蒂提及&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;782(835)&lt;/td&gt;
          &lt;td&gt;&lt;a href=&#34;https://www.conanpedia.com/TV782&#34; title=&#34;TV782&#34;&gt;绯色的回归&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;2015/06/20&lt;/td&gt;
          &lt;td&gt;&lt;strong&gt;登场&lt;/strong&gt;/&lt;strong&gt;旧回忆&lt;/strong&gt;/声音&lt;/td&gt;
          &lt;td&gt;前情回顾（动画原创）&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;783(836)&lt;/td&gt;
          &lt;td&gt;&lt;a href=&#34;https://www.conanpedia.com/TV783&#34; title=&#34;TV783&#34;&gt;绯色的真相&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;2015/06/27&lt;/td&gt;
          &lt;td&gt;&lt;strong&gt;登场&lt;/strong&gt;/&lt;strong&gt;旧回忆&lt;/strong&gt;/远影/提及/声音&lt;/td&gt;
          &lt;td&gt;前情回顾（动画原创）；揭晓安室的本名为降谷零，其真实身份为日本公安；冲矢回忆并向茱蒂和卡迈尔提及，卡迈尔和冲矢提及，茱蒂向冲矢提及&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;792(845)&lt;/td&gt;
          &lt;td&gt;&lt;a href=&#34;https://www.conanpedia.com/TV792&#34; title=&#34;TV792&#34;&gt;三个第一发现者（前篇）&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;2015/09/19&lt;/td&gt;
          &lt;td&gt;远影/提及&lt;/td&gt;
          &lt;td&gt;柯南想起；远影画面为动画原创&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;813(868)&lt;/td&gt;
          &lt;td&gt;&lt;a href=&#34;https://www.conanpedia.com/TV813&#34; title=&#34;TV813&#34;&gt;悄悄接近安室的黑影&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;2016/04/16&lt;/td&gt;
          &lt;td&gt;&lt;strong&gt;登场&lt;/strong&gt;/&lt;strong&gt;新回忆&lt;/strong&gt;/&lt;strong&gt;旧回忆&lt;/strong&gt;&lt;/td&gt;
          &lt;td&gt;教授面包师如何制作三明治；安室回忆三天前自己被跟踪，柯南和面包师回忆&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;836(891)&lt;/td&gt;
          &lt;td&gt;&lt;a href=&#34;https://www.conanpedia.com/TV836&#34; title=&#34;TV836&#34;&gt;关系恶劣的女子乐队（前篇）&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;2016/10/15&lt;/td&gt;
          &lt;td&gt;&lt;strong&gt;登场&lt;/strong&gt;/&lt;strong&gt;新回忆&lt;/strong&gt;&lt;/td&gt;
          &lt;td&gt;世良回忆&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;837(892)&lt;/td&gt;
          &lt;td&gt;&lt;a href=&#34;https://www.conanpedia.com/TV837&#34; title=&#34;TV837&#34;&gt;关系恶劣的女子乐队（后篇）&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;2016/10/22&lt;/td&gt;
          &lt;td&gt;&lt;strong&gt;登场&lt;/strong&gt;&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;866(921)&lt;/td&gt;
          &lt;td&gt;&lt;a href=&#34;https://www.conanpedia.com/TV866&#34; title=&#34;TV866&#34;&gt;背叛的舞台（前篇）&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;2017/07/15&lt;/td&gt;
          &lt;td&gt;&lt;strong&gt;登场&lt;/strong&gt;/&lt;strong&gt;新回忆&lt;/strong&gt;&lt;/td&gt;
          &lt;td&gt;安室回忆并出现应激反应&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;867(922)&lt;/td&gt;
          &lt;td&gt;&lt;a href=&#34;https://www.conanpedia.com/TV867&#34; title=&#34;TV867&#34;&gt;背叛的舞台（后篇）&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;2017/07/22&lt;/td&gt;
          &lt;td&gt;&lt;strong&gt;登场&lt;/strong&gt;/&lt;strong&gt;新回忆&lt;/strong&gt;&lt;/td&gt;
          &lt;td&gt;安室和冲矢回忆&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;872(927)&lt;/td&gt;
          &lt;td&gt;&lt;a href=&#34;https://www.conanpedia.com/TV872&#34; title=&#34;TV872&#34;&gt;柯南与平次的鵺传说（鸣声篇）&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;2017/09/09&lt;/td&gt;
          &lt;td&gt;&lt;strong&gt;登场&lt;/strong&gt;&lt;/td&gt;
          &lt;td&gt;声称自己被假小梓拉进音乐厅&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;885(940)&lt;/td&gt;
          &lt;td&gt;&lt;a href=&#34;https://www.conanpedia.com/TV885&#34; title=&#34;TV885&#34;&gt;在波洛咖啡厅解谜（前篇）&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;2017/12/16&lt;/td&gt;
          &lt;td&gt;&lt;strong&gt;登场&lt;/strong&gt;/提及&lt;/td&gt;
          &lt;td&gt;平次和柯南提及&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;886(941)&lt;/td&gt;
          &lt;td&gt;&lt;a href=&#34;https://www.conanpedia.com/TV886&#34; title=&#34;TV886&#34;&gt;在波洛咖啡厅解谜（后篇）&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;2017/12/23&lt;/td&gt;
          &lt;td&gt;&lt;strong&gt;登场&lt;/strong&gt;/&lt;strong&gt;旧回忆&lt;/strong&gt;&lt;/td&gt;
          &lt;td&gt;安室回忆&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;898(953)&lt;/td&gt;
          &lt;td&gt;&lt;a href=&#34;https://www.conanpedia.com/TV898&#34; title=&#34;TV898&#34;&gt;蛋糕融化了！&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;2018/04/07&lt;/td&gt;
          &lt;td&gt;&lt;strong&gt;登场&lt;/strong&gt;/&lt;strong&gt;旧回忆&lt;/strong&gt;&lt;/td&gt;
          &lt;td&gt;着手解决特制蛋糕融化的问题，并研发出新制的半熟蛋糕；柯南回忆&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;919(974)&lt;/td&gt;
          &lt;td&gt;&lt;a href=&#34;https://www.conanpedia.com/TV919&#34; title=&#34;TV919&#34;&gt;女高中生三人组的秘密咖啡厅（前篇）&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;2018/11/03&lt;/td&gt;
          &lt;td&gt;提及&lt;/td&gt;
          &lt;td&gt;园子提及&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;925(980)&lt;/td&gt;
          &lt;td&gt;&lt;a href=&#34;https://www.conanpedia.com/TV925&#34; title=&#34;TV925&#34;&gt;充满心意的手机挂件（前篇）&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;2018/12/15&lt;/td&gt;
          &lt;td&gt;&lt;strong&gt;登场&lt;/strong&gt;/提及&lt;/td&gt;
          &lt;td&gt;冲矢向侦探团四人提及&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;926(981)&lt;/td&gt;
          &lt;td&gt;&lt;a href=&#34;https://www.conanpedia.com/TV926&#34; title=&#34;TV926&#34;&gt;充满心意的手机挂件（后篇）&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;2018/12/22&lt;/td&gt;
          &lt;td&gt;&lt;strong&gt;登场&lt;/strong&gt;/&lt;strong&gt;旧回忆&lt;/strong&gt;/远影/提及/声音&lt;/td&gt;
          &lt;td&gt;冲矢向博士提及，安室回忆&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;942(999)&lt;/td&gt;
          &lt;td&gt;&lt;a href=&#34;https://www.conanpedia.com/TV942&#34; title=&#34;TV942&#34;&gt;寻找玛利亚！（后篇）&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;2019/06/08&lt;/td&gt;
          &lt;td&gt;&lt;strong&gt;登场&lt;/strong&gt;&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;952(1009)&lt;/td&gt;
          &lt;td&gt;&lt;a href=&#34;https://www.conanpedia.com/TV952&#34; title=&#34;TV952&#34;&gt;谜之鸡尾酒（前篇）&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;2019/08/31&lt;/td&gt;
          &lt;td&gt;&lt;strong&gt;登场&lt;/strong&gt;/提及&lt;/td&gt;
          &lt;td&gt;纱菜向小兰提及&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;953(1010)&lt;/td&gt;
          &lt;td&gt;&lt;a href=&#34;https://www.conanpedia.com/TV953&#34; title=&#34;TV953&#34;&gt;谜之鸡尾酒（中篇）&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;2019/09/07&lt;/td&gt;
          &lt;td&gt;&lt;strong&gt;登场&lt;/strong&gt;/&lt;strong&gt;新回忆&lt;/strong&gt;/&lt;strong&gt;旧回忆&lt;/strong&gt;/提及&lt;/td&gt;
          &lt;td&gt;前情回顾（动画原创）；安室出现记忆闪回并回忆，目暮提及&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;954(1011)&lt;/td&gt;
          &lt;td&gt;&lt;a href=&#34;https://www.conanpedia.com/TV954&#34; title=&#34;TV954&#34;&gt;谜之鸡尾酒（后篇）&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;2019/09/14&lt;/td&gt;
          &lt;td&gt;&lt;strong&gt;登场&lt;/strong&gt;/&lt;strong&gt;新回忆&lt;/strong&gt;/&lt;strong&gt;旧回忆&lt;/strong&gt;/提及&lt;/td&gt;
          &lt;td&gt;前情回顾（动画原创）；安室和优作回忆，小兰向柯南提及；部分回忆画面为动画原创&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;972(1029)&lt;/td&gt;
          &lt;td&gt;&lt;a href=&#34;https://www.conanpedia.com/TV972&#34; title=&#34;TV972&#34;&gt;目标是警视厅交通部（二）&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;2020/03/14&lt;/td&gt;
          &lt;td&gt;&lt;strong&gt;登场&lt;/strong&gt;/&lt;strong&gt;旧回忆&lt;/strong&gt;/远影&lt;/td&gt;
          &lt;td&gt;安室回忆，柯南想起&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;974(1031)&lt;/td&gt;
          &lt;td&gt;&lt;a href=&#34;https://www.conanpedia.com/TV974&#34; title=&#34;TV974&#34;&gt;目标是警视厅交通部（四）&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;2020/03/28&lt;/td&gt;
          &lt;td&gt;&lt;strong&gt;登场&lt;/strong&gt;/&lt;strong&gt;旧回忆&lt;/strong&gt;/提及&lt;/td&gt;
          &lt;td&gt;安室回忆，黑田在电话中提及其代号&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;984(1041)&lt;/td&gt;
          &lt;td&gt;&lt;a href=&#34;https://www.conanpedia.com/TV984&#34; title=&#34;TV984&#34;&gt;基德VS高明 被盯上的唇（后篇）&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;2020/10/10&lt;/td&gt;
          &lt;td&gt;&lt;strong&gt;新回忆&lt;/strong&gt;/远影&lt;/td&gt;
          &lt;td&gt;高明回忆，佐藤想起&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;1003(1060)&lt;/td&gt;
          &lt;td&gt;&lt;a href=&#34;https://www.conanpedia.com/TV1003&#34; title=&#34;TV1003&#34;&gt;36格的完美犯罪（前篇）&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;2021/04/24&lt;/td&gt;
          &lt;td&gt;&lt;strong&gt;登场&lt;/strong&gt;&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;1004(1061)&lt;/td&gt;
          &lt;td&gt;&lt;a href=&#34;https://www.conanpedia.com/TV1004&#34; title=&#34;TV1004&#34;&gt;36格的完美犯罪（中篇）&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;2021/05/01&lt;/td&gt;
          &lt;td&gt;&lt;strong&gt;登场&lt;/strong&gt;/&lt;strong&gt;新回忆&lt;/strong&gt;&lt;/td&gt;
          &lt;td&gt;高明回忆&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;1005(1062)&lt;/td&gt;
          &lt;td&gt;&lt;a href=&#34;https://www.conanpedia.com/TV1005&#34; title=&#34;TV1005&#34;&gt;36格的完美犯罪（后篇）&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;2021/05/08&lt;/td&gt;
          &lt;td&gt;&lt;strong&gt;登场&lt;/strong&gt;/&lt;strong&gt;旧回忆&lt;/strong&gt;&lt;/td&gt;
          &lt;td&gt;小五郎回忆&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;1029(1086)&lt;/td&gt;
          &lt;td&gt;&lt;a href=&#34;https://www.conanpedia.com/TV1029&#34; title=&#34;TV1029&#34;&gt;警察学校篇 Wild Police Story CASE.松田阵平&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;2021/12/04&lt;/td&gt;
          &lt;td&gt;&lt;strong&gt;回忆登场&lt;/strong&gt;/远影/提及&lt;/td&gt;
          &lt;td&gt;姓名牌：降谷零（22岁）；伊达和鬼冢提及&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;1038(1095)&lt;/td&gt;
          &lt;td&gt;&lt;a href=&#34;https://www.conanpedia.com/TV1038&#34; title=&#34;TV1038&#34;&gt;警察学校篇 Wild Police Story CASE.伊达航&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;2022/03/12&lt;/td&gt;
          &lt;td&gt;&lt;strong&gt;回忆登场&lt;/strong&gt;/&lt;strong&gt;旧回忆&lt;/strong&gt;/提及&lt;/td&gt;
          &lt;td&gt;伊达回忆，被部分同学称呼为“金发的外国小哥”和“金发的混血”，松田和萩原提及&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;1039(1096)&lt;/td&gt;
          &lt;td&gt;&lt;a href=&#34;https://www.conanpedia.com/TV1039&#34; title=&#34;TV1039&#34;&gt;飞天的万圣南瓜&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;2022/04/16&lt;/td&gt;
          &lt;td&gt;提及&lt;/td&gt;
          &lt;td&gt;柯南提及，小梓提及安室以休息为由请假，并希望给他戴上项圈，让他好好看店&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;1042(1099)&lt;/td&gt;
          &lt;td&gt;&lt;a href=&#34;https://www.conanpedia.com/TV1042&#34; title=&#34;TV1042&#34;&gt;警察学校篇 Wild Police Story CASE.萩原研二&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;2022/05/07&lt;/td&gt;
          &lt;td&gt;&lt;strong&gt;回忆登场&lt;/strong&gt;/&lt;strong&gt;新回忆&lt;/strong&gt;/提及&lt;/td&gt;
          &lt;td&gt;姓名牌：降谷零（22岁）；松田向萩原提及&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;1053(1110)&lt;/td&gt;
          &lt;td&gt;&lt;a href=&#34;https://www.conanpedia.com/TV1053&#34; title=&#34;TV1053&#34;&gt;坠落于牧场的火种（前篇）&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;2022/08/06&lt;/td&gt;
          &lt;td&gt;&lt;strong&gt;登场&lt;/strong&gt;/&lt;strong&gt;新回忆&lt;/strong&gt;&lt;/td&gt;
          &lt;td&gt;安室回忆自己在公安培训课上了解的羽田浩司案&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;1054(1111)&lt;/td&gt;
          &lt;td&gt;&lt;a href=&#34;https://www.conanpedia.com/TV1054&#34; title=&#34;TV1054&#34;&gt;坠落于牧场的火种（后篇）&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;2022/08/13&lt;/td&gt;
          &lt;td&gt;&lt;strong&gt;登场&lt;/strong&gt;/&lt;strong&gt;旧回忆&lt;/strong&gt;&lt;/td&gt;
          &lt;td&gt;柯南和安室回忆&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;1060(1117)&lt;/td&gt;
          &lt;td&gt;&lt;a href=&#34;https://www.conanpedia.com/TV1060&#34; title=&#34;TV1060&#34;&gt;冲野洋子与阁楼密室（后篇）&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;2022/10/15&lt;/td&gt;
          &lt;td&gt;&lt;strong&gt;登场&lt;/strong&gt;&lt;/td&gt;
          &lt;td&gt;看着偷拍的若狭照片若有所思&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;1061(1118)&lt;/td&gt;
          &lt;td&gt;&lt;a href=&#34;https://www.conanpedia.com/TV1061&#34; title=&#34;TV1061&#34;&gt;警察学校篇 Wild Police Story CASE.诸伏景光&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;2022/10/29&lt;/td&gt;
          &lt;td&gt;&lt;strong&gt;回忆登场&lt;/strong&gt;&lt;/td&gt;
          &lt;td&gt;姓名牌：降谷零（22岁）&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;1068(1125)&lt;/td&gt;
          &lt;td&gt;&lt;a href=&#34;https://www.conanpedia.com/TV1068&#34; title=&#34;TV1068&#34;&gt;圆谷光彦的侦探笔记&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;2023/01/07&lt;/td&gt;
          &lt;td&gt;&lt;strong&gt;登场&lt;/strong&gt;&lt;/td&gt;
          &lt;td&gt;仅开头新年贺词部分登场&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;1079(1137)&lt;/td&gt;
          &lt;td&gt;&lt;a href=&#34;https://www.conanpedia.com/TV1079&#34; title=&#34;TV1079&#34;&gt;黑衣组织的谋略（真身）&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;2023/04/08&lt;/td&gt;
          &lt;td&gt;&lt;strong&gt;旧回忆&lt;/strong&gt;/提及&lt;/td&gt;
          &lt;td&gt;贝尔摩德回忆并提及&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;1085(1143)&lt;/td&gt;
          &lt;td&gt;&lt;a href=&#34;https://www.conanpedia.com/TV1085&#34; title=&#34;TV1085&#34;&gt;不吉利的结缘（前篇）&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;2023/06/03&lt;/td&gt;
          &lt;td&gt;&lt;strong&gt;旧回忆&lt;/strong&gt;/远影&lt;/td&gt;
          &lt;td&gt;平次回忆（动画原创），柯南想起&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;1105(1163)&lt;/td&gt;
          &lt;td&gt;&lt;a href=&#34;https://www.conanpedia.com/index.php?title=TV1105&amp;amp;action=edit&amp;amp;redlink=1&#34; title=&#34;TV1105（页面不存在）&#34;&gt;基德VS安室 王妃的刘海（前篇）&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;2023/12/02&lt;/td&gt;
          &lt;td&gt;&lt;strong&gt;登场&lt;/strong&gt;/他人假扮&lt;/td&gt;
          &lt;td&gt;临时由风见变装&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;1106(1164)&lt;/td&gt;
          &lt;td&gt;&lt;a href=&#34;https://www.conanpedia.com/index.php?title=TV1106&amp;amp;action=edit&amp;amp;redlink=1&#34; title=&#34;TV1106（页面不存在）&#34;&gt;基德VS安室 王妃的刘海（后篇）&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;2023/12/09&lt;/td&gt;
          &lt;td&gt;&lt;strong&gt;登场&lt;/strong&gt;/&lt;strong&gt;旧回忆&lt;/strong&gt;/他人假扮&lt;/td&gt;
          &lt;td&gt;揭晓风见假扮成降谷戏耍基德；柯南和基德回忆&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;1109(1167)&lt;/td&gt;
          &lt;td&gt;&lt;a href=&#34;https://www.conanpedia.com/index.php?title=TV1109&amp;amp;action=edit&amp;amp;redlink=1&#34; title=&#34;TV1109（页面不存在）&#34;&gt;高木、伊达与手帐中的约定（前篇）&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;2024/01/06&lt;/td&gt;
          &lt;td&gt;&lt;strong&gt;登场&lt;/strong&gt;/提及&lt;/td&gt;
          &lt;td&gt;高木和佐藤提及&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;1110(1168)&lt;/td&gt;
          &lt;td&gt;&lt;a href=&#34;https://www.conanpedia.com/index.php?title=TV1110&amp;amp;action=edit&amp;amp;redlink=1&#34; title=&#34;TV1110（页面不存在）&#34;&gt;高木、伊达与手帐中的约定（后篇）&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;2024/01/13&lt;/td&gt;
          &lt;td&gt;&lt;strong&gt;登场&lt;/strong&gt;/&lt;strong&gt;旧回忆&lt;/strong&gt;&lt;/td&gt;
          &lt;td&gt;安室回忆&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;h1 id=&#34;references&#34;&gt;References&lt;/h1&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://www.conanpedia.com/zh-hans/%E5%AE%89%E5%AE%A4%E9%80%8F#%E7%94%B5%E8%A7%86%E5%8A%A8%E7%94%BB&#34;&gt;安室透 - 名侦探柯南百科&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://www.bilibili.com/opus/418203448107440185&#34;&gt;【自用】名侦探柯南安室透出场集数&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description>
    </item>
    <item>
      <title>apt 源 Connection reset by peer 问题解决</title>
      <link>https://frytea.com/archives/1331/</link>
      <pubDate>Fri, 08 Nov 2024 10:08:14 +0000</pubDate>
      <guid>https://frytea.com/archives/1331/</guid>
      <description>&lt;p&gt;在 apt 2.1.9 及以后的版本中，apt 的 HTTP Pipelining 特性与 Nginx 服务器疑似存在一定的不兼容问题，可能导致高带宽从镜像站下载大量软件包 （例如系统升级）时出现偶发的 Connection reset by peer 错误&lt;/p&gt;</description>
    </item>
    <item>
      <title>Linux 能否使用 ACL 默认为新目录配置粘滞位</title>
      <link>https://frytea.com/archives/1326/</link>
      <pubDate>Fri, 08 Nov 2024 10:08:07 +0000</pubDate>
      <guid>https://frytea.com/archives/1326/</guid>
      <description>&lt;p&gt;答案是不能直接实现，可以简介做到，详情向下看：&lt;/p&gt;
&lt;p&gt;This is a configuration that allows members of a group, &lt;em&gt;acltest&lt;/em&gt;, to create and modify group files while disallowing the deletion and renaming of files except by their owner and &amp;ldquo;others,&amp;rdquo; nothing. Using the username, &lt;em&gt;lev&lt;/em&gt; and assuming umask of 022:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;groupadd acltest
usermod -a -G acltest lev
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Log out of the root account and the &lt;em&gt;lev&lt;/em&gt; account. Log in and become root or use &lt;em&gt;sudo&lt;/em&gt;: 注销 root 账户和 lev 账户。登录并成为 root 或使用 sudo：&lt;/p&gt;</description>
    </item>
    <item>
      <title>软件架构开发模型特征总结</title>
      <link>https://frytea.com/archives/1338/</link>
      <pubDate>Fri, 08 Nov 2024 10:07:21 +0000</pubDate>
      <guid>https://frytea.com/archives/1338/</guid>
      <description>&lt;ul&gt;
&lt;li&gt;瀑布模型：结构化方法。开发阶段性、需求明确、文档齐全、风险控制弱；&lt;/li&gt;
&lt;li&gt;原型模型：迭代方法，分为原先开发与目标软件开发，需求不太明确；&lt;/li&gt;
&lt;li&gt;螺旋模型：迭代方法。瀑布与原型（演化）模型i结合体。适用于大型、复杂、风险项目。&lt;/li&gt;
&lt;li&gt;喷泉模型：面向对象方法。复用好、开发过程无间隙、节省时间；&lt;/li&gt;
&lt;li&gt;V模型：开发与测试结合；&lt;/li&gt;
&lt;li&gt;变换模型：适用于形式开发；&lt;/li&gt;
&lt;li&gt;智能模型：适用于i基于规则的专家系统；&lt;/li&gt;
&lt;li&gt;快速应用开发RAD：基于构件的开发方法。用户参与、开发或复用构件、模块化要求高，不适用新技术；&lt;/li&gt;
&lt;li&gt;RUP/UP：用例驱动、架构为中心、迭代、增量&lt;/li&gt;
&lt;li&gt;可重用构建模型：基于构件的开发方法。开发或复用构件&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;#系统架构设计&lt;/p&gt;</description>
    </item>
    <item>
      <title>名侦探柯南TV赤井秀一出场集数（更新至1194话）</title>
      <link>https://frytea.com/archives/1332/</link>
      <pubDate>Fri, 08 Nov 2024 10:07:00 +0000</pubDate>
      <guid>https://frytea.com/archives/1332/</guid>
      <description>&lt;p&gt;《名侦探柯南》原作漫画及其衍生作品中登场的角色，FBI的搜查官，多年前为调查父亲赤井务武失踪之谜加入FBI、对黑衣组织展开调查。&lt;/p&gt;
&lt;p&gt;赤井秀一于5年前化名诸星大潜入组织、取得“黑麦威士忌”的代号，后于2年前准备逮捕琴酒时因同事的失误身份暴露、脱离组织。其高超的情报搜集能力、推理能力和狙击能力使其成为调查黑衣组织的中坚力量，也成为江户川柯南与组织对抗的得力伙伴，被黑衣组织的Boss乌丸莲耶称为“银色子弹”。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Linux 文件管理之隐藏属性</title>
      <link>https://frytea.com/archives/1327/</link>
      <pubDate>Sun, 03 Nov 2024 06:40:03 +0000</pubDate>
      <guid>https://frytea.com/archives/1327/</guid>
      <description>&lt;p&gt;linux文件属性包括文件的许多特征，通常有文件类型、文件大小、文件所有者、文件所属组、文件最后修改时间等，而隐藏属性是属于文件的特殊性质。这些隐藏属性在linux中可以通过&lt;code&gt;chattr&lt;/code&gt;命令进行设置，通过&lt;code&gt;lsattr&lt;/code&gt;命令查看。&lt;/p&gt;</description>
    </item>
    <item>
      <title>宝塔面板手动编译安装 PHP 插件 fileinfo</title>
      <link>https://frytea.com/archives/1330/</link>
      <pubDate>Sat, 02 Nov 2024 06:22:00 +0000</pubDate>
      <guid>https://frytea.com/archives/1330/</guid>
      <description>&lt;p&gt;以 php 8.2 为例，具体根据实际情况调整，主要是其中的 &lt;code&gt;-O2&lt;/code&gt; 参数，在低性能服务器下容易编译死机。&lt;/p&gt;
&lt;p&gt;需先配置 2～4 GB 的 SWAP 后继续。&lt;/p&gt;
&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;&#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;cd /www/server/php/82/src/ext/fileinfo
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;/www/server/php/82/bin/phpize
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;./configure --with-php-config&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;/www/server/php/82/bin/php-config
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;sed -i &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;s#CFLAGS = -g -O2#CFLAGS = -std=c99 -g #g&amp;#34;&lt;/span&gt; Makefile
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;make &lt;span style=&#34;color:#f92672&#34;&gt;&amp;amp;&amp;amp;&lt;/span&gt; make install
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;echo &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;extension=/www/server/php/82/lib/php/extensions/no-debug-non-zts-20220829/fileinfo.so&amp;#34;&lt;/span&gt; &amp;gt;&amp;gt; /www/server/php/82/etc/php.ini
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;echo &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;extension=/www/server/php/82/lib/php/extensions/no-debug-non-zts-20220829/fileinfo.so&amp;#34;&lt;/span&gt; &amp;gt;&amp;gt; /www/server/php/82/etc/php-cli.ini
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;/etc/init.d/php-fpm-82 restart
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h1 id=&#34;references&#34;&gt;References&lt;/h1&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://blog.csdn.net/memeguigui/article/details/129836186&#34;&gt;宝塔面板php8.1安装fileinfo失败或无法安装的解决方案&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://www.bt.cn/bbs/forum.php?mod=viewthread&amp;amp;tid=138723&amp;amp;highlight=fileinfo&#34;&gt;【已完成】无法安装php8.0 fileinfo扩展&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://www.bt.cn/bbs/thread-77608-1-1.html&#34;&gt;【已解决】php8.0安装fileinfo扩展失败&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description>
    </item>
    <item>
      <title>《凤凰架构：构建可靠的大型分布式系统》</title>
      <link>https://frytea.com/archives/1321/</link>
      <pubDate>Fri, 01 Nov 2024 16:50:28 +0000</pubDate>
      <guid>https://frytea.com/archives/1321/</guid>
      <description>&lt;h1 id=&#34;阅读感悟&#34;&gt;阅读感悟&lt;/h1&gt;
&lt;p&gt;暂略&lt;/p&gt;
&lt;h1 id=&#34;阅读摘录&#34;&gt;阅读摘录&lt;/h1&gt;
&lt;h3 id=&#34;凤凰架构构建可靠的大型分布式系统&#34;&gt;&lt;strong&gt;《凤凰架构：构建可靠的大型分布式系统》&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt; 周志明&lt;/p&gt;
&lt;p&gt; 41个笔记&lt;/p&gt;
&lt;h3 id=&#34;自序&#34;&gt;** 自序**&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;软件工程小说《凤凰项目》（见图1）讲述了徘徊在死亡边缘的凤凰项目在精益方法下浴火重生的故事&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;522-oauth-2&#34;&gt;** 5.2.2 OAuth 2**&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;[插图]&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;第10章-可观测性&#34;&gt;** 第10章 可观测性**&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;日志收集和分析大多被统一到Elastic Stack(ELK)技术栈上，如果说未来还能出现什么变化的话，也就是其中的Logstash有被Fluentd取代的趋势，让ELK变成EFK，但整套Elastic Stack技术栈的地位已是相当稳固&lt;/li&gt;
&lt;li&gt;度量方面，跟随Kubernetes统一容器编排的步伐，Prometheus也击败了度量领域里以Zabbix为代表的众多前辈，即将成为云原生时代度量监控的事实标准，虽然从市场角度来说Prometheus还没有达到Kubernetes那种“拔剑四顾，举世无敌”的程度，但是从社区活跃度上看，Prometheus已占有绝对的优势，在Google和CNCF的推动下，未来可期。&lt;/li&gt;
&lt;li&gt;Kubernetes是CNCF第一个孵化成功的项目，Prometheus是CNCF第二个孵化成功的项目。Kubernetes起源于Google的编排系统Borg，Prometheus起源于Google为Borg做的度量监控系统BorgMon。&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;1114-封装系统lxc&#34;&gt;** 11.1.4 封装系统：LXC**&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;LXC的出现肯定受到了OpenVZ和Linux-VServer的启发，站在巨人的肩膀上过河并没有什么不对。可惜的是，LXC在设定自己的发展目标时，也被前辈们的影响所局限住了。LXC眼中的容器与OpenVZ和Linux-VServer定义的并无差别，是一种封装系统的轻量级虚拟机，而Docker眼中的容器则是一种封装应用的技术手段。这两种封装理念在技术层面并没有什么本质区别，但应用效果差异巨大&lt;/li&gt;
&lt;li&gt;以封装系统为出发点，仍是按照先装系统再装软件的思路，就永远无法在一两分钟甚至十几秒钟就构造出一个合乎要求的软件运行环境，也决定了LXC不可能形成今天的容器生态，所以，接下来舞台的聚光灯落到了Docker身上&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;1115-封装应用docker&#34;&gt;** 11.1.5 封装应用：Docker**&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;至少对早期的Docker而言，确实没有什么能构成壁垒的技术，它的容器化能力直接来源于LXC，它的镜像分层组合的文件系统直接来源于AUFS。在Docker开源后不久，有人仅用一百多行Shell脚本便实现了Docker的核心功能（名为Bocker[插图]，提供了docker build/pull/images/ps/run/exec/logs/commit/rm/rmi等功能）。&lt;/li&gt;
&lt;li&gt;那为何历史选择了Docker，而不是LXC或者其他容器技术呢？对于这个问题，笔者将引用（转述非直译，有所精简）DotCloud公司（当年创造Docker的公司，已于2016年倒闭）创始人Solomon Hykes在Stackoverflow上的一段问答来回应。&lt;/li&gt;
&lt;li&gt;为了符合OCI标准，Docker推动自身的架构继续向前演进，首先将libcontainer独立出来，封装重构成runC项目，并捐献给Linux基金会管理。runC是OCI运行时的首个参考实现，提出了“让标准容器无所不在”的口号。&lt;/li&gt;
&lt;li&gt;为了能够兼容所有符合标准的OCI运行时实现，Docker进一步重构了Docker Daemon子系统，将其中与运行时交互的部分抽象为containerd项目，这是一个负责管理容器执行、分发、监控、网络、构建、日志等功能的核心模块，内部会为每个容器运行时创建一个containerd-shim适配进程，默认与runC搭配工作，但也可以切换到其他OCI运行时实现上（然而实际并没做到&lt;/li&gt;
&lt;li&gt;2016年，Docker把containerd项目捐献给CNCF管理。runC与containerd两个项目的捐赠托管，既是Docker对开源信念执着的追求，也是Docker在众多云计算大厂夹击下无奈的自救，这两个项目将成为未来Docker消亡和存续的伏笔。（看到本节末尾你就能理解这句矛盾的话了。）&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;1116-封装集群kubernetes&#34;&gt;** 11.1.6 封装集群：Kubernetes**&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Kubernetes Master→kubelet→DockerManager→Docker Engine→containerd→runC&lt;/li&gt;
&lt;li&gt;，现在连LXC都还没有被淘汰，反倒发展出了更加专注于与OpenVZ等系统级虚拟化竞争的LXD，相信Docker本身也很难彻底消亡，如已经习惯使用的CLI界面，已经形成成熟生态的镜像仓库等都应该会长期存在，只是在容器编排领域，未来的Docker很可能只会以runC和containerd的形式存续下去，毕竟它们最初都源于Docker&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;1121-隔离与协作&#34;&gt;** 11.2.1 隔离与协作**&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Docker设计的Dockerfile只允许有一个ENTRYPOINT，这并非无故添加的人为限制，而是因为Docker只能通过监视PID为1的进程（即由ENTRYPOINT启动的进程）的运行状态来判断容器的工作状态是否正常，然后根据状态决定是否执行清理自动重启等操作。&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;1122-韧性与弹性&#34;&gt;** 11.2.2 韧性与弹性**&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;故障恢复、滚动更新、自动扩缩这些特性，在云原生时代里常被概括成服务的韧性(Resilience)与弹性(Elasticity)，ReplicaSet、Deployment、Autoscaling的用法，也属于所有Kubernetes教材资料都会讲到的“基础必修课”&lt;/li&gt;
&lt;li&gt;如果你准备学习Kubernetes或者其他与云原生相关的技术，建议最好不要死记硬背地学习每个资源的元数据文件如何编写、有哪些指令、有哪些功能，而是站在解决问题的角度去理解为什么Kubernetes要设计这些资源和控制器，为什么这些资源和控制器会被设计成现在这种样子&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;1131-kustomize&#34;&gt;** 11.3.1 Kustomize**&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;最初，由Kubernetes官方给出的“如何封装应用”的解决方案是“用配置文件来配置配置文件”，这不是绕口令，你可以理解为一种针对YAML的模板引擎的变体&lt;/li&gt;
&lt;li&gt;Kubernetes官方认为应用就是一组具有相同目标的Kubernetes资源的集合&lt;/li&gt;
&lt;li&gt;如果逐一管理、部署每项资源元数据过于烦琐的话，那就提供一种便捷的方式，把应用中不变的信息与易变的信息分离开以解决管理问题，把应用所有涉及的资源自动生成一个多合一(All-in-One)的整合包以解决部署问题&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;1133-operator与crd&#34;&gt;** 11.3.3 Operator与CRD**&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;有状态应用(Stateful Application)与无状态应用(Stateless Application)是指应用程序是否要自己持有运行所需的数据，如果程序每次运行都跟首次运行一样，不会依赖之前任何操作遗留下来的痕迹，那它就是无状态的；反之，如果程序推倒重来之后，用户能察觉到该应用已经发生变化，那它就是有状态的&lt;/li&gt;
&lt;li&gt;Operator提供了一种kind:Elasticsearch的自定义资源，在它的帮助下，仅需十行代码，将用户的意图是“部署三个版本为7.9.1的ES集群&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;1211-网络通信模型&#34;&gt;** 12.1.1 网络通信模型**&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;从整体上看，Linux系统的通信过程无论按理论上的OSI七层模型，还是以实际上的TCP/IP四层模型来解构，都明显呈现出“逐层调用，逐层封装”的特点，这种逐层处理的方式与栈结构，譬如程序执行时的方法栈很类似，因此它通常被称为“Linux网络协议栈”，简称“网络栈”，有时也称“协议栈”&lt;/li&gt;
&lt;li&gt;[插图]图12-1 Linux系统下的网络通信模型&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;1212-干预网络通信&#34;&gt;** 12.1.2 干预网络通信**&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;这套名为Netfilter的框架是Linux防火墙和网络的主要维护者Rusty Russell提出并主导设计的，它围绕网络层（IP协议）的周围，埋下了五个钩子(Hook)，每当有数据包流到网络层，经过这些钩子时，就会自动触发由内核模块注册在这里的回调函数，这样程序代码就能够通过回调函数来干预Linux的网络通信&lt;/li&gt;
&lt;li&gt;[插图]&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;1213-虚拟化网络设备&#34;&gt;** 12.1.3 虚拟化网络设备**&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;普通交换机只会单纯地做二层转发，Linux Bridge却还支持把发给它自身的数据包接入主机的三层协议栈中&lt;/li&gt;
&lt;li&gt;对于通过brctl命令显式接入网桥的设备，Linux Bridge与物理交换机的转发行为是完全一致的，都不允许给接入的设备设置IP地址，因为网桥是根据MAC地址做二层转发的，就算设置了三层的IP地址也毫无意义。然而Linux Bridge与普通交换机的区别是除了显式接入的设备外，它自己也无可分割地连接着一台有着完整网络协议栈的Linux主机，因为Linux Bridge本身肯定是在某台Linux主机上创建的，可以看作Linux Bridge有一个与自己名字相同的隐藏端口，隐式地连接了创建它的那台Linux主机&lt;/li&gt;
&lt;li&gt;Linux Bridge允许给自己设置IP地址，比普通交换机多出一种特殊的转发情况：如果数据包的目的MAC地址为网桥本身，并且网桥设置了IP地址的话，那该数据包即被认为是收到发往创建网桥那台主机的数据包，此数据包将不会转发到任何设备，而是直接交给上层（三层）协议栈去处理&lt;/li&gt;
&lt;li&gt;此时，网桥就取代了eth0设备来对接协议栈，进行三层协议的处理。设置这条特殊转发规则的好处是：只要通过简单的NAT转换，就可以实现一个最原始的单IP容器网络。这种组网是最基本的容器间通信形式，&lt;/li&gt;
&lt;li&gt;单臂路由不属于任何VLAN，它与交换机之间的链路允许任何VLAN ID的数据包通过，而这个通信的接口也被称为TRUNK。这样，A1要和B2通信，就要将数据包先发送给路由（只需把路由设置为网关即可），然后路由会根据数据包上的IP地址得知B2的位置，去掉VLAN-A的VLAN Tag，改用VLAN-B的VLAN Tag重新封装数据包后再发回给交换机，交换机收到后就可以顺利转发给B2了&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;142-服务质量与优先级&#34;&gt;** 14.2 服务质量与优先级**&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Kubernetes选择哪个节点运行Pod，只会根据requests的值来进行决策；limits才是供cgroups使用的，Kubernetes在向cgroups传递资源配额时，会按照limits的值来进行设置。&lt;/li&gt;
&lt;li&gt;用户提交工作负载时设置的资源配额，并不是容器调度必须严格遵守的值，因为根据实际经验，大多数的工作负载在运行过程中真正使用到的资源，其实都远小于它所请求的资源配额。&lt;/li&gt;
&lt;li&gt;要进行驱逐，首先Kubernetes就必须制定资源不足时该先牺牲哪些Pod、保留哪些Pod的明确准则，由此就形成了Kubernetes的服务质量等级(Quality of Service Level，QoS Level)和优先级(Priority)的概念&lt;/li&gt;
&lt;li&gt;Kubernetes目前提供的服务质量等级一共分为三级，由高到低分别为Guaranteed、Burstable和BestEffort&lt;/li&gt;
&lt;li&gt;如果Pod中所有的容器都设置了limits和requests，且两者的值相等，那此Pod的服务质量等级便为最高的Guaranteed；如果Pod中有部分容器的requests值小于limits值，或者只设置了requests而未设置limits，那此Pod的服务质量等级为第二级Burstable；如果是上文说的那种情况，limits和requests两个都没设置则属于最低的BestEffort&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;143-驱逐机制&#34;&gt;** 14.3 驱逐机制**&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Pod的驱逐机制是通过kubelet来执行的，kubelet是部署在每个节点的集群管理程序，由于本身就运行在节点中，所以最容易感知到节点的资源实时消耗情况。kubelet一旦发现某种不可压缩资源将要耗尽时，就会主动终止节点上较低服务质量等级的Pod，以保证其他更重要的Pod的安全。被驱逐的Pod中的所有容器都会被终止，Pod的状态也会被更改为Failed&lt;/li&gt;
&lt;li&gt;·软驱逐：通常配置一个较低的警戒线（譬如可用内存仅剩20%），触及此线时，系统将进入一段观察期。如果只是暂时的资源抖动，在观察期内能够恢复到正常水平的话，那就不会真正启动驱逐操作。否则，若资源持续超过警戒线一段时间，就会触发Pod的优雅退出(Grace Shutdown)，系统会通知Pod进行必要的清理工作（譬如将缓存的数据落盘），然后自行结束。在优雅退出期结束后，系统会强制杀掉还未曾自行了断的Pod&lt;/li&gt;
&lt;li&gt;硬驱逐：通常配置一个较高的终止线（譬如可用内存仅剩10%），一旦触及此红线，立即强制杀掉Pod，而不会优雅退出&lt;/li&gt;
&lt;li&gt;软驱逐是为了减少资源抖动对服务的影响，硬驱逐是为了保障核心系统的稳定&lt;/li&gt;
&lt;li&gt;总而言之，在Kubernetes还没有成熟到变为“傻瓜式”容器编排系统之前，因地制宜地配置和运维是非常必要的&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt; 来自微信读书&lt;/p&gt;</description>
    </item>
    <item>
      <title>Linux 文件管理之默认权限 umask</title>
      <link>https://frytea.com/archives/1324/</link>
      <pubDate>Thu, 31 Oct 2024 12:46:41 +0000</pubDate>
      <guid>https://frytea.com/archives/1324/</guid>
      <description>&lt;p&gt;一般来说 Linux 上的文件或目录使用一组默认的权限进行创建，&lt;code&gt;umask&lt;/code&gt; 命令可用于查看或设置创建新文件的时的默认权限。&lt;/p&gt;
&lt;p&gt;不带任何选项参数的情况下使用 &lt;code&gt;umask&lt;/code&gt; 命令就是查看当前的掩码值：&lt;/p&gt;</description>
    </item>
    <item>
      <title>煮雪 - 林清玄</title>
      <link>https://frytea.com/archives/1328/</link>
      <pubDate>Thu, 31 Oct 2024 12:46:28 +0000</pubDate>
      <guid>https://frytea.com/archives/1328/</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;内容转自百度词条 &lt;a href=&#34;https://baike.baidu.com/item/%E7%85%AE%E9%9B%AA/20382942&#34;&gt;煮雪&lt;/a&gt;，侵删，以下为原文。&lt;/p&gt;&lt;/blockquote&gt;
&lt;h2 id=&#34;煮雪&#34;&gt;煮雪&lt;/h2&gt;
&lt;blockquote&gt;
&lt;p&gt;林清玄&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;传说在北极的人因为天寒地冻，一开口说话就结成冰雪，对方听不见，只好回家慢慢地烤来听&amp;hellip; &amp;hellip;&lt;/p&gt;
&lt;p&gt;这是个极度浪漫的传说，想是多情的南方人编出来的。&lt;/p&gt;</description>
    </item>
    <item>
      <title>[转]名侦探柯南TV主线集数整理（截止1165集）</title>
      <link>https://frytea.com/archives/1329/</link>
      <pubDate>Thu, 31 Oct 2024 12:46:00 +0000</pubDate>
      <guid>https://frytea.com/archives/1329/</guid>
      <description>&lt;p&gt;名侦探柯南四条主线可大致分为 ：工藤新一的名侦探之路，世良姐妹一家9口人的搬迁之旅，警校五人组的牺牲故事，黑衣组织的秘密计划及红方的卧底行动&lt;/p&gt;
&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://cdn-imagehost.frytea.com/images/2024/11/09/klz04d.png&#34;&gt;&lt;/p&gt;
&lt;h2 id=&#34;主线&#34;&gt;主线&lt;/h2&gt;
&lt;p&gt;第1集（或剧场版变小的名侦探），琴酒和伏特加在游乐园给工藤新一灌下药物变小。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Linux 文件管理之特殊权限</title>
      <link>https://frytea.com/archives/1323/</link>
      <pubDate>Tue, 29 Oct 2024 17:19:03 +0000</pubDate>
      <guid>https://frytea.com/archives/1323/</guid>
      <description>&lt;p&gt;除了读取、写入、执行权限之外还有其他一些较少用到的特殊权限设置。&lt;/p&gt;
&lt;h3 id=&#34;suidset-user-id&#34;&gt;SUID（Set User ID）&lt;/h3&gt;
&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;&#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;ls -l /usr/bin/passwd /etc/passwd /etc/shadow
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&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;&#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;-rw-r--r-- &lt;span style=&#34;color:#ae81ff&#34;&gt;1&lt;/span&gt; root root    &lt;span style=&#34;color:#ae81ff&#34;&gt;1443&lt;/span&gt; Apr  &lt;span style=&#34;color:#ae81ff&#34;&gt;7&lt;/span&gt; 22:39 /etc/passwd
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;-rw-r----- &lt;span style=&#34;color:#ae81ff&#34;&gt;1&lt;/span&gt; root shadow   &lt;span style=&#34;color:#ae81ff&#34;&gt;974&lt;/span&gt; Apr  &lt;span style=&#34;color:#ae81ff&#34;&gt;7&lt;/span&gt; 22:39 /etc/shadow
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;-rwsr-xr-x &lt;span style=&#34;color:#ae81ff&#34;&gt;1&lt;/span&gt; root root   &lt;span style=&#34;color:#ae81ff&#34;&gt;63960&lt;/span&gt; Feb  &lt;span style=&#34;color:#ae81ff&#34;&gt;7&lt;/span&gt;  &lt;span style=&#34;color:#ae81ff&#34;&gt;2020&lt;/span&gt; /usr/bin/passwd
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;在使用 &lt;code&gt;passwd&lt;/code&gt; 命令（&lt;code&gt;/usr/bin/passwd&lt;/code&gt;）修改密码时，会修改存储密码的配置文件 &lt;code&gt;/etc/shadow&lt;/code&gt;（在之前的文章有提到，历史上密码存储于 &lt;code&gt;/etc/passwd&lt;/code&gt; 中但现在已经不是了）。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Linux 文件管理常规操作</title>
      <link>https://frytea.com/archives/1322/</link>
      <pubDate>Tue, 29 Oct 2024 17:18:52 +0000</pubDate>
      <guid>https://frytea.com/archives/1322/</guid>
      <description>&lt;p&gt;文件权限(文件模式)指定谁可以在 Linux 系统上访问、改变或执行一个文件。它确保只有授权的用户和进程可以访问文件和目录。&lt;/p&gt;
&lt;p&gt;通过命令 &lt;code&gt;ls -l&lt;/code&gt; 就可以获得文件的权限、属主与属组等信息：&lt;/p&gt;</description>
    </item>
    <item>
      <title>Linux 粘滞位 Sticky Bit</title>
      <link>https://frytea.com/archives/1325/</link>
      <pubDate>Mon, 28 Oct 2024 10:09:46 +0000</pubDate>
      <guid>https://frytea.com/archives/1325/</guid>
      <description>&lt;p&gt;粘滞（sticky）位来自「远古」Unix 的遗留产物，用于将可执行文件标记为「不可交换」。&lt;/p&gt;
&lt;p&gt;Linux 会忽略文件上设置的粘滞位，如果对目录设置了粘滞位，则能够阻止用户删除或者重命名其中的文件，除非用户是该目录的属主，或者是文件的属主，又或者是超级用户。&lt;/p&gt;</description>
    </item>
    <item>
      <title>《芯片战争：世界最关键技术的争夺战（财之道丛书）》</title>
      <link>https://frytea.com/archives/1320/</link>
      <pubDate>Sat, 26 Oct 2024 09:25:00 +0000</pubDate>
      <guid>https://frytea.com/archives/1320/</guid>
      <description>&lt;h1 id=&#34;阅读感悟&#34;&gt;阅读感悟&lt;/h1&gt;
&lt;p&gt;暂略&lt;/p&gt;
&lt;h1 id=&#34;阅读笔记&#34;&gt;阅读笔记&lt;/h1&gt;
&lt;h3 id=&#34;芯片战争世界最关键技术的争夺战财之道丛书&#34;&gt;&lt;strong&gt;《芯片战争：世界最关键技术的争夺战（财之道丛书）》&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt; 克里斯·米勒&lt;/p&gt;
&lt;p&gt; 17个笔记&lt;/p&gt;
&lt;h3 id=&#34;推荐序-国运升级点&#34;&gt;** 推荐序 国运升级点**&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;客观地说，当今中国的经济和科技发展水平，不但比不了美国，而且连20世纪80年代正在崛起中的日本都比不了。当时日本已经有索尼、夏普、丰田、本田、东芝、佳能、尼康等一系列拥有自己的核心技术、自己的设计、自己的品牌，且受到全世界消费者追捧的公司。日本曾经在芯片上把美国打到近乎绝望。就连韩国，早在一二十年前，也已经有了三星、LG、现代这样的全球知名企业。而当今中国除了华为和字节跳动，全球品牌还很少，独家技术也很少&lt;/li&gt;
&lt;li&gt;中国排在前列的大公司都是像石油、银行、电网和电信这些国有企业，一些国产品牌只在中国能做到家喻户晓。中国经济体量大、数字好看，而我们的真实经济实力，特别是创新能力，距离发达国家还很远&lt;/li&gt;
&lt;li&gt;中国被“卡脖子”的绝不仅仅是芯片。我们在工业母机、医疗仪器、农牧业育种等很多领域都受制于人。我们的产业升级远远没有完成。芯片只是一个聚焦点，但是透过芯片，我们也许可以反思一下一些人过去那种比较幼稚的世界观&lt;/li&gt;
&lt;li&gt;简单说，米勒这本书能纠正我们三个错误认知。&lt;/li&gt;
&lt;li&gt;第一个错误认知是任何高科技都可以用“堆积”的方法获得。&lt;/li&gt;
&lt;li&gt;不可堆积的东西往往要求高水平人才的奇思妙想，要求复杂的环境，要求可遇不可求的机遇。&lt;/li&gt;
&lt;li&gt;而要造芯片，从芯片设计软件到光刻机，再到硅材料，每一个步骤都需要很多个聪明人的奇思妙想，这里没有“大力出奇迹”。你需要成千上万个“邓稼先”和“于敏”，而且他们必须都在自己的行业里做得树大根深。&lt;/li&gt;
&lt;li&gt;芯片的科学原理没有秘密，都是公开的。但是要做到技术上的可行性，尤其是商业上的可盈利性，那可就太难了。花一亿元人民币造出一颗芯片是没有意义的，我们必须保证大规模制造、保证良品率、保证更新速度，还得保证做出来很便宜才行&lt;/li&gt;
&lt;li&gt;现实是中国制造从未离开过全世界的技术支持&lt;/li&gt;
&lt;li&gt;是，我们现在有一些像量子信息、碳纳米管芯片之类的领先研究，但是这些都还处于探索科学可能性的阶段——全世界有无数个类似的研究在赌，它们距离技术可行性、商业可盈利性还差十万八千里，根本谈不上“第四次工业革命”。&lt;/li&gt;
&lt;li&gt;第二个错误认知是创新应该由政府来主导。&lt;/li&gt;
&lt;li&gt;第三个错误认知是我们应该独立自主。&lt;/li&gt;
&lt;li&gt;现实是就芯片技术而言，连美国都不能独立自主。美国必须依赖荷兰的光刻机、日本的硅片和中国台湾的制造&lt;/li&gt;
&lt;li&gt;所谓的芯片战，美国卡中国脖子，恰恰就是逼着中国去独立自主。这叫作“把互相依赖武器化”：为了打击你，我不让你依赖我&lt;/li&gt;
&lt;li&gt;互相依赖是一种生存条件，被孤立是一种打压。现代化已经形成了一个全球“圈子”，只有圈里人得到这个圈的各种好处和帮助，互相依赖，才能把事情做成，独立于圈外没有任何前途。&lt;/li&gt;
&lt;li&gt;不被卡脖子的正确做法不是独立自主，而是让自己变得更值得依赖，让包括美国在内的全世界不得不依赖我们，以此跟美国讨价还价，若你要再敢卡我脖子我就卡你脖子&lt;/li&gt;
&lt;li&gt;然而进入21世纪，中国经济就到了下一个阶段。允许引进的技术已经引进完毕，剩下的得自己研发，创新走到了无人区。人口步入老龄化，劳动力越来越贵。全球化在退潮，美国等国家已经不拿中国当发展中国家，开始对抗&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt; 来自微信读书&lt;/p&gt;</description>
    </item>
    <item>
      <title>架构风格总结</title>
      <link>https://frytea.com/archives/1319/</link>
      <pubDate>Sat, 26 Oct 2024 09:18:00 +0000</pubDate>
      <guid>https://frytea.com/archives/1319/</guid>
      <description>&lt;h1 id=&#34;架构风格总结&#34;&gt;架构风格总结&lt;/h1&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code class=&#34;language-mermaid&#34; data-lang=&#34;mermaid&#34;&gt;mindmap
  root((软件架构风格))
    数据流
      批处理
        (一个接一个，以整体为单位)
      管道/过滤器
        (前一个输出是后一个输入)
        (实例: 传统编译器)
    调用/返回
      主程序/子程序
        (显式调用，主程序直接调用子程序)
      面向对象
        (对象是构件，通过对象调用封装的方法和属性)
      层次结构
        (分层，每层最多影响其上下两层，有调用关系)
    独立构件
      进程通信
        (进程间独立的消息传递，同步异步)
      事件驱动
        (不直接调用，通过事件驱动)
        (实例: 语法高亮、错误提示)
    虚拟机
      解释器
        (解释自定义规则，解释引擎、存储区、数据结构)
      规则系统
        (规则集、规则解释器、选择器和工作内存)
        (用于DSS和人工智能、专家系统)
      (实例: 自定义流程，按流程执行，规则随时改变)
    仓库/数据共享风格
      数据库
        (中央共享数据源，独立处理单元)
      超文本
        (网状连接，多用于互联网)
      黑板
        (用于问题复杂、解空间大的软件系统)
        (实例: 语音识别、知识推理)
    闭环-过程控制
      (发出控制命令并接受反馈，循环往复达到平衡)
      (实例: 汽车定速巡航、空调温度调节)
    C2风格
      (通过连接件绑定的并行构件网络)
      (构件和连接件、顶部和底部)
&lt;/code&gt;&lt;/pre&gt;&lt;blockquote&gt;
&lt;p&gt;背诵版&lt;/p&gt;</description>
    </item>
    <item>
      <title>软件架构设计必备概念</title>
      <link>https://frytea.com/archives/1318/</link>
      <pubDate>Sat, 26 Oct 2024 09:18:00 +0000</pubDate>
      <guid>https://frytea.com/archives/1318/</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;背诵版。&lt;/p&gt;&lt;/blockquote&gt;
&lt;h2 id=&#34;软件架构风格&#34;&gt;软件架构风格&lt;/h2&gt;
&lt;p&gt;描述特定软件系统组织方式的惯用模式，组织方式描述了系统的组成构件和这些构件的组织方式，惯用模式则反映众多系统共有的结构和语义。&lt;/p&gt;
&lt;h2 id=&#34;架构风险&#34;&gt;架构风险&lt;/h2&gt;
&lt;p&gt;架构设计中潜在的、存在问题的架构决策所带来的隐患。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Kubernetes helm 部署 prometheus stack</title>
      <link>https://frytea.com/archives/1316/</link>
      <pubDate>Tue, 22 Oct 2024 14:25:08 +0000</pubDate>
      <guid>https://frytea.com/archives/1316/</guid>
      <description>&lt;p&gt;Pometheus-Oerator 已经准备弃用，采用社区维护的 prometheus stack 部署。&lt;/p&gt;
&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;&#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;helm repo add prometheus-community https://prometheus-community.github.io/helm-charts
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;helm repo update
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&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;# install&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;helm install prometheus-stack prometheus-community/kube-prometheus-stack -n monitoring --create-namespace
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&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;# upgrade&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;helm upgrade prometheus-stack prometheus-community/kube-prometheus-stack
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&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;# uninstall&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;helm uninstall prometheus-stack
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h1 id=&#34;references&#34;&gt;References&lt;/h1&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://github.com/prometheus-community/helm-charts/tree/main/charts/kube-prometheus-stack&#34;&gt;https://github.com/prometheus-community/helm-charts/tree/main/charts/kube-prometheus-stack&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description>
    </item>
    <item>
      <title>kompose 转换 docker compose 应用为 k8s 资源清单</title>
      <link>https://frytea.com/archives/1315/</link>
      <pubDate>Tue, 22 Oct 2024 00:02:57 +0000</pubDate>
      <guid>https://frytea.com/archives/1315/</guid>
      <description>&lt;p&gt;Compose是Docker Compose到容器编排（如Kubernetes或OpenShift）的转换工具。&lt;/p&gt;
&lt;p&gt;官方Kubernetes项目，仓库位于github.com/kubernetes/kompose。&lt;/p&gt;</description>
    </item>
    <item>
      <title>kubernetes 部署 cert-manager 快速实现自动 ssl</title>
      <link>https://frytea.com/archives/1314/</link>
      <pubDate>Sun, 20 Oct 2024 10:45:51 +0000</pubDate>
      <guid>https://frytea.com/archives/1314/</guid>
      <description>&lt;p&gt;简单记录，使用 cloudflare dns 自动完成域名 ssl 证书申请并配置到 ingress 的关键步骤。&lt;/p&gt;
&lt;h1 id=&#34;安装&#34;&gt;安装&lt;/h1&gt;
&lt;p&gt;使用 helm 安装方法如下：&lt;/p&gt;
&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;&#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;helm repo add jetstack https://charts.jetstack.io --force-update
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;helm install &lt;span style=&#34;color:#ae81ff&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;&lt;/span&gt;  cert-manager jetstack/cert-manager &lt;span style=&#34;color:#ae81ff&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;&lt;/span&gt;  --namespace cert-manager &lt;span style=&#34;color:#ae81ff&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;&lt;/span&gt;  --create-namespace &lt;span style=&#34;color:#ae81ff&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;&lt;/span&gt;  --version v1.16.1 &lt;span style=&#34;color:#ae81ff&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;&lt;/span&gt;  --set crds.enabled&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;true
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h1 id=&#34;配置&#34;&gt;配置&lt;/h1&gt;
&lt;p&gt;使用 cloudflare 密钥自动认证&lt;/p&gt;</description>
    </item>
    <item>
      <title>临时解决 vagrant 不支持 virtualbox7.1</title>
      <link>https://frytea.com/archives/1313/</link>
      <pubDate>Sat, 19 Oct 2024 16:25:01 +0000</pubDate>
      <guid>https://frytea.com/archives/1313/</guid>
      <description>&lt;p&gt;介绍一种临时解决 &lt;code&gt;Recent version of Virtualbox 7.1.0 is not supported by vagrant 2.4.1&lt;/code&gt; 的方法：&lt;/p&gt;
&lt;h1 id=&#34;解决方案&#34;&gt;解决方案&lt;/h1&gt;
&lt;h2 id=&#34;方案一&#34;&gt;方案一&lt;/h2&gt;
&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;&#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 viVirtualBoxVM|virtualboxvm&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;     VBoxManage|vboxmanage&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;-        exec &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;$INSTALL_DIR&lt;span style=&#34;color:#e6db74&#34;&gt;/VBoxManage&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;$@&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;
&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;if&lt;/span&gt; &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;--version&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;]]&lt;/span&gt;; &lt;span style=&#34;color:#66d9ef&#34;&gt;then&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;+	  echo &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;7.0.0r164728&amp;#34;&lt;/span&gt;
&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;else&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;+          exec &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;$INSTALL_DIR&lt;span style=&#34;color:#e6db74&#34;&gt;/VBoxManage&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;$@&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;
&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;fi&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;         ;;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;     VBoxSDL|vboxsdl&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;         exec &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;$INSTALL_DIR&lt;span style=&#34;color:#e6db74&#34;&gt;/VBoxSDL&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;$@&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;方案二&#34;&gt;方案二&lt;/h2&gt;
&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;&#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 vim /opt/vagrant/embedded/gems/gems/vagrant-2.4.1/plugins/providers/virtualbox/driver
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;$ diff -u meta.rb.orig meta.rb
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;--- meta.rb.orig        2024-09-16 11:37:37.017440100 +0100
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;+++ meta.rb     2024-09-16 11:33:51.312254400 +0100
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;@@ -69,6 +69,7 @@
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;             &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;6.0&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&amp;gt; Version_6_0,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;             &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;6.1&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&amp;gt; Version_6_1,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;             &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;7.0&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&amp;gt; Version_7_0,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;+            &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;7.1&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&amp;gt; Version_7_0,
&lt;/span&gt;&lt;/span&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&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&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;if&lt;/span&gt; @@version.start_with?&lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;4.2.14&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h1 id=&#34;references&#34;&gt;References&lt;/h1&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://github.com/hashicorp/vagrant/issues/13501&#34;&gt;Recent version of Virtualbox 7.1.0 is not supported by vagrant 2.4.1 #13501&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description>
    </item>
    <item>
      <title>查看 linux 安装时间</title>
      <link>https://frytea.com/archives/1312/</link>
      <pubDate>Fri, 18 Oct 2024 16:48:10 +0000</pubDate>
      <guid>https://frytea.com/archives/1312/</guid>
      <description>&lt;p&gt;想要评估一下自己当前使用的 linux 工作环境已经持续多久，询问 claude3.5 得到了几个方法：&lt;/p&gt;
&lt;h1 id=&#34;ai-的答案&#34;&gt;ai 的答案&lt;/h1&gt;
&lt;p&gt;要查看您的 Arch Linux 安装时间，您可以尝试以下几种方法：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;查看根文件系统的创建时间：
打开终端，输入以下命令：&lt;/p&gt;</description>
    </item>
    <item>
      <title>《解密》</title>
      <link>https://frytea.com/archives/1309/</link>
      <pubDate>Sun, 13 Oct 2024 06:22:22 +0000</pubDate>
      <guid>https://frytea.com/archives/1309/</guid>
      <description>&lt;p&gt;解密&lt;/p&gt;
&lt;p&gt;《解密（陈思诚导演，刘昊然主演电影同步上映中）》&lt;/p&gt;
&lt;p&gt;麦家
66个笔记&lt;/p&gt;
&lt;p&gt;02&lt;/p&gt;
&lt;p&gt;◆ 牛顿数学桥是剑桥大学城里的一大景观，全桥由7177根大小不一的木头衔接而成，有10299个接口，如果以一个接口用一枚铁钉来计算，那么至少需要10299枚铁钉。但牛顿把所有铁钉都倒进了河里，整座桥没用一枚铁钉，这就是数学的奇妙。&lt;/p&gt;</description>
    </item>
    <item>
      <title>《Helm学习指南：Kubernetes上的应用程序管理》</title>
      <link>https://frytea.com/archives/1310/</link>
      <pubDate>Sun, 06 Oct 2024 10:56:00 +0000</pubDate>
      <guid>https://frytea.com/archives/1310/</guid>
      <description>&lt;h1 id=&#34;阅读感悟&#34;&gt;阅读感悟&lt;/h1&gt;
&lt;p&gt;暂略&lt;/p&gt;
&lt;h2 id=&#34;阅读摘录&#34;&gt;阅读摘录&lt;/h2&gt;
&lt;p&gt;《Helm学习指南：Kubernetes上的应用程序管理》&lt;/p&gt;
&lt;p&gt;马特·布彻 马特·法里纳 乔什·多利茨基
32个笔记&lt;/p&gt;
&lt;p&gt;1.1 云原生生态系统&lt;/p&gt;
&lt;p&gt;◆ 有一项关键的技术提供了移动容器镜像的能力，即镜像登记站（image registry），这是一种专门的块存储技术，它容纳容器，使其可供主机使用。主机可以将容器镜像推送（push）到登记站，该动作会将各层传输到登记站。然后另一台主机可以将镜像从登记站拉取（pull）到该主机的环境中，如此一来该主机就可以执行此容器了。&lt;/p&gt;</description>
    </item>
    <item>
      <title>《大话设计模式》</title>
      <link>https://frytea.com/archives/1311/</link>
      <pubDate>Sat, 05 Oct 2024 10:00:00 +0000</pubDate>
      <guid>https://frytea.com/archives/1311/</guid>
      <description>&lt;h1 id=&#34;阅读感悟&#34;&gt;阅读感悟&lt;/h1&gt;
&lt;p&gt;暂略&lt;/p&gt;
&lt;h1 id=&#34;摘录笔记&#34;&gt;摘录笔记&lt;/h1&gt;
&lt;h3 id=&#34;大话设计模式&#34;&gt;&lt;strong&gt;《大话设计模式》&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt; 程杰&lt;/p&gt;
&lt;p&gt; 225个笔记&lt;/p&gt;
&lt;h3 id=&#34;前言&#34;&gt;** 前言**&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;[插图]本书希望能给渴望了解OO世界的初学者、困惑于僵硬、脆弱、无法复用的代码编程体验者、一直打着OO编程的旗号，做着过程式开发的基于对象的编程实践者一些好的建议和提示。&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;本书起因&#34;&gt;** 本书起因**&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;技术课的教学同样如此，除非学生是抱着极大的学习动机来参与其中，否则照本宣科的教学、枯燥乏味的讲解，学生一定会被庞杂的概念和复杂的逻辑搅晕了头脑，致使效果大打折扣。&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;本书读者&#34;&gt;** 本书读者**&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;GoF的《设计模式》好比是世界顶级足球射门集锦，《重构》、《敏捷软件开发》、《设计模式解析》好比是一场场最精彩的足球比赛。&lt;/li&gt;
&lt;li&gt;可是我并不只是想做一个球迷（软件使用者），而是更希望自己能成为一个足球运动员（软件设计编程者），能够亲自上场比赛，并且最终能成为球星（软件架构师）&lt;/li&gt;
&lt;li&gt;本书显然不是培养足球明星（软件架构师）的俱乐部，而是训练足球基本功的学校，培训的是初学足球的小球员（面向对象的程序员），本书希望的是读者阅读后可以打好面向对象的基础，从而更加容易并深入的去理解和感受GoF的《设计模式》以及其他大师作品的魅力。&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;本书研读方法&#34;&gt;** 本书研读方法**&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;本书源代码下载地址：http://www.cnblogs.com/Files/cj723/BigTalkDesignPattenSourceCode.rar也可到清华大学出版社网站（www.tup.com.cn）查找并下载本书源代码。&lt;/li&gt;
&lt;li&gt;我的电子邮箱是chengjielong@163.com，博客是http://cj723.cnblogs.com/。&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;关于本书学习的疑问解答&#34;&gt;** 关于本书学习的疑问解答**&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;设计模式有四境界：1．没学前是一点不懂，根本想不到用设计模式，设计的代码很糟糕；2．学了几个模式后，很开心，于是到处想着要用自己学过的模式，于是时常造成误用模式而不自知；3．学完全部模式时，感觉诸多模式极其相似，无法分清模式之间的差异，有困惑，但深知误用之害，应用之时有所犹豫；4．灵活应用模式，甚至不应用具体的某种模式也能设计出非常优秀的代码，以达到无剑胜有剑的境界。&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;不是一个人在战斗&#34;&gt;** 不是一个人在战斗**&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;本书起源于本人在“博客园”网站的博客http://cj723.cnblogs.com/中的一个连载文章《小菜编程成长记》。&lt;/li&gt;
&lt;li&gt;写作过程中，本人还参考了http://www.dofactory.com/关于23个设计模式的讲解，并引用了他们的结构图和基本代码&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;15-活字印刷面向对象&#34;&gt;** 1.5 活字印刷，面向对象**&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;“第一，要改，只需更改要改之字，此为可维护；第二，这些字并非用完这次就无用，完全可以在后来的印刷中重复使用，此乃可复用；第三，此诗若要加字，只需另刻字加入即可，这是可扩展；第四，字的排列其实可能是竖排可能是横排，此时只需将活字移动就可做到满足排列需求，此是灵活性好。”&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;16-面向对象的好处&#34;&gt;** 1.6 面向对象的好处**&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;是呀是呀，你说得没错，中国古代的四大发明，另三种应该都是科技的进步，伟大的创造或发现。而唯有活字印刷，实在是思想的成功，面向对象的胜利。&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;111-uml类图&#34;&gt;** 1.11 UML类图**&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;类图分三层，第一层显示类的名称，如果是抽象类，则就用斜体显示。第二层是类的特性，通常就是字段和属性。第三层是类的操作，通常是方法或行为。注意前面的符号，‘+’表示public，‘-’表示private，‘#’表示protected。”&lt;/li&gt;
&lt;li&gt;它表示一个接口图，与类图的区别主要是顶端有&amp;lt;&amp;lt;interface&amp;gt;&amp;gt;显示。第一行是接口名称，第二行是接口方法&lt;/li&gt;
&lt;li&gt;接口还有另一种表示方法，俗称棒棒糖表示法&lt;/li&gt;
&lt;li&gt;继承关系用空心三角形+实线来表示。”&lt;/li&gt;
&lt;li&gt;实现接口用空心三角形+虚线来表示&lt;/li&gt;
&lt;li&gt;当一个类‘知道’另一个类时，可以用关联（association）。&lt;/li&gt;
&lt;li&gt;聚合表示一种弱的‘拥有’关系，体现的是A对象可以包含B对象，但B对象不是A对象的一部分[DPE]（DPE表示此句摘自《设计模式》（第2版）&lt;/li&gt;
&lt;li&gt;聚合关系用空心的菱形+实线箭头来表示&lt;/li&gt;
&lt;li&gt;合成（Composition，也有翻译成‘组合’的）是一种强的‘拥有’关系，体现了严格的部分和整体的关系，部分和整体的生命周期一样[DPE]。&lt;/li&gt;
&lt;li&gt;合成关系用实心的菱形+实线箭头来表示&lt;/li&gt;
&lt;li&gt;依赖关系（Dependency），用虚线箭头来表示。”&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;23-简单工厂实现&#34;&gt;** 2.3 简单工厂实现**&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;面向对象的编程，并不是类越多越好，类的划分是为了封装，但分类的基础是抽象，具有相同属性和功能的对象的抽象集合才是类&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;24-策略模式&#34;&gt;** 2.4 策略模式**&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;策略模式定义了算法家族，分别封装起来，让它们之间可以互相替换，此模式让算法的变化，不会影响到使用算法的客户&lt;/li&gt;
&lt;li&gt;封装变化点是我们面向对象的一种很重要的思维方式&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;26-策略与简单工厂结合&#34;&gt;** 2.6 策略与简单工厂结合**&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;你的意思是说，简单工厂模式我需要让客户端认识两个类， CashSuper和CashFactory，而策略模式与简单工厂结合的用法，客户端就只需要认识一个类CashContext就可以了。耦合更加降低。”&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;27-策略模式解析&#34;&gt;** 2.7 策略模式解析**&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;策略模式是一种定义一系列算法的方法，从概念上来看，所有这些算法完成的都是相同的工作，只是实现不同，它可以以相同的方式调用所有的算法，减少了各种算法类与使用算法类之间的耦合[DPE]&lt;/li&gt;
&lt;li&gt;“当然。这个办法就是用到了反射技术，不是常有人讲，‘反射反射，程序员的快乐’，不过今天就不讲了，以后会再提它的。”&lt;/li&gt;
&lt;li&gt;（注：在抽象工厂模式章节有对反射的讲解）&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;34-单一职责原则&#34;&gt;** 3.4 单一职责原则**&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;就一个类而言，应该仅有一个引起它变化的原因[ASD]&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;35-方块游戏的设计&#34;&gt;** 3.5 方块游戏的设计**&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;如果一个类承担的职责过多，就等于把这些职责耦合在一起，一个职责的变化可能会削弱或者抑制这个类完成其他职责的能力。这种耦合会导致脆弱的设计，当变化发生时，设计会遭受到意想不到的破坏[ASD]&lt;/li&gt;
&lt;li&gt;软件设计真正要做的许多内容，就是发现职责并把那些职责相互分离[ASD]&lt;/li&gt;
&lt;li&gt;如果你能够想到多于一个的动机去改变一个类，那么这个类就具有多于一个的职责[ASD]，就应该考虑类的职责分离。”&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;42-开放-封闭原则&#34;&gt;** 4.2 开放-封闭原则**&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;开放-封闭原则，是说软件实体（类、模块、函数等等）应该可以扩展，但是不可修改&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;43-何时应对变化&#34;&gt;** 4.3 何时应对变化**&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;开放-封闭原则的意思就是说，你设计的时候，时刻要考虑，尽量让这个类是足够好，写好了就不要去修改了，如果新需求来，我们增加一些类就完事了，原来的代码能不动则不动。&lt;/li&gt;
&lt;li&gt;“在我们最初编写代码时，假设变化不会发生。当变化发生时，我们就创建抽象来隔离以后发生的同类变化[ASD]&lt;/li&gt;
&lt;li&gt;我们希望的是在开发工作展开不久就知道可能发生的变化。查明可能发生的变化所等待的时间越长，要创建正确的抽象就越困难[ASD]。&lt;/li&gt;
&lt;li&gt;开放-封闭原则是面向对象设计的核心所在。遵循这个原则可以带来面向对象技术所声称的巨大好处，也就是可维护、可扩展、可复用、灵活性好。开发人员应该仅对程序中呈现出频繁变化的那些部分做出抽象，然而，对于应用程序中的每个部分都刻意地进行抽象同样不是一个好主意。拒绝不成熟的抽象和抽象本身一样重要[ASD]。&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;53-依赖倒转原则&#34;&gt;** 5.3 依赖倒转原则**&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;因为CPU的对外都是针脚式或触点式等标准的接口。啊，我明白了，这就是接口的最大好处。CPU只需要把接口定义好，内部再复杂我也不让外界知道，而主板只需要预留与CPU针脚的插槽就可以了。&lt;/li&gt;
&lt;li&gt;依赖倒转原则，原话解释是抽象不应该依赖细节，细节应该依赖于抽象，这话绕口，说白了，就是要针对接口编程，不要对实现编程&lt;/li&gt;
&lt;li&gt;高层模块不应该依赖低层模块。两个都应该依赖抽象&lt;/li&gt;
&lt;li&gt;抽象不应该依赖细节。细节应该依赖抽象&lt;/li&gt;
&lt;li&gt;比如我们做的项目大多要访问数据库，所以我们就把访问数据库的代码写成了函数，每次做新项目时就去调用这些函数。这也就叫做高层模块依赖低层模块。&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;54-里氏代换原则&#34;&gt;** 5.4 里氏代换原则**&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;“里氏代换原则是Barbara Liskov女士在1988年发表的[ASD]，具体的数学定义比较复杂，你可以查相关资料，它的白话翻译就是一个软件实体如果使用的是一个父类的话，那么一定适用于其子类，而且它察觉不出父类对象和子类对象的区别。也就是说，在软件里面，把父类都替换成它的子类，程序的行为没有变化，简单地说，子类型必须能够替换掉它们的父类型[ASD]。”&lt;/li&gt;
&lt;li&gt;里氏代换原则（LSP）：子类型必须能够替换掉它们的父类型。[ASD]&lt;/li&gt;
&lt;li&gt;只有当子类可以替换掉父类，软件单位的功能不受到影响时，父类才能真正被复用，而子类也能够在父类的基础上增加新的行为。&lt;/li&gt;
&lt;/ul&gt;</description>
    </item>
    <item>
      <title>[转译] 深思熟虑的编程练习</title>
      <link>https://frytea.com/archives/1300/</link>
      <pubDate>Tue, 01 Oct 2024 10:04:59 +0000</pubDate>
      <guid>https://frytea.com/archives/1300/</guid>
      <description>&lt;p&gt;马尔科姆·格拉德威尔曾著名地宣称，掌握一门技艺需要 10,000 小时的深思熟虑的练习，彼得·诺维格在他的文章 &lt;a href=&#34;http://norvig.com/21-days.html&#34;&gt;Teach Yourself Programming In Ten Years&lt;/a&gt; 中引用了这一发现。程序员在工作 5.2 年，每天 8 小时，每年 48 周后将获得 10,000 小时的办公室时间。这并不意味着程序员在 5 或 6 年后就会成为专家，因为这 10,000 小时的办公室时间并不全是深思熟虑的练习。&lt;/p&gt;</description>
    </item>
    <item>
      <title>[转译] CheatGPT</title>
      <link>https://frytea.com/archives/1301/</link>
      <pubDate>Tue, 01 Oct 2024 10:04:49 +0000</pubDate>
      <guid>https://frytea.com/archives/1301/</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;本文为计算机科学教授大卫·汉弗莱 （David Humphrey） 撰写的关于 ChatGPT 及其对核心学习的潜在负面影响的文章。这是一本关于在教育环境中使用生成式 AI 的陷阱的好书。&lt;/p&gt;</description>
    </item>
    <item>
      <title>[转译] 别相信任何告诉你编程很简单的人</title>
      <link>https://frytea.com/archives/1299/</link>
      <pubDate>Fri, 27 Sep 2024 16:38:03 +0000</pubDate>
      <guid>https://frytea.com/archives/1299/</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;&lt;a href=&#34;https://techcrunch.com/2014/05/24/dont-believe-anyone-who-tells-you-learning-to-code-is-easy/&#34;&gt;原文发布于&lt;/a&gt; 太平洋夏令时间下午 6:00 • 2014年5月24日&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;告诉刚开始学习编程的人编程很简单，这是我见过最危险的事情之一。&lt;/p&gt;
&lt;p&gt;这是你的大脑做的反应：&lt;/p&gt;
&lt;p&gt;&lt;img alt=&#34;rage-programming2&#34; loading=&#34;lazy&#34; src=&#34;https://cdn-imagehost.frytea.com/images/2024/09/25/jwh7qx.png&#34;&gt;&lt;/p&gt;
&lt;p&gt;我的画作。（我编程比画画好。）&lt;/p&gt;</description>
    </item>
    <item>
      <title>[转译] 如何增加休息时间来提升你的工作效率</title>
      <link>https://frytea.com/archives/1302/</link>
      <pubDate>Thu, 26 Sep 2024 14:57:59 +0000</pubDate>
      <guid>https://frytea.com/archives/1302/</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;原文作者：&lt;a href=&#34;https://simpleprogrammer.com/author/sgaston/&#34; title=&#34;Saeed Gatson&#34;&gt;Saeed Gatson&lt;/a&gt;&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;软件开发者生活在一个有趣的悖论中。一方面，我们很懒。这就是为什么我们喜欢自动化那些无聊的重复任务，比如运行单元测试或部署新环境。与此同时，开发者常常因记录大量工作时间而受到赞扬。典型的咖啡因驱动的通宵达旦工作场景屡见不鲜。&lt;/p&gt;</description>
    </item>
    <item>
      <title>[转译] 如何成为一个好的开发者？</title>
      <link>https://frytea.com/archives/1298/</link>
      <pubDate>Thu, 26 Sep 2024 14:57:00 +0000</pubDate>
      <guid>https://frytea.com/archives/1298/</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;&lt;a href=&#34;http://jaredthenerd.com/2013/05/What-Makes-A-Good-Developer/&#34;&gt;原文&lt;/a&gt; 发表于2013年5月10日星期五&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;这应该是一个能吸引注意力的好标题。我最近一直在思考这个问题。在 &lt;a href=&#34;http://www.hmbnet.com/&#34;&gt;HMB&lt;/a&gt; 参与招聘过程的一部分是思考人们是谁，他们在我们为他们考虑的角色中表现如何，以及他们是否会对此感到快乐。&lt;/p&gt;</description>
    </item>
    <item>
      <title>解决 archlinux fcitx5 中文输入错漏乱序问题</title>
      <link>https://frytea.com/archives/1297/</link>
      <pubDate>Fri, 20 Sep 2024 01:17:00 +0000</pubDate>
      <guid>https://frytea.com/archives/1297/</guid>
      <description>&lt;p&gt;不知道配置了什么，突然输入中文经常出现错漏乱字，&lt;/p&gt;
&lt;p&gt;类似这样：输入“dacheng” 变成 edachng&lt;/p&gt;
&lt;p&gt;拼音顺序混乱，导致乱字。&lt;/p&gt;
&lt;p&gt;最后在 deepin 找到一个解决方法，尝试后确实有用：&lt;/p&gt;</description>
    </item>
    <item>
      <title>虽怀念必前行</title>
      <link>https://frytea.com/archives/1296/</link>
      <pubDate>Sat, 14 Sep 2024 10:20:00 +0000</pubDate>
      <guid>https://frytea.com/archives/1296/</guid>
      <description>&lt;p&gt;感觉当下的状态不是最好，可能是一种常态。&lt;/p&gt;
&lt;p&gt;虽然感觉不是最好的状态，但或许这已经是最佳的状态。&lt;/p&gt;
&lt;p&gt;甚至过去这段时间回看，还不如这个状态。&lt;/p&gt;
&lt;p&gt;再过一段时间，会发现，
虽然状态不是最好的，但或许是走在上坡路。&lt;/p&gt;</description>
    </item>
    <item>
      <title>好久没有写毛笔字了</title>
      <link>https://frytea.com/archives/1290/</link>
      <pubDate>Sun, 08 Sep 2024 07:28:00 +0000</pubDate>
      <guid>https://frytea.com/archives/1290/</guid>
      <description>&lt;p&gt;好久没有写大字了，突然想起来高中的时候。周末经常不回家，就在宿舍里写几页毛笔字，写完以后冲一冲砚台和毛笔，把文具放好在抽屉的角落。&lt;/p&gt;
&lt;p&gt;&lt;img alt=&#34;IMG_20240908_122110.jpg&#34; loading=&#34;lazy&#34; src=&#34;https://oskyla.com/usr/uploads/2024/09/898975740.jpg&#34;&gt;&lt;/p&gt;
&lt;p&gt;写完毛笔字，再写小毛笔字就很轻松了。
&lt;img alt=&#34;IMG_20240908_115344.jpg&#34; loading=&#34;lazy&#34; src=&#34;https://oskyla.com/usr/uploads/2024/09/2202290467.jpg&#34;&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>网站上线一周不到就被全站克隆</title>
      <link>https://frytea.com/archives/1287/</link>
      <pubDate>Sat, 07 Sep 2024 02:28:39 +0000</pubDate>
      <guid>https://frytea.com/archives/1287/</guid>
      <description>&lt;p&gt;重构了自己的博客，整合了文章，上线不到一周，就出现内容完全一致的克隆站，文字变成繁体中文。&lt;/p&gt;
&lt;p&gt;我的网站是这样：&lt;/p&gt;
&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://cdn-imagehost.frytea.com/images/2024/09/07/gzin8a.png&#34;&gt;&lt;/p&gt;
&lt;p&gt;刚刚提交谷歌没几天，还没收录几个页面，首页搜索我的网站名称就已经出现克隆站：&lt;/p&gt;</description>
    </item>
    <item>
      <title>解决 containerd Name is already used</title>
      <link>https://frytea.com/archives/1208/</link>
      <pubDate>Sun, 25 Aug 2024 04:00:21 +0000</pubDate>
      <guid>https://frytea.com/archives/1208/</guid>
      <description>&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;&#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;FATA&lt;span style=&#34;color:#f92672&#34;&gt;[&lt;/span&gt;0000&lt;span style=&#34;color:#f92672&#34;&gt;]&lt;/span&gt; name &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;xxx&amp;#34;&lt;/span&gt; is already used by I
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;D &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;a1e09c7badd41dd267050f3edeb16c9d6dabf5762fcbfc481eb1ae01ae34e64d&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;解决办法：&lt;/p&gt;</description>
    </item>
    <item>
      <title>neovim 打通 OS 剪贴板</title>
      <link>https://frytea.com/archives/1183/</link>
      <pubDate>Sun, 25 Aug 2024 04:00:08 +0000</pubDate>
      <guid>https://frytea.com/archives/1183/</guid>
      <description>&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;&#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 pacman -S wl-clipboard
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description>
    </item>
    <item>
      <title>Kubernetes 1.22.17 源码阅读指南</title>
      <link>https://frytea.com/archives/1267/</link>
      <pubDate>Sun, 25 Aug 2024 03:59:58 +0000</pubDate>
      <guid>https://frytea.com/archives/1267/</guid>
      <description>&lt;h1 id=&#34;kubernetes-12217-源码阅读指南&#34;&gt;Kubernetes 1.22.17 源码阅读指南&lt;/h1&gt;
&lt;h2 id=&#34;1-代码结构概览&#34;&gt;1. 代码结构概览&lt;/h2&gt;
&lt;p&gt;Kuberne&lt;/p&gt;</description>
    </item>
    <item>
      <title>Kubeadm 版本与 API 版本对应</title>
      <link>https://frytea.com/archives/1227/</link>
      <pubDate>Sun, 25 Aug 2024 03:59:44 +0000</pubDate>
      <guid>https://frytea.com/archives/1227/</guid>
      <description>&lt;p&gt;以下是 Kubeadm 版本与其 API 版本的大致对应关系：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Kubeadm v1.11&lt;/li&gt;
&lt;/ol&gt;</description>
    </item>
    <item>
      <title>git 创建全新分支</title>
      <link>https://frytea.com/archives/1187/</link>
      <pubDate>Sun, 25 Aug 2024 03:59:34 +0000</pubDate>
      <guid>https://frytea.com/archives/1187/</guid>
      <description>&lt;p&gt;要在当前仓库创建一个不包含任何文件的新分支,可以使用以下Git命令:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;git switch




--orphan &amp;lt;new-branch-name&amp;gt;
git commit --allow-empty -m &amp;#34;Initial commit&amp;#34;
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;这两个命令的解释:&lt;/p&gt;</description>
    </item>
    <item>
      <title>linux下显示dd命令的进度</title>
      <link>https://frytea.com/archives/1195/</link>
      <pubDate>Sun, 25 Aug 2024 03:59:24 +0000</pubDate>
      <guid>https://frytea.com/archives/1195/</guid>
      <description>&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;sudo dd if=/dev/zero of=/tmp/zero.img status=p




rogress
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;linux下显示dd命令的进度：&lt;/p&gt;</description>
    </item>
    <item>
      <title>archlinux 列出来自 aur 安装的包</title>
      <link>https://frytea.com/archives/1206/</link>
      <pubDate>Sun, 25 Aug 2024 03:58:01 +0000</pubDate>
      <guid>https://frytea.com/archives/1206/</guid>
      <description>&lt;p&gt;在 Arch Linux 中，要检索出使用 yay 安装的包，您可以使用以下方法：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;使用 p&lt;/li&gt;
&lt;/ol&gt;</description>
    </item>
    <item>
      <title>用 testdisk 恢复 Linux 上已删除的文件</title>
      <link>https://frytea.com/archives/1245/</link>
      <pubDate>Sun, 25 Aug 2024 03:57:20 +0000</pubDate>
      <guid>https://frytea.com/archives/1245/</guid>
      <description>&lt;h1 id=&#34;安装-testdisk&#34;&gt;安装 testdisk&lt;/h1&gt;
&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;&#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;apt install testdisk
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;yum i
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;nstall testdis
&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;# 恢复文件&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;首先，你必须以 root 身份登录，或者有 sudo 权限才能使用 testdisk。如果你没有 sudo 访问权限，你会在这个过程一开始就被踢出，而如果你选择创建了一个日志文件的话，最终会有这样的消息：
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;TestDisk exited normally.
jdoe is not in the sudoers file.  This incident will be reported.&lt;/p&gt;</description>
    </item>
    <item>
      <title>简单工厂模式</title>
      <link>https://frytea.com/archives/1148/</link>
      <pubDate>Sun, 25 Aug 2024 03:57:04 +0000</pubDate>
      <guid>https://frytea.com/archives/1148/</guid>
      <description>&lt;h1 id=&#34;uml&#34;&gt;UML&lt;/h1&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code class=&#34;language-mermaid&#34; data-lang=&#34;mermaid&#34;&gt;classDiagram
    class Product {




&amp;lt;&amp;lt;interface&amp;gt;&amp;gt;
        +operation()
    }
    class ConcreteProductA {
        +operation()
    }
    class ConcreteProductB {
        +operation()
    }
    class SimpleFactory {
        +createProduct(string) Product
    }
    Product &amp;lt;|.. ConcreteProductA
    Product &amp;lt;|.. ConcreteProductB
    SimpleFactory ..&amp;gt; Product
    SimpleFactory ..&amp;gt; ConcreteProductA
    SimpleFactory ..&amp;gt; ConcreteProductB
&lt;/code&gt;&lt;/pre&gt;&lt;h1 id=&#34;go-sample&#34;&gt;Go Sample&lt;/h1&gt;
&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;&#34;&gt;&lt;code class=&#34;language-go&#34; data-lang=&#34;go&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;package&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;main&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;import&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;fmt&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&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;// Product 接口&lt;/span&gt;
&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;type&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;Product&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;interface&lt;/span&gt; {
&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;Operation&lt;/span&gt;() &lt;span style=&#34;color:#66d9ef&#34;&gt;string&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&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;// ConcreteProductA 结构体&lt;/span&gt;
&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;type&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;ConcreteProductA&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;struct&lt;/span&gt;{}
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&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;func&lt;/span&gt; (&lt;span style=&#34;color:#a6e22e&#34;&gt;p&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;*&lt;/span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;ConcreteProductA&lt;/span&gt;) &lt;span style=&#34;color:#a6e22e&#34;&gt;Operation&lt;/span&gt;() &lt;span style=&#34;color:#66d9ef&#34;&gt;string&lt;/span&gt; {
&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;return&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;ConcreteProductA&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&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;// ConcreteProductB 结构体&lt;/span&gt;
&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;type&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;ConcreteProductB&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;struct&lt;/span&gt;{}
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&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;func&lt;/span&gt; (&lt;span style=&#34;color:#a6e22e&#34;&gt;p&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;*&lt;/span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;ConcreteProductB&lt;/span&gt;) &lt;span style=&#34;color:#a6e22e&#34;&gt;Operation&lt;/span&gt;() &lt;span style=&#34;color:#66d9ef&#34;&gt;string&lt;/span&gt; {
&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;return&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;ConcreteProductB&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&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;// SimpleFactory 结构体&lt;/span&gt;
&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;type&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;SimpleFactory&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;struct&lt;/span&gt;{}
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&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;func&lt;/span&gt; (&lt;span style=&#34;color:#a6e22e&#34;&gt;f&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;*&lt;/span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;SimpleFactory&lt;/span&gt;) &lt;span style=&#34;color:#a6e22e&#34;&gt;CreateProduct&lt;/span&gt;(&lt;span style=&#34;color:#a6e22e&#34;&gt;productType&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;string&lt;/span&gt;) &lt;span style=&#34;color:#a6e22e&#34;&gt;Product&lt;/span&gt; {
&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;switch&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;productType&lt;/span&gt; {
&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;case&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;A&amp;#34;&lt;/span&gt;:
&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;return&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;&amp;amp;&lt;/span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;ConcreteProductA&lt;/span&gt;{}
&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;case&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;B&amp;#34;&lt;/span&gt;:
&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;return&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;&amp;amp;&lt;/span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;ConcreteProductB&lt;/span&gt;{}
&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;default&lt;/span&gt;:
&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;return&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;nil&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    }
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&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;func&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;main&lt;/span&gt;() {
&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;factory&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;:=&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;&amp;amp;&lt;/span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;SimpleFactory&lt;/span&gt;{}
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&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;productA&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;:=&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;factory&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;CreateProduct&lt;/span&gt;(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;A&amp;#34;&lt;/span&gt;)
&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;fmt&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;Println&lt;/span&gt;(&lt;span style=&#34;color:#a6e22e&#34;&gt;productA&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;Operation&lt;/span&gt;())
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&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;productB&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;:=&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;factory&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;CreateProduct&lt;/span&gt;(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;B&amp;#34;&lt;/span&gt;)
&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;fmt&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;Println&lt;/span&gt;(&lt;span style=&#34;color:#a6e22e&#34;&gt;productB&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;Operation&lt;/span&gt;())
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description>
    </item>
    <item>
      <title>数据存储单位</title>
      <link>https://frytea.com/archives/1146/</link>
      <pubDate>Sun, 25 Aug 2024 03:56:00 +0000</pubDate>
      <guid>https://frytea.com/archives/1146/</guid>
      <description>&lt;h2 id=&#34;二进制&#34;&gt;二进制&lt;/h2&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;标识&lt;/th&gt;
          &lt;th&gt;单位&lt;/th&gt;
          &lt;th&gt;大小&lt;/th&gt;
          &lt;th&gt;描述&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;Bit&lt;/td&gt;
          &lt;td&gt;位&lt;/td&gt;
          &lt;td&gt;1/0&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Byte&lt;/td&gt;
          &lt;td&gt;字节&lt;/td&gt;
          &lt;td&gt;8 Bit&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;KiB&lt;/td&gt;
          &lt;td&gt;千&lt;/td&gt;
          &lt;td&gt;1024 Byte/$2^{10}$&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;MiB&lt;/td&gt;
          &lt;td&gt;兆&lt;/td&gt;
          &lt;td&gt;1024 KB/$2^{20}$&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;GiB&lt;/td&gt;
          &lt;td&gt;吉&lt;/td&gt;
          &lt;td&gt;1024 MB/$2^{30}$&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;TiB&lt;/td&gt;
          &lt;td&gt;太&lt;/td&gt;
          &lt;td&gt;1024 GB/$2^{40}$&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;PiB&lt;/td&gt;
          &lt;td&gt;拍&lt;/td&gt;
          &lt;td&gt;1024 TB/$2^{50}$&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;EiB&lt;/td&gt;
          &lt;td&gt;艾&lt;/td&gt;
          &lt;td&gt;1024 PB/$2^{60}$&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;ZiB&lt;/td&gt;
          &lt;td&gt;泽&lt;/td&gt;
          &lt;td&gt;1024 EB/$2^{70}$&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;YiB&lt;/td&gt;
          &lt;td&gt;尧&lt;/td&gt;
          &lt;td&gt;1024 ZB/$2^{80}$&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id=&#34;十进制&#34;&gt;十进制&lt;/h2&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;缩写&lt;/th&gt;
          &lt;th&gt;名字&lt;/th&gt;
          &lt;th&gt;次方&lt;/th&gt;
          &lt;th&gt;描述&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;KB&lt;/td&gt;
          &lt;td&gt;千&lt;/td&gt;
          &lt;td&gt;$10^{3}$&lt;/td&gt;
          &lt;td&gt;千字节&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;MB&lt;/td&gt;
          &lt;td&gt;兆&lt;/td&gt;
          &lt;td&gt;$10^{6}$&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;GB&lt;/td&gt;
          &lt;td&gt;吉&lt;/td&gt;
          &lt;td&gt;$10^{9}$&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;TB&lt;/td&gt;
          &lt;td&gt;太&lt;/td&gt;
          &lt;td&gt;$10^{12}$&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;PB&lt;/td&gt;
          &lt;td&gt;拍&lt;/td&gt;
          &lt;td&gt;$10^{15}$&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;EB&lt;/td&gt;
          &lt;td&gt;艾&lt;/td&gt;
          &lt;td&gt;$10^{18}$&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;ZB&lt;/td&gt;
          &lt;td&gt;泽&lt;/td&gt;
          &lt;td&gt;$10^{21}$&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;YB&lt;/td&gt;
          &lt;td&gt;尧&lt;/td&gt;
          &lt;td&gt;$10^{24}$&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;RB&lt;/td&gt;
          &lt;td&gt;容&lt;/td&gt;
          &lt;td&gt;$10^{27}$&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;QB&lt;/td&gt;
          &lt;td&gt;昆&lt;/td&gt;
          &lt;td&gt;$10^{30}$&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id=&#34;references&#34;&gt;References&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://blog.51cto.com/sddai/3075057&#34;&gt;数据存储单位的换算关系（TB、PB、EB、ZB、YB）&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://zh.wikipedia.org/wiki/%E5%AD%97%E8%8A%82&#34;&gt;字节 - wikipedia&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description>
    </item>
    <item>
      <title>linux 配置登陆 MOTD</title>
      <link>https://frytea.com/archives/1216/</link>
      <pubDate>Sun, 25 Aug 2024 03:55:31 +0000</pubDate>
      <guid>https://frytea.com/archives/1216/</guid>
      <description>&lt;p&gt;登录时显示的消息确实有一个特定的名称。这个消息通常被称为&amp;quot;登录标语&amp;quot;或&amp;quot;欢迎横幅&amp;quot;。在Linux系统&lt;/p&gt;</description>
    </item>
    <item>
      <title>ubuntu 配置 nfs 服务</title>
      <link>https://frytea.com/archives/1220/</link>
      <pubDate>Sat, 27 Jul 2024 08:43:42 +0000</pubDate>
      <guid>https://frytea.com/archives/1220/</guid>
      <description>&lt;h1 id=&#34;步骤&#34;&gt;步骤&lt;/h1&gt;
&lt;h2 id=&#34;步骤一安装nfs服务器软件包&#34;&gt;步骤一：安装NFS服务器软件包&lt;/h2&gt;
&lt;p&gt;首先，打开终端窗口，并以管理员权限运行以下命令来&lt;/p&gt;</description>
    </item>
    <item>
      <title>ubuntu 克隆 netplan dhcp ip 冲突问题</title>
      <link>https://frytea.com/archives/1218/</link>
      <pubDate>Sat, 27 Jul 2024 08:43:23 +0000</pubDate>
      <guid>https://frytea.com/archives/1218/</guid>
      <description>&lt;p&gt;在被克隆的机器上编辑 &lt;code&gt;/etc/netplan/xx-installer-config.yaml&lt;/code&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Windows XP 所有版本密钥集合</title>
      <link>https://frytea.com/archives/1185/</link>
      <pubDate>Sat, 27 Jul 2024 08:43:13 +0000</pubDate>
      <guid>https://frytea.com/archives/1185/</guid>
      <description>&lt;p&gt;![Windows XP Logo](&lt;a href=&#34;https://cdn-imagehost.frytea.co&#34;&gt;https://cdn-imagehost.frytea.co&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>PVE 解决  x86/split lock detection</title>
      <link>https://frytea.com/archives/1252/</link>
      <pubDate>Sat, 27 Jul 2024 08:43:01 +0000</pubDate>
      <guid>https://frytea.com/archives/1252/</guid>
      <description>&lt;p&gt;1、add in &lt;code&gt;/etc/default/grub&lt;/code&gt;&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;GRUB_CMDLINE_LINU




X_DEFAULT=&amp;#34;quiet split_lock_detect=off&amp;#34;
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;2、now run &lt;code&gt;update-grub&lt;/code&gt; and &lt;code&gt;reboot&lt;/code&gt;.&lt;/p&gt;</description>
    </item>
    <item>
      <title>VirtualBox 安装 macOS</title>
      <link>https://frytea.com/archives/1285/</link>
      <pubDate>Sat, 27 Jul 2024 08:42:43 +0000</pubDate>
      <guid>https://frytea.com/archives/1285/</guid>
      <description>&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;&#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;VBoxManage modifyvm &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;Type Your Virtual Mac
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;hine Name Here&amp;#34;&lt;/span&gt; --cpuidset &lt;span style=&#34;color:#ae81ff&#34;&gt;00000001&lt;/span&gt; 000106e5 &lt;span style=&#34;color:#ae81ff&#34;&gt;00100800&lt;/span&gt; 0098e3fd bfebfbff
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;VBoxManage setextradata &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;Type Your Virtual Machine Name Here&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;VBoxInternal/Devices/efi/0/Config/DmiSystemProduct&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;iMac11,3&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;VBoxManage setextradata &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;Type Your Virtual Machine Name Here&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;VBoxInternal/Devices/efi/0/Config/DmiSystemVersion&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;1.0&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;VBoxManage setextradata &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;Type Your Virtual Machine Name Here&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;VBoxInternal/Devices/efi/0/Config/DmiBoardProduct&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;Iloveapple&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;VBoxManage setextradata &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;Type Your Virtual Machine Name Here&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;VBoxInternal/Devices/smc/0/Config/DeviceKey&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;ourhardworkbythesewordsguardedpleasedontsteal(c)AppleComputerInc&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;VBoxManage setextradata &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;Type Your Virtual Machine Name Here&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;VBoxInternal/Devi
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h1 id=&#34;references&#34;&gt;References&lt;/h1&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://www.maketecheasier.com/install-macos-virtualbox/&#34;&gt;How to Install macOS in VirtualBox&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description>
    </item>
    <item>
      <title>Docker  交叉编译多架构镜像</title>
      <link>https://frytea.com/archives/1271/</link>
      <pubDate>Sat, 27 Jul 2024 08:42:31 +0000</pubDate>
      <guid>https://frytea.com/archives/1271/</guid>
      <description>&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;&#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;# 安装模拟器（用于多平台镜像构建）&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;docker run --rm --privi
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;leged tonistiigi/binfmt:latest --install all
&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;# 查看构建器，查阅支持的构建架构&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;docker buildx ls
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h1 id=&#34;references&#34;&gt;References&lt;/h1&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://zhuanlan.zhihu.com/p/497510466&#34;&gt;docker交叉编译&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description>
    </item>
    <item>
      <title>《人月神话》</title>
      <link>https://frytea.com/archives/1062/</link>
      <pubDate>Thu, 11 Jul 2024 10:59:29 +0000</pubDate>
      <guid>https://frytea.com/archives/1062/</guid>
      <description>&lt;h1 id=&#34;阅读记录&#34;&gt;阅读记录&lt;/h1&gt;
&lt;ul&gt;
&lt;li&gt;很奇怪，书中说大部分程序员都是乐观主义者，但是我自以为自己不是，也是。&lt;/li&gt;
&lt;li&gt;这本&lt;/li&gt;
&lt;/ul&gt;</description>
    </item>
    <item>
      <title>Linux 生成随机字符串的方法</title>
      <link>https://frytea.com/archives/1276/</link>
      <pubDate>Sun, 30 Jun 2024 04:54:00 +0000</pubDate>
      <guid>https://frytea.com/archives/1276/</guid>
      <description>&lt;h1 id=&#34;linux-生成随机字符串的方法&#34;&gt;Linux 生成随机字符串的方法&lt;/h1&gt;
&lt;p&gt;随机字符串常用于创建随机账号或密码，Linux 可用以下方法生成随机字符串。&lt;/p&gt;
&lt;p&gt;1.生成由大写字母组成的随机字符串：&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;$ head /dev/urandom | tr -dc A-Z | head -c 20

NRXFYZRTUEDXTVPJAYJW
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;2.生成由小写字母组成的随机字符串：&lt;/p&gt;</description>
    </item>
    <item>
      <title>debian 软件包仓库优先级配置</title>
      <link>https://frytea.com/archives/1270/</link>
      <pubDate>Sun, 30 Jun 2024 04:53:21 +0000</pubDate>
      <guid>https://frytea.com/archives/1270/</guid>
      <description>&lt;p&gt;在 Debian 和 Ubuntu 系统中，可以通过配置 APT 包管理器的优先级来管理多个软件仓库&lt;/p&gt;</description>
    </item>
    <item>
      <title>软件分发方法概述</title>
      <link>https://frytea.com/archives/1137/</link>
      <pubDate>Sun, 30 Jun 2024 04:53:10 +0000</pubDate>
      <guid>https://frytea.com/archives/1137/</guid>
      <description>&lt;p&gt;分发软件有多种方式，具体取决于你的目标受众和软件的类型。以下是一些常见的软件分发方式：&lt;/p&gt;
&lt;h3 id=&#34;在&#34;&gt;在&lt;/h3&gt;</description>
    </item>
    <item>
      <title>自建多设备电子书阅读及进度同步方案</title>
      <link>https://frytea.com/archives/1179/</link>
      <pubDate>Sun, 30 Jun 2024 04:53:00 +0000</pubDate>
      <guid>https://frytea.com/archives/1179/</guid>
      <description>&lt;p&gt;方案构成：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;[KOreader](&lt;a href=&#34;https://github.com/koreader/ko&#34;&gt;https://github.com/koreader/ko&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description>
    </item>
    <item>
      <title>在 Docker 中运行 Docker DinD</title>
      <link>https://frytea.com/archives/1250/</link>
      <pubDate>Sun, 30 Jun 2024 04:52:36 +0000</pubDate>
      <guid>https://frytea.com/archives/1250/</guid>
      <description>&lt;h1 id=&#34;step-by-step&#34;&gt;Step-By-Step&lt;/h1&gt;
&lt;h2 id=&#34;step-1-pull-the-dind-image&#34;&gt;Step 1: Pull the DinD Image&lt;/h2&gt;
&lt;p&gt;Th&lt;/p&gt;</description>
    </item>
    <item>
      <title>archlinux 升级忽略某软件包</title>
      <link>https://frytea.com/archives/1284/</link>
      <pubDate>Sun, 30 Jun 2024 04:52:00 +0000</pubDate>
      <guid>https://frytea.com/archives/1284/</guid>
      <description>&lt;p&gt;在 Arch Linux 中，有时你可能会看到提示，例如“添加 &lt;code&gt;python-numpy&lt;/code&gt; 到 `&lt;/p&gt;</description>
    </item>
    <item>
      <title>《普林斯顿计算机公开课》</title>
      <link>https://frytea.com/archives/1046/</link>
      <pubDate>Sun, 30 Jun 2024 04:51:19 +0000</pubDate>
      <guid>https://frytea.com/archives/1046/</guid>
      <description>&lt;p&gt;仿佛对计算机的理解更深了一点；
好想去计算机博物馆看看。&lt;/p&gt;
&lt;p&gt;摘录了很多内容，解决了我许多问题。&lt;/p&gt;
&lt;h1&gt;&lt;/h1&gt;</description>
    </item>
    <item>
      <title>2024-06-29 #26</title>
      <link>https://frytea.com/archives/1120/</link>
      <pubDate>Sun, 30 Jun 2024 04:51:00 +0000</pubDate>
      <guid>https://frytea.com/archives/1120/</guid>
      <description>&lt;h1 id=&#34;-一段总结&#34;&gt;👀 一段总结&lt;/h1&gt;
&lt;ul&gt;
&lt;li&gt;似乎做了很多事&lt;/li&gt;
&lt;li&gt;有一些事想说&lt;/li&gt;
&lt;li&gt;多了一些思考&lt;/li&gt;
&lt;li&gt;所以写下这些&lt;/li&gt;
&lt;/ul&gt;</description>
    </item>
    <item>
      <title>《云边有个小卖铺》</title>
      <link>https://frytea.com/archives/1083/</link>
      <pubDate>Sun, 30 Jun 2024 02:09:02 +0000</pubDate>
      <guid>https://frytea.com/archives/1083/</guid>
      <description>&lt;p&gt;去年听了有声书，看了一些原著。只是很喜欢这种感觉，会很治愈。&lt;/p&gt;
&lt;p&gt;看完就看到电影杀青，期待上映，今天随&lt;/p&gt;</description>
    </item>
    <item>
      <title>PVE 获取 cloud 镜像快速初始化 VM</title>
      <link>https://frytea.com/archives/1175/</link>
      <pubDate>Sun, 23 Jun 2024 02:11:48 +0000</pubDate>
      <guid>https://frytea.com/archives/1175/</guid>
      <description>&lt;p&gt;以 &lt;code&gt;centos 7&lt;/code&gt; 为例，类似的可以获取 [debian](&lt;a href=&#34;https://cdimage.d&#34;&gt;https://cdimage.d&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>linux 前后台切换</title>
      <link>https://frytea.com/archives/1188/</link>
      <pubDate>Sun, 23 Jun 2024 02:09:00 +0000</pubDate>
      <guid>https://frytea.com/archives/1188/</guid>
      <description>&lt;ol&gt;
&lt;li&gt;&lt;code&gt;command  &amp;amp;&lt;/code&gt; 让进程在后台运行&lt;/li&gt;
&lt;li&gt;&lt;code&gt;jobs –l&lt;/code&gt; 查看后台运行的进程&lt;/li&gt;
&lt;li&gt;&lt;/li&gt;
&lt;/ol&gt;</description>
    </item>
    <item>
      <title>代码量统计方案</title>
      <link>https://frytea.com/archives/1182/</link>
      <pubDate>Sun, 23 Jun 2024 02:08:00 +0000</pubDate>
      <guid>https://frytea.com/archives/1182/</guid>
      <description>&lt;p&gt;有两种，一种是在线工具，一种是拉取到本地统计。&lt;/p&gt;
&lt;p&gt;公开的中小型开源从仓库可以用在线工具，离线的私有或&lt;/p&gt;</description>
    </item>
    <item>
      <title>python setup.py 安装和卸载</title>
      <link>https://frytea.com/archives/1223/</link>
      <pubDate>Sun, 23 Jun 2024 02:07:33 +0000</pubDate>
      <guid>https://frytea.com/archives/1223/</guid>
      <description>&lt;p&gt;安装&lt;/p&gt;
&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;&#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;python&lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;python3&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt; setup.py install
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;卸&lt;/p&gt;</description>
    </item>
    <item>
      <title>Tmux 常用快捷键</title>
      <link>https://frytea.com/archives/1255/</link>
      <pubDate>Sun, 23 Jun 2024 02:06:00 +0000</pubDate>
      <guid>https://frytea.com/archives/1255/</guid>
      <description>&lt;h2 id=&#34;终端中使用-tmux-命令&#34;&gt;终端中使用 Tmux 命令&lt;/h2&gt;
&lt;p&gt;启动 tmux 使用 -s 命令指定会话名称，使用 -n 命令&lt;/p&gt;</description>
    </item>
    <item>
      <title>使用 registry/distribution 自建Docker Hub镜像服务</title>
      <link>https://frytea.com/archives/1180/</link>
      <pubDate>Sun, 23 Jun 2024 02:05:00 +0000</pubDate>
      <guid>https://frytea.com/archives/1180/</guid>
      <description>&lt;h2 id=&#34;自建方法&#34;&gt;自建方法&lt;/h2&gt;
&lt;h3 id=&#34;镜像-dockerhub&#34;&gt;镜像 dockerhub&lt;/h3&gt;
&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;&#34;&gt;&lt;code class=&#34;language-yaml&#34; data-lang=&#34;yaml&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;version&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;3.1&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;services&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;registry&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	&lt;span style=&#34;color:#f92672&#34;&gt;image&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;registry:2.8.2&lt;/span&gt;
&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;#network_mode: &amp;#34;host&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	&lt;span style=&#34;color:#f92672&#34;&gt;environment&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	  &lt;span style=&#34;color:#f92672&#34;&gt;REGISTRY_HTTP_ADDR&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;0.0.0.0:5000&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	  &lt;span style=&#34;color:#f92672&#34;&gt;REGISTRY_PROXY_REMOTEURL&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;https://registry-1.docker.io&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	  &lt;span style=&#34;color:#f92672&#34;&gt;REGISTRY_PROXY_TTL&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;168h &lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	  &lt;span style=&#34;color:#f92672&#34;&gt;HTTPS_PROXY&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;http://192.168.25.18:7890&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	&lt;span style=&#34;color:#f92672&#34;&gt;restart&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;always&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	&lt;span style=&#34;color:#f92672&#34;&gt;container_name&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;registry&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	&lt;span style=&#34;color:#f92672&#34;&gt;ports&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	  - &lt;span style=&#34;color:#ae81ff&#34;&gt;5000&lt;/span&gt;:&lt;span style=&#34;color:#ae81ff&#34;&gt;5000&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	&lt;span style=&#34;color:#f92672&#34;&gt;volumes&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	  - &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;./registry:/var/lib/registry&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&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;&#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;docker-compose -f registry.yml up -d
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id=&#34;镜像-quay&#34;&gt;镜像 quay&lt;/h3&gt;
&lt;p&gt;类似的原理可以镜像 &lt;code&gt;quay.io&lt;/code&gt; 等等：&lt;/p&gt;
&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;&#34;&gt;&lt;code class=&#34;language-yaml&#34; data-lang=&#34;yaml&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;version&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;3.1&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;services&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;mirror-quay-io&lt;/span&gt;:  
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;   &lt;span style=&#34;color:#f92672&#34;&gt;image&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;registry:2.8.2  &lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;   &lt;span style=&#34;color:#f92672&#34;&gt;environment&lt;/span&gt;:  
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;     &lt;span style=&#34;color:#f92672&#34;&gt;REGISTRY_HTTP_ADDR&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;0.0.0.0:5000&amp;#34;&lt;/span&gt;  
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;     &lt;span style=&#34;color:#f92672&#34;&gt;REGISTRY_PROXY_REMOTEURL&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;https://quay.io&amp;#34;&lt;/span&gt;  
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;     &lt;span style=&#34;color:#f92672&#34;&gt;REGISTRY_COMPATIBILITY_SCHEMA1_ENABLED&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;true&amp;#34;&lt;/span&gt;  
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;     &lt;span style=&#34;color:#f92672&#34;&gt;REGISTRY_PROXY_TTL&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;168h  &lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;     &lt;span style=&#34;color:#f92672&#34;&gt;HTTPS_PROXY&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;http://192.168.25.18:8890&amp;#34;&lt;/span&gt;  
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;   &lt;span style=&#34;color:#f92672&#34;&gt;restart&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;always  &lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;   &lt;span style=&#34;color:#f92672&#34;&gt;ports&lt;/span&gt;:  
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;     - &lt;span style=&#34;color:#ae81ff&#34;&gt;5003&lt;/span&gt;:&lt;span style=&#34;color:#ae81ff&#34;&gt;5000&lt;/span&gt;  
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;   &lt;span style=&#34;color:#f92672&#34;&gt;volumes&lt;/span&gt;:  
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;     - &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;./data/quay.io:/var/lib/registry&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;参数说明：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;REGISTRY_COMPATIBILITY_SCHEMA1_ENABLED&lt;/code&gt;：开启 schema1 支持，默认关闭&lt;/li&gt;
&lt;li&gt;&lt;code&gt;REGISTRY_PROXY_REMOTEURL&lt;/code&gt;： 镜像上游地址&lt;/li&gt;
&lt;li&gt;&lt;code&gt;REGISTRY_PROXY_TTL&lt;/code&gt;： 镜像过期时间&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;客户端用法&#34;&gt;客户端用法&lt;/h2&gt;
&lt;p&gt;正常使用即可：&lt;/p&gt;</description>
    </item>
    <item>
      <title>《UNIX传奇》</title>
      <link>https://frytea.com/archives/1061/</link>
      <pubDate>Tue, 11 Jun 2024 11:55:20 +0000</pubDate>
      <guid>https://frytea.com/archives/1061/</guid>
      <description>&lt;h1 id=&#34;思考&#34;&gt;思考&lt;/h1&gt;
&lt;ol&gt;
&lt;li&gt;是不是老外对颜色都不敏感，所以喜欢用很浓的颜色。而对于文字排版很敏感。&lt;/li&gt;
&lt;li&gt;计算&lt;/li&gt;
&lt;/ol&gt;</description>
    </item>
    <item>
      <title>《鱿鱼游戏》</title>
      <link>https://frytea.com/archives/1084/</link>
      <pubDate>Mon, 10 Jun 2024 08:22:31 +0000</pubDate>
      <guid>https://frytea.com/archives/1084/</guid>
      <description>&lt;ol&gt;
&lt;li&gt;真的有人会组织这样的游戏吗。整个游戏始终，似乎都是这些参与者欲望（需求）催生的产物。因为债台高&lt;/li&gt;
&lt;/ol&gt;</description>
    </item>
    <item>
      <title>linux 显示 16 进制内容 - xxd</title>
      <link>https://frytea.com/archives/1243/</link>
      <pubDate>Thu, 30 May 2024 16:27:01 +0000</pubDate>
      <guid>https://frytea.com/archives/1243/</guid>
      <description>&lt;p&gt;命令用法&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;$ xxd [options] [infile [outfile]]
&lt;/code&gt;&lt;/pre&gt;</description>
    </item>
    <item>
      <title>Python 虚拟环境工具 conda 用法</title>
      <link>https://frytea.com/archives/1264/</link>
      <pubDate>Wed, 29 May 2024 14:19:17 +0000</pubDate>
      <guid>https://frytea.com/archives/1264/</guid>
      <description>&lt;p&gt;Miniconda是一款免费的conda最小安装程序，仅包含conda、Python以及二者所依赖的&lt;/p&gt;</description>
    </item>
    <item>
      <title>pve lxc 映射主机路径到容器</title>
      <link>https://frytea.com/archives/1193/</link>
      <pubDate>Wed, 29 May 2024 14:18:56 +0000</pubDate>
      <guid>https://frytea.com/archives/1193/</guid>
      <description>&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;&#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;pct set &lt;span style=&#34;color:#ae81ff&#34;&gt;103&lt;/span&gt; -mp1 /host/dir,mp&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;/container/m
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;ount/point
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;也可以直接修改配置文件  &lt;code&gt;/etc/pve/nodes/NODE/lxc/ID.conf&lt;/code&gt; 。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Linux 防暴力破解 - fail2ban</title>
      <link>https://frytea.com/archives/1241/</link>
      <pubDate>Wed, 29 May 2024 14:18:41 +0000</pubDate>
      <guid>https://frytea.com/archives/1241/</guid>
      <description>&lt;p&gt;安装&lt;/p&gt;
&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;&#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 yum install fail2ban
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;sudo apt-get
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;install fail2ban 
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;服务状态&lt;/p&gt;</description>
    </item>
    <item>
      <title>Linux 下使用 ClamAV 扫描病毒</title>
      <link>https://frytea.com/archives/1236/</link>
      <pubDate>Wed, 29 May 2024 14:18:28 +0000</pubDate>
      <guid>https://frytea.com/archives/1236/</guid>
      <description>&lt;p&gt;安装&lt;/p&gt;
&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;&#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 apt-get install clamav
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;更新病毒库&lt;/p&gt;</description>
    </item>
    <item>
      <title>archlinux gnome 安装 fcitx5 及扩展面板</title>
      <link>https://frytea.com/archives/1278/</link>
      <pubDate>Sun, 26 May 2024 08:38:07 +0000</pubDate>
      <guid>https://frytea.com/archives/1278/</guid>
      <description>&lt;p&gt;安装后中文输入更友好。&lt;/p&gt;
&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;&#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 pacman -S fcitx5 fcitx5-
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;configtool fcitx5-qt libime fcitx5-chinese-addons fcitx5-chinese-addons
&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;# 安装 gnome 扩展替换 fcitx5 原生&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;yay -S gnome-shell-extension-kimpanel-git
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h1 id=&#34;references&#34;&gt;References&lt;/h1&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://aur.archlinux.org/packages/gnome-shell-extension-kimpanel-git&#34;&gt;https://aur.archlinux.org/packages/gnome-shell-extension-kimpanel-git&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://wiki.archlinux.org/title/Fcitx5&#34;&gt;https://wiki.archlinux.org/title/Fcitx5&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://fcitx-im.org/wiki/Using_Fcitx_5_on_Wayland#GNOME&#34;&gt;https://fcitx-im.org/wiki/Using_Fcitx_5_on_Wayland#GNOME&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://extensions.gnome.org/extension/261/kimpanel/&#34;&gt;https://extensions.gnome.org/extension/261/kimpanel/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://wiki.archlinux.org/title/Fcitx5&#34;&gt;https://wiki.archlinux.org/title/Fcitx5&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description>
    </item>
    <item>
      <title>pixel4 xl 安装 PixysOS v7.1.2 Beta4</title>
      <link>https://frytea.com/archives/1275/</link>
      <pubDate>Sun, 26 May 2024 08:37:36 +0000</pubDate>
      <guid>https://frytea.com/archives/1275/</guid>
      <description>&lt;p&gt;从酷安的得知有人为 pixel 4 xl 做出了支持 3d face unlocked 的 基于 a&lt;/p&gt;</description>
    </item>
    <item>
      <title>gitlab 迁移后CI/CD页面500错误问题</title>
      <link>https://frytea.com/archives/1177/</link>
      <pubDate>Sun, 26 May 2024 08:37:00 +0000</pubDate>
      <guid>https://frytea.com/archives/1177/</guid>
      <description>&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;&#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;# gitlab-rails console&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Ci::Runner.all.upda
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;te_all&lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;token_encrypted: nil&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;exit
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;$ gitlab-rails dbconsole
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;UPDATE projects SET runners_token &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; null, runners_token_encrypted &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; null;
&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;# 将所有项目的runners_token和runners_token_encrypted字段设置为null。&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;UPDATE namespaces SET runners_token &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; null, runners_token_encrypted &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; null;
&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;# 将所有命名空间（例如用户或组）的runners_token和runners_token_encrypted字段设置为null。&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;UPDATE application_settings SET runners_registration_token_encrypted &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; null;
&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;# 将GitLab应用程序设置中的runners_registration_token_encrypted字段设置为null。&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h1 id=&#34;references&#34;&gt;References&lt;/h1&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://www.luckzym.com/posts/b341120e/&#34;&gt;Gitlab数据迁移&amp;amp;在线升级后出现CI/CD页面500错误问题&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://www.u.tsukuba.ac.jp/~s2036012/tech/webmaster/gitlab-upgrade.html&#34;&gt;Gitlab 升级那些事儿&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://www.bytebase.com/blog/upgrade-gitlab-enterprise-edition-major-version-13-14/&#34;&gt;GitLab Upgrade from 13 to 14&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description>
    </item>
    <item>
      <title>使用 ModelArts 训练并发布手写数字识别模型</title>
      <link>https://frytea.com/archives/1156/</link>
      <pubDate>Sun, 26 May 2024 08:36:00 +0000</pubDate>
      <guid>https://frytea.com/archives/1156/</guid>
      <description>&lt;h1 id=&#34;资源准备&#34;&gt;资源准备&lt;/h1&gt;
&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;&#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;git clone https://github.com/songt
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;ianlun/Handwritten_Digit_Recognition_Based_on_MNIST.git
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;将以上内容，保存目录结构上传到 OBS。&lt;/p&gt;</description>
    </item>
    <item>
      <title>containerd 命令行工具 nerdctl 和 crictl</title>
      <link>https://frytea.com/archives/1281/</link>
      <pubDate>Sun, 26 May 2024 08:35:00 +0000</pubDate>
      <guid>https://frytea.com/archives/1281/</guid>
      <description>&lt;p&gt;&lt;code&gt;nerdctl&lt;/code&gt;和&lt;code&gt;crictl&lt;/code&gt;都是用于管理和操作容器的命令行工具，但是它们在开发者、设计目的和&lt;/p&gt;</description>
    </item>
    <item>
      <title>linux 查看运行 xwayland 程序清单</title>
      <link>https://frytea.com/archives/1186/</link>
      <pubDate>Sat, 18 May 2024 16:30:45 +0000</pubDate>
      <guid>https://frytea.com/archives/1186/</guid>
      <description>&lt;p&gt;可以使用 &lt;code&gt;xlsclients&lt;/code&gt; 命令查看正在使用 X（包括 XWayland）服务器的客户端列表&lt;/p&gt;</description>
    </item>
    <item>
      <title>GNOME 新增应用状态图标拓展</title>
      <link>https://frytea.com/archives/1212/</link>
      <pubDate>Sat, 18 May 2024 16:30:00 +0000</pubDate>
      <guid>https://frytea.com/archives/1212/</guid>
      <description>&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;&#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 pacman -S gnome-shell-extension-app
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;indicator
&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;# reboot or logout&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;$ gnome-extensions enable &lt;span style=&#34;color:#66d9ef&#34;&gt;$(&lt;/span&gt;gnome-extensions list | grep -m &lt;span style=&#34;color:#ae81ff&#34;&gt;1&lt;/span&gt; appindicatorsupport&lt;span style=&#34;color:#66d9ef&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h1 id=&#34;references&#34;&gt;References&lt;/h1&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://wiki.archlinux.org/title/GNOME#Navigation&#34;&gt;https://wiki.archlinux.org/title/GNOME#Navigation&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description>
    </item>
    <item>
      <title>Archlinux 基于 waydroid运行 android</title>
      <link>https://frytea.com/archives/1207/</link>
      <pubDate>Sat, 18 May 2024 16:29:00 +0000</pubDate>
      <guid>https://frytea.com/archives/1207/</guid>
      <description>&lt;p&gt;该方案仅支持基于 Wayland 的 Linux 桌面环境，如 sway, gnome, kde6。&lt;/p&gt;</description>
    </item>
    <item>
      <title>2023 年终 - 酸甜苦辣人间真味</title>
      <link>https://frytea.com/archives/1116/</link>
      <pubDate>Sun, 24 Dec 2023 06:04:00 +0000</pubDate>
      <guid>https://frytea.com/archives/1116/</guid>
      <description>&lt;p&gt;总是感觉自己被偷走了一大段时光，不如今天就来弥补一下，回顾一下这段时光吧，还好有 memos。&lt;/p&gt;
&lt;h1&gt;&lt;/h1&gt;</description>
    </item>
    <item>
      <title>2023 周录 #51 感谢自己不完美</title>
      <link>https://frytea.com/archives/1085/</link>
      <pubDate>Sat, 23 Dec 2023 04:41:00 +0000</pubDate>
      <guid>https://frytea.com/archives/1085/</guid>
      <description>&lt;p&gt;倒数第二周了，活着要有仪式感，记下这周几件神奇的事情。&lt;/p&gt;
&lt;h2 id=&#34;阅读感谢自己不完美&#34;&gt;阅读《感谢自己不完美》&lt;/h2&gt;
&lt;p&gt;南京返程的&lt;/p&gt;</description>
    </item>
    <item>
      <title>2023 周录 #50 告别 13mini 你好 Mate60</title>
      <link>https://frytea.com/archives/1086/</link>
      <pubDate>Sat, 16 Dec 2023 18:15:00 +0000</pubDate>
      <guid>https://frytea.com/archives/1086/</guid>
      <description>&lt;p&gt;好久没有写东西了，过去的这段时间发生了很多事情，像是被人偷走了一大段时间。&lt;/p&gt;
&lt;p&gt;接下来，我会慢慢找回这&lt;/p&gt;</description>
    </item>
    <item>
      <title>Harbor使用方法</title>
      <link>https://frytea.com/archives/1268/</link>
      <pubDate>Sat, 19 Aug 2023 04:19:51 +0000</pubDate>
      <guid>https://frytea.com/archives/1268/</guid>
      <description>&lt;p&gt;Harbor使用方法 修改配置文件 首先需要在客户端配置号 Harbor 地址，配置文件在： /et&lt;/p&gt;</description>
    </item>
    <item>
      <title>debian 挂载官方 iso 为本地 apt 软件源</title>
      <link>https://frytea.com/archives/1240/</link>
      <pubDate>Sat, 19 Aug 2023 04:19:20 +0000</pubDate>
      <guid>https://frytea.com/archives/1240/</guid>
      <description>&lt;p&gt;debian 挂载官方 iso 为本地 apt 软件源 首先，下载debian 10.1.0 amd&lt;/p&gt;</description>
    </item>
    <item>
      <title>go 闭包函数问题</title>
      <link>https://frytea.com/archives/1273/</link>
      <pubDate>Sat, 19 Aug 2023 04:16:49 +0000</pubDate>
      <guid>https://frytea.com/archives/1273/</guid>
      <description>&lt;p&gt;go 闭包函数问题 在 Go 里，闭包里的变量会被共享使用，这就意味着当你在运行闭包函数的时候，函数&lt;/p&gt;</description>
    </item>
    <item>
      <title>多 GPU CUDA 压力测试</title>
      <link>https://frytea.com/archives/1238/</link>
      <pubDate>Sat, 19 Aug 2023 04:15:25 +0000</pubDate>
      <guid>https://frytea.com/archives/1238/</guid>
      <description>&lt;p&gt;多 GPU CUDA 压力测试 1.下载软件 $ wget &lt;a href=&#34;https://codeload.git&#34;&gt;https://codeload.git&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>开源许可证GPL、BSD、MIT、Mozilla、Apache和LGPL的区别</title>
      <link>https://frytea.com/archives/1147/</link>
      <pubDate>Sat, 19 Aug 2023 04:14:01 +0000</pubDate>
      <guid>https://frytea.com/archives/1147/</guid>
      <description>&lt;p&gt;开源许可证GPL、BSD、MIT、Mozilla、Apache和LGPL的区别 借阮一峰大佬的图说明&lt;/p&gt;</description>
    </item>
    <item>
      <title>Linux 终端获取本机公网 IP 的方法</title>
      <link>https://frytea.com/archives/1199/</link>
      <pubDate>Sat, 19 Aug 2023 04:13:06 +0000</pubDate>
      <guid>https://frytea.com/archives/1199/</guid>
      <description>&lt;p&gt;Linux 终端获取本机公网 IP 的方法 下方任意命令均可： $ wget -qO- https:&lt;/p&gt;</description>
    </item>
    <item>
      <title>GPT4检验方法</title>
      <link>https://frytea.com/archives/1141/</link>
      <pubDate>Wed, 16 Aug 2023 10:00:00 +0000</pubDate>
      <guid>https://frytea.com/archives/1141/</guid>
      <description>&lt;p&gt;方法一：鲁迅为什么暴打周树人 GPT-3.5：胡编乱造 GPT-4：鲁迅和周树人是同一个人 gpt3&lt;/p&gt;</description>
    </item>
    <item>
      <title>Youtube Premium 优惠攻略</title>
      <link>https://frytea.com/archives/1176/</link>
      <pubDate>Sun, 13 Aug 2023 08:40:22 +0000</pubDate>
      <guid>https://frytea.com/archives/1176/</guid>
      <description>&lt;p&gt;分享优惠方法个人订购 Youtube Premium 的方法.&lt;/p&gt;
&lt;p&gt;最近续订港区个人 Youtube&lt;/p&gt;</description>
    </item>
    <item>
      <title>搬瓦工所有机房信息及测试 IP 一览（2023）</title>
      <link>https://frytea.com/archives/1178/</link>
      <pubDate>Sun, 13 Aug 2023 08:40:22 +0000</pubDate>
      <guid>https://frytea.com/archives/1178/</guid>
      <description>&lt;p&gt;整理搬瓦工所有机房.&lt;/p&gt;
&lt;h2 id=&#34;搬瓦工入口&#34;&gt;搬瓦工入口&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;搬瓦工官网：[bandwagonhost.com&lt;/li&gt;
&lt;/ul&gt;</description>
    </item>
    <item>
      <title>iperf3 网络性能测试</title>
      <link>https://frytea.com/archives/1247/</link>
      <pubDate>Mon, 31 Jul 2023 07:46:53 +0000</pubDate>
      <guid>https://frytea.com/archives/1247/</guid>
      <description>&lt;p&gt;iperf3 网络性能测试 快速测试 经典测试 # 服务端执行 $ iperf3 -s # 客户端执&lt;/p&gt;</description>
    </item>
    <item>
      <title>自建 speedtest 服务端 web 并使用 cli 测试内网带宽</title>
      <link>https://frytea.com/archives/1215/</link>
      <pubDate>Tue, 25 Jul 2023 09:36:00 +0000</pubDate>
      <guid>https://frytea.com/archives/1215/</guid>
      <description>&lt;p&gt;自建 speedtest 服务端 web 并使用 cli 测试内网带宽 LibreSpeed 是一个&lt;/p&gt;</description>
    </item>
    <item>
      <title>vim 分割窗口打开内建 shell</title>
      <link>https://frytea.com/archives/1190/</link>
      <pubDate>Tue, 25 Jul 2023 09:23:36 +0000</pubDate>
      <guid>https://frytea.com/archives/1190/</guid>
      <description>&lt;p&gt;vim 分割窗口打开内建 shell Neovim 和 Vim &amp;gt;= 8.2 通过 :ter[mi&lt;/p&gt;</description>
    </item>
    <item>
      <title>debian 挂载 iso 为本地 apt 软件源</title>
      <link>https://frytea.com/archives/1217/</link>
      <pubDate>Sat, 22 Jul 2023 02:16:27 +0000</pubDate>
      <guid>https://frytea.com/archives/1217/</guid>
      <description>&lt;p&gt;debian 挂载 iso 为本地 apt 软件源 首先，下载debian 10.1.0 amd64&lt;/p&gt;</description>
    </item>
    <item>
      <title>Debian 开启 IOMMU 支持</title>
      <link>https://frytea.com/archives/1253/</link>
      <pubDate>Sat, 22 Jul 2023 02:11:50 +0000</pubDate>
      <guid>https://frytea.com/archives/1253/</guid>
      <description>&lt;p&gt;Debian 开启 IOMMU 支持 vi /etc/default/grub 找到 GRUB_C&lt;/p&gt;</description>
    </item>
    <item>
      <title>nexus3 上传 docker 镜像</title>
      <link>https://frytea.com/archives/1274/</link>
      <pubDate>Wed, 19 Jul 2023 06:00:03 +0000</pubDate>
      <guid>https://frytea.com/archives/1274/</guid>
      <description>&lt;p&gt;nexus3 上传 docker 镜像 docker login 192.168.25.8:8082&lt;/p&gt;</description>
    </item>
    <item>
      <title>macOS 内存测试 memtest</title>
      <link>https://frytea.com/archives/1231/</link>
      <pubDate>Wed, 19 Jul 2023 02:52:55 +0000</pubDate>
      <guid>https://frytea.com/archives/1231/</guid>
      <description>&lt;p&gt;macOS 内存测试 memtest 安装方法，命令行下执行： brew install memte&lt;/p&gt;</description>
    </item>
    <item>
      <title>查看所有由 docker-compose 启动的 docker</title>
      <link>https://frytea.com/archives/1263/</link>
      <pubDate>Wed, 19 Jul 2023 02:51:10 +0000</pubDate>
      <guid>https://frytea.com/archives/1263/</guid>
      <description>&lt;p&gt;查看所有由 docker-compose 启动的 docker Docker Compose会为其创&lt;/p&gt;</description>
    </item>
    <item>
      <title>ipmitool 基本使用</title>
      <link>https://frytea.com/archives/1280/</link>
      <pubDate>Mon, 17 Jul 2023 03:47:00 +0000</pubDate>
      <guid>https://frytea.com/archives/1280/</guid>
      <description>&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;&#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;# account&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;ipmitool user list
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;ipmitool user set password &lt;span style=&#34;color:#ae81ff&#34;&gt;2&lt;/span&gt; password@123
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&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;# network&lt;/span&gt;
&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;# show network&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;ipmitool lan print
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&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;# set to static and show network&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;ipmitool lan set &lt;span style=&#34;color:#ae81ff&#34;&gt;1&lt;/span&gt; ipsrc static
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;ipmitool lan set &lt;span style=&#34;color:#ae81ff&#34;&gt;1&lt;/span&gt;  ipaddr 192.168.24.6
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;ipmitool lan set  &lt;span style=&#34;color:#ae81ff&#34;&gt;1&lt;/span&gt; netmask 255.255.252.0
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;ipmitool lan set  &lt;span style=&#34;color:#ae81ff&#34;&gt;1&lt;/span&gt; defgw ipaddr 192.168.27.254 ipmitool lan print
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&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;# 设置共享网口模式&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;ipmitool delloem lan set shared with lom1
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;ipmitool delloem lan set shared
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h1 id=&#34;检查运行日志&#34;&gt;检查运行日志&lt;/h1&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;ipmitool sel list
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;code&gt;SEL = System Event Log (系统事件日志)&lt;/code&gt;
显示系统的硬件事件历史记录，包括:硬件故障、电源事件、温度警告、风扇故障、其他系统关键事件。&lt;/p&gt;</description>
    </item>
    <item>
      <title>SSH 密钥类型及格式</title>
      <link>https://frytea.com/archives/1282/</link>
      <pubDate>Mon, 26 Jun 2023 02:07:27 +0000</pubDate>
      <guid>https://frytea.com/archives/1282/</guid>
      <description>&lt;p&gt;SSH 密钥类型及格式 在使用 ssh-keygen 命令生成密钥对时，有这几个参数需要被注意： #&lt;/p&gt;</description>
    </item>
    <item>
      <title>使用 java 手动执行生成的类文件</title>
      <link>https://frytea.com/archives/1256/</link>
      <pubDate>Tue, 20 Jun 2023 15:59:20 +0000</pubDate>
      <guid>https://frytea.com/archives/1256/</guid>
      <description>&lt;p&gt;使用 java 手动执行生成的类文件 下面以执行使用 mvn compile 编译好的 cn.gso&lt;/p&gt;</description>
    </item>
    <item>
      <title>检查网站的TLS版本</title>
      <link>https://frytea.com/archives/1279/</link>
      <pubDate>Fri, 26 May 2023 02:52:34 +0000</pubDate>
      <guid>https://frytea.com/archives/1279/</guid>
      <description>&lt;p&gt;检查网站的TLS版本 有时候需要知道某个网站支持的TLS的版本。现在SSL 2.0和SSL 3.0都&lt;/p&gt;</description>
    </item>
    <item>
      <title>解决 target is busy 的一种方法</title>
      <link>https://frytea.com/archives/1213/</link>
      <pubDate>Thu, 25 May 2023 09:26:42 +0000</pubDate>
      <guid>https://frytea.com/archives/1213/</guid>
      <description>&lt;p&gt;解决 target is busy 的一种方法 最近手头一台 PVE 集群的 ceph 地址变化，导&lt;/p&gt;</description>
    </item>
    <item>
      <title>macOS 禁用 Safari 下载自动解压</title>
      <link>https://frytea.com/archives/1205/</link>
      <pubDate>Thu, 25 May 2023 01:07:05 +0000</pubDate>
      <guid>https://frytea.com/archives/1205/</guid>
      <description>&lt;p&gt;macOS 禁用 Safari 下载自动解压 1.选择Safari 浏览器的「偏好设定」。 2.在「&lt;/p&gt;</description>
    </item>
    <item>
      <title>debian bullseye iptables 配置持久化</title>
      <link>https://frytea.com/archives/1258/</link>
      <pubDate>Tue, 23 May 2023 02:07:50 +0000</pubDate>
      <guid>https://frytea.com/archives/1258/</guid>
      <description>&lt;p&gt;debian bullseye iptables 配置持久化 在Debian 11中，iptable&lt;/p&gt;</description>
    </item>
    <item>
      <title>sshd 拒绝连接错误 refused connected from</title>
      <link>https://frytea.com/archives/1283/</link>
      <pubDate>Fri, 19 May 2023 02:16:16 +0000</pubDate>
      <guid>https://frytea.com/archives/1283/</guid>
      <description>&lt;p&gt;sshd 拒绝连接错误 refused connected from 最近发现一种会导致 sshd&lt;/p&gt;</description>
    </item>
    <item>
      <title>Linux 常见主设备号设备清单</title>
      <link>https://frytea.com/archives/1138/</link>
      <pubDate>Thu, 18 May 2023 02:34:59 +0000</pubDate>
      <guid>https://frytea.com/archives/1138/</guid>
      <description>&lt;p&gt;Linux 常见主设备号设备清单 在Linux系统中，设备通常通过主设备号和次设备号来标识。主设备号&lt;/p&gt;</description>
    </item>
    <item>
      <title>Linux 常见固定主次设备号设备清单</title>
      <link>https://frytea.com/archives/1134/</link>
      <pubDate>Thu, 18 May 2023 02:06:09 +0000</pubDate>
      <guid>https://frytea.com/archives/1134/</guid>
      <description>&lt;p&gt;Linux 常见固定主次设备号设备清单 在 Unix 或 Linux 系统中，一些设备的主次设备号是&lt;/p&gt;</description>
    </item>
    <item>
      <title>Unix/Linux 常见设备清单</title>
      <link>https://frytea.com/archives/1136/</link>
      <pubDate>Thu, 18 May 2023 02:01:10 +0000</pubDate>
      <guid>https://frytea.com/archives/1136/</guid>
      <description>&lt;p&gt;Unix/Linux 常见设备清单 以下是在 Unix 或 Linux 系统的 /dev 目录下一些&lt;/p&gt;</description>
    </item>
    <item>
      <title>Unix/Linux 常见设备类型前缀清单</title>
      <link>https://frytea.com/archives/1143/</link>
      <pubDate>Thu, 18 May 2023 01:58:28 +0000</pubDate>
      <guid>https://frytea.com/archives/1143/</guid>
      <description>&lt;p&gt;Unix/Linux 常见设备类型前缀清单 在Unix和Linux系统中，/dev目录下的设备文件前&lt;/p&gt;</description>
    </item>
    <item>
      <title>替换 apt-key 导入私有公钥</title>
      <link>https://frytea.com/archives/1192/</link>
      <pubDate>Wed, 17 May 2023 03:29:33 +0000</pubDate>
      <guid>https://frytea.com/archives/1192/</guid>
      <description>&lt;p&gt;替换 apt-key 导入私有公钥 在使用 apt-key 导入私钥时会遇到以下警告： Warnin&lt;/p&gt;</description>
    </item>
    <item>
      <title>PVE 迁入 Win xp/2003 解决蓝屏问题</title>
      <link>https://frytea.com/archives/1194/</link>
      <pubDate>Fri, 12 May 2023 02:47:52 +0000</pubDate>
      <guid>https://frytea.com/archives/1194/</guid>
      <description>&lt;p&gt;PVE 迁入 Win xp/2003 解决蓝屏问题 Windows xp/2003 或是 Windo&lt;/p&gt;</description>
    </item>
    <item>
      <title>群晖 nas 连接 Headscale</title>
      <link>https://frytea.com/archives/1225/</link>
      <pubDate>Thu, 11 May 2023 09:42:54 +0000</pubDate>
      <guid>https://frytea.com/archives/1225/</guid>
      <description>&lt;p&gt;群晖 nas 连接 Headscale tailscale up &amp;ndash;reset &amp;ndash;login-s&lt;/p&gt;</description>
    </item>
    <item>
      <title>LXC 开机自启</title>
      <link>https://frytea.com/archives/1189/</link>
      <pubDate>Mon, 08 May 2023 11:56:54 +0000</pubDate>
      <guid>https://frytea.com/archives/1189/</guid>
      <description>&lt;p&gt;LXC 开机自启 旧版本的 LXC 和新版本的 LXC 操作命令略有不同，请注意，我这里使用的是 l&lt;/p&gt;</description>
    </item>
    <item>
      <title>LXC 直通硬盘</title>
      <link>https://frytea.com/archives/1246/</link>
      <pubDate>Sat, 06 May 2023 10:29:03 +0000</pubDate>
      <guid>https://frytea.com/archives/1246/</guid>
      <description>&lt;p&gt;LXC 直通硬盘 lxc 直通磁盘大致需要以下步骤： 配置 cgroup 规则，赋予 lxc 容器对&lt;/p&gt;</description>
    </item>
    <item>
      <title>使用 distrobuilder 制作 LXC/LXD 镜像</title>
      <link>https://frytea.com/archives/1230/</link>
      <pubDate>Fri, 05 May 2023 08:55:44 +0000</pubDate>
      <guid>https://frytea.com/archives/1230/</guid>
      <description>&lt;p&gt;使用 distrobuilder 制作 LXC/LXD 镜像 distrobuilder 是 LXC&lt;/p&gt;</description>
    </item>
    <item>
      <title>在线小店 ｜ 网络服务</title>
      <link>https://frytea.com/archives/1082/</link>
      <pubDate>Wed, 03 May 2023 08:40:00 +0000</pubDate>
      <guid>https://frytea.com/archives/1082/</guid>
      <description>&lt;p&gt;搜集网上一些有用的在线服务、发卡站.&lt;/p&gt;
&lt;h2 id=&#34;发卡小店&#34;&gt;发卡小店&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;[xedu教育邮箱](https:&lt;/li&gt;
&lt;/ul&gt;</description>
    </item>
    <item>
      <title>检查当前机器是不是虚拟机并确认底层虚拟化技术</title>
      <link>https://frytea.com/archives/776/</link>
      <pubDate>Sun, 30 Apr 2023 16:06:47 +0000</pubDate>
      <guid>https://frytea.com/archives/776/</guid>
      <description>&lt;p&gt;要确定当前运行的系统是否在虚拟机（VM）中，并了解底层虚拟化技术，可以使用一些命令和工具进行检查。以下是几种方法：&lt;/p&gt;
&lt;p&gt;使用 dmidecode 命令：
dmidecode 是一个用于获取 BIOS、系统、主板和处理器信息的工具。要使用 dmidecode，请确保您已安装它。然后，可以运行以下命令：&lt;/p&gt;</description>
    </item>
    <item>
      <title>Surge 从零开始配置</title>
      <link>https://frytea.com/archives/782/</link>
      <pubDate>Sun, 30 Apr 2023 16:06:42 +0000</pubDate>
      <guid>https://frytea.com/archives/782/</guid>
      <description>&lt;p&gt;Surge for macOS 基于 &lt;a href=&#34;https://raw.githubusercontent.com/Hackl0us/SS-Rule-Snippet/master/LAZY_RULES/Surge.conf&#34;&gt;这份&lt;/a&gt; 修改。&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;# Surge 的规则配置手册: https://manual.nssurge.com/

[General]
loglevel = notify
# 从 Surge iOS 4 / Surge Mac 3.3.0 起，工具开始支持 DoH
doh-server = https://doh.pub/dns-query, https://dns.alidns.com/dns-query
# https://dns.alidns.com/dns-query, https://13800000000.rubyfish.cn/, https://doh.360.cn/dns-query, https://dns.google/dns-query
dns-server = 223.5.5.5, 114.114.114.114
tun-excluded-routes = 0.0.0.0/8, 10.0.0.0/8, 100.64.0.0/10, 127.0.0.0/8, 169.254.0.0/16, 172.16.0.0/12, 192.0.0.0/24, 192.0.2.0/24, 192.168.0.0/16, 192.88.99.0/24, 198.51.100.0/24, 203.0.113.0/24, 224.0.0.0/4, 255.255.255.255/32
skip-proxy = localhost, *.local, injections.adguard.org, local.adguard.org, captive.apple.com, guzzoni.apple.com, 0.0.0.0/8, 10.0.0.0/8, 17.0.0.0/8, 100.64.0.0/10, 127.0.0.0/8, 169.254.0.0/16, 172.16.0.0/12, 192.0.0.0/24, 192.0.2.0/24, 192.168.0.0/16, 192.88.99.0/24, 198.18.0.0/15, 198.51.100.0/24, 203.0.113.0/24, 224.0.0.0/4, 240.0.0.0/4, 255.255.255.255/32

wifi-assist = true
allow-wifi-access = true
wifi-access-http-port = 6152
wifi-access-socks5-port = 6153
http-listen = 0.0.0.0:6152
socks5-listen = 0.0.0.0:6153

external-controller-access = 请指定密码@0.0.0.0:6170
replica = false

tls-provider = openssl
network-framework = false
exclude-simple-hostnames = true
ipv6 = true

test-timeout = 4
proxy-test-url = http://www.gstatic.com/generate_204
geoip-maxmind-url = https://cdn.jsdelivr.net/gh/Hackl0us/GeoIP2-CN@release/Country.mmdb

[Replica]
hide-apple-request = true
hide-crashlytics-request = true
use-keyword-filter = false
hide-udp = false

# -----------------------------
# Surge 的几种策略配置规范，请参考 https://manual.nssurge.com/policy/proxy.html
# 不同的代理策略有*很多*可选参数，请参考上方连接的 Parameters 一段，根据需求自行添加参数。
#
# Surge 现已支持 UDP 转发功能，请参考: https://trello.com/c/ugOMxD3u/53-udp-%E8%BD%AC%E5%8F%91
# Surge 现已支持 TCP-Fast-Open 技术，请参考: https://trello.com/c/ij65BU6Q/48-tcp-fast-open-troubleshooting-guide
# Surge 现已支持 ss-libev 的全部加密方式和混淆，请参考: https://trello.com/c/BTr0vG1O/47-ss-libev-%E7%9A%84%E6%94%AF%E6%8C%81%E6%83%85%E5%86%B5
# -----------------------------

[Proxy]
ProxyHTTP = http, 1.2.3.4, 443, username, password
ProxyHTTPS = https, 1.2.3.4, 443, username, password
ProxySOCKS5 = socks5, 1.2.3.4, 443, username, password
ProxySOCKS5TLS = socks5-tls, 1.2.3.4, 443, username, password
ProxySS = ss, 1.2.3.4, 8000, encrypt-method=chacha20-ietf-poly1305, password=abcd1234
ProxyTrojan = trojan, 192.168.20.6, 443, password=password1
ProxySnell = snell, 1.2.3.4, 8000, psk=password

[Proxy Group]
Proxy = select, ProxyHTTP, ProxyHTTPS, ProxySOCKS5, ProxySOCKS5TLS, ProxySS, ProxyTrojan, ProxySnell

[Rule]
# 自定义规则
## 您可以在此处插入自定义规则

# 实用规则片段集
# RULE-SET,https://cdn.jsdelivr.net/gh/Hackl0us/SS-Rule-Snippet@master/Rulesets/Surge/Basic/Apple-News.list,Proxy
RULE-SET,https://cdn.jsdelivr.net/gh/Hackl0us/SS-Rule-Snippet@master/Rulesets/Surge/Basic/Apple-proxy.list,Proxy
RULE-SET,https://cdn.jsdelivr.net/gh/Hackl0us/SS-Rule-Snippet@master/Rulesets/Surge/Basic/Apple-direct.list,DIRECT
RULE-SET,https://cdn.jsdelivr.net/gh/Hackl0us/SS-Rule-Snippet@master/Rulesets/Surge/Basic/CN.list,DIRECT
RULE-SET,https://cdn.jsdelivr.net/gh/Hackl0us/SS-Rule-Snippet@master/Rulesets/Surge/Basic/common-ad-keyword.list,REJECT-TINYGIF
RULE-SET,https://cdn.jsdelivr.net/gh/Hackl0us/SS-Rule-Snippet@master/Rulesets/Surge/Basic/foreign.list,Proxy
RULE-SET,https://cdn.jsdelivr.net/gh/Hackl0us/SS-Rule-Snippet@master/Rulesets/Surge/App/social/Telegram.list,Proxy
RULE-SET,LAN,DIRECT

# 最终规则
GEOIP,CN,DIRECT
FINAL,Proxy,dns-failed

[URL Rewrite]
# 请开启 MITM 并在域名中加入 www.google.cn
^https?://(www.)?(g|google).cn https://www.google.com 302
&lt;/code&gt;&lt;/pre&gt;&lt;h2 id=&#34;references&#34;&gt;References&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://surge.mitsea.com/&#34;&gt;Surge 官方手册的汉化&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://github.com/Hackl0us/SS-Rule-Snippet&#34;&gt;SS Rule Snippet &lt;/a&gt;: 搜集、整理、维护 Surge / Quantumult (X) / Shadowrocket / Surfboard / clash (Premium) 实用规则&lt;/li&gt;
&lt;/ul&gt;</description>
    </item>
    <item>
      <title>dnsmasq 多网卡分网段配置</title>
      <link>https://frytea.com/archives/784/</link>
      <pubDate>Sun, 30 Apr 2023 16:06:39 +0000</pubDate>
      <guid>https://frytea.com/archives/784/</guid>
      <description>&lt;p&gt;在 dnsmasq 的配置文件 &lt;code&gt;/etc/dnsmasq.conf&lt;/code&gt; 中使用类似下面的配置：&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;bind-interfaces
dhcp-range=eth1,10.192.10.50,10.192.10.200,12h
dhcp-range=eth2,10.192.20.50,10.192.20.200,12h
dhcp-range=eth3,10.192.30.50,10.192.30.200,12h
dhcp-option=option:dns-server,119.29.29.29
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;接口实现一个 dnsmasq 实例，同时在多张网卡启动 DHCP 服务，并分配不同网段的 IP 地址。&lt;/p&gt;</description>
    </item>
    <item>
      <title>AutoGPT 用法</title>
      <link>https://frytea.com/archives/785/</link>
      <pubDate>Sun, 30 Apr 2023 16:06:36 +0000</pubDate>
      <guid>https://frytea.com/archives/785/</guid>
      <description>&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;&#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;git clone https://github.com/Torantulino/Auto-GPT.git
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;cd &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;Auto-GPT&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;pip install -r requirements.txt
&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;# Rename .env.template to .env and fill in your OPENAI_API_KEY. If you plan to use Speech Mode, fill in your ELEVEN_LABS_API_KEY as well.&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;python scripts/main.py
&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;# You will find activity and error logs in the folder ./output/logs&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;python scripts/main.py --debug
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;references&#34;&gt;References&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://github.com/Torantulino/Auto-GPT&#34;&gt;https://github.com/Torantulino/Auto-GPT&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://beta.elevenlabs.io/&#34;&gt;https://beta.elevenlabs.io/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://agentgpt.reworkd.ai/&#34;&gt;https://agentgpt.reworkd.ai/&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description>
    </item>
    <item>
      <title>apt 查看软件库中软件包所有可用版本</title>
      <link>https://frytea.com/archives/786/</link>
      <pubDate>Sun, 30 Apr 2023 16:06:32 +0000</pubDate>
      <guid>https://frytea.com/archives/786/</guid>
      <description>&lt;p&gt;要查看软件库中现有的所有可用版本，您可以使用以下命令：&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;apt-cache madison &amp;lt;package-name&amp;gt;
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;将 &lt;code&gt;&amp;lt;package-name&amp;gt;&lt;/code&gt; 替换为您要查看版本信息的软件包名称。此命令将显示所有可用版本的软件包及其详细信息，包括软件包名称、版本号、发行版、构建日期和软件源等信息。&lt;/p&gt;</description>
    </item>
    <item>
      <title>判断 IP 或端口被封(墙)</title>
      <link>https://frytea.com/archives/787/</link>
      <pubDate>Sun, 30 Apr 2023 16:06:29 +0000</pubDate>
      <guid>https://frytea.com/archives/787/</guid>
      <description>&lt;h2 id=&#34;ip-检测&#34;&gt;IP 检测&lt;/h2&gt;
&lt;h3 id=&#34;命令行方式&#34;&gt;命令行方式&lt;/h3&gt;
&lt;p&gt;最简单的是在命令行窗口上测试&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;$ ping x.x.x.x.
&lt;/code&gt;&lt;/pre&gt;&lt;h3 id=&#34;在线方式&#34;&gt;在线方式&lt;/h3&gt;
&lt;p&gt;可使用网站 &lt;a href=&#34;http://ping.chinaz.com/&#34;&gt;Ping检测&lt;/a&gt; 进行测试&lt;/p&gt;
&lt;h3 id=&#34;判断&#34;&gt;判断&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;如果国内和国外都 ping 不通，则是海外服务器的问题&lt;/li&gt;
&lt;li&gt;如果国内 ping 不通，国外能 ping 通，那么 IP 被封了&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;端口检测&#34;&gt;端口检测&lt;/h2&gt;
&lt;h3 id=&#34;命令行方式-1&#34;&gt;命令行方式&lt;/h3&gt;
&lt;p&gt;使用 telnet 命令测试端口：&lt;/p&gt;</description>
    </item>
    <item>
      <title>Ubuntu 安装指定版本 docker</title>
      <link>https://frytea.com/archives/789/</link>
      <pubDate>Sun, 30 Apr 2023 16:06:25 +0000</pubDate>
      <guid>https://frytea.com/archives/789/</guid>
      <description>&lt;p&gt;如果你过去安装过 docker，先删掉：&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;sudo apt-get remove docker docker-engine docker.io containerd runc
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;首先安装依赖：&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;sudo apt-get install apt-transport-https ca-certificates curl gnupg2 software-properties-common
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;信任 Docker 的 GPG 公钥并添加仓库：
发行版&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;sudo mkdir -m 0755 -p /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
echo \
  &amp;#34;deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://mirror.nju.edu.cn/docker-ce/linux/ubuntu \
  $(lsb_release -cs) stable&amp;#34; | sudo tee /etc/apt/sources.list.d/docker.list &amp;gt; /dev/null
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;安装最新&lt;/p&gt;</description>
    </item>
    <item>
      <title>debmirror 镜像 nexus3 apt 仓库</title>
      <link>https://frytea.com/archives/790/</link>
      <pubDate>Sun, 30 Apr 2023 16:06:21 +0000</pubDate>
      <guid>https://frytea.com/archives/790/</guid>
      <description>&lt;p&gt;nexus3 没有很好的目录重命名方法。&lt;/p&gt;
&lt;p&gt;使用 apt-mirror 镜像会出错，实测 debmirror 没问题。下面记录方法：&lt;/p&gt;
&lt;p&gt;首先导入公钥&lt;/p&gt;
&lt;h2 id=&#34;导入-apt-公钥&#34;&gt;导入 apt 公钥&lt;/h2&gt;
&lt;p&gt;如果你已经有了公钥文件（如 &lt;code&gt;public.key&lt;/code&gt;），你可以使用以下命令将其导入到 GPG 密钥环和 APT 的受信任密钥列表中：&lt;/p&gt;</description>
    </item>
    <item>
      <title>debian/ubuntu 防火墙 ufw 简单使用</title>
      <link>https://frytea.com/archives/1211/</link>
      <pubDate>Sun, 30 Apr 2023 03:17:46 +0000</pubDate>
      <guid>https://frytea.com/archives/1211/</guid>
      <description>&lt;p&gt;debian/ubuntu 防火墙 ufw 简单使用 什么是 UFW ？ UFW，即简单防火墙 Un&lt;/p&gt;</description>
    </item>
    <item>
      <title>2023 即刻 AIGC 大目录 – 第五期</title>
      <link>https://frytea.com/archives/1172/</link>
      <pubDate>Thu, 27 Apr 2023 14:17:40 +0000</pubDate>
      <guid>https://frytea.com/archives/1172/</guid>
      <description>&lt;p&gt;转载自: &lt;a href=&#34;https://web.okjike.com/originalPost/64449055c&#34;&gt;https://web.okjike.com/originalPost/64449055c&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>2023 即刻 AIGC 大目录 – 第四期</title>
      <link>https://frytea.com/archives/1173/</link>
      <pubDate>Thu, 27 Apr 2023 14:17:23 +0000</pubDate>
      <guid>https://frytea.com/archives/1173/</guid>
      <description>&lt;p&gt;转载自: &lt;a href=&#34;https://web.okjike.com/originalPost/6416d5724&#34;&gt;https://web.okjike.com/originalPost/6416d5724&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>2023 即刻 AIGC 大目录 – 第三期</title>
      <link>https://frytea.com/archives/1170/</link>
      <pubDate>Thu, 27 Apr 2023 14:16:55 +0000</pubDate>
      <guid>https://frytea.com/archives/1170/</guid>
      <description>&lt;p&gt;转载自: &lt;a href=&#34;https://web.okjike.com/originalPost/63ec05d0f&#34;&gt;https://web.okjike.com/originalPost/63ec05d0f&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>2023 即刻 AIGC 大目录 – 第二期</title>
      <link>https://frytea.com/archives/1164/</link>
      <pubDate>Thu, 27 Apr 2023 14:16:39 +0000</pubDate>
      <guid>https://frytea.com/archives/1164/</guid>
      <description>&lt;p&gt;转载自: &lt;a href=&#34;https://web.okjike.com/originalPost/63bb54481&#34;&gt;https://web.okjike.com/originalPost/63bb54481&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>2023 即刻 AIGC 大目录 – 第一期</title>
      <link>https://frytea.com/archives/1152/</link>
      <pubDate>Thu, 27 Apr 2023 14:08:58 +0000</pubDate>
      <guid>https://frytea.com/archives/1152/</guid>
      <description>&lt;p&gt;转载自: &lt;a href=&#34;https://web.okjike.com/originalPost/638c6bb9c&#34;&gt;https://web.okjike.com/originalPost/638c6bb9c&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>检查当前终端是不是 Docker</title>
      <link>https://frytea.com/archives/775/</link>
      <pubDate>Thu, 27 Apr 2023 14:07:15 +0000</pubDate>
      <guid>https://frytea.com/archives/775/</guid>
      <description>&lt;p&gt;要确定当前运行的终端是否在 Docker 容器内，可以检查容器特定的文件和环境变量。以下是一种方法，通过查看 /proc/1/cgroup 文件来判断：&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;cat /proc/1/cgroup
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;观察输出的内容。如果您看到与 Docker 相关的内容（如 docker 或 containerd），则表示您当前正在 Docker 容器内运行。例如：&lt;/p&gt;</description>
    </item>
    <item>
      <title>批量修改 git 仓库地址</title>
      <link>https://frytea.com/archives/788/</link>
      <pubDate>Thu, 27 Apr 2023 14:07:01 +0000</pubDate>
      <guid>https://frytea.com/archives/788/</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;⚠️ 以下命令将修改您代码仓库的远程地址，请确保明确了解命令的含义在做操作。
如果不确定请提前做好数据备份！！！&lt;/p&gt;&lt;/blockquote&gt;
&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;&#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;find ./ -type f -name &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;config&amp;#34;&lt;/span&gt; -exec perl -i -pe &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;s/192\.168\.66\.43/10.168.68.43/g&amp;#39;&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;{}&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;\;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;以上命令递归的将当前 (&lt;code&gt;./&lt;/code&gt;) 目录下所有 git 配置文件 (&lt;code&gt;.git/config&lt;/code&gt;) 中 &lt;code&gt;192.168.66.43&lt;/code&gt; 替换为 &lt;code&gt;10.168.68.43&lt;/code&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>AIGC Weekly</title>
      <link>https://frytea.com/archives/1159/</link>
      <pubDate>Wed, 26 Apr 2023 01:20:02 +0000</pubDate>
      <guid>https://frytea.com/archives/1159/</guid>
      <description>&lt;p&gt;工具：Midjourney v5 blue glass curved background wall&lt;/p&gt;</description>
    </item>
    <item>
      <title>AIGC Weekly</title>
      <link>https://frytea.com/archives/1171/</link>
      <pubDate>Wed, 26 Apr 2023 01:11:09 +0000</pubDate>
      <guid>https://frytea.com/archives/1171/</guid>
      <description>&lt;p&gt;工具：Midjourney v5 提示词：Rainbow holographic pcd, in t&lt;/p&gt;</description>
    </item>
    <item>
      <title>AIGC Weekly 16  AIGC周刊</title>
      <link>https://frytea.com/archives/1153/</link>
      <pubDate>Wed, 26 Apr 2023 01:07:19 +0000</pubDate>
      <guid>https://frytea.com/archives/1153/</guid>
      <description>&lt;p&gt;工具：Midjourney Niji v5 提示词：Femme, cyberpunk akira s&lt;/p&gt;</description>
    </item>
    <item>
      <title>AIGC Weekly</title>
      <link>https://frytea.com/archives/1160/</link>
      <pubDate>Tue, 25 Apr 2023 16:28:52 +0000</pubDate>
      <guid>https://frytea.com/archives/1160/</guid>
      <description>&lt;p&gt;工具：Midjourney v5 提示词：light mode gradient backgroun&lt;/p&gt;</description>
    </item>
    <item>
      <title>git 整体提交记录(rabase)后合并(merge)</title>
      <link>https://frytea.com/archives/1198/</link>
      <pubDate>Sat, 22 Apr 2023 15:44:24 +0000</pubDate>
      <guid>https://frytea.com/archives/1198/</guid>
      <description>&lt;p&gt;⚠️ 无论是 rebase 还是 merge 都是一项危险操作，请确保充分理解的命令的含义，并确保每&lt;/p&gt;</description>
    </item>
    <item>
      <title>git 整体提交记录(rabase)后合并(merge) </title>
      <link>https://frytea.com/archives/783/</link>
      <pubDate>Sat, 22 Apr 2023 07:44:24 +0000</pubDate>
      <guid>https://frytea.com/archives/783/</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;⚠️ 无论是 &lt;code&gt;rebase&lt;/code&gt; 还是 &lt;code&gt;merge&lt;/code&gt; 都是一项危险操作，请确保充分理解的命令的含义，并确保每一行代码无误后再继续。
如果不确定，请一定记得做好数据备份！！！&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;为了合并 dev 分支到 master 分支，同时确保代码不丢失且提交记录规整，你可以使用交互式的 git rebase 命令。这允许你重新排列、修改、合并或分割提交。以下是操作步骤：&lt;/p&gt;</description>
    </item>
    <item>
      <title>Tiddlywiki 单体/文件夹互转</title>
      <link>https://frytea.com/archives/781/</link>
      <pubDate>Sat, 22 Apr 2023 07:40:07 +0000</pubDate>
      <guid>https://frytea.com/archives/781/</guid>
      <description>&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;&#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;# TiddlyWiki单文件转文件夹命令&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;$ tiddlywiki --load ./mywiki.html --savewikifolder ./mywikifolder
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&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;# TiddlyWiki文件夹转单文件命令&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;$ tiddlywiki ./mywikifolder --rendertiddler &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;$:/core/save/all&amp;#39;&lt;/span&gt; mywiki.html text/plain
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;reference&#34;&gt;Reference&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://zhuanlan.zhihu.com/p/553848135&#34;&gt;TiddlyWiki文件夹版与HTML版相互转换&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description>
    </item>
    <item>
      <title>在浏览器里运行 ChatGPT 和 Stable Diffusion</title>
      <link>https://frytea.com/archives/780/</link>
      <pubDate>Thu, 20 Apr 2023 13:58:02 +0000</pubDate>
      <guid>https://frytea.com/archives/780/</guid>
      <description>&lt;p&gt;现在可以在浏览器里运行 ChatGPT 和 Stable Diffusion 了，详细请看：https://skybyte.me/79.html&lt;/p&gt;
&lt;p&gt;M1 M2 电脑可以直接运行，其他电脑也可以试试，快来试试吧！&lt;/p&gt;</description>
    </item>
    <item>
      <title>一次 AutoGPT 试用体验</title>
      <link>https://frytea.com/archives/1165/</link>
      <pubDate>Mon, 17 Apr 2023 12:37:11 +0000</pubDate>
      <guid>https://frytea.com/archives/1165/</guid>
      <description>&lt;p&gt;任务 SkyByte Bolger 专注于提升 skybyte.me 博客访问量，博客围绕云计算与&lt;/p&gt;</description>
    </item>
    <item>
      <title>在自己的电脑运行清华开源语言模型 ChatGLM-6B</title>
      <link>https://frytea.com/archives/779/</link>
      <pubDate>Sat, 15 Apr 2023 10:14:00 +0000</pubDate>
      <guid>https://frytea.com/archives/779/</guid>
      <description>&lt;p&gt;有人说 AIGC 用 2 年时间走完了互联网 10 年的路，因为大家看到的是围绕 AI 的产品在最近如雨后春笋般涌现，看不到的事各领域大佬早在几年前已经开始了相关布局。&lt;/p&gt;</description>
    </item>
    <item>
      <title>在 Linux 和 M1 macOS 上自托管运行清华开源语言模型 ChatGLM-6B</title>
      <link>https://frytea.com/archives/1154/</link>
      <pubDate>Sat, 15 Apr 2023 09:47:48 +0000</pubDate>
      <guid>https://frytea.com/archives/1154/</guid>
      <description>&lt;p&gt;ChatGLM-6B 是一个由清华 THUDM 开源的、支持中英双语的对话语言模型，基于 Gener&lt;/p&gt;</description>
    </item>
    <item>
      <title>推荐一份 ChatGPT 中文调教指南</title>
      <link>https://frytea.com/archives/1169/</link>
      <pubDate>Thu, 13 Apr 2023 15:00:09 +0000</pubDate>
      <guid>https://frytea.com/archives/1169/</guid>
      <description>&lt;p&gt;《🧠ChatGPT 中文调教指南》 是一份帮助你“调教”chatGPT 的指南，可以给人许多灵感。&lt;/p&gt;</description>
    </item>
    <item>
      <title>确认当前终端是否运行在 LXC 容器</title>
      <link>https://frytea.com/archives/774/</link>
      <pubDate>Mon, 10 Apr 2023 14:56:37 +0000</pubDate>
      <guid>https://frytea.com/archives/774/</guid>
      <description>&lt;p&gt;要确定当前运行的系统是否在 LXC 容器中，可以检查特定的环境变量和文件。以下是一种方法，通过查看 /proc/1/environ 文件来判断：&lt;/p&gt;
&lt;p&gt;在终端中运行以下命令：&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;cat /proc/1/environ | tr &amp;#39;\0&amp;#39; &amp;#39;\n&amp;#39; | grep &amp;#39;^container=&amp;#39;
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;观察输出的内容。如果输出包含 container=lxc，则表示您当前正在 LXC 容器内运行。例如：&lt;/p&gt;</description>
    </item>
    <item>
      <title>【转】理解 DALL·E 2， Stable Diffusion和 Midjourney 的工作原理</title>
      <link>https://frytea.com/archives/1162/</link>
      <pubDate>Sun, 09 Apr 2023 16:48:29 +0000</pubDate>
      <guid>https://frytea.com/archives/1162/</guid>
      <description>&lt;p&gt;【随着 AIGC 的兴起，各位小伙伴们对文生图工具 DALL-E 2、Stable Diffusio&lt;/p&gt;</description>
    </item>
    <item>
      <title>在 MacBook 上运行开源版 AI 图像生成模型之 Mochi Diffusion</title>
      <link>https://frytea.com/archives/778/</link>
      <pubDate>Sun, 09 Apr 2023 07:11:00 +0000</pubDate>
      <guid>https://frytea.com/archives/778/</guid>
      <description>&lt;p&gt;&lt;a href=&#34;https://github.com/godly-devotion/MochiDiffusion&#34;&gt;Mochi Diffusion&lt;/a&gt; 是一个开源的在 Mac 上原生运行 Stable Diffusion 的客户端，可以在 iOS 和 Mac 上使用 Stable Diffusion 画图而无需联网。&lt;/p&gt;
&lt;p&gt;Stable Diffusion 作为当前火爆 AI 图像生成中的开源方案，得到广泛关注。使用下面介绍的客户端可以在 MacBook 上相对快速的将这一模型运行起来。&lt;/p&gt;</description>
    </item>
    <item>
      <title>安装启动 Git LFS 大型文件处理模块</title>
      <link>https://frytea.com/archives/777/</link>
      <pubDate>Sun, 09 Apr 2023 07:02:46 +0000</pubDate>
      <guid>https://frytea.com/archives/777/</guid>
      <description>&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;Git LFS（Large File Storage）是一个 Git 扩展，用于更有效地处理大型文件。

在基于 git 托管大模型的平台拉取 AI 模型时常常需要开启这一功能。

要在不同的操作系统上安装 Git LFS，请按照以下步骤操作：

## 第一步、安装 Git LFS

### 对于 macOS

如果你已经安装了 Homebrew，你可以使用以下命令安装 Git LFS：
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;brew install git-lfs&lt;/p&gt;</description>
    </item>
    <item>
      <title>运行在 macOS 中的 Linux —— multipass 方案</title>
      <link>https://frytea.com/archives/773/</link>
      <pubDate>Sun, 09 Apr 2023 07:02:12 +0000</pubDate>
      <guid>https://frytea.com/archives/773/</guid>
      <description>&lt;p&gt;&lt;a href=&#34;https://github.com/canonical/multipass&#34;&gt; multipass&lt;/a&gt; 用于编排虚拟 Ubuntu 实例&lt;/p&gt;
&lt;p&gt;下载 pkg 安装。&lt;/p&gt;
&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;&#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;$ multipass find
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;$ multipass launch ubuntu
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;$ multipass list
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;$ multipass info &amp;lt;VM Name&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;$ multipass shell &amp;lt;VM Name&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;$ multipass exec &amp;lt;VM Name&amp;gt; -- lsb_release -a
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;$ multipass stop &amp;lt;VM Name&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;$ multipass delete &amp;lt;VM Name&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;$ multipass purge
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;reference&#34;&gt;Reference&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://icloudnative.io/posts/use-podman-in-macos/&#34;&gt;在 macOS 中使用 Podman&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description>
    </item>
    <item>
      <title>运行在 macOS 中的 Linux —— OrbStack 方案</title>
      <link>https://frytea.com/archives/772/</link>
      <pubDate>Sun, 09 Apr 2023 07:02:08 +0000</pubDate>
      <guid>https://frytea.com/archives/772/</guid>
      <description>&lt;p&gt;&lt;a href=&#34;https://orbstack.dev/&#34;&gt;OrbStack&lt;/a&gt;) 是在 macOS 上运行 Docker 容器和 Linux 机器的快速、轻量级和简单的方式。它是一个超级充电版 WSL 和 Docker 桌面替代品，所有这些都在一个易于使用的应用程序中实现。&lt;/p&gt;
&lt;p&gt;GitHub：&lt;a href=&#34;https://github.com/orbstack&#34;&gt;https://github.com/orbstack&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>PVE 批量销毁虚拟机</title>
      <link>https://frytea.com/archives/771/</link>
      <pubDate>Sat, 08 Apr 2023 06:56:44 +0000</pubDate>
      <guid>https://frytea.com/archives/771/</guid>
      <description>&lt;p&gt;可以使用以下命令一次性删除所有 QEMU 虚拟机：&lt;/p&gt;
&lt;h2 id=&#34;串行&#34;&gt;串行&lt;/h2&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;qm list | awk &amp;#39;NR&amp;gt;1 {print $1}&amp;#39; | xargs -I {} qm destroy {}
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;解释：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;qm list&lt;/code&gt; 命令获取所有虚拟机的列表。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;awk &#39;NR&amp;gt;1 {print $1}&#39;&lt;/code&gt; 命令跳过第一行（表头）并提取 VMID 列。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;xargs -I {} qm destroy {}&lt;/code&gt; 命令将每个 VMID 作为参数传递给 &lt;code&gt;qm destroy&lt;/code&gt; 命令，从而删除每个虚拟机。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;注意：此命令会删除所有虚拟机，请确保在执行前已进行适当备份和确认。&lt;/p&gt;</description>
    </item>
    <item>
      <title>拯救全网的 ChatGPT 解封攻略</title>
      <link>https://frytea.com/archives/770/</link>
      <pubDate>Mon, 03 Apr 2023 15:46:22 +0000</pubDate>
      <guid>https://frytea.com/archives/770/</guid>
      <description>&lt;p&gt;不知为什么最近 OpenAI 账号大批量被封这条新闻火遍各大媒体，还以为真的发生了什么大事。好在手里的这几个帐号暂时无恙。&lt;/p&gt;
&lt;p&gt;对于这一消息，我第一反应是质疑，数据来源是什么？显然是没有根据的，甚至有一些网友做了 &lt;a href=&#34;https://mp.weixin.qq.com/s/DS7bT7ssICqQ42J57fj9wA&#34;&gt;验证&lt;/a&gt; ，来论证此次大规模封号的空穴来风。&lt;/p&gt;</description>
    </item>
    <item>
      <title>【转】拯救全网的 ChatGPT 解封攻略</title>
      <link>https://frytea.com/archives/1151/</link>
      <pubDate>Mon, 03 Apr 2023 15:32:36 +0000</pubDate>
      <guid>https://frytea.com/archives/1151/</guid>
      <description>&lt;p&gt;以下内容转载自：拯救全网的 Chatgpt 解封攻略，有需要的朋友可以试试，侵删。 第一步：邮件说明&lt;/p&gt;</description>
    </item>
    <item>
      <title>使用 Mac 快速上手 Stable Diffusion —— Mochi Diffusion</title>
      <link>https://frytea.com/archives/1174/</link>
      <pubDate>Mon, 03 Apr 2023 15:20:39 +0000</pubDate>
      <guid>https://frytea.com/archives/1174/</guid>
      <description>&lt;p&gt;Mochi Diffusion 是一个开源的在 Mac 上原生运行 Stable Diffusion&lt;/p&gt;</description>
    </item>
    <item>
      <title>介绍一个 AI 提示词学习网站 —— Learn Prompting</title>
      <link>https://frytea.com/archives/1168/</link>
      <pubDate>Mon, 03 Apr 2023 15:10:35 +0000</pubDate>
      <guid>https://frytea.com/archives/1168/</guid>
      <description>&lt;p&gt;现如今，OpenAI 已经向人们论证了机器学习对整个人类工作生活的颠覆性，会使用 AI 工具或将成为&lt;/p&gt;</description>
    </item>
    <item>
      <title>在自己的电脑运行开源版 ChatGPT —— gpt4all</title>
      <link>https://frytea.com/archives/769/</link>
      <pubDate>Sun, 02 Apr 2023 07:20:46 +0000</pubDate>
      <guid>https://frytea.com/archives/769/</guid>
      <description>&lt;p&gt;GPT4All 是基于大量干净的助手数据（包括代码、故事和对话）训练而成的聊天机器人，数据包括 ～800k 条 GPT-3.5-Turbo 生成数据，基于 LLaMa 完成，M1 Mac、Windows 等环境都能运行。或许就像它的名字所暗示的那样，人人都能用上个人 GPT 的时代已经来了。&lt;/p&gt;</description>
    </item>
    <item>
      <title>运行开源版 ChatGPT —— gpt4all</title>
      <link>https://frytea.com/archives/1158/</link>
      <pubDate>Sun, 02 Apr 2023 07:17:50 +0000</pubDate>
      <guid>https://frytea.com/archives/1158/</guid>
      <description>&lt;p&gt;GPT4All 是基于大量干净的助手数据（包括代码、故事和对话）训练而成的聊天机器人，数据包括～80&lt;/p&gt;</description>
    </item>
    <item>
      <title>ChatGPT 给出的计算机科学学习计划</title>
      <link>https://frytea.com/archives/768/</link>
      <pubDate>Sat, 01 Apr 2023 07:43:57 +0000</pubDate>
      <guid>https://frytea.com/archives/768/</guid>
      <description>&lt;p&gt;尝试询问 chatGPT 计算机科学学习计划：&lt;/p&gt;
&lt;p&gt;我目前是一名云计算工程师，不是计算机科班出身，学习过基础的计算机导论、程序设计基础、C 程序开发以及 C++ 程序设计开发。&lt;/p&gt;</description>
    </item>
    <item>
      <title>如何提升博客访问量</title>
      <link>https://frytea.com/archives/767/</link>
      <pubDate>Sat, 01 Apr 2023 06:11:19 +0000</pubDate>
      <guid>https://frytea.com/archives/767/</guid>
      <description>&lt;p&gt;最近在探索提升博客访问量的方法，以下是 ChatGPT4 给出的答案：&lt;/p&gt;
&lt;p&gt;要增加博客的访问量，你可以采取以下策略：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;高质量内容：确保你的博客内容有趣、有价值、有深度，并且符合你的目标受众的需求。定期发布新文章以保持读者的兴趣。&lt;/li&gt;
&lt;li&gt;优化搜索引擎排名（SEO）：对你的博客进行搜索引擎优化，以提高在搜索引擎结果页面（SERP）中的排名。这包括关键词研究、合适的标题和元标签、内容结构优化等。&lt;/li&gt;
&lt;li&gt;社交媒体推广：通过在各大社交媒体平台（如微博、微信、豆瓣等）分享你的文章，可以吸引更多的访问量。创建社交媒体帐户，与读者互动并建立关系。&lt;/li&gt;
&lt;li&gt;互动与合作：在其他博客或论坛上留言、评论和互动，可以让更多人了解你的博客。此外，与其他博主或行业专家合作也可以增加曝光度。&lt;/li&gt;
&lt;li&gt;邮件营销：建立邮件订阅列表，定期向订阅者发送更新通知和精选内容。这可以帮助增加回访用户和博客的活跃度。&lt;/li&gt;
&lt;li&gt;分析和调整：使用网站分析工具（如 Google Analytics）来了解访问者的行为和偏好，从而调整内容策略和营销方法。&lt;/li&gt;
&lt;li&gt;广告投放：如果有预算，可以尝试在搜索引擎或社交媒体平台投放广告，以提高博客的曝光度。&lt;/li&gt;
&lt;li&gt;设计和用户体验：确保博客的设计美观、易于阅读和导航。一个良好的用户体验可以留住访问者，并将他们转化为忠实读者。&lt;/li&gt;
&lt;li&gt;创作独特的、病毒式内容：发布有趣、独特且容易传播的内容，可以吸引大量新访问者。&lt;/li&gt;
&lt;li&gt;参加线上线下活动：参加与你博客主题相关的活动、研讨会或会议，可以扩大你的人脉并提高知名度。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;通过这些策略，你可以有效地增加博客的访问量。请注意，这些方法可能需要时间和耐心，但长期来看，它们将带来稳定的访问流量。&lt;/p&gt;</description>
    </item>
    <item>
      <title>一种 ChatGPT 充值的方法—— nobepay</title>
      <link>https://frytea.com/archives/766/</link>
      <pubDate>Fri, 31 Mar 2023 16:26:34 +0000</pubDate>
      <guid>https://frytea.com/archives/766/</guid>
      <description>&lt;p&gt;ChatGPT 是一种人工智能自然语言处理模型，为了获得更好的性能和效果，通常需要进行充值。在进行 ChatGPT 充值时，有很多数字货币支付服务可供选择，其中 Nobepay 可能是一个比较好的选择。&lt;/p&gt;</description>
    </item>
    <item>
      <title>一种 ChatGPT 充值的方法 —— Depay</title>
      <link>https://frytea.com/archives/765/</link>
      <pubDate>Fri, 31 Mar 2023 16:22:44 +0000</pubDate>
      <guid>https://frytea.com/archives/765/</guid>
      <description>&lt;p&gt;最近研究 OpenAI 旗下 ChatGPT 的付费方法。&lt;/p&gt;
&lt;p&gt;ChatGPT 是一种基于人工智能的自然语言处理模型，目前已经被广泛应用于各种领域，如聊天机器人、智能客服、文本摘要等。&lt;/p&gt;
&lt;p&gt;在使用 ChatGPT 进行开发和测试时，有时需要对模型进行充值，以便获取更好的性能和效果。本文将介绍一种 ChatGPT 充值的方法——使用 Depay 进行付款。&lt;/p&gt;</description>
    </item>
    <item>
      <title>AIGC Weekly</title>
      <link>https://frytea.com/archives/1157/</link>
      <pubDate>Thu, 30 Mar 2023 14:52:50 +0000</pubDate>
      <guid>https://frytea.com/archives/1157/</guid>
      <description>&lt;p&gt;以下内容转载自：https://op7418.zhubai.love/posts/225203050&lt;/p&gt;</description>
    </item>
    <item>
      <title>macOS 使用 dd 制作 USB 启动盘</title>
      <link>https://frytea.com/archives/764/</link>
      <pubDate>Thu, 30 Mar 2023 14:39:40 +0000</pubDate>
      <guid>https://frytea.com/archives/764/</guid>
      <description>&lt;p&gt;安装操作系统时，当前常用的方式是获取操作系统对应的 ISO 文件，并制作 U 盘启动盘，使用 U 盘引导系统进行安装。&lt;/p&gt;
&lt;p&gt;当使用 MacOS 时，可以很方便的利用系统自带工具，完成上述工作，具体步骤如下。&lt;/p&gt;</description>
    </item>
    <item>
      <title>推荐几个 AI 生成 logo 的方法</title>
      <link>https://frytea.com/archives/1167/</link>
      <pubDate>Thu, 30 Mar 2023 14:11:20 +0000</pubDate>
      <guid>https://frytea.com/archives/1167/</guid>
      <description>&lt;p&gt;最近在筹划这个新的博客网站，再次遇到头疼的 logo 问题，本着将精力用在刀刃上的决心，这种事情还是&lt;/p&gt;</description>
    </item>
    <item>
      <title>基于chatGPT 创建个人知识库助手 – copilot hub</title>
      <link>https://frytea.com/archives/1161/</link>
      <pubDate>Thu, 30 Mar 2023 13:57:05 +0000</pubDate>
      <guid>https://frytea.com/archives/1161/</guid>
      <description>&lt;p&gt;目前 chatGPT 的资料截止 2021，许多资料是过时的，如何使用自己现有的资料构建个人的 ch&lt;/p&gt;</description>
    </item>
    <item>
      <title>破解海外 ChatGPT 检测技巧</title>
      <link>https://frytea.com/archives/1155/</link>
      <pubDate>Thu, 30 Mar 2023 13:51:11 +0000</pubDate>
      <guid>https://frytea.com/archives/1155/</guid>
      <description>&lt;p&gt;以下内容转载自：https://web.okjike.com/originalPost/6421ac&lt;/p&gt;</description>
    </item>
    <item>
      <title>用 ChatGPT 学日语</title>
      <link>https://frytea.com/archives/1150/</link>
      <pubDate>Thu, 30 Mar 2023 13:48:32 +0000</pubDate>
      <guid>https://frytea.com/archives/1150/</guid>
      <description>&lt;p&gt;看到一些即友会使用 ChatGPT 学日语，感觉很有意思，在这里分享一下： 启发开始用 ChatGP&lt;/p&gt;</description>
    </item>
    <item>
      <title>虚拟磁盘扩容后扩展 LVM vg</title>
      <link>https://frytea.com/archives/763/</link>
      <pubDate>Wed, 29 Mar 2023 10:42:08 +0000</pubDate>
      <guid>https://frytea.com/archives/763/</guid>
      <description>&lt;h2 id=&#34;新空间分区&#34;&gt;新空间分区&lt;/h2&gt;
&lt;p&gt;在使用 fdisk 工具将新增的磁盘空间分配到 LVM PV 上时，您需要按照以下步骤操作：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;运行 &lt;code&gt;fdisk -l&lt;/code&gt; 命令查看系统中当前可用的磁盘和分区信息。&lt;/li&gt;
&lt;li&gt;运行 &lt;code&gt;fdisk /dev/sdX&lt;/code&gt; 命令（其中 sdX 表示要调整大小的磁盘），以编辑该磁盘的分区表。&lt;/li&gt;
&lt;li&gt;使用命令 &lt;code&gt;p&lt;/code&gt; 查看磁盘分区表，确定要修改的分区号码。&lt;/li&gt;
&lt;li&gt;使用命令 &lt;code&gt;n&lt;/code&gt; 创建一个新的分区。按照提示输入分区类型、起始和结束位置等信息即可。请注意，新分区的起始位置必须与现有的 LVM PV 的终止位置相同。&lt;/li&gt;
&lt;li&gt;使用命令 &lt;code&gt;t&lt;/code&gt; 更改新分区的类型。选择类型 8e，以便将其设置为 LVM 分区类型。&lt;/li&gt;
&lt;li&gt;使用命令 &lt;code&gt;w&lt;/code&gt; 将新的分区表写入磁盘，并退出 fdisk 工具。&lt;/li&gt;
&lt;li&gt;运行 &lt;code&gt;pvresize /dev/sdXn&lt;/code&gt; 命令（其中 sdXn 表示新创建的 LVM PV 分区设备文件名）以将新分区添加到现有的 LVM 物理卷中。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;完成以上步骤后，您可以使用 lvextend 命令扩展逻辑卷的大小，并使用 resize2fs 命令调整文件系统大小以反映新的逻辑卷大小。&lt;/p&gt;</description>
    </item>
    <item>
      <title>查看 Docker cp 进度</title>
      <link>https://frytea.com/archives/762/</link>
      <pubDate>Wed, 29 Mar 2023 01:18:12 +0000</pubDate>
      <guid>https://frytea.com/archives/762/</guid>
      <description>&lt;p&gt;docker cp 命令本身不提供进度查看功能。但是，您可以使用第三方工具，如 pv（Pipe Viewer）在执行 docker cp 时查看进度。以下是使用 pv 查看 docker cp 进度的步骤：&lt;/p&gt;</description>
    </item>
    <item>
      <title>迁移 Docker volume 到本地挂载点</title>
      <link>https://frytea.com/archives/760/</link>
      <pubDate>Tue, 28 Mar 2023 10:22:02 +0000</pubDate>
      <guid>https://frytea.com/archives/760/</guid>
      <description>&lt;p&gt;要将 Docker volume 迁移到本地挂载点，您需要执行以下步骤：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;首先，确保已停止正在使用此 volume 的所有容器。您可以使用以下命令停止容器（将 &amp;lt;container_name&amp;gt; 替换为您的容器名称）：    ```
docker stop &amp;lt;container_name&amp;gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;1. 使用 docker cp 命令将 volume 的内容复制到本地文件系统。首先，创建一个临时容器，将要迁移的 volume 挂载到该容器：    ```
docker run -d --name temp_container -v &amp;lt;volume_name&amp;gt;:/volume_data busybox tail -f /dev/null
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;将 &amp;lt;volume_name&amp;gt; 替换为要迁移的 volume 的名称。&lt;/p&gt;</description>
    </item>
    <item>
      <title>适合海淘的诺贝 nobepay 虚拟信用卡申请 – 小 z 博客</title>
      <link>https://frytea.com/archives/1163/</link>
      <pubDate>Tue, 28 Mar 2023 08:57:03 +0000</pubDate>
      <guid>https://frytea.com/archives/1163/</guid>
      <description>&lt;p&gt;以下内容转载自 适合海淘的诺贝 nobepay 虚拟信用卡申请 - 小 z 博客 虚拟信用卡是一种新&lt;/p&gt;</description>
    </item>
    <item>
      <title>服务器使用 systemd 自动启动 wireguard</title>
      <link>https://frytea.com/archives/761/</link>
      <pubDate>Mon, 27 Mar 2023 15:34:04 +0000</pubDate>
      <guid>https://frytea.com/archives/761/</guid>
      <description>&lt;ol&gt;
&lt;li&gt;Generate a valid and working WireGuard configuration file /etc/wireguard/wg0.conf. Our setup guide offers details.    Note: You may have to replace the Endpoint hostname with the WireGuard server IP address in the WireGuard configuration file. DNS may or may not be applied when systemd brings the wg0 interface up.&lt;/li&gt;
&lt;li&gt;Add the WireGuard service to systemd&lt;/li&gt;
&lt;/ol&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;   sudo systemctl enable wg-quick@wg0.service
   sudo systemctl daemon-reload
&lt;/code&gt;&lt;/pre&gt;&lt;ol start=&#34;3&#34;&gt;
&lt;li&gt;Start the new service immediately:&lt;/li&gt;
&lt;/ol&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;sudo systemctl start wg-quick@wg0
&lt;/code&gt;&lt;/pre&gt;&lt;ol start=&#34;4&#34;&gt;
&lt;li&gt;Reboot your computer system to verify the automatic connection on startup works as expected.&lt;/li&gt;
&lt;li&gt;Check the service status:&lt;/li&gt;
&lt;/ol&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;   systemctl status wg-quick@wg0
&lt;/code&gt;&lt;/pre&gt;&lt;ol start=&#34;6&#34;&gt;
&lt;li&gt;To remove the service and clean up the system:&lt;/li&gt;
&lt;/ol&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;sudo systemctl stop wg-quick@wg0
sudo systemctl disable wg-quick@wg0.service
sudo rm -i /etc/systemd/system/wg-quick@wg0*
sudo systemctl daemon-reload
sudo systemctl reset-failed
&lt;/code&gt;&lt;/pre&gt;&lt;h2 id=&#34;references&#34;&gt;References&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://www.ivpn.net/knowledgebase/linux/linux-autostart-wireguard-in-systemd/&#34;&gt;Autostart WireGuard in systemd&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description>
    </item>
    <item>
      <title>【转】推荐一家支持USDT充值的虚拟信用卡Depay，支持OpenAI（ChatGPT）绑定</title>
      <link>https://frytea.com/archives/1166/</link>
      <pubDate>Sun, 26 Mar 2023 07:40:15 +0000</pubDate>
      <guid>https://frytea.com/archives/1166/</guid>
      <description>&lt;p&gt;以下内容转载自 推荐一家支持 USDT 充值的虚拟信用卡 Depay，支持 OpenAI（ChatG&lt;/p&gt;</description>
    </item>
    <item>
      <title>管理情绪的秘诀：5 个实用技巧</title>
      <link>https://frytea.com/archives/758/</link>
      <pubDate>Sun, 19 Mar 2023 13:52:09 +0000</pubDate>
      <guid>https://frytea.com/archives/758/</guid>
      <description>&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://imagehost-cdn.frytea.com/images/2023/03/19/20230319215058b1af78af0c79e49f.png&#34;&gt;&lt;/p&gt;
&lt;p&gt;情绪是每个人都拥有的一种自然反应。有时候我们会因为情绪失控而做出一些后悔的决定，这不仅会影响到我们自己的生活，也会对周围的人产生负面影响。所以，学会管理情绪是非常重要的。&lt;/p&gt;</description>
    </item>
    <item>
      <title>AIGC 相关资源合辑</title>
      <link>https://frytea.com/archives/757/</link>
      <pubDate>Sun, 19 Mar 2023 13:01:10 +0000</pubDate>
      <guid>https://frytea.com/archives/757/</guid>
      <description>&lt;p&gt;近期 AIGC 相关工具爆火，相关产品喷涌而出，每天都有很多有意思的东西出来，因此特别在这里做一下整理，方便乐于探索的人们。&lt;/p&gt;
&lt;h2 id=&#34;ai-资源站点&#34;&gt;AI 资源站点&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://17yongai.com/&#34;&gt;一起用AI 先行于未来&lt;/a&gt;: 一个 AI 工具门户类站点&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://www.ainavpro.com/&#34;&gt;AI 导航&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://aifure.com/&#34;&gt;AIfure&lt;/a&gt;: AI 作品赏析&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://aigc.cn/&#34;&gt;AIGC中文导航&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;ai-工具合辑&#34;&gt;AI 工具合辑&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://openai.com/blog/chatgpt&#34;&gt;ChatGPT&lt;/a&gt;：全能战士，地表最强&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://openai.com/product/dall-e-2&#34;&gt;Dall-E-2&lt;/a&gt;：神级 Al 绘画工具&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://runwayml.com/&#34;&gt;Runway&lt;/a&gt;：一句话生成一段视频&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://podcast.adobe.com/&#34;&gt;Adobe Podcast&lt;/a&gt;： Al 录音处理工具&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://murf.ai/&#34;&gt;Murf&lt;/a&gt;：Al 文字转语音工具，生成真人演讲&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://repurpose.io/&#34;&gt;Repurpose 10&lt;/a&gt;：自动发布社交媒体工具&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://fireflies.ai/&#34;&gt;Fireflies&lt;/a&gt;： Al 会议记录工具。&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://timelyapp.com/&#34;&gt;Timelt&lt;/a&gt;: 时间管理大师&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://donotpay.com/&#34;&gt;Do Not Pay&lt;/a&gt;: 解決法律问题&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://www.chatbot.com/integrations/livechat/&#34;&gt;Chatbot Live&lt;/a&gt;: 聊天机器人&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://www.jasper.ai/&#34;&gt;Jasper AI&lt;/a&gt;: 专为写文家而生&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://www.synthesia.io/&#34;&gt;Synthesia&lt;/a&gt;: 生成真人视频&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://jenni.ai/&#34;&gt;Jenni Al&lt;/a&gt;: 帮你写论文的&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://beta.tome.app/&#34;&gt;Tome&lt;/a&gt;: 写故事&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;chatgpt-镜像&#34;&gt;ChatGPT 镜像&lt;/h2&gt;
&lt;blockquote&gt;
&lt;p&gt;来源于 &lt;a href=&#34;https://github.com/xx025/carrot/&#34;&gt;carrot&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>最近使用 AI 的一点感受 —— 快速验证及落地方案</title>
      <link>https://frytea.com/archives/756/</link>
      <pubDate>Sun, 19 Mar 2023 10:15:14 +0000</pubDate>
      <guid>https://frytea.com/archives/756/</guid>
      <description>&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://imagehost-cdn.frytea.com/images/2023/03/19/2023031918131953d83b0e0934d918.png&#34;&gt;&lt;/p&gt;
&lt;p&gt;近期，聊天机器人技术 GPT-3 火遍了整个互联网。GPT-3 在自然语言处理方面的出色表现，引起了大家对 AI 的关注和探索。作为一名从事相关领域的工程师，我最近也有了一些感受。&lt;/p&gt;</description>
    </item>
    <item>
      <title>从百度文心一言发布标志着海内外AI正面竞争的开始</title>
      <link>https://frytea.com/archives/755/</link>
      <pubDate>Sat, 18 Mar 2023 14:09:21 +0000</pubDate>
      <guid>https://frytea.com/archives/755/</guid>
      <description>&lt;p&gt;近年来，人工智能技术在全球范围内得到了快速发展，AI 技术的应用场景也在不断扩大。而近期，百度公司推出的文心一言产品发布，标志着海内外 AI 正面竞争的开始。这是一个令人振奋的消息，也意味着未来将有更多的 AI 技术创新，为社会带来更多的便利和改变。&lt;/p&gt;</description>
    </item>
    <item>
      <title>PVE 删除/离开集群</title>
      <link>https://frytea.com/archives/753/</link>
      <pubDate>Thu, 16 Mar 2023 11:34:00 +0000</pubDate>
      <guid>https://frytea.com/archives/753/</guid>
      <description>&lt;h2 id=&#34;删除节点&#34;&gt;删除节点&lt;/h2&gt;
&lt;blockquote&gt;
&lt;p&gt;用于从集群中删除无效节点。&lt;/p&gt;&lt;/blockquote&gt;
&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;&#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;cd /etc/pve/nodes
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;rm -rf &amp;lt;YOUR DELETE NODE NAME&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;pvecm delnode &amp;lt;YOUR DELETE NODE NAME&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;离开集群&#34;&gt;离开集群&lt;/h2&gt;
&lt;blockquote&gt;
&lt;p&gt;用户节点离开集群。&lt;/p&gt;&lt;/blockquote&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;# 离线的节点操作
systemctl stop pve-cluster.service
systemctl stop corosync.service
pmxcfs -l
rm /etc/pve/corosync.conf
rm -rf /etc/corosync/*
killall pmxcfs
systemctl start pve-cluster.service
cd /etc/pve/nodes
ls
rm -rf /etc/pve/nodes/&amp;lt;YOUR DELETE NODE NAME&amp;gt;
pvecm delnode &amp;lt;YOUR DELETE NODE NAME&amp;gt;

 
# 正常的节点操作：
cd /etc/pve/nodes
rm -rf &amp;lt;YOUR DELETE NODE NAME&amp;gt;
pvecm delnode &amp;lt;YOUR DELETE NODE NAME&amp;gt;
&lt;/code&gt;&lt;/pre&gt;&lt;h2 id=&#34;reference&#34;&gt;Reference&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://www.cnblogs.com/jackadam/p/15763362.html&#34;&gt;PVE Proxmox Virtual Environment 学习笔记（五）集群节点故障&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description>
    </item>
    <item>
      <title>SSH 密钥类型</title>
      <link>https://frytea.com/archives/754/</link>
      <pubDate>Thu, 16 Mar 2023 05:10:24 +0000</pubDate>
      <guid>https://frytea.com/archives/754/</guid>
      <description>&lt;p&gt;GitHub 改变了他们的安全协议，不再允许使用使用 SHA-1 加密算法的 RSA 密钥进行访问，而我目前使用 ssh 默认策略生成的就是这种类型的密钥，结果就是无法提交代码。&lt;/p&gt;
&lt;p&gt;一种比较简便的方式是生成 ed25519 替换现有的，且两个密钥是不同的名称，可以共存。&lt;/p&gt;</description>
    </item>
    <item>
      <title>macOS 清理时间机器快照</title>
      <link>https://frytea.com/archives/750/</link>
      <pubDate>Tue, 14 Mar 2023 00:48:24 +0000</pubDate>
      <guid>https://frytea.com/archives/750/</guid>
      <description>&lt;p&gt;安装 Asahi Linux 发现磁盘可用空间为 0，查阅文档发现是时间机器的问题。&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;We&amp;#39;re going to resize this partition:
  APFS [Macintosh HD] (245.11 GB, 6 volumes)
  Total size: 245.11 GB
  Free space: 132.23 GB
  Available space: 0 B
  Overhead: 94.23 GB
  Minimum total size: 245.11 GB (100.00%)
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;开启时间机器后系统会自动进行本地快照，这将会占满所所有可用空间，需要手动清理一下:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Dockerfile 禁止弹出 apt 安装交互视图</title>
      <link>https://frytea.com/archives/749/</link>
      <pubDate>Mon, 13 Mar 2023 00:41:20 +0000</pubDate>
      <guid>https://frytea.com/archives/749/</guid>
      <description>&lt;p&gt;在 Dockerfile 中执行 apt 安装时，有些软件包可能会在安装过程中弹出交互式视图，例如询问用户是否接受软件包许可证或配置软件包参数等。在 Docker 构建过程中，由于无法进行交互式操作，这些视图可能会导致构建失败或出现不可预期的结果。为避免这些问题，可以通过以下方法避免在 Docker 构建过程中弹出交互式视图：&lt;/p&gt;</description>
    </item>
    <item>
      <title>ChatGPT VS Notion AI</title>
      <link>https://frytea.com/archives/752/</link>
      <pubDate>Sun, 12 Mar 2023 12:23:34 +0000</pubDate>
      <guid>https://frytea.com/archives/752/</guid>
      <description>&lt;h2 id=&#34;简介&#34;&gt;简介&lt;/h2&gt;
&lt;p&gt;在当今世界中，涌现了许多基于人工智能的工具和平台，旨在简化各种功能。聊天机器人和虚拟助手是近年来广受欢迎的两个例子。 ChatGPT 和 Notion AI 是提供基于人工智能的解决方案的两个平台。在本篇博客文章中，我们将比较 ChatGPT 和 Notion AI，以了解它们的优点和缺点，并最终帮助您决定哪一个更适合您的业务。&lt;/p&gt;</description>
    </item>
    <item>
      <title>chatGPT 席卷全球后，我们的工作方式会发生什么变化</title>
      <link>https://frytea.com/archives/751/</link>
      <pubDate>Sun, 12 Mar 2023 12:22:08 +0000</pubDate>
      <guid>https://frytea.com/archives/751/</guid>
      <description>&lt;h2 id=&#34;介绍&#34;&gt;介绍&lt;/h2&gt;
&lt;p&gt;在过去的几年中，人工智能技术的快速发展一直在推动着我们的生活和工作方式的变革。近来，一种新型的人工智能技术——GPT-3 已经引起了广泛的关注。chatGPT 作为 GPT-3 的一个变种，它的出现在聊天机器人领域的应用无疑会给我们的工作方式带来很多变化。&lt;/p&gt;</description>
    </item>
    <item>
      <title>PVE 手动创建 lvm-thin-pool 加入多磁盘</title>
      <link>https://frytea.com/archives/748/</link>
      <pubDate>Sun, 12 Mar 2023 05:21:21 +0000</pubDate>
      <guid>https://frytea.com/archives/748/</guid>
      <description>&lt;p&gt;新建存储池，包括多块硬盘&lt;/p&gt;
&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;&#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;lsblk
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;pvcreate /dev/sdb /dev/sdc /dev/sdd
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;vgcreate thin-pool /dev/sdb /dev/sdc /dev/sdd
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;lvcreate -T thin-pool/data -l +99%FREE
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;pvesm add lvmthin thin-pool-data --content rootdir,images --thinpool data --vgname thin-pool
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;reference&#34;&gt;Reference&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://forum.proxmox.com/threads/adding-a-disk-and-set-it-as-lvm-thin-help-needed-please.111724/&#34;&gt;adding a disk and set it as lvm-thin: help needed, please&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description>
    </item>
    <item>
      <title>virsh 批量克隆虚拟机</title>
      <link>https://frytea.com/archives/747/</link>
      <pubDate>Sun, 12 Mar 2023 05:21:17 +0000</pubDate>
      <guid>https://frytea.com/archives/747/</guid>
      <description>&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;&#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;# 快速克隆&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;virt-clone --auto-clone --original vm-euler --name vm-euler-2
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;批量克隆&lt;/p&gt;
&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;&#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:#66d9ef&#34;&gt;for&lt;/span&gt; i in &lt;span style=&#34;color:#f92672&#34;&gt;{&lt;/span&gt;1..64&lt;span style=&#34;color:#f92672&#34;&gt;}&lt;/span&gt;; &lt;span style=&#34;color:#66d9ef&#34;&gt;do&lt;/span&gt; virt-clone --auto-clone --original vm-euler --name vm-euler-$i ; &lt;span style=&#34;color:#66d9ef&#34;&gt;done&lt;/span&gt; &amp;amp;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;reference&#34;&gt;Reference&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://linux.die.net/man/1/virt-clone&#34;&gt;virt-clone(1) - Linux man page&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description>
    </item>
    <item>
      <title>ChatGPT 现象概述</title>
      <link>https://frytea.com/archives/746/</link>
      <pubDate>Wed, 08 Mar 2023 09:52:58 +0000</pubDate>
      <guid>https://frytea.com/archives/746/</guid>
      <description>&lt;h2 id=&#34;简介&#34;&gt;简介&lt;/h2&gt;
&lt;p&gt;近年来，聊天机器人越来越受欢迎，许多公司和个人使用它们与客户交互或进行对话。其中一种聊天机器人是 ChatGPT，因其生成类似人类响应的能力而引起关注。在本篇博客中，我们将概述 ChatGPT 现象及其对聊天机器人行业的影响。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Arch Linux 高分屏缩放方案</title>
      <link>https://frytea.com/archives/742/</link>
      <pubDate>Thu, 02 Mar 2023 15:09:06 +0000</pubDate>
      <guid>https://frytea.com/archives/742/</guid>
      <description>&lt;p&gt;linux 下高分屏适配当前在 macos/windows/Linux 中的排位尚属末尾，采用整数倍缩放效果尚好（例如 100%、200%），但是若是使用非整数倍缩放（125%、175%）常常会体会到窗口模糊。&lt;/p&gt;</description>
    </item>
    <item>
      <title>firefox 使用侧边标签栏替换顶部标签栏</title>
      <link>https://frytea.com/archives/745/</link>
      <pubDate>Wed, 01 Mar 2023 13:13:35 +0000</pubDate>
      <guid>https://frytea.com/archives/745/</guid>
      <description>&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://imagehost-cdn.frytea.com/images/2023/03/01/20230301094433c3dfd88e4540899f.png&#34;&gt;&lt;/p&gt;
&lt;h2 id=&#34;安装侧边插件-tab-tree&#34;&gt;安装侧边插件 tab-tree&lt;/h2&gt;
&lt;p&gt;推荐安装使用 &lt;a href=&#34;https://addons.mozilla.org/zh-CN/firefox/addon/tree-style-tab/&#34;&gt;Tree Style Tab&lt;/a&gt; 插件实现侧边插件，其他插件也可自行探索。&lt;/p&gt;
&lt;h2 id=&#34;配置自动隐藏顶栏&#34;&gt;配置自动隐藏顶栏&lt;/h2&gt;
&lt;p&gt;地址栏输入&lt;/p&gt;
&lt;p&gt;&lt;code&gt;about:config —&amp;gt; toolkit.legacyUserProfileCustomizations.stylesheets —&amp;gt; true&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;帮助—&amp;gt; 更多排障信息—&amp;gt; 配置文件夹—&amp;gt; 打开文件夹—&amp;gt; 新建 chrome 文件夹&lt;/p&gt;</description>
    </item>
    <item>
      <title>《高能效人士的七个习惯》</title>
      <link>https://frytea.com/archives/1060/</link>
      <pubDate>Tue, 28 Feb 2023 19:56:21 +0000</pubDate>
      <guid>https://frytea.com/archives/1060/</guid>
      <description>&lt;p&gt;要事第一 重要性：《成功的普遍共性》一文的作者格雷(E.MGray)发现成功的决定因素并非辛勤的工作&lt;/p&gt;</description>
    </item>
    <item>
      <title>高能效人士的七个习惯</title>
      <link>https://frytea.com/archives/744/</link>
      <pubDate>Tue, 28 Feb 2023 11:56:21 +0000</pubDate>
      <guid>https://frytea.com/archives/744/</guid>
      <description>&lt;ul&gt;
&lt;li&gt;要事第一
&lt;ul&gt;
&lt;li&gt;重要性：《成功的普遍共性》一文的作者格雷(E.MGray)发现成功的决定因素并非辛勤的工作、出众的运气和良好的人际关系，虽然这些因素对于一个人的成功有举足轻重的影响，但都比不上另外一个更加重要的因素，那就是习惯三&amp;quot;要事第一&amp;quot;。
格雷说：成功者能为失败者所不能为，纵使并非心甘情愿，但为了理想与目标，仍可以凭毅力克服心理障碍&lt;/li&gt;
&lt;li&gt;时间管理的时代演进
&lt;ul&gt;
&lt;li&gt;第一代：利用便条与备忘录，在忙碌中调配时间与精力&lt;/li&gt;
&lt;li&gt;第二代：强调行事历与日程表，反映出时间管理已注意到规划未来的重要&lt;/li&gt;
&lt;li&gt;第三代：依据轻重缓急设定短、中、长期目标，再逐日制定实现目标的计划，将有限的时间、精力加以分配，争取最高的效率
有人发现，过分强调效率，把时间崩得死死的，反而会产生反效果，使人失去增进感情、满足个人需要以及享受意外之喜的机会。&lt;/li&gt;
&lt;li&gt;第四代：根本否定&amp;quot;时间管理&amp;quot;，主张关键不在于时间管理，而在于个人管理，把重心放在维持产出与产能的平衡上。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;时间管理矩阵
&lt;ul&gt;
&lt;li&gt;象限
&lt;ul&gt;
&lt;li&gt;重要：凡有价值、有利于实现个人目标的就是要事。&lt;/li&gt;
&lt;li&gt;紧迫：必须立即处理&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;事务分类
&lt;ul&gt;
&lt;li&gt;1⃣️ 既紧迫又重要
&lt;ul&gt;
&lt;li&gt;危机&lt;/li&gt;
&lt;li&gt;迫切问题&lt;/li&gt;
&lt;li&gt;在限定时间内必须完成的任务&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;2⃣️ 不紧迫但重要
&lt;ul&gt;
&lt;li&gt;预防性措施&lt;/li&gt;
&lt;li&gt;建立关系&lt;/li&gt;
&lt;li&gt;明确新的发展机会&lt;/li&gt;
&lt;li&gt;制定计划和休闲&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;3⃣️ 不重要但紧急
&lt;ul&gt;
&lt;li&gt;接待访客、某些电话&lt;/li&gt;
&lt;li&gt;某些邮件、某些报告&lt;/li&gt;
&lt;li&gt;某些会议&lt;/li&gt;
&lt;li&gt;迫切需要解决的事务&lt;/li&gt;
&lt;li&gt;公共活动&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;4⃣️ 不重要也不紧急
&lt;ul&gt;
&lt;li&gt;繁琐忙碌的工作&lt;/li&gt;
&lt;li&gt;某些邮件&lt;/li&gt;
&lt;li&gt;某些电话&lt;/li&gt;
&lt;li&gt;消磨时间的活动&lt;/li&gt;
&lt;li&gt;令人愉快的活动&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;偏重某一事务的结果
&lt;ul&gt;
&lt;li&gt;1⃣️ 既紧迫又重要 urgent and important
&lt;ul&gt;
&lt;li&gt;压力大&lt;/li&gt;
&lt;li&gt;筋疲力尽&lt;/li&gt;
&lt;li&gt;被危机牵着鼻子走&lt;/li&gt;
&lt;li&gt;忙于收拾残局&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;2⃣️ 不紧迫但重要 important but not urgent
&lt;ul&gt;
&lt;li&gt;愿景、远见&lt;/li&gt;
&lt;li&gt;平衡&lt;/li&gt;
&lt;li&gt;自律&lt;/li&gt;
&lt;li&gt;自制&lt;/li&gt;
&lt;li&gt;很少发生危机&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;3⃣️ 不重要但紧急 unimportant but urgent
&lt;ul&gt;
&lt;li&gt;急功近利&lt;/li&gt;
&lt;li&gt;被危机牵着鼻子走&lt;/li&gt;
&lt;li&gt;被视为巧言令色&lt;/li&gt;
&lt;li&gt;轻视目标和计划&lt;/li&gt;
&lt;li&gt;认为自己是受害者，缺乏自制力&lt;/li&gt;
&lt;li&gt;人际关系肤浅，甚至破裂&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;4⃣️ 不重要也不紧急 unimportant and not urgent / 3⃣️ 不重要但紧急
&lt;ul&gt;
&lt;li&gt;完全不负责任&lt;/li&gt;
&lt;li&gt;被炒鱿鱼&lt;/li&gt;
&lt;li&gt;基本生活都需要依赖他人或社会机构&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;个人管理四步骤
&lt;ul&gt;
&lt;li&gt;确认角色&lt;/li&gt;
&lt;li&gt;选择目标&lt;/li&gt;
&lt;li&gt;安排进度&lt;/li&gt;
&lt;li&gt;每日调整&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;/li&gt;
&lt;/ul&gt;</description>
    </item>
    <item>
      <title>整理 Notion 导出文档名称</title>
      <link>https://frytea.com/archives/743/</link>
      <pubDate>Tue, 28 Feb 2023 11:40:56 +0000</pubDate>
      <guid>https://frytea.com/archives/743/</guid>
      <description>&lt;p&gt;从 Notion 导出 md 格式的文档，默认会对文件名做一些处理，&lt;/p&gt;
&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://imagehost-cdn.frytea.com/images/2023/02/28/202302281809111b4ea3d003517a7d.png&#34;&gt;&lt;/p&gt;
&lt;p&gt;大概是这样，会讲过长的文档名称压缩，在首行使用 md 一级标签标记文件名，再将文档截断为图示的样子。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Arch Linux ARM 安装 electron 版微信</title>
      <link>https://frytea.com/archives/741/</link>
      <pubDate>Sun, 19 Feb 2023 02:39:42 +0000</pubDate>
      <guid>https://frytea.com/archives/741/</guid>
      <description>&lt;p&gt;偶然逛 ArchWiki 的 &lt;a href=&#34;https://wiki.archlinuxcn.org/zh-hans/%E5%BE%AE%E4%BF%A1&#34;&gt;微信&lt;/a&gt; 页面，发现在 Arch 下提供了很多种运行微信的方案，在我的 ARM 版 ARCH 下搜索了一下，发现提供了一个基于 electron 直接可用的微信：&lt;/p&gt;
&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;&#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 pacman -Ss wechat  
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;archlinuxcn/electronic-wechat-uos-bin v2.3.1.fix-2  
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;   Linux 下更好用的微信客户端. 更多功能, 更少bug. 使用Electron构建, 利用UOS请求头修复了登陆问题.  
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;archlinuxcn/wine-wechat-setup 1.2-1  
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;   Setup and run WeChat Windows version with Wine &lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;Chinese version&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;安装 electron 版的尝试一下：&lt;/p&gt;</description>
    </item>
    <item>
      <title>Parallels m1 安装 arch 虚拟机并配置 KDE 和辅助程序</title>
      <link>https://frytea.com/archives/740/</link>
      <pubDate>Sat, 11 Feb 2023 11:32:00 +0000</pubDate>
      <guid>https://frytea.com/archives/740/</guid>
      <description>&lt;p&gt;最近在探索 m1 MacBook 下运行 linux 虚拟机的可能性，计划未来在 linux 虚拟机下完成所有开发工作，parallels desktop 天然提供了 debian/ubuntu/fedora 等 linux 发行版支持，但是在我个人使用场景中还是多少有些问题。&lt;/p&gt;</description>
    </item>
    <item>
      <title>arm64 版 picgo 提示已损坏解决办法</title>
      <link>https://frytea.com/archives/739/</link>
      <pubDate>Thu, 09 Feb 2023 14:31:00 +0000</pubDate>
      <guid>https://frytea.com/archives/739/</guid>
      <description>&lt;p&gt;&lt;a href=&#34;https://github.com/Molunerfinn/PicGo&#34;&gt;PicGo&lt;/a&gt; 是一款很好用的图床辅助软件，一直在使用。&lt;/p&gt;
&lt;p&gt;最新下载最新版的 picGo arm64 版安装，提示已损坏，执行以下命令解决：&lt;/p&gt;
&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;&#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 xattr -d com.apple.quarantine &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;/Applications/PicGo.app&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;参考&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://github.com/1zilc/fishing-funds/issues/149#issuecomment-928044197&#34;&gt;https://github.com/1zilc/fishing-funds/issues/149#issuecomment-928044197&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://github.com/Molunerfinn/PicGo/issues/1055&#34;&gt;https://github.com/Molunerfinn/PicGo/issues/1055&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description>
    </item>
    <item>
      <title>Emacs 集成 Github Copilot</title>
      <link>https://frytea.com/archives/738/</link>
      <pubDate>Thu, 09 Feb 2023 14:21:22 +0000</pubDate>
      <guid>https://frytea.com/archives/738/</guid>
      <description>&lt;p&gt;&lt;a href=&#34;https://github.com/zerolfx/copilot.el&#34;&gt;copilot.el&lt;/a&gt;  是一个&lt;strong&gt;非官方&lt;/strong&gt;实现的 Github Copilot 插件，实测在 x86/arm64 、macos/debian 下均可使用，下面介绍最关键的几个配置步骤。&lt;/p&gt;
&lt;h2 id=&#34;准备&#34;&gt;准备&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Emacs &amp;gt;= 27&lt;/li&gt;
&lt;li&gt;安装 node.js&lt;/li&gt;
&lt;li&gt;emacs 安装好 &lt;code&gt;e&lt;/code&gt;, &lt;code&gt;editorconfig&lt;/code&gt; 插件&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;以上是对您环境最基础的要求，确认无误后继续下一步。&lt;/p&gt;</description>
    </item>
    <item>
      <title>PVE 批量创建、配置虚拟机 IP、网卡、启停及销毁</title>
      <link>https://frytea.com/archives/737/</link>
      <pubDate>Wed, 08 Feb 2023 00:46:10 +0000</pubDate>
      <guid>https://frytea.com/archives/737/</guid>
      <description>&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;&#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;# 从模版批量派生，100 虚拟机仅需2 min&lt;/span&gt;
&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;for&lt;/span&gt; i in &lt;span style=&#34;color:#f92672&#34;&gt;{&lt;/span&gt;001..128&lt;span style=&#34;color:#f92672&#34;&gt;}&lt;/span&gt;; &lt;span style=&#34;color:#66d9ef&#34;&gt;do&lt;/span&gt; qm clone &lt;span style=&#34;color:#ae81ff&#34;&gt;336&lt;/span&gt; 11$i --name stl-ceph-bare-node$i --pool stl-ceph-cluster2; &lt;span style=&#34;color:#66d9ef&#34;&gt;done&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&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;# 使用 cloud-init 批量配置 ip，需在模版提前装好 cloud-init 软件包并添加设备&lt;/span&gt;
&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;for&lt;/span&gt; i in &lt;span style=&#34;color:#f92672&#34;&gt;{&lt;/span&gt;1..128&lt;span style=&#34;color:#f92672&#34;&gt;}&lt;/span&gt;; &lt;span style=&#34;color:#66d9ef&#34;&gt;do&lt;/span&gt; num&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;`&lt;/span&gt;echo $i | awk &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;{printf(&amp;#34;%03d&amp;#34;,$0)}&amp;#39;&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;`&lt;/span&gt;; qm set 10&lt;span style=&#34;color:#e6db74&#34;&gt;${&lt;/span&gt;num&lt;span style=&#34;color:#e6db74&#34;&gt;}&lt;/span&gt;  --ipconfig1 ip&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;10.24.88.$i/24,gw&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;10.24.88.254; &lt;span style=&#34;color:#66d9ef&#34;&gt;done&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&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;# 批量断开网络接口&lt;/span&gt;
&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;for&lt;/span&gt; i in &lt;span style=&#34;color:#f92672&#34;&gt;{&lt;/span&gt;002..128&lt;span style=&#34;color:#f92672&#34;&gt;}&lt;/span&gt;; &lt;span style=&#34;color:#66d9ef&#34;&gt;do&lt;/span&gt; qm set 10$i --net0 virtio,link_down&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;1; &lt;span style=&#34;color:#66d9ef&#34;&gt;done&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&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;# 批量开机&lt;/span&gt;
&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;for&lt;/span&gt; i in &lt;span style=&#34;color:#f92672&#34;&gt;{&lt;/span&gt;001..128&lt;span style=&#34;color:#f92672&#34;&gt;}&lt;/span&gt;; &lt;span style=&#34;color:#66d9ef&#34;&gt;do&lt;/span&gt; qm start 10$i; &lt;span style=&#34;color:#66d9ef&#34;&gt;done&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&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;# 批量销毁&lt;/span&gt;
&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;for&lt;/span&gt; i in &lt;span style=&#34;color:#f92672&#34;&gt;{&lt;/span&gt;001..111&lt;span style=&#34;color:#f92672&#34;&gt;}&lt;/span&gt;; &lt;span style=&#34;color:#66d9ef&#34;&gt;do&lt;/span&gt; qm destroy 10$i; &lt;span style=&#34;color:#66d9ef&#34;&gt;done&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description>
    </item>
    <item>
      <title>PVE 虚拟机导入 vmdk 磁盘</title>
      <link>https://frytea.com/archives/736/</link>
      <pubDate>Wed, 01 Feb 2023 01:45:31 +0000</pubDate>
      <guid>https://frytea.com/archives/736/</guid>
      <description>&lt;ol&gt;
&lt;li&gt;先把磁盘镜像上传到 pve 服务器中，若空间不足可挂载本地存储；&lt;/li&gt;
&lt;li&gt;把 &lt;code&gt;vmdk&lt;/code&gt; 转为 &lt;code&gt;qcow2&lt;/code&gt;&lt;/li&gt;
&lt;/ol&gt;
&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;&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;qemu-img convert -O qcow2 test.vmdk test.qcow2
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;注：&lt;code&gt;-O&lt;/code&gt; 是大写的字母 &lt;code&gt;O&lt;/code&gt;&lt;/p&gt;
&lt;ol start=&#34;3&#34;&gt;
&lt;li&gt;使用 &lt;code&gt;qm importdisk&lt;/code&gt; 命令导入&lt;/li&gt;
&lt;/ol&gt;
&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;&#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;$ qm importdisk  &amp;lt;vmid&amp;gt; &amp;lt;images-name&amp;gt; &amp;lt;storage pool&amp;gt;  --format&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&amp;lt;disk-fs&amp;gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&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;# vmid：vm的id 例如102&lt;/span&gt;
&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;# images-name：磁盘镜像的名字&lt;/span&gt;
&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;# storage poll: 存储磁盘镜像的位置，一般写存储的名称，如pve01data&lt;/span&gt;
&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;# disk-fs: 磁盘镜像格式  raw/vmdk/qcow2&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;参考文献&#34;&gt;参考文献&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://zhuanlan.zhihu.com/p/467105568&#34;&gt;vmware vmdk虚拟机导入到proxmox ve&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://forum.proxmox.com/threads/import-vm-from-esxi-6-0.107151/&#34;&gt;import VM from ESXi 6.0 - Proxmox Forums&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://pve.proxmox.com/wiki/Migration_of_servers_to_Proxmox_VE#Physical-to-Virtual_.28P2V.29&#34;&gt;Migration of servers to Proxmox VE&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description>
    </item>
    <item>
      <title>iptables 设置默认规则</title>
      <link>https://frytea.com/archives/735/</link>
      <pubDate>Tue, 31 Jan 2023 12:48:53 +0000</pubDate>
      <guid>https://frytea.com/archives/735/</guid>
      <description>&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;&#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&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;iptables -P INPUT DROP &lt;span style=&#34;color:#75715e&#34;&gt;# 配置默认的不让进&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;iptables -P FORWARD DROP &lt;span style=&#34;color:#75715e&#34;&gt;# 默认的不允许转发&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;iptables -P OUTPUT ACCEPT &lt;span style=&#34;color:#75715e&#34;&gt;# 默认的可以出去&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;参考文献&#34;&gt;参考文献&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://wangchujiang.com/linux-command/c/iptables.html#%E8%AE%BE%E7%BD%AE%E9%BB%98%E8%AE%A4%E7%9A%84%E8%A7%84%E5%88%99&#34;&gt;iptables - Linux man&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description>
    </item>
    <item>
      <title>每次离开的时候才会特别想家</title>
      <link>https://frytea.com/archives/734/</link>
      <pubDate>Fri, 27 Jan 2023 14:03:27 +0000</pubDate>
      <guid>https://frytea.com/archives/734/</guid>
      <description>&lt;p&gt;今年出人预料的能回家了，匆匆去，匆匆回，真的离开了家乡，才开始想家。&lt;/p&gt;
&lt;p&gt;2021 年春节，咨询街道被告知回去就隔离 14 天；
2022 年春节，咨询街道被告知回去就隔离 7+7。
2023 年春节，终于迎来全面解封。&lt;/p&gt;</description>
    </item>
    <item>
      <title>macOS 安装 Emacs</title>
      <link>https://frytea.com/archives/733/</link>
      <pubDate>Fri, 27 Jan 2023 08:14:00 +0000</pubDate>
      <guid>https://frytea.com/archives/733/</guid>
      <description>&lt;p&gt;macOS 下可选择多种 Emacs GUI ，建议 Emacs Mac Port。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://github.com/railwaycat/homebrew-emacsmacport&#34;&gt;Emacs Mac Port&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://emacsformacosx.com/&#34;&gt;Emacs For Mac OS X&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;安装-emacs-mac-port&#34;&gt;安装 Emacs mac Port&lt;/h2&gt;
&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;&#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;brew tap railwaycat/emacsmacport
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;brew install --cask emacs-mac
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://imagehost-cdn.frytea.com/images/2023/01/27/2023012716128513933236e6d1c4dce.png&#34;&gt;&lt;/p&gt;
&lt;p&gt;相较于 Emacs For Mac OS X ，Emacs Mac Port 界面效果更好，裸 Emacs 的图标更加美观，建议使用。&lt;/p&gt;</description>
    </item>
    <item>
      <title>顺利返程，这个年就算过完了（流水账）</title>
      <link>https://frytea.com/archives/731/</link>
      <pubDate>Thu, 26 Jan 2023 12:26:00 +0000</pubDate>
      <guid>https://frytea.com/archives/731/</guid>
      <description>&lt;p&gt;昨夜十一点，回到了居住地，
看着熟悉的一切，
心里感触良多，离开的这 7 天，仿佛过去了很久很久。&lt;/p&gt;
&lt;p&gt;一方面，两年没回家了，23 年终于回了一趟家，
另一方面，第一次这么远距离的旅行，总担心有什么突发状况，
好在一切顺利，当前已顺利返程，下次再回家就安心许多了。&lt;/p&gt;</description>
    </item>
    <item>
      <title>使用 dos2unix 解决跨操作系统换行符问题</title>
      <link>https://frytea.com/archives/728/</link>
      <pubDate>Mon, 16 Jan 2023 00:29:00 +0000</pubDate>
      <guid>https://frytea.com/archives/728/</guid>
      <description>&lt;p&gt;&lt;code&gt;dos2unix&lt;/code&gt; 是将 &lt;code&gt;Windows&lt;/code&gt; 格式文件转换为 &lt;code&gt;Unix/Linux&lt;/code&gt; 格式的实用命令。&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;code&gt;unix2dos&lt;/code&gt; 则是和 &lt;code&gt;dos2unix&lt;/code&gt; 互为孪生的一个命令，将 &lt;code&gt;Linux&amp;amp;Unix&lt;/code&gt; 格式文件转换为 &lt;code&gt;Windows&lt;/code&gt; 格式文件的命令。&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;各个操作系统安装方法如下：&lt;/p&gt;
&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;&#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;OS X
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    brew install dos2unix
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Debian
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    apt-get install dos2unix 
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Ubuntu
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    apt-get install dos2unix 
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Alpine
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    apk add dos2unix 
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Arch Linux
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    pacman -S dos2unix 
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Kali Linux
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    apt-get install dos2unix 
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;CentOS
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    yum install dos2unix 
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Fedora
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    dnf install dos2unix 
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Windows &lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;WSL2&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    sudo apt-get update sudo apt-get install dos2unix 
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Raspbian
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    apt-get install dos2unix 
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Dockerfile
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    dockerfile.run/dos2unix 
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Docker
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    docker run cmd.cat/dos2unix dos2unix
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;下面以 &lt;a href=&#34;https://learnxinyminutes.com/docs/zh-cn/elisp-cn/&#34;&gt;15分钟学会Emacs Lisp&lt;/a&gt; 教学源文件为例展示效果。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Prometheus 部署 Black Exporter 黑盒监控 DNS-TCP-ICMP</title>
      <link>https://frytea.com/archives/727/</link>
      <pubDate>Sun, 15 Jan 2023 00:27:24 +0000</pubDate>
      <guid>https://frytea.com/archives/727/</guid>
      <description>&lt;p&gt;建议软件包安装，二进制安装请自行解决配置问题，docker安装需考虑网络问题。&lt;/p&gt;
&lt;h2 id=&#34;linux-软件包直接部署&#34;&gt;linux 软件包直接部署&lt;/h2&gt;
&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;&#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;apt install prometheus-blackbox-exporter
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;二进制部署&#34;&gt;二进制部署&lt;/h2&gt;
&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;&#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;# 下载安装&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;wget https://github.com/prometheus/blackbox_exporter/releases/download/v0.23.0/blackbox_exporter-0.23.0.linux-amd64.tar.gz
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;tar -xvf  blackbox_exporter-0.23.0.linux-amd64.tar.gz
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;mv blackbox_exporter-0.23.0.linux-amd64/ /usr/local/blackbox_exporter
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&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;# 创建配置文件&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;cat &amp;gt; /data/black_exporter/black_exporter.yml &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;lt;&amp;lt; EOF
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;modules:
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;  http_2xx:
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;    prober: http
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;    timeout: 20s
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;    http:
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;      preferred_ip_protocol: &amp;#34;ip4&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;  http_post_2xx_query:
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;    prober: http
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;    timeout: 20s
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;    http:
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;      preferred_ip_protocol: &amp;#34;ip4&amp;#34; ##使用ipv4
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;      method: POST
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;      headers:
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;        Content-Type: application/json ##header头
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;      body: &amp;#39;{&amp;#34;hmac&amp;#34;:&amp;#34;&amp;#34;,&amp;#34;params&amp;#34;:{&amp;#34;publicFundsKeyWords&amp;#34;:&amp;#34;xxx&amp;#34;}}&amp;#39; ##传参
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;  tls_connect_tls:
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;    prober: tcp
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;    timeout: 5s
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;    tcp:
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;      tls: true
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;  tcp_connect:
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;    prober: tcp
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;    timeout: 5s
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt; #
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;  pop3s_banner:
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;    prober: tcp
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;    tcp:
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;      query_response:
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;      - expect: &amp;#34;^+OK&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;      tls: true
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;      tls_config:
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;        insecure_skip_verify: false
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;  ssh_banner:
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;    prober: tcp
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;    tcp:
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;      query_response:
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;      - expect: &amp;#34;^SSH-2.0-&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;  irc_banner:
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;    prober: tcp
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;    tcp:
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;      query_response:
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;      - send: &amp;#34;NICK prober&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;      - send: &amp;#34;USER prober prober prober :prober&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;      - expect: &amp;#34;PING :([^ ]+)&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;        send: &amp;#34;PONG ${1}&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;      - expect: &amp;#34;^:[^ ]+ 001&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;  icmp:
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;    prober: icmp
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;    timeout: 20s
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;EOF&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&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;# 配置systemd&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;cat &amp;gt; /etc/systemd/system/blackbox_exporter.service &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;lt;&amp;lt;EOF
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;[Unit]
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;Description=blackbox_exporter
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;Documentation=https://prometheus.io/
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;After=network.target
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;[Service]
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;Type=simple
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;User=prometheus
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;ExecStart=/usr/local/bin/blackbox_exporter  --config.file=/data/blackbox-exporter/black-exporter.yml
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;Restart=on-failure
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;[Install]
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;WantedBy=multi-user.target
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;EOF&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&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;# 启动服务&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;systemctl enable blackbox_exporter.service 
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;systemctl start blackbox_exporter.service 
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;systemctl status blackbox_exporter.service 
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;docker-部署&#34;&gt;Docker 部署&lt;/h2&gt;
&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;&#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;docker run --rm &lt;span style=&#34;color:#ae81ff&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;&lt;/span&gt;  -p 9115/tcp &lt;span style=&#34;color:#ae81ff&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;&lt;/span&gt;  --name blackbox_exporter &lt;span style=&#34;color:#ae81ff&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;&lt;/span&gt;  -v &lt;span style=&#34;color:#66d9ef&#34;&gt;$(&lt;/span&gt;pwd&lt;span style=&#34;color:#66d9ef&#34;&gt;)&lt;/span&gt;:/config &lt;span style=&#34;color:#ae81ff&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;&lt;/span&gt;  quay.io/prometheus/blackbox-exporter:latest --config.file&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;/config/blackbox.yml
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&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;# 创建配置文件&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;cat &amp;gt; /data/docker/blackbox-exporter/black-exporter.yml &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;lt;&amp;lt; EOF
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;modules:
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;  http_2xx:
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;    prober: http
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;    timeout: 20s
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;    http:
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;      preferred_ip_protocol: &amp;#34;ip4&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;  http_post_2xx_query:
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;    prober: http
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;    timeout: 20s
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;    http:
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;      preferred_ip_protocol: &amp;#34;ip4&amp;#34; ##使用ipv4
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;      method: POST
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;      headers:
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;        Content-Type: application/json ##header头
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;      body: &amp;#39;{&amp;#34;hmac&amp;#34;:&amp;#34;&amp;#34;,&amp;#34;params&amp;#34;:{&amp;#34;publicFundsKeyWords&amp;#34;:&amp;#34;xxx&amp;#34;}}&amp;#39; ##传参
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;  tls_connect_tls:
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;    prober: tcp
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;    timeout: 5s
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;    tcp:
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;      tls: true
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;  tcp_connect:
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;    prober: tcp
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;    timeout: 5s
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt; #
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;  pop3s_banner:
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;    prober: tcp
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;    tcp:
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;      query_response:
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;      - expect: &amp;#34;^+OK&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;      tls: true
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;      tls_config:
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;        insecure_skip_verify: false
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;  ssh_banner:
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;    prober: tcp
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;    tcp:
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;      query_response:
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;      - expect: &amp;#34;^SSH-2.0-&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;  irc_banner:
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;    prober: tcp
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;    tcp:
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;      query_response:
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;      - send: &amp;#34;NICK prober&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;      - send: &amp;#34;USER prober prober prober :prober&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;      - expect: &amp;#34;PING :([^ ]+)&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;        send: &amp;#34;PONG ${1}&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;      - expect: &amp;#34;^:[^ ]+ 001&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;  icmp:
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;    prober: icmp
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;    timeout: 20s
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;EOF&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;docker run -d &lt;span style=&#34;color:#ae81ff&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;&lt;/span&gt;  --net myDefault &lt;span style=&#34;color:#ae81ff&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;&lt;/span&gt;  --restart always &lt;span style=&#34;color:#ae81ff&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;&lt;/span&gt;  -p 9115:9115/tcp &lt;span style=&#34;color:#ae81ff&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;&lt;/span&gt;  --name blackbox-exporter &lt;span style=&#34;color:#ae81ff&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;&lt;/span&gt;  -v /data/docker/blackbox-exporter:/config &lt;span style=&#34;color:#ae81ff&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;&lt;/span&gt;  songtianlun/blackbox-exporter:v0.23.0 --config.file&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;/config/black-exporter.yml
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;测试使用&#34;&gt;测试使用&lt;/h2&gt;
&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;&#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;curl http://192.168.5.152:9115/probe?target&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;www.frytea.com&amp;amp;module&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;http_2xx
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;prometeus-使用&#34;&gt;prometeus 使用&lt;/h2&gt;
&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;&#34;&gt;&lt;code class=&#34;language-yaml&#34; data-lang=&#34;yaml&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# https monitor&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  - &lt;span style=&#34;color:#f92672&#34;&gt;job_name&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;hci-https-monitor&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;metrics_path&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;/probe&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;params&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;module&lt;/span&gt;: [&lt;span style=&#34;color:#ae81ff&#34;&gt;tls_connect_tls]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;static_configs&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      - &lt;span style=&#34;color:#f92672&#34;&gt;targets&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        - &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;https://192.168.5.221:8006&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        - &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;https://192.168.5.222:8006&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        - &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;https://192.168.5.187:8006&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;relabel_configs&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      - &lt;span style=&#34;color:#f92672&#34;&gt;source_labels&lt;/span&gt;: [&lt;span style=&#34;color:#ae81ff&#34;&gt;__address__]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#f92672&#34;&gt;target_label&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;__param_target&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      - &lt;span style=&#34;color:#f92672&#34;&gt;source_labels&lt;/span&gt;: [&lt;span style=&#34;color:#ae81ff&#34;&gt;__param_target]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#f92672&#34;&gt;target_label&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;instance&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      - &lt;span style=&#34;color:#f92672&#34;&gt;target_label&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;__address__&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#f92672&#34;&gt;replacement&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;10.19.0.1&lt;/span&gt;:&lt;span style=&#34;color:#ae81ff&#34;&gt;9115&lt;/span&gt;  &lt;span style=&#34;color:#75715e&#34;&gt;# The blackbox exporter&amp;#39;s real hostname:port.&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&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;# http monitor&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  - &lt;span style=&#34;color:#f92672&#34;&gt;job_name&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;hci-http-monitor&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;metrics_path&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;/probe&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;params&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;module&lt;/span&gt;: [&lt;span style=&#34;color:#ae81ff&#34;&gt;http_2xx]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;static_configs&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      - &lt;span style=&#34;color:#f92672&#34;&gt;targets&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        - &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;http://192.168.5.221:3000&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;relabel_configs&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      - &lt;span style=&#34;color:#f92672&#34;&gt;source_labels&lt;/span&gt;: [&lt;span style=&#34;color:#ae81ff&#34;&gt;__address__]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#f92672&#34;&gt;target_label&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;__param_target&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      - &lt;span style=&#34;color:#f92672&#34;&gt;source_labels&lt;/span&gt;: [&lt;span style=&#34;color:#ae81ff&#34;&gt;__param_target]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#f92672&#34;&gt;target_label&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;instance&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      - &lt;span style=&#34;color:#f92672&#34;&gt;target_label&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;__address__&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#f92672&#34;&gt;replacement&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;10.19.0.1&lt;/span&gt;:&lt;span style=&#34;color:#ae81ff&#34;&gt;9115&lt;/span&gt;  &lt;span style=&#34;color:#75715e&#34;&gt;# The blackbox exporter&amp;#39;s real hostname:port.&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&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;# icmp 监控&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  - &lt;span style=&#34;color:#f92672&#34;&gt;job_name&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;hci-icmp-monitor&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;scrape_interval&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;1m&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;metrics_path&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;/probe&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;params&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;module&lt;/span&gt;: [ &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;icmp&amp;#34;&lt;/span&gt; ]
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;static_configs&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      - &lt;span style=&#34;color:#f92672&#34;&gt;targets&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        - &lt;span style=&#34;color:#ae81ff&#34;&gt;192.168.5.254&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        - &lt;span style=&#34;color:#ae81ff&#34;&gt;192.168.5.221&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        - &lt;span style=&#34;color:#ae81ff&#34;&gt;192.168.5.222&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        - &lt;span style=&#34;color:#ae81ff&#34;&gt;192.168.5.187&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;relabel_configs&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      - &lt;span style=&#34;color:#f92672&#34;&gt;source_labels&lt;/span&gt;: [&lt;span style=&#34;color:#ae81ff&#34;&gt;__address__]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#f92672&#34;&gt;target_label&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;__param_target&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      - &lt;span style=&#34;color:#f92672&#34;&gt;source_labels&lt;/span&gt;: [&lt;span style=&#34;color:#ae81ff&#34;&gt;__param_target]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#f92672&#34;&gt;target_label&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;instance&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      - &lt;span style=&#34;color:#f92672&#34;&gt;target_label&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;__address__&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#f92672&#34;&gt;replacement&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;10.19.0.1&lt;/span&gt;:&lt;span style=&#34;color:#ae81ff&#34;&gt;9115&lt;/span&gt;  &lt;span style=&#34;color:#75715e&#34;&gt;# The blackbox exporter&amp;#39;s real hostname:port.&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;blockquote&gt;
&lt;p&gt;Grafana导入Dashboard-ID：7587&lt;/p&gt;</description>
    </item>
    <item>
      <title>Paralles Desktop 修改虚拟机用户密码</title>
      <link>https://frytea.com/archives/726/</link>
      <pubDate>Wed, 11 Jan 2023 02:42:51 +0000</pubDate>
      <guid>https://frytea.com/archives/726/</guid>
      <description>&lt;p&gt;最近在使用 Paralles Desktop 过程中，发现一旦忘记用户密码，是一件挺麻烦的事情。尝试各种方法打不开 grub 启动菜单。&lt;/p&gt;
&lt;p&gt;后来发现可以使用其提供的命令工具修改用户密码，很好用，在此记录：&lt;/p&gt;</description>
    </item>
    <item>
      <title>m1 MacBook 安装 asahi linux 磁盘调整失败解决</title>
      <link>https://frytea.com/archives/725/</link>
      <pubDate>Tue, 10 Jan 2023 13:05:22 +0000</pubDate>
      <guid>https://frytea.com/archives/725/</guid>
      <description>&lt;p&gt;尝试在 MacBook Air m1 安装 asahi linux ，在磁盘分区过程遭遇报错，具体过程没有留下来，是类似这样的报错：&lt;/p&gt;
&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;&#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;error: doc-id tree: record exists &lt;span style=&#34;color:#66d9ef&#34;&gt;for&lt;/span&gt; doc-id 64, file-id &lt;span style=&#34;color:#ae81ff&#34;&gt;9665861&lt;/span&gt; but no inode references this doc-id
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;大致解决是要进恢复模式，之后使用急救程序尝试修复。&lt;/p&gt;</description>
    </item>
    <item>
      <title>一次过年返乡机票的教训，亏了900块</title>
      <link>https://frytea.com/archives/724/</link>
      <pubDate>Mon, 09 Jan 2023 04:40:33 +0000</pubDate>
      <guid>https://frytea.com/archives/724/</guid>
      <description>&lt;p&gt;控制变量，均为直飞+当日价格最优惠前5，
均加购 50 元左右的退改险。&lt;/p&gt;
&lt;p&gt;距离起飞 22 天，花费 3410
距离起飞 9 天，机票花费2510
活活贵了 900 块！&lt;/p&gt;
&lt;p&gt;恰好这几天公司休假时间微调，
于是我选择了退票，
购入了更合适时间的南航机票，
舍去退票费，
居然还能剩下100块，
机票真的很魔幻了。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Linux 使用 chrony 进行 NTP 时间同步及自建方法</title>
      <link>https://frytea.com/archives/721/</link>
      <pubDate>Sun, 08 Jan 2023 10:45:31 +0000</pubDate>
      <guid>https://frytea.com/archives/721/</guid>
      <description>&lt;p&gt;chrony是网络时间协议的实现。它可以替代ntpd，后者是NTP的参考实现。它在类Unix操作系统上运行，并在GNU GPL v2下发布。&lt;/p&gt;
&lt;p&gt;服务端和客户端配置文件都是同一个，分别配置为服务器和客户端即可使用，
配置文件在 &lt;code&gt;/etc/chrony.conf or /etc/chrony/chrony.conf&lt;/code&gt; ，具体看版本，
可以使用 &lt;code&gt;man chrony&lt;/code&gt; 确认一下。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Linux 删除 LVM 步骤</title>
      <link>https://frytea.com/archives/723/</link>
      <pubDate>Sat, 07 Jan 2023 11:55:57 +0000</pubDate>
      <guid>https://frytea.com/archives/723/</guid>
      <description>&lt;p&gt;以下为删除 LVM 步骤，需要按照顺序执行：&lt;/p&gt;
&lt;h2 id=&#34;step1-卸载文件系统&#34;&gt;Step1. 卸载文件系统&lt;/h2&gt;
&lt;p&gt;卸载 LV 上的文件系统。&lt;/p&gt;
&lt;p&gt;a.执行命令 &lt;code&gt;mount –l&lt;/code&gt; 命令查看目前LV挂载到本地的目录。
b. 执行 &lt;code&gt;umount&lt;/code&gt; 挂载的目录卸载挂载在LV上的文件系统。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Linux 禁用 SWAP</title>
      <link>https://frytea.com/archives/722/</link>
      <pubDate>Fri, 06 Jan 2023 00:37:44 +0000</pubDate>
      <guid>https://frytea.com/archives/722/</guid>
      <description>&lt;p&gt;在服务器和容器平台建议关闭 SWAP，避免内存交换影响服务器性能，甚至引发数据丢失。&lt;/p&gt;
&lt;p&gt;一、不重启电脑，禁用启用swap，立刻生效&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;# 禁用命令

sudo swapoff -a

# 启用命令

sudo swapon -a

# 查看交换分区的状态
&lt;/code&gt;&lt;/pre&gt;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;sudo free -m
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;二、重新启动电脑，永久禁用Swap&lt;/p&gt;</description>
    </item>
    <item>
      <title>pkg-config 自动补全 C 编译库依赖</title>
      <link>https://frytea.com/archives/719/</link>
      <pubDate>Thu, 05 Jan 2023 00:43:52 +0000</pubDate>
      <guid>https://frytea.com/archives/719/</guid>
      <description>&lt;p&gt;pkg-config 是一个在源代码编译时查询已安装的库的使用接口的计算机工具软件。&lt;/p&gt;
&lt;h2 id=&#34;工作原理&#34;&gt;工作原理&lt;/h2&gt;
&lt;p&gt;其工作原理如下：
当安装一个库时（例如从&lt;a href=&#34;https://zh.wikipedia.org/wiki/RPM%E5%A5%97%E4%BB%B6%E7%AE%A1%E7%90%86%E5%93%A1&#34; title=&#34;RPM套件管理员&#34;&gt;RPM&lt;/a&gt;，&lt;a href=&#34;https://zh.wikipedia.org/wiki/Deb&#34; title=&#34;Deb&#34;&gt;deb&lt;/a&gt;或其他二进制包管理系统），会包括一个后缀名为 &lt;code&gt;pc&lt;/code&gt; 的文件，它会放入某个文件夹下（依赖于你的系统设置）。
例如，在 &lt;code&gt;Linux&lt;/code&gt; 为该软件的库文件所在文件夹 &lt;code&gt;lib&lt;/code&gt; 之下的子文件夹 &lt;code&gt;pkgconfig&lt;/code&gt; 。
并把该子文件夹加入 &lt;code&gt;pkg-config&lt;/code&gt; 的环境变量 &lt;code&gt;PKG_CONFIG_PATH&lt;/code&gt; 作为搜索路径，例如在 &lt;code&gt;bash&lt;/code&gt; 配置文件中加入一行：&lt;/p&gt;</description>
    </item>
    <item>
      <title>在 linux 中解析 lib 文件</title>
      <link>https://frytea.com/archives/720/</link>
      <pubDate>Wed, 04 Jan 2023 00:23:51 +0000</pubDate>
      <guid>https://frytea.com/archives/720/</guid>
      <description>&lt;p&gt;解析 lib 文件可以获取一些二进制库的版本历史信息，例如解析 &lt;code&gt;/usr/lib64/libc.so.6&lt;/code&gt; 即可解析到 glibc 的版本历史。&lt;/p&gt;
&lt;p&gt;在Linux中，有许多工具可以用来解析库文件（ &lt;code&gt;.lib&lt;/code&gt; 文件）。 可以使用工具如 &lt;code&gt;nm&lt;/code&gt; ， &lt;code&gt;objdump&lt;/code&gt;  和 &lt;code&gt;readelf&lt;/code&gt; 来查看库文件的符号表，包含在库文件中的对象文件的信息，以及库文件的其他信息。&lt;/p&gt;</description>
    </item>
    <item>
      <title>新冠恢复一部份后的感受</title>
      <link>https://frytea.com/archives/718/</link>
      <pubDate>Tue, 03 Jan 2023 00:43:54 +0000</pubDate>
      <guid>https://frytea.com/archives/718/</guid>
      <description>&lt;p&gt;距离感染新冠今天是第八天了，
终于感觉身体恢复了很多，
趁着温柔的午后阳光，
走到楼下的小店点了一份煲仔饭。&lt;/p&gt;
&lt;p&gt;看着外面的一切，
这个世界在我眼前前所未有的清晰，
街道上热热闹闹，
仿佛又回到了那个热闹的时代，
一切都在恢复着生机。&lt;/p&gt;</description>
    </item>
    <item>
      <title>2022 年博客经营报告</title>
      <link>https://frytea.com/archives/717/</link>
      <pubDate>Mon, 02 Jan 2023 06:07:00 +0000</pubDate>
      <guid>https://frytea.com/archives/717/</guid>
      <description>&lt;p&gt;过去一年中，个人网站策略做了简单的调整。&lt;/p&gt;
&lt;p&gt;大概从去年开始，打算全面使用静态网站了，
使用 hugo 建立了个人主页，本打算替换掉博客，
将当时大部分的文章都迁移到了 hugo 制作的 &lt;code&gt;www&lt;/code&gt; 打头的&lt;a href=&#34;https://www.frytea.com&#34;&gt;个人主页&lt;/a&gt;，
这样的网页很快，很轻，很容易定制，
当时也在定制博客方面收获了很多的成就感。&lt;/p&gt;</description>
    </item>
    <item>
      <title>2022 年终 - 欢呼</title>
      <link>https://frytea.com/archives/1118/</link>
      <pubDate>Sun, 01 Jan 2023 14:54:00 +0000</pubDate>
      <guid>https://frytea.com/archives/1118/</guid>
      <description>&lt;p&gt;时间过的可真快，2022 马上结束，在这跨年之际，简单回顾一下这一年特别的事。前情提要 2022 年&lt;/p&gt;</description>
    </item>
    <item>
      <title>《任正非传》</title>
      <link>https://frytea.com/archives/1064/</link>
      <pubDate>Sat, 31 Dec 2022 18:16:05 +0000</pubDate>
      <guid>https://frytea.com/archives/1064/</guid>
      <description>&lt;p&gt;任正非传 孙力科 36个笔记 ◆ 第一章 谁是任正非？ 出生在贵州安顺地区镇宁县的任正非，祖籍便在浙&lt;/p&gt;</description>
    </item>
    <item>
      <title>[摘录]《任正非传》 - 孙力科</title>
      <link>https://frytea.com/archives/706/</link>
      <pubDate>Sat, 31 Dec 2022 10:16:05 +0000</pubDate>
      <guid>https://frytea.com/archives/706/</guid>
      <description>&lt;p&gt;任正非传
孙力科
36个笔记&lt;/p&gt;
&lt;p&gt;◆ 第一章 谁是任正非？&lt;/p&gt;
&lt;blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;出生在贵州安顺地区镇宁县的任正非，祖籍便在浙江金华。&lt;/p&gt;&lt;/blockquote&gt;&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;任摩逊希望自己的儿子在以后的人生中能明辨是非，成为一个对社会有价值的人。“任正非”的名字，也就这样落定了。任摩逊和程远昭夫妻俩一共&lt;/p&gt;</description>
    </item>
    <item>
      <title>《人人都懂设计模式：从生活中领悟设计模式（Python实现） 》 - 罗伟富</title>
      <link>https://frytea.com/archives/1063/</link>
      <pubDate>Fri, 30 Dec 2022 19:56:59 +0000</pubDate>
      <guid>https://frytea.com/archives/1063/</guid>
      <description>&lt;p&gt;人人都懂设计模式：从生活中领悟设计模式（Python实现） 罗伟富 64个笔记 ◆ 基础篇 类图用于&lt;/p&gt;</description>
    </item>
    <item>
      <title>[摘录]《人人都懂设计模式：从生活中领悟设计模式（Python实现） 》 - 罗伟富</title>
      <link>https://frytea.com/archives/700/</link>
      <pubDate>Fri, 30 Dec 2022 11:56:59 +0000</pubDate>
      <guid>https://frytea.com/archives/700/</guid>
      <description>&lt;p&gt;人人都懂设计模式：从生活中领悟设计模式（Python实现）
罗伟富
64个笔记&lt;/p&gt;
&lt;p&gt;◆ 基础篇&lt;/p&gt;
&lt;blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;类图用于表示不同的实体（人、事物和数据），以及它们彼此之间的关系。该图描述了系统中对象的类型以及它们之间存在的各种静态关系，是一切面向对象方法的核心建模工具。&lt;/p&gt;</description>
    </item>
    <item>
      <title>《大型网站技术架构》 - 李智慧</title>
      <link>https://frytea.com/archives/1074/</link>
      <pubDate>Wed, 28 Dec 2022 10:36:08 +0000</pubDate>
      <guid>https://frytea.com/archives/1074/</guid>
      <description>&lt;p&gt;大型网站技术架构 李智慧 95个笔记 ◆ 第1篇 概述 网站访问特点和现实世界的财富分配一样遵循二八&lt;/p&gt;</description>
    </item>
    <item>
      <title>[摘录]《大型网站技术架构》 - 李智慧</title>
      <link>https://frytea.com/archives/702/</link>
      <pubDate>Wed, 28 Dec 2022 02:36:08 +0000</pubDate>
      <guid>https://frytea.com/archives/702/</guid>
      <description>&lt;p&gt;大型网站技术架构
李智慧
95个笔记&lt;/p&gt;
&lt;p&gt;◆ 第1篇 概述&lt;/p&gt;
&lt;blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;网站访问特点和现实世界的财富分配一样遵循二八定律：80%的业务访问集中在20%的数据上。&lt;/p&gt;&lt;/blockquote&gt;&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;网站使用的缓存可以分为两种：缓存在应用服务器上的本地缓存和缓存在专门的分布式缓存服务器上的远程缓存。&lt;/p&gt;</description>
    </item>
    <item>
      <title>《刘强东：人到绝境是重生》 - 黄鸿涯</title>
      <link>https://frytea.com/archives/1078/</link>
      <pubDate>Tue, 27 Dec 2022 20:15:28 +0000</pubDate>
      <guid>https://frytea.com/archives/1078/</guid>
      <description>&lt;p&gt;刘强东：人到绝境是重生 黄鸿涯 48个笔记 ◆ 第一章 停止绝望，人是第一生产力 但刘强东却认为一个&lt;/p&gt;</description>
    </item>
    <item>
      <title>[摘录]《刘强东：人到绝境是重生》 - 黄鸿涯</title>
      <link>https://frytea.com/archives/705/</link>
      <pubDate>Tue, 27 Dec 2022 12:15:28 +0000</pubDate>
      <guid>https://frytea.com/archives/705/</guid>
      <description>&lt;p&gt;刘强东：人到绝境是重生
黄鸿涯
48个笔记&lt;/p&gt;
&lt;p&gt;◆ 第一章 停止绝望，人是第一生产力&lt;/p&gt;
&lt;blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;但刘强东却认为一个公司的核心能力是有限的，京东一定要将有限的资源集中到一处才能获得竞争力。&lt;/p&gt;</description>
    </item>
    <item>
      <title>《让你的时间更有价值：空闲时间就是你的未来财富（独家定制版） 》 - 张萌</title>
      <link>https://frytea.com/archives/1050/</link>
      <pubDate>Mon, 26 Dec 2022 08:09:37 +0000</pubDate>
      <guid>https://frytea.com/archives/1050/</guid>
      <description>&lt;p&gt;让你的时间更有价值：空闲时间就是你的未来财富（独家定制版） 张萌 51个笔记 ◆ 前言PREFACE&lt;/p&gt;</description>
    </item>
    <item>
      <title>《加速：从拖延到高效，过三倍速度人生》- 张萌</title>
      <link>https://frytea.com/archives/1054/</link>
      <pubDate>Mon, 26 Dec 2022 08:09:04 +0000</pubDate>
      <guid>https://frytea.com/archives/1054/</guid>
      <description>&lt;p&gt;加速：从拖延到高效，过三倍速度人生 张萌 104个笔记 ◆ 序 从现在起，过有准备的人生 2017年&lt;/p&gt;</description>
    </item>
    <item>
      <title>[摘录]《让你的时间更有价值：空闲时间就是你的未来财富（独家定制版） 》 - 张萌</title>
      <link>https://frytea.com/archives/704/</link>
      <pubDate>Mon, 26 Dec 2022 00:09:37 +0000</pubDate>
      <guid>https://frytea.com/archives/704/</guid>
      <description>&lt;p&gt;让你的时间更有价值：空闲时间就是你的未来财富（独家定制版）
张萌
51个笔记&lt;/p&gt;
&lt;p&gt;◆ 前言PREFACE 你的人生可以逆袭&lt;/p&gt;
&lt;blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;“你的人生可以逆袭。”这是我想说的第一句话，也是本书的核心内容。&lt;/p&gt;</description>
    </item>
    <item>
      <title>[摘录]《加速：从拖延到高效，过三倍速度人生》- 张萌</title>
      <link>https://frytea.com/archives/698/</link>
      <pubDate>Mon, 26 Dec 2022 00:09:04 +0000</pubDate>
      <guid>https://frytea.com/archives/698/</guid>
      <description>&lt;p&gt;加速：从拖延到高效，过三倍速度人生
张萌
104个笔记&lt;/p&gt;
&lt;p&gt;◆ 序 从现在起，过有准备的人生&lt;/p&gt;
&lt;blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;2017年是我的改变之年。工作无比繁忙，全年总睡眠不足1500小时。幸好我饮食很合理，严格按照营养比例进食。2017年我一直坚持锻炼身体，很少生病，整日容光焕发，很多人说我看起来就像刚刚毕业的大学生甚至高中生。&lt;/p&gt;</description>
    </item>
    <item>
      <title>《写作是最好的自我投资》 - Spenser</title>
      <link>https://frytea.com/archives/1077/</link>
      <pubDate>Sat, 24 Dec 2022 12:32:42 +0000</pubDate>
      <guid>https://frytea.com/archives/1077/</guid>
      <description>&lt;p&gt;写作是最好的自我投资 Spenser 36个笔记 ◆ 自序 没有写作，我可能要多奋斗十年 第一，写作&lt;/p&gt;</description>
    </item>
    <item>
      <title>从 Windows 迭代看为什么要用 Linux</title>
      <link>https://frytea.com/archives/1277/</link>
      <pubDate>Sat, 24 Dec 2022 10:59:00 +0000</pubDate>
      <guid>https://frytea.com/archives/1277/</guid>
      <description>&lt;p&gt;Windows 的待机问题、兼容问题，已经总是被人诟病的“监控”问题，促使我不断探索除 Window&lt;/p&gt;</description>
    </item>
    <item>
      <title>《Linux系统命令及Shell脚本实践指南》 - 王军</title>
      <link>https://frytea.com/archives/1065/</link>
      <pubDate>Sat, 24 Dec 2022 10:45:00 +0000</pubDate>
      <guid>https://frytea.com/archives/1065/</guid>
      <description>&lt;p&gt;Linux 系统命令及 Shell 脚本实践指南 王军 415 个笔记 ◆ 点评 认为好看 此前一些&lt;/p&gt;</description>
    </item>
    <item>
      <title>圣诞节怎么过？看看历年圣诞节怎么过就知道了</title>
      <link>https://frytea.com/archives/715/</link>
      <pubDate>Sat, 24 Dec 2022 09:31:00 +0000</pubDate>
      <guid>https://frytea.com/archives/715/</guid>
      <description>&lt;p&gt;每当过节这天，即使没有过这个节日的习惯，也总想着要做些什么。&lt;/p&gt;
&lt;p&gt;怎么知道自己有没有过这个节日的习惯呢。&lt;/p&gt;
&lt;p&gt;翻看一下自己的历史相册或是日记就知道了。&lt;/p&gt;
&lt;p&gt;翻了一下相册，看看我每年的 12月23，24日都在干什么。&lt;/p&gt;</description>
    </item>
    <item>
      <title>[摘录]《写作是最好的自我投资》 - Spenser</title>
      <link>https://frytea.com/archives/703/</link>
      <pubDate>Sat, 24 Dec 2022 04:32:42 +0000</pubDate>
      <guid>https://frytea.com/archives/703/</guid>
      <description>&lt;p&gt;写作是最好的自我投资
Spenser
36个笔记&lt;/p&gt;
&lt;p&gt;◆ 自序 没有写作，我可能要多奋斗十年&lt;/p&gt;
&lt;blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;第一，写作是利用碎片化时间最好的方式。&lt;/p&gt;&lt;/blockquote&gt;&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;你花两个小时看电影、看综艺、刷抖音，和花两个小时写一篇文章，结果是有本质区别的。前者是你在消费别人创造的产品，你是被接受、被喂养的姿态；而写作，是你在创造一个属于你自己的作品，你是创造者、供养者，写作是思想和灵魂的绽放，与前者完全不一样。&lt;/p&gt;</description>
    </item>
    <item>
      <title>从 Windows 迭代看为什么要用 Linux </title>
      <link>https://frytea.com/archives/714/</link>
      <pubDate>Sat, 24 Dec 2022 02:59:00 +0000</pubDate>
      <guid>https://frytea.com/archives/714/</guid>
      <description>&lt;p&gt;Windows 的待机问题、兼容问题，已经总是被人诟病的“监控”问题，促使我不断探索除 Windows 的操作系统，最近已经将 Linux Mint 作为自己工作的主要系统。&lt;/p&gt;
&lt;p&gt;至于 Windows 的问题，下面这张图个人认为总结的很好。&lt;/p&gt;</description>
    </item>
    <item>
      <title>失眠，整理如何对抗焦虑</title>
      <link>https://frytea.com/archives/710/</link>
      <pubDate>Sat, 24 Dec 2022 02:46:18 +0000</pubDate>
      <guid>https://frytea.com/archives/710/</guid>
      <description>&lt;p&gt;最近的几件事情再次让内心焦虑感上升到一个巅峰。&lt;/p&gt;
&lt;p&gt;工作日心里抱怨睡不够，休息日可以好好睡，结果直接就失眠了，对于这件事应该不需要诧异，就像是吃饭一样稀疏平常。&lt;/p&gt;</description>
    </item>
    <item>
      <title>[摘录]《Linux系统命令及Shell脚本实践指南》 - 王军</title>
      <link>https://frytea.com/archives/699/</link>
      <pubDate>Sat, 24 Dec 2022 02:45:00 +0000</pubDate>
      <guid>https://frytea.com/archives/699/</guid>
      <description>&lt;p&gt;Linux 系统命令及 Shell 脚本实践指南
王军
415 个笔记&lt;/p&gt;
&lt;p&gt;◆ 点评&lt;/p&gt;
&lt;p&gt;认为好看
此前一些似懂非懂的概念，经常使用却总感觉不得法的工具和系统特性，终于在这本书中系统性地找到了答案。&lt;/p&gt;</description>
    </item>
    <item>
      <title>《Ceph分布式存储实战》 - Ceph中国社区</title>
      <link>https://frytea.com/archives/1045/</link>
      <pubDate>Thu, 22 Dec 2022 08:59:58 +0000</pubDate>
      <guid>https://frytea.com/archives/1045/</guid>
      <description>&lt;p&gt;Ceph分布式存储实战 Ceph中国社区 135个笔记 ◆ 本书赞誉 Ceph的CRUSH算法引擎，&lt;/p&gt;</description>
    </item>
    <item>
      <title>[摘录]《Ceph分布式存储实战》 - Ceph中国社区</title>
      <link>https://frytea.com/archives/701/</link>
      <pubDate>Thu, 22 Dec 2022 00:59:58 +0000</pubDate>
      <guid>https://frytea.com/archives/701/</guid>
      <description>&lt;p&gt;Ceph分布式存储实战
Ceph中国社区
135个笔记&lt;/p&gt;
&lt;p&gt;◆ 本书赞誉&lt;/p&gt;
&lt;blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;Ceph的CRUSH算法引擎，聪明地解决了数据分布效率问题&lt;/p&gt;&lt;/blockquote&gt;&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;开源系统是Linux的世界，开源管理平台是OpenStack的世界，开源存储是Ceph的世界。&lt;/p&gt;</description>
    </item>
    <item>
      <title>《梁永安：阅读、游历和爱情》</title>
      <link>https://frytea.com/archives/1076/</link>
      <pubDate>Wed, 21 Dec 2022 09:14:56 +0000</pubDate>
      <guid>https://frytea.com/archives/1076/</guid>
      <description>&lt;p&gt;梁永安：阅读、游历和爱情 梁永安 70个笔记 ◆ 谈自我 如何衡量自我价值？其实很简单：每天都反思一&lt;/p&gt;</description>
    </item>
    <item>
      <title>[摘录]《梁永安：阅读、游历和爱情》</title>
      <link>https://frytea.com/archives/697/</link>
      <pubDate>Wed, 21 Dec 2022 01:14:56 +0000</pubDate>
      <guid>https://frytea.com/archives/697/</guid>
      <description>&lt;p&gt;梁永安：阅读、游历和爱情
梁永安
70个笔记&lt;/p&gt;
&lt;p&gt;◆ 谈自我&lt;/p&gt;
&lt;blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;如何衡量自我价值？其实很简单：每天都反思一下自己，看看在知识上有没有增加？文化视野的宽度有没有扩大？情感的含量有没有更加丰富？行动性有没有增强？&lt;/p&gt;</description>
    </item>
    <item>
      <title>《聪明人都下笨功夫 愚蠢人只想走捷径》 - 夏文芳</title>
      <link>https://frytea.com/archives/1073/</link>
      <pubDate>Tue, 20 Dec 2022 09:25:53 +0000</pubDate>
      <guid>https://frytea.com/archives/1073/</guid>
      <description>&lt;p&gt;聪明人都下笨功夫 愚蠢人只想走捷径 夏文芳 61个笔记 ◆ 01 聪明没有护城河 想成功，就得在别人&lt;/p&gt;</description>
    </item>
    <item>
      <title>[摘录]《聪明人都下笨功夫 愚蠢人只想走捷径》 - 夏文芳</title>
      <link>https://frytea.com/archives/696/</link>
      <pubDate>Tue, 20 Dec 2022 01:25:53 +0000</pubDate>
      <guid>https://frytea.com/archives/696/</guid>
      <description>&lt;p&gt;聪明人都下笨功夫 愚蠢人只想走捷径
夏文芳
61个笔记&lt;/p&gt;
&lt;p&gt;◆ 01 聪明没有护城河&lt;/p&gt;
&lt;blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;想成功，就得在别人工作的时候你拼命工作，别人不工作的时候你还在拼命工作。&lt;/p&gt;&lt;/blockquote&gt;&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;胡润研究院发布的《2015至尚优品—中国千万富豪品牌倾向报告》显示，富豪平均工作日睡眠6.6个小时，三成亿万富豪工作日睡眠不足6个小时。&lt;/p&gt;</description>
    </item>
    <item>
      <title>[转] 疫情开放后的一次医患对话</title>
      <link>https://frytea.com/archives/707/</link>
      <pubDate>Sun, 18 Dec 2022 01:30:00 +0000</pubDate>
      <guid>https://frytea.com/archives/707/</guid>
      <description>&lt;p&gt;患者：医生，我想做抗原
医生：你哪不舒服？
患者：没有不舒服
医生：那为什么要做抗原呢？
患者：我想知道我得没得新冠
医生：抗原有假阳性、假阴性，做了也确定不了呀！也就是说两道杠也不一定100％就是阳性，一道杠也不一定100％就是阴性。
患者：那怎么办呢？
医生：做核酸
患者：多少钱
医生：16元
患者：做了要是阳了，我该怎么办呢？
医生：没症状就不用吃药，多喝白开水；轻微症状也可不吃药，多喝白开水，注意休息，出门戴好口罩就行;症状明显的对症治疗，和治疗感冒一样。
患者：做了如果是阴，我得怎么办？
医生：阴性，出门戴好口罩，做好个人防护就行。
患者：医生我没任何症状，那我需要做核酸不需要？
医生：如果阳了，你害怕不害怕？
患者：当然害怕了，我会吃不下饭的，想想晚上睡觉也睡不好
医生：那你做什么？花16元买了害怕，买个睡不着觉吗？
患者：那不做行不？
医生：没人非得让你做，坐飞机、高铁，去景区等等都不需要核酸证明了，去国外更没人要了，那你做啥？
患者：那我不做了，天天带好口罩就行。
医生：是的，阳也好，阴也好，都是对症治疗，无症状就不用服药，不用治疗。你为何非得弄清自己是阴是阳呢？
患者：医生，那我买点什么药放家里备着呢？
医生：到处都是药店、诊所，不用备药，有症状可以随时买！90％都是无症状，不用吃药。即使你得住了，你不吃药的概率是90％，你又何必花钱买药呢？药也有保质期，用不上再放过期，何况是药三分毒，能不吃药最好不吃。
患者：这下我算彻底明白了，做核酸、查抗原我是花钱找不自在，没病买药囤药是有钱没处花了，谢谢您医生！
医生：唉！现在的很多人也不知道是精明，也不知道是愚味！&lt;/p&gt;</description>
    </item>
    <item>
      <title>《GitHub入门与实践》 - 大塚弘记</title>
      <link>https://frytea.com/archives/1066/</link>
      <pubDate>Sat, 17 Dec 2022 11:02:13 +0000</pubDate>
      <guid>https://frytea.com/archives/1066/</guid>
      <description>&lt;p&gt;GitHub入门与实践 大塚弘记 13个笔记 ◆ 第1章 欢迎来到GitHub的世界 GitHub公&lt;/p&gt;</description>
    </item>
    <item>
      <title>《发布！设计与部署稳定的分布式系统（第2版）》- 迈克尔·尼加德</title>
      <link>https://frytea.com/archives/1067/</link>
      <pubDate>Sat, 17 Dec 2022 11:01:00 +0000</pubDate>
      <guid>https://frytea.com/archives/1067/</guid>
      <description>&lt;p&gt;发布！设计与部署稳定的分布式系统（第2版） 迈克尔·尼加德 16个笔记 ◆ 译者序 因为很多开发人员&lt;/p&gt;</description>
    </item>
    <item>
      <title>[摘录]《GitHub入门与实践 - 大塚弘记》</title>
      <link>https://frytea.com/archives/694/</link>
      <pubDate>Sat, 17 Dec 2022 03:02:13 +0000</pubDate>
      <guid>https://frytea.com/archives/694/</guid>
      <description>&lt;p&gt;GitHub入门与实践
大塚弘记
13个笔记&lt;/p&gt;
&lt;p&gt;◆ 第1章 欢迎来到GitHub的世界&lt;/p&gt;
&lt;blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;GitHub公司总部位于美国旧金山，拥有一只不知是章鱼还是猫的吉祥物octocat（图1.1）。&lt;/p&gt;</description>
    </item>
    <item>
      <title>[摘录]《发布！设计与部署稳定的分布式系统（第2版） - 迈克尔·尼加德》</title>
      <link>https://frytea.com/archives/693/</link>
      <pubDate>Sat, 17 Dec 2022 03:01:00 +0000</pubDate>
      <guid>https://frytea.com/archives/693/</guid>
      <description>&lt;p&gt;发布！设计与部署稳定的分布式系统（第2版）
迈克尔·尼加德
16个笔记&lt;/p&gt;
&lt;p&gt;◆ 译者序&lt;/p&gt;
&lt;blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;因为很多开发人员在考虑分布式系统稳定性的设计时，会假设生产环境处于产品运行最理想的状态，且用户的行为是理智、可预见的。&lt;/p&gt;</description>
    </item>
    <item>
      <title>《微信小程序开发入门与实践》 - 雷磊</title>
      <link>https://frytea.com/archives/1056/</link>
      <pubDate>Fri, 16 Dec 2022 20:21:00 +0000</pubDate>
      <guid>https://frytea.com/archives/1056/</guid>
      <description>&lt;p&gt;微信小程序开发入门与实践 雷磊 53个笔记 ◆ 前 言 小程序中没有DOM，请放弃“首先获取DOM，&lt;/p&gt;</description>
    </item>
    <item>
      <title>阿里云域名续费优惠口令（com和cn续费优惠）- 2022</title>
      <link>https://frytea.com/archives/689/</link>
      <pubDate>Fri, 16 Dec 2022 12:28:00 +0000</pubDate>
      <guid>https://frytea.com/archives/689/</guid>
      <description>&lt;p&gt;购买/续费云产品之前，找找优惠码是一个好习惯。&lt;/p&gt;
&lt;p&gt;最近续费自己的 .com 域名，发现官方提供了优惠码，可以便宜一些。&lt;/p&gt;
&lt;p&gt;获取方法是： &lt;code&gt;关注公众号“阿里云企航”，在输入框中输入“优惠口令”，即可自动回复当前最新可用的优惠口令&lt;/code&gt; ，下面是我在2022年12月获取到的。&lt;/p&gt;</description>
    </item>
    <item>
      <title>[摘录]《微信小程序开发入门与实践》 - 雷磊</title>
      <link>https://frytea.com/archives/679/</link>
      <pubDate>Fri, 16 Dec 2022 12:21:00 +0000</pubDate>
      <guid>https://frytea.com/archives/679/</guid>
      <description>&lt;p&gt;微信小程序开发入门与实践
雷磊
53个笔记&lt;/p&gt;
&lt;p&gt;◆ 前 言&lt;/p&gt;
&lt;blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;小程序中没有DOM，请放弃“首先获取DOM，再操作DOM”的思维&lt;/p&gt;&lt;/blockquote&gt;&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;替代DOM操作的方法是“数据绑定”。控制组件显示隐藏、切换CSS样式、控制滚动条，这些很容易用DOM思维思考常见功能在小程序中都是通过“数据绑定”实现的&lt;/p&gt;</description>
    </item>
    <item>
      <title>[今日一梗] 体验一下用语言让人窒息的感觉</title>
      <link>https://frytea.com/archives/691/</link>
      <pubDate>Fri, 16 Dec 2022 05:04:00 +0000</pubDate>
      <guid>https://frytea.com/archives/691/</guid>
      <description>&lt;h2 id=&#34;一个听不懂基础对话逻辑的酒店前台&#34;&gt;一个听不懂基础对话逻辑的酒店前台&lt;/h2&gt;
&lt;p&gt;她告诉我们：酒店前台不负责收快递，你们的快递别丢在这里，外边就有菜鸟驿站。不然快递丢了我们负不起责任。
我们：好的，我们知道了。
快递：我给你们放到酒店前台了，记得去拿一下。
我：酒店前台不是不收快递吗？你别放那里，放驿站吧。
快递：可我已经放了，都走远了，你们去拿一下吧，谢谢啊。
（挂）
我去拿快递。
酒店前台：跟你们说了很多次了，前台不收快递！怎么还放在这？
我：我知道，不是我放的，是快递员硬要放在这的，他人已经走远了，对不住啊。
（一般事情到这就结束了对吧？）
酒店前台：可是我们前台不收快递，你放在这是不合规矩的。
我：？？？是快递员放在这的，我说了他不听。
前台：再跟你说一遍，我们酒店前台不收快递。
（周围人看过来了）
我：我再说一遍，是快递员自己放在这的，不是我要求他放的。
前台：可我们酒店前台没有收快递这个责任，要是东西丢了，我们不负责任。
我：？？？？？？？？？我知道啊，不是我放的啊。
前台：知道你还把快递放在这？丢了我们不管。
我（彻底被惹毛了）：我他妈问你一遍，‘是快递员放的不是我放的’这几个字是有什么超出你母亲给予的畸形小脑所不能理解的词汇量吗？
前台：麻烦你态度好一点，我们酒店前台本来就不能放快递，这是规定。
我：还在快递&amp;hellip;&amp;hellip;——大堂经理的电话是多少？忍不了了。
前台：经理不在。
我：购物小程序有他的电话，还有总经理的电话。
前台：？？？
不知道是哪个经理过来的，反正是个穿西装，经典酒店盘头带工牌的，一来就给我们道歉，说对员工的培训不到位。
我就当场给前台写了一张逻辑思维导图————从对话逻辑开始，来梳理到底是谁没听懂。
结果前台看完思维导图，直接开启阿巴阿巴模式（不是我恶意玩梗，是那个前台真的开始阿巴阿巴了。）
然后前台委屈地说：本来我们这里就不收快递，我只是提醒他们别忘了。
结果大堂经理比我更会看盲点：“既然你这么严格执行规定，那怎么会客人的快递会出现在前台呢？”
前台：？？？？？？？（阿巴阿巴模式又开启了）
她同事赶紧解释：是那个快递员擅自放进来的，应该去问保安啊！
大堂经理：“既然你亲眼看到了是快递员放的，为什么却要一而再再而三地逼迫客人不要把快递放在这？是客人放的吗？不是对吧？”
然后还是那个前台：“那保安他怎么放人&amp;hellip;.。”
大堂经理一下就怒了（本来该我发火的，但我没想到经理冒火了）：“是自己的问题就说自己的问题，不要扯到别人身上去！保安？你怎么不去怪酒店大门？如果是客人不知道，或者客人自己硬要放东西在我们这，我们就说清楚，丢失概不负责！但客人没有这样做，我们的重点是：客人并没有这样做，你却说他做了，明白吗？”
最后我们得了赔偿的免费饮料跟水。
——————至今我都不能理解那前台的杠精逻辑是怎样的，由于当时的经理已经在骂人了，我也没好意思问下去。&lt;/p&gt;</description>
    </item>
    <item>
      <title>查询谷歌账号注册时间方法（2022）</title>
      <link>https://frytea.com/archives/683/</link>
      <pubDate>Fri, 16 Dec 2022 00:35:00 +0000</pubDate>
      <guid>https://frytea.com/archives/683/</guid>
      <description>&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://imagehost-cdn.frytea.com/images/2022/12/16/2022121608379701c465b4803f3b586.png&#34;&gt;&lt;/p&gt;
&lt;p&gt;谷歌查看注册时间 具体方法如下：&lt;/p&gt;
&lt;p&gt;打开“管理您的 Google 帐号”&lt;/p&gt;
&lt;p&gt;打开“数据和隐私设置”&lt;/p&gt;
&lt;p&gt;打开“您使用的应用和服务中的数据”-“下载或删除您的数据”-“下载您的数据”&lt;/p&gt;</description>
    </item>
    <item>
      <title>《OpenResty完全开发指南：构建百万级别并发的Web应用》 - 罗剑锋</title>
      <link>https://frytea.com/archives/1080/</link>
      <pubDate>Thu, 15 Dec 2022 19:20:00 +0000</pubDate>
      <guid>https://frytea.com/archives/1080/</guid>
      <description>&lt;p&gt;OpenResty完全开发指南：构建百万级别并发的Web应用 罗剑锋 131个笔记 ◆ 第1章 总论&lt;/p&gt;</description>
    </item>
    <item>
      <title>[摘录]《OpenResty完全开发指南：构建百万级别并发的Web应用》 - 罗剑锋</title>
      <link>https://frytea.com/archives/678/</link>
      <pubDate>Thu, 15 Dec 2022 11:20:00 +0000</pubDate>
      <guid>https://frytea.com/archives/678/</guid>
      <description>&lt;p&gt;OpenResty完全开发指南：构建百万级别并发的Web应用
罗剑锋
131个笔记&lt;/p&gt;
&lt;p&gt;◆ 第1章 总论&lt;/p&gt;
&lt;blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;[插图]&lt;/p&gt;&lt;/blockquote&gt;&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;OpenResty使用四位数字作为版本号，形式是：a.b.c.x，其中前三位数字是内部Nginx的版本，作为大版本号，第四位数字是OpenResty自己的发布版本号，也就是小版本号&lt;/p&gt;</description>
    </item>
    <item>
      <title>第一反应要三思</title>
      <link>https://frytea.com/archives/690/</link>
      <pubDate>Thu, 15 Dec 2022 01:01:00 +0000</pubDate>
      <guid>https://frytea.com/archives/690/</guid>
      <description>&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://imagehost-cdn.frytea.com/images/2022/12/15/2022121519179295633a145ae840417.png&#34;&gt;&lt;/p&gt;
&lt;p&gt;人的第一反应或许常常是处于本能的，&lt;/p&gt;
&lt;p&gt;而本能或是条件反射多是为了生存思考，&lt;/p&gt;
&lt;p&gt;这种条件下产生的行为一定是“自私”的。&lt;/p&gt;
&lt;p&gt;时常管好自己的第一反应，&lt;/p&gt;
&lt;p&gt;这种行为也分为多种境界。&lt;/p&gt;</description>
    </item>
    <item>
      <title>坚持习惯从身边的点滴做起</title>
      <link>https://frytea.com/archives/686/</link>
      <pubDate>Wed, 14 Dec 2022 00:41:36 +0000</pubDate>
      <guid>https://frytea.com/archives/686/</guid>
      <description>&lt;p&gt;每天都想早睡，但有时候就是容易晚睡，如何才能实现早点睡呢。&lt;/p&gt;
&lt;p&gt;发现其实也很简单，将睡下之前的所有工序提早做完，再去做可能拖延的事情。&lt;/p&gt;
&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://imagehost-cdn.frytea.com/images/2022/12/12/2022121223590020661c0ed437b1065.png&#34;&gt;&lt;/p&gt;
&lt;p&gt;以我自己为例，可能导致我晚睡的大概有这几种事情：&lt;/p&gt;</description>
    </item>
    <item>
      <title>前事不忘，后事之师</title>
      <link>https://frytea.com/archives/687/</link>
      <pubDate>Tue, 13 Dec 2022 00:25:00 +0000</pubDate>
      <guid>https://frytea.com/archives/687/</guid>
      <description>&lt;p&gt;前事不忘，后事之师。&lt;/p&gt;
&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://imagehost-cdn.frytea.com/images/2022/12/13/20221213082443845001c290c759a19.png&#34;&gt;&lt;/p&gt;
&lt;p&gt;今天，是我国第9个
南京大屠杀死难者国家公祭日
85年前的今天
侵华日军制造了
惨绝人寰的大屠杀&lt;/p&gt;
&lt;p&gt;那段痛苦的历史，是所有中国人不能忘却的记忆。
通过纪念日的形式，每年加强一次，
所有中国人绝对不能忘记。&lt;/p&gt;</description>
    </item>
    <item>
      <title>精神力充能跟吃饭一样重要</title>
      <link>https://frytea.com/archives/682/</link>
      <pubDate>Mon, 12 Dec 2022 00:41:27 +0000</pubDate>
      <guid>https://frytea.com/archives/682/</guid>
      <description>&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://imagehost-cdn.frytea.com/images/2022/12/11/20221211224592189c4fdee01b7a6cb.png&#34;&gt;&lt;/p&gt;
&lt;p&gt;除了吃饭，好要注意补充精神力。&lt;/p&gt;
&lt;p&gt;吃饭可以补充能量，让人有力气去做事情。&lt;/p&gt;
&lt;p&gt;但越发的发现，吃饭不能补充人的精神力。&lt;/p&gt;
&lt;p&gt;每天面对错综复杂的现实情况，我们的精神世界很容易疲惫。&lt;/p&gt;</description>
    </item>
    <item>
      <title>《Go语言精进之路：从新手到高手的编程思想、方法和技巧1 》- 白明</title>
      <link>https://frytea.com/archives/1057/</link>
      <pubDate>Sun, 11 Dec 2022 22:20:00 +0000</pubDate>
      <guid>https://frytea.com/archives/1057/</guid>
      <description>&lt;p&gt;Go语言精进之路：从新手到高手的编程思想、方法和技巧1 白明 330个笔记 ◆ 第一部分 熟知Go语&lt;/p&gt;</description>
    </item>
    <item>
      <title>事事有回音，才更容易坚持</title>
      <link>https://frytea.com/archives/674/</link>
      <pubDate>Sun, 11 Dec 2022 14:25:30 +0000</pubDate>
      <guid>https://frytea.com/archives/674/</guid>
      <description>&lt;p&gt;写完程序，做一做代码扫描、代码评级检测、单元测试覆盖率检测，看到那个很直观且能够努力有所提升的具体的数值，就更有力气为之努力。&lt;/p&gt;
&lt;p&gt;写完文字，看着发文数量，评论数量，阅读数量，一天天增加，就更有力气。&lt;/p&gt;</description>
    </item>
    <item>
      <title>[摘录]《Go语言精进之路：从新手到高手的编程思想、方法和技巧1 - 白明》</title>
      <link>https://frytea.com/archives/680/</link>
      <pubDate>Sun, 11 Dec 2022 14:20:00 +0000</pubDate>
      <guid>https://frytea.com/archives/680/</guid>
      <description>&lt;p&gt;Go语言精进之路：从新手到高手的编程思想、方法和技巧1
白明
330个笔记&lt;/p&gt;
&lt;p&gt;◆ 第一部分 熟知Go语言的一切&lt;/p&gt;
&lt;blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;golang仅应用于命名Go语言官方网站，当时之所以使用golang.org作为Go语言官方域名，是因为go.com已经被迪士尼公司占用了。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Linux (Debian 系) 安装官方微信 (Electron，非 wine 版)</title>
      <link>https://frytea.com/archives/677/</link>
      <pubDate>Fri, 09 Dec 2022 14:00:00 +0000</pubDate>
      <guid>https://frytea.com/archives/677/</guid>
      <description>&lt;p&gt;使用 Linux 作为唯一主力系统的阻力之一，就来自于微信。&lt;/p&gt;
&lt;p&gt;微信大概是目前大多数人都无法离开的软件，而在 Linux 下安装微信在此前是比较复杂的，这对于使用 Linux 工作生活存在一些障碍。&lt;/p&gt;</description>
    </item>
    <item>
      <title>关于新时代“电子毒品”的思考</title>
      <link>https://frytea.com/archives/676/</link>
      <pubDate>Thu, 08 Dec 2022 15:45:35 +0000</pubDate>
      <guid>https://frytea.com/archives/676/</guid>
      <description>&lt;p&gt;这世上有这么一群人，“不装抖音”是他们最后的倔强。&lt;/p&gt;
&lt;p&gt;我恰好就属于这群人的一员。&lt;/p&gt;
&lt;p&gt;人活在世上多么不容易，辛苦产生一些价值，片刻的闲暇还是难逃“收割”的命运。&lt;/p&gt;</description>
    </item>
    <item>
      <title>转载一篇知乎上的文章：抖音是如何毁掉我们的？</title>
      <link>https://frytea.com/archives/675/</link>
      <pubDate>Thu, 08 Dec 2022 10:36:00 +0000</pubDate>
      <guid>https://frytea.com/archives/675/</guid>
      <description>&lt;p&gt;写在前面：&lt;/p&gt;
&lt;p&gt;这篇文中，抖音只是一个具象化代表，&lt;/p&gt;
&lt;p&gt;我想讲的是以抖音为代表的一众以算法为内核的娱乐化 APP。&lt;/p&gt;
&lt;p&gt;每个时代都会有一些淘汰机制，而现在的时代，会根据自制力和信息筛选能力对人进行淘汰。&lt;/p&gt;</description>
    </item>
    <item>
      <title>ChatGPT 注册方法（附万能接码方法）</title>
      <link>https://frytea.com/archives/671/</link>
      <pubDate>Tue, 06 Dec 2022 15:25:00 +0000</pubDate>
      <guid>https://frytea.com/archives/671/</guid>
      <description>&lt;p&gt;ChatGPT 是一个训练有素的语言模型，由 OpenAI 公司训练而成。目的是帮助回答问题，提供信息和支持，但不具备人类的感知能力，也不会回答所有问题。&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;以上自我介绍原始内容来自 ChatGPT 回答。&lt;/p&gt;</description>
    </item>
    <item>
      <title>拨云见日站在新的《起跑线》，让人放松的喜剧片</title>
      <link>https://frytea.com/archives/672/</link>
      <pubDate>Tue, 06 Dec 2022 15:22:12 +0000</pubDate>
      <guid>https://frytea.com/archives/672/</guid>
      <description>&lt;p&gt;最近才得知《起跑线》这部电影，晚上精神疲惫看不进东西，就翻出这部喜剧片，只能说珍藏片库+1了。&lt;/p&gt;
&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://imagehost-cdn.frytea.com/images/2022/12/06/202212062307799d689de566f57f257.png&#34;&gt;&lt;/p&gt;
&lt;p&gt;对于电影本身不做过多评价了，简单谈谈看过后自己心态上的一切变化。&lt;/p&gt;</description>
    </item>
    <item>
      <title>部署 Prometheus 主机监控完全体</title>
      <link>https://frytea.com/archives/664/</link>
      <pubDate>Fri, 02 Dec 2022 01:57:00 +0000</pubDate>
      <guid>https://frytea.com/archives/664/</guid>
      <description>&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://imagehost-cdn.frytea.com/images/2022/12/02/202212020957362a5ac543b2ec7f2be.png&#34;&gt;&lt;/p&gt;
&lt;p&gt;监控完全体 = Prometheus + Node Exporter + cadvisor + grafana&lt;/p&gt;
&lt;p&gt;Prometheus 作为轮转数据库，从各个服务器采集数据；
node-exporter 作为数据采集器，接受 prometheus 采集请求，上报主机各项参数；
vadvisor 作为容器数据采集器，接受 prometheus 采集请求，上报主机 docker 各项参数；
grafana 作为看板，从 prometheus 查询数据做数据可视化。&lt;/p&gt;</description>
    </item>
    <item>
      <title>「2022-11｜愿抗疫大业早日胜利」</title>
      <link>https://frytea.com/archives/1096/</link>
      <pubDate>Wed, 30 Nov 2022 20:40:00 +0000</pubDate>
      <guid>https://frytea.com/archives/1096/</guid>
      <description>&lt;p&gt;愿抗疫大业早日胜利&lt;/p&gt;
&lt;h2 id=&#34;-一段总结&#34;&gt;👀 一段总结&lt;/h2&gt;
&lt;p&gt;👉 过去的这个月，收支均衡，预算全覆盖，这部分做得不错；&lt;/p&gt;</description>
    </item>
    <item>
      <title>mermaid.js 效果相册</title>
      <link>https://frytea.com/archives/663/</link>
      <pubDate>Thu, 24 Nov 2022 06:38:35 +0000</pubDate>
      <guid>https://frytea.com/archives/663/</guid>
      <description>&lt;p&gt;&lt;a href=&#34;https://mermaid-js.github.io/mermaid/#/&#34;&gt;mermaid&lt;/a&gt; 是一款 javascript 库，能够轻而易举地通过文本代码绘图。&lt;/p&gt;
&lt;p&gt;作为普通用户，将其理解为一种绘图的语言即可，集成它之后就可以在 markdown 的轻松插入特定语法编写的各类图示了，而且不需要像 plantuml 一样需要外部服务器，目前 &lt;a href=&#34;https://www.notion.so/&#34;&gt;notion&lt;/a&gt; 、 &lt;a href=&#34;https://obsidian.md/&#34;&gt;obsidian&lt;/a&gt; 等都已原生支持该特性，许多博客主题也支持该语法。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Juice FS 初探 ｜ 一种为 VPS 提供无限磁盘空间的解决方案</title>
      <link>https://frytea.com/archives/660/</link>
      <pubDate>Sun, 20 Nov 2022 13:56:00 +0000</pubDate>
      <guid>https://frytea.com/archives/660/</guid>
      <description>&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://imagehost-cdn.frytea.com/images/2022/11/20/202211202157973a3a77a11832318cf.png&#34;&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;JuiceFS&lt;/strong&gt; 是一款面向云原生设计的高性能分布式文件系统，在 Apache 2.0 开源协议下发布。提供完备的 &lt;a href=&#34;https://en.wikipedia.org/wiki/POSIX&#34;&gt;POSIX&lt;/a&gt; 兼容性，可将几乎所有对象存储接入本地作为海量本地磁盘使用，亦可同时在跨平台、跨地区的不同主机上挂载读写。&lt;/p&gt;</description>
    </item>
    <item>
      <title>2022 年注册美区 Apple ID 方法概述（使用美区 Paypal）</title>
      <link>https://frytea.com/archives/659/</link>
      <pubDate>Sun, 20 Nov 2022 09:43:00 +0000</pubDate>
      <guid>https://frytea.com/archives/659/</guid>
      <description>&lt;p&gt;有些工作需要用到的软件只有美区 Apple Store 才有，还有一些想玩的游戏也是在国区无法下载，因此注册一个自己的美区 Appid ID 就能方便很多，这里记录一下注册方法。&lt;/p&gt;
&lt;p&gt;本方案越需要花费 9/35 RMB，且需要 VISA(国区即可)信用卡，介意者绕道。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Nginx Proxy Manager - Docker 建站最佳伴侣</title>
      <link>https://frytea.com/archives/658/</link>
      <pubDate>Sun, 20 Nov 2022 02:28:00 +0000</pubDate>
      <guid>https://frytea.com/archives/658/</guid>
      <description>&lt;p&gt;很长一段时间中，我都在思考容器建站的可行性。&lt;/p&gt;
&lt;p&gt;容器有诸多益处，各类好处就不一一列举了。&lt;/p&gt;
&lt;p&gt;在企业场景下，K8s 几乎一骑绝尘，可以完成大规模集群统一管理，完成几乎所有 Web 资源的自动调度。&lt;/p&gt;</description>
    </item>
    <item>
      <title>OpenEuler 防火墙放通端口 (以 8084 为例)</title>
      <link>https://frytea.com/archives/648/</link>
      <pubDate>Thu, 17 Nov 2022 01:56:00 +0000</pubDate>
      <guid>https://frytea.com/archives/648/</guid>
      <description>&lt;p&gt;最近使用 OpenEuler 部署项目，发现防火墙放通端口的方法找不到，因此在这里记录：&lt;/p&gt;
&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;&#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:#f92672&#34;&gt;[&lt;/span&gt;root@localhost Porting-advisor_2.5.RC1_linux-x86-64&lt;span style=&#34;color:#f92672&#34;&gt;]&lt;/span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# firewall-cmd --query-port=8084/tcp --permanent&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;no
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;[&lt;/span&gt;root@localhost Porting-advisor_2.5.RC1_linux-x86-64&lt;span style=&#34;color:#f92672&#34;&gt;]&lt;/span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# firewall-cmd --add-port=8084/tcp --permanent&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;success
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;[&lt;/span&gt;root@localhost Porting-advisor_2.5.RC1_linux-x86-64&lt;span style=&#34;color:#f92672&#34;&gt;]&lt;/span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# firewall-cmd --reload&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;success
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;[&lt;/span&gt;root@localhost Porting-advisor_2.5.RC1_linux-x86-64&lt;span style=&#34;color:#f92672&#34;&gt;]&lt;/span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# firewall-cmd --query-port=8084/tcp --permanent&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;yes
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description>
    </item>
    <item>
      <title>kali linux 配置 xrdp 远程桌面服务</title>
      <link>https://frytea.com/archives/645/</link>
      <pubDate>Tue, 08 Nov 2022 06:53:00 +0000</pubDate>
      <guid>https://frytea.com/archives/645/</guid>
      <description>&lt;p&gt;xrdp 的配置让我充满疑惑，今天误打误撞完成了 kali 下的 xrdp 配置，能够顺利远程桌面进入 kali，这里记录一些可能必须的步骤，以备后用。&lt;/p&gt;
&lt;p&gt;首先按照 kali 官网给出的 xrdp 配置脚本：&lt;/p&gt;</description>
    </item>
    <item>
      <title>「2022-10｜生日」</title>
      <link>https://frytea.com/archives/1089/</link>
      <pubDate>Mon, 07 Nov 2022 20:40:00 +0000</pubDate>
      <guid>https://frytea.com/archives/1089/</guid>
      <description>&lt;p&gt;美丽秋霞。&lt;/p&gt;
&lt;p&gt;10月，是我的生日月。每到这个月都会特别期待生日那天会发生些什么惊喜的事情，而真到跟前&lt;/p&gt;</description>
    </item>
    <item>
      <title>Go 语言命名规范整理</title>
      <link>https://frytea.com/archives/1139/</link>
      <pubDate>Mon, 07 Nov 2022 18:44:16 +0000</pubDate>
      <guid>https://frytea.com/archives/1139/</guid>
      <description>&lt;p&gt;GO 语言精简命名规范汇集.&lt;/p&gt;
&lt;p&gt;本文内容整理自《Go语言精进之路：从新手到高手的编程思想、方法和技巧&lt;/p&gt;</description>
    </item>
    <item>
      <title>macOS 使用 arping 扫描 ip 冲突</title>
      <link>https://frytea.com/archives/644/</link>
      <pubDate>Mon, 07 Nov 2022 06:51:47 +0000</pubDate>
      <guid>https://frytea.com/archives/644/</guid>
      <description>&lt;p&gt;最近工作网络不稳定，多个常用 IP 出现冲突，就连 DHCP 获取到的 IP 也会立刻冲突，原因等待相关人员去解决，今天简单记录 macOS 下 IP 冲突检测的原因。&lt;/p&gt;
&lt;p&gt;一般检查 IP 是否被占用的方法是使用 ping&lt;/p&gt;</description>
    </item>
    <item>
      <title>macOS12 使用 UTM 体验 macOS 13 Ventura (多图预警)</title>
      <link>https://frytea.com/archives/643/</link>
      <pubDate>Thu, 03 Nov 2022 16:23:00 +0000</pubDate>
      <guid>https://frytea.com/archives/643/</guid>
      <description>&lt;p&gt;&lt;a href=&#34;https://getutm.app&#34;&gt;UTM&lt;/a&gt; 是苹果 IOS、macOS 生态下的一款开源的虚拟机软件，底层基于 QEMU 或 Apple 虚拟化，能够在苹果操作系统上以半虚拟化（同 CPU 架构）或全虚拟化（异构 CPU 系统）的形式运行 Linux、Windows 以及 macOS。&lt;/p&gt;</description>
    </item>
    <item>
      <title>macOS12 使用 UTM 体验 macOS13</title>
      <link>https://frytea.com/archives/1196/</link>
      <pubDate>Thu, 03 Nov 2022 06:44:16 +0000</pubDate>
      <guid>https://frytea.com/archives/1196/</guid>
      <description>&lt;p&gt;使用 UTM 在 macOS 12 下体验最新 macOS 13系统，附多图.&lt;/p&gt;
&lt;p&gt;[UTM](htt&lt;/p&gt;</description>
    </item>
    <item>
      <title>根本解决C程序 ignoring return value of ‘***’</title>
      <link>https://frytea.com/archives/641/</link>
      <pubDate>Wed, 02 Nov 2022 05:22:00 +0000</pubDate>
      <guid>https://frytea.com/archives/641/</guid>
      <description>&lt;p&gt;最近在移植一个 C 项目时出现如下报错：&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;xxxxxx.c:990:4: error: ignoring return value of ‘chroot’, declared with attribute warn_unused_result [-Werror=unused-result]
  990 |    chroot(&amp;#34;/&amp;#34;);
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;之所以报错等级为 Error ，是因为 GCC 编译具有参数 &lt;code&gt;-Werror&lt;/code&gt;，将警告当作错误：&lt;/p&gt;</description>
    </item>
    <item>
      <title>Linux 使用 diff 分栏对比文本差异</title>
      <link>https://frytea.com/archives/640/</link>
      <pubDate>Wed, 02 Nov 2022 02:19:00 +0000</pubDate>
      <guid>https://frytea.com/archives/640/</guid>
      <description>&lt;p&gt;首先看一下帮助文档：&lt;/p&gt;
&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;&#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;$ diff --help  
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;用法：diff &lt;span style=&#34;color:#f92672&#34;&gt;[&lt;/span&gt;选项&lt;span style=&#34;color:#f92672&#34;&gt;]&lt;/span&gt;... 文件列表  
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;逐行比较&amp;lt;各文件&amp;gt;。  
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;长选项的必需参数也是相应短选项的必需参数。  
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;     --normal                  以正常的 diff 方式输出 &lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;默认&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt;  
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt; -q, --brief                   只有在文件不同时报告  
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt; -s, --report-identical-files  当两个一样时仍然显示结果  
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt; -c, -C NUM, --context&lt;span style=&#34;color:#f92672&#34;&gt;[=&lt;/span&gt;NUM&lt;span style=&#34;color:#f92672&#34;&gt;]&lt;/span&gt;   同时输出 NUM 行（默认为 &lt;span style=&#34;color:#ae81ff&#34;&gt;3&lt;/span&gt; 行）的复制上下文内容  
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt; -u, -U 数量, --unified&lt;span style=&#34;color:#f92672&#34;&gt;[=&lt;/span&gt;数量&lt;span style=&#34;color:#f92672&#34;&gt;]&lt;/span&gt; 输出 &amp;lt;数量&amp;gt;（默认为 3）行一致化上下文  
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt; -e, --ed                      以 ed script 方式输出  
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt; -n, --rcs                     以 RCS diff 格式输出  
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt; -y, --side-by-side            以两栏的格式输出  
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt; -W, --width&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;数量              每行显示最多 &amp;lt;数量&amp;gt;（默认 130）个字符  
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;     --left-column             当有两行相同时只显示左边栏的一行  
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;     --suppress-common-lines   当有两行相同时不显示  
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt; -p, --show-c-function         显示每个变更位于哪个 C 函数中  
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt; -F, --show-function-line&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;正则 显示匹配给定&amp;lt;正则&amp;gt;表达式的最近一行  
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;     --label 标签              使用给定&amp;lt;标签&amp;gt;替代文件名和时间戳  
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                                 （可以重复）  
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt; -t, --expand-tabs             将输出中的 tab 转换成空格  
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt; -T, --initial-tab             每行先加上 tab 字符，使 tab 字符可以对齐  
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;     --tabsize&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;数字           TAB 格的宽度，默认为 &lt;span style=&#34;color:#ae81ff&#34;&gt;8&lt;/span&gt; 个打印列宽  
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;     --suppress-blank-empty    在空的输出行之前去除空白或制表符  
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt; -l, --paginate                将输出送至 “pr” 指令来分页  
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt; -r, --recursive                 连同所有子目录一起比较  
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;     --no-dereference            不要跟随符号链接  
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt; -N, --new-file                  不存在的文件以空文件方式处理  
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;     --unidirectional-new-file   若第一文件不存在，以空文件处理  
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;     --ignore-file-name-case     忽略文件名大小写的区别  
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;     --no-ignore-file-name-case  不忽略文件名大小写的区别  
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt; -x, --exclude&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;模式              排除匹配 &amp;lt;模式&amp;gt; 的文件  
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt; -X, --exclude-from&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;文件         排除所有匹配在&amp;lt;文件&amp;gt;中列出的模式的文件  
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt; -S, --starting-file&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;文件        当比较目录時，由&amp;lt;文件&amp;gt;开始比较  
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;     --from-file&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;文件1           将&amp;lt;文件1&amp;gt;和操作数中的所有文件/目录作比较；  
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                                   &amp;lt;文件1&amp;gt;可以是目录  
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;     --to-file&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;文件2             将操作数中的所有文件/目录和&amp;lt;文件2&amp;gt;作比较；  
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                                   &amp;lt;文件2&amp;gt;可以是目录  
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt; -i, --ignore-case               忽略文件内容大小写的区别  
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt; -E, --ignore-tab-expansion      忽略由制表符宽度造成的差异  
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt; -Z, --ignore-trailing-space     忽略每行末端的空格  
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt; -b, --ignore-space-change       忽略由空格数不同造成的差异  
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt; -w, --ignore-all-space          忽略所有空格  
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt; -B, --ignore-blank-lines        忽略任何因空行而造成的差异  
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt; -I, --ignore-matching-lines&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;正则 若某行完全匹配 &amp;lt;正则&amp;gt;，则忽略由该行造成的差异  
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt; -a, --text                      所有文件都以文本方式处理  
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;     --strip-trailing-cr         去除输入内容每行末端的回车（CR）字符  
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt; -D, --ifdef&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;名称                输出的内容以 ‘#ifdef &amp;lt;名称&amp;gt;’ 方式标明差异  
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;     --GTYPE-group-format&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;GFMT   以 GFMT 格式处理 GTYPE 输入行组  
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;     --line-format&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;LFMT          以 LFMT 格式处理每一行资料  
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;     --LTYPE-line-format&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;LFMT    以 LFMT 格式处理 LTYPE 输入的行  
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;   这些格式化选项提供对 diff 输出的精细控制，从而泛化 -D/--ifdef。  
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;   LTYPE 可以是 “old”、“new” 或 “unchanged”。GTYPE 可以是 LTYPE 的选择  
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;   或是 “changed”。  
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;   （仅）GFMT 可包括：  
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;     %&amp;lt;  该组中每行属于&amp;lt;文件1&amp;gt;的差异  
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;     %&amp;gt;  该组中每行属于&amp;lt;文件2&amp;gt;的差异  
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;     %&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;  该组中同时在&amp;lt;文件1&amp;gt;和&amp;lt;文件2&amp;gt;出现的每一行  
&lt;/span&gt;&lt;/span&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:#f92672&#34;&gt;][&lt;/span&gt;宽度&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:#f92672&#34;&gt;]]{&lt;/span&gt;doxX&lt;span style=&#34;color:#f92672&#34;&gt;}&lt;/span&gt;字符  以 printf 格式表示该&amp;lt;字符&amp;gt;代表的内容  
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;       大写&amp;lt;字符&amp;gt;表示属于新的文件，小写表示属于旧的文件。&amp;lt;字符&amp;gt;的意义如下：  
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;         F  行组中第一行的行号  
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;         L  行组中最后一行的行号  
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;         N  行数 &lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;L-F+1 &lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt;  
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;         E  F-1  
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;         M  L+1  
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;     %&lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;A&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;B?T:E&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt;  如果 A 等于 B 那么 T 否则 E  
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;   （仅）LFMT 可包括：  
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;     %L  该行的内容  
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;     %l  该行的内容，但不包括结束的换行符  
&lt;/span&gt;&lt;/span&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:#f92672&#34;&gt;][&lt;/span&gt;宽度&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:#f92672&#34;&gt;]]{&lt;/span&gt;doxX&lt;span style=&#34;color:#f92672&#34;&gt;}&lt;/span&gt;n  以 printf 格式表示的输入行号  
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;   GFMT 或 LFMT 都可包括：  
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;     %%        %  
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;     %c&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;C&amp;#39;&lt;/span&gt;     单个字符 C  
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;     %c&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;\OOO&amp;#39;&lt;/span&gt;  八进制码 OOO 所代表的字符  
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;     C         字符 C（处上述转义外的其他字符代表它们自身）  
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt; -d, --minimal            尽可能找出最小的差异集  
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;     --horizon-lines&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;数量 保持指定行数的一致前后缀  
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;     --speed-large-files  假设文件十分大而且文件中含有许多微小的差异  
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;     --color&lt;span style=&#34;color:#f92672&#34;&gt;[=&lt;/span&gt;何时&lt;span style=&#34;color:#f92672&#34;&gt;]&lt;/span&gt;       给输出上色；“何时”可以是“never”（从不）、  
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                            “always”（总是）或“auto”（自动，默认）；  
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                            仅指定 --color 与 --color&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;auto&amp;#39;&lt;/span&gt; 效果相同  
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;     --palette&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;调色板     在 --color 选项启用时使用的颜色；&amp;lt;调色板&amp;gt;参数应当是  
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                            一个冒号分隔的列表以提供 terminfo capabilities 信息  
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;     --help               显示此帮助信息并退出  
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt; -v, --version            输出版本信息并退出  
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt; &amp;lt;文件列表&amp;gt; 的格式可以是“文件1 文件2”、“目录1 目录2”、“目录 文件”或  
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;     “文件 目录”。  
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;如果使用 --from-file 或 --to-file 选项，&amp;lt;文件名&amp;gt; 的格式则不受限制。  
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;如果 FILE 是 “-”，则由标准输入读取内容。  
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;如果输入相同，则退出状态为 0；1 表示输入不同；2 表示有错误产生。  
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;报告程序错误到: bug-diffutils@gnu.org  
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;报告翻译错误到: https://translationproject.org/teams/zh_CN.html  
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;GNU diffutils 主页: &amp;lt;https://www.gnu.org/software/diffutils/&amp;gt;  
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;使用 GNU 软件的通用帮助：&amp;lt;https://www.gnu.org/gethelp/&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;用的时候可以横排查看不同的地方：&lt;/p&gt;</description>
    </item>
    <item>
      <title>linux grep 过滤多个单词</title>
      <link>https://frytea.com/archives/636/</link>
      <pubDate>Mon, 31 Oct 2022 09:49:00 +0000</pubDate>
      <guid>https://frytea.com/archives/636/</guid>
      <description>&lt;p&gt;有时会需要使用 grep 做多关键词匹配，这里给出集中方法，简单记录：&lt;/p&gt;
&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;&#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;grep &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;word1\|word2\|word3&amp;#39;&lt;/span&gt; /path/to/file
&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;### Search all text files ###&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;$ grep &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;word*&amp;#39;&lt;/span&gt; *.txt
&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;### Search all python files for &amp;#39;wordA&amp;#39; or &amp;#39;wordB&amp;#39; ###&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;$ grep &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;wordA*&amp;#39;&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;\&amp;#39;&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;wordB&amp;#39;&lt;/span&gt; *.py
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;$ grep -E &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;word1|word2&amp;#39;&lt;/span&gt; *.doc
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;$ grep -e string1 -e string2 *.pl
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;$ grep -E &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;word1|word2&amp;#34;&lt;/span&gt; *.c
&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;### Show all the lines that do not match given pattern/words/strings ###&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;$ grep -v &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;bar\|foo&amp;#39;&lt;/span&gt; /dir1/dir2/file1
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;$ grep -E -v &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;pattern1|pattern2&amp;#39;&lt;/span&gt; /path/to/file
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;参考文献&#34;&gt;参考文献&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://www.cyberciti.biz/faq/searching-multiple-words-string-using-grep/&#34;&gt;How To Search Multiple Words / String Pattern Using grep Command on Bash shell&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description>
    </item>
    <item>
      <title>群晖 Docker 配置镜像源和私有源</title>
      <link>https://frytea.com/archives/1286/</link>
      <pubDate>Wed, 26 Oct 2022 10:18:19 +0000</pubDate>
      <guid>https://frytea.com/archives/1286/</guid>
      <description>&lt;p&gt;记录群晖 Docker 配置和重启.&lt;/p&gt;
&lt;p&gt;最近在自建 Docker 镜像源和私有源，发现群晖的 Doc&lt;/p&gt;</description>
    </item>
    <item>
      <title>解决 m1 macOS 下 Alacritty 解决不断请求权限问题</title>
      <link>https://frytea.com/archives/1221/</link>
      <pubDate>Mon, 17 Oct 2022 11:29:39 +0000</pubDate>
      <guid>https://frytea.com/archives/1221/</guid>
      <description>&lt;p&gt;一行命令解决 Alacritty 不断请求权限问题.&lt;/p&gt;
&lt;p&gt;m1 芯片的 MacBook 在效能方面很强&lt;/p&gt;</description>
    </item>
    <item>
      <title>「2022-09」天气渐寒</title>
      <link>https://frytea.com/archives/1094/</link>
      <pubDate>Fri, 07 Oct 2022 20:40:00 +0000</pubDate>
      <guid>https://frytea.com/archives/1094/</guid>
      <description>&lt;p&gt;未来，更加的需要能够在优秀平台上创作优秀内容的创作者。&lt;/p&gt;
&lt;p&gt;想的东西太多了，渐渐的，就没有什么想写的了&lt;/p&gt;</description>
    </item>
    <item>
      <title>「2022-08」秋意浓</title>
      <link>https://frytea.com/archives/1093/</link>
      <pubDate>Fri, 09 Sep 2022 20:40:00 +0000</pubDate>
      <guid>https://frytea.com/archives/1093/</guid>
      <description>&lt;p&gt;时过境迁，在当下这一特殊时期，传统节日的过法同样需要我们来创新不是吗。&lt;/p&gt;
&lt;p&gt;八月，大自然正式向人类宣告&lt;/p&gt;</description>
    </item>
    <item>
      <title>一次简单的http-get攻击</title>
      <link>https://frytea.com/archives/1259/</link>
      <pubDate>Wed, 31 Aug 2022 07:08:22 +0000</pubDate>
      <guid>https://frytea.com/archives/1259/</guid>
      <description>&lt;p&gt;记录一次简单 Dos 攻击方法，提升网络安全意识.&lt;/p&gt;
&lt;p&gt;使用 [http-get-dos](https&lt;/p&gt;</description>
    </item>
    <item>
      <title>VMware ovftool arm zip 包安装</title>
      <link>https://frytea.com/archives/634/</link>
      <pubDate>Thu, 25 Aug 2022 03:59:10 +0000</pubDate>
      <guid>https://frytea.com/archives/634/</guid>
      <description>&lt;p&gt;ovftool 是 VMware 提供的一款开放的导入、导出 OVF 格式虚拟机的 CLI 工具，支持 X86 和 Arm。&lt;/p&gt;
&lt;p&gt;官方提供两种，一种是类似 &lt;code&gt;.bundle&lt;/code&gt; 安装包，另一种是 &lt;code&gt;zip&lt;/code&gt; 压缩包。本文介绍 &lt;code&gt;zip&lt;/code&gt; 压缩包使用方法。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Linux USB 设备基础理论</title>
      <link>https://frytea.com/archives/633/</link>
      <pubDate>Wed, 24 Aug 2022 10:04:46 +0000</pubDate>
      <guid>https://frytea.com/archives/633/</guid>
      <description>&lt;p&gt;通过扫描以下目录获取物理节点所有 USB 设备：&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;/sys/bus/usb/devices/usb*
/sys/bus/usb/devices/usb*/$busnum-*
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;从该文件系统收集某一个设备的主要信息如下：&lt;/p&gt;
&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;&#34;&gt;&lt;code class=&#34;language-json&#34; data-lang=&#34;json&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;{
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;busnum&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;1&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;class&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;devnum&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;2&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;level&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;1&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;manufacturer&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;QEMU&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;port&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;prodid&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;0001&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;product&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;QEMU USB Tablet&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;speed&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;12&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;usbpath&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;1&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;vendid&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;0627&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;文件含义&#34;&gt;文件含义&lt;/h2&gt;
&lt;p&gt;目录下部分文件含义如下：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;busnum&lt;/code&gt;: 总线号&lt;/li&gt;
&lt;li&gt;&lt;code&gt;devnum&lt;/code&gt;: 设备号（该总线的第几台设备）&lt;/li&gt;
&lt;li&gt;&lt;code&gt;speed&lt;/code&gt;: 速率&lt;/li&gt;
&lt;li&gt;&lt;code&gt;bDeviceClass&lt;/code&gt;: 设备类型&lt;/li&gt;
&lt;li&gt;&lt;code&gt;idVendor&lt;/code&gt;: 设备的生产商ID,由USB设备生产商向USB-IF官方来统一管理和申请&lt;/li&gt;
&lt;li&gt;&lt;code&gt;idProduct&lt;/code&gt;: 该生产商生产的产品编号，同一厂商下的不同idProduct代表着该公司不同的产品系列&lt;/li&gt;
&lt;li&gt;&lt;code&gt;product&lt;/code&gt;: 制造商&lt;/li&gt;
&lt;li&gt;&lt;code&gt;manufacturer&lt;/code&gt;: 产品&lt;/li&gt;
&lt;li&gt;&lt;code&gt;serial&lt;/code&gt;： USB 硬件设备序列号 ，例如 &lt;code&gt;0000:00:01.2&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;定位方法&#34;&gt;定位方法&lt;/h2&gt;
&lt;p&gt;定位某一个 USB 设备的方法有两种：&lt;/p&gt;</description>
    </item>
    <item>
      <title>使用 qemu-img 转换镜像格式</title>
      <link>https://frytea.com/archives/632/</link>
      <pubDate>Tue, 16 Aug 2022 08:00:04 +0000</pubDate>
      <guid>https://frytea.com/archives/632/</guid>
      <description>&lt;p&gt;qemu-img镜像格式转换工具支持vhd、vmdk、qcow2、raw、vhdx、qcow、vdi或qed社区格式的镜像的相互转换。&lt;/p&gt;
&lt;h2 id=&#34;查看信息&#34;&gt;查看信息&lt;/h2&gt;
&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;&#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;$ qemu-img info vzdump-qemu-125-2022_08_16-13_40_42.vma                                                                                                                                                                                    
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;image: vzdump-qemu-125-2022_08_16-13_40_42.vma                                                                                                                                                                                                                                
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;file format: raw                                                                                                                                                                                                                                                              
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;virtual size: &lt;span style=&#34;color:#ae81ff&#34;&gt;3&lt;/span&gt; GiB &lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;3221810176&lt;/span&gt; bytes&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt;                                                                                                                                                                                                                                        
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;disk size: &lt;span style=&#34;color:#ae81ff&#34;&gt;3&lt;/span&gt; GiB
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;$ qemu-img info vzdump-qemu-125-2022_08_16-13_40_42.qcow2 
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;image: vzdump-qemu-125-2022_08_16-13_40_42.qcow2
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;file format: qcow2
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;virtual size: &lt;span style=&#34;color:#ae81ff&#34;&gt;3&lt;/span&gt; GiB &lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;3221810176&lt;/span&gt; bytes&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;disk size: &lt;span style=&#34;color:#ae81ff&#34;&gt;3&lt;/span&gt; GiB
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;cluster_size: &lt;span style=&#34;color:#ae81ff&#34;&gt;65536&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Format specific information:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    compat: 1.1
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    compression type: zlib
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    lazy refcounts: false
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    refcount bits: &lt;span style=&#34;color:#ae81ff&#34;&gt;16&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    corrupt: false
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    extended l2: false
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;格式转换&#34;&gt;格式转换&lt;/h2&gt;
&lt;p&gt;执行如下命令转换镜像文件格式。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Win11 手动调整任务栏大小 ｜ 定制任务栏 2022</title>
      <link>https://frytea.com/archives/631/</link>
      <pubDate>Mon, 15 Aug 2022 03:14:00 +0000</pubDate>
      <guid>https://frytea.com/archives/631/</guid>
      <description>&lt;p&gt;最近自己的 MacBook Air M1 资源吃紧，干起活来常常被内存拖累。&lt;/p&gt;
&lt;p&gt;虽然平时都是远程开发，但终端一多，网页一多，很容易达到性能瓶颈导致工作效率下降。于是心生一计，在计算资源较充足的开发服务器上开一台高性能的桌面虚拟机，恰好此前一直没有使用过 Win11，趁此机会体验一下。&lt;/p&gt;</description>
    </item>
    <item>
      <title>「2022-07」尽量将错误“安排”在低成本时刻</title>
      <link>https://frytea.com/archives/1091/</link>
      <pubDate>Sat, 13 Aug 2022 20:40:00 +0000</pubDate>
      <guid>https://frytea.com/archives/1091/</guid>
      <description>&lt;p&gt;只要努力走过每一段路程，尽自己所想规划，尽自己所能前进，就距离自己的目标更近了一步。&lt;/p&gt;
&lt;p&gt;整个七月，在&lt;/p&gt;</description>
    </item>
    <item>
      <title>Perl 特性之不安全的依赖</title>
      <link>https://frytea.com/archives/630/</link>
      <pubDate>Wed, 27 Jul 2022 06:56:22 +0000</pubDate>
      <guid>https://frytea.com/archives/630/</guid>
      <description>&lt;p&gt;最近写 Perl 程序时遇到一个很奇怪的问题：&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;Insecure dependency in unlink while running with -T switch at ../tmpfile.pl line 44.
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;经过检查，发现这是 Perl 语言一个特性，在运行时使用 &lt;code&gt;-w&lt;/code&gt; 或 &lt;code&gt;-T&lt;/code&gt; 都意味着 &amp;ldquo;万无一失&amp;rdquo; 标志。&lt;/p&gt;</description>
    </item>
    <item>
      <title>「2022-06」夏日已至</title>
      <link>https://frytea.com/archives/1097/</link>
      <pubDate>Fri, 08 Jul 2022 20:40:00 +0000</pubDate>
      <guid>https://frytea.com/archives/1097/</guid>
      <description>&lt;p&gt;做一个人间美好储藏家吧。&lt;/p&gt;
&lt;p&gt;回想走过的路，每一步都多么的不容易。自己走过的路，自己选择的方向，回想起&lt;/p&gt;</description>
    </item>
    <item>
      <title>「2022-04」第一个月，适应到释放</title>
      <link>https://frytea.com/archives/1090/</link>
      <pubDate>Mon, 16 May 2022 04:40:00 +0000</pubDate>
      <guid>https://frytea.com/archives/1090/</guid>
      <description>&lt;p&gt;或许我该让自己变得“懒惰”些。&lt;/p&gt;
&lt;p&gt;或许我必须要承认，我不可能无限制的输出文字和代码。我的想法必须跟自&lt;/p&gt;</description>
    </item>
    <item>
      <title>「2022-05」隔离、本职和希望</title>
      <link>https://frytea.com/archives/1092/</link>
      <pubDate>Fri, 13 May 2022 04:40:00 +0000</pubDate>
      <guid>https://frytea.com/archives/1092/</guid>
      <description>&lt;p&gt;情绪过山车&lt;/p&gt;
&lt;p&gt;过去的五月情绪如同坐上过山车。有些许妥协，但更多的是接上正轨。本来整理了各种记录，结果&lt;/p&gt;</description>
    </item>
    <item>
      <title>Openwrt 使用 Wireguard 异地组网（远程家庭网所有设备）</title>
      <link>https://frytea.com/archives/1261/</link>
      <pubDate>Sat, 23 Apr 2022 07:42:39 +0000</pubDate>
      <guid>https://frytea.com/archives/1261/</guid>
      <description>&lt;p&gt;使用 Wireguard 、OpenWrt、VPS 完成异地组网.&lt;/p&gt;
&lt;p&gt;最近入手了一款友善 Nano&lt;/p&gt;</description>
    </item>
    <item>
      <title>shell 中格式化显示 json 字符串</title>
      <link>https://frytea.com/archives/629/</link>
      <pubDate>Wed, 20 Apr 2022 02:11:00 +0000</pubDate>
      <guid>https://frytea.com/archives/629/</guid>
      <description>&lt;p&gt;有时需要在终端环境中查看 json 数据，比如使用 &lt;code&gt;curl&lt;/code&gt;  调试接口时。直接看到的 json 数据是类似这样的：&lt;/p&gt;
&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;&#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;$ echo &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;{&amp;#34;foo&amp;#34;: &amp;#34;lorem&amp;#34;, &amp;#34;bar&amp;#34;: &amp;#34;ipsum&amp;#34;}&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&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:#e6db74&#34;&gt;&amp;#34;foo&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;lorem&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;bar&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;ipsum&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;如果想要以更直观的方式格式化显示 json 数据，可以利用 &lt;code&gt;python3&lt;/code&gt; 提供的标准库 &lt;code&gt;json&lt;/code&gt; 来实现：&lt;/p&gt;</description>
    </item>
    <item>
      <title>「2022-03」突然间，一切都成了回忆</title>
      <link>https://frytea.com/archives/1100/</link>
      <pubDate>Sat, 16 Apr 2022 04:40:00 +0000</pubDate>
      <guid>https://frytea.com/archives/1100/</guid>
      <description>&lt;p&gt;愿世界和平。&lt;/p&gt;
&lt;p&gt;[BGM: 枕边童话]&lt;/p&gt;
&lt;p&gt;突然间，身边熟悉的一切变为回忆，这转变多少有点难以接受&lt;/p&gt;</description>
    </item>
    <item>
      <title>Proxmox VE (PVE) 销毁集群</title>
      <link>https://frytea.com/archives/628/</link>
      <pubDate>Thu, 14 Apr 2022 02:43:42 +0000</pubDate>
      <guid>https://frytea.com/archives/628/</guid>
      <description>&lt;p&gt;当 pve 集群某节点出现问题时，可能导致所有主机均无法连接到 WEB 管理后台，此时可以尝试以下方法将正常节点的集群状态销毁，在需要时重建集群，从而保证仍在线节点可用：&lt;/p&gt;</description>
    </item>
    <item>
      <title>iso 和 img 的区别</title>
      <link>https://frytea.com/archives/1219/</link>
      <pubDate>Wed, 06 Apr 2022 14:22:49 +0000</pubDate>
      <guid>https://frytea.com/archives/1219/</guid>
      <description>&lt;p&gt;最近经常接触各种系统镜像，大部分是 *.iso 格式（如 debian ），少部分是 *.img&lt;/p&gt;</description>
    </item>
    <item>
      <title>*.iso 和 *.img 的区别</title>
      <link>https://frytea.com/archives/627/</link>
      <pubDate>Wed, 06 Apr 2022 06:22:49 +0000</pubDate>
      <guid>https://frytea.com/archives/627/</guid>
      <description>&lt;p&gt;最近经常接触各种系统镜像，大部分是 &lt;code&gt;*.iso&lt;/code&gt; 格式（如 debian ），少部分是 &lt;code&gt;*.img&lt;/code&gt; 格式（如 cirros），这两者究竟有何区别，最终在维基百科找到比较可靠的一段描述：&lt;/p&gt;</description>
    </item>
    <item>
      <title>「2022-02」寒风中过年，整装待发</title>
      <link>https://frytea.com/archives/1088/</link>
      <pubDate>Thu, 17 Mar 2022 15:55:00 +0000</pubDate>
      <guid>https://frytea.com/archives/1088/</guid>
      <description>&lt;p&gt;度过寒风，整装待发。&lt;/p&gt;
&lt;p&gt;好久没有写东西了， 最近温度终于回升的差不多了，我的思绪终于从冬眠中醒来，就&lt;/p&gt;</description>
    </item>
    <item>
      <title>k3s 使用 Letsencrypt 和 Traefik 完成 https 入口部署</title>
      <link>https://frytea.com/archives/1232/</link>
      <pubDate>Tue, 08 Mar 2022 06:43:39 +0000</pubDate>
      <guid>https://frytea.com/archives/1232/</guid>
      <description>&lt;p&gt;k3s自动完成 ssl 证书签发和续签方法，并使用 https 协议暴露服务方法介绍。&lt;/p&gt;
&lt;p&gt;完成了 k&lt;/p&gt;</description>
    </item>
    <item>
      <title>公网部署 k3s 集群方法总结</title>
      <link>https://frytea.com/archives/1191/</link>
      <pubDate>Tue, 08 Mar 2022 06:36:35 +0000</pubDate>
      <guid>https://frytea.com/archives/1191/</guid>
      <description>&lt;p&gt;基于公网完成跨云厂商服务器 k3s 集群部署&lt;/p&gt;
&lt;p&gt;Kubernetes 在当下的火热程度不必多言，但由&lt;/p&gt;</description>
    </item>
    <item>
      <title>Kubernetes Pod 配置文件(完整注释)</title>
      <link>https://frytea.com/archives/1142/</link>
      <pubDate>Fri, 04 Feb 2022 05:06:26 +0000</pubDate>
      <guid>https://frytea.com/archives/1142/</guid>
      <description>&lt;p&gt;汇集几乎全部 k8s 配置项注释，方便查阅和学习&lt;/p&gt;
&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;&#34;&gt;&lt;code class=&#34;language-yaml&#34; data-lang=&#34;yaml&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# yaml格式的pod定义文件&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;完整内容：&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;apiVersion&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;v1        　　&lt;/span&gt; &lt;span style=&#34;color:#75715e&#34;&gt;# 必选，版本号，例如v1&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;kind&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;Pod                &lt;/span&gt; &lt;span style=&#34;color:#75715e&#34;&gt;# 必选，Pod&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;metadata&lt;/span&gt;:       　　　　　　&lt;span style=&#34;color:#75715e&#34;&gt;# 必选，元数据&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;name&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;string             &lt;/span&gt; &lt;span style=&#34;color:#75715e&#34;&gt;# 必选，Pod名称&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;namespace&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;string        &lt;/span&gt; &lt;span style=&#34;color:#75715e&#34;&gt;# 必选，Pod所属的命名空间&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;labels&lt;/span&gt;:       　　　　　　  &lt;span style=&#34;color:#75715e&#34;&gt;# 自定义标签&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    - &lt;span style=&#34;color:#f92672&#34;&gt;name&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;string      　   &lt;/span&gt; &lt;span style=&#34;color:#75715e&#34;&gt;# 自定义标签名称&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;annotations&lt;/span&gt;:              &lt;span style=&#34;color:#75715e&#34;&gt;# 自定义注释列表&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    - &lt;span style=&#34;color:#f92672&#34;&gt;name&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;string           &lt;/span&gt; &lt;span style=&#34;color:#75715e&#34;&gt;# 自定义注释列表名称&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;spec&lt;/span&gt;:                     &lt;span style=&#34;color:#75715e&#34;&gt;# 必选，Pod中容器的详细定义&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;containers&lt;/span&gt;:               &lt;span style=&#34;color:#75715e&#34;&gt;# 必选，Pod中容器列表&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  - &lt;span style=&#34;color:#f92672&#34;&gt;name&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;string             &lt;/span&gt; &lt;span style=&#34;color:#75715e&#34;&gt;# 必选，容器名称&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;image&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;string            &lt;/span&gt; &lt;span style=&#34;color:#75715e&#34;&gt;# 必选，容器的镜像名称&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;imagePullPolicy&lt;/span&gt;: [&lt;span style=&#34;color:#ae81ff&#34;&gt;Always | Never | IfNotPresent]  &lt;/span&gt;
&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;# 获取镜像的策略&lt;/span&gt;
&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;# Alawys 下载镜像&lt;/span&gt;
&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;# IfnotPresent 优先使用本地镜像，否则下载镜像&lt;/span&gt;
&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;# Nerver 仅使用本地镜像&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;command&lt;/span&gt;: [&lt;span style=&#34;color:#ae81ff&#34;&gt;string]        &lt;/span&gt; &lt;span style=&#34;color:#75715e&#34;&gt;# 容器的启动命令列表，如不指定，使用打包时使用的启动命令&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;args&lt;/span&gt;: [&lt;span style=&#34;color:#ae81ff&#34;&gt;string]           &lt;/span&gt; &lt;span style=&#34;color:#75715e&#34;&gt;# 容器的启动命令参数列表&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;workingDir&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;string       &lt;/span&gt; &lt;span style=&#34;color:#75715e&#34;&gt;# 容器的工作目录&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;volumeMounts&lt;/span&gt;:             &lt;span style=&#34;color:#75715e&#34;&gt;# 挂载到容器内部的存储卷配置&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    - &lt;span style=&#34;color:#f92672&#34;&gt;name&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;string             &lt;/span&gt; &lt;span style=&#34;color:#75715e&#34;&gt;# 引用pod定义的共享存储卷的名称，需用volumes[]部分定义的的卷名&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;mountPath&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;string        &lt;/span&gt; &lt;span style=&#34;color:#75715e&#34;&gt;# 存储卷在容器内mount的绝对路径，应少于512字符&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;readOnly&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;boolean        &lt;/span&gt; &lt;span style=&#34;color:#75715e&#34;&gt;# 是否为只读模式&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;ports&lt;/span&gt;:                    &lt;span style=&#34;color:#75715e&#34;&gt;# 需要暴露的端口库号列表&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    - &lt;span style=&#34;color:#f92672&#34;&gt;name&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;string             &lt;/span&gt; &lt;span style=&#34;color:#75715e&#34;&gt;# 端口号名称&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;containerPort&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;int       &lt;/span&gt; &lt;span style=&#34;color:#75715e&#34;&gt;# 容器需要监听的端口号&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;hostPort&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;int            &lt;/span&gt; &lt;span style=&#34;color:#75715e&#34;&gt;# 容器所在主机需要监听的端口号，默认与Container相同&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;protocol&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;string         &lt;/span&gt; &lt;span style=&#34;color:#75715e&#34;&gt;# 端口协议，支持TCP和UDP，默认TCP&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;env&lt;/span&gt;:                      &lt;span style=&#34;color:#75715e&#34;&gt;# 容器运行前需设置的环境变量列表&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    - &lt;span style=&#34;color:#f92672&#34;&gt;name&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;string             &lt;/span&gt; &lt;span style=&#34;color:#75715e&#34;&gt;# 环境变量名称&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;value&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;string            &lt;/span&gt; &lt;span style=&#34;color:#75715e&#34;&gt;# 环境变量的值&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;resources&lt;/span&gt;:                &lt;span style=&#34;color:#75715e&#34;&gt;# 资源限制和请求的设置&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;limits&lt;/span&gt;:                   &lt;span style=&#34;color:#75715e&#34;&gt;# 资源限制的设置&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#f92672&#34;&gt;cpu&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;string              &lt;/span&gt; &lt;span style=&#34;color:#75715e&#34;&gt;# Cpu的限制，单位为core数，将用于docker run --cpu-shares参数&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#f92672&#34;&gt;memory&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;string           &lt;/span&gt; &lt;span style=&#34;color:#75715e&#34;&gt;# 内存限制，单位可以为Mib/Gib，将用于docker run --memory参数&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;requests&lt;/span&gt;:                 &lt;span style=&#34;color:#75715e&#34;&gt;# 资源请求的设置&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#f92672&#34;&gt;cpu&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;string              &lt;/span&gt; &lt;span style=&#34;color:#75715e&#34;&gt;# Cpu请求，容器启动的初始可用数量&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#f92672&#34;&gt;memory&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;string           &lt;/span&gt; &lt;span style=&#34;color:#75715e&#34;&gt;# 内存请求，容器启动的初始可用数量&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;livenessProbe&lt;/span&gt;:            &lt;span style=&#34;color:#75715e&#34;&gt;# 对Pod内的容器健康检查的设置，当探测无响应几次后将自动重启该容器，检查方法有exec、httpGet和tcpSocket，对一个容器只需设置其中一种方法即可&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;exec&lt;/span&gt;:                     &lt;span style=&#34;color:#75715e&#34;&gt;# 对Pod容器内检查方式设置为exec方式&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#f92672&#34;&gt;command&lt;/span&gt;: [&lt;span style=&#34;color:#ae81ff&#34;&gt;string]        &lt;/span&gt; &lt;span style=&#34;color:#75715e&#34;&gt;# exec方式需要制定的命令或脚本&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;httpGet&lt;/span&gt;:                  &lt;span style=&#34;color:#75715e&#34;&gt;# 对Pod内个容器健康检查方法设置为HttpGet，需要制定Path、port&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#f92672&#34;&gt;path&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;string&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#f92672&#34;&gt;port&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;number&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#f92672&#34;&gt;host&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;string&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#f92672&#34;&gt;scheme&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;string&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#f92672&#34;&gt;HttpHeaders&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        - &lt;span style=&#34;color:#f92672&#34;&gt;name&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;string&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;          &lt;span style=&#34;color:#f92672&#34;&gt;value&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;string&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;tcpSocket&lt;/span&gt;:                &lt;span style=&#34;color:#75715e&#34;&gt;# 对Pod内个容器健康检查方式设置为tcpSocket方式&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;         &lt;span style=&#34;color:#f92672&#34;&gt;port&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;number&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;       &lt;span style=&#34;color:#f92672&#34;&gt;initialDelaySeconds&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt;   &lt;span style=&#34;color:#75715e&#34;&gt;# 容器启动完成后首次探测的时间，单位为秒&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;       &lt;span style=&#34;color:#f92672&#34;&gt;timeoutSeconds&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt;        &lt;span style=&#34;color:#75715e&#34;&gt;# 对容器健康检查探测等待响应的超时时间，单位秒，默认1秒&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;       &lt;span style=&#34;color:#f92672&#34;&gt;periodSeconds&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt;         &lt;span style=&#34;color:#75715e&#34;&gt;# 对容器监控检查的定期探测时间设置，单位秒，默认10秒一次&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;       &lt;span style=&#34;color:#f92672&#34;&gt;successThreshold&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;       &lt;span style=&#34;color:#f92672&#34;&gt;failureThreshold&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;       &lt;span style=&#34;color:#f92672&#34;&gt;securityContext&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;         &lt;span style=&#34;color:#f92672&#34;&gt;privileged&lt;/span&gt;: &lt;span style=&#34;color:#66d9ef&#34;&gt;false&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;restartPolicy&lt;/span&gt;: [&lt;span style=&#34;color:#ae81ff&#34;&gt;Always | Never | OnFailure]&lt;/span&gt;
&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;# Pod的重启策略，&lt;/span&gt;
&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;# Always 一旦不管以何种方式终止运行，kubelet都将重启&lt;/span&gt;
&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;# OnFailure表示只有Pod以非0退出码退出才重启&lt;/span&gt;
&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;# Nerver表示不再重启该Pod&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;nodeSelector&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;obeject    &lt;/span&gt; &lt;span style=&#34;color:#75715e&#34;&gt;# 设置NodeSelector表示将该Pod调度到包含这个label的node上，以key：value的格式指定&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;imagePullSecrets&lt;/span&gt;:         &lt;span style=&#34;color:#75715e&#34;&gt;# Pull镜像时使用的secret名称，以key：secretkey格式指定&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    - &lt;span style=&#34;color:#f92672&#34;&gt;name&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;string&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;hostNetwork&lt;/span&gt;: &lt;span style=&#34;color:#66d9ef&#34;&gt;false&lt;/span&gt;        &lt;span style=&#34;color:#75715e&#34;&gt;# 是否使用主机网络模式，默认为false，如果设置为true，表示使用宿主机网络&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;volumes&lt;/span&gt;:                  &lt;span style=&#34;color:#75715e&#34;&gt;# 在该pod上定义共享存储卷列表&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    - &lt;span style=&#34;color:#f92672&#34;&gt;name&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;string           &lt;/span&gt; &lt;span style=&#34;color:#75715e&#34;&gt;# 共享存储卷名称 （volumes类型有很多种）&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;emptyDir&lt;/span&gt;: {}            &lt;span style=&#34;color:#75715e&#34;&gt;# 类型为emtyDir的存储卷，与Pod同生命周期的一个临时目录。为空值&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;hostPath&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;string       &lt;/span&gt; &lt;span style=&#34;color:#75715e&#34;&gt;# 类型为hostPath的存储卷，表示挂载Pod所在宿主机的目录&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#f92672&#34;&gt;path&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;string         &lt;/span&gt; &lt;span style=&#34;color:#75715e&#34;&gt;# Pod所在宿主机的目录，将被用于同期中mount的目录&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;secret&lt;/span&gt;:                 &lt;span style=&#34;color:#75715e&#34;&gt;# 类型为secret的存储卷，挂载集群与定义的secre对象到容器内部&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#f92672&#34;&gt;scretname&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;string&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#f92672&#34;&gt;items&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        - &lt;span style=&#34;color:#f92672&#34;&gt;key&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;string&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;          &lt;span style=&#34;color:#f92672&#34;&gt;path&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;string&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;configMap&lt;/span&gt;:              &lt;span style=&#34;color:#75715e&#34;&gt;#类型为configMap的存储卷，挂载预定义的configMap对象到容器内部&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#f92672&#34;&gt;name&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;string&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#f92672&#34;&gt;items&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        - &lt;span style=&#34;color:#f92672&#34;&gt;key&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;string&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;          &lt;span style=&#34;color:#f92672&#34;&gt;path&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;string&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;参考文献&#34;&gt;参考文献&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://kubernetes.io/zh/docs/&#34;&gt;Kubernetes 文档/&lt;/a&gt;&lt;a href=&#34;https://kubernetes.io/zh/docs/concepts/&#34;&gt;概念/&lt;/a&gt;&lt;a href=&#34;https://kubernetes.io/zh/docs/concepts/configuration/&#34;&gt;配置&lt;/a&gt; By k8s&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://www.cnblogs.com/flying1819/articles/9039529.html&#34;&gt;k8s yaml格式的Pod配置文件&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description>
    </item>
    <item>
      <title>kubernetes 核心技术概念</title>
      <link>https://frytea.com/archives/1149/</link>
      <pubDate>Fri, 04 Feb 2022 05:04:34 +0000</pubDate>
      <guid>https://frytea.com/archives/1149/</guid>
      <description>&lt;p&gt;汇集 k8s 核心概念，帮助理解&lt;/p&gt;
&lt;h2 id=&#34;复制控制器-replication-controlle&#34;&gt;复制控制器（ `Replication Controlle&lt;/h2&gt;</description>
    </item>
    <item>
      <title>Kubernetes 系列文章概述</title>
      <link>https://frytea.com/archives/1135/</link>
      <pubDate>Fri, 04 Feb 2022 05:02:37 +0000</pubDate>
      <guid>https://frytea.com/archives/1135/</guid>
      <description>&lt;p&gt;Kubernetes系列文章概述&lt;/p&gt;
&lt;p&gt;接触，了解 k8s 已经有一段时间了，但由于工作内容没有涉及到，&lt;/p&gt;</description>
    </item>
    <item>
      <title>「2022-01」除夕</title>
      <link>https://frytea.com/archives/1099/</link>
      <pubDate>Mon, 31 Jan 2022 03:18:00 +0000</pubDate>
      <guid>https://frytea.com/archives/1099/</guid>
      <description>&lt;p&gt;祝愿各位身体健康，家庭幸福，工作顺利，学习进步，一切顺利&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;新年的第一缕江风亲吻你的眼，未来我要&lt;/p&gt;&lt;/blockquote&gt;</description>
    </item>
    <item>
      <title>INOTIFY - 监听事件</title>
      <link>https://frytea.com/archives/626/</link>
      <pubDate>Thu, 27 Jan 2022 01:35:37 +0000</pubDate>
      <guid>https://frytea.com/archives/626/</guid>
      <description>&lt;p&gt;Linux 2.6.13 内核中引入了新的文件系统变化通知机制 &lt;code&gt;inotify&lt;/code&gt; ，使用该特性提供的用户态调用 api ，可以方便的完成文件变化监听。&lt;/p&gt;
&lt;p&gt;各种语言基本都提供了对该接口的调用方法： &lt;code&gt;C&lt;/code&gt; 不必多说， &lt;code&gt;Perl&lt;/code&gt; 使用 &lt;code&gt;[Linux::Inotify2](https://metacpan.org/pod/Linux::Inotify2)&lt;/code&gt; ， &lt;code&gt;Golang&lt;/code&gt; 使用 &lt;code&gt;golang.org/x/sys/unix&lt;/code&gt; ， &lt;code&gt;Python&lt;/code&gt; 则使用 &lt;code&gt;[pyinotify](https://github.com/seb-m/pyinotify)&lt;/code&gt; 即可完成调用。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Wiki.js 离线部署方法 ｜ 离线拉取语言包</title>
      <link>https://frytea.com/archives/625/</link>
      <pubDate>Thu, 27 Jan 2022 01:25:31 +0000</pubDate>
      <guid>https://frytea.com/archives/625/</guid>
      <description>&lt;p&gt;最近想在内网搭建一套 Wiki，在调研了各种 wiki 的搭建方式、功能之后，选择了 wiki.js。但是在部署过程中，发现其默认是通过公网拉取语言包等资源，内网安装需要一些特别的方法。&lt;/p&gt;</description>
    </item>
    <item>
      <title>macOS 使用 remote-viewer 连接 spice ｜ PC 连接 spice 云桌面</title>
      <link>https://frytea.com/archives/1260/</link>
      <pubDate>Tue, 25 Jan 2022 07:12:46 +0000</pubDate>
      <guid>https://frytea.com/archives/1260/</guid>
      <description>&lt;p&gt;介绍三种桌面平台下连接 spice 云桌面的方法。&lt;/p&gt;
&lt;p&gt;最近需要使用到云桌面办公，但目前仅支持 win&lt;/p&gt;</description>
    </item>
    <item>
      <title>macOS 使用 remote-viewer 连接 spice 服务 ｜ PC 连接 spice 云桌面方法</title>
      <link>https://frytea.com/archives/624/</link>
      <pubDate>Tue, 25 Jan 2022 07:10:58 +0000</pubDate>
      <guid>https://frytea.com/archives/624/</guid>
      <description>&lt;p&gt;最近需要使用到云桌面办公，但目前仅支持 windows 客户端。后经过询问，发现是使用 spice 协议链接，提供地址后，即可使用第三方客户端链接。&lt;/p&gt;
&lt;p&gt;MacOS 平台下没有很好的支持 spice 协议的图形化客户端，但是可以使用 &lt;code&gt;remote-viewer&lt;/code&gt; 这个工具，也比较好用，下面介绍安装方法：&lt;/p&gt;</description>
    </item>
    <item>
      <title>「周录-202205」神奇动物在哪里</title>
      <link>https://frytea.com/archives/1098/</link>
      <pubDate>Thu, 20 Jan 2022 13:40:00 +0000</pubDate>
      <guid>https://frytea.com/archives/1098/</guid>
      <description>&lt;p&gt;没有剧透，一场巫师人群的盛宴，我只想安静的看个电影，满足了。&lt;/p&gt;
&lt;p&gt;不知怎的这周很累，于是就像寻求一种可&lt;/p&gt;</description>
    </item>
    <item>
      <title>解决 SSH 无操作自动断开 | pychram 超时无响应</title>
      <link>https://frytea.com/archives/623/</link>
      <pubDate>Wed, 19 Jan 2022 01:49:24 +0000</pubDate>
      <guid>https://frytea.com/archives/623/</guid>
      <description>&lt;p&gt;工作中常需要连接着服务器，下班或暂时离开时会出现一段时间不操作终端，此时就会自动断开。&lt;/p&gt;
&lt;p&gt;这本身无伤大雅，重连即可，直到我发现，一些依赖 SSH 提供的服务也会因此受到影响，比如 &lt;code&gt;Pychram&lt;/code&gt; 远程开发，会在一段时间后无响应，只能重启 Pychram 解决，很影响效率。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Python 传值 or 传引用</title>
      <link>https://frytea.com/archives/622/</link>
      <pubDate>Wed, 19 Jan 2022 01:11:11 +0000</pubDate>
      <guid>https://frytea.com/archives/622/</guid>
      <description>&lt;p&gt;先说结论：python不允许程序员选择采用传值还是传引用。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;如果函数收到的是一个 &lt;strong&gt;可变对象&lt;/strong&gt; （比如 &lt;strong&gt;字典&lt;/strong&gt; 或者 &lt;strong&gt;列表&lt;/strong&gt; ）的引用，就能修改对象的原始值－－相当于通过“&lt;strong&gt;传引用&lt;/strong&gt;”来传递对象。&lt;/li&gt;
&lt;li&gt;如果函数收到的是一个 &lt;strong&gt;不可变对象&lt;/strong&gt; （比如 &lt;strong&gt;数字&lt;/strong&gt; 、 &lt;strong&gt;字符&lt;/strong&gt; 或者 &lt;strong&gt;元组&lt;/strong&gt; ）的引用，就不能直接修改原始对象－－相当于通过“&lt;strong&gt;传值&lt;/strong&gt;&amp;lsquo;来传递对象。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;在函数传值，或函数内部函数引用外部变量时，基本符合这个逻辑，比如：&lt;/p&gt;</description>
    </item>
    <item>
      <title>Python 二进制结构化数据处理和封装</title>
      <link>https://frytea.com/archives/621/</link>
      <pubDate>Mon, 17 Jan 2022 08:04:48 +0000</pubDate>
      <guid>https://frytea.com/archives/621/</guid>
      <description>&lt;p&gt;当 python 需要调用 C 程序，或是进行文件、网络操作时，需要对二进制结构化字节流进行处理，此时需要使用到 &lt;code&gt;struct&lt;/code&gt; 这个模块提供的方法。&lt;/p&gt;
&lt;p&gt;详细方法可以查看 &lt;a href=&#34;https://docs.python.org/zh-cn/3/library/struct.html&#34;&gt;官方教程&lt;/a&gt;，这里以 &lt;code&gt;perl&lt;/code&gt; 的 &lt;code&gt;pack&lt;/code&gt; 作为对比，使用 python 实现类似 perl 数据打包的效果。&lt;/p&gt;</description>
    </item>
    <item>
      <title>「周录-202202」持久的内容</title>
      <link>https://frytea.com/archives/1095/</link>
      <pubDate>Sat, 15 Jan 2022 13:40:00 +0000</pubDate>
      <guid>https://frytea.com/archives/1095/</guid>
      <description>&lt;p&gt;人最原始的欲望，只是温饱而已。&lt;/p&gt;
&lt;p&gt;很早就想写点东西了，但总是不知道从何写起。flomo 中记下了许多&lt;/p&gt;</description>
    </item>
    <item>
      <title>Linux 下的文件锁</title>
      <link>https://frytea.com/archives/620/</link>
      <pubDate>Thu, 13 Jan 2022 06:30:39 +0000</pubDate>
      <guid>https://frytea.com/archives/620/</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;本文内容为 Linux 系统通用，各个语言实现可能稍有不同，但原理相同。&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;当多个进程或多个程序都想要修同一个文件的时候，如果不加控制，多进程或多程序将可能导致文件更新的丢失。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Perl //= 和 ||= 的区别 | 附实验</title>
      <link>https://frytea.com/archives/619/</link>
      <pubDate>Wed, 12 Jan 2022 07:42:03 +0000</pubDate>
      <guid>https://frytea.com/archives/619/</guid>
      <description>&lt;h2 id=&#34;结论&#34;&gt;结论&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;$var//=2&lt;/code&gt;：等价于 &lt;code&gt;defined($var)||2&lt;/code&gt;，即 &lt;strong&gt;未定义&lt;/strong&gt; 时才赋值为 &lt;code&gt;2&lt;/code&gt; ，否则不变（ 即使是 &lt;code&gt;0&lt;/code&gt;或 &lt;code&gt;空字符串&lt;/code&gt;  ）&lt;/li&gt;
&lt;li&gt;&lt;code&gt;$var||=2&lt;/code&gt; ：除非定义且为 &lt;code&gt;true&lt;/code&gt; 才不会赋值，否则赋值（比如 &lt;code&gt;0&lt;/code&gt; 或 &lt;code&gt;空字符串&lt;/code&gt; 时）为2。&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;heading&#34;&gt;//=&lt;/h2&gt;
&lt;h3 id=&#34;step-1-空串&#34;&gt;Step-1 空串&lt;/h3&gt;
&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;&#34;&gt;&lt;code class=&#34;language-perl&#34; data-lang=&#34;perl&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;$var&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;&amp;#39;&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;$var&lt;span style=&#34;color:#e6db74&#34;&gt;//&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&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;print&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#39;$var&amp;#39;\n&amp;#34;&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&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;&#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;# perl atest4.pl &lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id=&#34;step-2-0&#34;&gt;Step-2 0&lt;/h3&gt;
&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;&#34;&gt;&lt;code class=&#34;language-perl&#34; data-lang=&#34;perl&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;$var&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;$var&lt;span style=&#34;color:#e6db74&#34;&gt;//&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&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;print&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#39;$var&amp;#39;\n&amp;#34;&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&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;&#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;# perl atest4.pl &lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;0&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id=&#34;step-3-1&#34;&gt;Step-3 1&lt;/h3&gt;
&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;&#34;&gt;&lt;code class=&#34;language-perl&#34; data-lang=&#34;perl&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;$var&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&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;$var&lt;span style=&#34;color:#e6db74&#34;&gt;//&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&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;print&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#39;$var&amp;#39;\n&amp;#34;&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&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;&#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;# perl atest4.pl &lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;1&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id=&#34;step-4-undef&#34;&gt;Step-4 undef&lt;/h3&gt;
&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;&#34;&gt;&lt;code class=&#34;language-perl&#34; data-lang=&#34;perl&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;$var&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;undef;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;$var&lt;span style=&#34;color:#e6db74&#34;&gt;//&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&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;print&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#39;$var&amp;#39;\n&amp;#34;&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&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;&#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;# perl atest4.pl &lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;2&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;heading-1&#34;&gt;||=&lt;/h2&gt;
&lt;h3 id=&#34;step-1-空串-1&#34;&gt;Step-1 空串&lt;/h3&gt;
&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;&#34;&gt;&lt;code class=&#34;language-perl&#34; data-lang=&#34;perl&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;$var&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;&amp;#39;&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;$var&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&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;print&lt;/span&gt; $var;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&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;&#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;# perl atest4.pl &lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;2&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id=&#34;step-2-0-1&#34;&gt;Step-2 0&lt;/h3&gt;
&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;&#34;&gt;&lt;code class=&#34;language-perl&#34; data-lang=&#34;perl&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;$var&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;$var&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&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;print&lt;/span&gt; $var;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&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;&#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;# perl atest4.pl &lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;2&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id=&#34;step-3-1-1&#34;&gt;Step-3 1&lt;/h3&gt;
&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;&#34;&gt;&lt;code class=&#34;language-perl&#34; data-lang=&#34;perl&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;$var&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&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;$var&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&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;print&lt;/span&gt; $var;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&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;&#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;# perl atest4.pl &lt;/span&gt;
&lt;/span&gt;&lt;/span&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&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id=&#34;step-4-undef-1&#34;&gt;Step-4 undef&lt;/h3&gt;
&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;&#34;&gt;&lt;code class=&#34;language-perl&#34; data-lang=&#34;perl&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;$var&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;undef;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;$var&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&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;print&lt;/span&gt; $var;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&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;&#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;# perl atest4.pl &lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;2&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description>
    </item>
    <item>
      <title>OS-Wars</title>
      <link>https://frytea.com/archives/618/</link>
      <pubDate>Wed, 12 Jan 2022 05:32:00 +0000</pubDate>
      <guid>https://frytea.com/archives/618/</guid>
      <description>&lt;p&gt;今天看到一张图，简直笑喷了，必须发一下，&lt;/p&gt;
&lt;p&gt;提名叫做： OS-Wars&lt;/p&gt;
&lt;p&gt;&lt;img alt=&#34;OS-Wars&#34; loading=&#34;lazy&#34; src=&#34;https://imagehost-cdn.frytea.com/images/2022/01/12/OS-Wars953d05a339581f04.gif&#34;&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;注：图片来源 &lt;a href=&#34;http://www.cse.yorku.ca/~oz/&#34;&gt;ozan (oz) yigit&lt;/a&gt;&lt;/p&gt;&lt;/blockquote&gt;
&lt;h2 id=&#34;参考文献&#34;&gt;参考文献&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;http://www.cse.yorku.ca/~oz/&#34;&gt;ozan (oz) yigit&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://www.cnblogs.com/plodsoft/p/5853945.html&#34;&gt;简易正则表达式引擎源码阅读&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description>
    </item>
    <item>
      <title>Perl 常用内置函数 -r -e 等</title>
      <link>https://frytea.com/archives/617/</link>
      <pubDate>Tue, 11 Jan 2022 07:55:24 +0000</pubDate>
      <guid>https://frytea.com/archives/617/</guid>
      <description>&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;&#34;&gt;&lt;code class=&#34;language-perl&#34; data-lang=&#34;perl&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;-&lt;/span&gt;r: File is readable by effective uid&lt;span style=&#34;color:#f92672&#34;&gt;/&lt;/span&gt;gid&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;-&lt;/span&gt;w: File is writable by effective uid&lt;span style=&#34;color:#f92672&#34;&gt;/&lt;/span&gt;gid&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;-&lt;/span&gt;x: File is executable by effective uid&lt;span style=&#34;color:#f92672&#34;&gt;/&lt;/span&gt;gid&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;-&lt;/span&gt;o: File is owned by effective uid&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;-&lt;/span&gt;R: File is readable by real uid&lt;span style=&#34;color:#f92672&#34;&gt;/&lt;/span&gt;gid&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;-&lt;/span&gt;W: File is writable by real uid&lt;span style=&#34;color:#f92672&#34;&gt;/&lt;/span&gt;gid&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;-&lt;/span&gt;X: File is executable by real uid&lt;span style=&#34;color:#f92672&#34;&gt;/&lt;/span&gt;gid&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;-&lt;/span&gt;O: File is owned by real uid&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;-&lt;/span&gt;e: File exists&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;-&lt;/span&gt;z: File has zero size (is empty)&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;-&lt;/span&gt;s: File has nonzero size (returns size in bytes)&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;-&lt;/span&gt;f: File is a plain file&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;-&lt;/span&gt;d: File is a directory&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;-&lt;/span&gt;l: File is a symbolic link&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;-&lt;/span&gt;p: File is a named pipe (FIFO), &lt;span style=&#34;color:#f92672&#34;&gt;or&lt;/span&gt; Filehandle is a pipe&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;-&lt;/span&gt;S: File is a socket&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;-&lt;/span&gt;b: File is a block special file&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;-&lt;/span&gt;c: File is a character special file&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;-&lt;/span&gt;t: Filehandle is opened to a tty&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;-&lt;/span&gt;u: File has setuid bit set&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;-&lt;/span&gt;g: File has setgid bit set&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;-&lt;/span&gt;k: File has sticky bit set&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;-&lt;/span&gt;T: File is an ASCII text file (heuristic guess)&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;-&lt;/span&gt;B: File is a &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;binary&amp;#34;&lt;/span&gt; file (opposite of &lt;span style=&#34;color:#f92672&#34;&gt;-&lt;/span&gt;T)&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;-&lt;/span&gt;M: Script start time minus file modification time, in days&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;-&lt;/span&gt;A: Same &lt;span style=&#34;color:#66d9ef&#34;&gt;for&lt;/span&gt; access time&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;-&lt;/span&gt;C: Same &lt;span style=&#34;color:#66d9ef&#34;&gt;for&lt;/span&gt; inode change time (Unix, may differ &lt;span style=&#34;color:#66d9ef&#34;&gt;for&lt;/span&gt; other platforms)
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;参考文献&#34;&gt;参考文献&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&#34;https://perldoc.perl.org/perlfunc#Alphabetical-Listing-of-Perl-Functions&#34;&gt;Alphabetical Listing of Perl Functions&lt;/a&gt;&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://stackoverflow.com/questions/6172957/what-does-if-f-filename-in-perl-do&#34;&gt;What does if( -f &lt;filename&gt; ) in Perl do?&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://blog.csdn.net/qq_21478261/article/details/105399532&#34;&gt;perl中 -e, -z, -s, -M, -A, -C, -r, -w, -x, -o, -f, -d , -l 含义&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description>
    </item>
    <item>
      <title>2021 下半年博客「经营」报告</title>
      <link>https://frytea.com/archives/616/</link>
      <pubDate>Sat, 01 Jan 2022 07:36:00 +0000</pubDate>
      <guid>https://frytea.com/archives/616/</guid>
      <description>&lt;p&gt;距离发布《&lt;strong&gt;&lt;a href=&#34;https://blog.frytea.com/archives/549/&#34;&gt;2021 上半年博客「经营」报告&lt;/a&gt;&lt;/strong&gt;》已经半年过去了，这半年里，我发布了 Notion BoJo模版及其配套的财务看板「&lt;a href=&#34;https://bjpfd.frytea.com&#34;&gt;BJ-PFD&lt;/a&gt;」，发布了随机壁纸生成器「&lt;a href=&#34;https://wallpaper.frytea.com&#34;&gt;Get Random Wallpaper&lt;/a&gt;」，新作了个人主页「&lt;a href=&#34;https://www.frytea.com&#34;&gt;煎茶&lt;/a&gt;」，自此我的博客「&lt;a href=&#34;https://blog.frytea.com&#34;&gt;Frytea&amp;rsquo;s Blog&lt;/a&gt;」专门分享一些碎片化的信息，主页用来汇集个人信息并分享成体系的内容。&lt;/p&gt;</description>
    </item>
    <item>
      <title>什么是 WEB3 以及其发展概要</title>
      <link>https://frytea.com/archives/615/</link>
      <pubDate>Fri, 31 Dec 2021 09:17:07 +0000</pubDate>
      <guid>https://frytea.com/archives/615/</guid>
      <description>&lt;p&gt;要问何为 Web3，就先从什么味 Web2 和 Web1 来说起吧。&lt;/p&gt;
&lt;p&gt;最近在网上看到 Web3 的概念很火热，比肩区块链、元宇宙，其实貌似一整个未来，特意整理一下认为比较好的材料分享出来。&lt;/p&gt;</description>
    </item>
    <item>
      <title>国内对象存储/CDN服务价格汇总</title>
      <link>https://frytea.com/archives/1145/</link>
      <pubDate>Thu, 30 Dec 2021 12:14:00 +0000</pubDate>
      <guid>https://frytea.com/archives/1145/</guid>
      <description>&lt;p&gt;汇集国内主流对象存储、CDN服务价格&lt;/p&gt;
&lt;p&gt;话不多说，直接上表格。&lt;/p&gt;
&lt;h2 id=&#34;价格表国内https价格&#34;&gt;价格表(国内HTTPS价格)&lt;/h2&gt;</description>
    </item>
    <item>
      <title>国内对象存储/CDN服务价格横评</title>
      <link>https://frytea.com/archives/614/</link>
      <pubDate>Thu, 30 Dec 2021 12:11:59 +0000</pubDate>
      <guid>https://frytea.com/archives/614/</guid>
      <description>&lt;p&gt;话不多说，直接上表格。&lt;/p&gt;
&lt;h2 id=&#34;价格表国内https价格&#34;&gt;价格表(国内HTTPS价格)&lt;/h2&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;名称&lt;/th&gt;
          &lt;th&gt;存储免费额度(GB)&lt;/th&gt;
          &lt;th&gt;存储费用(元 / GB / 日)&lt;/th&gt;
          &lt;th&gt;流量免费额度&lt;/th&gt;
          &lt;th&gt;流量费用(元/GB)&lt;/th&gt;
          &lt;th&gt;CDN流量费用&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;多吉云&lt;/td&gt;
          &lt;td&gt;10&lt;/td&gt;
          &lt;td&gt;0.003&lt;/td&gt;
          &lt;td&gt;20&lt;/td&gt;
          &lt;td&gt;0.11&lt;/td&gt;
          &lt;td&gt;0.11&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;七牛云&lt;/td&gt;
          &lt;td&gt;10&lt;/td&gt;
          &lt;td&gt;0.098-0.145&lt;/td&gt;
          &lt;td&gt;\&lt;/td&gt;
          &lt;td&gt;0.29&lt;/td&gt;
          &lt;td&gt;0.28&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;腾讯云&lt;/td&gt;
          &lt;td&gt;\&lt;/td&gt;
          &lt;td&gt;0.099-0.118&lt;/td&gt;
          &lt;td&gt;\&lt;/td&gt;
          &lt;td&gt;0.5&lt;/td&gt;
          &lt;td&gt;0.21&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;阿里云&lt;/td&gt;
          &lt;td&gt;\&lt;/td&gt;
          &lt;td&gt;0.12&lt;/td&gt;
          &lt;td&gt;\&lt;/td&gt;
          &lt;td&gt;0.25-0.5&lt;/td&gt;
          &lt;td&gt;0.24&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;又拍云&lt;/td&gt;
          &lt;td&gt;\&lt;/td&gt;
          &lt;td&gt;0.0043&lt;/td&gt;
          &lt;td&gt;\&lt;/td&gt;
          &lt;td&gt;0.5&lt;/td&gt;
          &lt;td&gt;0.29&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;百度智能云&lt;/td&gt;
          &lt;td&gt;\&lt;/td&gt;
          &lt;td&gt;0.119-0.15&lt;/td&gt;
          &lt;td&gt;\&lt;/td&gt;
          &lt;td&gt;0.25-0.49&lt;/td&gt;
          &lt;td&gt;0.20&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;blockquote&gt;
&lt;p&gt;注：价格整理于2021年12月30日；存储指对象存储，流量指对象存储公网流出流量。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Ubuntu 安装 GitKraken 并汉化</title>
      <link>https://frytea.com/archives/613/</link>
      <pubDate>Thu, 30 Dec 2021 01:31:05 +0000</pubDate>
      <guid>https://frytea.com/archives/613/</guid>
      <description>&lt;p&gt;GitKraken 是一款超好用的 git 可视化(gui)工具，但是官方不提供多语言支持，今天就以 Ubuntu 平台为例介绍一下安装方法。&lt;/p&gt;
&lt;h2 id=&#34;安装及汉化&#34;&gt;安装及汉化&lt;/h2&gt;
&lt;p&gt;首先在 GitKraken 官网下载安装包：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;GitKraken 官网： &lt;a href=&#34;https://www.gitkraken.com/&#34;&gt;https://www.gitkraken.com/&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果是 debian 系操系统可下载其中的 deb 版本，之后安装即可。&lt;/p&gt;</description>
    </item>
    <item>
      <title>2021年终 - 平淡中蓄力 · 习惯中突破</title>
      <link>https://frytea.com/archives/1117/</link>
      <pubDate>Wed, 29 Dec 2021 14:54:00 +0000</pubDate>
      <guid>https://frytea.com/archives/1117/</guid>
      <description>&lt;p&gt;在年末，完成自己的 2021 年度总结。&lt;/p&gt;
&lt;h2 id=&#34;-一段总结&#34;&gt;👀 一段总结&lt;/h2&gt;
&lt;p&gt;翻了翻 2020年的年终总结《[「&lt;/p&gt;</description>
    </item>
    <item>
      <title>深挖 docker 默认网络 | 为什么 docker 默认网络能上外网</title>
      <link>https://frytea.com/archives/612/</link>
      <pubDate>Tue, 28 Dec 2021 06:49:46 +0000</pubDate>
      <guid>https://frytea.com/archives/612/</guid>
      <description>&lt;p&gt;为什么默认配置创建出来的 docker 容器可以访问外网，为什么监听对应端口就能对外暴露docker服务，一张图搞清楚。&lt;/p&gt;
&lt;p&gt;首先 Docker 有四中网络模式， 分别是 Bridge、Host、Container、None，默认使用 Bridge，今天就来讲讲 Bridge。&lt;/p&gt;</description>
    </item>
    <item>
      <title>理解网桥、集线器、交换机、路由器的本质</title>
      <link>https://frytea.com/archives/611/</link>
      <pubDate>Tue, 28 Dec 2021 02:19:27 +0000</pubDate>
      <guid>https://frytea.com/archives/611/</guid>
      <description>&lt;p&gt;一直弄不清楚这几者的区别，加之现代的三层交换机，就更搞不清楚几者的关系了。&lt;/p&gt;
&lt;p&gt;后来发现试图以现代产品的思维理解这几个概念是极其容易混淆的，必须回归到几者最本质的样子，再去拓展才行。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Python 实战项目解决循环依赖问题</title>
      <link>https://frytea.com/archives/610/</link>
      <pubDate>Mon, 27 Dec 2021 06:15:49 +0000</pubDate>
      <guid>https://frytea.com/archives/610/</guid>
      <description>&lt;h2 id=&#34;问题重现&#34;&gt;问题重现&lt;/h2&gt;
&lt;p&gt;在一次简单的代码合并后，发现 Python 项目跑不起来了，报错如下：&lt;/p&gt;
&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;&#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;ssh://root@192.168.226.76:22/usr/bin/python3 -B -u /tmp/pycharm_project_882/mimic_daemon_server/helper_main.py
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Traceback &lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;most recent call last&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  File &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;/tmp/pycharm_project_882/mimic_daemon_server/helper_main.py&amp;#34;&lt;/span&gt;, line 1, in &amp;lt;module&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    from mimic_daemon_server import create_app
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  File &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;/tmp/pycharm_project_882/mimic_daemon_server/__init__.py&amp;#34;&lt;/span&gt;, line 14, in &amp;lt;module&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    from mimic_daemon_server.nodes import nodes
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  File &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;/tmp/pycharm_project_882/mimic_daemon_server/nodes/__init__.py&amp;#34;&lt;/span&gt;, line 2, in &amp;lt;module&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    from . import route
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  File &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;/tmp/pycharm_project_882/mimic_daemon_server/nodes/route.py&amp;#34;&lt;/span&gt;, line 5, in &amp;lt;module&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    from mimic_daemon_server.guest_common import ReplicationConfig
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  File &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;/tmp/pycharm_project_882/mimic_daemon_server/guest_common/__init__.py&amp;#34;&lt;/span&gt;, line 3, in &amp;lt;module&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    from .abstract_config import AbstractConfig
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  File &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;/tmp/pycharm_project_882/mimic_daemon_server/guest_common/abstract_config.py&amp;#34;&lt;/span&gt;, line 16, in &amp;lt;module&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    import mimic_daemon_server.qemu_server.Drive
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  File &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;/tmp/pycharm_project_882/mimic_daemon_server/qemu_server/__init__.py&amp;#34;&lt;/span&gt;, line 25, in &amp;lt;module&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    from .QemuConfig import QemuConfig
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  File &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;/tmp/pycharm_project_882/mimic_daemon_server/qemu_server/QemuConfig.py&amp;#34;&lt;/span&gt;, line 12, in &amp;lt;module&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    from mimic_daemon_server.guest_common import AbstractConfig
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;ImportError: cannot import name &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;AbstractConfig&amp;#39;&lt;/span&gt; from &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;mimic_daemon_server.guest_common&amp;#39;&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;/tmp/pycharm_project_882/mimic_daemon_server/guest_common/__init__.py&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;进程已结束,退出代码1
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;由于我在 Python 领域还是个初学者，没有遇到类似问题，但是根据分析，问题应该是出在了 &lt;strong&gt;循环依赖&lt;/strong&gt;。&lt;/p&gt;</description>
    </item>
    <item>
      <title>解决 perl: warning: Setting locale failed.</title>
      <link>https://frytea.com/archives/609/</link>
      <pubDate>Mon, 27 Dec 2021 01:28:48 +0000</pubDate>
      <guid>https://frytea.com/archives/609/</guid>
      <description>&lt;p&gt;使用 Ubuntu 主机远程 PVE 服务器执行命令时报错：&lt;/p&gt;
&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;&#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;# qm list&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;perl: warning: Setting locale failed.
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;perl: warning: Please check that your locale settings:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	LANGUAGE &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;unset&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	LC_ALL &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;unset&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	LC_ADDRESS &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;zh_CN.UTF-8&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	LC_NAME &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;zh_CN.UTF-8&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	LC_MONETARY &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;zh_CN.UTF-8&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	LC_PAPER &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;zh_CN.UTF-8&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	LC_IDENTIFICATION &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;zh_CN.UTF-8&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	LC_TELEPHONE &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;zh_CN.UTF-8&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	LC_MEASUREMENT &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;zh_CN.UTF-8&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	LC_TIME &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;zh_CN.UTF-8&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	LC_NUMERIC &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;zh_CN.UTF-8&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	LANG &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;en_US.UTF-8&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    are supported and installed on your system.
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;perl: warning: Falling back to a fallback locale &lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;en_US.UTF-8&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt;.
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;查看字符集配置发现有报错：&lt;/p&gt;</description>
    </item>
    <item>
      <title>Perl 调试打印 HASH 内容</title>
      <link>https://frytea.com/archives/608/</link>
      <pubDate>Thu, 23 Dec 2021 06:14:27 +0000</pubDate>
      <guid>https://frytea.com/archives/608/</guid>
      <description>&lt;p&gt;在调试 Perl 程序时常常需要打印哈希表内容，虽然可以直接使用 &lt;code&gt;foreach&lt;/code&gt; 打印，但数据复杂了就难办了，此时可以将 Hash 表转换为 json 文本再打印：&lt;/p&gt;
&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;&#34;&gt;&lt;code class=&#34;language-perl&#34; data-lang=&#34;perl&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;use&lt;/span&gt; JSON;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&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;my&lt;/span&gt; $data &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; {&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;info&amp;#39;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;=&amp;gt;&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;test&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;struct&amp;#39;&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;=&amp;gt;&lt;/span&gt; {&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;test1&amp;#39;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;=&amp;gt;&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;test1&amp;#39;&lt;/span&gt;, &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;test2&amp;#39;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;=&amp;gt;&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;test2&amp;#39;&lt;/span&gt;}};
&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;my&lt;/span&gt; $json &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;new&lt;/span&gt; JSON;
&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;#$json-&amp;gt;sort_by(sub { ncmp($JSON::PP::a, $JSON::PP::b) });&lt;/span&gt;
&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;my&lt;/span&gt; $json_text &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; $json&lt;span style=&#34;color:#f92672&#34;&gt;-&amp;gt;&lt;/span&gt;pretty&lt;span style=&#34;color:#f92672&#34;&gt;-&amp;gt;&lt;/span&gt;encode ($data);
&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;print&lt;/span&gt; $json_text;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;如果没有 json 包需要安装一下：&lt;/p&gt;</description>
    </item>
    <item>
      <title>分享一个快捷内网、漏洞扫描工具 fscan</title>
      <link>https://frytea.com/archives/607/</link>
      <pubDate>Tue, 21 Dec 2021 01:10:30 +0000</pubDate>
      <guid>https://frytea.com/archives/607/</guid>
      <description>&lt;p&gt;&lt;a href=&#34;https://github.com/shadow1ng/fscan&#34;&gt;fscan&lt;/a&gt; 是一款 go 语言写成 “一款内网综合扫描工具，方便一键自动化、全方位漏扫扫描”。是我在刷 &lt;a href=&#34;https://github.com/kon9chunkit&#34;&gt;kon9chunkit&lt;/a&gt; 发起的 &lt;strong&gt;&lt;a href=&#34;https://github.com/kon9chunkit/GitHub-Chinese-Top-Charts&#34;&gt;GitHub中文排行榜&lt;/a&gt;&lt;/strong&gt; 时发现的。&lt;/p&gt;
&lt;p&gt;该工具&lt;strong&gt;支持主机存活探测、端口扫描、常见服务的爆破、ms17010、redis批量写公钥、计划任务反弹shell、读取win网卡信息、web指纹识别、web漏洞扫描、netbios探测、域控识别&lt;/strong&gt;等功能。&lt;/p&gt;</description>
    </item>
    <item>
      <title>周录/50 ｜ 做减法与激励机制</title>
      <link>https://frytea.com/archives/1112/</link>
      <pubDate>Sat, 18 Dec 2021 15:35:00 +0000</pubDate>
      <guid>https://frytea.com/archives/1112/</guid>
      <description>&lt;p&gt;2021年第50周，谈谈个人管理和激励反馈&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;2021年第50周 - 激励/管理&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;最近几天没有&lt;/p&gt;</description>
    </item>
    <item>
      <title>Windows 禁用 AppXSVC 解决 CPU 占用高问题</title>
      <link>https://frytea.com/archives/606/</link>
      <pubDate>Thu, 16 Dec 2021 03:26:36 +0000</pubDate>
      <guid>https://frytea.com/archives/606/</guid>
      <description>&lt;p&gt;在一台虚拟机上安装了 Windows 10 lstc 2021 版，启动后发现 CPU 占用率一直居高不下，查看任务管理器发现是一个叫 &lt;code&gt;wsapp&lt;/code&gt; 的系统服务服务占用 CPU 过高，搜索后发现对应的是 &lt;code&gt;AppX Deployment Service&lt;/code&gt; 系统服务，是用来提供 微软应用商店服务服务的。&lt;/p&gt;</description>
    </item>
    <item>
      <title>无代理国内镜像加速 GitHub 资源拉取</title>
      <link>https://frytea.com/archives/1237/</link>
      <pubDate>Wed, 15 Dec 2021 07:32:54 +0000</pubDate>
      <guid>https://frytea.com/archives/1237/</guid>
      <description>&lt;p&gt;一种非代理加速拉取 github 资源的方法.&lt;/p&gt;
&lt;p&gt;常见的github加速方法如修改 &lt;code&gt;hosts&lt;/code&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>解决拉取 github 仓库报错 “gnutls_handshake () failed” 问题</title>
      <link>https://frytea.com/archives/1210/</link>
      <pubDate>Wed, 15 Dec 2021 07:25:55 +0000</pubDate>
      <guid>https://frytea.com/archives/1210/</guid>
      <description>&lt;p&gt;由于代理导致 github 无法正常拉取的解决办法.&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;gnutls_handshake()




failed: The TLS connection was non-properly terminated.
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;最近为新配置的虚机拉取库，但是从 GitHub 拉取库总是出问题，查阅网上文献将问题锁定在代理，但是找了一圈还是没有找到答案。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Git 常用操作</title>
      <link>https://frytea.com/archives/1233/</link>
      <pubDate>Wed, 15 Dec 2021 07:21:48 +0000</pubDate>
      <guid>https://frytea.com/archives/1233/</guid>
      <description>&lt;p&gt;记录常用 git 操作命令，方便速查.&lt;/p&gt;
&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;&#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;# 注：若没有标记“远程”，则默认为操作本&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;地分支。
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&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;# 检查当前状态 &lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;$ git status
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&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;# 避免协同时自动生成 merge commit （把远程最新的 commit 以变基的方式同步到本地）&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;$ git pull --rebase
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&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;# 跟踪新文件（.标识当前目录下所有文件，也可指定文件）&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;$ git add .
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&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;# 删除暂存区文件(修改.gitignore 后需移除暂存区生效)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;$ git rm --cached README
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&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;# 查看变化&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;$ git diff
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&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;# 提交更新&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;$ git commit -m &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;Story 182: Fix benchmarks for speed&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&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;# 新增分支&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;$ git branch newBranchName
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&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;# 切换分支&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;$ git checkout newBranchName
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&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;# 修改分支名&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;$ git branch -m oldBranchName newBranchName
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&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;# 新增分支并切换至新分支&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;$ git checkout -b newBranchName
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&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;# 将新分支内容合并至当前分支&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;$ git merge newBranchName
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&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;# 删除(本地)分支&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;$ git branch -d newBranchName
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&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;# 将本地分支推送到远端(若不存在则新建)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;$ git push origin localBranchName:remoteBranchName
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&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;# 删除(远程)分支&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;$ git push origin :deleteBranchName
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&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;# 从远程拉取分支&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;git checkout -b localBranchName origin/remoteBranchName
&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;# 如果不成功，执行 git fetch，再重试&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&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;# 集中撤销提交&lt;/span&gt;
&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;# 不删除工作空间改动代码，撤销commit，不撤销git add .&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;git reset --soft HEAD~1
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&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;# 不删除工作空间改动代码，撤销commit，并且撤销git add . 操作&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;git reset --mixed HEAD~1
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&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;# 删除工作空间改动代码，撤销commit，撤销git add .&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;git reset --hard HEAD~1
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&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;# 回退到指定 commit 版本&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;git reset --hard 1094a
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&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;# 查看节点树&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;git log --oneline --graph --decorate --all
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;参考文献&#34;&gt;参考文献&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://git-scm.com/book/zh/v2/Git-%E5%9F%BA%E7%A1%80-%E8%AE%B0%E5%BD%95%E6%AF%8F%E6%AC%A1%E6%9B%B4%E6%96%B0%E5%88%B0%E4%BB%93%E5%BA%93&#34;&gt;2.2 Git 基础 - 记录每次更新到仓库&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://git-scm.com/book/zh/v2/Git-%E5%88%86%E6%94%AF-%E5%88%86%E6%94%AF%E7%9A%84%E6%96%B0%E5%BB%BA%E4%B8%8E%E5%90%88%E5%B9%B6&#34;&gt;3.2 Git 分支 - 分支的新建与合并&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://blog.csdn.net/weboof/article/details/100517928&#34;&gt;git新增、修改、删除本地和远程分支&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://www.yiibai.com/git/git_fetch.html&#34;&gt;git fetch命令&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://www.cnblogs.com/lfxiao/p/9378763.html&#34;&gt;git commit之后，想撤销commit&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description>
    </item>
    <item>
      <title>Git 修改提交历史中的邮箱和用户名</title>
      <link>https://frytea.com/archives/1200/</link>
      <pubDate>Wed, 15 Dec 2021 07:16:03 +0000</pubDate>
      <guid>https://frytea.com/archives/1200/</guid>
      <description>&lt;p&gt;重写 git commit 历史中的邮箱和用户名.&lt;/p&gt;
&lt;p&gt;内网提交需要校验企业邮箱，有时邮箱设置错误导致&lt;/p&gt;</description>
    </item>
    <item>
      <title>更换 PVE7 软件仓库源和 CT模板（LXC）源为国内源</title>
      <link>https://frytea.com/archives/605/</link>
      <pubDate>Tue, 14 Dec 2021 01:05:00 +0000</pubDate>
      <guid>https://frytea.com/archives/605/</guid>
      <description>&lt;p&gt;PVE7 安装后默认配置的 apt 软件源和 CT(LXC)容器模板源均是官方默认的，国内使用性能不佳，建议替换为 清华 Tuna 提供的国内镜像源，速度将有一个较大的提升。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Git 修改提交过的邮箱和用户名</title>
      <link>https://frytea.com/archives/604/</link>
      <pubDate>Mon, 13 Dec 2021 02:00:16 +0000</pubDate>
      <guid>https://frytea.com/archives/604/</guid>
      <description>&lt;p&gt;内网提交需要校验企业邮箱，但有时邮箱设置错误导致 &lt;code&gt;commit&lt;/code&gt; 的邮箱有问题，此时可以通过修改已提交记录中的邮箱来修复，无需重新提交。&lt;/p&gt;
&lt;p&gt;经过检索，发现两种方法，分别适用于修改一次和修改多次，引文在最后都有注明。&lt;/p&gt;</description>
    </item>
    <item>
      <title>使用 LeanCloud 云引擎部署 React Web 应用</title>
      <link>https://frytea.com/archives/603/</link>
      <pubDate>Sun, 12 Dec 2021 14:48:58 +0000</pubDate>
      <guid>https://frytea.com/archives/603/</guid>
      <description>&lt;p&gt;最近在探索 &lt;a href=&#34;https://kubesphere.com.cn&#34;&gt;KubeSphere&lt;/a&gt; 和 &lt;a href=&#34;https://kubernetes.io&#34;&gt;K8s&lt;/a&gt;，东西毫无疑问是好东西，学了在未来也很有用，但是用在个人开发上实在是费用有点高，当然也不太敢用在个人开源项目上，因此我再次开始探索适用于个人全栈应用托管平台。&lt;/p&gt;
&lt;p&gt;提供这类 PaaS 云平台服务的公司有一些，比如 2007 年就开始开发的 &lt;a href=&#34;https://heroku.com&#34;&gt;Heroku&lt;/a&gt;，也有 &lt;a href=&#34;https://vercel.com/&#34;&gt;Vercel&lt;/a&gt; 这类现代化的 Web 应用托管平台，在国内则有 &lt;a href=&#34;https://www.leancloud.cn&#34;&gt;Leancloud&lt;/a&gt; 这种 BaaS 平台也可实现类似功能。&lt;/p&gt;
&lt;h2 id=&#34;背景资料&#34;&gt;背景资料&lt;/h2&gt;
&lt;p&gt;之前做移动端开发就使用过 Leancloud，绝对是国内少数几个能提供给部分免费资源做开发学习使用的良心平台了，使用它来做数据托管非常好用，再也不用担心自己的软件数据库没有保障了。&lt;/p&gt;</description>
    </item>
    <item>
      <title>个人项目</title>
      <link>https://frytea.com/archives/1110/</link>
      <pubDate>Sun, 12 Dec 2021 05:10:00 +0000</pubDate>
      <guid>https://frytea.com/archives/1110/</guid>
      <description>&lt;p&gt;汇集个人做过的项目清单.&lt;/p&gt;
&lt;p&gt;项目名称&lt;/p&gt;
&lt;p&gt;简介&lt;/p&gt;
&lt;p&gt;链接&lt;/p&gt;
&lt;p&gt;BJ-PFD&lt;/p&gt;
&lt;p&gt;基于 Notion 的个人复&lt;/p&gt;</description>
    </item>
    <item>
      <title>周录/49 ｜ 内容为王的时代 ｜ 云原生的时代</title>
      <link>https://frytea.com/archives/1114/</link>
      <pubDate>Fri, 10 Dec 2021 15:29:00 +0000</pubDate>
      <guid>https://frytea.com/archives/1114/</guid>
      <description>&lt;p&gt;2021年第49周，谈谈元原生、互联网以及未来产品以及我们的未来，还有元宇宙&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;2021 年 第&lt;/p&gt;&lt;/blockquote&gt;</description>
    </item>
    <item>
      <title>云原生初体验 ｜ 使用 3C 活动服务器体验 KubeSphere</title>
      <link>https://frytea.com/archives/1254/</link>
      <pubDate>Tue, 07 Dec 2021 15:49:51 +0000</pubDate>
      <guid>https://frytea.com/archives/1254/</guid>
      <description>&lt;p&gt;记录对云原生的初体验，顺带测评 3C云活动价服务器.&lt;/p&gt;
&lt;p&gt;一直对云原生超级感兴趣，自己的博客、图床、资&lt;/p&gt;</description>
    </item>
    <item>
      <title>PVE 内核模块 pve-kernal 编译安装方法</title>
      <link>https://frytea.com/archives/1262/</link>
      <pubDate>Mon, 06 Dec 2021 06:29:16 +0000</pubDate>
      <guid>https://frytea.com/archives/1262/</guid>
      <description>&lt;p&gt;介绍 pve 虚拟化系统内核的编译安装方法.&lt;/p&gt;
&lt;p&gt;以 pve-release-6.x ，基于 debi&lt;/p&gt;</description>
    </item>
    <item>
      <title>GDB 调试 QEMU 源码（跟踪 QMP 协议执行细节）</title>
      <link>https://frytea.com/archives/1203/</link>
      <pubDate>Mon, 06 Dec 2021 06:13:17 +0000</pubDate>
      <guid>https://frytea.com/archives/1203/</guid>
      <description>&lt;p&gt;使用 GDB 跟踪 QEMU 的具体执行细节.&lt;/p&gt;
&lt;p&gt;接 [上文](&lt;a href=&#34;https://www.frytea&#34;&gt;https://www.frytea&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Qemu，KVM，Virsh 概念指南</title>
      <link>https://frytea.com/archives/1214/</link>
      <pubDate>Mon, 06 Dec 2021 06:10:11 +0000</pubDate>
      <guid>https://frytea.com/archives/1214/</guid>
      <description>&lt;p&gt;一次搞懂 qemu、kvm、virsh 区别.&lt;/p&gt;
&lt;p&gt;当你安装了一台Linux，想启动一个KVM虚拟机的&lt;/p&gt;</description>
    </item>
    <item>
      <title>Libvirt domblkinfo 命令源码跟踪记 (GDB)</title>
      <link>https://frytea.com/archives/1257/</link>
      <pubDate>Mon, 06 Dec 2021 06:03:38 +0000</pubDate>
      <guid>https://frytea.com/archives/1257/</guid>
      <description>&lt;p&gt;使用 GDB 跟踪 libvirt 命令执行过程的具体执行细节.&lt;/p&gt;
&lt;p&gt;最近发现环境中 KVM 虚拟机磁&lt;/p&gt;</description>
    </item>
    <item>
      <title>「2021年11月复盘」买了个小太阳很暖和</title>
      <link>https://frytea.com/archives/1101/</link>
      <pubDate>Thu, 02 Dec 2021 14:25:00 +0000</pubDate>
      <guid>https://frytea.com/archives/1101/</guid>
      <description>&lt;p&gt;逐渐感觉自己的头脑和精力不够用，之前有些事情都是自己在做，现在必须开始想办法提效保质适当取舍&lt;/p&gt;
&lt;blockquote&gt;
&lt;/blockquote&gt;</description>
    </item>
    <item>
      <title>使用 Cloud Studio 撰写、预览 Hugo 的配置方法</title>
      <link>https://frytea.com/archives/1265/</link>
      <pubDate>Thu, 02 Dec 2021 06:32:08 +0000</pubDate>
      <guid>https://frytea.com/archives/1265/</guid>
      <description>&lt;p&gt;使用 Cloud Studio 在云端编辑、预览、发布博客。&lt;/p&gt;
&lt;p&gt;![https://cdn-imag&lt;/p&gt;</description>
    </item>
    <item>
      <title>从零构建 Docker 镜像 | 申威下从零构建 debian 并打包为 docker</title>
      <link>https://frytea.com/archives/1242/</link>
      <pubDate>Thu, 02 Dec 2021 02:24:39 +0000</pubDate>
      <guid>https://frytea.com/archives/1242/</guid>
      <description>&lt;p&gt;基于 debootstrap 从零生成最小 debian 并制作 docker 镜像.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;[de&lt;/p&gt;&lt;/blockquote&gt;</description>
    </item>
    <item>
      <title>周录｜「2021总第47周」记账与做事</title>
      <link>https://frytea.com/archives/1102/</link>
      <pubDate>Sat, 27 Nov 2021 12:32:00 +0000</pubDate>
      <guid>https://frytea.com/archives/1102/</guid>
      <description>&lt;p&gt;第一次周日谈(录)&lt;/p&gt;
&lt;p&gt;前几日在逛 「[十年之约](&lt;a href=&#34;https://www.foreverblog.c&#34;&gt;https://www.foreverblog.c&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>从零构建 Docker 镜像 | 基于 busybox 制作 | 深入理解 Docker 镜像构建</title>
      <link>https://frytea.com/archives/1229/</link>
      <pubDate>Fri, 26 Nov 2021 08:16:40 +0000</pubDate>
      <guid>https://frytea.com/archives/1229/</guid>
      <description>&lt;p&gt;基于 busybox 无依赖的构建带有基础 unix 工具集的 docker 镜像.&lt;/p&gt;
&lt;h2 id=&#34;前置知&#34;&gt;前置知&lt;/h2&gt;</description>
    </item>
    <item>
      <title>perl &#39;-&amp;gt;&#39; 和 &#39;::&#39; 的区别 | 方法和函数的区别</title>
      <link>https://frytea.com/archives/1222/</link>
      <pubDate>Wed, 24 Nov 2021 17:38:00 +0000</pubDate>
      <guid>https://frytea.com/archives/1222/</guid>
      <description>&lt;p&gt;最近在看 PVE 源码时看到这样一段： # old code uses PVE::RPCEnviro&lt;/p&gt;</description>
    </item>
    <item>
      <title>perl &#39;-&amp;gt;&#39; 和 &#39;::&#39; 的区别 | 方法和函数的区别</title>
      <link>https://frytea.com/archives/600/</link>
      <pubDate>Wed, 24 Nov 2021 09:38:00 +0000</pubDate>
      <guid>https://frytea.com/archives/600/</guid>
      <description>&lt;p&gt;最近在看 PVE 源码时看到这样一段：&lt;/p&gt;
&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;&#34;&gt;&lt;code class=&#34;language-perl&#34; data-lang=&#34;perl&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# old code uses PVE::RPCEnvironment::get(); 使用冒号表示调用函数&lt;/span&gt;
&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;# new code should use PVE::RPCEnvironment-&amp;gt;get(); 使用箭头表示法调用方法&lt;/span&gt;
&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;sub&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;get&lt;/span&gt; {
&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;return&lt;/span&gt; PVE::RESTEnvironment&lt;span style=&#34;color:#f92672&#34;&gt;-&amp;gt;&lt;/span&gt;get();
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;好奇两种调用方式是什么区别，经过研究，我在这篇文章&lt;sup id=&#34;fnref:1&#34;&gt;&lt;a href=&#34;#fn:1&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;1&lt;/a&gt;&lt;/sup&gt;找到答案，两者差异在于：&lt;/p&gt;</description>
    </item>
    <item>
      <title>最新 2021 Win10 LTSC 20H1 安装激活方法</title>
      <link>https://frytea.com/archives/599/</link>
      <pubDate>Sun, 21 Nov 2021 06:54:27 +0000</pubDate>
      <guid>https://frytea.com/archives/599/</guid>
      <description>&lt;p&gt;我个人日常使用操作系统主要是 Linux 或 MacOS，但在一些特殊情况下，一些工作使用 Windows 桌面处理起来会方便一些（比如 Linux 环境时需要首发企业微信等），于是我会在公司内网云平台或是台式机上安装一个 Win10 桌面系统。&lt;/p&gt;</description>
    </item>
    <item>
      <title>深入理解 Linux 启动过程 | QEMU 启动 linux 内核和自制根文件系统</title>
      <link>https://frytea.com/archives/1272/</link>
      <pubDate>Wed, 17 Nov 2021 03:29:39 +0000</pubDate>
      <guid>https://frytea.com/archives/1272/</guid>
      <description>&lt;p&gt;故事开始的地方，深入 Linux 系统的启动流程，自己编译内核并制作根文件系统，并使用 QEMU 模&lt;/p&gt;</description>
    </item>
    <item>
      <title>两种终端跑分方法介绍 | Linux 下如何跑分</title>
      <link>https://frytea.com/archives/1209/</link>
      <pubDate>Wed, 17 Nov 2021 01:20:21 +0000</pubDate>
      <guid>https://frytea.com/archives/1209/</guid>
      <description>&lt;p&gt;介绍两种 Linux 环境下测试硬件性能的方法.&lt;/p&gt;
&lt;p&gt;在 Linux 环境下如何测试 CPU 等硬件和&lt;/p&gt;</description>
    </item>
    <item>
      <title>把 FireFox 装进 Docker ｜ VPS/群晖 搭建『云端/内网 浏览器』</title>
      <link>https://frytea.com/archives/1181/</link>
      <pubDate>Fri, 12 Nov 2021 15:54:19 +0000</pubDate>
      <guid>https://frytea.com/archives/1181/</guid>
      <description>&lt;p&gt;云端服务器安装远程浏览器。&lt;/p&gt;
&lt;p&gt;为了操作家里的群晖服务器，之前一直是通过 VPN 或是Todesk、向&lt;/p&gt;</description>
    </item>
    <item>
      <title>申威（神/声）（SW）1621 &#43; UOS 20 编译安装 Docker | 容器国产化适配</title>
      <link>https://frytea.com/archives/598/</link>
      <pubDate>Wed, 10 Nov 2021 10:08:00 +0000</pubDate>
      <guid>https://frytea.com/archives/598/</guid>
      <description>&lt;h2 id=&#34;环境&#34;&gt;环境&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;OS: &lt;code&gt;UOS 20 1021 12011.101&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;CPU: &lt;code&gt;SW_64&lt;/code&gt; &lt;code&gt;SW1621&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;步骤&#34;&gt;步骤&lt;/h2&gt;
&lt;h3 id=&#34;本地编译-runc&#34;&gt;本地编译 runc&lt;/h3&gt;
&lt;p&gt;1.解压 runc 源码至 &lt;code&gt;~/go/src/github.com/opencontainers&lt;/code&gt; 目录；&lt;/p&gt;
&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;&#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;~/go/                                                                                
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;└── src                                                                                              
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    └── github.com                                                                                       
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        └── opencontainers                                                                           
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            └── runc
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;2.进入 &lt;code&gt;runc&lt;/code&gt; 主目录，替换 &lt;code&gt;vendor/golang.org/x/sys/unix&lt;/code&gt; 目录为申威平台 &lt;code&gt;golang1.14.1&lt;/code&gt; 源码 &lt;code&gt;go-sw64-1.14.1/src/cmd/vendor/golang.org/x/sys/unix&lt;/code&gt; 目录。&lt;/p&gt;
&lt;p&gt;3.修改 &lt;code&gt;libcontainer/system/syscall_linux_64.go&lt;/code&gt; 文件，在文件头添加 sw64 架构定义 &lt;code&gt;//+build sw64&lt;/code&gt;。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Linux 下新硬盘分区、格式化、挂载全流程</title>
      <link>https://frytea.com/archives/597/</link>
      <pubDate>Tue, 09 Nov 2021 07:45:00 +0000</pubDate>
      <guid>https://frytea.com/archives/597/</guid>
      <description>&lt;p&gt;互联网上搜索到的 Linux 环境新磁盘配置方法资料质量都不尽如人意，因此自己整理了一份，日常 Linux 磁盘分区时查阅足够了，主要是用到了 &lt;code&gt;fdisk&lt;/code&gt; 命令。&lt;/p&gt;
&lt;h2 id=&#34;fdisk-基本使用&#34;&gt;&lt;code&gt;fdisk&lt;/code&gt; 基本使用&lt;/h2&gt;
&lt;p&gt;新增硬盘后，在linux系统下输入 &lt;code&gt;fdisk -l&lt;/code&gt; 命令查看当前磁盘信息：&lt;/p&gt;</description>
    </item>
    <item>
      <title>Linux 解决远程连接的“Gtk-WARNING **: cannot open display;”</title>
      <link>https://frytea.com/archives/595/</link>
      <pubDate>Mon, 08 Nov 2021 10:43:30 +0000</pubDate>
      <guid>https://frytea.com/archives/595/</guid>
      <description>&lt;h2 id=&#34;问题重现&#34;&gt;问题重现&lt;/h2&gt;
&lt;p&gt;在使用 libvirt 管理虚拟机时，有时会用到 virt-manager 提供的图形界面管理虚拟机，查看 vnc 输出等，但是常常会得到如下错误：&lt;/p&gt;
&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;&#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:#f92672&#34;&gt;(&lt;/span&gt;virt-manager:25381&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt;: Gtk-WARNING **: 08:55:23.876: cannot open display:
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;linux-解决&#34;&gt;Linux 解决&lt;/h2&gt;
&lt;p&gt;如果是在 Linux 桌面环境，解决方法很简单，只需要这样连接远程服务器就可以了：&lt;/p&gt;</description>
    </item>
    <item>
      <title>Vim 对比文件差异 | Linux 下同屏查看文件差异并修改</title>
      <link>https://frytea.com/archives/594/</link>
      <pubDate>Mon, 08 Nov 2021 04:31:37 +0000</pubDate>
      <guid>https://frytea.com/archives/594/</guid>
      <description>&lt;p&gt;在 windows 下有如 Beyond Compare 这样的文本对比工具，而在 Linux 其实预装了很好用的文本对比工具 → &lt;code&gt;vimdiff&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;使用方法很简单：&lt;/p&gt;
&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;&#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;vimdiff &lt;span style=&#34;color:#f92672&#34;&gt;[&lt;/span&gt;options&lt;span style=&#34;color:#f92672&#34;&gt;]&lt;/span&gt; file1 file2 &lt;span style=&#34;color:#f92672&#34;&gt;[&lt;/span&gt;file3 &lt;span style=&#34;color:#f92672&#34;&gt;[&lt;/span&gt;file4&lt;span style=&#34;color:#f92672&#34;&gt;]]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;比如这样：&lt;/p&gt;
&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;&#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;vimdiff Release Release.new
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;效果是这样的：&lt;/p&gt;
&lt;p&gt;&lt;img alt=&#34;https://imagehost-cdn.frytea.com/images/2021/11/08/2021-11-08-12-28-16e0dfc839621b06b8.png&#34; loading=&#34;lazy&#34; src=&#34;https://imagehost-cdn.frytea.com/images/2021/11/08/2021-11-08-12-28-16e0dfc839621b06b8.png&#34;&gt;&lt;/p&gt;
&lt;p&gt;可以使用 &lt;code&gt;Ctrl + w + 方向键 # 切换到前／下／上／后一个窗格&lt;/code&gt; 切换窗格，使用 &lt;code&gt;i&lt;/code&gt; 进行编辑，操作同多窗口 &lt;code&gt;Vim&lt;/code&gt; ，使用起来很方便，效果很惊艳，效率很高。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Perl 编译安装 （Linux）</title>
      <link>https://frytea.com/archives/1197/</link>
      <pubDate>Fri, 05 Nov 2021 01:20:18 +0000</pubDate>
      <guid>https://frytea.com/archives/1197/</guid>
      <description>&lt;p&gt;Centos 下演示编译安装 Perl 环境的方法.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Perl&lt;/strong&gt;是[高端](https://&lt;/p&gt;</description>
    </item>
    <item>
      <title>配置 Ubuntu 软件包管理 apt 的国内镜像源（Debian 系通用）</title>
      <link>https://frytea.com/archives/1202/</link>
      <pubDate>Fri, 05 Nov 2021 00:46:42 +0000</pubDate>
      <guid>https://frytea.com/archives/1202/</guid>
      <description>&lt;p&gt;Ubuntu 软件包管理采用国内镜像源的配置方法.&lt;/p&gt;
&lt;p&gt;Ubuntu 是目前较为流行的 Linux 发&lt;/p&gt;</description>
    </item>
    <item>
      <title>Ubuntu 20.04 修改网卡配置</title>
      <link>https://frytea.com/archives/1239/</link>
      <pubDate>Fri, 05 Nov 2021 00:32:22 +0000</pubDate>
      <guid>https://frytea.com/archives/1239/</guid>
      <description>&lt;p&gt;Ubuntu 新版网络配置方法.&lt;/p&gt;
&lt;p&gt;近期常常用到 Ubuntu 20.04 server 镜像，在一&lt;/p&gt;</description>
    </item>
    <item>
      <title>Ubuntu 16.04 网卡配置方法</title>
      <link>https://frytea.com/archives/1269/</link>
      <pubDate>Fri, 05 Nov 2021 00:30:54 +0000</pubDate>
      <guid>https://frytea.com/archives/1269/</guid>
      <description>&lt;p&gt;Ubuntu 旧版网卡配置方法.&lt;/p&gt;
&lt;p&gt;ubuntu 16.04 配置网卡的方法还是比较经典的做法，与&lt;/p&gt;</description>
    </item>
    <item>
      <title>C 实现零空间开销交换两个数的值</title>
      <link>https://frytea.com/archives/1266/</link>
      <pubDate>Wed, 03 Nov 2021 06:48:31 +0000</pubDate>
      <guid>https://frytea.com/archives/1266/</guid>
      <description>&lt;p&gt;C 实现的不引入新变量交换两数的方法.&lt;/p&gt;
&lt;p&gt;最近看到一个问题感觉很有意思：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;“如何在不申请临时变&lt;/p&gt;&lt;/blockquote&gt;</description>
    </item>
    <item>
      <title>Linux 系统时间校对方法</title>
      <link>https://frytea.com/archives/1248/</link>
      <pubDate>Wed, 03 Nov 2021 06:44:16 +0000</pubDate>
      <guid>https://frytea.com/archives/1248/</guid>
      <description>&lt;p&gt;使用 ntp 校对 Linux 系统时间的方法.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;Linux&lt;/code&gt; 中有个 &lt;code&gt;ntp&lt;/code&gt; 包可以自动校&lt;/p&gt;</description>
    </item>
    <item>
      <title>Bash快捷指令</title>
      <link>https://frytea.com/archives/1244/</link>
      <pubDate>Wed, 03 Nov 2021 06:39:21 +0000</pubDate>
      <guid>https://frytea.com/archives/1244/</guid>
      <description>&lt;p&gt;常用指令速查.&lt;/p&gt;
&lt;h2 id=&#34;查看磁盘使用情况命令&#34;&gt;查看磁盘使用情况命令&lt;/h2&gt;
&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;&#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;$ df -lh
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&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;# 查看磁盘使用情况及文件系统挂载位置， -h 为根据大小适当显示&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;$ fdisk -l              &lt;span style=&#34;color:#75715e&#34;&gt;# 查看磁盘分区表及分区结构, -l 获得所有硬盘的分区情况&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;$ du -sh                &lt;span style=&#34;color:#75715e&#34;&gt;# 查看当前目录的大小&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;$ du -lh --max-depth&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:#75715e&#34;&gt;# 查看当前目录下一级子文件和子目录占用的磁盘容量。&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&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;# df -lh&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;文件系统                        容量  已用  可用 已用% 挂载点
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;devtmpfs                        937M     &lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt;  937M    0% /dev
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;tmpfs                           958M     &lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt;  958M    0% /dev/shm
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;tmpfs                           383M  924K  383M    1% /run
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;/dev/mapper/fedora_fedora-root   15G  5.1G   10G   34% /
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;tmpfs                           958M  4.0K  958M    1% /tmp
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;/dev/sda2                      1014M  193M  822M   19% /boot
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;/dev/sda1                       599M  8.5M  591M    2% /boot/efi
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;tmpfs                           192M  4.0K  192M    1% /run/user/0
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&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;# fdisk -l&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Disk /dev/sda：127 GiB，136365211648 字节，266338304 个扇区
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;磁盘型号：Virtual Disk
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;单元：扇区 / &lt;span style=&#34;color:#ae81ff&#34;&gt;1&lt;/span&gt; * 512 &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;512&lt;/span&gt; 字节
&lt;/span&gt;&lt;/span&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:#f92672&#34;&gt;)&lt;/span&gt;：512 字节 / &lt;span style=&#34;color:#ae81ff&#34;&gt;4096&lt;/span&gt; 字节
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;I/O 大小&lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;最小/最佳&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt;：4096 字节 / &lt;span style=&#34;color:#ae81ff&#34;&gt;4096&lt;/span&gt; 字节
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;磁盘标签类型：gpt
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;磁盘标识符：83C725D2-CC2F-428D-9B8F-195886809B76
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;设备          起点      末尾      扇区   大小 类型
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;/dev/sda1     &lt;span style=&#34;color:#ae81ff&#34;&gt;2048&lt;/span&gt;   &lt;span style=&#34;color:#ae81ff&#34;&gt;1230847&lt;/span&gt;   &lt;span style=&#34;color:#ae81ff&#34;&gt;1228800&lt;/span&gt;   600M EFI 系统
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;/dev/sda2  &lt;span style=&#34;color:#ae81ff&#34;&gt;1230848&lt;/span&gt;   &lt;span style=&#34;color:#ae81ff&#34;&gt;3327999&lt;/span&gt;   &lt;span style=&#34;color:#ae81ff&#34;&gt;2097152&lt;/span&gt;     1G Linux 文件系统
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;/dev/sda3  &lt;span style=&#34;color:#ae81ff&#34;&gt;3328000&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;266336255&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;263008256&lt;/span&gt; 125.4G Linux LVM
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Disk /dev/mapper/fedora_fedora-root：15 GiB，16106127360 字节，31457280 个扇区
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;单元：扇区 / &lt;span style=&#34;color:#ae81ff&#34;&gt;1&lt;/span&gt; * 512 &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;512&lt;/span&gt; 字节
&lt;/span&gt;&lt;/span&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:#f92672&#34;&gt;)&lt;/span&gt;：512 字节 / &lt;span style=&#34;color:#ae81ff&#34;&gt;4096&lt;/span&gt; 字节
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;I/O 大小&lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;最小/最佳&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt;：4096 字节 / &lt;span style=&#34;color:#ae81ff&#34;&gt;4096&lt;/span&gt; 字节
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Disk /dev/zram0：957 MiB，1003487232 字节，244992 个扇区
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;单元：扇区 / &lt;span style=&#34;color:#ae81ff&#34;&gt;1&lt;/span&gt; * 4096 &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;4096&lt;/span&gt; 字节
&lt;/span&gt;&lt;/span&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:#f92672&#34;&gt;)&lt;/span&gt;：4096 字节 / &lt;span style=&#34;color:#ae81ff&#34;&gt;4096&lt;/span&gt; 字节
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;I/O 大小&lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;最小/最佳&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt;：4096 字节 / &lt;span style=&#34;color:#ae81ff&#34;&gt;4096&lt;/span&gt; 字节
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id=&#34;git-设置和取消代理&#34;&gt;git 设置和取消代理&lt;/h3&gt;
&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;&#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;git config --global http.proxy http://192.168.6.233:7890
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;git config --global https.proxy https://192.168.6.233:7890
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;git config --global http.proxy http://127.0.0.1:7890
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;git config --global https.proxy https://127.0.0.1:7890
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;只对github进行代理，对国内的仓库不影响
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;git config --global http.https://github.com.proxy http://192.168.6.107:7890
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;git config --global https.https://github.com.proxy https://192.168.6.107:7890
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;git config --global http.https://github.com.proxy http://127.0.0.1:7890
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;git config --global https.https://github.com.proxy https://127.0.0.1:7890
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;git config --global --unset http.proxy
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;git config --global --unset https.proxy
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;npm config delete proxy
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id=&#34;设置和取消代理&#34;&gt;设置和取消代理&lt;/h3&gt;
&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;&#34;&gt;&lt;code class=&#34;language-cpp&#34; data-lang=&#34;cpp&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;export&lt;/span&gt; http_proxy&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;192.168.6.233&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;7890&lt;/span&gt;
&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;export&lt;/span&gt; https_proxy&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;192.168.6.233&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;7890&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&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;export&lt;/span&gt; http_proxy&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;socks5://127.0.0.1:7070&amp;#34;&lt;/span&gt;
&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;export&lt;/span&gt; https_proxy&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;socks5://127.0.0.1:7070&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#960050;background-color:#1e0010&#34;&gt;要取消该设置：&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;1&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;unset http_proxy
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;unsethttps_proxy
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;参考文献&#34;&gt;参考文献&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://www.huaweicloud.com/articles/0ae40c31c4f17389a3313b022bcbdd21.html&#34;&gt;Linux查看磁盘使用情况命令&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://www.runoob.com/w3cnote/linux-view-disk-space.html&#34;&gt;Linux 查看磁盘空间&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://blog.csdn.net/db2china/article/details/84032137&#34;&gt;linux 查看当前目录占用空间&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description>
    </item>
    <item>
      <title>Tcpdump</title>
      <link>https://frytea.com/archives/1204/</link>
      <pubDate>Wed, 03 Nov 2021 06:37:08 +0000</pubDate>
      <guid>https://frytea.com/archives/1204/</guid>
      <description>&lt;p&gt;一个运行在命令行下的抓包工具.&lt;/p&gt;
&lt;p&gt;本文整理转自：[tcpdump参数解析及使用详解](https:/&lt;/p&gt;</description>
    </item>
    <item>
      <title>Vim 一键编译运行 C/C&#43;&#43;</title>
      <link>https://frytea.com/archives/1184/</link>
      <pubDate>Wed, 03 Nov 2021 06:30:19 +0000</pubDate>
      <guid>https://frytea.com/archives/1184/</guid>
      <description>&lt;p&gt;一种按键映射自动编译运行 C/C++ 的方法&lt;/p&gt;
&lt;p&gt;下面这段 &lt;code&gt;vimrc&lt;/code&gt; 配置提供了一个按键映射，实&lt;/p&gt;</description>
    </item>
    <item>
      <title>Vim 多窗口、多文件之间切换</title>
      <link>https://frytea.com/archives/1251/</link>
      <pubDate>Wed, 03 Nov 2021 06:24:33 +0000</pubDate>
      <guid>https://frytea.com/archives/1251/</guid>
      <description>&lt;p&gt;介绍 vim 多窗口以及多文件之间的切换方法&lt;/p&gt;
&lt;h2 id=&#34;一vim-多文件多窗口&#34;&gt;一、vim 多文件、多窗口&lt;/h2&gt;
&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;&#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&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;$ vim file1 file2 ... filen &lt;span style=&#34;color:#75715e&#34;&gt;# 打开所有想要打开的文件&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;或在 vim 中使用以下命令：&lt;/p&gt;</description>
    </item>
    <item>
      <title>vim 代码折叠之设置默认代码不折叠</title>
      <link>https://frytea.com/archives/1235/</link>
      <pubDate>Wed, 03 Nov 2021 06:22:02 +0000</pubDate>
      <guid>https://frytea.com/archives/1235/</guid>
      <description>&lt;p&gt;简单介绍 vim 代码折叠及配置&lt;/p&gt;
&lt;p&gt;配置 &lt;code&gt;foldmethod&lt;/code&gt; 可以定义折叠方式，有6种可选方式&lt;/p&gt;</description>
    </item>
    <item>
      <title>VIM 文件自动添加头部注释的方法</title>
      <link>https://frytea.com/archives/1249/</link>
      <pubDate>Wed, 03 Nov 2021 06:13:38 +0000</pubDate>
      <guid>https://frytea.com/archives/1249/</guid>
      <description>&lt;p&gt;一种 vim 创建文件时自动添加头部注释的方法&lt;/p&gt;
&lt;p&gt;修改 &lt;code&gt;/etc/vimrc&lt;/code&gt; 或 `~/.vim&lt;/p&gt;</description>
    </item>
    <item>
      <title>Vim 安装插件管理器 Vundle</title>
      <link>https://frytea.com/archives/1228/</link>
      <pubDate>Wed, 03 Nov 2021 06:04:30 +0000</pubDate>
      <guid>https://frytea.com/archives/1228/</guid>
      <description>&lt;p&gt;Vundle 是 Vim bundle 的简称,是一个 Vim 插件管理器&lt;/p&gt;
&lt;p&gt;&lt;code&gt;Vundle&lt;/code&gt; 是&lt;/p&gt;</description>
    </item>
    <item>
      <title>「2021年10月复盘 ｜ 正秋时</title>
      <link>https://frytea.com/archives/1107/</link>
      <pubDate>Sun, 31 Oct 2021 16:14:00 +0000</pubDate>
      <guid>https://frytea.com/archives/1107/</guid>
      <description>&lt;p&gt;祝生日快乐。&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;忽然之间 &lt;strong&gt;叶子黄了&lt;/strong&gt;，时节提醒人们别忘感知&lt;strong&gt;时光的更替&lt;/strong&gt;。直到月末也没&lt;/p&gt;&lt;/blockquote&gt;</description>
    </item>
    <item>
      <title>Uname</title>
      <link>https://frytea.com/archives/1201/</link>
      <pubDate>Sun, 31 Oct 2021 03:47:24 +0000</pubDate>
      <guid>https://frytea.com/archives/1201/</guid>
      <description>&lt;p&gt;打印当前计算机和操作系统的名称、版本及其他细节.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;uname&lt;/strong&gt;（_unix name_的简写&lt;/p&gt;</description>
    </item>
    <item>
      <title>Tmux</title>
      <link>https://frytea.com/archives/1224/</link>
      <pubDate>Sat, 30 Oct 2021 16:26:08 +0000</pubDate>
      <guid>https://frytea.com/archives/1224/</guid>
      <description>&lt;p&gt;一个终端复用器。&lt;/p&gt;
&lt;p&gt;Tmux 是一个终端复用器（terminal multiplexer），用起来就&lt;/p&gt;</description>
    </item>
    <item>
      <title>优质软件集</title>
      <link>https://frytea.com/archives/1144/</link>
      <pubDate>Thu, 28 Oct 2021 07:08:22 +0000</pubDate>
      <guid>https://frytea.com/archives/1144/</guid>
      <description>&lt;p&gt;汇总个人在用/用过的优质软件，开源为主，方便查阅并与大家分享.&lt;/p&gt;
&lt;h2 id=&#34;日用软件集&#34;&gt;日用软件集&lt;/h2&gt;
&lt;p&gt;名称&lt;/p&gt;
&lt;p&gt;类别&lt;/p&gt;</description>
    </item>
    <item>
      <title>deb 软件包里都有什么</title>
      <link>https://frytea.com/archives/591/</link>
      <pubDate>Thu, 28 Oct 2021 03:32:28 +0000</pubDate>
      <guid>https://frytea.com/archives/591/</guid>
      <description>&lt;p&gt;日常工作学习常常会在 Debian 系操作系统中完成，特别是最近自己开始打包、安装，发现 .deb 安装包甚至可以包含内核，且 Debian 就是通过这种方式来管理内核的，那么 deb 软件包中究竟有那些内容呢？&lt;/p&gt;</description>
    </item>
    <item>
      <title>Google Adsense 注意事项</title>
      <link>https://frytea.com/archives/590/</link>
      <pubDate>Wed, 27 Oct 2021 16:21:06 +0000</pubDate>
      <guid>https://frytea.com/archives/590/</guid>
      <description>&lt;p&gt;最近刚刚通过了 Google Adsense 的审核，加入了其联盟，兴奋之余不忘思考，既然如此艰难的通过了审核，虽然我也不知道为什么之前为什么一直不通过（没有给出具体原因），我也不知道为什么突然就通过了。总之来之不易，一定加倍珍惜，多多输出好的内容来回报社会。&lt;/p&gt;</description>
    </item>
    <item>
      <title>CDN 中的 「回源HOST」与「源站」</title>
      <link>https://frytea.com/archives/589/</link>
      <pubDate>Wed, 27 Oct 2021 16:11:48 +0000</pubDate>
      <guid>https://frytea.com/archives/589/</guid>
      <description>&lt;p&gt;在配置网站 CDN 时总是搞不清其中「回源HOST」与「源站」的区别，因此在这里简单记录。&lt;/p&gt;
&lt;p&gt;源站和回源HOST的区别：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;源站：源站决定了回源时请求到的&lt;strong&gt;具体IP地址&lt;/strong&gt;。&lt;/li&gt;
&lt;li&gt;回源HOST：回源HOST决定了回源请求访问到该IP地址上的&lt;strong&gt;具体站点&lt;/strong&gt;。回源HOST即&lt;strong&gt;回源域名&lt;/strong&gt;，当源站服务器上提供多个域名服务时，CDN节点回源时在源站访问的具体站点域名。&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;例子一源站是域名&#34;&gt;&lt;strong&gt;例子一：源站是域名&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;如果源站为**&lt;code&gt;www.a.com&lt;/code&gt;&lt;strong&gt;，回源HOST为&lt;/strong&gt;&lt;code&gt;www.b.com&lt;/code&gt;&lt;strong&gt;。那么实际回源是请求到&lt;/strong&gt;&lt;code&gt;www.a.com&lt;/code&gt;&lt;strong&gt;解析到的IP地址其对应主机上的&lt;/strong&gt;&lt;code&gt;www.b.com&lt;/code&gt;**站点。&lt;/p&gt;</description>
    </item>
    <item>
      <title>新 Hugo 博客相关记录笔记</title>
      <link>https://frytea.com/archives/588/</link>
      <pubDate>Wed, 27 Oct 2021 16:10:00 +0000</pubDate>
      <guid>https://frytea.com/archives/588/</guid>
      <description>&lt;p&gt;2021年10月21日，基于以下原因，我打算重建自己的博客，这次直接使用顶级域名：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;http://blog.frytea.com&#34;&gt;blog.frytea.com&lt;/a&gt; 内容太过庞杂，不成体系，很难重新做规整；&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://blog.frytea.com&#34;&gt;blog.frytea.com&lt;/a&gt; 目前采用的付费主题虽然各方面做的都比较均衡，但是在google网站扫描过程中还是发现许多加载缓慢的因素，无法优化；&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://blog.frytae.com&#34;&gt;blog.frytae.com&lt;/a&gt; 作为我的主站申请 google adsense 多次没有通过，原因未知；&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://blog.frytea.com&#34;&gt;blog.frytea.com&lt;/a&gt; 目前主题由于其定位，无法作为一个个人网站的索引，目前是分成两套体系分别进行。&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;新网站目标&#34;&gt;新网站目标&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;内容成体系、有结构、有深度&lt;/li&gt;
&lt;li&gt;可作为个人引导页，引导到我的各种其他站点&lt;/li&gt;
&lt;li&gt;SEO 友好&lt;/li&gt;
&lt;li&gt;包含各种宣传自己的页面：产品集、个人简历等；&lt;/li&gt;
&lt;li&gt;分专题来撰写文章：技术探索、奇思妙想、人生复盘；最终希望每一部分都能作为一本书进行。&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;新网站参考&#34;&gt;新网站参考&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;静态网站生成引擎使用：&lt;a href=&#34;https://gohugo.io&#34;&gt;hugo&lt;/a&gt;；&lt;/li&gt;
&lt;li&gt;网站博客主题基于 &lt;a href=&#34;https://github.com/adityatelange/hugo-PaperMod/&#34;&gt;PaperMod&lt;/a&gt; 进行定制；&lt;/li&gt;
&lt;li&gt;网站评论系统使用 &lt;a href=&#34;https://valine.js.org/&#34;&gt;Valine&lt;/a&gt; 并采用其拓展用用 &lt;a href=&#34;https://github.com/zhaojun1998/Valine-Admin&#34;&gt;Valine-Admin&lt;/a&gt; 强化功能；&lt;/li&gt;
&lt;li&gt;网站背景使用 &lt;a href=&#34;https://www.svgbackgrounds.com&#34;&gt;SVG Background&lt;/a&gt; 生成；&lt;/li&gt;
&lt;li&gt;内容协议采用 &lt;a href=&#34;http://creativecommons.org/licenses/by-nc-sa/4.0/&#34;&gt;知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议&lt;/a&gt;；&lt;/li&gt;
&lt;li&gt;字体参考 《&lt;strong&gt;&lt;a href=&#34;https://ridiqulous.com/chinese-webfont-guide/&#34;&gt;中文网页字体设置方案：从 font-family 到 font-display&lt;/a&gt;&lt;/strong&gt;》进行配置；&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;网站定制开发参考&#34;&gt;网站定制开发参考&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://github.com/adityatelange/hugo-PaperMod/wiki&#34;&gt;PaperMod Wiki&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://dev.to/clairecodes/how-to-create-a-polka-dot-background-with-css-23m0&#34;&gt;How to Create a Polka Dot Background with CSS&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&#34;https://huangzhongde.cn/post/2020-02-20-hugo-comments-plugin-valine/&#34;&gt;Hugo评论插件集成之Valine&lt;/a&gt;&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&#34;https://www.affde.com/zh-CN/how-to-get-adsense-approval.html&#34;&gt;如何在2020年快速获得Adsense批准（提示和技巧）&lt;/a&gt;&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://developers.google.com/search/blog/2014/10/best-practices-for-xml-sitemaps-rssatom&#34;&gt;Best practices for XML sitemaps &amp;amp; RSS/Atom feeds&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://gohugo.io/templates/rss/&#34;&gt;Hugo RSS Templates&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://gohugo.io/templates/sitemap-template/&#34;&gt;Hugo Sitemap Template&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://ridiqulous.com/chinese-webfont-guide/&#34;&gt;中文网页字体设置方案：从 font-family 到 font-display&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;参考博客
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&#34;https://creative.clox.nu&#34;&gt;I&amp;rsquo;m cloxnu&lt;/a&gt;&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&#34;https://huangzhongde.cn&#34;&gt;黄忠德的博客&lt;/a&gt;&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;免责声明参考
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://plumwine.me/terms/&#34;&gt;Plum Wine Blog&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://www.runoob.com/disclaimer&#34;&gt;菜鸟教程&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://ldqk.xyz/disclaimer&#34;&gt;网站免责声明与法律条文&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&#34;http://www.oldding.net/mianzeshengming&#34;&gt;老丁的技术博客免责声明&lt;/a&gt;&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;</description>
    </item>
    <item>
      <title>Homebrew 安装策略（M1芯片 Macbook）</title>
      <link>https://frytea.com/archives/587/</link>
      <pubDate>Wed, 27 Oct 2021 16:08:29 +0000</pubDate>
      <guid>https://frytea.com/archives/587/</guid>
      <description>&lt;p&gt;换了 m1 芯片的 Macbook 之后第一个感受到的就是使用 homebrew 的不一样，由于不同的芯片架构，其安装方法也有不同，在这简单记录。&lt;/p&gt;
&lt;h2 id=&#34;arm-mac-安装步骤&#34;&gt;Arm Mac 安装步骤&lt;/h2&gt;
&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;&#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;# arm homebrew 同时设为国内源&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;/bin/zsh -c &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;$(&lt;/span&gt;curl -fsSL https://gitee.com/huwei1024/HomebrewCN/raw/master/Homebrew.sh&lt;span style=&#34;color:#66d9ef&#34;&gt;)&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&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;# 可在 .bashrc 追加下列内容实现 intel 和 arm 共存&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;alias abrew&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;arch -arm64 /opt/homebrew/bin/brew&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;alias ibrew&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;arch -x86_64 /usr/local/bin/brew&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;安装更新国内-homebrew-镜像源&#34;&gt;安装更新国内 homebrew 镜像源&lt;/h2&gt;
&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;&#34;&gt;&lt;code class=&#34;language-jsx&#34; data-lang=&#34;jsx&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#960050;background-color:#1e0010&#34;&gt;/bin/zsh -c &amp;#34;$(curl -fsSL https://gitee.com/cunkai/HomebrewCN/raw/master/Homebrew.sh)&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;说明&#34;&gt;说明&lt;/h2&gt;
&lt;p&gt;根据官方规划，ARM 版 Homebrew 必须安装在 &lt;code&gt;/opt/homebrew&lt;/code&gt; 路径下，而非此前的 &lt;code&gt;/usr/local/Homebrew&lt;/code&gt;。&lt;/p&gt;</description>
    </item>
    <item>
      <title>pve-kernal 编译安装步骤</title>
      <link>https://frytea.com/archives/586/</link>
      <pubDate>Wed, 20 Oct 2021 01:55:57 +0000</pubDate>
      <guid>https://frytea.com/archives/586/</guid>
      <description>&lt;p&gt;以 pve-release-6.x ，基于 debian buster 为例：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Step1: 配置国内 PVE 镜像源&lt;/li&gt;
&lt;/ul&gt;
&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;&#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;# 配置 pve 软件包国内镜像源&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;$ echo &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;deb https://mirrors.tuna.tsinghua.edu.cn/proxmox/debian buster pve-no-subscription&amp;#34;&lt;/span&gt; &amp;gt; /etc/apt/sources.list.d/pve-no-subscription.list
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;$ wget https://enterprise.proxmox.com/debian/proxmox-ve-release-6.x.gpg -O /etc/apt/trusted.gpg.d/proxmox-release-6.x.gpg
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ul&gt;
&lt;li&gt;Setp2：安装依赖包&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Install build dependencies (i got these from the pve-kernel/debian/control file):&lt;/p&gt;
&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;&#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;apt install asciidoc-base automake bc bison cpio debhelper dh-python file flex gcc git kmod libdw-dev libelf-dev libiberty-dev libnuma-dev libpve-common-perl libslang2-dev libssl-dev libtool lintian lz4 perl-modules python-minimal rsync sed sphinx-common tar xmlto zlib1g-dev
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ul&gt;
&lt;li&gt;Step3：获取 pve-kernel 源码&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Clone proxmox-kernel&lt;/p&gt;</description>
    </item>
    <item>
      <title>Tmux 使用笔记</title>
      <link>https://frytea.com/archives/585/</link>
      <pubDate>Wed, 13 Oct 2021 06:30:27 +0000</pubDate>
      <guid>https://frytea.com/archives/585/</guid>
      <description>&lt;p&gt;Tmux 是一个终端复用器（terminal multiplexer），用起来就离不开。网上有很多 Tmux 使用指南，但是用下来发现还是自己整理一遍才能真正的记住，于是有了这篇文章，本文意在整理 tmux 最常用操作，详细的操作指南请移步 「&lt;a href=&#34;https://man.openbsd.org/OpenBSD-current/man1/tmux.1&#34;&gt;tmux(1) manual page&lt;/a&gt;」。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Cloud-init 概述及 PVE 下创建步骤说明</title>
      <link>https://frytea.com/archives/583/</link>
      <pubDate>Tue, 12 Oct 2021 03:45:28 +0000</pubDate>
      <guid>https://frytea.com/archives/583/</guid>
      <description>&lt;p&gt;Cloud-init 是一个程序，它在启动时在客户机上运行，是用于 &lt;strong&gt;跨平台云实例初始化&lt;/strong&gt; 的行业标准多分发方法。它支持所有主要的 &lt;strong&gt;公共云提供商、私有云基础设施的供应系统和裸机安装&lt;/strong&gt;。&lt;/p&gt;</description>
    </item>
    <item>
      <title>「2021年9月复盘」国庆快乐！</title>
      <link>https://frytea.com/archives/1111/</link>
      <pubDate>Mon, 04 Oct 2021 15:25:00 +0000</pubDate>
      <guid>https://frytea.com/archives/1111/</guid>
      <description>&lt;p&gt;生活需要来点不一样。&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;今天上午一件事情终于尘埃落定，感觉到踏实不少，总结下来就是 **一个正确&lt;/p&gt;&lt;/blockquote&gt;</description>
    </item>
    <item>
      <title>一个 Notion 一站式记账复盘看板系统 ｜ BJ-PFD 正式发布</title>
      <link>https://frytea.com/archives/578/</link>
      <pubDate>Sat, 25 Sep 2021 15:40:00 +0000</pubDate>
      <guid>https://frytea.com/archives/578/</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;今天发生了不少事情，孟晚舟历经千余天终于归国，探访了某通信城，再次回味某一本哈利波特，后被堵在 Apple Store 外面，滑了两下 Pixel 3，汇总了下旧红包，继续设计另一个 full-stack 作品，以及继续努力工作。&lt;/p&gt;</description>
    </item>
    <item>
      <title>原生 clash linux 环境配置方法</title>
      <link>https://frytea.com/archives/577/</link>
      <pubDate>Fri, 24 Sep 2021 02:53:26 +0000</pubDate>
      <guid>https://frytea.com/archives/577/</guid>
      <description>&lt;h2 id=&#34;环境&#34;&gt;环境&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Ubuntu Desktop 20.04 理论适用大部分 Linux 发行版&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://github.com/Dreamacro&#34;&gt;Dreamacro&lt;/a&gt; / &lt;strong&gt;&lt;a href=&#34;https://github.com/Dreamacro/clash&#34;&gt;clash&lt;/a&gt;&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;方法&#34;&gt;方法&lt;/h2&gt;
&lt;h3 id=&#34;步骤一配置-clash-执行程序&#34;&gt;步骤一：配置 clash 执行程序&lt;/h3&gt;
&lt;p&gt;首先从 clash 的github仓拉取稳定版二进制可执行文件&lt;/p&gt;
&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;&#34;&gt;&lt;code class=&#34;language-jsx&#34; data-lang=&#34;jsx&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;wget&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;https&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;//github.com/Dreamacro/clash/releases/download/v1.7.1/clash-linux-amd64-v1.7.1.gz
&lt;/span&gt;&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;&lt;/span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;gzip&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;-&lt;/span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;d&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;clash&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;-&lt;/span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;linux&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;-&lt;/span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;amd64&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;-&lt;/span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;v1&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;.7.1&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;gz&lt;/span&gt;
&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;sudo&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;mv&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;clash&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;-&lt;/span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;linux&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;-&lt;/span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;amd64&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;-&lt;/span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;v1&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;.7.1&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;/&lt;/span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;usr&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;/&lt;/span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;bin&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;/&lt;/span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;clash&lt;/span&gt;
&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;sudo&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;chmod&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;+&lt;/span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;x&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;/&lt;/span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;usr&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;/&lt;/span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;bin&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;/&lt;/span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;clash&lt;/span&gt;
&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;clash&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;-&lt;/span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;v&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#960050;background-color:#1e0010&#34;&gt;#&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;为&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;clash&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;添加绑定低位端口的权限&lt;/span&gt;&lt;span style=&#34;color:#960050;background-color:#1e0010&#34;&gt;，&lt;/span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;这样运行clash的时候无需root权限&lt;/span&gt;
&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;sudo&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;setcap&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;cap_net_bind_service&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;=+&lt;/span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;ep&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;/&lt;/span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;usr&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;/&lt;/span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;bin&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;/&lt;/span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;clash&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id=&#34;步骤二配置-clash&#34;&gt;步骤二：配置 clash&lt;/h3&gt;
&lt;p&gt;此时执行 clash ，不会有任何效果，仅仅提供一个 默认端口监听：&lt;/p&gt;</description>
    </item>
    <item>
      <title>Docker 内部安装 postfix</title>
      <link>https://frytea.com/archives/576/</link>
      <pubDate>Sat, 18 Sep 2021 09:42:36 +0000</pubDate>
      <guid>https://frytea.com/archives/576/</guid>
      <description>&lt;p&gt;今天写 Dockerfile 定制 Docker 镜像需要在内部安装 postfix ，但是其默认安装后会弹出配置界面，DOcker 构建过程是无法进行交互的，结果就是卡在该界面无法继续：&lt;/p&gt;
&lt;p&gt;&lt;img alt=&#34;https://imagehost-cdn.frytea.com/images/2021/09/18/_1631946203798041f1bce8fb47a294.png&#34; loading=&#34;lazy&#34; src=&#34;https://imagehost-cdn.frytea.com/images/2021/09/18/_1631946203798041f1bce8fb47a294.png&#34;&gt;&lt;/p&gt;
&lt;p&gt;搜寻一圈发现一个github仓库（&lt;a href=&#34;https://github.com/cisagov&#34;&gt;cisagov&lt;/a&gt;/&lt;strong&gt;&lt;a href=&#34;https://github.com/cisagov/postfix-docker&#34;&gt;postfix-docker&lt;/a&gt;&lt;/strong&gt;）中打包镜像时也包含了 postfix，在这里找到了解决办法，很简单：&lt;/p&gt;</description>
    </item>
    <item>
      <title>自动递归下载依赖 deb 包 bash 脚本</title>
      <link>https://frytea.com/archives/575/</link>
      <pubDate>Sat, 18 Sep 2021 09:35:23 +0000</pubDate>
      <guid>https://frytea.com/archives/575/</guid>
      <description>&lt;h2 id=&#34;说明&#34;&gt;说明&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;脚本自动递归下载给定包列表deb包及其依赖包，深度3层；&lt;/li&gt;
&lt;li&gt;若指定参数则下载给定的包及其依赖包（目前仅支持指定1个包，不支持多包）；&lt;/li&gt;
&lt;li&gt;若无参数则默认下载列表中给出的包机器依赖包；&lt;/li&gt;
&lt;li&gt;下载到当前目录；&lt;/li&gt;
&lt;li&gt;请提前配置好源。&lt;/li&gt;
&lt;/ul&gt;
&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;&#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;#!/bin/bash
&lt;/span&gt;&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;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;logfile&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;./auto_deps_log
&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;# 需要获取其所依赖包的包&lt;/span&gt;
&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;# 或者用$1，从命令行输入库名字&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;libs&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;gdisk logrotate pciutils systemd lvm2 udev logrotate libfuse2 iptables libnetfilter-conntrack3 libnfnetlink0 libusb-1.0-0 cpio xfsprogs libprotobuf-c1 liblmdb0&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;ret&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&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&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;function&lt;/span&gt; getDepends&lt;span style=&#34;color:#f92672&#34;&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&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&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;   echo &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;fileName is&amp;#34;&lt;/span&gt; $1&amp;gt;&amp;gt;$logfile
&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;# use tr to del &amp;lt; &amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;   ret&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;`&lt;/span&gt;apt-cache depends $1|grep Depends |cut -d: -f2 |tr -d &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;lt;&amp;gt;&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;`&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;   echo $ret|tee  -a $logfile
&lt;/span&gt;&lt;/span&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&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&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;if&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;[&lt;/span&gt; ! -n &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;$*&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;]&lt;/span&gt; ;&lt;span style=&#34;color:#66d9ef&#34;&gt;then&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    echo &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;you have not input a word! get list: &lt;/span&gt;$libs&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;
&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;else&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    echo &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;the list you input is &lt;/span&gt;$*&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    libs&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;$1
&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;fi&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;echo &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;get &lt;/span&gt;$libs&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&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;# download libs dependen. deep in 3&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;i&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt;
&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;while&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;[&lt;/span&gt; $i -lt &lt;span style=&#34;color:#ae81ff&#34;&gt;3&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;]&lt;/span&gt; ;
&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;do&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    let i++
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    echo $i
&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;# download libs&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    newlist&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&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#66d9ef&#34;&gt;for&lt;/span&gt; j in $libs
&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;do&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        added&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;$(&lt;/span&gt;getDepends $j&lt;span style=&#34;color:#66d9ef&#34;&gt;)&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        newlist&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;$newlist&lt;span style=&#34;color:#e6db74&#34;&gt; &lt;/span&gt;$added&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        apt-get download $added $j
&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;done&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    libs&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;$newlist
&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;done&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;参考文献&#34;&gt;参考文献&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://www.jianshu.com/p/31159cd0e2fa&#34;&gt;shell获取命令行参数&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://www.cnblogs.com/faster/p/13887759.html&#34;&gt;apt一键下载deb包及其依赖&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description>
    </item>
    <item>
      <title>Bullet Journal for Notion 之个人财务架构 ｜ 好的设计胜千言</title>
      <link>https://frytea.com/archives/574/</link>
      <pubDate>Mon, 13 Sep 2021 14:41:50 +0000</pubDate>
      <guid>https://frytea.com/archives/574/</guid>
      <description>&lt;p&gt;前些日子发布的 Bullet Journal 模版及其附属看板程序 BJ-PFD 得到许多朋友的关注，看到大家的留言我很开心。根据之前发布的教程，在您的 Notion 中应该有了一个比较完备的 Bullet Journa 复盘模版，并且可以使用 BJ-PFD 看到统计的个人财物报表了。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Bullet Journal for Notion 之快速入门</title>
      <link>https://frytea.com/archives/573/</link>
      <pubDate>Sat, 11 Sep 2021 08:49:10 +0000</pubDate>
      <guid>https://frytea.com/archives/573/</guid>
      <description>&lt;p&gt;前些日子我的 BJ for Notion 辅助看板工具 —— BJ-PFD，专注于个人财务看板的小工具正式发布啦。再公布了预览之后得到许多热心网友的关注，我也真心的希望这个小工具能带给更多人价值。于是今天就带来了这篇《Bullet Journal for Notion 之快速入门》，目的在于快速配置，从注册 Notion 开始，带您快速看到效果。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Windows Terminal 快速快捷键指南</title>
      <link>https://frytea.com/archives/572/</link>
      <pubDate>Fri, 10 Sep 2021 10:06:00 +0000</pubDate>
      <guid>https://frytea.com/archives/572/</guid>
      <description>&lt;ul&gt;
&lt;li&gt;&lt;code&gt;Ctrl + Shift + T&lt;/code&gt; 打开默认配置文件的新标签。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Ctrl + Shift + N&lt;/code&gt; 其他指定配置文件新标签。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Alt + Shift + D&lt;/code&gt; 复制并拆分窗格。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Ctrl + Alt + N&lt;/code&gt; 切换打开的控制台&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Alt&lt;/code&gt; + &lt;code&gt;Shift&lt;/code&gt;+ &lt;code&gt;+&lt;/code&gt; 复制垂直窗格&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Alt&lt;/code&gt; + &lt;code&gt;Shift&lt;/code&gt; + &lt;code&gt;-&lt;/code&gt; 复制水平窗格&lt;/li&gt;
&lt;li&gt;按住 &lt;code&gt;Alt&lt;/code&gt; 键，然后使用光标键在键盘上的 &lt;strong&gt;活动窗格之间切换&lt;/strong&gt;。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Alt + Shift&lt;/code&gt; 并使用光标键相应地&lt;strong&gt;调整窗格&lt;/strong&gt;的大小。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Alt + Shift + W&lt;/code&gt;  或输入终端的标准退出命令（通常是 &lt;code&gt;exit&lt;/code&gt; ）来关闭活动窗格或选项卡。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Ctrl&lt;/code&gt; + &lt;code&gt;+&lt;/code&gt; 和 &lt;code&gt;Ctrl&lt;/code&gt; + &lt;code&gt;-&lt;/code&gt; 来调整活动终端的&lt;strong&gt;文本大小 or&lt;/strong&gt; 按住 &lt;code&gt;Ctrl&lt;/code&gt;  并滚动鼠标滚轮。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Ctrl&lt;/code&gt;  +  ⬆ or ⬇ or &lt;code&gt;Page Up&lt;/code&gt; or &lt;code&gt;Page Down&lt;/code&gt; 键 &lt;strong&gt;滚动视窗&lt;/strong&gt;。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Ctrl + Shift + F&lt;/code&gt; 打开搜索框&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;参考文献&#34;&gt;参考文献&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://zhuanlan.zhihu.com/p/272082726&#34;&gt;Windows Terminal完整指南&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://blog.csdn.net/weixin_42815609/article/details/107451481&#34;&gt;Windows Terminal 窗口/控制台切换快捷键总结&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://www.sitepoint.com/windows-terminal/&#34;&gt;Windows Terminal: The Complete Guide&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description>
    </item>
    <item>
      <title>BJ-PFD2 - 2.快速预览</title>
      <link>https://frytea.com/archives/1131/</link>
      <pubDate>Thu, 09 Sep 2021 23:40:02 +0000</pubDate>
      <guid>https://frytea.com/archives/1131/</guid>
      <description>&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th style=&#34;text-align: center&#34;&gt;BJ-PFD2 文档清单&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: center&#34;&gt;[BJ-PFD2 - 入口](https:/&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;</description>
    </item>
    <item>
      <title>BJ-PFD2 - 1.简介</title>
      <link>https://frytea.com/archives/1133/</link>
      <pubDate>Thu, 09 Sep 2021 22:40:02 +0000</pubDate>
      <guid>https://frytea.com/archives/1133/</guid>
      <description>&lt;p&gt;BJ-PFD 文档清单 BJ-PFD - 简介 BJ-PFD - 快速预览 BJ-PFD - 快速使&lt;/p&gt;</description>
    </item>
    <item>
      <title>BJ-PFD2 - 0.欢迎使用</title>
      <link>https://frytea.com/archives/1132/</link>
      <pubDate>Thu, 09 Sep 2021 21:40:02 +0000</pubDate>
      <guid>https://frytea.com/archives/1132/</guid>
      <description>&lt;p&gt;Bullet Journal Personal Finance Dashboard (BJ-PFD2&lt;/p&gt;</description>
    </item>
    <item>
      <title>Bullet Journal for Notion 之概览</title>
      <link>https://frytea.com/archives/571/</link>
      <pubDate>Thu, 09 Sep 2021 16:31:00 +0000</pubDate>
      <guid>https://frytea.com/archives/571/</guid>
      <description>&lt;p&gt;最近几乎花费全部业余时间制作了一个 BJ for Notion 辅助看板工具，配合我做的 Bj 模版使用。本文主要就是做一个预览，具体的使用方法后面慢慢出文介绍。话不多说，直接看效果吧！&lt;/p&gt;</description>
    </item>
    <item>
      <title>Libpcap 落地包转发及性能调优</title>
      <link>https://frytea.com/archives/570/</link>
      <pubDate>Tue, 07 Sep 2021 07:34:30 +0000</pubDate>
      <guid>https://frytea.com/archives/570/</guid>
      <description>&lt;p&gt;近期接到一个需求，需要使用 libpcap 从某网卡抓包发送到另一张网卡，关于 libpcap 的使用方法在这里不再赘述，网上有很多教程，本文最后会给出一个示例程序。这里记录一个转发效率性能调优的方法。&lt;/p&gt;</description>
    </item>
    <item>
      <title>「2021年8月复盘」秋意浓</title>
      <link>https://frytea.com/archives/1113/</link>
      <pubDate>Sat, 04 Sep 2021 15:32:00 +0000</pubDate>
      <guid>https://frytea.com/archives/1113/</guid>
      <description>&lt;p&gt;日积月累中慢慢改变。&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;解封、搬迁、破壳，要开始寻找更大的世界了。又是一个不眠夜，今夜继续开始下&lt;/p&gt;&lt;/blockquote&gt;</description>
    </item>
    <item>
      <title>一键在 vs code online 中打开任意 github 仓库</title>
      <link>https://frytea.com/archives/568/</link>
      <pubDate>Fri, 03 Sep 2021 09:58:13 +0000</pubDate>
      <guid>https://frytea.com/archives/568/</guid>
      <description>&lt;p&gt;之前有大佬开发过一个项目 &lt;code&gt;[github1s](https://github.com/conwnet/github1s)&lt;/code&gt; ，利用 GitHub action ，仅需在任意 github 仓库在 &lt;code&gt;github&lt;/code&gt; 后面加上 &lt;code&gt;1s&lt;/code&gt; 即可在一个在线的 VS code 中打开这个项目。&lt;/p&gt;
&lt;p&gt;&lt;img alt=&#34;https://imagehost-cdn.frytea.com/images/2021/09/03/2021-09-03-5.51.4487ec1eade813be27.png&#34; loading=&#34;lazy&#34; src=&#34;https://imagehost-cdn.frytea.com/images/2021/09/03/2021-09-03-5.51.4487ec1eade813be27.png&#34;&gt;&lt;/p&gt;
&lt;p&gt;就在前不久，Github 官方发布了类似的功能，进一步简化了这个过程，仅需在仓库的 web 页面，按下 &lt;code&gt;.&lt;/code&gt; 键，没错就是键盘上那个句号，github 就会打开一个在线的 VS code 并开启该仓库，您就可以更方便的浏览这个仓库了。&lt;/p&gt;</description>
    </item>
    <item>
      <title>虚拟机 img 镜像密码修改</title>
      <link>https://frytea.com/archives/567/</link>
      <pubDate>Fri, 03 Sep 2021 07:29:19 +0000</pubDate>
      <guid>https://frytea.com/archives/567/</guid>
      <description>&lt;p&gt;本文介绍使用 &lt;code&gt;libguestfs-tools&lt;/code&gt; 修改镜像文件密码的方法。&lt;/p&gt;
&lt;h2 id=&#34;步骤&#34;&gt;步骤&lt;/h2&gt;
&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;&#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;# 环境&lt;/span&gt;
&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;# CentOS Linux release 7.9.2009 (AltArch)&lt;/span&gt;
&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;# 鲲鹏 ARM 服务器&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id=&#34;第一步检查并修改qemu访问虚拟机镜像的权限&#34;&gt;第一步：检查并修改qemu访问虚拟机镜像的权限&lt;/h3&gt;
&lt;p&gt;修改 qemu 配置文件 &lt;code&gt;/etc/libvirt/qemu.conf&lt;/code&gt;，将 &lt;code&gt;user = &amp;quot;root&amp;quot;&lt;/code&gt; 和 &lt;code&gt;group = &amp;quot;root&amp;quot;&lt;/code&gt;  注释取消，并重启 libvirtd 或重启宿主机。&lt;/p&gt;</description>
    </item>
    <item>
      <title>GDB 调试 QEMU 源码跟踪 QMP 协议执行</title>
      <link>https://frytea.com/archives/566/</link>
      <pubDate>Fri, 03 Sep 2021 01:53:08 +0000</pubDate>
      <guid>https://frytea.com/archives/566/</guid>
      <description>&lt;p&gt;接上文，通过跟踪 libvirt 的源码，找到 &lt;code&gt;virsh domblkinfo&lt;/code&gt; 最终是使用 &lt;a href=&#34;https://wiki.qemu.org/Documentation/QMP&#34;&gt;QMP&lt;/a&gt;  协议从 QEMU 获取到关键字为 &lt;code&gt;query-block&lt;/code&gt; 的数据，其中带有 &lt;code&gt;wr_highest_offset&lt;/code&gt; 字段，该字段被 libvirt 认定为 磁盘利用率中 &lt;code&gt;Allocation&lt;/code&gt; 值的来源。&lt;/p&gt;
&lt;p&gt;今天就尝试在 QEMU 中找到获取 &lt;code&gt;wr_highest_offset&lt;/code&gt;  字段的方法。&lt;/p&gt;</description>
    </item>
    <item>
      <title>GDB 调试 libvirt 源码之 domblkinfo 命令源码跟踪记</title>
      <link>https://frytea.com/archives/565/</link>
      <pubDate>Thu, 02 Sep 2021 05:42:00 +0000</pubDate>
      <guid>https://frytea.com/archives/565/</guid>
      <description>&lt;p&gt;最近发现环境中 KVM 虚拟机磁盘利用率查不准，使用 virsh 命令查看磁盘使用情况得到如下结果：&lt;/p&gt;
&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;&#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;# virsh domblkinfo 20 vda --human&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Capacity:       2.000 GiB
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Allocation:     2.000 GiB
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Physical:       2.000 GiB
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;显然是有问题的，正常的数值三个应该不通，进入系统查看磁盘使用率也仅有 2% 左右，因此试图通过检查源码的方式查看是否正确。&lt;/p&gt;</description>
    </item>
    <item>
      <title>解决 Clash for windows 端口为 0 导致无法使用</title>
      <link>https://frytea.com/archives/564/</link>
      <pubDate>Mon, 30 Aug 2021 01:58:33 +0000</pubDate>
      <guid>https://frytea.com/archives/564/</guid>
      <description>&lt;p&gt;今天更新完 Windows 重启后发现上不了网了，检查 clash for windows 发现监听端口为 &lt;strong&gt;0&lt;/strong&gt; 。&lt;/p&gt;
&lt;p&gt;&lt;img alt=&#34;https://imagehost-cdn.frytea.com/images/2021/08/30/20210830095030627b1fa801f19241.png&#34; loading=&#34;lazy&#34; src=&#34;https://imagehost-cdn.frytea.com/images/2021/08/30/20210830095030627b1fa801f19241.png&#34;&gt;&lt;/p&gt;
&lt;p&gt;这就不正常了，检查了一下 &lt;code&gt;C:\Users\&amp;lt;username&amp;gt;\.config\clash\logs&lt;/code&gt; 的日志，发现这行报错：&lt;/p&gt;
&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;&#34;&gt;&lt;code class=&#34;language-perl&#34; data-lang=&#34;perl&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;level&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;error msg&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;Start Mixed(http and socks) server error: listen tcp 127.0.0.1:7890: bind: An attempt was made to access a socket in a way forbidden by its access permissions.&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;貌似是端口无法被正常绑定，网上找了一下原因，发现遇到该问题的人不少，大致这样解决：&lt;/p&gt;</description>
    </item>
    <item>
      <title>Perl 程序后台执行示例</title>
      <link>https://frytea.com/archives/563/</link>
      <pubDate>Thu, 26 Aug 2021 03:51:48 +0000</pubDate>
      <guid>https://frytea.com/archives/563/</guid>
      <description>&lt;p&gt;最近阅读 PVE 源码发现一处源码这样使用了 &lt;code&gt;fork()&lt;/code&gt; 方法：&lt;/p&gt;
&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;&#34;&gt;&lt;code class=&#34;language-perl&#34; data-lang=&#34;perl&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;$spid &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; fork();
&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;if&lt;/span&gt; (&lt;span style=&#34;color:#f92672&#34;&gt;!&lt;/span&gt;defined ($spid)) {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	    die &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;can&amp;#39;t put server into background - fork failed&amp;#34;&lt;/span&gt;;
&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;elsif&lt;/span&gt; ($spid) { &lt;span style=&#34;color:#75715e&#34;&gt;# parent&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	    exit (&lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt;);
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;自己写示例发现这种方法可以使程序进入后台执行状态，大概原理是 &lt;strong&gt;fork 子进程，退出主进程，使得程序被 1 号父进程接管，在终端表现则是进入了后台执行状态&lt;/strong&gt;。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Perl 面向对象之基类(use base)</title>
      <link>https://frytea.com/archives/562/</link>
      <pubDate>Wed, 25 Aug 2021 08:39:33 +0000</pubDate>
      <guid>https://frytea.com/archives/562/</guid>
      <description>&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;&#34;&gt;&lt;code class=&#34;language-perl&#34; data-lang=&#34;perl&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;use&lt;/span&gt; base somemodule;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&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;# 相当于以下两句的结合：&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&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;BEGIN&lt;/span&gt;{
&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;use&lt;/span&gt; somemodule ();
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    push @ISA, &lt;span style=&#34;color:#e6db74&#34;&gt;qw(somemodule)&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&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;# 也可以同时 use base 两个或者两个以上的模块，即多继承，例如：&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&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;use&lt;/span&gt; base &lt;span style=&#34;color:#e6db74&#34;&gt;qw(Foo Bar)&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&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;BEGIN&lt;/span&gt; {
&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;use&lt;/span&gt; Foo ();
&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;use&lt;/span&gt; Bar ();
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    push @ISA, &lt;span style=&#34;color:#e6db74&#34;&gt;qw(Foo Bar)&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ul&gt;
&lt;li&gt;&lt;code&gt;Perl&lt;/code&gt;  里 类方法通过 &lt;code&gt;@ISA&lt;/code&gt; 数组继承，这个数组里面包含其他包（类）的名字，变量的继承必须明确设定。&lt;/li&gt;
&lt;li&gt;多继承就是这个 &lt;code&gt;@ISA&lt;/code&gt; 数组包含多个类（包）名字。&lt;/li&gt;
&lt;li&gt;通过 &lt;code&gt;@ISA&lt;/code&gt; 只能继承&lt;strong&gt;方法&lt;/strong&gt;，&lt;strong&gt;不能继承数据&lt;/strong&gt;。&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;参考文献&#34;&gt;参考文献&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://www.runoob.com/perl/perl-object-oriented.html&#34;&gt;Perl 面向对象&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://blog.csdn.net/zll01/article/details/4520237&#34;&gt;Perl 中的 use base 的用法&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description>
    </item>
    <item>
      <title>Perl 模块路径指定（调试环境）</title>
      <link>https://frytea.com/archives/561/</link>
      <pubDate>Wed, 25 Aug 2021 08:33:50 +0000</pubDate>
      <guid>https://frytea.com/archives/561/</guid>
      <description>&lt;p&gt;在调试 Perl 测试程序时，常常需要在测试路劲执行 Perl 脚本，相应的 &lt;code&gt;.pm&lt;/code&gt; 模块测试程序也需并不在 Perl 默认的模块路径下，使用以下语句即可指定模块检索路径。&lt;/p&gt;
&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;&#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/perl
&lt;/span&gt;&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;&lt;/span&gt;use lib &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;./&amp;#39;&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;use Person;
&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;# Person 包模块与当前脚本同级，可用上面两行代码指定包位置&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;...
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;参考文献&#34;&gt;参考文献&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://blog.csdn.net/ganmao/article/details/2733872&#34;&gt;Perl模块安装到非默认路径及其使用&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://blog.sina.com.cn/s/blog_3fe961ae0102vikm.html&#34;&gt;两种指定Perl模块目录的方法(PERLLIB和use lib)&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description>
    </item>
    <item>
      <title>QEMU 编译报错 undefined reference to g_app_info_launch_default_for_uri_finish 解决过程</title>
      <link>https://frytea.com/archives/560/</link>
      <pubDate>Fri, 20 Aug 2021 03:56:31 +0000</pubDate>
      <guid>https://frytea.com/archives/560/</guid>
      <description>&lt;p&gt;编译 QEMU 时报如下错误：&lt;/p&gt;
&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;&#34;&gt;&lt;code class=&#34;language-powershell&#34; data-lang=&#34;powershell&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;/usr/lib/gcc/x86_64-redhat-linux/&lt;span style=&#34;color:#ae81ff&#34;&gt;4.8&lt;/span&gt;.&lt;span style=&#34;color:#ae81ff&#34;&gt;5&lt;/span&gt;/../../../../lib64/libgtk-&lt;span style=&#34;color:#ae81ff&#34;&gt;3&lt;/span&gt;.so&lt;span style=&#34;color:#960050;background-color:#1e0010&#34;&gt;:&lt;/span&gt; undefined reference to `g_app_info_launch_default_for_uri_finish&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;/usr/lib/gcc/x86_64-redhat-linux/4.8.5/../../../../lib64/libgtk-3.so: undefined reference to `g_type_check_instance_is_fundamentally_a&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;/usr/lib/gcc/x86_64-redhat-linux/&lt;span style=&#34;color:#ae81ff&#34;&gt;4.8&lt;/span&gt;.&lt;span style=&#34;color:#ae81ff&#34;&gt;5&lt;/span&gt;/../../../../lib64/libgtk-&lt;span style=&#34;color:#ae81ff&#34;&gt;3&lt;/span&gt;.so&lt;span style=&#34;color:#960050;background-color:#1e0010&#34;&gt;:&lt;/span&gt; undefined reference to `g_app_info_launch_default_for_uri_async&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;/usr/lib/gcc/x86_64-redhat-linux/4.8.5/../../../../lib64/libgtk-3.so: undefined reference to `g_strv_contains&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;/usr/lib/gcc/x86_64-redhat-linux/&lt;span style=&#34;color:#ae81ff&#34;&gt;4.8&lt;/span&gt;.&lt;span style=&#34;color:#ae81ff&#34;&gt;5&lt;/span&gt;/../../../../lib64/libgtk-&lt;span style=&#34;color:#ae81ff&#34;&gt;3&lt;/span&gt;.so&lt;span style=&#34;color:#960050;background-color:#1e0010&#34;&gt;:&lt;/span&gt; undefined reference to `g_list_model_get_type&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;/usr/lib/gcc/x86_64-redhat-linux/4.8.5/../../../../lib64/libgtk-3.so: undefined reference to `g_drive_is_removable&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;/usr/lib/gcc/x86_64-redhat-linux/&lt;span style=&#34;color:#ae81ff&#34;&gt;4.8&lt;/span&gt;.&lt;span style=&#34;color:#ae81ff&#34;&gt;5&lt;/span&gt;/../../../../lib64/libgtk-&lt;span style=&#34;color:#ae81ff&#34;&gt;3&lt;/span&gt;.so&lt;span style=&#34;color:#960050;background-color:#1e0010&#34;&gt;:&lt;/span&gt; undefined reference to `g_application_get_resource_base_path&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;/usr/lib/gcc/x86_64-redhat-linux/4.8.5/../../../../lib64/libgtk-3.so: undefined reference to `g_log_structured_standard&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;/usr/lib/gcc/x86_64-redhat-linux/&lt;span style=&#34;color:#ae81ff&#34;&gt;4.8&lt;/span&gt;.&lt;span style=&#34;color:#ae81ff&#34;&gt;5&lt;/span&gt;/../../../../lib64/libgtk-&lt;span style=&#34;color:#ae81ff&#34;&gt;3&lt;/span&gt;.so&lt;span style=&#34;color:#960050;background-color:#1e0010&#34;&gt;:&lt;/span&gt; undefined reference to `g_type_get_instance_count&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;/usr/lib/gcc/x86_64-redhat-linux/4.8.5/../../../../lib64/libgtk-3.so: undefined reference to `g_list_model_get_n_items&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;/usr/lib/gcc/x86_64-redhat-linux/&lt;span style=&#34;color:#ae81ff&#34;&gt;4.8&lt;/span&gt;.&lt;span style=&#34;color:#ae81ff&#34;&gt;5&lt;/span&gt;/../../../../lib64/libgtk-&lt;span style=&#34;color:#ae81ff&#34;&gt;3&lt;/span&gt;.so&lt;span style=&#34;color:#960050;background-color:#1e0010&#34;&gt;:&lt;/span&gt; undefined reference to `g_file_enumerator_iterate&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;/usr/lib/gcc/x86_64-redhat-linux/4.8.5/../../../../lib64/libgtk-3.so: undefined reference to `g_param_spec_get_name_quark&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;/usr/lib/gcc/x86_64-redhat-linux/&lt;span style=&#34;color:#ae81ff&#34;&gt;4.8&lt;/span&gt;.&lt;span style=&#34;color:#ae81ff&#34;&gt;5&lt;/span&gt;/../../../../lib64/libgtk-&lt;span style=&#34;color:#ae81ff&#34;&gt;3&lt;/span&gt;.so&lt;span style=&#34;color:#960050;background-color:#1e0010&#34;&gt;:&lt;/span&gt; undefined reference to `g_list_model_get_item&lt;span style=&#34;color:#960050;background-color:#1e0010&#34;&gt;&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;collect2&lt;span style=&#34;color:#960050;background-color:#1e0010&#34;&gt;:&lt;/span&gt; error&lt;span style=&#34;color:#960050;background-color:#1e0010&#34;&gt;:&lt;/span&gt; ld returned &lt;span style=&#34;color:#ae81ff&#34;&gt;1&lt;/span&gt; exit status
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;make[&lt;span style=&#34;color:#ae81ff&#34;&gt;1&lt;/span&gt;]&lt;span style=&#34;color:#960050;background-color:#1e0010&#34;&gt;:&lt;/span&gt; *** [qemu-system-x86_64] Error &lt;span style=&#34;color:#ae81ff&#34;&gt;1&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;make&lt;span style=&#34;color:#960050;background-color:#1e0010&#34;&gt;:&lt;/span&gt; *** [subdir-x86_64-softmmu] Error &lt;span style=&#34;color:#ae81ff&#34;&gt;2&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;先看一下报错的动态链接库依赖了哪些库：&lt;/p&gt;</description>
    </item>
    <item>
      <title>鲲鹏ARM环境编译升级虚拟化组件（QEMU&#43;libvirt）</title>
      <link>https://frytea.com/archives/559/</link>
      <pubDate>Wed, 18 Aug 2021 01:57:00 +0000</pubDate>
      <guid>https://frytea.com/archives/559/</guid>
      <description>&lt;p&gt;在 鲲鹏 arm 环境下可以直接使用 yum 安装相关虚拟化组件（以 centos 为例）：&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;yum -y install qemu* libvirt* AAVMF virt-install
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;但是软件库中的虚拟化组件版本较老，不支持 &lt;code&gt;spice&lt;/code&gt; 等，而且对端口有限制，无法使用 &lt;code&gt;virt-manager&lt;/code&gt; ，也无法对接 openstack 使用，因此需要分别升级 QEMU， libvirt。&lt;/p&gt;</description>
    </item>
    <item>
      <title>【爱发电】入驻声明</title>
      <link>https://frytea.com/archives/558/</link>
      <pubDate>Sat, 14 Aug 2021 12:53:00 +0000</pubDate>
      <guid>https://frytea.com/archives/558/</guid>
      <description>&lt;p&gt;本人已入驻爱发电，希望喜欢我开发作品的小伙伴依个人意愿支持我，赞赏就是为您想要的世界投票。&lt;/p&gt;
&lt;p&gt;我的作品集在这里：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://blog.frytea.com/production.html&#34;&gt;https://blog.frytea.com/production.html&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;我的爱发电主页：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://afdian.net/@frytea&#34;&gt;https://afdian.net/@frytea&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description>
    </item>
    <item>
      <title>BJ-PFD - PFD 使用指南</title>
      <link>https://frytea.com/archives/1127/</link>
      <pubDate>Tue, 10 Aug 2021 12:40:02 +0000</pubDate>
      <guid>https://frytea.com/archives/1127/</guid>
      <description>&lt;p&gt;BJ-PFD 文档清单 BJ-PFD - 简介 BJ-PFD - 快速预览 BJ-PFD - 快速使&lt;/p&gt;</description>
    </item>
    <item>
      <title>一键修改Windows远程桌面（RDP）端口号</title>
      <link>https://frytea.com/archives/555/</link>
      <pubDate>Tue, 10 Aug 2021 03:25:36 +0000</pubDate>
      <guid>https://frytea.com/archives/555/</guid>
      <description>&lt;p&gt;本文主要内容来微软官方文档，命令未 PowerShell 命令，管理员权限运行，最后给出链接。&lt;/p&gt;
&lt;p&gt;若要查看当前 RDP 端口，可使用以下 PowerShell 命令：&lt;/p&gt;
&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;&#34;&gt;&lt;code class=&#34;language-powershell&#34; data-lang=&#34;powershell&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Get-ItemProperty -Path &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;HKLM:\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp&amp;#39;&lt;/span&gt; -name &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;PortNumber&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;若要修改 RDP 端口，可使用以下命令（以3390为例）：&lt;/p&gt;</description>
    </item>
    <item>
      <title>BJ-PFD - BJ 使用指南</title>
      <link>https://frytea.com/archives/1130/</link>
      <pubDate>Tue, 10 Aug 2021 02:40:02 +0000</pubDate>
      <guid>https://frytea.com/archives/1130/</guid>
      <description>&lt;p&gt;BJ-PFD 文档清单 BJ-PFD - 简介 BJ-PFD - 快速预览 BJ-PFD - 快速使&lt;/p&gt;</description>
    </item>
    <item>
      <title>BJ-PFD - 快速开始</title>
      <link>https://frytea.com/archives/1124/</link>
      <pubDate>Mon, 09 Aug 2021 23:40:02 +0000</pubDate>
      <guid>https://frytea.com/archives/1124/</guid>
      <description>&lt;p&gt;BJ-PFD 文档清单 BJ-PFD - 简介 BJ-PFD - 快速预览 BJ-PFD - 快速使&lt;/p&gt;</description>
    </item>
    <item>
      <title>BJ-PFD - 快速预览</title>
      <link>https://frytea.com/archives/1129/</link>
      <pubDate>Mon, 09 Aug 2021 22:40:02 +0000</pubDate>
      <guid>https://frytea.com/archives/1129/</guid>
      <description>&lt;p&gt;BJ-PFD 文档清单 BJ-PFD - 简介 BJ-PFD - 快速预览 BJ-PFD - 快速使&lt;/p&gt;</description>
    </item>
    <item>
      <title>BJ-PFD - 简介</title>
      <link>https://frytea.com/archives/1121/</link>
      <pubDate>Mon, 09 Aug 2021 21:40:02 +0000</pubDate>
      <guid>https://frytea.com/archives/1121/</guid>
      <description>&lt;p&gt;BJ-PFD 文档清单 BJ-PFD - 简介 BJ-PFD - 快速预览 BJ-PFD - 快速使&lt;/p&gt;</description>
    </item>
    <item>
      <title>BJ-PFD(请升级)</title>
      <link>https://frytea.com/archives/1126/</link>
      <pubDate>Mon, 09 Aug 2021 20:40:02 +0000</pubDate>
      <guid>https://frytea.com/archives/1126/</guid>
      <description>&lt;p&gt;Bullet Journal Personal Finance Dashboard (BJ-PFD)&lt;/p&gt;</description>
    </item>
    <item>
      <title>Mac 下解决 zsh: no matches found: postcss@^7</title>
      <link>https://frytea.com/archives/554/</link>
      <pubDate>Sun, 08 Aug 2021 11:22:24 +0000</pubDate>
      <guid>https://frytea.com/archives/554/</guid>
      <description>&lt;p&gt;mac开发引入 tailwindcss 库时遇到如下错误：&lt;/p&gt;
&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;&#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;zsh: no matches found: postcss@^7
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;可以这样解决：&lt;/p&gt;
&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;&#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;# 官网给出的命令如下&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;npm install -D tailwindcss@npm:@tailwindcss/postcss7-compat postcss@&lt;span style=&#34;color:#ae81ff&#34;&gt;\^&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;7&lt;/span&gt; autoprefixer@&lt;span style=&#34;color:#ae81ff&#34;&gt;\^&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;9&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&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;# mac的zsh中需要这样，因为错误的 ^ 解析&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;npm install -D tailwindcss@npm:@tailwindcss/postcss7-compat postcss@^7 autoprefixer@^9
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;参考文献&#34;&gt;参考文献&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://github.com/ohmyzsh/ohmyzsh/issues/449&#34;&gt;zsh: no matches found: HEAD^ #449&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://github.com/tailwindlabs/tailwindcss/discussions/3575&#34;&gt;zsh: no matches found: postcss@^7 #3575&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description>
    </item>
    <item>
      <title>解决OpenVPN证书过期问题</title>
      <link>https://frytea.com/archives/553/</link>
      <pubDate>Sun, 01 Aug 2021 15:36:00 +0000</pubDate>
      <guid>https://frytea.com/archives/553/</guid>
      <description>&lt;p&gt;使用 Synology 提供的 VPN Server 一阵子，突然用不了了，大意是说 SSL 证书过期了，但是不知道如何解决，网络搜索也没有结果，试过了重置套件，无法解决。&lt;/p&gt;
&lt;p&gt;最后查阅文档发现，VPN Server 是依赖了群晖设置中的证书。&lt;/p&gt;</description>
    </item>
    <item>
      <title>「2021年7月复盘」灾前大爱!</title>
      <link>https://frytea.com/archives/1105/</link>
      <pubDate>Sun, 01 Aug 2021 15:35:00 +0000</pubDate>
      <guid>https://frytea.com/archives/1105/</guid>
      <description>&lt;p&gt;本不想熬夜的，但是每每想到身边正在经历的这一切自然灾害，就难以入眠。也好，七月结束，迎来八月，在这个&lt;/p&gt;</description>
    </item>
    <item>
      <title>2021 上半年博客「经营」报告</title>
      <link>https://frytea.com/archives/549/</link>
      <pubDate>Fri, 09 Jul 2021 16:05:00 +0000</pubDate>
      <guid>https://frytea.com/archives/549/</guid>
      <description>&lt;p&gt;2018.10.07 开始建站以来，我的个人博客已经上线运营快三年啦，一直没有做过所谓「经营报告」，这个词也是有点夸张了，只是来简单做一下流量统计分析罢了。&lt;/p&gt;
&lt;p&gt;说来也是偶然，也是看到 &lt;a href=&#34;https://get233.com/archives/2016-blog-analytics-report.html&#34;&gt;这篇文章&lt;/a&gt; 的突发奇想，发现自己从来没有写文章好好分析过自己的网站流量，甚至于前一阵子我都为网站流量带来的资费问题发愁了，都没有想起来做一个这样的报告，就趁这个年中的机会，做一个上半年博客「简单经营」报告吧。&lt;/p&gt;</description>
    </item>
    <item>
      <title>virt-manager 启动提示 virt qemu-sock no such file or directory</title>
      <link>https://frytea.com/archives/548/</link>
      <pubDate>Fri, 09 Jul 2021 10:08:00 +0000</pubDate>
      <guid>https://frytea.com/archives/548/</guid>
      <description>&lt;p&gt;检查后应该是 &lt;code&gt;virtqemud&lt;/code&gt; 服务没起来导致的，编译安装默认生成的服务路径在 &lt;code&gt;/usr/local/*&lt;/code&gt; 下，而我们指定了安装在默认位置 &lt;code&gt;/usr&lt;/code&gt; ，参考 systemd 无法启动的解决方法即可解决该问题。&lt;/p&gt;
&lt;p&gt;首先看一下 &lt;code&gt;/usr/sbin/virtqemud&lt;/code&gt; 这个文件是存在的，下面继续操作，首先使能该服务。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Centos7.6 下编译安装 Libvirt 7.5</title>
      <link>https://frytea.com/archives/546/</link>
      <pubDate>Wed, 07 Jul 2021 06:47:00 +0000</pubDate>
      <guid>https://frytea.com/archives/546/</guid>
      <description>&lt;p&gt;&lt;code&gt;libvirt&lt;/code&gt; 是目前使用最为广泛的对KVM虚拟机进行管理的工具和 &lt;code&gt;API&lt;/code&gt; 。 &lt;code&gt;Libvirtd&lt;/code&gt; 是一个 &lt;code&gt;daemon&lt;/code&gt; 进程，可以被本地的 &lt;code&gt;virsh&lt;/code&gt; 调用，也可以被远程的 &lt;code&gt;virsh&lt;/code&gt; 调用， &lt;code&gt;Libvirtd&lt;/code&gt; 调用 &lt;code&gt;qemu-kvm&lt;/code&gt; 操作虚拟机。下面介绍 Centos7.6 下编译安装 Libvirt 7.5 的方法。&lt;/p&gt;</description>
    </item>
    <item>
      <title>C实现不用临时变量交换两个数的值（一行代码）</title>
      <link>https://frytea.com/archives/545/</link>
      <pubDate>Wed, 07 Jul 2021 03:19:00 +0000</pubDate>
      <guid>https://frytea.com/archives/545/</guid>
      <description>&lt;p&gt;最近看到一个问题感觉很有意思：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;“如何在不申请临时变量的情况下交换两个数的值？”&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;思考许久没有思路，查阅一番发现方法不少，在这里介绍四种方法：&lt;/p&gt;
&lt;h2 id=&#34;方法一&#34;&gt;方法一&lt;/h2&gt;
&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;&#34;&gt;&lt;code class=&#34;language-c&#34; data-lang=&#34;c&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;void&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;swap&lt;/span&gt;(&lt;span style=&#34;color:#66d9ef&#34;&gt;int&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;*&lt;/span&gt;p, &lt;span style=&#34;color:#66d9ef&#34;&gt;int&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;*&lt;/span&gt;q)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;{
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &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:#f92672&#34;&gt;*&lt;/span&gt;a &lt;span style=&#34;color:#f92672&#34;&gt;^&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;*&lt;/span&gt;b;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;*&lt;/span&gt;b &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;*&lt;/span&gt;b &lt;span style=&#34;color:#f92672&#34;&gt;^&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;*&lt;/span&gt;a;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &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:#f92672&#34;&gt;*&lt;/span&gt;a &lt;span style=&#34;color:#f92672&#34;&gt;^&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;*&lt;/span&gt;b;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;blockquote&gt;
&lt;p&gt;提示：异或运算符 &lt;code&gt;^&lt;/code&gt; 也称 &lt;code&gt;XOR&lt;/code&gt; 运算符，它的规则是若参加运算的两个二进位同号，则结果为 &lt;code&gt;0&lt;/code&gt; （假）；异号为 &lt;code&gt;1&lt;/code&gt;（真）。即 &lt;code&gt;0 ^ 0 = 0&lt;/code&gt; , &lt;code&gt;0 ^ 1 = 1&lt;/code&gt; , &lt;code&gt;1 ^ 0 = 1&lt;/code&gt; , &lt;code&gt;1 ^ 1 = 0&lt;/code&gt;。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Linux 下 Shell 命令寻址顺序</title>
      <link>https://frytea.com/archives/544/</link>
      <pubDate>Tue, 06 Jul 2021 08:32:10 +0000</pubDate>
      <guid>https://frytea.com/archives/544/</guid>
      <description>&lt;h2 id=&#34;起源&#34;&gt;起源&lt;/h2&gt;
&lt;p&gt;当出现 &lt;code&gt;PATH&lt;/code&gt; 下有一个与系统命令重名的命令时，先执行哪一个呢？当 &lt;code&gt;PATH&lt;/code&gt; 下有多个重名命令，会执行哪一个呢？这就涉及到 SHELL 执行命令的寻找顺序。&lt;/p&gt;
&lt;h2 id=&#34;默认顺序&#34;&gt;默认顺序&lt;/h2&gt;
&lt;p&gt;shel在执行命令时，并不是直接就在PATH路径中查找，而是按照固定的位置依次寻找命令。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Linux虚拟化入门（五）KVM 管理命令指南</title>
      <link>https://frytea.com/archives/543/</link>
      <pubDate>Mon, 05 Jul 2021 07:04:46 +0000</pubDate>
      <guid>https://frytea.com/archives/543/</guid>
      <description>&lt;ul&gt;
&lt;li&gt;&lt;code&gt;qemu-img&lt;/code&gt;是QEMU的磁盘管理工具&lt;/li&gt;
&lt;/ul&gt;
&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;&#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;格式: qemu-img command &lt;span style=&#34;color:#f92672&#34;&gt;[&lt;/span&gt;command options&lt;span style=&#34;color:#f92672&#34;&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;command：
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;		check 						   对磁盘镜像文件进行一致性检查，查找镜像文件中的错误
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;		create 						   创建一个可以指定格式、大小、名称的镜像文件
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;		convert 					   镜像文件格式转换
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;		info 						   展示镜像文件的信息
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ul&gt;
&lt;li&gt;&lt;code&gt;virsh&lt;/code&gt; kvm虚拟机管理工具&lt;/li&gt;
&lt;/ul&gt;
&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;&#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:#f92672&#34;&gt;[&lt;/span&gt;root@node1 ~&lt;span style=&#34;color:#f92672&#34;&gt;]&lt;/span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# virsh help&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;command：
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt; Domain Management &lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;help keyword &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;domain&amp;#39;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    attach-device                  从一个XML文件附加装置
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    attach-disk                    附加磁盘设备
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    attach-interface               获得网络界面
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    autostart                      自动开始一个域
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    blkdeviotune                   设定或者查询块设备 I/O 调节参数。
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    blkiotune                      获取或者数值 blkio 参数
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    blockcommit                    启动块提交操作。
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    blockcopy                      启动块复制操作。
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    blockjob                       管理活跃块操作
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    blockpull                      使用其后端映像填充磁盘。
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    blockresize                    创新定义域块设备大小
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    change-media                   更改 CD 介质或者软盘驱动器
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    console                        连接到客户会话
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    cpu-stats                      显示域 cpu 统计数据
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    create                         从一个 XML 文件创建一个域
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    define                         从一个 XML 文件定义（但不开始）一个域
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    desc                           显示或者设定域描述或者标题
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    destroy                        销毁（停止）域
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    detach-device                  从一个 XML 文件分离设备
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    detach-device-alias            detach device from an alias
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    detach-disk                    分离磁盘设备
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    detach-interface               分离网络界面
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    domdisplay                     域显示连接 URI
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    domfsfreeze                    Freeze domain&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;s mounted filesystems.
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;    domfsthaw                      Thaw domain&amp;#39;&lt;/span&gt;s mounted filesystems.
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    domfsinfo                      Get information of domain&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;s mounted filesystems.
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;    domfstrim                      在域挂载的文件系统中调用 fstrim。
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;    domhostname                    输出域主机名
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;    domid                          把一个域名或 UUID 转换为域 id
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;    domif-setlink                  设定虚拟接口的链接状态
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;    domiftune                      获取/设定虚拟接口参数
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;    domjobabort                    忽略活跃域任务
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;    domjobinfo                     域任务信息
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;    domname                        将域 id 或 UUID 转换为域名
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;    domrename                      rename a domain
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;    dompmsuspend                   使用电源管理功能挂起域
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;    dompmwakeup                    从 pmsuspended 状态唤醒域
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;    domuuid                        把一个域名或 id 转换为域 UUID
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;    domxml-from-native             将原始配置转换为域 XML
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;    domxml-to-native               将域 XML 转换为原始配置
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;    dump                           把一个域的内核 dump 到一个文件中以方便分析
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;    dumpxml                        XML 中的域信息
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;    edit                           编辑某个域的 XML 配置
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;    event                          Domain Events
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;    inject-nmi                     在虚拟机中输入 NMI
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;    iothreadinfo                   view domain IOThreads
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;    iothreadpin                    control domain IOThread affinity
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;    iothreadadd                    add an IOThread to the guest domain
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;    iothreaddel                    delete an IOThread from the guest domain
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;    send-key                       向虚拟机发送序列号
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;    send-process-signal            向进程发送信号
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;    lxc-enter-namespace            LXC 虚拟机进入名称空间
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;    managedsave                    管理域状态的保存
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;    managedsave-remove             删除域的管理保存
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;    managedsave-edit               edit XML for a domain&amp;#39;&lt;/span&gt;s managed save state file
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    managedsave-dumpxml            Domain information of managed save state file in XML
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    managedsave-define             redefine the XML &lt;span style=&#34;color:#66d9ef&#34;&gt;for&lt;/span&gt; a domain&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;s managed save state file
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;    memtune                        获取或者数值内存参数
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;    perf                           Get or set perf event
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;    metadata                       show or set domain&amp;#39;&lt;/span&gt;s custom XML metadata
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    migrate                        将域迁移到另一个主机中
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    migrate-setmaxdowntime         设定最大可耐受故障时间
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    migrate-getmaxdowntime         get maximum tolerable downtime
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    migrate-compcache              获取/设定压缩缓存大小
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    migrate-setspeed               设定迁移带宽的最大值
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    migrate-getspeed               获取最长迁移带宽
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    migrate-postcopy               Switch running migration from pre-copy to post-copy
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    numatune                       获取或者数值 numa 参数
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    qemu-attach                    QEMU 附加
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    qemu-monitor-command           QEMU 监控程序命令
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    qemu-monitor-event             QEMU Monitor Events
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    qemu-agent-command             QEMU 虚拟机代理命令
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    reboot                         重新启动一个域
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    reset                          重新设定域
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    restore                        从一个存在一个文件中的状态恢复一个域
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    resume                         重新恢复一个域
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    save                           把一个域的状态保存到一个文件
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    save-image-define              为域的保存状态文件重新定义 XML
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    save-image-dumpxml             在 XML 中保存状态域信息
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    save-image-edit                为域保存状态文件编辑 XML
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    schedinfo                      显示/设置日程安排变量
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    screenshot                     提取当前域控制台快照并保存到文件中
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    set-lifecycle-action           change lifecycle actions
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    set-user-password              set the user password inside the domain
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    setmaxmem                      改变最大内存限制值
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    setmem                         改变内存的分配
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    setvcpus                       改变虚拟 CPU 的号
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    shutdown                       关闭一个域
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    start                          开始一个（以前定义的）非活跃的域
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    suspend                        挂起一个域
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    ttyconsole                     tty 控制台
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    undefine                       取消定义一个域
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    update-device                  从 XML 文件中关系设备
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    vcpucount                      域 vcpu 计数
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    vcpuinfo                       详细的域 vcpu 信息
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    vcpupin                        控制或者查询域 vcpu 亲和性
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    emulatorpin                    控制火车查询域模拟器亲和性
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    vncdisplay                     vnc 显示
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    guestvcpus                     query or modify state of vcpu in the guest &lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;via agent&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    setvcpu                        attach/detach vcpu or groups of threads
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    domblkthreshold                set the threshold &lt;span style=&#34;color:#66d9ef&#34;&gt;for&lt;/span&gt; block-threshold event &lt;span style=&#34;color:#66d9ef&#34;&gt;for&lt;/span&gt; a given block device or it&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;s backing chain element
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt; Domain Monitoring (help keyword &amp;#39;&lt;/span&gt;monitor&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;):
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;    domblkerror                    在块设备中显示错误
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;    domblkinfo                     域块设备大小信息
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;    domblklist                     列出所有域块
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;    domblkstat                     获得域设备块状态
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;    domcontrol                     域控制接口状态
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;    domif-getlink                  获取虚拟接口链接状态
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;    domifaddr                      Get network interfaces&amp;#39;&lt;/span&gt; addresses &lt;span style=&#34;color:#66d9ef&#34;&gt;for&lt;/span&gt; a running domain
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    domiflist                      列出所有域虚拟接口
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    domifstat                      获得域网络接口状态
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    dominfo                        域信息
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    dommemstat                     获取域的内存统计
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    domstate                       域状态
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    domstats                       get statistics about one or multiple domains
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    domtime                        domain time
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    list                           列出域
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt; Host and Hypervisor &lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;help keyword &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;host&amp;#39;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    allocpages                     Manipulate pages pool size
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    capabilities                   性能
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    cpu-baseline                   计算基线 CPU
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    cpu-compare                    使用 XML 文件中描述的 CPU 与主机 CPU 进行对比
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    cpu-models                     CPU models
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    domcapabilities                domain capabilities
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    freecell                       NUMA可用内存
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    freepages                      NUMA free pages
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    hostname                       打印管理程序主机名
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    hypervisor-cpu-baseline        compute baseline CPU usable by a specific hypervisor
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    hypervisor-cpu-compare         compare a CPU with the CPU created by a hypervisor on the host
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    maxvcpus                       连接 vcpu 最大值
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    node-memory-tune               获取或者设定节点内存参数
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    nodecpumap                     节点 cpu 映射
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    nodecpustats                   输出节点的 cpu 状统计数据。
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    nodeinfo                       节点信息
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    nodememstats                   输出节点的内存状统计数据。
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    nodesuspend                    在给定时间段挂起主机节点
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    sysinfo                        输出 hypervisor sysinfo
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    uri                            打印管理程序典型的URI
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    version                        显示版本
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt; Interface &lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;help keyword &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;interface&amp;#39;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    iface-begin                    生成当前接口设置快照，可在今后用于提交 &lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;iface-commit&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt; 或者恢复 &lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;iface-rollback&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    iface-bridge                   生成桥接设备并为其附加一个现有网络设备
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    iface-commit                   提交 iface-begin 后的更改并释放恢复点
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    iface-define                   define an inactive persistent physical host interface or modify an existing persistent one from an XML file
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    iface-destroy                  删除物理主机接口（启用它请执行 &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;if-down&amp;#34;&lt;/span&gt;）
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    iface-dumpxml                  XML 中的接口信息
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    iface-edit                     为物理主机界面编辑 XML 配置
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    iface-list                     物理主机接口列表
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    iface-mac                      将接口名称转换为接口 MAC 地址
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    iface-name                     将接口 MAC 地址转换为接口名称
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    iface-rollback                 恢复到之前保存的使用 iface-begin 生成的更改
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    iface-start                    启动物理主机接口（启用它请执行 &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;if-up&amp;#34;&lt;/span&gt;）
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    iface-unbridge                 分离其辅助设备后取消定义桥接设备
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    iface-undefine                 取消定义物理主机接口（从配置中删除）
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt; Network Filter &lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;help keyword &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;filter&amp;#39;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    nwfilter-define                使用 XML 文件定义或者更新网络过滤器
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    nwfilter-dumpxml               XML 中的网络过滤器信息
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    nwfilter-edit                  为网络过滤器编辑 XML 配置
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    nwfilter-list                  列出网络过滤器
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    nwfilter-undefine              取消定义网络过滤器
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    nwfilter-binding-create        create a network filter binding from an XML file
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    nwfilter-binding-delete        delete a network filter binding
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    nwfilter-binding-dumpxml       XML 中的网络过滤器信息
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    nwfilter-binding-list          list network filter bindings
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt; Networking &lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;help keyword &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;network&amp;#39;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    net-autostart                  自动开始网络
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    net-create                     从一个 XML 文件创建一个网络
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    net-define                     define an inactive persistent virtual network or modify an existing persistent one from an XML file
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    net-destroy                    销毁（停止）网络
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    net-dhcp-leases                print lease info &lt;span style=&#34;color:#66d9ef&#34;&gt;for&lt;/span&gt; a given network
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    net-dumpxml                    XML 中的网络信息
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    net-edit                       为网络编辑 XML 配置
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    net-event                      Network Events
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    net-info                       网络信息
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    net-list                       列出网络
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    net-name                       把一个网络UUID 转换为网络名
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    net-start                      开始一个&lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;以前定义的&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt;不活跃的网络
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    net-undefine                   undefine a persistent network
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    net-update                     更新现有网络配置的部分
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    net-uuid                       把一个网络名转换为网络UUID
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt; Node Device &lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;help keyword &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;nodedev&amp;#39;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    nodedev-create                 根据节点中的 XML 文件定义生成设备
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    nodedev-destroy                销毁（停止）节点中的设备
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    nodedev-detach                 将节点设备与其设备驱动程序分离
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    nodedev-dumpxml                XML 中的节点设备详情
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    nodedev-list                   这台主机中中的枚举设备
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    nodedev-reattach               重新将节点设备附加到他的设备驱动程序中
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    nodedev-reset                  重置节点设备
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    nodedev-event                  Node Device Events
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt; Secret &lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;help keyword &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;secret&amp;#39;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    secret-define                  定义或者修改 XML 中的 secret
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    secret-dumpxml                 XML 中的 secret 属性
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    secret-event                   Secret Events
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    secret-get-value               secret 值输出
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    secret-list                    列出 secret
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    secret-set-value               设定 secret 值
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    secret-undefine                取消定义 secret
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt; Snapshot &lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;help keyword &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;snapshot&amp;#39;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    snapshot-create                使用 XML 生成快照
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    snapshot-create-as             使用一组参数生成快照
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    snapshot-current               获取或者设定当前快照
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    snapshot-delete                删除域快照
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    snapshot-dumpxml               为域快照转储 XML
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    snapshot-edit                  编辑快照 XML
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    snapshot-info                  快照信息
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    snapshot-list                  为域列出快照
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    snapshot-parent                获取快照的上级快照名称
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    snapshot-revert                将域转换为快照
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt; Storage Pool &lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;help keyword &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;pool&amp;#39;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    find-storage-pool-sources-as   找到潜在存储池源
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    find-storage-pool-sources      发现潜在存储池源
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    pool-autostart                 自动启动某个池
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    pool-build                     建立池
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    pool-create-as                 从一组变量中创建一个池
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    pool-create                    从一个 XML 文件中创建一个池
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    pool-define-as                 在一组变量中定义池
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    pool-define                    define an inactive persistent storage pool or modify an existing persistent one from an XML file
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    pool-delete                    删除池
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    pool-destroy                   销毁（删除）池
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    pool-dumpxml                   XML 中的池信息
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    pool-edit                      为存储池编辑 XML 配置
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    pool-info                      存储池信息
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    pool-list                      列出池
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    pool-name                      将池 UUID 转换为池名称
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    pool-refresh                   刷新池
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    pool-start                     启动一个（以前定义的）非活跃的池
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    pool-undefine                  取消定义一个不活跃的池
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    pool-uuid                      把一个池名称转换为池 UUID
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    pool-event                     Storage Pool Events
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt; Storage Volume &lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;help keyword &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;volume&amp;#39;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    vol-clone                      克隆卷。
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    vol-create-as                  从一组变量中创建卷
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    vol-create                     从一个 XML 文件创建一个卷
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    vol-create-from                生成卷，使用另一个卷作为输入。
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    vol-delete                     删除卷
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    vol-download                   将卷内容下载到文件中
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    vol-dumpxml                    XML 中的卷信息
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    vol-info                       存储卷信息
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    vol-key                        为给定密钥或者路径返回卷密钥
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    vol-list                       列出卷
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    vol-name                       为给定密钥或者路径返回卷名
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    vol-path                       为给定密钥或者路径返回卷路径
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    vol-pool                       为给定密钥或者路径返回存储池
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    vol-resize                     创新定义卷大小
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    vol-upload                     将文件内容上传到卷中
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    vol-wipe                       擦除卷
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt; Virsh itself &lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;help keyword &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;virsh&amp;#39;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    cd                             更改当前目录
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    echo                           echo 参数
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    exit                           退出这个非交互式终端
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    help                           打印帮助
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    pwd                            输出当前目录
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    quit                           退出这个非交互式终端
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    connect                        连接（重新连接）到 hypervisor
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;参考文献&#34;&gt;参考文献&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://blog.csdn.net/csdnlb/article/details/105080300&#34;&gt;KVM-virsh学习(虚拟机磁盘管理)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://www.cnblogs.com/qiuhom-1874/p/13508231.html&#34;&gt;虚拟化技术之kvm管理工具virsh常用基础命令（一）&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description>
    </item>
    <item>
      <title>Linux虚拟化入门（四）KVM 创建一个 Centos 实例</title>
      <link>https://frytea.com/archives/542/</link>
      <pubDate>Mon, 05 Jul 2021 07:04:00 +0000</pubDate>
      <guid>https://frytea.com/archives/542/</guid>
      <description>&lt;h2 id=&#34;前提条件&#34;&gt;前提条件&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;完整 KVM 环境&lt;/li&gt;
&lt;li&gt;Centos 镜像&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;步骤&#34;&gt;步骤&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;第一步、创建磁盘&lt;/li&gt;
&lt;/ul&gt;
&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;&#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;qemu-img create -f qcow2 centos_kvm1.qcow2 16G
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ul&gt;
&lt;li&gt;第二步、安装虚拟机&lt;/li&gt;
&lt;/ul&gt;
&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;&#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;virt-install &lt;span style=&#34;color:#ae81ff&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;&lt;/span&gt;--virt-type&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;kvm &lt;span style=&#34;color:#ae81ff&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;&lt;/span&gt;--name&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;centos-kvm &lt;span style=&#34;color:#ae81ff&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;&lt;/span&gt;--hvm &lt;span style=&#34;color:#ae81ff&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;&lt;/span&gt;--vcpus&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;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;&lt;/span&gt;--memory&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;1024&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;&lt;/span&gt;--cdrom&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;/srv/kvm/CentOS-7-x86_64-Minimal-1810.iso &lt;span style=&#34;color:#ae81ff&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;&lt;/span&gt;--disk path&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;/srv/kvm/centos_kvm1.qcow2,size&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;16,format&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;qcow2 &lt;span style=&#34;color:#ae81ff&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;&lt;/span&gt;--graphics vnc,password&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;kvm,listen&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;::,port&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;5911&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;&lt;/span&gt;--network bridge&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;virbr0 &lt;span style=&#34;color:#ae81ff&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;&lt;/span&gt;--autostart &lt;span style=&#34;color:#ae81ff&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;&lt;/span&gt;--force
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;安装成功后使用任意一个可以访问KVM宿主机的带有桌面的设备上的 VNC viewer 进入 &lt;code&gt;YourIp:5911&lt;/code&gt; 输入密码 &lt;code&gt;kvm&lt;/code&gt; 就可以进入虚拟机，然后继续安装了。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Linux虚拟化入门（三）Fedora 安装 KVM 管理环境</title>
      <link>https://frytea.com/archives/541/</link>
      <pubDate>Mon, 05 Jul 2021 07:03:00 +0000</pubDate>
      <guid>https://frytea.com/archives/541/</guid>
      <description>&lt;h2 id=&#34;部署步骤&#34;&gt;部署步骤&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;第一步、&lt;strong&gt;检查环境要求&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;使用如下命令检查您的 CPU 是否支持虚拟化：&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;$ egrep &amp;#39;^flags.*(vmx|svm)&amp;#39; /proc/cpuinfo
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;如果没有&lt;strong&gt;任何&lt;/strong&gt;输出，则说明您的系统不支持相关扩展功能。您仍然可以使用 QEMU/KVM ，但是虚拟将只能使用软件虚拟化（想当慢）。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Linux虚拟化入门（二）Hyper-V 开启 KVM 嵌套虚拟化</title>
      <link>https://frytea.com/archives/540/</link>
      <pubDate>Mon, 05 Jul 2021 07:02:00 +0000</pubDate>
      <guid>https://frytea.com/archives/540/</guid>
      <description>&lt;p&gt;日常办公使用 Windows 平台，需要研究 KVM 的使用，此时就需要在 Windows 提供的 Hyper-V 工具运行 Linux 虚拟机来测试 KVM 相关的使用，但是在 Hyper-V 虚拟机中再次运行 KVM 虚拟化属于嵌套虚拟化，需要开启相关功能。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Linux虚拟化入门（一）Qemu，KVM，Virsh 概念指南</title>
      <link>https://frytea.com/archives/539/</link>
      <pubDate>Mon, 05 Jul 2021 07:02:00 +0000</pubDate>
      <guid>https://frytea.com/archives/539/</guid>
      <description>&lt;p&gt;当你安装了一台Linux，想启动一个KVM虚拟机的时候，你会发现需要安装不同的软件，启动虚拟机的时候，有多种方法：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;virsh start&lt;/li&gt;
&lt;li&gt;kvm命令&lt;/li&gt;
&lt;li&gt;qemu命令&lt;/li&gt;
&lt;li&gt;qemu-kvm命令&lt;/li&gt;
&lt;li&gt;qemu-system-x86_64命令&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;qemu&#34;&gt;QEMU&lt;/h2&gt;
&lt;p&gt;首先看qemu，其中关键字emu，全称emulator，模拟器，所以单纯使用qemu是采用的&lt;strong&gt;完全虚拟化&lt;/strong&gt;的模式。&lt;/p&gt;</description>
    </item>
    <item>
      <title>「2021年6月复盘」</title>
      <link>https://frytea.com/archives/1104/</link>
      <pubDate>Sun, 04 Jul 2021 15:37:00 +0000</pubDate>
      <guid>https://frytea.com/archives/1104/</guid>
      <description>&lt;p&gt;比大多数人多“做”一点点。&lt;/p&gt;
&lt;h2 id=&#34;-一段总结&#34;&gt;👀 一段总结&lt;/h2&gt;
&lt;p&gt;本月30天，几乎每天都进行了复盘，大部分时间都进&lt;/p&gt;</description>
    </item>
    <item>
      <title>C&#43;&#43;中冒号（:）和双冒号（::）的用法总结</title>
      <link>https://frytea.com/archives/536/</link>
      <pubDate>Wed, 09 Jun 2021 03:53:00 +0000</pubDate>
      <guid>https://frytea.com/archives/536/</guid>
      <description>&lt;h2 id=&#34;冒号用法&#34;&gt;冒号（:）用法&lt;/h2&gt;
&lt;p&gt;（1）表示&lt;strong&gt;机构内位域&lt;/strong&gt;的定义（即该变量占几个 bit 空间）&lt;/p&gt;
&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;&#34;&gt;&lt;code class=&#34;language-cpp&#34; data-lang=&#34;cpp&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;typedef&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;struct&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;_XXX&lt;/span&gt;{
&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;unsigned&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;char&lt;/span&gt; a:&lt;span style=&#34;color:#ae81ff&#34;&gt;4&lt;/span&gt;;
&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;unsigned&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;char&lt;/span&gt; c;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;} ; XXX
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;（2）&lt;strong&gt;构造函数&lt;/strong&gt;后面的冒号起分割作用，是类给&lt;strong&gt;成员变量赋值&lt;/strong&gt;的方法，初始化列表，更适用于成员变量的常量 &lt;code&gt;const&lt;/code&gt; 型。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Typecho 博客文首自动添加本页链接</title>
      <link>https://frytea.com/archives/535/</link>
      <pubDate>Wed, 09 Jun 2021 01:25:00 +0000</pubDate>
      <guid>https://frytea.com/archives/535/</guid>
      <description>&lt;p&gt;自己的博客不觉间已经上线两年多了，随着内容和浏览量的增加，我的博客开始被一些搬运站盯上，常常搜索自己博客内容却在其他人博客里找到完全一样的内容，关键是还不署名！&lt;/p&gt;</description>
    </item>
    <item>
      <title>Bullet Journal （肆）&amp;amp; 日常管理</title>
      <link>https://frytea.com/archives/1123/</link>
      <pubDate>Wed, 09 Jun 2021 00:06:00 +0000</pubDate>
      <guid>https://frytea.com/archives/1123/</guid>
      <description>&lt;p&gt;不知不觉，Bullet Journal 模版系列文章就要迎来尾声啦。今天带来的是 Bullet Jo&lt;/p&gt;</description>
    </item>
    <item>
      <title>Bullet Journal （肆）&amp;amp; 日常管理</title>
      <link>https://frytea.com/archives/534/</link>
      <pubDate>Tue, 08 Jun 2021 16:06:00 +0000</pubDate>
      <guid>https://frytea.com/archives/534/</guid>
      <description>&lt;p&gt;不知不觉，Bullet Journal 模版系列文章就要迎来尾声啦。今天带来的是 Bullet Journal 中的核心部分 —— 日常管理。&lt;/p&gt;
&lt;p&gt;我认为 Bullet Journal 的核心就在于其每日记录，用最快的方式回顾这一天，顺便为其加入复盘的属性，让每一天发生的特别的、有趣的事情留在你的 Bullet Journal 中。等一个月完毕，或是一年后的某一天翻开某一天的 Bullet Journal ，还能回忆起当时的那种感动。&lt;/p&gt;</description>
    </item>
    <item>
      <title>从 Redis 表项看 SONiC 架构</title>
      <link>https://frytea.com/archives/533/</link>
      <pubDate>Tue, 08 Jun 2021 09:18:00 +0000</pubDate>
      <guid>https://frytea.com/archives/533/</guid>
      <description>&lt;p&gt;SONiC 系统的架构由各种模块组成，这些模块通过集中式和可扩展的基础架构相互交互。这个基础设施依赖于使用一个 &lt;strong&gt;redis-database&lt;/strong&gt; 引擎来提供一个独立于语言的接口，一个在所有 SONiC 子系统之间进行数据持久化、复制和多进程通信的方法。&lt;/p&gt;</description>
    </item>
    <item>
      <title>「2021年5月复盘」</title>
      <link>https://frytea.com/archives/1109/</link>
      <pubDate>Sun, 06 Jun 2021 15:39:00 +0000</pubDate>
      <guid>https://frytea.com/archives/1109/</guid>
      <description>&lt;p&gt;拒绝从“零”开始。&lt;/p&gt;
&lt;h2 id=&#34;-一段总结&#34;&gt;👀 一段总结&lt;/h2&gt;
&lt;p&gt;在这个月里，复盘天数良好，学习和输出天数良好，codin&lt;/p&gt;</description>
    </item>
    <item>
      <title>Bullet Journal （叁）&amp;amp; 目标管理 ｜ 一起来规划人生吧</title>
      <link>https://frytea.com/archives/1125/</link>
      <pubDate>Sat, 29 May 2021 10:52:00 +0000</pubDate>
      <guid>https://frytea.com/archives/1125/</guid>
      <description>&lt;p&gt;本系列文章已经过半，前面讲过了什么是 Bullet Journal，如何使用 Notion，以及使用&lt;/p&gt;</description>
    </item>
    <item>
      <title>Bullet Journal （叁）&amp;amp; 目标管理 ｜ 一起来规划人生吧</title>
      <link>https://frytea.com/archives/531/</link>
      <pubDate>Sat, 29 May 2021 02:52:00 +0000</pubDate>
      <guid>https://frytea.com/archives/531/</guid>
      <description>&lt;p&gt;本系列文章已经过半，前面讲过了什么是 Bullet Journal，如何使用 Notion，以及使用 Notion 进行财务管理的方法，文章得到了一些共鸣，这是我继续下去最大的动力。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Bullet Journal （二）&amp;amp; 财务管理</title>
      <link>https://frytea.com/archives/1122/</link>
      <pubDate>Thu, 20 May 2021 22:17:00 +0000</pubDate>
      <guid>https://frytea.com/archives/1122/</guid>
      <description>&lt;p&gt;Bullet Journal 是一个可以让我们生活过的更加井井有条的工具，好生活所需的一切条件之中，&lt;/p&gt;</description>
    </item>
    <item>
      <title>Bullet Journal （二）&amp;amp; 财务管理</title>
      <link>https://frytea.com/archives/530/</link>
      <pubDate>Thu, 20 May 2021 14:17:00 +0000</pubDate>
      <guid>https://frytea.com/archives/530/</guid>
      <description>&lt;p&gt;Bullet Journal 是一个可以让我们生活过的更加井井有条的工具，好生活所需的一切条件之中，财务一定是逃不开的基础。上文已经介绍了 Notion 的基本使用，Bullet Journal 第二期就来讲讲如何使用 Notion 来进行财务管理吧，主要包括预算、预算监控、收支管理、投资管理以及财务分配等。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Bullet Journal （一） &amp;amp; Notion</title>
      <link>https://frytea.com/archives/1128/</link>
      <pubDate>Sat, 15 May 2021 21:33:00 +0000</pubDate>
      <guid>https://frytea.com/archives/1128/</guid>
      <description>&lt;p&gt;前面介绍过 Bullet Journal 的前世今生：《Bullet Journal 的前世今生 ｜&lt;/p&gt;</description>
    </item>
    <item>
      <title>Bullet Journal （一） &amp;amp; Notion</title>
      <link>https://frytea.com/archives/529/</link>
      <pubDate>Sat, 15 May 2021 13:33:00 +0000</pubDate>
      <guid>https://frytea.com/archives/529/</guid>
      <description>&lt;p&gt;前面介绍过 Bullet Journal 的前世今生：《Bullet Journal 的前世今生 ｜ 效率至上（https://blog.frytea.com/archives/488/）》。近期打算写一个系列文章，主要介绍在 Notion 下进行 bullet journal 的方法和效果，包括个人财务管理、目标管理、日常管理等。&lt;/p&gt;</description>
    </item>
    <item>
      <title>「2021年4月复盘」</title>
      <link>https://frytea.com/archives/1106/</link>
      <pubDate>Fri, 07 May 2021 15:39:00 +0000</pubDate>
      <guid>https://frytea.com/archives/1106/</guid>
      <description>&lt;p&gt;深入学习的价值。&lt;/p&gt;
&lt;p&gt;本月月初收获到难得的成就感，可紧接着就是一段时间的空虚感，于是我又规划了一个新的&lt;/p&gt;</description>
    </item>
    <item>
      <title>解决 Fedora 无法访问码云私有库问题</title>
      <link>https://frytea.com/archives/526/</link>
      <pubDate>Sat, 17 Apr 2021 02:30:00 +0000</pubDate>
      <guid>https://frytea.com/archives/526/</guid>
      <description>&lt;p&gt;本文首发于：https://blog.frytea.com/archives/526/&lt;/p&gt;
&lt;p&gt;近期在 Fedora 33 系统上总是无法访问 gitee 私有库，得到以下报错：&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;$ git clone git@gitee.com:songtianlun/workflow.git
正克隆到 &amp;#39;workflow&amp;#39;...
git@gitee.com: Permission denied (publickey).
fatal: 无法读取远程仓库。

请确认您有正确的访问权限并且仓库存在。
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;使用 &lt;code&gt;ssh -v git@gitee.com&lt;/code&gt; 命令检查得到以下输出：&lt;/p&gt;</description>
    </item>
    <item>
      <title>为 Windows 10 新增物理网卡子接口</title>
      <link>https://frytea.com/archives/525/</link>
      <pubDate>Mon, 12 Apr 2021 00:55:00 +0000</pubDate>
      <guid>https://frytea.com/archives/525/</guid>
      <description>&lt;p&gt;本文首发于：https://blog.frytea.com/archives/525/&lt;/p&gt;
&lt;p&gt;在进行网络设备调试时常常会使用到多 IP ，Linux 上可以很方便的为物理网卡配置子接口解决，但是在 Windows 上如果物理网卡必须使用 DHCP 就无法再配置多 IP 了，只能暂时的使用 USB 转网卡解决。近期突然灵机一动，能不能使用 Windows 10 天然支持的 WSL 来解决这个问题，经过本人实测，是可以的，方法也很简单。&lt;/p&gt;</description>
    </item>
    <item>
      <title>三步激活 StarUML V4.0.1 (WIN10为例) | 仅供学习</title>
      <link>https://frytea.com/archives/524/</link>
      <pubDate>Wed, 07 Apr 2021 13:05:00 +0000</pubDate>
      <guid>https://frytea.com/archives/524/</guid>
      <description>&lt;p&gt;&lt;a href=&#34;https://staruml.io/&#34;&gt;StarUML&lt;/a&gt; 是一个开源的 &lt;code&gt;UML&lt;/code&gt; 工具列表软件，它遵守 &lt;code&gt;GNU GPL&lt;/code&gt; 的一个修订版。&lt;code&gt;StarUML&lt;/code&gt; 项目宣称的目标是代替大型的商业 UML 工具软件，如 &lt;code&gt;IBM&lt;/code&gt; 的 &lt;code&gt;Rational Rose&lt;/code&gt; ， &lt;code&gt;Borland&lt;/code&gt; 公司的 &lt;code&gt;Together&lt;/code&gt; 。&lt;code&gt;StarUML&lt;/code&gt; 支持 UML2.0 定义的大多数图，是一款跨平台且轻量高效的现代 UML 绘图工具。&lt;/p&gt;</description>
    </item>
    <item>
      <title>「2021年3月复盘」</title>
      <link>https://frytea.com/archives/1115/</link>
      <pubDate>Tue, 06 Apr 2021 15:39:00 +0000</pubDate>
      <guid>https://frytea.com/archives/1115/</guid>
      <description>&lt;p&gt;浓浓的春意。&lt;/p&gt;
&lt;p&gt;仿佛春风吹过的 3 月结束了，这是我个人度过最有春意的一个月份，不知道是不是总是束缚&lt;/p&gt;</description>
    </item>
    <item>
      <title>「送你一朵小红花」</title>
      <link>https://frytea.com/archives/519/</link>
      <pubDate>Tue, 09 Mar 2021 15:50:14 +0000</pubDate>
      <guid>https://frytea.com/archives/519/</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;马小远：我从五岁就大把大把吃药，那会儿我就知道，活着就不是件容易的事。              ——《送你一朵小红花》&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;类似的生命题材电影，还有《滚蛋吧！肿瘤君》、《我不是药神》，在国内影片市场并不多见。但在物质生活逐渐发达的今天，人们更加需要感悟到生命的可贵。一个不生病的人很难感同身受生病的痛苦，也只有真实的走过这一生坎坷才能体会到“活着不容易”。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Windows CMD 换肤</title>
      <link>https://frytea.com/archives/518/</link>
      <pubDate>Wed, 03 Mar 2021 01:28:25 +0000</pubDate>
      <guid>https://frytea.com/archives/518/</guid>
      <description>&lt;p&gt;由于经常使用到 Windows 下的 CMD 终端进行各种操作，特别是集成了 Ubuntu 子系统之后，在 Windows 平台上进行 C 开发更方便了。为了呼出 WSL 子系统，我习惯在 CMD 下进行，可默认皮肤不够美观，为了让自己心情愉悦，检索了一番换肤方法，并在此简单记录。&lt;/p&gt;</description>
    </item>
    <item>
      <title>「2021年2月复盘」</title>
      <link>https://frytea.com/archives/1103/</link>
      <pubDate>Mon, 01 Mar 2021 15:39:00 +0000</pubDate>
      <guid>https://frytea.com/archives/1103/</guid>
      <description>&lt;p&gt;时间的车轮滚滚向前。&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;有人说，二月过的好慢； 有人说，这么快就过了年。&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;![https://&lt;/p&gt;</description>
    </item>
    <item>
      <title>解决 Win10 热点无法上网及与 Hyper-V 虚拟网卡冲突问题</title>
      <link>https://frytea.com/archives/514/</link>
      <pubDate>Fri, 26 Feb 2021 08:49:38 +0000</pubDate>
      <guid>https://frytea.com/archives/514/</guid>
      <description>&lt;p&gt;最近给 Win10 电脑加装了一个无线网卡，想要开热点使用，但是发现手机连上之后显示无法联网，在这里记录解决办法。&lt;/p&gt;
&lt;p&gt;首先查看一下当前电脑上网使用的网卡是哪一张，我当前使用的是 Hyper-V 虚拟的一个桥接网卡 &lt;code&gt;vEthernet (NetBridge)&lt;/code&gt; 开启 wifi 热点后新增的网卡是 &lt;code&gt; 本地连接* 12&lt;/code&gt; 。&lt;/p&gt;</description>
    </item>
    <item>
      <title>「2021年1月复盘」</title>
      <link>https://frytea.com/archives/1108/</link>
      <pubDate>Mon, 01 Feb 2021 15:39:00 +0000</pubDate>
      <guid>https://frytea.com/archives/1108/</guid>
      <description>&lt;p&gt;从0到1的第一个月。&lt;/p&gt;
&lt;p&gt;一段话量化这个月：&lt;/p&gt;
&lt;p&gt;这个月进行了31次每日复盘，每一天都在学习和阅读，结束&lt;/p&gt;</description>
    </item>
    <item>
      <title>NMAP 基础扫描</title>
      <link>https://frytea.com/archives/507/</link>
      <pubDate>Tue, 26 Jan 2021 09:18:25 +0000</pubDate>
      <guid>https://frytea.com/archives/507/</guid>
      <description>&lt;p&gt;以下几个示例带领你快速了解nmap的基本扫描方法，更多详情请查阅nmap手册。&lt;/p&gt;
&lt;h3 id=&#34;1nmap-简单扫描&#34;&gt;1、Nmap 简单扫描&lt;/h3&gt;
&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;&#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;$ nmap &amp;lt;target ip address&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;$ nmap 192.168.41.41
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;直接指定需要扫描的主机IP开始扫描，返回详细描述。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Linux 多进程通信开发之 UNIX domain Socket 通信机制从 TCP 切换为 UDP</title>
      <link>https://frytea.com/archives/505/</link>
      <pubDate>Wed, 13 Jan 2021 10:09:00 +0000</pubDate>
      <guid>https://frytea.com/archives/505/</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;Unix domain socket 或者 IPC socket是一种终端，可以使同一台操作系统上的两个或多个进程进行数据通信。提供 UDP 和 TCP 两种通信机制。&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;因为一些原因，项目现有软件架构采用的都是 &lt;code&gt;IPC sockte&lt;/code&gt; 中的 &lt;code&gt;TCP&lt;/code&gt; 通信机制，虽然保证了通信的可靠性，但近期需要对该程序进行热迁移（基于 &lt;code&gt;criu&lt;/code&gt; ），有连接的 IPC 套接字状态很难被保存和恢复，而 无连接的 UDP 只需要保证服务端先冻结、先恢复即可实现程序整体状态迁移，因此写下本文，记录迁移过程，最后提供示例程序，可以自行通过 &lt;code&gt;BCompare&lt;/code&gt; 等文本对比工具对比差异。&lt;/p&gt;</description>
    </item>
    <item>
      <title>无需代理直接加速各种 GitHub 资源拉取 | 国内镜像赋能 | 助力开发</title>
      <link>https://frytea.com/archives/504/</link>
      <pubDate>Mon, 04 Jan 2021 06:05:45 +0000</pubDate>
      <guid>https://frytea.com/archives/504/</guid>
      <description>&lt;p&gt;常见的github加速方法如修改 &lt;code&gt;hosts&lt;/code&gt; 文件、魔法上网、设置 &lt;code&gt;proxy&lt;/code&gt; 等方法在此不在赘述，本文主要介绍在不进行多余网络配置的情况下，直接使用提供了github国内镜像服务的网站进行github各种资源拉取加速，在这里向各位提供github国内镜像服务的大佬们致敬。&lt;/p&gt;</description>
    </item>
    <item>
      <title>《小狗钱钱》</title>
      <link>https://frytea.com/archives/1059/</link>
      <pubDate>Sun, 03 Jan 2021 12:16:23 +0000</pubDate>
      <guid>https://frytea.com/archives/1059/</guid>
      <description>&lt;p&gt;如果你只是带着试试看的心态，那么你最后只会以失败而告终，你会一事无成。尝试纯粹是一种借口，你还没有做&lt;/p&gt;</description>
    </item>
    <item>
      <title>小狗钱钱 ｜ 伪装成童话的入门理财书籍</title>
      <link>https://frytea.com/archives/503/</link>
      <pubDate>Sun, 03 Jan 2021 04:16:23 +0000</pubDate>
      <guid>https://frytea.com/archives/503/</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;如果你只是带着试试看的心态，那么你最后只会以失败而告终，你会一事无成。尝试纯粹是一种借口，你还没有做，就已经给自己想好退路了。不能试验。你只有两个选择：做，或者不做。&lt;/p&gt;</description>
    </item>
    <item>
      <title>2020 年度 - 经历的都是财富</title>
      <link>https://frytea.com/archives/1119/</link>
      <pubDate>Fri, 01 Jan 2021 14:54:00 +0000</pubDate>
      <guid>https://frytea.com/archives/1119/</guid>
      <description>&lt;p&gt;踩着2020的尾巴，骄傲地迎接2021，写下这篇跨年小文，并感叹我可真棒。 偶然翻到自己写的那篇《寻&lt;/p&gt;</description>
    </item>
    <item>
      <title>一种C程序使用IPC多进程共享内存并实现热迁移的方法</title>
      <link>https://frytea.com/archives/501/</link>
      <pubDate>Wed, 30 Dec 2020 16:23:00 +0000</pubDate>
      <guid>https://frytea.com/archives/501/</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;在软件中，术语共享内存指可被多个进程存取的内存，一个进程是一段程序的单个运行实例。在这种情况下，共享内存被用作进程间的通讯。——WikiPedia&lt;/p&gt;</description>
    </item>
    <item>
      <title>Docker 热迁移探索，基于CRIU实现运行状态迁移</title>
      <link>https://frytea.com/archives/499/</link>
      <pubDate>Wed, 23 Dec 2020 05:57:29 +0000</pubDate>
      <guid>https://frytea.com/archives/499/</guid>
      <description>&lt;h2 id=&#34;版本限制&#34;&gt;版本限制&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Docker: &lt;code&gt;17.06.0-ce&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;criu: &lt;code&gt;3.12&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;kernal: &lt;code&gt;3.10.0-957.el7.x86_64&lt;/code&gt; || &lt;code&gt;5.10.2-1.el7.elrepo.x86_64&lt;/code&gt; (Optional)&lt;/li&gt;
&lt;li&gt;os: &lt;code&gt;CentOS Linux release 7.9.2009 (Core)&lt;/code&gt; (Optional)&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote&gt;
&lt;p&gt;实测在该环境下，容器热迁移可用，热迁移成功与否与 &lt;code&gt;docker&lt;/code&gt; 和 &lt;code&gt;criu&lt;/code&gt; 版本强相关。&lt;/p&gt;&lt;/blockquote&gt;
&lt;h2 id=&#34;环境部署&#34;&gt;环境部署&lt;/h2&gt;
&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;&#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&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# Docker 安装&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;$ sudo yum install -y yum-utils
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;$ sudo yum-config-manager &lt;span style=&#34;color:#ae81ff&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;&lt;/span&gt;    --add-repo &lt;span style=&#34;color:#ae81ff&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;&lt;/span&gt;    https://download.docker.com/linux/centos/docker-ce.repo
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;$ sudo yum list docker-ce --showduplicates | sort -r
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;$ sudo yum install docker-ce-17.06.0.ce
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;$ sudo systemctl start docker
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&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;# 启动Docker实验特征&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;vim **/etc/docker/daemon.json
&lt;/span&gt;&lt;/span&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:#e6db74&#34;&gt;&amp;#34;experimental&amp;#34;&lt;/span&gt;: true &lt;span style=&#34;color:#f92672&#34;&gt;}&lt;/span&gt;**
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&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;# criu 安装&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;$ sudo yum install criu -y
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&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;# Go安装(可选)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;wget https://golang.org/dl/go1.15.6.linux-amd64.tar.gz
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;tar -C /usr/local -xzf go1.15.6.linux-amd64.tar.gz
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;vim /etc/profile
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;+ export PATH&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;$PATH:/usr/local/go/bin
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;source /etc/profile
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;热迁移示例&#34;&gt;热迁移示例&lt;/h2&gt;
&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;&#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;# On the host&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;$ docker run -d --name looper2 --security-opt seccomp:unconfined busybox &lt;span style=&#34;color:#ae81ff&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;&lt;/span&gt;         /bin/sh -c &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;i=0; while true; do echo $i; i=$(expr $i + 1); sleep 1; done&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&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;# wait a few seconds to give the container an opportunity to print a few lines, then&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;$ docker checkpoint create looper2 checkpoint2
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&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;# check your container &amp;amp; print log file&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;$ docker logs looper2
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&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;# On the client&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;$ docker create --name looper-clone --security-opt seccomp:unconfined busybox &lt;span style=&#34;color:#ae81ff&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;&lt;/span&gt;         /bin/sh -c &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;i=0; while true; do echo $i; i=$(expr $i + 1); sleep 1; done&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;$ docker start --checkpoint&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;checkpoint2 looper-clone
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&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;# check your container&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;$ docekr ps
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;$ docker logs looper-clone
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;以上步骤将容器 &lt;code&gt;looper2&lt;/code&gt; 的状态迁移到 &lt;code&gt;looper-clone&lt;/code&gt; ，可实现当前容器、跨容器的状态迁移，甚至可以实现跨主机的迁移，只需将该目录 &lt;code&gt;/var/lib/docker/{docker id}/checnkpoints/&lt;/code&gt; 下面与检查点同名的文件夹迁移即可。&lt;/p&gt;</description>
    </item>
    <item>
      <title>tcpdump 过滤数据包长度</title>
      <link>https://frytea.com/archives/496/</link>
      <pubDate>Tue, 15 Dec 2020 06:31:23 +0000</pubDate>
      <guid>https://frytea.com/archives/496/</guid>
      <description>&lt;p&gt;tcpdump 支持 &lt;code&gt;protocol[x:x]&lt;/code&gt; 表达式，用于指定某协议[起始偏移量:数值类型长度],&lt;/p&gt;
&lt;p&gt;如指定IP包长度大于100:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;tcpdump -i eth0 -n &#39;ip[2:2] &amp;gt; 100&#39;&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;捕获tcp目标端口在10000和20000之间的包：&lt;/p&gt;</description>
    </item>
    <item>
      <title>聊聊搜索引擎的那些事儿 ｜ 又一款国产搜索引擎502了</title>
      <link>https://frytea.com/archives/491/</link>
      <pubDate>Sun, 29 Nov 2020 02:33:20 +0000</pubDate>
      <guid>https://frytea.com/archives/491/</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;本文创作背景音乐：Beautiful Relaxing Music: Norway&amp;rsquo;s Nature, Violin Music, Flute Music, Piano Music, Harp Music：https://youtu.be/XEfDYMngJeE&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;2019年6月左右，一款国人打造的搜索引擎横空出世——多吉搜索。设计初衷为「不追踪，不误导」。但从字面和slogin来看像极了以注重用户隐私而著称的「DuckDuckGo」，甚至于作者自己也承认，在初期，自己没有太多设计方面的灵感，因此写好搜索引擎核心代码之后就借了一个自己最喜欢的皮，发布了。&lt;/p&gt;</description>
    </item>
    <item>
      <title>BuJo ｜ 使用Notion进行个人账目管理、投资管理</title>
      <link>https://frytea.com/archives/490/</link>
      <pubDate>Sat, 28 Nov 2020 05:23:00 +0000</pubDate>
      <guid>https://frytea.com/archives/490/</guid>
      <description>&lt;p&gt;Notion 是一款国人开发，依托于AWS的云笔记软件，以功能强大、兼容Markdown而著称。自从接触了Notion，笔者就预感这款软件有着无限可能。&lt;/p&gt;
&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://imagehost-cdn.frytea.com/images/2020/11/28/20201128131710e25232d13f8aa14f.png&#34;&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Bullet Journal 的前世今生 ｜ 效率至上</title>
      <link>https://frytea.com/archives/488/</link>
      <pubDate>Fri, 20 Nov 2020 14:25:00 +0000</pubDate>
      <guid>https://frytea.com/archives/488/</guid>
      <description>&lt;p&gt;《子弹笔记》的作者赖德·卡罗尔，为了体现这套方法的速度、效率、内容和目的，决定称其为“子弹笔记术”（Bullet Journal，简称Bujo）。&lt;/p&gt;</description>
    </item>
    <item>
      <title>苹果M1芯片对大众生活的影响 ｜ M1现存问题及未来发展 ｜ MacBook</title>
      <link>https://frytea.com/archives/486/</link>
      <pubDate>Wed, 18 Nov 2020 14:33:25 +0000</pubDate>
      <guid>https://frytea.com/archives/486/</guid>
      <description>&lt;p&gt;苹果在今年（2020年）11月11日凌晨举办的今秋第三场线上发布会上发布了搭载Apple自研M1芯片的Mac，分别是MacBook Air、13寸MacBook Pro 以及 Mac mini。苹果这一“不讲武德”直接干翻老大哥英特尔的行为在科技圈引起轩然大波，苹果这一举动也为死水般的笔记本市场溅起一阵阵波浪。那这苹果自研芯片究竟会给人们的生活带来什么变化呢？&lt;/p&gt;</description>
    </item>
    <item>
      <title>随机命令自动测试脚本 | SecureCRT 下 Python 实现</title>
      <link>https://frytea.com/archives/485/</link>
      <pubDate>Tue, 17 Nov 2020 03:52:00 +0000</pubDate>
      <guid>https://frytea.com/archives/485/</guid>
      <description>&lt;p&gt;在进行命令终端软件开发及通信道路开发时，常常需要测试终端的稳定性，此时通过命令脚本自动化的敲命令可以节省许多人力，这里写了一个SecureCRT终端模拟软件下python实现的自动化测试脚本，可以从命令列表中随笔选取命令进行测试，具有设置睡眠时间及超时发现功能。&lt;/p&gt;</description>
    </item>
    <item>
      <title>《天气之子》 有时需要些治愈系</title>
      <link>https://frytea.com/archives/1047/</link>
      <pubDate>Sun, 15 Nov 2020 19:43:05 +0000</pubDate>
      <guid>https://frytea.com/archives/1047/</guid>
      <description>&lt;p&gt;还记得上一次，阅读那本《解忧杂货铺》；还有那一次，观赏《解忧杂货铺》；再有在那2020年的4月份，观&lt;/p&gt;</description>
    </item>
    <item>
      <title>【阅记】天气之子 ｜ 有时需要些治愈系</title>
      <link>https://frytea.com/archives/483/</link>
      <pubDate>Sun, 15 Nov 2020 11:43:05 +0000</pubDate>
      <guid>https://frytea.com/archives/483/</guid>
      <description>&lt;p&gt;还记得上一次，阅读那本《解忧杂货铺》；还有那一次，观赏《解忧杂货铺》；再有在那2020年的4月份，观赏《解忧杂货铺》。内心里涌动着一股暖流，驱散了许多阴霾。&lt;/p&gt;</description>
    </item>
    <item>
      <title>frp实现内网穿透 | frp服务端配置 | frp客户端配置</title>
      <link>https://frytea.com/archives/482/</link>
      <pubDate>Fri, 13 Nov 2020 06:59:00 +0000</pubDate>
      <guid>https://frytea.com/archives/482/</guid>
      <description>&lt;p&gt;frp 是一个专注于内网穿透的高性能的反向代理应用，支持 TCP、UDP、HTTP、HTTPS 等多种协议。可以将内网服务以安全、便捷的方式通过具有公网 IP 节点的中转暴露到公网。&lt;/p&gt;</description>
    </item>
    <item>
      <title>群晖OpenVPN服务器网关配置</title>
      <link>https://frytea.com/archives/481/</link>
      <pubDate>Fri, 13 Nov 2020 06:19:50 +0000</pubDate>
      <guid>https://frytea.com/archives/481/</guid>
      <description>&lt;p&gt;使用群晖OpenVpn服务套件搭建了VPN服务后，导出配置文件，默认是不会在客户端的  &lt;code&gt;openvpn.ovpn&lt;/code&gt; 文件中设置重定向网关选项的，此时连接上VPN是无法通过该VPN访问互联网的，只能访问局域网。如果想要访问互联网，打开网管重定向即可：&lt;/p&gt;</description>
    </item>
    <item>
      <title>使用git将code同时提交多个远程仓</title>
      <link>https://frytea.com/archives/480/</link>
      <pubDate>Fri, 13 Nov 2020 03:40:08 +0000</pubDate>
      <guid>https://frytea.com/archives/480/</guid>
      <description>&lt;p&gt;想用一次git提交到多个仓库，可以通过以下命令实现：&lt;/p&gt;
&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;&#34;&gt;&lt;code class=&#34;language-c&#34; data-lang=&#34;c&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# 设置第一个远程仓库
&lt;/span&gt;&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;&lt;/span&gt;git git remote add origin https:&lt;span style=&#34;color:#75715e&#34;&gt;//github.com/w4ctech/hellogit.git
&lt;/span&gt;&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;&lt;/span&gt;
&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;# 新增一个远程仓库
&lt;/span&gt;&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;&lt;/span&gt;git remote set&lt;span style=&#34;color:#f92672&#34;&gt;-&lt;/span&gt;url &lt;span style=&#34;color:#f92672&#34;&gt;--&lt;/span&gt;add origin https:&lt;span style=&#34;color:#75715e&#34;&gt;//gitee.com/w4ctech/hellogit.git
&lt;/span&gt;&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;&lt;/span&gt;
&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;# 新增另一个远程仓库
&lt;/span&gt;&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;&lt;/span&gt;git remote set&lt;span style=&#34;color:#f92672&#34;&gt;-&lt;/span&gt;url &lt;span style=&#34;color:#f92672&#34;&gt;--&lt;/span&gt;add origin  https:&lt;span style=&#34;color:#75715e&#34;&gt;//git.coding.net/w4ctech/hellogit.git
&lt;/span&gt;&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;&lt;/span&gt;
&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;# 查看当前远程仓库
&lt;/span&gt;&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;&lt;/span&gt;git remote &lt;span style=&#34;color:#f92672&#34;&gt;-&lt;/span&gt;v
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;此后的只需一次提交，就会将代码提交至三个仓库，如需删除某个仓库，只需执行：&lt;/p&gt;</description>
    </item>
    <item>
      <title>Git 回滚到某个 commit 上及返回主分支</title>
      <link>https://frytea.com/archives/479/</link>
      <pubDate>Fri, 13 Nov 2020 03:39:24 +0000</pubDate>
      <guid>https://frytea.com/archives/479/</guid>
      <description>&lt;h2 id=&#34;1-代码回退&#34;&gt;1. 代码回退&lt;/h2&gt;
&lt;p&gt;首先要用 &lt;code&gt;git log&lt;/code&gt; 查看回到的版本，然后用以下命令，将本地代码回退到某个版本：&lt;/p&gt;
&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;&#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;git reset --hard HEAD^        回退到上个版本
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;git reset --hard commit_id    退到/进到 指定 commit_id
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;如果需要将回退的某个版本提交远程，可执行以下命令：&lt;/p&gt;</description>
    </item>
    <item>
      <title>解决群晖Moment不显示拷入照片</title>
      <link>https://frytea.com/archives/477/</link>
      <pubDate>Sat, 07 Nov 2020 15:19:00 +0000</pubDate>
      <guid>https://frytea.com/archives/477/</guid>
      <description>&lt;p&gt;近期趁着双十一购入群晖一台，装好Moments，将照片导入Moment文件夹，但刷新并没有在Moments主页看到直接考入文件夹内的照片。&lt;/p&gt;
&lt;p&gt;开始以为是正在转码，搜索一圈也有人这么说，后来有人提出是由于权限问题，于是尝试修复。&lt;/p&gt;</description>
    </item>
    <item>
      <title>《斯坦福高效睡眠法》 ｜ 高效睡眠 ｜ 高效人生</title>
      <link>https://frytea.com/archives/1075/</link>
      <pubDate>Thu, 05 Nov 2020 22:31:01 +0000</pubDate>
      <guid>https://frytea.com/archives/1075/</guid>
      <description>&lt;p&gt;时常会听到有人说抱怨自己失眠、睡眠不足，工作压力大没时间睡，有时间睡了反而辗转反侧睡不着。 这都是很&lt;/p&gt;</description>
    </item>
    <item>
      <title>【阅记】斯坦福高效睡眠法 ｜ 高效睡眠 ｜ 高效人生</title>
      <link>https://frytea.com/archives/476/</link>
      <pubDate>Thu, 05 Nov 2020 14:31:01 +0000</pubDate>
      <guid>https://frytea.com/archives/476/</guid>
      <description>&lt;p&gt;时常会听到有人说抱怨自己失眠、睡眠不足，工作压力大没时间睡，有时间睡了反而辗转反侧睡不着。&lt;/p&gt;
&lt;p&gt;这都是很常见的一些睡眠问题，大学室友就饱受睡眠问题的困扰，后来用了褪黑素效果还不错。我自己也有类似的苦恼，有时候在深夜里突然感觉全身难受，究其原因居然是饮水不足。总是导致睡满问题的原因有很多很多，可许多人都会有的共同烦恼可以总结为：&lt;strong&gt;睡不着、睡不够&lt;/strong&gt;。&lt;/p&gt;</description>
    </item>
    <item>
      <title>局域网内跨平台传输文件、文字 ｜ Dukto</title>
      <link>https://frytea.com/archives/474/</link>
      <pubDate>Fri, 30 Oct 2020 03:34:00 +0000</pubDate>
      <guid>https://frytea.com/archives/474/</guid>
      <description>&lt;p&gt;在日常生活和实际工作中经常需要涉及到局域网内多设备传输文件，此前尝试过飞鸽传书，发现Mac平台体验并不好，也不够可靠；使用NAS等网络存储设备可以解决，但不能随时随地都带这个NAS，此时通过一款可跨平台传输文件的工具在网内分享文件就可极大提升效率。&lt;/p&gt;</description>
    </item>
    <item>
      <title>iTerms 常用快捷键</title>
      <link>https://frytea.com/archives/472/</link>
      <pubDate>Thu, 22 Oct 2020 07:21:00 +0000</pubDate>
      <guid>https://frytea.com/archives/472/</guid>
      <description>&lt;ul&gt;
&lt;li&gt;切换 tab： &lt;code&gt;⌘+←&lt;/code&gt; , &lt;code&gt;⌘+→&lt;/code&gt; , &lt;code&gt;⌘+{&lt;/code&gt; , &lt;code&gt;⌘+}&lt;/code&gt; , &lt;code&gt;⌘+数字&lt;/code&gt; 直接定位到该 tab；&lt;/li&gt;
&lt;li&gt;新建 tab： &lt;code&gt;⌘+t&lt;/code&gt;；&lt;/li&gt;
&lt;li&gt;顺序切换 pane： &lt;code&gt;⌘+[&lt;/code&gt; , &lt;code&gt;⌘+]&lt;/code&gt; ；&lt;/li&gt;
&lt;li&gt;按方向切换 pane： &lt;code&gt;⌘+Option+方向键&lt;/code&gt; ；&lt;/li&gt;
&lt;li&gt;切分屏幕： &lt;code&gt;⌘+d&lt;/code&gt;  水平切分， &lt;code&gt;⌘+Shift+d&lt;/code&gt;  垂直切分；&lt;/li&gt;
&lt;li&gt;智能查找，支持正则查找： &lt;code&gt;⌘+f&lt;/code&gt; 。&lt;/li&gt;
&lt;li&gt;多个Tab、窗口执行同一个命令： &lt;code&gt;⌘Command + ⇧Shift + I&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;参考文献&#34;&gt;参考文献&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;你应该知道的 iTerm2 使用方法&amp;ndash;MAC终端工具：&lt;a href=&#34;http://wulfric.me/2015/08/iterm2/&#34;&gt;http://wulfric.me/2015/08/iterm2/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Send command to all iTerm 2 panes：&lt;a href=&#34;https://blog.blakesimpson.co.uk/page.php?id=35&amp;amp;title=send-command-to-all-iterm-2-panes&#34;&gt;https://blog.blakesimpson.co.uk/page.php?id=35&amp;amp;title=send-command-to-all-iterm-2-panes&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;iTerms多个Tab、窗口执行同一个命令：&lt;a href=&#34;https://blog.csdn.net/u014440417/article/details/81136505&#34;&gt;https://blog.csdn.net/u014440417/article/details/81136505&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description>
    </item>
    <item>
      <title>Python执行或远程执行shell命令</title>
      <link>https://frytea.com/archives/471/</link>
      <pubDate>Wed, 21 Oct 2020 13:34:00 +0000</pubDate>
      <guid>https://frytea.com/archives/471/</guid>
      <description>&lt;p&gt;最近想要实现通过脚本循环再 Linux 下运行 shell 命令，经过探索发现使用 Python 语言有几种解决方案，在此简单记录。&lt;/p&gt;
&lt;h2 id=&#34;方案一脚本本地执行命令&#34;&gt;方案一：脚本本地执行命令&lt;/h2&gt;
&lt;p&gt;在 Python 中有两个库都可以实现运行 shell 命令的效果：&lt;/p&gt;
&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;&#34;&gt;&lt;code class=&#34;language-python&#34; data-lang=&#34;python&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;import&lt;/span&gt; subprocess
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;import&lt;/span&gt; os
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;使用方法也很简单：&lt;/p&gt;</description>
    </item>
    <item>
      <title>终端抓包神器 ｜ tcpdump参数解析及使用</title>
      <link>https://frytea.com/archives/470/</link>
      <pubDate>Tue, 20 Oct 2020 09:21:00 +0000</pubDate>
      <guid>https://frytea.com/archives/470/</guid>
      <description>&lt;p&gt;本文整理转自：&lt;a href=&#34;https://blog.csdn.net/hzhsan/article/details/43445787&#34;&gt;tcpdump参数解析及使用详解&lt;/a&gt;&lt;/p&gt;
&lt;h2 id=&#34;tcpdump介绍&#34;&gt;&lt;strong&gt;tcpdump介绍&lt;/strong&gt;&lt;/h2&gt;
&lt;p&gt;&lt;a href=&#34;http://en.wikipedia.org/wiki/Tcpdump&#34;&gt;tcpdump&lt;/a&gt; 是一个运行在命令行下的抓包工具。它允许用户拦截和显示发送或收到过网络连接到该计算机的TCP/IP和其他数据包。tcpdump 适用于大多数的类Unix系统操作系统(如linux,BSD等)。类Unix系统的 tcpdump 需要使用libpcap这个捕捉数据的库就像 windows下的WinPcap。&lt;/p&gt;</description>
    </item>
    <item>
      <title>SecureCRT下Python脚本编写</title>
      <link>https://frytea.com/archives/469/</link>
      <pubDate>Thu, 15 Oct 2020 13:40:00 +0000</pubDate>
      <guid>https://frytea.com/archives/469/</guid>
      <description>&lt;p&gt;本文主要内容转自：&lt;a href=&#34;https://www.cnblogs.com/zhaoyujiao/p/4908627.html&#34;&gt;SecureCRT中python脚本编写学习指南&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;SecureCRT 支持 VB、JavaScript、Python 等多种脚本语言。&lt;/p&gt;
&lt;h2 id=&#34;一使用-python-语言实现-securecrt-中的-dialog-功能&#34;&gt;一、&lt;strong&gt;使用 python 语言实现 SecureCRT 中的 Dialog 功能&lt;/strong&gt;&lt;/h2&gt;
&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;&#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;# $language = &amp;#34;Python&amp;#34;&lt;/span&gt;
&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;# $interface = &amp;#34;1.0&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&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;#crt.Dialog.FileOpenDialog([title,[buttonLabel,[defaultFilename,[filter]]]])&lt;/span&gt;
&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;#弹出一个对话框，用于选择单个文件;如果选择了具体文件则返回该文件的绝对路径，如果选择了弹窗的“取消”，则返回空。&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;filePath &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;  crt.Dialog.FileOpenDialog&lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;please open a file&amp;#34;&lt;/span&gt;,&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;open&amp;#34;&lt;/span&gt;,&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;a.log&amp;#34;&lt;/span&gt;,&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;(*.log)|*.log&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt;
&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;#filePath =  crt.Dialog.FileOpenDialog(&amp;#34;&amp;#34;,&amp;#34;&amp;#34;,&amp;#34;a.log&amp;#34;,&amp;#34;&amp;#34;)&lt;/span&gt;
&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;#crt.Dialog.MessageBox(message, [title, [icon|buttons]]) 警告、按钮类型弹出一个消息框，可以定义按钮，使用按钮和文本消息来实现和用户的简单对话；&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;crt.Dialog.MessageBox&lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;filePath,&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,64|0&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;crt.Dialog.MessageBox&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:#e6db74&#34;&gt;&amp;#34;session&amp;#34;&lt;/span&gt;,64|2&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;crt.Dialog.MessageBox&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:#e6db74&#34;&gt;&amp;#34;session&amp;#34;&lt;/span&gt;,32|1&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;crt.Dialog.MessageBox&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:#e6db74&#34;&gt;&amp;#34;session&amp;#34;&lt;/span&gt;,32|3&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;crt.Dialog.MessageBox&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:#e6db74&#34;&gt;&amp;#34;session&amp;#34;&lt;/span&gt;,32|4&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;crt.Dialog.MessageBox&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:#e6db74&#34;&gt;&amp;#34;session&amp;#34;&lt;/span&gt;,48|5&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;crt.Dialog.MessageBox&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:#e6db74&#34;&gt;&amp;#34;session&amp;#34;&lt;/span&gt;,16|6&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&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;#crt.Dialog.Prompt(message [, title [,default [,isPassword ]]])&lt;/span&gt;
&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;#弹出一个输入框，用户可以填写文字，比如填写文件名，填写路径，填写IP地址等,运行结果如果点击&amp;#39;ok&amp;#39;，返回输入的字符串，否则返回&amp;#34;&amp;#34; &lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;password &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; crt.Dialog.Prompt&lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;password&amp;#34;&lt;/span&gt;,&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;session&amp;#34;&lt;/span&gt;,&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;admin&amp;#34;&lt;/span&gt;,False&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;crt.Dialog.MessageBox&lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;password,&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;password&amp;#34;&lt;/span&gt;,64|0&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;password &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; crt.Dialog.Prompt&lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;password&amp;#34;&lt;/span&gt;,&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;session&amp;#34;&lt;/span&gt;,&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,True&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;crt.Dialog.MessageBox&lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;password,&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;password&amp;#34;&lt;/span&gt;,64|0&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;二使用-python-语言实现-securecrt-中的-screen-功能&#34;&gt;二、&lt;strong&gt;使用 python 语言实现 SecureCRT 中的 Screen 功能&lt;/strong&gt;&lt;/h2&gt;
&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;&#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;# $language = &amp;#34;Python&amp;#34;&lt;/span&gt;
&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;# $interface = &amp;#34;1.0&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&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;# CurrentColumn返回当前光标的列坐标。&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;curCol &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;  crt.Screen.CurrentColumn
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;crt.Dialog.MessageBox&lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;str&lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;curCol&lt;span style=&#34;color:#f92672&#34;&gt;))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&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;# CurrentRow返回当前光标的行坐标。&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;curRow &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; crt.Screen.CurrentRow
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;crt.Dialog.MessageBox&lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;str&lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;curRow&lt;span style=&#34;color:#f92672&#34;&gt;))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&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;# Columns 返回当前屏幕的最大列宽&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;cols &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; crt.Screen.Columns
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;crt.Dialog.MessageBox&lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;str&lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;cols&lt;span style=&#34;color:#f92672&#34;&gt;))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&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;# Rows 返回当前屏幕的最大行宽&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;rows &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; crt.Screen.Rows
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;crt.Dialog.MessageBox&lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;str&lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;rows&lt;span style=&#34;color:#f92672&#34;&gt;))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&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;#IgnoreEscape 定义当使用WaitForString、WaitForStrings和ReadString这三个方法时是否获取Escape字符（特殊字符如回车）默认是会获取的&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;crt.Screen.IgnoreEscape &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; False
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;crt.Dialog.MessageBox&lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;crt.Screen.ReadString&lt;span style=&#34;color:#f92672&#34;&gt;([&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;\03&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;]&lt;/span&gt;,5&lt;span style=&#34;color:#f92672&#34;&gt;))&lt;/span&gt; &lt;span style=&#34;color:#75715e&#34;&gt;#获取ctrl+c&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;crt.Screen.IgnoreEscape &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; True
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;crt.Dialog.MessageBox&lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;crt.Screen.ReadString&lt;span style=&#34;color:#f92672&#34;&gt;([&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;\03&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;]&lt;/span&gt;,2&lt;span style=&#34;color:#f92672&#34;&gt;))&lt;/span&gt; &lt;span style=&#34;color:#75715e&#34;&gt;#不获取ctrl+c&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&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;# MatchIndex 定义当使用WaitForStrings和ReadString这三个方法时会根据参数的位置 获取返回值，从1开始计算，如果没有一个匹配则返回0.&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;outPut &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; crt.Screen.ReadString&lt;span style=&#34;color:#f92672&#34;&gt;([&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;error&amp;#34;&lt;/span&gt;,&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;warning&amp;#34;&lt;/span&gt;,&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;#&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;]&lt;/span&gt;,10&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;index &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; crt.Screen.MatchIndex
&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;if&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;index &lt;span style=&#34;color:#f92672&#34;&gt;==&lt;/span&gt; 0&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    crt.Dialog.MessageBox&lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;Timed out!&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt;
&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;elif&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;index &lt;span style=&#34;color:#f92672&#34;&gt;==&lt;/span&gt; 1&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    crt.Dialog.MessageBox&lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;Found &amp;#39;error&amp;#39;&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt;
&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;elif&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;index &lt;span style=&#34;color:#f92672&#34;&gt;==&lt;/span&gt; 2&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    crt.Dialog.MessageBox&lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;Found &amp;#39;warning&amp;#39;&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt;
&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;elif&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;index &lt;span style=&#34;color:#f92672&#34;&gt;==&lt;/span&gt; 3&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    crt.Dialog.MessageBox&lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;Found &amp;#39;#&amp;#39;&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&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;# Synchronous 设置屏幕的同步属性。若设置为false，则在脚本中使用WaitForString、WaitForStrings、ReadString函数时可能存在丢失一部分数据的现象，设置为true后可能会存在屏幕卡顿的情况，默认为false&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;crt.Screen.Synchronous &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; True
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;crt.Screen.Send&lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;\r\n&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;crt.Screen.ReadString&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:#f92672&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;crt.Screen.Send&lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;\r\n&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;crt.Screen.WaitForString&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:#f92672&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;crt.Screen.Send&lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;\r\n&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;crt.Screen.WaitForStrings&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:#e6db74&#34;&gt;&amp;#34;&amp;gt;&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;])&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;crt.Screen.Send&lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;conf t\r\n&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  
&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;# 方法&lt;/span&gt;
&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;# Clear()清屏功能&lt;/span&gt;
&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;# crt.Screen.Clear()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&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;# get()按照坐标取出一个矩形框内的屏幕上的字符(即从某行某列开始到其它行其它列)，不包含字符串中的回车换行符，所以这个多用于获取无格式的光标处字符串或某小段特定区域字符串。&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;out &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; crt.Screen.Get&lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;row1, col1, row2, col2&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;crt.Dialog.MessageBox&lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;out&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&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;# get2()解释按照坐标取出一个矩形框内的屏幕上的字符(即从某行某列开始到其它行其它列)，包含字符串中的回车换行符，所以这个多用于获取大段带格式的字符串。&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;crt.Screen.Get2&lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;row1, col1, row2, col2&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&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;# IgnoreCase 使用全局参数设置控制在使用WaitForString、WaitForStrings和ReadString这三个函数时是否对大小写敏感，默认为false大小写字符串都会检查，设置为true时则不会检测大小写。&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;crt.Screen.IgnoreCase &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; True
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;crt.Screen.Send&lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;show memory\r\n&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;crt.Screen.WaitForString&lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;more&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;crt.Screen.Send&lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;\r\n&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;crt.Screen.WaitForStrings&lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;more&amp;#34;&lt;/span&gt;,&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;#&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;crt.Screen.Send&lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;\r\n&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;crt.Screen.ReadString&lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;more&amp;#34;&lt;/span&gt;,&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;#&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&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;# Send() 向远端设备或者屏幕发送字符串，当向屏幕发送字符串时需要指定第二个参数为Ture&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;crt.Screen.Send&lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;show version\r\n&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;crt.Screen.Send&lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;\r\nhello,world!\r\n&amp;#34;&lt;/span&gt;,True&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;crt.Screen.IgnoreCase &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; True
&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;while&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;crt.Screen.WaitForString&lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;more&amp;#34;&lt;/span&gt;,10&lt;span style=&#34;color:#f92672&#34;&gt;))&lt;/span&gt;:    
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    crt.Screen.Send&lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;\r\n&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&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;# SendKeys()向当前窗口发送按键，包含组合按键，比如可以发送类似&amp;#34;CTRL+ALT+C&amp;#34;等这样的组合键，这样写即可：crt.screen.sendkeys(&amp;#34;^%c&amp;#34;);这个功能需要语言本身支持，目前只有VBS和JS脚本可以使用。&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&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;# SendSpecial()可以发送特殊控制码，这个控制码是Crt内置的功能，具体可以包含的有Menu、Telnet、VT functions功能列表中提供的所有功能，&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;crt.Screen.SendSpecial&lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;vT_HOLD_SCREEN&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&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;# WaitForCursor()等待光标移动，当移动时返回值为true，当有超时时间参数且超时时返回false，否则会一直等待光标移动。利用这个功能可以用来判断一个命令的输出是否结束，&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;crt.Screen.WaitForCursor&lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;5&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;crt.Screen.Send&lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;\r\nhello,world!\r\n&amp;#34;&lt;/span&gt;,True&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt;
&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;if&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt; crt.Screen.WaitForCursor&lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;5&lt;span style=&#34;color:#f92672&#34;&gt;))&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    crt.Screen.Send&lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;show version\r\n&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&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;# WaitForKey()检测有键盘按键时返回true，当有超时时间参数且超时时返回false，否则会一直等待按键&lt;/span&gt;
&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;if&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;crt.Screen.WaitForKey&lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;5&lt;span style=&#34;color:#f92672&#34;&gt;))&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    crt.Screen.Send&lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;show version\r\n&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&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;# WaitForString()一般用于发送命令后等待某字符串&lt;/span&gt;
&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;# crt.Screen.WaitForString(string,[timeout],[bCaseInsensitive])&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;crt.Screen.WaitForString&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;,10&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&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;# WaitForStrings()与WaitForString是同样的功能，可以等待多个字符串&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;outPut &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; crt.Screen.WaitForStrings&lt;span style=&#34;color:#f92672&#34;&gt;([&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;error&amp;#34;&lt;/span&gt;,&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;warning&amp;#34;&lt;/span&gt;,&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;#&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;]&lt;/span&gt;,10&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;index &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; crt.Screen.MatchIndex
&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;if&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;index &lt;span style=&#34;color:#f92672&#34;&gt;==&lt;/span&gt; 0&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    crt.Dialog.MessageBox&lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;Timed out!&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt;
&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;elif&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;index &lt;span style=&#34;color:#f92672&#34;&gt;==&lt;/span&gt; 1&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    crt.Dialog.MessageBox&lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;Found &amp;#39;error&amp;#39;&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt;
&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;elif&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;index &lt;span style=&#34;color:#f92672&#34;&gt;==&lt;/span&gt; 2&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    crt.Dialog.MessageBox&lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;Found &amp;#39;warning&amp;#39;&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt;
&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;elif&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;index &lt;span style=&#34;color:#f92672&#34;&gt;==&lt;/span&gt; 3&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    crt.Dialog.MessageBox&lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;Found &amp;#39;#&amp;#39;&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    
&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;# ReadString()与WaitForStrings功能类似，都是等待某几个字符出现，不同的是它还会读取字符串之前出现的所有字符。&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;crt.Screen.ReadString&lt;span style=&#34;color:#f92672&#34;&gt;([&lt;/span&gt;string1,string2..&lt;span style=&#34;color:#f92672&#34;&gt;]&lt;/span&gt;,&lt;span style=&#34;color:#f92672&#34;&gt;[&lt;/span&gt;timeout&lt;span style=&#34;color:#f92672&#34;&gt;]&lt;/span&gt;,&lt;span style=&#34;color:#f92672&#34;&gt;[&lt;/span&gt;bCaseInsensitive&lt;span style=&#34;color:#f92672&#34;&gt;])&lt;/span&gt;        
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;1. string，必选参数，等待的字符串，最少有一个，可以是特殊字符比如:&lt;span style=&#34;color:#ae81ff&#34;&gt;\r\n&lt;/span&gt;；
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;2. timeout，可选参数，超时时间，当检测不到对应字符串时会返回false，没有此参数时会一直等待；
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;3. bCaseInsensitive，可选参数，大小写不敏感，默认值是false，表示将检测字符串的大小写，当为true时不检测大小写。
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;三实例&#34;&gt;三、实例&lt;/h2&gt;
&lt;h3 id=&#34;1-实例一循环运行命令&#34;&gt;1. 实例一，循环运行命令&lt;/h3&gt;
&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;&#34;&gt;&lt;code class=&#34;language-python&#34; data-lang=&#34;python&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# $language = &amp;#34;python&amp;#34;&lt;/span&gt;
&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;# $interface = &amp;#34;1.0&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&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;# This automatically generated script may need to be&lt;/span&gt;
&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;# edited in order to work correctly.&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;import&lt;/span&gt; time
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;start_time &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; time&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;time()
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;end_time &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; time&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;time()
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&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;def&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;Main&lt;/span&gt;():
&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;while&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;True&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;		end_time &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; time&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;time()
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;		crt&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;Screen&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;Synchronous &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;False&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;		crt&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;Screen&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;Send(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;?&amp;#34;&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt; 		crt&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;Screen&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;Send(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;\r\n&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;		crt&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;Screen&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;Send(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;\r\n&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;		time&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;sleep(&lt;span style=&#34;color:#ae81ff&#34;&gt;1&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	running_time &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; end_time &lt;span style=&#34;color:#f92672&#34;&gt;-&lt;/span&gt; start_time
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	msg &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;会话已断开&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;\n&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;+&lt;/span&gt; \
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;			&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;running ms : &amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;+&lt;/span&gt; str(running_time) &lt;span style=&#34;color:#f92672&#34;&gt;+&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;\n&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;+&lt;/span&gt; \
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;			&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;start ms   : &amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;+&lt;/span&gt; str(start_time) &lt;span style=&#34;color:#f92672&#34;&gt;+&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;\n&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;+&lt;/span&gt; \
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;			&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;ent ms     : &amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;+&lt;/span&gt; str(end_time) &lt;span style=&#34;color:#f92672&#34;&gt;+&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;\n&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;	crt&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;Dialog&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;MessageBox(msg,&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;session&amp;#34;&lt;/span&gt;,&lt;span style=&#34;color:#ae81ff&#34;&gt;64&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&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Main()
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;参考文献&#34;&gt;参考文献&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;SecureCRT 中 python 脚本编写学习指南：&lt;a href=&#34;https://www.cnblogs.com/zhaoyujiao/p/4908627.html&#34;&gt;https://www.cnblogs.com/zhaoyujiao/p/4908627.html&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;友情链接：&lt;/strong&gt;&lt;a href=&#34;http://www.cnblogs.com/OnOwnRoad/&#34;&gt;http://www.cnblogs.com/OnOwnRoad/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Python time sleep()方法：&lt;a href=&#34;https://www.runoob.com/python/att-time-sleep.html&#34;&gt;https://www.runoob.com/python/att-time-sleep.html&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Python（2）变量声明、变量类型：&lt;a href=&#34;https://blog.csdn.net/qq20004604/article/details/78176329&#34;&gt;https://blog.csdn.net/qq20004604/article/details/78176329&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Python 日期和时间：&lt;a href=&#34;https://www.runoob.com/python/python-date-time.html&#34;&gt;https://www.runoob.com/python/python-date-time.html&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;可能是最全面的 python 字符串拼接总结：&lt;a href=&#34;https://segmentfault.com/a/1190000015475309&#34;&gt;https://segmentfault.com/a/1190000015475309&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;python 中整数，浮点数和字符串的转换：&lt;a href=&#34;https://blog.csdn.net/mx_windforce/article/details/9009455&#34;&gt;https://blog.csdn.net/mx_windforce/article/details/9009455&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;python 毫秒级 sleep：&lt;a href=&#34;https://www.cnblogs.com/mmix2009/p/3223188.html&#34;&gt;https://www.cnblogs.com/mmix2009/p/3223188.html&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Python 获取以毫秒为单位的时间戳：&lt;a href=&#34;https://www.jianshu.com/p/9a8bfc04dbac&#34;&gt;https://www.jianshu.com/p/9a8bfc04dbac&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;python 基础学习 04（死循环）：&lt;a href=&#34;https://blog.csdn.net/yujin2010good/article/details/51278706&#34;&gt;https://blog.csdn.net/yujin2010good/article/details/51278706&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description>
    </item>
    <item>
      <title>Make参数</title>
      <link>https://frytea.com/archives/468/</link>
      <pubDate>Wed, 14 Oct 2020 15:03:11 +0000</pubDate>
      <guid>https://frytea.com/archives/468/</guid>
      <description>&lt;p&gt;&lt;code&gt;-b&lt;/code&gt; &lt;code&gt;-m&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;这两个参数的作用是忽略和其它版本make的兼容性。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;-B&lt;/code&gt; &lt;code&gt;–always-make&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;认为所有的目标都需要更新（重编译）。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;-C&lt;/code&gt; &lt;code&gt;–directory=&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;指定读取makefile的目录。如果有多个“-C”参数，make的解释是后面的路径以前面的作为相对路径，并以最后的目录作为被指定目录。如：“make –C ~hchen/test –C prog”等价于“make –C ~hchen/test/prog”。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Makefile实例：批量编译多个目标</title>
      <link>https://frytea.com/archives/467/</link>
      <pubDate>Wed, 14 Oct 2020 14:56:37 +0000</pubDate>
      <guid>https://frytea.com/archives/467/</guid>
      <description>&lt;p&gt;gist: &lt;a href=&#34;https://gist.github.com/songtianlun/8984626fd80cd20b7c2e71f95caaf8d1&#34;&gt;https://gist.github.com/songtianlun/8984626fd80cd20b7c2e71f95caaf8d1&lt;/a&gt;&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;# Batch Single C file MakeFile

# 指定CPU架构 Architecture -&amp;gt; ARCH
ARCH ?= 
CC = $(ARCH)gcc
SUFFIX = .c
CFLAGS += -Wall -g
LD = 

CUR_SOURCE = $(wildcard *$(SUFFIX))
CUR_TARGETS = $(patsubst %$(SUFFIX), %, $(CUR_SOURCE))

all:$(CUR_TARGETS)

# %:%.c 是一个表示与目标相同 文件的模式变量 
$(CUR_TARGETS):%:%$(SUFFIX)
	$(CC) $&amp;lt; $(CFLAGS) -o $@ $(LD)

# 指定伪目标
.PHONY:clean all
	clean:
		-rm -rf $(TARGETS)
&lt;/code&gt;&lt;/pre&gt;&lt;h2 id=&#34;参考文献&#34;&gt;参考文献&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;arch 这个词到底是什么意思？：&lt;a href=&#34;https://www.v2ex.com/t/389388&#34;&gt;https://www.v2ex.com/t/389388&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;玩转Makefile | 一次编译多个目标：&lt;a href=&#34;https://blog.csdn.net/yychuyu/article/details/79950414&#34;&gt;https://blog.csdn.net/yychuyu/article/details/79950414&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description>
    </item>
    <item>
      <title>Makefile中部分函数的使用</title>
      <link>https://frytea.com/archives/466/</link>
      <pubDate>Wed, 14 Oct 2020 14:55:08 +0000</pubDate>
      <guid>https://frytea.com/archives/466/</guid>
      <description>&lt;h2 id=&#34;foreach&#34;&gt;&lt;code&gt;foreach&lt;/code&gt;&lt;/h2&gt;
&lt;p&gt;一、作用&lt;/p&gt;
&lt;p&gt;循环处理文件列表。&lt;/p&gt;
&lt;p&gt;二、格式&lt;/p&gt;
&lt;p&gt;&lt;code&gt;$(foreach var text commond)&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;code&gt;var&lt;/code&gt;：局部变量&lt;/p&gt;
&lt;p&gt;&lt;code&gt;text&lt;/code&gt;：文件列表，空格隔开，每一次取一个值赋值为变量var&lt;/p&gt;
&lt;p&gt;&lt;code&gt;commond&lt;/code&gt;：对var变量进行操作（一般会使用var变量，不然没意义），每次操作结果都会以空格隔开，最后返回空格隔开的列表。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Makefile基础语法</title>
      <link>https://frytea.com/archives/465/</link>
      <pubDate>Wed, 14 Oct 2020 14:53:18 +0000</pubDate>
      <guid>https://frytea.com/archives/465/</guid>
      <description>&lt;p&gt;&lt;code&gt;Makefile&lt;/code&gt; 是描述文件依赖关系的说明，由若干个规则组成，每个 &lt;strong&gt;规则&lt;/strong&gt; 的格式如下：&lt;/p&gt;
&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;&#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&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&amp;lt;tab键&amp;gt; 命令
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;其中：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;目标&lt;/strong&gt; 是指 &lt;code&gt;make&lt;/code&gt; 最终要创造的产物，也是 &lt;code&gt;make&lt;/code&gt; 执行的动作名称，例如 &lt;code&gt;clean&lt;/code&gt; ；&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;依赖关系&lt;/strong&gt; 是指编译目标体需要依赖的一个或多个文件列表；&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;命令&lt;/strong&gt; 是指为了从依赖文件创造目标文件所需执行的命令。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;code&gt;make&lt;/code&gt; 执行的动作也是一个目标，为避免该目标和文件目标冲突，可以使用以下格式将动作指定伪目标：&lt;/p&gt;</description>
    </item>
    <item>
      <title>Make/Makefile 简介</title>
      <link>https://frytea.com/archives/464/</link>
      <pubDate>Wed, 14 Oct 2020 14:52:50 +0000</pubDate>
      <guid>https://frytea.com/archives/464/</guid>
      <description>&lt;p&gt;&lt;code&gt;Make&lt;/code&gt; 工具可用于在 &lt;code&gt;Unix-like&lt;/code&gt; 和 &lt;code&gt;Microsoft Windows&lt;/code&gt; 系统上，根据 &lt;code&gt;Makrfile&lt;/code&gt; 文件指定的目标及步骤，自动编译构建、更新目标文件。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;类Unix&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Makefile起源于&lt;a href=&#34;https://en.wikipedia.org/wiki/Unix-like&#34;&gt;类Unix&lt;/a&gt;系统，在此类环境中仍然是主要的软件构建机制。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Microsoft Windows&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Windows通过其nmake实用程序支持各种makefile文件。可以在Windows的&lt;a href=&#34;https://en.wikipedia.org/wiki/Cygwin&#34;&gt;Cygwin&lt;/a&gt;环境或&lt;a href=&#34;https://en.wikipedia.org/wiki/Mingw&#34;&gt;Mingw中&lt;/a&gt;执行类似Unix的标准makefile 。&lt;/p&gt;</description>
    </item>
    <item>
      <title>自建KMS服务器 | 持续激活Windows</title>
      <link>https://frytea.com/archives/462/</link>
      <pubDate>Fri, 09 Oct 2020 08:19:00 +0000</pubDate>
      <guid>https://frytea.com/archives/462/</guid>
      <description>&lt;p&gt;最近在 GitHub 上发现一个项目：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://github.com/dylanbai8&#34;&gt;dylanbai8&lt;/a&gt;/&lt;strong&gt;&lt;a href=&#34;https://github.com/dylanbai8/kmspro&#34;&gt;kmspro&lt;/a&gt;：&lt;/strong&gt;&lt;a href=&#34;https://github.com/dylanbai8/kmspro&#34;&gt;https://github.com/dylanbai8/kmspro&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;该项目中提供了一个可以一键安装KMS服务器的脚本，可以在 Linux / Windows 设备上一键安装 KMS 服务器，未来就可以通过自建的KMS服务器激活Windows服务了，使用方法也很简单。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Chevereto 配合 Picgo 打造个人相册/图床解决方案</title>
      <link>https://frytea.com/archives/459/</link>
      <pubDate>Mon, 05 Oct 2020 00:54:00 +0000</pubDate>
      <guid>https://frytea.com/archives/459/</guid>
      <description>&lt;p&gt;&lt;a href=&#34;https://chevereto.com/&#34;&gt;Chevereto&lt;/a&gt; 是一款很好用&lt;strong&gt;图床工具&lt;/strong&gt;，可以实现一键上传、一键 &lt;code&gt;Markdown&lt;/code&gt; 引用等功能，最近发现还可以和 &lt;a href=&#34;https://molunerfinn.com/PicGo/&#34;&gt;Picgo&lt;/a&gt; 配合起来使用，打造更加方便实用个人图床。&lt;/p&gt;
&lt;p&gt;Picgo 是&lt;strong&gt;一个用于快速上传图片并获取图片 URL 链接的工具&lt;/strong&gt;，支持全桌面客户端，应该是目前本人用过最好用的图床链接工具了。&lt;/p&gt;</description>
    </item>
    <item>
      <title>夺冠的感觉？ ｜ 精神传承 ｜ 自我到为人</title>
      <link>https://frytea.com/archives/458/</link>
      <pubDate>Tue, 29 Sep 2020 16:34:41 +0000</pubDate>
      <guid>https://frytea.com/archives/458/</guid>
      <description>&lt;p&gt;今天组织集体去看了电影《夺冠》。&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;《夺冠》是由中宣部与国家体育总局联合拍摄，由陈可辛执导的剧情运动片，巩俐、黄渤、吴刚、彭昱畅、白浪、中国女子排球队领衔主演。该片于2020年9月25日在中国内地上映。&lt;/p&gt;</description>
    </item>
    <item>
      <title>微PE制作U盘启动盘，并安装Win10</title>
      <link>https://frytea.com/archives/457/</link>
      <pubDate>Mon, 28 Sep 2020 13:59:45 +0000</pubDate>
      <guid>https://frytea.com/archives/457/</guid>
      <description>&lt;p&gt;&lt;code&gt;微PE&lt;/code&gt; 是一款很好用的 &lt;code&gt;WinPE&lt;/code&gt; （Windows预先安装环境（英语：Microsoft Windows Preinstallation Environment），简称Windows PE或WinPE）工具箱，可以用来制作一个随插随用的U盘启动盘，并且不影响U盘的日常使用，在 &lt;code&gt;Windows&lt;/code&gt; 系统电脑的系统出问题时会是救命般的存在。下面就来介绍一下如何制作 &lt;code&gt;PE启动盘&lt;/code&gt; ，并使用它来安装 &lt;code&gt;Win10&lt;/code&gt; 操作系统。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Linux 特殊权限 SUID,SGID,SBIT</title>
      <link>https://frytea.com/archives/454/</link>
      <pubDate>Wed, 16 Sep 2020 02:05:00 +0000</pubDate>
      <guid>https://frytea.com/archives/454/</guid>
      <description>&lt;p&gt;setuid 和 setgid 分别是 set uid ID upon execution 和 set group ID upon execution 的缩写。我们一般会再次把它们缩写为 suid 和 sgid。它们是控制文件访问的权限标志(flag)，它们分别允许用户以可执行文件的 owner 或 owner group 的权限运行可执行文件。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Python解析变长结构体</title>
      <link>https://frytea.com/archives/453/</link>
      <pubDate>Mon, 14 Sep 2020 08:21:00 +0000</pubDate>
      <guid>https://frytea.com/archives/453/</guid>
      <description>&lt;p&gt;最近接到一个需求，需要使用 Python 解析 C 来的数据包，而数据包中的格式是通过如下结构体定义的：&lt;/p&gt;
&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;&#34;&gt;&lt;code class=&#34;language-c&#34; data-lang=&#34;c&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;typedef&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;struct&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;msg_t&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;{
&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;int&lt;/span&gt; oid;
&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;int&lt;/span&gt; msg_len;
&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;char&lt;/span&gt; msg_data[&lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt;];
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;}MSG_T;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;其中的 &lt;code&gt;msg_data&lt;/code&gt; 字符串的长度是由 &lt;code&gt;msg_len&lt;/code&gt; 给出的，因此需要首先解析出 &lt;code&gt;msg_len&lt;/code&gt; 的数值，再读取 &lt;code&gt;msg_len&lt;/code&gt; 的内容。&lt;/p&gt;</description>
    </item>
    <item>
      <title>《幸福领导力》 ｜ 高层次的激励力量</title>
      <link>https://frytea.com/archives/1048/</link>
      <pubDate>Sat, 12 Sep 2020 09:59:48 +0000</pubDate>
      <guid>https://frytea.com/archives/1048/</guid>
      <description>&lt;p&gt;当今社会十分缺乏幸福感，同样是加班，有些员工乐在其中，有些员工叫苦不迭。其差异就在于缺乏幸福感。有幸&lt;/p&gt;</description>
    </item>
    <item>
      <title>幸福领导力 ｜ 高层次的激励力量</title>
      <link>https://frytea.com/archives/452/</link>
      <pubDate>Sat, 12 Sep 2020 01:59:48 +0000</pubDate>
      <guid>https://frytea.com/archives/452/</guid>
      <description>&lt;p&gt;当今社会十分缺乏幸福感，同样是加班，有些员工乐在其中，有些员工叫苦不迭。其差异就在于缺乏幸福感。有幸福感的工作和生活，会更具有激情，走的更长久，做的更好。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Python3下基于Scapy库完成网卡抓包解析</title>
      <link>https://frytea.com/archives/451/</link>
      <pubDate>Mon, 07 Sep 2020 06:55:08 +0000</pubDate>
      <guid>https://frytea.com/archives/451/</guid>
      <description>&lt;p&gt;Scapy是一个可以让用户发送、侦听和解析并伪装网络报文的Python程序。这些功能可以用于制作侦测、扫描和攻击网络的工具。&lt;/p&gt;
&lt;p&gt;在 &lt;code&gt;Python&lt;/code&gt; 代码中可以通过 &lt;code&gt;sniff&lt;/code&gt; 函数调用抓包分析，并对抓到的包进行回调操作。&lt;/p&gt;</description>
    </item>
    <item>
      <title>LEDE(OpenWrt)安装openclash ｜旁路由技巧 ｜ 配置网络流量全部通过旁路由</title>
      <link>https://frytea.com/archives/450/</link>
      <pubDate>Fri, 04 Sep 2020 04:25:00 +0000</pubDate>
      <guid>https://frytea.com/archives/450/</guid>
      <description>&lt;p&gt;今天我们来安装一个运行在OpenWrt上的Clash客户端，兼容Shadowsocks、ShadowsocksR、Vmess、Trojan、Snell等协议，可以根据灵活的规则配置实现策略代理。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Esxi安装LEDE(OpenWrt) ｜ 旧电脑变旁路由</title>
      <link>https://frytea.com/archives/449/</link>
      <pubDate>Fri, 04 Sep 2020 04:09:00 +0000</pubDate>
      <guid>https://frytea.com/archives/449/</guid>
      <description>&lt;p&gt;在上篇文章中介绍了如何将旧电脑变成私有云计算数据中心，今天就来讲讲如何在这个数据中心安装一个 OpenWrt ，使其摇身一变为庞路由。&lt;/p&gt;
&lt;p&gt;在继续之前简单介绍 LEDE 和 OpenWrt 的区别：&lt;/p&gt;</description>
    </item>
    <item>
      <title>变废为宝 ｜ 旧电脑变云数据中心 ｜ Esxi 配置</title>
      <link>https://frytea.com/archives/448/</link>
      <pubDate>Fri, 04 Sep 2020 03:43:05 +0000</pubDate>
      <guid>https://frytea.com/archives/448/</guid>
      <description>&lt;p&gt;VMware Inc. 是虚拟机软件行业的老大，vSphere 是在VMware数据中心产品下的一套软件，ESXi, vSphere client 和 vCeneter 都是 vSphere 的组件。ESXi是 vSphere 中最重要的一个组件。ESXi 是虚拟化服务。所有的虚拟机都是运行在 ESXi 服务上面。为了安装，管理和访问这些虚拟机，你需要另外的 vSphere 套件，也就是 vSphere client 或 vCenter。vSphere client允许管理员访问 ESXi 服务并管理虚拟机。vSphere client 是安装在客户机(也就是管理员的笔记本)上面。vSphere client 被用来连接 ESXi 服务器和管理任务。&lt;/p&gt;</description>
    </item>
    <item>
      <title>解决SSH登录缓慢</title>
      <link>https://frytea.com/archives/446/</link>
      <pubDate>Wed, 02 Sep 2020 09:52:00 +0000</pubDate>
      <guid>https://frytea.com/archives/446/</guid>
      <description>&lt;h2 id=&#34;解决方法&#34;&gt;解决方法&lt;/h2&gt;
&lt;p&gt;第一步：修改SSH服务端配置文件：&lt;/p&gt;
&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;&#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;vim /etc/ssh/sshd_config
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;第二步：按照下面说明进行修改：&lt;/p&gt;
&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;&#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;- GSSAPIAuthentication yes
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;+ GSSAPIAuthentication no
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;- UseDNS yes
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;+ UseDNS no
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ul&gt;
&lt;li&gt;UseDNS选项是打开的话，服务器会先根据客户端的 IP地址进行 DNS PTR反向查询出客户端的主机名，然后根据查询出的客户端主机名进行DNS正向A记录查询，并验证是否与原始 IP地址一致，通过此种措施来防止客户端欺骗&lt;/li&gt;
&lt;li&gt;GSSAPIAuthentication 认证很少用到，关闭可以加快SSH访问速度&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;参考文献&#34;&gt;参考文献&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;SSH 中的 GSSAPI 相关选项： &lt;a href=&#34;https://jaminzhang.github.io/linux/GSSAPI-related-options-in-ssh-configuration/&#34;&gt;https://jaminzhang.github.io/linux/GSSAPI-related-options-in-ssh-configuration/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;通过关闭 UseDNS和GSSAPIAuthentication选项加速 SSH登录： &lt;a href=&#34;https://www.cnblogs.com/wjoyxt/p/3790537.html&#34;&gt;https://www.cnblogs.com/wjoyxt/p/3790537.html&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description>
    </item>
    <item>
      <title>《加速》</title>
      <link>https://frytea.com/archives/1071/</link>
      <pubDate>Sun, 30 Aug 2020 23:54:57 +0000</pubDate>
      <guid>https://frytea.com/archives/1071/</guid>
      <description>&lt;p&gt;这本书看完许久了，但一直没有整理出笔记。理由是：高亮区域实在太多，难以取舍。可就在近期，我自己没有必&lt;/p&gt;</description>
    </item>
    <item>
      <title>想要加速人生吗 ｜ 加速 ｜ 阅后记</title>
      <link>https://frytea.com/archives/445/</link>
      <pubDate>Sun, 30 Aug 2020 15:54:57 +0000</pubDate>
      <guid>https://frytea.com/archives/445/</guid>
      <description>&lt;p&gt;这本书看完许久了，但一直没有整理出笔记。理由是：高亮区域实在太多，难以取舍。可就在近期，我自己没有必要把所有高光时刻都一一呈现，只需要挑选几个比较有意思的点分享即可。我不是在写书，我是在呈现自己的阅读思路。下面是这本书的一些信息，先装模作样的展示一下：&lt;/p&gt;</description>
    </item>
    <item>
      <title>《蒂姆·库克传》 - 苹果的转机与未来</title>
      <link>https://frytea.com/archives/1044/</link>
      <pubDate>Sat, 29 Aug 2020 16:19:00 +0000</pubDate>
      <guid>https://frytea.com/archives/1044/</guid>
      <description>&lt;p&gt;不知道大家对于 蒂姆 · 库克 是否好奇，究竟是什么样的人才能够接过乔帮主的接力棒，成为世界上最有创&lt;/p&gt;</description>
    </item>
    <item>
      <title>苹果的转机与未来 ｜ 蒂姆·库克传阅后记</title>
      <link>https://frytea.com/archives/444/</link>
      <pubDate>Sat, 29 Aug 2020 08:19:00 +0000</pubDate>
      <guid>https://frytea.com/archives/444/</guid>
      <description>&lt;p&gt;不知道大家对于 蒂姆 · 库克 是否好奇，究竟是什么样的人才能够接过乔帮主的接力棒，成为世界上最有创造力公司的掌舵人，顶着外界带来的巨大压力，带领苹果走向新的巅峰呢？&lt;/p&gt;</description>
    </item>
    <item>
      <title>《刘强东（传）》 - 人到绝境是重生 ｜ 创业就是解决问题 ｜</title>
      <link>https://frytea.com/archives/1069/</link>
      <pubDate>Mon, 24 Aug 2020 22:25:44 +0000</pubDate>
      <guid>https://frytea.com/archives/1069/</guid>
      <description>&lt;p&gt;创业究竟是为了什么？ 如何才能成功呢？ 前些阵子我在这本《刘强东：人到绝境是重生》中找到了答案。 壹&lt;/p&gt;</description>
    </item>
    <item>
      <title>人到绝境是重生 ｜ 创业就是解决问题 ｜ 刘强东（传）阅后记</title>
      <link>https://frytea.com/archives/441/</link>
      <pubDate>Mon, 24 Aug 2020 14:25:44 +0000</pubDate>
      <guid>https://frytea.com/archives/441/</guid>
      <description>&lt;p&gt;创业究竟是为了什么？&lt;/p&gt;
&lt;p&gt;如何才能成功呢？&lt;/p&gt;
&lt;p&gt;前些阵子我在这本《刘强东：人到绝境是重生》中找到了答案。&lt;/p&gt;
&lt;p&gt;&lt;img alt=&#34;https://imagehost-cdn.frytea.com/20200822083919.png&#34; loading=&#34;lazy&#34; src=&#34;https://imagehost-cdn.frytea.com/20200822083919.png&#34;&gt;&lt;/p&gt;
&lt;h2 id=&#34;壹--创业就是解决问题&#34;&gt;壹 · 创业就是解决问题&lt;/h2&gt;
&lt;p&gt;刘强东初期经营过饭馆，最终惨淡收场。后来去中关村开公司，他发现当时的中关村，有许多柜台，但是货源无法保证。常常出现现场“炒货”的情况。顾客等待的时间也是很随缘，柜台因此损失了不少钱。刘强东发现这点，于是进了一批刻录机，挨家柜台推销，虽价格高一些，但保证两分钟内送到，超市赔钱。就这样，他解决了当时柜台货源得不到保障的问题，生意越做越大。后来成了中关村刻录机最大的代理商。&lt;/p&gt;</description>
    </item>
    <item>
      <title>OpsnSSH抓包分析 | SSH协议分析</title>
      <link>https://frytea.com/archives/440/</link>
      <pubDate>Mon, 24 Aug 2020 11:30:00 +0000</pubDate>
      <guid>https://frytea.com/archives/440/</guid>
      <description>&lt;p&gt;SSH 协议是建立在不安全的网络之上的进行远程安全登陆的协议。它是一个协议族，其中有三个子协议，分别是：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;1、传输层协议&lt;code&gt;[SSH-TRANS]&lt;/code&gt;:提供服务器验证、完整性和保密性功能,建立在传统的 TCP/IP 协议之上。&lt;/li&gt;
&lt;li&gt;2、验证协议&lt;code&gt;[SSH-USERAUTH]&lt;/code&gt;:向服务器验证客户端用户，有基于用户名密码和公钥两种验证方式，建立在传输层协议&lt;code&gt;[SSH-TRANS]&lt;/code&gt;之上。&lt;/li&gt;
&lt;li&gt;3、连接协议&lt;code&gt;[SSH-CONNECT]&lt;/code&gt;:将加密隧道复用为若干逻辑信道。它建立在验证协议之上。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img alt=&#34;https://imagehost-cdn.frytea.com/20200820115639.png&#34; loading=&#34;lazy&#34; src=&#34;https://imagehost-cdn.frytea.com/20200820115639.png&#34;&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Linux下文件系统技巧 | 统计个数 | 只见文件或目录</title>
      <link>https://frytea.com/archives/439/</link>
      <pubDate>Mon, 24 Aug 2020 02:42:00 +0000</pubDate>
      <guid>https://frytea.com/archives/439/</guid>
      <description>&lt;h2 id=&#34;统计个数&#34;&gt;统计个数&lt;/h2&gt;
&lt;p&gt;查看某目录下文件的个数&lt;/p&gt;
&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;&#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;$ ls -l | grep &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;^-&amp;#34;&lt;/span&gt; | wc -l
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&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;# example&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;$ ls -l /etc | grep &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;^-&amp;#34;&lt;/span&gt; | wc -l
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;134&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;或&lt;/p&gt;
&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;&#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;$ find ./company -type f | wc -l
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&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;# Example &lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;$ sudo find /etc -type f | wc -l
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;3829&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;查看某目录下文件的个数，包括子目录里的。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Putty个性化配置</title>
      <link>https://frytea.com/archives/437/</link>
      <pubDate>Fri, 21 Aug 2020 02:19:52 +0000</pubDate>
      <guid>https://frytea.com/archives/437/</guid>
      <description>&lt;p&gt;终端工具用一圈，还是Putty简单好用。就是Putty难看的外观、不清晰的字体劝退了许多人，今天就简单介绍一种快速美化putty的方法。&lt;/p&gt;
&lt;p&gt;Putty的配置文件通过注册表来记录，因此通过修改注册表来修改其配置。&lt;/p&gt;</description>
    </item>
    <item>
      <title>时代终将遗忘无输出的人 ｜ 写作是最好的自我投资 ｜ 阅后记</title>
      <link>https://frytea.com/archives/436/</link>
      <pubDate>Thu, 20 Aug 2020 13:15:07 +0000</pubDate>
      <guid>https://frytea.com/archives/436/</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;今天工作结束的早，回到住处读完了这本《写作是最好的自我投资》，筹划着什么时候给自己配备一台汉王黄金屋。读完本书又一个小灵感——根据标题做完思维导图，基本就掌握了本书脉络。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Ubuntu20.04修改网卡配置</title>
      <link>https://frytea.com/archives/435/</link>
      <pubDate>Thu, 20 Aug 2020 01:52:00 +0000</pubDate>
      <guid>https://frytea.com/archives/435/</guid>
      <description>&lt;p&gt;近期常常用到Ubuntu20.04server镜像，在一次虚拟机配置时不小心配错了ip，修在网络配置时找了一大圈教程都是无效。最后发现&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;“ubuntu从17.10开始，已放弃在 &lt;code&gt;/etc/network/interfaces&lt;/code&gt; 里固定IP的配置，即使配置也不会生效，而是改成netplan方式 ，配置写在 &lt;code&gt;/etc/netplan/01-netcfg.yaml&lt;/code&gt; 或者类似名称的yaml文件里”&lt;/strong&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Aria2 &#43; Rclone 实现离线下载 | 完美脚本配置 | 解决无法上传问题</title>
      <link>https://frytea.com/archives/433/</link>
      <pubDate>Wed, 19 Aug 2020 12:08:00 +0000</pubDate>
      <guid>https://frytea.com/archives/433/</guid>
      <description>&lt;p&gt;首先声明，本文完美脚本来自于： &lt;a href=&#34;https://github.com/P3TERX/aria2.conf&#34;&gt;P3TERX/aria2.conf&lt;/a&gt;，本文记录的是安装完美脚本 2020.08.08 版本时遇到的问题。&lt;/p&gt;
&lt;h2 id=&#34;安装步骤&#34;&gt;安装步骤&lt;/h2&gt;
&lt;h3 id=&#34;第一步安装-aria2&#34;&gt;第一步，安装 Aria2&lt;/h3&gt;
&lt;p&gt;这里使用 &lt;a href=&#34;https://github.com/P3TERX/aria2.sh&#34;&gt;Aria2 一键安装管理脚本 增强版&lt;/a&gt;，执行下面的代码下载并运行脚本，出现脚本操作菜单输入 &lt;code&gt;1&lt;/code&gt; 开始安装。&lt;/p&gt;</description>
    </item>
    <item>
      <title>《4点起床：最养生和高效的时间管理》摘录总结 ｜ 十句阅读</title>
      <link>https://frytea.com/archives/432/</link>
      <pubDate>Sun, 16 Aug 2020 22:29:32 +0000</pubDate>
      <guid>https://frytea.com/archives/432/</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;4点起床：最养生和高效的时间管理
作者: 【日】中岛孝志
出版年: 2011-8
ISBN: 9787514200577
共60个笔记&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;此前一直在写阅读“十句感悟”，试图将全书读书笔记浓缩为十句摘录，以快速展现全书精华。可做着做着不得不发现——这太难了。有些书想要摘录的东西太多，有些又不多。若是以大内容来划分为十段，又常常存在断章取义的嫌疑。因此干脆就不这么做了，直接写成摘录总结好了。想写几条写几条，只要意思表达到就好。也许，还能保留这个名字——十句读书？&lt;/p&gt;</description>
    </item>
    <item>
      <title>《哈利·波特与魔法石》观影记录 ｜ 感动 ｜ 魔法永恒</title>
      <link>https://frytea.com/archives/431/</link>
      <pubDate>Sun, 16 Aug 2020 13:28:00 +0000</pubDate>
      <guid>https://frytea.com/archives/431/</guid>
      <description>&lt;p&gt;今天去看了《哈利波特与魔法石》重映：4K 修复 + 3D 版。&lt;/p&gt;
&lt;p&gt;数据显示，正在中国内地重映的第一部《哈利 · 波特》电影《哈利 · 波特与魔法石》，目前内地累计票房已破 1 亿元：18 年前首映票房为 5600 万，重映现 4490 万（2020年8月15日IT之家报道）。&lt;/p&gt;</description>
    </item>
    <item>
      <title>个性化终端 | zsh bash oh-my-zsh</title>
      <link>https://frytea.com/archives/430/</link>
      <pubDate>Sat, 15 Aug 2020 04:09:00 +0000</pubDate>
      <guid>https://frytea.com/archives/430/</guid>
      <description>&lt;p&gt;一直搞不清楚各类终端的区别，最近看到一张图描述的不错。&lt;/p&gt;
&lt;p&gt;&lt;img alt=&#34;http://imagehost-cdn.frytea.com/20200808163258.png&#34; loading=&#34;lazy&#34; src=&#34;http://imagehost-cdn.frytea.com/20200808163258.png&#34;&gt;&lt;/p&gt;
&lt;p&gt;自己装虚拟机发现为什么自己的虚拟机默认sh这么丑，而且自动补全不好用，今天才发现原来看到很好看的终端默认sh是zsh，而非bash。&lt;/p&gt;</description>
    </item>
    <item>
      <title>VirtualBox无限嵌套方法 | 虚拟机套娃</title>
      <link>https://frytea.com/archives/429/</link>
      <pubDate>Sat, 15 Aug 2020 03:18:14 +0000</pubDate>
      <guid>https://frytea.com/archives/429/</guid>
      <description>&lt;p&gt;接上文，最近研究移动办公环境，采用VirtualBox虚拟机环境，由于一些桌面办公软件必须采用Windows系统，因此采用VirtualBox虚拟出一台ltsc版的win10系统，此时需要再搭建一个Linux编程环境，如果独立再开虚拟机，就无法共享win10虚拟机的vpn，之后发现VirtualBox其实是可以无限嵌套的，在此记录方法。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Win10 LTSC 激活方法 | Win10专业版(永久激活)长期服务版 LTSC 2019密钥</title>
      <link>https://frytea.com/archives/428/</link>
      <pubDate>Sat, 15 Aug 2020 01:17:45 +0000</pubDate>
      <guid>https://frytea.com/archives/428/</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;本文核心内容转自雨林木风资讯：&lt;a href=&#34;http://www.ylmfwin100.com/&#34;&gt;http://www.ylmfwin100.com/&lt;/a&gt;&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;最近计划打造一套随身携带的移动办公环境，可以做到在陌生环境或是临时办公场所，运行自己的虚拟系统或是远程系统，避免数据泄露。考虑了远程桌面+虚拟机两种方案，但考虑到中国境内网络环境复杂，远程桌面常常会因为一些原因中断服务，因此计划配置虚拟机解决这个问题。虚拟机的话系统方面，编程当然是Ubuntu了，除此之外还需要一个撰写文档或是做日常处理的桌面，于是选择了win10 ltsc 这款轻量级系统，之后选择VirtualBox作为虚拟化平台，原因是开源+跨平台。以下是win10 ltsc版激活方法：&lt;/p&gt;</description>
    </item>
    <item>
      <title>一站式安装 X终端全家桶 ｜ XShell Xstp Xmanager ｜ 官方渠道 ｜ 破解</title>
      <link>https://frytea.com/archives/427/</link>
      <pubDate>Fri, 14 Aug 2020 00:40:00 +0000</pubDate>
      <guid>https://frytea.com/archives/427/</guid>
      <description>&lt;h2 id=&#34;前言&#34;&gt;前言&lt;/h2&gt;
&lt;p&gt;由 NetSarang 公司推出的一系列终端模拟软件：XShell、Xftp、XManager 提供了强大且安全的远程终端模拟功能，是 Windows 平台上比较强大的终端模拟软件之一，几乎是开发者必备软件之一。众所周知该软件分为 评估版本、家庭/学校免费版、激活码注册收费版，而破解往往需要基于&lt;strong&gt;激活码注册收费版&lt;/strong&gt;。&lt;/p&gt;</description>
    </item>
    <item>
      <title>VMware 安装运行 deepin 虚拟机 | 体验中国深度</title>
      <link>https://frytea.com/archives/426/</link>
      <pubDate>Thu, 13 Aug 2020 11:49:06 +0000</pubDate>
      <guid>https://frytea.com/archives/426/</guid>
      <description>&lt;h2 id=&#34;一安装步骤&#34;&gt;一、安装步骤&lt;/h2&gt;
&lt;h3 id=&#34;第一步准备系统镜像&#34;&gt;第一步，准备系统镜像&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;镜像在官网下载即可。
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;深度官网：&lt;a href=&#34;https://www.deepin.org/zh/&#34;&gt;https://www.deepin.org/zh/&lt;/a&gt;&lt;/p&gt;
&lt;h3 id=&#34;第二步创建虚拟机&#34;&gt;第二步，创建虚拟机&lt;/h3&gt;
&lt;p&gt;在Vmware Wordstation 中新建一个虚拟机，选择标准安装即可，镜像直接加载刚刚下载好的镜像即可，在选择客户机操作系统时选择 &lt;code&gt;Ubuntu 64&lt;/code&gt; 位。&lt;/p&gt;</description>
    </item>
    <item>
      <title>《让你的时间更有价值》十句感悟</title>
      <link>https://frytea.com/archives/425/</link>
      <pubDate>Sat, 08 Aug 2020 13:21:41 +0000</pubDate>
      <guid>https://frytea.com/archives/425/</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;让你的时间更有价值：空闲时间就是你的未来财富（微信阅读独家首发）
张萌 萌姐
共51个笔记&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;与萌姐第一次“遇见”是在那一本《精力管理手册》，后来那本书成为了我毕业设计重要理论依据之一，成为“规划助手”app设计的重要参考资料。在日程规划方法的设计中，参考了大量《精力管理手册》中的内容，这本书也是当时极少有的，单讲精力的一本书。除此之外还有一本《精力管理》也对我产生了极大的影响。&lt;/p&gt;</description>
    </item>
    <item>
      <title>计算机基础之位运算 | 按位取反</title>
      <link>https://frytea.com/archives/424/</link>
      <pubDate>Thu, 06 Aug 2020 11:25:00 +0000</pubDate>
      <guid>https://frytea.com/archives/424/</guid>
      <description>&lt;p&gt;程序中的所有数在计算机内存中都是以二进制的形式储存的。位操作是程序设计中对位模式或二进制数的一元和二元操作。在许多古老的微处理器上，位运算比加减运算略快，通常位运算比乘除法运算要快很多。在现代架构中，情况并非如此：位运算的运算速度通常与加法运算相同（仍然快于乘法运算）。（摘自维基百科）&lt;/p&gt;</description>
    </item>
    <item>
      <title>《任正非传》十句摘录</title>
      <link>https://frytea.com/archives/422/</link>
      <pubDate>Sun, 02 Aug 2020 15:10:10 +0000</pubDate>
      <guid>https://frytea.com/archives/422/</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;孙力科著
共36个笔记&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;华为近几年在世界范围内掀起的浪潮相信每个人都看在眼里，随着华为成功，其掌舵者任正非也成为当今中国企业家中避不开的一位。在此之前只知道任总是军人出身，学习很好，很有远见，对于各种困难的处理颇有大将风度。看完这本书，从字里行间认识到到任总有着极强的个人魅力。从华为选择研发交换机这一领域获得第一桶金，到后来打入非洲市场、欧洲市场、美国市场，再到后面与行业巨头思科的“世纪之讼”，再到后来“后院起火”，跌宕起伏之中令人产生不少疑惑，也对任总打心底里的佩服。&lt;/p&gt;</description>
    </item>
    <item>
      <title>解决拉取github仓库报错“gnutls_handshake() failed”问题</title>
      <link>https://frytea.com/archives/421/</link>
      <pubDate>Mon, 27 Jul 2020 00:21:00 +0000</pubDate>
      <guid>https://frytea.com/archives/421/</guid>
      <description>&lt;p&gt;本文首发于：https://blog.frytea.com/archives/421/&lt;/p&gt;
&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;&#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;gnutls_handshake&lt;span style=&#34;color:#f92672&#34;&gt;()&lt;/span&gt; failed: The TLS connection was non-properly terminated.
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;最近为新配置的虚机拉取库，但是从 GitHub 拉取库总是出问题，查阅网上文献将问题锁定在代理，但是找了一圈还是没有找到答案。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Vim安装插件管理器Vundle</title>
      <link>https://frytea.com/archives/418/</link>
      <pubDate>Sun, 26 Jul 2020 11:17:16 +0000</pubDate>
      <guid>https://frytea.com/archives/418/</guid>
      <description>&lt;h2 id=&#34;安装vundle&#34;&gt;安装vundle&lt;/h2&gt;
&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;&#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;$ git clone https://github.com/VundleVim/Vundle.vim.git ~/.vim/bundle/Vundle.vim
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;默认安装在/.vim/bundle/vundle下；&lt;/p&gt;
&lt;h2 id=&#34;配置说明&#34;&gt;配置说明：&lt;/h2&gt;
&lt;p&gt;插件有三种类型:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Github上vim-scripts仓库的插件&lt;/li&gt;
&lt;li&gt;Github上非vim-scripts仓库的插件&lt;/li&gt;
&lt;li&gt;不在Github上的插件
对于不同的插件，vundle自动管理和下载插件的时候，有不同的地址填写方法，有如下三类：&lt;/li&gt;
&lt;/ol&gt;
&lt;ol&gt;
&lt;li&gt;在Github上vim-scripts用户下的仓库,只需要写出repos（仓库）名称&lt;/li&gt;
&lt;li&gt;在Github其他用户下的repos, 需要写出&amp;quot;用户名/repos名&amp;quot;&lt;/li&gt;
&lt;li&gt;不在Github上的插件，需要写出git全路径&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;配置vundle插件&#34;&gt;&lt;strong&gt;配置vundle插件：&lt;/strong&gt;&lt;/h2&gt;
&lt;p&gt;可以在终端通过vim打开~/.vimrc文件，&lt;/p&gt;</description>
    </item>
    <item>
      <title>Ubuntu下为vim安装YouCompleteMe插件</title>
      <link>https://frytea.com/archives/419/</link>
      <pubDate>Sun, 26 Jul 2020 11:17:00 +0000</pubDate>
      <guid>https://frytea.com/archives/419/</guid>
      <description>&lt;h2 id=&#34;前提条件&#34;&gt;前提条件&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;已安装 Vundle  (参考 &lt;a href=&#34;https://blog.frytea.com/archives/419/&#34;&gt;Vim安装插件管理器Vundle&lt;/a&gt;）&lt;/li&gt;
&lt;li&gt;Vim 版本 ≥ Vim 7.4.1578+ （查看 &lt;code&gt;vim --version&lt;/code&gt;）&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;安装&#34;&gt;安装&lt;/h2&gt;
&lt;p&gt;第一步，使用Vundle安装YouCompleteM&lt;/p&gt;
&lt;p&gt;在.vimrc中添加以下内容&lt;/p&gt;
&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;&#34;&gt;&lt;code class=&#34;language-jsx&#34; data-lang=&#34;jsx&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;Plugin&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;Valloric/YouCompleteMe&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;然后拉取源码（或是 &lt;code&gt;:PluginInstall&lt;/code&gt; 也可）&lt;/p&gt;</description>
    </item>
    <item>
      <title>VIM 创建程序文件自动添加头部注释</title>
      <link>https://frytea.com/archives/416/</link>
      <pubDate>Sun, 26 Jul 2020 11:16:37 +0000</pubDate>
      <guid>https://frytea.com/archives/416/</guid>
      <description>&lt;p&gt;修改 &lt;code&gt;/etc/vimrc&lt;/code&gt; 或 &lt;code&gt;~/.vimrc&lt;/code&gt;，在文件最后添加以下内容：&lt;/p&gt;
&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;&#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:#e6db74&#34;&gt;&amp;#34; 当新建 .h .c .hpp .cpp .mk .sh等文件时自动调用SetTitle 函数
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;autocmd BufNewFile *.[ch],*.hpp,*.cpp,Makefile,*.mk,*.sh exec &amp;#34;&lt;/span&gt;:call SetTitle&lt;span style=&#34;color:#f92672&#34;&gt;()&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt; 加入注释 
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;func SetComment&lt;span style=&#34;color:#f92672&#34;&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        call setline&lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;1,&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;/*================================================================&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        call append&lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;line&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:#f92672&#34;&gt;)&lt;/span&gt;,   &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;*   Copyright (C) &amp;#34;&lt;/span&gt;.strftime&lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;%Y&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt;.&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34; IEucd Inc. All rights reserved.&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        call append&lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;line&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:#f92672&#34;&gt;)&lt;/span&gt;+1, &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;*   &amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        call append&lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;line&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:#f92672&#34;&gt;)&lt;/span&gt;+2, &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;*   文件名称：&amp;#34;&lt;/span&gt;.expand&lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;%:t&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        call append&lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;line&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:#f92672&#34;&gt;)&lt;/span&gt;+3, &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;*   创 建 者：SongTL, songtianlun@comleader.com.cn&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        call append&lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;line&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:#f92672&#34;&gt;)&lt;/span&gt;+4, &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;*   创建日期：&amp;#34;&lt;/span&gt;.strftime&lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;%Y年%m月%d日&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        call append&lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;line&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:#f92672&#34;&gt;)&lt;/span&gt;+5, &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;*   描    述：&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        call append&lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;line&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:#f92672&#34;&gt;)&lt;/span&gt;+6, &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;*&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        call append&lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;line&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:#f92672&#34;&gt;)&lt;/span&gt;+7, &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;================================================================*/&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        call append&lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;line&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:#f92672&#34;&gt;)&lt;/span&gt;+8, &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        call append&lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;line&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:#f92672&#34;&gt;)&lt;/span&gt;+9, &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;endfunc
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34; 加入shell,Makefile注释
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;func SetComment_sh()
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;        call setline(3, &amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;#================================================================&amp;#34;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        call setline&lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;4, &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;#   Copyright (C) &amp;#34;&lt;/span&gt;.strftime&lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;%Y&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt;.&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34; IEucd Inc. All rights reserved.&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        call setline&lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;5, &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;#   &amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        call setline&lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;6, &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;#   文件名称：&amp;#34;&lt;/span&gt;.expand&lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;%:t&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        call setline&lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;7, &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;#   创 建 者：SongTL, songtianlun@comleader.com.cn&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        call setline&lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;8, &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;#   创建日期：&amp;#34;&lt;/span&gt;.strftime&lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;%Y年%m月%d日&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        call setline&lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;9, &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;#   描    述：&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        call setline&lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;10, &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;#&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        call setline&lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;11, &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;#================================================================&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        call setline&lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;12, &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        call setline&lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;13, &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;endfunc
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34; 定义函数SetTitle，自动插入文件头 
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;func SetTitle()
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;        if &amp;amp;filetype == &amp;#39;make&amp;#39;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;                call setline(1,&amp;#34;&amp;#34;)
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;                call setline(2,&amp;#34;&amp;#34;)
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;                call SetComment_sh()
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;        elseif &amp;amp;filetype == &amp;#39;sh&amp;#39;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;                call setline(1,&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;#!/system/bin/sh&amp;#34;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                call setline&lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;2,&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                call SetComment_sh&lt;span style=&#34;color:#f92672&#34;&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&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;else&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;             call SetComment&lt;span style=&#34;color:#f92672&#34;&gt;()&lt;/span&gt;
&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;if&lt;/span&gt; expand&lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;%:e&amp;#34;&lt;/span&gt;&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;#39;hpp&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                  call append&lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;line&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:#f92672&#34;&gt;)&lt;/span&gt;+10, &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;#ifndef _&amp;#34;&lt;/span&gt;.toupper&lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;expand&lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;%:t:r&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;))&lt;/span&gt;.&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;_H&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                  call append&lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;line&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:#f92672&#34;&gt;)&lt;/span&gt;+11, &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;#define _&amp;#34;&lt;/span&gt;.toupper&lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;expand&lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;%:t:r&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;))&lt;/span&gt;.&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;_H&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                  call append&lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;line&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:#f92672&#34;&gt;)&lt;/span&gt;+12, &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;#ifdef __cplusplus&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                  call append&lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;line&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:#f92672&#34;&gt;)&lt;/span&gt;+13, &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;extern \&amp;#34;C\&amp;#34;&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                  call append&lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;line&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:#f92672&#34;&gt;)&lt;/span&gt;+14, &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;{&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                  call append&lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;line&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:#f92672&#34;&gt;)&lt;/span&gt;+15, &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;#endif&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                  call append&lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;line&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:#f92672&#34;&gt;)&lt;/span&gt;+16, &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                  call append&lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;line&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:#f92672&#34;&gt;)&lt;/span&gt;+17, &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;#ifdef __cplusplus&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                  call append&lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;line&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:#f92672&#34;&gt;)&lt;/span&gt;+18, &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;}&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                  call append&lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;line&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:#f92672&#34;&gt;)&lt;/span&gt;+19, &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;#endif&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                  call append&lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;line&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:#f92672&#34;&gt;)&lt;/span&gt;+20, &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;#endif //&amp;#34;&lt;/span&gt;.toupper&lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;expand&lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;%:t:r&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;))&lt;/span&gt;.&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;_H&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;             elseif expand&lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;%:e&amp;#34;&lt;/span&gt;&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;#39;h&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                call append&lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;line&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:#f92672&#34;&gt;)&lt;/span&gt;+10, &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;#pragma once&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;             elseif &amp;amp;filetype &lt;span style=&#34;color:#f92672&#34;&gt;==&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;c&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                call append&lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;line&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:#f92672&#34;&gt;)&lt;/span&gt;+10,&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;#include \&amp;#34;&amp;#34;&lt;/span&gt;.expand&lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;%:t:r&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt;.&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;.h\&amp;#34;&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;             elseif &amp;amp;filetype &lt;span style=&#34;color:#f92672&#34;&gt;==&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;cpp&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                call append&lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;line&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:#f92672&#34;&gt;)&lt;/span&gt;+10, &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;#include \&amp;#34;&amp;#34;&lt;/span&gt;.expand&lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;%:t:r&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt;.&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;.h\&amp;#34;&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;             endif
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        endif
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;endfun
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;使用效果：&lt;/p&gt;</description>
    </item>
    <item>
      <title>VIM个性化配置（一）</title>
      <link>https://frytea.com/archives/417/</link>
      <pubDate>Sun, 26 Jul 2020 11:16:00 +0000</pubDate>
      <guid>https://frytea.com/archives/417/</guid>
      <description>&lt;h2 id=&#34;配置&#34;&gt;&lt;strong&gt;配置&lt;/strong&gt;&lt;/h2&gt;
&lt;p&gt;只需在Home目录创建一个 &lt;code&gt;~/.vimrc&lt;/code&gt; ****文件即可以配置 &lt;code&gt;vim&lt;/code&gt; 了，如需安装插件，在 &lt;code&gt;~/.vim&lt;/code&gt; 目录下创建一个bundle文件夹，插件装在里面。（需安装 &lt;code&gt;Vundle&lt;/code&gt; 插件管理器），将以下内容拷入&lt;code&gt;~/.vimrc&lt;/code&gt; ****文件中即可。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Vim 版本升级（Vim8）</title>
      <link>https://frytea.com/archives/415/</link>
      <pubDate>Sun, 26 Jul 2020 11:15:57 +0000</pubDate>
      <guid>https://frytea.com/archives/415/</guid>
      <description>&lt;h2 id=&#34;安装步骤&#34;&gt;安装步骤&lt;/h2&gt;
&lt;h3 id=&#34;第一步下载源码&#34;&gt;第一步，下载源码&lt;/h3&gt;
&lt;p&gt;到&lt;a href=&#34;https://github.com/vim/vim/releases&#34;&gt;Vim官方Github仓库&lt;/a&gt;下载目前最新的Vim Release版本&lt;/p&gt;
&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;&#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;wget https://codeload.github.com/vim/vim/tar.gz/v8.2.1258
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id=&#34;第二步解压&#34;&gt;第二步，解压&lt;/h3&gt;
&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;&#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;$ mv v8.2.1258  vim-v8.2.1258.tar.gz
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;$ tar -xvzf vim-v8.2.1258.tar.gz
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id=&#34;第三步编译安装&#34;&gt;第三步，编译安装&lt;/h3&gt;
&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;&#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;$ cd vim-8.2.1258/
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;$ ./configure --prefix&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;$HOME/.local --enable-python3interp&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;yes &lt;span style=&#34;color:#f92672&#34;&gt;&amp;amp;&amp;amp;&lt;/span&gt; make &lt;span style=&#34;color:#f92672&#34;&gt;&amp;amp;&amp;amp;&lt;/span&gt; make install
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ul&gt;
&lt;li&gt;这里注意一下我们需要用configure配置一下安装的路径，将Vim8安装到自己账户的目录下，避免干扰到系统上的其他用户&lt;/li&gt;
&lt;li&gt;&lt;code&gt;--enable-python3interp=yes&lt;/code&gt; 添加 python3 支持&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;在这里可能会遇到 &lt;code&gt;no terminal library found&lt;/code&gt; 错误：&lt;/p&gt;</description>
    </item>
    <item>
      <title>Windows 开机自启VMware虚拟机</title>
      <link>https://frytea.com/archives/413/</link>
      <pubDate>Wed, 22 Jul 2020 01:08:11 +0000</pubDate>
      <guid>https://frytea.com/archives/413/</guid>
      <description>&lt;p&gt;由于进行Linux下软件开发，需要频繁使用 VMware 虚拟机，为提高效率找到一种开机启动启动 VMware 虚拟机的方法，可以大大提升效率。&lt;/p&gt;
&lt;h2 id=&#34;第一步编写脚本&#34;&gt;第一步，编写脚本&lt;/h2&gt;
&lt;p&gt;首先编写 &lt;code&gt;自启&lt;/code&gt; 脚本 &lt;code&gt;vm_start.bat&lt;/code&gt; ，内容如下：&lt;/p&gt;</description>
    </item>
    <item>
      <title>VIM 创建程序文件自动添加头部注释</title>
      <link>https://frytea.com/archives/412/</link>
      <pubDate>Mon, 20 Jul 2020 12:04:23 +0000</pubDate>
      <guid>https://frytea.com/archives/412/</guid>
      <description>&lt;p&gt;修改 &lt;code&gt;/etc/vimrc&lt;/code&gt; ，在文件最后添加以下内容：&lt;/p&gt;
&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;&#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:#e6db74&#34;&gt;&amp;#34; 当新建 .h .c .hpp .cpp .mk .sh等文件时自动调用SetTitle 函数
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;autocmd BufNewFile *.[ch],*.hpp,*.cpp,Makefile,*.mk,*.sh exec &amp;#34;&lt;/span&gt;:call SetTitle&lt;span style=&#34;color:#f92672&#34;&gt;()&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt; 加入注释 
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;func SetComment&lt;span style=&#34;color:#f92672&#34;&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        call setline&lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;1,&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;/*================================================================&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        call append&lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;line&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:#f92672&#34;&gt;)&lt;/span&gt;,   &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;*   Copyright (C) &amp;#34;&lt;/span&gt;.strftime&lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;%Y&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt;.&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34; IEucd Inc. All rights reserved.&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        call append&lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;line&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:#f92672&#34;&gt;)&lt;/span&gt;+1, &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;*   &amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        call append&lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;line&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:#f92672&#34;&gt;)&lt;/span&gt;+2, &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;*   文件名称：&amp;#34;&lt;/span&gt;.expand&lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;%:t&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        call append&lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;line&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:#f92672&#34;&gt;)&lt;/span&gt;+3, &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;*   创 建 者：SongTL, songtianlun@comleader.com.cn&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        call append&lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;line&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:#f92672&#34;&gt;)&lt;/span&gt;+4, &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;*   创建日期：&amp;#34;&lt;/span&gt;.strftime&lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;%Y年%m月%d日&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        call append&lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;line&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:#f92672&#34;&gt;)&lt;/span&gt;+5, &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;*   描    述：&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        call append&lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;line&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:#f92672&#34;&gt;)&lt;/span&gt;+6, &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;*&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        call append&lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;line&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:#f92672&#34;&gt;)&lt;/span&gt;+7, &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;================================================================*/&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        call append&lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;line&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:#f92672&#34;&gt;)&lt;/span&gt;+8, &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        call append&lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;line&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:#f92672&#34;&gt;)&lt;/span&gt;+9, &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;endfunc
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34; 加入shell,Makefile注释
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;func SetComment_sh()
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;        call setline(3, &amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;#================================================================&amp;#34;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        call setline&lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;4, &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;#   Copyright (C) &amp;#34;&lt;/span&gt;.strftime&lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;%Y&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt;.&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34; IEucd Inc. All rights reserved.&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        call setline&lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;5, &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;#   &amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        call setline&lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;6, &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;#   文件名称：&amp;#34;&lt;/span&gt;.expand&lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;%:t&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        call setline&lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;7, &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;#   创 建 者：SongTL, songtianlun@comleader.com.cn&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        call setline&lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;8, &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;#   创建日期：&amp;#34;&lt;/span&gt;.strftime&lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;%Y年%m月%d日&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        call setline&lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;9, &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;#   描    述：&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        call setline&lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;10, &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;#&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        call setline&lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;11, &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;#================================================================&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        call setline&lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;12, &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        call setline&lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;13, &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;endfunc
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34; 定义函数SetTitle，自动插入文件头 
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;func SetTitle()
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;        if &amp;amp;filetype == &amp;#39;make&amp;#39;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;                call setline(1,&amp;#34;&amp;#34;)
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;                call setline(2,&amp;#34;&amp;#34;)
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;                call SetComment_sh()
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;        elseif &amp;amp;filetype == &amp;#39;sh&amp;#39;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;                call setline(1,&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;#!/system/bin/sh&amp;#34;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                call setline&lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;2,&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                call SetComment_sh&lt;span style=&#34;color:#f92672&#34;&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&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;else&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;             call SetComment&lt;span style=&#34;color:#f92672&#34;&gt;()&lt;/span&gt;
&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;if&lt;/span&gt; expand&lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;%:e&amp;#34;&lt;/span&gt;&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;#39;hpp&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                  call append&lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;line&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:#f92672&#34;&gt;)&lt;/span&gt;+10, &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;#ifndef _&amp;#34;&lt;/span&gt;.toupper&lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;expand&lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;%:t:r&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;))&lt;/span&gt;.&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;_H&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                  call append&lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;line&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:#f92672&#34;&gt;)&lt;/span&gt;+11, &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;#define _&amp;#34;&lt;/span&gt;.toupper&lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;expand&lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;%:t:r&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;))&lt;/span&gt;.&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;_H&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                  call append&lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;line&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:#f92672&#34;&gt;)&lt;/span&gt;+12, &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;#ifdef __cplusplus&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                  call append&lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;line&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:#f92672&#34;&gt;)&lt;/span&gt;+13, &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;extern \&amp;#34;C\&amp;#34;&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                  call append&lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;line&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:#f92672&#34;&gt;)&lt;/span&gt;+14, &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;{&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                  call append&lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;line&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:#f92672&#34;&gt;)&lt;/span&gt;+15, &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;#endif&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                  call append&lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;line&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:#f92672&#34;&gt;)&lt;/span&gt;+16, &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                  call append&lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;line&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:#f92672&#34;&gt;)&lt;/span&gt;+17, &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;#ifdef __cplusplus&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                  call append&lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;line&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:#f92672&#34;&gt;)&lt;/span&gt;+18, &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;}&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                  call append&lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;line&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:#f92672&#34;&gt;)&lt;/span&gt;+19, &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;#endif&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                  call append&lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;line&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:#f92672&#34;&gt;)&lt;/span&gt;+20, &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;#endif //&amp;#34;&lt;/span&gt;.toupper&lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;expand&lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;%:t:r&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;))&lt;/span&gt;.&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;_H&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;             elseif expand&lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;%:e&amp;#34;&lt;/span&gt;&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;#39;h&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                call append&lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;line&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:#f92672&#34;&gt;)&lt;/span&gt;+10, &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;#pragma once&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;             elseif &amp;amp;filetype &lt;span style=&#34;color:#f92672&#34;&gt;==&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;c&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                call append&lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;line&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:#f92672&#34;&gt;)&lt;/span&gt;+10,&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;#include \&amp;#34;&amp;#34;&lt;/span&gt;.expand&lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;%:t:r&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt;.&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;.h\&amp;#34;&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;             elseif &amp;amp;filetype &lt;span style=&#34;color:#f92672&#34;&gt;==&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;cpp&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                call append&lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;line&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:#f92672&#34;&gt;)&lt;/span&gt;+10, &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;#include \&amp;#34;&amp;#34;&lt;/span&gt;.expand&lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;%:t:r&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt;.&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;.h\&amp;#34;&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;             endif
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        endif
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;endfun
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;使用效果：&lt;/p&gt;</description>
    </item>
    <item>
      <title>【简记】Linux 计划任务 Crontab</title>
      <link>https://frytea.com/archives/411/</link>
      <pubDate>Mon, 20 Jul 2020 03:45:40 +0000</pubDate>
      <guid>https://frytea.com/archives/411/</guid>
      <description>&lt;h2 id=&#34;cron-简介&#34;&gt;cron 简介&lt;/h2&gt;
&lt;p&gt;cron 是 UNIX, SOLARIS，LINUX 下的一个十分有用的工具。通过 cron 脚本能使计划任务定期地在系统后台自动运行。&lt;/p&gt;
&lt;h2 id=&#34;cron-命令&#34;&gt;cron 命令&lt;/h2&gt;
&lt;p&gt;&lt;code&gt;crontab -e&lt;/code&gt;  – 编辑该用户的 crontab，当指定 crontab 不存在时新建。
&lt;code&gt;crontab -l&lt;/code&gt; – 列出该用户的 crontab。
&lt;code&gt;crontab -r&lt;/code&gt; – 删除该用户的 crontab。
&lt;code&gt;crontab -u&amp;lt;用户名称&amp;gt;&lt;/code&gt; – 指定要设定 crontab 的用户名称。&lt;/p&gt;</description>
    </item>
    <item>
      <title>VS Code 免密登录Linux服务器</title>
      <link>https://frytea.com/archives/410/</link>
      <pubDate>Mon, 20 Jul 2020 01:38:00 +0000</pubDate>
      <guid>https://frytea.com/archives/410/</guid>
      <description>&lt;p&gt;使用 VS Code 中提供的 &lt;code&gt;Remote Development&lt;/code&gt; 可以实现连接远程服务器，管理文件、远程调试、远程管理等功能，实现远程开发。今天主要介绍如何通过配置SSH公钥实现 VC Code 免密登录 Linux 服务器。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Linux部署私钥实现免密登录</title>
      <link>https://frytea.com/archives/409/</link>
      <pubDate>Mon, 20 Jul 2020 01:37:37 +0000</pubDate>
      <guid>https://frytea.com/archives/409/</guid>
      <description>&lt;h3 id=&#34;第一步生成密钥对windows或linux均可&#34;&gt;第一步，生成密钥对（windows或linux均可）：&lt;/h3&gt;
&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;&#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;ssh-keygen
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;之后一路回车，默认不设密码，默认目录为 &lt;code&gt;~/.ssh&lt;/code&gt;&lt;/p&gt;
&lt;h3 id=&#34;第二步部署公钥至服务器端linux并赋权限&#34;&gt;第二步，部署公钥至服务器端（Linux），并赋权限&lt;/h3&gt;
&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;&#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;cat id_rsa.pub &amp;gt;&amp;gt; authorized_keys
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;sudo chmod &lt;span style=&#34;color:#ae81ff&#34;&gt;600&lt;/span&gt; authorized_keys
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;sudo chmod &lt;span style=&#34;color:#ae81ff&#34;&gt;700&lt;/span&gt; ~/.ssh
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ul&gt;
&lt;li&gt;将 &lt;code&gt;id_rsa.pub&lt;/code&gt; 替换为你的公钥路径即可，如果是在本地生成需上传至服务器端。&lt;/li&gt;
&lt;li&gt;这项操作可以部署多个公钥，命令会在 &lt;code&gt;authorized_keys&lt;/code&gt; 后面追加，而 Linux 公钥验证检测 &lt;code&gt;authorized_keys&lt;/code&gt; 文件中的公钥&lt;/li&gt;
&lt;li&gt;一个萝卜一个坑，一个公钥只运行一个用户使用登录&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;第三步检查密钥登陆功能是否开启&#34;&gt;第三步，检查密钥登陆功能是否开启&lt;/h3&gt;
&lt;p&gt;1、打开SSH配置文件&lt;/p&gt;</description>
    </item>
    <item>
      <title>《断舍离》</title>
      <link>https://frytea.com/archives/1079/</link>
      <pubDate>Sun, 19 Jul 2020 17:07:00 +0000</pubDate>
      <guid>https://frytea.com/archives/1079/</guid>
      <description>&lt;p&gt;作者: 山下英子 出版社: 广西科学技术出版社 原作名: 新・片づけ術「断捨離」 译者: 吴倩 出版&lt;/p&gt;</description>
    </item>
    <item>
      <title>《断舍离》十句感触</title>
      <link>https://frytea.com/archives/408/</link>
      <pubDate>Sun, 19 Jul 2020 09:07:00 +0000</pubDate>
      <guid>https://frytea.com/archives/408/</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;作者: 山下英子
出版社: 广西科学技术出版社
原作名: 新・片づけ術「断捨離」
译者: 吴倩
出版年: 2013-7-30
页数: 192
定价: CNY 32.00
装帧: 平装
丛书: 山下英子 断舍离
ISBN: 9787807639817&lt;/p&gt;</description>
    </item>
    <item>
      <title>在终端打印地图</title>
      <link>https://frytea.com/archives/407/</link>
      <pubDate>Sat, 18 Jul 2020 09:58:34 +0000</pubDate>
      <guid>https://frytea.com/archives/407/</guid>
      <description>&lt;p&gt;无意间突发奇想，能否在终端中打印地图，然后找到了一篇文章介绍，只需运行这行代码：&lt;/p&gt;
&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;&#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;$ telnet mapscii.me
&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;# 若未安装telnet需安装一下&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;$ yum install telnet -y
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;$ sudo apt-get install telnet
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;就可以看到这幅令人惊艳的地图了：&lt;/p&gt;</description>
    </item>
    <item>
      <title>解决git不小心提交大文件导致无法提交问题</title>
      <link>https://frytea.com/archives/406/</link>
      <pubDate>Fri, 17 Jul 2020 07:37:55 +0000</pubDate>
      <guid>https://frytea.com/archives/406/</guid>
      <description>&lt;p&gt;在一次不小心向GitHub提交了一个1GB文件后，出现一个令人崩溃的错误：&lt;/p&gt;
&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;&#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;remote: error: GH001: Large files detected. You may want to try Git Large File Storage - https://git-lfs.github.com.
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;remote: error: Trace: a22b6b202ddb6da3e2795ca71663de19
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;remote: error: See http://git.io/iEPt8g &lt;span style=&#34;color:#66d9ef&#34;&gt;for&lt;/span&gt; more information.
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;remote: error: File system_status/test_26457 is 1024.00 MB; this exceeds GitHub&lt;span style=&#34;color:#960050;background-color:#1e0010&#34;&gt;&amp;#39;&lt;/span&gt;s file size limit of 100.00 MB
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;更崩溃的是，在此之后又进行了几次提交，可不能因为这次手误丢掉几次提交成果呀。&lt;br /&gt;在网上浏览一圈后找到解决方法：&lt;/p&gt;</description>
    </item>
    <item>
      <title>计算 Linux 内存使用率方法及C实现</title>
      <link>https://frytea.com/archives/405/</link>
      <pubDate>Thu, 16 Jul 2020 07:21:33 +0000</pubDate>
      <guid>https://frytea.com/archives/405/</guid>
      <description>&lt;p&gt;&lt;br /&gt;通过获取Linux中的 &lt;code&gt;/proc/stat&lt;/code&gt; 文件中的内容可以获取系统内存的详细信息：&lt;/p&gt;
&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;&#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;# cat /proc/meminfo &lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;MemTotal:        &lt;span style=&#34;color:#ae81ff&#34;&gt;3880404&lt;/span&gt; kB
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;MemFree:         &lt;span style=&#34;color:#ae81ff&#34;&gt;3182248&lt;/span&gt; kB
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;MemAvailable:    &lt;span style=&#34;color:#ae81ff&#34;&gt;3396580&lt;/span&gt; kB
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Buffers:           &lt;span style=&#34;color:#ae81ff&#34;&gt;39588&lt;/span&gt; kB
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Cached:           &lt;span style=&#34;color:#ae81ff&#34;&gt;355616&lt;/span&gt; kB
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;SwapCached:            &lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt; kB
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Active:           &lt;span style=&#34;color:#ae81ff&#34;&gt;318708&lt;/span&gt; kB
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Inactive:         &lt;span style=&#34;color:#ae81ff&#34;&gt;252380&lt;/span&gt; kB
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Active&lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;anon&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt;:     &lt;span style=&#34;color:#ae81ff&#34;&gt;176120&lt;/span&gt; kB
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Inactive&lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;anon&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt;:      &lt;span style=&#34;color:#ae81ff&#34;&gt;248&lt;/span&gt; kB
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Active&lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;file&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt;:     &lt;span style=&#34;color:#ae81ff&#34;&gt;142588&lt;/span&gt; kB
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Inactive&lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;file&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt;:   &lt;span style=&#34;color:#ae81ff&#34;&gt;252132&lt;/span&gt; kB
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Unevictable:           &lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt; kB
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Mlocked:               &lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt; kB
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;SwapTotal:             &lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt; kB
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;SwapFree:              &lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt; kB
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Dirty:                 &lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt; kB
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Writeback:             &lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt; kB
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;AnonPages:        &lt;span style=&#34;color:#ae81ff&#34;&gt;175940&lt;/span&gt; kB
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Mapped:            &lt;span style=&#34;color:#ae81ff&#34;&gt;54184&lt;/span&gt; kB
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Shmem:               &lt;span style=&#34;color:#ae81ff&#34;&gt;488&lt;/span&gt; kB
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Slab:              &lt;span style=&#34;color:#ae81ff&#34;&gt;62040&lt;/span&gt; kB
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;SReclaimable:      &lt;span style=&#34;color:#ae81ff&#34;&gt;48712&lt;/span&gt; kB
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;SUnreclaim:        &lt;span style=&#34;color:#ae81ff&#34;&gt;13328&lt;/span&gt; kB
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;KernelStack:        &lt;span style=&#34;color:#ae81ff&#34;&gt;2672&lt;/span&gt; kB
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;PageTables:         &lt;span style=&#34;color:#ae81ff&#34;&gt;6080&lt;/span&gt; kB
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;NFS_Unstable:          &lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt; kB
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Bounce:                &lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt; kB
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;WritebackTmp:          &lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt; kB
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;CommitLimit:     &lt;span style=&#34;color:#ae81ff&#34;&gt;1940200&lt;/span&gt; kB
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Committed_AS:     &lt;span style=&#34;color:#ae81ff&#34;&gt;615340&lt;/span&gt; kB
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;VmallocTotal:   &lt;span style=&#34;color:#ae81ff&#34;&gt;34359738367&lt;/span&gt; kB
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;VmallocUsed:       &lt;span style=&#34;color:#ae81ff&#34;&gt;14160&lt;/span&gt; kB
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;VmallocChunk:   &lt;span style=&#34;color:#ae81ff&#34;&gt;34359715580&lt;/span&gt; kB
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;HardwareCorrupted:     &lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt; kB
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;AnonHugePages:     &lt;span style=&#34;color:#ae81ff&#34;&gt;36864&lt;/span&gt; kB
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;CmaTotal:              &lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt; kB
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;CmaFree:               &lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt; kB
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;HugePages_Total:       &lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;HugePages_Free:        &lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;HugePages_Rsvd:        &lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;HugePages_Surp:        &lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Hugepagesize:       &lt;span style=&#34;color:#ae81ff&#34;&gt;2048&lt;/span&gt; kB
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;DirectMap4k:       &lt;span style=&#34;color:#ae81ff&#34;&gt;53120&lt;/span&gt; kB
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;DirectMap2M:     &lt;span style=&#34;color:#ae81ff&#34;&gt;3092480&lt;/span&gt; kB
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;DirectMap1G:     &lt;span style=&#34;color:#ae81ff&#34;&gt;3145728&lt;/span&gt; kB
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;各字段含义见下表：&lt;/p&gt;</description>
    </item>
    <item>
      <title>计算 Linux CPU 利用率</title>
      <link>https://frytea.com/archives/404/</link>
      <pubDate>Wed, 15 Jul 2020 10:01:00 +0000</pubDate>
      <guid>https://frytea.com/archives/404/</guid>
      <description>&lt;p&gt;在 Linux 系统中的 &lt;code&gt;/proc/stat&lt;/code&gt; 文件中存储了CPU 活动的信息，该文件中的所有值都是从系统启动开始累计到当前时刻。不同内核版本中该文件的格式可能不大一致，以下通过实例来说明数据该文件中各字段的含义。&lt;br /&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Linux 内存参数详细说明</title>
      <link>https://frytea.com/archives/403/</link>
      <pubDate>Tue, 14 Jul 2020 10:30:00 +0000</pubDate>
      <guid>https://frytea.com/archives/403/</guid>
      <description>&lt;p&gt;在 Linux 下 &lt;code&gt;free&lt;/code&gt; 命令可以看出系统当前内存状况，附上 &lt;code&gt;-k&lt;/code&gt; , &lt;code&gt;-m&lt;/code&gt; , &lt;code&gt;-g&lt;/code&gt; 可以分别输出对应单位的内存状况：&lt;br /&gt;&lt;/p&gt;
&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;&#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;Usage:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt; free &lt;span style=&#34;color:#f92672&#34;&gt;[&lt;/span&gt;options&lt;span style=&#34;color:#f92672&#34;&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Options:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt; -b, --bytes         show output in bytes
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt; -k, --kilo          show output in kilobytes
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt; -m, --mega          show output in megabytes
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt; -g, --giga          show output in gigabytes
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;     --tera          show output in terabytes
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;     --peta          show output in petabytes
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;以某台 Linux Ecs 为例，运行 &lt;code&gt;free -m &lt;/code&gt; 后的输出如下：&lt;/p&gt;</description>
    </item>
    <item>
      <title>Linux 下 Sysstat 系统监控程序详解</title>
      <link>https://frytea.com/archives/402/</link>
      <pubDate>Tue, 14 Jul 2020 05:58:00 +0000</pubDate>
      <guid>https://frytea.com/archives/402/</guid>
      <description>&lt;p&gt;&lt;code&gt;Sysstat&lt;/code&gt; 包包含许多商业单位共有的各种实用程序，用于监控系统性能和使用活动:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;iostat&lt;/code&gt;  (1) 报告设备、分区和网络文件系统的CPU统计和硬盘吞吐效率的数据。 # 核心工具&lt;/li&gt;
&lt;li&gt;&lt;code&gt;mpstat&lt;/code&gt;  (1) 报告单个或组合处理器相关的统计数据。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;pidstat&lt;/code&gt;  (1) 报告Linux任务 (进程) 的统计信息: I/O、CPU、内存等。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;tapestat&lt;/code&gt;  (1) 报告连接到系统的磁带驱动器的统计信息。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;cifsiostat&lt;/code&gt;  (1) 报告CIFS统计。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;sysstat&lt;/code&gt;  (5) 只是sysstat配置文件的手动页面，给出了sysstat命令使用的环境变量的含义。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;code&gt;Sysstat&lt;/code&gt; 还包含您可以通过 &lt;code&gt;cron&lt;/code&gt; 或 &lt;code&gt;systemd&lt;/code&gt; 计划收集和记录性能和活动数据的工具:&lt;/p&gt;</description>
    </item>
    <item>
      <title>安装 Linux系统监控工具 systat</title>
      <link>https://frytea.com/archives/401/</link>
      <pubDate>Tue, 14 Jul 2020 03:01:00 +0000</pubDate>
      <guid>https://frytea.com/archives/401/</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;Sysstat是一种在Linux系统服务器中常用的软件工具包，可以用来监控服务器的性能。比如可以监控CPU、硬盘、网络等数据，我们可以用来进行分析服务器的性能和资源的使用效率。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Linux 中 /proc 文件系统内容详述</title>
      <link>https://frytea.com/archives/400/</link>
      <pubDate>Tue, 14 Jul 2020 01:06:35 +0000</pubDate>
      <guid>https://frytea.com/archives/400/</guid>
      <description>&lt;p&gt;Linux 下的 &lt;code&gt;/proc&lt;/code&gt; 文件系统中提供了许多有用的信息，除了基本的CPU使用率、版本号等，你甚至还可以在这里直接看到内核的输出。下面这张表，简单列举 &lt;code&gt;/proc&lt;/code&gt; 中文件的含义：&lt;/p&gt;</description>
    </item>
    <item>
      <title>拯救你的硬盘，一切井井有条</title>
      <link>https://frytea.com/archives/399/</link>
      <pubDate>Sun, 05 Jul 2020 02:06:00 +0000</pubDate>
      <guid>https://frytea.com/archives/399/</guid>
      <description>&lt;p&gt;由于一直研究计算机相关技术，从开始的500GB硬盘，带后来1TB的移动硬盘，再到后来4TB移动硬盘，再到后来移动NAS。&lt;/p&gt;
&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://imagehost-cdn.frytea.com/20200705100710.png&#34;&gt;&lt;/p&gt;
&lt;p&gt;随着数据量的不断增长，一昧的扩容硬盘也许不是一个最佳的选择，如果文件只是简单堆放，就真的同一堆数据垃圾没有两样。经过一天的整理、探索、构思，结合以往数据整理的方法，重新设计了一种个人文件数据库的存储方案，从存储介质到存储结构做了重新整合，同时考虑了个体在群体中活动可能需要产生联系的文档方案。下面就来介绍一下，其实数据，不一定非要存在硬盘里！硬盘容量，不是越大越好！&lt;/p&gt;</description>
    </item>
    <item>
      <title>VIM学习使用笔记</title>
      <link>https://frytea.com/archives/398/</link>
      <pubDate>Fri, 03 Jul 2020 10:07:00 +0000</pubDate>
      <guid>https://frytea.com/archives/398/</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;如果是初学vi，运行一下 &lt;code&gt;vimtutor&lt;/code&gt;是个聪明的决定。 （如果你的系统环境不是中文，而你想使用中文的vimtutor，就运行 &lt;code&gt;vimtutor zh&lt;/code&gt;）&lt;/p&gt;&lt;/blockquote&gt;
&lt;h2 id=&#34;学习笔记&#34;&gt;学习笔记&lt;/h2&gt;
&lt;p&gt;&lt;a href=&#34;https://blog.frytea.com/archives/391/&#34;&gt;Vim第一讲 基础操作&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Vim第七讲 帮助、个性化和补全</title>
      <link>https://frytea.com/archives/397/</link>
      <pubDate>Fri, 03 Jul 2020 10:06:46 +0000</pubDate>
      <guid>https://frytea.com/archives/397/</guid>
      <description>&lt;h2 id=&#34;71-获取帮助信息&#34;&gt;7.1 获取帮助信息&lt;/h2&gt;
&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;&#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&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Vim 拥有一个细致全面的在线帮助系统。要启动该帮助系统，请选择如下三种方
法之一：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;按下 &lt;code&gt;&amp;lt;HELP&amp;gt;&lt;/code&gt; 键 (如果键盘上有的话)&lt;/li&gt;
&lt;li&gt;按下 &lt;code&gt;&amp;lt;F1&amp;gt;&lt;/code&gt; 键 (如果键盘上有的话)&lt;/li&gt;
&lt;li&gt;输入 &lt;code&gt;:help&lt;/code&gt; &amp;lt;回车&amp;gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;请阅读帮助窗口中的文字以了解帮助是如何工作的。
输入 &lt;code&gt;CTRL-W&lt;/code&gt; CTRL-W 可以使您在窗口之间跳转。
输入 &lt;code&gt;:q &amp;lt;回车&amp;gt;&lt;/code&gt; 可以关闭帮助窗口。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Vim第六讲 插入、附加、复制粘贴、高级选项</title>
      <link>https://frytea.com/archives/396/</link>
      <pubDate>Fri, 03 Jul 2020 10:06:35 +0000</pubDate>
      <guid>https://frytea.com/archives/396/</guid>
      <description>&lt;h2 id=&#34;61-打开类命令&#34;&gt;6.1 打开类命令&lt;/h2&gt;
&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;&#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;** 输入 o 将在光标的下方打开新的一行并进入插入模式。**
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ol&gt;
&lt;li&gt;输入小写的 &lt;code&gt;o&lt;/code&gt; 在光标 &lt;em&gt;下方&lt;/em&gt; 打开新的一行，这个命令会使您
进入插入模式。&lt;/li&gt;
&lt;li&gt;然后输入一些文字，按 &lt;code&gt;&amp;lt;ESC&amp;gt;&lt;/code&gt; 键退出插入模式而进入正常模式。&lt;/li&gt;
&lt;li&gt;为了在光标 &lt;em&gt;上方&lt;/em&gt; 打开新的一行，只需要输入大写的 &lt;code&gt;O&lt;/code&gt; 而不是小写的 o
就可以了。&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;62-附加类命令&#34;&gt;6.2 附加类命令&lt;/h2&gt;
&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;&#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;** 输入 a 将可在光标之后插入文本。 **
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ol&gt;
&lt;li&gt;接着输入 &lt;code&gt;e&lt;/code&gt; 移动光标至需添加单词的末尾。&lt;/li&gt;
&lt;li&gt;输入小写的 &lt;code&gt;a&lt;/code&gt; 则可在光标之后插入文本了。&lt;/li&gt;
&lt;li&gt;按 &lt;code&gt;&amp;lt;ESC&amp;gt;&lt;/code&gt; 键退出插入模式回到正常模式。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;提示： &lt;code&gt;a&lt;/code&gt;、 &lt;code&gt;i&lt;/code&gt; 和 &lt;code&gt;A&lt;/code&gt; 都会带您进入插入模式，惟一的区别在于字符插入的位置。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Vim第五讲 内部命令、另存、部分保存、插入文件</title>
      <link>https://frytea.com/archives/395/</link>
      <pubDate>Fri, 03 Jul 2020 10:06:20 +0000</pubDate>
      <guid>https://frytea.com/archives/395/</guid>
      <description>&lt;h2 id=&#34;51-在-vim-内执行外部命令的方法&#34;&gt;5.1 在 VIM 内执行外部命令的方法&lt;/h2&gt;
&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;&#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&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ol&gt;
&lt;li&gt;按下我们所熟悉的 &lt;code&gt;:&lt;/code&gt; 命令使光标移动到屏幕底部。这样您就可以输入一行命令了。&lt;/li&gt;
&lt;li&gt;接着输入感叹号 &lt;code&gt;!&lt;/code&gt; 这个字符，这样就允许您执行外部的 shell 命令了。&lt;/li&gt;
&lt;li&gt;我们以 &lt;code&gt;ls&lt;/code&gt; 命令为例。输入 &lt;code&gt;!ls &amp;lt;回车&amp;gt;&lt;/code&gt; 。该命令就会列举出您当前目录的
内容，就如同您在命令行提示符下输入 &lt;code&gt;ls&lt;/code&gt; 命令的结果一样。如果 &lt;code&gt;!ls&lt;/code&gt; 没起
作用，您可以试试 &lt;code&gt;:!dir&lt;/code&gt; 看看。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;提示：所有的外部命令都可以以这种方式执行，包括带命令行参数的那些。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Vim第四讲 搜索、查找、替换</title>
      <link>https://frytea.com/archives/394/</link>
      <pubDate>Fri, 03 Jul 2020 10:06:07 +0000</pubDate>
      <guid>https://frytea.com/archives/394/</guid>
      <description>&lt;h2 id=&#34;41-定位及文件状态&#34;&gt;4.1 定位及文件状态&lt;/h2&gt;
&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;&#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;** 输入 CTRL-G 显示当前编辑文件中当前光标所在行位置以及文件状态信息。
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;     输入大写 G 则直接跳转到文件中的某一指定行。**
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ol&gt;
&lt;li&gt;按下 CTRL 键不放开然后按 g 键。我们称这个键组合为 &lt;code&gt;CTRL-G&lt;/code&gt;。
您会看到页面最底部出现一个状态信息行，显示的内容是当前编辑的文件名
和文件中光标位置。请记住行号，它会在步骤3中用到。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;提示：您也许会在屏幕的右下角看到光标位置，这会在 &amp;lsquo;ruler&amp;rsquo; 选项设置时发生 (参见 &lt;code&gt;:help &#39;ruler&#39;&lt;/code&gt;)&lt;/p&gt;</description>
    </item>
    <item>
      <title>Vim第三讲 置入、替换、更改</title>
      <link>https://frytea.com/archives/393/</link>
      <pubDate>Fri, 03 Jul 2020 10:05:52 +0000</pubDate>
      <guid>https://frytea.com/archives/393/</guid>
      <description>&lt;h2 id=&#34;31-置入类命令&#34;&gt;3.1 置入类命令&lt;/h2&gt;
&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;&#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;** 输入 p 将最后一次删除的内容置入光标之后。 **
&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;# example&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;---&amp;gt; b&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt; Violets are blue,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;---&amp;gt; c&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt; Intelligence is learned,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;---&amp;gt; d&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt; Can you learn too?
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;---&amp;gt; |a&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt; Roses are red,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;$ dd
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;|
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;---&amp;gt; b&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt; Violets are blue,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;---&amp;gt; c&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt; Intelligence is learned,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;---&amp;gt; d&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt; Can you learn too?
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;$ p
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;|---&amp;gt; a&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt; Roses are red,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;---&amp;gt; b&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt; Violets are blue,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;---&amp;gt; c&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt; Intelligence is learned,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;---&amp;gt; d&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt; Can you learn too?
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;32-替换&#34;&gt;3.2 替换&lt;/h2&gt;
&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;&#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;** 输入 r 和一个字符替换光标所在位置的字符。**
&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;# example&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;---&amp;gt;  Whan this lime was t|uoed in, someone presswd some wrojg keys!
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;---&amp;gt;  When this line was typed in, someone pressed some wrong keys!
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;$ ry
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;---&amp;gt;  Whan this lime was t|yoed in, someone presswd some wrojg keys!
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;---&amp;gt;  When this line was typed in, someone pressed some wrong keys!
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;33-更改&#34;&gt;3.3 更改&lt;/h2&gt;
&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;&#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;** 要改变文本直到一个单词的末尾，请输入 ce **
&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;# example&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;---&amp;gt; This line has a few w|ptfd that mrrf changing usf the change operator.
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;---&amp;gt; This line has a few words that need changing using the change operator.
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;$ ce ords
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;---&amp;gt; This line has a few words| that mrrf changing usf the change operator.
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;---&amp;gt; This line has a few words that need changing using the change operator.
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;$ &amp;lt;Esc&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;34-使用c更改更多&#34;&gt;3.4 使用c更改更多&lt;/h2&gt;
&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;&#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:#ae81ff&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# example&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;---&amp;gt; The end of this line needs |some help to make it like the second.
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;---&amp;gt; The end of this line needs to be corrected using the  c$  command.
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;$ c$ to be corrected using the  c$  command.
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;---&amp;gt; The end of this line needs to be corrected using the  c$  command.|
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;---&amp;gt; The end of this line needs to be corrected using the  c$  command.
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;$ &amp;lt;Esc&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;总结&#34;&gt;总结&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;要重新置入已经删除的文本内容，请按小写字母 &lt;code&gt;p&lt;/code&gt; 键。该操作可以将已删除
的文本内容置于光标之后。如果最后一次删除的是一个整行，那么该行将置
于当前光标所在行的下一行。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Vim第二讲 删除、重复、撤销</title>
      <link>https://frytea.com/archives/392/</link>
      <pubDate>Fri, 03 Jul 2020 10:05:38 +0000</pubDate>
      <guid>https://frytea.com/archives/392/</guid>
      <description>&lt;h2 id=&#34;21-简单命令&#34;&gt;2.1 简单命令&lt;/h2&gt;
&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;&#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;** 输入 dw 可以从光标处删除至一个单词的末尾。**
&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;# example&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;---&amp;gt; Tha words don&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;t |belong paper in this sentence.
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;$ dw
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;---&amp;gt; Tha words don&amp;#39;&lt;/span&gt;t paper in this sentence.
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;22-更多删除&#34;&gt;2.2 更多删除&lt;/h2&gt;
&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;&#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;** 输入 d$ 从当前光标删除到行末。**
&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;# example&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;---&amp;gt; |Somebody typed the end of this line twice. end of this line twice.
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;$ d$
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;---&amp;gt; |
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;23-命令和对象&#34;&gt;2.3 命令和对象&lt;/h2&gt;
&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;&#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&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  使用删除操作符 d 的删除命令的格式如下：
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        d   motion
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  其中：
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    d      - 删除操作符。
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    motion - 操作符的操作对象&lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;在下面列出&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt;。
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  简单的动作列表：
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    w - 从当前光标当前位置直到下一个单词起始处，不包括它的第一个字符。
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    e - 从当前光标当前位置直到单词末尾，包括最后一个字符。
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    $ - 从当前光标当前位置直到当前行末。
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  因此输入 de 会从当前光标位置删除到单词末尾。
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;24-重复动作计数器&#34;&gt;2.4 重复动作计数器&lt;/h2&gt;
&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;&#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&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# example&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;---&amp;gt; This is just a |line with words you can move around in.
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  1. 输入 2w 使光标向前移动两个单词。
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;---&amp;gt; This is just a line with |words you can move around in.
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  2. 输入 3e 使光标向前移动到第三个单词的末尾。
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;---&amp;gt; This is just a line with words you can| move around in.
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  3. 输入 &lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;数字零&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt; 移动光标到行首。
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;---&amp;gt; |This is just a |line with words you can move around in.
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;25-删除更多&#34;&gt;2.5 删除更多&lt;/h2&gt;
&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;&#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;# 使用格式&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;d   number&lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;数字&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt;   motion
&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;# example&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;---&amp;gt;  this |ABC DE line FGHI JK LMN OP of words is Q RS TUV cleaned up.
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;$ d2w
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;---&amp;gt;  this |line FGHI JK LMN OP of words is Q RS TUV cleaned up.
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;$ d3e
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;---&amp;gt;  this line  |OP of words is Q RS TUV cleaned up.
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;26-删除整行&#34;&gt;2.6 删除整行&lt;/h2&gt;
&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;&#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;** 输入 dd 可以删除整一个当前行。 **
&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;# exmample&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;---&amp;gt;  |1&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt;  Roses are red,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;---&amp;gt;  2&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt;  Mud is fun,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;---&amp;gt;  3&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt;  Violets are blue,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;---&amp;gt;  4&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt;  I have a car,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;---&amp;gt;  5&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt;  Clocks tell time,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;---&amp;gt;  6&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt;  Sugar is sweet
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;---&amp;gt;  7&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt;  And so are you.
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;$ dd
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;|---&amp;gt;  2&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt;  Mud is fun,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;---&amp;gt;  3&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt;  Violets are blue,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;---&amp;gt;  4&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt;  I have a car,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;---&amp;gt;  5&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt;  Clocks tell time,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;---&amp;gt;  6&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt;  Sugar is sweet
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;---&amp;gt;  7&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt;  And so are you.
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;$ 2dd
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;|---&amp;gt;  4&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt;  I have a car,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;---&amp;gt;  5&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt;  Clocks tell time,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;---&amp;gt;  6&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt;  Sugar is sweet
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;---&amp;gt;  7&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt;  And so are you.
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;27-撤销命令&#34;&gt;2.7 撤销命令&lt;/h2&gt;
&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;&#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;** 输入 u 来撤消最后执行的命令，输入 U 来撤消对整行的修改。 **
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;** CTRL-R 重做被撤消的命令 **
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;总结&#34;&gt;总结&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;欲从当前光标删除至下一个单词，请输入： &lt;code&gt;dw&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;欲从当前光标删除至当前行末尾，请输入： &lt;code&gt;d$&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;欲删除整行，请输入： &lt;code&gt;dd&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;欲重复一个动作，请在它前面加上一个数字： &lt;code&gt;2w&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;在正常模式下修改命令的格式是：
&lt;code&gt;operator [number] motion&lt;/code&gt;
其中：
&lt;code&gt;operator&lt;/code&gt; - 操作符，代表要做的事情，比如 d 代表删除
&lt;code&gt;[number]&lt;/code&gt; - 可以附加的数字，代表动作重复的次数
&lt;code&gt;motion&lt;/code&gt; - 动作，代表在所操作的文本上的移动，例如 w 代表单词(word)，
&lt;code&gt;$&lt;/code&gt; 代表行末等等。&lt;/li&gt;
&lt;li&gt;欲移动光标到行首，请按数字0键： &lt;code&gt;0&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;欲撤消以前的操作，请输入： &lt;code&gt;u&lt;/code&gt;  (小写的u)
欲撤消在一行中所做的改动，请输入： &lt;code&gt;U&lt;/code&gt; (大写的U)
欲撤消以前的撤消命令，恢复以前的操作结果，请输入： &lt;code&gt;CTRL-R&lt;/code&gt;&lt;/li&gt;
&lt;/ol&gt;</description>
    </item>
    <item>
      <title>Vim第一讲 基础操作</title>
      <link>https://frytea.com/archives/391/</link>
      <pubDate>Fri, 03 Jul 2020 10:05:10 +0000</pubDate>
      <guid>https://frytea.com/archives/391/</guid>
      <description>&lt;h2 id=&#34;11-移动光标&#34;&gt;1.1 移动光标&lt;/h2&gt;
&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;&#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;** 要移动光标，请依照说明分别按下 h、j、k、l 键。 **
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;             ^
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;             k              提示： h 的键位于左边，每次按下就会向左移动。
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;       &amp;lt; h       l &amp;gt;               l 的键位于右边，每次按下就会向右移动。
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;             j                     j 键看起来很象一支尖端方向朝下的箭头。
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;             v
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;12-进入和退出&#34;&gt;1.2 进入和退出&lt;/h2&gt;
&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;&#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;vim somefile &lt;span style=&#34;color:#75715e&#34;&gt;#进入&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;:q 退出
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;13-删除&#34;&gt;1.3 删除&lt;/h2&gt;
&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;&#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:#f92672&#34;&gt;(&lt;/span&gt;Normal&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt;模式下，按下 x 键来删除光标所在位置的字符。**
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;14-插入&#34;&gt;1.4 插入&lt;/h2&gt;
&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;&#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;** 在正常模式下，可以按下 i 键来插入文本。**
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;15-添加&#34;&gt;1.5 添加&lt;/h2&gt;
&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;&#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;** 按 A 键以添加文本。 **
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;16-保存&#34;&gt;1.6 保存&lt;/h2&gt;
&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;&#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;** 使用 :wq 以保存文件并退出。 **
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;总结&#34;&gt;总结&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;光标在屏幕文本中的移动既可以用箭头键，也可以使用 &lt;code&gt;hjkl&lt;/code&gt; 字母键。
&lt;code&gt;h&lt;/code&gt; (左移) &lt;code&gt;j&lt;/code&gt; (下行) &lt;code&gt;k&lt;/code&gt; (上行) &lt;code&gt;l&lt;/code&gt; (右移)&lt;/p&gt;</description>
    </item>
    <item>
      <title>GCC -l选项：手动添加链接库</title>
      <link>https://frytea.com/archives/390/</link>
      <pubDate>Fri, 03 Jul 2020 02:06:02 +0000</pubDate>
      <guid>https://frytea.com/archives/390/</guid>
      <description>&lt;p&gt;最近研究C语言CRC循环冗余校验，找到一个开源的库：&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://github.com/lammertb/libcrc&#34;&gt;lammertb/libcrc&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;其中有实例代码，但是无论如何运行不起来，报错如下：&lt;/p&gt;
&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;&#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:#f92672&#34;&gt;[&lt;/span&gt;root@frytea-dev-test examples&lt;span style=&#34;color:#f92672&#34;&gt;]&lt;/span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# gcc tstcrc.c -o tstcrc -L ~/libcrc/include&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;/tmp/ccEcajcY.o: In &lt;span style=&#34;color:#66d9ef&#34;&gt;function&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;`&lt;/span&gt;main&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;:
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;tstcrc.c:(.text+0x2db): undefined reference to `update_crc_16&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;tstcrc.c:&lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;.text+0x2f6&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt;: undefined reference to &lt;span style=&#34;color:#e6db74&#34;&gt;`&lt;/span&gt;update_crc_16&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;tstcrc.c:(.text+0x311): undefined reference to `update_crc_dnp&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;tstcrc.c:&lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;.text+0x330&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt;: undefined reference to &lt;span style=&#34;color:#e6db74&#34;&gt;`&lt;/span&gt;update_crc_sick&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;tstcrc.c:(.text+0x34b): undefined reference to `update_crc_ccitt&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;tstcrc.c:&lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;.text+0x366&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt;: undefined reference to &lt;span style=&#34;color:#e6db74&#34;&gt;`&lt;/span&gt;update_crc_ccitt&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;tstcrc.c:(.text+0x381): undefined reference to `update_crc_ccitt&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;tstcrc.c:&lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;.text+0x39c&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt;: undefined reference to &lt;span style=&#34;color:#e6db74&#34;&gt;`&lt;/span&gt;update_crc_kermit&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;tstcrc.c:(.text+0x3b6): undefined reference to `update_crc_32&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;tstcrc.c:&lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;.text+0x42c&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt;: undefined reference to &lt;span style=&#34;color:#e6db74&#34;&gt;`&lt;/span&gt;update_crc_16&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;tstcrc.c:(.text+0x441): undefined reference to `update_crc_16&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;tstcrc.c:&lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;.text+0x456&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt;: undefined reference to &lt;span style=&#34;color:#e6db74&#34;&gt;`&lt;/span&gt;update_crc_dnp&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;tstcrc.c:(.text+0x46f): undefined reference to `update_crc_sick&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;tstcrc.c:&lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;.text+0x484&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt;: undefined reference to &lt;span style=&#34;color:#e6db74&#34;&gt;`&lt;/span&gt;update_crc_ccitt&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;tstcrc.c:(.text+0x499): undefined reference to `update_crc_ccitt&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;tstcrc.c:&lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;.text+0x4ae&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt;: undefined reference to &lt;span style=&#34;color:#e6db74&#34;&gt;`&lt;/span&gt;update_crc_ccitt&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;tstcrc.c:(.text+0x4c3): undefined reference to `update_crc_kermit&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;tstcrc.c:&lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;.text+0x4d7&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt;: undefined reference to &lt;span style=&#34;color:#e6db74&#34;&gt;`&lt;/span&gt;update_crc_32&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;tstcrc.c:(.text+0x53d): undefined reference to `update_crc_16&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;tstcrc.c:&lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;.text+0x554&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt;: undefined reference to &lt;span style=&#34;color:#e6db74&#34;&gt;`&lt;/span&gt;update_crc_16&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;tstcrc.c:(.text+0x56b): undefined reference to `update_crc_dnp&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;tstcrc.c:&lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;.text+0x586&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt;: undefined reference to &lt;span style=&#34;color:#e6db74&#34;&gt;`&lt;/span&gt;update_crc_sick&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;tstcrc.c:(.text+0x59d): undefined reference to `update_crc_ccitt&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;tstcrc.c:&lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;.text+0x5b4&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt;: undefined reference to &lt;span style=&#34;color:#e6db74&#34;&gt;`&lt;/span&gt;update_crc_ccitt&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;tstcrc.c:(.text+0x5cb): undefined reference to `update_crc_ccitt&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;tstcrc.c:&lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;.text+0x5e2&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt;: undefined reference to &lt;span style=&#34;color:#e6db74&#34;&gt;`&lt;/span&gt;update_crc_kermit&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;tstcrc.c:(.text+0x5f8): undefined reference to `update_crc_32&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;collect2: error: ld returned &lt;span style=&#34;color:#ae81ff&#34;&gt;1&lt;/span&gt; exit status
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;排查原因后发现是库没有连接，需要手动连接仓库下 &lt;code&gt;lib&lt;/code&gt; 文件夹中的 &lt;code&gt;libcrc.a&lt;/code&gt; 文件，运行如下编印命令成功编译：&lt;/p&gt;</description>
    </item>
    <item>
      <title>《房思琪的初恋乐园》</title>
      <link>https://frytea.com/archives/1052/</link>
      <pubDate>Sun, 21 Jun 2020 10:55:00 +0000</pubDate>
      <guid>https://frytea.com/archives/1052/</guid>
      <description>&lt;p&gt;“这世界有个奇怪的现象，总是等到作者离开世界，人们才去读她的作品。这社会还有个奇怪的规律，总是等到人&lt;/p&gt;</description>
    </item>
    <item>
      <title>《房思琪的初恋乐园》阅读笔记</title>
      <link>https://frytea.com/archives/388/</link>
      <pubDate>Sun, 21 Jun 2020 02:55:00 +0000</pubDate>
      <guid>https://frytea.com/archives/388/</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;“这世界有个奇怪的现象，总是等到作者离开世界，人们才去读她的作品。这社会还有个奇怪的规律，总是等到人以命相逼，才意识到事情不小。”
——李尚龙&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;&lt;br /&gt;距离读完《房思琪的初恋乐园》已经过去两年了吧，这本书对我冲击很大。不写读书笔记是不知道怎么写，其实到现在也不知道怎么去写读书笔记。&lt;br /&gt;
&lt;br /&gt;这本书令我最无法想象的地方，大概就是她遭到那样的事情后，一系列的态度，还有家人的态度。&lt;br /&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>资源分享之计算机网络虚拟实践</title>
      <link>https://frytea.com/archives/387/</link>
      <pubDate>Sat, 20 Jun 2020 02:25:00 +0000</pubDate>
      <guid>https://frytea.com/archives/387/</guid>
      <description>&lt;p&gt;喜欢整理一些资源，之后放在知识库或是资源站里，等待着有缘人去发现，可等了许久发现：有的人需要它，可就是找不到；有些人不需要它，却误打误撞地看到了。反思之后以为，做了一些事情就要学会声明，比如我个人就可以直接发给我认为需要的人，或者像现在一样，发一篇文章，需要的同学可以收藏。&lt;br /&gt;计算机网络是计算机核心课程之一，人们无时无刻不在享受计算机网络各种协议带来的便利，可这么庞大而又错综复杂的网络，是如何保证高校可用的呢？我的设备又是怎么在茫茫人海中找到我想要联系的那个她的呢？这些都可以在计算机网络的学习中找到答案。&lt;br /&gt;学《计算机网络》这门课是在2018年年底的样子，到了2020年这门课已经成为省双一流建设学科了，虽然不知道有多厉害，但听其他老师说这门课有一个很庞大的备课团队，分工明确，水平极高。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Cisco PT 案例九：单臂路由</title>
      <link>https://frytea.com/archives/350/</link>
      <pubDate>Fri, 19 Jun 2020 08:32:00 +0000</pubDate>
      <guid>https://frytea.com/archives/350/</guid>
      <description>&lt;p&gt;单臂路由（router-on-a-stick）是指在路由器的一个接口上通过配置子接口（或“逻辑接口”，并不存在真正物理接口）的方式，实现原来相互隔离的不同VLAN（虚拟局域网）之间的互联互通。
&lt;a name=&#34;cwLaM&#34;&gt;&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Cisco PT  案例八：配置基本ACL访问控制</title>
      <link>https://frytea.com/archives/349/</link>
      <pubDate>Fri, 19 Jun 2020 01:52:23 +0000</pubDate>
      <guid>https://frytea.com/archives/349/</guid>
      <description>&lt;p&gt;&lt;a name=&#34;DAUUT&#34;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2 id=&#34;环境&#34;&gt;环境&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Cisco Packet Tracer 5.3&lt;/li&gt;
&lt;li&gt;Windows 10
&lt;a name=&#34;4z7HD&#34;&gt;&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;操作&#34;&gt;操作&lt;/h2&gt;
&lt;p&gt;操作：按照如图所示连接拓扑图&lt;br /&gt;&lt;img alt=&#34;image.png&#34; loading=&#34;lazy&#34; src=&#34;https://cdn.nlark.com/yuque/0/2020/png/376635/1592444121954-c05d0878-a22a-4c4f-94a2-db2a256d5788.png#align=left&amp;display=inline&amp;height=215&amp;margin=%5Bobject%20Object%5D&amp;name=image.png&amp;originHeight=215&amp;originWidth=626&amp;size=18789&amp;status=done&amp;style=none&amp;width=626&#34;&gt;&lt;br /&gt;&lt;strong&gt;配置F0/1接口IP：&lt;/strong&gt;&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;R1(config)#interface fastEthernet 0/1        //进入Fa0/1
R1(config-if)#ip address 172.16.1.1 255.255.255.0  //配置IP
R1(config-if)#no shutdown                    //开启端口
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;**&lt;br /&gt;&lt;strong&gt;&lt;strong&gt;配置F0/0接口IP：&lt;/strong&gt;&lt;/strong&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Cisco PT 案例七：配置链路聚合 / 负载均衡</title>
      <link>https://frytea.com/archives/348/</link>
      <pubDate>Fri, 19 Jun 2020 01:51:53 +0000</pubDate>
      <guid>https://frytea.com/archives/348/</guid>
      <description>&lt;p&gt;&lt;a name=&#34;DAUUT&#34;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2 id=&#34;环境&#34;&gt;环境&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Cisco Packet Tracer 5.3&lt;/li&gt;
&lt;li&gt;Windows 10
&lt;a name=&#34;4z7HD&#34;&gt;&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;操作&#34;&gt;操作&lt;/h2&gt;
&lt;p&gt;操作：按照如图所示连接拓扑图&lt;br /&gt;&lt;img alt=&#34;image.png&#34; loading=&#34;lazy&#34; src=&#34;https://cdn.nlark.com/yuque/0/2020/png/376635/1592216083944-9a513158-ac75-466e-9fec-bd7b3d68e6ef.png#align=left&amp;display=inline&amp;height=245&amp;margin=%5Bobject%20Object%5D&amp;name=image.png&amp;originHeight=245&amp;originWidth=401&amp;size=12879&amp;status=done&amp;style=none&amp;width=401&#34;&gt;&lt;br /&gt;配置交换机0&lt;/p&gt;
&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;&#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&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Switch&amp;gt;enable
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Switch#configure terminal
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Switch&lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;config&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;#hostname SA              （更改交换机名字）&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;SA&lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;config&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;#interface port-channel 1         （聚合通道1）&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;SA&lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;config-if&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;#exit&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;SA&lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;config&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;#interface fa0/22&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;SA&lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;config-if&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;#channel-group 1 mode on      （开启聚合通道1）&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;SA&lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;config-if&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;#interface fa0/23&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;SA&lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;config-if&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;#channel-group 1 mode on&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;SA&lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;config-if&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;#interface fa0/24&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;SA&lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;config-if&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;#channel-group 1 mode on&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;SA&lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;config-if&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;#exit&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;SA&lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;config&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;#interface port-channel 1&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;SA&lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;config-if&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;#switchport mode trunk            （交换机间链路类型为trunk）&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;SA&lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;config-if&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;#switchport trunk allowed vlan all     （允许所有VLAN通过）&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;配置交换机1&lt;/p&gt;</description>
    </item>
    <item>
      <title>Cisco PT 案例六：交换机端口与Mac地址绑定</title>
      <link>https://frytea.com/archives/347/</link>
      <pubDate>Fri, 19 Jun 2020 01:51:04 +0000</pubDate>
      <guid>https://frytea.com/archives/347/</guid>
      <description>&lt;p&gt;&lt;a name=&#34;7V7nm&#34;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2 id=&#34;环境&#34;&gt;环境&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Cisco Packet Tracer 5.3&lt;/li&gt;
&lt;li&gt;Windows 10
&lt;a name=&#34;4z7HD&#34;&gt;&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;操作&#34;&gt;操作&lt;/h2&gt;
&lt;p&gt;操作：按照如图所示连接拓扑图&lt;br /&gt;&lt;img alt=&#34;image.png&#34; loading=&#34;lazy&#34; src=&#34;https://cdn.nlark.com/yuque/0/2020/png/376635/1592213996389-581a7c5e-27e5-4dab-9968-c7052b6eb00d.png#align=left&amp;display=inline&amp;height=332&amp;margin=%5Bobject%20Object%5D&amp;name=image.png&amp;originHeight=332&amp;originWidth=603&amp;size=14827&amp;status=done&amp;style=none&amp;width=603&#34;&gt;&lt;br /&gt;1、进入相应的接口&lt;br /&gt;（以端口1设置Mac地址绑定，PC0接1端口举例）&lt;/p&gt;
&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;&#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;Switch&amp;gt;enable
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Switch#config
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Configuring from terminal, memory, or network &lt;span style=&#34;color:#f92672&#34;&gt;[&lt;/span&gt;terminal&lt;span style=&#34;color:#f92672&#34;&gt;]&lt;/span&gt;?
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Enter configuration commands, one per line.  End with CNTL/Z.
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Switch&lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;config&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;#&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Switch&lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;config&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;#interface fastEthernet 0/1&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;2、接口设为access模式&lt;/p&gt;</description>
    </item>
    <item>
      <title>Cisco PT 案例五：VLAN（Trunk模式实践）</title>
      <link>https://frytea.com/archives/346/</link>
      <pubDate>Fri, 19 Jun 2020 01:50:29 +0000</pubDate>
      <guid>https://frytea.com/archives/346/</guid>
      <description>&lt;p&gt;&lt;a name=&#34;pVLnQ&#34;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2 id=&#34;环境&#34;&gt;环境&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Cisco Packet Tracer 5.3&lt;/li&gt;
&lt;li&gt;Windows 10
&lt;a name=&#34;4z7HD&#34;&gt;&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;操作&#34;&gt;操作&lt;/h2&gt;
&lt;p&gt;操作：按照如图所示连接拓扑图&lt;br /&gt;&lt;img alt=&#34;image.png&#34; loading=&#34;lazy&#34; src=&#34;https://cdn.nlark.com/yuque/0/2020/png/376635/1592206670687-6f77a581-08b4-4445-8370-f0d366860191.png#align=left&amp;display=inline&amp;height=254&amp;margin=%5Bobject%20Object%5D&amp;name=image.png&amp;originHeight=254&amp;originWidth=644&amp;size=16747&amp;status=done&amp;style=none&amp;width=644&#34;&gt;&lt;br /&gt;&lt;strong&gt;实验步骤&lt;/strong&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;创建VLAN 2和VLAN 3，财务部对应VLAN 2，销售部对应VLAN 3&lt;/li&gt;
&lt;li&gt;将部门PC对应端口划分到相应的VLAN中&lt;/li&gt;
&lt;li&gt;为交换机配置VTP模式及VTP域名&lt;/li&gt;
&lt;li&gt;配置交换机间互联的端口为Trunk类型&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;br /&gt;PC设置&lt;/p&gt;</description>
    </item>
    <item>
      <title>Cisco PT 案例四：VLAN（Access模式实践）</title>
      <link>https://frytea.com/archives/345/</link>
      <pubDate>Fri, 19 Jun 2020 01:49:46 +0000</pubDate>
      <guid>https://frytea.com/archives/345/</guid>
      <description>&lt;p&gt;&lt;a name=&#34;DAUUT&#34;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2 id=&#34;环境&#34;&gt;环境&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Cisco Packet Tracer 5.3&lt;/li&gt;
&lt;li&gt;Windows 10
&lt;a name=&#34;4z7HD&#34;&gt;&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;操作&#34;&gt;操作&lt;/h2&gt;
&lt;p&gt;操作：按照如图所示连接拓扑图&lt;br /&gt;&lt;img alt=&#34;image.png&#34; loading=&#34;lazy&#34; src=&#34;https://cdn.nlark.com/yuque/0/2020/png/376635/1592207908593-f852e8b9-b65b-4a72-9f1a-90fd9917ba77.png#align=left&amp;display=inline&amp;height=283&amp;margin=%5Bobject%20Object%5D&amp;name=image.png&amp;originHeight=283&amp;originWidth=497&amp;size=20579&amp;status=done&amp;style=none&amp;width=497&#34;&gt;&lt;br /&gt;&lt;strong&gt;实验步骤&lt;/strong&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;创建VLAN 2和VLAN 3&lt;/li&gt;
&lt;li&gt;将部门PC对应端口划分到相应的VLAN中&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;PC设置&lt;/p&gt;
&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;&#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;192.168.1.2        //PC0
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;192.168.1.3        //PC1
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;192.168.1.4        //PC2
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;192.168.1.5        //R0
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;//子网掩码和网关
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;255.255.255.0
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;192.168.1.1
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Switch0配置&lt;/p&gt;</description>
    </item>
    <item>
      <title>Cisco PT 案例三：端口使能/禁用</title>
      <link>https://frytea.com/archives/344/</link>
      <pubDate>Fri, 19 Jun 2020 01:48:54 +0000</pubDate>
      <guid>https://frytea.com/archives/344/</guid>
      <description>&lt;h1&gt;&lt;a name=&#34;DAUUT&#34;&gt;&lt;/a&gt;&lt;/h1&gt;
&lt;h2 id=&#34;环境&#34;&gt;环境&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Cisco Packet Tracer 5.3&lt;/li&gt;
&lt;li&gt;Windows 10
&lt;a name=&#34;4z7HD&#34;&gt;&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;操作&#34;&gt;操作&lt;/h2&gt;
&lt;p&gt;操作：按照如图所示连接拓扑图&lt;br /&gt;&lt;img alt=&#34;image.png&#34; loading=&#34;lazy&#34; src=&#34;https://cdn.nlark.com/yuque/0/2020/png/376635/1592201187715-61b24705-daed-455a-abb4-76678fcada2f.png#align=left&amp;display=inline&amp;height=154&amp;margin=%5Bobject%20Object%5D&amp;name=image.png&amp;originHeight=154&amp;originWidth=416&amp;size=10044&amp;status=done&amp;style=none&amp;width=416&#34;&gt;&lt;/p&gt;
&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;&#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;# 进入特权模式&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Switch&amp;gt;enable
&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;# 进入全局配置模式&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Switch#configure terminal
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Enter configuration commands, one per line.  End with CNTL/Z.
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Switch&lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;config&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;#&lt;/span&gt;
&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;# 进入端口&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Switch&lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;config&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;#interface FastEthernet0/1&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Switch&lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;config-if&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;#&lt;/span&gt;
&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;# 禁用&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Switch&lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;config-if&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;#shutdown&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;%LINK-5-CHANGED: Interface FastEthernet0/1, changed state to administratively down
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Switch&lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;config-if&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;#&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;%LINEPROTO-5-UPDOWN: Line protocol on Interface FastEthernet0/1, changed state to down
&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;# 使能&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Switch&lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;config-if&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;#no shutdown&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;%LINK-5-CHANGED: Interface FastEthernet0/1, changed state to up
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;%LINEPROTO-5-UPDOWN: Line protocol on Interface FastEthernet0/1, changed state to up
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Switch&lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;config-if&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;#&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description>
    </item>
    <item>
      <title>Cisco PT 案例二：为路由器配置并连接SSH</title>
      <link>https://frytea.com/archives/343/</link>
      <pubDate>Fri, 19 Jun 2020 01:47:49 +0000</pubDate>
      <guid>https://frytea.com/archives/343/</guid>
      <description>&lt;p&gt;&lt;a name=&#34;Ilgev&#34;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2 id=&#34;1-案例目标&#34;&gt;1. 案例目标&lt;/h2&gt;
&lt;p&gt;通过本案例，你可以掌握如下技能：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;配置 SSH&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;使用 SSH 访问路由器
&lt;a name=&#34;FcDBf&#34;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;2-背景知识&#34;&gt;2. 背景知识&lt;/h2&gt;
&lt;p&gt;过去对路由器的远程管理访问一般使用 TCP 端口 23 上的 Telnet。但 Telnet
是在安全不是问题的年代开发的。为此，所有 Telnet 流量以明文的形式转发。
SSH 已经替代了 Telnet，作为远程路由器连接管理的最佳工具，它提供强大的私密性和会话的集成。SSH 使用 TCP 端口 22。它提供类似出站 Telnet 连接的功能，但连接是加密的。通过认证和加密，SSH 允许在不安全的网络中进行安全的通信。想在路由器上激活 SSH，必须配置以下参数：&lt;/p&gt;</description>
    </item>
    <item>
      <title>Cisco PT案例一：为交换机配置并连接TELNET</title>
      <link>https://frytea.com/archives/342/</link>
      <pubDate>Fri, 19 Jun 2020 01:42:00 +0000</pubDate>
      <guid>https://frytea.com/archives/342/</guid>
      <description>&lt;p&gt;Telnet协议是TCP/IP协议族中的一员，是Internet远程登陆服务的标准协议和主要方式。它为用户提供了在本地计算机上完成远程主机工作的能力。在终端使用者的电脑上使用telnet程序，用它连接到服务器。终端使用者可以在telnet程序中输入命令，这些命令会在服务器上运行，就像直接在服务器的控制台上输入一样。可以在本地就能控制服务器。要开始一个telnet会话，必须输入用户名和密码来登录服务器。Telnet是常用的远程控制Web服务器的方法。
&lt;a name=&#34;DAUUT&#34;&gt;&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>解决ClashR打开配置空白</title>
      <link>https://frytea.com/archives/341/</link>
      <pubDate>Tue, 16 Jun 2020 14:24:53 +0000</pubDate>
      <guid>https://frytea.com/archives/341/</guid>
      <description>&lt;p&gt;由于做程序设计常常会需要国外网站，因此一个靠谱的代理非常有必要。&lt;/p&gt;
&lt;p&gt;此前写过一篇 &lt;a href=&#34;https://blog.frytea.com/archives/39/&#34;&gt;私有 vpn 搭建工具集合及靠谱的 vpn 提供商&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;最近发现 ClashR 这款很好用的代理客户端，客户端可以在我的资源站下载：&lt;a href=&#34;https://res.frytea.com/Application/&#34;&gt;Frytea&amp;rsquo;s Res&lt;/a&gt;.&lt;/p&gt;</description>
    </item>
    <item>
      <title>解决Win10下H3C网络设备模拟器无法启动问题</title>
      <link>https://frytea.com/archives/338/</link>
      <pubDate>Wed, 10 Jun 2020 02:39:04 +0000</pubDate>
      <guid>https://frytea.com/archives/338/</guid>
      <description>&lt;p&gt;由于工作学习需要，需在win10上安装H3C网络设备模拟器，但无奈安装好后各种启动不起来。&lt;/p&gt;
&lt;p&gt;&lt;img alt=&#34;image9dc86ee623493f66.png&#34; loading=&#34;lazy&#34; src=&#34;https://imagehost-cdn.frytea.com/images/2020/06/10/image9dc86ee623493f66.png&#34;&gt;&lt;/p&gt;
&lt;p&gt;查看日之后发现报错如下：&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;Traceback (most recent call last):
  File &amp;#34;HCLUpdate.py&amp;#34;, line 9, in &amp;lt;module&amp;gt;
  File &amp;#34;Ui_PopUp.pyc&amp;#34;, line 10, in &amp;lt;module&amp;gt;
  File &amp;#34;PyQt4\QtGui.pyc&amp;#34;, line 12, in &amp;lt;module&amp;gt;
  File &amp;#34;PyQt4\QtGui.pyc&amp;#34;, line 10, in __load
ImportError: DLL load failed: 操作系统无法运行 %1。
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;刚开始以为是Python问题，其实这个方向是错误的。&lt;/p&gt;</description>
    </item>
    <item>
      <title>解决Windows下帮助文件打开空白</title>
      <link>https://frytea.com/archives/337/</link>
      <pubDate>Wed, 10 Jun 2020 01:22:43 +0000</pubDate>
      <guid>https://frytea.com/archives/337/</guid>
      <description>&lt;p&gt;今天从某官网下载了一份帮助文档，正常解压，正常弹出警告。&lt;/p&gt;
&lt;p&gt;&lt;img alt=&#34;image051039f58682ae88.png&#34; loading=&#34;lazy&#34; src=&#34;https://imagehost-cdn.frytea.com/images/2020/06/10/image051039f58682ae88.png&#34;&gt;&lt;/p&gt;
&lt;p&gt;可点击打开后傻眼了，整个文档都是空白的，只能看到目录结构。&lt;/p&gt;
&lt;p&gt;&lt;img alt=&#34;imaged99bb42d3346f306.png&#34; loading=&#34;lazy&#34; src=&#34;https://imagehost-cdn.frytea.com/images/2020/06/10/imaged99bb42d3346f306.png&#34;&gt;&lt;/p&gt;
&lt;p&gt;经过一番搜索找到解决方案，只需&lt;strong&gt;右键属性&lt;/strong&gt;，勾选解除锁定，保存即可。&lt;/p&gt;</description>
    </item>
    <item>
      <title>【ZMQ】第一个C服务器</title>
      <link>https://frytea.com/archives/335/</link>
      <pubDate>Mon, 08 Jun 2020 08:47:00 +0000</pubDate>
      <guid>https://frytea.com/archives/335/</guid>
      <description>&lt;h2 id=&#34;技术背景&#34;&gt;技术背景&lt;/h2&gt;
&lt;p&gt;ØMQ （也拼写作ZeroMQ，0MQ或ZMQ)，号称号称是“史上最快的消息队列”，基于c语言开发。ZMQ(以下ZeroMQ简称ZMQ)是一个简单好用的传输层，像框架一样的一个socket library，他使得Socket编程更加简单、简洁和性能更高。是一个消息处理队列库，可在多个线程、内核和主机盒之间弹性伸缩。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Minecraft 从安装到入门</title>
      <link>https://frytea.com/archives/325/</link>
      <pubDate>Thu, 02 Apr 2020 02:47:00 +0000</pubDate>
      <guid>https://frytea.com/archives/325/</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;近期才入坑 Minecraft ，自建了服务器，写了一篇文章记录服务器配置过程：&lt;a href=&#34;https://blog.frytea.com/archives/322/&#34;&gt;适当愉悦，自建 Minecraft 服务器&lt;/a&gt;。 高深的东西咱也不懂，就感觉一群朋友在一起创造自己的世界挺有意思的，撰文目的在于指导像我一样的从未接触过 Minecraft 的新手进入 Minecraft 的世界，并会持续更新一些小技巧。&lt;/p&gt;</description>
    </item>
    <item>
      <title>适当愉悦，自建 Minecraft 服务器</title>
      <link>https://frytea.com/archives/322/</link>
      <pubDate>Fri, 27 Mar 2020 03:32:00 +0000</pubDate>
      <guid>https://frytea.com/archives/322/</guid>
      <description>&lt;h2 id=&#34;背景&#34;&gt;背景&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;背景 1&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote&gt;
&lt;p&gt;原来总是认为，玩游戏都是不务正业。直到自己在学习生活中遇到挫折又无处宣泄，长时间的坏心情下才感觉到有这么一个发泄情感、寻找愉悦的途径是很重要的。
必须要控制好度，当心情不好、遭遇不幸、遇到挫折，就需要适当的放松，松弛有度，是为了更好的出发。&lt;/p&gt;</description>
    </item>
    <item>
      <title>[编程题]和为S的连续正数序列</title>
      <link>https://frytea.com/archives/320/</link>
      <pubDate>Tue, 03 Mar 2020 10:01:00 +0000</pubDate>
      <guid>https://frytea.com/archives/320/</guid>
      <description>&lt;h2 id=&#34;题目来源&#34;&gt;题目来源&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://www.nowcoder.com/questionTerminal/c451a3fd84b64cb19485dad758a55ebe&#34;&gt;牛客网首页 &amp;gt; 试题广场 &amp;gt; 和为S的连续正数序列&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote&gt;
&lt;p&gt;时间限制：C/C++ 1秒，其他语言2秒空间限制：C/C++ 32M，其他语言64M&lt;/p&gt;&lt;/blockquote&gt;
&lt;h2 id=&#34;题目描述&#34;&gt;题目描述&lt;/h2&gt;
&lt;p&gt;小明很喜欢数学,有一天他在做数学作业时,要求计算出9~16的和,他马上就写出了正确答案是100。但是他并不满足于此,他在想究竟有多少种连续的正数序列的和为100(至少包括两个数)。没多久,他就得到另一组连续正数和为100的序列:18,19,20,21,22。现在把问题交给你,你能不能也很快的找出所有和为S的连续正数序列? Good Luck!&lt;/p&gt;</description>
    </item>
    <item>
      <title>[编程题]evaluate-reverse-polish-notati</title>
      <link>https://frytea.com/archives/319/</link>
      <pubDate>Tue, 25 Feb 2020 03:44:00 +0000</pubDate>
      <guid>https://frytea.com/archives/319/</guid>
      <description>&lt;h2 id=&#34;题目来源&#34;&gt;题目来源&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://www.nowcoder.com/questionTerminal/22f9d7dd89374b6c8289e44237c70447&#34;&gt;牛客网首页 &amp;gt; 试题广场 &amp;gt; evaluate-reverse-polish-notati&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote&gt;
&lt;p&gt;时间限制：C/C++ 1秒，其他语言2秒空间限制：C/C++ 32M，其他语言64M&lt;/p&gt;&lt;/blockquote&gt;
&lt;h2 id=&#34;题目描述&#34;&gt;题目描述&lt;/h2&gt;
&lt;p&gt;链接：https://www.nowcoder.com/questionTerminal/22f9d7dd89374b6c8289e44237c70447
来源：牛客网&lt;/p&gt;</description>
    </item>
    <item>
      <title>助力求职之STAR法则</title>
      <link>https://frytea.com/archives/318/</link>
      <pubDate>Mon, 24 Feb 2020 10:03:00 +0000</pubDate>
      <guid>https://frytea.com/archives/318/</guid>
      <description>&lt;p&gt;最近在投递简历，投了至少100个岗位，收获甚少，主要问题还在于自己是第一次求职，简历总是会出现一些问题，需要在不断的被拒中寻求方法。&lt;/p&gt;
&lt;p&gt;今天收到一份被标记 &lt;code&gt;不合适&lt;/code&gt; 的求职申请，得知一个 STAR 法则。&lt;/p&gt;</description>
    </item>
    <item>
      <title>[编程题]minimum-depth-of-binary-tree</title>
      <link>https://frytea.com/archives/317/</link>
      <pubDate>Sun, 23 Feb 2020 10:18:00 +0000</pubDate>
      <guid>https://frytea.com/archives/317/</guid>
      <description>&lt;h2 id=&#34;题目来源&#34;&gt;题目来源&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://www.nowcoder.com/questionTerminal/e08819cfdeb34985a8de9c4e6562e724?f=discussion&#34;&gt;牛客网首页 &amp;gt; 试题广场 &amp;gt; minimum-depth-of-binary-tree&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote&gt;
&lt;p&gt;时间限制：C/C++ 1秒，其他语言2秒空间限制：C/C++ 32M，其他语言64M&lt;/p&gt;&lt;/blockquote&gt;
&lt;h2 id=&#34;题目描述&#34;&gt;题目描述&lt;/h2&gt;
&lt;p&gt;求给定二叉树的最小深度。最小深度是指树的根结点到最近叶子结点的最短路径上结点的数量。
Given a binary tree, find its minimum depth.The minimum depth is the number of nodes along the shortest path from the root node down to the nearest leaf node.&lt;/p&gt;</description>
    </item>
    <item>
      <title>[编程题]进制转换</title>
      <link>https://frytea.com/archives/315/</link>
      <pubDate>Sat, 22 Feb 2020 08:25:00 +0000</pubDate>
      <guid>https://frytea.com/archives/315/</guid>
      <description>&lt;h2 id=&#34;题目来源&#34;&gt;题目来源&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://www.nowcoder.com/questionTerminal/8f3df50d2b9043208c5eed283d1d4da6&#34;&gt;牛客网首页 &amp;gt; 试题广场 &amp;gt; 进制转换&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote&gt;
&lt;p&gt;时间限制：C/C++ 1秒，其他语言2秒空间限制：C/C++ 32M，其他语言64M&lt;/p&gt;&lt;/blockquote&gt;
&lt;h2 id=&#34;题目描述&#34;&gt;题目描述&lt;/h2&gt;
&lt;p&gt;写出一个程序，接受一个十六进制的数，输出该数值的十进制表示。（多组同时输入 ）&lt;/p&gt;</description>
    </item>
    <item>
      <title>这款云盘在国内表现很惊艳了！</title>
      <link>https://frytea.com/archives/314/</link>
      <pubDate>Tue, 18 Feb 2020 13:51:53 +0000</pubDate>
      <guid>https://frytea.com/archives/314/</guid>
      <description>&lt;p&gt;前些日子在全球主机论坛看到这篇帖子：&lt;a href=&#34;https://www.hostloc.com/forum.php?mod=viewthread&amp;amp;tid=643457&#34;&gt;还在为空间小而烦恼么 世纪互联 onedrive 解烦恼&lt;/a&gt;. 大概是说 Zephyr 大佬小店里出售的 &lt;a href=&#34;https://www.yiyi.one/cart.php?a=add&amp;amp;pid=18&#34;&gt;世纪互联Office365 A1 for EDU&lt;/a&gt; 现在使用优惠码 &lt;code&gt;newyear2020&lt;/code&gt; 购买有很大的优惠，此前需要 123 RMB 才能买到的账号现在仅需 50 RMB 即可。看中这个东西好久了， 果断下单。&lt;/p&gt;</description>
    </item>
    <item>
      <title>一键配置 Seafile 云盘并开启 https 访问</title>
      <link>https://frytea.com/archives/313/</link>
      <pubDate>Thu, 13 Feb 2020 07:42:00 +0000</pubDate>
      <guid>https://frytea.com/archives/313/</guid>
      <description>&lt;p&gt;前些日子终于受够了臃肿的 Nextcloud ，将其完全卸载，寻觅已久之后选择了 Seafile 云盘。之所以放弃 Nextcloud，大致有以下原因：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;插件丰富，功能强大的同时带来运行缓慢的问题&lt;/li&gt;
&lt;li&gt;PHP 执行长时间大内存任务时容易出错&lt;/li&gt;
&lt;li&gt;iPhone 客户端莫名闪退，Linux 客户端无法打开&lt;/li&gt;
&lt;li&gt;Rclone 执行长时间文件读取操作时会容易出错，同第二条&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;综上原因，虽然 Nextclud 有着完整的功能和完善的生态，但并不适合目前的我个人使用。&lt;/p&gt;</description>
    </item>
    <item>
      <title>GitLab 神奇问题之ssl</title>
      <link>https://frytea.com/archives/311/</link>
      <pubDate>Thu, 06 Feb 2020 18:12:01 +0000</pubDate>
      <guid>https://frytea.com/archives/311/</guid>
      <description>&lt;p&gt;今天配置 GitLab 时为 GitLab Pages 配置 SSL 总是有问题，大概表现为：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;不开启 ssl 就无法让 gitlab pages 实现 https 访问&lt;/li&gt;
&lt;li&gt;开启 ssl 后可能无法访问&lt;/li&gt;
&lt;li&gt;对设置变更后可能需要重新部署 pages&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;经过长时间的摸索，发现 gitlab pages 的配置有三级：&lt;/p&gt;</description>
    </item>
    <item>
      <title>迁移 GitLab 小记</title>
      <link>https://frytea.com/archives/310/</link>
      <pubDate>Thu, 06 Feb 2020 11:30:00 +0000</pubDate>
      <guid>https://frytea.com/archives/310/</guid>
      <description>&lt;p&gt;由于服务器到期等因素，需要对 GitLab 进行迁移，在此记下一段历程。&lt;/p&gt;
&lt;p&gt;首先要保证迁入和迁出 GitLab 的版本是一致的，使用这一条指令：&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;cat /opt/gitlab/embedded/service/gitlab-rails/VERSION
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;我的两个服务器输出分别是：&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;# 迁入服务器
$ cat /opt/gitlab/embedded/service/gitlab-rails/VERSION
12.7.5-ee
# 迁出服务器
$ cat /opt/gitlab/embedded/service/gitlab-rails/VERSION
12.5.2-ee
&lt;/code&gt;&lt;/pre&gt;&lt;h2 id=&#34;升级-gitlab&#34;&gt;升级 GitLab&lt;/h2&gt;
&lt;p&gt;因此需要对服务器进行升级。&lt;/p&gt;</description>
    </item>
    <item>
      <title>解决VMeare 安装 Android x86 错误</title>
      <link>https://frytea.com/archives/309/</link>
      <pubDate>Wed, 05 Feb 2020 14:04:25 +0000</pubDate>
      <guid>https://frytea.com/archives/309/</guid>
      <description>&lt;p&gt;今天尝试使用 VMware 安装Android x86 9.0 时出现一个问题。&lt;/p&gt;
&lt;p&gt;安装过程参考教程：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://blog.csdn.net/weixin_43913500/article/details/88760557&#34;&gt;VMware实现Android x86 8.1 从安装到使用&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://www.npbeta.com/2017/11/vmware_android/&#34;&gt;VMware 安装 Android x86 7.1.2 64 位&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;安装镜像来源：https://www.android-x86.org/download&lt;/p&gt;</description>
    </item>
    <item>
      <title>还记得使用手机的最基本诉求吗</title>
      <link>https://frytea.com/archives/308/</link>
      <pubDate>Wed, 05 Feb 2020 13:51:00 +0000</pubDate>
      <guid>https://frytea.com/archives/308/</guid>
      <description>&lt;p&gt;时值今日，智能手机的普及使得手机在生活中充当的角色越来越多。强劲的硬件可以承担起更大的运算任务，人们不断挖掘智能手机运算里的极限，进而不断推进智能手机硬件的发展。&lt;/p&gt;</description>
    </item>
    <item>
      <title>你会查列车的信用吗？</title>
      <link>https://frytea.com/archives/307/</link>
      <pubDate>Wed, 05 Feb 2020 07:51:44 +0000</pubDate>
      <guid>https://frytea.com/archives/307/</guid>
      <description>&lt;p&gt;今天在 &lt;a href=&#34;https://www.v2ex.com/&#34;&gt;V2EX&lt;/a&gt; 看到一篇帖子：&lt;a href=&#34;https://www.v2ex.com/t/637138#reply0&#34;&gt;坐火车 - 火车实时位置、行驶轨迹路线地图、历史准点率&lt;/a&gt; ，大概是说发帖者开发了一个微信小程序，可以用来查看火车的实时位置、行驶轨迹线路地图、历史准点率，甚至在新版本中提供了列车评价、同行微信群、到站提醒，特别还有一个历史准点率功能，感觉很好很强大！&lt;/p&gt;</description>
    </item>
    <item>
      <title>华为鲲鹏服务器初探</title>
      <link>https://frytea.com/archives/306/</link>
      <pubDate>Tue, 04 Feb 2020 09:29:21 +0000</pubDate>
      <guid>https://frytea.com/archives/306/</guid>
      <description>&lt;h2 id=&#34;起因&#34;&gt;起因&lt;/h2&gt;
&lt;p&gt;报名了华为云微认证  &lt;a href=&#34;https://edu.huaweicloud.com/certifications/32f661c5c9a142c8ad3ef050cce337a2&#34;&gt;轻松玩转Kubernetes&lt;/a&gt; ，需要一台北京四区的华为云 ECS 做客户机进行实验，发现华为云的 &lt;a href=&#34;https://developer.huaweicloud.com/campus&#34;&gt;云创校园&lt;/a&gt; 活动新推出了鲲鹏云服务器套餐，&lt;strong&gt;通用计算增强型云服务器，搭载自研华为鲲鹏920处理器及25GE智能高速网卡，提供强劲鲲鹏算力和高性能网络,购买指定配置服务可享受9元/月优惠,并赠送相同时长主机安全&lt;/strong&gt;，遂买来测试+实验。&lt;/p&gt;</description>
    </item>
    <item>
      <title>告别 Android 开发“Read timed out”</title>
      <link>https://frytea.com/archives/304/</link>
      <pubDate>Sat, 01 Feb 2020 07:34:00 +0000</pubDate>
      <guid>https://frytea.com/archives/304/</guid>
      <description>&lt;h2 id=&#34;问题背景&#34;&gt;问题背景&lt;/h2&gt;
&lt;p&gt;困扰博主近一个月的问题，导致近一个月没办法进行 Android 开发的问题终于解决了！&lt;/p&gt;
&lt;h2 id=&#34;问题错误特征&#34;&gt;问题错误特征&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;Could not run phased build action using Gradle distribution &#39;https://services.gradle.org/distributions/gradle-5.5.1-all.zip&#39;&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;A problem occurred configuring root project &#39;PlanAssistant&#39;.&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Could not resolve all artifacts for configuration &#39;:classpath&#39;.&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Could not resolve com.android.tools.build:gradle:3.5.3.&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Could not get resource &#39;https://dl.google.com/dl/android/maven2/com/android/tools/build/gradle/3.5.3/gradle-3.5.3.pom&#39;.&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Could not GET &#39;https://dl.google.com/dl/android/maven2/com/android/tools/build/gradle/3.5.3/gradle-3.5.3.pom&#39;.&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Read timed out&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;就是这一句 &lt;code&gt;Read timed out&lt;/code&gt;，在过去的一个月里，我天天都看到这句报错，始终找不到比较好的解决方案。经过各种 Google，Baidu，bing，发现解决方案大致分为两种：&lt;/p&gt;</description>
    </item>
    <item>
      <title>基于 Ubuntu 平台安装 OS X 10.15 虚拟机</title>
      <link>https://frytea.com/archives/302/</link>
      <pubDate>Thu, 30 Jan 2020 12:06:00 +0000</pubDate>
      <guid>https://frytea.com/archives/302/</guid>
      <description>&lt;p&gt;OS X 系统启动时会识别计算机主板，针对非苹果电脑拒绝启动，就算是虚拟机，也有天然的限制不可以随便安装 OS X 虚拟机，本文就介绍了在 Ubuntu 平台上使用 VMware Workstation 安装 OS X 10.15&lt;/p&gt;</description>
    </item>
    <item>
      <title>一个方便转存 Google Drive 分享文件的方法</title>
      <link>https://frytea.com/archives/301/</link>
      <pubDate>Thu, 30 Jan 2020 03:40:00 +0000</pubDate>
      <guid>https://frytea.com/archives/301/</guid>
      <description>&lt;p&gt;用过 Google Drive (以下简称GD) 的朋友们应该都清楚，GD 分享的文件可以一键添加到自己的云盘中，速度很快，一度让我感觉 Google 好牛，但仔细一看会发现这并不是将文件转存到自己的 GD 中，以大神分享的爱情公寓5资源为例：&lt;/p&gt;</description>
    </item>
    <item>
      <title>今天，你上云了吗？</title>
      <link>https://frytea.com/archives/300/</link>
      <pubDate>Fri, 24 Jan 2020 04:05:00 +0000</pubDate>
      <guid>https://frytea.com/archives/300/</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;注：本文部分内容摘自《中国公有云服务市场（2019上半年）跟踪》报告，若有侵权立即删除。作者根据行文逻辑穿插个人理解，若有不当指出还请不吝指出！&lt;/p&gt;</description>
    </item>
    <item>
      <title>这项技术解决了博客访问的大问题</title>
      <link>https://frytea.com/archives/299/</link>
      <pubDate>Thu, 23 Jan 2020 03:35:00 +0000</pubDate>
      <guid>https://frytea.com/archives/299/</guid>
      <description>&lt;p&gt;由于一些原因，我的博客暂时托管在香港某家服务提供商的云主机之上，虽然商家已经尽权力为线路做了优化，但是到达大陆一些地域的访问速度还是不太理想，特别是在一些本人长期驻留的地域。&lt;/p&gt;</description>
    </item>
    <item>
      <title>版本控制及代码托管平台综述</title>
      <link>https://frytea.com/archives/297/</link>
      <pubDate>Sun, 19 Jan 2020 16:50:00 +0000</pubDate>
      <guid>https://frytea.com/archives/297/</guid>
      <description>&lt;p&gt;版本控制是协助软件开发的重要工具之一，根据维基百科中“版本控制”词条的描述，版本控制（英语：Version control）是维护工程蓝图的标准作法，能追踪工程蓝图从诞生一直到定案的过程。此外，版本控制也是一种软件工程技巧，借此能在软件开发的过程中，确保由不同人所编辑的同一程序文件都得到同步。&lt;/p&gt;</description>
    </item>
    <item>
      <title>为Linux发行版安装中文字体</title>
      <link>https://frytea.com/archives/296/</link>
      <pubDate>Thu, 16 Jan 2020 03:17:00 +0000</pubDate>
      <guid>https://frytea.com/archives/296/</guid>
      <description>&lt;p&gt;前文提到博主为自己的 &lt;code&gt;ThinkPad E450&lt;/code&gt; 安装了一款来自爱尔兰的 &lt;code&gt;Linux/GNU 发行版&lt;/code&gt; 作为主力系统使用：&lt;a href=&#34;https://blog.frytea.com/archives/293/&#34;&gt;这款来自爱尔兰的操作系统真的是爱了&lt;/a&gt;。近期需要进行文字处理工作，安装了&lt;code&gt; WPS 2019 Linux 版&lt;/code&gt; ，但是发现这款外来的 &lt;code&gt;Linux/GNU 发行版&lt;/code&gt; 并没有自带一些常用的中文字体，如 宋体、仿宋、黑体 等字体，经过一番检索，博主使用从 Windows 10 家庭中文版中提取出中文字体导入，并在系统中刷新字体以使字体生效。下面就来讲讲详细步骤：&lt;/p&gt;</description>
    </item>
    <item>
      <title>一种高兼容度的通用文档解决方案</title>
      <link>https://frytea.com/archives/294/</link>
      <pubDate>Thu, 09 Jan 2020 10:12:00 +0000</pubDate>
      <guid>https://frytea.com/archives/294/</guid>
      <description>&lt;p&gt;你是否经常遇到这种情况：辛苦调好格式写好的 word 文档到其他人电脑上格式就莫名其妙的乱了；word 和 wps 处理的 docx 文档，不同的软件之间打开就是会出现一些很细微的差异。不得不说，就连微软自己将 office 系列软件的定位就是指一款 &lt;code&gt;文字处理软件&lt;/code&gt;，在这样的软件之上可以完成几乎所有的格式调整工作，但并不保证不同的设备、软件之间可以互相通用；此外如果是记录笔记或是进行文字创作，等格式调整完毕或许创作热情早就燃烧殆尽，word 在此时就不是一个很好的选择了。&lt;/p&gt;</description>
    </item>
    <item>
      <title>这款来自爱尔兰的操作系统真的是爱了</title>
      <link>https://frytea.com/archives/293/</link>
      <pubDate>Tue, 07 Jan 2020 03:15:11 +0000</pubDate>
      <guid>https://frytea.com/archives/293/</guid>
      <description>&lt;p&gt;&lt;img alt=&#34;2020-01-07-10-04-31-.png&#34; loading=&#34;lazy&#34; src=&#34;https://imagehost-cdn.frytea.com/images/2020/01/07/2020-01-07-10-04-31-.png&#34;&gt;&lt;/p&gt;
&lt;p&gt;Zorin OS，是一个基于Ubuntu的GNU/Linux发行版。其目的是尽可能的模拟Windows的操作习惯，让用户可以方便的使用Zorin OS。为了让Windows用户更方便的使用Zorin，Zorin操作系统预装了Wine。同时，Zorin有自己特有的Zorin Look Changer(Zorin Appearance)，该软件可以用来方便的切换桌面的外观，比如切换成Windows7的外观或Mac外观。(WikiPedia)&lt;/p&gt;</description>
    </item>
    <item>
      <title>Typecho 调取随机文章</title>
      <link>https://frytea.com/archives/292/</link>
      <pubDate>Mon, 06 Jan 2020 12:17:00 +0000</pubDate>
      <guid>https://frytea.com/archives/292/</guid>
      <description>&lt;p&gt;想要在博客每一篇博文结束的时候加上几篇博客其他文章，之后找到一个可以实现随机调取制定数量文章的方法，代码来源 &lt;a href=&#34;https://www.boke8.net/&#34;&gt;博客吧&lt;/a&gt;。实现方法很简单，并且可以根据自己的需求定制。&lt;/p&gt;
&lt;h2 id=&#34;打开方式&#34;&gt;打开方式&lt;/h2&gt;
&lt;p&gt;1、将下面的代码添加至主题的functions.php文件：&lt;/p&gt;</description>
    </item>
    <item>
      <title>Typecho插件之飘雪插件</title>
      <link>https://frytea.com/archives/290/</link>
      <pubDate>Mon, 06 Jan 2020 11:44:17 +0000</pubDate>
      <guid>https://frytea.com/archives/290/</guid>
      <description>&lt;p&gt;这或许是一个很容易找到的东西，Typecho 博客飘雪花特效插件 Snowstorm，但是很奇怪的，博主好像就是很喜欢雪的那一个。而且每次看到飘雪就容易激发心中那些略显悲伤的回忆，算了，我还是很喜欢雪，郑州下了两天的小雨滴，要积雪还得在一阵子，就让我的博客下下雪吧。&lt;/p&gt;</description>
    </item>
    <item>
      <title>时空位置与大数据</title>
      <link>https://frytea.com/archives/289/</link>
      <pubDate>Mon, 06 Jan 2020 02:51:00 +0000</pubDate>
      <guid>https://frytea.com/archives/289/</guid>
      <description>&lt;p&gt;在这个人人都谈大数据，处处皆用大数据的时代，我们身边的这些大数据究竟如何产生，又有多大的体量了呢？根据一份2013年的报告显示，2013 年中国产生的数据总量超过0.8ZB（相当于8亿TB），2 倍于2012 年，相当于2009 年全球的数据总量。预计到2020 年，中国产生的数据总量将是2013年的10倍，超过8.5ZB。（来源，ZDNET《数据中心2013：硬件重构与软件定义》年度技术报告）&lt;/p&gt;</description>
    </item>
    <item>
      <title>如何随时随地免费使用中国知网？</title>
      <link>https://frytea.com/archives/287/</link>
      <pubDate>Fri, 03 Jan 2020 10:07:00 +0000</pubDate>
      <guid>https://frytea.com/archives/287/</guid>
      <description>&lt;p&gt;一般图书馆、高校研究机构都购买有万方、知网数据库，有时是通过 &lt;code&gt;ip&lt;/code&gt; 认证进行登陆的，机构登陆后即可下载文献资料，但是有时在代理环境或是不在教育网环境中却急需查询一些文献时怎么办呢？&lt;/p&gt;</description>
    </item>
    <item>
      <title>一种用于Linux 自动更换精美壁纸的方法</title>
      <link>https://frytea.com/archives/285/</link>
      <pubDate>Thu, 26 Dec 2019 05:13:00 +0000</pubDate>
      <guid>https://frytea.com/archives/285/</guid>
      <description>&lt;p&gt;本文介绍一种使用脚本自动获取 &lt;code&gt;Unsplsh&lt;/code&gt; 精美图片并设置为桌面的方法，最终效果为命令行使用一条指令达到上述效果。理论上说，本文原理可用于所有 &lt;code&gt;Gnome&lt;/code&gt; 桌面环境的 &lt;code&gt;Linux&lt;/code&gt; 发行版。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Ubuntu 安装 Android Studio</title>
      <link>https://frytea.com/archives/284/</link>
      <pubDate>Tue, 24 Dec 2019 09:25:00 +0000</pubDate>
      <guid>https://frytea.com/archives/284/</guid>
      <description>&lt;p&gt;网上关于 &lt;code&gt;Linux&lt;/code&gt;  环境下安装  &lt;code&gt;Android Studio&lt;/code&gt; 的教程很多，但是因发行版的不同而异，在这里记录使用官网提供的打包好的安装包安装在 &lt;code&gt;Zorin&lt;/code&gt; 系统上并创建快捷方式的方法：&lt;/p&gt;
&lt;p&gt;第一步：官网下载安装包&lt;/p&gt;</description>
    </item>
    <item>
      <title>GitLab Pipline 使用 mkdocs 及 docs-material 自动编译生成静态页面并自动提交 GitLab Pages</title>
      <link>https://frytea.com/archives/275/</link>
      <pubDate>Tue, 03 Dec 2019 10:33:00 +0000</pubDate>
      <guid>https://frytea.com/archives/275/</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;又被一个问题折磨疯了，然后又在一个莫名其妙的地方解决了？？？&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;&lt;a href=&#34;https://www.mkdocs.org/&#34;&gt;MkDocs&lt;/a&gt; 是一个快速、简单、快捷可用的静态网站生成工具，文档使用 Markdown 书写，并仅需一个 YAML 配置文件。静态页面生成工具有 &lt;a href=&#34;https://docsify.js.org/#/&#34;&gt;Docsify&lt;/a&gt;, &lt;a href=&#34;https://vuepress.vuejs.org/&#34;&gt;VurPress&lt;/a&gt;, &lt;a href=&#34;https://github.com/GitbookIO/gitbook&#34;&gt;GitBook&lt;/a&gt;, &lt;a href=&#34;https://hexo.io/zh-cn/index.html&#34;&gt;hexo&lt;/a&gt;, &lt;a href=&#34;https://gohugo.io/&#34;&gt;Hugo&lt;/a&gt; 等等。本人使用过 &lt;code&gt;Hexo&lt;/code&gt;和 &lt;code&gt;Docsify&lt;/code&gt;，直到我发现了 MkDocs 以及它的绝配主题 &lt;a href=&#34;https://squidfunk.github.io/mkdocs-material/&#34;&gt;mkdocs-material&lt;/a&gt; ，&lt;code&gt;Mkdocs&lt;/code&gt; 的目录下仅需一个配置文件，然后就是完全的 MakeDown 文件即可，没有其他多余的配置，深得我心。今天就来讲讲如何为它配置一下 GitLabPipline 实现自动生成并提交到 GitLabPages。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Kvm 虚拟机安装 OnlyOffice</title>
      <link>https://frytea.com/archives/272/</link>
      <pubDate>Sun, 01 Dec 2019 11:22:00 +0000</pubDate>
      <guid>https://frytea.com/archives/272/</guid>
      <description>&lt;h2 id=&#34;onlyoffice&#34;&gt;OnlyOffice&lt;/h2&gt;
&lt;p&gt;OnlyOffice 是一个开源的办公套件，由 Ascensio System SIA 公司开发，提供了在线文档编辑、文档管理、文档协作、邮件和项目管理等功能。(WikiPedia)&lt;/p&gt;
&lt;p&gt;打开官网可以看到 OnlyOffice 提供企业版、高校版等多个收费版本，在这里我们安装开源免费的 &lt;a href=&#34;https://www.onlyoffice.com/zh/download.aspx&#34;&gt;社区版&lt;/a&gt;。社区版提供多种安装方式，在这里我们选择&lt;code&gt;使用官方ONLYOFFICE Docker容器安装ONLYOFFICE社区版及其正常运行所需的全部依赖项&lt;/code&gt;。旨在最大程度的重现官方建议的环境节约时间。请注意，官方建议安装环境为 &lt;code&gt;2C/6G/40GB&lt;/code&gt; 。&lt;/p&gt;</description>
    </item>
    <item>
      <title>【GitLab CI/CD】记一个脑残问题  `too large archive`</title>
      <link>https://frytea.com/archives/271/</link>
      <pubDate>Sat, 30 Nov 2019 16:01:00 +0000</pubDate>
      <guid>https://frytea.com/archives/271/</guid>
      <description>&lt;p&gt;昨天到今天，我终于解决了一个脑残的问题！！&lt;/p&gt;
&lt;p&gt;事情是这样子的，我自己搭建了 GitLab ，并导入了我在 GitHub 所有的仓库，并打算未来就在这里提交我的代码了。一方面是因为 GitHub 实在是太慢了，目前使用 iPad 代理切换不智能；另一方面是我想要搭建自己的一套 Git Hosting + CI/CD 系统。搭建过程很顺利、导入过程也十分顺利，但是到了 CI/CD 这里就出了问题，我想要通过 GitLab Runner 编译我的 MKDocs 页面并自动部署到 GitLab Pages，但我被一个错误坑了整整两天：&lt;/p&gt;</description>
    </item>
    <item>
      <title>综述 DevOps</title>
      <link>https://frytea.com/archives/1140/</link>
      <pubDate>Thu, 28 Nov 2019 20:53:00 +0000</pubDate>
      <guid>https://frytea.com/archives/1140/</guid>
      <description>&lt;p&gt;DevOps 常见于各大云计算提供商。DevOpe被用于打破开发者和运维者之间的壁垒，目的是缩短软件&lt;/p&gt;</description>
    </item>
    <item>
      <title>GitLab 绑定 GCP 使用 Auto DevOps（可领取GCP $200.00 赠金）</title>
      <link>https://frytea.com/archives/269/</link>
      <pubDate>Thu, 28 Nov 2019 13:44:00 +0000</pubDate>
      <guid>https://frytea.com/archives/269/</guid>
      <description>&lt;p&gt;Auto DevOps provides pre-defined CI/CD configuration which allows you to automatically detect, build, test,
deploy, and monitor your applications. Leveraging CI/CD best practices and tools, Auto DevOps aims
to simplify the setup and execution of a mature &amp;amp; modern software development lifecycle.&lt;/p&gt;
&lt;p&gt;GitLab 的 Auto DevOps 是一个亮点，博主对于其特性还不够了解，在此不多谈。本文仅介绍如何为自建的 GitLab 绑定 Google Kubernets Engine (GKE)。&lt;/p&gt;</description>
    </item>
    <item>
      <title>综述 DevOps </title>
      <link>https://frytea.com/archives/268/</link>
      <pubDate>Thu, 28 Nov 2019 12:53:00 +0000</pubDate>
      <guid>https://frytea.com/archives/268/</guid>
      <description>&lt;p&gt;&lt;code&gt;DevOps&lt;/code&gt; 常见于各大云计算提供商。&lt;code&gt;DevOpe&lt;/code&gt;被用于打破开发者和运维者之间的壁垒，目的是缩短软件开发周期并提供高质量的持续集成。&lt;/p&gt;
&lt;p&gt;[tip type=&amp;ldquo;info&amp;rdquo; title=&amp;ldquo;DevOps&amp;rdquo;]&lt;/p&gt;
&lt;p&gt;DevOps is a set of practices that combines software development (Dev) and information-technology operations (Ops) which aims to shorten the systems development life cycle and provide continuous delivery with high software quality. (WikiPedia)&lt;/p&gt;</description>
    </item>
    <item>
      <title>Linux 使用 DNSMasq 自建 DNS 服务器</title>
      <link>https://frytea.com/archives/267/</link>
      <pubDate>Thu, 28 Nov 2019 08:35:00 +0000</pubDate>
      <guid>https://frytea.com/archives/267/</guid>
      <description>&lt;p&gt;DNS(Domain Name System) 是一个为计算机、服务器或其他任何需要接入互联网或私有网络提供分级域名分发系统(hierarchical and decentralized naming system)。&lt;/p&gt;
&lt;p&gt;在内网中又一台服务器提供服务，为了使用使其可以在公共网络中访问到需要为它分配 ip 或者使用端口转发、内网穿透等，但绑定域名后域名解析到公网ip，如果在内网访问的话就写多此一举。因此在内网自建一台 DNS 服务器，使其优先级高于公网域名解析服务器，进而实现内网访问解析为内网 ip 且不影响外网访问的目的。&lt;/p&gt;</description>
    </item>
    <item>
      <title>KVM虚拟机安装 GitLab EE</title>
      <link>https://frytea.com/archives/266/</link>
      <pubDate>Thu, 28 Nov 2019 08:20:00 +0000</pubDate>
      <guid>https://frytea.com/archives/266/</guid>
      <description>&lt;p&gt;GitLab 是一个基于网页的软件开发生命周期管理工具，提供了 git 代码仓库、知识库、问题追踪、CI/CD 流水线功能，使用开源许可证，由 GitLab 公司开发（来自 WikiPedia）。&lt;/p&gt;</description>
    </item>
    <item>
      <title>自建网盘之 NextCloud 终极记录</title>
      <link>https://frytea.com/archives/265/</link>
      <pubDate>Wed, 27 Nov 2019 02:34:00 +0000</pubDate>
      <guid>https://frytea.com/archives/265/</guid>
      <description>&lt;p&gt;自建过许多网盘，试过 可道云、Seafile、FileRun、Nextcloud，但Nextcloud的如下特性吸引了我：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;完整、好用的客户端，包括 windows、mac、android、ios &amp;hellip;&lt;/li&gt;
&lt;li&gt;强大的插件扩展，如 Talk, Contacts, notes, Maps &amp;hellip;&lt;/li&gt;
&lt;li&gt;完整的第三方扩展，支持 Amazie S3, OneDrive, DropBox, Google Drive, Ftp, WebDav &amp;hellip;&lt;/li&gt;
&lt;li&gt;&amp;hellip;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;以上种种吸引了我进行了无数次的配置、尝试、探索。我在 &lt;code&gt;Centos, Debian, Ubuntu, Docker, Cpanel Virtual Hosting&lt;/code&gt; 上都尝试过配置 &lt;code&gt;Nextcloud&lt;/code&gt; , 但最终发现，还是官方首推的 &lt;code&gt;sudo snap install nextcloud&lt;/code&gt; 方式是最稳定的，此外的自建环境 (Linux + Nginx + Php + MySQL) 总是会出各种各样的兼容性、异常报错，而这些异常报错会在一些莫名其妙、意想不到的地方出现让人在一个莫名其妙的地方掉坑。&lt;/p&gt;</description>
    </item>
    <item>
      <title>解决 MySQL 报错 “ Column count of mysql.user is wrong...”</title>
      <link>https://frytea.com/archives/264/</link>
      <pubDate>Sat, 23 Nov 2019 12:34:00 +0000</pubDate>
      <guid>https://frytea.com/archives/264/</guid>
      <description>&lt;p&gt;新建 MySQL 账户报错：&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;Column count of mysql.user is wrong. Expected 45, found 43. Created with MySQL 5 
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;错误是由于你曾经升级过数据库，升级完后没有使用mysql_upgrade升级数据结构造成的。&lt;/p&gt;
&lt;p&gt;解决办法：使用&lt;code&gt;mysql_upgrade&lt;/code&gt;命令&lt;/p&gt;</description>
    </item>
    <item>
      <title>kvm 虚拟化安装 Ubuntu 18.04 server</title>
      <link>https://frytea.com/archives/1234/</link>
      <pubDate>Sat, 23 Nov 2019 10:37:00 +0000</pubDate>
      <guid>https://frytea.com/archives/1234/</guid>
      <description>&lt;p&gt;本文续上篇 《裸金属服务器 kvm 虚拟化安装 win10》继续记录使用 KVM 在 Centos&lt;/p&gt;</description>
    </item>
    <item>
      <title>NextCloud手动添加文件并列出</title>
      <link>https://frytea.com/archives/263/</link>
      <pubDate>Sat, 23 Nov 2019 03:08:50 +0000</pubDate>
      <guid>https://frytea.com/archives/263/</guid>
      <description>&lt;p&gt;NextCloud 自带的数据目录在列目录时都是通过数据库查询，如果需要手动在磁盘目录上添加文件并使用nextcloud列出就需要手动扫描。&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;sudo -u www php console.php files:scan --all
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;这条命令是官方提供的，但是实际使用时会报错如下：&lt;/p&gt;</description>
    </item>
    <item>
      <title> kvm 虚拟化安装 Ubuntu 18.04 server</title>
      <link>https://frytea.com/archives/262/</link>
      <pubDate>Sat, 23 Nov 2019 02:37:00 +0000</pubDate>
      <guid>https://frytea.com/archives/262/</guid>
      <description>&lt;p&gt;本文续上篇 &lt;a href=&#34;https://blog.frytea.com/archives/261/&#34;&gt;《裸金属服务器 kvm 虚拟化安装 win10》&lt;/a&gt;继续记录使用 &lt;code&gt;KVM&lt;/code&gt; 在 &lt;code&gt;Centos 7.5&lt;/code&gt; 裸金属服务器上安装 &lt;code&gt;Ubuntu 18.04 Server&lt;/code&gt;的过程及遇到的问题。&lt;/p&gt;
&lt;h2 id=&#34;资源准备&#34;&gt;资源准备&lt;/h2&gt;
&lt;p&gt;首先要配置好 &lt;code&gt;KVM&lt;/code&gt; 环境，上文已经详细说明，磁盘配置类似的使用 &lt;code&gt;qemu-img create -f qcow2 ubuntu.qcow2 100G &lt;/code&gt; 命令创建虚拟磁盘，系统镜像可以去官网下载:&lt;/p&gt;</description>
    </item>
    <item>
      <title>裸金属服务器kvm虚拟化安装win10</title>
      <link>https://frytea.com/archives/261/</link>
      <pubDate>Thu, 21 Nov 2019 08:39:00 +0000</pubDate>
      <guid>https://frytea.com/archives/261/</guid>
      <description>&lt;p&gt;受够了小鸡的各种卡顿以及各种套路，就想要一只&amp;quot;大鸡&amp;quot;，趁着双十一的余热购入&lt;a href=&#34;https://www.dzisp.cn&#34;&gt;达州创梦网络&lt;/a&gt;的&lt;a href=&#34;https://www.dzisp.cn/baremetal/&#34;&gt;江苏宿迁高防裸金属服务器&lt;/a&gt;（一种集合了虚拟机和物理机优点的产物），本人没有使用或配置过独立服务器，不过多评价。但和普通的 VPS 相比，裸金属服务器属于物理服务器，我的数据和其他用户数据做到了物理隔离，同时服务器本身是支持二次虚拟化的。&lt;/p&gt;</description>
    </item>
    <item>
      <title>【持续集成】Android使用Github Action自动打包并发布Fir.im内测</title>
      <link>https://frytea.com/archives/260/</link>
      <pubDate>Sun, 17 Nov 2019 13:36:00 +0000</pubDate>
      <guid>https://frytea.com/archives/260/</guid>
      <description>&lt;p&gt;&lt;img alt=&#34;B8A09718-BB0F-4896-82E9-332323220F15.jpeg&#34; loading=&#34;lazy&#34; src=&#34;https://blog.frytea.com/usr/uploads/2019/11/832379560.jpeg#shadow&#34;&gt;&lt;/p&gt;
&lt;p&gt;!!!&lt;/p&gt;
&lt;center&gt; Photo by Mesut Kaya on Unsplash &lt;/center&gt;
!!!
&lt;p&gt;为什么封面图是一张旅游的照片？因为使用 CI/CD 等工具高效的完成工作，就可以出去玩了！&lt;/p&gt;
&lt;h2 id=&#34;前言&#34;&gt;前言&lt;/h2&gt;
&lt;p&gt;&lt;a href=&#34;https://github.com/features/actions&#34;&gt;GitHub Actions&lt;/a&gt; 是 &lt;a href=&#34;https://github.com&#34;&gt;GitHub&lt;/a&gt; 官方提供并免费提供给开源仓库使用的持续集成服务，在进入本文主题之前，先讲讲什么是持续集成 (CI/CD) 。&lt;/p&gt;</description>
    </item>
    <item>
      <title>《哈利 · 波特 与混血王子（2005）》</title>
      <link>https://frytea.com/archives/1053/</link>
      <pubDate>Sun, 03 Nov 2019 16:53:00 +0000</pubDate>
      <guid>https://frytea.com/archives/1053/</guid>
      <description>&lt;p&gt;The Prime Minister did not know what to say to thi&lt;/p&gt;</description>
    </item>
    <item>
      <title>《哈利 · 波特 与密室（1998）》</title>
      <link>https://frytea.com/archives/1072/</link>
      <pubDate>Sun, 03 Nov 2019 16:51:00 +0000</pubDate>
      <guid>https://frytea.com/archives/1072/</guid>
      <description>&lt;p&gt;I think I’d better do the actual stealing » 我们需要声东&lt;/p&gt;</description>
    </item>
    <item>
      <title>[摘录] 哈利 · 波特 与混血王子（2005）</title>
      <link>https://frytea.com/archives/174/</link>
      <pubDate>Sun, 03 Nov 2019 08:53:00 +0000</pubDate>
      <guid>https://frytea.com/archives/174/</guid>
      <description>&lt;ol&gt;
&lt;li&gt;The Prime Minister did not know what to say to this, but a persistent habit of wishing to appear well-informed on any subject that came up made him cast around for any details he could remember of their previous conversations. &amp;raquo;&lt;/li&gt;
&lt;li&gt;首相听了这话,竟一时不知道该说什么好,但他有一个根深蒂固的习惯,不管谈论什么话题,他都要显示自己无所不知,因此他在记忆中苦苦搜寻他们前几次谈话的内容。 &amp;raquo;&lt;/li&gt;
&lt;li&gt;To his great surprise, the Prime Minister felt a fleeting stab of pity for Fudge at this point. It was, however, eclipsed almost immediately by a glow of smugness at the thought that, deficient though he himself might be in the area of materializing out of fireplaces, there had never been a murder in any of the government departments under his charge. … Not yet, anyway … &amp;raquo;&lt;/li&gt;
&lt;li&gt;听到这里,首相突然间对福吉产生了恻隐之心,这使他自己也大为吃惊。不过,他的同情转瞬即逝,立刻就被一种自我得意的心情所取代。他想到,他虽说不具备从壁炉里显形的本领,但是在他所管辖的政府部门里,还从来没出过命案呢……至少现在还没有…… &amp;raquo;&lt;/li&gt;
&lt;li&gt;“So I suppose you’re going to tell me he caused the hurricane in the West Country too?” said the Prime Minister, his temper rising with every pace he took. It was infuriating to discover the reason for all these terrible disasters and not to be able to tell the public, almost worse than it being the government’s fault after all. &amp;raquo;&lt;/li&gt;
&lt;li&gt;“我想,你接着还会告诉我,西部的那场飓风也是他造成的吧?”首相问。他每走一步,心里的怒火就增长一分。他发现了所有那些可怕灾难的原因,却又不能告诉公众,这简直太令人生气了,如果真是政府的过失反倒还好一些。 &amp;raquo;&lt;/li&gt;
&lt;li&gt;“But,” said the Prime Minister, with a sense of dawning horror, “didn’t you tell me they’re the creatures that drain hope and happiness out of people?” &amp;raquo;&lt;/li&gt;
&lt;li&gt;“可是,”首相说,他心里渐渐产生了一种恐惧,“你不是告诉过我,它们这种生物是专门吸走人们的希望和快乐的吗?” &amp;raquo;&lt;/li&gt;
&lt;li&gt;“My dear Prime Minister, you can’t honestly think I’m still Minister of Magic after all this? I was sacked three days ago! The whole Wizarding community has been screaming for my resignation for a fortnight. I’ve never known them so united in my whole term of office!” said Fudge, with a brave attempt at a smile. &amp;raquo;&lt;/li&gt;
&lt;li&gt;我亲爱的首相啊,发生这么多事情之后,你真的认为我还能当魔法部部长吗?我三天前就下台了!整个巫师界两个星期来一直叫嚷着要我辞职。我在任这么多年,还从没见过他们这么团结一致!”福吉说着勉强地笑了一下。 &amp;raquo;&lt;/li&gt;
&lt;li&gt;Dear Harry, If it is convenient to you, I shall call at number four, Privet Drive this coming Friday at eleven p.m. to escort you to the Burrow, where you have been invited to spend the remainder of your school holidays. If you are agreeable, I should also be glad of your assistance in a matter to which I hope to attend on the way to the Burrow. I shall explain this more fully when I see you. Kindly send your answer by return of this owl. Hoping to see you this Friday, I am, yours most sincerely, Albus Dumbledore &amp;raquo;&lt;/li&gt;
&lt;li&gt;亲爱的哈利: 如果你方便的话,我将在本星期五夜里十一点到女贞路四号来接你去陋居,他们邀请你在那里度过暑假剩余的日子。 另外,我在去陋居的路上要办一件事,若能得到你的协助我将非常高兴。详情见面时谈。 请将回信托这只猫头鹰捎回。星期五见。 你最忠实的阿不思·邓布利多 &amp;raquo;&lt;/li&gt;
&lt;li&gt;But Harry had not packed. It just seemed too good to be true that he was going to be rescued from the Dursleys after a mere fortnight of their company. He could not shrug off the feeling that something was going to go wrong — his reply to Dumbledore’s letter might have gone astray; Dumbledore could be prevented from collecting him; the letter might turn out not to be from Dumbledore at all, but a trick or joke or trap. Harry had not been able to face packing and then being let down and having to unpack again. The only gesture he had made to the possibility of a journey was to shut his snowy owl, Hedwig, safely in her cage. &amp;raquo;&lt;/li&gt;
&lt;li&gt;可是哈利没有收拾行李。刚在德思礼家住了两个星期就要被解救出去,这件事太美妙了,不像是真的。他怎么也摆脱不了心头的疑虑,总觉得会有什么地方出差错——他给邓布利多的回信送到别处去了,邓布利多被耽搁了、不能来接他了,或者那封信根本不是邓布利多写来的, 而是一个玩笑、恶作剧或陷阱。如果高高兴兴地收拾好行李,到头来大失所望,还要把东西一件件地从箱子里再拿出来,哈利肯定会受不了的。对于可能到来的旅行,他惟一的举动就是把他那只雪白的猫头鹰海德薇牢牢地关在笼子里。 &amp;raquo;&lt;/li&gt;
&lt;li&gt;Harry ran down the stairs two at a time, coming to an abrupt halt several steps from the bottom, as long experience had taught him to remain out of arm’s reach of his uncle whenever possible. &amp;raquo;&lt;/li&gt;
&lt;li&gt;哈利一步两级地冲下楼梯,在离楼底还有几级时猛地刹住脚步,长期以来的经验告诉他,任何时候都要尽量与姨父保持距离,别让姨父的手臂够着他。 &amp;raquo;&lt;/li&gt;
&lt;li&gt;It might have been the blatant wizardishness of his appearance, but it might, too, have been that even Uncle Vernon could sense that here was a man whom it would be very difficult to bully. &amp;raquo;&lt;/li&gt;
&lt;li&gt;也许是邓布利多所显露出的惹人注目的巫师气质,也许只是因为就连弗农姨父也能感觉到,他很难在这个男人面前耀武扬威。 &amp;raquo;&lt;/li&gt;
&lt;li&gt;These words seemed to rouse Uncle Vernon. It was clear that as far as he was concerned, any man who could look at Harry and say “excellent” was a man with whom he could never see eye to eye. &amp;raquo;&lt;/li&gt;
&lt;li&gt;这句话似乎唤醒了弗农姨父。显然对他来说,任何一个能够看着哈利说“太好了”的人,他都永远不可能跟那人达成共识。 &amp;raquo;&lt;/li&gt;
&lt;li&gt;“I don’t mean to be rude —” he began, in a tone that threatened rudeness in every syllable. &amp;raquo;&lt;/li&gt;
&lt;li&gt;“我不是故意失礼——”他说,话里的每一个音节都透着无礼。 &amp;raquo;&lt;/li&gt;
&lt;li&gt;Dudley scrambled out of the way as Dumbledore passed him. Harry, still clutching the telescope and trainers, jumped the last few stairs and followed Dumbledore, who had settled himself in the armchair nearest the fire and was taking in the surroundings with an expression of benign interest. He looked quite extraordinarily out of place. &amp;raquo;&lt;/li&gt;
&lt;li&gt;邓布利多经过达力身边时,达力慌忙闪到一边。哈利跳下最后几级楼梯,跟着邓布利多进了客厅,手里仍然抓着望远镜和运动鞋。邓布利多在最靠近壁炉的扶手椅上坐了下来,带着善意的兴趣打量着房间里的一切。他看上去与周围的环境完全不协调。 &amp;raquo;&lt;/li&gt;
&lt;li&gt;He drew his wand so rapidly that Harry barely saw it; with a casual flick, the sofa zoomed forward and knocked the knees out from under all three of the Dursleys so that they collapsed upon it in a heap. Another flick of the wand and the sofa zoomed back to its original position. &amp;raquo;&lt;/li&gt;
&lt;li&gt;他忽地拔出魔杖,快得哈利都没看清。魔杖轻轻一挥,沙发嗖地冲了过去,撞在德思礼家三个人的膝盖上。他们一下子没有站住脚,全都栽倒在沙发上,滚作一团。魔杖又是轻轻一挥,沙发又嗖地回到了原处。 &amp;raquo;&lt;/li&gt;
&lt;li&gt;As he replaced his wand in his pocket, Harry saw that his hand was blackened and shriveled; it looked as though his flesh had been burned away. &amp;raquo;&lt;/li&gt;
&lt;li&gt;他把魔杖重新放回了口袋,这时哈利看见他的那只手既干枯又焦黑,好像上面的肉都被烧干了。 &amp;raquo;&lt;/li&gt;
&lt;li&gt;“I would assume that you were going to offer me refreshment,”Dumbledore said to Uncle Vernon, “but the evidence so far suggests that that would be optimistic to the point of foolishness.” &amp;raquo;&lt;/li&gt;
&lt;li&gt;“我本来以为你们会让我喝点儿什么,”邓布利多对弗农姨父说,“现在看来,这种期望是乐观到了可笑的程度。” &amp;raquo;&lt;/li&gt;
&lt;li&gt;He thought he would be haunted forever by the memory of Sirius prowling its dark musty rooms alone, imprisoned within the place he had wanted so desperately to leave. &amp;raquo;&lt;/li&gt;
&lt;li&gt;他觉得自己一辈子都忘不了小天狼星曾经在那些昏暗发霉的房间里独自徘徊,被囚禁在那个他日夜渴望离开的地方。 &amp;raquo;&lt;/li&gt;
&lt;li&gt;Nobody was talking. Dumbledore was humming quietly, apparently quite at his ease, but the atmosphere was thicker than cold custard &amp;raquo;&lt;/li&gt;
&lt;li&gt;没有一个人说话。邓布利多轻声哼着小曲儿,一副自得其乐的样子,但是屋里的空气比冰冻的牛奶蛋糊还要凝重。 &amp;raquo;&lt;/li&gt;
&lt;li&gt;Dumbledore paused, and although his voice remained light and calm, and he gave no obvious sign of anger, Harry felt a kind of chill emanating from him and noticed that the Dursleys drew very slightly closer together. &amp;raquo;&lt;/li&gt;
&lt;li&gt;邓布利多停住了,尽管他的声音还是那么轻松、平静,脸上也没有表现出丝毫的怒容,但哈利感觉到他身上散发出一股寒意。他注意到德思礼一家互相挤缩得更紧了。 &amp;raquo;&lt;/li&gt;
&lt;li&gt;“You did not do as I asked. You have never treated Harry as a son. He has known nothing but neglect and often cruelty at your hands. The best that can be said is that he has at least escaped the appalling damage you have inflicted upon the unfortunate boy sitting between you.” &amp;raquo;&lt;/li&gt;
&lt;li&gt;“你们没有按我说的去做。你们从来不把哈利当成自己的儿子。他在你们手里,得到的只是忽视和经常性的虐待。不幸中的万幸,他至少逃脱了你们对坐在你们中间的那个倒霉男孩造成的那种可怕伤害。” &amp;raquo;&lt;/li&gt;
&lt;li&gt;None of the Dursleys said anything. Dudley was frowning slightly, as though he was still trying to work out when he had ever been mistreated. Uncle Vernon looked as though he had something stuck in his throat; Aunt Petunia, however, was oddly flushed. &amp;raquo;&lt;/li&gt;
&lt;li&gt;德思礼一家谁也没有吭声。达力微微皱着眉头,似乎还在琢磨他到底受到了什么虐待。弗农姨父看上去像是喉咙里卡了什么东西。佩妮姨妈呢,却莫名其妙地涨红了脸。 &amp;raquo;&lt;/li&gt;
&lt;li&gt;“And now, Harry, let us step out into the night and pursue that flighty temptress, adventure.” &amp;raquo;&lt;/li&gt;
&lt;li&gt;“好了,哈利,让我们走进黑夜里,去追逐那个轻浮而诱人的妖妇——冒险吧。” &amp;raquo;&lt;/li&gt;
&lt;li&gt;Courtesy dictates that we offer fellow wizards the opportunity of denying us entry. &amp;raquo;&lt;/li&gt;
&lt;li&gt;礼貌要求我们向别的巫师提供拒绝我们的机会。 &amp;raquo;&lt;/li&gt;
&lt;li&gt;“No, I thought not. You have not asked me, for instance, what is my favorite flavor of jam, to check that I am indeed Professor Dumbledore and not an impostor.” &amp;raquo;&lt;/li&gt;
&lt;li&gt;“是啊,我也认为没用。比如,你并没有问我最喜欢哪一种果酱, 以此来检验我是否确实是邓布利多教授,而不是一个冒牌货。” &amp;raquo;&lt;/li&gt;
&lt;li&gt;He seemed remarkably unabashed for a man who had just been discovered pretending to be an armchair. &amp;raquo;&lt;/li&gt;
&lt;li&gt;看来他的脸皮厚得惊人,要知道他刚刚可是装成了一把扶手椅被人识破的。 &amp;raquo;&lt;/li&gt;
&lt;li&gt;He pushed past Harry, his face turned resolutely away with the air of a man trying to resist temptation. &amp;raquo;&lt;/li&gt;
&lt;li&gt;他推开哈利走了过去,并且坚决地把脸转向一边,像在抵御什么诱惑似的。 &amp;raquo;&lt;/li&gt;
&lt;li&gt;Slughorn eyed Dumbledore balefully for a moment, then muttered, “I haven’t given them the chance. I’ve been on the move for a year. Never stay in one place more than a week. Move from Muggle house to Muggle house — the owners of this place are on holiday in the Canary Islands — it’s been very pleasant, I’ll be sorry to leave. It’s quite easy once you know how, one simple Freezing Charm on these absurd burglar alarms they use instead of Sneakoscopes and make sure the neighbors don’t spot you bringing in the piano.” &amp;raquo;&lt;/li&gt;
&lt;li&gt;斯拉格霍恩恶狠狠地瞪了邓布利多片刻,然后低声说道:“我没有给他们机会。一年来,我一直行踪不定。待在一个地方从来不超过一个星期。从一处麻瓜住宅搬到另一处麻瓜住宅——这幢房子的主人正在加那利群岛 度假呢。我在这儿住得很舒服,真舍不得离开。一旦找到窍门就很容易啦,他们不用窥镜,而用那些可笑的防盗警报器,你只要在上面施一个冰冻魔咒,还有,搬钢琴进来时别让邻居们看见就行了。” &amp;raquo;&lt;/li&gt;
&lt;li&gt;“Professor Umbridge ran afoul of our centaur herd,” said Dumbledore. “I think you, Horace, would have known better than to stride into the forest and call a horde of angry centaurs ‘filthy half-breeds.’ ” &amp;raquo;&lt;/li&gt;
&lt;li&gt;“乌姆里奇教授跟我们的那些马人发生了冲突。”邓布利多说道,“我想,霍拉斯,你肯定不会大摇大摆地走进禁林,管一群愤怒的马人叫‘肮脏的杂种’吧。” &amp;raquo;&lt;/li&gt;
&lt;li&gt;“Hmpf. Yes, well. You shouldn’t have favorites as a teacher, of course, but she was one of mine. Your mother,” Slughorn added, in answer to Harry’s questioning look. “Lily Evans. One of the brightest I ever taught. Vivacious, you know. Charming girl. I used to tell her she ought to have been in my House. Very cheeky answers I used to get back too.” &amp;raquo;&lt;/li&gt;
&lt;li&gt;“哼,是啊。当然啦,作为一名教师,是不应该偏爱学生的,但我就是偏爱她。你的母亲,”斯拉格霍恩看到哈利疑问的目光,补充道,“莉莉·伊万丝,是我教过的最聪明的学生之一。活泼可爱。一个迷人的姑娘。我经常对她说,她应该在我的学院才是。我经常得到她很不客气的回答。” &amp;raquo;&lt;/li&gt;
&lt;li&gt;Slughorn seemed agitated. He twiddled his fat thumbs and fidgeted as he watched Dumbledore fasten his traveling cloak, and Harry zip up his jacket. &amp;raquo;&lt;/li&gt;
&lt;li&gt;斯拉格霍恩显得很不安。他摆弄着两根胖胖的大拇指,焦虑地看着邓布利多裹紧了旅行斗篷,哈利拉上了他的夹克衫拉链。 &amp;raquo;&lt;/li&gt;
&lt;li&gt;“Yes, yes,” said Slughorn impatiently. “I must be mad, but yes.” &amp;raquo;&lt;/li&gt;
&lt;li&gt;“是啊,是啊,”斯拉格霍恩不耐烦地说,“我肯定是疯了,但是没错,我愿意。” &amp;raquo;&lt;/li&gt;
&lt;li&gt;Harry had a sudden and vivid mental image of a great swollen spider, spinning a web around it, twitching a thread here and there to bring its large and juicy flies a little closer. &amp;raquo;&lt;/li&gt;
&lt;li&gt;哈利脑海里立刻出现了一只胖鼓鼓的大蜘蛛,它这里吐一根丝,那里吐一根丝,在身体周围结了一张网,把美味多汁的大苍蝇引到自己身边来。 &amp;raquo;&lt;/li&gt;
&lt;li&gt;“I hope you will forgive me for mentioning it, Harry, but I am pleased and a little proud at how well you seem to be coping after everything that happened at the Ministry. Permit me to say that I think Sirius would have been proud of you.” &amp;raquo;&lt;/li&gt;
&lt;li&gt;“哈利,希望你能原谅我提起这个话题,但是在部里发生了那些事情之后,你似乎一直对付得不错,对此我很高兴,还有点儿自豪。请允许我说一句,我认为小天狼星也会为你感到自豪的。” &amp;raquo;&lt;/li&gt;
&lt;li&gt;“It’s just hard,” Harry said finally, in a low voice, “to realize he won’t write to me again.” &amp;raquo;&lt;/li&gt;
&lt;li&gt;“很难相信,”哈利终于低声说道,“他再也不会给我写信了。” &amp;raquo;&lt;/li&gt;
&lt;li&gt;“Sirius represented much to you that you had never known before,” said Dumbledore gently. “Naturally, the loss is devastating. …” &amp;raquo;&lt;/li&gt;
&lt;li&gt;“对你来说,小天狼星代表着许多你以前从不知道的东西。”邓布利多温和地说,“失去他肯定令你感到无比痛苦……” &amp;raquo;&lt;/li&gt;
&lt;li&gt;“But while I was at the Dursleys’ …” interrupted Harry, his voice growing stronger, “I realized I can’t shut myself away or — or crack up. Sirius wouldn’t have wanted that, would he? And anyway, life’s too short. …Look at Madam Bones, look at Emmeline Vance. … It could be me next, couldn’t it? But if it is,” he said fiercely, now looking straight into Dumbledore’s blue eyes gleaming in the wandlight, “I’ll make sure I take as many Death Eaters with me as I can, and Voldemort too if I can manage it.” &amp;raquo;&lt;/li&gt;
&lt;li&gt;“可是我在德思礼家的时候,”哈利打断了他的话,声音变得有力了,“我知道我不能把自己封闭起来,也不能——不能自暴自弃。小天狼星肯定不愿意这样,是吗?而且生命太短暂了……看看博恩斯夫人, 看看爱米琳·万斯……下一个可能就是我,对吗?如果真的轮到我,”他直视着邓布利多那双在魔杖的亮光下闪烁的蓝眼睛,激动地说道,“我一定要尽量多消灭几个食死徒,如果可能的话,就跟伏地魔同归于尽。” &amp;raquo;&lt;/li&gt;
&lt;li&gt;“Spoken both like your mother and father’s son and Sirius’s true godson!” said Dumbledore, with an approving pat on Harry’s back. “I take my hat off to you — or I would, if I were not afraid of showering you in spiders. &amp;raquo;&lt;/li&gt;
&lt;li&gt;“说得好,不愧是你父母的儿子、小天狼星的教子!”邓布利多说着赞许地拍了拍哈利的后背,“我要脱帽向你表示敬意——我很想这么做,但我担心会弄得你满身都是蜘蛛。 &amp;raquo;&lt;/li&gt;
&lt;li&gt;“A wise decision, on the whole,” said Dumbledore. “Although I think you ought to relax it in favor of your friends, Mr. Ronald Weasley and Miss Hermione Granger. Yes,” he continued, when Harry looked startled, “I think they ought to know. You do them a disservice by not confiding something this important to them.” &amp;raquo;&lt;/li&gt;
&lt;li&gt;“总的来说,这么做是明智的,”邓布利多说,“不过我认为你不妨在你的朋友罗恩·韦斯莱先生和赫敏·格兰杰小姐面前松松口。是啊,”看到哈利惊愕的神色,他又说道,“我认为可以让他们知道。你把这么重要的事情瞒着他们,会伤害他们的感情的。” &amp;raquo;&lt;/li&gt;
&lt;li&gt;“— to worry or frighten them?” said Dumbledore, surveying Harry over the top of his half-moon spectacles. “Or perhaps, to confess that you yourself are worried and frightened? You need your friends, Harry. As you so rightly said, Sirius would not have wanted you to shut yourself away.” &amp;raquo;&lt;/li&gt;
&lt;li&gt;“——让他们担惊受怕?”邓布利多从他的半月形眼镜片上方打量着哈利,说道,“或者,不想坦白你自己的担心和恐惧?哈利,你需要朋友。你刚才说得对,小天狼星肯定不愿意你把自己封闭起来。” &amp;raquo;&lt;/li&gt;
&lt;li&gt;“I think the word ‘fiasco’ would be a good one here,” said Dumbledore, nodding. Harry laughed. &amp;raquo;&lt;/li&gt;
&lt;li&gt;“我认为‘彻底失败’这个词用在这里很合适。”邓布利多点点头说。 哈利笑了起来。 &amp;raquo;&lt;/li&gt;
&lt;li&gt;“And lastly, while you stay here, the Burrow has been given the highest security the Ministry of Magic can provide. These measures have caused a certain amount of inconvenience to Arthur and Molly — all their post, for instance, is being searched at the Ministry before being sent on. They do not mind in the slightest, for their only concern is your safety. However, it would be poor repayment if you risked your neck while staying with them.” &amp;raquo;&lt;/li&gt;
&lt;li&gt;“最后,你住在这里时,陋居得到了魔法部所能提供的最严密的安全保护。这些措施给亚瑟和莫丽带来了一定程度的不便——比如,他们所有的邮件都要经部里审查后才能送达。但他们丝毫不介意,一心只牵挂着你的安全。可是,如果你跟他们住在一起时冒险胡来,可就太对不起他们了。” &amp;raquo;&lt;/li&gt;
&lt;li&gt;Let us not deprive Molly any longer of the chance to deplore how thin you are. &amp;raquo;&lt;/li&gt;
&lt;li&gt;我们就让莫丽赶紧有机会哀叹你有多么瘦吧。 &amp;raquo;&lt;/li&gt;
&lt;li&gt;Hedwig hooted happily at Harry from her perch on top of a large wardrobe, then took off through the window; Harry knew she had been waiting to see him before going hunting. &amp;raquo;&lt;/li&gt;
&lt;li&gt;海德薇在一个大衣柜顶上朝哈利高兴地叫了几声,然后便振翅飞出了窗外,哈利知道它一直在等着见他一面之后才去觅食。 &amp;raquo;&lt;/li&gt;
&lt;li&gt;It was the same last time he was powerful, people eloping left, right, and center —”“Including you and Dad,” said Ginny slyly. &amp;raquo;&lt;/li&gt;
&lt;li&gt;上次神秘人得势的时候就是这样,到处都有人私奔——”“包括你和爸爸。”金妮调皮地说。 &amp;raquo;&lt;/li&gt;
&lt;li&gt;“Dumbledore says people find it far easier to forgive others for being wrong than being right,” said Hermione. &amp;raquo;&lt;/li&gt;
&lt;li&gt;“邓布利多说,人们容易原谅别人的错误,却很难原谅别人的正确。”赫敏说 &amp;raquo;&lt;/li&gt;
&lt;li&gt;Harry did not really listen. A warmth was spreading through him that had nothing to do with the sunlight; a tight obstruction in his chest seemed to be dissolving. He knew that Ron and Hermione were more shocked than they were letting on, but the mere fact that they were still there on either side of him, speaking bracing words of comfort, not shrinking from him as though he were contaminated or dangerous, was worth more than he could ever tell them. &amp;raquo;&lt;/li&gt;
&lt;li&gt;哈利并没有认真地听。他感到全身暖融融的,而且这暖意跟阳光毫无关系,堵在他胸口的那块东西似乎正在渐渐融化。他知道罗恩和赫敏并没有把内心的恐惧都显露出来,但看到他们仍然和他站在一起,说着安慰和鼓励的话,而没有把他当成异类或危险分子,远远地躲开,他觉得这价值是他无法用语言向他们表达的。 &amp;raquo;&lt;/li&gt;
&lt;li&gt;Mrs. Weasley squeezed past them and opened the kitchen window. One, two, three, the owls soared through it and landed on the table in a neat line. All three of them lifted their right legs. &amp;raquo;&lt;/li&gt;
&lt;li&gt;韦斯莱夫人挤过他们身边,打开了厨房的窗户。一只、两只、三只猫头鹰从窗口飞了进来,落在桌子上,整整齐齐地站成一排,步调一致地抬起了右腿。 &amp;raquo;&lt;/li&gt;
&lt;li&gt;ORDINARY WIZARDING LEVEL RESULTS Pass Grades Fail Grades Outstanding (O) Poor (P) Exceeds Expectations (E) Dreadful (D) Acceptable (A) Troll (T) &amp;raquo;&lt;/li&gt;
&lt;li&gt;“Well, we’re N.E.W.T. students now!” grinned Ron. “Mum, are there any more sausages?” &amp;raquo;&lt;/li&gt;
&lt;li&gt;“太好了,我们现在是N.E.W.Ts的学生了!”罗恩笑着说,“妈妈,还有香肠吗?” &amp;raquo;&lt;/li&gt;
&lt;li&gt;It was odd, really, seeing that it had been a Death Eater in disguise who had first told Harry he would make a good Auror, but somehow the idea had taken hold of him, and he couldn’t really think of anything else he would like to be. Moreover, it had seemed the right destiny for him since he had heard the prophecy a few weeks ago. … Neither can live while the other survives. … Wouldn’t he be living up to the prophecy, and giving himself the best chance of survival, if he joined those highly trained wizards whose job it was to find and kill Voldemort? &amp;raquo;&lt;/li&gt;
&lt;li&gt;说来也奇怪,最初告诉哈利他会成为一名出色的傲罗的,是一个伪装的食死徒,但不知怎的,这个想法在哈利心里生了根,他想象不出除此之外他还愿意做什么。而且,自从一个月前听了那个预言之后,这似乎已是他注定的命运……两个人不能都活着……如果他加入那支足智多谋、以追捕和消灭伏地魔为己任的巫师队伍,他岂不是就能实施那个预言,给自己一个最大的生存机会吗? &amp;raquo;&lt;/li&gt;
&lt;li&gt;“That’s right. … Well, we thought Shield Hats were a bit of a laugh, you know, challenge your mate to jinx you while wearing it and watch his face when the jinx just bounces off. But the Ministry bought five hundred for all its support staff! And we’re still getting massive orders!” &amp;raquo;&lt;/li&gt;
&lt;li&gt;“没错……嘿,我们本来以为防咒帽只是一种搞笑的玩意儿。你知道的,就是你戴着这种帽子叫你的同伴给你施恶咒,然后你盯着他的脸,恶咒就会反弹出去。没想到魔法部给他们所有的工作人员买了五百顶!现在我们还不断接到大额订单呢!” &amp;raquo;&lt;/li&gt;
&lt;li&gt;“Our feet’ll be seen!” said Hermione anxiously, as the cloak flapped a little around their ankles; it was much more difficult hiding all three of them under the cloak nowadays. &amp;raquo;&lt;/li&gt;
&lt;li&gt;“我们的脚会被人看见的!”赫敏担心地说,因为隐形衣的下摆在他们脚脖子周围掀动着。如今,他们三个人藏在它下面比以前困难多了。 &amp;raquo;&lt;/li&gt;
&lt;li&gt;“People expect you to have cooler friends than us,” said Luna, once again displaying her knack for embarrassing honesty. &amp;raquo;&lt;/li&gt;
&lt;li&gt;“人们认为你应该有比我们更带劲的朋友。”卢娜说,又一次显示了她哪壶不开提哪壶的本领。 &amp;raquo;&lt;/li&gt;
&lt;li&gt;You should hear my gran talk about you. ‘That Harry Potter’s got more backbone than the whole Ministry of Magic put together!’ &amp;raquo;&lt;/li&gt;
&lt;li&gt;你真该听听我奶奶是怎么说你的。‘那个哈利·波特比整个魔法部的人加在一起还有骨气!’ &amp;raquo;&lt;/li&gt;
&lt;li&gt;“A Wrackspurt … They’re invisible. They float in through your ears and make your brain go fuzzy,” she said. “I thought I felt one zooming around in here.” &amp;raquo;&lt;/li&gt;
&lt;li&gt;“骚扰虻……它们是隐形的,会飘到你耳朵里,把你的脑子搞乱。”她说,“我刚才好像觉得有一只在这里嗡嗡地飞。” &amp;raquo;&lt;/li&gt;
&lt;li&gt;He contemplated Harry for a moment as though he was a particularly large and succulent piece of pheasant &amp;raquo;&lt;/li&gt;
&lt;li&gt;他沉思地端详着哈利,似乎哈利是一只肥墩墩的、美味多汁的鹌鹑 &amp;raquo;&lt;/li&gt;
&lt;li&gt;The fury and hatred bubbling inside Harry seemed to blaze white-hot, but he would rather have been immobilized all the way back to London than tell Snape why he was late. &amp;raquo;&lt;/li&gt;
&lt;li&gt;哈利内心的愤怒和仇恨简直白热化了,他宁愿全身僵硬地返回伦敦,也不愿告诉斯内普他迟到的原因。 &amp;raquo;&lt;/li&gt;
&lt;li&gt;Still Harry remained silent, though he thought his chest might explode. He knew that Snape had come to fetch him for this, for the few minutes when he could needle and torment Harry without anyone else listening. &amp;raquo;&lt;/li&gt;
&lt;li&gt;哈利仍然保持着沉默,尽管他觉得肺都要气炸了。他知道斯内普来接他就是为了这个,他可以有几分钟时间激怒和折磨哈利,而不会被任何人听见。 &amp;raquo;&lt;/li&gt;
&lt;li&gt;“It looks as if it’s died,” said Hermione, with a nauseated expression. “But there are some injuries you can’t cure … old curses … and there are poisons without antidotes. …” &amp;raquo;&lt;/li&gt;
&lt;li&gt;“那只手看上去像是死了。”赫敏脸上带着难受的表情说,“有些伤永远治不好……古老的咒语……还有一些魔药是没有解药的……” &amp;raquo;&lt;/li&gt;
&lt;li&gt;Harry told him. It was a mark of the strength of their friendship that Ron did not laugh. &amp;raquo;&lt;/li&gt;
&lt;li&gt;哈利把事情告诉了他。罗恩没有笑,这显示了他们的友谊是多么牢固。 &amp;raquo;&lt;/li&gt;
&lt;li&gt;In fact, his ability to speak to serpents did not make me nearly as uneasy as his obvious instincts for cruelty, secrecy, and domination. &amp;raquo;&lt;/li&gt;
&lt;li&gt;事实上,他与蛇对话的能力并没有使我感到很不安,令我担心的是他明显表现出来的那种残酷、诡秘和霸道的天性。 &amp;raquo;&lt;/li&gt;
&lt;li&gt;I trust that you also noticed that Tom Riddle was already highly self- sufficient, secretive, and, apparently, friendless? &amp;raquo;&lt;/li&gt;
&lt;li&gt;我相信你同样也注意到了,汤姆·里德尔当时已经极为自信,讳莫如深,而且显然没有一个朋友。 &amp;raquo;&lt;/li&gt;
&lt;li&gt;“Very astute, Harry, but the mouth organ was only ever a mouth organ.” &amp;raquo;&lt;/li&gt;
&lt;li&gt;“眼光很敏锐,哈利,但口琴只是一把口琴而已。” &amp;raquo;&lt;/li&gt;
&lt;li&gt;It was as though something large and scaly erupted into life in Harry’s stomach, clawing at his insides: Hot blood seemed to flood his brain, so that all thought was extinguished, replaced by a savage urge to jinx Dean into a jelly. Wrestling with this sudden madness, he heard Ron’s voice as though from a great distance away. &amp;raquo;&lt;/li&gt;
&lt;li&gt;似乎有个全身长鳞的大家伙在哈利心头突然活了起来,并用爪子抓挠着他的五脏六腑,热血一下子冲上了他的脑袋,所有的理性都被压制住了,取而代之的是一股强烈的冲动,只想用恶咒把迪安变成一堆果子冻。他与这种突如其来的疯狂念头搏斗着,听见罗恩的声音像是从很远的地方传来。 &amp;raquo;&lt;/li&gt;
&lt;li&gt;Hermione slid off the desk. The little flock of golden birds continued to twitter in circles around her head so that she looked like a strange, feathery model of the solar system. &amp;raquo;&lt;/li&gt;
&lt;li&gt;赫敏从讲台上滑了下来。那群金黄色的小鸟继续围着她的脑袋叽叽喳喳地飞着,这使她看上去像一个奇怪的、长着羽毛的太阳系模型。 &amp;raquo;&lt;/li&gt;
&lt;li&gt;“I’m not talking about your stupid so-called Prince,” said Hermione, giving his book a nasty look as though it had been rude to her. “I’m talking about earlier. I went into the girls’ bathroom just before I came in here and there were about a dozen girls in there, including that Romilda Vane, trying to decide how to slip you a love potion. They’re all hoping they’re going to get you to take them to Slughorn’s party, and they all seem to have bought Fred and George’s love potions, which I’m afraid to say probably work —” &amp;raquo;&lt;/li&gt;
&lt;li&gt;“我不是说你那个愚蠢的所谓王子,”赫敏凶巴巴地瞪了他的书一眼,好像它招惹了她似的,“我是说刚才,到这儿来之前,我去盥洗室,那儿有一打女孩子,包括罗米达·万尼,都在讨论着怎么能让你喝下迷情剂。她们都希望能被你带去参加斯拉格霍恩的晚会,而且好像都买了弗雷德和乔治的迷情剂——” &amp;raquo;&lt;/li&gt;
&lt;li&gt;Parvati positively beamed. Harry could tell that she was feeling guilty for having laughed at Hermione in Transfiguration. He looked around and saw that Hermione was beaming back, if possible even more brightly. Girls were very strange sometimes. &amp;raquo;&lt;/li&gt;
&lt;li&gt;帕瓦蒂满脸带笑,哈利看得出她在为变形课上笑了赫敏感到内疚。 他扭头一看,见赫敏也是一副笑容,如果可能的话,甚至可以说是灿烂的笑容。女孩子有时真是很奇怪。 &amp;raquo;&lt;/li&gt;
&lt;li&gt;She left. At once Lavender and Parvati put their heads together to discuss this new development, with everything they had ever heard about McLaggen, and all they had ever guessed about Hermione. Ron looked strangely blank and said nothing. Harry was left to ponder in silence the depths to which girls would sink to get revenge. &amp;raquo;&lt;/li&gt;
&lt;li&gt;她走了。拉文德和帕瓦蒂马上把脑袋凑在一起议论着这个新情况, 包括她们对麦克拉根的一切耳闻,以及她们对赫敏的一切猜测。罗恩表情异常麻木,一言不发。哈利留在那儿,思考着女孩子为了报复可以陷得有多深。 &amp;raquo;&lt;/li&gt;
&lt;li&gt;Fred, George, Harry, and Ron were the only ones who knew that the angel on top of the tree was actually a garden gnome that had bitten Fred on the ankle as he pulled up carrots for Christmas dinner. Stupefied, painted gold, stuffed into a miniature tutu and with small wings glued to its back, it glowered down at them all, the ugliest angel Harry had ever seen, with a large bald head like a potato and rather hairy feet. &amp;raquo;&lt;/li&gt;
&lt;li&gt;只有弗雷德、乔治、哈利和罗恩知道圣诞树顶上的小天使其实是一个花园小地精。弗雷德在拔圣诞晚餐用的胡萝卜时被这个小地精咬了脚踝,于是它被施了昏迷咒,涂成金色,塞进了一件小芭蕾舞裙,背上粘了对小翅膀,在树顶上对他们怒目而视。这是哈利见过的最丑的天使,长着土豆似的大秃脑袋,脚上还有毛。 &amp;raquo;&lt;/li&gt;
&lt;li&gt;And the rest of the evening passed amicably with both of them abusing the Minister of Magic, for Hermione, like Ron, thought that after all the Ministry had put Harry through the previous year, they had a great deal of nerve asking him for help now. &amp;raquo;&lt;/li&gt;
&lt;li&gt;晚上剩下的时间是在友好的气氛中度过的,两人共同批判了魔法部长。赫敏跟罗恩一样认为,魔法部去年让哈利吃了那么多苦头,现在又来找他帮忙,脸皮真够厚的。 &amp;raquo;&lt;/li&gt;
&lt;li&gt;Lost in visions of this happy prospect, he flicked his wand a little too enthusiastically, so that instead of producing the fountain of pure water that was the object of today’s Charms lesson, he let out a hoselike jet that ricocheted off the ceiling and knocked Professor Flitwick flat on his face. &amp;raquo;&lt;/li&gt;
&lt;li&gt;他沉浸在憧憬中,魔杖挥得劲太足了点儿,把那天魔咒课作业要变的一股清泉变成了一道水龙,射到天花板上反弹下来,正打在弗立维教授的脸上。 &amp;raquo;&lt;/li&gt;
&lt;li&gt;“Ah, Harry, how often this happens, even between the best of friends! Each of us believes that what he has to say is much more important than anything the other might have to contribute!” &amp;raquo;&lt;/li&gt;
&lt;li&gt;“啊,哈利,这是多么常见的事情,即使在最好的朋友之间!我们都相信自己要说的比对方的重要得多!” &amp;raquo;&lt;/li&gt;
&lt;li&gt;I believe that it was then that he dropped the name forever, assumed the identity of Lord Voldemort, and began his investigations into his previously despised mother’s family — the woman whom, you will remember, he had thought could not be a witch if she had succumbed to the shameful human weakness of death. &amp;raquo;&lt;/li&gt;
&lt;li&gt;我相信就是在那时他抛弃了这个名字,改称伏地魔的,并开始调查以前被他轻视的他母亲的家史——你应该记得,他认为那个女人既然屈从于死亡这一人类的可耻弱点,就不可能是巫师。 &amp;raquo;&lt;/li&gt;
&lt;li&gt;Harry could not help but feel a resentful admiration for Voldemort’s complete lack of fear. &amp;raquo;&lt;/li&gt;
&lt;li&gt;哈利不禁对伏地魔的毫无畏惧感到一种恼火的钦佩。 &amp;raquo;&lt;/li&gt;
&lt;li&gt;“You are quite right — they can detect magic, but not the perpetrator: You will remember that you were blamed by the Ministry for the Hover Charm that was, in fact, cast by —” &amp;raquo;&lt;/li&gt;
&lt;li&gt;“你说得很对——他们能测出魔法,但测不出施魔法者:你还记得魔法部指控你施了悬停魔咒,而实际上是——” &amp;raquo;&lt;/li&gt;
&lt;li&gt;“The important things to remember when Apparating are the three D’s!”said Twycross. “Destination, Determination, Deliberation! &amp;raquo;&lt;/li&gt;
&lt;li&gt;“幻影显形时最重要的是要记住三个D!”泰克罗斯说,“即目标,决心,从容 !” &amp;raquo;&lt;/li&gt;
&lt;li&gt;“Half our family does seem to owe you their lives, now I stop and think about it,” Mr. Weasley said in a constricted voice. “Well, all I can say is that it was a lucky day for the Weasleys when Ron decided to sit in your compartment on the Hogwarts Express, Harry.” &amp;raquo;&lt;/li&gt;
&lt;li&gt;“还真是,现在想起来,我们家好像有一半人的命都是你救的。”韦斯莱先生说,他的嗓子眼有些发紧,“我只能说,罗恩在霍格沃茨特快列车上决定坐在你的车厢里,那真是幸运的一天,哈利。” &amp;raquo;&lt;/li&gt;
&lt;li&gt;“Ginny came in to visit while you were unconscious,” he said, after a long pause, and Harry’s imagination zoomed into overdrive, rapidly constructing a scene in which Ginny, weeping over his lifeless form, confessed her feelings of deep attraction to him while Ron gave them his blessing. … &amp;raquo;&lt;/li&gt;
&lt;li&gt;“你昏迷的时候金妮来过。”停了好长时间,他说。哈利的想象立刻超速运转起来,飞快构思出一幕画面——金妮对着他没有知觉的身体抽泣,表白着她对他深深的爱恋,罗恩为他们俩祝福…… &amp;raquo;&lt;/li&gt;
&lt;li&gt;“I see,” said Dumbledore eventually, peering at Harry over the top of his half-moon spectacles and giving Harry the usual sensation that he was being X-rayed. “And you feel that you have exerted your very best efforts in this matter, do you? That you have exercised all of your considerable ingenuity? That you have left no depth of cunning unplumbed in your quest to retrieve the memory?” &amp;raquo;&lt;/li&gt;
&lt;li&gt;“噢,”邓布利多从半月形的眼镜片上方盯着哈利,哈利又有一种被X光照射的感觉,“你觉得已经尽了最大努力,是吗?已经充分发挥了你的聪明才智?想尽了一切点子?” &amp;raquo;&lt;/li&gt;
&lt;li&gt;A hot, prickly feeling of shame spread from the top of Harry’s head all the way down his body. Dumbledore had not raised his voice, he did not even sound angry, but Harry would have preferred him to yell; this cold disappointment was worse than anything. &amp;raquo;&lt;/li&gt;
&lt;li&gt;一阵火辣辣的、针扎一般的羞耻感从哈利的头顶传遍全身。邓布利多没有提高嗓门,甚至话语中也没带怒气,但哈利宁愿他大吼大叫,这种冰冷的失望比什么都令人难受。 &amp;raquo;&lt;/li&gt;
&lt;li&gt;Silence fell between them again, the most uncomfortable silence Harry had ever experienced with Dumbledore; it seemed to go on and on, punctuated only by the little grunting snores of the portrait of Armando Dippet over Dumbledore’s head. Harry felt strangely diminished, as though he had shrunk a little since he had entered the room. &amp;raquo;&lt;/li&gt;
&lt;li&gt;两人又沉默了,这是哈利在邓布利多身边经历过的最难堪的沉默, 它似乎无休无止,只是时而被邓布利多头顶上阿芒多·迪佩特哼哼哧哧的鼾声打断。哈利有一种奇怪的渺小感,好像自己进屋后缩小了。 &amp;raquo;&lt;/li&gt;
&lt;li&gt;“I believe he had several reasons, though he confided none of them to Professor Dippet,” said Dumbledore. “Firstly, and very importantly, Voldemort was, I believe, more attached to this school than he has ever been to a person. Hogwarts was where he had been happiest; the first and only place he had felt at home.” &amp;raquo;&lt;/li&gt;
&lt;li&gt;“我相信他有好几条理由,尽管他一条也没有告诉迪佩特教授。”邓布利多说,“首先,很重要的一条是,伏地魔对这所学校比他对任何个人更有感情。霍格沃茨是他最开心的地方,是他感到像家的第一个也是惟一的地方。” &amp;raquo;&lt;/li&gt;
&lt;li&gt;“So Voldemort went off to Borgin and Burkes, and all the staff who had admired him said what a waste it was, a brilliant young wizard like that, working in a shop. However, Voldemort was no mere assistant. Polite and handsome and clever, he was soon given particular jobs of the type that only exist in a place like Borgin and Burkes, which specializes, as you know, Harry, in objects with unusual and powerful properties. Voldemort was sent to persuade people to part with their treasures for sale by the partners, and he was, by all accounts, unusually gifted at doing this.” &amp;raquo;&lt;/li&gt;
&lt;li&gt;“伏地魔去了博金-博克,所有欣赏他的教员都说可惜,那样一个才华出众的年轻巫师去当了店员。但伏地魔不只是店员。他因为彬彬有礼,英俊聪明,很快就得到了只有博金-博克这种地方才有的特殊工作。你知道,哈利,这家店专销有特异性能的物品。伏地魔被派去说服别人将宝物交给店里出售,据说,他对此事特别擅长。” &amp;raquo;&lt;/li&gt;
&lt;li&gt;“So, Tom … to what do I owe the pleasure?” &amp;raquo;&lt;/li&gt;
&lt;li&gt;“那么,汤姆……是什么风把你吹来的?” &amp;raquo;&lt;/li&gt;
&lt;li&gt;He raised his glass as though toasting Voldemort, whose face remained expressionless. Nevertheless, Harry felt the atmosphere in the room change subtly: Dumbledore’s refusal to use Voldemort’s chosen name was a refusal to allow Voldemort to dictate the terms of the meeting, and Harry could tell that Voldemort took it as such. &amp;raquo;&lt;/li&gt;
&lt;li&gt;他举起杯子,像要跟伏地魔干杯。伏地魔还是面无表情。但哈利感到屋里的气氛发生了微妙的变化:邓布利多拒绝用伏地魔选定的称呼, 是拒绝让伏地魔支配谈话。哈利看得出伏地魔也感觉到了。 &amp;raquo;&lt;/li&gt;
&lt;li&gt;Voldemort’s expression remained impassive as he said, “Greatness inspires envy, envy engenders spite, spite spawns lies. You must know this, Dumbledore.”“You call it ‘greatness,’ what you have been doing, do you?” asked Dumbledore delicately. &amp;raquo;&lt;/li&gt;
&lt;li&gt;伏地魔依然面无表情,说道:“伟大引起嫉妒,嫉妒导致怨毒,怨毒滋生谎言。这你一定了解,邓布利多。”“你把你的所作所为称为‘伟大’,是吗?”邓布利多优雅地问。 &amp;raquo;&lt;/li&gt;
&lt;li&gt;For the first time, Voldemort smiled. It was a taut leer, an evil thing, more threatening than a look of rage. &amp;raquo;&lt;/li&gt;
&lt;li&gt;伏地魔第一次笑了,那是一种睥睨的讥笑,邪恶的表情,比暴怒更加可怕。 &amp;raquo;&lt;/li&gt;
&lt;li&gt;“The old argument,” he said softly. “But nothing I have seen in the world has supported your famous pronouncements that love is more powerful than my kind of magic, Dumbledore.” &amp;raquo;&lt;/li&gt;
&lt;li&gt;“老论调,”他轻声说,“可是,邓布利多,我在世上所见没有一样能证明你那著名的观点:爱比我那种魔法更加强大。” &amp;raquo;&lt;/li&gt;
&lt;li&gt;Dumbledore set down his empty glass and drew himself up in his seat, the tips of his fingers together in a very characteristic gesture. &amp;raquo;&lt;/li&gt;
&lt;li&gt;邓布利多放下空杯子,坐直身子,双手指尖碰在一起,这是他惯有的姿势。 &amp;raquo;&lt;/li&gt;
&lt;li&gt;“No, nothing,” said Dumbledore, and a great sadness filled his face. “The time is long gone when I could frighten you with a burning wardrobe and force you to make repayment for your crimes. But I wish I could, Tom. … I wish I could. …” &amp;raquo;&lt;/li&gt;
&lt;li&gt;“没有了。”邓布利多说,脸上露出深深的悲哀,“我能用燃烧的衣柜吓住你,迫使你赎罪的时间早已过去。可我希望能,汤姆……我希望能……” &amp;raquo;&lt;/li&gt;
&lt;li&gt;Harry did not answer for a moment. Then, slowly but surely, an exhilarating sense of infinite opportunity stole through him; he felt as though he could have done anything, anything at all … and getting the memory from Slughorn seemed suddenly not only possible, but positively easy. … &amp;raquo;&lt;/li&gt;
&lt;li&gt;哈利一时没有回答,接着,慢慢地但是确确实实地,一种无比振奋的感觉流向全身,仿佛有无限的机会。他感到自己能做任何事,一切事……从斯拉格霍恩那里搞到记忆突然好像不仅可能,而且简直是轻而易举…… &amp;raquo;&lt;/li&gt;
&lt;li&gt;Slughorn raised a pudgy hand and pressed his shaking fingers to his mouth; he looked for a moment like an enormously overgrown baby. &amp;raquo;&lt;/li&gt;
&lt;li&gt;斯拉格霍恩举起胖手,把颤抖的手指按到嘴上,他一时看上去像个庞大的婴儿。 &amp;raquo;&lt;/li&gt;
&lt;li&gt;It was very well done, thought Harry, the hesitancy, the casual tone, the careful flattery, none of it overdone. He, Harry, had had too much experience of trying to wheedle information out of reluctant people not to recognize a master at work. He could tell that Riddle wanted the information very, very much; perhaps had been working toward this moment for weeks. &amp;raquo;&lt;/li&gt;
&lt;li&gt;恰到好处,哈利想,那种犹豫、不经意的语气,巧妙的恭维,一点儿都没有过火。哈利自己有过太多从不情愿的人嘴里套取信息的经历, 不会认不出一个行家。他看得出里德尔非常非常想要这个信息,也许为这一刻已经筹划了好几个星期。 &amp;raquo;&lt;/li&gt;
&lt;li&gt;“Well, you split your soul, you see,” said Slughorn, “and hide part of it in an object outside the body. Then, even if one’s body is attacked or destroyed, one cannot die, for part of the soul remains earthbound and undamaged. But of course, existence in such a form …” &amp;raquo;&lt;/li&gt;
&lt;li&gt;“就是说,你把你的灵魂分裂开,”斯拉格霍恩说,“将一部分藏在身体外的某个物体中。这样,即使你的身体遭到袭击或摧毁,你也死不了,因为还有一部分灵魂留在世间,未受损害。但是,当然,以这种形式存在……” &amp;raquo;&lt;/li&gt;
&lt;li&gt;“By an act of evil — the supreme act of evil. By committing murder. Killing rips the soul apart. The wizard intent upon creating a Horcrux would use the damage to his advantage: He would encase the torn portion —” &amp;raquo;&lt;/li&gt;
&lt;li&gt;“通过邪恶的行为——最邪恶的行为,通过谋杀。杀人会使灵魂分裂,想要制造魂器的巫师则利用这种破坏,把分裂出的灵魂碎片封存——” &amp;raquo;&lt;/li&gt;
&lt;li&gt;Yet it fitted: Lord Voldemort has seemed to grow less human with the passing years, and the transformation he has undergone seemed to me to be only explicable if his soul was mutilated beyond the realms of what we might call ‘usual evil’ &amp;raquo;&lt;/li&gt;
&lt;li&gt;种种迹象都很吻合——这些年来伏地魔似乎变得越来越不像人,我想那种变形只能解释为,他的灵魂受到的破坏超出了我们所说的一般邪恶的范围…… &amp;raquo;&lt;/li&gt;
&lt;li&gt;“So,” said Harry, “the diary’s gone, the ring’s gone. The cup, the locket, and the snake are still intact, and you think there might be a Horcrux that was once Ravenclaw’s or Gryffindor’s?” &amp;raquo;&lt;/li&gt;
&lt;li&gt;“那,日记毁了,戒指毁了,杯子、挂坠盒和蛇还在,你认为还有一个魂器可能是拉文克劳或格兰芬多的遗物?” &amp;raquo;&lt;/li&gt;
&lt;li&gt;“I know!” said Harry impatiently. “I can love!” It was only with difficulty that he stopped himself adding, “Big deal!”“Yes, Harry, you can love,” said Dumbledore, who looked as though he knew perfectly well what Harry had just refrained from saying. “Which, given everything that has happened to you, is a great and remarkable thing. You are still too young to understand how unusual you are, Harry.” &amp;raquo;&lt;/li&gt;
&lt;li&gt;“我知道!”哈利不耐烦地说,“我有爱!”他好容易才没有加上:“有什么了不起!”“是的,哈利,你有爱,”邓布利多好像十分了解哈利舌头底下压着的话,“想想你经历的一切,这是非常了不起的。你还太年轻,不知道你是多么特殊,哈利。” &amp;raquo;&lt;/li&gt;
&lt;li&gt;“Yes — just love,” said Dumbledore. “But Harry, never forget that what the prophecy says is only significant because Voldemort made it so. I told you this at the end of last year. Voldemort singled you out as the person who would be most dangerous to him — and in doing so, he made you the person who would be most dangerous to him!” &amp;raquo;&lt;/li&gt;
&lt;li&gt;“对——就是爱。”邓布利多说,“但是哈利,永远不要忘记,预言的意义只是伏地魔造成的。我去年年底跟你讲过这一点。伏地魔把你当成对他最危险的人——而这样一来,他就使你变成了对他最危险的人!” &amp;raquo;&lt;/li&gt;
&lt;li&gt;“Harry, Harry, only because Voldemort made a grave error, and acted on Professor Trelawney’s words! If Voldemort had never murdered your father, would he have imparted in you a furious desire for revenge? Of course not! If he had not forced your mother to die for you, would he have given you a magical protection he could not penetrate? Of course not, Harry! Don’t you see? Voldemort himself created his worst enemy, just as tyrants everywhere do! Have you any idea how much tyrants fear the people they oppress? All of them realize that, one day, amongst their many victims, there is sure to be one who rises against them and strikes back! Voldemort is no different! Always he was on the lookout for the one who would challenge him. He heard the prophecy and he leapt into action, with the result that he not only handpicked the man most likely to finish him, he handed him uniquely deadly weapons!” &amp;raquo;&lt;/li&gt;
&lt;li&gt;“哈利呀,哈利,那只是因为伏地魔犯了个大错误,他按特里劳妮教授的预言采取了行动!如果伏地魔没有杀死你父亲,会让你产生强烈的复仇欲望吗?当然不会!如果他没有逼你母亲为你而死,会让你得到他无法穿透的魔法保护吗?当然不会!哈利。你看不到吗?伏地魔自己制造了他最可怕的敌人,就像普天下的暴君一样!你知道暴君多么害怕被压迫的人民吗?他们都知道总有一天,在众多受害者中会有一个起来奋起反击!伏地魔也一样。他总是在寻找那个会向他挑战的人,听到预言后就马上行动,结果他不仅亲手选出了那个最有可能除掉他的人,而且给了他一件特别致命的武器!” &amp;raquo;&lt;/li&gt;
&lt;li&gt;“It is essential that you understand this!” said Dumbledore, standing up and striding about the room, his glittering robes swooshing in his wake; Harry had never seen him so agitated. “By attempting to kill you, Voldemort himself singled out the remarkable person who sits here in front of me, and gave him the tools for the job! It is Voldemort’s fault that you were able to see into his thoughts, his ambitions, that you even understand the snakelike language in which he gives orders, and yet, Harry, despite your privileged insight into Voldemort’s world (which, incidentally, is a gift any Death Eater would kill to have), you have never been seduced by the Dark Arts, never, even for a second, shown the slightest desire to become one of Voldemort’s followers!” &amp;raquo;&lt;/li&gt;
&lt;li&gt;“你必须明白这一点!”邓布利多站了起来,在屋子里大步地走来走去,闪亮的袍子在身后呼呼飘动。哈利还从没见他这么激动过,“在企图杀你的时候,伏地魔就亲自选出了坐在我面前的这个卓越的人,并为他提供了工具!你能看到伏地魔的思想、野心,甚至能听懂他发令时那蛇说话般的语言,这都只能怪他自己。可是,哈利,尽管你能洞察伏地魔的世界——要知道,这是任何食死徒不惜用杀人来换取的能力,但你却从未接受黑魔法的诱惑,从未显露过丝毫想要追随伏地魔的欲望,一秒钟都没有!” &amp;raquo;&lt;/li&gt;
&lt;li&gt;“You are protected, in short, by your ability to love!” said Dumbledore loudly. “The only protection that can possibly work against the lure of power like Voldemort’s! In spite of all the temptation you have endured, all the suffering, you remain pure of heart, just as pure as you were at the age of eleven, when you stared into a mirror that reflected your heart’s desire, and it showed you only the way to thwart Lord Voldemort, and not immortality or riches. Harry, have you any idea how few wizards could have seen what you saw in that mirror? Voldemort should have known then what he was dealing with, but he did not! “But he knows it now. You have flitted into Lord Voldemort’s mind without damage to yourself, but he cannot possess you without enduring mortal agony, as he discovered in the Ministry. I do not think he understands why, Harry, but then, he was in such a hurry to mutilate his own soul, he never paused to understand the incomparable power of a soul that is untarnished and whole.” &amp;raquo;&lt;/li&gt;
&lt;li&gt;“简而言之,是你的爱保护了你!”邓布利多大声说,“惟有这种保护,才有可能抵御伏地魔那样的权力的诱惑!虽然经历了那么多诱惑, 那么多痛苦,你依然心地纯洁,还像你十一岁时那样。当时你向那面能照出你内心愿望的镜子中望去,看到的只有怎样挫败伏地魔,而没有永生和财富。哈利,你知不知道,世上没有几个巫师能看到你在镜中看到的东西?伏地魔那时就该知道他要对付的是什么,可惜他没有! “但他现在知道了。你侵入了伏地魔的思想而不受损害,他想附在你身上时却不能不忍受剧烈的痛苦,他在部里已经发现了这一点。但我想他不了解这是为什么,哈利。他那样忙于破坏自己的灵魂,从来无暇去了解一个纯洁健全的灵魂拥有何等无与伦比的力量。” &amp;raquo;&lt;/li&gt;
&lt;li&gt;Harry watched Dumbledore striding up and down in front of him, and thought. He thought of his mother, his father, and Sirius. He thought of Cedric Diggory. He thought of all the terrible deeds he knew Lord Voldemort had done. A flame seemed to leap inside his chest, searing his throat. &amp;raquo;&lt;/li&gt;
&lt;li&gt;看着面前踱来踱去的邓布利多,哈利沉思起来。他想到了他的母亲、他的父亲和小天狼星,想到了塞德里克,想到了伏地魔的种种罪行。他的胸中腾起一股烈焰,直烧到喉咙口。 &amp;raquo;&lt;/li&gt;
&lt;li&gt;“Of course you would!” cried Dumbledore. “You see, the prophecy does not mean you have to do anything! But the prophecy caused Lord Voldemort to mark you as his equal. … In other words, you are free to choose your way, quite free to turn your back on the prophecy! But Voldemort continues to set store by the prophecy. He will continue to hunt you … which makes it certain, really, that —” &amp;raquo;&lt;/li&gt;
&lt;li&gt;“你当然会!”邓布利多叫道,“你看,预言并没表示你必须做什么!但预言使伏地魔认定你是他的对手……换句话说,你有权选择自己的道路,有权不理睬那个预言!但伏地魔还是会对它念念不忘,他会继续追杀你……所以确实是必然——” &amp;raquo;&lt;/li&gt;
&lt;li&gt;But he understood at last what Dumbledore had been trying to tell him. It was, he thought, the difference between being dragged into the arena to face a battle to the death and walking into the arena with your head held high. Some people, perhaps, would say that there was little to choose between the two ways, but Dumbledore knew — and so do I, thought Harry, with a rush of fierce pride, and so did my parents — that there was all the difference in the world. &amp;raquo;&lt;/li&gt;
&lt;li&gt;他终于明白了邓布利多要告诉他的意思,那就是:被拽进角斗场去面对一场殊死搏斗和自己昂首走进去是不同的。也许有人会说这二者之间并无多少不同,但邓布利多知道——我也知道,哈利带着一阵强烈的自豪感想道,我父母也知道——这是世界上全部的不同。 &amp;raquo;&lt;/li&gt;
&lt;li&gt;“Coward,” said Hermione, though she looked amused. “Well, it was a bad night for romance all around. Ginny and Dean split up too, Harry.” &amp;raquo;&lt;/li&gt;
&lt;li&gt;“懦夫,”赫敏说道,不过看上去挺愉快的,“哎,昨晚好像罗曼司普遍不利,金妮和迪安也分手了,哈利。” &amp;raquo;&lt;/li&gt;
&lt;li&gt;. And to complicate matters, he had the nagging worry that if he didn’t do it, somebody else was sure to ask Ginny out soon: He and Ron were at least agreed on the fact that she was too popular for her own good. &amp;raquo;&lt;/li&gt;
&lt;li&gt;更麻烦的是,他焦虑地想到如果自己不采取行动,肯定很快就会有别人约会金妮了。他和罗恩至少在这一点上看法是一致的:金妮太招人喜欢了,这对她本人没好处。 &amp;raquo;&lt;/li&gt;
&lt;li&gt;Harry and Ron stared: Hermione and Ginny, who had always got on together very well, were now sitting with their arms folded, glaring in opposite directions. Ron looked nervously at Harry, then snatched up a book at random and hid behind it. Harry, however, little though he knew he deserved it, felt unbelievably cheerful all of a sudden, even though none of them spoke again for the rest of the evening. &amp;raquo;&lt;/li&gt;
&lt;li&gt;哈利和罗恩目瞪口呆——向来关系很好的赫敏和金妮现在都抱着胳膊坐在那里,眼睛瞪着相反的方向。罗恩不安地看看哈利,然后随手抓起一本书,躲到书后面去了。哈利虽然知道自己不配,却还是突然感到难以置信的快乐,尽管他们一晚上都没有再说话。 &amp;raquo;&lt;/li&gt;
&lt;li&gt;Harry looked around; there was Ginny running toward him; she had a hard, blazing look in her face as she threw her arms around him. And without thinking, without planning it, without worrying about the fact that fifty people were watching, Harry kissed her. &amp;raquo;&lt;/li&gt;
&lt;li&gt;哈利看看周围,金妮向他奔来,她张开双臂抱住了他,脸上是一种炽烈的表情。于是,没有想,没有准备,没有担心有五十个人在看着, 哈利吻了她。 &amp;raquo;&lt;/li&gt;
&lt;li&gt;After several long moments — or it might have been half an hour — or possibly several sunlit days — they broke apart. The room had gone very quiet. Then several people wolf-whistled and there was an outbreak of nervous giggling. Harry looked over the top of Ginny’s head to see Dean Thomas holding a shattered glass in his hand, and Romilda Vane looking as though she might throw something. Hermione was beaming, but Harry’s eyes sought Ron. At last he found him, still clutching the Cup and wearing an expression appropriate to having been clubbed over the head. For a fraction of a second they looked at each other, then Ron gave a tiny jerk of the head that Harry understood to mean, Well — if you must. &amp;raquo;&lt;/li&gt;
&lt;li&gt;过了长长的几分钟——也可能有半个小时——或阳光灿烂的几天——他们才分开了。屋里变得非常安静。然后有几个人吹起了口哨,有人不自然地吃吃笑了起来。哈利越过金妮的头顶,看到迪安手里举着一个破杯子,罗米达·万尼好像要摔东西,赫敏在笑,但哈利的眼睛在寻找罗恩,终于找到了,他还攥着奖杯,看上去像当头挨了一棍似的。两人对视了片刻,罗恩的脑袋微微动了一下,哈利知道那意思是:“好吧——如果你一定要。” &amp;raquo;&lt;/li&gt;
&lt;li&gt;“Enough,” said Dumbledore. He said it quite calmly, and yet Harry fell silent at once; he knew that he had finally crossed some invisible line. “Do you think that I have once left the school unprotected during my absences this year? I have not. Tonight, when I leave, there will again be additional protection in place. Please do not suggest that I do not take the safety of my students seriously, Harry.” &amp;raquo;&lt;/li&gt;
&lt;li&gt;“够了。”邓布利多说。虽然他说得极其平静,但是哈利马上沉默下来,因为他知道自己最终越过了一道看不见的底线,“你以为今年我有哪次是毫无保护措施就离开学校的吗?我还没有过。今晚,当我离开时,各处将会有额外的防御措施。请不要认为我没有认真对待我的学生们的安全,哈利。” &amp;raquo;&lt;/li&gt;
&lt;li&gt;Harry could smell salt and hear rushing waves; a light, chilly breeze ruffled his hair as he looked out at moonlit sea and star-strewn sky. He was standing upon a high outcrop of dark rock, water foaming and churning below him. He glanced over his shoulder. A towering cliff stood behind them, a sheer drop, black and faceless. A few large chunks of rock, such as the one upon which Harry and Dumbledore were standing, looked as though they had broken away from the cliff face at some point in the past. It was a bleak, harsh view, the sea and the rock unrelieved by any tree or sweep of grass or sand. &amp;raquo;&lt;/li&gt;
&lt;li&gt;哈利可以闻到大海的气味,听见波涛汹涌的声音。他望着远处月光下的大海和繁星点点的夜空,一阵寒冷的微风吹拂着他的头发。他站在一块露出海面的高高的黑色岩石上,海浪在他脚下翻滚,泛起泡沫。他扭头朝后望去。身后耸立着一座悬崖,陡峭的岩壁直落而下,黑糊糊的看不清面目。几块很大的岩石,如哈利和邓布利多站着的这块,似乎是过去某个时候从悬崖的正面脱落下来的。四下里光秃秃的,满目荒凉, 除了苍茫的大海和岩石,看不见一棵树,也没有草地和沙滩。 &amp;raquo;&lt;/li&gt;
&lt;li&gt;“Lumos,” said Dumbledore, as he reached the boulder closest to the cliff face. A thousand flecks of golden light sparkled upon the dark surface of the water a few feet below where he crouched; the black wall of rock beside him was illuminated too. &amp;raquo;&lt;/li&gt;
&lt;li&gt;“荧光闪烁!”邓布利多下到最靠近悬崖正面的那块巨型卵石上,蹲下身念了句咒语。星星点点的金光在他身下几英尺处的黝黑海面上闪烁着。他身边那道漆黑的岩壁也被照亮了。 &amp;raquo;&lt;/li&gt;
&lt;li&gt;Harry did not ask how Dumbledore knew. He had never seen a wizard work things out like this, simply by looking and touching; but Harry had long since learned that bangs and smoke were more often the marks of ineptitude than expertise. &amp;raquo;&lt;/li&gt;
&lt;li&gt;哈利没有问邓布利多是怎么知道的。他从没见过哪个巫师这样解决难题:只用眼睛看,用手摸。不过哈利早就知道,弄得乒乒乓乓、烟雾大作的,通常是水平较低的人的特点,而不是高手的做派。 &amp;raquo;&lt;/li&gt;
&lt;li&gt;Once again, Lord Voldemort fails to grasp that there are much more terrible things than physical injury. &amp;raquo;&lt;/li&gt;
&lt;li&gt;伏地魔又一次没能理解,有许多东西比肉体的伤害更可怕得多。 &amp;raquo;&lt;/li&gt;
&lt;li&gt;“I am not worried, Harry,” said Dumbledore, his voice a little stronger despite the freezing water. “I am with you.” &amp;raquo;&lt;/li&gt;
&lt;li&gt;“我不担心,哈利,”邓布利多说,尽管海水寒冷刺骨,他的声音却多了一点儿气力,“我和你在一起呢。” &amp;raquo;&lt;/li&gt;
&lt;li&gt;“Yes, I do,” said Dumbledore, and Harry saw his feet slide a little on the floor as he struggled to remain upright. “But as for being about to kill me, Draco, you have had several long minutes now, we are quite alone, I am more defenseless than you can have dreamed of finding me, and still you have not acted. …” &amp;raquo;&lt;/li&gt;
&lt;li&gt;“是的,我很在意。”邓布利多说,这时哈利看见他双脚在地面上打了一个滑,使劲撑着不让自己瘫倒,“至于你要取我性命的事,德拉科,已经过去好几分钟了。周围没有别人,我现在手无寸铁,你做梦也不会想到有这样的好机会,可你还是没有动手……” &amp;raquo;&lt;/li&gt;
&lt;li&gt;The sound frightened Harry beyond anything he had experienced all evening. For the first time, Dumbledore was pleading. &amp;raquo;&lt;/li&gt;
&lt;li&gt;这声音比哈利整晚经历的任何事情都叫他害怕。邓布利多在哀求, 这可是破天荒的第一次。 &amp;raquo;&lt;/li&gt;
&lt;li&gt;A jet of green light shot from the end of Snape’s wand and hit Dumbledore squarely in the chest. Harry’s scream of horror never left him; silent and unmoving, he was forced to watch as Dumbledore was blasted into the air. For a split second, he seemed to hang suspended beneath the shining skull, and then he fell slowly backward, like a great rag doll, over the battlements and out of sight. &amp;raquo;&lt;/li&gt;
&lt;li&gt;斯内普的魔杖尖上射出一道绿光,不偏不倚地击中了邓布利多的胸膛。哈利惊恐的尖叫声被憋在了喉咙里,他发不出声音,也动弹不得, 只能眼睁睁地望着邓布利多被击到空中。邓布利多似乎在那闪亮的骷髅下停留了一秒钟,然后像一个破烂的大玩偶似的,慢慢地仰面倒下去, 从围墙的垛口上栽下去不见了。 &amp;raquo;&lt;/li&gt;
&lt;li&gt;And he slashed at the air: Harry felt a white-hot, whiplike something hit him across the face and was slammed backward into the ground. Spots of light burst in front of his eyes and for a moment all the breath seemed to have gone from his body, then he heard a rush of wings above him and something enormous obscured the stars. Buckbeak had flown at Snape, who staggered backward as the razor-sharp claws slashed at him. As Harry raised himself into a sitting position, his head still swimming from its last contact with the ground, he saw Snape running as hard as he could, the enormous beast flapping behind him and screeching as Harry had never heard him screech — &amp;raquo;&lt;/li&gt;
&lt;li&gt;斯内普猛烈地抽打着空气。哈利感到有种白热的、像鞭子一样的东西打在脸上。他被重重地抽倒在地上,满眼冒着金星,有一阵子好像停止了呼吸。就在这时,他听见一阵翅膀的扑棱声,巨大的影子遮住了天空中的星星。巴克比克已经飞到了斯内普的头上,刀一样锋利的爪子抓得斯内普连连后退。哈利坐了起来,刚才撞到地上的脑袋还眩晕着,只见斯内普拼命奔跑着,巨大的巴克比克拍着翅膀在后面紧追不放,发出一种哈利从未听过的尖厉吼叫—— &amp;raquo;&lt;/li&gt;
&lt;li&gt;Harry felt a searing pain in his stomach at the sound of the name. In the silence and the stillness, horror rose inside him. &amp;raquo;&lt;/li&gt;
&lt;li&gt;一听到邓布利多的名字,哈利的胃里一阵剧烈的灼痛。沉默和寂静中,恐惧感在体内增长。 &amp;raquo;&lt;/li&gt;
&lt;li&gt;Harry did not attempt to argue or explain. He was still shaking uncontrollably. Hagrid would find out soon enough, too soon. … As they directed their steps back toward the castle, Harry saw that many of its windows were lit now. He could imagine, clearly, the scenes inside as people moved from room to room, telling each other that Death Eaters had got in, that the Mark was shining over Hogwarts, that somebody must have been killed. … &amp;raquo;&lt;/li&gt;
&lt;li&gt;哈利也不再试图争辩或解释了。他仍然不由自主地瑟瑟发抖。海格很快就会知道的……当他们朝城堡走去时,哈利见到许多窗子里的灯都亮了。他可以清楚地想象里面的情景,大家奔走相告,描述食死徒刚刚进来的情景,黑魔标记闪耀在霍格沃茨魔法学校的上空,一定有人被杀了…… &amp;raquo;&lt;/li&gt;
&lt;li&gt;Harry heard Hagrid’s moan of pain and shock, but he did not stop; he walked slowly forward until he reached the place where Dumbledore lay and crouched down beside him. He had known there was no hope from the moment that the full Body-Bind Curse Dumbledore had placed upon him lifted, known that it could have happened only because its caster was dead, but there was still no preparation for seeing him here, spread-eagled, broken: the greatest wizard Harry had ever, or would ever, meet. &amp;raquo;&lt;/li&gt;
&lt;li&gt;哈利听见了海格痛苦和震惊的呻吟声,但他没有停住脚步,继续慢慢地向前移动,直到他走到邓布利多躺着的地方,蹲在他的身旁。 当邓布利多施在他身上的全身束缚咒解开后,哈利就知道没有希望了,如果施魔咒的人不死,魔咒是不会自然解开的。但是哈利仍没有心理准备见到眼前这一幕:他今生今世遇到的、也许以后再也遇不到的最好的巫师,四肢摊开,手脚折断,横躺在眼前。 &amp;raquo;&lt;/li&gt;
&lt;li&gt;Dumbledore’s eyes were closed; but for the strange angle of his arms and legs, he might have been sleeping. Harry reached out, straightened the half- moon spectacles upon the crooked nose, and wiped a trickle of blood from the mouth with his own sleeve. Then he gazed down at the wise old face and tried to absorb the enormous and incomprehensible truth: that never again would Dumbledore speak to him, never again could he help. … &amp;raquo;&lt;/li&gt;
&lt;li&gt;邓布利多双眼紧闭,从他四肢摊开的角度看起来像是在熟睡。哈利伸手扶正那鹰钩鼻上的半月形眼镜,用自己的袖子擦了一下他嘴角的血痕,然后低头凝视着那张充满智慧的苍老的脸庞,努力地去面对这个难以接受的事实:邓布利多再也不会对他说什么了,再也不可能帮他什么了…… &amp;raquo;&lt;/li&gt;
&lt;li&gt;A much smaller and warmer hand had enclosed his and was pulling him upward. He obeyed its pressure without really thinking about it. Only as he walked blindly back through the crowd did he realize, from a trace of flowery scent on the air, that it was Ginny who was leading him back into the castle. Incomprehensible voices battered him, sobs and shouts and wails stabbed the night, but Harry and Ginny walked on, back up the steps into the entrance hall. Faces swam on the edges of Harry’s vision, people were peering at him, whispering, wondering, and Gryffindor rubies glistened on the floor like drops of blood as they made their way toward the marble staircase. &amp;raquo;&lt;/li&gt;
&lt;li&gt;一只小了许多的、更加温暖的手握住了哈利的手,把他向上拉着。 哈利糊里糊涂地顺势站了起来,直到他茫然地穿过人群,从空气中飘来了一丝花香,这才意识到是金妮一直在拉着他往城堡里走。听不清楚的话语从四面传来,抽泣、叫喊和哀号划破了夜空,但哈利和金妮继续向前,走上台阶,进入门厅。一张张面孔在哈利视线边缘晃动,人们盯着他,窃窃私语,惊愕迷茫。他们向大理石楼梯走去,格兰芬多的红宝石散落在地上,闪耀着血滴一样的红光。 &amp;raquo;&lt;/li&gt;
&lt;li&gt;Gulping, Madam Pomfrey pressed her fingers to her mouth, her eyes wide. Somewhere out in the darkness, a phoenix was singing in a way Harry had never heard before: a stricken lament of terrible beauty. And Harry felt, as he had felt about phoenix song before, that the music was inside him, not without: It was his own grief turned magically to song that echoed across the grounds and through the castle windows. &amp;raquo;&lt;/li&gt;
&lt;li&gt;庞弗雷夫人用手捂住嘴,咽着泪水,眼睛睁得大大的。在外面黑暗中的某个地方,凤凰正在用哈利从未听过的方式唱着令人动容的凄婉挽歌。像以前听凤凰的歌声一样,哈利感觉到这首挽歌的曲子是在他的脑海里,而不是在现实中,仿佛是他自己的悲伤化作了挽歌,在校园里和城堡的窗户间回荡。 &amp;raquo;&lt;/li&gt;
&lt;li&gt;“You thought I would not weesh to marry him? Or per’aps, you hoped?”said Fleur, her nostrils flaring. “What do I care how he looks? I am good- looking enough for both of us, I theenk! All these scars show is zat my husband is brave! And I shall do zat!” she added fiercely, pushing Mrs. Weasley aside and snatching the ointment from her. &amp;raquo;&lt;/li&gt;
&lt;li&gt;“你认为我会不想和他结婚?或者你希望我不想和他结婚?”芙蓉说,鼻翼翕动,“我只是在乎他的长相吗?我认为我一个人的美貌对我们俩来说已经足够了!所有这些伤疤说明我的丈夫是勇敢的!我来!”她气势汹汹地加了一句,一边推开韦斯莱太太,从她手中抢过药膏。 &amp;raquo;&lt;/li&gt;
&lt;li&gt;And then, Harry did not quite see how it happened, both women were crying and hugging each other. Completely bewildered, wondering whether the world had gone mad, he turned around: Ron looked as stunned as he felt and Ginny and Hermione were exchanging startled looks. &amp;raquo;&lt;/li&gt;
&lt;li&gt;突然,哈利还没有反应过来是怎么回事——两个女人抱头痛哭。哈利被彻底搞糊涂了,转过身去,怀疑这个世界是不是疯了。罗恩看起来和哈利一样惊讶。金妮和赫敏也在交换着惊讶的眼神。 &amp;raquo;&lt;/li&gt;
&lt;li&gt;“Dumbledore would have been happier than anybody to think that there was a little more love in the world,” said Professor McGonagall curtly, just as the hospital doors opened again and Hagrid walked in. &amp;raquo;&lt;/li&gt;
&lt;li&gt;“如果这个世界拥有更多的爱,邓布利多会比任何人都更高兴。”麦格教授简短地说,这时门又开了,海格走了进来。 &amp;raquo;&lt;/li&gt;
&lt;li&gt;And he knew, without knowing how he knew it, that the phoenix had gone, had left Hogwarts for good, just as Dumbledore had left the school, had left the world … had left Harry. &amp;raquo;&lt;/li&gt;
&lt;li&gt;他知道——虽然搞不清为什么会知道——凤凰已经走了,永远地离开了霍格沃茨,像邓布利多一样永远地离开了学校,离开了这个世界……离开了哈利。 &amp;raquo;&lt;/li&gt;
&lt;li&gt;An extraordinary assortment of people had already settled into half of the chairs; shabby and smart, old and young. Most Harry did not recognize, but a few he did, including members of the Order of the Phoenix: Kingsley Shacklebolt; Mad-Eye Moody; Tonks, her hair miraculously returned to vividest pink; Remus Lupin, with whom she seemed to be holding hands; Mr. and Mrs. Weasley; Bill supported by Fleur and followed by Fred and George, who were wearing jackets of black dragon skin. Then there was Madame Maxime, who took up two and a half chairs on her own; Tom, the landlord of the Leaky Cauldron in London; Arabella Figg, Harry’s Squib neighbor; the hairy bass player from the Wizarding group the Weird Sisters; Ernie Prang, driver of the Knight Bus; Madam Malkin, of the robe shop in Diagon Alley; and some people whom Harry merely knew by sight, such as the barman of the Hog’s Head and the witch who pushed the trolley on the Hogwarts Express. The castle ghosts were there too, barely visible in the bright sunlight, discernible only when they moved, shimmering insubstantially on the gleaming air. &amp;raquo;&lt;/li&gt;
&lt;li&gt;一半椅子上已经坐了人,这些人各式各样,鱼龙混杂:有衣衫褴褛的,也有整洁体面的;有老年人,也有年轻人。大多数人哈利都不认识,但有一些他是知道的,其中包括凤凰社的成员:金斯莱·沙克尔, 疯眼汉穆迪,唐克斯——她的头发又奇迹般地变成了耀眼的粉红色,莱姆斯·卢平——唐克斯跟他手拉着手,韦斯莱夫妇,还有芙蓉搀扶着比尔,后面跟着穿黑色火龙皮夹克衫的弗雷德和乔治。此外还有马克西姆夫人——她一个人就占了两把半椅子,破釜酒吧的老板汤姆,哈利的哑炮邻居阿拉贝拉·费格,古怪姐妹演唱组里那位毛发粗重的低音提琴手,骑士公共汽车驾驶员厄恩·普兰,对角巷长袍专卖店的摩金夫人, 还有几个人哈利只是看着面熟,如猪头酒吧的那个服务员,霍格沃茨特快列车上推小车的女巫。城堡里的幽灵也来了,在阳光下几乎看不见他们,只有走动时才能辨认出来,在明亮的空气中闪烁着虚幻的光芒。 &amp;raquo;&lt;/li&gt;
&lt;li&gt;She met Harry’s gaze with the same hard, blazing look that he had seen when she had hugged him after winning the Quidditch Cup in his absence, and he knew that at that moment they understood each other perfectly, and that when he told her what he was going to do now, she would not say, “Be careful,” or “Don’t do it,” but accept his decision, because she would not have expected anything less of him. And so he steeled himself to say what he had known he must say ever since Dumbledore had died. &amp;raquo;&lt;/li&gt;
&lt;li&gt;但金妮已经不哭了,她迎着哈利的目光,神情刚毅而热烈,就像哈利缺席的那天球队赢得魁地奇杯后她拥抱哈利的时候那样。在那一刻,哈利知道他们彼此心心相印,知道当他把他要做的事情告诉她时,她不会说“你要小心”或“你别去做”, 而是会欣然接受他的决定,因为她从心底里知道他就是那样一个人。于是,他咬咬牙,说出了自从邓布利多死后他就知道非说不可的话。 &amp;raquo;&lt;/li&gt;
&lt;li&gt;Harry looked at him, startled; the idea that anything as normal as a wedding could still exist seemed incredible and yet wonderful. &amp;raquo;&lt;/li&gt;
&lt;li&gt;哈利不胜惊讶地望着他。世界上仍然存在婚礼这样平凡的事情,真是令人不可思议,同时也令人感到美妙无比。 &amp;raquo;&lt;/li&gt;
&lt;li&gt;His hand closed automatically around the fake Horcrux, but in spite of everything, in spite of the dark and twisting path he saw stretching ahead for himself, in spite of the final meeting with Voldemort he knew must come, whether in a month, in a year, or in ten, he felt his heart lift at the thought that there was still one last golden day of peace left to enjoy with Ron and Hermione. &amp;raquo;&lt;/li&gt;
&lt;li&gt;他的手不由自主地握紧了那个假魂器,尽管种种的一切,尽管等待他的是一条漆黑而曲折的道路,尽管他知道最后——不管是一个月、一年、或是十年之后——他肯定要跟伏地魔面对面地较量,可是想到他仍然可以和罗恩、赫敏一起享受最后一个黄金般的平静日子,他就感到心情无比的愉快。 &amp;raquo;&lt;/li&gt;
&lt;/ol&gt;</description>
    </item>
    <item>
      <title>[摘录] 哈利 · 波特 与密室（1998）</title>
      <link>https://frytea.com/archives/173/</link>
      <pubDate>Sun, 03 Nov 2019 08:51:00 +0000</pubDate>
      <guid>https://frytea.com/archives/173/</guid>
      <description>&lt;ol&gt;
&lt;li&gt;I think I’d better do the actual stealing &amp;raquo;&lt;/li&gt;
&lt;li&gt;我们需要声东击西 &amp;raquo;&lt;/li&gt;
&lt;li&gt;Fascinating creatures, phoenixes. They can carry immensely heavy loads, their tears have healing powers, and they make highly faithful pets.” &amp;raquo;&lt;/li&gt;
&lt;li&gt;凤凰真是十分奇特迷人的生命。它们能携带极为沉重的东西，它们的眼泪具有疗伤的作用，而且它们还是特别忠诚的宠物。” &amp;raquo;&lt;/li&gt;
&lt;li&gt;“Not the way Lockhart teaches it,” said Ron. “I haven’t learned anything from him except not to set pixies loose.” &amp;raquo;&lt;/li&gt;
&lt;li&gt;“像洛哈特那种教法，我看未必。”罗恩说，“除了不要把小精灵放出来，我没有从他那里学到任何东西。” &amp;raquo;&lt;/li&gt;
&lt;li&gt;“Because that’s what Hermione does,” said Ron, shrugging. “When in doubt, go to the library.” &amp;raquo;&lt;/li&gt;
&lt;li&gt;因为这就是赫敏的作风，”罗恩说着，耸了耸肩膀，“一有疑问，就上图书馆。” &amp;raquo;&lt;/li&gt;
&lt;li&gt;you will find that I will only truly have left this school when none here are loyal to me. You will also find that help will always be given at Hogwarts to those who ask for it.” &amp;raquo;&lt;/li&gt;
&lt;li&gt;只有当这里的人都背叛我的时候，我才算真正离开了这所学校。你们还会发现，在霍格沃茨，那些请求帮助的人总是能得到帮助的。” &amp;raquo;&lt;/li&gt;
&lt;li&gt;Of the many fearsome beasts and monsters that roam our land, there is none more curious or more deadly than the Basilisk, known also as the King of Serpents. This snake, which may reach gigantic size and live many hundreds of years, is born from a chicken’s egg, hatched beneath a toad. Its methods of killing are most wondrous, for aside from its deadly and venomous fangs, the Basilisk has a murderous stare, and all who are fixed with the beam of its eye shall suffer instant death. Spiders flee before the Basilisk, for it is their mortal enemy, and the Basilisk flees only from the crowing of the rooster, which is fatal to it. &amp;raquo;&lt;/li&gt;
&lt;li&gt;在我们国家，游荡着许多可怕的野兽和怪物，其中最离奇、最具有杀伤力的莫过于蛇怪，又被称为蛇王。这种蛇的体积可以变得十分巨大，通常能活好几百年，它是从一只公鸡蛋里、由一只癞蛤蟆孵出的。它杀人的方式十分惊人，除了它致命的毒牙外，蛇怪的瞪视也能致人死亡，任何人只要被它的目光盯住，就会立刻丧命。蜘蛛看到蛇怪就会逃跑，因为蛇怪是蜘蛛的死敌，而蛇怪只有听见公鸡的叫声才会仓皇逃命，因为公鸡的叫声对它来说也是致命的。 &amp;raquo;&lt;/li&gt;
&lt;li&gt;Harry could see the sun sinking, blood-red, below the skyline. This was the worst he had ever felt. If only there was something they could do. Anything. &amp;raquo;&lt;/li&gt;
&lt;li&gt;哈利可以看见太阳红得像血一样，渐渐沉落到地平线以下。他心里从来没有像现在这样难过。哪怕他们能够做点什么也好啊，不管是什么。 &amp;raquo;&lt;/li&gt;
&lt;li&gt;— I fashioned myself a new name, a name I knew wizards everywhere would one day fear to speak, when I had become the greatest sorcerer in the world!” &amp;raquo;&lt;/li&gt;
&lt;li&gt;我给自己想出了一个新的名字，我知道有朝一日，当我成为世界上最伟大的魔法师时，各地的巫师都不敢轻易说出这个名字！” &amp;raquo;&lt;/li&gt;
&lt;li&gt;For a split second, both Harry and Riddle, wand still raised, stared at it. Then, without thinking, without considering, as though he had meant to do it all along, Harry seized the basilisk fang on the floor next to him and plunged it straight into the heart of the book. &amp;raquo;&lt;/li&gt;
&lt;li&gt;在那生死关头的一刹那，哈利，以及仍然举着魔杖的里德尔，眼睛都盯住了它。然后，哈利没有思考，也没有半点犹豫，好像他一直就打定主意要这么做似的，他一把抓起身边地上的蛇怪毒牙，径直把它插进了日记本的中心。 &amp;raquo;&lt;/li&gt;
&lt;li&gt;Never trust anything that can think for itself if you can’t see where it keeps its brain. &amp;raquo;&lt;/li&gt;
&lt;li&gt;永远不要相信任何能够独立思考的东西，除非你看清了它把头脑藏在什么地方。 &amp;raquo;&lt;/li&gt;
&lt;li&gt;Which goes to show that the best of us must sometimes eat our words &amp;raquo;&lt;/li&gt;
&lt;li&gt;“这就说明，即使是我们中间最优秀的人，有时候也只能说话不算话了。” &amp;raquo;&lt;/li&gt;
&lt;li&gt;It only put me in Gryffindor,” said Harry in a defeated voice, “because I asked not to go in Slytherin. …” &amp;raquo;&lt;/li&gt;
&lt;li&gt;It is our choices, Harry, that show what we truly are, far more than our abilities.” &amp;raquo;&lt;/li&gt;
&lt;li&gt;哈利，表现我们真正的自我，是我们自己的选择，这比我们所具有的能力更重要。 &amp;raquo;&lt;/li&gt;
&lt;li&gt;“Proud?” said Harry. “Are you crazy? All those times I could’ve died, and I didn’t manage it? They’ll be furious. …” &amp;raquo;&lt;/li&gt;
&lt;li&gt;“骄傲？”哈利说道，“难道你糊涂了吗？他们如果听说我好多次都差点死掉，却居然都死里逃生了，他们肯定会气坏的……” &amp;raquo;&lt;/li&gt;
&lt;/ol&gt;</description>
    </item>
    <item>
      <title>5 步打造自己的资讯阅读平台</title>
      <link>https://frytea.com/archives/170/</link>
      <pubDate>Tue, 29 Oct 2019 11:26:00 +0000</pubDate>
      <guid>https://frytea.com/archives/170/</guid>
      <description>&lt;p&gt;&lt;img alt=&#34;80FD1A99-BECC-43D7-A791-3B8BBC4BF6B0.jpeg&#34; loading=&#34;lazy&#34; src=&#34;https://blog.frytea.com/usr/uploads/2019/11/1252541376.jpeg#shadow&#34;&gt;&lt;/p&gt;
&lt;p&gt;!!!&lt;/p&gt;
&lt;center&gt; Photo by Roman Kraft on Unsplash &lt;/center&gt;
!!!
&lt;p&gt;今天偶然看到一个GitHub仓库，创建者计划制做一个工具，用来连接中文独立博客博主，打造一个面向独立博客的推荐、曝光、资讯互通及阅读平台，为此使用这个仓库收集中文独立博客，并通过 &lt;code&gt;js&lt;/code&gt; 处理搜集到的数据显示在 &lt;code&gt;README&lt;/code&gt; 中，数据在之后会整合到他打造的平台中，实现上述目标。&lt;/p&gt;</description>
    </item>
    <item>
      <title>GTD高效工具之 WorkFlowy 推荐</title>
      <link>https://frytea.com/archives/169/</link>
      <pubDate>Sat, 26 Oct 2019 15:30:00 +0000</pubDate>
      <guid>https://frytea.com/archives/169/</guid>
      <description>&lt;p&gt;&lt;img alt=&#34;ED5AC20B-E893-412A-AFCA-5F5FB9E30F05.jpeg&#34; loading=&#34;lazy&#34; src=&#34;http://frytea-data.test.upcdn.net/ED5AC20B-E893-412A-AFCA-5F5FB9E30F05.jpeg#shadow&#34;&gt;&lt;/p&gt;
&lt;p&gt;!!!&lt;/p&gt;
&lt;center&gt;
&lt;p&gt;[tag outline] Photo by Andrew Neel on Unsplash [/tag]&lt;/p&gt;
&lt;/center&gt;
!!!
&lt;p&gt;GTD（Getting Things Done / 尽管去做），是一种行为管理的方法，也是戴维·艾伦（英语：David Allen (author)）写的一本书的书名。&lt;/p&gt;</description>
    </item>
    <item>
      <title>【趣味操作】Terminals显示带有酷炫linux标志的基本硬件信息</title>
      <link>https://frytea.com/archives/168/</link>
      <pubDate>Mon, 21 Oct 2019 09:39:00 +0000</pubDate>
      <guid>https://frytea.com/archives/168/</guid>
      <description>&lt;p&gt;&lt;img alt=&#34;77DEA736-675A-4501-9002-2F81E22731B3.jpeg&#34; loading=&#34;lazy&#34; src=&#34;http://frytea-data.test.upcdn.net/77DEA736-675A-4501-9002-2F81E22731B3.jpeg#shadow&#34;&gt;&lt;/p&gt;
&lt;p&gt;!!!&lt;/p&gt;
&lt;center&gt;
&lt;p&gt;[tag outline] Photo by Sai Kiran Anagani on Unsplash [/tag]&lt;/p&gt;
&lt;/center&gt;
!!!
&lt;p&gt;你是否还对 Linux 系统看上去“可怕”的命令行望而却步呢？其实在它看似“简陋”的背后，拥有着无限强大的功能性、拓展性甚至趣味性。今天就来介绍一款有意思的命令，使用它你就可以看到字符串背后的美好！&lt;/p&gt;</description>
    </item>
    <item>
      <title>泛谈云计算</title>
      <link>https://frytea.com/archives/166/</link>
      <pubDate>Sun, 13 Oct 2019 11:09:12 +0000</pubDate>
      <guid>https://frytea.com/archives/166/</guid>
      <description>&lt;p&gt;&lt;img alt=&#34;EB0C1FAB-78FF-451F-843B-764E13FB3A18.jpeg&#34; loading=&#34;lazy&#34; src=&#34;http://frytea-data.test.upcdn.net/EB0C1FAB-78FF-451F-843B-764E13FB3A18.jpeg#shadow&#34;&gt;&lt;/p&gt;
&lt;p&gt;!!!&lt;/p&gt;
&lt;center&gt;
&lt;p&gt;[tag outline] Photo by Avi Richards on Unsplash [/tag]&lt;/p&gt;
&lt;/center&gt;
!!!
&lt;p&gt;“大数据与云计算”可谓是当今很火热的两个词，许多相关的竞赛、项目不断捧热这些新型的词汇。但是究竟什么才是云计算，它究竟可以带给我们什么变革？本文按照作者个人认识行文，试图以最简单的方式传达作者对于云计算的思考。&lt;/p&gt;</description>
    </item>
    <item>
      <title>《哈利 · 波特 与凤凰社（2003）》</title>
      <link>https://frytea.com/archives/1055/</link>
      <pubDate>Thu, 26 Sep 2019 21:19:00 +0000</pubDate>
      <guid>https://frytea.com/archives/1055/</guid>
      <description>&lt;p&gt;!!! [tag outline] Photo by Hudson Hintze on Unsp&lt;/p&gt;</description>
    </item>
    <item>
      <title>[摘录] 哈利 · 波特 与凤凰社（2003）</title>
      <link>https://frytea.com/archives/162/</link>
      <pubDate>Thu, 26 Sep 2019 13:19:00 +0000</pubDate>
      <guid>https://frytea.com/archives/162/</guid>
      <description>&lt;p&gt;&lt;img alt=&#34;86AAA194-FF56-46F7-A93F-958324ABA777.jpeg&#34; loading=&#34;lazy&#34; src=&#34;http://frytea-data.test.upcdn.net/86AAA194-FF56-46F7-A93F-958324ABA777.jpeg#shadow&#34;&gt;&lt;/p&gt;
&lt;p&gt;!!!&lt;/p&gt;
&lt;center&gt;
&lt;p&gt;[tag outline] Photo by Hudson Hintze on Unsplash[/tag]&lt;/p&gt;
&lt;/center&gt;
!!!
&lt;ol&gt;
&lt;li&gt;There you go, Sirius, Harry thought dully. Nothing rash. Kept my nose clean. Exactly the opposite of what you’d have done … &amp;raquo;&lt;/li&gt;
&lt;li&gt;你可以放心了,小天狼星,哈利闷闷不乐地想,不做鲁莽的事,安分守己,跟你当年做的事情正好相反。 &amp;raquo;&lt;/li&gt;
&lt;li&gt;“Expecto Patronum!” &amp;raquo;&lt;/li&gt;
&lt;li&gt;“呼神护卫!” &amp;raquo;&lt;/li&gt;
&lt;li&gt;EXPECTO PATRONUM!” &amp;raquo;&lt;/li&gt;
&lt;li&gt;“呼神护卫!” &amp;raquo;&lt;/li&gt;
&lt;li&gt;An enormous silver stag erupted from the tip of Harry’s wand; its antlers caught the dementor in the place where the heart should have been; it was thrown backward, weightless as darkness, and as the stag charged, the dementor swooped away, batlike and defeated. &amp;raquo;&lt;/li&gt;
&lt;li&gt;一头巨大的银色牡鹿从哈利的魔杖头上喷了出来,两根鹿角直刺向摄魂怪的心脏所在的地方。摄魂怪被撞得连连后退,像周围的黑暗一样没有重量。牡鹿冲上前去,摄魂怪像蝙蝠一样扑闪到一边,匆匆逃走了。 &amp;raquo;&lt;/li&gt;
&lt;li&gt;“GET IT!” Harry bellowed, and with a rushing, roaring sound, the silver stag he had conjured came galloping back past him. The dementor’s eyeless face was barely an inch from Dudley’s when the silver antlers caught it; the thing was thrown up into the air and, like its fellow, it soared away and was absorbed into the darkness. The stag cantered to the end of the alleyway and dissolved into silver mist. &amp;raquo;&lt;/li&gt;
&lt;li&gt;“抓住它!”哈利喊道,随着一阵快速的呼啸声,他变出来的那头银色牡鹿从他的身边跑过。摄魂怪那没有眼睛的脸离达力的脸只差不到一英寸了,说时迟那时快,银色的鹿角刺中了它,把它挑起来抛到半空。
它就像刚才它的那个同伴一样,腾空逃走,被黑暗吞没了。牡鹿慢跑到小巷尽头,化为一股银色烟雾消失了。 &amp;raquo;&lt;/li&gt;
&lt;li&gt;“Don’t put it away, idiot boy!” she shrieked. “What if there are more of them around? Oh, I’m going to kill Mundungus Fletcher!” &amp;raquo;&lt;/li&gt;
&lt;li&gt;“别藏啦,傻孩子!”她尖叫着说道,“如果周围还有他们的人怎么办呢?哦,我非宰了蒙顿格斯弗莱奇不可!” &amp;raquo;&lt;/li&gt;
&lt;li&gt;we might as well be hanged for a dragon as an egg. &amp;raquo;&lt;/li&gt;
&lt;li&gt;为一条龙是一死,为一个蛋也是一死。 &amp;raquo;&lt;/li&gt;
&lt;li&gt;The hall light was on. Harry stuck his wand back inside the waistband of his jeans, rang the bell, and watched Aunt Petunia’s outline grow larger and larger, oddly distorted by the rippling glass in the front door. &amp;raquo;&lt;/li&gt;
&lt;li&gt;客厅里亮着灯。哈利把魔杖重新插进牛仔裤的腰带,摁响了门铃。
佩妮姨妈的身影越来越大,被前门上起着波纹的玻璃折射得奇形怪状。 &amp;raquo;&lt;/li&gt;
&lt;li&gt;“Ministry of Magic?” bellowed Uncle Vernon. “People like you in government? Oh this explains everything, everything, no wonder the country’s going to the dogs. …” &amp;raquo;&lt;/li&gt;
&lt;li&gt;“魔法部?”弗农姨父恶声恶气地说道,“你们这样的人也能在政府工作?哦,我总算都明白了,都明白了,怪不得这个国家如今一天不如一天呢。” &amp;raquo;&lt;/li&gt;
&lt;li&gt;Uncle Vernon and Aunt Petunia exchanged looks of utter horror. If their least favorite thing in the world was magic, closely followed by neighbors who cheated more than they did on the hosepipe ban, people who heard voices were definitely in the bottom ten. They obviously thought Dudley was losing his mind. &amp;raquo;&lt;/li&gt;
&lt;li&gt;弗农姨父和佩妮姨妈交换了一个惊恐万状的眼神。如果说在这个世界上他们最不喜欢的东西是魔法——其次就是邻居在禁用浇水软管的问题上弄虚作假,做得比他们更过分——那么听到自己的脑子里有人说话,肯定也是最糟糕的事情之一。他们显然认为达力已经精神错乱了。&amp;raquo;&lt;/li&gt;
&lt;li&gt;But Dudley seemed incapable of saying. He shuddered again and shook his large blond head, and despite the sense of numb dread that had settled on Harry since the arrival of the first owl, he felt a certain curiosity. Dementors caused a person to relive the worst moments of their life. … What would spoiled, pampered, bullying Dudley have been forced to hear? &amp;raquo;&lt;/li&gt;
&lt;li&gt;可是达力似乎不会说话了。他又打了个寒噤,摇了摇那颗亚麻色头发的大脑袋。尽管第一只猫头鹰到来后,哈利的内心因恐惧而近乎麻木了,但此刻他也感到有些好奇。摄魂怪能使人重新经历一生中最痛苦的时刻。那么,这个被溺爱的养尊处优的、横行霸道的达力,会被迫听到什么呢? &amp;raquo;&lt;/li&gt;
&lt;li&gt;And now his temper was rising again. Wasn’t anybody going to say “well done” for fighting off two dementors singlehandedly? Both Mr. Weasley and Sirius were acting as though he’d misbehaved and they were saving their tellings-off until they could ascertain how much damage had been done. &amp;raquo;&lt;/li&gt;
&lt;li&gt;他的火气又上来了。他只身一人打跑了两个摄魂怪,难道就没有一个人对他说一声“干得漂亮”?看韦斯莱先生和小天狼星的反应就好像他做了什么错事,他们要等到弄清他造成了多大的破坏,再好好地训斥他一顿。 &amp;raquo;&lt;/li&gt;
&lt;li&gt;But at these words of Uncle Vernon’s, Harry’s exhausted brain ground back into action. Why had the dementors come to Little Whinging? How could it be coincidence that they had arrived in the alleyway where Harry was? Had they been sent? Had the Ministry of Magic lost control of the dementors, had they deserted Azkaban and joined Voldemort, as Dumbledore had predicted they would? &amp;raquo;&lt;/li&gt;
&lt;li&gt;但是听了弗农姨父的话,哈利已经极度疲劳的大脑又开始吱吱嘎嘎地运转起来。摄魂怪为什么到小惠金区来?它们正好落在哈利所在的那条小巷里,这怎么可能是巧合呢?它们是被派来的吗?难道魔法部失去了对摄魂怪的控制?难道摄魂怪擅自逃离了阿兹卡班,加入了伏地魔一伙,就像邓布利多曾经预言的那样? &amp;raquo;&lt;/li&gt;
&lt;li&gt;He registered dimly how strange it was that the Dursleys, who flinched, winced, and squawked if they heard words like “wizard,” “magic,” or “wand,” could hear the name of the most evil wizard of all time without the slightest tremor. &amp;raquo;&lt;/li&gt;
&lt;li&gt;他模模糊糊地意识到眼前的情景是多么奇怪:德思礼一家人听到“巫师”、“魔法”和“魔杖”这样的词都会吓得连连退缩,失声尖叫,而听到有史以来最邪恶的恶魔的名字,居然能没有一丝一毫的惊慌。 &amp;raquo;&lt;/li&gt;
&lt;li&gt;And all of a sudden, for the very first time in his life, Harry fully appreciated that Aunt Petunia was his mother’s sister. &amp;raquo;&lt;/li&gt;
&lt;li&gt;突然之间,哈利有生以来第一次充分意识到佩妮姨妈是他妈妈的姐姐。 &amp;raquo;&lt;/li&gt;
&lt;li&gt;Harry stood rooted to the spot. The letters from the Ministry, Mr.
Weasley, and Sirius were crushed in his left hand. Don’t leave the house again, whatever you do. DO NOT LEAVE YOUR AUNT AND UNCLE’S HOUSE. &amp;raquo;&lt;/li&gt;
&lt;li&gt;哈利站在原地,脚底像生了根。魔法部、韦斯莱先生和小天狼星的来信都捏在他的左手里。无论如何,你千万别再离开那所房子。不要离开你姨妈和姨父的家。 &amp;raquo;&lt;/li&gt;
&lt;li&gt;The silence spiraled horribly. &amp;raquo;&lt;/li&gt;
&lt;li&gt;寂静在可怕地升级。 &amp;raquo;&lt;/li&gt;
&lt;li&gt;Up and down he paced, consumed with anger and frustration, grinding his teeth and clenching his fists, casting angry looks out at the empty, star-strewn sky every time he passed the window. Dementors sent to get him, Mrs. Figg and Mundungus Fletcher tailing him in secret, then suspension from Hogwarts and a hearing at the Ministry of Magic — and still no one was telling him what was going on. &amp;raquo;&lt;/li&gt;
&lt;li&gt;他踱过来踱过去,内心充满了火气和沮丧。他把牙齿咬得咯咯响, 拳头捏得紧紧的,每次经过窗口,都把愤怒的目光投向外面群星闪烁的空荡荡的夜空。摄魂怪被派来抓他,费格太太和蒙顿格斯弗莱奇在偷偷跟踪他,然后又被霍格沃茨暂时停学,还要到魔法部去受审——而且仍然没有一个人告诉他到底出了什么事情。 &amp;raquo;&lt;/li&gt;
&lt;li&gt;He kicked his school trunk as he passed it, but far from relieving his anger he felt worse, as he now had a sharp pain in his toe to deal with in addition to the pain in the rest of his body. &amp;raquo;&lt;/li&gt;
&lt;li&gt;他走过上学用的箱子时,狠狠地踢了它一脚, 可是非但没有缓解他愤怒的心情,反而更糟糕了,现在他不仅要忍受身上其他地方的疼痛,脚趾也感到钻心的疼。 &amp;raquo;&lt;/li&gt;
&lt;li&gt;Just as he limped past the window, Hedwig soared through it with a soft rustle of wings like a small ghost.“About time!” Harry snarled, as she landed lightly on top of her cage.“You can put that down, I’ve got work for you!”Hedwig’s large round amber eyes gazed reproachfully at him over the dead frog clamped in her beak. &amp;raquo;&lt;/li&gt;
&lt;li&gt;当他一瘸一拐地经过窗口时,海德薇像一个小幽灵似的轻轻扑棱着翅膀飞进了窗户。
“回来得是时候啊!”哈利看到它轻盈地落在笼子顶上,没好气地说,“赶紧把那玩意儿放下,我有活儿等着你干呢!”海德薇嘴里叼着一只死青蛙,一双圆溜溜的琥珀色大眼睛责备地望着他。 &amp;raquo;&lt;/li&gt;
&lt;li&gt;“Come here,” said Harry, picking up the three small rolls of parchment and a leather thong and tying the scrolls to her scaly leg. “Take these straight to Sirius, Ron, and Hermione and don’t come back here without good long replies. Keep pecking them till they’ve written decent-length answers if you’ve got to. Understand?” &amp;raquo;&lt;/li&gt;
&lt;li&gt;“过来。”哈利说着拿起那三小卷羊皮纸和一根皮带子,把羊皮纸拴在海德薇长满鳞片的腿上,“把这些直接送给小天狼星、罗恩和赫敏, 必须等拿到长长的回信再回来。如果需要,就不停地用嘴啄他们,逼他们写出长度合适的回信。明白了吗?” &amp;raquo;&lt;/li&gt;
&lt;li&gt;He had recently spent nine months in what he had thought was Mad-Eye Moody’s company only to find out that it wasn’t Moody at all, but an impostor; an impostor, moreover, who had tried to kill Harry before being unmasked. &amp;raquo;&lt;/li&gt;
&lt;li&gt;就在最近,他曾跟那个他以为是疯眼汉穆迪的人一起待了九个月,结果发现那根本就不是穆迪,而是一个冒名顶替的家伙,而且,那家伙在暴露身份前还想杀死他。 &amp;raquo;&lt;/li&gt;
&lt;li&gt;Harry blinked.
The people below were crowded around the foot of the stairs, gazing intently up at him, some craning their heads for a better look. &amp;raquo;&lt;/li&gt;
&lt;li&gt;哈利眨了眨眼睛。
下面的人都挤在楼梯口,抬头目不转睛地望着他,有几个人还使劲伸长了脖子,好把他看得更清楚一些。 &amp;raquo;&lt;/li&gt;
&lt;li&gt;Harry could hardly believe this was real. Four weeks with nothing, not the tiniest hint of a plan to remove him from Privet Drive, and suddenly a whole bunch of wizards was standing matter-of-factly in the house as though this were a long-standing arrangement. &amp;raquo;&lt;/li&gt;
&lt;li&gt;哈利简直不敢相信这一切都是真的。四个星期毫无音讯,没有一点蛛丝马迹显示要将他从女贞路转移出去,可是突然之间,一大堆巫师一本正经地站在这个家里,就好像这是早就安排好的事情。 &amp;raquo;&lt;/li&gt;
&lt;li&gt;“Yeah, I know,” said Harry uncomfortably; it felt odd to be introduced to somebody he’d thought he’d known for a year. &amp;raquo;&lt;/li&gt;
&lt;li&gt;“是啊,我知道。”哈利尴尬地说。一个自己以为认识了一年的人, 又被别人介绍来重新认识,这感觉真是很奇怪。 &amp;raquo;&lt;/li&gt;
&lt;li&gt;“A surprising number of people volunteered to come and get you,” said Lupin, as though he had read Harry’s mind; the corners of his mouth twitched slightly. &amp;raquo;&lt;/li&gt;
&lt;li&gt;“没想到那么多人主动提出要来接你。”卢平说,似乎读出了哈利的心思,两个嘴角微微动了动。 &amp;raquo;&lt;/li&gt;
&lt;li&gt;The headquarters of the Order of the Phoenix may be found at number twelve, Grimmauld Place, London. &amp;raquo;&lt;/li&gt;
&lt;li&gt;凤凰社指挥部位于伦敦格里莫广场12号。 &amp;raquo;&lt;/li&gt;
&lt;li&gt;The warm glow that had flared inside him at the sight of his two best friends was extinguished as something icy flooded the pit of his stomach. All of a sudden — after yearning to see them for a solid month — he felt he would rather Ron and Hermione left him alone. &amp;raquo;&lt;/li&gt;
&lt;li&gt;见到两个最要好朋友时的那种热乎乎的喜悦现在慢慢熄灭了,一股冷冰冰的东西涌进了他的内心深处。突然之间——虽然整整一个月眼巴巴地渴望见到他们——他却觉得情愿罗恩和赫敏走开,让他独自待着。 &amp;raquo;&lt;/li&gt;
&lt;li&gt;Harry felt a great jolt in his guts as though he had just missed a step going downstairs. So everyone had known he was being followed except him. &amp;raquo;&lt;/li&gt;
&lt;li&gt;哈利感到心里猛地忽悠一下,好像下楼梯时一脚踏空了一样。这么说大家都知道他被人跟踪,只有他一个人蒙在鼓里。 &amp;raquo;&lt;/li&gt;
&lt;li&gt;“He was so angry,” said Hermione in an almost awestruck voice.
“Dumbledore. We saw him. When he found out Mundungus had left before his shift had ended. He was scary.” &amp;raquo;&lt;/li&gt;
&lt;li&gt;“他气极了,”赫敏用一种几乎战战兢兢的口吻说,“邓布利多。我们看见他了。当他弄清蒙顿格斯不到换岗时间就擅自离开时,他那副样子简直吓人。” &amp;raquo;&lt;/li&gt;
&lt;li&gt;But before he knew it, Harry was shouting.
“SO YOU HAVEN’T BEEN IN THE MEETINGS, BIG DEAL! YOU’VE STILL BEEN HERE, HAVEN’T YOU? YOU’VE STILL BEEN TOGETHER! ME, I’VE BEEN STUCK AT THE DURSLEYS’ FOR A MONTH! AND I’VE HANDLED MORE THAN YOU TWO’VE EVER MANAGED AND DUMBLEDORE KNOWS IT — WHO SAVED THE SORCERER’S STONE? WHO GOT RID OF RIDDLE? WHO SAVED BOTH YOUR SKINS FROM THE DEMENTORS?” &amp;raquo;&lt;/li&gt;
&lt;li&gt;哈利不知不觉地喊了起来:“这么说你们没能参加会议,真是太遗憾了!但你们一直待在这里,是不是?你们一直待在一起!而我呢,我被困在德思礼家整整一个月!可我经历过的事情比你们俩都多,邓布利多明明知道这一点——是谁保住了魔法石?是谁除掉了里德尔?是谁从摄魂怪手里救了你们两个人的命?” &amp;raquo;&lt;/li&gt;
&lt;li&gt;Every bitter and resentful thought that Harry had had in the past month was pouring out of him; his frustration at the lack of news, the hurt that they had all been together without him, his fury at being followed and not told about it: All the feelings he was half-ashamed of finally burst their boundaries. Hedwig took fright at the noise and soared off on top of the wardrobe again; Pigwidgeon twittered in alarm and zoomed even faster around their heads. &amp;raquo;&lt;/li&gt;
&lt;li&gt;过去一个月里哈利有过的每一个痛苦、怨恨的想法现在都一股脑儿地涌了出来:得不到消息时的焦虑不安,得知他们一直待在一起、惟独把他撇在一边时的委屈,被人跟踪、自己却蒙在鼓里的愤怒——所有这些令他感到屈辱的感觉,终于像决堤的洪水一样冲了出来。海德薇被他的声音吓坏了,抖抖翅膀飞回到衣柜顶上去了。小猪惊慌地吱吱叫着, 在他们头顶上嗖嗖地越飞越快。 &amp;raquo;&lt;/li&gt;
&lt;li&gt;“Harry, we’re really sorry!” said Hermione desperately, her eyes now sparkling with tears. “You’re absolutely right, Harry — I’d be furious if it was me!” &amp;raquo;&lt;/li&gt;
&lt;li&gt;“哈利,我们真的很抱歉!”赫敏不顾一切地说道,眼睛里已经闪着泪花,“你说得非常对,哈利——换了我也会生气的!” &amp;raquo;&lt;/li&gt;
&lt;li&gt;Time is Galleons &amp;raquo;&lt;/li&gt;
&lt;li&gt;“时间就是金加隆 &amp;raquo;&lt;/li&gt;
&lt;li&gt;“Git,” said Fred idly. &amp;raquo;&lt;/li&gt;
&lt;li&gt;“蠢蛋。”弗雷德懒洋洋地说。 &amp;raquo;&lt;/li&gt;
&lt;li&gt;“Because every time Percy’s name’s mentioned, Dad breaks whatever he’s holding and Mum starts crying,” Fred said. &amp;raquo;&lt;/li&gt;
&lt;li&gt;“因为每次提到珀西的名字,爸爸就把手里拿的东西砸得粉碎,妈妈就放声大哭。”弗雷德说。 &amp;raquo;&lt;/li&gt;
&lt;li&gt;“Percy and Dad had a row,” said Fred. “I’ve never seen Dad row with anyone like that. It’s normally Mum who shouts. …” &amp;raquo;&lt;/li&gt;
&lt;li&gt;“珀西和爸爸大吵了一架。”弗雷德说,“我从没见过爸爸跟谁吵成那样。平常总是妈妈大吵大嚷。” &amp;raquo;&lt;/li&gt;
&lt;li&gt;“I’m coming to that. Dad reckons Fudge only wants Percy in his office because he wants to use him to spy on the family — and Dumbledore.”Harry let out a low whistle.
“Bet Percy loved that.” &amp;raquo;&lt;/li&gt;
&lt;li&gt;“我正要说到这一点上呢。爸爸琢磨,福吉把珀西安排在自己的办公室,是想利用他监视我们家——监视邓布利多。”哈利轻轻吹出一声口哨,“我猜珀西肯定很爱听这话。” &amp;raquo;&lt;/li&gt;
&lt;li&gt;Harry swore under his breath. He had always liked Percy least of Ron’s brothers, but he had never imagined he would say such things to Mr.
Weasley. &amp;raquo;&lt;/li&gt;
&lt;li&gt;哈利不出声地骂了几句。在罗恩几个哥哥中间,他一直最不喜欢珀西,但他压根儿也想不到珀西居然对韦斯莱先生说出那样的话。 &amp;raquo;&lt;/li&gt;
&lt;li&gt;There was something about the slightly flattened tone of voice in which Sirius uttered Dumbledore’s name that told Harry that Sirius was not very happy with the headmaster either. Harry felt a sudden upsurge of affection for his godfather. &amp;raquo;&lt;/li&gt;
&lt;li&gt;小天狼星说出邓布利多的名字时声音显得有点儿消沉,这使哈利明白,小天狼星对校长也有点儿不满。哈利顿时对教父产生了一种亲切的情感。 &amp;raquo;&lt;/li&gt;
&lt;li&gt;Three helpings of rhubarb crumble and custard later and the waistband on Harry’s jeans was feeling uncomfortably tight (which was saying something, as the jeans had once been Dudley’s). &amp;raquo;&lt;/li&gt;
&lt;li&gt;三份大黄面包屑,接着又是蛋奶糕,哈利牛仔裤的裤腰紧得难受了(这是很能说明问题的,因为那条牛仔裤本来是达力的)当 &amp;raquo;&lt;/li&gt;
&lt;li&gt;He did not look at Mrs. Weasley. He had been touched by what she had said about his being as good as a son, but he was also impatient at her mollycoddling. … Sirius was right, he was not a child. &amp;raquo;&lt;/li&gt;
&lt;li&gt;他没有看韦斯莱夫人。刚才韦斯莱夫人说他就像她的亲生儿子一样,他很受感动,但同时他也被韦斯莱夫人对自己的过分溺爱弄得很不耐烦。小天狼星说得对,他已经不是一个小孩子了。 &amp;raquo;&lt;/li&gt;
&lt;li&gt;For a split second, Harry considered telling Ron that he wouldn’t tell him a single word, that he could try a taste of being kept in the dark and see how he liked it. But the nasty impulse vanished as they looked at each other. &amp;raquo;&lt;/li&gt;
&lt;li&gt;刹那间,哈利想对罗恩说他一个字也不会告诉他,也让他尝尝披蒙在鼓里的滋味,看看好受不好受。但是当两人目光相对时,他那种小心眼的冲动一下子就消失了。 &amp;raquo;&lt;/li&gt;
&lt;li&gt;“Thanks to you, Dumbledore was able to recall the Order of the Phoenix about an hour after Voldemort returned,” said Sirius. &amp;raquo;&lt;/li&gt;
&lt;li&gt;“多亏了你,邓布利多才能够在伏地魔回来后不到一小时就重新召集了凤凰社。”小天狼星说。 &amp;raquo;&lt;/li&gt;
&lt;li&gt;“Dumbledore’s got a shrewd idea,” said Lupin, “and Dumbledore’s shrewd ideas normally turn out to be accurate.” &amp;raquo;&lt;/li&gt;
&lt;li&gt;“邓布利多有一个敏锐的感觉,”卢平说,“而邓布利多的敏锐感觉一般都被证明是准确的。” &amp;raquo;&lt;/li&gt;
&lt;li&gt;“Fudge is frightened of him, you see,” said Tonks sadly. &amp;raquo;&lt;/li&gt;
&lt;li&gt;“福吉害怕他,明白吗?”唐克斯悲哀地说。 &amp;raquo;&lt;/li&gt;
&lt;li&gt;“Frightened of what he’s up to,” said Mr. Weasley. “You see, Fudge thinks Dumbledore’s plotting to overthrow him. He thinks Dumbledore wants to be Minister of Magic.” &amp;raquo;&lt;/li&gt;
&lt;li&gt;“害怕他想做的事情。”韦斯莱先生说道,“福吉认为邓布利多在密谋推翻他。他认为邓布利多自己想当魔法部长。” &amp;raquo;&lt;/li&gt;
&lt;li&gt;“Of course he doesn’t,” said Mr. Weasley. “He’s never wanted the Minister’s job, even though a lot of people wanted him to take it when Millicent Bagnold retired. Fudge came to power instead, but he’s never quite forgotten how much popular support Dumbledore had, even though Dumbledore never applied for the job.” &amp;raquo;&lt;/li&gt;
&lt;li&gt;“他当然不想,”韦斯莱先生说,“他从来没想过要当部长,尽管米里森巴格诺退休时,许多人想让他接替部长职位。后来福吉掌了大权, 但他一直没有忘记曾经有多少人支持邓布利多,虽说邓布利多从来没有申请过这个职位。” &amp;raquo;&lt;/li&gt;
&lt;li&gt;“Deep down, Fudge knows Dumbledore’s much cleverer than he is, a much more powerful wizard, and in the early days of his Ministry he was forever asking Dumbledore for help and advice,” said Lupin. “But it seems that he’s become fond of power now, and much more confident. He loves being Minister of Magic, and he’s managed to convince himself that he’s the clever one and Dumbledore’s simply stirring up trouble for the sake of it.” &amp;raquo;&lt;/li&gt;
&lt;li&gt;“在内心深处,福吉知道邓布利多比他有智慧得多,巫师的法术也比他厉害得多。他刚开始当部长的时候,还三天两头向邓布利多讨教、求助。”卢平说,“但是后来他似乎喜欢上了权力,信心也增强了。他迷恋当魔法部长的感觉,而且他使自己相信,他才是有智慧的人,邓布利多只是为此故意制造事端。” &amp;raquo;&lt;/li&gt;
&lt;li&gt;“Because accepting that Voldemort’s back would mean trouble like the Ministry hasn’t had to cope with for nearly fourteen years,” said Sirius bitterly. “Fudge just can’t bring himself to face it. It’s so much more comfortable to convince himself Dumbledore’s lying to destabilize him.” &amp;raquo;&lt;/li&gt;
&lt;li&gt;“因为如果承认伏地魔回来了,那就意味着有大麻烦,这种麻烦魔法部已经有将近十四年没有碰到了。”小天狼星尖刻地说,“福吉只是没有勇气面对这件事。他让自己相信邓布利多是在散布谣言,破坏他的稳定地位,这样一想就轻松多了。” &amp;raquo;&lt;/li&gt;
&lt;li&gt;He’s in charge of the hunt for Sirius, so he’s been feeding the Ministry information that Sirius is in Tibet. &amp;raquo;&lt;/li&gt;
&lt;li&gt;负责追捕小天狼星,所以他一直向部里提供信息说小天狼星在西藏。 &amp;raquo;&lt;/li&gt;
&lt;li&gt;“We want to experiment with doxy venom for our Skiving Snackboxes,”George told Harry under his breath. &amp;raquo;&lt;/li&gt;
&lt;li&gt;“我们想用狐猸子的毒液做实验,研制我们的速效逃课糖。”乔治压低声音对哈利说。 &amp;raquo;&lt;/li&gt;
&lt;li&gt;“Range of sweets to make you ill,” George whispered, keeping a wary eye on Mrs. Weasley’s back. “Not seriously ill, mind, just ill enough to get you out of a class when you feel like it. Fred and I have been developing them this summer. They’re double-ended, color-coded chews. If you eat the orange half of the Puking Pastilles, you throw up. Moment you’ve been rushed out of the lesson for the hospital wing, you swallow the purple half —” &amp;raquo;&lt;/li&gt;
&lt;li&gt;“各种各样让你犯病的糖果,”乔治小声说,一边警惕地留意着韦斯莱夫人的背影,“记住,不是犯重病,而是刚好在你不想上课的时候能让你离开课堂。弗雷德和我这个夏天一直在研制它们。是一种双色口香糖,一头是橘黄色的,另一头是紫色的。如果你吃下这种吐吐糖那橘黄色的一半,你就会呕吐。等你冲出教室到医院去时,你再吞下那紫色的一半——” &amp;raquo;&lt;/li&gt;
&lt;li&gt;“It makes such a nice change.” &amp;raquo;&lt;/li&gt;
&lt;li&gt;“换换口味真不赖。” &amp;raquo;&lt;/li&gt;
&lt;li&gt;“The pureblood families are all interrelated,” said Sirius. “If you’re only going to let your sons and daughters marry purebloods your choice is very limited, there are hardly any of us left. Molly and I are cousins by marriage and Arthur’s something like my second cousin once removed. But there’s no point looking for them on here — if ever a family was a bunch of blood traitors it’s the Weasleys.” &amp;raquo;&lt;/li&gt;
&lt;li&gt;“纯血统的家庭之间互相都有亲戚关系。”小天狼星说道,“如果你只想让你的儿女同纯血统的人结婚,那你的选择余地就非常有限了。我们这种人已经所剩无几了。莫丽和我是有姻亲关系的表姐弟,亚瑟大概算是我叔伯祖父的曾外孙吧。但在这上面寻找他们是没有用的——如果有哪个家里都是一伙玷污血统的败类,那准是韦斯莱一家了。” &amp;raquo;&lt;/li&gt;
&lt;li&gt;Harry understood completely. He knew how he would feel if forced, when he was grown up and thought he was free of the place forever, to return and live at number four, Privet Drive. &amp;raquo;&lt;/li&gt;
&lt;li&gt;哈利完全能理解。他知道,如果他长大成人,以为永远摆脱女贞路四号了,结果又回到那个地方生活,那会是一种什么感觉。 &amp;raquo;&lt;/li&gt;
&lt;li&gt;Dumbledore’s Secret-Keeper for the Order, you know — nobody can find headquarters unless he tells them personally where it is — that note Moody showed you last night, that was from Dumbledore. …” &amp;raquo;&lt;/li&gt;
&lt;li&gt;邓布利多是凤凰社的保密人——谁也不可能找到指挥部,除非他亲自告诉他们地址——就是昨天晚上穆迪给你看的那张纸条,是从邓布利多那里拿来的 &amp;raquo;&lt;/li&gt;
&lt;li&gt;There was a musical box that emitted a faintly sinister, tinkling tune when wound, and they all found themselves becoming curiously weak and sleepy until Ginny had the sense to slam the lid shut &amp;raquo;&lt;/li&gt;
&lt;li&gt;还有一个音乐盒,一拧发条,就隐隐约约地发出丁丁冬冬的不祥乐曲,接着他们都发现自己莫名其妙地变得虚弱无力,昏昏欲睡,幸亏金妮脑子还算清楚,赶紧将盖子关上了。 &amp;raquo;&lt;/li&gt;
&lt;li&gt;Snape might refer to their work as “cleaning,” but in Harry’s opinion they were really waging war on the house, which was putting up a very good fight, aided and abetted by Kreacher. &amp;raquo;&lt;/li&gt;
&lt;li&gt;斯内普大概喜欢把他们的工作称为“大扫除”,但在哈利看来,他们实际上是在对老房子发动一场战争,老房子在克利切的帮助下,进行着十分顽强的抵抗。 &amp;raquo;&lt;/li&gt;
&lt;li&gt;Ron, Hermione, Fred, George, and Ginny all stopped talking and looked over at him. Harry nodded and tried to keep eating his chops, but his mouth had become so dry he could not chew. &amp;raquo;&lt;/li&gt;
&lt;li&gt;罗恩、赫敏、弗雷德、乔治和金妮都停止了谈话,朝他这边望着。
哈利点点头,还想继续吃他的排骨,但嘴里突然变得很干,简直嚼不动了。 &amp;raquo;&lt;/li&gt;
&lt;li&gt;The thought that Dumbledore had been in the house on the eve of his hearing and not asked to see him made him feel, if that were possible, even worse. &amp;raquo;&lt;/li&gt;
&lt;li&gt;邓布利多在他受审的前夜来过这所房子,却没有提出来要见他, 想到这一点,他原本就糟糕透顶的心情更加恶劣了。 &amp;raquo;&lt;/li&gt;
&lt;li&gt;“She’s fair, she’ll hear you out.” &amp;raquo;&lt;/li&gt;
&lt;li&gt;“她很公正,会听你把话说完的。” &amp;raquo;&lt;/li&gt;
&lt;li&gt;Harry walked closer to him and the wizard held up a long golden rod, thin and flexible as a car aerial, and passed it up and down Harry’s front and back &amp;raquo;&lt;/li&gt;
&lt;li&gt;哈利走近他面前,那巫师举起一根长长的金棒,像汽车的天线一样细细的,很有韧性,他用它在哈利的前胸后背从上到下扫了一遍。 &amp;raquo;&lt;/li&gt;
&lt;li&gt;raise. … Just round here, Harry. &amp;raquo;&lt;/li&gt;
&lt;li&gt;上次我们这里刮了两个月的飓风, 因为他们想涨工资……差不多就在这里,哈利。” &amp;raquo;&lt;/li&gt;
&lt;li&gt;“Quick, Harry, we should have been there five minutes ago!” &amp;raquo;&lt;/li&gt;
&lt;li&gt;“快点儿,哈利,我们应该五分钟前就到那里的!” &amp;raquo;&lt;/li&gt;
&lt;li&gt;Harry’s heart was beating a violent tattoo against his Adam’s apple. He swallowed hard, turned the heavy iron door handle, and stepped inside the courtroom. &amp;raquo;&lt;/li&gt;
&lt;li&gt;哈利狂跳的心脏扑通扑通地撞击着他的喉结。他费力地咽了口唾沫,拧了一下门上沉重的铁把手,走进了审判室。 &amp;raquo;&lt;/li&gt;
&lt;li&gt;“— Witness for the defense, Albus Percival Wulfric Brian Dumbledore,”said a quiet voice from behind Harry, who turned his head so fast he cricked his neck. &amp;raquo;&lt;/li&gt;
&lt;li&gt;“被告方证人:阿不思·珀西瓦尔·伍尔弗里克·布赖恩·邓布利多。”哈利身后一个平静的声音说道。哈利猛一转头,差点儿把脖子扭伤了。 &amp;raquo;&lt;/li&gt;
&lt;li&gt;A powerful emotion had risen in Harry’s chest at the sight of Dumbledore, a fortified, hopeful feeling rather like that which phoenix song gave him. He wanted to catch Dumbledore’s eye, but Dumbledore was not looking his way; he was continuing to look up at the obviously flustered Fudge. &amp;raquo;&lt;/li&gt;
&lt;li&gt;哈利看见邓布利多,内心就升起一股强烈的情感,让他感到踏实, 充满了希望,就像凤凰福克斯歌声曾经带给他的感觉一样。他想与邓布利多对一下目光,但邓布利多没有朝他这边看,而是继续抬眼望着显然惊慌失措的福吉。 &amp;raquo;&lt;/li&gt;
&lt;li&gt;“I must have missed it,” said Dumbledore cheerfully. “However, due to a lucky mistake I arrived at the Ministry three hours early, so no harm done.” &amp;raquo;&lt;/li&gt;
&lt;li&gt;看来我是没收到,”邓布利多语气欢快地说,“不过,我犯了一个幸运的错误,提前三个小时就来到了魔法部,所以没造成妨碍。” &amp;raquo;&lt;/li&gt;
&lt;li&gt;“Merlin’s beard,” said Mr. Weasley wonderingly, pulling Harry aside to let them all pass, “you were tried by the full court?”“I think so,” said Harry quietly. &amp;raquo;&lt;/li&gt;
&lt;li&gt;“我的天哪——”韦斯莱先生惊讶地喊了起来,把哈利拉到一边,让他们过去,“他们正式开庭审判你?”“我想是的。”哈利轻声说。 &amp;raquo;&lt;/li&gt;
&lt;li&gt;“So what will you have to do about the toilet?” Harry asked, grinning.
Everything suddenly seemed five times funnier than usual. It was starting to sink in: He was cleared, he was going back to Hogwarts. &amp;raquo;&lt;/li&gt;
&lt;li&gt;“那么,你准备怎么对付那间厕所呢?”哈利咧嘴笑着问。突然之间,所有的事情似乎都比平常好玩了五倍。他终于开始明白:他被宣告无罪了,他就要回霍格沃茨去了。 &amp;raquo;&lt;/li&gt;
&lt;li&gt;Harry felt winded, as though he had just walked into something heavy.
He had last seen those cool gray eyes through slits in a Death Eater’s hood, and last heard that man’s voice jeering in a dark graveyard while Lord Voldemort tortured him. He could not believe that Lucius Malfoy dared look him in the face; he could not believe that he was here, in the Ministry of Magic, or that Cornelius Fudge was talking to him, when Harry had told Fudge mere weeks ago that Malfoy was a Death Eater. &amp;raquo;&lt;/li&gt;
&lt;li&gt;哈利突然觉得透不过气来,似乎他一脚跨进了某个凝固的东西里。
他上次看见这两只冷冰冰的灰眼睛时,它们隐藏在食死徒兜帽的两道狭缝后面;他上次听见这个男人的声音,是在阴暗的墓地里发出的阵阵嘲笑,而当时伏地魔正在折磨他。哈利不敢相信卢修斯·马尔福竟然还敢当面看着他,他不敢相信马尔福竟然出现在这里,在堂堂的魔法部,而康奈利·福吉竟然在跟他说话,要知道哈利几个星期前曾亲口对福吉说过马尔福是个食死徒。 &amp;raquo;&lt;/li&gt;
&lt;li&gt;“Gold, I expect,” said Mr. Weasley angrily. “Malfoy’s been giving generously to all sorts of things for years. … Gets him in with the right people … then he can ask favors … delay laws he doesn’t want passed …Oh, he’s very well connected, Lucius Malfoy. …” &amp;raquo;&lt;/li&gt;
&lt;li&gt;“我想是金子吧。”韦斯莱先生气愤地说,“许多年来,马尔福一直对各种各样的人出手很大方……好使自己跟有权势的人攀上交情……然后可以要求特殊照顾……让那些他不想通过的法律一拖再拖……哦,卢修斯·马尔福,他真是能量不小,神通广大。” &amp;raquo;&lt;/li&gt;
&lt;li&gt;“One sacked, one dead, one’s memory removed, and one locked in a trunk for nine months,” said Harry, counting them off on his fingers. “Yeah, I see what you mean.” &amp;raquo;&lt;/li&gt;
&lt;li&gt;“一个被开除了,一个死了,一个被消除了记忆,还有一个被锁在箱子里整整九个月。”哈利掰着指头一个个地数,“是啊,我明白你们的意思了。” &amp;raquo;&lt;/li&gt;
&lt;li&gt;I don’t believe it! I don’t believe it! Oh, Ron, how wonderful! A prefect! That’s everyone in the family!”“What are Fred and I, next-door neighbors?” said George indignantly, as his mother pushed him aside and flung her arms around her youngest son. &amp;raquo;&lt;/li&gt;
&lt;li&gt;I &amp;raquo;&lt;/li&gt;
&lt;li&gt;“我真不敢相信!我真不敢相信!哦,罗恩,真是太棒了!级长! 家里的每个人都是级长!”“弗雷德和我算什么?隔壁邻居吗?”乔治愤愤不平地说,他母亲把他推到一边,张开双臂搂住了她最小的儿子。 &amp;raquo;&lt;/li&gt;
&lt;li&gt;He had forgotten completely about prefects being chosen in the fifth year.
He had been too anxious about the possibility of being expelled to spare a thought for the fact that badges must be winging their way toward certain people. But if he had remembered … if he had thought about it … what would he have expected? &amp;raquo;&lt;/li&gt;
&lt;li&gt;他已经把五年级要挑选级长的事情忘得一干二净。他一直忧心忡忡地担心会被开除,根本没有心思去想徽章正扇动着翅膀朝某些人飞来。
但如果他没有忘记……如果他曾经想过……他会希望有什么结果呢? &amp;raquo;&lt;/li&gt;
&lt;li&gt;Harry screwed up his face and buried it in his hands. He could not lie to himself; if he had known the prefect badge was on its way, he would have expected it to come to him, not Ron. Did this make him as arrogant as Draco Malfoy? Did he think himself superior to everyone else? Did he really believe he was better than Ron? No, said the small voice defiantly.
Was that true? Harry wondered, anxiously probing his own feelings. &amp;raquo;&lt;/li&gt;
&lt;li&gt;选级长,他肯定希望选中的是自己,而不是罗恩。他这是不是像德拉科·马尔福一样狂妄自大呢?他难道认为自己比别人都了不起?他真的相信自己比罗恩出色? 不。那个小声音斩钉截铁地说。
真的吗?哈利疑惑地想,急于把自己的感觉探究个水落石出。 &amp;raquo;&lt;/li&gt;
&lt;li&gt;Not all the time, though, Harry argued with himself. They didn’t fight Quirrell with me. They didn’t take on Riddle and the basilisk. They didn’t get rid of all those dementors the night Sirius escaped. They weren’t in that graveyard with me, the night Voldemort returned. …And the same feeling of ill usage that had overwhelmed him on the night he had arrived rose again. I’ve definitely done more, Harry thought indignantly. I’ve done more than either of them! &amp;raquo;&lt;/li&gt;
&lt;li&gt;是总在一起,哈利同自己辩论道。他们没有和我一起同奇洛搏斗。他们没有跟里德尔和蛇怪较量。他们没有在小天狼星逃跑的那天晚上摆脱那些摄魂怪。在伏地魔回来的那天夜里,他们没有在墓地里和我在一起……想到这里,他刚来的那天晚上感到自己受到不公平待遇的那种强烈感觉又一次在心头翻滚。我绝对做得更多,哈利气愤不平地说。我做得比他们俩都多! &amp;raquo;&lt;/li&gt;
&lt;li&gt;But maybe, said the small voice fairly, maybe Dumbledore doesn’t choose prefects because they’ve got themselves into a load of dangerous situations.
… Maybe he chooses them for other reasons. … Ron must have something you don’t. … &amp;raquo;&lt;/li&gt;
&lt;li&gt;可是,那个小声音公正地说,也许邓布利多选级长并不看中他们经历过多少危险处境……也许他选级长看的是其他因素……罗恩肯定具有一些你所没有的东西…… &amp;raquo;&lt;/li&gt;
&lt;li&gt;Harry opened his eyes and stared through his fingers at the wardrobe’s clawed feet, remembering what Fred had said.
“No one in their right mind would make Ron a prefect. …”Harry gave a small snort of laughter. A second later he felt sickened with himself. &amp;raquo;&lt;/li&gt;
&lt;li&gt;哈利睁开眼睛,透过手指缝望着衣柜爪子形的脚,想起了弗雷德说过的话:“头脑清楚的人,谁会选罗恩当级长呢……”哈利发出一声嘲讽的轻笑,但随即又为自己感到恶心。 &amp;raquo;&lt;/li&gt;
&lt;li&gt;Ginny laughed; Hermione looked as though she did not know whether to smile or not and compromised by taking an extra large gulp of butterbeer and choking on it. &amp;raquo;&lt;/li&gt;
&lt;li&gt;金妮哈哈大笑。赫敏似乎不知道是不是也该笑一笑,便采取个折中的办法,端起杯子喝了一大口黄油啤酒,结果被呛着了。 &amp;raquo;&lt;/li&gt;
&lt;li&gt;“No one would have made me a prefect, I spent too much time in detention with James. Lupin was the good boy, he got the badge.” &amp;raquo;&lt;/li&gt;
&lt;li&gt;“没有人会选我当级长的,我花了那么多时间跟詹姆一起关禁闭。
卢平是个好孩子,他得到了徽章。” &amp;raquo;&lt;/li&gt;
&lt;li&gt;Harry’s mood suddenly lifted. His father had not been a prefect either. All at once the party seemed much more enjoyable; he loaded up his plate, feeling unusually fond of everyone in the room. &amp;raquo;&lt;/li&gt;
&lt;li&gt;哈利的情绪突然好了起来。他父亲当年也不是级长。顿时,晚会似乎变得好玩多了。他把盘子装得满满的,觉得自己加倍地喜爱房间里的每一个人。 &amp;raquo;&lt;/li&gt;
&lt;li&gt;And then, to see them surrounded by all those other happy faces … Benjy Fenwick, who had been found in bits, and Gideon Prewett, who had died like a hero, and the Longbottoms, who had been tortured into madness … all waving happily out of the photograph forevermore, not knowing that they were doomed. … Well, Moody might find that interesting … he, Harry, found it disturbing. … &amp;raquo;&lt;/li&gt;
&lt;li&gt;还有,看见他们周围所有那些愉快的面孔……本吉·芬威克,只找到一些尸体的残片,吉迪翁·普威特,像英雄一样勇敢战死,还有隆巴顿夫妇,被折磨成了疯子……他们都永远在照片上愉快地挥着手,谁也不知道前面等着他们的厄运……唉,穆迪大概会觉得这很有趣……他, 哈利,觉得这让人心神不安…… &amp;raquo;&lt;/li&gt;
&lt;li&gt;But Harry, closing his bedroom door behind him some ten minutes later, could not think Mrs. Weasley silly. He could still see his parents beaming up at him from the tattered old photograph, unaware that their lives, like so many of those around them, were drawing to a close. The image of the boggart posing as the corpse of each member of Mrs. Weasley’s family in turn kept flashing before his eyes. &amp;raquo;&lt;/li&gt;
&lt;li&gt;可是十分钟后,当哈利反手关上卧室的房门时,他无法认为韦斯莱夫人是在犯傻。他仍然能够看见他爸爸妈妈从那张破烂的旧照片上笑眯眯地望着他,他们像周围的那么多人一样,浑然不知他们的生命就要终结。哈利眼前不断闪现着博格特轮番变出韦斯莱夫人家每个人的尸体的景象。 &amp;raquo;&lt;/li&gt;
&lt;li&gt;Harry ignored it. He felt older than he had ever felt in his life, and it seemed extraordinary to him that barely an hour ago he had been worried about a joke shop and who had gotten a prefect’s badge. &amp;raquo;&lt;/li&gt;
&lt;li&gt;哈利没去理它。他感到自己一下子长大了很多,以前从没有过这种感觉,可就在一个小时前,他还在担心笑话商店的事,担心谁得到了级长的徽章,这使他觉得不可思议。 &amp;raquo;&lt;/li&gt;
&lt;li&gt;But as Hermione and Ron dragged their trunks, Crookshanks, and a caged Pigwidgeon off toward the engine end of the train, Harry felt an odd sense of loss. He had never traveled on the Hogwarts Express without Ron. &amp;raquo;&lt;/li&gt;
&lt;li&gt;但是当赫敏和罗恩拖着箱子、抱着克鲁克山、拎着小猪的笼子朝火车头的方向走去时,哈利还是有了一种奇怪的失落感。以前每次乘坐霍格沃茨特快列车,他都是跟罗恩在一起的。 &amp;raquo;&lt;/li&gt;
&lt;li&gt;Harry slumped back in his seat and groaned. He would have liked Cho to discover him sitting with a group of very cool people laughing their heads off at a joke he had just told; he would not have chosen to be sitting with Neville and Loony Lovegood, clutching a toad and dripping in Stinksap. &amp;raquo;&lt;/li&gt;
&lt;li&gt;哈利垂头耷脑地倒在座位上,唉声叹气。他真希望秋看见他和一群很酷的人坐在一起,他们被他讲的一个笑话逗得乐不可支。他真不愿意被她看见自己跟纳威和疯姑娘洛夫古德坐在一起,手里拿着一只癞蛤蟆,脸上淌着臭汁。 &amp;raquo;&lt;/li&gt;
&lt;li&gt;The Sorting Hat usually confined itself to describing the different qualities looked for by each of the four Hogwarts Houses and its own role in sorting them; Harry could not remember it ever trying to give the school advice before. &amp;raquo;&lt;/li&gt;
&lt;li&gt;通常,分院帽只描述霍格沃茨四个学院所看重的不同品质以及它自己给学生分类的任务。哈利不记得它什么时候试图给学校提出忠告。 &amp;raquo;&lt;/li&gt;
&lt;li&gt;“The hat feels itself honor-bound to give the school due warning whenever it feels —” &amp;raquo;&lt;/li&gt;
&lt;li&gt;Harry was somehow soothed to see Dumbledore standing before them all, whatever his recent bitter feelings toward his headmaster. Between the absence of Hagrid and the presence of those dragonish horses, he had felt that his return to Hogwarts, so long anticipated, was full of unexpected surprises like jarring notes in a familiar song. But this, at least, was how it was supposed to be: their headmaster rising to greet them all before the start-of- term feast. &amp;raquo;&lt;/li&gt;
&lt;li&gt;尽管哈利最近对他的校长有过种种不满的情绪,但此刻看到邓布利多站在他们大家面前,他还是松了口气。海格不见了踪影,马车前面突然出现了那些像龙一样的怪马,使他觉得他这次返回霍格沃茨,尽管是他梦寐以求的,却充满令他吃惊的意外,就像一首熟悉的歌曲里出现了不和谐的音符。但眼下的情形至少是正常的:在开学宴会开始前,他们的校长站起来问候他们大家。 &amp;raquo;&lt;/li&gt;
&lt;li&gt;Yes, I have heard the hat give several warnings before, always at times when it detects periods of great danger for the school. And always, of course, its advice is the same: Stand together, be strong from within.” &amp;raquo;&lt;/li&gt;
&lt;li&gt;“是啊,我以前好几次听过分院帽提出警告,总是在它感觉到学校面临着巨大危险的时候。
当然啦,它的忠告每次都是一样的:团结一致,保持内部的稳定。” &amp;raquo;&lt;/li&gt;
&lt;li&gt;Harry found his attentiveness ebbing, as though his brain was slipping in and out of tune. The quiet that always filled the Hall when Dumbledore was speaking was breaking up as students put their heads together, whispering and giggling. &amp;raquo;&lt;/li&gt;
&lt;li&gt;哈利发现自己的注意力渐渐不集中了,似乎他的大脑开起了小差。
邓布利多说话时四下里鸦雀无声,现在同学们都在交头接耳,窃窃私语,咯咯发笑,礼堂里一片嘈杂。 &amp;raquo;&lt;/li&gt;
&lt;li&gt;Professor Umbridge did not seem to notice the restlessness of her audience. Harry had the impression that a full-scale riot could have broken out under her nose and she would have plowed on with her speech. The teachers, however, were still listening very attentively, and Hermione seemed to be drinking in every word Umbridge spoke, though judging by her expression, they were not at all to her taste. &amp;raquo;&lt;/li&gt;
&lt;li&gt;乌姆里奇教授似乎没有注意到听众的坐立不安。哈利有一种感觉, 即使她鼻子底下发生一场大规模的暴动,她也会继续慢条斯理地演讲下去。然而教师们一个个听得都很仔细,赫敏似乎全神贯注地把乌姆里奇说的每一个字都听进去了,但从她的表情看,这些话她并不爱听。 &amp;raquo;&lt;/li&gt;
&lt;li&gt;“Thank you very much, Professor Umbridge, that was most illuminating,” &amp;raquo;&lt;/li&gt;
&lt;li&gt;“非常感谢你,乌姆里奇教授,你的讲话非常有启发性。” &amp;raquo;&lt;/li&gt;
&lt;li&gt;“I said illuminating, not enjoyable,” said Hermione. “It explained a lot.” &amp;raquo;&lt;/li&gt;
&lt;li&gt;“我说的是有启发性,不是有趣味性,”赫敏说,“它能说明许多问题。” &amp;raquo;&lt;/li&gt;
&lt;li&gt;“I’ll tell you what it means,” said Hermione ominously. “It means the Ministry’s interfering at Hogwarts.” &amp;raquo;&lt;/li&gt;
&lt;li&gt;“我来告诉你是什么意思吧,”赫敏咬着牙说,“这就说明魔法部在干预霍格沃茨。” &amp;raquo;&lt;/li&gt;
&lt;li&gt;“She believes the Daily Prophet?” said Harry. “She thinks I’m a liar and Dumbledore’s an old fool?” &amp;raquo;&lt;/li&gt;
&lt;li&gt;“她相信了《预言家日报》?”哈利问,“她认为我是个骗子,邓布利多是个老糊涂?” &amp;raquo;&lt;/li&gt;
&lt;li&gt;My gran’s always said You-Know-Who would come back one day. She says if Dumbledore says he’s back, he’s back.” &amp;raquo;&lt;/li&gt;
&lt;li&gt;Had Dumbledore suffered like this all summer, as first the Wizengamot, then the International Confederation of Wizards had thrown him from their ranks? Was it anger at Harry, perhaps, that had stopped Dumbledore getting in touch with him for months? The two of them were in this together, after all; Dumbledore had believed Harry, announced his version of events to the whole school and then to the wider Wizarding community. Anyone who thought Harry was a liar had to think that Dumbledore was too or else that Dumbledore had been hoodwinked. … &amp;raquo;&lt;/li&gt;
&lt;li&gt;是不是邓布利多整个暑假都在忍受这些?先被威森加摩开除,然后又被国际魔法师联合会扫地出门?是不是邓布利多生哈利的气了,这才好几个月一直没有跟他联系?不管怎么说,他们俩现在是拴在一起了。
邓布利多相信了哈利,把他叙述的事情经过告诉了全校师生,然后又向范围更广的巫师界公布了。凡是认为哈利是在说谎的人,都会认为邓布利多也是个骗子,或者认为邓布利多受了蒙蔽…… &amp;raquo;&lt;/li&gt;
&lt;li&gt;They’ll know we’re right in the end, thought Harry miserably, as Ron got into bed and extinguished the last candle in the dormitory. But he wondered how many attacks like Seamus’s he would have to endure before that time came. &amp;raquo;&lt;/li&gt;
&lt;li&gt;他们最后总会知道我们是对的,哈利愁闷地想,这时罗恩上了床, 吹灭了宿舍里的最后一根蜡烛。可是哈利接着又想,在那个时候到来之前,他还要忍受多少像西莫这样的责难呢。 &amp;raquo;&lt;/li&gt;
&lt;li&gt;“No,” said Hermione calmly, “I told her to keep her big fat mouth shut about you, actually. And it would be quite nice if you stopped jumping down Ron’s and my throats, Harry, because if you haven’t noticed, we’re on your side.” &amp;raquo;&lt;/li&gt;
&lt;li&gt;“不是,”赫敏心平气和地说,“实际上,我叫她闭上她那张大胖嘴,不许再对你说三道四。哈利,真希望你不要再对我们横加指责,因为我和罗恩是和你站在一边的,除非你没有注意到。” &amp;raquo;&lt;/li&gt;
&lt;li&gt;“About You-Know-Who. He said, ‘His gift for spreading discord and enmity is very great. We can fight it only by showing an equally strong bond of friendship and trust —’ ” &amp;raquo;&lt;/li&gt;
&lt;li&gt;“关于神秘人的。邓布利多说他‘制造冲突和敌意的手段十分高明。
我们只有表现出同样牢不可破的友谊和信任——’” &amp;raquo;&lt;/li&gt;
&lt;li&gt;“The point,” Hermione pressed on loudly, “is that this sort of thing is exactly what Dumbledore was talking about. You-Know-Who’s only been back two months, and we’ve started fighting among ourselves. And the Sorting Hat’s warning was the same — stand together, be united —” &amp;raquo;&lt;/li&gt;
&lt;li&gt;“问题是,”赫敏很不客气地大声说,“这些才是邓布利多真正要说的话。神秘人回来才两个月,我们就已经开始自相争斗了。分院帽的警告也是同样的意思:团结一致——” &amp;raquo;&lt;/li&gt;
&lt;li&gt;“It’s best to know what the enemy are saying,” said Hermione darkly &amp;raquo;&lt;/li&gt;
&lt;li&gt;“最好了解一下敌人在说什么。”赫敏一本正经地说。 &amp;raquo;&lt;/li&gt;
&lt;li&gt;“Ask us no questions and we’ll tell you no lies, Hermione. &amp;raquo;&lt;/li&gt;
&lt;li&gt;别问我们,我们不会编谎话骗你,赫敏。 &amp;raquo;&lt;/li&gt;
&lt;li&gt;Professor Binns, their ghost teacher, had a wheezy, droning voice that was almost guaranteed to cause severe drowsiness within ten minutes, five in warm weather. &amp;raquo;&lt;/li&gt;
&lt;li&gt;他们的鬼魂老师宾斯先生说起话来呼哧带喘,拖腔拖调,几乎肯定能在十分钟内使人昏昏欲睡;如他们就在底下做笔记,或者更准确地说,是在睡眼矇眬地发愣 &amp;raquo;&lt;/li&gt;
&lt;li&gt;Today they suffered through three quarters of an hour’s droning on the subject of giant wars. Harry heard just enough within the first ten minutes to appreciate dimly that in another teacher’s hands this subject might have been mildly interesting, but then his brain disengaged, and he spent the remaining thirty-five minutes playing hangman on a corner of his parchment with Ron, while Hermione shot them filthy looks out of the corner of her eye. &amp;raquo;&lt;/li&gt;
&lt;li&gt;今天,他们忍受着宾斯教授拖着腔调地讲述巨人战争的话题,足足忍受了一个半小时。哈利刚听了十分钟,就模模糊糊地意识到如果换了另外一位老师,这个题目大概会比较引人入胜,接着他的大脑就走神了,在剩下来的一小时二十分钟里,他和罗恩一直在他羊皮纸的一角玩刽子手的游戏,赫敏不时用眼角的余光狠狠地瞪着他们。 &amp;raquo;&lt;/li&gt;
&lt;li&gt;We do try,” said Ron. “We just haven’t got your brains or your memory or your concentration — you’re just cleverer than we are — is it nice to rub it in?”“Oh, don’t give me that rubbish,” said Hermione, but she looked slightly mollified as she led the way out into the damp courtyard. &amp;raquo;&lt;/li&gt;
&lt;li&gt;“我们努力来着,”罗恩说道,“我们只是没有你那样的大脑,你那样的记性、那样好的注意力——你就是比我们聪明嘛——你就不要哪壶不开提哪壶了好不好?”“哼,别给我灌这些迷魂汤。”赫敏说,但她的表情微微缓和了些, 领头来到外面湿乎乎的院子里。 &amp;raquo;&lt;/li&gt;
&lt;li&gt;She walked away. Hermione waited until Cho was halfway across the courtyard before rounding on Ron.
“You are so tactless!”“What? I only asked her if —”“Couldn’t you tell she wanted to talk to Harry on her own?”“So? She could’ve done, I wasn’t stopping —”“What on earth were you attacking her about her Quidditch team for?”“Attacking? I wasn’t attacking her, I was only —”“Who cares if she supports the Tornados?”“Oh, come on, half the people you see wearing those badges only bought them last season —”“But what does it matter?”“It means they’re not real fans, they’re just jumping on the bandwagon —” &amp;raquo;&lt;/li&gt;
&lt;li&gt;她走开了。赫敏等到秋走到院子中间,便回过头来责骂罗恩。
“你太不懂事了!”“什么?我不过问她是不是——”“你难道看不出来,她是想跟哈利单独谈谈吗?”“那又怎么样?她完全可以谈嘛,我又没有拦着她——”“你凭什么对她支持的魁地奇球队横加指责?”“指责?我没有指责她,我只是——”“谁在乎她支持不支持龙卷风队?”“哦,得啦,你看见戴着那些徽章的人,一半都是上个赛季刚买的——”“可那又有什么关系?”“那就说明他们并不是真正的球迷,他们只是跟风,赶浪头——” &amp;raquo;&lt;/li&gt;
&lt;li&gt;The surface of Hermione’s potion, however, was a shimmering mist of silver vapor, and as Snape swept by he looked down his hooked nose at it without comment, which meant that he could find nothing to criticize. &amp;raquo;&lt;/li&gt;
&lt;li&gt;赫敏的药剂倒是正冒出一股微微闪烁的银白色蒸汽,当斯内普快步走过时,鹰钩鼻上的眼睛低垂着看了看赫敏的坩埚,没有做任何评论,这就是说他挑不出任何毛病。 &amp;raquo;&lt;/li&gt;
&lt;li&gt;Neither of the others answered; all three of them knew that Snape and Harry’s mutual enmity had been absolute from the moment Harry had set foot in Hogwarts &amp;raquo;&lt;/li&gt;
&lt;li&gt;赫敏和罗恩谁也没有回答。三个人心里都清楚,斯内普和哈利之间的敌意,从哈利踏进霍格沃茨的那一刻起就已经根深蒂固了。 &amp;raquo;&lt;/li&gt;
&lt;li&gt;Poisonous toadstools don’t change their spots, &amp;raquo;&lt;/li&gt;
&lt;li&gt;“毒蘑菇是不会改变它们的斑点的, &amp;raquo;&lt;/li&gt;
&lt;li&gt;Many of the class exchanged gloomy looks; the order “wands away” had never yet been followed by a lesson they had found interesting. &amp;raquo;&lt;/li&gt;
&lt;li&gt;许多同学交换着郁闷的眼神。跟在“收起魔杖”这个命令后面的,从来都不是他们觉得有趣的课。 &amp;raquo;&lt;/li&gt;
&lt;li&gt;It was desperately dull, quite as bad as listening to Professor Binns. He felt his concentration sliding away from him; he had soon read the same line half a dozen times without taking in more than the first few words. &amp;raquo;&lt;/li&gt;
&lt;li&gt;内容十分枯燥,简直就跟听宾斯教授讲课一样毫无趣味。他感到自己的注意力一点点地减退了。很快,他就盯着一行文字看了六七遍,却只看懂了开头几个单词。几 &amp;raquo;&lt;/li&gt;
&lt;li&gt;When more than half the class were staring at Hermione rather than at their books, Professor Umbridge seemed to decide that she could ignore the situation no longer. &amp;raquo;&lt;/li&gt;
&lt;li&gt;后来,班上超过一半的同学都在盯着赫敏,而不是看着他们的课本了,乌姆里奇教授似乎认为她再也不能对这种情况视而不见了。 &amp;raquo;&lt;/li&gt;
&lt;li&gt;“Well, I don’t,” said Hermione bluntly. “There’s nothing written up there about using defensive spells.” &amp;raquo;&lt;/li&gt;
&lt;li&gt;“可是,我不这么认为,”赫敏直言不讳地说,“那上面一个字也没有提到使用防御性咒语。” &amp;raquo;&lt;/li&gt;
&lt;li&gt;For heaven’s sake, Potter!” said Professor McGonagall, straightening her glasses angrily (she had winced horribly when he had used Voldemort’s name). “Do you really think this is about truth or lies? It’s about keeping your head down and your temper under control!” &amp;raquo;&lt;/li&gt;
&lt;li&gt;刚才她听见哈利说出伏地魔的名字,脸部肌肉很厉害地抽搐了一下),“你真的以为问题在于说实话还是说谎话吗?问题在于你必须低着头做人,尽量不招惹麻烦,管好你自己的脾气!” &amp;raquo;&lt;/li&gt;
&lt;li&gt;“Well, I’m glad you listen to Hermione Granger at any rate,” she said, pointing him out of her office. &amp;raquo;&lt;/li&gt;
&lt;li&gt;He knew she was watching him for signs of weakness and he was not going to show any, not even if he had to sit here all night, cutting open his own hand with this quill. &amp;raquo;&lt;/li&gt;
&lt;li&gt;他知道她在注视他,看他有没有软弱的迹象,他不想显露出一丝一毫的软弱,即使他要在这里坐一整夜,用这支羽毛笔把自己的手深深地割开…… &amp;raquo;&lt;/li&gt;
&lt;li&gt;Harry opened his mouth, closed it again, and nodded. He was not really sure why he was not telling Ron and Hermione exactly what was happening in Umbridge’s room: He only knew that he did not want to see their looks of horror; that would make the whole thing seem worse and therefore more difficult to face. He also felt dimly that this was between himself and Umbridge, a private battle of wills, and he was not going to give her the satisfaction of hearing that he had complained about it. &amp;raquo;&lt;/li&gt;
&lt;li&gt;哈利张了张嘴又闭上了,随即点了点头。他也不明白自己为什么不想把乌姆里奇办公室里发生的一切告诉罗恩和赫敏。他只知道他不想看到他们脸上惊恐的表情,那只会使事情显得更加糟糕,因而也就更难面对。他还隐隐约约地感到,这是他和乌姆里奇之间的事情,是一场秘密的意志较量,他不想让她听到他在哭诉埋怨并因此而感到快意。 &amp;raquo;&lt;/li&gt;
&lt;li&gt;Harry had the distinct impression that he was not alone in concealing things at the moment &amp;raquo;&lt;/li&gt;
&lt;li&gt;哈利有一个很清楚的感觉:此刻隐瞒事情真相的不止他一个人。 &amp;raquo;&lt;/li&gt;
&lt;li&gt;He had never before considered the possibility that there might be another teacher in the world he hated more than Snape, but as he walked back toward Gryffindor Tower he had to admit he had found a contender. &amp;raquo;&lt;/li&gt;
&lt;li&gt;哈利以前认为,他不可能恨世界上的哪个老师比恨斯内普更厉害, 可是当他走回格兰芬多的塔楼时,他不得不承认为斯内普找到了一位强有力的竞争对手。 &amp;raquo;&lt;/li&gt;
&lt;li&gt;These were rather feeble rays of light, it was true, but Harry was grateful for anything that might lighten his present darkness; he had never had a worse first week of term at Hogwarts. &amp;raquo;&lt;/li&gt;
&lt;li&gt;当然,这些都是十分渺茫的希望之光,可是哈利目前的处境一片黑暗,但凡有什么事情能带来一点点光亮,他都会感到欣慰。他在霍格沃茨还从未经历过比这更糟糕的开学第一个星期呢。 &amp;raquo;&lt;/li&gt;
&lt;li&gt;Harry looked into her face, which was shining with glee, and tried to look as though he was vaguely tempted by this offer. &amp;raquo;&lt;/li&gt;
&lt;li&gt;哈利仔细望着她的脸,发现那上面闪烁着喜悦的光芒,他竭力显出对她提出的建议有点儿动心的样子 &amp;raquo;&lt;/li&gt;
&lt;li&gt;She blinked her amber eyes once and he took that to mean that she understood. &amp;raquo;&lt;/li&gt;
&lt;li&gt;海德薇眨了一下琥珀色的眼睛,哈利知道这表示它听明白了。 &amp;raquo;&lt;/li&gt;
&lt;li&gt;“Nice day,” he said, gesturing to the windows. His insides seemed to shrivel with embarrassment. The weather. He was talking about the weather.
… &amp;raquo;&lt;/li&gt;
&lt;li&gt;“天气真不错。”他说着指了指窗外。他的五脏六腑似乎都因尴尬而缩成了一团。天气。他居然在谈天气…… &amp;raquo;&lt;/li&gt;
&lt;li&gt;“Sorry …” Ron repeated, his red face shining like a beacon against the bright blue sky. &amp;raquo;&lt;/li&gt;
&lt;li&gt;“对不起……”罗恩又说了一遍,他的脸在蔚蓝色天空的衬托下,像烽火台一样红得发亮。 &amp;raquo;&lt;/li&gt;
&lt;li&gt;“Give it back,” said Ron, holding out his hand. “He is —” Ron said jerkily, tearing Percy’s letter in half, “the world’s” — he tore it into quarters — “biggest” — he tore it into eighths — “git.” He threw the pieces into the fire. &amp;raquo;&lt;/li&gt;
&lt;li&gt;“把信还给我,”罗恩伸出手说,“他是——”罗恩冲动地说,一把将珀西的信撕成两半,“世界上——”他将信撕成四片,“最大的——”他将信撕成八片,“傻瓜。”他把碎纸片扔进了炉火。 &amp;raquo;&lt;/li&gt;
&lt;li&gt;He also felt an odd, sick, empty feeling in his stomach that had nothing to do with tiredness and everything to do with the letter now curling blackly in the heart of the fire. &amp;raquo;&lt;/li&gt;
&lt;li&gt;他还感到内心有一种空落落的、不舒服的异样感觉,这感觉跟疲劳没有关系,而跟此刻在炉火里卷成黑色灰烬的那封信大有关系。 &amp;raquo;&lt;/li&gt;
&lt;li&gt;He knew that half the people inside Hogwarts thought him strange, even mad; he knew that the Daily Prophet had been making snide allusions to him for months, but there was something about seeing it written down like that in Percy’s writing, about knowing that Percy was advising Ron to drop him and even to tell tales on him to Umbridge, that made his situation real to him as nothing else had. He had known Percy for four years, had stayed in his house during the summers, shared a tent with him during the Quidditch World Cup, had even been awarded full marks by him in the second task of the Triwizard Tournament last year, yet now, Percy thought him unbalanced and possibly violent. &amp;raquo;&lt;/li&gt;
&lt;li&gt;他知道霍格沃茨校内一半的人都认为他很古怪,甚至很疯狂。他知道《预言家日报》几个月来一直别有用心地在提及他,但是此刻看见珀西信里白纸黑字地写着那样的话,得知珀西建议罗恩与他断绝关系,甚至到乌姆里奇那里去告他的状,他这才第一次真真切切地认识到自己的处境。他已经认识珀西四年了,暑假曾住在他们家里,魁地奇球世界杯赛时还跟他合住一个帐篷,甚至在上学期的三强争霸赛的第二个项目中,还从他那里得到过满分,然而现在,珀西认为他精神错乱,还可能有暴力倾向。 &amp;raquo;&lt;/li&gt;
&lt;li&gt;codes are breakable &amp;raquo;&lt;/li&gt;
&lt;li&gt;密码是可以被人破译的。 &amp;raquo;&lt;/li&gt;
&lt;li&gt;but the world isn’t split into good people and Death Eaters &amp;raquo;&lt;/li&gt;
&lt;li&gt;但是世界上并不是只有好人和食死徒 &amp;raquo;&lt;/li&gt;
&lt;li&gt;The risk would’ve been what made it fun for James.” &amp;raquo;&lt;/li&gt;
&lt;li&gt;“对詹姆来说,只有冒险才是有趣的。 &amp;raquo;&lt;/li&gt;
&lt;li&gt;Hermione was breathing fast and her eyes were very bright. “I can’t believe this. It’s outrageous. …” &amp;raquo;&lt;/li&gt;
&lt;li&gt;赫敏呼吸急促,两只眼睛炯炯发亮,“我真不敢相信。这简直是无耻! &amp;raquo;&lt;/li&gt;
&lt;li&gt;top grade’s O for ‘Outstanding &amp;raquo;&lt;/li&gt;
&lt;li&gt;E for ‘Exceeds Expectations &amp;raquo;&lt;/li&gt;
&lt;li&gt;A for ‘Acceptable, &amp;raquo;&lt;/li&gt;
&lt;li&gt;P for ‘Poor’ &amp;raquo;&lt;/li&gt;
&lt;li&gt;D for ‘Dreadful &amp;raquo;&lt;/li&gt;
&lt;li&gt;And then T, &amp;raquo;&lt;/li&gt;
&lt;li&gt;Troll &amp;raquo;&lt;/li&gt;
&lt;li&gt;He did not complain during the evening’s detention; he was determined not to give Umbridge the satisfaction; &amp;raquo;&lt;/li&gt;
&lt;li&gt;晚上关禁闭时他没有叫一声痛,他打定主意不让乌姆里奇感到得意。 &amp;raquo;&lt;/li&gt;
&lt;li&gt;Ron and Hermione were still smirking and Harry felt his temper rise; he wasn’t even sure why he was feeling so angry. &amp;raquo;&lt;/li&gt;
&lt;li&gt;罗恩和赫敏还在那儿发笑,哈利觉得自己的火气上来了。他自己也不明白为什么这么生气。 &amp;raquo;&lt;/li&gt;
&lt;li&gt;“You don’t know what it’s like! You — neither of you — you’ve never had to face him, have you? You think it’s just memorizing a bunch of spells and throwing them at him, like you’re in class or something? The whole time you know there’s nothing between you and dying except your own — your own brain or guts or whatever — like you can think straight when you know you’re about a second from being murdered, or tortured, or watching your friends die — they’ve never taught us that in their classes, what it’s like to deal with things like that — and you two sit there acting like I’m a clever little boy to be standing here, alive, like Diggory was stupid, like he messed up — you just don’t get it, that could just as easily have been me, it would have been if Voldemort hadn’t needed me —” &amp;raquo;&lt;/li&gt;
&lt;li&gt;“你们根本不知道那是什么滋味儿!你们——你们谁都没有面对过他,是不是?你们以为那只是背诵一大堆魔咒朝他们扔过去,就像你们在课堂上那样?那些时候,你明明知道在你和死亡之间没有任何东西, 除了你自己——你自己的智慧,或勇气,或其他什么——你明知道自己转眼间就会被人杀害,或遭受折磨,或眼睁睁地看着朋友死去,还怎么能够正常地思考,他们从没有在课堂上告诉过我们,跟那样的东西打交道是什么感觉——而你们两个坐在这里摆出这副样子,就好像我是一个聪明的男孩所以才活着站在这里,就好像塞德里克是个傻瓜,把事情弄糟了——你们根本不明白,那个人很有可能就是我,如果不是因为伏地魔需要我——” &amp;raquo;&lt;/li&gt;
&lt;li&gt;“Reparo,” Harry muttered, pointing his wand at the broken pieces of china. They flew back together, good as new, but there was no returning the murtlap essence to the bowl. &amp;raquo;&lt;/li&gt;
&lt;li&gt;“恢复如初。”哈利用魔杖指着那些碎瓷片,低声说道。碎片立刻拼拢在一起,瓷碗又完好如初,可是里面的莫特拉鼠触角汁再也回不来了。 &amp;raquo;&lt;/li&gt;
&lt;li&gt;在英语里,“差”(poor)的第一个字母是P。在英语里,“糟透了”(dreadful)的第一个字母是D。在英语里,“优秀”(outstanding)的第一个字母是O。在英语里,“超出预期”(Exceeds Expectations)的第一个字母是E,即通常所说的“良好”。在英语里,“及格”(Acceptable)的第一个字母是A。在英语里,“巨怪”(troll)的第一个字母是T。在英语里,特里劳妮(Trelawney)的第一个字母是T。 &amp;raquo;&lt;/li&gt;
&lt;li&gt;took matters into our own hands &amp;raquo;&lt;/li&gt;
&lt;li&gt;自己解决问题 &amp;raquo;&lt;/li&gt;
&lt;li&gt;There was an odd feeling in the group now. It was as though they had just signed some kind of contract. &amp;raquo;&lt;/li&gt;
&lt;li&gt;现在小组里有了一种奇怪的感觉。似乎大家刚刚签了一份契约。 &amp;raquo;&lt;/li&gt;
&lt;li&gt;time’s ticking on &amp;raquo;&lt;/li&gt;
&lt;li&gt;时间过得真快 &amp;raquo;&lt;/li&gt;
&lt;li&gt;Well,” said Hermione, smiling slightly, “she just couldn’t keep her eyes off you, could she?”Harry had never before appreciated just how beautiful the village of Hogsmeade was. &amp;raquo;&lt;/li&gt;
&lt;li&gt;“嘿,”赫敏微微带笑地说道,“她简直就不能把目光从你身上挪开,是不是?”哈利以前从没有发现霍格莫德村竟是这样美丽。 &amp;raquo;&lt;/li&gt;
&lt;li&gt;but it says in Hogwarts, A History that the founders thought boys were less trustworthy than girls. &amp;raquo;&lt;/li&gt;
&lt;li&gt;可是《霍格沃茨,一段校史》说学校创始人认为男孩没有女孩可靠。 &amp;raquo;&lt;/li&gt;
&lt;li&gt;Crookshanks purred loudly and approached the fire, trying, despite the heat, to put his face close to Sirius’s. &amp;raquo;&lt;/li&gt;
&lt;li&gt;克鲁克山喵喵叫着凑近炉火,不顾灼热,想去亲小天狼星的脸。 &amp;raquo;&lt;/li&gt;
&lt;li&gt;Last year all the evidence was that someone inside Hogwarts was trying to kill you, Harry!” said Sirius impatiently. “This year we know that there’s someone outside Hogwarts who’d like to kill us all, so I think learning to defend yourselves properly is a very good idea! &amp;raquo;&lt;/li&gt;
&lt;li&gt;上学期是霍格沃茨校内有人想杀你,哈利!”小天狼星不耐烦地说,“这学期我们知道霍格沃茨校外有人想把我们都干掉,所以我想学习自卫是很好的主意! &amp;raquo;&lt;/li&gt;
&lt;li&gt;Well, better expelled and able to defend yourselves than sitting safely in school without a clue,” said Sirius. &amp;raquo;&lt;/li&gt;
&lt;li&gt;宁可为自卫而被开除,也比安全地坐在学校里两眼一摸黑强。”小天狼星说。 &amp;raquo;&lt;/li&gt;
&lt;li&gt;You don’t want to wave it, it’s more a sharp jab. &amp;raquo;&lt;/li&gt;
&lt;li&gt;不要挥舞, 应该迅速一刺。 &amp;raquo;&lt;/li&gt;
&lt;li&gt;She looked around at Harry, her face glowing, and he saw that the presence of hundreds of books had finally convinced Hermione that what they were doing was right. &amp;raquo;&lt;/li&gt;
&lt;li&gt;”她回头望着哈利,脸上放光,哈利看到这几百本书终于让赫敏相信他们的行动是对的了,“ &amp;raquo;&lt;/li&gt;
&lt;li&gt;His greatest weakness was a tendency to lose confidence when he made a blunder &amp;raquo;&lt;/li&gt;
&lt;li&gt;他最大的弱点是犯了错误就会失去信心 &amp;raquo;&lt;/li&gt;
&lt;li&gt;cold as frozen iron &amp;raquo;&lt;/li&gt;
&lt;li&gt;寒如冻铁 &amp;raquo;&lt;/li&gt;
&lt;li&gt;Ron seemed to come to himself slightly as they walked back across the Great Hall. He touched the spot on his face where Hermione had kissed him, looking puzzled, as though he was not quite sure what had just happened. &amp;raquo;&lt;/li&gt;
&lt;li&gt;穿过礼堂时,罗恩似乎清醒了一些,摸着面颊上被赫敏亲过的地方,显得有些困惑,仿佛不明白发生了什么。 &amp;raquo;&lt;/li&gt;
&lt;li&gt;a broad smile spreading across her face. &amp;raquo;&lt;/li&gt;
&lt;li&gt;莞尔一笑 &amp;raquo;&lt;/li&gt;
&lt;li&gt;Nosy, some’d call it. Interferin’.” &amp;raquo;&lt;/li&gt;
&lt;li&gt;有人管这叫——包打听。多管闲事 &amp;raquo;&lt;/li&gt;
&lt;li&gt;Hermione said “wow” softly, but Harry and Ron both frowned in puzzlement. &amp;raquo;&lt;/li&gt;
&lt;li&gt;赫敏轻轻地哇了一声,但哈利和罗恩都皱起了眉头。 &amp;raquo;&lt;/li&gt;
&lt;li&gt;What do you mean ‘at one point &amp;raquo;&lt;/li&gt;
&lt;li&gt;一度’是什么意思 &amp;raquo;&lt;/li&gt;
&lt;li&gt;“The only people who can see thestrals,” she said, “are people who have seen death.” &amp;raquo;&lt;/li&gt;
&lt;li&gt;“只有见过死亡的人才能看见夜骐。”她说。 &amp;raquo;&lt;/li&gt;
&lt;li&gt;But if Voldemort really wants to kill you, you don’t stand a chance. &amp;raquo;&lt;/li&gt;
&lt;li&gt;可如果伏地魔真想杀你,你没有机会。 &amp;raquo;&lt;/li&gt;
&lt;li&gt;He was in a state of shock. Half of him wanted to tell Ron and Hermione what had just happened, but the other half wanted to take the secret with him to the grave. &amp;raquo;&lt;/li&gt;
&lt;li&gt;他沉浸在震惊中,一半想告诉罗恩和赫敏刚才发生了什么,一半又想把这秘密带进坟墓。 &amp;raquo;&lt;/li&gt;
&lt;li&gt;“Did you kiss?” asked Hermione briskly. &amp;raquo;&lt;/li&gt;
&lt;li&gt;你们接吻了吗?”赫敏干脆地问。 &amp;raquo;&lt;/li&gt;
&lt;li&gt;“Ron,” said Hermione in a dignified voice, dipping the point of her quill into her ink pot, “you are the most insensitive wart I have ever had the misfortune to meet.” &amp;raquo;&lt;/li&gt;
&lt;li&gt;“罗恩,”赫敏板着脸说,把羽毛笔伸到墨水瓶里,“你是我不幸遇到的最浑的浑球儿。” &amp;raquo;&lt;/li&gt;
&lt;li&gt;Hermione looked at the pair of them with an almost pitying expression on her face. &amp;raquo;&lt;/li&gt;
&lt;li&gt;赫敏带着几乎是怜悯的表情看着他们这一对。 &amp;raquo;&lt;/li&gt;
&lt;li&gt;Well, obviously, she’s feeling very sad, because of Cedric dying. Then I expect she’s feeling confused because she liked Cedric and now she likes Harry, and she can’t work out who she likes best. Then she’ll be feeling guilty, thinking it’s an insult to Cedric’s memory to be kissing Harry at all, and she’ll be worrying about what everyone else might say about her if she starts going out with Harry. And she probably can’t work out what her feelings toward Harry are anyway, because he was the one who was with Cedric when Cedric died, so that’s all very mixed up and painful. Oh, and she’s afraid she’s going to be thrown off the Ravenclaw Quidditch team because she’s been flying so badly.” &amp;raquo;&lt;/li&gt;
&lt;li&gt;显而易见,她心里很悲伤,因为塞德里克的死。同时我想她有些困惑,因为她以前喜欢过塞德里克,现在又喜欢哈利,她搞不清到底最喜欢谁。同时她还感到内疚,觉得和哈利接吻是对塞德里克的亵渎。她还担心,要是她跟哈利好的话,别人会怎么说。而且,她可能还搞不清对哈利的感情,因为塞德里克死时哈利在场。所以这一切非常矛盾和痛苦。哦,她还怕被踢出拉文克劳魁地奇球队,因为她近来飞得那么差。” &amp;raquo;&lt;/li&gt;
&lt;li&gt;“Just because you’ve got the emotional range of a teaspoon doesn’t mean we all have,” said Hermione nastily, picking up her quill again. &amp;raquo;&lt;/li&gt;
&lt;li&gt;“你自己只有一茶匙的感情,并不代表人人都是这样。”赫敏挖苦道,又拿起了她的笔。 &amp;raquo;&lt;/li&gt;
&lt;li&gt;Hermione looked as though she was restraining herself from rolling her eyes with extreme difficulty. &amp;raquo;&lt;/li&gt;
&lt;li&gt;赫敏似乎用了很大努力才忍住没有翻眼睛。 &amp;raquo;&lt;/li&gt;
&lt;li&gt;That’s what they should teach us here, he thought, turning over onto his side, how girls’ brains work … it’d be more useful than Divination anyway.
… &amp;raquo;&lt;/li&gt;
&lt;li&gt;学校应该教这个,他翻了个身想道,女孩子的心思……这至少比占卜课有用得多。 &amp;raquo;&lt;/li&gt;
&lt;li&gt;“But she may already know …that excellent clock of hers …” &amp;raquo;&lt;/li&gt;
&lt;li&gt;“但她可能已经知道了……她那奇妙的挂钟……” &amp;raquo;&lt;/li&gt;
&lt;li&gt;He indicated the old kettle lying innocently on his desk. &amp;raquo;&lt;/li&gt;
&lt;li&gt;他指了指桌上那把看上去很无辜的旧茶壶。“ &amp;raquo;&lt;/li&gt;
&lt;li&gt;His stomach was full of horrible hot, bubbling guilt. &amp;raquo;&lt;/li&gt;
&lt;li&gt;他的胃里充满了可怕的、烧灼的负疚感。 &amp;raquo;&lt;/li&gt;
&lt;li&gt;You read my mind, &amp;raquo;&lt;/li&gt;
&lt;li&gt;你是我肚里的蛔虫 &amp;raquo;&lt;/li&gt;
&lt;li&gt;“Do it today or later you’ll pay!” &amp;raquo;&lt;/li&gt;
&lt;li&gt;今日事,今日毕!” &amp;raquo;&lt;/li&gt;
&lt;li&gt;Only those skilled at Occlumency are able to shut down those feelings and memories that contradict the lie, and so utter falsehoods in his presence without detection. &amp;raquo;&lt;/li&gt;
&lt;li&gt;只有擅长大脑封闭术的人才能封住与谎话矛盾的感觉和记忆,在他面前说谎而不被发现。 &amp;raquo;&lt;/li&gt;
&lt;li&gt;Time and space matter in magic, Potter. Eye contact is often essential to Legilimency. &amp;raquo;&lt;/li&gt;
&lt;li&gt;时间和空间对魔法是有影响的,波特。目光接触对摄神取念往往很关键。 &amp;raquo;&lt;/li&gt;
&lt;li&gt;The evidence suggests that at times, when your mind is most relaxed and vulnerable — when you are asleep, for instance — you are sharing the Dark Lord’s thoughts and emotions. &amp;raquo;&lt;/li&gt;
&lt;li&gt;迹象表明,有些时候,当你的头脑最放松、最脆弱时——比如在睡梦中,你能感知黑魔头的思想和情绪。 &amp;raquo;&lt;/li&gt;
&lt;li&gt;I mean, he’s spent a good six months telling everyone you and Dumbledore are liars, hasn’t he?” &amp;raquo;&lt;/li&gt;
&lt;li&gt;他花了六个月对大家说你和邓布利多是骗子,不是吗? &amp;raquo;&lt;/li&gt;
&lt;li&gt;“Shut up, Ron,” said Hermione angrily. “How many times have you suspected Snape, and when have you ever been right? Dumbledore trusts him, he works for the Order, that ought to be enough.” &amp;raquo;&lt;/li&gt;
&lt;li&gt;“别胡说,罗恩,”赫敏生气地打断他,“你怀疑过斯内普多少次了,哪次是对的?邓布利多信任他,他为凤凰社工作,这就够了。” &amp;raquo;&lt;/li&gt;
&lt;li&gt;Hermione glanced over at the back of Cho’s head and sighed. “Oh, Harry,” she said sadly. “Well, I’m sorry, but you were a bit tactless.” &amp;raquo;&lt;/li&gt;
&lt;li&gt;赫敏望着秋的背影,叹了口气。“噢,哈利,”她悲哀地说,“我很难过,但你真是缺点儿心眼。” &amp;raquo;&lt;/li&gt;
&lt;li&gt;Well, you see,” said Hermione, with the patient air of one explaining that one plus one equals two to an overemotional toddler, “you shouldn’t have told her that you wanted to meet me halfway through your date.” &amp;raquo;&lt;/li&gt;
&lt;li&gt;“噢,你看,”赫敏用对一个情绪冲动的小毛娃解释一加一等于二那么耐心的口气说,“你不应该在跟她约会的时候说你要见我。” &amp;raquo;&lt;/li&gt;
&lt;li&gt;“She’s been breaking into your broom shed in the garden since the age of six and taking each of your brooms out in turn when you weren’t looking,”said Hermione from behind her tottering pile of Ancient Rune books &amp;raquo;&lt;/li&gt;
&lt;li&gt;“她从六岁起就钻进扫帚棚,轮流偷用你们的扫帚。”赫敏在她那堆摇摇欲倒的古代魔文书后面说。 &amp;raquo;&lt;/li&gt;
&lt;li&gt;Oh Harry, don’t you see?” Hermione breathed. “If she could have done one thing to make absolutely sure that every single person in this school will read your interview, it was banning it!” &amp;raquo;&lt;/li&gt;
&lt;li&gt;“哦,哈利,你看不出来吗?”赫敏小声说,“如果她能做一件事绝对保证学校里每个人都会读采访你的文章,那就是禁止它!” &amp;raquo;&lt;/li&gt;
&lt;li&gt;“And the best bit is,” whispered Hermione gleefully as they left the library, “they can’t contradict you, because they can’t admit they’ve read the article!” &amp;raquo;&lt;/li&gt;
&lt;li&gt;“最妙的是,”离开图书馆时,赫敏开心地小声说,“他们不能反驳你,因为他们不能承认看过那篇文章!” &amp;raquo;&lt;/li&gt;
&lt;li&gt;“There’s things more importan’ than keepin’ a job,” said Hagrid, though &amp;raquo;&lt;/li&gt;
&lt;li&gt;“有些事比保住工作更重要,”海格说 &amp;raquo;&lt;/li&gt;
&lt;li&gt;“I have not yet managed to find one,” Umbridge admitted grudgingly, and Harry felt a surge of pride in Hermione’s jinxing ability. &amp;raquo;&lt;/li&gt;
&lt;li&gt;我还没能找到,”乌姆里奇不情愿地承认道,赫敏使用咒语的能力使哈利心里涌起了一阵自豪感, &amp;raquo;&lt;/li&gt;
&lt;li&gt;“Oh, so that’s why he wasn’t prosecuted for setting up all those regurgitating toilets!” said Professor McGonagall, raising her eyebrows.
“What an interesting insight into our justice system!” &amp;raquo;&lt;/li&gt;
&lt;li&gt;“哦,原来就是为了这件事,他才被免除了对他制造的厕所污水回涌事件的起诉!”麦格教授扬起眉毛说,“我们的司法系统真是让人大开眼界啊!” &amp;raquo;&lt;/li&gt;
&lt;li&gt;It’s like losing a Knut and finding a Galleon &amp;raquo;&lt;/li&gt;
&lt;li&gt;丢了芝麻捡了西瓜, &amp;raquo;&lt;/li&gt;
&lt;li&gt;Fudge seemed not to hear her. He was looking around at the wrecked office. A few of the portraits hissed at him; one or two even made rude hand gestures. &amp;raquo;&lt;/li&gt;
&lt;li&gt;福吉好像没有听到她说什么。他在四下打量着被毁坏的办公室。几幅肖像朝他发出不满的嘘声;有一两幅甚至做出了粗鲁的手势。 &amp;raquo;&lt;/li&gt;
&lt;li&gt;“You know, Minister, I disagree with Dumbledore on many counts … but you cannot deny he’s got style. …” &amp;raquo;&lt;/li&gt;
&lt;li&gt;“你知道,部长,我在很多问题上跟邓布利多的意见都不一样……但是你不能否认他很有个 &amp;raquo;&lt;/li&gt;
&lt;li&gt;Guilty conscience &amp;raquo;&lt;/li&gt;
&lt;li&gt;“做贼心虚 &amp;raquo;&lt;/li&gt;
&lt;li&gt;The upshot of it all was that Professor Umbridge spent her first afternoon as headmistress running all over the school answering the summonses of the other teachers, none of whom seemed able to rid their rooms of the fireworks without her. &amp;raquo;&lt;/li&gt;
&lt;li&gt;结果乌姆里奇当上校长的头一个下午,全都用来在学校各处跑来跑去,应付其他老师的要求。离了她,这些老师好像谁都没办法清除自己房间里的烟火。 &amp;raquo;&lt;/li&gt;
&lt;li&gt;Fred and George were heroes that night in the Gryffindor common room.
Even Hermione fought her way through the excited crowd around them to congratulate them. &amp;raquo;&lt;/li&gt;
&lt;li&gt;那天晚上,在格兰芬多公共休息室里,弗雷德和乔治成了英雄。连赫敏都奋力挤过兴奋的人群去祝贺他们。 &amp;raquo;&lt;/li&gt;
&lt;li&gt;“Now you mention it,” said Hermione happily, “d’you know … I think I’m feeling a bit … rebellious.” &amp;raquo;&lt;/li&gt;
&lt;li&gt;“既然你这么说,”赫敏愉快地说,“你知道……我想我找到了点……叛逆的感觉。” &amp;raquo;&lt;/li&gt;
&lt;li&gt;He did feel Cho might have chosen her friends a bit more carefully. &amp;raquo;&lt;/li&gt;
&lt;li&gt;他确实觉得秋·张在挑选朋友时也许应该更谨慎一些 &amp;raquo;&lt;/li&gt;
&lt;li&gt;Sunshine was streaming through the high windows onto the bent heads, which shone chestnut and copper and gold in the bright light. &amp;raquo;&lt;/li&gt;
&lt;li&gt;阳光穿过高大的窗户,照射在那些低下去的脑袋上,在明亮的光线中,那些脑袋映现出灰褐色、红棕色和金色的光泽。 &amp;raquo;&lt;/li&gt;
&lt;li&gt;He had become very still, like a dog that has scented a rabbit. &amp;raquo;&lt;/li&gt;
&lt;li&gt;他突然变得一动不动了,就像一条嗅到了兔子的狗。 &amp;raquo;&lt;/li&gt;
&lt;li&gt;All right, Evans?” said James, and the tone of his voice was suddenly pleasant, deeper, more mature. &amp;raquo;&lt;/li&gt;
&lt;li&gt;“你好吗,伊万斯?”詹姆说,他的语调突然友好起来,变得更深沉更成熟了。 &amp;raquo;&lt;/li&gt;
&lt;li&gt;What was making Harry feel so horrified and unhappy was not being shouted at or having jars thrown at him — it was that he knew how it felt to be humiliated in the middle of a circle of onlookers, knew exactly how Snape had felt as his father had taunted him, and that judging from what he had just seen, his father had been every bit as arrogant as Snape had always told him. &amp;raquo;&lt;/li&gt;
&lt;li&gt;哈利觉得那么恐惧、难过,这并不是因为斯内普冲他大喊大叫,也不是因为斯内普用罐子砸他,而是因为他了解在一圈旁观者中当众受辱是什么滋味,他很清楚斯内普被他的父亲嘲弄时到底是什么心情,从他刚才的所见所闻来看,他的父亲确实是个傲慢自大的人,跟斯内普一直以来对他所讲述的一模一样。 &amp;raquo;&lt;/li&gt;
&lt;li&gt;For nearly five years the thought of his father had been a source of comfort, of inspiration. Whenever someone had told him he was like James he had glowed with pride inside. And now … now he felt cold and miserable at the thought of him. &amp;raquo;&lt;/li&gt;
&lt;li&gt;几乎五年了,对爸爸的思念一直是他感到安慰和鼓舞的源泉。每当有人说他很像詹姆,他心中就洋溢着自豪。可现在……现在他一想起詹姆就觉得寒心、难过。 &amp;raquo;&lt;/li&gt;
&lt;li&gt;said Ginny thoughtfully, “is that you sort of start thinking anything’s possible if you’ve got enough nerve.” &amp;raquo;&lt;/li&gt;
&lt;li&gt;金妮若有所思地说道,“如果你胆量够大,你就会觉得任何事情都能办到。” &amp;raquo;&lt;/li&gt;
&lt;li&gt;“What do you think about this?” Hermione demanded of Ron, and Harry was reminded irresistibly of Mrs. Weasley appealing to her husband during Harry’s first dinner in Grimmauld Place. &amp;raquo;&lt;/li&gt;
&lt;li&gt;“你怎么看这个想法?”赫敏问罗恩,这不禁使哈利想起自己头一次在格里莫广场吃晚饭时,韦斯莱夫人向自己的丈夫求助的情形。 &amp;raquo;&lt;/li&gt;
&lt;li&gt;wand, she hurried off in the opposite direction: &amp;raquo;&lt;/li&gt;
&lt;li&gt;“Look,” he said, “your father was the best friend I ever had, and he was a good person. A lot of people are idiots at the age of fifteen. He grew out of it.” &amp;raquo;&lt;/li&gt;
&lt;li&gt;“瞧,”他说,“你爸爸是我最好的朋友,他是个好人。很多人在十五岁时都是傻乎乎的。他长大后就不再那样了。” &amp;raquo;&lt;/li&gt;
&lt;li&gt;And Peeves, whom Harry had never seen take an order from a student before, swept his belled hat from his head and sprang to a salute as Fred and George wheeled about to tumultuous applause from the students below and sped out of the open front doors into the glorious sunset. &amp;raquo;&lt;/li&gt;
&lt;li&gt;哈利以前从来没见过皮皮鬼听从学生的命令,可皮皮鬼却突然挥动自己漏斗形的帽子向弗雷德和乔治行了个礼,他们俩在下面学生们热烈的掌声中猛地掉转方向,飞快地冲出敞开的前门,飞进了外面美丽的落日余晖中。 &amp;raquo;&lt;/li&gt;
&lt;li&gt;Harry was certain that teachers like McGonagall or Flitwick could have removed the swamp in an instant, but just as in the case of Fred and George’s Wildfire Whiz-Bangs, they seemed to prefer to watch Umbridge struggle. &amp;raquo;&lt;/li&gt;
&lt;li&gt;哈利确信像麦格和弗立维这样的老师眨眼之间就能消除沼泽,但是就跟面对弗雷德和乔治的嗖嗖一嘭烟火的时候一样,他们好像更乐意看着乌姆里奇在那里白费力气。 &amp;raquo;&lt;/li&gt;
&lt;li&gt;“She started going out with him in seventh year,” said Lupin.“Once James had deflated his head a bit,” said Sirius.“And stopped hexing people just for the fun of it,” said Lupin. &amp;raquo;&lt;/li&gt;
&lt;li&gt;“上七年级的时候,她开始和詹姆出去玩了。”卢平说。“因为詹姆不那么自大了。”小天狼星说。“还因为他不再为了取乐对别人施咒语了。”卢平说。 &amp;raquo;&lt;/li&gt;
&lt;li&gt;“I doubt it,” shouted tiny Professor Marchbanks, “not if Dumbledore doesn’t want to be found! I should know. … Examined him personally in Transfiguration and Charms when he did N.E.W.T.s … Did things with a wand I’d never seen before …” &amp;raquo;&lt;/li&gt;
&lt;li&gt;我很怀疑这一点,”矮小的玛奇班教授大声说,“要是邓布利多不想被别人发现,那就不可能抓到他!我还记得……他参加N.E.W.
Ts考试时,是我本人考他的变形学和魔咒学……他用魔杖做出了我以前从来没见过的事情。” &amp;raquo;&lt;/li&gt;
&lt;li&gt;It was a mark of the seriousness of the situation that Hermione made no objection to the smashing up of the Transfiguration department. &amp;raquo;&lt;/li&gt;
&lt;li&gt;赫敏没有反对捣毁变形课教室,这说明事态已经非常严重了。 &amp;raquo;&lt;/li&gt;
&lt;li&gt;“Luna and I can stand at either end of the corridor,” said Ginny promptly, “and warn people not to go down there because someone’s let off a load of Garroting Gas.” Hermione looked surprised at the readiness with which Ginny had come up with this lie. Ginny shrugged and said, “Fred and George were planning to do it before they left.” &amp;raquo;&lt;/li&gt;
&lt;li&gt;“卢娜和我可以站在走廊两头,”金妮飞快地说,“警告人们不要去那里,因为有人放出了大量锁喉毒气。”金妮这么快就编出了这个谎话,让赫敏显得很惊讶。金妮耸耸肩膀说:“弗雷德和乔治离开以前正打算这么做。” &amp;raquo;&lt;/li&gt;
&lt;li&gt;Ginny was staring at Hermione as though she had never seen her before; Neville, still choking for breath, was gazing at her too. But Harry had just noticed something. Though Hermione was sobbing desperately into her hands, there was no trace of a tear. … &amp;raquo;&lt;/li&gt;
&lt;li&gt;金妮瞪着赫敏,就像以前从来没见过她似的。纳威仍然憋得透不过气来,但是也在盯着她。不过哈利刚刚注意到,尽管赫敏在用双手捂着脸拼命呜咽,但是却没有一滴眼泪。 &amp;raquo;&lt;/li&gt;
&lt;li&gt;Harry whirled around. Standing between two trees, their white eyes gleaming eerily, were two thestrals, watching the whispered conversation as though they understood every word. &amp;raquo;&lt;/li&gt;
&lt;li&gt;哈利转过身,看到两匹夜骐正站在两棵树之间,胆怯地眨动着白色眼睛,注视着这场秘密谈话,就好像每一句话它们都能听懂似的。 &amp;raquo;&lt;/li&gt;
&lt;li&gt;In spidery writing was written a date of some sixteen years previously &amp;raquo;&lt;/li&gt;
&lt;li&gt;上面用精巧的字体标着一个大约是十六年以前的一个日期 &amp;raquo;&lt;/li&gt;
&lt;li&gt;“Indeed, your failure to understand that there are things much worse than death has always been your greatest weakness —” &amp;raquo;&lt;/li&gt;
&lt;li&gt;“事实上,你最大的失败就是不能理解还有比死亡更坏的事情——” &amp;raquo;&lt;/li&gt;
&lt;li&gt;This office is supposed to be barred to all but the rightful headmaster. &amp;raquo;&lt;/li&gt;
&lt;li&gt;这间办公室除了合法的校长之外,其他人是禁止入内的。 &amp;raquo;&lt;/li&gt;
&lt;li&gt;“You see, Dumbledore?” said Phineas Nigellus slyly. “Never try to understand the students. They hate it. They would much rather be tragically misunderstood, wallow in self-pity, stew in their own —” &amp;raquo;&lt;/li&gt;
&lt;li&gt;“你瞧,邓布利多?”菲尼亚斯·奈杰勒斯狡黠地说,“千万不要想方设法去了解学生们的心思。他们讨厌这样做。他们宁愿被伤心地误会, 一个劲儿地自哀自怜,备受煎熬……” &amp;raquo;&lt;/li&gt;
&lt;li&gt;There is no shame in what you are feeling, Harry,” said Dumbledore’s voice. “On the contrary … the fact that you can feel pain like this is your greatest strength.” &amp;raquo;&lt;/li&gt;
&lt;li&gt;“你心里的感受,没有什么可丢脸的,哈利,”邓布利多说道,“恰恰相反……事实上你能感受到这样的痛苦,正是你最坚强之处。” &amp;raquo;&lt;/li&gt;
&lt;li&gt;Harry looked up. He could see now that Dumbledore looked sad and tired. &amp;raquo;&lt;/li&gt;
&lt;li&gt;哈利抬起眼睛,看到邓布利多此时一脸的忧伤和疲惫。 &amp;raquo;&lt;/li&gt;
&lt;li&gt;“You see,” continued Dumbledore heavily “I believed it could not be long before Voldemort attempted to force his way into your mind, to manipulate and misdirect your thoughts, and I was not eager to give him more incentives to do so. I was sure that if he realized that our relationship was — or had ever been — closer than that of headmaster and pupil, he would seize his chance to use you as a means to spy on me. I feared the uses to which he would put you, the possibility that he might try and possess you.
Harry, I believe I was right to think that Voldemort would have made use of you in such a way. On those rare occasions when we had close contact, I thought I saw a shadow of him stir behind your eyes. … I was trying, in distancing myself from you, to protect you. An old man’s mistake …” &amp;raquo;&lt;/li&gt;
&lt;li&gt;“你看,”邓布利多继续往下说道,“伏地魔打算进入你的头脑,控制并误导你的思想,我相信他是在不久前才有这个想法的,我不想让他这种愿望变得更强烈。我相信如果他知道我们之间的关系——无论是现在还是以前,比起校长与学生之间应有的关系要亲密得多,他就会抓住这个可乘之机,利用你来暗中监视我。我担心他会利用你,担心他会设法控制你。哈利,我认为我这样想是对的,伏地魔会通过这样的方式来利用你。就在我们仅有的几次见面中,我想我看到了他的影子在你的眼睛后面晃动……” &amp;raquo;&lt;/li&gt;
&lt;li&gt;Harry remembered the feeling that a dormant snake had risen in him, ready to strike, on those occasions when he and Dumbledore made eye contact. &amp;raquo;&lt;/li&gt;
&lt;li&gt;哈利记起这段时间以来每当他与邓布利多的目光接触时,总是感到自己身体里有条潜伏的蛇苏醒过来,准备发动攻击。 &amp;raquo;&lt;/li&gt;
&lt;li&gt;Kreacher lied,” said Dumbledore calmly. “You are not his master, he could lie to you without even needing to punish himself. Kreacher intended you to go to the Ministry of Magic.” &amp;raquo;&lt;/li&gt;
&lt;li&gt;“克利切在说谎。”邓布利多平静地说,“你不是他的主人,他欺骗你不用惩罚自己。克利切故意要你去魔法部。” &amp;raquo;&lt;/li&gt;
&lt;li&gt;“Oh yes. Kreacher, I am afraid, has been serving more than one master for months.” &amp;raquo;&lt;/li&gt;
&lt;li&gt;“哦,是的。恐怕克利切这几个月来一直是一仆二主。” &amp;raquo;&lt;/li&gt;
&lt;li&gt;Harry disregarded this; he felt a savage pleasure in blaming Snape, it seemed to be easing his own sense of dreadful guilt, and he wanted to hear Dumbledore agree with him. &amp;raquo;&lt;/li&gt;
&lt;li&gt;哈利根本不理会这些,他在谴责斯内普的过程中,心里有一种痛快淋漓的快感,似乎这样能够缓解他那可怕的罪恶感,同时他还希望邓布利多能够附和他。 &amp;raquo;&lt;/li&gt;
&lt;li&gt;Indifference and neglect often do much more damage than outright dislike. &amp;raquo;&lt;/li&gt;
&lt;li&gt;可是漠不关心,还有视而不见, 往往会比直截了当的厌恶造成的伤害大得多 &amp;raquo;&lt;/li&gt;
&lt;li&gt;Dumbledore closed his eyes and buried his face in his long-fingered hands. Harry watched him, but this uncharacteristic sign of exhaustion, or sadness, or whatever it was from Dumbledore, did not soften him. On the contrary, he felt even angrier that Dumbledore was showing signs of weakness. He had no business being weak when Harry wanted to rage and storm at him. &amp;raquo;&lt;/li&gt;
&lt;li&gt;邓布利多闭上了眼睛,把脸埋在手指修长的双手里。哈利注视着他。这是一种反常的表现,但无论是出于精疲力竭,还是痛苦难过,抑或是出于其他任何情绪,都没有使哈利的火气和缓下来。相反,邓布利多流露出来的软弱表现,更加让他感到愤怒。当哈利想要对他发火、冲他怒吼的时候,他没有理由表现得不坚强。 &amp;raquo;&lt;/li&gt;
&lt;li&gt;“While you can still call home the place where your mother’s blood dwells, there you cannot be touched or harmed by Voldemort. He shed her blood, but it lives on in you and her sister. Her blood became your refuge.
You need return there only once a year, but as long as you can still call it home, there he cannot hurt you. Your aunt knows this. I explained what I had done in the letter I left, with you, on her doorstep. She knows that allowing you houseroom may well have kept you alive for the past fifteen years.” &amp;raquo;&lt;/li&gt;
&lt;li&gt;“And then … well, you will remember the events of your first year at Hogwarts quite as clearly as I do. You rose magnificently to the challenge that faced you, and sooner — much sooner — than I had anticipated, you found yourself face-to-face with Voldemort. You survived again. You did more. You delayed his return to full power and strength. You fought a man’s fight. I was … prouder of you than I can say &amp;raquo;&lt;/li&gt;
&lt;li&gt;接着……我想,你会跟我一样清楚地记得你在霍格沃茨第一年里所发生的事情。你发现自己正与伏地魔进行着面对面的较量,你奋起抵抗,表现得相当出色,这比起我对你的预期要快得多。你再一次从生死关走了出来。不仅如此,你还拖延了他恢复魔力的时间。你打了一场真正男子汉的战斗。我……我为你而骄傲,这种感觉无法用语言来形容。”哈利点了点头 &amp;raquo;&lt;/li&gt;
&lt;li&gt;“I cared more for your happiness than your knowing the truth, more for your peace of mind than my plan, more for your life than the lives that might be lost if the plan failed. In other words, I acted exactly as Voldemort expects we fools who love to act. &amp;raquo;&lt;/li&gt;
&lt;li&gt;“比起让你知道事实真相,我更在乎你的幸福与快乐;比起我的计划,我更在乎你心境的平和;比起计划一旦失败而要做出的牺牲,我更在乎你的生命。换句话说,伏地魔期望我们这些傻瓜去做我们乐意做的事情,而我的做法恰好完全符合他的意愿。 &amp;raquo;&lt;/li&gt;
&lt;li&gt;“But you came out of the maze last year, having watched Cedric Diggory die, having escaped death so narrowly yourself … and I did not tell you, though I knew, now Voldemort had returned, I must do it soon. And now, tonight, I know you have long been ready for the knowledge I have kept from you for so long, because you have proved that I should have placed the burden upon you before this. My only defense is this: I have watched you struggling under more burdens than any student who has ever passed through this school, and I could not bring myself to add another — the greatest one of all.” &amp;raquo;&lt;/li&gt;
&lt;li&gt;“但是去年,你从迷宫里走出来,目睹了塞德里克·迪戈里之死,而你也是死里逃生……我没有告诉你,尽管我知道,伏地魔回来了,我必须尽快告诉你。而现在,今天晚上,我知道,对于我长期以来一直对你隐瞒的事情,你已经早就做好了准备,因为你已经证明了,早在今晚的事情之前,我就应该让你挑起这个重担。我惟一的辩解就是:我看到你背负的重担比以往从这个学校毕业的任何学生都多,而你在这样的重负下努力奋斗,我不能再给你多加上一副重担——那是所有之中最沉重的一副。” &amp;raquo;&lt;/li&gt;
&lt;li&gt;“Voldemort tried to kill you when you were a child because of a prophecy made shortly before your birth. He knew the prophecy had been made, though he did not know its full contents. He set out to kill you when you were still a baby, believing he was fulfilling the terms of the prophecy. He discovered, to his cost, that he was mistaken, when the curse intended to kill you backfired. And so, since his return to his body, and particularly since your extraordinary escape from him last year, he has been determined to hear that prophecy in its entirety. This is the weapon he has been seeking so assiduously since his return: the knowledge of how to destroy you.” &amp;raquo;&lt;/li&gt;
&lt;li&gt;“伏地魔之所以要在你还是个婴儿的时候就干掉你,都是源于你出生前不久的一个预言。尽管他并不是完全了解这个预言的内容,但是他知道有这样一个预言。所以当你还是个婴儿的时候,他就动手要杀你, 他相信这样做是在实现这个预言中陈述的事情。他试图用咒语把你杀死在见不得人的恼怒中,并为此付出了沉重的代价,之后他才发现自己错了。所以自从他回到自己的躯体,特别是自从你去年出人意料地从他手中逃脱之后,他下定决心一定要听到这个预言的全部内容。这就是他自从回来之后一直坚持不懈、努力寻找的武器:除掉你的办法。” &amp;raquo;&lt;/li&gt;
&lt;li&gt;The sun had risen fully now. Dumbledore’s office was bathed in it. The glass case in which the sword of Godric Gryffindor resided gleamed white and opaque, the fragments of the instruments Harry had thrown to the floor glistened like raindrops, and behind him, the baby Fawkes made soft chirruping noises in his nest of ashes. &amp;raquo;&lt;/li&gt;
&lt;li&gt;太阳已经完全升起来了,邓布利多的办公室沐浴在阳光里。装有戈德里克·格兰芬多的宝剑的玻璃容器隐约闪烁出朦胧的白光,被哈利摔在地上的银器碎片如雨滴一般闪耀着光芒,在他身后,那只凤凰的雏鸟在自己铺满灰烬的窝巢里呢喃。 &amp;raquo;&lt;/li&gt;
&lt;li&gt;“The one with the power to vanquish the Dark Lord approaches. … Born to those who have thrice defied him, born as the seventh month dies … and the Dark Lord will mark him as his equal, but he will have power the Dark Lord knows not … and either must die at the hand of the other for neither can live while the other survives. … The one with the power to vanquish the Dark Lord will be born as the seventh month dies. …” &amp;raquo;&lt;/li&gt;
&lt;li&gt;“拥有征服黑魔头能量的人走近了……出生在一个曾三次击败黑魔头的家庭……生于第七个月月末……黑魔头标记他为其劲敌,但是他拥有黑魔头所不了解的能量……一个必须死在另一个手上,因为两个人不能都活着,只有一个生存下来……那个拥有征服黑魔头能量的人将于第七个月结束时出生……” &amp;raquo;&lt;/li&gt;
&lt;li&gt;“It meant,” said Dumbledore, “that the person who has the only chance of conquering Lord Voldemort for good was born at the end of July, nearly sixteen years ago. This boy would be born to parents who had already defied Voldemort three times.” &amp;raquo;&lt;/li&gt;
&lt;li&gt;“它的意思是,”邓布利多说,“那个仅仅有一次机会可以永远征服伏地魔的人,出生在近十六年前的七月底。这个男孩的父母曾三次击败过伏地魔。” &amp;raquo;&lt;/li&gt;
&lt;li&gt;“The odd thing is, Harry,” he said softly, “that it may not have meant you at all. Sibyll’s prophecy could have applied to two wizard boys, both born at the end of July that year, both of whom had parents in the Order of the Phoenix, both sets of parents having narrowly escaped Voldemort three times. One, of course, was you. The other was Neville Longbottom.” &amp;raquo;&lt;/li&gt;
&lt;li&gt;“哈利。”他轻轻地说,“令人奇怪的是它也许指的根本不是你。西比尔的预言可以适用于两个巫师男孩的身上,他们都是在那一年的七月底出生的,他们的父母都在凤凰社,而且都曾经三次从伏地魔的手中死里逃生。一个当然是你,另一个则是纳威·隆巴顿。” &amp;raquo;&lt;/li&gt;
&lt;li&gt;“You are forgetting the next part of the prophecy, the final identifying feature of the boy who could vanquish Voldemort. … Voldemort himself would ‘mark him as his equal.’ And so he did, Harry. He chose you, not Neville. He gave you the scar that has proved both blessing and curse.” &amp;raquo;&lt;/li&gt;
&lt;li&gt;“你忘记了预言中的下半部分内容,那个能够征服伏地魔的男孩的最终鉴别特征……伏地魔本人标记他为其劲敌。他这样做了,哈利。他选择的是你,而不是纳威。他在你的额头上留下了这道已经被验证为既是祝福又是诅咒的伤疤。” &amp;raquo;&lt;/li&gt;
&lt;li&gt;“He chose the boy he thought most likely to be a danger to him,” said Dumbledore. “And notice this, Harry. He chose, not the pureblood (which, according to his creed, is the only kind of wizard worth being or knowing), but the half-blood, like himself. He saw himself in you before he had ever seen you, and in marking you with that scar, he did not kill you, as he intended, but gave you powers, and a future, which have fitted you to escape him not once, but four times so far — something that neither your parents, nor Neville’s parents, ever achieved.” &amp;raquo;&lt;/li&gt;
&lt;li&gt;他选择的男孩是他认为极有可能对他构成威胁的人。”邓布利多说,“而且要注意一点,哈利,他所选择的,不是纯血统的(按照他的信条,只有纯血统的巫师才是惟一可以存在或是值得认识了解的)而是混血的,像他自己一样。在他见到你之前,他就在你的身上看到了自己,在他给你留下那个伤疤作为标记的时候,他没能如其所愿地杀死你,而是给了你力量和成长的机会。正是这些使你可以从他的手上逃脱,不仅一次,而是迄今为止已经有四次了——而这,无论是你的父母,还是纳威的父母都没有做到过。” &amp;raquo;&lt;/li&gt;
&lt;li&gt;“He heard only the first part, the part foretelling the birth of a boy in July to parents who had thrice defied Voldemort. Consequently, he could not warn his master that to attack you would be to risk transferring power to you —again marking you as his equal. So Voldemort never knew that there might be danger in attacking you, that it might be wise to wait or to learn more. He did not know that you would have ‘power the Dark Lord knows not’ —” &amp;raquo;&lt;/li&gt;
&lt;li&gt;“他只听到了开头,就是预言男孩的生日在七月份,父母曾经三次击败了伏地魔。所以他不可能提醒伏地魔攻击你就会冒着把能量传输给你的危险,使你成为可以与之匹敌的对手。因此伏地魔从来不知道攻击你是很危险的事情,而明智之举则是等待,掌握更多的东西。他不知道你将拥有‘黑魔头所不了解的能量’——” &amp;raquo;&lt;/li&gt;
&lt;li&gt;For a long time, neither of them spoke. Somewhere far beyond the office walls, Harry could hear the sound of voices, students heading down to the Great Hall for an early breakfast, perhaps. It seemed impossible that there could be people in the world who still desired food, who laughed, who neither knew nor cared that Sirius Black was gone forever. Sirius seemed a million miles away already, even if a part of Harry still believed that if he had only pulled back that veil, he would have found Sirius looking back at him, greeting him, perhaps, with his laugh like a bark. … &amp;raquo;&lt;/li&gt;
&lt;li&gt;很长一段时间,他们谁也没有说话。哈利可以听到远在办公室墙外的某个地方有说话的声音,学生们可能正走向大礼堂去吃早餐。真令人难以置信,这个世界上居然还会有人仍在想着吃饭,仍能够笑出声来, 他们没有人知道,也不会关心小天狼星布莱克永远地离开了。小天狼星似乎已远在万里之遥;即使是现在,哈利仍有一些相信如果他拉开那幅帷幔,他会发现小天狼星正回头看着他,向他问候,像犬吠一样地笑着…… &amp;raquo;&lt;/li&gt;
&lt;li&gt;“I feel I owe you another explanation, Harry,” said Dumbledore hesitantly. “You may, perhaps, have wondered why I never chose you as a prefect? I must confess … that I rather thought … you had enough responsibility to be going on with.”Harry looked up at him and saw a tear trickling down Dumbledore’s face into his long silver beard. &amp;raquo;&lt;/li&gt;
&lt;li&gt;“我觉得我还欠你另一个解释,哈利,”邓布利多吞吞吐吐地说,“你曾经也许纳闷为什么我没有把你选为级长?我必须承认……我更认为……你已经有太多的责任需要承担。”哈利向上看了他一眼,发现一滴泪水滑过邓布利多的面颊,流进他那长长的花白胡子里。 &amp;raquo;&lt;/li&gt;
&lt;li&gt;The Minister’s statement was met with dismay and alarm from the Wizarding community, which as recently as last Wednesday was receiving Ministry assurances that there was “no truth whatsoever in these persistent rumors that You-Know-Who is operating amongst us once more.” &amp;raquo;&lt;/li&gt;
&lt;li&gt;魔法部的此次声明引起了魔法社会的警惕与不安,尽管他们刚于上周三接到魔法部的保证:“无论当前盛传什么谣言,而神秘人正又一次在我们中间活动的说法纯属一派胡言。” &amp;raquo;&lt;/li&gt;
&lt;li&gt;“There you are, Harry, I knew they’d drag you into it somehow,” said Hermione, looking over the top of the paper at him. &amp;raquo;&lt;/li&gt;
&lt;li&gt;“在说你,哈利,我知道他们怎么着也会把你扯进去。”赫敏说,跃过报纸的上方看着哈利。 &amp;raquo;&lt;/li&gt;
&lt;li&gt;According to Madam Pomfrey, thoughts could leave deeper scarring than almost anything else, though since she had started applying copious amounts of Dr. Ubbly’s Oblivious Unction, there seemed to be some improvement. &amp;raquo;&lt;/li&gt;
&lt;li&gt;根据庞弗雷夫人的说法,思想几乎会比其他任何东西留下更深的印迹,尽管自她开始使用大量的不利博士遗忘药膏以来,这些伤口看起来已经好多了。 &amp;raquo;&lt;/li&gt;
&lt;li&gt;“ ‘You-Know-Who’s Last Attempt to Take Over, pages two to four, What the Ministry Should Have Told Us, page five, Why Nobody Listened to Albus Dumbledore, pages six to eight, Exclusive Interview with Harry Potter, page nine …’ Well,” said Hermione, folding up the newspaper and throwing it aside, “it’s certainly given them lots to write about. And that interview with Harry isn’t exclusive, it’s the one that was in The Quibbler months ago. …” &amp;raquo;&lt;/li&gt;
&lt;li&gt;“神秘人的最后企图破灭,二到四版;魔法部应当对我说些什么, 五版;为什么没有人聆听阿不思·邓布利多的声音,六到八版;哈利·波特的独家采访,九版……很好,”赫敏说着折起了报纸把它丢到一边,“这的确给了他们很多可写的内容。可哈利的采访不是独家的,几个月前《唱唱反调》的一次才是……” &amp;raquo;&lt;/li&gt;
&lt;li&gt;All six of them looked around. Professor Umbridge was lying in a bed opposite them, gazing up at the ceiling. Dumbledore had strode alone into the forest to rescue her from the centaurs. How he had done it — how he had emerged from the trees supporting Professor Umbridge without so much as a scratch on him — nobody knew, and Umbridge was certainly not telling. Since she had returned to the castle she had not, as far as any of them knew, uttered a single word. Nobody really knew what was wrong with her either. Her usually neat mousy hair was very untidy and there were bits of twig and leaf in it, but otherwise she seemed to be quite unscathed. &amp;raquo;&lt;/li&gt;
&lt;li&gt;他们六个人一起回头望去,乌姆里奇教授正躺在他们对面的床上, 眼睛直愣愣地盯着天花板。邓布利多一个人单枪匹马深入禁林,把她从马人们手中救了出来;至于他是怎样做到的——他是如何令自己毫发无伤地把乌姆里奇教授从禁林里救了出来——没有人知道,当然乌姆里奇更不会说。自她回到城堡里以来,就他们所知,她没有说过一个字。谁也不清楚她究竟出了什么毛病。她那一贯整齐的灰褐色头发如今已零乱不堪,发际之间还有一些细小的树枝和树叶,可她看上去好像一点也没有受伤。 &amp;raquo;&lt;/li&gt;
&lt;li&gt;Harry did not need telling twice. He thrust his wand back inside his robes and headed straight for the front doors without another glance at Snape and Malfoy. &amp;raquo;&lt;/li&gt;
&lt;li&gt;哈利不需要她再重复一遍,他把魔杖插回到袍子里,径直朝大门口走去,再也没有多看斯内普和马尔福一眼。 &amp;raquo;&lt;/li&gt;
&lt;li&gt;Perhaps the reason he wanted to be alone was because he had felt isolated from everybody since his talk with Dumbledore. An invisible barrier separated him from the rest of the world. He was — he had always been — a marked man. It was just that he had never really understood what that meant.
… &amp;raquo;&lt;/li&gt;
&lt;li&gt;他想一个人待着,原因大概是自从与邓布利多谈话后,他就觉得自己孤立起来了,跟其他人隔绝了。一道无形的屏障把他与剩下的世界分隔开来。他是——他自始至终都是——一个有标记的人。而他从来没有真正理解这究竟意味着什么…… &amp;raquo;&lt;/li&gt;
&lt;li&gt;Professor Umbridge left Hogwarts the day before the end of term. It seemed that she had crept out of the hospital wing during dinnertime, evidently hoping to depart undetected, but unfortunately for her, she met Peeves on the way, who seized his last chance to do as Fred had instructed and chased her gleefully from the premises, whacking her alternately with a walking stick and a sock full of chalk. Many students ran out into the entrance hall to watch her running away down the path, and the Heads of Houses tried only halfheartedly to restrain their pupils. Indeed, Professor McGonagall sank back into her chair at the staff table after a few feeble remonstrances and was clearly heard to express a regret that she could not run cheering after Umbridge herself, because Peeves had borrowed her walking stick. &amp;raquo;&lt;/li&gt;
&lt;li&gt;乌姆里奇教授是在学期结束的前一天离开霍格沃茨的。她好像是趁晚饭时间偷偷从医院里溜了出来,很明显她是想不被察觉地悄悄离开。
可不幸的是,她在路上碰到了皮皮鬼,而皮皮鬼正是听了弗雷德的话才抓住这个最后的机会,兴高采烈地在前面拦住乌姆里奇,轮番用一根拐杖和一只装着满满粉笔的袜子使劲向她打过去。很多学生跑到门廊里看她落荒而逃的样子,学院院长们也是半真半假地试图拦阻他们。事实上,麦格教授只是发出了几声无力的抗议,就又坐回到桌子后面,并遗憾地表示她不能亲自送乌姆里奇了,因为皮皮鬼借走了她的拐杖。 &amp;raquo;&lt;/li&gt;
&lt;li&gt;An odd feeling rose in Harry — an emotion quite different from the anger and grief that had filled him since Sirius’s death. It was a few moments before he realized that he was feeling sorry for Luna. &amp;raquo;&lt;/li&gt;
&lt;li&gt;哈利心里涌起一种奇怪的感觉,自从小天狼星死了之后,一直占据他内心的只有愤慨与伤心,而现在涌起的这种情感远不同于此。过了一会儿,他才意识到那是对卢娜的同情。 &amp;raquo;&lt;/li&gt;
&lt;li&gt;He pointed with his thumb over his shoulder; his magical eye was evidently peering through the back of his head and his bowler hat. Harry leaned an inch or so to the left to see where Mad-Eye was pointing and there, sure enough, were the three Dursleys, who looked positively appalled to see Harry’s reception committee. &amp;raquo;&lt;/li&gt;
&lt;li&gt;他用拇指从他的肩膀上方向后指了过去,他的魔法眼睛显然穿过了他的后脑勺和圆顶礼帽,正在窥视后面的东西。哈利向左微微斜了点身子顺着疯眼汉所指的方向看过去。果然不错,德思礼一家三口正在那边胆战心惊地望着哈利的欢迎团。 &amp;raquo;&lt;/li&gt;
&lt;li&gt;As Mr. Weasley had singlehandedly demolished most of the Dursleys’living room two years previously, Harry would have been very surprised if Uncle Vernon had forgotten him. &amp;raquo;&lt;/li&gt;
&lt;li&gt;两年前韦斯莱曾一个人几乎把德思礼家的整个客厅毁于一旦,要是弗农姨父记不起他来,哈利一定会非常震惊的。果然 &amp;raquo;&lt;/li&gt;
&lt;li&gt;Harry nodded. He somehow could not find words to tell them what it meant to him, to see them all ranged there, on his side. Instead he smiled, raised a hand in farewell, turned around, and led the way out of the station toward the sunlit street, with Uncle Vernon, Aunt Petunia, and Dudley hurrying along in his wake. &amp;raquo;&lt;/li&gt;
&lt;li&gt;哈利点着头。看到他们站在那里,站在自己的身旁,不知怎的,他想不出该用什么话来告诉他们这对他意味着什么。他只有笑着,挥手向他们告别,然后转身走出车站,走向洒满阳光的街道,弗农姨父、佩妮姨妈,还有达力匆匆跟在他的后面。 &amp;raquo;&lt;/li&gt;
&lt;/ol&gt;</description>
    </item>
    <item>
      <title>《哈利 · 波特 与火焰杯（2000）》</title>
      <link>https://frytea.com/archives/1051/</link>
      <pubDate>Thu, 29 Aug 2019 16:16:00 +0000</pubDate>
      <guid>https://frytea.com/archives/1051/</guid>
      <description>&lt;p&gt;!!! !!! Your devotion is nothing more than cowardi&lt;/p&gt;</description>
    </item>
    <item>
      <title>[摘录] 哈利 · 波特 与火焰杯（2000）</title>
      <link>https://frytea.com/archives/158/</link>
      <pubDate>Thu, 29 Aug 2019 08:16:00 +0000</pubDate>
      <guid>https://frytea.com/archives/158/</guid>
      <description>&lt;p&gt;&lt;img alt=&#34;ED4851EE-79E3-4759-AB73-25388C217BE6.jpeg&#34; loading=&#34;lazy&#34; src=&#34;http://frytea-data.test.upcdn.net/E01D7A08-12DA-49D0-B8AD-5F588B23411D.jpeg#shadow&#34;&gt;&lt;/p&gt;
&lt;p&gt;!!!&lt;/p&gt;
&lt;iframe width=&#34;560&#34; height=&#34;315&#34; src=&#34;https://www.youtube.com/embed/jATVgJ_grys&#34; frameborder=&#34;0&#34; allow=&#34;accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture&#34; allowfullscreen&gt;&lt;/iframe&gt;
&lt;p&gt;!!!&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;Your devotion is nothing more than cowardice &amp;raquo;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;什么忠心耿耿，你只是胆小罢了 &amp;raquo;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Wormtail, I need somebody with brains, somebody whose loyalty has never wavered, and you, unfortunately, fulfill neither requirement.” &amp;raquo;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;“虫尾巴，我需要一个有脑子的人，一个对我绝对忠诚、从不动摇的人，而你呢，很不幸，这两个条件都不符合。” &amp;raquo;&lt;/p&gt;</description>
    </item>
    <item>
      <title>《哈利 · 波特 与阿兹卡班的囚徒（1999）》</title>
      <link>https://frytea.com/archives/1068/</link>
      <pubDate>Thu, 15 Aug 2019 09:24:00 +0000</pubDate>
      <guid>https://frytea.com/archives/1068/</guid>
      <description>&lt;p&gt;!!! !!! 1. He was stranded, quite alone, in the da&lt;/p&gt;</description>
    </item>
    <item>
      <title>[摘录] 哈利 · 波特 与阿兹卡班的囚徒（1999）</title>
      <link>https://frytea.com/archives/157/</link>
      <pubDate>Thu, 15 Aug 2019 01:24:00 +0000</pubDate>
      <guid>https://frytea.com/archives/157/</guid>
      <description>&lt;p&gt;!!!&lt;/p&gt;
&lt;iframe width=&#34;560&#34; height=&#34;315&#34; src=&#34;https://www.youtube.com/embed/oi007IrGQZI&#34; frameborder=&#34;0&#34; allow=&#34;accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture&#34; allowfullscreen&gt;&lt;/iframe&gt;
!!!
&lt;h2 id=&#34;1&#34;&gt;1.&lt;/h2&gt;
&lt;p&gt;He was stranded, quite alone, in the dark Muggle world, with absolutely nowhere to go.&lt;/p&gt;
&lt;p&gt;他很孤独地搁浅在黑暗的麻瓜世界里，没有任何地方可以去。&lt;/p&gt;
&lt;h2 id=&#34;2&#34;&gt;2.&lt;/h2&gt;
&lt;p&gt;While Muggles have been told that Black is carrying a gun (a kind of metal wand that Muggles use to kill each other), the magical community lives in fear of a massacre like that of twelve years ago, when Black murdered thirteen
people with a single curse.&lt;/p&gt;</description>
    </item>
    <item>
      <title>《人人都能用英语》</title>
      <link>https://frytea.com/archives/1070/</link>
      <pubDate>Wed, 14 Aug 2019 19:18:00 +0000</pubDate>
      <guid>https://frytea.com/archives/1070/</guid>
      <description>&lt;p&gt;该图片由luthfi pribadi在Pixabay上发布 看到李笑来《人人都能用英语》这本书的那一&lt;/p&gt;</description>
    </item>
    <item>
      <title>【摘录笔记】人人都能用英语</title>
      <link>https://frytea.com/archives/156/</link>
      <pubDate>Wed, 14 Aug 2019 11:18:00 +0000</pubDate>
      <guid>https://frytea.com/archives/156/</guid>
      <description>&lt;p&gt;&lt;img alt=&#34;sunset-4361545_1920.jpg&#34; loading=&#34;lazy&#34; src=&#34;http://frytea-data.test.upcdn.net/sunset-4361545_1920.jpg#shadow&#34;&gt;
该图片由&lt;a href=&#34;https://pixabay.com/zh/users/lutv22-9114339/?utm_source=link-attribution&amp;amp;utm_medium=referral&amp;amp;utm_campaign=image&amp;amp;utm_content=4361545&#34;&gt;luthfi pribadi&lt;/a&gt;在&lt;a href=&#34;https://pixabay.com/zh/?utm_source=link-attribution&amp;amp;utm_medium=referral&amp;amp;utm_campaign=image&amp;amp;utm_content=4361545&#34;&gt;Pixabay&lt;/a&gt;上发布&lt;/p&gt;
&lt;p&gt;看到李笑来《人人都能用英语》这本书的那一刻，就像是阴暗之中射进一束光。书里说了不少“实话”，让我真正的看清自己。看过这本书，我终于坚定下一些事情。有些错误，真会错一辈子，还乐此不疲。有的看似美好，真就是对自己的一种欺骗。看清这个世界，如同哈利波特中说的那样。&lt;/p&gt;</description>
    </item>
    <item>
      <title>The Legend of 1900</title>
      <link>https://frytea.com/archives/155/</link>
      <pubDate>Tue, 13 Aug 2019 08:26:00 +0000</pubDate>
      <guid>https://frytea.com/archives/155/</guid>
      <description>&lt;p&gt;&lt;img alt=&#34;5ADDCEEB-9BC1-44DF-8024-6509FD4F4704.jpeg&#34; loading=&#34;lazy&#34; src=&#34;http://frytea-data.test.upcdn.net/5ADDCEEB-9BC1-44DF-8024-6509FD4F4704.jpeg#shadow&#34;&gt;&lt;/p&gt;
&lt;p&gt;!!!
&lt;audio src=&#34;http://frytea-data.test.upcdn.net/2019081316210360940281.mp3&#34; controls=&#34;controls&#34;&gt;  &lt;/audio&gt;
!!!&lt;/p&gt;
&lt;p&gt;ðə ɛnd əv ðə wərld
The end of the world.
在世界的尽头，&lt;/p&gt;
&lt;p&gt;tek e piæno
Take a piano.
轻抚琴键，&lt;/p&gt;
&lt;p&gt;ðə kiz bɪgɪn ðə kiz ɛnd
The keys begin, the keys end.
琴声升起又落下，&lt;/p&gt;
&lt;p&gt;no ðɛr ar 88 əv ðɛm ænd no wən kæn tɛl ju dɪfrəntli
You know there are 88 of them and no-one can tell you differently
你知道它们一共有 88 个却没人告诉你他们的区别，&lt;/p&gt;</description>
    </item>
    <item>
      <title>【翻译】早起的7个好处</title>
      <link>https://frytea.com/archives/154/</link>
      <pubDate>Mon, 05 Aug 2019 12:15:55 +0000</pubDate>
      <guid>https://frytea.com/archives/154/</guid>
      <description>&lt;p&gt;&lt;img alt=&#34;201908516455576001081.jpg&#34; loading=&#34;lazy&#34; src=&#34;http://frytea-data.test.upcdn.net/201908516455576001081.jpg#shadow&#34;&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;该图片由&lt;a href=&#34;https://pixabay.com/zh/users/Skitterphoto-324082/?utm_source=link-attribution&amp;amp;utm_medium=referral&amp;amp;utm_campaign=image&amp;amp;utm_content=1069218&#34;&gt;Rudy and Peter Skitterians&lt;/a&gt;在&lt;a href=&#34;https://pixabay.com/zh/?utm_source=link-attribution&amp;amp;utm_medium=referral&amp;amp;utm_campaign=image&amp;amp;utm_content=1069218&#34;&gt;Pixabay&lt;/a&gt;上发布&lt;/p&gt;&lt;/blockquote&gt;
&lt;h1 id=&#34;前言&#34;&gt;前言&lt;/h1&gt;
&lt;p&gt;英文原文来自Medium
Link: &lt;a href=&#34;https://link.medium.com/6WIzWKCRTY&#34;&gt;https://link.medium.com/6WIzWKCRTY&lt;/a&gt;
Title: **7 Benefits of Waking Up Early (That Have Nothing to Do With Being a CEO) **&lt;/p&gt;
&lt;p&gt;中文翻译为博主自主翻译，若有不足之处，恳请在评论中指出。&lt;/p&gt;</description>
    </item>
    <item>
      <title>【翻译】十分钟助您明晰方向、激发创造</title>
      <link>https://frytea.com/archives/153/</link>
      <pubDate>Sat, 03 Aug 2019 09:02:00 +0000</pubDate>
      <guid>https://frytea.com/archives/153/</guid>
      <description>&lt;p&gt;&lt;img alt=&#34;201908314013282622595.jpeg&#34; loading=&#34;lazy&#34; src=&#34;http://frytea-data.test.upcdn.net/201908314013282622595.jpeg#shadow&#34;&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;该图片由&lt;a href=&#34;https://pixabay.com/zh/users/ColiN00B-346653/?utm_source=link-attribution&amp;amp;utm_medium=referral&amp;amp;utm_campaign=image&amp;amp;utm_content=3104355&#34;&gt;Colin Behrens&lt;/a&gt;在&lt;a href=&#34;https://pixabay.com/zh/?utm_source=link-attribution&amp;amp;utm_medium=referral&amp;amp;utm_campaign=image&amp;amp;utm_content=3104355&#34;&gt;Pixabay&lt;/a&gt;上发布&lt;/p&gt;&lt;/blockquote&gt;
&lt;h1 id=&#34;前言&#34;&gt;前言&lt;/h1&gt;
&lt;p&gt;英文原文来自Medium
Link: &lt;a href=&#34;https://link.medium.com/D2uSLE0oQY&#34;&gt;https://link.medium.com/D2uSLE0oQY&lt;/a&gt;
Title: ** This 10-Minute Routine Will Increase Your Clarity And Creativity **&lt;/p&gt;
&lt;p&gt;中文翻译为博主自主翻译，若有不足之处，恳请在评论中指出。&lt;/p&gt;
&lt;h1 id=&#34;原文&#34;&gt;原文&lt;/h1&gt;
&lt;p&gt;“Your subconscious mind works continuously, while you are awake, and while you sleep.”
— Napoleon Hill&lt;/p&gt;</description>
    </item>
    <item>
      <title>【长句分析】2019.8.2</title>
      <link>https://frytea.com/archives/152/</link>
      <pubDate>Fri, 02 Aug 2019 11:58:00 +0000</pubDate>
      <guid>https://frytea.com/archives/152/</guid>
      <description>&lt;p&gt;&lt;img alt=&#34;59AEE89E-2283-4FDE-8DF5-1E772D320BF2.jpeg&#34; loading=&#34;lazy&#34; src=&#34;http://frytea-data.test.upcdn.net/59AEE89E-2283-4FDE-8DF5-1E772D320BF2.jpeg#shadow&#34;&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;图片来源：Photo by Chokniti Khongchum from Pexels&lt;/p&gt;&lt;/blockquote&gt;
&lt;h2 id=&#34;句子原型&#34;&gt;句子原型&lt;/h2&gt;
&lt;p&gt;But while young and old mostly agree on what constitutes the finish lineof a fulfilling life, they offer strikingly different paths for reaching it.（Text 4. 2016. 英二）&lt;/p&gt;
&lt;h2 id=&#34;词汇积累&#34;&gt;词汇积累&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;constitute / ˈkɔnstitju:t / v.组成；构成&lt;/li&gt;
&lt;li&gt;finish line 终点线&lt;/li&gt;
&lt;li&gt;fulfilling / fulˈfiliŋ / adj.让人感觉有意义的；令人满足的&lt;/li&gt;
&lt;li&gt;strikingly / ˈstraikiŋli / adv.引人注目地；异乎寻常地；显着地&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;句子分析&#34;&gt;句子分析&lt;/h2&gt;
&lt;p&gt;{{But : 连}} {{while : 让步状从}} young and old mostly agree on {{what : 宾从}} constitutes the finish line of a fulfilling life, {{==they== : 主}} {{==offer== : 谓}} {{==strikingly different paths== : 宾}} {{for reaching it : 定}}.&lt;/p&gt;</description>
    </item>
    <item>
      <title>【长句分析】2019.8.1.md</title>
      <link>https://frytea.com/archives/151/</link>
      <pubDate>Thu, 01 Aug 2019 12:19:00 +0000</pubDate>
      <guid>https://frytea.com/archives/151/</guid>
      <description>&lt;p&gt;&lt;img alt=&#34;BABB983E-1A56-4E5F-BEEB-11B56841928C.jpeg&#34; loading=&#34;lazy&#34; src=&#34;http://frytea-data.test.upcdn.net/BABB983E-1A56-4E5F-BEEB-11B56841928C.jpeg#shadow&#34;&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;图片来源：Photo by Chokniti Khongchum from Pexels&lt;/p&gt;&lt;/blockquote&gt;
&lt;h2 id=&#34;句子原型&#34;&gt;句子原型&lt;/h2&gt;
&lt;p&gt;“Carry a book with you at all times” can actually work, too—providing you dip in often enough, so that reading becomes the default state from which you temporarily surface to take care of business, before dropping back down.（Text 3. 2016. 英二）&lt;/p&gt;</description>
    </item>
    <item>
      <title>【长句分析】2019.7.31</title>
      <link>https://frytea.com/archives/150/</link>
      <pubDate>Thu, 01 Aug 2019 12:10:36 +0000</pubDate>
      <guid>https://frytea.com/archives/150/</guid>
      <description>&lt;p&gt;&lt;img alt=&#34;cropland-daylight-farm-1033716.jpg&#34; loading=&#34;lazy&#34; src=&#34;http://frytea-data.test.upcdn.net/cropland-daylight-farm-1033716.jpg#shadow&#34;&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;图片来源：Photo by Chokniti Khongchum from Pexels&lt;/p&gt;&lt;/blockquote&gt;
&lt;h2 id=&#34;句子原型&#34;&gt;句子原型&lt;/h2&gt;
&lt;p&gt;Under the plan, for example, the agency said it would not prosecutelandowners or businesses that unintentionally kill, harm, or disturb the bird, as long as they had signed a range-wide management plan to restore prairie chicken habitat.（Text 2. 2016. 英二）&lt;/p&gt;</description>
    </item>
    <item>
      <title>【长句分析】2019.7.30</title>
      <link>https://frytea.com/archives/149/</link>
      <pubDate>Thu, 01 Aug 2019 12:00:26 +0000</pubDate>
      <guid>https://frytea.com/archives/149/</guid>
      <description>&lt;p&gt;&lt;img alt=&#34;2B164AD6-C0F0-4F8D-A2BC-39521172E356.jpeg&#34; loading=&#34;lazy&#34; src=&#34;http://frytea-data.test.upcdn.net/2B164AD6-C0F0-4F8D-A2BC-39521172E356.jpeg#shadow&#34;&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;图片来源：Photo by Chokniti Khongchum from Pexels&lt;/p&gt;&lt;/blockquote&gt;
&lt;h2 id=&#34;句子原型&#34;&gt;句子原型&lt;/h2&gt;
&lt;p&gt;In particular, they called for forging closer collaborations with western state governments, which are often uneasy with federal action and with the private landowners who control an estimated 95% of the prairie chicken’s habitat.（Text 2. 2016. 英二）&lt;/p&gt;</description>
    </item>
    <item>
      <title>【长句分析】2019.7.29</title>
      <link>https://frytea.com/archives/148/</link>
      <pubDate>Thu, 01 Aug 2019 11:48:15 +0000</pubDate>
      <guid>https://frytea.com/archives/148/</guid>
      <description>&lt;p&gt;&lt;img alt=&#34;71E7DB51-8276-4FA1-AE58-8E5662102DF3.jpeg&#34; loading=&#34;lazy&#34; src=&#34;http://frytea-data.test.upcdn.net/71E7DB51-8276-4FA1-AE58-8E5662102DF3.jpeg#shadow&#34;&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;图片来源：Photo by Chokniti Khongchum from Pexels&lt;/p&gt;&lt;/blockquote&gt;
&lt;h2 id=&#34;句子原型&#34;&gt;句子原型&lt;/h2&gt;
&lt;p&gt;Biologists estimate that as many as 2 million lesser prairie chickens—a kind of bird living on stretching grasslands—once lent red to the often gray landscape of the mid-western and southwestern UnitedStates.（Text 2. 2016. 英二）&lt;/p&gt;</description>
    </item>
    <item>
      <title>【长句分析】2019.7.26</title>
      <link>https://frytea.com/archives/147/</link>
      <pubDate>Thu, 01 Aug 2019 11:34:10 +0000</pubDate>
      <guid>https://frytea.com/archives/147/</guid>
      <description>&lt;p&gt;&lt;img alt=&#34;2019072614354982974987.jpeg&#34; loading=&#34;lazy&#34; src=&#34;http://frytea-data.test.upcdn.net/2019072614354982974987.jpeg#shadow&#34;&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;图片来源：&lt;a href=&#34;https://pixabay.com/zh/?utm_source=link-attribution&amp;amp;utm_medium=referral&amp;amp;utm_campaign=image&amp;amp;utm_content=965028&#34;&gt;Pixabay&lt;/a&gt;&lt;/p&gt;&lt;/blockquote&gt;
&lt;h2 id=&#34;句子原型&#34;&gt;句子原型&lt;/h2&gt;
&lt;p&gt;Programming languages have a quick turnover, so the “Ruby on Rails” language they learned may not even be relevant by the time they enter the job market.（Text 1. 2016. 英二）&lt;/p&gt;
&lt;h2 id=&#34;词汇积累&#34;&gt;词汇积累&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;programming / ˈprəuɡræmiŋ / n.程序编制；编程&lt;/li&gt;
&lt;li&gt;turnover / ˈtə:nəuvə(r) / n.倾覆；翻转；营业额；成交量&lt;/li&gt;
&lt;li&gt;relevant / ˈreləvənt / adj.紧密相关的；切题的&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;句子分析&#34;&gt;句子分析&lt;/h2&gt;
&lt;p&gt;{{==Programming languages== : 主}} {{==have== : 谓}} {{==a quick turnover== : 宾}}, {{==so== : 状}} {{the “Ruby on Rails” language : 主}} {{==(that)== : 定从}} {{they : 主}} {{learned : 谓}} {{may not even be : 系}} {{relevant : 表}} {{by the time they enter the job market : 时间状语}}.&lt;/p&gt;</description>
    </item>
    <item>
      <title>【翻译】看看Netflix如何躲避瘟疫一般的规则</title>
      <link>https://frytea.com/archives/146/</link>
      <pubDate>Thu, 01 Aug 2019 09:12:00 +0000</pubDate>
      <guid>https://frytea.com/archives/146/</guid>
      <description>&lt;p&gt;&lt;img alt=&#34;A9EFB3A2-4BAB-46FF-9DF0-739C9A5FAC08.jpeg&#34; loading=&#34;lazy&#34; src=&#34;http://frytea-data.test.upcdn.net/A9EFB3A2-4BAB-46FF-9DF0-739C9A5FAC08.jpeg#shadow&#34;&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Photo by &lt;a href=&#34;https://www.pexels.com/@jmark?utm_content=attributionCopyText&amp;amp;utm_medium=referral&amp;amp;utm_source=pexels&#34;&gt;John-Mark Smith&lt;/a&gt; from &lt;a href=&#34;https://www.pexels.com/photo/photo-of-cup-near-flat-screen-television-2726370/?utm_content=attributionCopyText&amp;amp;utm_medium=referral&amp;amp;utm_source=pexels&#34;&gt;Pexels&lt;/a&gt;&lt;/p&gt;&lt;/blockquote&gt;
&lt;h1 id=&#34;前言&#34;&gt;前言&lt;/h1&gt;
&lt;p&gt;英文原文来自Medium
Link: &lt;a href=&#34;https://medium.com/inc./netflix-avoids-rules-like-the-plague-heres-what-it-does-instead-8da3b3423391&#34;&gt;https://medium.com/inc./netflix-avoids-rules-like-the-plague-heres-what-it-does-instead-8da3b3423391&lt;/a&gt;
Title: **Netflix Avoids Rules Like the Plague. Here’s What It Does Instead. **&lt;/p&gt;
&lt;p&gt;中文翻译为博主自主翻译，若有不足之处，恳请在评论中指出。&lt;/p&gt;
&lt;p&gt;One reason for Netflix’s success: It throws the rulebook out the window
[hint]
NetFlix成功的原因之一：与众不同
[/hint]&lt;/p&gt;</description>
    </item>
    <item>
      <title>【翻译】Being ‘Busy’ Doesn’t Mean You’re Successful</title>
      <link>https://frytea.com/archives/145/</link>
      <pubDate>Tue, 30 Jul 2019 07:14:00 +0000</pubDate>
      <guid>https://frytea.com/archives/145/</guid>
      <description>&lt;p&gt;&lt;img alt=&#34;2019072917143741604168.jpeg&#34; loading=&#34;lazy&#34; src=&#34;http://frytea-data.test.upcdn.net/2019072917143741604168.jpeg#shadow&#34;&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;图片来源：&lt;a href=&#34;https://www.pexels.com&#34;&gt;https://www.pexels.com&lt;/a&gt;&lt;/p&gt;&lt;/blockquote&gt;
&lt;h1 id=&#34;前言&#34;&gt;前言&lt;/h1&gt;
&lt;p&gt;英文原文来自Medium
Link：&lt;a href=&#34;https://link.medium.com/YYBK3OudIY&#34;&gt;https://link.medium.com/YYBK3OudIY&lt;/a&gt;
中文翻译为博主自主翻译，若有不足之处，恳请在评论中指出。&lt;/p&gt;
&lt;h1 id=&#34;原文&#34;&gt;原文&lt;/h1&gt;
&lt;p&gt;Do you know that feeling of being so busy that time flies with a blink of an eye? We’re so busy with all kinds of things — work, friends, going out, holidays, etc. But being busy is not a good thing at all.
[hint]一眨眼时间就过得飞快，忙成这样子的感觉你知道吗？我们忙于各种各样的事情——工作、社交、出行、度假等等。但是忙碌根本就不是一件好事。[/hint]&lt;/p&gt;</description>
    </item>
    <item>
      <title>【翻译】How to Fall Asleep in 120 Seconds</title>
      <link>https://frytea.com/archives/144/</link>
      <pubDate>Sun, 28 Jul 2019 09:03:00 +0000</pubDate>
      <guid>https://frytea.com/archives/144/</guid>
      <description>&lt;p&gt;&lt;img alt=&#34;2019072816552240120074.jpeg&#34; loading=&#34;lazy&#34; src=&#34;http://frytea-data.test.upcdn.net/2019072816552240120074.jpeg#shadow&#34;&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;图片来源：&lt;a href=&#34;https://www.ssyer.com&#34;&gt;https://www.ssyer.com&lt;/a&gt;&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;Trouble sleeping? Here’s a military-tested trick for guaranteed slumber&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;失眠吗？这里有一个经过军事测试，可用来保证睡眠的技巧。&lt;/p&gt;&lt;/blockquote&gt;
&lt;h1 id=&#34;前言&#34;&gt;前言&lt;/h1&gt;
&lt;p&gt;英文原文来自Medium
Link：&lt;a href=&#34;https://link.medium.com/O3j0d2mlDY&#34;&gt;https://link.medium.com/O3j0d2mlDY&lt;/a&gt;
中文翻译为博主自主翻译，若有不足之处，恳请在评论中指出。&lt;/p&gt;</description>
    </item>
    <item>
      <title>《人民的名义》</title>
      <link>https://frytea.com/archives/1058/</link>
      <pubDate>Sat, 27 Jul 2019 08:39:37 +0000</pubDate>
      <guid>https://frytea.com/archives/1058/</guid>
      <description>&lt;p&gt;/ 著作 /《人民的名义》/ in the name of people / / * 亮平，咱们就&lt;/p&gt;</description>
    </item>
    <item>
      <title>阅读摘录</title>
      <link>https://frytea.com/archives/143/</link>
      <pubDate>Sat, 27 Jul 2019 00:39:37 +0000</pubDate>
      <guid>https://frytea.com/archives/143/</guid>
      <description>&lt;h2 id=&#34;-著作-人民的名义-in-the-name-of-people-&#34;&gt;/ 著作 /《人民的名义》/ in the name of people /&lt;/h2&gt;
&lt;blockquote&gt;
&lt;p&gt;/ * 亮平，咱们就此跟过去告别了吗？那段纯真的、充满理想和热情的青春岁月？候亮平叹息道：就此别过了！今夜之后，那份历史的参与者，无论是谁，不论是师生，还是上下级，回忆里都不可能再轻松了。 * /&lt;/p&gt;</description>
    </item>
    <item>
      <title>【长句分析】2019.7.25</title>
      <link>https://frytea.com/archives/142/</link>
      <pubDate>Fri, 26 Jul 2019 06:29:52 +0000</pubDate>
      <guid>https://frytea.com/archives/142/</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;图片来源：&lt;a href=&#34;https://pixabay.com/zh/?utm_source=link-attribution&amp;amp;utm_medium=referral&amp;amp;utm_campaign=image&amp;amp;utm_content=965028&#34;&gt;Pixabay&lt;/a&gt;&lt;/p&gt;&lt;/blockquote&gt;
&lt;h2 id=&#34;句子原型&#34;&gt;句子原型&lt;/h2&gt;
&lt;p&gt;The Flatiron School, where people pay to learn programming, started as one of the many coding bootcamps that’s become popular for adults looking for a career change.（Text 1. 2016. 英二）&lt;/p&gt;
&lt;h2 id=&#34;词汇积累&#34;&gt;词汇积累&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;programming / ˈprəuɡræmiŋ / n.程序编制，编程&lt;/li&gt;
&lt;li&gt;bootcamp 新兵训练营&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;句子分析&#34;&gt;句子分析&lt;/h2&gt;
&lt;p&gt;{{==The Flatiron School== : 主}}, {{where : 定从}} {{people : 主}} {{pay to learn : 谓}} {{programming : 宾}} , {{==started== : 谓}} {{as one of the many coding bootcamps : 主语补足语}} {{that’s : 定从，主}} {{become : 系}} {{popular : 表}} {{for adults : 定}} {{looking for a career change : 定}}.&lt;/p&gt;</description>
    </item>
    <item>
      <title>【长句分析】2019.7.24</title>
      <link>https://frytea.com/archives/141/</link>
      <pubDate>Thu, 25 Jul 2019 09:41:00 +0000</pubDate>
      <guid>https://frytea.com/archives/141/</guid>
      <description>&lt;h2 id=&#34;句子原型&#34;&gt;句子原型&lt;/h2&gt;
&lt;p&gt;Students also benefit from learning something about coding before they get to college, where introductorycomputer-science classes are packed to the brim, which can drive the less-experienced or -determined students away.（Text 1. 2016. 英二）&lt;/p&gt;
&lt;h2 id=&#34;词汇积累&#34;&gt;词汇积累&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;benefit from 从…中受益；得益于&lt;/li&gt;
&lt;li&gt;introductory / ˌintrəˈdʌktəri / adj.入门的；初步的；引导的&lt;/li&gt;
&lt;li&gt;pack / pæk / v.塞进；挤满&lt;/li&gt;
&lt;li&gt;brim / brim / n.口；边沿&lt;/li&gt;
&lt;li&gt;drive&amp;hellip;away 赶跑；使离去&lt;/li&gt;
&lt;li&gt;determined / diˈtə:mind / adj.坚定的；坚决的&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;句子分析&#34;&gt;句子分析&lt;/h2&gt;
&lt;p&gt;{{==Students== : 主}} also {{==benefit from== : 谓}} {{==learning something about coding== : 宾}} {{==before==: 状从}} {{they : 主}} {{get to : 谓}} {{college : 宾}}, {{==where== : 定从}} {{introductory computer-science classes : 主}} {{are  packed to : 谓}} {{the brim : 宾}},  {{==which== : 定从，主 }} {{can drive : 谓}} {{the less-experienced or -determined students : 宾}} away.&lt;/p&gt;</description>
    </item>
    <item>
      <title>【翻译】10 Bad Habits of Unsuccessful People</title>
      <link>https://frytea.com/archives/140/</link>
      <pubDate>Thu, 25 Jul 2019 09:06:00 +0000</pubDate>
      <guid>https://frytea.com/archives/140/</guid>
      <description>&lt;p&gt;&lt;img alt=&#34;2019072510110136775190.jpeg&#34; loading=&#34;lazy&#34; src=&#34;http://frytea-data.test.upcdn.net/2019072510110136775190.jpeg#shadow&#34;&gt;
Instead of looking for traits to emulate, focus on ones to avoid
&lt;em&gt;与其寻找模仿的特质，不如关注哪些需要避免的特质&lt;/em&gt;&lt;/p&gt;
&lt;h1 id=&#34;前言&#34;&gt;前言&lt;/h1&gt;
&lt;p&gt;英文原文来自Medium
Link：&lt;a href=&#34;https://forge.medium.com/10-habits-of-unsuccessful-people-you-dont-want-to-copy-d401ac677c91&#34;&gt;https://forge.medium.com/10-habits-of-unsuccessful-people-you-dont-want-to-copy-d401ac677c91&lt;/a&gt;
中文翻译为博主自主翻译，若有不足之处，恳请在评论中指出。&lt;/p&gt;</description>
    </item>
    <item>
      <title>【研译】评分标准与技巧</title>
      <link>https://frytea.com/archives/139/</link>
      <pubDate>Wed, 24 Jul 2019 09:29:31 +0000</pubDate>
      <guid>https://frytea.com/archives/139/</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;图片来源：&lt;a href=&#34;https://pixabay.com/zh/?utm_source=link-attribution&amp;amp;utm_medium=referral&amp;amp;utm_campaign=image&amp;amp;utm_content=965028&#34;&gt;Pixabay&lt;/a&gt;&lt;/p&gt;&lt;/blockquote&gt;
&lt;h1 id=&#34;翻译的评分标准英语一&#34;&gt;翻译的评分标准（英语一）&lt;/h1&gt;
&lt;ol&gt;
&lt;li&gt;如果发现句子译文明显扭曲原文意义，该句得分最多不超过0.5分&lt;/li&gt;
&lt;li&gt;如果考生就一个题目提供了两个或两个以上的译法，若均正确，给分；若其中一个译法有错，按错误译法给分。&lt;/li&gt;
&lt;li&gt;中文错别字不个别扣分，按整篇累计扣分。在不影响意思的前提下，满三个错别字扣0.5分，无0.25扣分。&lt;/li&gt;
&lt;/ol&gt;
&lt;h1 id=&#34;考研翻译能力点&#34;&gt;考研翻译能力点&lt;/h1&gt;
&lt;ol&gt;
&lt;li&gt;看得懂（精确理解原文含义）
需词汇、语法、长难句阅读、逻辑思维能力&lt;/li&gt;
&lt;li&gt;说的出（表述成通顺的汉语）
需汉语功底，和各种翻译常见技巧。&lt;/li&gt;
&lt;/ol&gt;
&lt;h1 id=&#34;复杂句翻译三步法&#34;&gt;复杂句翻译三步法&lt;/h1&gt;
&lt;ul&gt;
&lt;li&gt;第一步：拆分：主干 + 修饰词（信号词）&lt;/li&gt;
&lt;li&gt;第二步：切块翻译：分别对主干和修饰成分进行切块翻译（如果主干遭遇翻译障碍，“换”；如果修饰成分遭遇翻译障碍，“解释”）&lt;/li&gt;
&lt;li&gt;第三步：组合：将主干和修饰的译文结合（调整语序、删减、添加）&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote&gt;
&lt;p&gt;拆分小技巧
寻找“信号词”&lt;/p&gt;</description>
    </item>
    <item>
      <title>【长句分析】2019.7.24</title>
      <link>https://frytea.com/archives/138/</link>
      <pubDate>Wed, 24 Jul 2019 01:09:37 +0000</pubDate>
      <guid>https://frytea.com/archives/138/</guid>
      <description>&lt;h2 id=&#34;句子原型&#34;&gt;句子原型&lt;/h2&gt;
&lt;p&gt;The correlation between happiness and investment was particularly strong for younger firms, which the authors attribute to “less codified decision making process” and the possible presence of “younger and less experienced managers who are more likely to be influenced by sentiment.”（完形. 2016. 英二）&lt;/p&gt;</description>
    </item>
    <item>
      <title>【史纲】第七章 为新中国而奋斗</title>
      <link>https://frytea.com/archives/137/</link>
      <pubDate>Tue, 23 Jul 2019 12:53:00 +0000</pubDate>
      <guid>https://frytea.com/archives/137/</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;该图片由&lt;a href=&#34;https://pixabay.com/zh/users/PublicDomainPictures-14/?utm_source=link-attribution&amp;amp;utm_medium=referral&amp;amp;utm_campaign=image&amp;amp;utm_content=20910&#34;&gt;PublicDomainPictures&lt;/a&gt;在&lt;a href=&#34;https://pixabay.com/zh/?utm_source=link-attribution&amp;amp;utm_medium=referral&amp;amp;utm_campaign=image&amp;amp;utm_content=20910&#34;&gt;Pixabay&lt;/a&gt;上发布&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;1.蒋介石邀请毛泽东去重庆谈判的原因：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;全国人民强烈要求和平&lt;/li&gt;
&lt;li&gt;运往内战前线、完成内战部署需要相当的时间&lt;/li&gt;
&lt;li&gt;国际上苏联、美国等都表示希望中国能够实行和平建国&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;2.1946年1月10日，出席政治协商会议的有国民党、共产党、民主同盟、青年党和无党派人士的代表38人&lt;/p&gt;</description>
    </item>
    <item>
      <title>【史纲】第六章 中华民族的抗日战争</title>
      <link>https://frytea.com/archives/135/</link>
      <pubDate>Tue, 23 Jul 2019 09:35:00 +0000</pubDate>
      <guid>https://frytea.com/archives/135/</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;该图片由&lt;a href=&#34;https://pixabay.com/zh/users/Janice_Li-1529522/?utm_source=link-attribution&amp;amp;utm_medium=referral&amp;amp;utm_campaign=image&amp;amp;utm_content=1016598&#34;&gt;Janice_Li&lt;/a&gt;在&lt;a href=&#34;https://pixabay.com/zh/?utm_source=link-attribution&amp;amp;utm_medium=referral&amp;amp;utm_campaign=image&amp;amp;utm_content=1016598&#34;&gt;Pixabay&lt;/a&gt;上发布&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;1.西安事变的和平解决成为时局转换的枢纽
2.毛泽东在陕西瓦窑堡会议上作了《论反对日本帝国主义的策略》的报告&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;阐明了党的抗日民族统一战线的新政策&lt;/li&gt;
&lt;li&gt;系统地解决了党的政治路线（统一战线）上的问题&lt;/li&gt;
&lt;li&gt;阐明了建立抗日民族统一战线的可能性&lt;/li&gt;
&lt;li&gt;批判了“左”倾关门主义错误（王明）&lt;/li&gt;
&lt;li&gt;决定用“人民共和国”口号代替“工农共和国”
3.抗日战争统一战线形成的标志&lt;/li&gt;
&lt;li&gt;9月23日，国民党中央通讯社发表《中国共产党为公布国共合作宣言》&lt;/li&gt;
&lt;li&gt;23日，蒋介石发表实际承认共产党合法地位的谈话&lt;/li&gt;
&lt;li&gt;标志着以国共两党第二次合作作为基础的抗日民族统一战线的正式形成&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;4.国民党正面战场除了台儿庄战役取得大捷外，其他战役几乎都是以失败而结束，其主观原因是&lt;/p&gt;</description>
    </item>
    <item>
      <title>【翻译】The Only Sleep Hack That Actually Works</title>
      <link>https://frytea.com/archives/134/</link>
      <pubDate>Mon, 22 Jul 2019 09:38:00 +0000</pubDate>
      <guid>https://frytea.com/archives/134/</guid>
      <description>&lt;p&gt;&lt;img alt=&#34;2019072217050646278371.jpeg&#34; loading=&#34;lazy&#34; src=&#34;http://frytea-data.test.upcdn.net/2019072217050646278371.jpeg&#34;&gt;&lt;/p&gt;
&lt;h1 id=&#34;前言&#34;&gt;前言&lt;/h1&gt;
&lt;p&gt;英文原文由&lt;strong&gt;Darius Foroux&lt;/strong&gt;发布在&lt;strong&gt;The Bolg Of Darius Foroux&lt;/strong&gt;中，我在Medium中看到这篇文章，下附原文链接：
Meduim link：&lt;a href=&#34;https://link.medium.com/lbB3TSHGwY&#34;&gt;https://link.medium.com/lbB3TSHGwY&lt;/a&gt;
中文翻译为博主自主翻译，若有不足之处，恳请在评论中指出。&lt;/p&gt;</description>
    </item>
    <item>
      <title>【高2.2】中值定理及导数的应用</title>
      <link>https://frytea.com/archives/133/</link>
      <pubDate>Mon, 22 Jul 2019 02:29:00 +0000</pubDate>
      <guid>https://frytea.com/archives/133/</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;该图片由&lt;a href=&#34;https://pixabay.com/zh/users/ElisaRiva-1348268/?utm_source=link-attribution&amp;amp;utm_medium=referral&amp;amp;utm_campaign=image&amp;amp;utm_content=2062055&#34;&gt;ElisaRiva&lt;/a&gt;在&lt;a href=&#34;https://pixabay.com/zh/?utm_source=link-attribution&amp;amp;utm_medium=referral&amp;amp;utm_campaign=image&amp;amp;utm_content=2062055&#34;&gt;Pixabay&lt;/a&gt;上发布&lt;/p&gt;&lt;/blockquote&gt;
&lt;h1 id=&#34;一微分中值定理&#34;&gt;一、微分中值定理&lt;/h1&gt;
&lt;h2 id=&#34;1费马引理&#34;&gt;1.费马引理&lt;/h2&gt;
&lt;p&gt;设函数 $f(x)$ 在点 $x_{0}$ 的某邻域 $U(x_{0})$ 内有定义，并且在 $x_{0}$ 处可导，如果对任意 $x \in U(x_{0})$ 有 $f(x) \leq f(x_{0})$ （或 $f(x) \geq f(x_{0})$ ），则 $f’(x_{0})=0$。&lt;/p&gt;
&lt;h3 id=&#34;证明费马引理&#34;&gt;证明费马引理&lt;/h3&gt;
&lt;p&gt;$$不妨假设\forall x\in U(x_{0}),f(x) \leq f(x_{0})$$
$$当x \to x_{0}^{+},\frac{f(x)-f(x_{0})}{x-x_{0}} \leq 0$$
$$由保号性知：f’&lt;em&gt;{+}(x&lt;/em&gt;{0}) = \lim_{x \to x_{0}^{+}} \frac{f(x)-f(x_{0})}{x-x_{0}} \leq 0$$
$$当x \to x_{0}^{-},\frac{f(x)-f(x_{0})}{x-x_{0}} \geq 0$$
$$由保号性知：f’&lt;em&gt;{-}(x&lt;/em&gt;{0}) = \lim_{x \to x_{0}^{-}} \frac{f(x)-f(x_{0})}{x-x_{0}} \geq 0$$
$$又\because f’(x_{0}) \exists ，故f’&lt;em&gt;{+}(x&lt;/em&gt;{0}) = f’&lt;em&gt;{-}(x&lt;/em&gt;{0})$$
$$又f’&lt;em&gt;{+}(x&lt;/em&gt;{0})\leq  0 , f’&lt;em&gt;{-}(x&lt;/em&gt;{0}) \geq  0$$
$$从而f’(x_{0}) = f’&lt;em&gt;{+}(x&lt;/em&gt;{0}) = f’&lt;em&gt;{-}(x&lt;/em&gt;{0}) = 0$$&lt;/p&gt;</description>
    </item>
    <item>
      <title>【长句分析】2019.7.11</title>
      <link>https://frytea.com/archives/132/</link>
      <pubDate>Sun, 21 Jul 2019 23:10:00 +0000</pubDate>
      <guid>https://frytea.com/archives/132/</guid>
      <description>&lt;h2 id=&#34;句子原型&#34;&gt;句子原型：&lt;/h2&gt;
&lt;p&gt;So they compared U.S. cities’ average happiness measured by Gallup polling with the investment activity of publicly traded firms in those areas.（完形. 2016. 英二）&lt;/p&gt;
&lt;h2 id=&#34;词汇积累&#34;&gt;词汇积累&lt;/h2&gt;
&lt;blockquote&gt;
&lt;p&gt;compare&amp;hellip;with&amp;hellip; 将……和……相互比较
Gallup polling n.盖洛普民意测验（由盖洛普设计的用以调查民众的看法、意见和心态的一种测试方法
publicly traded firms 公开交易的公司；上市公司&lt;/p&gt;</description>
    </item>
    <item>
      <title>【语法三四】长难句三大套路</title>
      <link>https://frytea.com/archives/131/</link>
      <pubDate>Sun, 21 Jul 2019 09:37:00 +0000</pubDate>
      <guid>https://frytea.com/archives/131/</guid>
      <description>&lt;p&gt;该图片由&lt;a href=&#34;https://pixabay.com/zh/users/zhaomengqi23-4295622/?utm_source=link-attribution&amp;amp;utm_medium=referral&amp;amp;utm_campaign=image&amp;amp;utm_content=1989115&#34;&gt;zhaomengqi23&lt;/a&gt;在&lt;a href=&#34;https://pixabay.com/zh/?utm_source=link-attribution&amp;amp;utm_medium=referral&amp;amp;utm_campaign=image&amp;amp;utm_content=1989115&#34;&gt;Pixabay&lt;/a&gt;上发布&lt;/p&gt;
&lt;h1 id=&#34;知识结构&#34;&gt;知识结构&lt;/h1&gt;
&lt;p&gt;&lt;img alt=&#34;2019072117114612860463.png&#34; loading=&#34;lazy&#34; src=&#34;http://frytea-data.test.upcdn.net/2019072117114612860463.png#shadow&#34;&gt;&lt;/p&gt;
&lt;h1 id=&#34;一平行结构&#34;&gt;一、平行结构&lt;/h1&gt;
&lt;h2 id=&#34;1-名词词组介词短语的平行并列&#34;&gt;1. 名词、词组、介词短语的平行并列&lt;/h2&gt;
&lt;p&gt;(1) {{The English, the Germans, the Dutch and the French : 主}} {{were investing : 谓}} {{in Britain’s former colony : 定}}.
(2) {{The networked computer : ==主==}} {{is : ==系==}} {{an amazing device : ==表==}}, {{the first media machine : 定（同位语）}} {{that : 定从，主}} {{serves : 谓}} {{as the mode of production : 并宾}}, {{means of distribution : 并宾}}, {{site of reception : 并宾}}, {{and : 连}} {{place of praise and critique : 并宾}}.
(3) So {{disciplines : ==主==}} {{acquire : ==谓==}} {{a monopoly : ==宾==}} {{not just : 连}} over the production of knowledge, {{but also : 连}} over the production of producers of knowledge.
(4) {{Information : ==主==}} {{flows : ==谓==}} from the media to the influentials {{and : ==连==}} from them to everyone else.&lt;/p&gt;</description>
    </item>
    <item>
      <title>【高 1】 函数、极限、连续</title>
      <link>https://frytea.com/archives/130/</link>
      <pubDate>Sun, 21 Jul 2019 09:00:45 +0000</pubDate>
      <guid>https://frytea.com/archives/130/</guid>
      <description>&lt;h2 id=&#34;大纲要求&#34;&gt;大纲要求&lt;/h2&gt;
&lt;p&gt;略&lt;/p&gt;
&lt;h2 id=&#34;本章重点&#34;&gt;本章重点&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;掌握求极限的各种方法。&lt;/li&gt;
&lt;li&gt;掌握无穷小阶的比较及确定无穷小阶的方法，会用等价无穷小求极限。&lt;/li&gt;
&lt;li&gt;判断函数是否连续及确定间断点的类型（本质上是求极限）。&lt;/li&gt;
&lt;li&gt;闭区间连续函数的性质。&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;基础知识&#34;&gt;基础知识###&lt;/h2&gt;
&lt;p&gt;§ 1.1 函数
1.函数的定义&lt;/p&gt;</description>
    </item>
    <item>
      <title>考研数二知识说明</title>
      <link>https://frytea.com/archives/129/</link>
      <pubDate>Sun, 21 Jul 2019 08:53:00 +0000</pubDate>
      <guid>https://frytea.com/archives/129/</guid>
      <description>&lt;h1 id=&#34;知识架构&#34;&gt;知识架构&lt;/h1&gt;
&lt;p&gt;&lt;a href=&#34;http://frytea-data.test.upcdn.net/2019072119185781322145.png&#34;&gt;http://frytea-data.test.upcdn.net/2019072119185781322145.png&lt;/a&gt;&lt;/p&gt;
&lt;h1 id=&#34;版权声明&#34;&gt;版权声明&lt;/h1&gt;
&lt;p&gt;本笔记中的全部内容由本文作者整理，内容全部基于考虫2020考研系统班讲义，若有侵权立即删除！&lt;/p&gt;
&lt;h2 id=&#34;高等数学&#34;&gt;高等数学&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;授课教师：陈晓燕老师&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;线性代数&#34;&gt;线性代数&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;曾芸芸老师&lt;/li&gt;
&lt;/ul&gt;
&lt;h1 id=&#34;联系方式&#34;&gt;联系方式&lt;/h1&gt;
&lt;ul&gt;
&lt;li&gt;E-mail: &lt;a href=&#34;mailto:songtianlun@frytea.com&#34;&gt;songtianlun@frytea.com&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Web: &lt;a href=&#34;https://frytea.com&#34;&gt;https://frytea.com&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote&gt;
&lt;p&gt;注：导图使用&lt;strong&gt;Mindnote&lt;/strong&gt;发布&lt;/p&gt;</description>
    </item>
    <item>
      <title>【史纲】近现代史纲要知识说明</title>
      <link>https://frytea.com/archives/128/</link>
      <pubDate>Sat, 20 Jul 2019 11:02:00 +0000</pubDate>
      <guid>https://frytea.com/archives/128/</guid>
      <description>&lt;p&gt;&lt;img alt=&#34;201907229394942671451.jpg&#34; loading=&#34;lazy&#34; src=&#34;http://frytea-data.test.upcdn.net/201907229394942671451.jpg&#34;&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;该图片由&lt;a href=&#34;https://pixabay.com/zh/users/Janice_Li-1529522/?utm_source=link-attribution&amp;amp;utm_medium=referral&amp;amp;utm_campaign=image&amp;amp;utm_content=1016598&#34;&gt;Janice_Li&lt;/a&gt;在&lt;a href=&#34;https://pixabay.com/zh/?utm_source=link-attribution&amp;amp;utm_medium=referral&amp;amp;utm_campaign=image&amp;amp;utm_content=1016598&#34;&gt;Pixabay&lt;/a&gt;上发布&lt;/p&gt;&lt;/blockquote&gt;
&lt;h1 id=&#34;近现代史纲要知识结构&#34;&gt;近现代史纲要知识结构&lt;/h1&gt;
&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://cdn.nlark.com/yuque/0/2019/png/376635/1562250798636-3affb217-b6bc-4229-9103-897e8cd3e605.png&#34;&gt;&lt;/p&gt;
&lt;h1 id=&#34;版权声明&#34;&gt;版权声明&lt;/h1&gt;
&lt;p&gt;本笔记中的全部内容由本文作者整理，内容全部基于考虫2020考研系统班讲义，若有侵权立即删除！&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;授课教师：伍毅老师&lt;/li&gt;
&lt;/ul&gt;
&lt;h1 id=&#34;联系方式&#34;&gt;联系方式&lt;/h1&gt;
&lt;ul&gt;
&lt;li&gt;E-mail: &lt;a href=&#34;mailto:songtianlun@frytea.com&#34;&gt;songtianlun@frytea.com&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Web: &lt;a href=&#34;https://frytea.com&#34;&gt;https://frytea.com&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description>
    </item>
    <item>
      <title>【史纲】第四章 开天辟地的大事变</title>
      <link>https://frytea.com/archives/126/</link>
      <pubDate>Sat, 20 Jul 2019 11:01:00 +0000</pubDate>
      <guid>https://frytea.com/archives/126/</guid>
      <description>&lt;h1 id=&#34;第四章----开天辟地的大事变&#34;&gt;第四章    开天辟地的大事变&lt;/h1&gt;
&lt;p&gt;1.新文化运动兴起的标志：1915年9月陈独秀在上海创办《新青年》杂志&lt;/p&gt;
&lt;p&gt;新文化运动的主要阵地：《新青年》杂志和北京大学&lt;/p&gt;
&lt;p&gt;2.新文化运动的分期：五四运动以前主要宣传资产阶级民主主义思想；五四运动以后的新文化运动主要宣传马克思主义。
3.五四运动以前新文化运动的基本内容：&lt;/p&gt;</description>
    </item>
    <item>
      <title>【史纲】第五章 中国革命的新道路</title>
      <link>https://frytea.com/archives/127/</link>
      <pubDate>Sat, 20 Jul 2019 11:01:00 +0000</pubDate>
      <guid>https://frytea.com/archives/127/</guid>
      <description>&lt;h1 id=&#34;第五章----中国革命的新道路&#34;&gt;第五章    中国革命的新道路&lt;/h1&gt;
&lt;p&gt;1.标志着国民党在全国范围内建立了自己的政治的事件是：东北易帜
2.八七会议的主要内容&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;彻底清算了大革命后期的陈独秀右倾机会主义错误&lt;/li&gt;
&lt;li&gt;确定了土地革命和武装反抗国民党反动统治的总方针&lt;/li&gt;
&lt;li&gt;选出了以瞿秋白为首的中央临时政治局
3.在会上强调“以后要非常注意军事，须知政权是由枪杆子中取得的”的人是：毛泽东&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;八七会议的意义：开始了从大革命失败到土地革命战争兴起的历史性转折&lt;/p&gt;</description>
    </item>
    <item>
      <title>【史纲】第二章 对国家出路的早期探索</title>
      <link>https://frytea.com/archives/124/</link>
      <pubDate>Sat, 20 Jul 2019 11:00:00 +0000</pubDate>
      <guid>https://frytea.com/archives/124/</guid>
      <description>&lt;h1 id=&#34;第二章----对国家出路的早期探索&#34;&gt;第二章    对国家出路的早期探索&lt;/h1&gt;
&lt;p&gt;1.《天朝田亩制度》是&lt;strong&gt;最能&lt;/strong&gt;体现太平天国社会理想和这次农民起义特色的纲领性文件
2.《天朝田亩制度》的缺点：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;它并没有超出农民小生产者的狭隘眼界&lt;/li&gt;
&lt;li&gt;同时又是一个没有商品交换的和绝对平均的社会，具有不切实际的空想性质&lt;/li&gt;
&lt;li&gt;《天朝田亩制度》中的平分土地方案并未付诸实行&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;3.尤其是提出“准富者请人雇工”，对穷人“宜令作工，以受所值”，这就把向西方的学习，从生产力的领域扩展到生产关系的领域&lt;/p&gt;</description>
    </item>
    <item>
      <title>【史纲】第三章 辛亥革命与君主专制制度的终结</title>
      <link>https://frytea.com/archives/125/</link>
      <pubDate>Sat, 20 Jul 2019 11:00:00 +0000</pubDate>
      <guid>https://frytea.com/archives/125/</guid>
      <description>&lt;h1 id=&#34;第三章----辛亥革命与君主专制制度的终结&#34;&gt;第三章    辛亥革命与君主专制制度的终结&lt;/h1&gt;
&lt;p&gt;1.&lt;strong&gt;清末“新政”的破产&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;改革丝毫没有触动封建专制统治&lt;/li&gt;
&lt;li&gt;并没有能够挽救清王朝，反而激化了社会矛盾&lt;/li&gt;
&lt;li&gt;根本目的是为了延续其反动统治
2.孙中山由温和转暴力的标志：孙中山上书李鸿章
3.孙中山建立第一个革命团体兴中会&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;兴中会誓词：&lt;/strong&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>【史纲】第一章   反对外国侵略的斗争</title>
      <link>https://frytea.com/archives/123/</link>
      <pubDate>Sat, 20 Jul 2019 11:00:00 +0000</pubDate>
      <guid>https://frytea.com/archives/123/</guid>
      <description>&lt;h1 id=&#34;第一章---反对外国侵略的斗争&#34;&gt;第一章   反对外国侵略的斗争&lt;/h1&gt;
&lt;p&gt;1.鸦片战争是中国近代史（1840-1949）的起点。
2.中国近代史上第一个不平等条约是与英国签订的《南京条约》
3.&lt;strong&gt;鸦片战争是中国近代史的起点&lt;/strong&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>【语法二】长难句入门</title>
      <link>https://frytea.com/archives/120/</link>
      <pubDate>Sat, 20 Jul 2019 08:12:00 +0000</pubDate>
      <guid>https://frytea.com/archives/120/</guid>
      <description>&lt;h1 id=&#34;一句子的基本结构&#34;&gt;一、句子的基本结构&lt;/h1&gt;
&lt;h2 id=&#34;英语句子&#34;&gt;英语句子&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;简单句&lt;/li&gt;
&lt;li&gt;并列句/and/but/or/not (only)&amp;hellip;but(also)/either&amp;hellip;or..&lt;/li&gt;
&lt;li&gt;复合句/三大从句&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;句子三原则&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;句子结束标志：“==,==” “==!==” “==?==” “==&amp;hellip;==”&lt;/li&gt;
&lt;li&gt;句子最基本的单位：==主谓==&lt;/li&gt;
&lt;li&gt;一个简单句只有==一套==主谓结构&lt;/li&gt;
&lt;/ol&gt;
&lt;h1 id=&#34;二长难句分析步骤&#34;&gt;二、长难句分析步骤&lt;/h1&gt;
&lt;p&gt;第一步：找==标点==
第二步：找==主谓==
第三步：找==连接词==，划分句子
第四步：根据链接词和句意（从句在整个句子里充当的成分）确定句子间==关系==&lt;/p&gt;</description>
    </item>
    <item>
      <title>【高2.1】函数与微分</title>
      <link>https://frytea.com/archives/117/</link>
      <pubDate>Fri, 19 Jul 2019 03:26:00 +0000</pubDate>
      <guid>https://frytea.com/archives/117/</guid>
      <description>&lt;h1 id=&#34;21-导数与微分&#34;&gt;2.1 导数与微分&lt;/h1&gt;
&lt;h2 id=&#34;一导数与微分的基本概念&#34;&gt;一、导数与微分的基本概念&lt;/h2&gt;
&lt;h3 id=&#34;1-函数在一点x_0处的导数定义&#34;&gt;1. 函数在一点$x_{0}$处的导数定义&lt;/h3&gt;
&lt;p&gt;设函数$ y=f(x) $在点$x_{0}$的某邻域内有定义，当自变量$x$在$x_{x}$处取得增量$\bigtriangleup x$（点$x_{0}+\bigtriangleup x$仍然在该邻域内），相应地因变量取得增量$\bigtriangleup y = f(x_{0}+\bigtriangleup x)-f(x_{0})$. 如果极限$$ \lim_{\bigtriangleup x \to 0} \frac{f(x_{0}+\bigtriangleup x)-f(x_{0})}{\bigtriangleup x}$$存在，则称函数$y=f(x)$在点$x_{0}$处可导并称此极限值为函数$f(x)$在$x_{0}$处的导数（也成微商），记作$f’(x_{0})$，或$y’|&lt;em&gt;{x=x&lt;/em&gt;{0}}, \frac{dy}{dx}|&lt;em&gt;{x=x&lt;/em&gt;{0}}, \frac{df(x)}{dx}|&lt;em&gt;{x=x&lt;/em&gt;{0}}$. 如果上面的极限不存在，则称函数$y=f(x)$在点$x_{0}$处不可导。&lt;/p&gt;</description>
    </item>
    <item>
      <title>【语法一】基础语法入门</title>
      <link>https://frytea.com/archives/115/</link>
      <pubDate>Thu, 18 Jul 2019 08:39:00 +0000</pubDate>
      <guid>https://frytea.com/archives/115/</guid>
      <description>&lt;p&gt;英语语法真是一个很魔性的东西，学了这么多年，却还是一窍不通，每每提及这件事情我自己总会不自觉的伤感起来。曾经教过我的老师们一定也很恼火，这学生怎么这么笨呀！
最近复习考研英语决心一定要弄懂英语语法，因此从最基础的内容开始积累，在此进行一个简单的记录，内容全部来自于&lt;strong&gt;Vivial老师的考研语法课&lt;/strong&gt;。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Deepin（Linux）下实现Android投屏</title>
      <link>https://frytea.com/archives/34/</link>
      <pubDate>Tue, 18 Jun 2019 00:39:00 +0000</pubDate>
      <guid>https://frytea.com/archives/34/</guid>
      <description>&lt;h1 id=&#34;deepinlinux下实现android投屏&#34;&gt;Deepin（Linux）下实现Android投屏&lt;/h1&gt;
&lt;p&gt;最近需要演示自己的安卓开发作品，因此需要在自己的主力操作系统（Deepin）上实现安卓投屏，之后才好连接电脑在班级里演示。找寻一圈之后终于发现了开源的Linux端投屏神器&lt;code&gt;Scrcpy&lt;/code&gt;. 因此在这里简单记录配置过程，方便后用。&lt;/p&gt;
&lt;p&gt;项目源码：&lt;a href=&#34;https://github.com/Genymobile/scrcpy&#34;&gt;Scrcpy的GitHub&lt;/a&gt;&lt;/p&gt;
&lt;h2 id=&#34;简单说明&#34;&gt;简单说明&lt;/h2&gt;
&lt;p&gt;Scripe支持桌面全平台。&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;It works on GNU/Linux, Windows and MacOS.&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;但是在这里主要记录下Linux下的Deepin系统配置。&lt;/p&gt;</description>
    </item>
    <item>
      <title>software engineering Final Review | 软件工程期末复习</title>
      <link>https://frytea.com/archives/96/</link>
      <pubDate>Sun, 02 Jun 2019 13:18:00 +0000</pubDate>
      <guid>https://frytea.com/archives/96/</guid>
      <description>&lt;h1 id=&#34;软件工程复习&#34;&gt;软件工程复习&lt;/h1&gt;
&lt;h2 id=&#34;more-important&#34;&gt;more important&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;模块独立性&lt;/li&gt;
&lt;/ol&gt;
&lt;ul&gt;
&lt;li&gt;模块独立性，是指软件系统中每个模块只涉及软件要求的具体的子功能，而和软件系统中其他模块的接口是简单的。&lt;/li&gt;
&lt;li&gt;高内聚低耦合&lt;/li&gt;
&lt;/ul&gt;
&lt;ol start=&#34;2&#34;&gt;
&lt;li&gt;类间的关系&lt;/li&gt;
&lt;/ol&gt;
&lt;ul&gt;
&lt;li&gt;继承&lt;/li&gt;
&lt;li&gt;继承关系表示子类重用父类的属性和操作，子类对象也是父类的对象，有时也称父类是子类的泛化。&lt;/li&gt;
&lt;li&gt;聚集&lt;/li&gt;
&lt;li&gt;普通聚集关系：一个部件对象可同时参与多个整体对象&lt;/li&gt;
&lt;li&gt;构成关系：限定一个部件对象在任意时刻只能参与一个整体类的对象，部件对象与整体类对象共存亡&lt;/li&gt;
&lt;li&gt;关联&lt;/li&gt;
&lt;li&gt;表示两个类的对象之间存在着用于消息传递的稳定通道。&lt;/li&gt;
&lt;li&gt;依赖&lt;/li&gt;
&lt;li&gt;依赖类B的对象需要向被依赖类A的对象传递消息；被依赖类A可作为依赖类B操作的形参类型&lt;/li&gt;
&lt;li&gt;依赖关系表示临时性的消息传递通道，操作完成通道消失&lt;/li&gt;
&lt;li&gt;依赖关系是关联关系的弱化，它表示被依赖的类的变化会影响到依赖类。&lt;/li&gt;
&lt;/ul&gt;</description>
    </item>
    <item>
      <title>Spatial database</title>
      <link>https://frytea.com/archives/95/</link>
      <pubDate>Tue, 21 May 2019 06:12:00 +0000</pubDate>
      <guid>https://frytea.com/archives/95/</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;A spatial database is a database that is optimized for storing and querying data that represents objects defined in a geometric space.&lt;/p&gt;&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;from Wikipedia&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;Through the space database course was completed last semester. But to be honest, i am fail to understand what a space database is. Even though i have always claimed to be using a spatial database.&lt;/p&gt;
&lt;p&gt;Actually, i am really using a spatial database ,but it was only used to store spatial data,but did not query.&lt;/p&gt;</description>
    </item>
    <item>
      <title>智能手机中的传感器</title>
      <link>https://frytea.com/archives/97/</link>
      <pubDate>Sat, 11 May 2019 14:35:00 +0000</pubDate>
      <guid>https://frytea.com/archives/97/</guid>
      <description>&lt;h1 id=&#34;智能手机中的传感器&#34;&gt;智能手机中的传感器&lt;/h1&gt;
&lt;h2 id=&#34;概述&#34;&gt;概述&lt;/h2&gt;
&lt;p&gt;随着现代信息技术的飞速发展，智能手机已经成为人们生活不可获取的一部分，同时其职能也从一开始的通讯发展到现在的娱乐、社交甚至生产，为了应对人们对手机越老越高的要求，其自身必定要生产的越来越人性化、智能化，而为了实现这一目标，就必定需要更加智能化的传感器支持，今天作者就在这里整理一下互联网及学术平台上开发可以查到的智能手机传感器相关信息，让我们进一步了解手上的这一台智能设备。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Android编程之Navigation项目迁移AndroidX踩坑记录</title>
      <link>https://frytea.com/archives/27/</link>
      <pubDate>Wed, 08 May 2019 11:19:00 +0000</pubDate>
      <guid>https://frytea.com/archives/27/</guid>
      <description>&lt;h1 id=&#34;android编程之navigation项目迁移androidx踩坑记录&#34;&gt;Android编程之Navigation项目迁移AndroidX踩坑记录&lt;/h1&gt;
&lt;p&gt;androidx 是对 android.support.xxx 包的整理后产物。由于之前的support包过于混乱，所以，google推出了 androidX。&lt;/p&gt;
&lt;p&gt;在项目迁移AndroidX的过程中遇到一些问题，特别是Navigation抽屉页面迁移的过程中遇到一些问题，跟着网上的教程走完了全程，却总是闪退，原因直指xml布局文件。&lt;/p&gt;
&lt;p&gt;经过一番斗争，终于完成了Android studio原生Navigation Drawer Activity的AndroidX迁移工作，在这里仅以此为例，记录迁移流程，及注意细节。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Linux下使用rclone挂载网盘到本地</title>
      <link>https://frytea.com/archives/31/</link>
      <pubDate>Mon, 06 May 2019 15:58:00 +0000</pubDate>
      <guid>https://frytea.com/archives/31/</guid>
      <description>&lt;p&gt;Rclone 是一个支持挂载多数国外网盘的工具。&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://rclone.org/&#34;&gt;Rclone官网传送们&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;目前 Rclone 支持挂载的网盘有：Google Drive、 Dropbox 、Google Cloud Storage 、Microsoft One Drive 、Hubic、 Backblaze B2 、Yandex Disk 、Openstack Swift / Rackspace cloud files / Memset Memstore 等。更强大的是，Rclone 还支持 SFTP 、FTP 、HTTP 挂载。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Windows Update服务启动弹出“拒绝访问的解决方案</title>
      <link>https://frytea.com/archives/49/</link>
      <pubDate>Sat, 13 Apr 2019 14:25:00 +0000</pubDate>
      <guid>https://frytea.com/archives/49/</guid>
      <description>&lt;h2 id=&#34;概述&#34;&gt;概述&lt;/h2&gt;
&lt;p&gt;说起 windows 自动更新相信这是让很多人又爱又恨的东西，爱在于它可以带给我们更新更安全的系统，让我们的生活添加一些新意；而恨就在于其常常在我们不知情的情况下强行开始更新并运行很久的时间。&lt;/p&gt;
&lt;p&gt;作者对于 windows 自动更新忍无可忍，从注册表层关闭了 windows 自动更新；但是当时年少无知，只图一时爽快，确实很长的一段时间没有再更新，但是当有一天我需要自动更新的时候却发现自动更新的服务怎么也打不开了，具体表现在开启 windows update 服务会提示拒绝访问&lt;/p&gt;
&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://raw.githubusercontent.com/songtianlun/Image-Hosting/image/20190413122206.png&#34;&gt;&lt;/p&gt;
&lt;p&gt;经过多次的探索，终于在今天成功开启了自动更新，并开始了一次漫长的更新，第一次感觉到了自动更新是多麽的开心！！在这里记录下这一过程，会开启，会关闭，才算真正学会这一大法，本文介绍方法反之即可作为彻底禁用自动更新的办法！&lt;/p&gt;</description>
    </item>
    <item>
      <title>私有vpn搭建工具集合及靠谱的vpn提供商</title>
      <link>https://frytea.com/archives/39/</link>
      <pubDate>Fri, 12 Apr 2019 12:04:00 +0000</pubDate>
      <guid>https://frytea.com/archives/39/</guid>
      <description>&lt;p&gt;经过本人两年多的实际体验，自建 *** 的方式风险、稳定性等都有待考究，并不是由一台海外服务器就能成的，m感时期可能几分钟就没了，因此还是比较推荐 「专业的人做专业的事」。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Win10安装Rational_Rose_2007步骤及安装包下载</title>
      <link>https://frytea.com/archives/45/</link>
      <pubDate>Thu, 11 Apr 2019 14:34:00 +0000</pubDate>
      <guid>https://frytea.com/archives/45/</guid>
      <description>&lt;p&gt;经典IBM给力软件，UML建模利器，亲身体验，安装步骤及资源全聚合。&lt;/p&gt;
&lt;h1 id=&#34;win10-安装rational_rose_2007-步骤及安装包下载&#34;&gt;Win10 安装Rational_Rose_2007 步骤及安装包下载&lt;/h1&gt;
&lt;h2 id=&#34;概述&#34;&gt;概述&lt;/h2&gt;
&lt;p&gt;Rational rose是一款创建UML模型的软件，由于其相对古老，因此安装流程较为曲折，在这里分享自己的安装经历，记录自己，方便他人。&lt;/p&gt;
&lt;p&gt;安装分为两部分：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;虚拟光驱工具Alcohol120%的安装&lt;/li&gt;
&lt;li&gt;Rational rose软件安装包的打开&lt;/li&gt;
&lt;li&gt;软件安装&lt;/li&gt;
&lt;/ul&gt;</description>
    </item>
    <item>
      <title>物联网技术概论</title>
      <link>https://frytea.com/archives/98/</link>
      <pubDate>Tue, 09 Apr 2019 02:51:00 +0000</pubDate>
      <guid>https://frytea.com/archives/98/</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;教材《物联网概论》——崔艳荣、周贤善&lt;/p&gt;&lt;/blockquote&gt;
&lt;h2 id=&#34;第一章&#34;&gt;第一章&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;简述对物联网（IOT）的概念理解&lt;/li&gt;
&lt;/ol&gt;
&lt;ul&gt;
&lt;li&gt;当前几乎所有技术与计算机、互联网技术的结合，实现物体与物体之间、环境以及状态信息实时的共享以及智能化的收集、传递、处理、执行。&lt;/li&gt;
&lt;/ul&gt;
&lt;ol start=&#34;2&#34;&gt;
&lt;li&gt;简述物联网技术特征&lt;/li&gt;
&lt;/ol&gt;
&lt;ul&gt;
&lt;li&gt;全面感知&lt;/li&gt;
&lt;li&gt;互通互联&lt;/li&gt;
&lt;li&gt;智慧运行&lt;/li&gt;
&lt;/ul&gt;
&lt;ol start=&#34;3&#34;&gt;
&lt;li&gt;物联网与互联网的关系&lt;/li&gt;
&lt;/ol&gt;
&lt;ul&gt;
&lt;li&gt;互联网是物联网的基础&lt;/li&gt;
&lt;li&gt;互联网和物联网终端连接方式不同&lt;/li&gt;
&lt;li&gt;物联网涉及的技术范围更广&lt;/li&gt;
&lt;li&gt;物联网是让中国技术走在世界前列的机遇&lt;/li&gt;
&lt;li&gt;特别的，物联网
&lt;ul&gt;
&lt;li&gt;集合了各种感知技术&lt;/li&gt;
&lt;li&gt;是一种建立在互联网之上的泛在网络&lt;/li&gt;
&lt;li&gt;不仅仅提供了传感器的链接，其本身也具有智能处理的能力，能够对物体实施智能控制。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;</description>
    </item>
    <item>
      <title>《一条狗的回家路》观后感</title>
      <link>https://frytea.com/archives/107/</link>
      <pubDate>Mon, 25 Mar 2019 15:40:00 +0000</pubDate>
      <guid>https://frytea.com/archives/107/</guid>
      <description>&lt;p&gt;一条狗的回家路《观后感》&lt;/p&gt;
&lt;p&gt;为了培养对英语的感觉，我决定有时间就看看英文电影，每天背单词。今天看了电影《一条狗的回家路》，心里看的暖烘烘的，也许联系幸福的纽带，就是我们内心深处的爱。&lt;/p&gt;</description>
    </item>
    <item>
      <title>《神探蒲松龄》观影有感</title>
      <link>https://frytea.com/archives/109/</link>
      <pubDate>Sat, 23 Mar 2019 13:42:00 +0000</pubDate>
      <guid>https://frytea.com/archives/109/</guid>
      <description>&lt;p&gt;最近看了很多电影，也许是因为这学期时间相对宽松。但又也许是因为看电影能看到的能感知到的东西变多了。总觉就是这样一种神奇的东西，越来越不会把电影里的东西当真，另一方面又感受到了其他不同的魔力。很神奇，也许就是这样子，无论是出于什么样的人生阶段，都会有阻力和动力，任何一个时候都是最好的时候。&lt;/p&gt;</description>
    </item>
    <item>
      <title>vue项目使用axios对接第三方api，并做跨域处理</title>
      <link>https://frytea.com/archives/40/</link>
      <pubDate>Sun, 17 Mar 2019 09:51:00 +0000</pubDate>
      <guid>https://frytea.com/archives/40/</guid>
      <description>&lt;h2 id=&#34;简介&#34;&gt;简介&lt;/h2&gt;
&lt;p&gt;使用 vue 框架对接第三方接口时，常常使用 anxios。&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;有很多时候你在构建应用时需要访问一个 API 并展示其数据。做这件事的方法有好几种，而使用基于 promise 的 HTTP 客户端 axios 则是其中非常流行的一种。
&lt;a href=&#34;https://cn.vuejs.org/v2/cookbook/using-axios-to-consume-apis.html&#34;&gt;vue官网描述&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>私人网盘搭建之centos下安装cloudreve</title>
      <link>https://frytea.com/archives/29/</link>
      <pubDate>Fri, 15 Mar 2019 05:10:00 +0000</pubDate>
      <guid>https://frytea.com/archives/29/</guid>
      <description>&lt;h1 id=&#34;简介&#34;&gt;简介&lt;/h1&gt;
&lt;p&gt;cloudreve是基于ThinkPHP构建的网盘系统，能够助您以较低成本快速搭建起公私兼备的网盘。
&lt;a href=&#34;https://cloudreve.org/&#34;&gt;主页&lt;/a&gt; | &lt;a href=&#34;https://forum.cloudreve.org/&#34;&gt;论坛&lt;/a&gt; | &lt;a href=&#34;https://drive.aoaoao.me/&#34;&gt;演示站&lt;/a&gt; | &lt;a href=&#34;https://jq.qq.com/?_wv=1027&amp;amp;k=5TX6sJY&#34;&gt;QQ群&lt;/a&gt;
&lt;img loading=&#34;lazy&#34; src=&#34;http://pnabaentf.bkt.clouddn.com//20190315140056.png&#34;&gt;
支持的存储介质
&lt;img loading=&#34;lazy&#34; src=&#34;http://pnabaentf.bkt.clouddn.com//20190315140113.png&#34;&gt;&lt;/p&gt;
&lt;h1 id=&#34;安装步骤&#34;&gt;安装步骤&lt;/h1&gt;
&lt;h2 id=&#34;第一步官网下载安装包&#34;&gt;第一步：官网下载安装包&lt;/h2&gt;
&lt;p&gt;&lt;a href=&#34;https://cloudreve.org/download.php&#34;&gt;官网地址下载地址&lt;/a&gt;
&lt;img loading=&#34;lazy&#34; src=&#34;http://pnabaentf.bkt.clouddn.com//20190315135200.png&#34;&gt;&lt;/p&gt;
&lt;h2 id=&#34;第二步解压到网页根目录&#34;&gt;第二步：解压到网页根目录&lt;/h2&gt;
&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;http://pnabaentf.bkt.clouddn.com//20190315135258.png&#34;&gt;&lt;/p&gt;
&lt;h2 id=&#34;第三步配置伪静态&#34;&gt;第三步：配置伪静态&lt;/h2&gt;
&lt;p&gt;以下为针对nginx的代码&lt;/p&gt;</description>
    </item>
    <item>
      <title>Centos系统安装docker</title>
      <link>https://frytea.com/archives/37/</link>
      <pubDate>Tue, 12 Mar 2019 03:13:00 +0000</pubDate>
      <guid>https://frytea.com/archives/37/</guid>
      <description>&lt;h2 id=&#34;主要步骤&#34;&gt;主要步骤&lt;/h2&gt;
&lt;p&gt;1、Docker 要求 CentOS 系统的内核版本高于 3.10 ，查看本页面的前提条件来验证你的CentOS 版本是否支持 Docker 。&lt;/p&gt;
&lt;p&gt;通过 uname -r 命令查看你当前的内核版本&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;$ uname -r
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;http://pnabaentf.bkt.clouddn.com//20190312111724.png&#34;&gt;
2、使用 root 权限登录 Centos。确保 yum 包更新到最新。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Vue项目使用经验积累</title>
      <link>https://frytea.com/archives/42/</link>
      <pubDate>Tue, 12 Mar 2019 02:51:00 +0000</pubDate>
      <guid>https://frytea.com/archives/42/</guid>
      <description>&lt;h1 id=&#34;参考文献&#34;&gt;参考文献&lt;/h1&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://blog.csdn.net/qq_29483485/article/details/86605215&#34;&gt;vue 引入自定义js方法并调用&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://blog.csdn.net/csl125/article/details/84867305&#34;&gt;在vue项目中使用地图api,在vue-cli搭建的项目中使用高德地图定位&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://www.jianshu.com/p/3dc7bad83021&#34;&gt;Vue - 监听文本框数据的三种方法&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description>
    </item>
    <item>
      <title>Vue项目api加载json文件</title>
      <link>https://frytea.com/archives/44/</link>
      <pubDate>Sun, 10 Mar 2019 04:00:00 +0000</pubDate>
      <guid>https://frytea.com/archives/44/</guid>
      <description>&lt;h2 id=&#34;概述&#34;&gt;概述&lt;/h2&gt;
&lt;p&gt;在 vue 项目开发过程中，免不了的要进行 api 接口的调用，当后端接口未搭建完成时，可以使用 json 文件模拟数据调用来搭建功能，同时有一些相关数据也是需要本地 json 文件支持，于是在这里介绍自己实战项目内嵌 api 接口调用本地数据 json 的方式&lt;/p&gt;</description>
    </item>
    <item>
      <title>获取指定尺寸随机美图</title>
      <link>https://frytea.com/archives/1226/</link>
      <pubDate>Sat, 09 Mar 2019 11:53:00 +0000</pubDate>
      <guid>https://frytea.com/archives/1226/</guid>
      <description>&lt;p&gt;简介 unsplash是一个美图资源站点，站点提供大量高质量美图，重点突出，极其美丽，是获取资源的不&lt;/p&gt;</description>
    </item>
    <item>
      <title>获取指定尺寸随机美图 </title>
      <link>https://frytea.com/archives/51/</link>
      <pubDate>Sat, 09 Mar 2019 03:53:00 +0000</pubDate>
      <guid>https://frytea.com/archives/51/</guid>
      <description>&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://source.unsplash.com/random/1366x768&#34;&gt;&lt;/p&gt;
&lt;h2 id=&#34;简介&#34;&gt;简介&lt;/h2&gt;
&lt;p&gt;unsplash是一个美图资源站点，站点提供大量高质量美图，重点突出，极其美丽，是获取资源的不二选择，同时该站点还提供了一系列接口，在这里介绍一种获取随机美图的方式&lt;/p&gt;</description>
    </item>
    <item>
      <title>Vue项目使用leaflet&#43;heatmap.js加载热力图</title>
      <link>https://frytea.com/archives/41/</link>
      <pubDate>Fri, 08 Mar 2019 16:29:00 +0000</pubDate>
      <guid>https://frytea.com/archives/41/</guid>
      <description>&lt;h2 id=&#34;概述&#34;&gt;概述&lt;/h2&gt;
&lt;p&gt;最近做数字工程实践涉及到大量的地图操作，刚开始跳过依赖于 supermap iclient for JavaScript，但是越做深入越发现局限性太大，于是开始考虑使用开源地图库做各项操作，本文记录在 vue 项目中引入原生 leaflet 及 heatmap 打开地图及显示热力图的各项操作。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Vue项目使用Vue2Leaflet插件实现地图显示</title>
      <link>https://frytea.com/archives/43/</link>
      <pubDate>Sun, 03 Mar 2019 10:47:00 +0000</pubDate>
      <guid>https://frytea.com/archives/43/</guid>
      <description>&lt;h1 id=&#34;简介&#34;&gt;简介&lt;/h1&gt;
&lt;p&gt;vue是一个渐进式javascript框架，用来快速构建网页项目，在vue框架之上结构化leaflet地图库的产物vue2leaflet可以在vue项目中很方便的加载地图，下面简单介绍一个vue2leaflet加载地图的过程。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Windows下纯控制台配置vue环境并创建第一个vue项目</title>
      <link>https://frytea.com/archives/48/</link>
      <pubDate>Fri, 01 Mar 2019 01:50:00 +0000</pubDate>
      <guid>https://frytea.com/archives/48/</guid>
      <description>&lt;h1 id=&#34;概述&#34;&gt;概述&lt;/h1&gt;
&lt;p&gt;本文叙述如何在windows环境下完全使用cmd控制台配置vue环境并使用控制台创建vue项目，最终使用webstorm运行。&lt;/p&gt;
&lt;h1 id=&#34;环境配置&#34;&gt;环境配置&lt;/h1&gt;
&lt;h2 id=&#34;第一步nodejs安装&#34;&gt;第一步:node.js安装&lt;/h2&gt;
&lt;p&gt;Vue项目通常通过webpack工具来构建，而webpack命令的执行是依赖node.js的环境的，所以首先要安装node.js。node.js的官方地址为：&lt;a href=&#34;https://link.jianshu.com/?t=https://nodejs.org/en/download/&#34;&gt;https://nodejs.org/en/download/&lt;/a&gt;，下载相应版本。&lt;/p&gt;</description>
    </item>
    <item>
      <title>WebStorm中使用Git同步代码到Github</title>
      <link>https://frytea.com/archives/47/</link>
      <pubDate>Wed, 27 Feb 2019 02:01:00 +0000</pubDate>
      <guid>https://frytea.com/archives/47/</guid>
      <description>&lt;h1 id=&#34;webstorm下配置github实现代码同步&#34;&gt;WebStorm下配置GitHub实现代码同步&lt;/h1&gt;
&lt;p&gt;项目开发时使用GitHub作为公共代码仓库托管代码，可以极大的提高团队合作效率，同时也可以实现代码云端存储等，方便自己也方便大家！下面记录一下自己配置webstorm同步github的过程，仅供参考。&lt;/p&gt;</description>
    </item>
    <item>
      <title>《一百个人的十年》</title>
      <link>https://frytea.com/archives/1049/</link>
      <pubDate>Sat, 23 Feb 2019 01:23:00 +0000</pubDate>
      <guid>https://frytea.com/archives/1049/</guid>
      <description>&lt;p&gt;最近看了冯骥才老先生写的《一百个人的十年》，讲述的是文革时期那段不堪回首的回忆。作者通过100个在文&lt;/p&gt;</description>
    </item>
    <item>
      <title>【书评】一百个人的十年</title>
      <link>https://frytea.com/archives/103/</link>
      <pubDate>Fri, 22 Feb 2019 17:23:00 +0000</pubDate>
      <guid>https://frytea.com/archives/103/</guid>
      <description>&lt;p&gt;最近看了冯骥才老先生写的《一百个人的十年》，讲述的是文革时期那段不堪回首的回忆。作者通过100个在文革中受苦受难的大众，记录下他们在文革中经历的苦难故事，让我们这一代人才有机会如此近距离地接触那一段上一辈不愿提起的往事。前辈人经历的苦难会变作后辈人宝贵的精神财富，文革必定会成为激励我们这一代人奋力前行的一段历史。
阅读书籍，虽然是一本纪实书籍，文字看上去很轻，但事实上每一个字都重重的捶打在我的心上，常常看到有时候捶胸顿足，有一口气久久上不来，看到难以入眠，眼睛实在睁不开了才慢慢地睡去。文革，那是一段不堪的往事，作为我们这一代人又是不知其真面目的。
阅读书籍有很多的感受，在下面请允许我慢慢叙述：
1.生而为人从来就没有不受苦难能长大的。人们常说“知识改变命运”，有知识的人常常被人们看作是腰缠万贯，虽说在古代常常有“穷酸书生”的说法，但是在当代，读书人越来越受到重视，被更多的人所敬仰。可是事情不总是这样子发展的，在文革时期，受到迫害最严重的当属知识分子了&amp;hellip;..有人前一天晚上结束考研，北师大的高才生，经过了长时间艰苦的复习，考完试晚上想着自己一定可以考一个好的成绩，看着窗外的风景，突然间闹起了文革，学生们喊着要废除考研政策，把考研试卷拖出来点了一把火&amp;hellip;&amp;hellip;葬送了未来不说，浪费的是大好的青春。可这还不算完，幸幸苦苦准备的考试成绩作废，人还要受尽各种批斗，不知多少知识分子被打成“右派”，他们中大部分用各种残忍的方式离开了这个世界，活着的也是苟延残喘受尽了折磨，每天经受的不仅仅是皮肉上的痛苦，更是精神上的折磨！知识分子中有一派人更艰难，那就是中国的科学家们，当年的科学家大部分都被迫害，国防科研项目保护了一小部分科学家，其他的科学家前途未卜，很多人都受不了种种折磨早早离开了这个世界，当时的人们，在哪里都闹革命，根本没有搞科研的地方，有一个对农学很感兴趣的科学家，明明为土地高产做出了很大的贡献，却只能来到乡下，隐姓埋名，把自己活成一个“隐形人”，穷困落后的乡下反而成了最好的科研地。也许这就是科学家最好的结局了吧。
2.上代人经受的苦难，定将成为下一辈人的精神财富。文革是一代人的噩梦，看尽书中的种种&lt;/p&gt;</description>
    </item>
    <item>
      <title>Hexo在GitHub及gitee配置小记</title>
      <link>https://frytea.com/archives/56/</link>
      <pubDate>Fri, 22 Feb 2019 07:51:00 +0000</pubDate>
      <guid>https://frytea.com/archives/56/</guid>
      <description>&lt;h2 id=&#34;问题小记&#34;&gt;问题小记&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;hexo d操作后将源代码上传而不是上传静态网页
解决方案是设置git账户，&lt;/li&gt;
&lt;/ul&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;$ git config --global user.name &amp;#34;liuxianan&amp;#34;// 你的github用户名，非昵称
$ git config --global user.email  &amp;#34;xxx@qq.com&amp;#34;// 填写你的github注册邮箱
&lt;/code&gt;&lt;/pre&gt;&lt;blockquote&gt;
&lt;p&gt;猜测还有可能是因为cloud studio的不稳定性&lt;/p&gt;</description>
    </item>
    <item>
      <title>网页版终端webssh2配置</title>
      <link>https://frytea.com/archives/33/</link>
      <pubDate>Thu, 21 Feb 2019 10:17:00 +0000</pubDate>
      <guid>https://frytea.com/archives/33/</guid>
      <description>&lt;p&gt;开源项目webssh2可以实现浏览器访问终端，参照网上教程实践后，记录步骤如下：&lt;/p&gt;
&lt;p&gt;安装NVM&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.33.8/install.sh | bash
source ~/.bashrc
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;安装稳定版node.js&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;nvm ls-remote --lts  查询最新版本号
 
        v8.13.0   (LTS: Carbon)
        v8.14.0   (LTS: Carbon)
-&amp;gt;      v8.14.1   (Latest LTS: Carbon)
 
nvm install 8.14.1
# 版本号随时可能改变，请使用 nvm ls-remote --lts 查询最新版本号。
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;下载webssh2&lt;/p&gt;</description>
    </item>
    <item>
      <title>Markdown语法</title>
      <link>https://frytea.com/archives/58/</link>
      <pubDate>Thu, 21 Feb 2019 07:46:00 +0000</pubDate>
      <guid>https://frytea.com/archives/58/</guid>
      <description>&lt;p&gt;Markdown 是一种可以使用普通文本编辑器编写的标记语言，通过简单的标记语法，它可以使普通文本内容具有一定的格式。因为其简单的语法及强大的拓展，可以让人专注于写作，不必要过于关注排版，是撰写文章的利器。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Linux后台运行hexo</title>
      <link>https://frytea.com/archives/50/</link>
      <pubDate>Thu, 21 Feb 2019 07:22:00 +0000</pubDate>
      <guid>https://frytea.com/archives/50/</guid>
      <description>&lt;p&gt;hexo是一个非常高效的博客，但由于其设计特点，目的是为了转换为静态页面，因此不必要一直在后台运行，但是我想随时随地写博客同步到github，使用hexo admin编辑器，这就需要hexo一直在后台运行，于是在网上找到了pm2托管的方式。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Hexo右上角添加GitHub Corner</title>
      <link>https://frytea.com/archives/52/</link>
      <pubDate>Thu, 21 Feb 2019 05:46:00 +0000</pubDate>
      <guid>https://frytea.com/archives/52/</guid>
      <description>&lt;p&gt;使用hexo主题及github发布了博客，想在现有博客上添加一个github corner，于是使用下面的方法，由于我只想在主页添加，于是在主题目录下找到index.swig文件，添加如下代码：&lt;/p&gt;</description>
    </item>
    <item>
      <title>《别让无效努力毁了你》书评</title>
      <link>https://frytea.com/archives/113/</link>
      <pubDate>Tue, 29 Jan 2019 14:54:00 +0000</pubDate>
      <guid>https://frytea.com/archives/113/</guid>
      <description>&lt;h2 id=&#34;内容简介&#34;&gt;内容简介&lt;/h2&gt;
&lt;p&gt;《别让无效努力毁了你》分7部分，25章节，详细阐释了时间、能量和注意力对提升效能的关键作用，比如：找到你的黄金时间、建设体能精力、通过冥想来提升专注力……书中介绍的25种方法都是作者在长期研究中千挑万选出来，并且经过亲身验证的高效方法。每章包含一个测试，理论与实践的结合让阅读的过程就像经历一场高效实验。&lt;/p&gt;</description>
    </item>
    <item>
      <title>《密室逃生》电影观后感</title>
      <link>https://frytea.com/archives/110/</link>
      <pubDate>Sun, 27 Jan 2019 11:09:00 +0000</pubDate>
      <guid>https://frytea.com/archives/110/</guid>
      <description>&lt;p&gt;结束一学期的事情，特别有一种冲动，想去电影院好好的看一部电影，挑选了许久选择了这一部《密室求生》。整体感觉很震撼，故事设计较为严密，作为密室来说可以说是密室中比较极致的了。本着不剧透，只说观点的理念，在这里记下自己的观点，仅供批评。&lt;/p&gt;</description>
    </item>
    <item>
      <title>纪录片《为民而商》观后感</title>
      <link>https://frytea.com/archives/100/</link>
      <pubDate>Sun, 27 Jan 2019 10:29:00 +0000</pubDate>
      <guid>https://frytea.com/archives/100/</guid>
      <description>&lt;p&gt;返乡倒计时：0天！&lt;/p&gt;
&lt;p&gt;是的，今晚的火车，T197次，回家&lt;br&gt;
今天白天在宿舍，看了一部纪录片，由几点感受想要在此记录一下：&lt;/p&gt;
&lt;p&gt;当年的北京，百废待兴。有人细说，在那个时刻身处北京，稍微有一点儿商业头脑就能赚钱。而商业究竟是为何而生？究竟如何才能在商业的浪潮中求得保全呢？看过纪录片之后有这么几点感受。&lt;/p&gt;</description>
    </item>
    <item>
      <title>使用aria2实现离线下载</title>
      <link>https://frytea.com/archives/36/</link>
      <pubDate>Wed, 23 Jan 2019 13:56:00 +0000</pubDate>
      <guid>https://frytea.com/archives/36/</guid>
      <description>&lt;p&gt;迅雷、百度网盘等的下载工具体验是越来越差了。作为一家独大的下载工具迅雷虽然其下载能力一流，但商业化太过严重，即使开通会员也不能保证一个稳定的下载体验。也许用户需要的不是一个好看的页面，需要的只是一个纯净的下载环境。在这样的环境下，自己搭建一个离线下载站就显得非常有必要。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Android 集成腾讯定位</title>
      <link>https://frytea.com/archives/28/</link>
      <pubDate>Thu, 17 Jan 2019 15:44:00 +0000</pubDate>
      <guid>https://frytea.com/archives/28/</guid>
      <description>&lt;h1 id=&#34;android-集成腾讯定位&#34;&gt;Android 集成腾讯定位&lt;/h1&gt;
&lt;h2 id=&#34;概述&#34;&gt;概述&lt;/h2&gt;
&lt;p&gt;在安卓软件开发过程中需要用到定位，在对比了国内比较知名的三种：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;高德定位&lt;/li&gt;
&lt;li&gt;百度定位&lt;/li&gt;
&lt;li&gt;腾讯定位&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;后选择了第三种，腾讯定位，原因主要是：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;支持获取WGS-84坐标&lt;/li&gt;
&lt;li&gt;支持网络定位&lt;/li&gt;
&lt;/ul&gt;</description>
    </item>
    <item>
      <title>Wordpress邮件通知插件Notification使用小记</title>
      <link>https://frytea.com/archives/55/</link>
      <pubDate>Thu, 17 Jan 2019 07:39:00 +0000</pubDate>
      <guid>https://frytea.com/archives/55/</guid>
      <description>&lt;p&gt;Notification是wordpress上一款功能强劲的插件，可以实现wordpress各种事件的邮件通知功能，更可以根据自己的实际需求定制自己的邮件通知内容，插件提供了很多的短代码，能够很方便的协助用户完成邮件的模板创建。&lt;/p&gt;</description>
    </item>
    <item>
      <title>【影评】爱情公寓2018电影观后感</title>
      <link>https://frytea.com/archives/102/</link>
      <pubDate>Wed, 16 Jan 2019 16:03:00 +0000</pubDate>
      <guid>https://frytea.com/archives/102/</guid>
      <description>&lt;p&gt;切不可听信谗言，不可只听周遭人的评价。事情究竟是怎么样，必定得是眼见为实。也只有一个眼见为实！&lt;/p&gt;
&lt;p&gt;电影《爱情公寓》剧照&lt;/p&gt;
&lt;p&gt;今天突然兴起，打算看一下《爱情公寓》。爱情公寓是陪伴我长大的一部电视剧，不仅如此，还是陪伴我们这代人长大的一部电视剧，在我们的记忆中留下了深刻的印象。这部电影可以说是令我期待很久。可惜的是由于以下两个原因，没有得意去电影院观影。&lt;br&gt;
1.听信了周遭人的传闻，说不好看，于是信以为真，就在当时失去了兴趣。&lt;br&gt;
2.实际原因没有抽出来时间观赏。&lt;/p&gt;</description>
    </item>
    <item>
      <title>【书评】白鹿原</title>
      <link>https://frytea.com/archives/106/</link>
      <pubDate>Tue, 15 Jan 2019 23:29:00 +0000</pubDate>
      <guid>https://frytea.com/archives/106/</guid>
      <description>&lt;p&gt;这学期看过许多记录上世纪故事的纪实作品。&lt;br&gt;
《蛙》&lt;br&gt;
《一百个人的十年》&lt;br&gt;
《1942河南大饥荒》&lt;br&gt;
再有今晚刚刚结束的&lt;br&gt;
《白鹿原》&lt;br&gt;
终于，今夜，我失眠了。&lt;/p&gt;</description>
    </item>
    <item>
      <title>ArcGis综合运用实践</title>
      <link>https://frytea.com/archives/46/</link>
      <pubDate>Tue, 15 Jan 2019 09:46:00 +0000</pubDate>
      <guid>https://frytea.com/archives/46/</guid>
      <description>&lt;h2 id=&#34;准备工作&#34;&gt;准备工作&lt;/h2&gt;
&lt;p&gt;环境：windows 10 home&lt;br&gt;
软件：Arcgis 10.5&lt;br&gt;
数据：&lt;br&gt;
（1）新乡市矢量边界&lt;br&gt;
（2）包含新乡及周边的dem高程数据&lt;br&gt;
（3）新乡市多波段合成遥感数据&lt;/p&gt;</description>
    </item>
    <item>
      <title>《西南联大》之八音合奏读后感</title>
      <link>https://frytea.com/archives/108/</link>
      <pubDate>Tue, 15 Jan 2019 06:14:00 +0000</pubDate>
      <guid>https://frytea.com/archives/108/</guid>
      <description>&lt;p&gt;今日观看纪录片《西南联大》第一集，西南联大，感触良多，一个关键词则为西南联大之团结合作，互相退让令人感触良多。&lt;/p&gt;
&lt;p&gt;本片的第一集《八音合奏》围绕北大、清华、南开三校长展开，从他们各自的经历、性格、理念、方略，探究三校可以成功“联合”的原因；同时，展现这“共同的经验和价值观”形成的时代背景和走向——爱国、进步、民主和科学的新思想在五四时期得以创造、发现和孕育，在抗战时期走向成熟。在这三大师的背后，实际上是整整一代中国知识分子上下求索的身影。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Wordpress评论区爆炸特效</title>
      <link>https://frytea.com/archives/54/</link>
      <pubDate>Tue, 15 Jan 2019 02:26:00 +0000</pubDate>
      <guid>https://frytea.com/archives/54/</guid>
      <description>&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://blog.songtianlun.cn/wp-content/uploads/2019/01/image-30.png&#34;&gt;&lt;/p&gt;
&lt;p&gt;一直羡慕别人的博客输入有这样一个特效，想自己做一个，终于在这个博客找到了解决方案，于是尝试一下成功了！&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://www.macrr.com/comment-input-effects.html&#34;&gt;WordPress优化：给博客添加评论输入特效&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;第一步：下载js代码，放入网站目录某文件夹下，我放在【/www/wwwroot/blog.songtianlun.cn/wp-content/themes/hestia/mouseclink】目录下&lt;/p&gt;</description>
    </item>
    <item>
      <title>Linux 常用命令</title>
      <link>https://frytea.com/archives/38/</link>
      <pubDate>Mon, 14 Jan 2019 12:32:00 +0000</pubDate>
      <guid>https://frytea.com/archives/38/</guid>
      <description>&lt;h1 id=&#34;linux常用命令&#34;&gt;Linux常用命令&lt;/h1&gt;
&lt;h2 id=&#34;端口占用查询&#34;&gt;端口占用查询&lt;/h2&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;netstat -apn
&lt;/code&gt;&lt;/pre&gt;&lt;h3 id=&#34;centos查看端口占用情况命令&#34;&gt;Centos查看端口占用情况命令&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;比如查看80端口占用情况使用如下命令：&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;&lt;code&gt;lsof -i tcp:80&lt;/code&gt;&lt;/p&gt;
&lt;h3 id=&#34;列出所有端口&#34;&gt;列出所有端口&lt;/h3&gt;
&lt;p&gt;&lt;code&gt;netstat -ntlp&lt;/code&gt;&lt;/p&gt;
&lt;h3 id=&#34;程序归属master为例&#34;&gt;程序归属（master为例）&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;locate  master | grep &#39;/master$&#39;
&lt;/code&gt;&lt;/pre&gt;
&lt;h4 id=&#34;初始化新安装命令生效&#34;&gt;初始化（新安装命令生效）&lt;/h4&gt;
&lt;pre&gt;&lt;code&gt;sudo updatedb
&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id=&#34;进程管理&#34;&gt;进程管理&lt;/h2&gt;
&lt;h3 id=&#34;查进程&#34;&gt;查进程&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;ps命令查找与进程相关的PID号：
    ps a 显示现行终端机下的所有程序，包括其他用户的程序。
    ps -A 显示所有程序。
    ps c 列出程序时，显示每个程序真正的指令名称，而不包含路径，参数或常驻服务的标示。
    ps -e 此参数的效果和指定&amp;quot;A&amp;quot;参数相同。
    ps e 列出程序时，显示每个程序所使用的环境变量。
    ps f 用ASCII字符显示树状结构，表达程序间的相互关系。
    ps -H 显示树状结构，表示程序间的相互关系。
    ps -N 显示所有的程序，除了执行ps指令终端机下的程序之外。
    ps s 采用程序信号的格式显示程序状况。
    ps S 列出程序时，包括已中断的子程序资料。
    ps -t&amp;lt;终端机编号&amp;gt; 指定终端机编号，并列出属于该终端机的程序的状况。
    ps u 以用户为主的格式来显示程序状况。
    ps x 显示所有程序，不以终端机来区分。
&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&#34;杀进程&#34;&gt;杀进程&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;使用kill命令结束进程：kill xxx
 例：kill －9 324
   Linux下还提供了一个killall命令，可以直接使用进程的名字而不是进程标识号，例如：# killall -9 NAME
&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id=&#34;ssh使用&#34;&gt;SSH使用&lt;/h2&gt;
&lt;h3 id=&#34;1-ssh远程登录服务器&#34;&gt;1 ssh远程登录服务器&lt;/h3&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;ssh username@remote_ip 
#将username换成自己的用户名，将remote_ip换成远程服务器的ip地址
&lt;/code&gt;&lt;/pre&gt;&lt;h3 id=&#34;2-将文件文件夹从远程服务器拷至本地scp&#34;&gt;2 将文件/文件夹从远程服务器拷至本地(scp)&lt;/h3&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;scp -r username@remote_ip:/home/username/remotefile.txt 
&lt;/code&gt;&lt;/pre&gt;&lt;h3 id=&#34;3-将文件文件夹从本地拷至远程服务器scp&#34;&gt;3 将文件/文件夹从本地拷至远程服务器(scp)&lt;/h3&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;scp -r localfile.txt username@remote_ip:/home/username/
&lt;/code&gt;&lt;/pre&gt;&lt;h3 id=&#34;4-将文件文件夹从远程服务器拷至本地rsync&#34;&gt;4 将文件/文件夹从远程服务器拷至本地(rsync)&lt;/h3&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;rsync -v -u -a --delete --rsh=ssh –stats username@remote_ip:/home/username/remotefile.txt .
&lt;/code&gt;&lt;/pre&gt;&lt;h3 id=&#34;5-将文件文件夹从本地拷至远程服务器rsync&#34;&gt;5 将文件/文件夹从本地拷至远程服务器(rsync)&lt;/h3&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;rsync -v -u -a --delete --rsh=ssh --stats localfile.txt username@remote_ip:/home/username/
&lt;/code&gt;&lt;/pre&gt;&lt;h3 id=&#34;6-连接远程ssh非22端口的服务器ssh端口为12345&#34;&gt;6 连接远程ssh非22端口的服务器(ssh端口为12345)&lt;/h3&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;ssh -p 12345 username@remote_ip
&lt;/code&gt;&lt;/pre&gt;&lt;h3 id=&#34;7-远程拷贝ssh非22端口的服务器文件ssh端口为12345&#34;&gt;7 远程拷贝ssh非22端口的服务器文件(ssh端口为12345)&lt;/h3&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;scp -P 12345 local_file username@remote_ip:remote_dir

scp -P 12345 username@remote_ip:remote_file local_dir

scp -o port=12345 username@remote_ip:remote_file local_dir

scp -P 12345 -r local_dir/.* username@remote_ip:remote_dir
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;拷贝目录，-r是将目录下的目录递归拷贝。&amp;quot;.*&amp;ldquo;是将隐藏文件也拷贝过去。需要先在远端创建好相应的目录。&lt;/p&gt;</description>
    </item>
    <item>
      <title>vps使用Shadowsocks搭建vpn</title>
      <link>https://frytea.com/archives/30/</link>
      <pubDate>Sat, 12 Jan 2019 03:52:00 +0000</pubDate>
      <guid>https://frytea.com/archives/30/</guid>
      <description>&lt;p&gt;&lt;img alt=&#34;Create a SOCKS5 Proxy Server with Shadowsocks on Ubuntu and CentOS 7&#34; loading=&#34;lazy&#34; src=&#34;https://www.linode.com/docs/networking/vpn/create-a-socks5-proxy-server-with-shadowsocks-on-ubuntu-and-centos7/shadowsocks.jpg&#34;&gt;&lt;/p&gt;
&lt;h2 id=&#34;简介&#34;&gt;简介&lt;/h2&gt;
&lt;p&gt;编程需要经常需要翻墙，当年的我天真无邪上了不少当，每次的 vpn 经历无一不遇奸商！于是下决心搭建自己的 vpn！就在今天，vpn 终于搭建成功，在这里分享一下成功的喜悦同时贴出自己搭建的过程仅供参考！&lt;/p&gt;</description>
    </item>
    <item>
      <title>Wordpress鼠标指针样式自定义</title>
      <link>https://frytea.com/archives/53/</link>
      <pubDate>Fri, 11 Jan 2019 16:55:00 +0000</pubDate>
      <guid>https://frytea.com/archives/53/</guid>
      <description>&lt;p&gt;继续折腾自己的博客！&lt;/p&gt;
&lt;p&gt;今天要做的事自定义鼠标样式！需要做的是增加css样式！&lt;/p&gt;
&lt;p&gt;第一步：选择鼠标样式，最好是两个状态，正常和链接，即普通的箭头和小手&lt;/p&gt;
&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://blog.songtianlun.cn/wp-content/uploads/2019/01/image-9.png&#34;&gt;&lt;/p&gt;
&lt;p&gt;第二步：将样式的cur文件上传至服务器&lt;/p&gt;</description>
    </item>
    <item>
      <title>Wordpress鼠标点击出现爱心</title>
      <link>https://frytea.com/archives/60/</link>
      <pubDate>Fri, 11 Jan 2019 16:37:00 +0000</pubDate>
      <guid>https://frytea.com/archives/60/</guid>
      <description>&lt;p&gt;同上文，眼馋各大博主博客令人眼前一亮的设计，想要给自己博客也打扮打扮，今天就来弄弄鼠标点击出现爱心的效果吧！&lt;/p&gt;
&lt;p&gt;采用了代码方式实现，很简单：&lt;/p&gt;
&lt;p&gt;第一步：在主题根目录创建js文件，写入如下代码：&lt;/p&gt;</description>
    </item>
    <item>
      <title>Wordpress 添加下雪特效</title>
      <link>https://frytea.com/archives/59/</link>
      <pubDate>Fri, 11 Jan 2019 15:48:00 +0000</pubDate>
      <guid>https://frytea.com/archives/59/</guid>
      <description>&lt;p&gt;最近非常热衷于逛博客，各大博主博客都非常出彩，弄得我心里面痒痒的也想弄，就先从一个下雪效果开始吧！&lt;/p&gt;
&lt;p&gt;在网上找了很多资料，最后找到一个非常靠谱的，步骤非常简单！&lt;/p&gt;</description>
    </item>
    <item>
      <title>Wordpress自动推送新文章收录百度</title>
      <link>https://frytea.com/archives/57/</link>
      <pubDate>Fri, 11 Jan 2019 15:14:00 +0000</pubDate>
      <guid>https://frytea.com/archives/57/</guid>
      <description>&lt;p&gt;百度站长工具提供了很多种页面收录方式，在百度资源搜索平台提供了多种提交方式，比如自动提交，手动提交，以及sitemap。&lt;/p&gt;
&lt;p&gt;百度资源搜索平台：&lt;a href=&#34;https://ziyuan.baidu.com/&#34;&gt;https://ziyuan.baidu.com/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;在这里介绍两种方式，一种是使用代码的方式，一种是使用插件，不知道是否能成功，如果大家能在百度搜索到这篇文章，自然代表着成功啦！&lt;/p&gt;</description>
    </item>
    <item>
      <title>Wordpress检测文章手否被百度收录</title>
      <link>https://frytea.com/archives/61/</link>
      <pubDate>Fri, 11 Jan 2019 14:38:00 +0000</pubDate>
      <guid>https://frytea.com/archives/61/</guid>
      <description>&lt;p&gt;开通博客后就痴迷于让更多的人看到自己的博客，在百度搜索资源提交链接，又配置了文章自动提交百度的代码，还是想知道文章是否被百度收录，于是找到了下面这篇文章：&lt;/p&gt;</description>
    </item>
    <item>
      <title>私人网盘nextcloud配置问题解决</title>
      <link>https://frytea.com/archives/32/</link>
      <pubDate>Thu, 10 Jan 2019 03:29:00 +0000</pubDate>
      <guid>https://frytea.com/archives/32/</guid>
      <description>&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://blog.songtianlun.cn/wp-content/uploads/2019/01/image-7.png&#34;&gt;&lt;/p&gt;
&lt;h2 id=&#34;安装流程&#34;&gt;安装流程&lt;/h2&gt;
&lt;p&gt;配置流程非常简单，主要是参考了下面这篇博文配置，在宝塔面板下安装nextcloud，非常简单。&lt;/p&gt;
&lt;p&gt;博文跳转:&lt;a href=&#34;https://www.vpsss.net/5780.html&#34;&gt;https://www.vpsss.net/5780.html&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;大概总结以下步骤：&lt;/p&gt;
&lt;p&gt;第一步：官网下载安装包：&lt;a href=&#34;https://nextcloud.com/&#34;&gt;https://nextcloud.com/&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>DirectoryLister搭建个人资源分享站点及私人云盘搭建小记</title>
      <link>https://frytea.com/archives/35/</link>
      <pubDate>Tue, 08 Jan 2019 14:53:00 +0000</pubDate>
      <guid>https://frytea.com/archives/35/</guid>
      <description>&lt;p&gt;喜大普奔！本站开通了资源共享站点及私人云盘！&lt;/p&gt;
&lt;p&gt;简直是好一通折腾，故事说来话长，本文主要谈谈私人共享站点搭建过程中遇到的问题及体会&lt;/p&gt;
&lt;h2 id=&#34;引言&#34;&gt;引言&lt;/h2&gt;
&lt;p&gt;一直想要搭建一个属于自己的资源共享小站，把一些不好寻找的资源放在站点上供我的朋友们下载，随着博客、主页的陆续开通，想着时机已到，于是开始着手准备了解各种资源。&lt;/p&gt;</description>
    </item>
    <item>
      <title>《开讲啦》王树国校长开讲感受</title>
      <link>https://frytea.com/archives/111/</link>
      <pubDate>Fri, 04 Jan 2019 15:19:00 +0000</pubDate>
      <guid>https://frytea.com/archives/111/</guid>
      <description>&lt;p&gt;开讲时间：2018年12月30日&lt;/p&gt;
&lt;p&gt;开讲嘉宾：王树国校长（西安交通大学校长）&lt;/p&gt;
&lt;p&gt;引言：在家人建议下看了这一期开讲啦，感触很多，短短的四十四分钟时间让我汲取了很多的营养，感觉备受鼓舞，在这里将听讲过程中的一些笔记结合自己的感受记录如下：&lt;/p&gt;</description>
    </item>
    <item>
      <title>《海王》电影观后小感</title>
      <link>https://frytea.com/archives/112/</link>
      <pubDate>Wed, 02 Jan 2019 02:31:00 +0000</pubDate>
      <guid>https://frytea.com/archives/112/</guid>
      <description>&lt;p&gt;看了最近很火的电影——《海王》&lt;/p&gt;
&lt;p&gt;网络评分力压同档期电影的一部电影，真实看过后有几点感受，本着不剧透的原则记录下自己的一点小感受来跟大家分享。&lt;/p&gt;
&lt;p&gt;一、似曾相识&lt;/p&gt;</description>
    </item>
    <item>
      <title>智能生活管家项目之一-系统简介</title>
      <link>https://frytea.com/archives/1087/</link>
      <pubDate>Tue, 04 Dec 2018 02:30:00 +0000</pubDate>
      <guid>https://frytea.com/archives/1087/</guid>
      <description>&lt;p&gt;&lt;strong&gt;用“智能”决策生活，篆刻生活印记&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;随着技术的发展和人类的进步，人们的生活节奏越来越快，每一&lt;/p&gt;</description>
    </item>
    <item>
      <title>智能生活管家项目之一-系统简介 </title>
      <link>https://frytea.com/archives/26/</link>
      <pubDate>Mon, 03 Dec 2018 18:30:00 +0000</pubDate>
      <guid>https://frytea.com/archives/26/</guid>
      <description>&lt;p&gt;&lt;strong&gt;用“智能”决策生活，篆刻生活印记&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;随着技术的发展和人类的进步，人们的生活节奏越来越快，每一天都淹没在“数据”的海洋中。我们在享受先进技术、快捷网络以及城市便捷性的同时，越来越追求精神层面的享受。但同样的，在我们中常常会有一些人，他们难以适应日新月异的快节奏生活，于是越来越多的面对这个忙碌的世界感到迷茫，不知道一天都做了什么，不知道一天这么多事情该如何处理。随着时代的发展，我们每一天都有越来越多的事情等待完成，人们的步伐越来越快，渐渐的忘记了我们去过那里，忘记了我们去做过什么，忽略了我们的生活结构是怎样。“复盘”是帮助一个人进步很好的方式，但快节奏的生活让越来越多的人忘记了自己的轨迹，更难以去优化自己的生活轨迹；换句话说，我们将自己有限的精力放在了更重要的地方，可记录并优化生活结构这样非常有助于我们提高生活效率的方式却常常无法完成。
于是，我们想到了开发“智能生活管家”系统，以用户APP的方式和用户交互并提供相关功能，我们希望将自己所学专业知识，运用到实际生活中，甚至能够帮助人们更好的生活！&lt;/p&gt;</description>
    </item>
    <item>
      <title>【影评】名侦探柯南·零的执行人</title>
      <link>https://frytea.com/archives/101/</link>
      <pubDate>Sun, 25 Nov 2018 07:23:00 +0000</pubDate>
      <guid>https://frytea.com/archives/101/</guid>
      <description>&lt;p&gt;今天圆了多年来的一个小愿望，那就是去电影院看一场柯南。 真的很开心，小的时候完全是不知道为什么就被名侦探柯南吸引，闲暇之余看会儿柯南是最开心的事情了呢，也许这事情就像是一个人喜欢一个人一样，不需要解释吧。电影结束，片尾曲一出，常态下人们会纷纷起身向门口走去，但是为什么这次这么不一样？每个人都在安静的听，认真的看着屏幕上每一帧画面，甚至比观影时刻还要认真。原本是奇怪，但是仔细一想突然眼眶湿润了。&lt;/p&gt;</description>
    </item>
    <item>
      <title>【书评】蛙</title>
      <link>https://frytea.com/archives/104/</link>
      <pubDate>Mon, 19 Nov 2018 12:18:00 +0000</pubDate>
      <guid>https://frytea.com/archives/104/</guid>
      <description>&lt;p&gt;前些日子读了莫言写的《蛙》，没错，就是那一本一举拿下诺贝尔文学奖，同时这也是中国人第一次获得诺贝尔文学奖。我并不觉得拿奖和作品之间有必然得衡量标准，但我想说的是这本书真的带给我很大的震撼，词到深处直冲我心，措手不及，这本书也是我第一次正面接触上个世纪得一些事情，开启了我对于旧中国社会现象以及究竟当今中国得状况是如何被塑造的深深的思考。 一、读书感悟 在生活中常常会有这样那样子的不满，有时候不满于某些人得不负责任，有时候不满于食堂大厨掌勺太过肤浅，有时候又不满于种种不好的社会现象&amp;hellip;&amp;hellip;可这样的互相抱怨究竟何时是一个头呢？最近听到的抱怨的声音挺多，作为一个普通大学生混迹在学生中间听到许多同学对于老师的不满，有的是因为老师太不负责，埋怨老师得课件、实验报告上漏洞百出，有时又是因为老师太过负责，布置了太多的任务或是要求太多细致（另许多人没了钻空子的可能亦或是说少了些行为上的自由），有时是考试的时候老师要求太过严格，监考很严格最后只得破罐子破摔；有的时候也会因为老师监考太松导致环境混乱，虽然后者明显少很多&amp;hellip;&amp;hellip; 但这一切的一切其实细细思考都是由原因存在的，有时候是真的因为政策原因得短缺，有的时候又是因为个人认识不够全面吧。说回到这本书，《蛙》这本书讲述的是中华人名共和国进六十年得波澜起伏的农村计划生育史为背景 ，真实的反应了当时乡下种种艰苦的条件以及计划生育艰难的推进状况，同时也很痛苦的叙述了了计划生育带给当时人们的种种不好。全书揭示了太多的现实情况，叙述太过真实，以至于有一段时间都无法接受那段历史，为了生孩子，甚至有人不惜于放弃所有的一切；妇产科医生也不容易，为了落实政策，为中国人的未来着想，不仅仅是需要和老百姓“斗智斗勇”，要遭受的更多的是来自自己内心深处的折磨还有日后无尽的心理负担。 二、读书摘录&lt;/p&gt;</description>
    </item>
    <item>
      <title>【书评】山茶文具店</title>
      <link>https://frytea.com/archives/105/</link>
      <pubDate>Fri, 19 Oct 2018 08:47:00 +0000</pubDate>
      <guid>https://frytea.com/archives/105/</guid>
      <description>&lt;p&gt;读《山茶文具店》的这段日子，心里日常被温暖包围。无论发生了什么，睡前读几页书，可以感觉到从内而外的温暖。这真是一本好书，好到最后读到98%，不舍得往下读，又期待往下读，这般纠结的感觉。&lt;/p&gt;</description>
    </item>
    <item>
      <title>关于</title>
      <link>https://frytea.com/about/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://frytea.com/about/</guid>
      <description>about</description>
    </item>
    <item>
      <title>免责声明</title>
      <link>https://frytea.com/disclaimer/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://frytea.com/disclaimer/</guid>
      <description>disclaimer</description>
    </item>
    <item>
      <title>项目</title>
      <link>https://frytea.com/projects/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://frytea.com/projects/</guid>
      <description>我的开源项目与作品</description>
    </item>
  </channel>
</rss>
