Archive for the ‘软件’ Category
调用u.nu的api缩短网址
#coding: utf-8
import sys
import urllib2
api_address = 'http://u.nu/unu-api-simple?url='
for org_url in sys.argv[1:]:
request = urllib2.urlopen(api_address + urllib2.quote(org_url))
short_url = request.read()
if short_url.startswith('http'):
print org_url, '–> ', short_url
else:
print 'Error'
使用lxml解析html文件
之前一直搞错了,实际上只需要使用lxml.html模块,读入html文件后,直接调用xpath定位所需要的内容就行了,不再需要etree什么的了。具体看下面的例子:
02
03 from lxml import *
04 import lxml.html as H
05 import urllib2
06
07 def getart(url):
08 f = urllib2.urlopen(url)
09 content = f.read()
10
11 art = []
12 doc = H.document_fromstring(content)
13 p = doc.xpath(‘/html/body/div[2]/div[2]/div/div/ul/li/div[2]/p’)
14 for i in p:
15 tmp = i.text_content()
16 tmp = tmp.encode(‘utf-8′)
17 tmp = tmp.replace(‘\r‘, ‘\n‘)
18 art.append(tmp)
19 return art
20
21 if __name__ == ‘__main__’:
22 urls = ['http://www.douban.com/group/topic/12018319/',
23 'http://www.douban.com/group/topic/12018319/?start=100']
24 outfile = open(‘zheda.txt’, ‘w’)
25 for url in urls:
26 art = getart(url)
27 for item in art:
28 outfile.write(item+‘\n‘)
29 outfile.close()
附:浙大夜惊魂6月26日更新至101章
hotfile: http://hotfile.com/dl/50704792/39ca85e/626101.txt.html
xun6: http://is.gd/d4Ym0

使用Firebug+XPather进行手工采集
Firebug和XPather都是Firefox的插件。
用Firebug查找页面内容的xpath路径,复制后,到XPather中执行,提取页面中其他内容,然后,在“Web Clipping”页中复制所有内容即可。
上面的方法对于提取连载的小说特别管用。

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步。简单,效果不错。
搜索进程——新的搜索方式
在使用搜索引擎查找资料时,很难一下子找到想要的东西,通常会尝试不同的关键词及其组合。
比如,查“关键词1”,得到若干页的结果,翻看了前5页,有一些有用的资料,打开另外的页面查看,多数是没有用的。输入“关键词2”继续搜索,又得到若干页的结果,但是某些内容已经在刚才搜索关键词1时得到的前5页结果中出现过,而这些内容我都已经浏览过了,确定有或者没有我要的资料。搜索引擎为什么不把这些资料隐藏掉?
我希望Google能够提供一个我暂时称为“搜索进程”的功能。在同一个搜索进程中,无论搜索哪个关键词,都不显示之前用户之前已经查看过的条目。如果同一用户的两次搜索的间隔小于某个事先设定的值(如1小时),则认为是同一个搜索进程。用户也可以手工开启一个新的搜索进程。如果搜索引擎更聪明一点,能够根据两个关键词间的相关度,提醒用户是否开启新的进程的话,那就更好了。
MySql数据库导出时指定编码
导出低版本MySql数据库时,通常会遇到乱码的问题。应在导出时加上指定编码的参数,比如:
mysqldump –default-character-set=latin1 -u 用户名 -p 数据库名 > old.sql
再用iconv等转码工具转换编码类型。
rename-批量重命名命令
原来还很麻烦的用for循环(Ubuntu下批量重命名),其实只用rename就够了。比如,要把所有的文件名改为小写:
rename ‘tr/A-Z/a-z/’ *
把所有文件的后缀由rm改为rmvb
rename ’s/.rm$/.rmvb/’ *
替换时,只匹配第一次找到的子串,如果要替换所有匹配到的子串,需要添加g,比如有以下文件:
1.txt,11.txt,111.txt
命令
rename ’s/1/a/’ *.txt
得到的结果是
a.txt, a1.txt, a11.txt
而,命令
rename ’s/1/a/g’ *.txt
得到的结果是
a.txt, aa.txt, aaa.txt
Google Reader可以订阅任何网页——好消息?坏消息?
之前,对于没有提供RSS输出的网站,我一直使用Page2RSS订阅网页的更新,现在Google Reader直接提供了这一功能。应该说是好消息,但是谁知道呢。

Mysql乱码问题(备忘)
升级网站的时候,php版本高了,mysql的版本也高了,再加上原来没经验,用的都是GBK,没用UTF8,数据库导过去经常乱码。
两次成功的经验如下。
先保证phpmyadmin中看到的字符是正确的,再在mysql_connect语句之后加一句mysql_query(“SET NAMES ‘GBK’”),差不多就可以了。

Sage 4.3今日发布
Sage 4.3今日发布,二进制版本已经可以下载。具体可以到主页查看:http://www.sagemath.org。还不清楚这次有哪些更新。
