2024年9月13日星期五

末匠 P136 钛合金

继续钛中毒。



活塞上墨 35 号尖。笔舌开槽很深,所以比较软,应该适配软尖。原厂双色尖是略带软弹的质感,写感还可以,不过还是换上了金豪的心跳尖,也就是 9016/1935 用的尖。金豪的心跳尖相比于常规尖出水比较节制,至少我用的几支都是如此,刚好弥补了 P136 笔舌软、出水快的特点。



金豪之前的笔尖品控是比较捉急的,铱粒切 3/7 开、对不齐常常能碰到,最近能感觉到有提升。

2024年8月7日星期三

Shura x2

当初买 Shura 的时候顺便买了俩铝合金上盖,于是乘着 Shura 套件打折又入了一把。

Shura 的 PCB 很有特色,可以自由变换各种布局。比如最下一行可以分裂空格、第二 Fn 键也可以放在左右 Shift 旁、甚至可以用一块附加定位板把 Enter 变为欧版回车。看官方示意图便知:



上一把 Shura 用了常规布局,这一把就用分裂空格好了。非标准的左右 Shift 我用不习惯,就不放第二 Fn 键了。



PCB 背面有标注每个键位的功能,还有白色箭头标注定位板螺丝,确实非常用心。



其它大键用的是 PCB 卫星轴,Enter 这一块有额外的定位板,卫星轴应该是特别定制的。要说 Shinobi 和 Shura 真的有什么明显可以提升的点的话,应该就是卫星轴的质量了。不自己手润的话,大键尤其是空格的钢丝音非常明显,稳定性也离第一梯队有距离。



轴体还是用回了 Boba U4,一来洛可可的声音实在是比较大,二来洛可可的触发是个大问题。Boba U4 装上去测试了一下,没有一个触发有问题的。

装完合照:


2024年7月21日星期日

金豪大道

金豪的钢笔从最开始低质低价走量、样子靠模仿;到后来虽然还是在模仿,但是慢慢变成了鸡尾神器,笔杆的品控和花色都可圈可点,尤其是大小世纪和 82 全系列;而最近金豪的笔尖品控也有比较明显的提升。

大道这款笔用的是 8 号也就是 40 的尖。多年以前一款大尖(貌似是 35 尖)鱼雷,x159 一看就是寨厂出品,从笔杆做工到笔尖都透着一股粗糙的劲,反正 10 米开外看个样子,上手能写,也就这样了。后来出了一款同名的换了 40 的尖,也没用过就是。

大道我买的是略透明的汉白玉色,拿在手上居然有点温润的感觉,笔夹的安装、笔帽一小圈镀金点缀,一下子档次就上来了。


(打个光看一下略微透明的效果,正常看是暖白色)


上墨器容量巨大,堪比笔杆活塞上墨,而且为了牢固是用螺纹固定。不过还是有点不同心,把笔杆旋上去的时候会蹭到上墨器尾部。



(和金豪家常见的上墨器对比)


新的心跳尖意外地好写。阻尼介于施密特 5 号的刮和施密特 6 号的滑之间(施密特 5 号 6 号写感完全不同也是迷),在大部分纸张,包括打印纸、镀膜的出 sheen 纸、字帖、透明临摹纸等阻尼和下水都是适中的水准,不会出现一些尖(尤其是各种长刀)在某些纸上好写,其他纸要么飞白要么水枪。



笔舌的进步也很大,鳍片开得比较深也比较软,而且对于 40 号尖来说贴合度也很不错,至少我在大力书写的时候下水没有控制不住的情况。

2024年7月12日星期五

给 Shinobi 换了 Shura 的二色 ABS 键帽

买 Shura 的时候顺便问了 Justin@Tex 是否可以单独买 Shura 的键帽给 Shinobi 换上,得到了肯定的答复于是就下单了。可能这种需求确实有点小众,买完以后一看 Tex 官网就上架了。不过是分成了几个不同的组合来卖,比如 Mac 增补是一套,容纳小红点的 GHB 以及蓝色回车又是一套。买的时候叮嘱了要带上 Mac 增补,结果收到的时候发现 Thinkpad 标志性的蓝色回车没有,只有黑色的,所以又单独买了一套。总之,折腾了有一阵子才把键帽凑齐。

Shinobi 的激光雕刻填料键帽和 Shura 的二色键帽仔细看区别还是有一些。首先底色不一样,Shinobi 的键帽比较黑而 Shura 键帽是带一些灰,再仔细看白平衡色调还有一点点绿;字体上来说,二色由于工艺所限,笔画会粗一些,所以 Shinobi 最上面两排小键帽是没有办法做二色的,方向键肩部的翻页键在 Shura 上也是留空处理。手感来说,Shura 的键帽甚至有一点点 PBT 的干爽感,而且就我自己使用来讲,相比 Shinobi 键帽更不容易打油。

一个有趣的事情是 Shura 的空格还是老版本,颜色不一样,而且菊花是十字形,其他的二色成型键帽的菊花是圆形。



这是换了一半键帽的 Shinobi,一看便知。除了本来 Shura 就没有的键帽没法换以外,右下的 cmd 也没有合适宽度键帽可以换,不过我左边修饰键用得比较多,右边就随意了。



在给 Shinobi 换 BLE5.0 模块的时候碰到了固件问题。Shinobi 原配是 BLE4.0 的模块,如果要用 Shura 的 BLE5.0 模块需要升级固件到 4.03。但是这个固件会导致丢输入的问题。丢得比较严重是 Tab、Capslock、Backspace、Enter、俩 Shift 以及 T 键(有点诡异)。开始的时候我还以为是轴的问题了,吭哧吭哧换了几十个都不行,才反应过来是固件。

刷回 3.01 的固件需要先破坏掉当前固件,方法是重新刷 4.03 的时候直接拔 USB 线,再插回去就变成无版本号的状态,此时就可以刷回 3.01 了。不过这么一来,BLE5.0 的模块就彻底用不了了。希望固件能更新一下吧。

2024年6月8日星期六

RT-AC68U 终于还是下岗了

其实很早这货就只是一个纯路由了,下载有 NAS,跑 Linux 有 Intel NUC,WiFi 有 TP-Link 的三联装 AP。但是这货从国内带来的,伴随我出国和读博,多少有些感情在里面。

触发点还是家里装了双线网络,结果一用这货的 Dual WAN,就死活连不上。开始以为是双路 DHCP 有冲突之类的,结果第二路完全不接 LAN,第一路正常接 WAN 口,不开 Dual WAN 就正常 DHCP 拿 IP,只要一打开就立马报 DHCP 错误。反正折腾了一阵子,刷固件包括 SSH 进去鼓搞网络配置,总之就是解决不了。

没办法,双路花了钱,总不能不用,于是入了一台最便宜的 TP-Link Omada 路由,象征性设置一下,接上就能用了。

虽然淘汰掉了,总归还是有点帐然若失了,就是那种人生一个阶段又过去了的感觉。

2024年5月26日星期日

Tex Shura

对于小红点我确实是真爱了。加了一个铝合金上盖。

蓝牙相比于 Shinobi 升级到了 5.0,希望可以省一些电,之前用 Shinobi 写东西的时候,两节爱老婆高容量版都只能撑不到一周的时间。

键帽虽然还是 ABS,但是变成双色了,摸上去手感好了很多。



这次没有用静音轴来组,而是洛可可R2轴。提前段落、稳定性不错,虽然我很讨厌键盘 HiFi 党但是这货的声音起码不让人讨厌。问题也很大,一个是灯的透光片会掉,虽然 Shura 并没有灯,但起码说明这个设计是有问题的。第二个就是国产轴常见的弹片品控问题,触发不灵敏的臭轴的比例高得离谱。Shura 这个布局用了 66 颗轴,光是触发有问题我就换下来 15 颗。



而且我并没有用游戏键盘的标准来要求,而是顶着蓝牙的延迟,在测试网页上按出来的。考虑到 Tex 家键盘一般都设置了比较高的 debounce time,这批轴里面恐怕能做到抖动时间 20ms 内的都几乎没有。Cherry 做得再矬,除了有段时间青轴臭轴以外,其他大部分时间品控尤其是弹片品质都是有保障的。不用说一包轴做到 20ms 以内的抖动,就算是 1ms 以内的要求,筛掉的比例也应该远远低于 15/66。

这个问题并没有看到有其他人提起来。大多数做测试的视频都是测声音,这让我觉得恶臭无比。天天烧键盘,结果就是烧佩列、烧铝坨坨、烧 gasket、烧麻将音石子音。线性轴整了几百种,而作为键盘最基本的输入功能压根就不管。

我认为作为输入工具,一块键盘应该满足如下要求:1)确认感。无论是段落感还是声音还是震动,总之要有个确认输入的反馈。这一点应该排除掉所有的线性轴,就连 Apple 都知道要做 Force Touch 之类的各种触觉反馈。2)轴心的稳定性。3)耐久。国产轴在轴心和外壳的品控都经常要好于 Cherry,但是唯独弹片的稳定性和耐久和 Cherry 比差距一直是比较大。


[update]

手感和声音反馈的角度来说,和屈蹲弹簧还挺像的,算是机械轴体里面比较独特的取向,也是我比较喜欢的那种。但是触发确实一个大问题,使用的时候还偶尔出现触发不良的情况,目前累计已经换掉了 20 个轴了……

MAC 键帽也到了


2024年5月25日星期六

Apple 给的内存真是吝啬

以前 Macbook Air 8GB 起步,现在 Macbook Pro 的低端型号也变成 8GB 起步了。总看到一些果粉为此辩护,讲真,我理解不了。macOS 对于内存的使用本来就大手大脚,8GB 除了看看爱优腾能干个啥?

我就开一堆网页查资料,用 TexStudio 和 Zotero 写点东西,还没正儿八经开发点啥或者跑点够分量的生产力工具,16GB 的 MBP 就经常是红色的:



当然,后来换了 64GB 的 Mac Studio 就比较正常了:



但无论如何,都和 8GB 够用这个结论不沾边。快 10 年前用的 Thinkpad W541 和 X230 都是 32GB,至此以后除了这台 MBP 就没有用过 32GB 以下的机器,结果都 2024 年了,还有厂商卖 8GB 的笔记本,还有人辩护,也算是奇观了。

arXiv 上传 latex 文件压缩包

用 latex 写论文的时候经常会把引用文献、图片和不同版本的 tex 文件放到一个文件夹下面,而编译 latex 的时候还会生成一堆临时文件。arXiv 上传的时候需要清理不需要的文件,手动做这件事还是比较蛋疼,所以写了一个脚本,编译指定的 tex 文件,并且把使用到的所有文件打包到一个 zip 里面。提交给 arXiv 的时候可以直接提交这个 zip。

import os
import shutil
import subprocess
import re
import zipfile
import shlex

def run_pdflatex(input_tex, times=1):
    for _ in range(times):
        escaped_base_name = shlex.quote(input_tex)
        command = f"pdflatex -recorder -synctex=1 -interaction=nonstopmode {escaped_base_name}"
        subprocess.run(command, shell=True, check=True)

def run_bibtex(base_name):
    escaped_base_name = shlex.quote(base_name)
    command = f"bibtex {escaped_base_name}"
    subprocess.run(command, shell=True, check=True)

def parse_fls_file(fls_file, current_folder):
    used_files = set()
    with open(fls_file, 'r') as file:
        for line in file:
            if line.startswith('INPUT '):
                filename = line[len('INPUT '):].strip()
                # Normalize paths for comparison
                if os.path.isfile(filename):
                    abs_filename = os.path.abspath(filename)
                    if abs_filename.startswith(current_folder) and not re.search(r'\.aux$|\.log$|\.out$|\.toc$', filename):
                        used_files.add(filename)
    return used_files

def create_zip(used_files, zip_filename):
    with zipfile.ZipFile(zip_filename, 'w') as zipf:
        for file in used_files:
            zipf.write(file, os.path.basename(file))

def main(input_tex):
    base_name = os.path.splitext(input_tex)[0]
    fls_file = base_name + '.fls'
    zip_filename = base_name + '.zip'

    # Initial run of pdflatex to generate .aux file
    run_pdflatex(input_tex)

    # Run bibtex to generate .bbl file
    run_bibtex(base_name)

    # Run pdflatex multiple times to ensure references are updated
    run_pdflatex(input_tex, times=2)

    # Read the PWD from the .fls file to determine the current folder
    with open(fls_file, 'r') as file:
        for line in file:
            if line.startswith('PWD '):
                current_folder = line[len('PWD '):].strip()
                break

    # Parse the .fls file to get all used input files
    used_files = parse_fls_file(fls_file, current_folder)
    
    # Ensure .bbl file is included
    bbl_file = base_name + '.bbl'
    if os.path.isfile(bbl_file):
        used_files.add(bbl_file)

    # Create a zip file with all used files
    create_zip(used_files, zip_filename)

if __name__ == "__main__":
    import sys
    if len(sys.argv) != 2:
        print("Usage: python script.py <input.tex>")
        sys.exit(1)
    input_tex = sys.argv[1]
    main(input_tex)

使用方法:

python3 script.py <input>.tex

默认用的编译器是 pdflatex 和 bibtex,如果编译器不同可以自己改。