REAPER使用技巧(更新中)
取消延长MIDI对象时的自动重复:在MIDI对象上右键 -> Item Settings
-> Loop item source
勾掉(仅对该对象有效)
Ctrl
+↑
/Ctrl
+↓
更改波形waveform
高度
批量选中MIDI音符:右键框选
左右滚动音符板:Alt
+滚轮
取消延长MIDI对象时的自动重复:在MIDI对象上右键 -> Item Settings
-> Loop item source
勾掉(仅对该对象有效)
Ctrl
+↑
/Ctrl
+↓
更改波形waveform
高度
批量选中MIDI音符:右键框选
左右滚动音符板:Alt
+滚轮
题目:证明klnk=Θ(n)
蕴涵k=Θ(n/lnn)
。
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
指令来更改系统的运行级别。因而在不少情况下,是允许直接创建一个telinit
到init
的链接来实现等同功能的——因为在多进程模式下,用户是创建不了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版本的工具集,然后在编译的时候指定编译器版本,也是能够正常编译的。有待测试。