#BPIO 这三天经历了大量来自 ratatui 的非人道折磨,先是自己封装了一套焦点管理系统和状态机,然后又封装了一套样式管理器,又封装了一套 redux,接下来还得封装一套路由和事件接管系统。
ratatui 真的是除了把东西画出来之外什么都不管,我抱着用 react / flutter 的心态撞进去,然后发现我是那个徒手做一套 react / flutter 的人。就,咱能力水平真做不到那个程度,凑合着做了一套简版的基本操作基建库。
很痛,真的非常痛。每天都是熬到大半夜,把程序调到能用的状态,然后发现某些地方很拧,疯狂从脑袋里面检索能把代码写顺的范式,然后第二天再重构,把原来已经能用的东西搞坏,然后再修。你看我这两天贴的都是长得差不多的东西,但底下的实现每天都在来来回回的变,最后甚至搞出来了一套焦点状态机 builder 的封装(如图),不然就得一大堆 if else 嵌套,改布局的时候直接把眼睛写到脱窗。
跟传统技术栈,像是 React / Flutter 相比,Rust + ratatui 的组合让开发思路变得完全不一样了。
Rust 里面的继承概念本身就是反的,你得实现(impl) trait 往一个 enum 或者 struct 上组合。泛型虽然还是泛型,但是在 enum 和 trait 存在的情况下,很多「后现代思维」不再能起作用,因此在封装的时候我是着实难受了好一阵子。Ratatui 对 UI 渲染思维的定义也完全是反的,传统 UI 框架是声明一个元素下面有什么子元素,然后顺着从根节点往下渲染。但是 Ratatui 的渲染思路是,你有一个区域,你要「用一个 layout 去切分这个区域」、「把一个 widget 渲染到这个区域」,它不是一个垂直向下的结构,每次添加新层的时候都得「回一次头」。
另外因为语言层面存在很多要求,你必须得配合所有权、借用、生命周期的各种约束,你基本上不太能简单地把一个 callback 简单地往下组件里面传。因此必须得在外面开一套基于 event 的飞线,否则组件间通信就会变得非常地狱,特别是遇到异步任务的时候。
反正,很痛就是了,一个模态框写了四天,但总算是适应了一些,可以接着往下做别的功能了 = =……
我已经做了抽象,请感受一下抽象完之后的导航是啥鸡巴德行:
(Читать полностью…
(LoginFormFocus::Username, NavigationKey::Tab),
LoginFormFocus::Password,
),
(
(LoginFormFocus::Password, NavigationKey::Tab),
LoginFormFocus::LoginBtn,
),
(
(LoginFormFocus::LoginBtn, NavigationKey::Tab),
LoginFormFocus::RegisterBtn,
),
(
(LoginFormFocus::RegisterBtn, NavigationKey::Tab),
LoginFormFocus::Username,
),
(
(LoginFormFocus::Username, NavigationKey::Down),
LoginFormFocus::Password,
),
(
(LoginFormFocus::Password, NavigationKey::Up),
LoginFormFocus::Username,
),
(
(LoginFormFocus::Password, NavigationKey::Down),
LoginFormFocus::LoginBtn,
),
(
(LoginFormFocus::LoginBtn, NavigationKey::Right),
LoginFormFocus::RegisterBtn,
),
(
(LoginFormFocus::RegisterBtn, NavigationKey::Left),
LoginFormFocus::LoginBtn,
),
(
(LoginFormFocus::LoginBtn, NavigationKey::Up),
LoginFormFocus::Password,
),
(
(LoginFormFocus::RegisterBtn, NavigationKey::Up),
LoginFormFocus::Password,
),
(
(LoginFormFocus::Username, NavigationKey::Up),
LoginFormFocus::LoginBtn,
),
(
(LoginFormFocus::LoginBtn, NavigationKey::Down),
LoginFormFocus::Username,
),
(
(LoginFormFocus::RegisterBtn, NavigationKey::Down),
LoginFormFocus::Username,
),
(
(LoginFormFocus::RegisterBtn, NavigationKey::Right),
LoginFormFocus::LoginBtn,
),
(
(LoginFormFocus::LoginBtn, NavigationKey::Left),
LoginFormFocus::RegisterBtn,
),
Debian 宣传团队宣布不再发布消息至 Twitter;称后者与其价值观不合。
https://micronews.debian.org/2025/1738154246.html
#Debian #Twitter
https://www.reddit.com/r/Suunto/comments/1g60rie/suunto_changing_its_privacy_policy/
【微笑】
OpenAI Furious DeepSeek Might Have Stolen All the Data OpenAI Stole from Us https://www.404media.co/openai-furious-deepseek-might-have-stolen-all-the-data-openai-stole-from-us/
Читать полностью…#头条 #人工智能 DeepSeek聊天机器人可媲美美国竞争对手,直到被问及天安门事件 https://telegra.ph/DeepSeek%E8%81%8A%E5%A4%A9%E6%9C%BA%E5%99%A8%E4%BA%BA%E5%8F%AF%E5%AA%B2%E7%BE%8E%E7%BE%8E%E5%9B%BD%E7%AB%9E%E4%BA%89%E5%AF%B9%E6%89%8B%E7%9B%B4%E5%88%B0%E8%A2%AB%E9%97%AE%E5%8F%8A%E5%A4%A9%E5%AE%89%E9%97%A8%E4%BA%8B%E4%BB%B6-01-31
Читать полностью…https://mazzzystar.com/2025/01/30/chatgpt-to-deepseek-r1-zh/
写得真好,有力反驳了诸多质疑的流言,向更多不了解 AI 的人展现了 DeepSeek 真正的闪光点。
种田能手: https://jandan.net/t/5842938
OO: 284 XX: 15
蛋友24d628b0286c: 你得吃下去啊!吞吞吐吐的不算
OO: 227, XX: 1
salt_cuts: @artpic 那南通的经验是质量最好的
OO: 88, XX: 0
artpic: 得咽下去才算数啊,只到喉咙不行的要到胃。
OO: 37, XX: 1
浮华暂借问: https://jandan.net/t/5843058
OO: 301 XX: 17
吃饭从来不给钱: 小扎还得说是川姥爷冤,小的给少了
OO: 248, XX: 3
蛋友e61f7beee7f1c: @商周知 你相信它是法制社会就行
OO: 130, XX: 7
zjc: @商周知 我理解就是和解费,希望川普不要秋后算账的意思
OO: 78, XX: 1
商周知: 不会是因为他当上总统了吧?不给这个钱会有什么后果呢?
OO: 69, XX: 5
Blastom: 合法行贿啊
OO: 48, XX: 1
加州农业部: 特朗普与Meta就2021年Facebook封号案的诉讼达成和解,Meta不认错,但赔偿2500万美元,其中2200万美元捐给特朗普总统图书馆的基金,其余付给律师和其他原告。
OO: 38, XX: 0
HeHeDa: https://jandan.net/t/5842818
OO: 317 XX: 34
阿鹿: 大可不必这么有深度的思考
OO: 276, XX: 2
蛋友16fe92584ed6e: ...我现在点进去都不能用联网搜索,好多人在玩啊
OO: 47, XX: 0
YoRHa15: https://jandan.net/t/5842112
OO: 310 XX: 2
dARKWING: 换个IE浏览器的图标当头像呗~
OO: 17, XX: 4