Archive for the ‘linux’ Category
pdf文件自动剪裁(自动切白边)
可能用到的环境、工具:Ubuntu 10.04+TeXLive 2008+pdfcrop+CUPS打印驱动,用Windows的兄弟就不用看了,这些工具理论上在Windows下也有,但是还要另外装不少东西。
下面假设原文件(也就是打算切白边的文件)叫abc.pdf
- pdfcrop abc.pdf,默认会生成abc-crop.pdf文件,这个已经是切掉白边的了,要是你不嫌它大(或者它确实不大)的话,就完成了。
- 用阅读器(如evince)打开abc-crop.pdf,并通过CUPS打印到文件,打印时注意关闭所有和页面缩放有关的命令,并选中“使用文档的页面尺寸作为页面尺寸”。打印,完成。
说明:
- pdfcrop其实是TeXLive自带的。本质上是一个perl脚本。
- pdfcrop要调用gs(ghostscript)确定每页的白边大小。对于空白页,会报错,忽略即可。
- pdfcrop还可以在切的时候留若干像素,具体请–help。
- pdfcrop要调用pdftex以生成切白边后的文件。
- pdfcrop本质上(猜想,没有阅读源码)是先将abc.pdf展开成单页的pdf,调用gs切白边,再用tex文件直接调用pdf页面,最后用pdftex生成输出。
- pdfcrop直接生成的文件一般是原文件的20倍以上(本人测试的几个文件均是如此),虚拟打印到新的文件后,基本可以恢复到与原文件同样数量级的尺寸。
- 测试都是使用的内嵌字体的中英文PDF。扫描版的没试,估计够呛。

5月27日更新:
使用这个脚本PDF压缩脚本-Compress PDF,代替上面的第2步。简单,效果不错。
Android on Nokia N800
根据 http://talk.maemo.org/showthread.php?t=25736 这篇文章,将Android刷到N800上。需要注意两点:
1、作者用的是2G的SD卡,我自己用的是1G的SD卡,所以
sudo sfdisk -uM /dev/sdc ,1024,C ,1,L ,, ,, 这一步需要改一下参数。 2、刷Flash这步,我这里出错:Error claiming USB interface: Device or resource busy 需要参考http://forums.internettablettalk.com/showthread.php?t=33543&page=2这篇文章解决。
终于在ubuntu 9.10装上了nvidia显卡驱动
Sony VAIO VGN-Z系列的笔记本都是双显卡,需要使用软件切换。之前在我的Z25上多次尝试安装NV显卡驱动,论坛上能看到的方法都用过了,均没有成功。无论是源中的驱动还是官方的驱动,都不行,重起后黑屏。
今天用了 http://global-social.net/VGN-Z 这里的一个脚本,问题基本解决。
只是我在用那个脚本时,下载了官方驱动后,又进行了一个什么检测,需要从网上下载包,但是不知道什么原因没有成功,脚本退出。再次运行脚本,在测试过OS版本后,没有反应,只能中止。手工安装了官方驱动,设置了LCD亮度与Fn键的关联。
Mysql乱码问题(备忘)
升级网站的时候,php版本高了,mysql的版本也高了,再加上原来没经验,用的都是GBK,没用UTF8,数据库导过去经常乱码。
两次成功的经验如下。
先保证phpmyadmin中看到的字符是正确的,再在mysql_connect语句之后加一句mysql_query(“SET NAMES ‘GBK’”),差不多就可以了。

Sage Tutorial中文版
Sage Tutorial是一份快速了解Sage的入门文档,花了两周多的时间将其翻译为中文。但是“Some more advanced mathematics”一节没有翻译,因为完全不熟悉这一节所涉及到的内容。
第一次翻译开源软件的技术文档,水平有限,希望各位多提意见,任何方面的都可以。如果没有大的问题,大概一周后会向Sage开发组提交。
源文件使用Sphinx管理,PDF文件是由自动转换而来的LaTeX文件编译的,因此其中很多格式不符合中文的习惯。所以请大家先以HTML文件为准,最后发布前,我会手工调整LaTeX文件后再编译。
Email: amao@ai7.org
相关内容:翻译Sage文档的准备工作
Ubuntu 9.10下unzip的乱码问题
Ubuntu 9.10中unzip升级为6.0,结果原来的-O参数没有了,解压缩Win平台来的带中文文件名的文件时,会有乱码。Google,Baidu无果后,自行使用Python解决。
01 #!/usr/bin/python
02 #coding=utf8
03
04 import zipfile
05 import sys
06
07 if len(sys.argv)<2:
08 print u’punzip zipfilename’
09 else:
10 f=zipfile.ZipFile(sys.argv[1])
11 nlist=f.namelist()
12 for n in nlist:
13 m=unicode(n,’gb2312′).encode(‘utf8′)
14 file(m,’wb’).write(f.read(n))
15 f.close()
用Imagemagick将PDF文件转为图片
convert -density 150 aaa.pdf aaa.png
-density 参数指定的是DPI,也就是分辩率。一般屏幕显示用72就足够了,150适用于大多数场合,300以上的分辩率就很高了。不清楚最高可以到多少。当然了,这些都只在原PDF是矢量的情况下才有比较好的效果,如果原PDF是点阵的,比如扫描的图书,那么更大的DPI造成的结果就是颗粒变大。
如果PDF有多页,那么上述命令会将所有的页都转出来,存成多个文件。如果只想转其中某几页,可以在PDF文件名后加页码范围,象这样:
convert -density 150 aaa.pdf[0-3,20-25] aaa.png
注意,convert都是从0计数的,也就是说Imagemagick把PDF文件的第一页叫作第0页。不管上面哪种情况,只要是转换多页,Imagemagick都会自动在原文件名中加序号,以0开始,连续编号,形如aaa-0.png、aaa-1.png、aaa-2.png……,而与原页码没有任何联系。
当然了,转换的时候,还可以指定-resize这些参数。
Ubuntu下使用黑莓8310拨号上网
参考页面:
- http://bbs.maxpda.com/thread-327579-1-2.html
- http://bbs.maxpda.com/viewthread.php?tid=240390&page=1&extra=page%3D1#pid4918836
- http://forum.ubuntu.org.cn/viewtopic.php?f=116&t=215635&start=0
- http://hi.baidu.com/icej/blog/item/b5061ffa5a30229e58ee9064.html
综合以上页面的信息,考虑到相关软件的更新以及不同用户的需求,再整理一下。
1、用到的软件就是Berry4All,原名叫BBtether。到http://www.berry4all.com/下载压缩包。软件是用Python写的,因此不需要编译,但是需要安装相关的依赖库。
sudo apt-get install python libusb-dev ppp python-usb
以上4个包是必须装的,如果希望使用GUI界面,就还要安装wxgtk的库文件:
sudo apt-get install python-wxgtk2.8
因为在我的机子上wxgtk这个包没有装过,需要额外的43M空间,就没有安装,事实证明也不需要,用命令行足够了。
2、安装好依赖包之后,将Berry4All解压缩,默认有一个bbtether目录。进入bbtether目录下的conf目录,编辑att-conf文件:
将wap.cingular替换为cmnet,其他内容保持不变。
3、停掉已有的网卡:
sudo ifconfig eth0 down
eth0是第一块网卡的编号。可以用ifconfig命令查看当前活动的网卡,确认全部网卡都已经停掉之后,再进行下一步。
4、回到bbtether目录,使用下面的命令拨号:
sudo python bbtether.py att
如果是使用GUI界面,则运行berry4all.sh即可,在菜单中选择att网络。
5、如果一切正常,拨号成功后,最后会显示当前的IP和DNS地址。现在就可以上网了!产生流量后,也会有相应显示。
=====================================
注:
这些天用Ubuntu远多于Vista,特别是用VirtualBox虚拟了个XP之后。但是外出时上网的问题一直没有解决。根据Vista下用BB拨号经验,前天尝试在虚拟的XP中安装DM并拨号,一直没有成功,每次的错误信息还都不一样,搞到2点多,最后还是放弃了。今天突然想到应该直接搜索一下Linux+BB上网的信息……爽!
Ubuntu下使用md5sum计算字符串的MD5值
echo -n string|md5sum
注:之前只会用md5sum计算文件的MD5值,想计算个字符串的MD5值,试了很多办法都不行,今天无意中看到。看来对Linux的软件哲学理解的还是不到位。
Ubuntu下批量重命名
以下命令将当前目录下所有文件文件名中的前缀“sm-”删除,也即原sm-ABC.jpg,改为ABC.jpg:
for i in *; do mv $i `echo $i | sed -e ’s/sm-//’`; done
btw:原来一直认为Ubuntu下的几个仿TotalCommander的软件都有这样那样的缺陷,现在才知道原来Linux不需要TotalCommander,默认的小工具非常好用,只有Win这种平台才需要TC。
