Song Ziming's Blog

在中国知网下载 PDF 格式的学位论文

中国知网真是奇怪,非要自己搞出一个封闭的 CAJ 格式,学位论文还不提供 PDF 的格式,逼着人们只能去下载它们的 CAJViewer,最不可忍受的是竟然没有 Linux 下的版本!但是群众的智慧是无穷的,最近发现,通过一个 userscript 就可以给学位论文页面加上“PDF 下载”的按钮。所谓 userscript,就是一个浏览器插件,能够动态地修改页面内容。在 Chrome 浏览器中,需要

Read More

使用 LD_PRELOAD 拦截库函数调用

LD_PRELOAD 是 Linux 下一个很有意思的环境变量,通过这个变量,可以在运行程序时强制加载某个动态库,而且是最先加载。通过 LD_PRELOAD 可以非常方便地拦截库函数的调用,而且不需要修改可执行程序。拦截 strlen下面通过一个例子来演示 LD_PRELOAD 拦截 strlen 的方法。首先是一段测试代码:#include <stdio.h>#include &lt

Read More

用 GCC 和 Makefile 自动处理依赖关系

Make 是一个非常好的工具,但是 Makefile 的编写却不是很方便,尤其是编译依赖关系的确定上。假设一个 C/C++ 项目有许多源文件、许多头文件,每个源文件里都引用了一些头文件。这时如果修改了其中的一个头文件,为了加快工程编译速度,应该只有引用了被改动头文件的源文件需要重新编译,其他源文件不需要再次编译。但是,Make 并不知道哪些源文件引用了这个头文件,要确定哪些源文件需要重新编译,只能

Read More

让 Qt5 支持 fcitx

Qt5 有一个让人头疼的问题,就是 Linux 下的中文输入法一直有问题。这篇文章给出了一种解决办法,通过复制文件实现,然而发现 Qt 版本 5.4 中此法并不能用,只要尝试启动程序就会段错误。fcitx-qt5在 Github 上有一个 fcitx-qt5 项目,将这个项目的代码克隆到本地:git clone https://github.com/fcitx/fcitx-qt5.git这是一个使

Read More

计算机的启动过程

计算机的启动,实际上是一个很复杂的过程。本文将会介绍启动过程的每个步骤、每个细节。本文的叙述主要针对使用 X86 系列 CPU 的 IBM-PC 及其兼容机器,目前主流的台式机和笔记本都是这种架构。另外,操作系统方面,本文主要针对装有 GRUB 引导器的 Linux系统。整体流程在进入细节之前,我们先来对启动的过程做一个大体介绍,看一下从按下开机键到 OS 正常运行都经历了哪些过程。按下开机键之后

Read More

使用 xdotool 模拟用户交互

命令行下,对于一些常用而重复的命令,可以使用脚本来自动化;而对于图形界面程序,则可以使用 xdotool 来模拟用户的鼠标键盘输入。xdotool 是一个命令行工具,用户可以通过命令或者脚本模拟鼠标和键盘的动作,使用命令行控制图形界面。安装通常,发行版的软件源应该包含 xdotool,例如 Debian/Ubuntu 下可以通过 sudo apt-get install xdotool 来安装。如

Read More

使用 Hexo 构建静态博客

静态博客有许多好处,其中最核心的一点就是轻便。省去了后端和数据库,只有最基本的静态 HTML 文件,全部由静态博客生成器负责创建。Hexo 是一个 Node.js 编写的静态博客生成器。这些生成器往往采用现有的 Web 框架,但不是在收到 HTTP 请求的时候渲染页面,而是在执行生成的时候就把所有 Markdown 格式的源文件转换为 HTML。Hexo 支持 EJS、Handlebars、Jad

Read More