🌸
357 subscribers
127 photos
17 videos
197 links
记录一些 学习笔记,工具,和其它奇怪的东西
Download Telegram
把 nvim 格式化改成了异步 [gist]

编辑大文件,保存时要等格式化完,才能继续编辑,改成异步就不用等了,按了保存可以继续编辑,这次没赶上格式化就等下次。

参考的 lukas-reineke/lsp-format.nvim 并做了大量简化(221 >> 39):

- lsp-format 同时支持 sync/async,我只需要 async
- lsp-format 支持多个 LSP,它会依次请求每个 attached LSP,我只需要 1 个 LSP 完成格式化

另外,因为换了 apply_text_edits() 应用变更,不像之前替换整个 buffer,减少了许多重渲染导致的 blinking,大文件尤其明显。

#瞎折腾
最近看了下考研英语,还挺难的,试了下投给 ChatGPT 也没翻译对。

families 和 the confidence 都翻译错了,倒是 with it 省略的部分译出来了。

同样投给 DeepL、Google Translate 错的就更离谱了,前后关系都不搭。

#gpt
改名啦

新的名字“三咲雅”,初次见面,请多关照!

33 前

33 这个名字前,也是叫“三咲XX”,但因为一次事件放弃了它的中文名,一直在用英文
ID,事件经过大概这样:

当时学计组,开源了个硬盘逻辑锁,只是想介绍下原理,还加了好多注释,但被坏蛋拿去改成了勒索病毒,还是用我名字勒索。

这坏蛋是某贴吧吧主,百度账号也是用得我名字,到他贴吧看了下,中招的人还挺多,综合评估了下,决定放弃这个名字。

有人问,“又不是你干的,你怕什么”,但我就是怕啊!

因为就在前不久,一个搞
iOS 逆向的朋友才刚进去,他给某“老板”有偿逆了个 App,然后这老板拿去非法牟利,我能肯定这事朋友 100% 有错,但问题是,老板把他供出去当替罪羊,自己一点事没有全身而退,相当于把非法牟利罪名都强加给了程序作者,前两年才出来,不知道这么长时间老婆孩子怎么过。

鉴于此,我是真的不想和这事沾边,甚至都懒得去
battle,说不定一不小心给我也整个“帮信罪”,当然那时应该还没这词。

于是就改成了
33,当时想,叫 33 的很多,应该不至于冒充到我头上吧,而且两个数字也很难被查水表。然后这种可能被拿去利用的技术也没再分享过了。并在裙友推荐下顺便注册了个 Telegram,感觉发现了宝藏,慢慢国内 IM 也就很少用了。从此过上了“世界纷扰干我屁事”的逃命生活。

为啥改回来了

- 前些天朋友问
- 想把博客盘活,因为主要受众中文,想有个有辨识度的中文名
- 51 咸的蛋,疼

为啥和之前名字不一样

-
- 同事经常叫成
yǎ,还挺好听。然后我慢慢成了错字受
- 我测速啊,之前安全意识不强,漏了大堆信息
- right to be forgotten


#nofwd
尝试完全用 ESLint 代替 formatter,在逐个配完 200 多条规则(eslint+unicorn+import+typescript 能 --fix 的部分),投入使用后,结果让人很沮丧。

拿来格式化 JS 倒行,但 TS 完全不行,甚至 typescript-eslint 每条 formatting rule 文档顶部都在劝退 —— 你需要用专门的 formatter。很多 rules 都有 bug,比如下面这段:

createContext<{
foo: () => void
}>({
foo: () => {}
})


@typescript-eslint/indent@typescript-eslint/no-extra-parens 两个 rule 都是坏的,会被格式成:

createContext<{
foo: () => void
}>{
foo: () => {}
}


我自己都没认出来,看了半天发现,括号没了。但像 prettier 这种专门的 formatter 能很好地正确处理。

当然也可以禁用出问题的 rules,手动缩进、手动删多余括号,或者自己重新实现它们,但无疑成本高昂。

说到缩进,ESLint 也不会处理 Tab+Space 混合(SmartTab)的情况,非 Tab 用户影响不大,但对我影响较大。

“linter lints, formatter formats”,这句可以很好地总结,就算它们有功能上的重叠,也不能完全互换。

#eslint
👍1
TotK 漏了 可以提前玩上了好耶😆
https://service-markup.vercel.app/

Serverless 产品定价对比。

目前看来Upstash、Neon、Cloudflare R2 都比 Vercel 更有优势。

#serverless
分享个 webkit.org 暗色图片处理方式。

如果只是 filter: invert(1),会导致图片除了黑白部分的其它颜色,发生异变。

上次读 WebKit 博客,发现暗色下图片显示也很自然,研究了下他们是自己写了个 SVG filter,只反转黑白色度,红绿蓝尽可能保持。

实现方式见回复 ⬇️

#svg #darkmode
macOS 安装后广告标识符是打开的,通过以下方式彻底禁掉它,并退出广告追踪:

defaults write com.apple.AdLib forceLimitAdTracking -bool true
defaults write com.apple.AdLib allowApplePersonalizedAdvertising -bool false
defaults write com.apple.AdLib allowIdentifierForAdvertising -bool false

#macos #privacy
2
最近才发现这个选项,设置后可以 ⌘Q 退出 Finder,退出后就不会再在 Cmd-Tab 占多一个 icon。

defaults write com.apple.finder QuitMenuItem -bool true && killall Finder

我喜欢退掉所有当下不用的 app,保持简单专注,并且大部分工作都在 terminal 完成,因此这个选项对我挺有用的。

#macos #finder
👍4
This media is not supported in your browser
VIEW IN TELEGRAM
换到了 joshuto,它是 ranger 的 Rust 替代品,终端下的 vim-inspired 文件管理器。

之前一直在用 ranger,但 ranger 实在太慢了,最后一个版本还在 2019 年。把 joshuto 配好用了下就再也不想回去了。

我的配置:https://github.com/sxyazi/dotfiles/tree/main/joshuto

#joshuto #tui
1
Forwarded from R.O.D.
之前在一个群里聊到AI绘画的时候有人说技术本身是中立的云云。回应「哪有什么技术是中立的」之后捅了马蜂窝了,有人说菜刀砍人不能怪菜刀,说我用全称命题否决所有技术的中立性等等。

这里的问题不是哪些技术是中立的,而是中立这个概念是随着人的观点和时代流变的。「中立」不存在,笨蛋。

台湾有台湾的蓝绿和相应的中间地带,美国有美国的,但这两个中间不是同一个中间,同一国家的中立倒推几百年也有很大差别(奥弗顿之窗)。假如我的意识形态是人应该回到部落状态以最原始的方式生活,那一切技术进步都隐含着一种对进步的未来的设定。这样的话自然可以全称地说所有科技都是不中立的。你可以驳斥这种说法极端可笑,但是你不能为你的中立找到一个可靠的支点,你一旦去叙述什么是中立,就是在构造一种意识形态,而不是到达中立本身。

一个看起来很中立的情况,假如我是天才科学家在芯片上发明了一个很棒的结构,而且对制程要求不高,于是被世界广泛采纳。这看起来不带有任何偏向色彩。但是有些人并不这么认为,他们认为现在消费数码正在用更快的指标诱导人计划报废明明用起来没问题的现有设备,实际上对普通人来说设备的性能过剩了,产生了大量电子垃圾往第三世界倾倒云云。相对于追逐更高性能,对于模块化,可维修,可重复使用的需求被刻意忽略了。我可以辩护说我作为研究者和之后产生的消费行为无关,但是科技公司对技术的甄选和包装推销,以及市场对科技的采纳确实可以说选择性的,到达我们普通人身边的技术或多或少蕴含着一种塑造我们生活的期许,而任何这种期许都可以且应当被审视。而有些技术诞生开始隐含的期许就会让许多人感到不适,比如敏感词识别,步态识别,检测维吾尔人的模型,舆情分析…而另一些技术可能就只有小部分人感到不对劲,对大多数人来说看起来就是中立的,要是忽略那小部分人直接宣称这就是中立的就仅仅是在强迫别人遵循你的中立而已。

于是根本没有什么中立,就更没有什么技术中立了。
最近有机会摸了下 rua st,尝试写点使用心得:

- Rust 核心是 ownership,这迫使(也应该)在设计时更多考虑资源 domain 边界,很有 DDD 那味儿

- 如果饱受 ownership 折磨,那一定是设计问题。比起用很 fancy 的招式,比如 Rc<RefCell<T>>,不如下沉并重新审视整个设计

- Rust 没想象的难写,如果允许一些重复代码出现。但若受不得重复, closure/macro 始终是你的朋友

- unsafe 不是不安全,只是回归常态。在可控的前提下,能极大削减循环引用的复杂度

- 曲线才是捷径,有时间接比直接更好用

#rust #learning
感觉 Rust move 这个 keyword 应该像 pub fn 这些简化成 mov,主要:

- move 太常用了,一旦 keyword 别的地方就用不了,主要函数名
- 可以用其它词代替 move,但总有点词不达意
- 函数名可以 mov,但其它地方又会出现 move_files,不太协调,当然也可全部 mov_files,怪怪的

#rust #learning
Kitty 终于支持背景模糊了,配置完漂亮多了,之前只能设不透明度,看久还挺单调的。

https://sw.kovidgoyal.net/kitty/conf/#opt-kitty.background_blur

#tools
Media is too big
VIEW IN TELEGRAM
开个新坑:yazi,一个新的终端文件管理器,使用 Rust 开发,基于 async I/O。

目标是同时兼顾性能、功能,核心部分完全 Rust 实现,减少外部依赖以避免性能瓶颈和体验劣化。

https://github.com/sxyazi/yazi

#tools #oss
👏7👍1
This media is not supported in your browser
VIEW IN TELEGRAM
周末把 yazi 的 Input 组件重构了下,按词移动,visual mode,undo/redo,yank/paste,这些基本功能都有了。还支持了 CJK 字符渲染,和长内容滚动。

头一次实现一个 terminal 的编辑器,踩了挺多坑,不过还算有趣。
尝试在 OrbStack 里跑 Arch Linux + GNOME,使用 RDP 连接,成功了。

感觉比普通虚拟机快一点,谢谢 @XYenon 姐姐浇浇,晚上能给 yazi 调 Überzug++ 了。😇
👍3
经过两天努力,Yazi 现在支持在几乎所有终端显示图片了。

https://github.com/sxyazi/yazi/pull/12

#yazi
🎉5