最近的工作事项
未归类
- [-] 更新 geektime-dl 的专栏
- [X] 生成已经使用文件的索引
- [X] 更新 geektime-dl 的程序, 支持新版本的 chrome
- 后续通过 rsync 自动同步到阿里云盘
- 票易通给你带来了什么
- 挖掘好的文章的结构
- 包括哪些章节
- 挖掘好的文章的结构
english
- ydict 支持自动发音
- https://github.com/TimothyYe/ydict
- alias s = ydict -v 1
- 支持一次查询多次, 为了获得多次的阅读
- 自学习的单词系统
- 通过字典查询的单词收集起来, 后续通过命令行工具进行学习
- 获取单词的含义, 获取上下文中的句子
- 通过字典查询的单词收集起来, 后续通过命令行工具进行学习
- 英语听说能力
- 找几篇高质量的英文, 有标准发音的
- 注意这里应该寻找计算机领域内的最新的有价值的参考资料
- 陌生词汇不要太多
- 将文章进行分词, 并先熟悉每个单词的含义和读音
- 能完整的将这边文章阅读完整并理解其含义
- 跟着标准发音阅读并录下自己的读音不断修正
- 最后能完整的背诵出来
- 找几篇高质量的英文, 有标准发音的
- 英语的写作能力
- 给自己写一份英文的简历介绍自己
关于运维
- 但你使用某种东西的时候, 潜在的在享受到它带来的好处的同时, 需要付出一定的代价
- 这种代价分为两种, 第一种是一次性费用, 往往是一开始就需要支付的, 往往这一步就会将很多人挡在外面了
- 而第二种更隐蔽也更常见, 为使用而付费, 类似 gc 的机制一样
信息论
- 见微知著, 从一些观察中经过思考加工获得有价值的信息
- 通过一些侧面的, 一些特征通过一定的算法来推断, 不断加大不确定性事情的概率
浏览器的优化
- 全局的快捷键优化
- C-o 全局标签页的跳转
- Chrome 插件 Surfingkeys 快捷键优化
- 阅读 Surfinkeys 官方 README.md 甚至源码
- 本地模式
- ,s github start
- g; last tab alternate gl
- F toggle fullscreena alternate gF
- https://gist.githubusercontentne.com/jiahut/8bc60aa1071adce989d283748a902f71/raw
- 导致链接在当前标签页面打开的插件
- https://chrome.google.com/webstore/detail/open-link-in-same-tab/kgpefningcojblgciiljmabggbbjiojb
- google 搜索页面本身不断的打开新的 tab
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) 作为浏览器的快捷键
- [X] 优化 edge/chrome 的使用体验
提高系统交互性
- 通过 golang 实现机器人
- emacs 可以进行交互触发事件
- 辞典单词于分析工具
- 给手机发送报警的工具
阅读模式
- epub
- nov-mode
- pdf
- 用 edge 全屏模式阅读
- Ctrl-F 启动全屏
- elfeed 模式的建立
Linux
- 远程桌面解决方案
- torbovnc 使用秘钥登陆
Java 平台
-
[X] Java 容器化开发环境
- [X] 使用 ln -s mvnd mvn
-
Java 平台
- [X] Java 各版本的新特性
- Java 的社区运作模式
- 阅读 JSR JEPs
-
Java 诊断工具
- aragozin/jvm-tools https://github.com/aragozin/jvm-tools
- metrics https://github.com/dropwizard/metrics
-
Java 算法
ruby
- ruby 系统管理指南
- 把 ruby 作为一个工具
- ruby Ruby's Sort and Sortby
- here documents
[4/11]
:important:
TODO 工具链优化 - gist 使用体验优化
- 使用 gist edit
- 整理系统自带命令的最佳实践
- man
- 在原来接口不变的情况下作增强, 通过 bat 来支持语法高亮
- rsync
- 比 scp 更优雅
- guidelines
- 最后一个文件夹带有 / 有没有的效果是一样的
- 通常前后都不要带有 /, 忽略文件夹的差异, 统一当作文件来出来
- 程序
- top
- 常用快捷键
- 自动监控程序
- top -c -d1 -p (pgrep -d, -f TabNine) -p (pgrep -d, -x emacs)
- 每秒刷新一下 emacs 启动的进程
- systemctl
- enable 开机启动
- journalctl
- 日志文件的布局等
- man
- [X] golang builder
- [X] emacs 容器化
- 优化 alpine 的容器
- 委派到 fish-config 来统一识别容器环境下自动应用脚本
- 尽可能到复用既有到容器
- 给出到方案应该尽可能去复用之前的经验
- [X] 整理更新到 Container 中
- 优化 alpine 的容器
- Docker Container Java Remote develop
- 配置好一个可使用的环境
- mvnd 相关的配置
- 经验总结
- [X]
w3c 不赞成使用- 使用 eww 作为替代
- golang API 的整理
- 常用函数归类
- [-] golang task 学习
- 推荐在 home 目录进行 include
- 已经重构脚本链接到 home.Taskfile.yml
- [X] 支持 default task
- [X] 支持 task 的 include
- [X] 动态传递参数
- [X] 环境变量传递
- [X] 命令行传递
- [X] 支持模板函数
- 推荐在 home 目录进行 include
- [-] 虚拟磁盘文件解决方案
- [X]
vmdk 文件作为一个磁盘 - [X] 使用 dd 和 mount loop
- 整理解决方案手册
- 使用 btrfs
- [X]
- [X] 网盘解解决方案
- [X] 阿里网盘在 linux 中进行挂载
- [X] win 下使用挂盘
- firewall tool 腾讯支持 udp
- rust builder
- 直接编译二进制没有依赖的 binary
- [-] 隧道工具, 加壳保护并提供代理访问
- [X] 使用文件名作为参数传递
- gotunel-1088
- 默认代理本地的 22 端口
- gotunel-1088
- [X] 自动密钥认证
- [X] 支持通过密钥进行登录认证
- 密钥算法
- [X] golang 自动埋入密钥
- [X] window 下安装成为系统的服务并开启启动
- 开机自启动
- 能自动重连
- linux 下做成一个服务
- 直接在容器中启动, 暴露容器的 22 端口, 从容器中反向跳转回到宿主机
- 修改 username/hostname
- 挂载 home 目录, 确保宿主机自己能连接自己
cat ~/.ssh/id_rsa.pub > authorized_keys
-
docker update --restart always
- 直接在容器中启动, 暴露容器的 22 端口, 从容器中反向跳转回到宿主机
- [X] 使用文件名作为参数传递
- 翻墙工具
- 支持 tcp/http 的验证来进行流量的转发
- window 下 leaf 包装成一个服务
- linux 下 leaf 变成一个 serice
- wezterm
- [X] 终端 支持 csi-u, terminal 无法识别 Shift 按键
https://github.com/wez/wezterm/issues/1907
https://stackoverflow.com/questions/38732424/emacs-keybinding-doesnt-work-in-terminal
https://github.com/wez/wezterm/blob/7deb215303ce1a8e64d48f65ef3e0a1d24fc2fbc/docs/config/lua/config/enable_csi_u_key_encoding.md
https://ananthakumaran.in/2021/07/31/emacs-remote.html
http://www.leonerd.org.uk/hacks/fixterms/
https://github.com/yuutayamada/xterm-keybinder-el
https://old.reddit.com/r/emacs/comments/nfx63q/which_way_to_get_extended_keys_available_in_linux/gyoq649/
https://github.com/wez/wezterm/discussions/808 - [X] 配置优化
- [X] tab bar
- [X] wezterm copy mode
https://wezfurlong.org/wezterm/copymode.html - [X] quick select mode
- [X] 终端 支持 csi-u, terminal 无法识别 Shift 按键
- [X] nushell 体验优化
- [X] alias 到远端进行执行
阅读优秀源代码
- 阅读源代码可以学习到除了语言之外的技巧
- 质量比较高, 社区讨论比较活跃, 有较多到更新
- 清单
- java
- tutorial
- hutool
- rust
- nushell
- wezterm
- https://github.com/singularity-data/risingwave
- golang
- ruby
- homeland
- rails
- c++
- typescript
- coc-vim
- java
心得
- 配置使用经验
- 提交到 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
- alias s = ssh -t tencent ydict
- idea 记录下来
- 有新的 idea 的时候第一件事先记下来
- 复盘的时候有些 idea 会被整合进到之前的想法中, 有些可能并没有当初想的那么有新意
命令行界面模式
- fish
- 通过函数包装来增强现有命令的体验, 装饰器模式
- 适配 docker 环境, 作为 docker 环境默认的 shell
- git 工作流优化 命令行界面
- [X] g cp
- https://le0nidas.gr/2020/03/27/git-alias-with-parameters/
- https://www.atlassian.com/blog/git/advanced-git-aliases
- tig
https://jonas.github.io/tig/doc/manual.html- [X] eusurelink to .tigrc
- github 技巧
- Adding .patch (or .diff) to the commit-URL will give a nice patch:
- curl -LOk https://github.com/glepnir/dashboard-nvim/commit/72d284ae9c8e0064e2d72204ff0af8f033b3f99d.patch
- apply -p1 72d284ae9c8e0064e2d72204ff0af8f033b3f99d.patch
- Adding .patch (or .diff) to the commit-URL will give a nice patch:
- 通过 fzf 提供命令行交互模式
- 我们需要的一些参数需要通过 preview 看到的时候 (运行时) 才能确定
- 通过交互来优化多个命令管道的组合操作体验
- 优化通过 vim 进行打开
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:
- modeline 的开启和使用
- 定义 gr 的行为
- 推荐使用 ctags 来搜索所有的引用
- 但是用 coc-vim 似乎可以直接重定向到 coc-references 中
- 判断时候启用了 coc 来重新定义
emacs
- 阅读优秀的配置
- 代码中加入使用说明和优化的判断依据
- pyim 模式的学习
- https://github.com/tumashu/pyim
- 加入词库的操作
- 输入模式下通过 4v 将前面 4 个字符加入到自定义辞典中
- 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 开启自动英文补全
- 改善 visual 的模式下的工作流
- 优化常用模式
- 代码阅读模式
- gr goto references
- fd -tf '.*\.java' | xargs etags
- gd goto definition
- gr goto references
- 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 来使用
- 在容器中进行挂载使用
- 因为使用的是 nixos 编译的 emacs 不支持 librime
- [-] 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 个候选项, 通过
; '
快捷键来二三分词
- [X] 延迟按需加载
- [X]
- eww
- SPC o w
- SPC gg 打开 google 进行搜索
- 用与专注模式下整理笔记
- term
- toggle terimal
- SPC '
- 修复 term 模式下 prelude-mode 的影响
- [X] 全局 mode 动态切换的问题
- [X] 切换到使用 term-toggle 的包, 并且通过 AOP 机制来回调 prelude-mode
- toggle terimal
- org-mode
- 有一个默认生成文件的模板, 带上 header
- 展示的优化
- [X] 紧凑模式
- tag 的使用
- TAGS 的声明
- C-c C-q
- 插入链接 C-c C-l
- 配合 ,v 切换到 visible-mode
- [X] 快捷键
- ,xs
- ,xx
- ,h
- markdown
- tab
- 使用这个版本作为导出 https://github.com/syl20bnr/ox-gfm
- 处理了 gfm-header
- mu4e 邮件客户端
- 代码阅读模式
后续代办
- 容器化提供 Taskfile
- 提供 index 工并提供 crontab 自动备份功能
- 自动化 scoop 的安装
- 建立 bucket 和 apps 的索引
- 把手机上的笔记整理出来
- 阅读人际关系相关的书
- 在线查看 org-mode 的服务
- [X] candy 容器
- [-] task 动态生成静态文件
- [X] 一键发布命令
- [X] ssh -t tencent task agenda:publish-html
- 支持绑定到 emacs 中
- 支持根据上次更新的时间戳来动态判断说要不要重新生成新的 html
- [X] 一键发布命令
- 总结
- 在线的链接收藏工具
- 自动追加到 org 中, 复用现有的工具链
- 自动抓取 header, 生成 tag
- 使用到 instapaper
- 持续集成
- 写一个 git 的 hook
- 推送代码之后增量编译
- git 的 rebase 和 merge 使用规范
- 每一改 feature 的开发应该在一个特定的 branch 上进行
- 在合并到 master 之前, 先 rebase master 中的代码
- 功能确认没问题之后通过 merge 合并到 master
- 写一个收藏工具
- https://github.com/stve/instapaper
- 先用 ruby 实现熟悉一下 ruby cli 的 commander
- docopt 这个库完全通过文档编程体验比较不友好
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] https://github.com/k2052/org-to-markdown
- Missing compiler for node of type `planning`
- [X] https://github.com/k2052/org-to-markdown
- 心得体会
- 使用成熟到工具调试, 使用适合到工具
- [X] 本地执行
- [X] 监听文件夹发生变更, 根据时间戳来判断时候需要刷新
- fswatch –batch-marker=EOF -i ".org" -x -r -l1 –event=Updated –event=Created . | ruby -r./fswatch.rb -e ' filter '
- -i include
- -e exclude
- fswatch –batch-marker=EOF -i ".org" -x -r -l1 –event=Updated –event=Created . | ruby -r./fswatch.rb -e ' filter '
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 模板
- 准备模板的底版
[5/6]
TODO 图表 - 个人简介
- 研发效能
- 补充一个图
- 参考研发效能
- 研发效能解决什么问题
- 点
- 工具提效
- 自动化
- 线
- 工作流的优化
- 协作
- 规范
- 面
- 一个柔性的系统
- 补充一个图
- 逻辑以及全面
- [X] 大禹技术架构
- [X] 与 IPM 技术共创
- [X] 微服务架构
- 目前搭建了哪些能力
- 包括网关
- web 研发流水线
- [X] COLA 应用架构
- [X] WEB 研发项目流程
- [X] 项目执行里程碑
- [X] 共性问题 -> MVP1 -> MVP2
- [X] 场测业务架构
- 其他业务的支持
- KMS 等
- OS 粉丝
- 流程搭建了哪些事情
- 团队日常研发能力效率的提升
- 组织技术分享, CodeReview
- 研发日常工具的沉淀
- Mysql 数据备份
- 接口 Mock 服务
- 中间件标准镜像
- 虚拟机镜像 (同频中)
- 与 IPM 技术共创研发模式磨合
- 研发迭代
- 的研发协作模式
- 共享源码, 分支发布规范
- 微服务, 独立部署
- 适配和采纳 IPM 到基础设置
- 需求拆解粒度
- 项目执行
- 研发迭代节奏
- 开发任务拆解与实践的效率
- 场测 v1.1
- 共性问题
- 基础设施能力提升怎么提现, web 研发流水线
- 技术方案
- 多少篇
- 感谢
- 导师, 非常有激情, 相对来讲我比较谨慎一些
- 不足
- 对业务的深入理解, 怎么开始到梳理和了解别人的业务
- 基础设施的能力
- 跨多团队协作效率
- 目标
- 打造一个柔性的协作平台, 将传音项目交付的最佳实践写进代码里, 并持续改进
- 柔性意味创造这个系统的组件上可装配的, 可复用的
- 最佳实践是可度量的, 包括工具和流程
- 协作系统是可扩展的, 能较好的融入新的技术组件和业务流程
- 打造一个柔性的协作平台, 将传音项目交付的最佳实践写进代码里, 并持续改进
工作总结
- web 研发基础设施改进
- 日志与监控
- 推进 Docker 化改善
- 日常运维工具箱
- MySQL 备份等
- 定制虚拟机镜像
- 快速初始化环境
- 远程开发容器
- 快速克隆流水线
- 持续发布 agent
- 业务组件
- OSS 文件上传和安全下载
- SRC apk
- 场测
- 飞书卡片消息 ( 交互)
- 临时分支审批
- 共性问题
- 业务字段变更监听
- 变更历史记录
- OSS 文件上传和安全下载