直接简单地运行 chroot <new-root-dir>
不足以正常运行一些程序,因为很多程序需要访问 procfs
、 sysfs
、 devfs
等特殊的子目录,直接 chroot
更改根目录后这些子目录没有被挂载,内容都是空,导致这些程序出现问题。
科技文献中常见的数词来源
之前经常在科技文献中看到这些词的使用:
- 表示数进制的:bin、oct、dec、hex ...
- 表示参数个数的:nullary、unary、binary、ternay ...
- 表示倍数的:single、double、triple、quadruple ...
- 表示优先级的:primary、secondary、tertiary ...
- 表示几何形状的:triangle、tetragon、pentagon、hexagon ...
如何将 Python 模块打成 DEB/RPM 包
Python 模块的安装可以用 easy_install 或 pip 方便地完成,但此类工具难以应用在生产系统的部署中。使用 DEB/RPM 包的好处是大规模部署简单、容易回滚且能以一致的方式管理依赖,所以需要将 Python 模块打成此类原生包。
org2blog 如何发布左对齐的 LaTeX 公式
通常情况下 Wordpress 上的基于 MathJax 显示的 LaTeX 插件总是将独立公式显示为居中对齐的,但当文章中的公式都比较短时居中对齐就显得不太美观。若想让独立公式在文章中总是左对齐,可以在编辑 org2blog 内容时在正文开始前加入如下片段:
1 | <script type="text/x-mathjax-config"> |
org2blog 发布语法高亮源码块的注意事项
Org2blog 要在 Wordpress 中发布语法高亮的源码区块,需要做以下准备:
- Wordpress 中要安装 SyntaxHighlighter Evolved 插件
- emacs 中添加设置以将 pre 区块转换为 sourcecode 区块以让语法高亮插件工作:
(setq org2blog/wp-use-sourcecode-shortcode t)
编译 Java 程序时出现 code too large 错误的分析
我参与的一个实际项目里用到了 ANTLR 3.x 进行 parser 代码自动生成,其中含有大量的 static field 用作状态转移查找表。由于一个 class 中所有 static field 都是放在一个匿名 method 中统一进行初始化,而 Java VM 规范规定一个 class 中单个 method 中 bytecode 长度最多不能超过 65535 bytes,这个自动生成的 parser class 始终无法在 javac 上编译,总是会提示 error: code too large
。但问题是在 Eclipse 中编译使用该文件完全没有问题,由于 65535 bytes 的限制是 Java VM 规范所规定,同生成 class 的编译器没有关系,因此原因只可能是 ecj 生成的 bytecode 比 javac 少,这就有点儿诡异了。
使用 Terratec Cinergy T Stick+ DVB 电视卡进行 RTL-SDR 实验时的几点注意事项
- Terratec Cinergy T Stick+ 相关驱动仅在 kernel 3.7 及以上版本中并入了主干
- 使用之前版本内核的同学需要自行从
git://linuxtv.org/media_build.git
检出代码编译安装驱动模块 - 详情见 http://www.linuxtv.org/wiki/index.php/TerraTec_Cinergy_T_Stick%2B
- 使用之前版本内核的同学需要自行从
- 安装 rtl-sdr 工具后,请确保
/etc/udev/rules.d/
中增加了其给出的 udev 规则以对设备结点权限进行修正,否则只有 root 才能访问 DVB 设备 - 使用 rtl-sdr 等 SDR 工具前,需要将自动加载的 dvb_usb_rtl28xxu 模块卸载,否则 SDR 相关工具会无法打开 DVB 设备并报错,建议检出最新版 rtl-sdr 代码并使用
--enable-driver-detach
选项配置后编译安装,这样 rtl-sdr 工具一旦发现设备被该模块占用便会将其自动卸载。
对 GNUCash 进行的一点儿改进
当前版本的 GNUCash 在连接 MySQL 数据库时有个比较严重的字符编码问题:为了兼容 Unicode 字符,GNUCash 在 gnc_dbi_mysql_session_begin()
函数中主动执行 SET NAMES 'utf8'
语句设定 MySQL 连接字符编码为 UTF-8,但遗憾的是用来在连接故障时修复连接的 gnc_dbi_verify_conn()
函数并没有进行类似的操作。一旦数据库连接因网络问题意外断开,用户输入新交易时就会使用 gnc_dbi_verify_conn()
重新创建的新连接,而该连接的字符编码是默认的 latin1,直接后果就是输入中文等字符都变成了一堆乱码。
修复 GNUCash 数据库中的乱码
GNUCash 是一款很好的记账软件,但在使用 MySQL 作为存储后端时,由于其对连接字符集的设置有漏洞,容易出现记账备注中的中文变乱码的情况。此时,可以在 MySQL 中执行如下 SQL 语句完成修复工作:
1 | UPDATE splits SET memo = CONVERT(BINARY(CONVERT(memo USING latin1)) USING utf8) WHERE CHAR_LENGTH(CONVERT(BINARY(CONVERT(memo USING latin1)) USING utf8)) != CHAR_LENGTH(memo); |