william

Keep Calm and Markdown.

莫名其妙的 Select to paste 按键

这两天在使用 hhkb 键盘,并通过配置 xremap 进行键位映射,以更加舒服的姿势写代码。由于在 hhkb 键盘中,CtrlShift 都处于左手小拇指的位置,这导致我在输入 shift+; 的时候,有可能此时的小拇指还停留在 Ctrl 键,进而触发来 Ctrl+;。然后诡异的是,这时候会跳出一个列表,显示 Select to paste,上面保留了系统粘贴板的信息。其实,这个是为了快速的输入最近的粘贴缓存,但是在这个情况下,我误触发键盘,极容易导致不停的跳出列表,非常影响效率。

fcitx menu
fcitx menu

glibc shm_open 一个坑

周末的时候,我们组对一台 CentOS7 的机器进行了升级,原因是需要部分软件要求至少是 glibc2.18 及以上版本。整个升级流程还算顺利,程序也都能正常运行

1
2
3
4
5
6
$ locate libc.so
/usr/lib64/libc.so
/usr/lib64/libc.so.6

$ strings /lib64/libc.so.6  |grep GLIBC    |grep 2.28
GLIBC_2.28

但是周一交易盘前,我们发现一个奇怪的现象:shm 相关的操作,对于 /dev/shm 根目录下面的共享内存操作是正常的,但是对于带有子目录,如 /dev/shm/spdm/spdx_param,会出现程序崩溃。然后我把这个现象跟领导沟通了一下,由他编译一个 debug 版本,进入 gdb 调试看看。

他确实发现,一旦遇到带有目录路径的 shm_open 就会出问题,返回的 fd-1,这说明操作系统无法打开文件句柄。他经过一番 ChatGPT 之后,给出的结论是

今天发现了一个情况,在某一台服务器上不能通过shmv命令来访问或者创建带字目录的共享内存文件,比如/dev/shm/abc/xyz,根源上是shm_open不接受"abc/xyz"作为参数,查了相关文档,发现这台机器虽然centos 版本不一样,但是对比发现比这个版本更老或者更新的其他版本是支持abc/xyz这样的共享内存文件名的,现在怀疑是glibc版本导致的,因为这台机器的glic版本相对高一些(2.28),我们其他服务器绝大多数都是2.17,目前没有定位具体glic哪个版本什么样的改动导致了这个,但是POSIX规范确实要求传给shm_open的文件名除了第一个字符以为不能为/

当时全组震惊,这意味着我们的技术将被「锁死」在 glibc2.18,无法再继续升级;这也意味着后面有新的程序需要依赖 glibc 更高本版(比如 npmneovim)将无法使用。

nvim kanagawa theme

kanagawa 一款柔和色调的主题,相比 tokyo.night 没有那么的刺眼。主要特别注意的是,这款插件采用了 jit 编译技术,一旦修改配置,还需要执行 KanagawaCompile 才能生效。

nvim with lower glibc version

I’m writting code on a rather outdated Linux CentoOS7, with glibc of version up to ‘2.18’. And for a meanwhile, there is no hope to upgrade it, since we’ve deployed quite a lot of services, meaning updating may cause some unanticipated crashes.

I’ve also learned that starting from v0.10.0, neovim would support buildin inlay, which definitely enhance our code reading. It’s gonna to be the main reason I need to upgrade nvim. The sad part of this story is that, the official release of nvim require at lease glibc of version 2.29.

However, there is on repo provide unsupported release version of nvim for some legacy systems. And it only require glibc of version 2.17. What a great job!

In case anyone would need this

nvim with lower glibc https://github.com/neovim/neovim-releases

Now I’m happy with it.

nvim bufferline 设置过滤条件

今天在写代码的时候,遇到一个有趣的事情:有时候我们只打开一个文件,但是 bufferline 也会显示该文件相关的操作。

0%