Skip to content

Latest commit

 

History

History
139 lines (101 loc) · 5.89 KB

File metadata and controls

139 lines (101 loc) · 5.89 KB

BXMr

rIME-Squirrel 表形码维护工具

backgroung

作为一名程序猿, 总是要对输入法也要有全面控制

所以, 一直有折腾: ZqBXM/mac at master · ZoomQuiet/ZqBXM

goal

全面使用 Rust 重构原有 Python 版本的维护指令集

trace

  • 最早是 手工维护
  • 后来用 Python 写了个脚本, 但是还是要人工复制到对应目录中再重新编译码表
  • 又后来, 使用 invoke 框架拓展并增强了 BXM 码表的维护内部编辑
  • 现在, 轮到 Rust 来重构了...

plan

  • 合理工程结构+日志
    • CLI 指令识别,响应
  • init ~ 空白全量.toml
    • 选定数据类型
    • 转化为 TOML 写入指定文件 ~ bxmr.local.toml
  • .env 来缓存所有关键配置
    • 合理创建
    • 增删改查
    • 替代原有 src/_settings.toml
  • renew ~ 从 rIME 导入原有码表
    • Yaml 加载/解析
    • Yaml 数据对应写入 Toml
  • seek ~ 根据 code/键码找文字
  • find ~ 根据 word/文字找 code
  • upd ~ 给定 code,word 追加码表条目
  • dele ~ 给定 code,word 删除对应条目
  • gen ~ 从 .toml -> .yaml 以供 rIME 编译加载
    • 本地? -> cfg 指令配置到 .env 中保存
    • 真实目标 rIME 目录, 检验编译
  • ahead ~ 给定 code,word 调整上屏推荐顺序到最前
  • 加速全序 .toml 使用
    • 类似 REPL 交互, 在不退出前, 只加载一次码表到内存中
    • 迁移所有指令到对应识别中
      • renew ~ 每次都使用 .yaml 在内存中重建 字典 全集,不再从 toml 加载
      • help ~ ed06f54
      • ver ~ ed06f54
      • env ~ d1bcc9f
      • cfg ~ 669b6f0
      • seek ~ 7555ae1
      • find
      • upd ~ 8b28069 ++ 全局使用 BTreeMap
      • dele ~ 34847cb
      • ahead ~ c91142f
      • gen
    • 检验多次写出到 .yaml 时是否冲突
    • 录制 git 说明动画
  • ?用 SQLite3 来替代 .toml 加速
    • 设计 SQLite 数据库表
    • 从 .toml 加载回原有 码表数据
    • 替换原有 .toml 加载/回写行为

show

如何动态的展示所有关键功能? 当然是操作动画了

关键指令:

  1. Create a palette image from the video:

    $ ffmpeg -y -i in.mov -vf fps=10,palettegen palette.png

  2. Convert into a GIF using the palette

    $ ffmpeg -i in.mov -i palette.png -filter_complex “fps=10,paletteuse” out.gif

refer.

在 Rust 中,您可以使用内存分配器库来跟踪和监控内存使用情况。其中一些库包括:

jemalloc - 这是一个通用的内存分配器,可以在许多不同的平台上使用。它提供了一些有用的功能,例如内存统计和分析。您可以在 Rust 中使用 jemallocator crate 来使用它。

tcmalloc - 这是一个由 Google 开发的内存分配器,可在许多不同的平台上使用。它提供了一些高级功能,例如内存分析和调试。

除此之外,您还可以使用 Rust 的标准库中的 std::mem::size_of 和 std::mem::size_of_val 函数来获取给定类型或值的大小,从而确定您的数据结构占用了多少内存。另外,Rust 标准库还提供了一些用于内存分配和释放的原语,例如 Box 和 Vec,它们可以帮助您管理内存使用情况。

您还可以使用 psutil 库来获取当前进程的内存使用情况。这是一个 Python 库,可以通过 Python 的 subprocess 模块在 Rust 中调用它。

需要注意的是,内存使用情况的精确度取决于您的操作系统和硬件,因此您可能需要进行一些调整来获取最准确的结果。

logging

  • 231021 ZQ 发现忘记了ahead 的 help
  • ...
  • 230312 ZQ 重构, 使用内存数据对象, 放弃 .toml 实体中间文件
  • 230307 ZQ 优化, 使用 tokio 加速文件读取
  • 230306 ZQ 发布, 可用版本
  • 230227 ZQ mod/clap/tracing/... 项目结构厘定
  • 230225 ZQ re-re-re-init.
      _~∽--~_
  () /  * -  \ ()
    '_   ▽   _'
    > '--∽--' /

...act by ferris-actor v0.2.4 (built on 23.0303.201916)