今日(きょう)(さわ)がしく(たわむ)れ生きる人々の漫画映画(まんがえいが)

Emacs Notes

随便记录一下。

系统是 linux,所以 windows 不一定适用。

按中文字词移动光标

Emacs 的 Alt-fAlt-b 是很常见的移动光标的快捷键,分别是跳过一个词以及跳回上一个词的开始。但是这一点对于中文其实是不适用的——emacs 会把连在一起的中文字符全部看作一个词。利用一些分词手法我们可以让 emacs 也能够顺利找到中文的词的开头和结尾。

可见这里 https://github.com/kanglmf/emacs-chinese-word-segmentation

之后有空我再试着转述一遍。

把 emacs 弄成开机启动以及后台常驻

开启了上面说的中文分词后你大概会发现 emacs 的每次启动都卡顿一两秒。这不方便,我们可以让 emacs 开机启动并后台常驻,让分词不需要每次都初始化。

zh_CN.UTF-8 相关的是中文输入法需要的。之后再写。

[Unit]
Description=Emacs text editor
Documentation=info:emacs man:emacs(1) https://gnu.org/software/emacs/

[Service]
Type=notify
Environment=LC_CTYPE=zh_CN.UTF-8
ExecStart=/usr/bin/emacs --fg-daemon
ExecStop=/usr/bin/emacsclient --eval "(kill-emacs)"
Restart=on-failure

[Install]
WantedBy=default.target

将上面的配置保存到 ~/.config/systemd/user/emacs-zh.service 里,命令行开启:

$ systemctl --user daemon-reload
$ systemctl --user start emacs-zh.service
$ systemctl --user enable emacs-zh.service

再到 .bashrc 或者是 .zshrc 或者是你自己用的 shell 的配置文件里配置平时的 emacs 使用后台的 emacs,添加下面一行:

alias emacs='LC_CTYPE=zh_CN.UTF-8 emacsclient -c'

如果有什么启动器或者快捷方式之类的改过来:(如果只想要复制的话下图那句是 env LC_CTYPE=zh_CN.UTF-8 emacsclient -c %F

/images/emacs-launcher.png

Modes

Minor Mode

wc-mode

字数统计,在下方的 mode line 显示字数、词数等的统计。

请见 https://github.com/bnbeckwith/wc-mode

安装方法可以直接 M-x package-install wc-mode

M-x customize 查找 wc-mode 之后可以按网页里的 Modline string 来定制显示格式。因为没有对中文的优化,对于中文一般可以设置为 "WC[%tw/%tc]" ,显示效果是 WC[词数/字数]

输入特殊字符

可以 M-x set-input-method TeX ,设置了之后可以通过 TeX 的方法输入一些对应的 Unicode 字符。例如,(一口气)输入 \rightarrow 输入最后一个 w 之后整个会被替换成 ,但是如果输入到一半发现打错了然后删了字符或是移动了光标,那就输入失败了。必须一口气连续不出错地输入完整的 TeX 命令才能成功替换。

并不是所有的 TeX 命令都有对应。

Blender 笔记

Blender 版本 2.91.2

基本操作

视角操作

数字小键盘

数字小键盘的按键和其它按键可能有不同的功能。基本都是对视角的调整。

大概是这个样子的

7

8

9

4

5

6

1

2

3

0

.

  • . : 将视角缩放、移动到所已选择的物体上

  • 0 : 移动到场景里的摄像头的视角

  • 1, 3, 7, 9 : 分别对应左视图、正视图、俯视图、右视图;(想象把小键盘旋转至 7 在上方会更容易记忆)

  • 5 : 切换透视投影和垂直投影

  • 8, 2, 4, 6 : 前后左右对视角角度微调

  • +, - : 缩放微调

鼠标操作

/images/blender-view-buttons.png
  • 那个 XYZ 的地方可以使用鼠标拖拽,也可以点击对应的轴

  • 放大镜、手状图标可以拖拽放大缩小、平移视角

  • 放映机图标是视角变为场景摄像头视角

  • 那九个格子的图标是透视投影和垂直投影的切换

鼠标中键:

  • 滚动 : 放大缩小

  • 拖拽 : 旋转视角

  • Shift+拖拽 : 平移视角

  • Ctrl+拖拽 : 放大缩小

基本界面交互

  • Ctrl+Space : 最大化当前鼠标所在面板,或是取消最大化(回到原来界面)

  • 拖拽面板边框 : 看拖拽的方向可能是分一个新的面板出来,或是把一个面板删除掉

  • 右键点击面板边框 : 菜单:分一个新的面板出来,或是把一个面板删除掉

  • Ctrl+PageUp/PageDown : 切换预设面板布局(也在窗口最上方的一栏上有)

Pie menu 操作

一般 pie menu 由快捷键触发:

  • 按住快捷键不松手,移动鼠标到某个选项,松开快捷键自动选中

  • 也可以按快捷键松手,鼠标点击选项

  • 鼠标右键取消

Layout 预设布局

  • t : 打开/关闭工具栏(包括对物体移动、旋转、缩放等操作)

  • Shift+Space : 在当前鼠标位置打开一个工具栏;也可以按住不放,把鼠标移动到打开的工具栏的某个选项上,再松开键盘按键,自动选中该选项;

  • n : 打开一个比较细致的参数设定栏

Cursor 相关:

Cursor 是新物体放置的中心点。

  • Shift+RightClick : 设置 cursor

  • Shift+s : Cursor 的一些操作的菜单,例如重设 cursor 到原点

  • n : 在打开的栏里的 View 里的 3D Cursor 里定量设置

  • z : 打开一个 pie menu 设置显示样式(线框、渲染、实体等等)

物体操作

选择:

  • a : 全选

  • Alt+a : 取消全选

  • 默认左键拖拽矩形选框选择

  • b : 矩形选框,左键拖拽选框选择,中键拖拽选框取消选择

  • c : 刷子选择,左键拖拽,选中刷到的物体,同样中键会取消刷到的物体

  • Shift+LeftClick : 选中没有选中的物体,取消选中选中的物体

  • 左上角的 Select 选单

物体查看:

  • 右上角 Wireframe 等

物体移动:(也可以在 t 工具栏里找)

  • g : 平移,按 g 以后可以配合 x, y, z, Shift+x, Shift+y, Shift+z 快捷键限制平移方向

  • r : 旋转

  • s : 缩放

  • Alt+g, Alt+r, Alt+s : 还原物体最初的对应设置

  • 可以在 3D Viewport 的上方找到更改旋转、缩放中心点的选项,例如可以设置成 3D Cursor(图为默认的 Active Element 选项)

    /images/blender-transform-pivot-button.png
  • 可以在 3D Viewport 的上方找到更改旋转、缩放坐标系的选项,例如可以设置成 Local,按物体本身的上下左右来移动;快捷键可以连按两次相应的轴,如 x x, y y, z z

  • 3D Viewport 的上方还有 Snap 工具,可以用来对齐等等,快捷键是 Shift+Tab

  • 在拖拽时按 Shift 可以减慢移动速度

添加物体:

  • Shift+a : 添加物体

删除物体:

  • Delete

  • x

隐藏物体:

  • Shift+h : Alt+h 取消

物体集合(Collection):

  • 右键菜单 -> Move to Collection -> New Collection -> 名字 -> Enter 两次

  • Outliner 面板里快捷键 c 创建, x 删除

编辑物体

Object Mode

  • Tab : Edit Mode

  • Ctrl+Tab : 在 active 物体为 armature 时进入 Pose Mode;否则会弹出菜单

  • Ctrl+j : 合并物体

Edit Mode

  • p : 分离物体

  • 1, 2, 3 : 切换选择模式(顶点、棱边、面),可与 Shift 联用

  • Alt+Shift+LeftClick : 选中一圈的点/棱边/面

  • e : Extrude,右键取消,但仍会生成重叠的面,需要按 Ctrl+z 来完全取消

  • Ctrl+r : Loop cut,鼠标滚轮可以增加切割数量

  • Ctrl+b : Bevel, Ctrl+Shift+b : 只在顶点处生成圆滑处理;可以使用鼠标滚轮

    也可以使用 Bevel 的 Modifier

  • k : Knife,右键完全取消, e 取消当前跟随着鼠标的连线, SpaceEnter 确认

  • Bisect : 似乎没有快捷键

Shading

基本上就是各种连线。

  • Shift+LeftClick : 选中多个

  • f : 自动连接选中的两个节点

  • Ctrl+x : 删除并自动重连

  • Alt+LeftMouseDrag : 移走并自动重连

  • Ctrl+LeftMouseDrag : 移除被鼠标切过的线

  • u 或者上方 UV 选单 : 选择 unwrapping 算法

  • Voronoi Texture 很漂亮

Render

  • F12 : 渲染图片

  • Ctrl+F12 : 渲染动画

  • Ctrl+v : 渲染范围选框,使用 Ctrl+Alt+v 取消

  • F11 : 显示图片渲染结果

  • Ctrl+F11 : 显示动画渲染结果

  • Cycles 引擎的取样少了的话,可以使用 Denoising 减少噪声

Rigging

  • Ctrl+p : 设置 active 的物体为所有选中物体的 parent, Alt+p 取消

    当选中 armature/bone 的时候会有不同的选项

  • 可以安装 Rigify 插件来自动生成一个人体骨架

Pose Mode 里:

  • m : 移动选中部分 armature 到某一 layer

Weight & Vertex Groups

  • 同时选中物体以及其关联 armature ,将物体设为 active 物体,按 Ctrl+Tab 可以出选单,可以选择进入 Weight Paint 模式,Weight Paint 模式里可以 Ctrl+LeftClick 选中对应 armature

Animation

Timeline 面板

  • i : 对选中的物体插入 keyframe,在弹出菜单里选择 keyframe 记录的数据

  • v : 改变选中的 keyframe 点的插值方法

还有两个面板是 Dope Sheet 和 Graph Editor

  • Ctrl+Shift+m : Graph Editor 里的曲线的 modifiers

Sculpt Mode

  • f : 笔刷大小, Shift+f 笔刷强度

  • x : draw

  • c : clay : flattening

  • l : layout

  • i : inflate

  • Shift+s : smooth

  • p : pinch

  • g : grab

  • k : snake hook

  • m : mask, Alt+m to remove, Ctrl+i to invert mask

  • 可以从普通的大致模型增加面数后再开始 sculpt,可以在 Sculpt Mode 按 n 在 Tool -> Remesh 里找到相关工具;也可以使用 Dyntopo (在 Remesh 上方)

Org Mode 笔记

Org mode 是好文明,但是我每次都是学到一半就停下来了。现在做点笔记。

快捷键

  • C-c C-t : TODO 相关,在普通条目与 TODODONE 状态中切换, DONE 时会自动添加上 CLOSED 的时间;

  • M-Shift-RET : 在下方添加同级的 TODO 条项,添加后在进行其它编辑之前可以按 TAB 调整条目级别;

  • C-c C-o : 打开超链接;

  • C-c C-l : 插入链接,可以手动输入,也可以预先在另外一个文件里通过 org-store-link 保存一个指向该文件该行的连接,再回到 org 文件里 C-c C-lorg-store-link 默认没有快捷键,可以在配置文件里配置一个(例中为 C-c l ):

    (define-key global-map "\C-cl" 'org-store-link)
    
  • Shift-TAB : 缩起所有项目至一级标题,或展示所有标题但缩起内容,或展示所有;

文件格式

  • [[link][description]] : 超链接的格式;显示出来只会有下划线的 description ,但是可以把光标放到链接最后,按删除键,整个 [[link][description]] 就会显示出来;

  • * title : 条目/标题,二级、三级等的条目分别 ** title*** title 以此类推;

  • ** TODO something to do : 待做事项,还没做,这是个标题所以可以有一级二级等的分别(按星号的多少);

  • *** DONE something done : 待做事项(?,已做事项);一般是:

    *** DONE something done
        CLOSED: [2021-03-29 Mon 14:03]
    
  • 普通文本 : 就随便起一段放着就行;

R语言笔记

R语言笔记。(我讨厌脚本语言。:(

差不多是数据分析的常用语言之一?

语法简介

语句

一句一行,可以用 ; 在同一行中分隔多句。 # 后跟注释。

标识符

以字母开始,可以跟有 [A-Za-z0-9_.] 等。

数据

以向量为基础,如 1 会被理解成一维向量。

字面常量与数据构造

  • T, TRUE, F, FALSE

  • 向量: c(1, 2, 3), 1:3

  • 数字: 0xff

  • 字符串: "string", 'string'

  • data frame:

    data.frame('Col1Name'=col1Data, 'Col2Name'=col2Data, ...)
    

计算操作

  • 加减乘除不用说了,会自动增大数据精度,但不是无限精度;

  • %% 取余。

  • >=, ==, !=

  • &, |, &&, ||

向量/矩阵操作

下标从 1 开始,用 [index] 取下标。下标可以使用向量,如 x[1:3, c(1, 3)]

从向量创建矩阵 :默认一列一列地复制到里面去。

data frame

可以取列的下标,如 x["Col1Name"].

可以用 $ 符号,如 x$Col1Name.

赋值语法

var1 = 1
var2 <- 2
3 -> var3

流程语法

  • for loop:

    for (i in 1:100) {
      print(i)
    }
    
  • if:

    if (cond1) {
      print('do something
    }
    

函数定义

全部是通过匿名函数定义的。

func = function(arg1, arg2) {
  return(returnedValue)
}

全局函数

  • is.integer(x)

  • is.numeric(x)

  • as.integer(x)

  • c(x, y) : concatenate 连接得到向量

  • print(x)

  • matrix(x [, nrow = 3 [, ncol = 3]] [, byrow = T])

  • typeof(object)

  • power.sum(x, power)

    这个似乎有点东西。取得是向量里面的每个数据的类型。

  • class(object)

  • sum(object)

  • getwd() : get working directory

  • setwd(str)

  • read.csv(name)

  • head(data)

  • plot(x, y, type='o')

  • install.packages('ggplot2')

  • library(ggplot2)

  • curve(x^2) : 是的,就是这个屁语法。

    正经一点的话比如 curve(func, fromX, toX, n = pointNumber, xlab = label, ylab = ylabel, main = graphName) ,里面的 func 需要是能够处理向量参数的函数,不能的话可以套一层 Vectorize (见下)。

  • with(data, boxplot(col1)) : 再来一个屁语法。等效 boxplot(data$col1)

  • Vectorize(func) : 不懂为什么这个函数就首字母大写了。接收一个只能处理单值的函数,返回对应的能够接收向量参数的函数。返回的函数会把原来的函数应用到向量的每一个分量上。

所有函数都是全局函数

恩,所以不列举了。

(那个所谓的 . 看似是面对对象或者是命名空间,但它只是装饰啊(不,应该说点本身是名字的一部分,和对象啊对象的成员啊一点关系没有。))

特定功能代码集合

查看帮助文档

? barplot

读取CSV

data = read.table("data.csv", header=TRUE, sep="\t", fileEncoding="UTF-8")

保存输出图表为PDF格式

pdf(paste(col, ".hist.pdf", sep=""))
hist(data[[col]], main=col, xlab=col, ylab="Frequency")
dev.off()

就,R个操作系统吧,有各个“设备”的驱动。大概是按设备管理的思路来的。

绘画图表

天哪

柱形图

barplot(height, width, main="title", xlab="...", ylab="...")

直方图

hist(data, breaks=width, probability=TRUE, col=rainbow(20))

箱型图

boxplot(data, names=c("", ""))

散点图

plot(x, y)
plot(x, y, pch=16, col=ifelse(x==1, "RED", "BLUE")

绘画数学图形

curve(sin(x))
x = seq(0, 10, 0.01)
y = sin(x)
z = cos(x)
matplot(x, cbind(y, z), type="l")
func = function(x) {
    if(x <= 0.5) {
        return(0)
    } else {
        return(1)
    }
}
plot(Vectorize(func), 0, 1, n = 10001)

积分

integration = integrate(vectorizedFunc, from, to, subdivistions = 100000)
print(integration$value)
print(integration$abs.error)

随机以及抽样

rnorm(10, mean=0, sd=1)
runif(10, min=5, max=10)
sample(1:10, size=5, replace=TRUE)
sample(c(TRUE, FALSE), size=10, prob=c(0.7, 0.3), replace=TRUE)

Rstudio

  • R console:

  • R script: 可以与 console 同步,也可以部分执行;

  • R markdown: 略?

Linux 小小笔记

有关文档查询

(当然也可以上网查询。)

tldr

注意

说真的我个人认为这个命令比这篇文章好多了。

(名字来源 TL;DR: Too Long; Didn’t Read) 是在 https://boilingcong.ee/@gfis/105474645790577707 这里看到的。真的是大救星! 大!救!星!

基本上是提供了很多命令的常用用法,使用 tldr 命令名 就可以看到这种简化文档。

项目地址在这里: https://tldr.sh/ 官方版本似乎是基于 NodeJS 的,但我安装失败了然后改用了 Rust 版本的 tealdeer 。想尝试其它版本的可以在 https://github.com/tldr-pages/tldr/wiki/tldr-pages-clients 找到其它版本。

阅读更多…

[翻譯] ChangeMyView 規則

規則

1. 規則A - 不要解釋觀點

解釋您觀點背後的原因,而不要僅僅解釋觀點本身是什麼(需要 500 字以上)。

2. 規則B - 第三方/“惡魔代言”/演說

您個人必須持有相應的觀點,並展示出您願意改變這種觀點。您不能代表其它人來發表帖子,不能扮作“惡魔的代言人” 1 或者扮作任何其它不與您相同的實體,也不能“演說”。

1

指的是爲了找出現有思維的毛病而專門反對現有多數人的看法的行爲。

3. 規則C - 不清晰的/不適宜的標題

發表的帖子的標題必須能夠適當地總結您的觀點,並且以 CMV: 開頭。具有誤導性、或是過於簡化、或是含有劇透的標題有可能會導致帖子被移除。

4. 規則D - 中立/對特定人的傷害/推廣/套娃

帖子不能表達一個中立的立場,或是提倡對特定人的傷害,或是自我推廣(?),或是對這個論壇本身的討論(請到 /r/ideasforcmv 來進行這樣的討論)。

5. 規則E - 3小時內沒有來自樓主的回覆

只有在你願意和回覆的人對話,並且有着3小時的空閒時間能夠持續這麼做時,才發表帖子。如果您在3小時內沒有回覆,您的帖子將會被移除。

6. 規則1 - 沒有質疑樓主的觀點(只針對第一級回覆)

對於 CMV 帖子的直接回覆至少需要質疑樓主的觀點的一方面(無論這方面多麼小),除非樓主問了一個澄清性的問題。

7. 規則2 - 粗魯/敵意的評論

不要對其它用戶粗魯或展現敵意。就算剩餘部分十分有說服力,您的評論還是會被移除。“是TA們先開始的”不是藉口。您應該匯報(flag)先開始的評論不是回應這種評論。

8. 規則3 - 指控不講誠信

不要指控樓主或其它任何人不願改變觀點或是在不講誠信地辯論。如果您不確信某人說的,就詢問一些澄清性的問題(參見:蘇格拉底方法)。如果你認爲TA們還是在展現不恰當的行爲,請與我們聯繫。

9. 規則4 - 濫用/誤用DELTA或是應該頒發DELTA

如果您承認您的觀點有改變,請頒發DELTA。請不要將DELTA用作其它目的。在頒發DELTA時,您必須附上對您的改變的解釋,讓我們知道這種改變是真的。DELTA的濫用包括諷刺的DELTA、玩笑的DELTA、超級點讚的DELTA等等。

10. 規則5 - 不有意義的參與

評論必須有意義地參與到對話中。只包含鏈接、玩笑或是手動點讚的評論將會被移除。幽默或是贊同的肯定可以被包含在更實在的評論之中。

DELTA系統

無論您是不是樓主,請回覆對您的觀點有任何改變的用戶,並在您的評論裏包含一個 DELTA(操作請見下方),並且附上一段對改變的解釋。

輸入 DELTA 的方法

方法

針對

複製粘貼⇨ Δ

所有系統

Unicode⇨ &#8710

所有系統

Option/Alt+J

Mac

Ctrl+Shift+u2206

Linux

!delta

在您無法使用 Δ 時使用

DELTA系統(詳細版)

概覽

匯報

爲什麼是 DELTA

Delta機器人 代碼

Pleroma 从入门到精通(误)

现在暂时在这里放一个写作大纲:

所以这算是什么?
Pleroma 从安装到管理迁移
划掉
Linux 从入门到后端运维
划掉
计算机网络从入门到精通
划掉
操作系统原理
划掉
计算机文化基础及硬件组成
划掉
……
总结:
Pleroma 教程从大纲到放弃

因为实在是太多内容了,打算建一个 wiki 来分页面放:

现在维基页面搭在这里。 (是的,我买了新域名啦!但是因为想把新域名用到更公共的内容上,所以还是把这个博客赖在 qoto.io 上。)

暂定是使用 DokuWiki,配合 Markdown 插件(方便编辑)、Git 插件(数据公开存档)、RSS 插件(可以做个长毛象更新 bot?)。大家也可以来写一写? (版权(CC-BY-SA 等等)得说好了。)

大纲

  1. 计算机是什么?

    • CPU、内存、硬盘

    • VPS 是什么?

  2. 网络是什么?

    • 端口是什么?

    • IP 是什么?域名又是什么?

    • SSL/TLS 是什么?证书又是什么?

  3. 联邦宇宙、Mastodon、Pleroma 是什么?

  4. Linux 简明教程:

    1. 各个发行版?

    2. 用户是怎么回事?

      1. 所谓的多用户系统,以及用户权限问题。

    3. 命令行基本逻辑以及语法。

      • Shell

    4. $EDITOR 已死,$EDITOR 万岁!(VIM 已死,Nano 万岁!)

    5. 服务器是什么?Nginx 是什么?为什么服务器还能套服务器还能套服务器?

      • 所谓反向代理

      • Cloudflare 是怎么回事?

        • Cloudflare 的 TLS 设置 flexible 与 Let’s Encrypt

    6. Swap 呀 swapfile

  5. Pleroma 安装

    1. 域名选购

      • 给个其它大佬的外链

    2. 服务器选购

      1. 对服务器配置的要求

    3. Docker 是什么?我要不要用 docker?

      • 因为本人不会( can’t )用 docker,所以教程使用手动安装

    4. Cloudflare 是什么?

  6. Pleroma 管理

    1. 配置:存在文件上还是在数据库里?

    2. 备用域名?基于 Cloudflare Workers 的代理

域名选购

我是在 porkbun.com 购买域名的,因为似乎便宜一些。可以参考 BGME 的域名选购的注意事项 ,引用 BGME 的总结::

不要使用中国国内的域名注册商注册域名,也不要注册域名注册局位于中国的域名。

大概率在这里不更新了

大概会放到 wiki 上。