卸载旧版本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

Code Snippet - Run_Only_One_Instance_of_Application

在实际使用场景中经常要求程序同时只能运行一个实例,特别是硬件独占型的任务。如果有多个进程对硬件进行操作,往往会引发莫名其妙的错误。

实现此需求最简单的方式是使用互斥量Mutex,创建互斥量的函数原型为

HANDLE WINAPI CreateMutex(
  _In_opt_ LPSECURITY_ATTRIBUTES lpMutexAttributes,
  _In_     BOOL                  bInitialOwner,
  _In_opt_ LPCTSTR               lpName
);

- 继续阅读 -

Code Snippet - ListCtrl_with_Edit_and_ComboBox

MFC中的ListCtrl是一个使用频率相当高的控件,不过框架自带的控件功能有限,如果需要在ListCtrl中嵌入其他的控件,比如Edit或ComboBox,则需要用户来实现。codeproject上有一个实现

Customized Report List Control With In Place Combo Box & Edit Control
https://www.codeproject.com/Articles/5709/Customized-Report-List-Control-With-In-Place-Combo

不过这个工程已经非常古老,还是2003年提交的代码,直接放到新版本的VS中会编译不过,需要对代码进行修改。有网友提供了修改后的代码,下载地址见参考资料。

- 继续阅读 -

推荐两个有趣的软件

1. Gource

Gource是一个基于OpenGL的3D虚拟化演示工具,通过读取版本控制系统的日志,将所有commit历史通过动画展现出来,非常酷炫,支持Git、Mercurial、Bazaar及SVN。

官网地址
http://gource.io/

GitHub地址
https://github.com/acaudwell/Gource

要是问Gource有什么实际作用,就是做Presentation时收获若干 Wow, cool~~

2. PaperBack

最有效的数据保存方式是什么?

《三体》中的答案是刻在石头上...

OllyDbg的作者Oley Yuschuk大神给出了另外一个办法:Paperbak,可以把文件存储到一个巨大的Bitmap图像中。根据官网的介绍,如果打印机的分辨率达到600 DPI,一张A4纸可以保存500000 Bytes的数据。

使用说明及软件下载,请访问官网
http://ollydbg.de/Paperbak/

Setting up Proxy on Debian

Debian上并没有一个统一的"区域"或"选项"来设置代理服务器,有些桌面环境会提供这样的功能,或者使用软件自带的选项。不过系统中已经提供了一些预定义的环境变量(Environment Variable),可以通过这些变量来设定代理服务器地址。

- 继续阅读 -