集中记录时间花销。跟 org-journal 有冲突的成分。
org-journal 记录流水内容。
个人看中的时间开销,比如阅读专业书籍、闲书、视频课程等的时间开销在这里记录。
在这里也迭代形成时间花销项目 tag 们。
按日记录(每个条目以 inactive date stamp 开头),按月整理(每月记录在案的在意的时间花销都有多少?)
攀山鼠。官网:https://www.klattermusen.com/
衣服分为四层,由内到外是:base layer, mid layer, insulation layer, outer shell layer.
冲锋衣各系列科技性能排序从低到高为
mmH20: 毫米水柱,衡量防水能力的单位。
g/M2/24hr: 克水/每平方米/每24小时,衡量透气性的单位。透气越高,热量流失也越大,需要配合中间层保温。
系列 | 所在层 | 功能特点 | 官网价格 | 一句话 | 防水能力 | MFR等级 | 透气指数 | 重量 | 面料弹力 | 厚度 | 柔软度 | 长相 | 官网介绍 |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Allgron 2.0, 巨人岛 2.0 | outer shell | 防水 | 600USD | 20000mmH20 | 10 | 20000g/M2/24hr | 620g | 微弹 | 厚 | 偏软 | |||
Asynja, 阿萨神族 | outer shell | 防水,轻量 | 350USD | 轻量版Allgron | 347g | 微弹 | 常规 | 偏软 | |||||
vale | mid | 352g | Vale is a 2-layer men's mid layer hoodie for ski mountaineering, made to function perfectly with a technical shell jacket. The recycled polyamide Levitend® fabric makes this hoodie highly breathable and quick drying, while it keeps you warm without disturbing the properties of your shell jacket. | ||||||||||
Brage 2.0 | outer shell | 防水 | 800USD | >20000mmH20 | >20000g/M2/24hr | 960g | |||||||
Brede 2.0 | outer shell | 防水 | 950USD | >20000mmH20 | >20000g/M2/24hr | 1045g | |||||||
Draupner | 750USD | 864g | |||||||||||
Jolner | 软壳 | 520USD | >10000mmH20 | >25000g/M2/24hr | 717g | /home/jng/wolfman/gtd/brain/imgs/10640m02jolner-jacket-msocean-green001.webp | |||||||
Vanadis 2.0 | 软壳 | 300USD | 502g |
-
修电脑
- nvidia 驱动安装的问题
- Quadro K2100M 已经被 nvidia 官方放弃,新的驱动(495版本)已经不再支持,需要使用 AUR 中的 470xx 驱动来替代
- 470版本驱动貌似跟 xorg 有冲突,之前就不顺畅(startx 后就黑屏,在 /var/log/Xorg.0.log 中看不到异常)
- 所以,只有放弃使用 privriate 的 nvidia 驱动,改为使用开源的 nouveau 驱动,不能很好利用显卡的性能,但是至少能用
- nouveau 驱动安装的问题
- /etc/modprobe.d 中有类似 blacklist-nouveau.conf 的文件,指令 kernel 不加载 nouveau,需要删除这个文件,不然即使安装了 nouveau 驱动,kernel 还是抱怨找不到
之所以会有这个文件,多半是因为之前使用 privriate nvidia 驱动时,为了避免冲突,主动放上去的 - /etc/X11/xorg.conf.d 中有类似 20-nouveau.conf 的文件,指定了显卡的厂商、型号,使用 nouveau 驱动,xorg 启动时按指令执行
- /etc/X11/xorg.conf.d 中如果有类似 20-nvidia.conf 的文件,指定了显卡的厂商、型号,使用 privriate nvidia 驱动,需要删除这个文件
- /etc/modprobe.d 中有类似 blacklist-nouveau.conf 的文件,指令 kernel 不加载 nouveau,需要删除这个文件,不然即使安装了 nouveau 驱动,kernel 还是抱怨找不到
- xorg 文件不能乱删除
- /usr/share/X11/xkb 是 x-key-board 键盘设定文件,不能删除。删了,通过重新安装 xorg 组可以重置
- /usr/share/X11/locale 不能删,会导致 dmenu 不能运行(报错:no support locale)。删了,通过重新安装 libx11 可以重置。
- nvidia 驱动安装的问题
-
视频进度条制作
ffmpeg 操作
主要索引们:-
ffmpeg 的 examples 们。宝藏! :已collect:
https://hhsprings.bitbucket.io/docs/programming/examples/ffmpeg/index.html
-
ffmpeg, stack videos horizontally, vertically, grid, howto ? 宝藏! :已collect:
https://ottverse.com/stack-videos-horizontally-vertically-grid-with-ffmpeg/
-
stack horizontally
对视频文件的要求:
- The videos that you want to stack need to have the same height.
- The videos need to have the same pixel format.
命令:
# The command line is shown below where we try and stack two mp4 videos. ffmpeg -i input0.mp4 -i input1.mp4 -filter_complex hstack=inputs=2 horizontal-stacked-output.mp4
-
stack vertically
对视频文件的要求:
- inputs need to be having the same width
命令:
ffmpeg -i input0.mp4 -i input1.mp4 -filter_complex vstack=inputs=2 vertical-stack-output.mp4
-
stacking videos of different length (time duration)
使用参数 shortest=1,按较短视频的时间长度来截取较长视频。
命令:
ffmpeg -i input0.mp4 -i input1.mp4 -filter_complex hstack=inputs=2:shortest=1 shortest-output.mp4
-
2x2 grid of videos
命令:
ffmpeg \ -i input0.mp4 -i input1.mp4 -i input2.mp4 -i input3.mp4 \ -filter_complex \ "[0:v][1:v]hstack=inputs=2[top]; \ [2:v][3:v]hstack=inputs=2[bottom]; \ [top][bottom]vstack=inputs=2[v]" \ -map "[v]" \ finalOutput.mp4
-
-
ffmpeg,模拟 progress bar! :已collect:
ffmpeg 操作
https://hhsprings.bitbucket.io/docs/programming/examples/ffmpeg/overlay/_with_expression_4_emulating_progress_bar.html
https://hhsprings.bitbucket.io/docs/programming/examples/ffmpeg/overlay/_with_expression_1_scroll_roll.html{% highlight bash %} #! /bin/sh # pref="`basename $0 .sh`" # 需要把 svg convert 成高清晰度的 png,基于 png 来搞 overlay # convert -density 1400 tt.svg t1.png pref="pref-3" img2="/tmp/t1.png" dur=15 # ffmpeg -y -i "${img2}" -filter_complex " [0:v]scale=1920:66,loop=loop=-1:size=2,setsar=1[bg]; color=green:size=10x66,loop=loop=-1:size=2,setsar=1[fg]; [bg][fg]overlay='x=t/${dur}*W'[v] " -map '[v]' -an -shortest -r 30 -t ${dur} ${pref}-out.mp4 {% endhighlight %}
-
pandas, plot, stack bar chart. 串起来! :已collect:
-
matplotlib, 进度条生成参考 :已collect:
https://matplotlib.org/stable/gallery/lines_bars_and_markers/bar_label_demo.html
import matplotlib.pyplot as plt plt.rcParams["font.sans-serif"]=["SimHei"] plt.rcParams["font.size"]=6 # 视频长度,秒 N = 100 # 场景们 NAMES = ['开篇', '种草', '发酵', '冲突', '藁草', '结局', '致谢'] # 场景结束,秒,默认以 0 开始标记起始 OUTPOS = [0, 10, 25, 30, 50, 75, 88, N] # 场景长度 DURS = [OUTPOS[i]-OUTPOS[i-1] for i in range(1, len(OUTPOS))] # GAP, 总长度的 0.001 GAP = N * 0.001 # GAP 修正后的 DURS DURS = [_-GAP for _ in DURS] fig, ax = plt.subplots() height = 0.7 ps = [] for idx in range(len(DURS)): if idx > 0: _l = sum(DURS[:idx]) + idx * GAP else: _l = 0 # plot stack _p = ax.barh('T', DURS[idx], height, left=_l, color='gray') # plot GAP _p_gap = ax.barh('T', GAP, height, left=_l+DURS[idx], color='red') ps.append(_p) assert len(ps) == len(NAMES), '场景数据跟实际时长参数不一致' for idx in range(len(ps)): ax.bar_label(ps[idx], labels=[NAMES[idx]], label_type='center') ax.set_aspect(5) ax.get_xaxis().set_visible(False) ax.get_yaxis().set_visible(False) ax.spines['top'].set_visible(False) ax.spines['bottom'].set_visible(False) ax.spines['left'].set_visible(False) ax.spines['right'].set_visible(False) ax.margins(x=0) ax.margins(y=0) plt.gca().set_axis_off() plt.subplots_adjust(top = 1, bottom = 0, right = 1, left = 0, hspace = 0, wspace = 0) plt.margins(0,0) plt.savefig('/tmp/tt.svg', bbox_inches='tight', pad_inches = 0)
-
ImageMagick, convert 把 png 图片中的指定颜色变成透明 :已collect:
-
ImageMagick, convert 把 png 图片完全“抹黑” :已collect:
convert x.png +level-colors "black" t1.png
-
ImageMagick, convert 把 png 图片部分透明(使用用来做 overlay 的滚动前景,背景固定不动,制作“进度条”) :已collect:
convert t2.png -alpha set -channel A -evaluate set 20% t3.png
-