最近在看Kennth H. Rosen的《离散数学及其应用》,里面有一个欧拉的传记:
列昂哈德·欧拉(Leonhard Euler 1707-1783) 欧拉是瑞士巴赛尔附近一位加尔文教派牧师之子,他13岁进入巴塞尔大学,遵照父亲的愿望开始神学生涯。在大学里,欧拉受到著名的伯努利家族中的数学家约翰·伯努利的指导。他的兴趣和熟练的技能使他放弃神学研究而转向数学。欧拉16岁取得了哲学硕士学位。1727年彼得大帝邀请他加入圣彼得堡的科学院。1741年他来到柏林科学院,在这里一直呆到1766年。然后他回到圣彼得堡,并在那里度过余生。
欧拉的成果多得令人难以置信。他在数学的许多领域都做出了贡献,包括数论、组合以及分析在诸如音乐和造船学这些的领域的应用等。他写的书籍和文章数量在1100部以上,另外还有非常多的去世前未能发表的著作,以至于在他去世之后,用了47年才发表完他的所有著作。他写文章非常快,在世时总有一大摞文章等待发表。柏林科学院总是先发表这一摞最顶上的文章,所以后来的结果常常先于它们所依赖或取代的结果而发表。欧拉有13个孩子,当有一两个孩子在他膝上玩耍时,他照样能够工作。在他生命的最后17年里,他完全失明了。但是,由于他神奇的记忆力,他的数学研究成果的推出并没有受到影响。他的全集的出版工作 由瑞士自然科学协会负责,目前还在进行之中,预期将超过75卷。
类型:随感,创建时间:Dec. 30, 2011, 7:18 p.m. 点击查看完整内容。。。做文本处理的时候经常要判断一个文本有没有以一个子串开始,或者结束。Python为此提供了两个函数:
S.startswith(prefix[, start[, end]]) -> bool
如果字符串`S以
prefix开始,返回
True,否则返回
False。
start和
end是两个可以缺省的参数。分别是开始比较的位置和结束比较的位置。这个函数也可以写成
S[start:end].startswith(prefix)`。
S.endswith(suffix[, start[, end]]) -> bool
如果字符串S
以suffix
结束,返回True
,否者返回False
。与startswith
类似,这个函数也可以写成S[start:end].endswith(suffix)
。start
和end
仍然是从左数起。
Python的这两个函数有个特别的地方——它的prefix
和suffix
参数不仅可以是字符串,还都可以是一个元组。只要其中一个成立,就返回True
,也就是一种“或”的关系。比如:
if filename.endswith((".gif", ".jpg", ".tiff")):
print "%s是一个图片文件"%filename
上面两行代码根据文件扩展名是否是gif
、jpg
或tiff
之一来决定文件是不是图片文件。这个代码也可以写成:
if filename.endswith(".gif") or filename.endswith(".jpg") \
or filename.endswith(".tiff"):
print "%s是一个图片文件"%filename
不过这样比较麻烦。值得注意的是,不熟悉Python的朋友可能会忘了元组周围的括号。
类型:Python,创建时间:Dec. 31, 2011, 1:16 a.m. 点击查看完整内容。。。Paul Graham 2003年4月
(本文出自2003年Python大会上的一篇主题讲话)
很难预测人们的生活在一百年后会是什么样子,我们只能给很少的事物一个确切的预测。我们知道到那时候每个人都将驾驶气垫轿车,地方法规将对建造上百层的高楼无所制约,大部分时间都将日月无光,女人们都将精通武术(martial arts)……在这里,让我们把这幅图景的一个细节放大来看看:那时候人们用什么编程语言来写那些气垫轿车的控制软件呢?
这是一个值得思考的问题,其意义不在于我们一定要用这种语言,而是在于据此我们可以选择可能发展成那种语言的语言——如果我们够幸运的话。
类型:Python,创建时间:Dec. 30, 2011, 7:08 p.m. 点击查看完整内容。。。以前写的一些东西。。主要是我使用电脑的习惯。老是中毒重装电脑的可以看一下。
类型:随感,创建时间:Dec. 30, 2011, 7:07 p.m. 点击查看完整内容。。。在2.5版本之前的Python,输入exit
或者quit
会得到这样一条说明:
>>> exit
'Use Ctrl-D (i.e. EOF) to exit.'
尝试着输入exit()
或者quit()
,python报错。
>>> exit()
Traceback (most recent call last):
File "<stdin>", line 1, in ?
TypeError: "str" object is not callable
很多新手都碰到这个问题。似乎exit
和quit
的存在只是为了告诉别人不要用exit
和quit
。这可真是奇怪的逻辑。
新版本的Python改了这种做法。输入exit()
和quit()
就如我们所料地退出了Python。这也意味着很多情况下我们不用再导入sys
这个模块了
Python2.5之前的程序:
>>> import sys
>>> sys.exit()
现在:
>>> exit()
不过需要注意的事,脚本里面并不能应用exit()
函数。它只存在于解释器内。这个改动主要是为了方便*nix程序员的使用。Windows程序员都喜欢直接关闭窗口吧。
长期以来Python世界的人一直在争论是否应该拥有条件运算符。它可以用来处理根据条件返回不同的值。比如:
if contition:
x=true_value
else:
x=false_value
他们虽然讨论了很久,但是一直没什么结果。在python-dev邮件列表和comp.lang.python新闻主上甚至为此举行了一次投票。最后的结果是大家都同意应该添加条件运算符,可是它的语法形式是什么还是没有结果。主要的争论是C语言的cond ? true_v : false_v
和if cond then true_v else false_v
到底挑哪个好。
最终,Guido van Rossum(Python语言的作者)挑了这样一个令人意想不到的语法形式:
true_value if condition else false_value
它的意义是:如果condition
为真,计算并返回true_value
,并跳过false_value
的计算,否则计算并返回false_value
。它完全等价于完整形式。
这个表达式的优先级是最低的,但是它优于=
号。因此以下这两种形式是一样的
level = 1 if logging else 0
level = (1 if logging else 0)
不过笔者认为后一种形式看起来比较好一点,而且可以免去记忆运算符优先级的麻烦。
类型:Python,创建时间:Dec. 30, 2011, 6:59 p.m. 点击查看完整内容。。。如果使用Python写一个比较大型的程序,你一定会用上日志系统。特别是Python这样的动态语言,很多错误都只能在运行的时候才能发现,一个好的日志系统对于Python程序相当重要。最简单的解决方案当然是直接使用print
输出运行信息。但是这样太简单了,没有分级功能,如果在发布的时候想去掉调试用的运行信息还得找出所有的print
语句进行修改。再者,print
只能输出到控制台,想要输出到文件或者通过电子邮件发送到其他地方,一个print
语句就没办法解决了。
通过使用Python的日志系统,就可以解决以上问题。
本文介绍了logging
模块的简单使用,以及如何设置日志的输出格式、输出方式和过滤器。logging
模块不止可以在屏幕上打印出日志信息,还可以将信息保存在文件,或者发到网络上,或者保存到linux/windows的系统日志里面。点击文章标题就可以阅读更多信息。
Java下的闭包(Closure):
public static Runnable outter_func(){
final String param=System.getenv("PATH");
Runnable r=new Runnable(){
public void run(){
System.out.println(param);
}
};
return r;
}
r.run();
这是在Java里面使用“闭包”的一个例子。run()
相当于Python里的__call__()
。可以看到在run()
方法里可以使用外层函数的变量。这是怎么做到的呢?答案是,Java在编译的时候做了手脚。r这个类其实还有一个隐藏的属性叫做“var$param”,在run()里面所有的param
被Java编译器偷偷替换成var$param
。此外在r
实例化完成后,Java还调用了:
r.var$param=param
假设param
不是使用final
修饰的变量,当param
指向了另外一个对象的时候,r.var$param
与param
就不是相同的了,这就会产生了语义上的问题。因此,闭包绑定的本地变量必须使用final
修饰。
最近开发了一个命令行的Python程序,在Windows下和终端编码设置为zh_CN.GBK的Linux控制台下运行都会出现乱码问题。查看了一下代码,主要是因为我使用了raw_input()输入的字符被我使用socket直接发送到了Java平台进行处理。这个在发送的时候进行一下处理倒也不是很难得事,不过还要取得当前操作系统的字符编码设置,然后在每个输入的位置进行转码,很麻烦。而这样的事本应该由编程语言帮我们解决的。幸好Python3K已经在这方面做得不错了。
IT业存在着太多的分歧,整个软件业在这一方面浪费了很多力量。多种语言、多种平台、多种字符集。可以说软件业无时无刻都在和这些“不一样”做斗争。不知道有没有人统计一下这种浪费所占的百分比?
类型:Python,创建时间:Dec. 31, 2011, 12:21 a.m. 点击查看完整内容。。。最近的两个新闻:
显示了Linux阵营正在走向联合,而不是像以前Ubuntu那样的分裂。同时,Linux阵营正在组建越来越多的标准化组织,比如标准化桌面。我觉得这是一件非常好的事。Linux想要发展,这是必由的道路。相信到最后,各个Linux发行版之间会只剩下界面方面的细微差别,软件开发真正编译一次,到处运行
类型:LinuxApp,创建时间:Dec. 31, 2011, 12:21 a.m. 点击查看完整内容。。。这是一篇很长的文章。首先介绍了SSL的概况,解释一些基本的概念。然后又介绍了SSL的基础——非对称加密技术。短短的篇幅结束以后,就以一个现实世界的例子开始我们的安全之旅。
如果你碰到这些问题,看看这篇文章一定值。
openssl
以及Java的keytool
工具来制作电子证书。本文介绍使用CFX开发一个WebService服务器的几个基本步骤。
NTFS是自Windows NT之后微软操作系统所使用的文件系统。和FAT相比,NTFS更安全。一者NTFS有类似于UNIX系统的ACL,其控制选项甚至比UNIX的多一些。二者NTFS分区比较不怕掉电,对于错误的恢复能力比较强.
本文介绍了几个NTFS的实用技巧。另外介绍了如何用convert
命令把FAT分区转换成NTFS分区。