0%

通过快捷键,可以方便地在 Linux 命令行下快速移动光标、编辑命令、编辑后执行历史命令、Bang(!) 命令、控制命令等,有效提高工作效率。

说明

  • Ctrl+K:先按住 CTRL 键,然后再按 K
  • Ctrl+KL:先按住 CTRL 键,然后再按 K 键,然后松开 K 键,再按 L
  • Alt+K:先按住 ALT 键,然后再按 K
  • Meta+K:先单击 Meta(Esc)键,然后再按 K

移动光标

  • Ctrl+ 左右键:在单词之间跳转
  • Ctrl+A:移到行首
  • Ctrl+E:移到行尾
  • Ctrl+B:往回(左)移动一个字符
  • Ctrl+F:往后(右)移动一个字符
  • Ctrl+XX:在命令行尾和光标之间移动
  • Alt+B:往回(左)移动一个单词
  • Alt+F:往后(右)移动一个单词
  • Meta+B:往回(左)移动一个单词
  • Meta+F:往后(右)移动一个单词

编辑命令

  • Ctrl+H:删除光标左方位置的字符
  • Ctrl+D:删除光标右方位置的字符(注意:Ctrl+D 也代表 EOF,当前命令行没有任何字符时,会注销系统或结束终端)
  • Ctrl+W:由光标位置开始,往左删除单词(往行首删)
  • Alt+D:由光标位置开始,往右删除单词(往行尾删)
  • Meta+D:由光标位置开始,删除单词,直到该单词结束
  • Ctrl+U:由光标所在位置开始,删除左方所有的字符,直到该行开始
  • Ctrl+K:由光标所在位置开始,删除右方所有的字符,直到该行结束
  • Ctrl+Y:粘贴 Ctrl+U Ctrl+K 剪切的内容到光标后
  • Ctrl+T:交换光标处和之前两个字符的位置
  • Alt+.:使用上一条命令的最后一个参数
  • Ctrl+_:回复之前的状态,撤销操作

另外,Ctrl+AK Ctrl+EU Ctrl+KU 组合可删除整行。

阅读全文 »

____擅于发现美的事物,并从中吸收能量,变得越来越好看。
____笑起来像个孩子,把他带在身边,能带来青春永驻的效果。
请多给予____一点睡眠时间。
____偶尔也有像天使一样温柔的时候。
____喜欢自由,适合经常带出去放养。
肚子饿了就会心情不好,带____一起去吃美味的食物吧!
____常常给身边的人带来好运。
____因为太可爱了,会令人陷入沉迷,属于正常现象。
____遇到香喷喷的东西就会变圆。
可能因为材质特殊,____对外界的攻击有折射能力。
____虽然经过多次更新迭代,但依然有颗纯真的心。
____发光的时候,可能会使对象产生短时眩晕,使用时请注意。
____拥有迷之运气,中乐透的实力异于常人。
只要缘分到了,____自己就会瘦下来。
____拥有高性能大脑,可快速运转,但过度工作(学习)容易发热。
____买买买时会释放出强大气场,胆子也会变大。
____常常因为无法体验人类的乐趣而神伤。
____是能带来元气和灵感的谜之吉祥物。
____心心念念的梦,会在某个不经意的时候实现。
____的光芒太耀眼,但也不至于会刺瞎别人。
____历经严苛质检品控,是市面上难得一遇的珍品。
只要对____倾注感情,他就能成为最可靠的伙伴,遇到危机可无限次召唤。
____的出厂设定就是温暖的守护者,也是周围人快乐和活力的源泉。
____有极为罕见的感官知觉,对他说谎可不是明智之举。
____装备了精准的探测仪,能发觉并把握住人生中真正的机会。
____能通过每次挑战完成升级,获得更高的智慧和运气。
____具备安全与稳定性,是居家、旅行必备的小能手。
____能快速拆卸烦恼,重新制作出充满乐趣和创造力的产物。
变态(萌)是____的常态。
保温杯和泡脚桶,可延长____的使用寿命。
____偶尔会孤单,但也能享受孤单,是一款自由的产品。
____对时间的感知力弱,所以不知不觉又加班了。

阅读全文 »

B 站的每个视频都有 aidcid 两个参数,在已知视频 aid(即 AV 号)的情况下,可以通过链接 https://www.bilibili.com/widget/getPageList?aid=10492 获取 cid(将 10492 替换为你要查询的视频的 aid)。
视频的更多信息则可以通过 https://api.bilibili.com/view?type=jsonp&appkey=8e9fc618fbd41e28&id=10492 获取。
视频的弹幕文件采用 xml 格式存储,地址与其 cid 有关,为 https://comment.bilibili.com/$cid.xml(将 $cid 替换为视频的 cid)。
对于有许多分 P 的视频,它们的 aid(AV 号)相同,每个分 P 则对应一个不同的 cid。而在同一个页面下的番剧、影视等内容,每一分集的 cid 也是唯一的。
弹幕内容的存储方式为:

1
<d p="0,1,25,16777215,1312863760,0,eff85771,42759017">前排占位置</d>

这个元素中的各个参数由逗号分割,其意义分别为:

  • 弹幕出现的时间,以秒为单位
  • 弹幕的模式:1~3 滚动弹幕 4 底端弹幕 5 顶端弹幕 6 逆向弹幕 7 精准定位 8 高级弹幕
  • 字号:12 非常小 16 特小 18 小 25 中 36 大 45 很大 64 特别大
  • 字体的颜色:将 HTML 六位十六进制颜色转为十进制表示,例如 #FFFFFF 会被存储为 16777215,因为
  • Unix 时间戳,以毫秒为单位,基准时间为 1970-1-1 08:00:00
  • 弹幕池:0 普通池 1 字幕池 2 特殊池(注:目前特殊池为高级弹幕专用)
  • 发送者的 ID,用于「屏蔽此弹幕的发送者」功能
  • 弹幕在弹幕数据库中 rowID,用于「历史弹幕」功能

将 Bilibili 弹幕的 xml 文件转为 ass 字幕,可以使用以下脚本:
bilibili ASS 弹幕在线转换
us-danmaku

关于 ass 字幕格式可以参考以下文章:ASS 字幕格式规范

拓展阅读:
Bilibili 视频播放页面接口整理(不定期更新) - 知乎
Bilibili 爬取视频信息进行数据分析

能够输出自身的代码被称为 Quine,以哲学家 Willard van Orman Quine(1908-2000)而命名。
Quine 在图灵完备的语言中都是可行的。在可计算性理论(computability theory)中,图灵等价指的是:对于两个计算机 A 和 B,如果 A 可以模拟 B,B 可以模拟 A,就称他们是图灵等价的。根据「丘奇 - 图灵」理论,图灵机是表达能力最强大的计算系统,对现实世界中的任何计算机,都可以用图灵机来模拟它。
套用上面的定义,如果一个编程语言可以完全模拟图灵机,那么它就是图灵完备的。大部分编程语言都是图灵完备的,因为他们需要解决各种问题的通用能力,而这正是图灵机所具备的。不过也存在一些语言不是图灵完备的,他们通常是被设计用来解决某些特殊的问题,比如 SQL 以及正则表达式。


Shell

1
z=\' a='z=\\$z a=$z$a$z\; eval echo \$a'; eval echo $a

PHP

1
echo file_get_content(__FILE__);

JavaScript

1
!function $(){console.log('!'+$+'()')}()
1
var s = 'var%20s%20%3D%20%27__%27%3B%20console.log%28unescape%28s%29.replace%28%27__%27%2C%20s%29%29'; console.log(unescape(s).replace('__', s))

Python

1
r='r=%r;print (r%%r)';print (r%r)
1
2
3
x='y="x="+`x`+"\\n"\nprint y+x'
y="x="+`x`+"\n"
print y+x
阅读全文 »

APK,即 Android 应用程序包(Android application package),是 Android 操作系统使用的一种应用程序包文件格式,用于分发和安装移动应用及中间件。一个 Android 应用程序的代码想要在 Android 设备上运行,必须先进行编译,然后被打包成为一个被 Android 系统所能识别的文件才可以被运行,而这种能被 Android 系统识别并运行的文件格式便是 APK。一个 APK 文件内包含被编译的代码文件 (.dex 文件),文件资源(resources), assets,证书(certificates),和清单文件(manifest file)。

APK 文件基于 ZIP 文件格式,它与 JAR 文件的构造方式相似。因而,直接解压 APK 文件可以得到一部分信息,如 classes.dex 等。如果要进行更详尽的分析,就需要用到反编译的工具了。

准备工作

下载最新的 JDK

前往 ORACLE 官网,在底部找到 Download Java for Developers,点击该链接,在打开的页面中找到 JDK,选择 Download,然后下载对应的版本即可。

配置 JDK

下载完成后,打开 dmg 镜像进行安装。JDK 会被安装到 /Library/Java/JavaVirtualMachines 目录下。为了能在终端正确运行最新的 JDK,需要配置环境变量。在 ~/.bash_profile 中增加以下内容:

1
2
3
4
5
6
JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_40.jdk/Contents/Home
PATH=$JAVA_HOME/bin:$PATH:.
CLASSPATH=$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar:.
export JAVA_HOME
export PATH
export CLASSPATH

其中,将 jdk1.8.0_40.jdk 换成你所安装的 JDK 对应的版本和目录。修改完成后,重开终端或使用

1
source ~/.bash_profile

使环境变量生效。

下载 apk 反编译组件

需要下载的程序包括:

一些论坛里会把它们称为「APK 反编译三件套」。

阅读全文 »