圆锥曲线的反射性质

当一束光从焦点发射,并在与圆锥曲线相交的点处发生反射时,反射的光线必定:

  • 穿过另一焦点(椭圆);
  • 反向延长后穿过另一焦点(双曲线);
  • 与对称轴平行(抛物线)。这个性质使得它的旋转曲面很适合用来发出/收集平行光。

证明的办法:先在曲线上任取一点P,作焦点和P的连线(如果是抛物线则另作一条过P且与对称轴平行的线),然后证明所作的线与法线(或切线)构成的锐(直)角相等即可。

继续阅读 →

ABC记法

ABC是一种文本记谱法, 既方便人工录入,也方便计算机读取。

继续阅读 →

用SquashFS存储Portage树

Gentoo系统中的Portage树存储了软件仓库中所有软件的元信息。其中最主要的是Ebuild脚本,它记载了软件的编译方法、依赖关系等。它通常位于/usr/portage

可想而知,这个树中包含了大量的文件,因此占用了很大的磁盘空间。根据我最近的测量,

  • 所有文件的大小总和超过300MiB;
  • 实际占用磁盘空间超过600MiB (ext4)。

但实际上,其中大部分文件都比较小,且属于较易被压缩的文本文件。因此,值得考虑使用一种压缩的文件系统存放Portage树。

SquashFS是一种可压缩的只读文件系统。将Portage树的全部内容放在其中,只需约50MiB的存储空间。

在配置SquashFS的过程中,走了一些弯路。因此,我把操作过程记录在这里,以便日后参考。

继续阅读 →

近代科技:IRC

IRC (Internet Relay Chat) 是 90 年代提出的互联网协议。 用户可以连接到 IRC 上与其他用户进行即时通讯。多个用户可以在一个频道(类似聊天室的概念)交流,也可以进行两用户间的一对一交流。 协议很简陋,只能传输文本内容。即便如此,这个协议体现了早期互联网标准化和开放的特点:任何人可以根据标准,制作自己的实现;不同的实现可以互联互通。

和IRC有关的更多信息可以参考 http://www.irchelp.org/

继续阅读 →

文摘

严复在一篇文章中提到这样一句话:

華風之弊, 八字盡之: 始於作偽, 終於無恥。

话说得很重, 但有时也是非常准确的。

查询这句话的出处时, 又看见了他写的《論世變之亟》。 其中有一些句子至今仍值得思考。

继续阅读 →

文摘

……被看作什么,很大程度上是基于社会认同和社会价值观的。 ……说不好听的,都是一些人为了增加自我认同感和群体认同感,为整个社会风气强行定下的规则和秩序,是充满着固执与偏见的。并不是所有人都要把某一个人认为重要的事情,当作对自己也同样重要的事情来看待的,我们所谓的自由权利,也如此…… ……习惯“适可而止”的人怎么着都会适可而止,不会有这些烦恼,而不想适可而止,无非就只是因为不愿意被条条框框所束缚。但反而是这样一群不死板的人,会展现出更多的创造力,越是看那些需要想象力、创造力的行业,越会发现这样“不适可而止”的人有更多更大的成就。 原文作者:凌子卿 继续阅读 →

手动双面打印

在不具备自动双面打印功能的硬件/软件上, 可以通过先打印偶数页、 然后将纸张放回, 再打印奇数页的方法实现手动双面打印。 在一些打印机上, 需要将放回的纸张调转方向; 这可以通过打印偶数页时调转页面方向来避免。

在使用 CUPS 的机器上, 可以使用以下脚本实现此功能:

#!/bin/bash

# Usage: ./duplex.sh [options] <file>

lp -o page-set=even -o orientation-requested=6 -o outputorder=reverse "$@"
printf "Put the paper in tray and hit Enter"; read
lp -o page-set=odd "$@"
继续阅读 →

古代科技: desk calculator

dc 是 UNIX 系统上的计算器 (desk calculator) 程序。 它采用逆波兰表达式 (RPN) 语法, 和平常使用的算术表达式稍有不同。 如: 1 2 + 3 * 表示 (1+2)*3。 RPN 的好处是不用输入括号, 且熟练掌握后效率很高; 缺点是难以上手。

dc 的计算能力不仅限于此。 实际上, 它是一个图灵完备的语言, 并且据说是第一个被移植到 UNIX 系统上的语言。 由于可以定义并调用宏, 它具备了分支和循环的能力, 因此可以写出各种各样的程序。

继续阅读 →

WiFi 和睡眠

本文要讨论的不是人的睡眠而是计算机的睡眠 (suspend) 操作。

我的 Gentoo 系统上有一个困扰了我很长一段时间的问题: 当计算机从睡眠状态中恢复时, 我的无线网络连接往往会失效。 这时, 我需要手动重置无线网络服务:

/etc/init.d/net.wlp4s0 restart

究其原因, 是 DHCP 客户端未能在唤醒时重新申请新的 lease, 路由表也没有被更新。

/etc/wpa_supplicant/wpa_cli.sh, 这个脚本在无线网络连接/断开时会被触发, 但是并不会触发 DHCP 客户端重新获取 lease。 所以一个简单的解决方案是在这里加上 DHCP 的操作。 查看 udhcpc 的帮助, SIGUSR2 和 SIGUSR1 分别可以用于释放和重新申请 lease:

继续阅读 →