todos.md

最近的工作事项

未归类

  • [-] 更新 geektime-dl 的专栏
    • [X] 生成已经使用文件的索引
    • [X] 更新 geektime-dl 的程序, 支持新版本的 chrome
    • 后续通过 rsync 自动同步到阿里云盘
  • 票易通给你带来了什么
    • 挖掘好的文章的结构
      • 包括哪些章节

english

  • ydict 支持自动发音
  • 自学习的单词系统
    • 通过字典查询的单词收集起来, 后续通过命令行工具进行学习
      • 获取单词的含义, 获取上下文中的句子
  • 英语听说能力
    • 找几篇高质量的英文, 有标准发音的
      • 注意这里应该寻找计算机领域内的最新的有价值的参考资料
      • 陌生词汇不要太多
    • 将文章进行分词, 并先熟悉每个单词的含义和读音
    • 能完整的将这边文章阅读完整并理解其含义
    • 跟着标准发音阅读并录下自己的读音不断修正
    • 最后能完整的背诵出来
  • 英语的写作能力
    • 给自己写一份英文的简历介绍自己

关于运维

  • 但你使用某种东西的时候, 潜在的在享受到它带来的好处的同时, 需要付出一定的代价
    • 这种代价分为两种, 第一种是一次性费用, 往往是一开始就需要支付的, 往往这一步就会将很多人挡在外面了
    • 而第二种更隐蔽也更常见, 为使用而付费, 类似 gc 的机制一样

信息论

  • 见微知著, 从一些观察中经过思考加工获得有价值的信息
  • 通过一些侧面的, 一些特征通过一定的算法来推断, 不断加大不确定性事情的概率

浏览器的优化

Window 使用优化

  • 使用自带到截屏快捷键
    • Win + Alt + S
  • 考虑编译这个软件https://github.com/kamiyaa/joshuto/search?q=windows&type=code
  • [X] 多显示器下的程序切换
    • [X] 使用 Win + Alt + -> 切换当前程序到下一个屏幕
  • autohotkey
    • [X] 优化 edge/chrome 的使用体验
      • Ctrl-L 增强 在地址栏,标题栏,内容进行切换
      • Ctrl-Shift-F 全屏模式
        • ,gF 当前页面进行全屏
    • 使用 Ctrl+i (Internet) 作为浏览器的快捷键

提高系统交互性

  • 通过 golang 实现机器人
    • emacs 可以进行交互触发事件
    • 辞典单词于分析工具
    • 给手机发送报警的工具

阅读模式

  • epub
    • nov-mode
  • pdf
    • 用 edge 全屏模式阅读
    • Ctrl-F 启动全屏
  • elfeed 模式的建立

Linux

  • 远程桌面解决方案
    • torbovnc 使用秘钥登陆

Java 平台

ruby

TODO 工具链优化 [4/11] :important:

阅读优秀源代码

心得

  • 配置使用经验
    • 提交到 git 中
    • 通过分支对应到不同的环境
    • 通过软链到方式来进行使用
  • 不要过早的优化, 应该为你高频的操作优化, 这样带来的价值更大
  • 任务的原则
    • 如果一个任务不能立刻完成, 并且不能在半个小时之内完成, 应该记录下来
    • 你应该总是记录下来你做的任务, 这样后面可以看到你的反馈
    • 如果只是一个小的想法可以先记录下来, 而后总结归纳到其他的任务中去
  • docker 容器化带来的好处
    • 在 docker 中限制 MEM 和 CPU
    • 拥有一个干净的最小环境
      • 环境是被隔离
        • 声明了稳定的依赖 (假设不会轻易被破坏)
      • 后续的变更不会对这个环境照成污染
    • 非常方便的进行迁移/备份
    • 非常方便的进行分布式扩展
    • 始终保留一个验证自己方案的一个环境, 每次的小的变更可以快速的验证和反馈
      • 如果做了非常多的变更, 最后发现方案没办法使用, 你会猜测并撤回自己的变更, 这个反而更加消耗时间
  • 备份的原理
    • RAII 的思想一样, 你应该在资源创建的时候就想好怎么被回收
    • gc 告诉我们资源的回收应该分级处理, 及时有效的处理
      • 及时的做 gc, 二不是腾出时间专门用来做 gc, 严重影响系统的整体性能
    • 一次性的脚本留下快照, 二重复性的工作应该固化到脚本中, 包括 gc 动作本身
    • 如果后来花费大量的时间做 gc (擦屁股这种事情) 因为缺乏足够的上下文信息, 而重新去计算这些信息需要花费额外的代价, STW 这种事情非非常减低你的吞吐量
  • emacs 模式带来的思考
    • 浏览模式
      • 通过知乎等快速获取知识
    • 专注模式
      • 花时间整合进自己的知识体系, 深刻理解背后的原理
    • 复习模式
      • 对学习到的知识进行温习
    • 任务模式
      • 任务管理
    • 元模式
      • 思考模式本身
      • 复盘
  • 得到的启示
    • 如果对一个东西不是特别懂 (不知道背后的原理) 就不要轻易去修改
      • 这潜在的带来了看不到的副作用
    • 任何一个规则或者道理或道理的成立都有隐藏的前提假设
      • 规则不起作用的时, 不要一上来怀疑规则, 而应该怀疑规则背后的假设
        • 通过缩短路径、日志等来检查确认假设是否依然成立
        • 你可能甚至都不知道假设有哪一些
  • RPC 的理解
    • alias s = ssh -t tencent ydict
      • 注意 nushell 不能增加引号
    • ssh -t tencent sh -c ';tmux at'
      • [X] 技巧, 使用该命令即可修复每次生成一个新的 session
    • Ctrl-w q
    • ssh -t tencent -p 2202 emacs
    • ssh -t tencent task agenda:publish-html
    • ssh -t tencent task think:publish-html – google-search-hint.md
  • idea 记录下来
    • 有新的 idea 的时候第一件事先记下来
    • 复盘的时候有些 idea 会被整合进到之前的想法中, 有些可能并没有当初想的那么有新意

命令行界面模式

coding 的原则

  • 网络应用中的网络总是不稳定的, 所以程序不能对网络有太多的假设, 支持程序的重试或恢复现场
  • 如果代码不是一次性的 (比如命令行) 那么你在编写的时候应该为了更方便的阅读而做优化
    • 比如代码的格式化
    • 对齐
    • 注释
      • 附加一些额外的帮助信息方便理解
        • 一般较为复杂的算法, 算法的逻辑没办法直接映射到程序的逻辑, 注释的作用是暴露这里包含潜在的推理和假设
        • 通常情况下, 可以附上一个更为详细的参考文档, 方便读者了解更多
        • 说明遇到的问题, 需求, 以及对应的设计, 讨论, 即为什么要这么写代码

编辑模式的特性

  • 如果一个特性在 emacs 和 vim 中都有类似的概念或实践, 反过来讲这个是一个 commmon 的需求

  • modeline magit

  • jump

    • g;
  • folding

  • surround

  • expand-region

  • repeat

  • action keyboard

    Action Keyboard
    operater x . u
    search / n N
    snipe s , ;
    expand v V
    folding za zc zo
    enaglish-helper shift-tab
    goto-last-change g; g,
    goto-definition gd C-t
    jump stack C-i C-o
    jump tags file C-] C-t
    align regex <v> ga
    visible-hedings ]] [[

vim

  • vim 优化
    • modeline 的开启和使用
      • * vim: set filetype=cpp: *
      • # vim: set syntax=ruby:
  • 定义 gr 的行为
    • 推荐使用 ctags 来搜索所有的引用
    • 但是用 coc-vim 似乎可以直接重定向到 coc-references 中
      • 判断时候启用了 coc 来重新定义

emacs

  • 阅读优秀的配置
  • 代码中加入使用说明和优化的判断依据
  • pyim 模式的学习
  • emacs 支持代码折叠
    • ;; -- mode: fundamental; --
  • 学习
  • emacs 的经验
    • quelpa 的 package 如果下载失败的话最好手动清除一下
    • quelpa 指定编译生成 elpa 包的文件
      • 注意 quelp 会解析注释生成具体的包, 注意格式规范
  • emacs 全局优化
    • 改善 visual 的模式下的工作流
      • 选择模式的好处是先看到了效果, 交互强
      • 通过不断的 v 来语义化的选择
      • 选中之后附加操作 surroud
    • [X] C-w o
      ;; (define-key evil-motion-state-map (kbd "C-w z") 'spacemacs/toggle-maximize-buffer)
    • [X] 字体
      • emacs 终端下默认使用 terminal 的字体
      • 注意字体需要在特定的 size 下才能展示最好的效果
      • [X] wezterm 设置 fontwithfallback 中文使用 HarmonyOS Sans 字体
        • [X] 支持粗体
    • [X] 英文助手, 自动英文补全
      • 在插入模式 Shift-Tab 开启自动英文补全
  • 优化常用模式
    • 代码阅读模式
      • gr goto references
        • fd -tf '.*\.java' | xargs etags
      • gd goto definition
    • magit 模式
      • 查看当前的变更
      • 查看 git 多个 commits 后的变更集
      • git 本身的操作通过 git 命令行来操作
    • [-] 输入法
      • [X] librime 输入法
        • 因为使用的是 nixos 编译的 emacs 不支持 librime
          • nixos 下拿到编译好的 librime.so, 并挂载进来
          • alpine 在 edge testing 中增加 librime, 编译需要 librime-dev 需要的依赖需要在 edag 的 main 中进行增加
        • https://pkgs.alpinelinux.org/packages?name=librime&branch=edge
        • [X] windows compare 工具比较两个文件夹, 包括在 arch 中的
        • 配置提交到 git 中, 并在 lime 中进行 ln -s 来使用
        • 在容器中进行挂载使用
      • [-] pyim
        • [X] 延迟按需加载
          • [X] 按键为 Ctrl+\ 时才加载 pyim
        • [-] 增加词库
          • [X] pyim pyim-tsinghua-dict
          • 300w 的大词库https://github.com/tumashu/pyim-greatdict
          • [-] 自己制作词库
            • [X] 导入自己的 sogou 词库
            • [X] 支持从 sogou 中抓取词库并合并起来生成自己的词库
            • 注意保护好自己的私人词库, 这个用的越多越能够让输入更加符合自己的习惯
              • ~/.emacs.d/pyim/
        • [X] 模糊音设置
          • [X] 参考手机上 gboard 的设置
        • [X] 优化临时切换到英文输入法模式
          • [X] evil nomarl 模式下自动切换到英文
          • [X] 英文自动猜测, 如果前面是英文的话, 继续使用英文模式
          • [X] 插入模式下, 使用 Ctrl-j 来生成中文
        • [X] 默认 3 个候选项, 通过 ; ' 快捷键来二三分词
    • eww
      • SPC o w
      • SPC gg 打开 google 进行搜索
      • 用与专注模式下整理笔记
    • term
      • toggle terimal
        • SPC '
      • 修复 term 模式下 prelude-mode 的影响
        • [X] 全局 mode 动态切换的问题
        • [X] 切换到使用 term-toggle 的包, 并且通过 AOP 机制来回调 prelude-mode
    • org-mode
      • 有一个默认生成文件的模板, 带上 header
      • 展示的优化
        • [X] 紧凑模式
      • tag 的使用
        • TAGS 的声明
        • C-c C-q
      • 插入链接 C-c C-l
        • 配合 ,v 切换到 visible-mode
      • [X] 快捷键
        • ,xs
        • ,xx
        • ,h
    • markdown
    • mu4e 邮件客户端

后续代办

  • 容器化提供 Taskfile
  • 提供 index 工并提供 crontab 自动备份功能
  • 自动化 scoop 的安装
    • 建立 bucket 和 apps 的索引
  • 把手机上的笔记整理出来
  • 阅读人际关系相关的书
  • 在线查看 org-mode 的服务
    • [X] candy 容器
    • [-] task 动态生成静态文件
      • [X] 一键发布命令
        • [X] ssh -t tencent task agenda:publish-html
      • 支持绑定到 emacs 中
      • 支持根据上次更新的时间戳来动态判断说要不要重新生成新的 html
    • 总结
  • 在线的链接收藏工具
    • 自动追加到 org 中, 复用现有的工具链
    • 自动抓取 header, 生成 tag
    • 使用到 instapaper
  • 持续集成
    • 写一个 git 的 hook
    • 推送代码之后增量编译
  • git 的 rebase 和 merge 使用规范
    • 每一改 feature 的开发应该在一个特定的 branch 上进行
    • 在合并到 master 之前, 先 rebase master 中的代码
    • 功能确认没问题之后通过 merge 合并到 master
  • 写一个收藏工具

TODO nginx

  • 提供那些功能
  • 向上支撑哪些场景

Hashkell

cpp

archlinux

  • iso 安装一次
  • 虚拟机提供 vmdk 文件

2022/07/17 反思

  • 用人之道
    • 意愿/ 能力模型
    • 没有意愿是因为没有 match 对方的诉求
  • 想清楚自己来这里期望得到什么
    • 倒推
      • 到年底会怎么衡量自己的工作
      • 试用期的目标
  • 自己有一个整个的业务和技术的架构
    • 指导自己来作出一些决策
  • 给自己安排一个学习的时间
    • 需要学习什么
    • 高质量的输入
    • 高效的算法
  • 每周有一个自己的独处和复盘的时间
    • 这一周做到好和不好的地方, 怎么进行优化

DONE 自动文档发布系统 :important:

  • 转换
    • [X] 本地执行
      • docker exec -it emacs-tinysshd /nix/store/emacs/bin/emacsclient -e '(message "hello")'
    • [X] 使用 org-to-markdown 工具来转换
    • 心得体会
      • 使用成熟到工具调试, 使用适合到工具
  • [X] 监听文件夹发生变更, 根据时间戳来判断时候需要刷新
    • fswatch –batch-marker=EOF -i ".org" -x -r -l1 –event=Updated –event=Created . | ruby -r./fswatch.rb -e ' filter '
      • -i include
      • -e exclude

TODO docker 当作数据盘来使用

  • 封装 vim 和 emacs.d 到数据卷

DONE onedrive workflow

  • onedrive-cli cp :/drawio
  • draw.io

PPT 编写 :important:

https://transsioner.feishu.cn/file/boxcn3aeYag15zHnOliIhEIaGcb?office_edit=1

大纲完成

TODO PPT 模板

  • 准备模板的底版

TODO 图表 [5/6]

  • 个人简介
  • 研发效能
    • 补充一个图
      • 参考研发效能
      • 研发效能解决什么问题
      • 工具提效
      • 自动化
    • 线
      • 工作流的优化
      • 协作
      • 规范
      • 一个柔性的系统
  • 逻辑以及全面
  • [X] 大禹技术架构
    • [X] 与 IPM 技术共创
  • [X] 微服务架构
  • 目前搭建了哪些能力
    • 包括网关
    • web 研发流水线
  • [X] COLA 应用架构
    • img
    • 核心职责就是定义良好的分层结构, 以及命名规范
    • 如果保证代码符合设计以及减少技术债务
    • 领域建模决定了需要编写那些业务代码
    • 这里规定了业务的代码应该放在哪个位置
  • [X] WEB 研发项目流程
  • [X] 项目执行里程碑
    • [X] 共性问题 -> MVP1 -> MVP2
    • [X] 场测业务架构
    • 其他业务的支持
      • KMS 等
      • OS 粉丝
  • 流程搭建了哪些事情
  • 团队日常研发能力效率的提升
    • 组织技术分享, CodeReview
    • 研发日常工具的沉淀
      • Mysql 数据备份
      • 接口 Mock 服务
      • 中间件标准镜像
      • 虚拟机镜像 (同频中)
  • 与 IPM 技术共创研发模式磨合
    • 研发迭代
    • 的研发协作模式
      • 共享源码, 分支发布规范
      • 微服务, 独立部署
      • 适配和采纳 IPM 到基础设置
  • 需求拆解粒度
  • 项目执行
    • 研发迭代节奏
    • 开发任务拆解与实践的效率
      • 场测 v1.1
      • 共性问题
  • 基础设施能力提升怎么提现, web 研发流水线
  • 技术方案
    • 多少篇
  • 感谢
    • 导师, 非常有激情, 相对来讲我比较谨慎一些
  • 不足
    • 对业务的深入理解, 怎么开始到梳理和了解别人的业务
    • 基础设施的能力
    • 跨多团队协作效率
  • 目标
    • 打造一个柔性的协作平台, 将传音项目交付的最佳实践写进代码里, 并持续改进
      • 柔性意味创造这个系统的组件上可装配的, 可复用的
      • 最佳实践是可度量的, 包括工具和流程
      • 协作系统是可扩展的, 能较好的融入新的技术组件和业务流程

工作总结

  • web 研发基础设施改进
    • 日志与监控
    • 推进 Docker 化改善
    • 日常运维工具箱
      • MySQL 备份等
    • 定制虚拟机镜像
    • 快速初始化环境
    • 远程开发容器
    • 快速克隆流水线
    • 持续发布 agent
  • 业务组件
    • OSS 文件上传和安全下载
      • SRC apk
      • 场测
    • 飞书卡片消息 ( 交互)
      • 临时分支审批
      • 共性问题
    • 业务字段变更监听
      • 变更历史记录