0. 环境要求
- shell环境:mac 或 linux 或 cygwin
1. 命令行下转换数字的进制
相关命令:
bc - An arbitrary precision calculator language
1 | $ echo "obase=2; ibase=16; C2" |bc |
- obase 输出数值的进制
- ibase 输入数值的进制
2.json转换加工
相关命令,需要安装:
jq - Command-line JSON processor
输入的json数据
1 | { |
将json转为csv
1 | $ jq '.data.skip | .[] | [.orderId, .orderStatus, .orderType, .storeId, .createdAt] | join(", ")' demo.json |
说明:
- 使用pipe方式组合处理:
|
- json path
.data.skip
取到数组 - json path
.[]
遍历数组 - json path
[.orderId, .orderStatus, .orderType, .storeId, .createdAt]
取数组元素中的相关字段 join(", ")
是jq的内置函数,将上一个filter输出的结果join成一个字符串
3. maven采集项目依赖信息
- 将dependency tree以 dot 格式输出到每个项目下的 target/deps_tree.dot 文件
- 将依赖信息文件打包为tar。
- 开发一个服务,接收tar包,附带项目信息(gitlab pid)。
- 服务接收到tar后,解包解析依赖信息入数据库。
1 | # 将dependency tree以 dot 格式输出到每个项目下的 target/deps_tree.dot 文件 |
DOT(Graphviz DOT format)文件解析
我们的golang项目用的这个库:
https://github.com/awalterschulze/gographviz
Parses the Graphviz DOT language in golang
4. 按文件存储顺序拷贝文件 2021/01/10
我妈有一个简易录音机用来录佛经,文件存在sd卡上,她想拷贝多份。在mac上直接拷贝到新sd卡后,插入简易录音机播放时,发现播放顺序和原sd卡的播放顺序不一致。
简易录音机功能非常简陋,怀疑是加载文件列表时,直接按文件系统的存储顺序加载。mac下使用命令 ls -f -l
对比了新旧sd卡下文件列表的存储顺序,确认了问题。旧sd卡的第一个文件并不是文件名排序下的第一个文件。同时,新sd卡的第一个文件,也不是按文件名排序的第一个文件,mac拷贝时也未按文件名顺序写入,推测应该是多文件并行拷贝导致写入顺序随机。
想到的解决方法是:
- 先按旧sd卡下文件的存储顺序,给文件名加自增排序前缀,按文件名固定文件顺序。
- 拷贝到新sd卡的时候,按新文件名顺序依次拷贝,确保写入顺序。
1 | # mac 下默认按文件名排序('-1'是数字1) |
按上述方法处理后,把新sd卡插入录音机试听,确认问题fix。