2007年11月9日星期五

vim的几项设置

建议将以下设置写在用户目录下的.vimrc文件里。


# 开启语法高亮
syntax on

# 开启自动缩进,即下一行和当前行的缩进一致
set autoindent

# 开启代码智能缩进。例如在写C++程序时,“{”的下一行会自动增加缩进
set cindent

# 设置智能缩进的增量,即每一级缩进的字符数
set shiftwidth=4

# 显示行号
set number

# 设置Tab宽度
set tabstop=4


个人感觉Vim的智能缩进是相当聪明的。

2007年11月8日星期四

无奈的帮助文档

和室友聊起电脑游戏,我说我实在懒得学新游戏了,又得看一大堆帮助文档。别人挺奇怪,说游戏这东西还要学呀;我也挺奇怪:游戏这东西一个有一个的玩法,不先学会可怎么玩儿呀?想当初微软的那个“模拟飞行”,我硬是看了三百多页的英文飞行手册才算会在游戏里起飞降落了。
似乎很少有人意识到几乎每一个像样儿的软件都会有一个不算短的帮助文档在里面,人们几乎不会意识到它的存在。即使是在遇到问题时,更多的人选择去问别人或是自己摸索,而不是先查查帮助文档。不过说实话,有些软件的帮助文档做得实在是差劲,整个儿就是在说它的软件多么多么好,如何向作者寄注册费。如果遇到问题了想找它,它都不搭理你。更有的软件压根儿就没有帮助文档,会不会用,怎么用,全凭你的悟性了。
有人说一个易用性好的软件就不应该让用户去看帮助。话虽有些道理,但不能说帮助就没用啊。尤其是搞编程的,Visual Studio假如没有MSDN,Java程序员假如没有Java API文档,这日子都不知该如何过。
以前在Linux里生活过一段时日,养成了一个习惯:使用软件前先看明白它的文档,再决定是否使用它。

2007年7月15日星期日

访问Wikipedia、BlogSpot的另一种方法

除了Tor,今天还知道了Firefox的gladder插件,可以通过它方便地使用各种代理服务器来访问一些被封掉的境外网站。安装后,Firefox的右下角会出现一个图标,右击它,打开“选项”窗口,选择dirtyproxy.com作为在线代理(经试验这个代理速度比较快)。然后就可以自由访问了。

2007年7月14日星期六

无题

放假回家了,Blogspot又被封了……现在在用Tor ……

2007年3月3日星期六

在Blogger中使用LaTeX输入数学公式

今天借着好奇心,用Google找到了在Blogger中使用LaTeX的简易解决方案。基本原理就是通过一段Javascrript将LaTeX文本变成图片插入到文档中。原文在http://wolverinex02.googlepages.com/emoticonsforblogger2
具体步骤是:
一、下载并安装Firefox浏览器;
二、安装Greasemonkey插件;
三、安装LatexforBlogger脚本:latexforblogger(点击即可);
四、修改Blogger模板,将以下内容添加到]]></b:skin>之前:
img.latex_eq {
padding: 0;
margin: 0;
border: 0;
}

保存模板后,再在Firefox里发Blog时会发现上面的编辑工具栏里多了个“LaTeX”按钮。

以后,当你输入完LaTeX文本后,点击“LaTeX”按钮,就自动变成漂亮的数学公式了。
随便输入一个公式看看:


目前的缺点是只能在Firefox浏览器下使用这个功能。而且生成的公式颜色是固定的,在深色背景下显示效果比较糟糕。但无论如何也比上传图片方便多了。

2007年3月1日星期四

Blog访问量创新低

今天这个Blog的访问量再创新低!截止到本文发表时,今日共有多达6位访客(包括我自己)光顾过这个小小的Blog。
哇……

搜索引擎优化?

刚才在CSDN的Blog上看了几个谈如何为个人网站带来流量的文章。其中很重要的一点就是所谓的SEO——搜索引擎优化。
怎么样让自己的网站更快地被搜索引擎收录,怎么样能在更短的时间内获得一个好的排名……一些人可算是在这些方面用尽了脑子。而且这个领域里的确有很大的商机,据说还因此产生了一个新的职业……
罗列几个所谓的技巧,顺便也说说我的看法:

  1. 在<title>和<meta>里堆砌大量关键字——现在稍微聪明点儿的搜索引擎(更不用说Google了)似乎对此并不感兴趣;
  2. 在<meta>里堆砌大量的热门关键字——和上面的结果一样,白费劲儿,弄不好还会被认为作弊;
  3. 把大量热门关键字放在页面里,但设置成和背景一样的景色,以此来骗过搜索引擎——这招儿是够损的,我只知道这种方法骗不了Google,而且Google的蜘蛛对此惩罚还很严厉;
  4. ……
如果你把SEO发挥到极致,就要重新思考一个问题:你的网站是给人看的还是给蜘蛛看的?
我想,既然是个人网站,还是仅仅依靠兴趣来吧。研究SEO是件挺枯燥的事,不如把这些精力用到自己更有兴趣的地方。当然如果你的兴趣就是SEO,那……
我觉得SEO那些方案的核心思想就是“下有对策”,可无论如何也是处于被动地位的。前几天看过某人写的不要在Google Adsense上作弊,说Google里那么多世界顶尖的人才,就你这一个脑袋瓜儿是玩儿不过他们的……

2007年2月28日星期三

Google Brain——未来的Google,你相信吗?

先看看这段视频吧。声明:Google还没有实现视频演示的那样的功能。

其实我觉得这种方式还不如直接用关键字搜索来得方便呢。

开源词典软件——stardict

像我这种经常看外文材料的人自然少不了一个翻译软件。今天重温了一下stardict,真是比前几年进步不小啊。stardict(中文名:星际译王)是一个开源的词典类软件。既然是开源的,那它的资源就非常丰富了。当然刚刚安装好的stardict是不带有任何词典的。在它的项目主页上你可以找到很多的词典包下载,甚至都有Wikipedia的词典!在资源上比国内有名的“金山词霸”要丰富多了——并且还是免费软件。
stardict需要GTK运行时,在项目主页上就可以找到下载,安装也很容易。唯一的缺点是界面太简陋,这也是GTK程序一贯的问题。

2007年2月27日星期二

再谈Google Adsense

Google Adsense放上两天了,发现Google对我的Blog学习得很快,投放的广告都非常准确,绝大部分都是我感兴趣的内容。一个机器程序能做到这种程度,真叫我大开眼界了。
透过Adsense,在维护自己的Blog时顺便就能发现很多有趣的东西。感觉就像一个自动的信息源,而且垃圾信息还比较少。实在难以想象这样的玩意儿还能带来经济收入(我的印象中网站一但和“钱”扯上关系那它的质量就下降了)。
最喜欢的是文章上面Google提供的“链接列表”,占地不多,却像一个导航栏一样。它似乎知道我的爱好。昨天我还挺纳闷儿,我的Blog里并没有出现VC,Matlab之类的文字,它怎么就知道我也喜欢那些东西呢?

Blogger模板的中文乱码问题

今天才发现我的Blog用IE浏览器打开时显示的是乱码,显然是IE不能自动识别出UTF-8编码,需要我手动调一下。
观察了一下其他在IE中显示正常的UTF-8编码的网页,发现在<head>...</head>中有一行<meta content="text/html; charset=utf-8" equiv="Content-type">,而我的却没有。这下就好说了,直接把这一行添加到HTML模板里,保存,再打开发现一切都正常了。
以后一定要重视多在不同的浏览器里检查一下,特别是那个让我又爱又恨的IE。

2007年2月26日星期一

快开学了

下个星期就要开始上课了,终于要学到那些艰深的专业课了,什么数据结构、计算机组成原理、汇编语言……虽然想想也挺有意思,不过无论如何也要和Python、PHP这些我更加喜欢的东西先疏远一下了。到时候这个Blog的更新也就不会很频繁了。其实我是刚刚才发现写Blog的乐趣的——当然了,对于我来说,有兴趣的事是什么都阻挡不了的;对Blog而言,大可放心。
写Blog很像我在中学时老师要求写随笔。当时是很不情愿的,不过我仅仅在一两天之后就产生了兴趣,导致这个“毛病”一直延续到现在——只不过是从纸上挪到了网上,而且内容更杂了。如果兴趣都能这么容易地产生,那该多好啊!
回想上学期所学的,最失败的就是很多人还没有学会在网上用搜索引擎查找资料,还仅仅认为网络是娱乐的地方。我除了感到无奈,觉得什么有用的事都做不了……
不过最幸福的是认识了很多的好人,像彦坤哥哥、玉培姐姐、长涛哥哥、江华哥哥、玲弟姐姐……而且还和以前的一些朋友们保持着通信联系。我又是多么的幸福啊!
5月份考程序员,预祝我能交上好运。

真高兴,Google Adsense送来了!

今天上午11点多的时候Adsense小组终于给我回信了,当然了,我的Adsense申请是被批准了的。
仔细阅读了一遍使用说明,然后迫不及待地把Adsense代码安上,一遍遍地看看效果,还得提防自己:千万别点广告!另外稍微感到奇怪的是,Google说刚安装上Adsense时会显示一段时间的公益广告,访问量小的可能会在48小时后才出现商业广告;而我的居然放上后没过一小时就出现商业广告了,真是纳闷。难道是我的人品好?哇哈哈……
Google Adsense虽然不错,但毕竟是属于广告,可千万不能影响网站的质量呀。看着有些网页里面塞满了Google的广告,怎么看怎么捌扭!自己今后可别成为那个样子呀。

2007年2月25日星期日

Python笔记(5)——小试身手

这些天磨磨蹭蹭地看完Python 2.5的文档的第三章了。结束部分举了个例子,更是让我为Python拍手称奇!



a,b=0,1
while b<10:
print b
a,b=b,a+b


会打印出10以内的Fibnacci数,每行一个,多么简洁呀!最新鲜的是那两个赋值语句,一个“=”竟然同时给两个变量完成了赋值!至少到目前为止我还没有在其他的语言中发现有这个特性的。
不过一个数占一行未免有些浪费屏幕,这时只需在print b后面加上一个逗号“,”,于是就成了:


a,b=0,1
while b<10:
print b,
a,b=b,a+b


输出就成了一行了,两个数之间都用空格隔开。

1 1 2 3 5 8

如果你仔细观察,你会发现print很有智慧:空格仅仅在“两个数之间”出现,而在第一个的前面和最后一个的后面却没有!你也许会说,这有什么了不起的?嗯,想想你在C语言中是怎么样做的吧,是不是要对第一个或者是最后一个做“特殊处理”?
Python入门内容就到这里吧,以后还有很多东西要学的呀。

Python笔记(4)——List

把一堆东西东西放在一起就构成了一个List,当然这个“一堆”不一定指一个以上,也可以仅仅有一个,甚至是什么都没有。

>>>a=['spam','eggs',100,1234]
>>>a
['spam','eggs',100,1234]
>>>a[0]
'spam'
学过其他语言的可能会觉得这有点像数组,下标从0开始;但又有所区别。看上面的例子得知,一个List中的元素类型不一定是同一种。要重点指出的是,Python淡化了类型的概念。
有意思的是,List的元素下标可以从右边数起:对上个例子而言,最右边的是a[-1],靠左一点的是a[-2],等等。这有什么用呢?比如让你显示出一个List中第二个到倒数第二个中的所有元素,你当然可以先找到这个List的长度,不过这不是Python的做法,那是C++/Java一类的。更地道的是用:
>>>a[1:-1]
['eggs',100]
再举两个List运算的例子:
>>>a[:2]+['bacon',2*2]
['spam','eggs','bacon',4]
>>>3*a[:3]+['Boo!']
['spam',eggs',100,'spam','eggs',100,'spam','eggs',100,'Boo!']
List中的元素是可变的,这一点了字符串不太一样:
>>>a
['spam','eggs',100,1234]
>>>a[2]=a[2]+23
>>>a
['spam','eggs',123,1234]
也可以改变List中的一个Slice,这样可以相当直观的进行删除插入操作:
>>>a[0:2]=[1,12]
>>>a
[1,12,123,1234]
>>>a[0:2]=[]
>>>a
[123,1234]
>>>a[1:1]=['bletch','xyzzy']
>>>a
[123,'bletch','xyzzy',1234]
>>>a[:0]=a
>>>a
[123,'bletch','xyzzy',1234,123,'bletch','xyzzy',1234]
>>>a[:]=[]
List中元素的个数可以用len()来取得:
>>>len(a)
8
刚才说List的元素类型不限,可以推想,一个List也可以作为另一个List的元素:
>>>q=[2,3]
>>>p=[1,p,4]
>>>len(p)
3
>>>p[1]
[2,3]
>>>p[a][0]
2
>>>p[1].append('xtra')
>>>p
[1,[2,3,'xtra'],4]
>>>q
[2,3,'xtra']
注意这里:q和p[1]引用同一内存区域,对其中一个的改变都会影响到另一个

2007年2月24日星期六

看来Tor也要成为必备软件了

实在不愿接受这个现实,不过也不得已。明眼人都知道这是怎么回事。
郁闷……

百度想搞什么?

刚才有一阵google.com又上不去了,无奈这中这好使用百度,没想到百度居然发现了我安装了Google工具栏,给了我一个建议:稍后我用IE来打开百度(刚才用的是Firefox),却没有发现这个提示(IE没有禁用脚本),为什么它只是在Firefox中出现呢?莫非……
但愿不是什么不详的征兆。

我的Web设计观点

为自己总结一下,也督促自己严格遵守。

  • 最重要的是内容;
  • 尽力原创,转载一定注明出处;
  • 利用CSS做到内容和样式分离;
  • 不要以为自己看上去很好就可以了。世界上有很多种浏览器,很多种操作系统,很多种显示器;
  • 文章如果不长,尽量放在一个页面内,并且在代码上是连续的,这样方便残疾人;
  • 对于大中型网站,尽量采用现成的CMS,如Mambo;
  • 便于打印机输出,特别是知识类的网站,可以为打印输出设计个单独的CSS;
  • 广告可以有,但绝对不能影响浏览者的心情,很多网站上的广告飘来飘去,我很烦,我不允许自己使用浮动广告;
  • 页面样式尽可能单一,不要太绚丽,这样能提高访问速度。

2007年2月23日星期五

Amaya居然还不支持中文

Amaya作为被W3C推荐的HTML编辑器,居然不能正确的处理中文!一直把中文字符当成两个半个字符来对待。倒不是说一个汉字也显示不了,可你如果想打“下载”两个字,你就会发现“载”字成了个小方框。如图:
Amaya可是被W3C推荐了多年了,记得三年前就发现了它对中文的不友好,本以为如今会大有改进的,没想到还是老毛病。
作为国际互联网标准化组织,W3C居然一直在推荐一个如此不重视国际化的软件,真不知道那些人是怎么想的。

Python笔记(3)——字符串(续)

Unicode
使用Unicode字符串很简单,只需在前面加个“u”就可以了。

>>>u'Hello world!'
u'Hello world!'

Unicode可以支持更多的字符,可以直接用Unicode编码:
>>>u'Hello\u0020world!'
u'Hello world!'

\u0020表示编码为0x0020的字符(也就是空格)。对于Unicode字符串,可以用str函数将其转换为普通字符串:
>>>str(u"hello")
'hello'

空间的尺度

以前看过一个名为Powers of ten的短片,演示了宇宙有多大,原子的世界有多小。看后真觉得过瘾,不禁感叹人类智能的伟大:我们的认识尺度已远远超过了我们生活的世界。

Powers of ten



刚才又看了和这个短片相关的一段视频,也挺有震撼效果的。一同来分享一下。
Cosmic Zoom

Python笔记(2)——字符串

表示方法
在Python中,像'single quotes'和"double quotes"这样包含在单引号或双引号里的内容称为“字符串”。和数值类似,字符串也可以认为有一个值——就是它本身。例如:

>>>'single quotes'
'single quotes'

但如果字符串内容本身包含引号又应该怎样表示呢?方法是用反斜线“\”来“转义”,例如单词“Doesn't”,要写成
>>>'Doesn\'t'
"Doesn't"

注意和上个例子比较一下。刚才输出的字符串是用单引号括起来的,而这时变成了单引号。再看几个例子:
>>>"Doesn't"
"Doesn't"
>>>"Doesn\'t"
"Doesn't"
>>>'You asked: "I can\'t understand."'
'You asked: "I can\'t understand."'
>>>"You asked: \"I can't understand.\""
'You asked: "I can\'t understand."'

经过这些试验,我自己总结了一条规律:由左至右,像一个栈一样,引号依次完成匹配。呵呵,似乎很难理解——我自己也觉得很绕口。简单来说,只要你觉得Python能明白你的意思,就成。
和C语言类似,Python中也预先定义好了一个特殊字符。如\n代表换行符,例如:
>>>"line 1\nline 2"
'line 1\nline 2'

怪了,怎么没有显示在两行上?查阅手册得知,要使用print语句:
>>>print "line 1\nline 2"
line 1
line 2

print是打印的意思,所以细心点就会发现,此时输出结果中已经没有了外围的引号了。
如果我们要显示的字符串里包含了\n之类的字符组合怎么办?例如要打印的就是line 1\nline 2,当然可以用转义的办法去实现,记住“\”要写成“\\”:
>>>print "line 1\\nline 2"
line 1\nline 2

实际上还要一种更方便的方法,就是使用raw string,也就是在字符串前面加个“r”,这样就告诉Python解释器别多操心,只管老老实实地照着原样输出:
>>>print r"line 1\n line 2"
line 1\nline 2

字符串连接
多个字符串可以用“+”来连接,形成一个字符串:
>>>str="hello"+" world"
>>>print str
hello world

这个很简单,没什么可说的。和多数语言不同的是,Python实现了整数与字符串的乘法,显然地,结果就是把一个字符串重复n次:
>>>print "hello! "*3
hello! hello! hello!

是不是很新鲜呢?

在字符串中抽取内容
显然字符串是由一个个字符构成的,那就应该有办法取得里面的单个字符,或者是部分字符构成的字符串(子串)。Python用一个整数下标来表示,下标从0开始:
>>>str="word"
>>>str[2]
'r'
也可以指定一个下标区间,这样就得到了子串:
>>>str[0:2]
'wo'
需要注意的是,[m:n]实际上表示的是[m,n),即不包括下标为n的那个字符。而且下标的用法也很灵活:
>>>str[:3]
'wor'
>>>str[2:]
'rd'
>>>str[:]
'word'
用len()可以得到字符串的长度:
>>>len(str)
4

先领悟一下吧。字符串部分还会涉及到Unicode。我先去休息了。

2007年2月22日星期四

Google Analytics——挺好玩

我为这个Blog开能了Google Analytics——一个专业的网站统计分析工具,只需按照提示在HTML模板里加上几行代码就开始工作了。
功能似乎挺复杂的,我也没怎么弄明白。不过我觉得最有意思的是它能告诉我有哪里的人来过我的Blog,他们是怎样找到的。看看这两个图:

居然有来自美国和日本的?

免费空间越来越多了

虽然中文网站提供免费空间的很少,而且多有许多限制,但要在Google上搜索free web host,就能轻易地找到一大堆。而且空间小则100MB,多达8GB,多数还支持PHP和MySQL,甚至已经把Mambo,WordPress,XOOPS等许多免费软件的压缩包准备好了,让你无需自己上传,只需简单地选择一下就可以在线安装了。这可以说是建站者的福音了。
不过遗憾的是,支持ASP的免费空间寥寥无几,我想可能是大部分服务器都不是Windows系统的吧,也有可能是版权的问题,才使得PHP和MySQL的免费空间上如此流行。

2007年2月20日星期二

网站随想

今天在免费空间上试用了几个PHP程序,觉得挺好玩儿的。把软件安在别人的机器上让自己享用,这种美妙的感觉以有还没有过。如今比较稳定的免费空间大多是国外的,而国外的免费空间又有相当一大部分是支持PHP+MySQL的,因此构建在PHP和MySQL上的软件是大有用武之地的。
刚才还发现了一个好事——被封多年的Freeweb.com被解封了,我是在用Google搜索free web时发现的。顿时有一种欣喜若狂的感觉。多年以前我还在上面做了我的第一个小小的网站,我用当时的用户名登录进去。哈!居然还给我留着呢!而且里面的东西一样也不少,真不错!想想国内的那些提供“免费空间”的网站,几乎没有会给你保留那么长时间的,而且还会给你加上很多五颜六色的广告。
说到广告,我最喜欢的还是类似于Google的文字广告。记得看过一句话,说广告在合适的场合下就是一种很有用的信息(大意如此)。而Google又能根据网页的内容自动投放合适的广告。所以我给我的这个Blog申请了一个Google Adsense,不过现在还没被批下来。我是不指望用它来得到收入的,我知道我的Blog的访问量小得可怜。想加入Google的广告仅仅是想为访问我的Blog的人提供更多的信息。
盼望Google Adsense的代码早日收到。

2007年2月19日星期一

向Google添加Blogger的Sitemap

虽然早就开通了Google的“网站管理员”功能,而且添加了ggggqqqqihc.blogspot.com,不过一直也没能添加Sitemap文件,这显然对Google机器人来说不太友好。
今天在Joour如何将blogger的blog提交到google sitemaps一文中找到的解决方案,没想到竟然简单到都不用自己制作Sitemap,Blogger已经做好了!
原来你的Sitemap文件就是:
http://your_username.blogspot.com/atom.xml

三门问题

三门问题又叫蒙提霍尔问题。说的是在一个电视游戏中,参赛者面对三扇一模一样的关闭着的门,其中一扇门后面是汽车,另外两扇后面是山羊。参赛者选择了一扇门,但并没有打开;这时主持人开启了另外一扇门,后面是山羊。主持人问参赛者要不要换另外一扇关着的门。问题是:换另一扇门是否会增加参赛者赢得汽车的概率?
注解(引自Wikipedia):

Mueser和Granberg透过在主持人的行为身上加上明确的限制条件,提出了对这个问题的一种不含糊的陈述:

  • 参赛者在三扇门中挑选一扇。他并不知道内里有甚么。
  • 主持人知道每扇门后面有什么。
  • 主持人必须开启剩下的其中一扇门,并且必须提供换门的机会。
  • 主持人永远都会挑一扇有山羊的门。
    • 如果参赛者挑了一扇有山羊的门,主持人必须挑另一扇有山羊的门。
    • 如果参赛者挑了一扇有汽车的门,主持人随机在另外两扇门中挑一扇有山羊的门。
  • 参赛者会被问是否保持他的原来选择,还是转而选择剩下的那一道门。
大多数人都会认为不会增加赢的概率,理由是在剩下的两扇门后,肯定是一只山羊一辆汽车,无论选择哪个赢得汽车的概率都是1/2。
事实上这个答案是错的,正确结果是选择另一扇门会使记得汽车的概率增大一倍,尽管这十分违反直觉。
以下的解答引自Wikipedia:

问题的答案是可以:当参赛者转向另一扇门而不是继续维持原先的选择时,赢得汽车的机会将会加倍。

有三种可能的情况,全部都有相等的可能性(1/3):

  • 参赛者挑山羊一号,主持人挑山羊二号。转换将赢得汽车。
  • 参赛者挑山羊二号,主持人挑山羊一号。转换将赢得汽车。
  • 参赛者挑汽车,主持人挑两头山羊的任何一头。转换将失败。

在头两种情况,参赛者可以透过转换选择而赢得汽车。第三种情况是唯一一种参赛者透过保持原来选择而赢的情况。因为三种情况中有两种是透过转换选择而赢的,所以透过转换选择而赢的概率是2/3。

如果没有最初选择,或者如果主持人随便打开一扇门,又或者如果主持人只会在参赛者作出某些选择时才会问是否转换选择的话,问题都将会变得不一样。例如,如果主持人先从两只山羊中剔除其中一只,然后才叫参赛者作出选择的话,选中的机会将会是1/2。

另一种解答是假设你永远都会转换选择,这时赢的唯一可能性就是选一扇没有车的门,因为主持人其后必定会开启另外一扇有山羊的门,消除了转换选择后选到另外一只羊的可能性。因为门的总数是三扇,有山羊的门的总数是两扇,所以转换选择而赢得汽车的概率是2/3,与初次选择时选中有山羊的门的概率一样。

2007年2月18日星期日

Blogger偏爱Firefox?

用IE在Blogger上写Blog是一种痛苦的经历。光是登录就得用好几分钟的功夫,最后还经常停留在一个空白页上。我就想不明白它咋就那么慢?IE出问题的可能极小。因为访问其他的网站都没有问题。换用Firefox以后感觉就好多了,甚至当我在登录了Google帐号以后就不必再登录Blogger帐号了。据我观察Blogger上的很多功能都是用Javascript实现的。虽然早就听说Firefox对Javascript的支持比较好,但没想到能差这么多。
以前用TiddlyWiki的时候,在IE中也是不一会儿速度就变得非常慢,而Firefox中就没有问题。推测可能是IE的Javascript脚本引擎做得不够细致。看来面对大量的Javascript时,还是Firefox能挺得住。
虽然目前还没有足够的水平能读懂Blogger的Javascript代码,但这也说明被Google收购的Blogger在“浏览器中立”的方面做得还不够好。

后记:刚才在另一台电脑上试了一下,没想到竟然真的是我的IE的问题。不过这个毛病实在是太不显眼了。看来在下结论之前要做充分的调查。

Python笔记(1)——迈出第一步

Python,听这名字有点儿吓人。其实这里的Python不是那种没有腿的令人恐惧的动物,而是一种编程语言,一种在开源世界很流行的编程语言。Python这么多年来已经发展得十分强大,但在人口众多的中国,知道它的人还是相当少,更别说这方面的专家了。
好了,废话不多说,现在切入正题。
获得Python的开发环境很容易,Python社区出的解释器和开发工具都是自由软件,可以很方便地下载。还有一些手册、教程之类的文档,所有这一切都可以在http://www.python.org上找到。
安装完成后会发现它自带了一个叫IDLE的Python开发环境。我建议使用它来学习Python,而不提倡在黑乎乎的“命令提示符”写一行行地写代码——虽然这看上去很cool,IDLE有语法加亮和自动缩进的功能,写代码能省不少力气。
我认为Python和其他语言最多的不同点就是它把缩进作为语法的一部分,不像C++、Pascal那样用特定的标记来划分区块。因此学习Python就会养成良好的编排习惯。相比之下,对于刚开始学诸如C之类的编程语言的人来说,可能要过相当长的一段时间后才能养成代码缩进的习惯。
现在打开IDLE,上面显示了一些有关Python的信息,不必管它。要注意的是光标闪烁的地方,有一个“>>>”的提示符,表明Python解释器已经准备好,随时待命了。现在输入:

2+2

并按下回车键,发现了什么?下一行出现了“4”。Python最简单的功能就是当成一个计算器。

加减乘法没什么问题,除法就稍微复杂一些了。试试5/2?谁都知道结果是2.5,但Python给出的却是2。怎么回事?

Python如果发现分子分母都是整数,就认为你想要的商也是整数,而且这个整数是小于或等于真实值的最大的整数。举例来说,就是8/3=3,-7/3=-3。如果你想要得到小数的结果,只需保证分子分母不都是整数就行了,如5.0/2,8/3.0等等。

Python还可以进行复数计算:

>>> 1j * 1J
(-1+0j)
>>> 1j * complex(0,1)
(-1+0j)
>>> 3+1j*3
(3+3j)
>>> (3+1j)*3
(9+3j)
>>> (1+2j)/(1+1j)
(1.5+0.5j)

complex的作用就是合成一个复数。a+bi在Python中要写成complex(a,b)。

2007年2月13日星期二

PowerShadow真是个好东西

刚有电脑的时候总是喜欢试用各种各样的软件,没多久系统就会凌乱不堪,运行越来越慢,最后当然是不可避免的重装系统。结果很快地,装系统对我来说就已经很熟练了。
上学期看一个师兄的电脑上有个软件就PowerShadow,我就好奇地问那是做什么的。他说那叫“影子系统”,运行以后就像是给硬盘分区创建了一个“影子”,无论什么操作都不会对被保护起来的分区造成影响。我问他是不是做了什么备份之类的东西,那样的话就太占硬盘空间了,然而他说不是。我当时还不是很相信。于是放假回家时了解了一下PowerShadow,居然还是免费软件!看看网上的评价还是蛮不错的。我决定试试(现在已经不喜欢试用新的软件了,难道是老了,不愿意接受新事物了?),结果令我非常满意。心想以后试用软件时可以先把它打开,看看软件里到底有没有病毒,有没有流氓软件,反正无论怎么一重启机器也就什么多没了。就像是海滩上的沙雕,海潮过后什么痕迹都留不下。
这下好了,无聊时又可以下载一些好玩儿的软件玩了,再不用担心把系统玩儿坏了。