24年2月左右把用了十来年的Mac Book Air 2013以旧换新换了个联想的ThinkBook14+ 2024 U7版(认证型号:ThinkBook 14 G6+ IMH),用了一段时间,感觉除了做工略显粗糙(屏幕转轴不对称、C面键盘不平等等)外,功能性能方面还挺不错。由于平时主要用家里台式机,所以这个本大部分时间处于待机状态,可是,最近发现这个本关机状态电池电量掉的有点快,平均一天会掉1%-3%,网上搜索了下,发现很多笔记本用户都有报告类似问题的,比如:https://learn.microsoft.com/zh-cn/answers/questions/5562378/win11,https://tieba.baidu.com/p/7795883672,等等还有很多…可以看到,这些笔记本电脑,关机后电池持续好点,并且Win11系统中的电池使用情况记录中能看到关机时间段的屏幕打开时间基本是24小时!
Continue reading…GitLab内置CI runner初始化submodule子模块报错问题的一种原因
先说下背景,一个gitlab的代码项目,其中以submodule方式引用了同gitlab实例里其他group内的项目,.gitmodules文件内容类似这样:
[submodule "lib1"]
path = lib1
url = http://gitlab.xxx.xxx/group1/lib1.git
[submodule "lib2"]
path = lib2
url = http://gitlab.xxx.xxx/group2/lib2.git
[submodule "lib3"]
path = lib3
url = http://gitlab.xxx.xxx/group3/lib3.git
这个结构在本地开发时子模块管理操作没有任何问题,当然本地的gitlab账号是有依赖的几个子模块代码仓库访问权限的。而在搭建项目CI构建环境时,linux系统使用的是gitlab的docker runner方式,没有任何问题,而在mac系统却遇到了无法初始化submodule的错误问题(使用的是shell runner方式):
Continue reading…麒麟V10 SP1系统VSCode远程调试(Server)报错问题
最近在尝试国产Linux操作系统麒麟V10(SP1),由于主力敲代码机器还是Windows,所以需要搭建一个远程编译、调试的开发环境,毫无疑问,Visual Studio Code是一个很好的选择,之前也挺轻松的搭建过配合CentOS、Ubuntu系统的远程编译调试环境,不过这次搭麒麟系统却踩了个坑:
Failed to set up socket for dynamic port forward to remote port
VSCode在setup remote时,下载安装server都没问题,但是后面就会报上面的错。网上搜索了下,发现是sshd服务没有开启AllowTcpForwarding导致的,于是:
sudo vi /etc/ssh/sshd_config
找到AllowTcpForwarding,将参数值调整为yes,当然如果是注释状态还要取消注释,然后重启sshd服务:
sudo systemctl restart ssh
重启后,再次尝试,结果报错依旧。研究了一番后发现这个问题在网上并不罕见,但大部分都围绕的是上面提到的这个配置项。不知道是不是麒麟系统的ssh服务默认配置与其他常见发行版不同,最终发现这个问题出在sshd_config中的PermitOpen这个配置,将它设置为any,重启服务后问题解决!
3年多的樱桃Cherry MX2.0S RGB键盘灯效故障修复记录
博主的这把樱桃键盘是22年4月京东Cherry搞秒杀活动时抢到的一个红轴RGB键盘,一直放在公司使用至今。在这个国产机械键盘狂卷的时代,MX2.0S感觉除了“樱桃Cherry”之名外,也没有什么特别之处了,不过,我用了这么多年感觉还是挺不错的,尤其喜欢的是这个键盘的配列,右上角的几个快捷键,计算器,媒体播放,上一曲下一曲非常的实用,相对的家里的杜伽K310 RGB的配列就没这么方便了(杜伽是先于樱桃买的)。

然而,最近偶然发现键盘的PAUSE、PAGE UP、C这三个键的背光灯一直亮着红色,一开始以为是误操作了什么灯效配置,于是又是装驱动(没错,这么多年我一直没装Cherry的驱动),又是FN+PAUSE重置的,搞来搞去还是没能恢复,于是我意识到可能是硬件故障了(下面这张拍的时候抖了下模糊了,勉强可以看到常红的三键😂)!

趁着10.1放假时间,把键盘带回家中拆开研究了一番(顺带做了下卫生,这个ABS的键帽3年多下来常用的几个键已经打油了,而且内部也布满了这些年留存下来的“宝藏”😂)。
Continue reading…FFmpeg原生脚本构建windows debug版的调试跟踪问题
这次要记录的感觉是个比较硬核的问题,限于标题字数限制,没法准确表达出所有问题,比如,调试断点单步跟踪FFmpeg代码时,代码不按顺序执行,满处乱飞,断点位置查看周围局部变量,不能正常显示值,比如这样:

局部变量offset无法显示当前值,而是显示“Variable is optimized away and not available.”的信息,看字面意思可以猜到,代码被编译器做了优化了,比如直接内联省去中间变量,所以看不到了。
但是,FFmpeg的构建configure参数确实设置了
–disable-optimizations –enable-debug –disable-stripping
这些官方说明的构建debug版的参数,怎么实际调试的时候还是会出现上面描述的种种看起来是代码被优化了造成的调试跟踪障碍呢?
Continue reading…Altium Designer 24的PCB DRC阻焊桥Solder Mask Sliver约束检测浮点数精度问题
最近在学习AD24的过程中,发现一个问题:

如截图所示,AD的DRC检查,报告了一个“[Minimum Solder Mask Sliver Constraint Violation] IP2369_EVM.PcbDoc Advanced PCB Minimum Solder Mask Sliver Constraint: (0.0998mm (3.929mil) < 0.1mm (3.937mil)) Between Pad U1-21(52.014mm,25.561mm) on Top Layer And Pad U1-22(52.014mm,25.961mm) on Top Layer [Top Solder] Mask Sliver [0.1mm]”的错误。
排查了一番,又手工计算了一下焊盘大小、阻焊扩展大小以及焊盘间距:
Continue reading…OneDrive个人在电脑中出现重复快捷图标的问题

不知什么时候开始(严重怀疑是某次Windows 11更新后),OneDrive在“此电脑”中突然出现了两个一摸一样的快捷链接图标,虽然我基本也不怎么用MS的这个网盘吧,但每次打开我的电脑都看到这么个神奇的存在,着实有点碍眼,于是决定“处理”一下这个问题。
Continue reading…PHP7.4升级8.3后wordpress博客遇到的问题
博主的wordpress一直都跟随官方推送的更新,一般只要提示了就会点更新,这么多年也从来没有出现更挂了的情况,但是最近更新后,管理后台赫然弹出了PHP7.4已过期的,最低满足要求版本为PHP8.3的警告提示,于是强迫症发作,升级了一波,果然升级后访问页面直接出现了PHP崩溃的情况,特此记录下一些处理方法。
首先,既然官方提示了升级警告,那自然表明wordpress本身代码是都可以兼容8.3版本的PHP的,问题基本都出在各种常年没人维护的插件上,首先第一个:
[Fri Jul 11 16:20:57.973316 2025] [proxy_fcgi:error] [pid 19955:tid 20046] [client 85.208.96.204:23228] AH01071: Got error 'PHP message: PHP Fatal error: Uncaught Error: Call to undefined function create_function() in /var/www/vhosts/blog.k-res.net/wp-content/plugins/custom-iframe-widget/custom-iframe-widget.php:189\nStack trace:\n#0 /var/www/vhosts/blog.k-res.net/wp-settings.php(545): include_once()\n#1 /var/www/vhosts/blog.k-res.net/wp-config.php(73): require_once('...')\n#2 /var/www/vhosts/blog.k-res.net/wp-load.php(50): require_once('...')\n#3 /var/www/vhosts/blog.k-res.net/wp-blog-header.php(13): require_once('...')\n#4 /var/www/vhosts/blog.k-res.net/index.php(17): require('...')\n#5 {main}\n thrown in /var/www/vhosts/blog.k-res.net/wp-content/plugins/custom-iframe-widget/custom-iframe-widget.php on line 189'
[Fri Jul 11 16:21:22.922529 2025] [proxy_fcgi:error] [pid 19956:tid 20045] [client 66.249.68.38:61524] AH01071: Got error 'PHP message: PHP Fatal error: Uncaught Error: Call to undefined function create_function() in /var/www/vhosts/blog.k-res.net/wp-content/plugins/custom-iframe-widget/custom-iframe-widget.php:189\nStack trace:\n#0 /var/www/vhosts/blog.k-res.net/wp-settings.php(545): include_once()\n#1 /var/www/vhosts/blog.k-res.net/wp-config.php(73): require_once('...')\n#2 /var/www/vhosts/blog.k-res.net/wp-load.php(50): require_once('...')\n#3 /var/www/vhosts/blog.k-res.net/wp-blog-header.php(13): require_once('...')\n#4 /var/www/vhosts/blog.k-res.net/index.php(17): require('...')\n#5 {main}\n thrown in /var/www/vhosts/blog.k-res.net/wp-content/plugins/custom-iframe-widget/custom-iframe-widget.php on line 189'
[Fri Jul 11 16:21:52.750113 2025] [proxy_fcgi:error] [pid 19955:tid 20013] [client 49.232.55.15:43176] AH01071: Got error 'PHP message: PHP Fatal error: Uncaught Error: Call to undefined function create_function() in /var/www/vhosts/blog.k-res.net/wp-content/plugins/custom-iframe-widget/custom-iframe-widget.php:189\nStack trace:\n#0 /var/www/vhosts/blog.k-res.net/wp-settings.php(545): include_once()\n#1 /var/www/vhosts/blog.k-res.net/wp-config.php(73): require_once('...')\n#2 /var/www/vhosts/blog.k-res.net/wp-load.php(50): require_once('...')\n#3 /var/www/vhosts/blog.k-res.net/wp-blog-header.php(13): require_once('...')\n#4 /var/www/vhosts/blog.k-res.net/index.php(17): require('...')\n#5 {main}\n thrown in /var/www/vhosts/blog.k-res.net/wp-content/plugins/custom-iframe-widget/custom-iframe-widget.php on line 189'
[Fri Jul 11 16:21:52.750983 2025] [proxy_fcgi:error] [pid 19956:tid 20010] [client 49.232.55.15:43192] AH01071: Got error 'PHP message: PHP Fatal error: Uncaught Error: Call to undefined function create_function() in /var/www/vhosts/blog.k-res.net/wp-content/plugins/custom-iframe-widget/custom-iframe-widget.php:189\nStack trace:\n#0 /var/www/vhosts/blog.k-res.net/wp-settings.php(545): include_once()\n#1 /var/www/vhosts/blog.k-res.net/wp-config.php(73): require_once('...')\n#2 /var/www/vhosts/blog.k-res.net/wp-load.php(50): require_once('...')\n#3 /var/www/vhosts/blog.k-res.net/wp-blog-header.php(13): require_once('...')\n#4 /var/www/vhosts/blog.k-res.net/index.php(17): require('...')\n#5 {main}\n thrown in /var/www/vhosts/blog.k-res.net/wp-content/plugins/custom-iframe-widget/custom-iframe-widget.php on line 189'
简单看了下调用栈,发现果然是某个“古早”插件:“custom-iframe-widget”的问题,查了下报错异常“Call to undefined function create_function()”,就是8.3中废弃的函数,要换成匿名函数实现,于是小改了一下:
181 function custom_parse_iframe_widget($text)
182 {
183 return preg_replace_callback("@(?:<p>\s*)?\[ShaktiIFrame\s*(.*?)\](?:\s*</p>)?@", 'shakti_iframe_replace', $text);
184 }
185
186 add_filter('the_content', 'custom_parse_iframe_widget');
187 add_filter('the_excerpt', 'custom_parse_iframe_widget');
188 $new_func = function() {register_widget("Custom_IFrame_Widget");};
189 //add_action( 'widgets_init', create_function( '', 'register_widget("Custom_IFrame_Widget");' ) );
190 add_action( 'widgets_init', $new_func );
191 ?>
结果,又报了新的错误:
Continue reading…记录下最近更换泰坦军团P275MV PLUS显示器后的G-SYNC,Win11 DRR,DSC折腾情况

最近趁着国补+以旧换新优惠,更新了下显示器,换掉了用了8年的傻多戴U2518DR(现在看当年真的是傻多了,2500的价格,只为一个2k,没有高刷,所谓的HDR还是个假的) ,改投了国产泰坦军团的高性价比型号P275MV PLUS。4K 160HZ,1080 320HZ双模切换,Mini LED 1152分区HDR1000,还带TYPE-C PD 65W快充和USB集线器,光感自动亮度,内置音箱等功能,可以看到这8年显示器技术有了多大的提升,可以说是鸟枪换了炮。其实这款型号当初刚上的时候就关注到了,那时本来想买败家之眼XG27UCG,但刚需PD快充一直没下手,同时泰坦这款上市后价位和UCG差不多,对于国产品牌来说感觉还是有点贵。但这不最近国补一上,性价比就出来了,以旧换新出了Dell后也就1000出头,没啥好说的,果断换了!
这次记录的是换后折腾高刷,Windows 11 DRR(动态刷新率),DSC(Display Stream Compression),G-Sync(VRR,对应到这款显示器的是Adaptive Sync技术)的一些总结:
Continue reading…

