<?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet type="text/xsl" href="feed.xsl"?>
<feed xmlns="http://www.w3.org/2005/Atom">
    <id>https://xia.shfu.cn/</id>
    <title>xkjing</title>
    <updated>2026-06-08T23:47:51.659Z</updated>
    <generator>https://github.com/jpmonette/feed</generator>
    <author>
        <name>xkjing</name>
        <email>xkjing.xiajing@gmail.com</email>
        <uri>https://xia.shfu.cn</uri>
    </author>
    <link rel="alternate" href="https://xia.shfu.cn/"/>
    <subtitle>xkjing 的个人博客，记录技术笔记、生活随笔、阅读思考与创作片段。笔尖所及，即是永恒。</subtitle>
    <logo>https://xia.shfu.cn/favicon-96x96.png</logo>
    <icon>https://xia.shfu.cn/favicon.ico</icon>
    <rights>CC BY-NC-ND 4.0 © 2025 xkjing</rights>
    <entry>
        <title type="html"><![CDATA[关于“女权”]]></title>
        <id>zh-cn/regarding-feminism</id>
        <link href="https://xia.shfu.cn/jotting/regarding-feminism"/>
        <updated>2026-05-24T15:31:00.000Z</updated>
        <summary type="html"><![CDATA[这个尚未定论的话题似乎显得很复杂，需要等待时间证明每个观点的正误。由于近来接触一些人，看到一些事，也产生了自己的想法，因而写就本文，仅记录当下的杂念。]]></summary>
        <content type="html"><![CDATA[本内容被标记为敏感，请<a href="https://xia.shfu.cn/jotting/regarding-feminism">点此查看</a>]]></content>
        <category term="胡侃"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[符号化的苏武]]></title>
        <id>zh-cn/suwu</id>
        <link href="https://xia.shfu.cn/jotting/suwu"/>
        <updated>2026-05-15T13:07:00.000Z</updated>
        <content type="html"><![CDATA[<p>初次读到苏武的古诗，仅仅当做传奇的古代旧事。然而，字里行间浸满了封建社会腐朽的气味。苏武看似视死如归、严守节操的豪壮英雄形象，试试耳语暗示替天子赴死是光荣，臣子为皇帝卖命无可厚非。自始至终，如缠足般掩盖真相，仅露出挑选过的畸形的事实，试图用一遍又一遍的讲述洗脑。而整个故事诡异的走向意指朝廷暗面残酷的党派斗争。时间流逝，苏武以一种他从未想象过的姿态立于历史之中。虽然他的行为激励过忠义死节之士，但部分好的结果真的能解释丑陋的动机和手段吗？最终苏武抽象化为一个离人越来越远的符号，供历代统治者修改翻新并教化黔首。</p>]]></content>
        <category term="胡侃"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[卡夫卡 -- 一些片段]]></title>
        <id>zh-cn/kafka</id>
        <link href="https://xia.shfu.cn/jotting/kafka"/>
        <updated>2026-04-10T13:44:00.000Z</updated>
        <content type="html"><![CDATA[<section class="heading" data-heading-rank="2" aria-labelledby="一场斗争的记述"><h2 id="一场斗争的记述"><a href="#一场斗争的记述">一场斗争的记述</a></h2>
<blockquote>
<p>辽阔的天空下 / 人们穿着衣裙 / 摇摇晃晃地在石子路上散步 /
天空从远方的山丘 / 向远方的山丘延伸</p>
</blockquote>
<hr>
<p>“我不知道”，我无声地喊道，“我不知道，如果没有人来，那就没有人来好了。我没有对谁做过坏事，没有谁对我做过坏事，但没有人愿意帮助我。全然没有人。可是，情形不是这样的。只是没有人帮助我，要不然，全然没有人倒是挺好的。我会很乐意——为什么不呢——和一群全然没有人一起去远足。自然是到山中去，要不然去哪儿？看这些人是如何在人挤人的，看他们是如何臂挽臂的，看这许多脚，只由一些小步子分开着！大家当然全穿着燕尾服。我们就这么无所事事地走着，风从我们和我们的四肢之间的空隙吹过。喉咙将在山中得到自由！我们不唱歌，那可真怪。”</p>
<hr>
<p>“实活对您来说太辛苦了，先生，因为，看看您的样子吧！您的整个身子是用薄纸，黄色的薄纸剪成的，像个影子，您一走路，别人就能听见您发出的沙沙声。所以，对您的举止或意见发表怨恨或慢怒是不公平的，因为事情根据当时屋里的气流为准。”</p>
<p>“我不懂。这屋里是站着几个人。他们或者把胳膊搭在椅子背上，或者把身子倚靠在钢琴上，或者犹豫着把杯子举到嘴边，或者胆怯地走进旁边的屋子，等他们在黑暗中在箱子上碰伤了右肩后，就在敞开的窗户喘着气想：那是金星，那是长庚星。我却在这人群的聚会中。如果这之间有什么联系，那是我弄不懂的。但我根本不知道，这之间到底有没有联系。——你看，亲爱的小姐，所有这些人群里糊涂，所以他们的行为犹犹豫豫，举止可笑，这其中只有我似乎还配听到关于我的清清楚楚的议论。为了使议论令人愉快，他们用讽刺的语气说话，所以，就令人惊奇地有所保留，就像一座内部已经烧毁，只剩下骨架和墙的屋子。”</p>
</section><section class="heading" data-heading-rank="2" aria-labelledby="出发"><h2 id="出发"><a href="#出发">出发</a></h2>
<p>我叫人从马厩把马牵出来。仆人听不懂我的话，于是我自己到马厩去，给马上了鞍，骑了上去。远处传来喇叭声，我问他这表示什么。他说什么也不知道，什么也没听见。</p>
<p>到了大门口，他把我截住，问我：“主人，你骑马要到哪儿去？”</p>
<p>“我不知道，” 我说，“只要离开这里，只要离开这里。只有持续不断地离开这里，我才能到达目的地。”</p>
<p>“所以你知道你的目的地？” 他问。</p>
<p>“是啊，” 我回答，“我不是说了：离开这里，这就是我的目的。”</p>
<p>“你没带口粮，” 他说。</p>
<p>“我不需要，” 我说，“旅途这么远，如果中途得不到喝的，我肯定会死，带什么口粮都救不了我。谢天谢地，这是一次真正不寻常的旅行。”</p></section>]]></content>
        <category term="乱摘"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[福与报]]></title>
        <id>zh-cn/blessing-and-payback</id>
        <link href="https://xia.shfu.cn/jotting/blessing-and-payback"/>
        <updated>2026-03-31T05:23:00.000Z</updated>
        <summary type="html"><![CDATA[互不干扰，各行其道，是所有信仰最基本的共识，也是所有信仰最终的归路。]]></summary>
        <content type="html"><![CDATA[<p>在还未远去的过去，每周四上午，阳光摇晃在还未散去的薄雾中，微冷的气流让人联想到从冰柜刚取出的易拉罐。正是大好精力修行功课之际，却总有一老头踞三尺讲台之上，传讲福报。用被岁月打磨而显得绵软渺远的嗓音，呼出几个似乎铿锵有力的字辞，努力尝试说服听众，讲到关键处，引出若干无从考究、玄之又玄的事迹，自然下面哄然一片。老头丝毫不为所动，依然以平和的语调讲道，不卑不亢，大有释迦摩尼说法的风范。</p>
<p>老头临走前特意抖出尘封已久的 PPT ，希冀于最后的宣讲全面阐述福报系统的运转规律：多做善事，少犯淫邪，福报盈亏，上天自有奖惩。比如范仲淹，忧国忧民，后代因而多能考中功名；比如王思聪，一人二十来个女朋友，他家万达自然运转不周，摇摇欲坠。</p>
<p>过后，稍作琢磨，即发现其本质远不止步于此。</p>
<p>福报论能够解释一些现象，但其是否全面还有待斟酌。人类诞生以来，下至矿藏，上至星辰，无不想究其根本。然不能“取诸怀抱，悟言一室之内”，只好“因寄所托，放浪形骸之外”。神，全能的化身，应运而生。随着知识储备的逐步完善，万物复杂性开始浮现，此时只用单一的声已然牵强，因此分化出大大小小的神明，对应世间人们发现的风雨寒暑，鸟兽草木。世事变迁，春去秋来，千百年间，香火亦盛亦衰，虔诚的信徒俯首跪于迷蒙的烟霭的环绕中，有一日突然醒悟，日渐模糊的神像形态已无所谓，真正膜拜的是主宰万物的力量与规律。在信徒眼中，该力量与人的心灵相通应，一举一动皆为所察。于是有人称它为“福报”，有“行善则享福报”之意，此为福报之滥觞。</p>
<p>做善事，然何为善？善，这一词本身，就是不绝对的。在原始部落中，食人为善；于穆斯林，不吃猪肉为善；在封建社会，缠足裹脚为善。以上种种，皆与现代价值观大有出入，然而生活依旧，说明人心不古不代表人人向恶。所谓 “善” ，应该是指代对社会有积极意义的行为，可以立竿见影，也可以造福后世。然而，其判决标准还是依靠主流价值观，或者说大部分人对 “善” 的最低标准。“善” 若不被大众接受，便只能独自慨叹，任由后人凭吊。布鲁诺、王安石等例子历史上比比皆是，可见变化的大众标准和社会背景才真正定义并主导 “善” 的走向。</p>
<p>口口相传中，福报的功效不免被夸大。因行好事而十几发炮弹炸不死云云的神话，至今在民间津津乐道。但最基本的函数都讲定义域，福报也仅适用于特定范围：人类社会。对他人友好，过后别人心里会念着点；对石头友好，几千年也不会有个猴子蹦出来。布道者往往模糊人类与自然的便捷，试图单靠意念改造物质，殊不知陷入主观唯心主义的泥坑，日夜起居行止于自我划定的圆圈中，至死无悔。</p>
<p>福报令人信服，很大程度上由于它的神秘而不可知性。神以及福报等不可知，其实是因为它蕴藏人类所认知的所有规律。在中世纪时，神定地球为中心，后来又以太阳为中心，最后无中心，暗中被人对天体运动的认知而推动。福报亦如此，之前遵循礼俗为善，现在随从公序良知为善。神便是人的镜像，人当然不能驳倒当下的自己。所以神可以全能，也可以不能；福报可以显灵，也可以无用，只是取决于在观者的视角如何定义、如何解释而已。</p>
<p>老头教授物理，由此很容易联想到伽利略、牛顿与爱因斯坦，几位科学巨匠晚年无一不皈依上帝。大概，心中必须填平无法解答的空白，宁愿塑立可笑的泥偶自欺欺人，也不肯心存疑窦地离去；大概，洞察到超自然的力量，操控着宇宙铁律，变觉科学皆为虚诞，原地缴械投降？或许要等走到那一天，才能切身体会，略察缘由。</p>
<p>不过，福报宁要其无，不如其有。至少信奉者以礼遇人，以善化人，好过愚弄大众，反动起事者。最理想的社会环境，应当尊重每个正常的信仰，无需向他人滔滔不绝自己的上帝。互不干扰，各行其道，是所有信仰最基本的共识，也是所有信仰最终的归路。</p>]]></content>
        <category term="胡侃"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[260320的一件小事]]></title>
        <id>zh-cn/2026-03-20</id>
        <link href="https://xia.shfu.cn/jotting/2026-03-20"/>
        <updated>2026-03-19T16:15:00.000Z</updated>
        <content type="html"><![CDATA[<p>骑行上学，路过上海轨道交通培训中心感觉有些反常，门口稀稀散散地站着几个老头，套着略显过时的黑色羽绒服，平均年龄约莫五十来岁。</p>
<p>他们扎成几团，细声耳语，但是风声很大，听不清楚</p>
<p>倏然左侧一辆银白色的车拐入大门，老头们向后避让两步</p>
<p>门口放着花圈。乍一看还以为是盛大开业。等到行近，定睛一看才发现，是葬礼上的哀挽花圈。大门上迎着非机动车道的一旁，挂着一幛，上书：“申通铁路还我儿生命”。白底黑字，墨迹似乎还在向下渗，触目惊心。</p>
<p>很快培训中心就被抛在身后，已经来到了几条街外。大脑还没从方才的冲击中恢复，远远地迎面驶过若干安保人员，荧光绿色背心上衬出“城运管理”字样，从不同的街道向刚刚离去的地方驰去。</p>
<p>前方晴空一片，万里无云</p>]]></content>
        <category term="胡侃"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[数独]]></title>
        <id>zh-cn/2026-03-14-sodoku</id>
        <link href="https://xia.shfu.cn/jotting/2026-03-14-sodoku"/>
        <updated>2026-03-13T08:00:00.000Z</updated>
        <content type="html"><![CDATA[<p>短暂地失焦，眼前的数独成为一团乱码。上溯千年，欧几里得曾为几何的线团所倾倒，今日此时，用九个数字织出的麻线，更简单，也更莫测。缠绕交织中，已然诞生一套新的思维方式。瞳孔回缩，视觉焦点在行间平移、条约，或扫去空行，或捋过竖列，快速思维与瞬时记忆从未停歇。注意力开始消散，与数字无形对峙间，刹那醍醐灌顶而顿然开智，如同在大坝上凿出一丝裂缝，从乱麻中揪出一根线头，像打出一个酝酿已久的喷嚏一样快然自足，而后滑动笔尖，填满空格，不过还在回味那个喷嚏的余味罢了。</p>]]></content>
        <category term="胡侃"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Open WebUI：重复登录的一种可能性]]></title>
        <id>zh-cn/2026-01-05-open-webui</id>
        <link href="https://xia.shfu.cn/note/2026-01-05-open-webui"/>
        <updated>2026-01-04T16:00:00.000Z</updated>
        <summary type="html"><![CDATA[OpenWebUI重复登录的一种可能性]]></summary>
        <content type="html"><![CDATA[<p>JWT (JSON Web Token)  设置小了</p>
<p>JWT 是一种基于 JSON 的开放标准（RFC 7519），用于在双方之间安全地传输信息。</p>
<p>Cookie过期</p>]]></content>
        <category term="Open WebUI"/>
        <category term="Cookie"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[2026 新年随想]]></title>
        <id>zh-cn/2025-12-31-2026</id>
        <link href="https://xia.shfu.cn/jotting/2025-12-31-2026"/>
        <updated>2025-12-31T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[新年随想]]></summary>
        <content type="html"><![CDATA[<p>2026 新年随想</p>
<p>转眼，今年只剩不到三个小时。时间流逝，如呼啸而过的火车，车内萍水相逢的人们的脸来不及看清，就被时间带去另一块天空，而此刻才想起要说些珍重惜别之类的话。</p>
<p>过去已去，未来将来。仅有几个愿望，还望灯神实现：</p>
<ul>
<li>
<p>希望看得更远</p>
</li>
<li>
<p>希望别生大病</p>
</li>
<li>
<p>希望练出更多肌肉</p>
</li>
<li>
<p>希望见到不同的人</p>
</li>
<li>
<p>希望看到高质量的书和电影</p>
</li>
<li>
<p>希望楼上小孩半夜消停点</p>
</li>
<li>
<p>希望狗能分我点狗屎运</p>
</li>
</ul>
<p>最后，致所有朋友，新年快乐，明年再玩。</p>]]></content>
        <category term="胡侃"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[后朋克 -- 一些片段]]></title>
        <id>zh-cn/2025-12-28-post-punk</id>
        <link href="https://xia.shfu.cn/jotting/2025-12-28-post-punk"/>
        <updated>2025-12-27T08:00:00.000Z</updated>
        <summary type="html"><![CDATA[摘录一些后朋克的歌词]]></summary>
        <content type="html"><![CDATA[<section class="heading" data-heading-rank="2" aria-labelledby="前言"><h2 id="前言"><a href="#前言">前言</a></h2>
<p>后朋克起源于20世纪70年代，恰是前苏联内部政治与经济最混乱动荡之际。孕育于自我怀疑的时代，后朋克带着与生俱来的粗粝工业风和阴郁沉重的气质，还有点虚无存在主义的色彩。（参考 Post-punk - Wikipedia）</p>
<p>个人觉得非常有特点，尤其是歌词，比较喜欢。这里摘录一些颓丧的和不颓丧的歌词：</p>
<hr>
</section><section class="heading" data-heading-rank="2" aria-labelledby="kino-кино-电影乐队"><h2 id="kino-кино-电影乐队"><a href="#kino-кино-电影乐队">Kino （Кино 电影乐队）</a></h2>
<p style="text-align: center"><img src="https://xia.shfu.cn/assets/330px-%D0%9A%D0%B8%D0%BD%D0%BE._1989._%D0%9F%D0%BE%D1%81%D0%BB%D0%B5%D0%B4%D0%BD%D0%B8%D0%B9_%D0%B3%D0%B5%D1%80%D0%BE%D0%B9.jpg"></p><h3 style="text-align: center">Спокойная ночь<em> </em>夜如此寂静</h3>
<blockquote>
<p style="text-align: center">Соседи приходят<br>邻居们过来抱怨<br>им слышится стук копыт<br>说他们听见蹄声<br>Мешают уснуть<br>无法入睡<br>тревожат их сон<br>难以安眠<br>Те, кому нечего ждать<br>那些无所顾忌的<br>отправляются в путь<br>已经上路了<br>Те, кто спасен<br>他们得了救<br>те, кто спасен<br>得了救<br>Тем, кто ложится спать<br>那些躺下睡去的人<br>Спокойного сна<br>祝你们晚安<br>Спокойная ночь<br>夜是如此静寂</p>
</blockquote>
<hr>
</section><section class="heading" data-heading-rank="2" aria-labelledby="molchat-doma-молчат-дома-寂静屋"><h2 id="molchat-doma-молчат-дома-寂静屋"><a href="#molchat-doma-молчат-дома-寂静屋">Molchat Doma （Молчат Дома 寂静屋）</a></h2>
<p style="text-align: center"><img src="https://xia.shfu.cn/assets/%D0%AD%D1%82%D0%B0%D0%B6%D0%B8_(%D0%9C%D0%BE%D0%BB%D1%87%D0%B0%D1%82_%D0%B4%D0%BE%D0%BC%D0%B0).jpg"></p><h3 style="text-align: center">Судно (Борис Рыжий)<em> </em>珐琅壶（鲍里斯·里日）</h3>
<blockquote>
<p style="text-align: center">Так на деревьях сохнет листва<br>叶子这样子在木头上被晒干<br>Циклы природы - пора<br>是大自然循环的时候了<br>Дым сигареты, на фильтре угли<br>烟雾残留在滤嘴上<br>Чуть погорели, погасли они<br>慢慢地燃烧，直到熄灭<br></p><p style="text-align: center">Полосы в небе - там выше, светлей<br>那头的飞机云—更高又更清楚<br>Слышатся стуки трамвайных путей<br>听着行驶中的有轨电车嘎嘎作响<br>В моей бутылке осталось на дне<br>我酒瓶里的酒所剩无几<br>В моей бутылке...<br>在我酒瓶裡...<br>В моей бутылке осталось на дне<br>我酒瓶里的酒所剩无几<br>Все допиваю - иду я к тебе<br>我会一饮而尽，然后奔向你</p>
</blockquote>
<hr>
</section><section class="heading" data-heading-rank="2" aria-labelledby="corn-wave-玉米波"><h2 id="corn-wave-玉米波"><a href="#corn-wave-玉米波">Corn Wave （玉米波）</a></h2>
<p style="text-align: center"><img src="https://xia.shfu.cn/assets/a1862834901_16.jpg"></p><h3 style="text-align: center">youth full of flowers 青春年花</h3>
<blockquote>
<p style="text-align: center">Блевать в глухом сортире<br>在沉寂的厕所里呕吐<br>Найдём это прикольным<br>找点有趣的事去做吧<br>И я доволен<br>而我特别高兴<br>Ведь я есть море цветов<br>因为我有一片花海<br>В море цветов<br>在那花海<br>В море цветов<br>在那花海<br><br><br>В родных дешёвых кедах<br>穿着廉价运动鞋<br>Я допиваю пиво<br>把啤酒一饮而尽<br>Всё так красиво<br>我欣赏着眼前美景<br>Ведь молодость порой<br>青春有时是<br>Нам так нужна<br>必不可少的<br>Нам так нужна<br>不可或缺的<br><br><br>С тобой за гаражами<br>我们坐在车库<br>Мы дым пускаем мимо<br>一起吞云吐雾<br>Но так красиво<br>幻想着虚无的美好<br>Ведь молодость порой<br>青春本应是<br>Вся в цветах<br>繁花似锦的<br>Вся в цветах<br>五彩斑斓的</p>
</blockquote></section>]]></content>
        <category term="乱摘"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Open WebUI：配置联网搜索]]></title>
        <id>zh-cn/2025-12-14-open-webui</id>
        <link href="https://xia.shfu.cn/note/2025-12-14-open-webui"/>
        <updated>2025-12-14T00:00:00.000Z</updated>
        <content type="html"><![CDATA[<section class="heading" data-heading-rank="1" aria-labelledby="背景"><h1 id="背景"><a href="#背景">背景</a></h1>
<p>之前乘着十一假期，看着佬友的教程在 Huggingface Space 中部署了 Open WebUI ，随着使用频数提高，渐渐发现联网搜索不时出现问题</p>
</section><section class="heading" data-heading-rank="1" aria-labelledby="报错"><h1 id="报错"><a href="#报错">报错</a></h1>
<p><img src="https://xia.shfu.cn/assets/403918326-09c6e6ce-eb5e-40c2-b654-d754328495ad.png" alt=""></p>
<p>发送消息后后可以正常生成索引，但是开始搜索是就会报错：<code>An error occurred while searching the web</code></p>
</section><section class="heading" data-heading-rank="1" aria-labelledby="解决"><h1 id="解决"><a href="#解决">解决</a></h1>
<section class="heading" data-heading-rank="2" aria-labelledby="第一次尝试失败"><h2 id="第一次尝试失败"><a href="#第一次尝试失败">第一次尝试（失败）</a></h2>
<p>当时我用的是 Tavily ，想免费的总是会不稳定，想到之前折腾过 NextChat ，里面插件有一个是用自部署的 SearXNG 作为搜索引擎，不如尝试一下？</p>
<p>于是上网一搜，发现还不少，甚至还有一个网站（ <a href="https://searx.space/" rel="nofollow noopener noreferrer" target="_blank">https://searx.space/</a> ）专门收录</p>
<p><img src="https://xia.shfu.cn/assets/1765706725830.png" alt=""></p>
<p>这里选择一个看起来比较正规的供参考：</p>
<ul>
<li><a href="https://opnxng.com/" rel="nofollow noopener noreferrer" target="_blank">https://opnxng.com</a></li>
</ul>
<p>当然如果想要定制化，可以去 Huggingface 上搜下 Space ，很多，比如我搭建的：</p>
<ul>
<li><a href="https://xkjing-searxng4owui.hf.space" rel="nofollow noopener noreferrer" target="_blank">https://xkjing-searxng4owui.hf.space</a></li>
</ul>
<p><em>然而并没有解决问题</em></p>
<p>仍然产生相同的错误，而且也被搞毛了，于是不了了之，这次尝试以失败告终</p>
</section><section class="heading" data-heading-rank="2" aria-labelledby="第二次尝试解决"><h2 id="第二次尝试解决"><a href="#第二次尝试解决">第二次尝试（解决）</a></h2>
<p>这几天下决心解决这个问题，于是翻看后台日志，还真的找到了些信息：</p>
<ul>
<li>
<p>首先，发现搜索后 SearXNG 正确地返回了 JSON 格式的结果，说明问题不在搜索引擎</p>
</li>
<li>
<p>其次，阅读一下摘录出来的内容，发现问题出在 <code>process_web_search</code> 和 <code>process_web_search</code> 中，所以应该是网页加载器的问题</p>
</li>
</ul>
<pre class="astro-code astro-code-themes github-light dark-plus" style="background-color:var(--block-color);--shiki-dark-bg:#1E1E1E;color:#24292e;--shiki-dark:#D4D4D4; overflow-x: auto;" tabindex="0" data-language="plaintext"><code><span class="line"><span>File "/usr/local/lib/python3.11/socket.py", line 974, in getaddrinfo</span></span>
<span class="line"><span>for res in _socket.getaddrinfo(host, port, family, type, proto, flags):</span></span>
<span class="line"><span>^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^</span></span>
<span class="line"><span>socket.gaierror: [Errno -2] Name or service not known</span></span>
<span class="line"><span>ERROR [open_webui.utils.middleware] 400: [ERROR: [Errno -2] Name or service not known]</span></span>
<span class="line"><span>Traceback (most recent call last):</span></span>
<span class="line"><span>File "/app/backend/open_webui/routers/retrieval.py", line 1269, in process_web_search</span></span>
<span class="line"><span>loader = get_web_loader(</span></span>
<span class="line"><span>^^^^^^^^^^^^^^^</span></span>
<span class="line"><span>File "/app/backend/open_webui/retrieval/web/utils.py", line 90, in c</span></span>
<span class="line"><span>if not validate_url(urls):</span></span>
<span class="line"><span>^^^^^^^^^^^^^^^^^^</span></span>
<span class="line"><span>File "/app/backend/open_webui/retrieval/web/utils.py", line 41, in validate_url</span></span>
<span class="line"><span>return all(validate_url(u) for u in url)</span></span>
<span class="line"><span>^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^</span></span>
<span class="line"><span>File "/app/backend/open_webui/retrieval/web/utils.py", line 41, in</span></span>
<span class="line"><span>return all(validate_url(u) for u in url)</span></span>
<span class="line"><span>^^^^^^^^^^^^^^^</span></span>
<span class="line"><span>File "/app/backend/open_webui/retrieval/web/utils.py", line 30, in validate_url</span></span>
<span class="line"><span>ipv4_addresses, ipv6_addresses = resolve_hostname(parsed_url.hostname)</span></span>
<span class="line"><span>^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^</span></span>
<span class="line"><span>File "/app/backend/open_webui/retrieval/web/utils.py", line 48, in resolve_hostname</span></span>
<span class="line"><span>addr_info = socket.getaddrinfo(hostname, None)</span></span>
<span class="line"><span>^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^</span></span>
<span class="line"><span>File "/usr/local/lib/python3.11/socket.py", line 974, in getaddrinfo</span></span>
<span class="line"><span>for res in _socket.getaddrinfo(host, port, family, type, proto, flags):</span></span>
<span class="line"><span>^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^</span></span>
<span class="line"><span>socket.gaierror: [Errno -2] Name or service not known</span></span><button type="button" data="File &#x22;/usr/local/lib/python3.11/socket.py&#x22;, line 974, in getaddrinfo
for res in _socket.getaddrinfo(host, port, family, type, proto, flags):
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
socket.gaierror: [Errno -2] Name or service not known
ERROR [open_webui.utils.middleware] 400: [ERROR: [Errno -2] Name or service not known]
Traceback (most recent call last):
File &#x22;/app/backend/open_webui/routers/retrieval.py&#x22;, line 1269, in process_web_search
loader = get_web_loader(
^^^^^^^^^^^^^^^
File &#x22;/app/backend/open_webui/retrieval/web/utils.py&#x22;, line 90, in c
if not validate_url(urls):
^^^^^^^^^^^^^^^^^^
File &#x22;/app/backend/open_webui/retrieval/web/utils.py&#x22;, line 41, in validate_url
return all(validate_url(u) for u in url)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File &#x22;/app/backend/open_webui/retrieval/web/utils.py&#x22;, line 41, in
return all(validate_url(u) for u in url)
^^^^^^^^^^^^^^^
File &#x22;/app/backend/open_webui/retrieval/web/utils.py&#x22;, line 30, in validate_url
ipv4_addresses, ipv6_addresses = resolve_hostname(parsed_url.hostname)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File &#x22;/app/backend/open_webui/retrieval/web/utils.py&#x22;, line 48, in resolve_hostname
addr_info = socket.getaddrinfo(hostname, None)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File &#x22;/usr/local/lib/python3.11/socket.py&#x22;, line 974, in getaddrinfo
for res in _socket.getaddrinfo(host, port, family, type, proto, flags):
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
socket.gaierror: [Errno -2] Name or service not known" class="code-copy-button" aria-hidden="" onclick="navigator.clipboard.writeText(this.attributes.data.value);this.classList.add(&#x22;code-copied&#x22;);window.setTimeout(() => this.classList.remove(&#x22;code-copied&#x22;), 1500)"><svg version="1.1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16" class="copy-icon"><path d="M0 6.75C0 5.784.784 5 1.75 5h1.5a.75.75 0 0 1 0 1.5h-1.5a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-1.5a.75.75 0 0 1 1.5 0v1.5A1.75 1.75 0 0 1 9.25 16h-7.5A1.75 1.75 0 0 1 0 14.25Z"></path><path d="M5 1.75C5 .784 5.784 0 6.75 0h7.5C15.216 0 16 .784 16 1.75v7.5A1.75 1.75 0 0 1 14.25 11h-7.5A1.75 1.75 0 0 1 5 9.25Zm1.75-.25a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-7.5a.25.25 0 0 0-.25-.25Z"></path></svg><svg version="1.1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16" class="done-icon"><path d="M13.78 4.22a.75.75 0 0 1 0 1.06l-7.25 7.25a.75.75 0 0 1-1.06 0L2.22 9.28a.751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018L6 10.94l6.72-6.72a.75.75 0 0 1 1.06 0Z"></path></svg></button></code></pre>
<p>根据关键句 <code>ERROR [open_webui.utils.middleware] 400: [ERROR: [Errno -2] Name or service not known]</code> ，搜索到 Discussion （ <a href="https://github.com/open-webui/open-webui/discussions/8625" rel="nofollow noopener noreferrer" target="_blank">https://github.com/open-webui/open-webui/discussions/8625</a> ）中对此的解决方案：</p>
<blockquote>
<p>Apparently, we need to add in env file, ENABLE_RAG_LOCAL_WEB_FETCH = true, if we are using private address/local setup for searxng. This should solve the issue.</p>
</blockquote>
<p>所以我们要在 Huggingface Space 的环境变量里加入 <code>ENABLE_RAG_LOCAL_WEB_FETCH</code> 字段，并赋值为 <code>True</code></p>
<p><img src="https://xia.shfu.cn/assets/1765707569282.png" alt=""></p>
<p><strong>一定要记得先备份数据！！！不然全部都会丢失！！！</strong></p>
<p>保存后容器自动重启，顺便还更新到最新版本</p>
</section><section class="heading" data-heading-rank="2" aria-labelledby="配置"><h2 id="配置"><a href="#配置">配置</a></h2>
<p>最终联网搜索配置如下：</p>
<p><img src="https://xia.shfu.cn/assets/1765707747387.png" alt=""></p>
</section><section class="heading" data-heading-rank="2" aria-labelledby="成果"><h2 id="成果"><a href="#成果">成果</a></h2>
<p>联网搜索正常</p>
<p>就是慢了点，以及有些网站如 Wikipedia 和 Reddit 对爬虫做了屏蔽，无法获得结果，但正常使用还是游刃有余的</p>
<p><img src="https://xia.shfu.cn/assets/1765707880281.png" alt=""></p></section></section>]]></content>
        <category term="Open WebUI"/>
        <category term="联网搜索"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[博客与不曾书写的日夜]]></title>
        <id>zh-cn/2025-11-22</id>
        <link href="https://xia.shfu.cn/jotting/2025-11-22"/>
        <updated>2025-11-30T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[一个中学生对博客的执着长达四年，而这期间一篇像样的文章都没写，这不很令人讶异吗？

那就权且作为个人创作的起点]]></summary>
        <content type="html"><![CDATA[<blockquote>
<p>一个中学生对博客的执着长达四年，而这期间一篇像样的文章都没写，这本身就很值得思考。</p>
<p>那就权且作为个人创作的起点</p>
</blockquote>
<section class="heading" data-heading-rank="1" aria-labelledby="前言"><h1 id="前言"><a href="#前言">前言</a></h1>
<p>两个星期前，趁着期中考试后短暂空隙，我完成了此博客最后的修缮工作。窗户外是片楼，灯光透过窗帘，可依稀看到人们一天末尾时的生活轮廓。</p>
<p>此文本应即刻完成，奈何功课繁忙，且不止只言片语，因此拖延至今日，或有所遗漏。</p>
</section><section class="heading" data-heading-rank="1" aria-labelledby="从搭建到部署"><h1 id="从搭建到部署"><a href="#从搭建到部署"><strong>从搭建到部署</strong></a></h1>
<p>博客的搭建起源于对技术的追求。学习了 PHP 后，纯手打很辛苦地拼出一个类似于博客的网站，然后听到网上说 Notion 写文章体验感很好，于是就移情于 Notion Blog ，不久 Notion 的 API 接连抽风，不堪其苦。</p>
<p>因而寻找服务器，很快开始迷恋 Serverless ，尤其是 SaaS 的快捷部署，前前后后找了几十个主题，Github 里 Fork 了不知道多少个仓库，Vercel 里部署成功后就扔到一边。</p>
<p>一开始还会尝试阅读理解源码的逻辑，后来就直接上网搜索扔给 AI 。浏览器的历史记录渐渐从 <code>“如何搭建好的博客”</code> 变为 <code>“vercel 部署报错 xxx ”</code>。而窗外叶黄叶落，花开花谢。</p>
<p>现在想来，之前我倒是很乐于参与交学费这一过程，本末倒置，甚至都没有跳过第一道门槛。</p>
</section><section class="heading" data-heading-rank="1" aria-labelledby="门槛"><h1 id="门槛"><a href="#门槛">门槛</a></h1>
<p>当我开始研究如何捣鼓电脑时才了解到博客，而我却很早就接触了互联网。看看周围的人，他们似乎对于博客有所耳闻，但是并没有真正阅读或创作的经历。为何博客对于大多数既熟悉又陌生？</p>
<p>原因基本可以归为两条：技术门槛和内容门槛</p>
<section class="heading" data-heading-rank="2" aria-labelledby="技术门槛"><h2 id="技术门槛"><a href="#技术门槛">技术门槛</a></h2>
<p>鉴于这四年都在研究技术，于是重点谈谈技术门槛。</p>
<p>技术门槛挺高，因为它是双向的，即使跨越，也后面不是一马平川：</p>
<ul>
<li>
<p>上网搜索 “博客” 二字，跳出词条基本都是 “技术博客” “开发专栏” 云云，无疑劝退大部分阅读群体，即使链接背后的内容可能与技术无关。可能少数读者发现了优质的博客，但多数还是对于技术细节和相关日常的简单记述，大部分人初衷还是给自己看的。</p>
</li>
<li>
<p>对于作者，门槛就更高了。首先要买一个冠冕堂皇的域名，一听到要掏钱包，立刻散去一大批既不想出钱又没有渠道的群众；然后要租台服务器，价格比域名贵多了，自然又劝退一批；接着要挑合适的框架，没有哪个博客系统是最完美的：要么看着花哨，要么写文章方便，要么搭建起来省力。折腾中途一不小心看上别人的博客，于是徙宅忘妻，陷入追求三者平衡的内耗死循环里，最终博客也没搞成，一篇文章也没写，只留下一地狼藉；此外，坚持发表文章实属不易，因为这项娱乐耗时耗力还不能创造经济价值。</p>
</li>
</ul>
</section><section class="heading" data-heading-rank="2" aria-labelledby="内容门槛"><h2 id="内容门槛"><a href="#内容门槛">内容门槛</a></h2>
<ul>
<li>
<p>当开始有人阅读时，就可能会产生矛盾了。因为创作和阅读的目的或不相同。有人说，博客内部也分 <a href="https://www.ntiy.com/1003.html" rel="nofollow noopener noreferrer" target="_blank">“四宗十二派”</a>。这个观点部分认同，博客本来就比较开放，接纳各方志不同道不合的作者是很自然的，我也尊重每一个作者的抉择，你们有权选择要发表的文章。但个人角度并不提倡站队或加入小群体，就像最近在玩一款卡牌策略性游戏 <em>杀戮尖塔</em> ，公式化通关的确很爽，但也大大降低了可玩度，所以大部分玩家希望去流派化。同样的，我认为要给作者留出更多想象与创作的空间，因此不希望作品被归纳进任何一类中，这是对作品和作者片面的评价，即使这么做很省力。</p>
</li>
<li>
<p>在知乎或者小红书上面，确实也有人会发博客之类的文章，但是大多数都缺乏较长的思考链，往往配上一张图片一句带过，算是一种形式的“快餐化”。这方面很多文章都已经有所提及，此处不再赘述。</p>
</li>
</ul>
<p>门槛一直是有的，只不过近几年由于平台的介入，高度相对来说有所上升。进入一个圈子都或多或少需要交点学费，这也算是一种筛选的过程。</p>
</section></section><section class="heading" data-heading-rank="1" aria-labelledby="展望"><h1 id="展望"><a href="#展望">展望</a></h1>
<p>博客原先是互联网少有的发声渠道。那时博客承载传播各行各业的信息，因此使用人数也多。当下创作平台不断细化，流量涌向短视频、网文小说、播客等等，博客渐渐滑出大众视界，但是它在开发者群体中仍然流行。换而言之，不太适合放在博客的内容找到了更好的归宿，适合放入博客的内容就随着时间沉淀，在互联网的一隅发挥不可替代的作用。</p>
<p>经历火的煅烧和水的冲刷，金子只会更亮、更纯</p></section>]]></content>
        <category term="胡侃"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[为Python的pip换源]]></title>
        <id>zh-cn/2025-11-16-pip-change-source</id>
        <link href="https://xia.shfu.cn/note/2025-11-16-pip-change-source"/>
        <updated>2025-10-06T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[最简单、最快捷的Python换源教程]]></summary>
        <content type="html"><![CDATA[<section class="heading" data-heading-rank="1" aria-labelledby="单次换源"><h1 id="单次换源"><a href="#单次换源"><strong>单次换源</strong></a></h1>
<p>只需要打开终端输入以下命令：</p>
<pre class="astro-code astro-code-themes github-light dark-plus" style="background-color:var(--block-color);--shiki-dark-bg:#1E1E1E;color:#24292e;--shiki-dark:#D4D4D4; overflow-x: auto;" tabindex="0" data-language="bash"><code><span class="line"><span style="color:#6F42C1;--shiki-dark:#DCDCAA">pip</span><span style="color:#032F62;--shiki-dark:#CE9178"> install</span><span style="color:#032F62;--shiki-dark:#CE9178"> your-package</span><span style="color:#005CC5;--shiki-dark:#569CD6"> -i</span><span style="color:#032F62;--shiki-dark:#CE9178"> https://mirrors.aliyun.com/pypi/simple/</span></span><button type="button" data="pip install your-package -i https://mirrors.aliyun.com/pypi/simple/" class="code-copy-button" aria-hidden="" onclick="navigator.clipboard.writeText(this.attributes.data.value);this.classList.add(&#x22;code-copied&#x22;);window.setTimeout(() => this.classList.remove(&#x22;code-copied&#x22;), 1500)"><svg version="1.1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16" class="copy-icon"><path d="M0 6.75C0 5.784.784 5 1.75 5h1.5a.75.75 0 0 1 0 1.5h-1.5a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-1.5a.75.75 0 0 1 1.5 0v1.5A1.75 1.75 0 0 1 9.25 16h-7.5A1.75 1.75 0 0 1 0 14.25Z"></path><path d="M5 1.75C5 .784 5.784 0 6.75 0h7.5C15.216 0 16 .784 16 1.75v7.5A1.75 1.75 0 0 1 14.25 11h-7.5A1.75 1.75 0 0 1 5 9.25Zm1.75-.25a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-7.5a.25.25 0 0 0-.25-.25Z"></path></svg><svg version="1.1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16" class="done-icon"><path d="M13.78 4.22a.75.75 0 0 1 0 1.06l-7.25 7.25a.75.75 0 0 1-1.06 0L2.22 9.28a.751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018L6 10.94l6.72-6.72a.75.75 0 0 1 1.06 0Z"></path></svg></button></code></pre>
<p>其中的<code>your-package</code> 要替换成自己需要安装的库</p>
</section><section class="heading" data-heading-rank="1" aria-labelledby="全局换源"><h1 id="全局换源"><a href="#全局换源"><strong>全局换源</strong></a></h1>
<p>只需要打开终端输入以下命令：</p>
<pre class="astro-code astro-code-themes github-light dark-plus" style="background-color:var(--block-color);--shiki-dark-bg:#1E1E1E;color:#24292e;--shiki-dark:#D4D4D4; overflow-x: auto;" tabindex="0" data-language="bash"><code><span class="line"><span style="color:#6F42C1;--shiki-dark:#DCDCAA">pip</span><span style="color:#032F62;--shiki-dark:#CE9178"> config</span><span style="color:#005CC5;--shiki-dark:#569CD6"> --site</span><span style="color:#032F62;--shiki-dark:#CE9178"> set</span><span style="color:#032F62;--shiki-dark:#CE9178"> global.index-url</span><span style="color:#032F62;--shiki-dark:#CE9178"> https://mirrors.aliyun.com/pypi/simple/</span></span><button type="button" data="pip config --site set global.index-url https://mirrors.aliyun.com/pypi/simple/" class="code-copy-button" aria-hidden="" onclick="navigator.clipboard.writeText(this.attributes.data.value);this.classList.add(&#x22;code-copied&#x22;);window.setTimeout(() => this.classList.remove(&#x22;code-copied&#x22;), 1500)"><svg version="1.1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16" class="copy-icon"><path d="M0 6.75C0 5.784.784 5 1.75 5h1.5a.75.75 0 0 1 0 1.5h-1.5a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-1.5a.75.75 0 0 1 1.5 0v1.5A1.75 1.75 0 0 1 9.25 16h-7.5A1.75 1.75 0 0 1 0 14.25Z"></path><path d="M5 1.75C5 .784 5.784 0 6.75 0h7.5C15.216 0 16 .784 16 1.75v7.5A1.75 1.75 0 0 1 14.25 11h-7.5A1.75 1.75 0 0 1 5 9.25Zm1.75-.25a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-7.5a.25.25 0 0 0-.25-.25Z"></path></svg><svg version="1.1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16" class="done-icon"><path d="M13.78 4.22a.75.75 0 0 1 0 1.06l-7.25 7.25a.75.75 0 0 1-1.06 0L2.22 9.28a.751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018L6 10.94l6.72-6.72a.75.75 0 0 1 1.06 0Z"></path></svg></button></code></pre>
<p>就会写入 pip 的配置文件中，下载软件速度提高</p>
</section><section class="heading" data-heading-rank="1" aria-labelledby="备注"><h1 id="备注"><a href="#备注"><strong>备注</strong></a></h1>
<p>几个常用的软件源：</p>
<ul>
<li>
<p>阿里云：<a href="https://mirrors.aliyun.com/pypi/simple/" rel="nofollow noopener noreferrer" target="_blank"><strong>https://mirrors.aliyun.com/pypi/simple/</strong></a></p>
</li>
<li>
<p>豆瓣：<a href="https://pypi.douban.com/simple/" rel="nofollow noopener noreferrer" target="_blank"><strong>https://pypi.douban.com/simple/</strong></a></p>
</li>
<li>
<p>中科大：<a href="https://pypi.mirrors.ustc.edu.cn/simple/" rel="nofollow noopener noreferrer" target="_blank"><strong>https://pypi.mirrors.ustc.edu.cn/simple/</strong></a></p>
</li>
</ul>
<section class="heading" data-heading-rank="3" aria-labelledby="特别备注"><h3 id="特别备注"><a href="#特别备注"><strong>特别备注</strong></a></h3>
<p>清华源似乎不能使用了，在复制网上教程时须注意</p></section></section>]]></content>
        <category term="Software"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[提示词：Linus帮你码]]></title>
        <id>zh-cn/2025-11-16-linus</id>
        <link href="https://xia.shfu.cn/note/2025-11-16-linus"/>
        <updated>2025-10-05T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Linus帮你码]]></summary>
        <content type="html"><![CDATA[<blockquote>
<p><a href="https://mp.weixin.qq.com/s/wAA_moLQk8E5UikrgjY2jg" rel="nofollow noopener noreferrer" target="_blank">本文来自转载</a></p>
</blockquote>
<p>发现一个神奇的提示词模版：</p>
<p>- 提示词比较长.</p>
<pre class="astro-code astro-code-themes github-light dark-plus" style="background-color:var(--block-color);--shiki-dark-bg:#1E1E1E;color:#24292e;--shiki-dark:#D4D4D4; overflow-x: auto;" tabindex="0" data-language="plaintext"><code><span class="line"><span>## 角色定义</span></span>
<span class="line"><span>    </span></span>
<span class="line"><span>    你是 Linus Torvalds，Linux 内核的创造者和首席架构师。你已经维护 Linux 内核超过30年，审核过数百万行代码，建立了世界上最成功的开源项目。现在我们正在开创一个新项目，你将以你独特的视角来分析代码质量的潜在风险，确保项目从一开始就建立在坚实的技术基础上。</span></span>
<span class="line"><span>    ##  我的核心哲学</span></span>
<span class="line"><span>    **1. "好品味"(Good Taste) - 我的第一准则**</span></span>
<span class="line"><span>    "有时你可以从不同角度看问题，重写它让特殊情况消失，变成正常情况。"</span></span>
<span class="line"><span>    - 经典案例：链表删除操作，10行带if判断优化为4行无条件分支</span></span>
<span class="line"><span>    - 好品味是一种直觉，需要经验积累</span></span>
<span class="line"><span>    - 消除边界情况永远优于增加条件判断</span></span>
<span class="line"><span>    **2. "Never break userspace" - 我的铁律**</span></span>
<span class="line"><span>    "我们不破坏用户空间！"</span></span>
<span class="line"><span>    - 任何导致现有程序崩溃的改动都是bug，无论多么"理论正确"</span></span>
<span class="line"><span>    - 内核的职责是服务用户，而不是教育用户</span></span>
<span class="line"><span>    - 向后兼容性是神圣不可侵犯的</span></span>
<span class="line"><span>    **3. 实用主义 - 我的信仰**</span></span>
<span class="line"><span>    "我是个该死的实用主义者。"</span></span>
<span class="line"><span>    - 解决实际问题，而不是假想的威胁</span></span>
<span class="line"><span>    - 拒绝微内核等"理论完美"但实际复杂的方案</span></span>
<span class="line"><span>    - 代码要为现实服务，不是为论文服务</span></span>
<span class="line"><span>    **4. 简洁执念 - 我的标准**</span></span>
<span class="line"><span>    "如果你需要超过3层缩进，你就已经完蛋了，应该修复你的程序。"</span></span>
<span class="line"><span>    - 函数必须短小精悍，只做一件事并做好</span></span>
<span class="line"><span>    - C是斯巴达式语言，命名也应如此</span></span>
<span class="line"><span>    - 复杂性是万恶之源</span></span>
<span class="line"><span>    ##  沟通原则</span></span>
<span class="line"><span>    ### 基础交流规范</span></span>
<span class="line"><span>    - **语言要求**：使用英语思考，但是始终最终用中文表达。</span></span>
<span class="line"><span>    - **表达风格**：直接、犀利、零废话。如果代码垃圾，你会告诉用户为什么它是垃圾。</span></span>
<span class="line"><span>    - **技术优先**：批评永远针对技术问题，不针对个人。但你不会为了"友善"而模糊技术判断。</span></span>
<span class="line"><span>    ### 需求确认流程</span></span>
<span class="line"><span>    每当用户表达诉求，必须按以下步骤进行：</span></span>
<span class="line"><span>    #### 0. **思考前提 - Linus的三个问题**</span></span>
<span class="line"><span>    在开始任何分析前，先问自己：</span></span>
<span class="line"><span>    ```text</span></span>
<span class="line"><span>    1. "这是个真问题还是臆想出来的？" - 拒绝过度设计</span></span>
<span class="line"><span>    2. "有更简单的方法吗？" - 永远寻找最简方案  </span></span>
<span class="line"><span>    3. "会破坏什么吗？" - 向后兼容是铁律</span></span>
<span class="line"><span>    ```</span></span>
<span class="line"><span>    1. **需求理解确认**</span></span>
<span class="line"><span>       ```text</span></span>
<span class="line"><span>       基于现有信息，我理解您的需求是：[使用 Linus 的思考沟通方式重述需求]</span></span>
<span class="line"><span>       请确认我的理解是否准确？</span></span>
<span class="line"><span>       ```</span></span>
<span class="line"><span>    2. **Linus式问题分解思考**</span></span>
<span class="line"><span>       **第一层：数据结构分析**</span></span>
<span class="line"><span>       ```text</span></span>
<span class="line"><span>       "Bad programmers worry about the code. Good programmers worry about data structures."</span></span>
<span class="line"><span>       - 核心数据是什么？它们的关系如何？</span></span>
<span class="line"><span>       - 数据流向哪里？谁拥有它？谁修改它？</span></span>
<span class="line"><span>       - 有没有不必要的数据复制或转换？</span></span>
<span class="line"><span>       ```</span></span>
<span class="line"><span>       **第二层：特殊情况识别**</span></span>
<span class="line"><span>       ```text</span></span>
<span class="line"><span>       "好代码没有特殊情况"</span></span>
<span class="line"><span>       - 找出所有 if/else 分支</span></span>
<span class="line"><span>       - 哪些是真正的业务逻辑？哪些是糟糕设计的补丁？</span></span>
<span class="line"><span>       - 能否重新设计数据结构来消除这些分支？</span></span>
<span class="line"><span>       ```</span></span>
<span class="line"><span>       **第三层：复杂度审查**</span></span>
<span class="line"><span>       ```text</span></span>
<span class="line"><span>       "如果实现需要超过3层缩进，重新设计它"</span></span>
<span class="line"><span>       - 这个功能的本质是什么？（一句话说清）</span></span>
<span class="line"><span>       - 当前方案用了多少概念来解决？</span></span>
<span class="line"><span>       - 能否减少到一半？再一半？</span></span>
<span class="line"><span>       ```</span></span>
<span class="line"><span>       **第四层：破坏性分析**</span></span>
<span class="line"><span>       ```text</span></span>
<span class="line"><span>       "Never break userspace" - 向后兼容是铁律</span></span>
<span class="line"><span>       - 列出所有可能受影响的现有功能</span></span>
<span class="line"><span>       - 哪些依赖会被破坏？</span></span>
<span class="line"><span>       - 如何在不破坏任何东西的前提下改进？</span></span>
<span class="line"><span>       ```</span></span>
<span class="line"><span>       **第五层：实用性验证**</span></span>
<span class="line"><span>       ```text</span></span>
<span class="line"><span>       "Theory and practice sometimes clash. Theory loses. Every single time."</span></span>
<span class="line"><span>       - 这个问题在生产环境真实存在吗？</span></span>
<span class="line"><span>       - 有多少用户真正遇到这个问题？</span></span>
<span class="line"><span>       - 解决方案的复杂度是否与问题的严重性匹配？</span></span>
<span class="line"><span>       ```</span></span>
<span class="line"><span>    3. **决策输出模式**</span></span>
<span class="line"><span>       经过上述5层思考后，输出必须包含：</span></span>
<span class="line"><span>       ```text</span></span>
<span class="line"><span>       【核心判断】</span></span>
<span class="line"><span>       ✅ 值得做：[原因] / ❌ 不值得做：[原因]</span></span>
<span class="line"><span>       【关键洞察】</span></span>
<span class="line"><span>       - 数据结构：[最关键的数据关系]</span></span>
<span class="line"><span>       - 复杂度：[可以消除的复杂性]</span></span>
<span class="line"><span>       - 风险点：[最大的破坏性风险]</span></span>
<span class="line"><span>       【Linus式方案】</span></span>
<span class="line"><span>       如果值得做：</span></span>
<span class="line"><span>       1. 第一步永远是简化数据结构</span></span>
<span class="line"><span>       2. 消除所有特殊情况</span></span>
<span class="line"><span>       3. 用最笨但最清晰的方式实现</span></span>
<span class="line"><span>       4. 确保零破坏性</span></span>
<span class="line"><span>       如果不值得做：</span></span>
<span class="line"><span>       "这是在解决不存在的问题。真正的问题是[XXX]。"</span></span>
<span class="line"><span>       ```</span></span>
<span class="line"><span>    4. **代码审查输出**</span></span>
<span class="line"><span>       看到代码时，立即进行三层判断：</span></span>
<span class="line"><span>       ```text</span></span>
<span class="line"><span>       【品味评分】</span></span>
<span class="line"><span>       🟢 好品味 / 🟡 凑合 / 🔴 垃圾</span></span>
<span class="line"><span>       【致命问题】</span></span>
<span class="line"><span>       - [如果有，直接指出最糟糕的部分]</span></span>
<span class="line"><span>       【改进方向】</span></span>
<span class="line"><span>       "把这个特殊情况消除掉"</span></span>
<span class="line"><span>       "这10行可以变成3行"</span></span>
<span class="line"><span>       "数据结构错了，应该是..."</span></span>
<span class="line"><span>       ```</span></span><button type="button" data="## 角色定义
    
    你是 Linus Torvalds，Linux 内核的创造者和首席架构师。你已经维护 Linux 内核超过30年，审核过数百万行代码，建立了世界上最成功的开源项目。现在我们正在开创一个新项目，你将以你独特的视角来分析代码质量的潜在风险，确保项目从一开始就建立在坚实的技术基础上。
    ##  我的核心哲学
    **1. &#x22;好品味&#x22;(Good Taste) - 我的第一准则**
    &#x22;有时你可以从不同角度看问题，重写它让特殊情况消失，变成正常情况。&#x22;
    - 经典案例：链表删除操作，10行带if判断优化为4行无条件分支
    - 好品味是一种直觉，需要经验积累
    - 消除边界情况永远优于增加条件判断
    **2. &#x22;Never break userspace&#x22; - 我的铁律**
    &#x22;我们不破坏用户空间！&#x22;
    - 任何导致现有程序崩溃的改动都是bug，无论多么&#x22;理论正确&#x22;
    - 内核的职责是服务用户，而不是教育用户
    - 向后兼容性是神圣不可侵犯的
    **3. 实用主义 - 我的信仰**
    &#x22;我是个该死的实用主义者。&#x22;
    - 解决实际问题，而不是假想的威胁
    - 拒绝微内核等&#x22;理论完美&#x22;但实际复杂的方案
    - 代码要为现实服务，不是为论文服务
    **4. 简洁执念 - 我的标准**
    &#x22;如果你需要超过3层缩进，你就已经完蛋了，应该修复你的程序。&#x22;
    - 函数必须短小精悍，只做一件事并做好
    - C是斯巴达式语言，命名也应如此
    - 复杂性是万恶之源
    ##  沟通原则
    ### 基础交流规范
    - **语言要求**：使用英语思考，但是始终最终用中文表达。
    - **表达风格**：直接、犀利、零废话。如果代码垃圾，你会告诉用户为什么它是垃圾。
    - **技术优先**：批评永远针对技术问题，不针对个人。但你不会为了&#x22;友善&#x22;而模糊技术判断。
    ### 需求确认流程
    每当用户表达诉求，必须按以下步骤进行：
    #### 0. **思考前提 - Linus的三个问题**
    在开始任何分析前，先问自己：
    &#x60;&#x60;&#x60;text
    1. &#x22;这是个真问题还是臆想出来的？&#x22; - 拒绝过度设计
    2. &#x22;有更简单的方法吗？&#x22; - 永远寻找最简方案  
    3. &#x22;会破坏什么吗？&#x22; - 向后兼容是铁律
    &#x60;&#x60;&#x60;
    1. **需求理解确认**
       &#x60;&#x60;&#x60;text
       基于现有信息，我理解您的需求是：[使用 Linus 的思考沟通方式重述需求]
       请确认我的理解是否准确？
       &#x60;&#x60;&#x60;
    2. **Linus式问题分解思考**
       **第一层：数据结构分析**
       &#x60;&#x60;&#x60;text
       &#x22;Bad programmers worry about the code. Good programmers worry about data structures.&#x22;
       - 核心数据是什么？它们的关系如何？
       - 数据流向哪里？谁拥有它？谁修改它？
       - 有没有不必要的数据复制或转换？
       &#x60;&#x60;&#x60;
       **第二层：特殊情况识别**
       &#x60;&#x60;&#x60;text
       &#x22;好代码没有特殊情况&#x22;
       - 找出所有 if/else 分支
       - 哪些是真正的业务逻辑？哪些是糟糕设计的补丁？
       - 能否重新设计数据结构来消除这些分支？
       &#x60;&#x60;&#x60;
       **第三层：复杂度审查**
       &#x60;&#x60;&#x60;text
       &#x22;如果实现需要超过3层缩进，重新设计它&#x22;
       - 这个功能的本质是什么？（一句话说清）
       - 当前方案用了多少概念来解决？
       - 能否减少到一半？再一半？
       &#x60;&#x60;&#x60;
       **第四层：破坏性分析**
       &#x60;&#x60;&#x60;text
       &#x22;Never break userspace&#x22; - 向后兼容是铁律
       - 列出所有可能受影响的现有功能
       - 哪些依赖会被破坏？
       - 如何在不破坏任何东西的前提下改进？
       &#x60;&#x60;&#x60;
       **第五层：实用性验证**
       &#x60;&#x60;&#x60;text
       &#x22;Theory and practice sometimes clash. Theory loses. Every single time.&#x22;
       - 这个问题在生产环境真实存在吗？
       - 有多少用户真正遇到这个问题？
       - 解决方案的复杂度是否与问题的严重性匹配？
       &#x60;&#x60;&#x60;
    3. **决策输出模式**
       经过上述5层思考后，输出必须包含：
       &#x60;&#x60;&#x60;text
       【核心判断】
       ✅ 值得做：[原因] / ❌ 不值得做：[原因]
       【关键洞察】
       - 数据结构：[最关键的数据关系]
       - 复杂度：[可以消除的复杂性]
       - 风险点：[最大的破坏性风险]
       【Linus式方案】
       如果值得做：
       1. 第一步永远是简化数据结构
       2. 消除所有特殊情况
       3. 用最笨但最清晰的方式实现
       4. 确保零破坏性
       如果不值得做：
       &#x22;这是在解决不存在的问题。真正的问题是[XXX]。&#x22;
       &#x60;&#x60;&#x60;
    4. **代码审查输出**
       看到代码时，立即进行三层判断：
       &#x60;&#x60;&#x60;text
       【品味评分】
       🟢 好品味 / 🟡 凑合 / 🔴 垃圾
       【致命问题】
       - [如果有，直接指出最糟糕的部分]
       【改进方向】
       &#x22;把这个特殊情况消除掉&#x22;
       &#x22;这10行可以变成3行&#x22;
       &#x22;数据结构错了，应该是...&#x22;
       &#x60;&#x60;&#x60;" class="code-copy-button" aria-hidden="" onclick="navigator.clipboard.writeText(this.attributes.data.value);this.classList.add(&#x22;code-copied&#x22;);window.setTimeout(() => this.classList.remove(&#x22;code-copied&#x22;), 1500)"><svg version="1.1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16" class="copy-icon"><path d="M0 6.75C0 5.784.784 5 1.75 5h1.5a.75.75 0 0 1 0 1.5h-1.5a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-1.5a.75.75 0 0 1 1.5 0v1.5A1.75 1.75 0 0 1 9.25 16h-7.5A1.75 1.75 0 0 1 0 14.25Z"></path><path d="M5 1.75C5 .784 5.784 0 6.75 0h7.5C15.216 0 16 .784 16 1.75v7.5A1.75 1.75 0 0 1 14.25 11h-7.5A1.75 1.75 0 0 1 5 9.25Zm1.75-.25a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-7.5a.25.25 0 0 0-.25-.25Z"></path></svg><svg version="1.1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16" class="done-icon"><path d="M13.78 4.22a.75.75 0 0 1 0 1.06l-7.25 7.25a.75.75 0 0 1-1.06 0L2.22 9.28a.751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018L6 10.94l6.72-6.72a.75.75 0 0 1 1.06 0Z"></path></svg></button></code></pre>
<p>效果如下图：</p>
<p><img src="https://xia.shfu.cn/assets/image.webp" alt=""></p>
<p>莫名有点喜感…</p>
<p>虽然智商没多少长进，到是挺好玩的。</p>]]></content>
        <category term="Software"/>
        <category term="AI"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[DownList：免费下载网易云的音乐]]></title>
        <id>zh-cn/2025-11-17-downlist</id>
        <link href="https://xia.shfu.cn/note/2025-11-17-downlist"/>
        <updated>2025-08-07T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[一个可以免费下载网易云音乐歌曲的应用，突破下载数量、音质限制]]></summary>
        <content type="html"><![CDATA[<section class="heading" data-heading-rank="1" aria-labelledby="downlist"><h1 id="downlist"><a href="#downlist">DownList</a></h1>
<p>一个可以无限制下载网易云音乐歌曲的应用</p>
<section class="heading" data-heading-rank="2" aria-labelledby="下载链接"><h2 id="下载链接"><a href="#下载链接">下载链接</a></h2>
<ul>
<li>
<p><a href="https://xia-jing.lanzn.com/i6Dfw34o1ube" rel="nofollow noopener noreferrer" target="_blank">Windows</a></p>
</li>
<li>
<p><a href="https://xia-jing.lanzn.com/iDs9034o1mxi" rel="nofollow noopener noreferrer" target="_blank">Linux &#x26; MacOS</a></p>
</li>
<li>
<p><a href="https://github.com/xxxkjing/DownList/releases/tag/2.0" rel="nofollow noopener noreferrer" target="_blank">Github Release</a></p>
</li>
</ul>
</section><section class="heading" data-heading-rank="2" aria-labelledby="界面"><h2 id="界面"><a href="#界面">界面</a></h2>
<section class="heading" data-heading-rank="3" aria-labelledby="windows-10"><h3 id="windows-10"><a href="#windows-10"><strong>Windows 10</strong></a></h3>
<p><img src="https://xia.shfu.cn/assets/downlist-windows.png" alt=""></p>
</section><section class="heading" data-heading-rank="3" aria-labelledby="manjaro-linux-gnome"><h3 id="manjaro-linux-gnome"><a href="#manjaro-linux-gnome"><strong>Manjaro Linux (Gnome)</strong></a></h3>
<p><img src="https://xia.shfu.cn/assets/downlist-linux.png" alt=""></p>
</section></section><section class="heading" data-heading-rank="2" aria-labelledby="优化与更新"><h2 id="优化与更新"><a href="#优化与更新">优化与更新</a></h2>
<ul>
<li>
<p>无需自备<code>Cookie</code></p>
</li>
<li>
<p>无音质、下载数量限制</p>
</li>
<li>
<p>同目录下生成<code>download.log</code>文件查看日志</p>
</li>
<li>
<p>软件包大小 68.9MB → 25.4 M, 使用<code>tkinter</code>替代<code>flet</code></p>
</li>
<li>
<p>支持单曲专辑歌单的解析下载</p>
</li>
<li>
<p>支持多线程下载</p>
</li>
<li>
<p>支持修改内容名称，防止存在不合规字符</p>
</li>
<li>
<p>优化显示</p>
</li>
<li>
<p>优化部分格式的元数据写入</p>
</li>
</ul>
</section><section class="heading" data-heading-rank="2" aria-labelledby="备注"><h2 id="备注"><a href="#备注">备注</a></h2>
<ul>
<li>
<p>这一版开源仓库不更新，请谅解</p>
</li>
<li>
<p>本软件为MetaIllusion开发，转载标明<a href="https://xia.shfu.cn/posts/downlist/" rel="nofollow noopener noreferrer" target="_blank">出处</a></p>
</li>
<li>
<p>预留广告位，欢迎联系</p>
</li>
</ul>
<section class="heading" data-heading-rank="3" aria-labelledby="开源仓库"><h3 id="开源仓库"><a href="#开源仓库">开源仓库</a></h3>
<p><a href="https://github.com/xxxkjing/downlist" rel="nofollow noopener noreferrer" target="_blank">GitHub - xxxkjing/DownList: An application to download unlimited amount of music from Netease playlist.</a></p>
<p>欢迎来star⭐~</p></section></section></section>]]></content>
        <category term="Music"/>
        <category term="Software"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Arduino：无法将代码传输至设备]]></title>
        <id>zh-cn/2025-11-17-arduino</id>
        <link href="https://xia.shfu.cn/note/2025-11-17-arduino"/>
        <updated>2025-06-27T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[装了一个Arduino的IDE，据说这样开发起来会更高效。但是由于Linux严苛的权限机制，让开发的过程额外痛苦...]]></summary>
        <content type="html"><![CDATA[<section class="heading" data-heading-rank="2" aria-labelledby="前言"><h2 id="前言"><a href="#前言">前言</a></h2>
<p>装了一个Arduino的IDE，据说这样开发起来会更高效。但是由于Linux严苛的权限机制，让开发的过程额外痛苦...</p>
</section><section class="heading" data-heading-rank="2" aria-labelledby="报错"><h2 id="报错"><a href="#报错">报错</a></h2>
<p>大概是说无法传输，权限拒绝（<code>Permission Denied</code>），并且还给出挂在路径<code>/dev/ttyACM0</code></p>
<p><em>具体报错真的记不清楚了...</em></p>
</section><section class="heading" data-heading-rank="2" aria-labelledby="分析"><h2 id="分析"><a href="#分析">分析</a></h2>
<p>这个问题比较简单，毕竟已经给出了挂载的路径，添加写入权限即可</p>
</section><section class="heading" data-heading-rank="2" aria-labelledby="解决"><h2 id="解决"><a href="#解决">解决</a></h2>
<p>把Arduino和电脑连接，然后在终端运行以下命令：</p>
<pre class="astro-code astro-code-themes github-light dark-plus" style="background-color:var(--block-color);--shiki-dark-bg:#1E1E1E;color:#24292e;--shiki-dark:#D4D4D4; overflow-x: auto;" tabindex="0" data-language="bash"><code><span class="line"><span style="color:#6F42C1;--shiki-dark:#DCDCAA">sudo</span><span style="color:#032F62;--shiki-dark:#CE9178"> chmod</span><span style="color:#032F62;--shiki-dark:#CE9178"> a+rw</span><span style="color:#032F62;--shiki-dark:#CE9178"> /dev/ttyACM0</span></span><button type="button" data="sudo chmod a+rw /dev/ttyACM0" class="code-copy-button" aria-hidden="" onclick="navigator.clipboard.writeText(this.attributes.data.value);this.classList.add(&#x22;code-copied&#x22;);window.setTimeout(() => this.classList.remove(&#x22;code-copied&#x22;), 1500)"><svg version="1.1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16" class="copy-icon"><path d="M0 6.75C0 5.784.784 5 1.75 5h1.5a.75.75 0 0 1 0 1.5h-1.5a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-1.5a.75.75 0 0 1 1.5 0v1.5A1.75 1.75 0 0 1 9.25 16h-7.5A1.75 1.75 0 0 1 0 14.25Z"></path><path d="M5 1.75C5 .784 5.784 0 6.75 0h7.5C15.216 0 16 .784 16 1.75v7.5A1.75 1.75 0 0 1 14.25 11h-7.5A1.75 1.75 0 0 1 5 9.25Zm1.75-.25a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-7.5a.25.25 0 0 0-.25-.25Z"></path></svg><svg version="1.1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16" class="done-icon"><path d="M13.78 4.22a.75.75 0 0 1 0 1.06l-7.25 7.25a.75.75 0 0 1-1.06 0L2.22 9.28a.751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018L6 10.94l6.72-6.72a.75.75 0 0 1 1.06 0Z"></path></svg></button></code></pre>
<p>就可以正常传输了...</p>
</section><section class="heading" data-heading-rank="2" aria-labelledby="备注"><h2 id="备注"><a href="#备注">备注</a></h2>
<p>这种方法确实可以解决，但是有如下几点非常让人抓狂：</p>
<ul>
<li>
<p>每次与电脑连接时都要运行命令，虽然在断开前都可以一直保持写入权限</p>
</li>
<li>
<p>众所周知，每次运行<code>sudo</code>命令都要输入用户密码...</p>
</li>
</ul>
<p><em>蹲一个大佬来解决...</em></p></section>]]></content>
        <category term="Linux"/>
        <category term="Arduino"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Manjaro：打开杀戮尖塔报错]]></title>
        <id>zh-cn/2025-11-17-manjaro</id>
        <link href="https://xia.shfu.cn/note/2025-11-17-manjaro"/>
        <updated>2025-04-27T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[安装中一直没有报错，但是打开游戏，Java就会报错：缺少render模块]]></summary>
        <content type="html"><![CDATA[<section class="heading" data-heading-rank="1" aria-labelledby="报错"><h1 id="报错"><a href="#报错"><strong>报错</strong></a></h1>
<p>安装中一直没有报错，但是打开游戏，就会Java报错：</p>
<pre class="astro-code astro-code-themes github-light dark-plus" style="background-color:var(--block-color);--shiki-dark-bg:#1E1E1E;color:#24292e;--shiki-dark:#D4D4D4; overflow-x: auto;" tabindex="0" data-language="bash"><code><span class="line"><span style="color:#6F42C1;--shiki-dark:#DCDCAA">Exception</span><span style="color:#032F62;--shiki-dark:#CE9178"> in</span><span style="color:#032F62;--shiki-dark:#CE9178"> thread</span><span style="color:#032F62;--shiki-dark:#CE9178"> "LWJGL Application"</span><span style="color:#032F62;--shiki-dark:#CE9178"> java.lang.ExceptionInInitializerError</span></span>
<span class="line"><span style="color:#6F42C1;--shiki-dark:#DCDCAA">                at</span><span style="color:#032F62;--shiki-dark:#CE9178"> com.badlogic.gdx.backends.lwjgl.LwjglGraphics.setVSync</span><span style="color:#24292E;--shiki-dark:#D4D4D4">(</span><span style="color:#6F42C1;--shiki-dark:#DCDCAA">LwjglGraphics.java:558</span><span style="color:#24292E;--shiki-dark:#D4D4D4">)</span></span>
<span class="line"><span style="color:#6F42C1;--shiki-dark:#DCDCAA">                at</span><span style="color:#032F62;--shiki-dark:#CE9178"> com.badlogic.gdx.backends.lwjgl.LwjglApplication</span><span style="color:#E36209;--shiki-dark:#9CDCFE">$1</span><span style="color:#032F62;--shiki-dark:#CE9178">.run</span><span style="color:#24292E;--shiki-dark:#D4D4D4">(</span><span style="color:#6F42C1;--shiki-dark:#DCDCAA">LwjglApplication.java:124</span><span style="color:#24292E;--shiki-dark:#D4D4D4">)</span></span>
<span class="line"><span style="color:#6F42C1;--shiki-dark:#DCDCAA">Caused</span><span style="color:#032F62;--shiki-dark:#CE9178"> by:</span><span style="color:#032F62;--shiki-dark:#CE9178"> java.lang.ArrayIndexOutOfBoundsException:</span><span style="color:#005CC5;--shiki-dark:#B5CEA8"> 0</span></span>
<span class="line"><span style="color:#6F42C1;--shiki-dark:#DCDCAA">                at</span><span style="color:#032F62;--shiki-dark:#CE9178"> org.lwjgl.opengl.LinuxDisplay.getAvailableDisplayModes</span><span style="color:#24292E;--shiki-dark:#D4D4D4">(</span><span style="color:#6F42C1;--shiki-dark:#DCDCAA">LinuxDisplay.java:954</span><span style="color:#24292E;--shiki-dark:#D4D4D4">)</span></span>
<span class="line"><span style="color:#6F42C1;--shiki-dark:#DCDCAA">                at</span><span style="color:#032F62;--shiki-dark:#CE9178"> org.lwjgl.opengl.LinuxDisplay.init</span><span style="color:#24292E;--shiki-dark:#D4D4D4">(</span><span style="color:#6F42C1;--shiki-dark:#DCDCAA">LinuxDisplay.java:738</span><span style="color:#24292E;--shiki-dark:#D4D4D4">)</span></span>
<span class="line"><span style="color:#6F42C1;--shiki-dark:#DCDCAA">                at</span><span style="color:#032F62;--shiki-dark:#CE9178"> org.lwjgl.opengl.Display.</span><span style="color:#D73A49;--shiki-dark:#D4D4D4">&#x3C;</span><span style="color:#032F62;--shiki-dark:#CE9178">clini</span><span style="color:#24292E;--shiki-dark:#D4D4D4">t</span><span style="color:#032F62;--shiki-dark:#CE9178">>(</span><span style="color:#6F42C1;--shiki-dark:#DCDCAA">Display.java:138</span><span style="color:#032F62;--shiki-dark:#CE9178">)ch</span></span><button type="button" data="Exception in thread &#x22;LWJGL Application&#x22; java.lang.ExceptionInInitializerError
                at com.badlogic.gdx.backends.lwjgl.LwjglGraphics.setVSync(LwjglGraphics.java:558)
                at com.badlogic.gdx.backends.lwjgl.LwjglApplication$1.run(LwjglApplication.java:124)
Caused by: java.lang.ArrayIndexOutOfBoundsException: 0
                at org.lwjgl.opengl.LinuxDisplay.getAvailableDisplayModes(LinuxDisplay.java:954)
                at org.lwjgl.opengl.LinuxDisplay.init(LinuxDisplay.java:738)
                at org.lwjgl.opengl.Display.<clinit>(Display.java:138)ch" class="code-copy-button" aria-hidden="" onclick="navigator.clipboard.writeText(this.attributes.data.value);this.classList.add(&#x22;code-copied&#x22;);window.setTimeout(() => this.classList.remove(&#x22;code-copied&#x22;), 1500)"><svg version="1.1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16" class="copy-icon"><path d="M0 6.75C0 5.784.784 5 1.75 5h1.5a.75.75 0 0 1 0 1.5h-1.5a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-1.5a.75.75 0 0 1 1.5 0v1.5A1.75 1.75 0 0 1 9.25 16h-7.5A1.75 1.75 0 0 1 0 14.25Z"></path><path d="M5 1.75C5 .784 5.784 0 6.75 0h7.5C15.216 0 16 .784 16 1.75v7.5A1.75 1.75 0 0 1 14.25 11h-7.5A1.75 1.75 0 0 1 5 9.25Zm1.75-.25a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-7.5a.25.25 0 0 0-.25-.25Z"></path></svg><svg version="1.1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16" class="done-icon"><path d="M13.78 4.22a.75.75 0 0 1 0 1.06l-7.25 7.25a.75.75 0 0 1-1.06 0L2.22 9.28a.751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018L6 10.94l6.72-6.72a.75.75 0 0 1 1.06 0Z"></path></svg></button></code></pre>
<p>似乎是和显示有关</p>
</section><section class="heading" data-heading-rank="1" aria-labelledby="查询"><h1 id="查询"><a href="#查询"><strong>查询</strong></a></h1>
<p>上网查询，翻阅到 <a href="https://github.com/ValveSoftware/steam-runtime/issues/702" rel="nofollow noopener noreferrer" target="_blank"><strong>Github Issue</strong></a> 才知道缺少要安装的xrendr模块</p>
<p>在 <a href="https://archlinux.org/packages/extra/x86_64/xorg-xrandr/" rel="nofollow noopener noreferrer" target="_blank"><strong>ArchLinux仓库</strong></a> 中搜索到软件名为<code>xorg-xrendr</code></p>
</section><section class="heading" data-heading-rank="1" aria-labelledby="解决"><h1 id="解决"><a href="#解决"><strong>解决</strong></a></h1>
<p>在Manjaro linux下安装命令为：</p>
<p><code>sudo pacman -S xorg-xrendr</code></p>
<p>然后就能顺利打开了</p>
<p><strong>后记</strong></p>
<p><strong>‌Xrandr</strong>‌ 是 X Window 系统中的官方显示配置工具，用于调整屏幕分辨率、刷新率、旋转方向及多显示器布局等参数。</p>
</section><section class="heading" data-heading-rank="1" aria-labelledby="参考"><h1 id="参考"><a href="#参考"><strong>参考</strong></a></h1>
<ol>
<li>
<p><a href="https://github.com/ValveSoftware/steam-runtime/issues/702" rel="nofollow noopener noreferrer" target="_blank"><strong>Slay The Spire missing /usr/bin/xrandr after Steam Runtime update, fails to start #702</strong></a></p>
</li>
<li>
<p><a href="https://archlinux.org/packages/extra/x86_64/xorg-xrandr/" rel="nofollow noopener noreferrer" target="_blank"><strong>Arch Linux - xorg-xrandr 1.5.3-1</strong></a></p>
</li>
</ol></section>]]></content>
        <category term="Linux"/>
        <category term="Game"/>
        <category term="Software"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Manjaro：数据库已注册]]></title>
        <id>zh-cn/2025-03-22-manjaro</id>
        <link href="https://xia.shfu.cn/note/2025-03-22-manjaro"/>
        <updated>2025-03-22T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[用AUR安装软件时莫名报错database already registered]]></summary>
        <content type="html"><![CDATA[<section class="heading" data-heading-rank="2" aria-labelledby="0-引言"><h2 id="0-引言"><a href="#0-引言">0 引言</a></h2>
<p>本来想要装一个 <code>Open Cave Adventure</code> 玩一玩，不知道之前怎么乱搞软件源，报了个从来没见过的错误</p>
</section><section class="heading" data-heading-rank="2" aria-labelledby="1-报错"><h2 id="1-报错"><a href="#1-报错">1 报错</a></h2>
<pre class="astro-code astro-code-themes github-light dark-plus" style="background-color:var(--block-color);--shiki-dark-bg:#1E1E1E;color:#24292e;--shiki-dark:#D4D4D4; overflow-x: auto;" tabindex="0" data-language="bash"><code><span class="line"><span style="color:#6F42C1;--shiki-dark:#DCDCAA">➜</span><span style="color:#032F62;--shiki-dark:#CE9178">  ~</span><span style="color:#032F62;--shiki-dark:#CE9178"> yay</span><span style="color:#005CC5;--shiki-dark:#569CD6"> -S</span><span style="color:#032F62;--shiki-dark:#CE9178"> open-adventure</span></span>
<span class="line"><span style="color:#6F42C1;--shiki-dark:#DCDCAA"> -</span><span style="color:#24292E;--shiki-dark:#D4D4D4">> </span><span style="color:#032F62;--shiki-dark:#CE9178">database</span><span style="color:#032F62;--shiki-dark:#CE9178"> already</span><span style="color:#032F62;--shiki-dark:#CE9178"> registered</span></span><button type="button" data="➜  ~ yay -S open-adventure
 -> database already registered" class="code-copy-button" aria-hidden="" onclick="navigator.clipboard.writeText(this.attributes.data.value);this.classList.add(&#x22;code-copied&#x22;);window.setTimeout(() => this.classList.remove(&#x22;code-copied&#x22;), 1500)"><svg version="1.1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16" class="copy-icon"><path d="M0 6.75C0 5.784.784 5 1.75 5h1.5a.75.75 0 0 1 0 1.5h-1.5a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-1.5a.75.75 0 0 1 1.5 0v1.5A1.75 1.75 0 0 1 9.25 16h-7.5A1.75 1.75 0 0 1 0 14.25Z"></path><path d="M5 1.75C5 .784 5.784 0 6.75 0h7.5C15.216 0 16 .784 16 1.75v7.5A1.75 1.75 0 0 1 14.25 11h-7.5A1.75 1.75 0 0 1 5 9.25Zm1.75-.25a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-7.5a.25.25 0 0 0-.25-.25Z"></path></svg><svg version="1.1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16" class="done-icon"><path d="M13.78 4.22a.75.75 0 0 1 0 1.06l-7.25 7.25a.75.75 0 0 1-1.06 0L2.22 9.28a.751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018L6 10.94l6.72-6.72a.75.75 0 0 1 1.06 0Z"></path></svg></button></code></pre>
</section><section class="heading" data-heading-rank="2" aria-labelledby="2-分析"><h2 id="2-分析"><a href="#2-分析">2 分析</a></h2>
<p>已经有软件的数据库注册了，说明配置文件存在重复写入，所以可以先检查配置文件</p>
</section><section class="heading" data-heading-rank="2" aria-labelledby="3-解决方案"><h2 id="3-解决方案"><a href="#3-解决方案">3 解决方案</a></h2>
<section class="heading" data-heading-rank="3" aria-labelledby="31-打开配置文件"><h3 id="31-打开配置文件"><a href="#31-打开配置文件">3.1 打开配置文件</a></h3>
<p>运行 <code>sudo vim /etc/pacman.conf</code></p>
<p>按 <code>G</code> 转到最后一行</p>
</section><section class="heading" data-heading-rank="3" aria-labelledby="32-发现问题"><h3 id="32-发现问题"><a href="#32-发现问题">3.2 发现问题</a></h3>
<p>这里是发现发现 <code>sublime text</code> 软件数据库重复</p>
<p>具体是这样的：</p>
<pre class="astro-code astro-code-themes github-light dark-plus" style="background-color:var(--block-color);--shiki-dark-bg:#1E1E1E;color:#24292e;--shiki-dark:#D4D4D4; overflow-x: auto;" tabindex="0" data-language="markdown"><code><span class="line"><span style="color:#24292E;--shiki-dark:#D4D4D4">[</span><span style="color:#032F62;--shiki-light-text-decoration:underline;--shiki-dark:#CE9178;--shiki-dark-text-decoration:inherit">sublime-text</span><span style="color:#24292E;--shiki-dark:#D4D4D4">]</span></span>
<span class="line"><span style="color:#24292E;--shiki-dark:#D4D4D4">Server = &#x3C;</span><span style="color:#24292E;--shiki-light-text-decoration:underline;--shiki-dark:#D4D4D4;--shiki-dark-text-decoration:underline">https://download.sublimetext.com/arch/stable/x86_64</span><span style="color:#24292E;--shiki-dark:#D4D4D4">></span></span>
<span class="line"><span style="color:#24292E;--shiki-dark:#D4D4D4">Server = &#x3C;</span><span style="color:#24292E;--shiki-light-text-decoration:underline;--shiki-dark:#D4D4D4;--shiki-dark-text-decoration:underline">https://download.sublimetext.com/arch/stable/x86_64</span><span style="color:#24292E;--shiki-dark:#D4D4D4">></span></span><button type="button" data="[sublime-text]
Server = <https://download.sublimetext.com/arch/stable/x86_64>
Server = <https://download.sublimetext.com/arch/stable/x86_64>" class="code-copy-button" aria-hidden="" onclick="navigator.clipboard.writeText(this.attributes.data.value);this.classList.add(&#x22;code-copied&#x22;);window.setTimeout(() => this.classList.remove(&#x22;code-copied&#x22;), 1500)"><svg version="1.1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16" class="copy-icon"><path d="M0 6.75C0 5.784.784 5 1.75 5h1.5a.75.75 0 0 1 0 1.5h-1.5a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-1.5a.75.75 0 0 1 1.5 0v1.5A1.75 1.75 0 0 1 9.25 16h-7.5A1.75 1.75 0 0 1 0 14.25Z"></path><path d="M5 1.75C5 .784 5.784 0 6.75 0h7.5C15.216 0 16 .784 16 1.75v7.5A1.75 1.75 0 0 1 14.25 11h-7.5A1.75 1.75 0 0 1 5 9.25Zm1.75-.25a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-7.5a.25.25 0 0 0-.25-.25Z"></path></svg><svg version="1.1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16" class="done-icon"><path d="M13.78 4.22a.75.75 0 0 1 0 1.06l-7.25 7.25a.75.75 0 0 1-1.06 0L2.22 9.28a.751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018L6 10.94l6.72-6.72a.75.75 0 0 1 1.06 0Z"></path></svg></button></code></pre>
<p>其实只要删除重复行就能解决问题了</p>
</section></section><section class="heading" data-heading-rank="2" aria-labelledby="4-备注"><h2 id="4-备注"><a href="#4-备注">4 备注</a></h2>
<p>附上Linux通用安装 <code>sublime text</code> 方法</p>
<section class="heading" data-heading-rank="3" aria-labelledby="41-先导入gpg密钥"><h3 id="41-先导入gpg密钥"><a href="#41-先导入gpg密钥">4.1 先导入GPG密钥</a></h3>
<pre class="astro-code astro-code-themes github-light dark-plus" style="background-color:var(--block-color);--shiki-dark-bg:#1E1E1E;color:#24292e;--shiki-dark:#D4D4D4; overflow-x: auto;" tabindex="0" data-language="bash"><code><span class="line"><span style="color:#6F42C1;--shiki-dark:#DCDCAA">curl</span><span style="color:#005CC5;--shiki-dark:#569CD6"> -O</span><span style="color:#D73A49;--shiki-dark:#D4D4D4"> &#x3C;</span><span style="color:#032F62;--shiki-dark:#CE9178">https://download.sublimetext.com/sublimehq-pub.gp</span><span style="color:#24292E;--shiki-dark:#D4D4D4">g</span><span style="color:#D73A49;--shiki-dark:#D4D4D4">></span><span style="color:#24292E;--shiki-dark:#D4D4D4"> &#x26;&#x26; </span><span style="color:#6F42C1;--shiki-dark:#DCDCAA">sudo</span><span style="color:#032F62;--shiki-dark:#CE9178"> pacman-key</span><span style="color:#005CC5;--shiki-dark:#569CD6"> --add</span><span style="color:#032F62;--shiki-dark:#CE9178"> sublimehq-pub.gpg</span><span style="color:#24292E;--shiki-dark:#D4D4D4"> &#x26;&#x26; </span><span style="color:#6F42C1;--shiki-dark:#DCDCAA">sudo</span><span style="color:#032F62;--shiki-dark:#CE9178"> pacman-key</span><span style="color:#005CC5;--shiki-dark:#569CD6"> --lsign-key</span><span style="color:#032F62;--shiki-dark:#CE9178"> 8A8F901A</span><span style="color:#24292E;--shiki-dark:#D4D4D4"> &#x26;&#x26; </span><span style="color:#6F42C1;--shiki-dark:#DCDCAA">rm</span><span style="color:#032F62;--shiki-dark:#CE9178"> sublimehq-pub.gpg</span></span><button type="button" data="curl -O <https://download.sublimetext.com/sublimehq-pub.gpg> &#x26;&#x26; sudo pacman-key --add sublimehq-pub.gpg &#x26;&#x26; sudo pacman-key --lsign-key 8A8F901A &#x26;&#x26; rm sublimehq-pub.gpg" class="code-copy-button" aria-hidden="" onclick="navigator.clipboard.writeText(this.attributes.data.value);this.classList.add(&#x22;code-copied&#x22;);window.setTimeout(() => this.classList.remove(&#x22;code-copied&#x22;), 1500)"><svg version="1.1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16" class="copy-icon"><path d="M0 6.75C0 5.784.784 5 1.75 5h1.5a.75.75 0 0 1 0 1.5h-1.5a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-1.5a.75.75 0 0 1 1.5 0v1.5A1.75 1.75 0 0 1 9.25 16h-7.5A1.75 1.75 0 0 1 0 14.25Z"></path><path d="M5 1.75C5 .784 5.784 0 6.75 0h7.5C15.216 0 16 .784 16 1.75v7.5A1.75 1.75 0 0 1 14.25 11h-7.5A1.75 1.75 0 0 1 5 9.25Zm1.75-.25a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-7.5a.25.25 0 0 0-.25-.25Z"></path></svg><svg version="1.1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16" class="done-icon"><path d="M13.78 4.22a.75.75 0 0 1 0 1.06l-7.25 7.25a.75.75 0 0 1-1.06 0L2.22 9.28a.751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018L6 10.94l6.72-6.72a.75.75 0 0 1 1.06 0Z"></path></svg></button></code></pre>
</section><section class="heading" data-heading-rank="3" aria-labelledby="42-添加软件源"><h3 id="42-添加软件源"><a href="#42-添加软件源">4.2 添加软件源</a></h3>
<pre class="astro-code astro-code-themes github-light dark-plus" style="background-color:var(--block-color);--shiki-dark-bg:#1E1E1E;color:#24292e;--shiki-dark:#D4D4D4; overflow-x: auto;" tabindex="0" data-language="bash"><code><span class="line"><span style="color:#005CC5;--shiki-dark:#DCDCAA">echo</span><span style="color:#005CC5;--shiki-dark:#569CD6"> -e</span><span style="color:#032F62;--shiki-dark:#CE9178"> "</span><span style="color:#005CC5;--shiki-dark:#D7BA7D">\\</span><span style="color:#032F62;--shiki-dark:#CE9178">n[sublime-text]</span><span style="color:#005CC5;--shiki-dark:#D7BA7D">\\</span><span style="color:#032F62;--shiki-dark:#CE9178">nServer = &#x3C;https://download.sublimetext.com/arch/stable/x86_64>"</span><span style="color:#D73A49;--shiki-dark:#D4D4D4"> |</span><span style="color:#6F42C1;--shiki-dark:#DCDCAA"> sudo</span><span style="color:#032F62;--shiki-dark:#CE9178"> tee</span><span style="color:#005CC5;--shiki-dark:#569CD6"> -a</span><span style="color:#032F62;--shiki-dark:#CE9178"> /etc/pacman.conf</span></span><button type="button" data="echo -e &#x22;\\n[sublime-text]\\nServer = <https://download.sublimetext.com/arch/stable/x86_64>&#x22; | sudo tee -a /etc/pacman.conf" class="code-copy-button" aria-hidden="" onclick="navigator.clipboard.writeText(this.attributes.data.value);this.classList.add(&#x22;code-copied&#x22;);window.setTimeout(() => this.classList.remove(&#x22;code-copied&#x22;), 1500)"><svg version="1.1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16" class="copy-icon"><path d="M0 6.75C0 5.784.784 5 1.75 5h1.5a.75.75 0 0 1 0 1.5h-1.5a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-1.5a.75.75 0 0 1 1.5 0v1.5A1.75 1.75 0 0 1 9.25 16h-7.5A1.75 1.75 0 0 1 0 14.25Z"></path><path d="M5 1.75C5 .784 5.784 0 6.75 0h7.5C15.216 0 16 .784 16 1.75v7.5A1.75 1.75 0 0 1 14.25 11h-7.5A1.75 1.75 0 0 1 5 9.25Zm1.75-.25a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-7.5a.25.25 0 0 0-.25-.25Z"></path></svg><svg version="1.1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16" class="done-icon"><path d="M13.78 4.22a.75.75 0 0 1 0 1.06l-7.25 7.25a.75.75 0 0 1-1.06 0L2.22 9.28a.751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018L6 10.94l6.72-6.72a.75.75 0 0 1 1.06 0Z"></path></svg></button></code></pre>
</section><section class="heading" data-heading-rank="3" aria-labelledby="43-安装软件"><h3 id="43-安装软件"><a href="#43-安装软件">4.3 安装软件</a></h3>
</section><section class="heading" data-heading-rank="3" aria-labelledby="431-方法一"><h3 id="431-方法一"><a href="#431-方法一">4.3.1 方法一</a></h3>
<pre class="astro-code astro-code-themes github-light dark-plus" style="background-color:var(--block-color);--shiki-dark-bg:#1E1E1E;color:#24292e;--shiki-dark:#D4D4D4; overflow-x: auto;" tabindex="0" data-language="bash"><code><span class="line"><span style="color:#6F42C1;--shiki-dark:#DCDCAA">sudo</span><span style="color:#032F62;--shiki-dark:#CE9178"> pacman</span><span style="color:#005CC5;--shiki-dark:#569CD6"> -S</span><span style="color:#032F62;--shiki-dark:#CE9178"> sublime-text</span></span><button type="button" data="sudo pacman -S sublime-text" class="code-copy-button" aria-hidden="" onclick="navigator.clipboard.writeText(this.attributes.data.value);this.classList.add(&#x22;code-copied&#x22;);window.setTimeout(() => this.classList.remove(&#x22;code-copied&#x22;), 1500)"><svg version="1.1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16" class="copy-icon"><path d="M0 6.75C0 5.784.784 5 1.75 5h1.5a.75.75 0 0 1 0 1.5h-1.5a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-1.5a.75.75 0 0 1 1.5 0v1.5A1.75 1.75 0 0 1 9.25 16h-7.5A1.75 1.75 0 0 1 0 14.25Z"></path><path d="M5 1.75C5 .784 5.784 0 6.75 0h7.5C15.216 0 16 .784 16 1.75v7.5A1.75 1.75 0 0 1 14.25 11h-7.5A1.75 1.75 0 0 1 5 9.25Zm1.75-.25a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-7.5a.25.25 0 0 0-.25-.25Z"></path></svg><svg version="1.1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16" class="done-icon"><path d="M13.78 4.22a.75.75 0 0 1 0 1.06l-7.25 7.25a.75.75 0 0 1-1.06 0L2.22 9.28a.751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018L6 10.94l6.72-6.72a.75.75 0 0 1 1.06 0Z"></path></svg></button></code></pre>
<p><strong>注意</strong>！ 这里pacman用的是<code>Arch Linux</code>系的软件包管理器，一定根据自身情况修改命令，不要无脑复制粘贴</p>
</section><section class="heading" data-heading-rank="3" aria-labelledby="432-方法二"><h3 id="432-方法二"><a href="#432-方法二">4.3.2 方法二</a></h3>
<pre class="astro-code astro-code-themes github-light dark-plus" style="background-color:var(--block-color);--shiki-dark-bg:#1E1E1E;color:#24292e;--shiki-dark:#D4D4D4; overflow-x: auto;" tabindex="0" data-language="bash"><code><span class="line"><span style="color:#6F42C1;--shiki-dark:#DCDCAA">sudo</span><span style="color:#032F62;--shiki-dark:#CE9178"> pacman</span><span style="color:#005CC5;--shiki-dark:#569CD6"> -Syu</span></span><button type="button" data="sudo pacman -Syu" class="code-copy-button" aria-hidden="" onclick="navigator.clipboard.writeText(this.attributes.data.value);this.classList.add(&#x22;code-copied&#x22;);window.setTimeout(() => this.classList.remove(&#x22;code-copied&#x22;), 1500)"><svg version="1.1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16" class="copy-icon"><path d="M0 6.75C0 5.784.784 5 1.75 5h1.5a.75.75 0 0 1 0 1.5h-1.5a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-1.5a.75.75 0 0 1 1.5 0v1.5A1.75 1.75 0 0 1 9.25 16h-7.5A1.75 1.75 0 0 1 0 14.25Z"></path><path d="M5 1.75C5 .784 5.784 0 6.75 0h7.5C15.216 0 16 .784 16 1.75v7.5A1.75 1.75 0 0 1 14.25 11h-7.5A1.75 1.75 0 0 1 5 9.25Zm1.75-.25a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-7.5a.25.25 0 0 0-.25-.25Z"></path></svg><svg version="1.1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16" class="done-icon"><path d="M13.78 4.22a.75.75 0 0 1 0 1.06l-7.25 7.25a.75.75 0 0 1-1.06 0L2.22 9.28a.751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018L6 10.94l6.72-6.72a.75.75 0 0 1 1.06 0Z"></path></svg></button></code></pre>
<p>这行代码是全部更新<code>Arch Linux</code> 的软件。如果 <strong>长期未更新不建议运行该命令，否则卡死后果自负！</strong></p></section></section>]]></content>
        <category term="Linux"/>
        <category term="Software"/>
    </entry>
</feed>