<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-8670715980967808484</id><updated>2011-12-31T23:54:34.189+08:00</updated><category term='Python'/><category term='JQuery'/><category term='Scripting'/><category term='Life'/><category term='DNS'/><category term='English'/><category term='Django'/><category term='Linux'/><category term='八卦'/><category term='Opera'/><category term='Ruby On Rails'/><category term='Ubuntu'/><category term='FreeBSD'/><category term='JavaScript'/><category term='Java'/><category term='review'/><category term='Scheme'/><category term='Programming'/><category term='LISP'/><title type='text'>Nicholas @ Nirvana Studio</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://nicholasdsj.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8670715980967808484/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://nicholasdsj.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Nicholas @ Nirvana Studio</name><uri>http://www.blogger.com/profile/12298331861298443536</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>52</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-8670715980967808484.post-881943970998247666</id><published>2007-05-30T16:10:00.000+08:00</published><updated>2007-05-30T16:15:05.493+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='八卦'/><category scheme='http://www.blogger.com/atom/ns#' term='English'/><title type='text'>wuss &amp; wussy</title><content type='html'>最近看文章发现一个很有意思的词，wuss 和 wussy。&lt;br /&gt;&lt;br /&gt;wuss 查了下字典是胆小鬼的意思，wussy 则是形容词，但我觉得胆小这类翻译实在不能确切表达这个词的含义，这可是个 slang 啊。&lt;br /&gt;&lt;br /&gt;从网上找到这个词的英文解释：&lt;br /&gt;http://dictionary.reference.com/browse/wussy&lt;br /&gt;&lt;br /&gt;A person regarded as weak or timid and especially as unmanly: &lt;i&gt;"Cats are for wusses, dog men say"&lt;/i&gt; &lt;i&gt;(Laura Blumenfeld).&lt;/i&gt;&lt;br /&gt;[Probably blend of &lt;b&gt;&lt;span style="font-family:arial,sans-serif;font-size:-1;"&gt;wimp&lt;/span&gt;&lt;/b&gt; and &lt;b&gt;&lt;span style="font-family:arial,sans-serif;font-size:-1;"&gt;pussy&lt;/span&gt;&lt;/b&gt;&lt;sup&gt;1&lt;/sup&gt;.]&lt;br /&gt;&lt;br /&gt;形容这人胆小怕事还不像个man，岂不是很"衰"(念sui)。我看解释成"衰"更形象！&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8670715980967808484-881943970998247666?l=nicholasdsj.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nicholasdsj.blogspot.com/feeds/881943970998247666/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8670715980967808484&amp;postID=881943970998247666' title='3 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8670715980967808484/posts/default/881943970998247666'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8670715980967808484/posts/default/881943970998247666'/><link rel='alternate' type='text/html' href='http://nicholasdsj.blogspot.com/2007/05/wuss-wussy.html' title='wuss &amp; wussy'/><author><name>Nicholas @ Nirvana Studio</name><uri>http://www.blogger.com/profile/12298331861298443536</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8670715980967808484.post-5242836354216796337</id><published>2007-05-30T11:35:00.000+08:00</published><updated>2007-05-30T11:40:13.715+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='JavaScript'/><category scheme='http://www.blogger.com/atom/ns#' term='JQuery'/><title type='text'>json.js 导致 too much recursion 问题</title><content type='html'>这几天在使用 JQuery + json.js 的时候偶然发现的问题，2007-04-30 版本的 json.js 加载之后出现 too much recursion 问题，的确很怪异。&lt;br /&gt;&lt;br /&gt;网上也有人讨论过这个，推荐大家还是用回老版本。&lt;br /&gt;&lt;br /&gt;网页：&lt;br /&gt;&lt;strong&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/strong&gt;&lt;strong&gt;&lt;strong&gt;&lt;a href="http://web.archive.org/web/20060208035938/http://www.crockford.com/JSON/js.html"&gt;http://web.archive.org/web/20060208035938/http://www.crockford.com/JSON/js.html&lt;/a&gt;&lt;/strong&gt;&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;下载&lt;br /&gt;&lt;strong&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/strong&gt;&lt;strong&gt;&lt;strong&gt;&lt;a href="http://web.archive.org/web/20060208035938/http://www.crockford.com/JSON/json.js"&gt;http://web.archive.org/web/20060208035938/http://www.crockford.com/JSON/json.js&lt;/a&gt;&lt;/strong&gt;&lt;/strong&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8670715980967808484-5242836354216796337?l=nicholasdsj.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nicholasdsj.blogspot.com/feeds/5242836354216796337/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8670715980967808484&amp;postID=5242836354216796337' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8670715980967808484/posts/default/5242836354216796337'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8670715980967808484/posts/default/5242836354216796337'/><link rel='alternate' type='text/html' href='http://nicholasdsj.blogspot.com/2007/05/jsonjs-too-much-recursion.html' title='json.js 导致 too much recursion 问题'/><author><name>Nicholas @ Nirvana Studio</name><uri>http://www.blogger.com/profile/12298331861298443536</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8670715980967808484.post-5400835072828420779</id><published>2007-05-25T17:24:00.000+08:00</published><updated>2007-05-25T17:31:45.564+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Linux'/><category scheme='http://www.blogger.com/atom/ns#' term='Python'/><category scheme='http://www.blogger.com/atom/ns#' term='Ubuntu'/><title type='text'>用 PyGTK 做了一个实用的字典程序</title><content type='html'>这次用 Python + PyGTK 做了一个 GUI 程序，练习了一下在 Linux 下开发桌面应用，还是很爽的。&lt;br /&gt;&lt;br /&gt;这是从 Dict.CN 的 WebAPI 获取字典数据，可惜 API 返回的数据还是不够丰富。用脚本语言开发 GUI 果然是效率颇高，还可以用 Glade 做好界面，然后用 Python 把界面和处理部分连上，这样就得到了界面和实现的分离。&lt;br /&gt;&lt;br /&gt;目前这个程序开源了，地址在：&lt;a href="http://code.google.com/p/nirvana-dict/"&gt;http://code.google.com/p/nirvana-dict/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_K2sMdKnGjQk/Rlar7WBRUjI/AAAAAAAAAAM/r1Pw2t6mw0c/s1600-h/mainapp.png"&gt;&lt;img style="cursor: pointer;" src="http://3.bp.blogspot.com/_K2sMdKnGjQk/Rlar7WBRUjI/AAAAAAAAAAM/r1Pw2t6mw0c/s400/mainapp.png" alt="" id="BLOGGER_PHOTO_ID_5068427466663612978" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;图：程序主界面&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_K2sMdKnGjQk/RlasLGBRUkI/AAAAAAAAAAU/2idzk87OLGU/s1600-h/tasktray.png"&gt;&lt;img style="cursor: pointer;" src="http://2.bp.blogspot.com/_K2sMdKnGjQk/RlasLGBRUkI/AAAAAAAAAAU/2idzk87OLGU/s400/tasktray.png" alt="" id="BLOGGER_PHOTO_ID_5068427737246552642" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;图：任务栏图标&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8670715980967808484-5400835072828420779?l=nicholasdsj.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nicholasdsj.blogspot.com/feeds/5400835072828420779/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8670715980967808484&amp;postID=5400835072828420779' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8670715980967808484/posts/default/5400835072828420779'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8670715980967808484/posts/default/5400835072828420779'/><link rel='alternate' type='text/html' href='http://nicholasdsj.blogspot.com/2007/05/pygtk.html' title='用 PyGTK 做了一个实用的字典程序'/><author><name>Nicholas @ Nirvana Studio</name><uri>http://www.blogger.com/profile/12298331861298443536</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_K2sMdKnGjQk/Rlar7WBRUjI/AAAAAAAAAAM/r1Pw2t6mw0c/s72-c/mainapp.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8670715980967808484.post-5130589294537492808</id><published>2007-05-23T23:46:00.000+08:00</published><updated>2007-05-24T00:42:40.624+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='八卦'/><category scheme='http://www.blogger.com/atom/ns#' term='Life'/><title type='text'>一份在中国生活的画报指南</title><content type='html'>&lt;h1&gt;一份在中国生活的画报指南&lt;/h1&gt;                            &lt;table callpadding="5" border="0" cellspacing="5" width="600"&gt;&lt;tbody&gt;&lt;tr&gt;                     &lt;td&gt;&lt;img src="http://www.sinosplice.com/china/pictguide/bio_vis_resp3.gif" alt="" height="155" width="141"&gt;&lt;/td&gt;                     &lt;td width="100%"&gt;&lt;p&gt;首先，我要提醒你中国可能会是你身体机能紊乱。特别是你第一次到那里的时候。受影响最显著的系统包括了呼吸系统和消化系统。我说的是有关严重的痢疾以及肮脏的空气。&lt;/p&gt;&lt;/td&gt;               &lt;/tr&gt;                 &lt;tr&gt;                     &lt;td&gt;&lt;img src="http://www.sinosplice.com/china/pictguide/vis_chem_choke2.gif" alt="" height="155" width="141"&gt;&lt;/td&gt;                     &lt;td width="100%"&gt;&lt;p&gt;在大街上有非常讨厌的气味。腐烂的组织味，尿味，大便味，臭豆腐味......但不用担心，很快你就会和你的中国朋友们玩起"这是什么气味？"的游戏来。&lt;/p&gt;&lt;/td&gt;               &lt;/tr&gt;                &lt;tr&gt;                     &lt;td&gt;&lt;img src="http://www.sinosplice.com/china/pictguide/vis_chem_fish2.gif" alt="" height="155" width="141"&gt;&lt;/td&gt;                     &lt;td width="100%"&gt;&lt;p&gt;又是关于食物的话题......你会有一些困难。朋友们，这不是"Panda Express"（US的中式快餐服务）。不方便的地方例如米饭中有小石子，满是极其微小鱼刺的鱼肉，含有很多小碎骨渣的肉。这些仅仅是普通食物，还算不上好（可能像鸡爪？），否则对你的肠道表面将是一种灾难。但是勇敢的冒险吧！你很快就会学会什么不该吃。（痢疾虽然痛苦但确实最有效的老师。）&lt;/p&gt;&lt;/td&gt;               &lt;/tr&gt;                &lt;tr&gt;                     &lt;td&gt;&lt;img src="http://www.sinosplice.com/china/pictguide/vis_chem_affected2.gif" alt="" height="155" width="141"&gt;&lt;/td&gt;                     &lt;td&gt;&lt;p&gt;某些时候污染是很糟糕的。它甚至可以让你的眼睛连续几天流眼泪，特别是当你来自一个具有真正干净空气的地方。灰尘几乎到处都是。中国人从不坐在地上或者没有被设计用来让人坐的地方，因为那些地方都很脏，你会变脏！&lt;/p&gt;&lt;/td&gt;               &lt;/tr&gt;                &lt;tr&gt;                     &lt;td&gt;&lt;img src="http://www.sinosplice.com/china/pictguide/bio_vis_wash2.gif" alt="" height="155" width="141"&gt;&lt;/td&gt;                     &lt;td width="100%"&gt;&lt;p&gt;所以你会发现你一开始经常洗啊洗。没问题，但很快你会发现 - 脏点其实也&lt;span style="font-style: italic;"&gt;很有意思&lt;/span&gt;！这会让你有更多的“中国故事”可以说给家里人听。&lt;/p&gt;&lt;/td&gt;               &lt;/tr&gt;                &lt;tr&gt;                     &lt;td&gt;&lt;img src="http://www.sinosplice.com/china/pictguide/vis_chem_area2.gif" alt="" height="155" width="141"&gt;&lt;/td&gt;                     &lt;td width="100%"&gt;&lt;p&gt;所以环境保护在中国并没有确切被“实施”。你会发现这起初很困扰人，并且为此忧心重重。不用担心，很快你就会像我们其他人一样对这些习以为常。&lt;/p&gt;&lt;/td&gt;               &lt;/tr&gt;                &lt;tr&gt;                     &lt;td&gt;&lt;img src="http://www.sinosplice.com/china/pictguide/vis_chem_bldg2.gif" alt="" height="155" width="141"&gt;&lt;/td&gt;                     &lt;td width="100%"&gt;&lt;p&gt;如果你来中国，我希望你别长太高。这有时候很麻烦......&lt;/p&gt;&lt;/td&gt;               &lt;/tr&gt;                &lt;tr&gt;                     &lt;td&gt;&lt;img src="http://www.sinosplice.com/china/pictguide/vis_chem_medic2.gif" alt="" height="155" width="141"&gt;&lt;/td&gt;                     &lt;td width="100%"&gt;&lt;p&gt;如果你的健康情况很好那将对你很有帮助。当然，中国有“现代”医疗设施，但是那些标准远赶不上你在西方的期望值。解决方案？不要生病，不要受伤！&lt;/p&gt;&lt;/td&gt;               &lt;/tr&gt;                &lt;tr&gt;                     &lt;td&gt;&lt;img src="http://www.sinosplice.com/china/pictguide/expl_vis_elevator2.gif" alt="" height="155" width="141"&gt;&lt;/td&gt;                     &lt;td width="100%"&gt;&lt;p&gt;不要太依赖电梯。在只有7层或者不到7层的学校和宿舍里面是没有电梯的。根据中国的建筑标准，电梯在高于7层的建筑中才能安装。嘿，很酷吧。电梯是给资本主义胆小鬼的。&lt;/p&gt;&lt;/td&gt;               &lt;/tr&gt;                &lt;tr&gt;                     &lt;td&gt;&lt;img src="http://www.sinosplice.com/china/pictguide/expl_vis_table2.gif" alt="" height="155" width="141"&gt;&lt;/td&gt;                     &lt;td width="100%"&gt;&lt;p&gt;你可能对中国使用计算机的数量印象深刻。网吧到处都是。你的好印象不会太久，因为中国的建筑标准之差，建筑在完工之后几年内就开始裂缝了。&lt;/p&gt;&lt;/td&gt;               &lt;/tr&gt;                &lt;tr&gt;                     &lt;td&gt;&lt;img src="http://www.sinosplice.com/china/pictguide/bio_vis_towns3.gif" alt="" height="155" width="141"&gt;&lt;/td&gt;                     &lt;td width="100%"&gt;&lt;p&gt;奇怪的是即便整个中国的官方语言是普通话，但是有数不清的无法理解的方言存在。特别是在南方，每个村都有独特的方言。&lt;/p&gt;&lt;/td&gt;               &lt;/tr&gt;                &lt;tr&gt;                     &lt;td&gt;&lt;img src="http://www.sinosplice.com/china/pictguide/bio_vis_media2.gif" alt="" height="155" width="141"&gt;&lt;/td&gt;                     &lt;td width="100%"&gt;&lt;p&gt;好消息是中国的东西实在是便宜！当然，他们的质量肯定达不到你曾经使用过的标准。但是当东西很便宜的时候，你可以在它坏的时候重新购买一个！很棒吧！&lt;/p&gt;&lt;/td&gt;               &lt;/tr&gt;                &lt;tr&gt;                     &lt;td&gt;&lt;img src="http://www.sinosplice.com/china/pictguide/chinasurprises.gif" alt="" height="155" width="141"&gt;&lt;/td&gt;                     &lt;td height="155" width="100%"&gt;&lt;p&gt;还有很多惊喜在中国等待着你的到来，所以，加油吧！在你适应这里不便的生活之后，你就不会感到烦恼了 —— 更好的是，你会接受他们并且笑着说“这就是中国！”&lt;em&gt;&lt;/em&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;原文出处：http://www.sinosplice.com/china/pictguide/&lt;br /&gt;作者的网站：http://www.sinosplice.com/&lt;br /&gt;这位叫做 John 的学生已经在中国生活了 6.8 年了，是学习语言学而来，真是厉害！&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8670715980967808484-5130589294537492808?l=nicholasdsj.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nicholasdsj.blogspot.com/feeds/5130589294537492808/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8670715980967808484&amp;postID=5130589294537492808' title='1 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8670715980967808484/posts/default/5130589294537492808'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8670715980967808484/posts/default/5130589294537492808'/><link rel='alternate' type='text/html' href='http://nicholasdsj.blogspot.com/2007/05/blog-post.html' title='一份在中国生活的画报指南'/><author><name>Nicholas @ Nirvana Studio</name><uri>http://www.blogger.com/profile/12298331861298443536</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8670715980967808484.post-9058972642888334623</id><published>2007-04-26T17:22:00.000+08:00</published><updated>2007-04-26T17:27:07.315+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Ubuntu'/><title type='text'>更新 Ubuntu 7.04 字体配置</title><content type='html'>每次总是要更新 fonts.conf 来使用 VeraSansYuanTi，这次针对 Ubuntu 7.04 手工更新了一个，参考这里吧。&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.nirvanastudio.org/news/ubuntu-yuanti.html"&gt;http://www.nirvanastudio.org/news/ubuntu-yuanti.html&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8670715980967808484-9058972642888334623?l=nicholasdsj.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nicholasdsj.blogspot.com/feeds/9058972642888334623/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8670715980967808484&amp;postID=9058972642888334623' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8670715980967808484/posts/default/9058972642888334623'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8670715980967808484/posts/default/9058972642888334623'/><link rel='alternate' type='text/html' href='http://nicholasdsj.blogspot.com/2007/04/ubuntu-704.html' title='更新 Ubuntu 7.04 字体配置'/><author><name>Nicholas @ Nirvana Studio</name><uri>http://www.blogger.com/profile/12298331861298443536</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8670715980967808484.post-5269877952122671416</id><published>2007-04-26T09:35:00.000+08:00</published><updated>2007-04-26T09:45:43.668+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Life'/><category scheme='http://www.blogger.com/atom/ns#' term='Ubuntu'/><title type='text'>更新到了 Ubuntu 7.04 Feisty Fawn</title><content type='html'>前天看到 Update Manager 上显示 7.04  已经可以直接升级了，于是没能忍住就升了。在升级最后20分钟的时候突然退出了，重启过后系统彻底挂掉。&lt;br /&gt;&lt;br /&gt;昨天刻了张盘把系统重新做了一遍，总算是安上 Ubuntu 7.04 了，大概用了一下，发现速度比以前快了些，但是桌面系统的反应速度依然要比 Windows 慢不少，没办法，毕竟不是内核级别的嘛。&lt;br /&gt;&lt;br /&gt;GNOME 的版本升级到了 2.18.1，比较新了，Firefox 依然是 2.0，Thunderbird 没能升到 2.0，因为还比较新，估计再过些日子可以通过 Update Manager 升级。GAIM 也升级了，2.0 Beta 6，界面精致了不少。Python 默认上了 2.5，不过又被我替回来了，我还没做好迎接 2.5 的准备。&lt;br /&gt;&lt;br /&gt;其他的还没有特别直观的感受，先用段时间看看吧。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8670715980967808484-5269877952122671416?l=nicholasdsj.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nicholasdsj.blogspot.com/feeds/5269877952122671416/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8670715980967808484&amp;postID=5269877952122671416' title='1 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8670715980967808484/posts/default/5269877952122671416'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8670715980967808484/posts/default/5269877952122671416'/><link rel='alternate' type='text/html' href='http://nicholasdsj.blogspot.com/2007/04/ubuntu-704-feisty-fawn.html' title='更新到了 Ubuntu 7.04 Feisty Fawn'/><author><name>Nicholas @ Nirvana Studio</name><uri>http://www.blogger.com/profile/12298331861298443536</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8670715980967808484.post-1618576592692939316</id><published>2007-04-23T16:59:00.000+08:00</published><updated>2007-04-23T17:09:07.970+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Life'/><title type='text'>服务器上线了</title><content type='html'>周末去了亦庄机房，总算折腾了一下午把服务器按上了。&lt;br /&gt;&lt;br /&gt;网通亦庄机房果然环境优雅，跟一小公园似的，那么大的飞碟形状的大楼里面空荡荡的，对面整齐的草坪稍微修修就可以当高尔夫球场了，用房东同学和朱同学的话说就是网通傻有钱的。&lt;br /&gt;&lt;br /&gt;机器上架后，房东同学突然提起重装系统，无奈，装吧，最郁闷的就是那个公司的销售，着实无奈，估计连杀人的意思都有了。几个人在机房蹲了2个多小时，总算，我的一阵连续配置，（好几步自己都不知道点的什么），点F2开装，愣装，管他呢。&lt;br /&gt;&lt;br /&gt;幸好有红宝书和房、朱同学，总算系统上去了，虽然说很多地方我们还没有搞懂，而且连 man 的数据都没有。。。。。。&lt;br /&gt;&lt;br /&gt;不管怎么说，总算上线了！&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8670715980967808484-1618576592692939316?l=nicholasdsj.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nicholasdsj.blogspot.com/feeds/1618576592692939316/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8670715980967808484&amp;postID=1618576592692939316' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8670715980967808484/posts/default/1618576592692939316'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8670715980967808484/posts/default/1618576592692939316'/><link rel='alternate' type='text/html' href='http://nicholasdsj.blogspot.com/2007/04/blog-post.html' title='服务器上线了'/><author><name>Nicholas @ Nirvana Studio</name><uri>http://www.blogger.com/profile/12298331861298443536</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8670715980967808484.post-4615997857968697830</id><published>2007-04-21T00:39:00.000+08:00</published><updated>2007-04-21T00:54:49.997+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Scheme'/><category scheme='http://www.blogger.com/atom/ns#' term='LISP'/><category scheme='http://www.blogger.com/atom/ns#' term='Python'/><title type='text'>LISP 学习笔记（1）</title><content type='html'>在徐x的知道下开始尝试看看LISP，来到了有名的LISP学习站点：http://mitpress.mit.edu/sicp/，MIT出的东西还是非常经典的。&lt;br /&gt;&lt;br /&gt;下了个 DrScheme，可视化的Scheme学习、调试工具，带有交互式的界面，非常棒，很容易就上手了。&lt;br /&gt;&lt;br /&gt;LISP 的语法要比大多数编程语言要简单的多了，都是靠括号来表示代码段，看起来比较古怪，但是读起来还是比较容易接受的。看了第一章，介绍了牛顿求平方根的算法，真是长见识了，于是立即打开 Python，按照相同的逻辑写了一个，很有意思。&lt;br /&gt;&lt;br /&gt;;; Scheme Code&lt;br /&gt;(define (sqrt-iter guess x)&lt;br /&gt;  (if (good-enough? guess x)&lt;br /&gt;      guess&lt;br /&gt;      (sqrt-iter (improve guess x)&lt;br /&gt;                 x)))&lt;br /&gt;&lt;br /&gt;(define (improve guess x)&lt;br /&gt;  (average guess (/ x guess)))&lt;br /&gt;&lt;br /&gt;(define (average x y)&lt;br /&gt;  (/ (+ x y) 2))&lt;br /&gt;&lt;br /&gt;(define (square x) (* x x))&lt;br /&gt;&lt;br /&gt;(define (good-enough? guess x)&lt;br /&gt;  (&lt; (abs (- (square guess) x)) 0.001))&lt;br /&gt;&lt;br /&gt;(define (sqrtx x)&lt;br /&gt;  (sqrt-iter 1.0 x))&lt;br /&gt;&lt;br /&gt;# Python Code&lt;br /&gt;def sqrt(x, guess=1.0):&lt;br /&gt;    if abs(guess ** 2 - x) &lt; 0.001:&lt;br /&gt;        return guess&lt;br /&gt;    else:&lt;br /&gt;        q = x / guess&lt;br /&gt;        guess = ((x / guess) + guess) / 2&lt;br /&gt;        return sqrt(x, guess)&lt;br /&gt;&lt;br /&gt;毕竟 LISP 是一门函数式编程语言，所以写法上还是定义了一堆小函数，再加上递归把值给求了出来。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8670715980967808484-4615997857968697830?l=nicholasdsj.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nicholasdsj.blogspot.com/feeds/4615997857968697830/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8670715980967808484&amp;postID=4615997857968697830' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8670715980967808484/posts/default/4615997857968697830'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8670715980967808484/posts/default/4615997857968697830'/><link rel='alternate' type='text/html' href='http://nicholasdsj.blogspot.com/2007/04/lisp-1.html' title='LISP 学习笔记（1）'/><author><name>Nicholas @ Nirvana Studio</name><uri>http://www.blogger.com/profile/12298331861298443536</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8670715980967808484.post-3341049291296075665</id><published>2007-04-16T16:22:00.000+08:00</published><updated>2007-04-16T16:27:01.712+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Life'/><title type='text'>死去活来的 Blogger</title><content type='html'>今天又看到自己的 Blogger 活过来了，真不知道其中又发生了多少事情。毕竟是国外的博客站点，应该没有考虑到所谓的“中国国情”，所以被无情的 GFW 常常关照。因为经常无法访问，最长的时候曾今有大半年之久，多次想过要换 Blog，但现在想想都坚持这么长时间了，索性继续下去，就 Blogger 不换了！&lt;br /&gt;&lt;br /&gt;;-D&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8670715980967808484-3341049291296075665?l=nicholasdsj.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nicholasdsj.blogspot.com/feeds/3341049291296075665/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8670715980967808484&amp;postID=3341049291296075665' title='3 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8670715980967808484/posts/default/3341049291296075665'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8670715980967808484/posts/default/3341049291296075665'/><link rel='alternate' type='text/html' href='http://nicholasdsj.blogspot.com/2007/04/blogger.html' title='死去活来的 Blogger'/><author><name>Nicholas @ Nirvana Studio</name><uri>http://www.blogger.com/profile/12298331861298443536</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8670715980967808484.post-7956160835350941338</id><published>2007-03-20T14:37:00.000+08:00</published><updated>2007-03-20T14:53:23.061+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Ubuntu'/><category scheme='http://www.blogger.com/atom/ns#' term='Opera'/><title type='text'>解决 Opera 下不能输入中文问题</title><content type='html'>现在用 Ubuntu 6.10 发现了不少问题，以前 6.06 没有的问题也出现了，虽然解决了，但是也做个记录。&lt;br /&gt;&lt;br /&gt;这次是 Opera 不能输入中文的问题，经验丰富的&lt;a href="http://fangdong.name"&gt;房东雨&lt;/a&gt;同学说需要装一个 scim-bridge，于是我 sudo apt-get install scim-bridge，其实早就装了，但是 Opera 依然无法输入中文。&lt;br /&gt;&lt;br /&gt;查了一些资料，发现需要修改一个环境变量，是 QT_IM_MODULE=XIM，Opera 用的是 QT 的库而非 GTK。这个环境变量可以在 scim 的配置里面修改，位置在 /etc/X11/xinit/xinput.d/scim，看看就知道了。修改完后记得重启X，然后打开 Opera 就正常了。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8670715980967808484-7956160835350941338?l=nicholasdsj.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nicholasdsj.blogspot.com/feeds/7956160835350941338/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8670715980967808484&amp;postID=7956160835350941338' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8670715980967808484/posts/default/7956160835350941338'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8670715980967808484/posts/default/7956160835350941338'/><link rel='alternate' type='text/html' href='http://nicholasdsj.blogspot.com/2007/03/opera.html' title='解决 Opera 下不能输入中文问题'/><author><name>Nicholas @ Nirvana Studio</name><uri>http://www.blogger.com/profile/12298331861298443536</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8670715980967808484.post-4168237349438120124</id><published>2007-03-19T10:34:00.000+08:00</published><updated>2007-03-19T10:44:33.702+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Life'/><title type='text'>牛博网</title><content type='html'>牛博是老罗离开新东方之后办的一个博客站点，到现在已经大半年了，发展之快的确出乎人意料。虽然是博客站点，但是老罗还会挑选一些其他站点的文章引用过来，基本上在首页上的内容都还是不错的，个人认为要比Sina的小编素质高的多。&lt;br /&gt;&lt;br /&gt;牛播的基本论调嘛，听过老罗语录的人都会觉得很熟悉，相信这会成为一个新的主流。无论如何，都值得看一看。&lt;br /&gt;&lt;br /&gt;http://www.bullog.cn&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8670715980967808484-4168237349438120124?l=nicholasdsj.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nicholasdsj.blogspot.com/feeds/4168237349438120124/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8670715980967808484&amp;postID=4168237349438120124' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8670715980967808484/posts/default/4168237349438120124'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8670715980967808484/posts/default/4168237349438120124'/><link rel='alternate' type='text/html' href='http://nicholasdsj.blogspot.com/2007/03/blog-post_19.html' title='牛博网'/><author><name>Nicholas @ Nirvana Studio</name><uri>http://www.blogger.com/profile/12298331861298443536</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8670715980967808484.post-5838697113041042308</id><published>2007-03-12T15:51:00.000+08:00</published><updated>2007-03-12T15:53:58.437+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='八卦'/><category scheme='http://www.blogger.com/atom/ns#' term='Life'/><title type='text'>[转贴] 经典－4000元人民币月薪的人过的日子</title><content type='html'>&lt;span style="font-size:85%;"&gt;　　&lt;/span&gt;&lt;span style="font-size:85%;"&gt;我在苏州一家公司里当普通职员，4000元是我扣税扣保险后的全部工资奖金，全年大约5万年收入。&lt;/span&gt; &lt;p&gt;&lt;span style="font-size:85%;"&gt;　　作为一个本科学历，几年前从上海复旦大学毕业后，我这个工龄的办公室职员来说，这个待遇很普通，也很普遍，工资高的人也有很多，但基本上是管理和高级技术人员，工资低的也有很多，大多是刚参加工作或学历不高的。我这个收入算是中间层的。&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span style="font-size:85%;"&gt;　　像我们这样在苏州谋生活的单身汉，饭一般是不做的，因为自己做饭跟吃快餐花费差不多，早餐我买一个面包和一瓶牛 奶，这需要3块钱，中午吃一荤一素，晚上吃两个素的盒饭，加上早餐钱全天15元差不多了，这样每月饭钱大约450，加上偶而跟同事朋友下馆子吃饭喝酒花的 钱，一年花在吃上的钱基本是6千元。&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span style="font-size:85%;"&gt;　　我在园区租了一套40平米的公寓住，高层带电梯那种，1200元的月租并不算贵，加上管理费和水电煤气及日常用品每月共1600元左右，一年下来要2万。&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span style="font-size:85%;"&gt;　　吃饭和住房是生活花费的大头，固定的开销还有交通和通讯费，交通费并不贵，每天公车来回，一个月也就1百多，固定电话和手机费各100元，这些全年加起来4千差不多了。&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span style="font-size:85%;"&gt;　　因为在写字楼上班，衣服是要求穿的正式些的，夏天常见的装束是衬衫领带配西裤皮鞋，上周末我到市区人民商场里逛了逛，发现一套便宜的夏装配下来要1500 （衬衫300，领带200，西裤400，内裤80，袜子20，皮鞋400，皮带100，都是本地品牌，进口品牌西裤就要1000一条），冬天加穿西装和羊毛衫一套3000。我每两年换4套夏装，3年换2套冬装，加上一些平时穿的休闲服装，一年总共6千元服装花费。&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span style="font-size:85%;"&gt;　　除去这些，每年还会有7千左右的其他开销，这包括平时买书、学习、上网的费用2千，每年回家过年的来回路费1 千，以及过年孝敬父母各2千。这些就是我正常生活的开销，就生活质量来说并不过分，稍微奢侈的消费一点都没有（如、打的、泡酒吧、唱KTV、旅游等），全 部加起来每年4万5，因此我可以余下5千元。但是要保证一年都不感冒发烧，不然上两回医院这点胜利果实就不保了。&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span style="font-size:85%;"&gt;　　我以5万的年薪，每年可以存款5千，很正常的活着，但工作几年后，我发现问题来了，原因是我突然发现自己快30 了，女朋友还没一个，父母开始催我赶紧结婚。是啊，男人三十而立，事业还没立起来可以慢慢来，家总还是要成的吧。于是我怀揣着6年的积蓄3万块，准备找对 象结婚。&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span style="font-size:85%;"&gt;　　在苏州的办工室女孩大多都很朴实，这可能是务实风气的影响，所谓女白领出入打的，衣服非世界名牌不穿，吃饭要去 法国餐厅，男朋友非洋人不谈的风气基本没有，要有也是个别人。但这并不等于她要倒贴你，虽然不要你养活，但也不能因为跟你结了婚还要倒贴2千块给你，曾经 某位网友说过，幸福稳定的婚姻，其经济基础是丈夫收入为妻子的1.8倍，靠，也不晓得他咋算出来的，但想想也是符合一定现状的。因此我要找一个跟我一年薪 5万的MM是不利于稳定的，其实即使我愿意人家也不会嫁给我，就算年纪快30了，长得对不起观众也不嫁我。而年薪3万以下的MM们，长相不错的要把相貌折 合成10万～100万年薪计算，所以更不会嫁我了，所以门当户对的对象是年薪3万，长得基本对得起大家的女孩。&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span style="font-size:85%;"&gt;　　经朋友介绍，我认识了女友小琼，经过一年的恋爱，我发现小琼真是个体贴的女孩，她从来不要求我买贵重的礼物给 她，下馆子也是去中式小馆子，出门不打的，衣服不买名牌，偶然看看电影，情人节送卡片就行了。她说两个人过日子，只要大家真心相爱就好，并不需要那么多的 虚荣。天啊，真是一个伟大的女孩，在这个物欲横流的社会，居然还有这么纯朴善良的女孩，我太幸福了。因为感情太好，忍不住上了床，又因为好的安全套要3、 4块钱一个，一个月套钱就要好几十，所以为省钱买了1块钱2个的次品安全套，在花掉1万元拍拖款后并且避孕失败后，我决定跟她结婚。于是我们准备买房，在 苏州安个家。现在园区内的房子均价已经过6000了，哪怕是不起眼的二手楼，大多也开出4、5千的价格，我们看种一套80平米的房子，这并不算奢侈，首期 和简单装修一共要30万。女友年薪才3万，跟同事合租的宿舍，当然不会有存款。所以除去我现有的2万元，我还要凑28万就可以付首期了，如果我每年存5 千，48年后我就可以按揭买套自己的房子住，但我们不可能48年后才结婚啊，所以我决定跟双方父母借。说是借，其实就是讨，因为借了也不可能还得起。我们 都是独生子女，双方父母都是疼子女的人，而且都还没在退休前被下岗，一辈子存了十几万，如果我们把这钱都要过来，应该可以凑够首期和装修钱。父母养老还有 一点退休金，只能让他们省着过了，平时让他们多锻炼身体，只要下半辈子不生病，应该可以过下去。&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span style="font-size:85%;"&gt;　　想好了买房的首期，我们开始考虑结婚的花费，客是要请的，婚纱照是要拍的，蜜月是要度的，可以从简但不能不搞， 不然就不叫结婚了，叫同居。于是我们决定用2万元请客，3千元拍婚纱，2千元到江苏省内旅游渡蜜月，够从简的了吧？这样需要2万5，我每年存5千，5年后 就可以摆酒办婚礼了。但是我们能等到5年后才办婚礼吗，这样不行吧，那时候孩子都4岁半了，他还要跟幼儿园老师请假说，老师今天我要参加我亲爹**婚礼。 所以我们决定跟同事先借3万，2万5结婚，5千块留着生小孩，这比钱分6年还清，我们可以把我现在每年孝敬父母的4千元钱和她孝敬父母的1千元钱拿来还 债，父母就不孝敬了！&lt;/span&gt;&lt;/p&gt; &lt;p&gt;　　&lt;span style="font-size:85%;"&gt;买房、结婚的钱我们想好了来源，就开始考虑已经怀上的孩子和以后的全家人的生活费用。因为房子贷款了50万，每 个月按揭3千多，加上物业管理费、水电、管道煤气、电话费等等杂费一年就是5万 5，一家三口伙食费及跟同事应酬的钱一年2万，交通费全家一年4千，服装费3人一年1万（不去商场买），小孩上幼儿园每年1万5，其他费用如回家看父母的 路费，买书上网的费用，日常生活的其他费用等等一年6千。其余所有需要花钱的娱乐一律不搞，够省的了吧，全部加起来每年将近10万。&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span style="font-size:85%;"&gt;　　也就是说，如果我买房结婚生小孩后，还是正常的过日子，我每年5万年薪，小琼3万年薪，每生活一年要负债2万 元，如果算上一家人看病、父母养老和预留小孩读大学的钱，一年负债5万元以上。如果不买房而租房住，每年可以节省2万，不养小孩可以节省2万5，不养父母 又可以节省5千，再加上一辈子不生病，这样我们两口人就可以维持现在的生活水平了。但这可能吗？小琼嫁给我，没自己的房子住，不能生养小孩，不能负担父 母，还不让生病，她还嫁给我干球？&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span style="font-size:85%;"&gt;　　于是我把仅有的2万元存款全部给了她，对她说，你去医院把孩子拿掉，我们分手吧，你以后找对象一定要找一个月薪1万以上的啊，我们是没有这个缘分了。&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span style="font-size:85%;"&gt;　　与小琼分手后，我消沉了很久，我并不需要过奢侈的生活，只是住自己的房子，养一个孩子，给父母养老，这很过分吗？数个月无法从痛苦和迷茫中缓解过来，直到有一天在天涯上看到另一个苏州网友的帖子"在苏州300元过有钱人的生活"后才恍然大悟，原来是自己不懂得生活。&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span style="font-size:85%;"&gt;　　于是我把现在租的公寓退了，找了另外7个志同道合的人，在公司附近的农民村（苏州原居民的村子习惯叫农民村，里 面的出租屋叫农民房，条件如何在苏州住过的人体会比较深）中租了房600元，共8个人睡，4张上下铺，水电杂费分摊，总共100元每月。因为住得近，走路 上班不用交通费，每2个周末坐公车出一趟门，一月10块够了。&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span style="font-size:85%;"&gt;　　早餐也不吃面包牛奶了，改吃2个5毛钱的包子喝白开水，另外农民村里面非常多小饭店，其中有一种就是像食堂一样 摆几大盆菜在门口给你选，一份菜1块或2块钱，饭和汤1块钱任吃。中饭和晚饭我们8个人每人凑2块钱，要几个菜，然后花4块钱买4个饭盒的饭，饭压实装 满，够8个人吃。虽然那些菜用的油味道有点怪，但吃不死就行了，关键是每天只要5块钱伙食费，每月共150元。衣服也找到好地方买，火车站钱万里桥小商品 市场某个角落里有6 元衬衫，8元西裤，领带5块，内裤袜子各3块，皮鞋15一双，西装20元一套。但就是质量太那个，洗过水就有点歪。衣袖对不直。这样每月服装费40元差不 多了，还经常可以穿新的。&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span style="font-size:85%;"&gt;　　娱乐方面也有招，村里有不少路边书摊，10元一本，很多人会去买，我到书摊上看书，但不买，看个把小时回家，明 天接着看，个把星期就能看完一本。发工资的时候，就去网吧上网，2块钱1小时，上网看帖子。当然也有比较刺激的娱乐活动，农民房建得很密，经常是你家洗手 间直接对着他家客厅，天黑的时候，把自己房里灯一关，如果对面租房的是女的你就发（发达的缩写，好运的意思）了。所以精神生活就开销是每月20元上网费。&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span style="font-size:85%;"&gt;　　通讯的钱更好省，固定电话不装，用公司的，手机用动感地带10元包月，来电显示也不开通，因为没用，我不接也不打电话，只发短信。&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span style="font-size:85%;"&gt;　　医疗方面主要靠平时锻炼，不生病就不用花钱，万一生病了就扛着，反正年轻扛得住。&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span style="font-size:85%;"&gt;　　其他费用如卫生纸啊，肥皂啊什么的还是要用的，没女友安全套也不用了，自己动手就可以了。这样每月杂费只要花个20块钱。&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span style="font-size:85%;"&gt;　　如此一计算，100房钱＋10元交通＋150伙食＋40服装＋20娱乐＋10通讯＋20其他＝350元，一年才 用4200。本人一个月的工资就差不多够一年生活了，真TM爽啊，太幸福了。难怪GDP年年百分之十几的增长工资水平却往下跌，原来是工作一个月可以养活 自己一年，剩下的十一个月没有生活压力就很难积极工作了。&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span style="font-size:85%;"&gt;　　所以说，要老婆干嘛？要小孩干嘛？要爹妈干嘛？只要转变观念，像我现在这样，不养父母，不讨老婆，不生小孩，不供楼，不坐车，不生病，不娱乐，不穿商场里卖的衣服，不吃正规快餐店里的盒饭就可以找到幸福生活的真谛！&lt;/span&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8670715980967808484-5838697113041042308?l=nicholasdsj.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nicholasdsj.blogspot.com/feeds/5838697113041042308/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8670715980967808484&amp;postID=5838697113041042308' title='1 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8670715980967808484/posts/default/5838697113041042308'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8670715980967808484/posts/default/5838697113041042308'/><link rel='alternate' type='text/html' href='http://nicholasdsj.blogspot.com/2007/03/4000.html' title='[转贴] 经典－4000元人民币月薪的人过的日子'/><author><name>Nicholas @ Nirvana Studio</name><uri>http://www.blogger.com/profile/12298331861298443536</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8670715980967808484.post-4706916963754016007</id><published>2007-03-09T13:25:00.000+08:00</published><updated>2007-03-09T13:27:44.759+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Life'/><title type='text'>蟑螂为什么又叫小强？</title><content type='html'>◆连陨石连击(大灭绝)都不能歼灭  ...............................强 &lt;br /&gt;&lt;br /&gt;◆蟑螂有3700多种...杂食?不...只要是有机物几乎都吃  ............强 &lt;br /&gt;&lt;br /&gt;◆蟑螂可在真空下(非绝对真空,如宇宙)可以存活至少10分钟  ........ 强 &lt;br /&gt;&lt;br /&gt;◆蟑螂可以活在由40kW提供来源(rotating anode source)的X-ray下. 人类则以秒计 ......................强 &lt;br /&gt;&lt;br /&gt;(P.S.蟑螂会死在由同步加速器提供10keV的X-ray下,"就是这个光"强度是上者的1000 倍) &lt;br /&gt;&lt;br /&gt;◆可以在12莫耳的HCL和18莫耳(有多浓@_@?)的NaOH活上30秒 ........强 &lt;br /&gt;&lt;br /&gt;◆水中至少可以活上10分钟.....................................强 &lt;br /&gt;&lt;br /&gt;◆在100度的炉子内可以活很久 .................................强 &lt;br /&gt;&lt;br /&gt;◆要用传统兵器打死蟑螂...也就是拖鞋...要29.4N  ................强 &lt;br /&gt;&lt;br /&gt;◆蟑螂的头断了仍然可以活上好几天...直到饿死  ..................强&lt;br /&gt;&lt;br /&gt;转自：http://zhidao.baidu.com/question/287186.html&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8670715980967808484-4706916963754016007?l=nicholasdsj.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nicholasdsj.blogspot.com/feeds/4706916963754016007/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8670715980967808484&amp;postID=4706916963754016007' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8670715980967808484/posts/default/4706916963754016007'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8670715980967808484/posts/default/4706916963754016007'/><link rel='alternate' type='text/html' href='http://nicholasdsj.blogspot.com/2007/03/blog-post.html' title='蟑螂为什么又叫小强？'/><author><name>Nicholas @ Nirvana Studio</name><uri>http://www.blogger.com/profile/12298331861298443536</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8670715980967808484.post-5260820527835532392</id><published>2007-03-01T17:55:00.000+08:00</published><updated>2007-03-01T18:01:37.839+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='DNS'/><category scheme='http://www.blogger.com/atom/ns#' term='Ubuntu'/><title type='text'>创建本地 DNS 缓存提高浏览器访问速度</title><content type='html'>之前用 bind9 做过 DNS Cache Server，但是不知为何每次重启系统之后缓存数据就都丢了，无奈之下找到了 dnsmasq 这个工具，真是非常不错。&lt;br /&gt;&lt;br /&gt;确保没有安装 bind9，使用下面方式安装 dnsmasq:&lt;br /&gt;&lt;br /&gt;sudo apt-get install dnsmasq&lt;br /&gt;sudo vi /etc/dnsmasq.conf&lt;br /&gt;&lt;br /&gt;增加一条配置信息 listen-address=127.0.0.1，如果已经存在此信息，请取消注释。&lt;br /&gt;&lt;br /&gt;sudo vi /etc/dhcp3/dhclient.conf&lt;br /&gt;把  prepend domain-name-servers 127.0.0.1; 的注释去掉，这样能够保证 127.0.0.1 这个地址会永远出现在 /etc/resolv.conf 中 DNS 服务器的第一个。&lt;br /&gt;&lt;br /&gt;重启一下吧，或者手工修改 resolv.conf 并且启动 /etc/init.d/dnsmasq restart 让配置生效。&lt;br /&gt;&lt;br /&gt;最后可以用 dig sina.com.cn 测试一下你的 DNS，做好 DNS 缓存可以让浏览速度提升不少。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8670715980967808484-5260820527835532392?l=nicholasdsj.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nicholasdsj.blogspot.com/feeds/5260820527835532392/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8670715980967808484&amp;postID=5260820527835532392' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8670715980967808484/posts/default/5260820527835532392'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8670715980967808484/posts/default/5260820527835532392'/><link rel='alternate' type='text/html' href='http://nicholasdsj.blogspot.com/2007/03/dns.html' title='创建本地 DNS 缓存提高浏览器访问速度'/><author><name>Nicholas @ Nirvana Studio</name><uri>http://www.blogger.com/profile/12298331861298443536</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8670715980967808484.post-8487200907607530648</id><published>2007-02-12T16:38:00.000+08:00</published><updated>2007-02-12T10:48:34.429+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><category scheme='http://www.blogger.com/atom/ns#' term='Django'/><category scheme='http://www.blogger.com/atom/ns#' term='Python'/><title type='text'>Django 学习笔记 － RequestContext</title><content type='html'>Context 常被翻译为“上下文”，可以在很多程序设计中见到他的身影。&lt;br /&gt;&lt;br /&gt;不仅仅是 Django Template，几乎所有 Template Engine 的设计都是传递一个 Context 给 Template 进行渲染。这个 Context 就够成了模板所需的变量表。&lt;br /&gt;&lt;br /&gt;Django Template 的特点就是简单，默认情况下调用 render_to_response 函数传递的第二个参数是一个简单 map 对象，会被包装成 django.template.Context 传递给模板使用。&lt;br /&gt;&lt;br /&gt;其实很多场合我们需要默认在 Context 里面加入一些常用的东西，譬如把 request 对象传入 Context，把权限模型放入 Context 以便调用。为了避免每次硬编码，Django 提供了一个 Context 的子类，django.template.RequestContext。&lt;br /&gt;&lt;br /&gt;在 settings 里面有一个名为 TEMPLATE_CONTEXT_PROCESSORS 的设置于 RequestContext 密切相关。默认的配置为：&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;("django.core.context_processors.auth",&lt;br /&gt;"django.core.context_processors.debug",&lt;br /&gt;"django.core.context_processors.i18n")&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;这些 Processors 都会被 RequestContext 顺序调用，往当前 Context 中放入一些预定义变量。譬如 auth 就会放置 user 这个变量，就是当前登录的用户对象。&lt;br /&gt;&lt;br /&gt;RequestContext 作为 render_to_response 的第三个参数传递，必须将 request 作为参数传递给它，如下：&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;br /&gt;def some_view(request):&lt;br /&gt;    # ...&lt;br /&gt;    return render_to_response('my_template.html',&lt;br /&gt;                              my_data_dictionary,&lt;br /&gt;                              context_instance=RequestContext(request))&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;更多的信息请参考 Django 官方文档：&lt;br /&gt;&lt;a href="http://www.djangoproject.com/documentation/settings/#template-context-processors"&gt;http://www.djangoproject.com/documentation/settings/#template-context-processors&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8670715980967808484-8487200907607530648?l=nicholasdsj.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nicholasdsj.blogspot.com/feeds/8487200907607530648/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8670715980967808484&amp;postID=8487200907607530648' title='1 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8670715980967808484/posts/default/8487200907607530648'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8670715980967808484/posts/default/8487200907607530648'/><link rel='alternate' type='text/html' href='http://nicholasdsj.blogspot.com/2007/02/django-requestcontext.html' title='Django 学习笔记 － RequestContext'/><author><name>Nicholas @ Nirvana Studio</name><uri>http://www.blogger.com/profile/12298331861298443536</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8670715980967808484.post-450004134355826317</id><published>2007-02-09T11:20:00.000+08:00</published><updated>2007-02-09T11:19:43.150+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><category scheme='http://www.blogger.com/atom/ns#' term='Django'/><category scheme='http://www.blogger.com/atom/ns#' term='Python'/><title type='text'>Django 学习笔记 －Middleware</title><content type='html'>Django 的确可以做类似 Spring framework 里面 Interceptor 的操作，这在 Web 开发中相当不错。不过在 Django 里面这个不叫做 Interceptor 或者 Filter，他叫做 Middleware。&lt;br /&gt;&lt;br /&gt;Middleware，多么庞大的概念，Java 开发着对这个此一定不陌生......，不过在 Django 的世界里，他就是 Interceptor，很简单。&lt;br /&gt;&lt;br /&gt;Django 提供了很多默认的 Middleware 来作一些例如 URL 处理，Session 控制，和一些更基础的工作。Middleware 同时也构成了 Django 一个独特的插件机制。&lt;br /&gt;&lt;br /&gt;Middleware 并不复杂，他主要就是可以让你在 HTTP 请求过来之&lt;br /&gt;前和之后作一些处理。要实现 Middleware 并不需要继承任何类，脚本语言嘛，我们有 Duck Typing。&lt;br /&gt;&lt;br /&gt;Middleware 里面有以下4个函数可用：&lt;br /&gt;&lt;ol&gt;&lt;li&gt;process_request(self, request)&lt;/li&gt;&lt;li&gt;process_view(self, request, view_func, view_args, view_kwargs)&lt;/li&gt;&lt;li&gt;process_response(self, request, response)&lt;/li&gt;&lt;li&gt;process_exception(self, request, exception)&lt;/li&gt;&lt;/ol&gt;看看函数名想必就知道做什么的了吧，写好 Middleware 之后随便放到哪里，只要在 settings.py 里面写上路径可以让 Python 找到就行了。&lt;br /&gt;&lt;br /&gt;Middleware 的一些不足：&lt;br /&gt;&lt;ul&gt;&lt;li&gt;全局应用，不能够针对某种 url pattern 应用自己的 middleware，不过可以自行扩展&lt;/li&gt;&lt;li&gt;没有类似 Java Servlet 中 Filter Chain 的管理，完全是顺序应用 middleware，所以顺序很重要，因为有依赖。&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;Middleware 官方文档：&lt;br /&gt;http://www.djangoproject.com/documentation/middleware/&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8670715980967808484-450004134355826317?l=nicholasdsj.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nicholasdsj.blogspot.com/feeds/450004134355826317/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8670715980967808484&amp;postID=450004134355826317' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8670715980967808484/posts/default/450004134355826317'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8670715980967808484/posts/default/450004134355826317'/><link rel='alternate' type='text/html' href='http://nicholasdsj.blogspot.com/2007/02/django-middleware.html' title='Django 学习笔记 －Middleware'/><author><name>Nicholas @ Nirvana Studio</name><uri>http://www.blogger.com/profile/12298331861298443536</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8670715980967808484.post-3557439100684389148</id><published>2007-01-30T16:54:00.000+08:00</published><updated>2007-01-30T17:11:52.546+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Life'/><category scheme='http://www.blogger.com/atom/ns#' term='Python'/><title type='text'>重返 Blogger</title><content type='html'>这一个多月过得真是不容易，遭遇天灾，光缆断了，几乎没法写 Blogger 了，总算，现在应该恢复了 70％ 了吧，好事情。&lt;br /&gt;&lt;br /&gt;用 Django 做了一些东西，顺便学习了一下 Django，很有意思的一个框架。以前没有正经用 Python 做过东西，现在做下来感触还是很多的。先说说 Python 吧，个人观点。&lt;br /&gt;&lt;br /&gt;随着 RoR 的兴起，动态语言的地位一下子上来了，越来越多的人学习脚本语言，不过似乎有一个问题。Python 很容易上手，的确不错，Python 依靠缩进来提高代码的可读性。不过也有一个似乎是脚本语言共有的问题，就算依靠缩进来提高代码的可读性，新手与老手写出来的代码也都可能是完全不同。很多 Java 的同行去尝试 RoR 了，很不错，很多新人也去玩，但是同样的东西写出来的代码质量可以相差很多。前些日子和 Martin 一起写过一些代码，pair 了一把，发现自己的水平比起来太差了，毕竟在 Python 上我算是个新手吧。&lt;br /&gt;&lt;br /&gt;玩了玩 Django 和 TurboGears 两个 Python Web 框架，最后还是选择了 Django，有人说用 Django 的都是懒人，我承认我还是喜欢懒一点。TurboGears 整合了一群框架，可以自由替换前端和后端，没发觉有多少好玩的地方。我大致看了一遍 Django 的代码，觉得玩 Django 更有意思一点，扩展 Django 没多少难度，下阶段闲一点的时候我要整合一个新的模板引擎替换 Django Template。&lt;br /&gt;&lt;br /&gt;可能最近一段时间都会用 Python 来做东西，就趁这个机会再细细研究一下这个语言本身了。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8670715980967808484-3557439100684389148?l=nicholasdsj.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nicholasdsj.blogspot.com/feeds/3557439100684389148/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8670715980967808484&amp;postID=3557439100684389148' title='3 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8670715980967808484/posts/default/3557439100684389148'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8670715980967808484/posts/default/3557439100684389148'/><link rel='alternate' type='text/html' href='http://nicholasdsj.blogspot.com/2007/01/blogger.html' title='重返 Blogger'/><author><name>Nicholas @ Nirvana Studio</name><uri>http://www.blogger.com/profile/12298331861298443536</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8670715980967808484.post-3821285942444668018</id><published>2007-01-01T00:38:00.000+08:00</published><updated>2007-01-01T00:54:20.798+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Life'/><category scheme='http://www.blogger.com/atom/ns#' term='Ubuntu'/><title type='text'>Ubuntu 下 resolv.conf 被替换的问题</title><content type='html'>用 Ubuntu 一段时间了，自从晚上使用无线网络之后就发现一个很恶心的问题，因为通过DHCP获取IP，所以经常重写我的resolv.conf，由于我自己配有bind9用作本地DNS缓存，所以经常要修改resolv.conf为我本地设置。Google 了一番，总算找到了解决方法，修改/etc/dhcp3/dhclient.conf，使用下面的语句为每次生产的resolv.conf准备默认的几台DNS地址：&lt;br /&gt;&lt;br /&gt;prepend domain-name-servers 127.0.0.1;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8670715980967808484-3821285942444668018?l=nicholasdsj.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nicholasdsj.blogspot.com/feeds/3821285942444668018/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8670715980967808484&amp;postID=3821285942444668018' title='1 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8670715980967808484/posts/default/3821285942444668018'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8670715980967808484/posts/default/3821285942444668018'/><link rel='alternate' type='text/html' href='http://nicholasdsj.blogspot.com/2007/01/ubuntu-resolvconf.html' title='Ubuntu 下 resolv.conf 被替换的问题'/><author><name>Nicholas @ Nirvana Studio</name><uri>http://www.blogger.com/profile/12298331861298443536</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8670715980967808484.post-1213176877676352240</id><published>2006-12-26T10:03:00.000+08:00</published><updated>2006-12-26T10:29:29.108+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Django'/><category scheme='http://www.blogger.com/atom/ns#' term='Python'/><title type='text'>Django 学习笔记 － Apache2 + FastCGI</title><content type='html'>昨天开始学习Django站点的生产服务器（Production Server），尝试了一下lighttpd和Apache2，最后决定采用Apache2来搭建整个环境（其实lighttpd更为方便一些）。&lt;br /&gt;&lt;br /&gt;虽然Apache2 + mod_python就可以跑Django站点服务，但是听说FastCGI有更优异的性能。&lt;br /&gt;&lt;blockquote&gt;             FastCGI applications are fast because they're persistent. There is no per-request startup and             initialization overhead. This makes possible the development of applications which would otherwise be             impractical within the CGI paradigm (e.g. a huge Perl script, or an application which requires a connection             to one or more databases).&lt;/blockquote&gt;需要让Apache2支持FastCGI，就必须下载mod_fastcgi这个Apache模块。可以从http://www.fastcgi.com/站点下载，不过非Windows用户需要自行编译这个模块，其实也挺方便的。下面是我在 Ubuntu 下安装的例子：&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;apt-get install apache2-dev&lt;/span&gt; # 会安装Apache2开发相关的库&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;cd $mod_fastcgi_dir&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;apxs2 -o mod_fastcgi.so -c *.c&lt;/span&gt; # 编译&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;sudo apxs2 -i -a -n fastcgi mod_fastcgi.so&lt;/span&gt; # 安装到Apache2/modules里面去，同时会到apache配置里面加上一条加载语句&lt;br /&gt;&lt;br /&gt;mod_fastcgi.so就这样完成了，下面需要配置你的Django站点。首先去下载 &lt;a href="http://www.saddi.com/software/flup/"&gt;flup&lt;/a&gt;，然后写一个mysite.fcgi，这个在Django的站点上有介绍，里面需要指定Django应用的绝对路径。&lt;br /&gt;&lt;pre class="literal-block"&gt;#!/bin/bash&lt;br /&gt;&lt;br /&gt;# Replace these three settings.&lt;br /&gt;PROJDIR="&lt;span style="color: rgb(255, 0, 0);"&gt;/home/user/myproject&lt;/span&gt;"&lt;br /&gt;PIDFILE="$PROJDIR/mysite.pid"&lt;br /&gt;SOCKET="$PROJDIR/mysite.sock"&lt;br /&gt;&lt;br /&gt;cd $PROJDIR&lt;br /&gt;if [ -f $PIDFILE ]; then&lt;br /&gt;kill `cat -- $PIDFILE`&lt;br /&gt;rm -f -- $PIDFILE&lt;br /&gt;fi&lt;br /&gt;&lt;br /&gt;exec /usr/bin/env - \&lt;br /&gt;PYTHONPATH="../python:.." \&lt;br /&gt;./manage.py runfcgi socket=$SOCKET pidfile=$PIDFILE&lt;/pre&gt;&lt;blockquote&gt;&lt;/blockquote&gt;这个文件搁在你的Django应用的根目录里面，改成可执行属性。然后你每次只需要执行这个文件就可以将Django以FastCGI方式启动出来了，启动后你是不能够直接访问的，因为不是走的Web方式。&lt;br /&gt;&lt;br /&gt;下面我们看一下Apache相关的配置：&lt;br /&gt;&lt;pre class="literal-block"&gt;# Connect to FastCGI via a socket / named pipe.&lt;br /&gt;FastCGIExternalServer &lt;span style="color: rgb(255, 0, 0);"&gt;/home/user/public_html/&lt;/span&gt;mysite.fcgi -socket &lt;span style="color: rgb(255, 0, 0);"&gt;/home/user/&lt;/span&gt;mysite.sock&lt;br /&gt;&lt;br /&gt;&amp;lt;VirtualHost 12.34.56.78&amp;gt;&lt;br /&gt;ServerName example.com&lt;br /&gt;DocumentRoot &lt;span style="color: rgb(255, 0, 0);"&gt;/home/user/public_html&lt;/span&gt;&lt;br /&gt;&lt;strike&gt;Alias /media /home/user/python/django/contrib/admin/media&lt;/strike&gt;&lt;br /&gt;RewriteEngine On&lt;br /&gt;RewriteRule ^/(media.*)$ &lt;span style="color: rgb(255, 0, 0);"&gt;/home/user/public_html/&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;$1&lt;/span&gt; [QSA,L]&lt;br /&gt;RewriteCond %{REQUEST_FILENAME} !-f&lt;br /&gt;RewriteRule ^/(.*)$ /mysite.fcgi/$1 [QSA,L]&lt;br /&gt;&amp;lt;/virtualhost&amp;gt;&lt;br /&gt;&lt;/pre&gt;$1处我遇到了一个奇怪的问题，因为用的是 Ubuntu，没在其他平台试过，/$1会指向硬盘的/media物理路径，很奇怪，所以需要修改这个路径为Django的站点目录，即将DocumentRoot的地址再写一遍。&lt;br /&gt;&lt;br /&gt;这样一来，整个Apache2+FastCGI就完成了，的确比较费力气。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8670715980967808484-1213176877676352240?l=nicholasdsj.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nicholasdsj.blogspot.com/feeds/1213176877676352240/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8670715980967808484&amp;postID=1213176877676352240' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8670715980967808484/posts/default/1213176877676352240'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8670715980967808484/posts/default/1213176877676352240'/><link rel='alternate' type='text/html' href='http://nicholasdsj.blogspot.com/2006/12/django-apache2-fastcgi.html' title='Django 学习笔记 － Apache2 + FastCGI'/><author><name>Nicholas @ Nirvana Studio</name><uri>http://www.blogger.com/profile/12298331861298443536</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8670715980967808484.post-3558850958347528533</id><published>2006-12-21T16:09:00.000+08:00</published><updated>2006-12-21T16:39:11.630+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Django'/><category scheme='http://www.blogger.com/atom/ns#' term='Python'/><title type='text'>Django 学习笔记 － i18n 支持</title><content type='html'>最近再用  Django  做东西，顺便写点笔记做下记录。&lt;br /&gt;&lt;br /&gt;今天折腾这个 Django 的 i18n 支持着实费了点功夫，主要是一开始没理解 Python 做 i18n 的原理导致。废话不多说了，使用 Django 的 i18n 支持还是相当的方便的。Django 的官方文档上讲的很详细了，但是篇幅过长，我也是硬着头皮看了几遍才搞明白，下面我就简单介绍一下最快捷的方法。&lt;br /&gt;&lt;br /&gt;首先，从配置入手，settings.py 里面有一个 LANGUAGE_CODE属性，这里设置了网站默认的语言。由于settings.py里面的属性支持重写，所以从官方文档上可以得知，默认情况下已经启用i18n支持了，我们需要加入一些middleware来支持动态切换语言。&lt;br /&gt;&lt;pre class="literal-block"&gt;MIDDLEWARE_CLASSES = (&lt;br /&gt; 'django.contrib.sessions.middleware.SessionMiddleware',&lt;br /&gt; '&lt;span style="color: rgb(255, 0, 0);"&gt;django.middleware.locale.LocaleMiddleware&lt;/span&gt;',&lt;br /&gt; 'django.middleware.common.CommonMiddleware',&lt;br /&gt;)&lt;/pre&gt;注意顺序，LocaleMiddleware必须在SessionMiddleware下面，因为需要从Session里面获取一个语言类型，这些Django都有现成的了，很方便。&lt;br /&gt;&lt;br /&gt;在urls.py里面配置一个i18n的辅助应用&lt;br /&gt;&lt;pre class="literal-block"&gt;(r'^i18n/', include('django.conf.urls.i18n')),&lt;br /&gt;&lt;/pre&gt;有了这个就可以自由的切换语言了，使用/i18n/setlang/?language=en这样的形式。&lt;br /&gt;&lt;br /&gt;配置完成之后在项目目录底下建立一个locale目录，locale下子目录的样式有固定格式，如:&lt;br /&gt;locale/&lt;language&gt;&amp;lt;language&amp;gt;/LC_MESSAGES/&lt;br /&gt;如果是中文，对应的目录就是&lt;br /&gt;locale/zh_CN/LC_MESSAGES/&lt;br /&gt;如果是英文，则应该是&lt;br /&gt;locale/en/LC_MESSAGES/&lt;br /&gt;以此类推。&lt;br /&gt;&lt;br /&gt;为了在django里面使用i18n，po文件名必须为djang.po，编译过后必须为django.mo，那么翻译的内容就固定在po文件里了。一个典型的po文件类似一下样式：&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;# SOME DESCRIPTIVE TITLE.&lt;br /&gt;# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER&lt;br /&gt;# This file is distributed under the same license as the PACKAGE package.&lt;br /&gt;# FIRST AUTHOR &lt;email@address&gt;, YEAR.&lt;br /&gt;#&lt;br /&gt;#, fuzzy&lt;br /&gt;msgid ""&lt;br /&gt;msgstr ""&lt;br /&gt;"Project-Id-Version: PACKAGE VERSION\n"&lt;br /&gt;"Report-Msgid-Bugs-To: \n"&lt;br /&gt;"POT-Creation-Date: 2006-12-21 14:00+0800\n"&lt;br /&gt;"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"&lt;br /&gt;"Last-Translator: FULL NAME &lt;email@address&gt;\n"&lt;br /&gt;"Language-Team: LANGUAGE &lt;ll@li.org&gt;\n"&lt;br /&gt;"MIME-Version: 1.0\n"&lt;br /&gt;"Content-Type: text/plain; charset=UTF-8\n"&lt;br /&gt;"Content-Transfer-Encoding: 8bit\n"&lt;br /&gt;&lt;br /&gt;msgid "Home"&lt;br /&gt;msgstr "Home"&lt;br /&gt;&lt;br /&gt;msgid "News"&lt;br /&gt;msgstr "News"&lt;br /&gt;&lt;/ll@li.org&gt;&lt;/email@address&gt;&lt;/email@address&gt;&lt;/span&gt;&lt;br /&gt;格式相对比较简单，也是键值对的形式。如果是多行的话，需要使用msgstr ""的形式，首行不写东西，在后续的几行写文本，翻译出来的结果会由程序自动把文字组合到一起。&lt;br /&gt;&lt;br /&gt;编写完的po文件需要编辑成二进制的mo文件才可以被django使用，django使用了gettext来实现翻译，所以mo格式也是gettext要求的。&lt;br /&gt;&lt;br /&gt;在linux下使用msgfmt -o django.mo django.po即可完成转换过程，相当方便，windows下需要下载poEdit这个软件。&lt;br /&gt;&lt;br /&gt;翻译工作都准备就绪了，接下来就是体现到模板上去了，首先加载i18n，在模板文件的头部加入{% load i18n %}，下来对于需要i18n支持的字段使用{% trans 'Key' %}，这里的Key就是msgid，很简单吧。&lt;br /&gt;&lt;br /&gt;这里仅仅介绍了Django i18n的一个快速上手配置，更详细的内容请参考&lt;br /&gt;http://www.djangoproject.com/documentation/i18n/&lt;br /&gt;&lt;/language&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8670715980967808484-3558850958347528533?l=nicholasdsj.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nicholasdsj.blogspot.com/feeds/3558850958347528533/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8670715980967808484&amp;postID=3558850958347528533' title='33 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8670715980967808484/posts/default/3558850958347528533'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8670715980967808484/posts/default/3558850958347528533'/><link rel='alternate' type='text/html' href='http://nicholasdsj.blogspot.com/2006/12/django-i18n.html' title='Django 学习笔记 － i18n 支持'/><author><name>Nicholas @ Nirvana Studio</name><uri>http://www.blogger.com/profile/12298331861298443536</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>33</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8670715980967808484.post-3637244453151983098</id><published>2006-12-20T09:13:00.000+08:00</published><updated>2006-12-20T09:20:50.285+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Life'/><category scheme='http://www.blogger.com/atom/ns#' term='Ubuntu'/><title type='text'>回到 Ubuntu 的世界</title><content type='html'>总算下决心把笔记本上的 FreeBSD 删了，我的确没这个耐心去打各种各样的补丁来支持我的硬件了。Ubuntu 对桌面的支持已经非常强大了，安装很顺利，我的所有硬件都认出来了，包括无线网卡和声卡，这是一件很愉快的事情。Linux 有着强大的用户群和开发群，这点和 FreeBSD 的应用哲学还有点不同，我们房东雨同学说 FreeBSD 是“爱用不用”，呵呵，桌面环境是有点难用了。&lt;br /&gt;&lt;br /&gt;看到众多老大们在玩 Beryl，的确够玄，于是立即将机器的 Ubuntu Dapper 升级到了 Ubuntu Edgy，可以不用重新安装就升级，输入命令 gksudo "update-manager -c -d"，会显示一个升级选项，要下载645M数据，升级过程大概2小时左右，还不错。&lt;br /&gt;&lt;br /&gt;升完级就装 Beryl 吧，就可以玩到很酷的 3D 桌面了，一点都不逊于 Vista 哦。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8670715980967808484-3637244453151983098?l=nicholasdsj.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nicholasdsj.blogspot.com/feeds/3637244453151983098/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8670715980967808484&amp;postID=3637244453151983098' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8670715980967808484/posts/default/3637244453151983098'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8670715980967808484/posts/default/3637244453151983098'/><link rel='alternate' type='text/html' href='http://nicholasdsj.blogspot.com/2006/12/ubuntu.html' title='回到 Ubuntu 的世界'/><author><name>Nicholas @ Nirvana Studio</name><uri>http://www.blogger.com/profile/12298331861298443536</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8670715980967808484.post-3362270594606967373</id><published>2006-10-31T10:51:00.000+08:00</published><updated>2006-10-31T10:57:05.983+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Life'/><title type='text'>Nirvana Studio 有了自己的 Logo</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/blogger2/3556/1058437009395484/1600/NirvanaStudio_logo_02.png"&gt;&lt;img style="cursor: pointer;" src="http://photos1.blogger.com/blogger2/3556/1058437009395484/400/NirvanaStudio_logo_02.png" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Nirvana Studio 总算有了自己的 Logo，非常感谢 Tin 同学！&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8670715980967808484-3362270594606967373?l=nicholasdsj.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nicholasdsj.blogspot.com/feeds/3362270594606967373/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8670715980967808484&amp;postID=3362270594606967373' title='1 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8670715980967808484/posts/default/3362270594606967373'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8670715980967808484/posts/default/3362270594606967373'/><link rel='alternate' type='text/html' href='http://nicholasdsj.blogspot.com/2006/10/nirvana-studio-logo.html' title='Nirvana Studio 有了自己的 Logo'/><author><name>Nicholas @ Nirvana Studio</name><uri>http://www.blogger.com/profile/12298331861298443536</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8670715980967808484.post-1041465509665295575</id><published>2006-10-28T01:31:00.000+08:00</published><updated>2006-10-28T01:37:39.755+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Life'/><title type='text'>与 James Gosling 的合影</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://image2.sina.com.cn/IT/it/2006-09-29/U853P2T1D1166960F1516DT20060929174230.jpg"&gt;&lt;img style="cursor: pointer; width: 400px;" src="http://image2.sina.com.cn/IT/it/2006-09-29/U853P2T1D1166960F1516DT20060929174230.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://album.sina.com.cn/pic/4ac91b3102000ca6"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 400px;" src="http://album.sina.com.cn/pic/4ac91b3102000ca6" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;比较遗憾的就是和 James Gosling 单独合影的照片一直都没有拿到！&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8670715980967808484-1041465509665295575?l=nicholasdsj.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nicholasdsj.blogspot.com/feeds/1041465509665295575/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8670715980967808484&amp;postID=1041465509665295575' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8670715980967808484/posts/default/1041465509665295575'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8670715980967808484/posts/default/1041465509665295575'/><link rel='alternate' type='text/html' href='http://nicholasdsj.blogspot.com/2006/10/james-gosling.html' title='与 James Gosling 的合影'/><author><name>Nicholas @ Nirvana Studio</name><uri>http://www.blogger.com/profile/12298331861298443536</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8670715980967808484.post-3572960319429721871</id><published>2006-10-26T09:36:00.000+08:00</published><updated>2006-10-27T22:50:45.315+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Life'/><title type='text'>常州发展史</title><content type='html'>4500万年前，人类祖先脊椎动物“中华曙猿”生活于溧阳上黄一带，比北非的“人类祖先”早800——1000万年。&lt;br /&gt;&lt;br /&gt;6000余年前，原始居民聚居于戚墅堰圩墩村一带。&lt;br /&gt;&lt;br /&gt;周灵王二十五年（公元前547年），吴王馀祭封季札于延陵，此为常州文字记载第一名称。&lt;br /&gt;&lt;br /&gt;西汉高祖五年（公元前202年）改称毗陵。&lt;br /&gt;&lt;br /&gt;三国时吴大帝嘉禾三后（公元234年）实行屯田，辖毗陵、武进（今丹徒）、云阳（今丹阳）3县农事。&lt;br /&gt;&lt;br /&gt;西晋武帝太康二年（公元281年），废屯田典农校尉，改置毗陵郡，辖丹徒、曲阿、武进、延陵、毗陵、暨阳、无锡7县。自此至清代，常州均为郡、州、路、府所在地。&lt;br /&gt;&lt;br /&gt;晋惠帝永兴元年（公元304年），因避东海王世子毗名讳，改称晋陵郡。&lt;br /&gt;&lt;br /&gt;晋大兴元年（公元318年）侨置兰陵郡。&lt;br /&gt;&lt;br /&gt;隋文帝开皇九年（公元589年），废晋陵郡，置常州，辖晋陵、无锡、义兴、江阴4县。&lt;br /&gt;&lt;br /&gt;唐会昌四年（公元844年），升常州为望，列全国十望之一，辖5县同上（含武进县）。&lt;br /&gt;&lt;br /&gt;昭宗景福元年（公元892年），建吴国，常州属吴，史称“三吴重镇”。&lt;br /&gt;&lt;br /&gt;元世祖至元十四年（公元1277年），改置常州路，辖晋陵、武进2县和宜兴、无锡2州。&lt;br /&gt;&lt;br /&gt;元惠宗至正十七年（公元1357年），改常州路为长春府，辖武进、无锡、宜兴、江阴4县。&lt;br /&gt;&lt;br /&gt;明永乐七年（公元1409年），改长春府为常州府，辖县增靖江，计5县。&lt;br /&gt;&lt;br /&gt;清雍正四年（公元1726年），常州府辖武进、阳湖、无锡、金匮、宜兴、荆溪、江阴、靖江8县，史称“八邑名都”。&lt;br /&gt;&lt;br /&gt;1912年辛亥革命后废常州府，阳湖县并入武进县，城区一度称武进市，沿称常州，属江苏省。&lt;br /&gt;&lt;br /&gt;1949年4月23日常州解放后，城乡分别设常州市和武进县，隶属于苏南行政区常州专区。&lt;br /&gt;&lt;br /&gt;1953年，常州市升为省辖市。&lt;br /&gt;&lt;br /&gt;1958年，镇江专区迁来常州，改称常州专区，辖常州、镇江2市和武进、金坛、溧阳、丹阳、扬中、句容、宜兴、溧水、高淳9县，隶属江苏省。&lt;br /&gt;&lt;br /&gt;1983年1月，国务院批准江苏省实行市管县体制，3月起辖武进、金坛、溧阳3县。&lt;br /&gt;&lt;br /&gt;2002年4月，国务院批准常州市建特大城市，撤县级武进市，设武进区，郊区更名为新北区；常州市辖金坛、溧阳二市和武进、新北、天宁、钟楼、戚墅堰五区。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8670715980967808484-3572960319429721871?l=nicholasdsj.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nicholasdsj.blogspot.com/feeds/3572960319429721871/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8670715980967808484&amp;postID=3572960319429721871' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8670715980967808484/posts/default/3572960319429721871'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8670715980967808484/posts/default/3572960319429721871'/><link rel='alternate' type='text/html' href='http://nicholasdsj.blogspot.com/2006/10/blog-post_26.html' title='常州发展史'/><author><name>Nicholas @ Nirvana Studio</name><uri>http://www.blogger.com/profile/12298331861298443536</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8670715980967808484.post-7518832398586504379</id><published>2006-10-25T15:45:00.000+08:00</published><updated>2006-10-25T16:02:05.831+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='JavaScript'/><category scheme='http://www.blogger.com/atom/ns#' term='Scripting'/><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><category scheme='http://www.blogger.com/atom/ns#' term='Ruby On Rails'/><title type='text'>尝试写一个类似 RoR 的快速开发框架（4）</title><content type='html'>这几天又继续完善这个框架，URL的分发采用FilterDispacther，处理Script使用RhinoServlet。框架使用了Phobos的类库，因为RhinoScriptEngine一类的东西Phobos都写得很不错，那来直接用就可以，没必要自己重新发明轮子了。&lt;br /&gt;&lt;br /&gt;Phobos里面ScriptEnginePool被我扩展了，主要是用于在启动每个ScriptEngine的时候默认加载一个启动脚本，这个脚本只会在ScriptEngine初始化的时候执行一次，然后进入ENGINE_SCOPE里面。之后就可以使用这里面定义的一些公共函数了。&lt;br /&gt;&lt;br /&gt;URL之后的Scripts处理就基本学习RoR的Convention了，layout和helpers的处理流程也基本好了，接下来就是要开始写一些helpers，重点可以转移到JavaScript编程上了。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8670715980967808484-7518832398586504379?l=nicholasdsj.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nicholasdsj.blogspot.com/feeds/7518832398586504379/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8670715980967808484&amp;postID=7518832398586504379' title='4 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8670715980967808484/posts/default/7518832398586504379'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8670715980967808484/posts/default/7518832398586504379'/><link rel='alternate' type='text/html' href='http://nicholasdsj.blogspot.com/2006/10/ror-4.html' title='尝试写一个类似 RoR 的快速开发框架（4）'/><author><name>Nicholas @ Nirvana Studio</name><uri>http://www.blogger.com/profile/12298331861298443536</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8670715980967808484.post-8476685707208617284</id><published>2006-10-24T10:29:00.000+08:00</published><updated>2006-10-24T10:46:20.718+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='JavaScript'/><category scheme='http://www.blogger.com/atom/ns#' term='Scripting'/><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><title type='text'>JSR-223、Phobos、Glassfish</title><content type='html'>继&lt;a href="http://nicholasdsj.blogspot.com/2006/10/jsr-223-javaxscripthttp.html"&gt;上一篇&lt;/a&gt;提到JSR-223改变之后，我从JCP网站上下载到了JSR-223提议的最终版本文档，06年8月10号的。光有代码还不行啊，还得找一下JSR-223的API包，&lt;a href="http://blogs.sun.com/sundararajan/"&gt;Sundararajan&lt;/a&gt; 建议参考一下 Phobos 的代码，于是下了 Glassfish (2007-7-24)，用上了里面的 jsr-223.jar。&lt;br /&gt;&lt;br /&gt;考虑到写一个JsRails框架的问题，我需要在ScriptEngine启动的时候默认加载一部分类库，之前sun实现的RhinoScriptEngine并没有留有任何扩展让人可以作这个事情，很想改改sun的实现代码，但是毕竟人家是CDDL的，不好弄。于是从cvs中checkout下了Phobos的最终代码，发现同名的jsr-223.jar比Glassfish里面的新，这一份jar才是最符合JSR-223 PFD的。看看代码里面的注释，发现作者已经想到了预留的扩展，总算可以实现要实现的功能了！&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8670715980967808484-8476685707208617284?l=nicholasdsj.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nicholasdsj.blogspot.com/feeds/8476685707208617284/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8670715980967808484&amp;postID=8476685707208617284' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8670715980967808484/posts/default/8476685707208617284'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8670715980967808484/posts/default/8476685707208617284'/><link rel='alternate' type='text/html' href='http://nicholasdsj.blogspot.com/2006/10/jsr-223phobosglassfish.html' title='JSR-223、Phobos、Glassfish'/><author><name>Nicholas @ Nirvana Studio</name><uri>http://www.blogger.com/profile/12298331861298443536</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8670715980967808484.post-2494357884908487182</id><published>2006-10-20T23:34:00.000+08:00</published><updated>2006-10-20T23:42:41.810+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='JavaScript'/><category scheme='http://www.blogger.com/atom/ns#' term='Scripting'/><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><title type='text'>JSR-223 中的 javax.script.http 被删了</title><content type='html'>今天就JSR-223参考实现里面的一个小bug给 Sundararajan 发了封信，结果很快收到回信了。他告诉我 DeTagifier.java 估计要删掉了，javax.script.http 已经没有了，难怪我下载 JDK6 的源代码时发现这东西没了呢，而且从网上也很难搜到相关代码。&lt;br /&gt;&lt;br /&gt;在用JSR-223+Rhino是用到了javax.script.http，感觉设计上还是有一些强制性的，譬如HttpScriptServlet，实现这个应该是MVC框架的一个职责，目前我的代码里面对这个类重新实现了一下，不然无法达到RoR那种效果。&lt;br /&gt;&lt;br /&gt;我又回了 Sundararajan 一封信，向他咨询一下 JSR-223 未来的一些走势，期待回信了。&lt;br /&gt;&lt;br /&gt;PS：&lt;a href="http://blogs.sun.com/sundararajan/"&gt;Sundararajan&lt;/a&gt; 看着名字很怪，从他的blog上看出来他是个印度人，对脚本语言也是相当的熟悉了，他的blog上有很多脚本语言的对比，譬如JavaScript,Jython,JRuby,Grooby等等，对技术的研究也是非常透彻和有深度的。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8670715980967808484-2494357884908487182?l=nicholasdsj.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nicholasdsj.blogspot.com/feeds/2494357884908487182/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8670715980967808484&amp;postID=2494357884908487182' title='1 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8670715980967808484/posts/default/2494357884908487182'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8670715980967808484/posts/default/2494357884908487182'/><link rel='alternate' type='text/html' href='http://nicholasdsj.blogspot.com/2006/10/jsr-223-javaxscripthttp.html' title='JSR-223 中的 javax.script.http 被删了'/><author><name>Nicholas @ Nirvana Studio</name><uri>http://www.blogger.com/profile/12298331861298443536</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8670715980967808484.post-5737554565193809887</id><published>2006-10-20T11:38:00.000+08:00</published><updated>2006-10-20T11:42:44.565+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='JavaScript'/><category scheme='http://www.blogger.com/atom/ns#' term='Scripting'/><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><category scheme='http://www.blogger.com/atom/ns#' term='Ruby On Rails'/><title type='text'>尝试写一个类似 RoR 的快速开发框架（3）</title><content type='html'>继上一篇讨论了Routers的问题之后，我有着手写了关于URL的处理，总结起来有如下步骤，比之前多了有关静态内容的匹配。&lt;br /&gt;&lt;ol&gt;&lt;li&gt;首先匹配规则&lt;/li&gt;&lt;li&gt;如果规则不符，检测是否以后缀结尾&lt;/li&gt;&lt;li&gt;如果有后缀，认为是静态内容&lt;/li&gt;&lt;li&gt;没有后缀，自然拆封，例如：say/hello -&gt; Controller: say, Method: hello&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;按照这个流程我做了DispatchFilter来处理URL，当然还有很多预料之外的问题需要解决。&lt;/p&gt;&lt;p&gt;RoR 的 layout 特性我还没有想到好的实现办法，使用 FreeMarker 作为模版有一些问题解决不了，譬如类似 RoR 的 render 功能，可能我要考虑直接用 JavaScript 像 RoR 一样作为模版用了。&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8670715980967808484-5737554565193809887?l=nicholasdsj.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nicholasdsj.blogspot.com/feeds/5737554565193809887/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8670715980967808484&amp;postID=5737554565193809887' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8670715980967808484/posts/default/5737554565193809887'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8670715980967808484/posts/default/5737554565193809887'/><link rel='alternate' type='text/html' href='http://nicholasdsj.blogspot.com/2006/10/ror-3.html' title='尝试写一个类似 RoR 的快速开发框架（3）'/><author><name>Nicholas @ Nirvana Studio</name><uri>http://www.blogger.com/profile/12298331861298443536</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8670715980967808484.post-2895320475548425795</id><published>2006-10-20T00:18:00.000+08:00</published><updated>2006-10-20T00:22:12.723+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Life'/><title type='text'>IE7 用起来真不错</title><content type='html'>&lt;a href="http://photos1.blogger.com/blogger2/3556/1058437009395484/1600/ie7.0.png"&gt;&lt;img style="FLOAT: left; MARGIN: 0px 10px 10px 0px; CURSOR: hand" alt="" src="http://photos1.blogger.com/blogger2/3556/1058437009395484/320/ie7.0.png" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div&gt;时隔6年IE7总算出来了，装好用了一下感觉还不错。挺清爽的页面，去掉了传统的Menu bar给人一种很清新的感觉。&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8670715980967808484-2895320475548425795?l=nicholasdsj.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nicholasdsj.blogspot.com/feeds/2895320475548425795/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8670715980967808484&amp;postID=2895320475548425795' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8670715980967808484/posts/default/2895320475548425795'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8670715980967808484/posts/default/2895320475548425795'/><link rel='alternate' type='text/html' href='http://nicholasdsj.blogspot.com/2006/10/ie7.html' title='IE7 用起来真不错'/><author><name>Nicholas @ Nirvana Studio</name><uri>http://www.blogger.com/profile/12298331861298443536</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8670715980967808484.post-7616951832785298616</id><published>2006-10-18T17:36:00.000+08:00</published><updated>2006-10-18T17:44:18.640+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='JavaScript'/><category scheme='http://www.blogger.com/atom/ns#' term='Scripting'/><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><category scheme='http://www.blogger.com/atom/ns#' term='Ruby On Rails'/><title type='text'>尝试写一个类似 RoR 的快速开发框架（2）</title><content type='html'>这两天又边看《Agile Web Development with Ruby》边写这个框架。开始着手处理URL到Controller的分配。虽然书上没有提到明确的URL处理流程，但看过几个程序之后大概的程序流程有点明白了。&lt;br /&gt;RoR 通过 routes.rb 来定义自定义的 URL 影射规则，观察过 routes.rb、Cake、Django 的 URL 影射规则之后，我觉得在我这个框架里面最好的选择就是采用正则直接匹配。于是我可以考虑如下写法定义 routes.jsx：&lt;br /&gt;Routing.connect('^/$', 'blog', 'index');&lt;br /&gt;Routing.connect('^/articles/(\\d+)$, 'blog', 'show');&lt;br /&gt;&lt;br /&gt;除了这个当然还有一个默认的规则，那就是根据url分割之后进行匹配：&lt;br /&gt;/say/hello -&gt; Controller: say, Method: hello&lt;br /&gt;这样的 url 虽然没有经过 Routing 的定义，但是可以用默认的方式进行匹配，当然了，在hello后面的参数会追加到函数定义中去，譬如：&lt;br /&gt;/say/hello/nicholas&lt;br /&gt;function hello(greeting) { print(greeting); }&lt;br /&gt;这种方式也应该要受到支持。&lt;br /&gt;&lt;br /&gt;URL 的匹配还是挺复杂的一块内容，现在作了一个简陋的实现，还期待 ShiningRay 和 Tin 同学多提意见。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8670715980967808484-7616951832785298616?l=nicholasdsj.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nicholasdsj.blogspot.com/feeds/7616951832785298616/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8670715980967808484&amp;postID=7616951832785298616' title='3 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8670715980967808484/posts/default/7616951832785298616'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8670715980967808484/posts/default/7616951832785298616'/><link rel='alternate' type='text/html' href='http://nicholasdsj.blogspot.com/2006/10/ror-2.html' title='尝试写一个类似 RoR 的快速开发框架（2）'/><author><name>Nicholas @ Nirvana Studio</name><uri>http://www.blogger.com/profile/12298331861298443536</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8670715980967808484.post-1620363839880161994</id><published>2006-10-18T10:02:00.000+08:00</published><updated>2006-10-18T11:45:33.484+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='review'/><title type='text'>公安局称多户和用ADSL违法</title><content type='html'>从sohu上看到的消息，公安局称多户和用ADSL违法，中国电信已经下手开始封杀：&lt;br /&gt;http://it.sohu.com/20061017/n245838475.shtml&lt;br /&gt;看了这片文章觉得电信已经越来越不能忍了......&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8670715980967808484-1620363839880161994?l=nicholasdsj.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nicholasdsj.blogspot.com/feeds/1620363839880161994/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8670715980967808484&amp;postID=1620363839880161994' title='1 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8670715980967808484/posts/default/1620363839880161994'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8670715980967808484/posts/default/1620363839880161994'/><link rel='alternate' type='text/html' href='http://nicholasdsj.blogspot.com/2006/10/adsl.html' title='公安局称多户和用ADSL违法'/><author><name>Nicholas @ Nirvana Studio</name><uri>http://www.blogger.com/profile/12298331861298443536</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8670715980967808484.post-93362428089859365</id><published>2006-10-17T16:35:00.000+08:00</published><updated>2006-10-17T16:47:27.189+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Programming'/><category scheme='http://www.blogger.com/atom/ns#' term='Life'/><title type='text'>Web 开发，我推荐 RoR</title><content type='html'>最近一个朋友在学Java和JSP，想做Web编程，我极力劝他学RoR，虽然我还没用这个东西。&lt;br /&gt;&lt;br /&gt;时间是很宝贵的东西，如果一个刚上大一的同学问我学Java还有前途吗，我会告诉他坚持学1-2年Java看看。毕竟1-2年时间够他看个几本大部头的Java书籍了。如果大3-4了，还刚想起来学Java（看到招聘信息很多招Java的），那么我只能劝他们放弃吧，时间宝贵，学一点更有用的东西。&lt;br /&gt;&lt;br /&gt;有人说我最近怎么离Java越来越远了，的确，我已经好几个月没写Java代码了，但我自己也不用 RoR 进行开发，但我在用一些受RoR启发的框架，譬如CakePHP。学习一门新的技术也是一种投资，你学Java的时间就没法用来学习RoR，这就是所谓的机会成本。用RoR开发Web速度比Java快这是个不争的事实，学习RoR的难度也比Java小，既然可以用更少的时间学习更实用的技术来满足自己的需要，你所花的机会成本就越少，何乐而不为呢？&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8670715980967808484-93362428089859365?l=nicholasdsj.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nicholasdsj.blogspot.com/feeds/93362428089859365/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8670715980967808484&amp;postID=93362428089859365' title='1 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8670715980967808484/posts/default/93362428089859365'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8670715980967808484/posts/default/93362428089859365'/><link rel='alternate' type='text/html' href='http://nicholasdsj.blogspot.com/2006/10/web-ror.html' title='Web 开发，我推荐 RoR'/><author><name>Nicholas @ Nirvana Studio</name><uri>http://www.blogger.com/profile/12298331861298443536</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8670715980967808484.post-151374151932651710</id><published>2006-10-16T21:05:00.000+08:00</published><updated>2006-10-16T21:30:55.213+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='JavaScript'/><category scheme='http://www.blogger.com/atom/ns#' term='Scripting'/><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><category scheme='http://www.blogger.com/atom/ns#' term='Ruby On Rails'/><title type='text'>尝试写一个类似 RoR 的快速开发框架（1）</title><content type='html'>最近受 RoR 的影响颇深，导致人逐渐变懒......&lt;br /&gt;&lt;br /&gt;同样是写程序，用 RoR 的确可以有效的减少代码量同时又可以快速开发出所要的东西，有什么不好呢？现在类似 RoR 的框架层出不穷，随着 JSR-223 的升温，使我感觉是否可以用 JavaScript 写一个类似 RoR 的快速框架出来呢，于是着手开始尝试。&lt;br /&gt;&lt;br /&gt;JSR-223 和 BSF 实在太像了，以至于参考实现的代码基本上直接取自 BSF，虽然 JSR-223 提供了 http 支持，但是要用 JavaScript 实现一个类似 RoR 的框架，靠这点 http 支持毕竟还是有点局限，所以首先要在Servlet上下点功夫。&lt;br /&gt;&lt;br /&gt;URL 是一个很重要的部分，RoR 里面使用 routes.rb 来实现自定义的 URL 规则，这一点在 Java Web 开发中能够做到的话也只能用 Filter 了。我的思路是通过 Filter 获取 URL，然后将 URL 分解，拆出 Controller、Method、Params 部分，然后用 RequestDispatcher 分发到专门处理 Scripts 的 Servlet 来处理，其中这些过程变量放在 request 中带过去。&lt;br /&gt;&lt;br /&gt;ScriptServlet 部分应该是读取指定目录的 js 文件，按照 RoR 的约定，应该是在 app/controllers 目录下面按照 xxx_controller.js 开始找，然后根据 request 传过来的 Method 进行调用，最后搜索模版，路径在 views/xxx/ 目录下，用函数调用返回的结果渲染模版。&lt;br /&gt;&lt;br /&gt;大致的流程估计应该是这样，下面考虑一下所用的框架。觉得很有可能需要自己实现一个基于脚本的 MVC 框架，除了 Filter 处理 URL 之外，还需要一个 ScriptsServlet 充当 ApplicationController 的角色，用来将请求分发给不同的 js 去处理，然后再加在模版进行渲染。模版引擎考虑才用 FreeMarker，虽然用 js 也可以做，但总觉得功能上不如 FreeMarker 来的强大。&lt;br /&gt;&lt;br /&gt;大概思路先是这点，打算做做看先。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8670715980967808484-151374151932651710?l=nicholasdsj.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nicholasdsj.blogspot.com/feeds/151374151932651710/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8670715980967808484&amp;postID=151374151932651710' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8670715980967808484/posts/default/151374151932651710'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8670715980967808484/posts/default/151374151932651710'/><link rel='alternate' type='text/html' href='http://nicholasdsj.blogspot.com/2006/10/ror-1.html' title='尝试写一个类似 RoR 的快速开发框架（1）'/><author><name>Nicholas @ Nirvana Studio</name><uri>http://www.blogger.com/profile/12298331861298443536</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8670715980967808484.post-592412201187040641</id><published>2006-10-15T22:38:00.000+08:00</published><updated>2006-10-16T21:30:23.177+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='review'/><title type='text'>[转] 韩国学者竟称《本草纲目》是“韩国文化遗产”！</title><content type='html'>&lt;blockquote&gt; 有时候我觉得韩国人也很可怜的，他们不知道自己真正的历史是什么，他们脑中的历史完全是政府强加给他们的。 &lt;/blockquote&gt; &lt;p style="text-indent: 2em;"&gt;&lt;strong&gt;[编者按]一家之言。&lt;/strong&gt;&lt;/p&gt; &lt;p style="text-indent: 2em;"&gt;本人在韩国生活多年，所了解到的是韩国人根本就不认为韩医和中医有什么联系，他们认为韩医是 伟大的韩国的祖先们智慧的结晶，是神话中的医圣流传下来的。而所谓的医圣其实就是中国人都知道的尝百草的神农氏，因为据近年来韩国学者的“考证”，神农氏 是高丽人！甚至后世的李时珍也是高丽人！这就不难解释为什么韩国人把韩医、针灸、《本草纲目》都当作自己的文化遗产了。你要是和他们说“神农氏是华夏民族 的祖先”、“李时珍估计一辈子都没到过朝鲜半岛”，他们会觉得你看不起他们是在侮辱他们的传统文化，所以我在韩国基本上不和他们争论任何有关这方面的话 题。&lt;/p&gt; &lt;p style="text-indent: 2em;"&gt;而事实上你只要到韩国大邱的药材市场上走一走就知道这种韩医是韩国本土文化的论调是多么可笑 了，那里的草药都用中文标明名称，绝大多数的药材也都是从中国进口的，因为韩医中百分之九十以上的药材的原产地都是在中国的，可是韩国人不管这个，药材只 要到了韩国一律称为“韩草药”。在中国各大中医学院，有数以万计的韩国留学生在学习着中医课程，可是等这些人学成回国后，一律被称为“韩医师”，开出的中 医药方也成了 “韩方”，在中国学习的针灸技术也成了“韩国传统针灸”，这些“韩医”在韩国是很受尊敬的，收入也很高。&lt;/p&gt; &lt;p style="text-indent: 2em;"&gt;另外，看到有不少人说道韩国的太极旗，也想说说这个。韩国人从小受的有关国旗的教育是这样 的：1882年8 月,使臣朴泳孝和金玉筠奉王命赴日本谈判。途中,二人商议,作为一个国家的代表没有一面国旗是不行的,于是 ,他们依据韩国传统的太极图案设计了这样一面太极旗。这个所谓“灵机一动”的国旗诞生的故事在韩国是家喻户晓的。而为了证明太极图案是韩国人的传统文化， 韩国政府进行了一系列的运作，包括宣称发现了一口上古时代的梵钟，上面已经有太极图案了，证明太极是高丽民族的智慧结晶，可是这么一口令韩国人骄傲的梵钟 至今没公开露 面过。&lt;/p&gt; &lt;p style="text-indent: 2em;"&gt;实际上，在中国近代的相关书籍中很容易找到关于韩国太极旗的来历。历史很清楚的记载了一切： 1882年，朝鲜使臣朴泳孝和金玉筠即将出使日本，临行前向中国清朝北洋政府请求将中国的龙旗作为国旗使用，北洋政府回复称藩属国不能用五爪龙旗只能用四 爪龙旗。由于当时朝鲜当局对日渐没落的清廷已经有些不买账了，所以接受清廷的要求。其时奉李鸿章之命出使朝鲜的中国使节马建忠（中国近代大语言学家，当时 和其兄复旦大学创始人马相伯一起出使朝鲜）建议朝鲜政府采用中国传统的太极八卦旗作为国旗使用，这个建议得到了朝鲜政府的采纳，所以，最早的朝鲜国旗是一 面不折不扣的白底黑色图案的太极八卦旗。后来，一名英国驻朝鲜的使节用西方美学的角度为这面太极八卦旗做了修改，去掉了八卦中的四卦，把剩下的四卦斜向对 称拉伸，使整个国旗图案呈长方形，把阴阳鱼图案改为红蓝两色，这样才有了现在我们看到的韩国太极旗。&lt;/p&gt; &lt;p style="text-indent: 2em;"&gt;当然这面改进型的太极四卦旗的来历在 韩国一定要被忽略掉，大韩民族的国旗怎么可以是两个外国人设计的？所以才有了那个“灵机一动”的版本。&lt;/p&gt; &lt;p style="text-indent: 2em;"&gt;有时候我觉得韩国人也很可怜的，他们不知道自己真正的历史是什么，他们脑中的历史完全是政府 强加给他们的。近几十年来的飞速发展其实已经证明他们是一个伟大的民族了，他们完全可以籍此赢得世界的尊重，完全不需要靠伸手拿别国的历史文化来证明自己 的伟大，这样做反而会被全世界所耻笑。&lt;/p&gt; &lt;p style="text-indent: 2em;"&gt;转自《世界》&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8670715980967808484-592412201187040641?l=nicholasdsj.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nicholasdsj.blogspot.com/feeds/592412201187040641/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8670715980967808484&amp;postID=592412201187040641' title='1 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8670715980967808484/posts/default/592412201187040641'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8670715980967808484/posts/default/592412201187040641'/><link rel='alternate' type='text/html' href='http://nicholasdsj.blogspot.com/2006/10/blog-post_15.html' title='[转] 韩国学者竟称《本草纲目》是“韩国文化遗产”！'/><author><name>Nicholas @ Nirvana Studio</name><uri>http://www.blogger.com/profile/12298331861298443536</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8670715980967808484.post-5398100687409542094</id><published>2006-10-13T17:49:00.000+08:00</published><updated>2006-10-13T17:51:39.201+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='FreeBSD'/><title type='text'>为 FreeBSD 手册在 Mozilla 上做了一个侧栏工具条</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.nirvanastudio.org/wp-content/uploads/2006/10/sidebar.PNG"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 320px;" src="http://www.nirvanastudio.org/wp-content/uploads/2006/10/sidebar.PNG" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;加到 Mozilla 浏览器的侧栏浏览器来比较方便，下载地址是：&lt;a href="http://www.nirvanastudio.org/freebsd-%E6%89%8B%E5%86%8C/"&gt;FreeBSD 手册侧栏工具条&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8670715980967808484-5398100687409542094?l=nicholasdsj.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nicholasdsj.blogspot.com/feeds/5398100687409542094/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8670715980967808484&amp;postID=5398100687409542094' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8670715980967808484/posts/default/5398100687409542094'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8670715980967808484/posts/default/5398100687409542094'/><link rel='alternate' type='text/html' href='http://nicholasdsj.blogspot.com/2006/10/freebsd-mozilla.html' title='为 FreeBSD 手册在 Mozilla 上做了一个侧栏工具条'/><author><name>Nicholas @ Nirvana Studio</name><uri>http://www.blogger.com/profile/12298331861298443536</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8670715980967808484.post-6101772333986464392</id><published>2006-10-13T11:52:00.000+08:00</published><updated>2006-10-13T11:59:00.342+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='FreeBSD'/><title type='text'>设置 FreeBSD 的 Locale</title><content type='html'>今天上网搜了一下找到了设置 Locale 的方法，其实在 FreeBSD 的 handbook 上就有。&lt;br /&gt;&lt;br /&gt;地址是：&lt;br /&gt;http://www.freebsd.org/doc/en_US.ISO8859-1/books/handbook/using-localization.html&lt;br /&gt;&lt;br /&gt;设置全局的 locale 参考下面方法：&lt;br /&gt;vi /etc/login.conf&lt;br /&gt;&lt;br /&gt;最后增加这个：&lt;br /&gt;chinese:Chinese Users Accounts:\&lt;br /&gt;  :charset=UTF-8:\&lt;br /&gt;  :lang=zh_CN.UTF-8:\&lt;br /&gt;  :tc=default:&lt;br /&gt;&lt;br /&gt;然后修改你的passwd文件，使用vipw命令&lt;br /&gt;&lt;pre class="PROGRAMLISTING"&gt;user:password:1111:11:&lt;tt style="color: rgb(255, 0, 0);" class="REPLACEABLE"&gt;&lt;i&gt;language&lt;/i&gt;&lt;/tt&gt;:0:0:User Name:/home/user:/bin/sh&lt;br /&gt;&lt;/pre&gt;language位置写入chinese，关联上你的locale。&lt;br /&gt;需要更新一下数据库，使用 cap_mkdb /etc/login.conf&lt;br /&gt;登出再登录，使用命令 locale 就可以看到你的 locale 已经修改完成了&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8670715980967808484-6101772333986464392?l=nicholasdsj.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nicholasdsj.blogspot.com/feeds/6101772333986464392/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8670715980967808484&amp;postID=6101772333986464392' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8670715980967808484/posts/default/6101772333986464392'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8670715980967808484/posts/default/6101772333986464392'/><link rel='alternate' type='text/html' href='http://nicholasdsj.blogspot.com/2006/10/freebsd-locale.html' title='设置 FreeBSD 的 Locale'/><author><name>Nicholas @ Nirvana Studio</name><uri>http://www.blogger.com/profile/12298331861298443536</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8670715980967808484.post-3193992433996150071</id><published>2006-10-13T11:47:00.000+08:00</published><updated>2006-10-13T11:51:37.161+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='FreeBSD'/><title type='text'>为 FreeBSD 用上漂亮的中文字体</title><content type='html'>因为宋体的版权问题，很多 FreeBSD/Linux 用户选择了开源的“文泉驿”字体，试过之后发现还是不太理想......，字体不是很好看。偶然发现了另一个字体 &lt;a href="http://firefly.idv.tw/test/Forum.php?Board=1"&gt;firefly&lt;/a&gt; ，用上之后发觉挺不错的。&lt;span style="text-decoration: underline;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;下载目录是：&lt;br /&gt;http://www.study-area.org/apt/firefly-font/&lt;br /&gt;&lt;br /&gt;同时 FreeBSD 的 ports 里面也有这个。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8670715980967808484-3193992433996150071?l=nicholasdsj.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nicholasdsj.blogspot.com/feeds/3193992433996150071/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8670715980967808484&amp;postID=3193992433996150071' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8670715980967808484/posts/default/3193992433996150071'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8670715980967808484/posts/default/3193992433996150071'/><link rel='alternate' type='text/html' href='http://nicholasdsj.blogspot.com/2006/10/freebsd.html' title='为 FreeBSD 用上漂亮的中文字体'/><author><name>Nicholas @ Nirvana Studio</name><uri>http://www.blogger.com/profile/12298331861298443536</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8670715980967808484.post-4195172117929368130</id><published>2006-10-11T14:44:00.000+08:00</published><updated>2006-10-11T14:57:41.784+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Scripting'/><category scheme='http://www.blogger.com/atom/ns#' term='Programming'/><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><title type='text'>JSR 223: Scripting for the Java Platform</title><content type='html'>最近由于 RoR 的盛行，SUN 收编了 JRuby 的两名作者，决心在脚本语言方面做点文章了，于是 Java 6 中间加入了 JSR-223 的支持。看了一下 JSR-223 的相关内容，发觉这东西不就是把 BSF (Bean Script Framework) 规范化了吗......，不同的是 BSF 是 IBM Alphaworks 贡献给 Apache 的，而 JSR-223 是一个规范。&lt;br /&gt;&lt;br /&gt;这个 JSR-223 其实就是定义了一些接口，用来衔接使用 Java 实现的脚本语言和 Java 本身通讯，是 Java 与 Scritps 互操作的一个桥梁。主要职责差不多是让 Java 执行动态语言脚本，访问动态语言执行中产生的变量、函数等，同时让动态语言能够在它的范围内访问到 Java 空间里面的指定变量，达到互操作的目的。&lt;br /&gt;&lt;br /&gt;JSR-223 除了一个标准的给用户使用的接口之外应该还有一部分给 Scripts Provider 让他们将自己的实现符合这个规范，达到一致的目的。&lt;br /&gt;&lt;br /&gt;BSF 自 2003 年就已经 release 2 了，翻了翻以前老外讨论 BSF 的邮件列表，发现他们主要的问题集中在性能，觉得在 JVM 上面用 Java 再来解释一种脚本语言效率实在不行。不过近年来随着 RoR 的出现，似乎让大家的重点更多的转移到了速度上来，毕竟不是所有场合都那么追求高性能，能够提供更高的开发效率才是大家所需的。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8670715980967808484-4195172117929368130?l=nicholasdsj.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nicholasdsj.blogspot.com/feeds/4195172117929368130/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8670715980967808484&amp;postID=4195172117929368130' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8670715980967808484/posts/default/4195172117929368130'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8670715980967808484/posts/default/4195172117929368130'/><link rel='alternate' type='text/html' href='http://nicholasdsj.blogspot.com/2006/10/jsr-223-scripting-for-java-platform.html' title='JSR 223: Scripting for the Java Platform'/><author><name>Nicholas @ Nirvana Studio</name><uri>http://www.blogger.com/profile/12298331861298443536</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8670715980967808484.post-2266386392438324435</id><published>2006-10-10T17:50:00.001+08:00</published><updated>2006-10-13T11:46:20.788+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='FreeBSD'/><category scheme='http://www.blogger.com/atom/ns#' term='Life'/><title type='text'>终于让 FreeBSD 支持 SigmaTel 9200 的声卡了</title><content type='html'>翻了半天 FreeBSD Mutilmedia 的邮件列表，尝试了一些驱动，总算发现官方的代码在逐渐出来，找到了一个官方的 PR：&lt;br /&gt;http://www.freebsd.org/cgi/query-pr.cgi?pr=104011&lt;br /&gt;&lt;br /&gt;里面指向一个地址：&lt;br /&gt;http://lists.freebsd.org/pipermail/freebsd-multimedia/2006-September/004864.html&lt;br /&gt;&lt;br /&gt;从这个地址里面下一个 patch 出来，我用的是 6.1，所以下6系列的 patch，按照上面的方法 make 了一下，然后用 kldload 加载出来就可以用了，真不错！&lt;br /&gt;&lt;br /&gt;下一步就是 WiFi 的支持啦！！&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8670715980967808484-2266386392438324435?l=nicholasdsj.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nicholasdsj.blogspot.com/feeds/2266386392438324435/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8670715980967808484&amp;postID=2266386392438324435' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8670715980967808484/posts/default/2266386392438324435'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8670715980967808484/posts/default/2266386392438324435'/><link rel='alternate' type='text/html' href='http://nicholasdsj.blogspot.com/2006/10/freebsd-sigmatel-9200.html' title='终于让 FreeBSD 支持 SigmaTel 9200 的声卡了'/><author><name>Nicholas @ Nirvana Studio</name><uri>http://www.blogger.com/profile/12298331861298443536</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8670715980967808484.post-124371637781774152</id><published>2006-10-10T10:12:00.000+08:00</published><updated>2006-10-13T11:46:38.992+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='FreeBSD'/><category scheme='http://www.blogger.com/atom/ns#' term='Life'/><title type='text'>终于让 FreeBSD 支持 Dell D420 的宽屏了</title><content type='html'>都怪 D420 太新，以至于 FreeBSD 没有能够提供关于显卡的驱动，疯狂  google 了一下发现一个叫做 915resolution 的东西，0.5.2,1 版本能够把 D420 的 945GM 显卡 BIOS 中的模式列出来，然后 hack 一下变成 1280x800，同时修改一下 /etc/X11/xorg.conf 让他显示 1280x800 的分辨率就成功了，着实让人兴奋了一阵！&lt;br /&gt;&lt;br /&gt;调整 xorg.conf 中关于 Monitor 部分可以参考 /var/log/Xorg.0.log 中打印出来的信息，里面有设置 ModeLine 参数的详细数据，不明白就 google 一下吧。&lt;br /&gt;&lt;br /&gt;从房东雨同学那得知在 /etc 中建一个 rc.local 脚本可以放置系统启动时需要的脚本，于是将 915resolution 的命令直接放置到这里，reboot，以后直接 startx 就行了！&lt;br /&gt;&lt;br /&gt;下一步，解决 D420 的声卡问题！！！&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8670715980967808484-124371637781774152?l=nicholasdsj.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nicholasdsj.blogspot.com/feeds/124371637781774152/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8670715980967808484&amp;postID=124371637781774152' title='1 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8670715980967808484/posts/default/124371637781774152'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8670715980967808484/posts/default/124371637781774152'/><link rel='alternate' type='text/html' href='http://nicholasdsj.blogspot.com/2006/10/freebsd-dell-d420.html' title='终于让 FreeBSD 支持 Dell D420 的宽屏了'/><author><name>Nicholas @ Nirvana Studio</name><uri>http://www.blogger.com/profile/12298331861298443536</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8670715980967808484.post-9126934047363559343</id><published>2006-10-09T01:07:00.000+08:00</published><updated>2006-10-09T01:24:46.303+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Programming'/><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><title type='text'>由 CakePHP 想到的......</title><content type='html'>做了一段时间的 CakePHP 开发，一个类似 RoR 的 PHP 框架，让我对 Web 编程又开始感兴趣了，之前用 Java 开发 Web 程序着实让人失望。静下心来总结一下，其实 Java 开发 Web 应用也可以模仿 RoR 的，虽然类似的框架已经有一些了，但是我还是觉得应该尽可能的简单......&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;采用一个非 JSP 的模版引擎。&lt;/span&gt;大家喜欢使用 JSP 当模版，当然了，默认就是这样的。不过 JSP 第一次编译着实让人很烦燥，我觉得 Web 开发的速度优势不明显了。开发 ASP/PHP，边写程序边刷新页面是挺实用的方法，页面有太多的布局、UI元素，需要频繁的刷新来进行调整，这点 JSP 让人调的很麻烦。所以选择一个好的模版引擎可以省不少事情，我最喜欢 FreeMarker，当然还有 Velocity 可以用，还有一个有意思的东西，Antlr 配套的 Stringtemplate 也可以拿来用，非常不错。&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;使用动态语言编写 Controller。&lt;/span&gt;Controller 的职责出要是处理一些控制逻辑，数据库的操作它不需要来负责，所以 Controller 随着 View 的不同改动太大了，但也都是微调。因为经常需要改变，所以每次都编译一边实在恶心。当然了，各种框架几乎都提供了容器外测试的环境，我个人觉得后期可以将稳定的 Controller 写回静态类以提高性能并进行详细功能测试，但一般来说大可不必。采用一种好的动态语言可以省不少事情，譬如 Java 提供了统一的 BSF 可以选用很多动态语言，譬如 JavaScript，Jython，Groovy, BeanShell，JRuby 等等。初期效率不是最关键的因素，再说 Web 应用的性能瓶颈往往在数据库，Web 框架没必要太复杂。&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;业务、数据层可以脱离容器开发。&lt;/span&gt;这一层是 Java 的强项，完全可以脱离容器开发，进行单元测试，这对于 Java 开发人员往往是最得心应手的工作。&lt;br /&gt;&lt;br /&gt;如果有时间到想用 Java 做一个这样的东西玩玩，似乎还漏了最重要的一点，Convention over Configuration，有了这个 Magic，效率才可能有魔术般的提升！&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8670715980967808484-9126934047363559343?l=nicholasdsj.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nicholasdsj.blogspot.com/feeds/9126934047363559343/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8670715980967808484&amp;postID=9126934047363559343' title='1 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8670715980967808484/posts/default/9126934047363559343'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8670715980967808484/posts/default/9126934047363559343'/><link rel='alternate' type='text/html' href='http://nicholasdsj.blogspot.com/2006/10/cakephp.html' title='由 CakePHP 想到的......'/><author><name>Nicholas @ Nirvana Studio</name><uri>http://www.blogger.com/profile/12298331861298443536</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8670715980967808484.post-7799970408695014207</id><published>2006-10-09T00:38:00.000+08:00</published><updated>2006-10-09T01:06:27.187+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Programming'/><category scheme='http://www.blogger.com/atom/ns#' term='Life'/><title type='text'>天下大势，合久必分，分久必合</title><content type='html'>永远无休止的  Web 框架之战，几乎主流的编程语言都涉及了 Web 开发，从 ASP/PHP/JSP 的兴起，从 Model1 到 Model2 的转变，几年间大家从简单的 ASP + ADO + XXX 到使用各种框架，框架优劣的讨论几乎成了争论的焦点。&lt;br /&gt;&lt;br /&gt;我也是从 ASP 时代过来的，记得高中用 ASP 写了第一个留言板程序之后发现编程原来竟可以这么简单，随之接触了 Linux，接触了 PHP，接触了诸多开源的东西，至少那几年来写 Web 程序从来没有涉及过框架一说。直到用起了 Java，接触了 JSP，才逐步从 Model1 向 Model2 转变。JSP 一点都不比 ASP/PHP 简单，甚至开发速度也很慢，从一开始接触 Struts 就没发觉那点好，也从来没用 Struts 正经做过什么东西。从 Struts 诞生到现在5年多了吧，其间大大小小的框架层出不穷，似乎代码的 copy-paste 开发散发出不好的味道，大家纷纷追求更高层次的代码重用，掌握各种各样的框架成了求职的必备技能。不知不觉我们在走向一个极端，Java 各式的框架是在太多了，光是 Web 框架就够让人看花眼的了。&lt;br /&gt;&lt;br /&gt;并不是所有时候框架都能带给开发者方便，当我在用 Java 开发 Web 的时候总是第一感觉想到我熟悉的 Spring-MVC，想到 Spring + Hibernate，自己动手搭建这么一个环境大概20分钟就过去了。就算能够开始写东西了也无法快速的看到原型，层次太清晰了，以至于不得不一层一层写，一层一层测试，写到 Web 层的时候发现自己写的一大半代码都是重复的。在这点上，脚本语言要方便得多，写 PHP 的 ShiningRay 写一个相同功能的程序甚至只需要 Java 版本的 50% 代码行数还不到，而且速度可以快上1倍，这还是保守估计。&lt;br /&gt;&lt;br /&gt;于是太多的 Java Developer 投奔 RoR 的怀抱了，虽然我没有亲自试过 RoR，但是用过类 RoR 的框架 CakePHP，开发效率的确很高，框架的作用被很好的隐藏起来了。Convertion over Configuration，着实 Pragmatic。想当年大家都在写 Model1 的 Web 程序，Model2 的出现促生了无数 Web 框架诞生，各种各样的新鲜想法诞生了，出现了一批优秀的 Web 框架，但都自成体系。时间长了，大家都累了，学一个框架已经远远不够了，至少也要了解另外几个才行。RoR 推行的概念很好，抛开其他因素，按照约定俗成的规范来写程序。可能在 DHH 之前已经有很多人这么做过了，只是没有能够像 RoR 宣传的这么好罢了。从合到分，从分到合，技术总是在不断变换中前进，大方向是好的，都是为了提高生产力，关于语言、平台方面的争论就少一点吧，与其无休止的口水战还不如踏踏实实的写好程序。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8670715980967808484-7799970408695014207?l=nicholasdsj.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nicholasdsj.blogspot.com/feeds/7799970408695014207/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8670715980967808484&amp;postID=7799970408695014207' title='2 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8670715980967808484/posts/default/7799970408695014207'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8670715980967808484/posts/default/7799970408695014207'/><link rel='alternate' type='text/html' href='http://nicholasdsj.blogspot.com/2006/10/blog-post.html' title='天下大势，合久必分，分久必合'/><author><name>Nicholas @ Nirvana Studio</name><uri>http://www.blogger.com/profile/12298331861298443536</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8670715980967808484.post-4147897728119161936</id><published>2006-09-28T22:11:00.000+08:00</published><updated>2006-09-28T22:43:07.003+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><category scheme='http://www.blogger.com/atom/ns#' term='Life'/><title type='text'>见到了 Java 之父 James Gosling</title><content type='html'>居然能和 Java 之父 James Gosling 一起合影这对于一个 Java Developer 来说是多么兴奋得事情！James  来公司作客，公司组织了一个讨论会，虽然很多同事都不是 Java 开发人员，但对于 Java 之父的到访还都是很感兴趣的，大家也都纷纷提问。我也凑了个热闹，提了个问题。&lt;br /&gt;&lt;br /&gt;Q：As you mentioned functional programming, which gets ideas from mathematics. They have many language spotlight like continuation, closure and so on. Does java consider introducing these features in the future?&lt;br /&gt;&lt;br /&gt;似乎 James 对这个问题也是颇有感触，他说 Closure 和 Continuation 的支持现在更多的是一场争论，似乎无穷无尽。函数式编程的确是一件好东西，可以有效地减少代码数量，但是同样他带来的一个缺点就是晦涩难懂。做 Java 的一部分开发人员其实并不是纯粹的计算机出生，所以他们并不一定有扎实的数学基础，对于函数式编程的理解可能比较困难，不自然。不过嘛，虽然 Continuation 没什么戏了，我们依然可以通过 Inner Class 或者 Anonymous Class 的方式凑活当 Closure 用吧。&lt;br /&gt;&lt;br /&gt;会上还有同事提到一些关于现在高性能计算的问题，也是最近双核 CPU 的出现，大家对于双核甚至多核比较关注。根据 James 的介绍，Java 的线程方式对于多核的支持非常完善了，在数百个 CPU 上的多线程表现也算不错，但是在上千个 CPU 上的尝试还是不太理想，毕竟这么多 CPU 有很多无法预料的情况产生。当有人问及未来会不会出现一种具有更高生产力的编程语言是，他回答道如果未来可能产生一门语言在并行计算上具有压倒性优势的话，那么这门语言就是最有希望的。目前除了 Java 之外，FP 和基于消息的语言（类似 Smalltalk 的理想模型）是三种主流趋势，他看好 Java，毕竟后两种语言绕开了共享内存的缺陷，但是要想让大众接受比较困难一点。&lt;br /&gt;&lt;br /&gt;时间比较短，而且大家也都是问得比较随意，没有刻意去准备，再加上 James 估计也就是走个过场，座谈会就匆匆结束了。&lt;br /&gt;&lt;br /&gt;能够与 Java 之父面对面，还是一件很高兴得事情！&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8670715980967808484-4147897728119161936?l=nicholasdsj.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nicholasdsj.blogspot.com/feeds/4147897728119161936/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8670715980967808484&amp;postID=4147897728119161936' title='2 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8670715980967808484/posts/default/4147897728119161936'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8670715980967808484/posts/default/4147897728119161936'/><link rel='alternate' type='text/html' href='http://nicholasdsj.blogspot.com/2006/09/java-jame-gosling.html' title='见到了 Java 之父 James Gosling'/><author><name>Nicholas @ Nirvana Studio</name><uri>http://www.blogger.com/profile/12298331861298443536</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8670715980967808484.post-6643906085937520444</id><published>2006-09-28T10:25:00.000+08:00</published><updated>2006-10-13T11:46:51.449+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='FreeBSD'/><category scheme='http://www.blogger.com/atom/ns#' term='Life'/><title type='text'>给笔记本装了个 FreeBSD</title><content type='html'>公司发了个新本 Dell D420，本身带的是  WinXP，我给分了一下，按个 &lt;a href="http://www.freebsd.org/"&gt;FreeBSD&lt;/a&gt; 玩玩。&lt;br /&gt;&lt;br /&gt;找了张 FreeBSD-6.0 Release 的盘把系统作了一下，因为 FreeBSD 需要一个主分区来安装，所以事先要预留以下。因为安装完后 FreeBSD 会把 MBR 重写一遍，所以理论上先装好 WinXP 再装 FreeBSD 比较好。&lt;br /&gt;&lt;br /&gt;安装完启动 FreeBSD，进入命令行界面，默认是 C Shell，而且发现连个 ls 色彩都没有......在 FreeBSD 的世界里，自己动手吧。&lt;br /&gt;&lt;br /&gt;给 ls 加颜色&lt;br /&gt;&lt;span style="color: rgb(255, 102, 0);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;vi ~/.cshrc&lt;br /&gt;添加 alias ls ls -G&lt;br /&gt;&lt;br /&gt;有了好看点的颜色之后，开始安装一些常用软件。FreeBSD 的 pkg_add 安装二进制软件包非常方便。X Window 默认已经安装上了，接下来按个 &lt;a href="http://www.gnome.org/"&gt;gnome&lt;/a&gt; 使用 pkg_add -r gnome2。装完之后执行 echo /usr/X11R6/bin/gnome-session &gt; ~/.xinitrc，以后就可以用 startx 来启动 gnome 了。&lt;br /&gt;&lt;br /&gt;进了 gnome 之后就开始装自己的软件吧，像 &lt;a href="http://www.opera.com/"&gt;opera&lt;/a&gt;, &lt;a href="http://www.mozilla.org/"&gt;thunderbird&lt;/a&gt;, &lt;a href="http://www.openoffice.org/"&gt;openoffice&lt;/a&gt; 等都是必备的工具哦。&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8670715980967808484-6643906085937520444?l=nicholasdsj.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nicholasdsj.blogspot.com/feeds/6643906085937520444/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8670715980967808484&amp;postID=6643906085937520444' title='1 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8670715980967808484/posts/default/6643906085937520444'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8670715980967808484/posts/default/6643906085937520444'/><link rel='alternate' type='text/html' href='http://nicholasdsj.blogspot.com/2006/09/freebsd.html' title='给笔记本装了个 FreeBSD'/><author><name>Nicholas @ Nirvana Studio</name><uri>http://www.blogger.com/profile/12298331861298443536</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8670715980967808484.post-965095358359256456</id><published>2006-09-27T13:31:00.000+08:00</published><updated>2006-09-27T13:38:16.704+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Life'/><title type='text'>目前想学的东西</title><content type='html'>感觉自己现在又陷入了一个学习的谜团，暂时不做 Java 了，到了一个新的环境，想接触一些新的东西。大概整理了一下，觉得下面的一些东西将作为我目前阶段学习的目标。&lt;br /&gt;&lt;ul&gt;&lt;li&gt;FreeBSD - 虽然还是非常喜欢 Linux，但是在新环境里学习 FreeBSD 显然是一个更好的选择，有这么多高手可以请教，并且自己也很感兴趣，应该是个不错的选择。&lt;/li&gt;&lt;li&gt;PHP - 随着 RoR 的兴起，各种类似 RoR 的框架应运而生，CakePHP 是一个不错的 PHP 框架，目前业余时间拿它和 ShiningRay 一起做做有意思的东西。&lt;/li&gt;&lt;li&gt;Python - 一直是最喜欢的语言之一，虽然没有正式用它做过什么东西，决定看下网络方面的内容，譬如一些类 RoR 框架，如 Django。网络方面比较有名的 Twisted 有时间也想好好看看。&lt;/li&gt;&lt;/ul&gt;大概就这么些了，东西还是很多的，光是 FreeBSD 就是一个庞大的知识库，不过只要有兴趣在，我相信学起来还是很有意思的。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8670715980967808484-965095358359256456?l=nicholasdsj.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nicholasdsj.blogspot.com/feeds/965095358359256456/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8670715980967808484&amp;postID=965095358359256456' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8670715980967808484/posts/default/965095358359256456'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8670715980967808484/posts/default/965095358359256456'/><link rel='alternate' type='text/html' href='http://nicholasdsj.blogspot.com/2006/09/blog-post_27.html' title='目前想学的东西'/><author><name>Nicholas @ Nirvana Studio</name><uri>http://www.blogger.com/profile/12298331861298443536</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8670715980967808484.post-2981211379889188279</id><published>2006-09-24T01:30:00.000+08:00</published><updated>2006-09-24T01:42:32.230+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Life'/><title type='text'>The Depth of Dream</title><content type='html'>昨天睡到中午12点才起，我妈来北京看我了，住我那，大早上的在帮我洗衣服，所以一大早我就隐隐约约的听到洗衣机和其他东西的响声，不过实在太困了，断断续续的睡着。&lt;br /&gt;&lt;br /&gt;我睡眠一直不好，多梦，而且非常容易做梦，并且有些时候我都可以知道自己在做梦。做梦很累，尤其是当你发现原来你的梦其实可以具有 depth 属性的时候......&lt;br /&gt;&lt;br /&gt;早上半梦半醒具体都梦了啥到现在已经都忘了，以后决定要把梦到的东西第一时刻记下来，挺有意思。不过让我记忆比较深刻的是我做梦醒来睁开眼看到了前面的门，但是有一点很重要，虽然我看到如此真实的一幕，可事实上这还是在做梦。我的梦中的场景和真实场景一抹一样，但是这的确是梦，我梦见自己睡在床上，并且是从梦中醒来，其实也就是我梦见自己在做梦，很奇妙的感觉。正像我朋友所说的，你在梦中看到的东西越清楚，你会发现醒来越累，毕竟你的大脑为了达到如此真实的效果进行了非常精细的渲染。我的梦中梦梦见了我在树林里玩，和我的好朋友一起，微微细雨，看看水面还有纹理效果。我还坐上过山车，坐真的过山车在进行360度回旋的时候我都不能清楚地记得那是什么感受，但是梦中梦却把这真实的一幕呈现给我，并且让我感到真实的失重，计算得如此精确。&lt;br /&gt;&lt;br /&gt;早上醒过来真是特别的累，不过我还是喜欢做梦，或许梦能够给人一种精神寄托吧，毕竟这都不是真实的。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8670715980967808484-2981211379889188279?l=nicholasdsj.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nicholasdsj.blogspot.com/feeds/2981211379889188279/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8670715980967808484&amp;postID=2981211379889188279' title='2 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8670715980967808484/posts/default/2981211379889188279'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8670715980967808484/posts/default/2981211379889188279'/><link rel='alternate' type='text/html' href='http://nicholasdsj.blogspot.com/2006/09/depth-of-dream.html' title='The Depth of Dream'/><author><name>Nicholas @ Nirvana Studio</name><uri>http://www.blogger.com/profile/12298331861298443536</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8670715980967808484.post-5530279638683881339</id><published>2006-09-24T01:03:00.000+08:00</published><updated>2006-09-24T01:30:06.958+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Life'/><title type='text'>Organize your life</title><content type='html'>“Organize your life!” Palm 设备的经典广告语了，我觉得很有意义。忙碌的项目接近了尾声，现在比之前的两个星期稍微轻松了点。&lt;br /&gt;&lt;br /&gt;其实很多时候我们每天工作8小时，面对着电脑，并不是8个小时完完全全是在工作，人毕竟不可能长时间集中尽力干一件事情，总有打岔的时候。就像大多数人喜欢上班时看看新闻一样，我在工作中也总是要抽点时间看看自己感兴趣的东西，譬如上上 TSS，JavaEye，Python 社区等等。&lt;br /&gt;&lt;br /&gt;说实话，做某种技术一旦长时间不接触就会手生，我已经很久没写过 Java 代码了，不知道现在写会不会手生。虽然非常喜欢 Python，但是并没有用 Python 正经做过东西。现在就写 JavaScript 熟，但是毕竟 JavaScript 没有太多令人期待的功能。总是有很多东西想学，又总是感觉时间不够，其实细细想想，并不是时间不够，而是自己不会规划自己的时间。每天会在网上闲逛，看看帖子，总想着以“高手”的身份上去说教一番。如果能够合理的安排时间，那么每天会有更多的长进。手边放一本记事本，随时写写，对每天的8小时进行一下合理的分配，尽可能的按照自己规划的时刻表走，那么每天将会有更多的时间用来学习。&lt;br /&gt;&lt;br /&gt;感觉合理规划时间是应该着手去做的，就从下周开始吧！&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8670715980967808484-5530279638683881339?l=nicholasdsj.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nicholasdsj.blogspot.com/feeds/5530279638683881339/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8670715980967808484&amp;postID=5530279638683881339' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8670715980967808484/posts/default/5530279638683881339'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8670715980967808484/posts/default/5530279638683881339'/><link rel='alternate' type='text/html' href='http://nicholasdsj.blogspot.com/2006/09/organize-your-life.html' title='Organize your life'/><author><name>Nicholas @ Nirvana Studio</name><uri>http://www.blogger.com/profile/12298331861298443536</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8670715980967808484.post-250170073028393722</id><published>2006-09-22T16:59:00.000+08:00</published><updated>2006-09-22T17:02:24.165+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Life'/><title type='text'>QQ 也太过分了</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/blogger2/3556/1058437009395484/1600/3322.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://photos1.blogger.com/blogger2/3556/1058437009395484/320/3322.jpg" alt="" border="0" /&gt;&lt;/a&gt;今天在 QQ 里面想向大家推荐几个 Ubuntu 的源，没想到输入 3322.org 居然会被屏蔽，很不理解 QQ 的这种行为！&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8670715980967808484-250170073028393722?l=nicholasdsj.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nicholasdsj.blogspot.com/feeds/250170073028393722/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8670715980967808484&amp;postID=250170073028393722' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8670715980967808484/posts/default/250170073028393722'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8670715980967808484/posts/default/250170073028393722'/><link rel='alternate' type='text/html' href='http://nicholasdsj.blogspot.com/2006/09/qq.html' title='QQ 也太过分了'/><author><name>Nicholas @ Nirvana Studio</name><uri>http://www.blogger.com/profile/12298331861298443536</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8670715980967808484.post-3751692949672006691</id><published>2006-09-22T14:46:00.000+08:00</published><updated>2006-09-22T15:07:22.733+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Programming'/><category scheme='http://www.blogger.com/atom/ns#' term='Life'/><title type='text'>我们需要动态语言因为它足够灵活</title><content type='html'>写了一段时间 JavaScript，感觉比写 Java 思维更开阔。虽然 JavaScript 提供了非常有限的 API，但是灵活的语法可以让人有更多的自由空间。&lt;br /&gt;&lt;br /&gt;Java 的语法的确很死板，因为需要编译，并且是强类型的语言，所以类型问题经常能够困扰人。虽然也提供了 Hashtable/Map 之类的数据类型，但是严格的语法限制了人们发挥想象。&lt;br /&gt;&lt;br /&gt;很多时候我们希望能够动态创建一些对象，因为对象的属性是未知的，这时候用 JavaScript 可以绝对的方便，当然我们还可以为这个对象添加额外的函数。&lt;br /&gt;&lt;br /&gt;函数式编程可以有效的缩短代码长度，虽然 Java 也可以通过匿名类的形式模拟内嵌函数，但是对类型的依赖使得语法绝对不够灵活。&lt;br /&gt;&lt;br /&gt;不需要明确声明类型有时候的确比较困扰人，但在很多场景中确是非常灵活的。JavaScript 灵活的类型使得整个编程模型异常简单，很多时候，我们只不过就是在几张变量符号表中操作操作而已，一切就是这么简单。&lt;br /&gt;&lt;br /&gt;灵活的代价是缺乏规范，没有类型，没有接口，就需要良好的代码结构和文档来进行多人开发，这也是脚本语言开发的一个弊端。下面的一种方式我觉得很不错，从dojo里面看来得。&lt;br /&gt;function swap(/* string */a, /* string */b) { .. }&lt;br /&gt;或许有时候注释一下类型会让代码变得稍微清晰一点，当然了，多积累点单词，把函数、变量命名的易读一点才是正确的方法。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8670715980967808484-3751692949672006691?l=nicholasdsj.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nicholasdsj.blogspot.com/feeds/3751692949672006691/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8670715980967808484&amp;postID=3751692949672006691' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8670715980967808484/posts/default/3751692949672006691'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8670715980967808484/posts/default/3751692949672006691'/><link rel='alternate' type='text/html' href='http://nicholasdsj.blogspot.com/2006/09/blog-post.html' title='我们需要动态语言因为它足够灵活'/><author><name>Nicholas @ Nirvana Studio</name><uri>http://www.blogger.com/profile/12298331861298443536</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8670715980967808484.post-4644551904356403893</id><published>2006-09-22T00:07:00.000+08:00</published><updated>2006-09-22T00:16:29.320+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Life'/><title type='text'>JavaEye 中一篇有趣的文章</title><content type='html'>原文在：http://www.javaeye.com/topic/24453&lt;br /&gt;最近似乎因为 RoR 的缘故，上 JavaEye 总带着异样的眼光，这不刚去 Ruby 专区看看又有感慨了。&lt;br /&gt;Render 一词毫无疑问翻译为“渲染”，在 Web 开发中用的实在常见，居然遭到质疑，不可否认怀疑的态度是好的，但是有点过了...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8670715980967808484-4644551904356403893?l=nicholasdsj.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nicholasdsj.blogspot.com/feeds/4644551904356403893/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8670715980967808484&amp;postID=4644551904356403893' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8670715980967808484/posts/default/4644551904356403893'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8670715980967808484/posts/default/4644551904356403893'/><link rel='alternate' type='text/html' href='http://nicholasdsj.blogspot.com/2006/09/javaeye.html' title='JavaEye 中一篇有趣的文章'/><author><name>Nicholas @ Nirvana Studio</name><uri>http://www.blogger.com/profile/12298331861298443536</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8670715980967808484.post-7933443998490296502</id><published>2006-09-21T23:57:00.000+08:00</published><updated>2006-09-21T23:59:47.125+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Life'/><title type='text'>原来同时更新多个 Blog 如此简单</title><content type='html'>最近发现 email 真是好东西，不觉喜欢上了这个。于是乎学习 ShiningRay 同时更新多个 Blog，因为每个 Blog 都提供 email 更新，所以通过 email 相互发送更新成立了一件非常有意思的事情。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8670715980967808484-7933443998490296502?l=nicholasdsj.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nicholasdsj.blogspot.com/feeds/7933443998490296502/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8670715980967808484&amp;postID=7933443998490296502' title='2 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8670715980967808484/posts/default/7933443998490296502'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8670715980967808484/posts/default/7933443998490296502'/><link rel='alternate' type='text/html' href='http://nicholasdsj.blogspot.com/2006/09/blog_21.html' title='原来同时更新多个 Blog 如此简单'/><author><name>Nicholas @ Nirvana Studio</name><uri>http://www.blogger.com/profile/12298331861298443536</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8670715980967808484.post-2806990426967843612</id><published>2006-09-21T23:21:00.000+08:00</published><updated>2006-09-21T23:24:05.139+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Life'/><title type='text'>新的 Blog 足迹</title><content type='html'>很多朋友开始用 Blogger 了，居然可以用 Google 的帐号登录，很感兴趣！随着 MSN 的一次失败升级，那个糟糕的界面实在无法让人忍受了，迁移到 Blogger 上来啦！&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8670715980967808484-2806990426967843612?l=nicholasdsj.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nicholasdsj.blogspot.com/feeds/2806990426967843612/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8670715980967808484&amp;postID=2806990426967843612' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8670715980967808484/posts/default/2806990426967843612'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8670715980967808484/posts/default/2806990426967843612'/><link rel='alternate' type='text/html' href='http://nicholasdsj.blogspot.com/2006/09/blog.html' title='新的 Blog 足迹'/><author><name>Nicholas @ Nirvana Studio</name><uri>http://www.blogger.com/profile/12298331861298443536</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry></feed>
