Skip to content

Latest commit

 

History

History
441 lines (323 loc) · 15.4 KB

test.md

File metadata and controls

441 lines (323 loc) · 15.4 KB

Table of Contents

  1. [2021-11-07 日] 看 Practical Haskell 及代码练习
  2. [2021-11-07 日] 研究户外装备
  3. [2021-11-07 日] 读书,《信息简史》第九章
  4. 2021
    1. 2021-W46
      1. 2021-11-15 星期一
    2. 2021-W49
      1. 2021-12-10 星期五

集中记录时间花销。跟 org-journal 有冲突的成分。
org-journal 记录流水内容。
个人看中的时间开销,比如阅读专业书籍、闲书、视频课程等的时间开销在这里记录。
在这里也迭代形成时间花销项目 tag 们。
按日记录(每个条目以 inactive date stamp 开头),按月整理(每月记录在案的在意的时间花销都有多少?)

[2021-11-07 日] 看 Practical Haskell 及代码练习

[2021-11-07 日] 研究户外装备

攀山鼠。官网: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          

[2021-11-07 日] 读书,《信息简史》第九章

2021

2021-W46

2021-11-15 星期一

  1. 修电脑

    1. nvidia 驱动安装的问题
      1. Quadro K2100M 已经被 nvidia 官方放弃,新的驱动(495版本)已经不再支持,需要使用 AUR 中的 470xx 驱动来替代
      2. 470版本驱动貌似跟 xorg 有冲突,之前就不顺畅(startx 后就黑屏,在 /var/log/Xorg.0.log 中看不到异常)
      3. 所以,只有放弃使用 privriate 的 nvidia 驱动,改为使用开源的 nouveau 驱动,不能很好利用显卡的性能,但是至少能用
    2. nouveau 驱动安装的问题
      1. /etc/modprobe.d 中有类似 blacklist-nouveau.conf 的文件,指令 kernel 不加载 nouveau,需要删除这个文件,不然即使安装了 nouveau 驱动,kernel 还是抱怨找不到
        之所以会有这个文件,多半是因为之前使用 privriate nvidia 驱动时,为了避免冲突,主动放上去的
      2. /etc/X11/xorg.conf.d 中有类似 20-nouveau.conf 的文件,指定了显卡的厂商、型号,使用 nouveau 驱动,xorg 启动时按指令执行
      3. /etc/X11/xorg.conf.d 中如果有类似 20-nvidia.conf 的文件,指定了显卡的厂商、型号,使用 privriate nvidia 驱动,需要删除这个文件
    3. xorg 文件不能乱删除
      1. /usr/share/X11/xkb 是 x-key-board 键盘设定文件,不能删除。删了,通过重新安装 xorg 组可以重置
      2. /usr/share/X11/locale 不能删,会导致 dmenu 不能运行(报错:no support locale)。删了,通过重新安装 libx11 可以重置。

2021-W49

2021-12-10 星期五

  1. 视频进度条制作

    ffmpeg 操作
    主要索引们:

    1. ffmpeg 的 examples 们。宝藏! :已collect:

      https://hhsprings.bitbucket.io/docs/programming/examples/ffmpeg/index.html

    2. ffmpeg, stack videos horizontally, vertically, grid, howto ? 宝藏! :已collect:

      https://ottverse.com/stack-videos-horizontally-vertically-grid-with-ffmpeg/

      1. stack horizontally

        对视频文件的要求:

        1. The videos that you want to stack need to have the same height.
        2. 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
        
      2. stack vertically

        对视频文件的要求:

        1. inputs need to be having the same width

        命令:

        ffmpeg -i input0.mp4 -i input1.mp4 -filter_complex vstack=inputs=2 vertical-stack-output.mp4
        
      3. 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
        
      4. 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
        
    3. 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 %}
      
    4. pandas, plot, stack bar chart. 串起来! :已collect:

      https://www.pythoncharts.com/python/stacked-bar-charts/

    5. 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)
      
    6. ImageMagick, convert 把 png 图片中的指定颜色变成透明 :已collect:

      https://stackoverflow.com/questions/9155377/set-transparent-background-using-imagemagick-and-commandline-prompt

    7. ImageMagick, convert 把 png 图片完全“抹黑” :已collect:

      https://stackoverflow.com/questions/35554282/how-to-colorize-a-black-transparent-png-icon-with-imagemagick

      convert x.png +level-colors "black" t1.png
      
    8. ImageMagick, convert 把 png 图片部分透明(使用用来做 overlay 的滚动前景,背景固定不动,制作“进度条”) :已collect:

      https://stackoverflow.com/questions/13366273/creating-a-semi-transparent-png-with-imagemagick-convert

      convert t2.png -alpha set -channel A -evaluate set 20% t3.png