Subscribe to XML Feed|订阅
30 Jun 2010

random bits

May 28, 2010

The great thing about mod_rewrite is it gives you all the configurability and flexibility of Sendmail. The downside to mod_rewrite is that it gives you all the configurability and flexibility of Sendmail. – Brian Behlendorf, Apache Group

Jun 1, 2010

$ sed -ie '1 i\
## -*- coding: utf-8 -*-
' `find -type f`

Jun 8, 2010

A method of en-/decrypting a string can be implemented using the UNIX tr command. For example:

echo "Or fher gb qevax lbhe Binygvar" | tr 'A-Za-z' 'N-ZA-Mn-za-m'
Be sure to drink your Ovaltine

Jun 10, 2010

$ seq 10000 | fmt -70

Jun 30, 2010

//tr/td[@class!="yfnc_d"]/..
//tr[td[@class!="yfnc_d"]]

//tr[td[not(@class="yfnc_d")]]
//tr/td[not(@class="yfnc_d")]/..

Jun 30, 2010

$ sed -n '1251 p' usacompany
HIFN

Jun 30, 2010

$ for line in `cat usacompany`; do echo [$line] >> yahoo.log; \
curl -sIL "http://finance.yahoo.com/q/cf?s=$line%20Cash%20Flow&annual" >> yahoo.log; done
View Comments|查看评论
29 Apr 2010

random bits

Mar 16, 2010

(?<user>[^@]+) @ (?<company>[^.]+) \. (?<top_level_domain>\w{2,4})

Mar 19, 2010

perl -pi -e 's/ipodder/juice/g' `git grep ipodder | gawk -F: '{print $1}' | sort | uniq`

Mar 19, 2010

perl -pi -e 's/,([^\)\]\},\s])/, \1/g' `find -name '*.py'`

Mar 19, 2010

for f in `find -name '*.py' | grep Juice`; do git mv $f `echo $f | tr [A-Z] [a-z]`.bak && git mv `echo $f | tr [A-Z] [a-z]`.bak `echo $f | tr [A-Z] [a-z]`; done

Apr 2, 2010

irb(main):027:0> h = Hash[*"41 => 1, 42 => 4".scan(/\d+/).collect{|i| i.to_i}]
=> {41=>1, 42=>4}

Apr 2, 2010

>>> l = range(1, 5)
>>> dict(zip(l[::2], l[1::2]))
{1: 2, 3: 4}
>>> dict(zip(*([iter(l)]*2)))
{1: 2, 3: 4}

Apr 8, 2010

$ sudo apt-get build-dep ruby1.8
$ wget -O- ftp://ftp.ruby-lang.org/pub/ruby/1.9/ruby-1.9.1-p376.tar.gz | tar zxv
$ cd ruby-1.9.1 && configure && make && sudo make install

Apr 15, 2010

with open("mydata.txt") as fp:
for line in iter(fp.readline, "STOP"):
    process_line(line)

Apr 15, 2010

>>> super
<type 'super'>

Apr 19, 2010

# ASCII space char
u"\u0020"
# HTML &nbsp;
u"\u00A0"
# Chinese space char
u"\u3000"
View Comments|查看评论
27 Mar 2010

下载 Google 音乐用的脚本

今年 1 月初的时候我担心 google.cn 跑了之后 Google 音乐夭折, 我曾经手动把我 Google 音乐播放列表里的好几 G 歌用鼠标点点点下载到本地硬盘, 不是毅力坚强, 实在是没找到什么好用的批下载工具.

今天偶然看到这篇用脚本下载谷歌高质量的音乐, 试用了一下里边介绍的批下载脚本 gmusic.py, 这个脚本对歌名中有单引号 ‘ 的歌曲处理不好, 比如我很喜欢的专辑《Absolute Garbage》中的歌曲I Think I’m Paranoid解析出来的歌名为 “m Paranoid”. 我也没折腾为什么会这样, 反正我对 HTMLParser 没好感, 我直接把脚本中解析 HTML 的部分用 lxml.html 的 HTML 解析器替换了, 虽然增加了对 lxml 的依赖, 不过 lxml 安装的确是非常方便, 详细步骤请移步lxml 官网. 修改之后代码简单了不少, 并且也更适合我个人的需要. 会以”歌手/专辑/歌曲名”的格式组织下载的歌曲, 然后不再依赖 wget, 直接用 Python 的 urllib2.

使用方法如下:

python gmusic.py [Google 音乐专辑的 URL]

举例如下:

python c:\projects\gist-346011\gmusic.py http://www.google.cn/music/album?id=B3b6be8937fe6391c
View Comments|查看评论
24 Mar 2010

老 MP3 播放器无法播放含有某些 ID3 标签的 MP3 文件

我最近爱上了听静雅思听的中文 Podcast, 但是由于我的 MP3 播放器是读书时候买的 256M 的小霸王炫风 638(当时的价钱现在可以买个 2G 的 iPod shuffle 了), 部分 iTunes 里正常播放的 Podcast 拷到我的 MP3 播放器里之后无法播放, 播放器直接关机, 没有任何提示信息.

我首先猜测可能是无法处理中文的文件名, 于是用一行 shell 把播放器里的所有文件名改成纯 ASCII:

for f in *.mp3; do mv $f `echo $f | md5sum | cut -c1-10`.mp3; done

这样没能解决问题, 于是我猜是我的播放器无法处理某些格式的 ID3 标签, 我 Google 来一小段 python 代码(依赖 Mutagen 库, 可 easy_install mutagen 或者 pip install mutagen 安装), 清除掉所有 ID3 标签, 然后我的老播放器就能正常播放了.

View Comments|查看评论

Older Posts|更早发布的文章

放最前面的 web server 们 15 Mar 2010 Comments|评论
Blog 搬家到 Github Pages 23 Feb 2010 Comments|评论
用 PXE 引导方式安装 Ubuntu 8.04 LTS 服务器流水账 14 Feb 2010 Comments|评论
random bits 12 Feb 2010 Comments|评论
Web 架构和我的技术有用论观 05 Feb 2010 Comments|评论
TL-WR340G+ 和 TL-WR841N 无线桥接的配置 05 Feb 2010 Comments|评论
Quidway AR28-11 路由器内网 PC 通过公网 IP 访问映射的内网 Server 案例 05 Feb 2010 Comments|评论