2006-05-11
#
其中一个发在去年十一月的ICC上,另一个在零二年的IEEE Trans. on Communication上,说明我的想法水平都还不错啊。可惜已经被人发过了,不然没准就能靠它们毕业了。
多说无益,从头开始吧。
2006-05-08
#
2005-08-29
#
老爸今天钓鱼钓回来三条金鲫鱼。这三条鱼通身金红色,其中两条还长着长长的红尾巴,煞是好看。
我决定把它们养起来。于是找出多年不用的鱼缸刷干净,用鹅卵石铺在缸底,再倒进静置了三天的清水——原本是打算拿来浇花的。请鱼入缸,三条小鱼经历颠簸之苦以后终于又有了一个新家。
师弟好歹把论文拿出来了。我看了两眼,水平真的很一般,不过发表应该没大问题。把论文交到WZ手上就算我完成任务,能不能发得看他自己的手段了。私下认为他今年想评讲师难了。
今天继续打点行囊,还需要买些零碎的东西。希望交大的行李标签能及时寄来,否则我就有大麻烦了。
2005-08-19
#
2005-08-01
#
5月26号就把档案寄走了,到今天才拿到通知书。
前几天让同学帮着问问。居然因为寄得太早,负责政审的人没想到博士档案的编号能这么小,就一直认为我的档案还没到。#·¥%·#¥……
要不是我找人问了问,现在还拿不到通知呢。
2005-07-14
#
希望实现由进程A产生进程B(A、B都是python程序),并在B的生存期在随机时间向B发送不确定的字符串信息。
我的测试程序是这样的:
Sample Code如下:
#程序A
#产生子进程B(receiver.py),并向其发送字符串
import subprocess, time
subproc = subprocess.Popen(['receiver.py'], stdin=subprocess.PIPE, shell=True)
#运行子进程B,第二个参数可能不正确。
time.sleep(0.5)
print 'start'
#下面两种方法都不行
subproc.stdin.write('data\n')
subproc.communicate('data\n')
print 'end'
#程序B receiver.py
#从stdin读字符串并打印之。
import sys
print 'receive...'
s = sys.stdin.readline()
print 'get:', len(s), s
结果很失败,B中的sys.stdin.readline()不等有写入就返回了,所以执行A时的返回信息是
start
receive...
get: 0
end
在python-cn maillist的Qiangning Hong兄的指点下,发现只要将A里的
subproc = subprocess.Popen(['receiver.py'], stdin=subprocess.PIPE, shell=True)改为
subproc = subprocess.Popen(['python', 'receiver.py'], stdin=subprocess.PIPE, shell=True)并保证python.exe在系统的PATH中就可以了,原因不详。
附:能够成功实现进程间通信的sample例程:
#程序A
#产生子进程B(receiver.py),并向其发送字符串
import subprocess, time
subproc = subprocess.Popen(['python', 'receiver.py'], stdin=subprocess.PIPE, shell=True) #运行子进程B
time.sleep(0.5)
print 'start'
#下面两种方法都可以了
subproc.stdin.write('data\n')
subproc.communicate('data\n')
print 'end'
#程序B receiver.py
#从stdin读字符串并打印之。
import sys
print 'receive...'
s = sys.stdin.readline()
print 'get:', len(s), s
执行A得到返回结果:
start
receive...
get: data
end
2005-06-30
#
外星人又来了,把机器的系统时间改成了2024年。在我发现并修正错误之前已经有大量文件的最后改动时间出错了,涉及多个目录。
利用python 提供的os.utime函数,方便的修正了这个问题。
for root, dirs, files in os.walk(path):#得到遍历列表
for file in files:
stat = os.stat(os.path.join(root, file))
at = localtime(stat[ST_ATIME]) #last access time
mt = localtime(stat[ST_MTIME]) #last modify time
if mt[0] == 2024 and mt[1] >= 6 and mt[2] > 7:
#下面一段有点怪,不知道有没有更好的写法
#下面三行应该可以不要
at_t = [at[i] for i in range(9)]
at_t[0] = 2005
at_st = mktime(at_t)
mt_t = [mt[i] for i in range(9)]
mt_t[0] = 2005
mt_st = mktime(mt_t)
#修改last modify time
os.utime(os.path.join(root, file), (at_st, mt_st))
2005-06-21
#
.period 句号
,comma 逗号
:colon 冒号
;semicolon 分号
!exclamation 惊叹号
?question mark 问号
 ̄hyphen 连字符
'apostrophe 省略号;所有格符号
—dash 破折号
‘ ’single quotation marks 单引号
“ ”double quotation marks 双引号
( )parentheses 圆括号
[ ]square brackets 方括号
《 》French quotes 法文引号;书名号
...ellipsis 省略号
¨tandem colon 双点号
"ditto 同上
‖parallel 双线号
/virgule 斜线号
&ampersand = and
~swung dash 代字号
§section; division 分节号
→arrow 箭号;参见号
+plus 加号;正号
-minus 减号;负号
±plus or minus 正负号
×is multiplied by 乘号
÷is divided by 除号
=is equal to 等于号
≠is not equal to 不等于号
≡is equivalent to 恒等于号
≌is identical to 全等于号
≈is approximately equal to 约等于号
<is less than 小于号
>is more than 大于号
≮is not less than 不小于号
≯is not more than 不大于号
≤is less than or equal to 小于或等于号
≥is more than or equal to 大于或等于号
%per cent 百分之…
‰per mill 千分之…
∞infinity 无限大号
∝varies as 与…成比例
√(square) root 平方根
∵since; because 因为
∴hence 所以
∷equals, as (proportion) 等于,成比例
∠angle 角
⌒semicircle 半圆
⊙circle 圆
○circumference 圆周
πpi 圆周率
△triangle 三角形
⊥perpendicular to 垂直于
∪union of 并,合集
∩intersection of 交,通集
∫the integral of …的积分
∑(sigma) summation of 总和
°degree 度
′minute 分
″second 秒
#number …号
℃Celsius system 摄氏度
@at 单价
2005-04-30
#
才穿了十来次的球鞋居然在侧面开了一个大口子。
向后滑步的时候因为鞋已经不跟脚了,鞋底抓着地面没动,脚从侧面的口子里滑出来,一下就扭到了。
脚都肿了,疼死我了!
2005-04-12
#
今天,中央10台《绿色空间》继续讲述关于水的故事。
西北一个严重缺水的农村,贫穷的一家。
一天,说媒的找到这家的女主人,要给她的女儿说一门亲事,对方是邻村村长家的儿子。说媒女人巧舌如簧,夸耀村长家的条件,聘礼是……
五缸水两袋面……
母亲显然动心了,提出要到对方家看一看。
村长熟练地笑脸相迎,让进屋里。
村长家当然地殷实许多,用的是自来水。
村长的儿子不出意料地残疾,智力障碍。
母亲有些退缩,说要和女儿商量商量。回去的路上,母亲向说媒女人抱怨那家儿子的傻,说媒女人则极有技巧地强调村长的实力:
“那家的条件你看到了。你女儿嫁过去,下半辈子人家村长都安排好的……”
“嫁过去不会吃苦,连水都不用担了……”
……
回到家,母亲对女儿说:“今天有人来给你说媒,我去看过了,那家非常好,你觉得怎么样?”母亲忽然有点犹豫,“要不哪天你见见……”
“你拿主意吧,我听你的。”女儿说。
在那里,水比血浓
2005-04-05
#
在Python/wxPython环境下,执行外部命令或者说在Python程序中启动另一个程序的方法一般有这么几个:
1、os.system(command)
2、wx.Execute(command, syn=wx.EXEC_ASYNC, callback=None)
若置syn为wx.EXEC_ASYNC则wx.Excute函数立即返回,若syn=wx.EXEC_SYNC则等待调用的程序结束后再返回。
callback是一个wx.Process变量,如果callback不为None且syn=wx.EXEC_ASYNC,则程序结束后将调用wx.Process.OnTerminate()函数。
os.system()和wx.Execute()都利用系统的shell,执行时会出现shell窗口。如在Windows下会弹出控制台窗口,不美观。下面的两种方法则没有这个缺点。
3、class subprocess.Popen
最简单的用法是:
import subprocess
subprocess.Popen(command, shell=True)
如果command不是一个可执行文件,shell=True不可省。
前面三个方法只能用于执行程序和打开文件,不能处理URL,打开URL地址可用webbrowser模块提供的功能。
4、webbrowser.open(url)
调用系统缺省浏览器打开URL地址,如 webbrowser.open('http://www.google.com'),也可以利用
webbrowser.open('h:\python.zip')来执行程序。这样可以不必区分是文件名还是URL,不知道在Linux下是否可行。
以上在Windows2000,Python2.4a1,wxPython 2.5.1运行。
modify:还有一种方式:subprocess.call(*args, **kwargs)
2005-04-01
#
一些控件的method,已经实现了但文档里没有,只好自己写。痛苦~
更痛苦的是自己写完一个功能突然发现它早就存在了。
2005-03-31
#
下半年他就到山东工艺美院当老师了。知道这个消息让我很吃惊,我一直认为他无论如何都会留北京的。
爷爷当然很高兴,还特意打电话来告诉我。
起因是希望判断对话框中数据是否valid。python-cn的Qiangning Hong说用wx.Validator,上午看了看文档把它搞定了。
晚上写个长的。
2005-03-30
#
Python没有虚函数的概念。以前没注意到,现在用C++的思路去解决问题的时候,一头撞到了墙上。痛~~