枝语风笺
type: channel
link: https://blog.chario.cn/
description: 分享技术、记录生活
items: Typecho优化
items: Handsome主题美化：10.1.0最新版
items: 执梦相赠，星火长明
items: 手持两把锟斤拷 口中疾呼烫烫烫 脚踏千朵屯屯屯 笑看万物锘锘锘
items: 你自己才是这世界上的主角
items: 想离职了
items: 子比主题V8.6开心修复版
items: 1Panel 面板安装 PHP XLoader 扩展踩坑实录
items: 1Panel部署Halo容器反复重启问题解决
items: 《杀死那个石家庄人》

Typecho优化
type: item
date: 2026-05-30T18:12:00+08:00
description: 开启Gzip加速找到Typecho安装目录中的config.inc.php文件，添加下方代码即可/* 开启gzip压缩 */ ob_start('ob_gzhandler');nginx 没有 gzip 的站长，要记得 在 nginx 里面也开启gzip 压缩

Handsome主题美化：10.1.0最新版
type: item
date: 2026-05-30T13:52:00+08:00
description: 前言你是否曾在深夜翻遍搜索引擎，只为拼凑出一个理想中的博客界面？是否在尝试美化「Handsome」主题时，被零散的教程、失效的代码和版本兼容问题反复劝退？作为一款备受开发者青睐的博客主题，「Handsome」的灵活性既是魅力也是门槛。网络上关于它的美化教程如繁星散落：GitHub的代码片段沉睡在仓库角落，技术论坛的精华帖沉没在历史回复中，个人博主的创意分享甚至随着域名过期而消失。这些碎片化的知识，让追求个性化的用户不得不耗费大量时间“寻宝”——而当你终于集齐碎片时，可能发现拼图早已过时。这便是本文诞生的初衷：我们试图做一场「系统化的收纳」。—— 不是简单的资源搬运，而是以「持续生长」的姿态，将散落的技巧梳理为可复用的模块，将晦涩的代码封装成即插即用的解决方案，同时建立版本迭代的追踪机制。无论你是刚接触「Handsome」的新手，还是想突破现有界面瓶颈的进阶用户，都能在这里找到可执行的路径。说明自定义CSS：该修改项位于Handsome主题后台-外观-设置外观-开发者设置-自定义CSS自定义JS：该修改项位于Handsome主题后台-外观-设置外观-开发者设置-自定义 JavaScript主题标题居中打开后台-更改外观-设置外观-开发者设置-复制代码粘贴至自定义CSS即可效果见本站文章/*主题标题居中*/ header.bg-light.lter.wrapper-md { text-align: center; }handsome 原生入站提示打开后台-更改外观-设置外观-开发者设置-复制代码粘贴至自定义输出body尾部代码即可 评论一键赞、踩、打卡打开后台-更改外观-设置外观-开发者设置-复制代码粘贴至自定义JavaScript即可 window.SIMPALED = {}; // 创建全局对象 SIMPALED，用于存放编辑器功能 // 定义一个函数 a，用于在文本框中插入文字 function a(a, b, c) { if (document.selection) { a.focus(); sel = document.selection.createRange(); c ? (sel.text = b + sel.text + c) : (sel.text = b); a.focus(); } else if (a.selectionStart || "0" == a.selectionStart) { var l = a.selectionStart; var m = a.selectionEnd; var n = m; c ? (a.value = a.value.substring(0, l) + b + a.value.substring(l, m) + c + a.value.substring(m, a.value.length)) : (a.value = a.value.substring(0, l) + b + a.value.substring(m, a.value.length)); c ? (n += b.length + c.length) : (n += b.length - m + l); l == m && c && (n -= c.length); a.focus(); a.selectionStart = n; a.selectionEnd = n; } else { a.value += b + c; a.focus(); } } window.SIMPALED.Editor = { daka: function() { var b = new Date().toLocaleTimeString(); var c = document.getElementById("comment") || 0; a(c, "滴！学生卡！打卡时间：" + b, "，请上车的乘客系好安全带~"); // 将光标移到文本最后 if (c.setSelectionRange) { var len = c.value.length; c.setSelectionRange(len, len); c.focus(); } else if (c.createTextRange) { var range = c.createTextRange(); range.collapse(false); range.select(); c.focus(); } }, zan: function() { var c = document.getElementById("comment") || 0; var yuluResponses = [ " 这篇文章展现了作者深邃的思想和独特的观点，令人赞叹不已。 ", " 文章中的…

执梦相赠，星火长明
type: item
date: 2026-05-21T08:57:00+08:00
description: 昨夜闲潭梦落花，张若虚梦见了时光的流转；我欲因之梦吴越，李白梦见了精神的自由；铁马冰河入梦来，陆游梦见了家国的担当。三重梦境，三种人生，却共同指向一个命题：梦是个体灵魂最诚实的独白。倘若有一天，我们能够将梦赠予他人，那便不再是简单的夜晚幻象的转移，而是精神火种的传递、文明基因的接续。在我看来，赠梦的本质，是以一己之心灯，点燃他人之路；而唯有以行动为薪柴，这盏灯才能长明不灭。梦之所以珍贵，在于其不可伪饰的真实性。白昼里，我们受制于社会角色与世俗规范，言不由衷、行不随心，而梦是潜意识卸下铠甲后的裸呈。张若虚的落花里有对宇宙苍茫的哲思，李白的吴越山水间藏着对权贵的轻蔑，陆游的冰河铁马中裹着至死未熄的赤诚。这些梦境是心灵的指纹，独一无二，无法复制。因此，赠梦绝非克隆一个相同的夜晚，而是将那份最本真的生命体验敞开，让他人在共鸣中照见自身。正如庄周梦蝶，分不清物我；当两个灵魂因同一梦境而震颤，我与你的边界便悄然消融，人类最深刻的孤独终得慰藉。然而，赠梦从来不是虚无缥缈的呓语，它承载着文明最坚韧的传递链条。屈原将美政之梦赠予楚地百姓，虽九死而未悔；范仲淹将先天下之忧而忧的梦赠予后世士人，铸就了千年的精神脊梁；袁隆平在稻田里做禾下乘凉的梦，又将这梦赠予饥饿中的人们，用一粒种子改变世界。这些赠梦者，何尝拥有超自然的能力？他们不过是将心中的愿景化作行动，以毕生实践为梦境铺路。由此可见，赠梦的最高境界，不是把梦塞给别人，而是让别人在自己的行动中看见梦的模样。没有行动的赠梦，只是空中楼阁；唯有躬身入局，梦境才能从枕席间走出，成为可触可感的现实。当然，赠梦亦需边界与尊重。每个人的生命境遇不同，对梦的解读自有差异。强加于人的梦，不是馈赠，而是精神的殖民。真正的赠梦，应当如杜甫赠李白之诗，冠盖满京华，斯人独憔悴，他不曾要求李白放弃天姥山的云霞，只是以深切的理解让那份孤高有了回响。换言之，赠梦是提供一种可能，而非规定一种答案；是点燃一簇火焰，而非划定一条跑道。接受者可以在他人的梦境中汲取力量，却终须走出属于自己的夜路。站在时代的渡口上，我们这一代人既是梦的受赠者，也是梦的传承人。我们接过先辈铁马冰河的家国之梦，也接过落花闲潭的诗意之梦；我们被袁隆平的稻穗滋养，也被航天人的星辰照耀。而今，轮到我们将自己的梦赠予他人，或许是乡村振兴中的一滴汗水，或许是实验室里的一次彻夜不眠，或许只是对身边困境者的一份真诚守望。这些行动，正是我们把梦赠予世界的方式。愿我们都能成为执梦相赠之人。不必等某一天的超自然奇迹，从此刻开始，以行动为舟，以真诚为桨，将那些关于美好、关于正义、关于未来的梦境，渡向更辽阔的彼岸。须知，当无数盏心灯因赠梦而连成星海，长明的星火，便足以照见山河万代。2025 年全国高考二卷作文阅读下面的材料，根据要求写作。（60分） “昨夜闲潭梦落花”“我欲因之梦吴越”“铁马冰河入梦来”……梦往往以一种独特的方式呈现我们的感受和期冀，为我们打开更浩瀚的天空。我们也常常向别人讲述自己的梦，用文字记录自己的梦，以行动实现自己的梦。 如果有一天，我们能够将梦赠予他人…… 以上材料引发了你怎样的联想和思考？请写一篇文章。 要求：选准角度，确定立意，明确文体，自拟标题；不要套作，不得抄袭；不得泄露个人信息；不少于800字。

手持两把锟斤拷 口中疾呼烫烫烫 脚踏千朵屯屯屯 笑看万物锘锘锘
type: item
date: 2026-05-20T22:08:00+08:00
description: 最近突然想起在学校学 c 的时候，某次课后作业的输出结果出现了一串烫烫烫🥲网上一搜发现这居然还有个顺口溜，好像也是编程中都会遇到的问题。聊聊原理锟[kūn]斤拷，http://baike.baidu.com/link?url=GCoDM7HBIV_JcJfXzIU9p1Rx7r8Ns2w6jVoZwnhn9ZizxhNG7egrUWojSETDzxb74uZFeVGIBK_qZYgNTo7So_)这一句在百度百科中可以查到，主要是因为在unicode编码转成GBK是出错的，因为并不是所有的字都能够用unicode表示，因此就会导致一些unicode无法比较的字默认填充一些字符，而unicode一般填充的是 \xef\xbf\xbd（UTF-8），而反复填充这些字符，就类似于这种形式：\xef\xbf\xbd\xef\xbf\xbd，而当使用GBK进行解析的时候，按照汉字占两个字节的规则，0xEFBF就对应“锟”， 0xBDEF对应“斤”，0xBFBD对应“拷”，所以就出现了这乱码了。烫烫烫 和 屯屯屯其实是一个原理，是我们在使用VC中文版的时候经常出现的问题，主要原因是我们使用了没有赋初值的局部变量，而VC中会对没有赋初值的部分自动填充一些初始字符， 一般填充 0xCC，两个连起来两个字节对应的就是“烫”，有些填充的是0xCD，相应的就是“屯”。锘锘锘 则是网页的乱码，也是编码问题，utf-8 与 GBK/gb2312

你自己才是这世界上的主角
type: item
date: 2026-05-17T22:07:00+08:00
description: 人活着就是为了玩为了爽从来不是为了得个奖上学、工作、运动交友、恋爱、结婚都是为了让人生变得更好玩如果哪天某段生活或者某种关系让你觉得不好玩甚至感到痛苦咱就直接跑路做到只看过程不重结果你才能玩的尽兴别把生活想那么累这世界上本质来讲的话是你一个人的世界你睁开眼这世界就在你闭上眼这世界就没了不要去纠结去焦虑难过就任它难过煎熬就任它煎熬就像你以前觉得天大的事回头一看不啥也不是吗所以一定要记住你自己才是这世界上的主角人生这场死亡率100%的游戏根本就没什么好怕的大胆去玩吧[vplayer url="https://blog.chario.cn/usr/uploads/2026/05/4032759384.mp4" pic="" /]

想离职了
type: item
date: 2026-05-17T22:00:00+08:00
description: 最近在东软实习，vmware技术支持。很多东西都没学过，也学不太会。毕竟企业不会像学校一样，给充足的时间让我学习东西。而我本身又是个要强的人，前两个月的学习时间就有点上火。最近结束培训开始正式干活了，我更清楚的感觉到 这份工作不适合我，或者说我做不了这份工作。技术支持是接工单的，工单不一定什么时候派发给你，那头的客户也不一定什么时候回复，你也不敢保证客户能遇到什么样的问题、工单什么时候结束……总之，这个工作完全没有规律和条理清，我恰好是个很有计划的人，我完全接受不了这种不确定的感觉，这会让我非常焦虑(¯ω¯)彡✎虽然说，到目前为止，没有人难为我，领导也没训过我，但是出于对自己控制不住的苛刻，我在这里待的非常难受。最近一周可以说是度日如年，非常想离职。但是现在离职了换个地方又要压一个月工资，我又是一个不喜欢换环境的人还有一个多月才能领毕业证，再坚持一个多月吧，一样能坚持住。每天想办法哄自己开心吧。实在不行就 6 月 15 日发工资之后离职，让自己休息两周，等着领毕业证

子比主题V8.6开心修复版
type: item
date: 2026-05-04T20:19:00+08:00
description: 简介子比主题8.6开心版修复版本，非网上泛滥的版本。图片展示

1Panel 面板安装 PHP XLoader 扩展踩坑实录
type: item
date: 2026-05-02T19:52:00+08:00
description: 最近把服务器上的站点从宝塔面板迁移到了1Panel 面板，原本运行正常的 API 站点直接报错，核心原因就是依赖的XLoader 扩展装不上，折腾了快一小时才搞定，特意记录下踩坑和解决过程，给同样迁移的朋友避坑。过程我的站点核心依赖 PHP 的 XLoader 扩展，宝塔面板里一键安装 XLoader 毫无压力，迁移到 1Panel 后，PHP 环境正常，但站点直接提示XLoader extension not loaded，第一步自然是去 1Panel 后台装扩展。1Panel 的 PHP 管理界面自带 XLoader 扩展选项，本以为一键安装就能解决，结果点了安装后：面板显示安装成功刷新 PHP 信息，XLoader 扩展压根没加载站点依旧报错，纯纯的无效安装这时候就放弃了面板一键安装，打算手动编译 / 上传 XLoader 文件安装，这也是第二个坑的开始。宝塔里手动装扩展的习惯是：下载对应 PHP 版本的 XLoader.so 文件上传到 PHP 扩展目录在 php.ini 里写绝对路径加载扩展我照着这个思路操作：下载了 PHP8.2 对应的 XLoader.so上传到目录：/opt/1panel/runtime/php/PHP82/extensions/no-debug-non-zts-20220829/在 php.ini 里添加配置：extension = /opt/1panel/runtime/php/PHP82/extensions/no-debug-non-zts-20220829/XLoader.so重载 PHP 配置后，直接报错：找不到该扩展文件 / 目录，反复检查路径、权限都没问题，就是加载失败。冷静下来想了想，宝塔是原生环境，1Panel 是容器化部署，这就是核心区别。容器化的 PHP，根本识别不了宿主机的绝对路径，它只会读取容器内的扩展默认目录。于是我打开 php.ini，翻了翻面板已经安装好的其他扩展（apcu、redis、memcached 等），写法全是这样：extension="apcu.so"extension="memcached.so"extension="redis.so"extension="imagick.so"extension="igbinary.so"没有任何绝对路径，只写扩展文件名 + 引号。照着其他扩展的格式，我把之前的绝对路径配置删掉，替换成一行：extension="XLoader.so"保存 php.ini，重载 PHP 配置，再刷新 PHP 信息，XLoader 扩展直接加载成功！站点瞬间恢复正常。总结放弃绝对路径：1Panel 的 PHP 是容器化环境，不要写宿主机的物理路径，容器识别不到标准写法：直接用 extension="扩展名.so"，和面板自带扩展保持一致文件位置：XLoader.so 必须上传到 PHP 的默认扩展目录（面板一键安装其他扩展的同级目录）避坑关键：从宝塔迁移过来，千万别用原生面板的操作习惯，容器化是最大的区别如果大家也遇到 1Panel 安装 XLoader / 其他自定义 PHP 扩展失败，优先检查配置写法，别再踩容器化路径的坑了！

1Panel部署Halo容器反复重启问题解决
type: item
date: 2026-05-02T12:11:00+08:00
description: 前言昨天打算把博客服务从宝塔面板迁移到 1Panel，想着用 1Penal 部署 Halo 2 能省心不少，结果刚启动就遭遇了噩梦：容器启动几秒就崩溃，反复重启。一开始以为是环境变量写错、权限不足、网络不通，甚至怀疑是服务器系统镜像有问题，硬生生重装了五六次系统。折腾了大半天，最后还是看了一眼日志，才发现问题的根源居然 Halo 的新版本强制使用SSL/TSL连接MySQL！问题现象1Panel 应用商店安装 MySQL 5.7，默认配置启动。商店安装Halo 2.24.2 ，并填写外部访问地址。安装完毕启动后，Halo 容器反复重启，日志一直在产生日志，我随便截取了一段anel-halo-1GwU | 20:09:35,786 |-WARN in c.q.l.core.rolling.SizeAndTimeBasedRollingPolicy@1099855928 - 'maxHistory' is not set, ignoring 'totalSizeCap' option with value [1 GB]1Panel-halo-1GwU |1Panel-halo-1GwU | __1Panel-halo-1GwU | / / / /___ / /__1Panel-halo-1GwU | / /_/ / `/ / 1Panel-halo-1GwU | / __ / /_/ / / /_/ /1Panel-halo-1GwU | /_/ /_/\__,_/_/\____/1Panel-halo-1GwU |1Panel-halo-1GwU | Version: 2.24.21Panel-halo-1GwU | 2026-05-01T20:09:35.848+08:00 INFO 1 --- [ main] run.halo.app.Application : Starting Application v2.24.2 using Java 21.0.10 with PID 1 (/application/application.jar started by root in /application)1Panel-halo-1GwU | 2026-05-01T20:09:35.851+08:00 INFO 1 --- [ main] run.halo.app.Application : No active profile set, falling back to 1 default profile: "default"1Panel-halo-1GwU | 2026-05-01T20:09:37.411+08:00 INFO 1 --- [ main] .s.d.r.c.RepositoryConfigurationDelegate : Multiple Spring Data modules found, entering strict repository configuration mode1Panel-halo-1GwU | 2026-05-01T20:09:37.412+08:00 INFO 1 --- [ main] .s.d.r.c.RepositoryConfigurationDelegate : Bootstrapping Spring Data R2DBC repositories in DEFAULT mode.1Panel-halo-1GwU | 2026-05-01T20:09:37.683+08:00 INFO 1 --- [ main] .s.d.r.c.RepositoryConfigurationDelegate : Finished Spring Data repository scanning in 259 ms. Found 37 R2DBC repository interfaces.1Panel-halo-1GwU | 2026-05-01T20:09:37.710+08:00 INFO 1 --- [ main] .s.d.r.c.RepositoryConfigurationDelegate : Multiple Spring Data modules found, entering strict repository configuration mode1Panel-halo-1GwU | 2026-05-01T20:09:37.711+08:00 INFO 1 --- [ main] .s.d.r.c.RepositoryConfigurationDelegate : Bootstrapping Spring Data Redis repositories in DEFAUL…

《杀死那个石家庄人》
type: item
date: 2026-05-02T11:42:00+08:00
description: 万能青年旅店的这首作品，从不是一句躁动的摇滚呐喊，而是华北平原工业时代落幕时，写给普通人的时代挽歌。克制的编曲、荒凉的叙事、悲壮的小号，把一代人被时代裹挟的麻木、挣扎与破碎，揉进了每一段旋律与字句里。歌曲以九十年代北方国企改制、下岗潮为底色，以石家庄这座老牌工业城为载体，勾勒出三代人的精神困境。傍晚六点下班、换掉药厂工装，妻子熬粥、小酌几瓶啤酒，三十年按部就班的安稳，构筑起普通人以为永远不会坍塌的生活堡垒。可如此生活三十年，直到大厦崩塌，一句词写尽宿命感：崩塌的从不是建筑，是固有的生活秩序、安稳的人生信仰，是一代人赖以生存的价值体系。“用一张假钞，买一把假枪，保卫她的生活”，是整首歌最刺骨的隐喻。假钞是失效的生活价值，假枪是无力的自我防御，身处时代洪流里的小人物，没有反抗命运的底气，只能用荒诞的方式，守住仅存的平凡日常。夜幕漫过华北平原，忧伤浸透眉眼，中年人的妥协与绝望，藏在烟火人间的琐碎背后，沉默又沉重。视角流转到河北师大附中的乒乓少年，背向人群、困在教室，被困在固化的成长轨迹里。心底藏着一万匹脱缰的马，是未被磨平的理想、渴望挣脱的叛逆，却终究被现实困住脚步。父辈的麻木、母亲的焦虑、少年的压抑，拼凑出一个普通家庭的缩影，也是大时代下无数平凡人的真实写照。编曲是歌曲的灵魂。平缓的吉他铺垫叙事，低沉的人声娓娓道来，而后嘹亮悲壮的小号骤然升起，层层攀升、直抵高潮，像积压多年的情绪轰然爆发，苍凉又磅礴。没有嘶吼式的宣泄，却用克制的旋律，放大了无声的绝望。所谓 “杀死那个石家庄人”，从不是具象的杀戮。杀死的是循规蹈矩的麻木，是被生活驯化的初心，是困在固有轨迹里不敢突围的自己。这首歌早已超越地域与时代，每个在日复一日里消磨理想、在现实浮沉中身不由己的人，都能听懂这份孤独与悲悯。它是华语摇滚的诗意巅峰，是镌刻时代记忆的音乐档案，温柔剖开生活的荒芜，也共情着每一个平凡灵魂的身不由己。