Category: Linux

29 posts

用 dvipng 来快速生成公式图片

用 LaTeX 可以生成漂亮的公式,这是众所周知的。但是并不是总是会用 LaTeX 来做整个文档。例如,虽然我也用 beamer 做过 slides ,但是我还是觉得用 PowerPoint 或者类似的工具可以更方便地做出漂亮的幻灯片来。又比如我在写 blog 的时候想要插入一个公式,等等。这个时候我通常会临时建一个 TeX 文档,输入这个公式,生成出 PDF ,用阅读器打开,然后截图。虽然已经这样做了许多许多次了,但是其实这个过程非常无聊,而且我喜欢透明的背景,截图是白色的背景的话,有时候不能很好地融入到场景之中。 但是其实输出为 PDF 格式只是 LaTeX [...]

Notes: How to make a patch

虽然现在各种版本控制工具大行其道,但是有时候还是需要使用相对原始一些的办法提交补丁,制作补丁其实很简单,用 diff 命令,加上 -u 参数生成带有上下文的 unified 格式的 diff 文件,就是一个 patch 了。可是最容易忘记的地方就是后面的参数是先写未修改过的版本呢还是先写修改过的版本。我自己每次都记不住,要去查 man page 。正好今天收到一个 patch ,发现里面的修改都是反过来的,大概也是参数写反了吧。 ^_^ 所以我终于决定把正确的用法记下来: diff -u original new > original.patch [...]

差点把自己的主目录删掉了

我一直很讨厌 rm 命令的 -i 选项,一般删除目录都是直接 rm -rf 的,所谓“常在河边走,哪能不湿鞋”,今天差点把自己的主目录给删掉了。 本来是在试用 blueprint ,它的配置文件里面可以指定路径,谁知道它并不展开 ~ 为主目录,运行几次都没有反应,后来我改为绝对路径,才正常了。偶然发现它在当前目录生成了一个叫做 ~ 的目录,真是有些哭笑不得,立马 rm ~ 删除,结果出错了,我根本没有仔细看错误信息,心想:哦!对,这是一个目录,不能这样删。于是我又习惯性地键入 rm -rf ~ …… 过了大约 1 [...]

git status in shell prompt

When I see the post "Current Git Branch in Bash Prompt" from reddit, I found it really a cool idea. Personally, I use zsh, though that post is about bash, adding similar thing to zsh is pretty easy! My zsh prompt is already pretty cool in my opinion. I borrowed something from Phil!'s ZSH Prompt, [...]

Rsync without any configuration!

Rsync 是一个在不同的机器之间拷贝文件的极佳的工具,由于它可以对文件进行增量传递,所以速度会比较快。不过它并不像版本控制软件那样要在本地记录版本信息,用于计算 diff ,似乎是在本地和远程都不会附加任何额外的“元信息”的,如果你感兴趣,可以去看一下它的算法和技术报告。其实我也比较感兴趣。 :) 不过几乎所有介绍 Rsync 的文章都会说先安装 rsync ,然后配置 /etc/rsyncd.conf ,云云,一堆麻烦的东西就出来了。我只想要一个 quick and dirty 的 scp 的替代品,该怎么办呢?又仔细看了一下文档,试验了一番,发现 rsync [...]

Emacs 23 prebuild deb package

Emacs 的 unicode branch 前日 merge 到 trunk 中了,brep 编译了一个 for Windows 的版本供下载。Emfox 做了 amd-64 的预编译 deb 包,我用它那里的源码和元信息编译了 i386 平台的 deb 包,放在这里。Enjoy! :)

/usr/bin/env: ruby -ws: No such file or directory

起因 我试图用 sow 工具来创建一个 gem ,但是当我执行 sow 的时候却得到了一个错误提示: $ sow rmmseg /usr/bin/env: ruby -ws: No such file or directory 经过 这是为什么呢?我首先找到了 sow 脚本的位置,发现它第一行的 Sha-Bang 如下: #!/usr/bin/env ruby -ws 我立即尝试在 shell 下输入 /usr/bin/env ruby -ws ,发现一切正常,再创建了一个具有同样 Sha-Bang 的脚本,直接执行,却又同样的错误。这是为什么呢?

让 secureCRT 和 OpenSSH 共享 Private Key

secureCRT 是 Windows 下一款非常优秀的 SSH 客户端软件(商业软件),目前它的最新版本是 6.0 ,从 5.5 版开始支持 OpenSSH 格式的 Private Key ,并可以把它自己的 Private Key 转换为 OpenSSH 格式。 OpenSSH 是 Linux 下广泛使用的 SSH 程序。我自己在前一段时间广泛使用的一对密钥是通过 secureCRT 生成的,最近需要在 Linux 下也使用密钥的方式进行 SSH 连接,维护多对 SSH 密钥是比较麻烦的事情,而且容易搞混,可是私钥格式并没有统一标准,各个程序之间的格式通常是不兼容的。 [...]

no such file to load — mkmf

在 Debian 这样有强大的包管理系统的发行版里面,通常会有许多地方和已有的插件管理系统有重叠,例如 Ruby 的扩展(gem)、Firefox 的扩展等等,用哪个管理系统就是仁者见仁了。全部都用系统提供的管理系统当然保证了统一性,更加方便。但是特定的管理系统通常更全更新。例如 Ruby 的话,安装扩展的时候我通常都是通过 gem 直接从 RubyForge 上安装的。 如果 Ruby 本身是通过 apt-get 安装的,然后通过 gem 来安装某个扩展时需要编译的话(例如 Hpricot 或者 Ferret 等),会出现如下错误: /usr/bin/ruby1.8 extconf.rb [...]

当有虚拟机在运行的时候阻止 Windows 关机

我经常在后台开一个虚拟机运行 Linux ,而几乎每次关机的时候都忘记了还有一个虚拟机在运行,导致 Linux 非正常关机了。所以我写了一个小程序来防止这种悲剧继续发生:在关机的时候检测是否有虚拟机在运行,有则阻止 Windows 关机。 广告时间 在介绍我的小程序之前,我实在是忍不住要对我现在用的虚拟机和虚拟桌面广告一番了! :p VirtualBox 是一个很不错的虚拟机。和老牌的 VMware 对比,也有许多优点: VirtualBox 可以免费使用,而且还有一个开源版本。而 VMware 是商业软件,虽然 VMware Player [...]

Linux World 2007 @ ZJU

今天是 Linux World 2007 @ ZJU 系列活动的第二场,嗯,我也作为主讲人之一。今天的主题是 Emacs 和 Vim ,三个主讲人,step 和我讲 Emacs 、Rhythm 讲 Vim 。我本来是准备了两套资料,如果气氛还好就讲“Emacs 生存指南”;如果场面不够活跃的话我就退出精心准备的秘密武器了——各种各样关于 Emacs 的趣闻。 最后还是选择了后者,虽然还是有些紧张,不过我想这次讲座有进步,比上次好了。至少场下都笑了,我的目的就达到了,因为 Emacs 的基础知识的话,step 在前面都讲得差不多了。总之大概还是比较成功的一次讲座了:上次 MSTC 的 [...]

org-mode 中打开链接

最近在准备在下次 Linux World 2007 @ ZJU 讲座的 Presentation ,其中有一个 video ,想在 org-mode 里面直接打开。org-mode 处理链接的能力还是比较强的,按 C-c C-o 打开链接 如果是文件内部链接的话,它会直接跳到那里。 如果是普通文本文件,会直接用 Emacs 新开一个 buffer 打开。 其他各种类型的文件都会用合适的程序打开。例如我在 Debian 里装了 xloadimage ,它会用这个程序来打开图片。 不过当我打开 video 的时候它选择了 gmplayer ,而不是 mplayer 。我自己不太喜欢 [...]

解决 Putty 右边 Alt 不好使的问题

这个问题也算是困扰了我很久的问题了。就是在 Putty 里面右边的 Alt 键似乎并不是起到 Alt 的作用。 Emacs 用户应该很快就能发觉这个问题,如果你习惯用右边的 Alt 来按 M-x 的话,就会发现根本不起作用。 在 Shell 里面也是一样的,比如本来 Alt+f 可以把光标向前移动一个单词,可是右边的 Alt 无法使用,就没法按了 (当然对喜欢用单手来按两个键的朋友这不是问题了) 。我很久以前就曾经努力寻找过解决方案,不过似乎并没有可以解决问题的方法。我也不清楚 Putty 把右边的 Alt 键当作一个什么键发送过去了。 [...]

在 Windows 下搭建 GNU/Linux 环境

虽然 Linux 与 Windows 之争几乎从来就没有停止过,不过无疑两者是各有千秋的。所以让两者共存一直是个比较诱人的想法。方法有许多种: 双系统。这样没有哪个系统是跑在虚拟机里面的,所以都能发挥自己的全部性能,只是两个系统之间切换太麻烦,基本上没有什么交互。 Linux 下用 wine 来运行 Windows 程序。不少 windows 下的程序都能跑起来吧,但是目前并不是那么完美,而且 wine 的开发者并没有 Windows 的源代码,所以从理论上来说有些程序运行成功或者失败似乎主要是看运气了。 在 Linux 下通过虚拟机模拟 Windows 。这个主要是一些 Linux [...]

My new screenrc

GNU Screen 是一款终端下的必备工具,我曾经在自己的 Wiki 页介绍过它。最近我又修改了一下配置文件,让底部的“标题”栏居中显示,并选了更漂亮的颜色,如下图所示: 不过 Screen 很多默认配置就比较好用了,所以说整个配置文件还是很短的,这是我目前的配置文件: startup_message off vbell off defscrollback 512 caption always "%{=u kC} %= %-w%L>%{=b G}[:%n %t:]%{-}%52

Cool Font for your Virtual Terminal

Terminus 是一种很不错的终端字体,如果要长时间在终端前工作的话,这是一个不错的选择。在 Debian 里面有 xfonts-terminus 和 console-terminus 两个包,分别适用于 X 下的终端模拟器以及真实的 Virtual Terminal 。 我本来是很少适用 Virtual Terminal 的,不过 galilette 在我关于 Emacs Multi-tty 的那篇 Blog 中提到了 terminus 用于 VT 的事情,我也决定试一试。 其实对 VT 的东西非常不熟,因为我接触 Linux [...]

ImageMagick Tips: Shadow your picture

ImageMagick 是一个非常强大的图像处理工具集合,并且有丰富的命令行借口,可以使用脚本让许多批量处理工作变得非常轻松。另外,许多编程语言都有 ImageMagick 的接口的库可以很方便地进行各种处理。 我在我的 Wiki 笔记上也记录了一些小 Tip 。正好我最近要给一个截图加上边框和阴影,我的Wiki 笔记中也有制作的方法,不过我想这样的功能其实很常用,干脆做一个脚本。其实 ImageMagick 本身虽然是非常强大灵活,但是每次实用都输入一长串命令确实是比较麻烦,把自己最常用的功能包装成脚本就很方便了。 添加阴影非常简单: convert $1 \( +clone [...]

Overflow in xl2tpd

今天 VPN 突然连不上了,到终端启动 xl2tpd ,发现启动报错,说是无法读取配置文件: $ sudo xl2tpd -D xl2tpd[4344]: parse_config: line 13: data 'l parameters:' occurs with no context xl2tpd[4344]: init: Unable to load config file 真是奇怪,我打开 /etc/xl2tpd/xl2tpd.conf 看了一下,十三行好好的嘛,只是注释而已。我甚至怀疑它打开的是什么文件,于是用 strace 跟踪了一下: $ sudo strace xl2tpd [...]

Feeling lucky with Firefox

最近越来越多地发现经常要去一些项目的主页,这么多的主页当然记不住,然而书签也是越来越多,定位也就麻烦了。多是直接 Ctrl+K 定位到搜索栏,然后用 Google 搜索,再点第一个链接。唉,其实要是用 I'm feeling lucky 就方便多了。 我知道 Firefox 的搜索引擎是可以自己定制的,于是边去网上搜索相关的资料,无意间发现了 Firefox 的 keyword 搜索功能:就是直接在地址栏输入关键字进行搜索。它的优势在哪里呢?请看下表: keyword 搜索搜索栏搜索 定制搜索引擎简单,只需要添加书签即可比较麻烦,虽然有专门的扩展来辅助 便利程度Ctrl+L 然后输入 lk [...]

Spun down disk properly

更新内核到 2.6.22 除了前面提到的 vmnet 编译错误的问题,还在关机的时候多出来了一条警告: DISK MIGHT NOT BE SPUN DOWN PROPERLY. UPDATE SHUTDOWN UTILITY For more info, visit http://linux-ata.org/shutdown.html 这是关机的最后一条信息了,一直都没有特别注意,因为信息显示出来紧接着机器就关掉了,不太来得及看清楚。今天特地记下那个链接,去那里看了一下,好像是 SATA 硬盘在关机的时候没有按照“正常”的程序关闭的问题,文中说原因是老式的 shutdown [...]

Vmware module vmnet refused to compile under linux 2.6.22

最近升级到了 Linux 2.6.22 的内核,vmware 需要重新编译一下内核模块。不过这次并不那么顺利,安装好内核头文件以后运行 vmware-config.pl ,在编译网络模块的时候出错了。从错误来看应该是内核源代码变动造成的吧,在网上搜索了一下,发现是 Linux 内核里面对 network stack 有很大的改动造成的。并且在这里找到了一个可以下载的 patch 以及打好 patch 的 vmnet.tar 。那里的作者说是在 AMD64 下正常工作的,我使用的是 Vmware 6 ,机器是 IA32 ,我看到回复里面说 IA32 也正常的,于是就下载回来了。 把下载回来的 [...]

中文问题

今天收到一封邮件,让我感到很失落。其实是一封道歉信。起因是我在邮件列表里面问了一个问题,而我的邮件用户名称是用的中文,邮件列表里面的一个用户那里无法正常显示中文(应该是字体的问题吧),当然这种乱码看上去很像病毒一类的,被自动标记为垃圾邮件了。后来他发现了这个问题,取消了垃圾邮件的标记,并发来了这封道歉信。 首先我看到国内和国外对待这种小事的区别了。国内的好像多是“不拘小节”吧,而国外的人似乎都挺追求完美的(至少在我所常见到的 IT 这个领域里面是这样的),从国内和国外的各种技术 Blog 以及 Wiki [...]

我以前的笔记

以前用 Emacs Muse 写了不少的笔记,自己觉得有些东西还是挺有用的,至少我自己也经常回去查阅,有些东西不记下来过一段时间还真忘记了。只是一直没有合适的地方挂出来给大家分享。虽然现在已经很少再添加新的东西了,不过既然有这个机会,我还是挂出来,免得白白写了些东西,只有我自己看到了。 :) 我把它放在了这里: http://pluskid.lifegoo.com/wiki/index.html

为笔记本猜测网络环境并自动配置网络

如果是笔记本电脑,经常更换网络环境的话,配置网络是比较麻烦的。其实操作也就那么几步,但是每次都要做重复工作确实很头痛,特别是在其实网络环境就那么几个的情况下(例如:寝室、实验室和图书馆)。如果每个地方都是用 DHCP 的方式自动配置网络,那自然好,但是有些地方又是需要手工配置的。不过幸好程序员都是懒惰的,于是就有了懒惰的工具(还要多谢 dlzcn 告诉我这个好用的工具!)。 在 Debian 下可以用 guessnet 来自动猜测网络环境,并根据结果进行自动配置。你事先定义一系列的条件,它并发地测试各个条件,最先满足的会被选中,并以此来配置网络。还等什么呢?赶快 aptitude [...]

辞去 cc98 Linux 天地版版主职务了

申请过三次版主了,这还是第一次申请辞职。请辞贴发出去以后看到大家都来道别,才发现是如此的伤感。何况 cc98 Linux 天地是我如此喜欢的地方了。 最初 Linux 天地版自从 Lnzju 走后,有一段时间处于无版主状态,人气比较差,也没有人管理。后来站务的阿杆和我联系了下让我去申请版主(我和阿杆也是挺熟的)。我清楚地记得在我申请版主的那个帖子里面,就有人在讨论起是否要关闭 Linux 天地版,说人气太差,而且也没有见到什么实质性的内容在讨论。我当然非常反对,技术版面本来就不应该用人气来衡量,而且也不能指望大家都整天去研读内核源代码。总之颇有一种“奉命于危难之中”的感觉。我也想把 [...]

Tux Factory — 许多可爱的企鹅图标

在 deli.icio.us 上看到 Tux Factory 这个网站,里面有许多很可爱的企鹅图标,个人使用的话是可以随意下载的。比如这个可爱的原始人的 Tux 还有这个死神的 Tux ,不知道 sishen 会不会喜欢,哈哈!

Drawing with computer

我自己很小就对绘画非常感兴趣,不过自从上高中之后一直到现在都很少动笔去话了。后来接触到电脑,发现这个东西也可以绘图,不过除非用那些专业的工具,否则用鼠标来画实在是不如笔来得精细。这里是我前不久用鼠标画的一幅图,相当粗糙,但是还不错。 后来听说了矢量图,有一些很有趣的小图标之类的可以利用电脑精确的特性,而不是靠手来勾勒,也一直比较感兴趣,只是都没有太多的时间去关注。其实 Linux 下在设计方面也有许多好用的工具。Inkscape 应该算是比较著名的一个了。今天偶尔看到一些教程,便照着学习了一下,做了一个图标,感觉还是很不错的。 :)

Yakuake + dtach vs Screen + urxvt

Screen 无疑是每一个经常使用终端的用户的必备工具。它拥有许多非常实用的功能: 管理会话,可以 detach 一个会话,让它在后台运行,并在其他时间/地点 attach 原来的会话。这对于经常远程登录的用户来说非常方便。登录以后,运行一些程序, Screen 会保证在你注销以后程序仍然能继续运行,并且下次登录进来可以 attach 到原来的终端会话上 (也许那里正有一个运行了几个月的 Emacs 在等着你) 。 多标签功能。 Screen 可以为一个用户管理多个会话,并且每个会话里面都可以有许多“子会话”,就像许多 Tab 一样,而 Screen [...]

Beagle the desktop search tool

我所了解的人当中大多数都会把自己的磁盘整理得头头是道,很少有找不到自己的文件的情况,当然我自己也是这样的。可是有些时候使用桌面搜索引擎不是找得到找不到的问题,有时候要定位一个文件确实是比较麻烦的,即使你清楚地知道它在哪里。我自己体会最深刻的就是文档 API 。看看系统自带了多少文档吧: $ ls -1 /usr/share/doc/ | wc -l 1486 1486 项。挺吓人的数字,每次都输入 /usr/share/doc/qt4-doc/html/qhttp.html [...]