分类 Note 下的文章

CSAPP_3rd_Edtion

CSAPP即是传说中的《Computer Systems: A Programmer's Perspective》,中文版译作《深入理解计算机系统》,在原书第三版出版(2015-03-11)一年多后,终于在2016年底出版了中译版。虽然中文版书名有"深入"两字,本书却是CS专业不折不扣的入门级教材。

拿到书的第一感觉是印刷装订很好,双色印刷,纸张非常出色,完全不同于机工有一阵子薄的惨不忍睹的纸张。同第二版相比,第三版的Chap2 3 4 5 7 8 11 12均有较大程度修改。

The biggest overall change from the second edition is that we have switched our presentation from one based on a mix of IA32 and x86-64 to one based exclusively on x86-64. This shift in focus affected the contents of many of the chapters. Here is a summary of the significant changes.

- 继续阅读 -

编译Linux内核

从Debian 5开始接触Linux,主要当桌面系统使用。最近在业余时间尝试了一下编译内核,记录一下主要步骤。

1. 准备工作

目前安装的系统是Debian testing,内核版本4.8.0,先将所有软件包升级到最新

$sudo aptitude update
$sudo aptitude upgrade

安装编译工具包

$sudo aptitude install build-essential

安装ncurse和ssl开发库

$sudo aptitude install libncurses5-dev libssl-dev

- 继续阅读 -

Git合并多次提交

理想的开发过程,是在原始代码的基础上,继续开发新功能,每完成一个功能点提交一次。实际工作中可能发现实现一个功能点需要很长时间,这期间在Git中会有多次临时的提交(没认真写 commit message 的提交~),希望最终保留在Git中的只有初始版本和添加了新功能的版本,去掉所有中间状态的混乱提交,可以用 git diff 和 git apply 实现。

- 继续阅读 -

12_Steps_to_Better_Code

Copy From:
The Joel Test: 12 Steps to Better Code
https://www.joelonsoftware.com/2000/08/09/the-joel-test-12-steps-to-better-code/

1. Do you use source control?
2. Can you make a build in one step?
3. Do you make daily builds?
4. Do you have a bug database?
5. Do you fix bugs before writing new code?
6. Do you have an up-to-date schedule?
7. Do you have a spec?
8. Do programmers have quiet working conditions?
9. Do you use the best tools money can buy?
10. Do you have testers?
11. Do new candidates write code during their interview?
12. Do you do hallway usability testing?

Chinese Translation
http://local.joelonsoftware.com/wiki/Chinese_(Simplified)#The_Joel_Test:.E8.BD.AF.E4.BB.B6.E5.BC.80.E5.8F.91.E6.88.90.E5.8A.9F_12.E6.B3.95.E5.88.99

卸载旧版本Linux内核

Linux系统经过多次升级以后,会有很多旧版本的内核保存在硬盘,可以将这些不再使用的内核卸载,节省硬盘空间。

系统升级安装的内核

查看已安装的内核

$sudo dpkg -l | grep linux-image
$sudo dpkg -l | grep linux-headers

其中,linux-image-VERSION 是内核映像文件,linux-image-extra-VERSION 是内核扩展模块,linux-headers-VERSION 是内核头文件,VERSION 代表具体的内核版本号,比如

linux-image-4.8.0.2-amd64
linux-headers-4.8.0.2-amd64

确定要删除的内核版本,用下面的命令进行删除

$sudo aptitude purge linux-image-VERSION
$sudo aptitude purge linux-extra-VERSION
$sudo aptitude purge linux-headers-VERSION

更新 grub

$sudo update-grub2

手动编译安装的内核

从源码手动编译安装的内核版本,需要手动删除文件。查看所有可引导的 Linux 内核

$ls -l /boot

删除内核文件

sudo rm -rf /lib/modules/*VERSION*
sudo rm /boot/*VERSION*
sudo rm /var/lib/dpkg/info/linux-headers-VERSION*
sudo rm /var/lib/dpkg/info/linux-image-VERSION*
sudo rm -rf /usr/src/linux-headers-VERSION
sudo rm -rf /var/lib/initramfs-tools/VERSION

更新 grub

$sudo update-grub2