1. 安装配置 LXR

    专业课学习操作系统,满心欢喜地以为可以是 Linux 代码导读,结果选用了一本八十年代的教材,介绍 UNIX v6 的。于是自己从图书馆借来了内核开发的入门读物《Linux 内核设计与实现》。既然是介绍内核的书,自然少不了代码,但是书中又不可能将每个提到的代码的相关信息全部写出来,这时就得自己去查看代码。查看代码的话,虽然 Linux 的代码可以很容易地得到,但那来看终归有些麻烦,各种调用需要查找半天。于是想起了很有名的一个网站 LXR,Linux 交叉引用。这个网站好是好,就是网络原因速度太慢,于是就想自己装一个。

    先说一句,下面的安装环境都是64位 Gentoo。

    最开始找到了 LXR Cross Referencer 这个项目,一看最后更新时间还挺新,看起来是一直都还在维护的。然后在 Gentoo 的网站上查到 LXR 是可以直接用 portage 安装的,于是安装,安装相关的包,最后放弃了。出于什么原因我也不记得了 ...

    read more

    There are comments.

  2. Gmail 的超级子邮箱功能

    如果你也用 Gmail,他可以让你轻易拥有无限多的子邮箱,发给这些邮箱也就等于发给你的邮箱。这有什么意义呢?很简单,你可以在每个地方注册的时候都使用不同的邮箱,这样当你收到垃圾邮件广告邮件,你就可以知道是从哪里来的了~再结合 Gmail 强大的过滤器,你也可以针对性的进行屏蔽~

    Gmail 事实上支持两种方式来扩张你的邮箱,第一种是在你的用户名后面加上“+”和任意字符串,比如我的邮箱 quanxunzhen@gmail.com(我这邮箱无所谓了已经嗯),如果我想要识别不同的网站,比如豆瓣,我可以直接在豆瓣的注册邮箱里填写 quanxunzhen+douban@gmail.com,所有验证邮件都可以发给我,我如果不想申请一个新邮箱却想注册个豆瓣小号,也可以再写 quanxunzhen+douban2@gmail.com

    当然,支持上面的方式固然是最好的,但遗憾的是很多网站并不支持带加号的邮箱,那就要稍稍麻烦点了。

    根据 @fanzeyi 的说法,Gmail 的邮箱是自动忽略点,也就是“.”的,也就是说对于我上面的邮箱,如果写为 quan ...

    read more

    There are comments.

  3. 增强版的 Bash 提示符

    上周六参加了好久没有参加的的 SHLUG 月聚,恰逢 TualatriX 也带团来上海。自由讨论的时候,我看到 TualatriX 的终端十分色彩斑斓,便询问,他给我们展示了他的 bash 的两个特色功能:1、当上一条命令返回结果不为0时显示返回值并高亮显示提示符;2、自动检测git分支。他说这个在他的博客上都可以找到,今天想起来去找了一下,发现了这篇:史上最强的PS1 | I’m TualatriX,感觉满强大的。

    不过,说实话,我觉的这个还不够完美,原因有二:一是我发觉高亮显示的时候那个配色相当不怎么样,二是我本来就讨厌提示符太长,这样一下就更长了……于是我就想起 ghosTM 的 zsh 里面有一些信息是放在右边的,我想把返回值也扔右边去,并且是右边上移一行。此外,由于很少使用 git,所以检测 git 分支的功能也就不需要了~

    先放一个最终效果图: Bash 提示符的最终效果图

    然后直接写出了我的新的 PS1

    PS1 ...
    read more

    There are comments.

  4. 关于饭否的两个小脚本

    前几天因为某些原因,我把饭否上所有的好友和关注者全部清空了。当然,如果没有程序的帮忙,估计还不等我删完我也就后悔了。

    我没有那么狠心的把饭否的消息给清空,因为消息是不可恢复的(而且也太多了),但好友和关注者是可以的。做事情都给自己留后路显然是我一贯的风格,不然的话,我大概早从我家阳台跳下去了……

    两段脚本都不长,第一段是备份饭否的好友列表和关注者列表的,做的毫无泛用性,因为 bash 编程我并不很熟,只知道可以用 wget 来抓取。本来这种事情其实可以直接用 API 抓的,不过我想抓下我能直接看的东西,所以最终还是导出了 Cookie 抓网页。

    第一段代码如下:

    #!/bin/bash
    
    mkdir friends
    for i in {1..11}
    do
        wget -k -e robots=off --load-cookies cookies.txt -P friends/ \
            http ...
    read more

    There are comments.

  5. 为 Linux 做一把 USB “钥匙”

    我曾经很早以前就在想,能不能将U盘作为登入我系统的验证机制。当时的想法是,这样比较有趣~不过后来发现另外一个重要的用途就是,防止在众目睽睽之下输入密码……

    这个问题提出后,邮件列表里很快就有人告诉我,Linux 已经有一个现成的机制了,这就是 pam_usb。不过我在网上搜了半晌都没搜到相关的中文资料,前几天弄成了,就写出来供大家参考~

    其实来说,是很简单的。首先,当然,要准备一个U盘~(废话),然后安装 pam_usb。在 Ubuntu 下的话,源里就有,可以输入命令

    sudo apt-get install pamusb-tools
    

    直接安装。当然如果你连终端也懒得打开,可以直接点击这里:安装 pamusb-tools。当然,在后面的步骤中你终归还是要打开终端的,所以还是先开了吧~这个东西目前暂时还没什么图形界面的样子(当然做一个相信也不难)。

    另外,Fedora 源里有 pam_usb 包,Arch ...

    read more

    There are comments.

  6. 寻找更高仿的 ID 第二季

    继上一篇文章之后,我又下大力气对这个程序做了许多修改,在精确度和速度方面似乎都有些许提高。在此推出第二季~

    使用真正的 12px 宋体

    在上一次的程序中使用的 PIL 似乎是因为不支持宋体 ttc 文件中对于小字体下优化的点阵形式,才在选择小于 19px 的字号时不能正确渲染汉字。考虑到这一点,我就想到把 ttc 文件里面 12px 的点阵字体单独提取出来使用,毕竟贴吧上面显示 ID 都是用这个字号显示的。

    使用 FontForge 提取出来了 simsun-12.bdf 文件,就是宋体 12px 下的点阵。参考 PIL 的手册,发现 PIL 不能直接使用 .bdf 文件,需要使用一个叫做 pilfont 的脚本转换成专有的 .pil 文件才行。我想转换就转换呗。simsun-12.bdf 一个 ...

    read more

    There are comments.

  7. 寻找更高仿的 ID

    今天大学军训完了,不想做什么正经事,就想到前一段时间想做的寻找相似汉字的程序,用以寻找更高仿的贴吧 ID。用程序来寻找相似汉字,从另一个角度,也是从 Matrix67 大牛的一篇日志里得到的启发。不过 Matrix67 大牛使用的是 Mathematica 来寻找,我不大会 Mathematica,就想用我熟悉的 Python 来解决,毕竟 Python 是一个很强大的东西~

    其实寻找的思路很简单,就是把某个汉字当作图片弄出来,让后对比两个图片的相似程度。因此做这个程序的第一步就是研究如何用 Python 处理图片和文字。Python 有一个非常著名的第三方库,名叫 Python Imaging Library,简称 PIL,就是专门用来处理图片的。

    文字 to 图像

    PIL 可以很轻松的将文字转换为图像,并且提供了虽然不能说是强大,但暂时够用的图像处理函数。

    处理文字生成的图像,显然和彩色没有太大关系,因此可以使用灰度图像节省计算需要的空间和时间。此外我们知道,文字到图像有一个中间媒介 ...

    read more

    There are comments.

  8. 半完美解决 zip 文件中中文文件名乱码的问题

    前一段由于收了某个 zip 文件,用 Ubuntu 自带的归档管理器打开,哎呦,那真不是一般的蛋疼……因为里面全是中文文件名,那个乱码啊……

    于是我就下决心要解决这个问题。

    虽然我的系统还在 9.10,但看到网上一篇文章教人如何在 10.04 中解决这个问题,我就了解了,这个问题至今没有解决。那么什么叫做“半完美”呢?大概意思就是说,对我来说差不多完美了,不过还是很可能出问题的……

    命令行方法

    一般的方法是利用命令行的方式:

    LANG=C 7z x xxxx.zip
    convmv -f gbk -t utf8 *
    

    用这个方法,我就写了一个 unzip 的小脚本:

    #! /bin/sh
    LANG=C /usr/lib/p7zip ...
    read more

    There are comments.

  9. 在 tty 里添加一个开机自启动的任务管理器

    每当感觉到系统卡的时候,最好的方法无外乎进入 tty,登入,打开一个 top 监视。可是每次到了需要的时候才去开,打开的效率自然不敢恭维。于是便想,每次开机的时候,记起来就跑到 tty 下面去先开起来。不过这件事情总归是麻烦的,于是才有了现在的方案。

    既然 tty 那么多,那我们就把他利用一下吧~让他开机自动在某个 tty 里面启动 top 无疑最方便了~

    首先呢,我找到了 Ubuntu 里面 tty 配置存放的地方 /etc/init/ttyX.conf,其中的 X 便是 tty 的编号,我这里选择了 tty6.conf。打开这个文件,结构简单极了,看到里面

    exec /sbin/getty -8 ...
    read more

    There are comments.

  10. 写了个小小的 vc-fix

    我们的 C++ 老师给我布置了 C++ 的大作业来替代其他同学交的无聊题目。大作业的第一题就是完整的高精度库,并且要求使用运算符重载。因为原来用 C 写过,这次写,思路上没有太大问题,不过全部程序被我 C++ 化了,代码看过去很诡异……呃……

    我自己的机子上,自然使用 g++ 编译,不过我猜老师会要求 VC6 能够编译……我就用上次安装的 VC6 编译了一下,发现好几个错误和无数警告……其实也是我意料之中的。

    其中我觉得最讨厌的莫过于 for 循环的循环变量不被视为 for 循环的局部变量这一点,导致大量变量被其认为是重复定义,这个是 VC6 和标准就语言上相去最远的问题了……不想每个都去改,麻烦死了。

    在网上一找,还真找到一个简单的方法:

    #define for if(0) ; else for
    

    其实我也不知道这个是什么机理 ...

    read more

    There are comments.

« Page 2 / 3 »

social