???GFW???? <a href="http://blog.leirahua.com" target="_blank">http://blog.leirahua.com</a>
Monday, May 21, 2007 5:01:46 PM
不得已,终于选择了在国内的BSP。这次是朋友推荐的yo2,似乎不错,还可以帮自己的域名,闲置已久的 LeiraHua.com 也终于排上了用场。
现在的地址是 http://blog.LeiraHua.com 希望大家看到这贴,能够去新的地方。
In My Circle
Monday, May 21, 2007 5:01:46 PM
Sunday, February 4, 2007 10:00:14 AM
find ./ -name '*.bak' | xargs rm -rf
find ./ -name '*.bak' -print0 | xargs -0 rm -rf
Friday, November 24, 2006 3:29:34 AM
Wednesday, November 8, 2006 7:08:11 AM
p4 change -o 14563 | grep --color="never" -o "//depot/[^ ]*" | cut -c 40- | xargs tar rvf patch.tar
Monday, October 16, 2006 7:05:39 AM
<head> <script src="http://addons.mozine.org/js/install.js" type="text/javascript"></script> </head> [html:a href="./TangoFF_2_0.jar" onclick="return installTheme(event,'TangoFF 2.0', 'images/default.png');" ] Install Theme Tango for Firefox 2.0 </a>
Thursday, August 31, 2006 2:33:44 AM
Monday, August 28, 2006 5:50:55 AM
Monday, August 28, 2006 5:49:49 AM
Monday, August 28, 2006 5:48:17 AM
Monday, August 28, 2006 5:44:53 AM
Tuesday, June 13, 2006 5:09:22 AM
...关于 Search and Replace 和 Regular Expression,还有一个问题困扰我,在这儿记下来。 就是将文件中符合某个pattern的字符串打印出来。注意,只是符合这个pattern的字符串本身,而不是所在行。直接一看,这怎么都是grep的工作嘛,可以在对grep狠狠的RTFM以后,还是未果...
If you haven't been paying attention to GNU grep recently, you should be happily surprised by some of the new features and options that have come about with the 2.5 series. They bring it functionality you can't get anywhere else -- including the ability to output only matched patterns (not lines), color output, and new file and directory options.
-o, --only-matching show only the part of a line matching PATTERN
Friday, June 9, 2006 8:04:18 AM
Tuesday, June 6, 2006 9:51:18 AM
SSH的特性就是安全,如果一个连接长期闲置,那么就可能被利用,所以SSH服务端一般都会有一个超过Idle时间踢出的设置。不过像我们经常会用SSH登陆到远程服务器上长时间的工作的,这个特性就非常不方便了。于是autossh,就是这么一个牺牲安全性,换取便利性的工具。
autossh通过建立另一个SSH连接来监视工作SSH连接,当工作连接断开的时候,能够自动发起重连。不过你得设置ssh-agent,否则,重连的时候还是会提示你输入密码的,这样就失去意义了。
不过,就算是重连,你正在做的工作也会因为失去连接登出而都被杀死的。这时候就该GNU screen登场了。在你ssh到远程服务器的时候,启动一个screen Session,screen可以让你在ssh失去连接的时候自动detach,然后重连上来的时候,只要用screen -D -R取回screen Session就可以了。而且,autossh自带了一个非常好用的script rscreen,已经完完整整的帮忙做好了这件事情,只要直接拿过来用就可以了。
至于安装嘛,对于Debian,照例只要apt就可以了,下面贴一下我的对rscreen的小小修改,去掉了不需要的键设置,使用remoteSSH做为screen Session的名字以区别其他的screen Session,接收全部的ssh参数:
--- /usr/share/doc/autossh-1.3/examples/rscreen 2005-03-23 10:05:20.001000000 +0800 +++ /usr/local/bin/rscreen 2006-05-16 11:41:23.705698100 +0800 @@ -23,4 +23,4 @@ #AUTOSSH_PATH=/usr/local/bin/ssh export AUTOSSH_POLL AUTOSSH_LOGFILE AUTOSSH_DEBUG AUTOSSH_PATH AUTOSSH_GATETIME AUTOSSH_PORT -autossh -M 20004 -t $1 "screen -e^Zz -D -R" +autossh -M 20004 -t $* "screen -D -R remoteSSH"
Tuesday, June 6, 2006 7:58:53 AM
也算用vim很久了,这次vim7发布,倒也是第一时间升级的,不论是家里的Debian还是公司的Windows,但是对Vim7的更新真的没有太在意。这次看到LGJ的贴文Vim7 的新功能点名了Vim7的几大主要更新。
我觉得其中最吸引我的可以说是getscript plugin的特性了。本来维护Vim这么多的plugins就是一件很麻烦的事情,特别是像我这样在很多机器上都会用到Vim,希望能够同步各个机器上Vim配置的,更是一件麻烦的事情。而且,Plugins多了,散落在vimfiles目录中,时间久了,连自己都搞不清楚具体装了哪些Plugins了,要清除一个Plugin就更费劲了。现在有了getscript plugin,只要对自己的常用的plugins写一个GetLatestVimScripts.dat,到时候:GLVS一下,就OK了。简单,清晰,而且还能非常清楚的跟踪自己所安装的plugins,更方便与大家共享。
决定接下来有空了整理一下自己的Plugins,写出一个GetLatestVimScripts.dat,贴上来和大家分享。
Friday, June 2, 2006 4:34:11 AM
这原本是回复到[python-chinese]邮件列表的,但是没有回复进去,可能是因为功过Gmane news服务器的原因。先转到这儿:
倒是这两天我也在看这方面的问题~
一般编写Python C/C++ Module,或者为C/C++ lib编写Wrapper,我所看到的有以下几种方式:
1. 直接使用C Python提供的API
2. SWIG
3. Boost.Python
4. Pyrex
首先直接使用Python C API是很不方便的。上面几位高人已经谈过了SWIG和Boost.Python,我就不多说了,只是个人感觉易用性而言Boost.Python > SWIG,但SWIG功能强大,支持的也不只是Python一种脚本语言。以上这两种方式对C++的支持都比较友好。
这里着重推荐一下Pyrex。 Pyrex可以说是扩展Python的一大创新,她使用Python like的语法来编写Python的C Module,自动翻译成C语言代码,进而编译获取C代码的高效率。而且,配合Python的Distutils,使得构建过程简单到了只需要setup.py的程度。我觉得其简化python扩展的编写方式,已经和Boost.python,SWIG不在一个意义级别上了。
这里贴一段来自pyrex的示例,用于搜索质数:
# primes.pyx
#
# Calculate prime numbers
#
def primes(int kmax):
cdef int n, k, i
cdef int p[1000]
result = []
if kmax > 1000:
kmax = 1000
k = 0
n = 2
while k < kmax:
i = 0
while i < k and n % p <> 0:
i = i + 1
if i == k:
p[k] = n
k = k + 1
result.append(n)
n = n + 1
return result
将其pyrexc编译后得到一个c文件,然后编译之后就是一个python module了~ 按照他的逻辑,我还对照相应的写了一个Python脚本:
#!/usr/bin/env python
# primespy.py
def primes(kmax):
result = []
if kmax > 1000:
kmax = 1000
k = 0
n = 2
while k < kmax:
i = 0
while i< k and n % result != 0:
i += 1
if i == k:
result.append(n)
k += 1
n+=1
return result
两者的代码行数基本一样,来看一下运行结果:
In [23]: tpyx = timeit.Timer(stmt='primes.primes(1000)', setup='import primes') In [24]: tpy = timeit.Timer(stmt='primespy.primes(1000)', setup='import primespy') In [25]: tpyx.timeit(100) Out[25]: 1.2969999313354492 In [26]: tpy.timeit(100) Out[26]: 30.266000032424927速度提高了30倍之多!
pyrex的优势是编写简单,不必处理多余的细节,而且也不需要为这种简单付出效率的代价。劣势在于目前的pyrex对C++的只是仍然不是很好,还在继续开发之中。至于对C++到地支持差到什么程度,我还没有进一步测试过,还希望看到各位的高见。
总结是,如果是针对C的Python扩展,或者lib Wrapper,Pyrex可以说是最方便的选择。如果涉及到C++的扩展,可 能目前boost.python还是最好的选择了。
补:目前正在看Boost.python,SWIG其实并没有细看过,呵呵,只是看了一些intro性质文章,就开始大发厥词了,希望大家补充指正。
Thursday, April 6, 2006 6:53:28 AM
Sunday, March 26, 2006 3:57:04 PM
ls *tif | xargs -n1 mogrify -format jpg -resize ">1024x1024"
Thursday, March 16, 2006 5:31:58 AM
Thursday, March 16, 2006 5:26:20 AM
* ^Subject.*中国
=?utf-8?Q?Goowy=e9=82=ae=e4=bb=b6=e6=9c=8d=e5=8a=a1=e7=9a =84flash=e7=95=8c=e9=9d=a2_=5bFlickr=5d?=
Goowy邮件服务的flash界面_[Flickr]
0xe69c8d 0xe58aa1,一般中文自的utf8编码都会是3个字节,那么对应的就是
=e6=9c=8d=e5=8a=a1,规则可以这么写:
* ^Subject.*=e6=9c=8d=e5=8a=a1
Thursday, March 16, 2006 5:14:35 AM
beowulf% ssh-keygen -t rsa Generating public/private rsa key pair. Enter file in which to save the key (/u/kim/.ssh/id_rsa): [RETURN] Enter passphrase (empty for no passphrase): litt1e 1amp jumb3d Enter same passphrase again: litt1e 1amp jumb3d Your identification has been saved in /u/kim/.ssh/id_rsa. Your public key has been saved in /u/kim/.ssh/id_rsa.pub. The key fingerprint is: b7:18:ad:3b:0b:50:5c:e1:da:2d:6f:5b:65:82:94:c5 kim@beowulf.gw.com
beowulf% cd ~/.ssh beowulf% cp id_rsa.pub authorized_keys beowulf% scp -p ~/.ssh/authorized_keys kim@hrothgar:.ssh/ kim@hrothgar’s password: YourPasswordHere authorized_keys 100% 1839 1.2MB/s 00:00
beowulf% ssh hrothgar Enter passphrase for key '/u/kim/.ssh/id_rsa': litt1e 1amp jumb3d kim@hrothgar%
beowulf% ssh-agent $SHELL beowulf%
beowulf% ssh-add Enter passphrase for /u/kim/.ssh/id_rsa: litt1e 1amp jumb3d Identity added: /u/kim/.ssh/id_rsa (/u/kim/.ssh/id_rsa)
beowulf% ssh hrothgar kim@hrothgar%
Monday, March 13, 2006 4:49:30 PM
Sunday, March 12, 2006 4:05:09 PM
在Debian Administration上看到Search and replace across many files with a perl one-liner这篇文章。多文件的Search and Replace的Linux风格处理方式,也是我一直思考的,这篇文章提供的是一个perl的解决方案。而对于这种问题,最直接想到的解决方案应该是sed吧?而且对于Perl,我到现在还是个门外汉。
不过一直以为sed不能直接对源文件修改,必须重定向到新文件,所以觉得在批量处理中很麻烦,因为每次都必须指定新文件名,然后在覆盖回源文件。为此还傻傻的专门写过一个runsed的shell脚本用于处理重定向到中间文件再覆盖回源文件的工作,让sed可以直接修改源文件,适用于批量处理。还沾沾自喜,以为找到了最终的解决方案。
在上面这篇文章中,比较关键的是用到了perl的 -i 参数edit the files in-place,直接修改源文件。这时候我想,sed也是应该有这么一个in-place edit的选项的,只是我以前没有找到罢了。于是man sed,然后在man page的32行就看到了
-i[SUFFIX], --in-place[=SUFFIX]
edit files in place (makes backup if extension supplied)
这个参数。这时候才觉得自己好傻,没有好好的RTFM,而且还好好的自作聪明了一把。
sed的这个 -i[SUFFIX], –in-place[=SUFFIX] 参数功能还真的很强,除了能够直接修改源文件,还能自动备份源文件,指出备份文件的suffix,真是非常方便。(居家旅游,杀人灭口,必备良药?XD)又可以快乐的sed生活了。
现在,关于 Search and Replace 和 Regular Expression,还有一个问题困扰我,在这儿记下来。 就是将文件中符合某个pattern的字符串打印出来。注意,只是符合这个pattern的字符串本身,而不是所在行。直接一看,这怎么都是grep的工作嘛,可以在对grep狠狠的RTFM以后,还是未果。真是奇怪,总觉得打印搜索到的pattern本身,比打印行要容易的多嘛,怎么会这么难找?Python脚本自然可以很容易就实现,但是总觉得已有的shell工具肯定是有这样的功能了,只是我没找到罢了。希望有达人指点。(不要告诉我grep后sed哦~)
anonymous
Анонімний writes: Houses are not very cheap and not everybo ...
anonymous
Анонімний writes: Have no money to buy a building? You shou ...
anonymous
Анонімний writes: Houses are not very cheap and not everybo ...
anonymous
Анонімний writes: Do you recognize that it is correct time ...
anonymous
anonymous
| S | M | T | W | T | F | S |
|---|---|---|---|---|---|---|
|
| ||||||
| 1 | 2 | 3 | 4 | |||
| 5 | 6 | 7 | 8 | 9 | 10 | 11 |
| 12 | 13 | 14 | 15 | 16 | 17 | 18 |
| 19 | 20 | 21 | 22 | 23 | 24 | 25 |
| 26 | 27 | 28 | 29 | |||
导师的Blog