2007年12月11日星期二
PDF文件的分割与合并
分割可以采用分段抽取来搞定:
pdftk wxPIA.pdf cat 114-146 output chapter04.pdf
合并:
pdftk chapter0*.pdf cat output part1.pdf
还可以将A文档的某些页和B文档的某些页拼起来:
pdftk A=one.pdf B=two.pdf cat A1-7 B1-5 A8 output combined.pdf
添加附件:
pdftk chapter01.pdf attach_files ../chapter-01/* output chapter01a.pdf
拆离附件:
pdftk chapter01a.pdf unpack_files output ./chapter-01/
更复杂的应用还是看项目主页上的文章吧。
另外, 这东西用到libgcj,估计部分是用java写的,反正运行起来有点慢。
2007年1月7日星期日
故纸堆(1): 初识UNIX
当初学校搞教学改革,在我们系试验一入学校就学习C语言,并且开发系里的机房让我们自由使用。但该机房采用的DEC的Ultrix,我们那时还不明白为什么这里的编辑器和学校机房里面的Turbo C差别怎么那么大,还遇上一个有货倒不出的博士后当我们的C语言教师,跌跌撞撞、懵懵懂懂地走了过来。
这是当初机房管理员给我们准备的袖珍用户手册。
后来我们在这个系统上学习Shell编程,玩hangman,玩telnet, 玩MUD(连不能显示中文的哑终端也被热情高涨的同学们拿来练功)。
十年河东,十年河西,开始的时候,我们只能玩哑终端,小机房里面的图形工作站只能研究生才能使用。但到了大四,它们都被请走了,被换成了PC,装上了Windows,我们借着使用Matlab和SimuLink的名义在那里玩游戏。再一转眼,DEC竟然被搞PC出身的Compaq给收购了。
2006年11月17日星期五
Joel: UNIX与Windows二元文化

买了一本《Joel谈软件》在看,里面有一篇《二元文化》讲到了Windows与UNIX在文化上的差别。
搜了一下,找到了原文Biculturalism 和繁体翻译《双元文化主义》。
这是篇老文章了,说UNIX倡导的是对其他程序员有用的输出,而Windows倡导的是让你的姨妈能够用软件做点事情。倒无所谓谁对谁好,只是出发点不一样。有一腚道理哈。
2006年6月14日星期三
sourceforge下载文件更麻烦了
每次提到download manager, 总有热心的网友出来让我直接用wget,又稳定又强大。其实我也常用wget直接下载,只是有些时候将网址拷贝下来再贴到终端里面去总还是有点麻烦。
sourceforge 最近就开始在制造这种麻烦了:本来从sourceforge下载文件就得先选mirror, 够麻烦的了,这两天又习惯性的将链接拷贝下来,贴到terminal里,谁知道出现的是── javascript:document.dlform.submit()
实在搞不明白sf“点解要冈样做”。
过了一会儿,Firefox的下载文件对话框又出来了,要是没有安装一个flashgot,还得取消再来。
2006年5月26日星期五
Joel: UNIX与Windows二元文化

买了一本《Joel谈软件》在看,里面有一篇《二元文化》讲到了Windows与UNIX在文化上的差别。
搜了一下,找到了原文Biculturalism 和繁体翻译《双元文化主义》。
这是篇老文章了,说UNIX倡导的是对其他程序员有用的输出,而Windows倡导的是让你的姨妈能够用软件做点事情。倒无所谓谁对谁好,只是出发点不一样。有一腚道理哈。
2006年5月18日星期四
GIMPshop: 模仿Photoshop界面的GIMP
GIMP算是自由软件界的一个明星,它甚至导致了gtk+的诞生。如果说让Photoshop从Windows转移到Linux,估计很多人都会想到推荐GIMP。
但据年初Novell的一份调查 显示,最被用户期望移植到Linux桌面的应用程序还是Adobe Photoshop。GIMP并不被Photoshop的用户所接受,有不少人在讨论为什么会这样(Why Photoshop tops most-wanted Linux app list, GIMP Not Enough for Linux Users? )。
首先习惯是个很麻烦的问题: 有很多人很受不了GIMP的SDI界面,而且还想用他们在Photoshop里面用熟了的快捷键。
于是有了GIMPshop: GIMPshop is a hack of The GIMP to make it look more like Photoshop.
2006年5月14日星期日
书籍: The Art of UNIX Programming

“此书主要介绍了Unix系统领域中的设计和开发哲学、思想文化体系、原则与经验,由公认的Unix编程大师、开源运动领袖人物之一Eric S. Raymond倾力多年写作而成。包括Unix设计者在内的多位领域专家也为此书贡献了宝贵的内容。此书内容涉及社群文化、软件开发设计与实现,覆盖面 广、内容深邃,完全展现了作者极其深厚的经验积累和领域智慧。”
用了三天把它囫囵吞枣地看完了,感觉还不错。通过这本书,不能具体地学习到某种技术,但可以更多地了解“UNIX为什么是这个样子,为什么要这样来 做某个功能”。过两天要给一帮新员工进行“UNIX基础”培训,我一直在为这个太泛的主题具体应该怎样讲有些发愁,这下有内容了。
不过作者似乎有点罗嗦。另外似乎总是对其他系统总是不屑一顾的样子,似乎连“尺有所短,寸有所长”都不肯承认。跟Joel On Software 对比着看你会发现相当有意思。
不过,还是需要仔细研读一番。
链接:
2006年3月11日星期六
普通用户如何解开iso (图?)
2006年2月6日星期一
受不了d4x和gwget了,改用wget
最开始用KDE时用kget还比较凑合,但现在用GNOME,试过d4x和wget。d4x相当不稳定,经常崩溃;gwget的功能太弱,易用性也差,最要命的是有时看它啃嗤啃嗤忙乎完了,结果却发现它下载的文件不存在,不知道弄哪里去了。
算了算了,直接用wget吧。
配置FlashGot,新增加一项,名称为"My Wget",设置:
exectuable path: /usr/bin/rxvt
arguments: -e /usr/local/bin/mywget.sh
mywget.sh如下:
#!/bin/sh
rootdir=${HOME}/Downloads
[ ! -d $rootdir ] && mkdir -p $rootdir
cd $rootdir
f=`zenity --title="Save file to..." --file-selection`
[ "foo$f" == foo ] && exit 1
targetdir=`dirname $f`
cd $targetdir
wget $*
echo "......Press any key to close this window."
read foo



2006年1月22日星期日
Tencent不让gaim登录QQ了?
继前几天gaim登录不上MSN之后,这两天连QQ也不能登录了。不同的是,我这里切到Windows下用MSN Messenger自己也登录不上MSN,但QQ却可以。所以也不知道是不是Tencent不让登录了,因为近来似乎QQ的客户端越来越多了:
2006年1月12日星期四
smiley in shell prompt
bamanzi@limi808 ~/qref $ :) dir qref.sourceforge.net bamanzi@limi808 ~/qref $ :) false bamanzi@limi808 ~/qref $ :( |
Add the following in your ~/.bashrc
smiley() {
if [ $? -eq 0 ]; then
echo ":) "
else
echo ":( ";
fi
}
export PS1="$PS1\$(smiley)"




2005年7月26日星期二
几个画UML图的工具
前两天工作时需要画UML图,所以折腾了一下dia。功能比较少,其实它只是一个画图工具,不过也可以画UML图。这个东西倒是满简单的。另外还有一个dia2code,可以把dia画出的UML图转换成C/C++/Java/Python/SQL/C#代码框架。
这个东西是用Python+Gnome写的,说是比较适合Gnome环境。功能也不太多,但似乎UML2.0里面的大部分都支持了。另外也提供了Windows版本。
自己折腾了半天将dia移植到了cygwin,回头才留意到cygwin原来早收录了一个建模工具tcm。这个工具是用Motif库写的,界面难看一点。具体功能怎么样,还不太清楚。
这是一个KDE上的建模工具,风格上做得跟Rational Rose比较接近(我觉得KDE下的仿Windows商业软件的东西比较多,这样习惯了Windows下一些软件的人迁移过来就容易一些。而gnome在这方面就做得比较差,一个例子就是Gnome Office和KOffice, 前者这么久了就只有AbiWord和Gnumeric,没有做幻灯片的,没有画流程图的... )。手头没有KDE环境,还没试过。
BTW: Debian里面收录了一个软件包uml-utilities,不要误会,这个东西跟这里说的UML没有什么关系,而是User Mode Linux的意思。
2005年7月23日星期六
试试quilt
作为一个偶尔的hacker,维护一个软件包的一堆patch是非常痛苦的事情,尤其是有的patch对另外一些有依赖时。一个例子是原来对 dillo感兴趣时搜集了第三方patch,另一个例子是目前在维护的sylpheed-claws的cygwin移植版本。结果是:1. 我放弃了对dillo-enhanced的cygwin版本的维护; 2. sylpheed-claws的cygwin我现在也只提供一个all-in-one的补丁,不再提供各个改动分开的patch了 :-(
看见Debian Planet上有DD说已经在用quilt来维护一个软件包的补丁,说是很不错。于是找来玩了一下。
quilt就是为了解决前面那一类问题诞生的。它基于原来Andrew Morton为维护内核补丁而制作的一堆脚本(想想维护1000个补丁是什么感觉?)
我按照文档试用了一下,感觉这个东西大致是这样工作的
首先,quilt只需要一个源代码树, 其次,quilt的工作对象是patch
quilt new foobar1.diff 开始一个新的patch,然后你就应该在这个patch上工作
quilt edit some/file.c指定要对some/file.c做一些修改,quilt会自动备份这个文件
如果你后面还要修改some/file.c,可以直接用vi some/file.c,不一定要再quilt edit some/file.c
quilt refresh 完成当前的patch工作,生成输出foobar1.diff
当然,在你开始一个新的patch之前,你还是可以继续修改,然后用refresh重新生成补丁
quilt add foobar2.diff 如果你要在foobar1.diff的基础上开始一个新的patch,就用这个命令
quilt pop 抛出当前的patch,如果当前栈内只有一个,那么原来树就复原了
quilt push 将series中下一个补丁压入栈,就是apply那个补丁
quilt import some-patch.diff 从一个patch文件中导入一个补丁
举个例子,某个源代码包我通过quilt维护了1.diff, 2.diff, 3.diff三个补丁,但现在新的upstream release来了
quilt push 应用第一个补丁
quilt push 应用第二个补丁,
但这个补丁应用失败,怎么办? 用quilt push -f强制补丁,然后编辑源代码,修复被拒绝的文件,然后
quilt refresh 刷新第二个补丁
然后
quilt push 应用第三个补
2005年7月14日星期四
2005年4月18日星期一
How to disable beeping in console?
8.6.7 禁用声音(响铃)
最直接的方法是拔掉PC喇叭;-),对于Bash shell可执行:
echo "set bell-style none">> ~/.inputrc
8.6.7 Disable sound (beep)
One can always unplug the PC speaker. ;-) For the Bash shell:
echo "set bell-style none">> ~/.inputrc