2020年3月

取消延长MIDI对象时的自动重复:在MIDI对象上右键 -> Item Settings -> Loop item source勾掉(仅对该对象有效)


Ctrl+/Ctrl+更改波形waveform高度


批量选中MIDI音符:右键框选 左右滚动音符板:Alt+滚轮

https://www.linuxquestions.org/questions/linux-newbie-8/telinit-vs-init-539578/

这里给出结论:从用户的角度来说,是没有任何区别的。

但是如果从实际上出发的话。使用telinit更加容易理解。init本身是一个应该只运行在pid==1情况下的程序,它是Linux系统在启动后执行的第一个进程,它负责一系列的系统初始化工作。因而,“所有其他进程都是init的子进程”的说法是正确的。也就是说,init初始化了哪些服务,系统就会进入哪种状态,这也正是系统运行级别runlevel的原理。

正因为init是一个用于初始化系统的程序,所以它理论上不应该被重复执行,所以从便于用户理解的角度来说,应该给予修改系统运行级别的指令一个单独的命令,它负责告诉(tell)init,用户要求切换至另一种系统运行级别,这就是telinit。实际上,由于init内部在设计的时候就已经考虑到了这种可能性(即runlevel的切换),实际上在init执行任务前会对自身的进程编号pid进行判断,在进程号不为1的时候就执行telinit的功能,即允许通过直接调用init指令来更改系统的运行级别。因而在不少情况下,是允许直接创建一个telinitinit的链接来实现等同功能的——因为在多进程模式下,用户是创建不了pid==1的进程的。

查找

grep -iRl 'your-text'

替换

find /your/path \( -type d -name .git -prune \) -o -type f -print0 | xargs -0 sed -i 's/old-string/new-string/g'

还能自动贴心地跳过.git目录

前情提要

这回在tf官方repo发现有人问了类似的问题,给出的建议是按照推荐的编译环境操作一遍。然后因为C盘红了,就装了一个2017的build tools(微软官方提供的,不带IDE的编译器)。

这回好了很多,一口气跑到了1w+的target,越过了之前不到800必红的诅咒(ERROR)。

结果给我来一句

ImportError: Could not find 'cudart64_.dll'.

然后又红了???

然后找到一个别人发的issue:https://github.com/tensorflow/tensorflow/issues/29831

发现设置环境变量没有用。照样报错。后来有人在下面建议用bazel自带的环境变量定义方式来传递:

build --action_env TF_CUDA_VERSION="10.1"
build --action_env TF_CUDNN_VERSION="7"

把两个--action_env和参数一起传进去之后,编译居然重新开始了= =
估计是之前参数压根就没传进去吧。。等编完看结果了(我不想再写第四篇了555

====================================
第二天更新

编译成功了!Ура!!

然后可能遇到的问题是,cmd下的unzip命令好像有点问题,解压会漏文件,到MSYS2下去执行最后的build_pip_package.sh即可避免问题。

终于不坑了!系列完结!(真就编译器版本的问题呗)

====================================
2020/4/17

今天编译东西的时候顺便看了一下,似乎是可以不用装VS2017的,实际上在本次与之前编译的区别在于使用的编译器版本不同,VS2019默认的编译工具集是v142,而VS2017是v141。但是实际上是可以在VS2019的安装器中找到v141编译器工具集的选项的。因此推测,直接在VS2019中安装v141版本的工具集,然后在编译的时候指定编译器版本,也是能够正常编译的。有待测试。