tag:blogger.com,1999:blog-86707159809678084842024-03-14T01:29:55.863+08:00Nicholas @ Nirvana StudioNicholas @ Nirvana Studiohttp://www.blogger.com/profile/12298331861298443536noreply@blogger.comBlogger52125tag:blogger.com,1999:blog-8670715980967808484.post-8819439709982476662007-05-30T16:10:00.000+08:002007-05-30T16:15:05.493+08:00wuss & wussy最近看文章发现一个很有意思的词,wuss 和 wussy。<br /><br />wuss 查了下字典是胆小鬼的意思,wussy 则是形容词,但我觉得胆小这类翻译实在不能确切表达这个词的含义,这可是个 slang 啊。<br /><br />从网上找到这个词的英文解释:<br />http://dictionary.reference.com/browse/wussy<br /><br />A person regarded as weak or timid and especially as unmanly: <i>"Cats are for wusses, dog men say"</i> <i>(Laura Blumenfeld).</i><br />[Probably blend of <b><span style="font-family:arial,sans-serif;font-size:-1;">wimp</span></b> and <b><span style="font-family:arial,sans-serif;font-size:-1;">pussy</span></b><sup>1</sup>.]<br /><br />形容这人胆小怕事还不像个man,岂不是很"衰"(念sui)。我看解释成"衰"更形象!Nicholas @ Nirvana Studiohttp://www.blogger.com/profile/12298331861298443536noreply@blogger.com4tag:blogger.com,1999:blog-8670715980967808484.post-52428363542167963372007-05-30T11:35:00.000+08:002007-05-30T11:40:13.715+08:00json.js 导致 too much recursion 问题这几天在使用 JQuery + json.js 的时候偶然发现的问题,2007-04-30 版本的 json.js 加载之后出现 too much recursion 问题,的确很怪异。<br /><br />网上也有人讨论过这个,推荐大家还是用回老版本。<br /><br />网页:<br /><strong><strong></strong></strong><strong><strong><a href="http://web.archive.org/web/20060208035938/http://www.crockford.com/JSON/js.html">http://web.archive.org/web/20060208035938/http://www.crockford.com/JSON/js.html</a></strong></strong><br /><br />下载<br /><strong><strong></strong></strong><strong><strong><a href="http://web.archive.org/web/20060208035938/http://www.crockford.com/JSON/json.js">http://web.archive.org/web/20060208035938/http://www.crockford.com/JSON/json.js</a></strong></strong>Nicholas @ Nirvana Studiohttp://www.blogger.com/profile/12298331861298443536noreply@blogger.com0tag:blogger.com,1999:blog-8670715980967808484.post-54008350728284207792007-05-25T17:24:00.000+08:002007-05-25T17:31:45.564+08:00用 PyGTK 做了一个实用的字典程序这次用 Python + PyGTK 做了一个 GUI 程序,练习了一下在 Linux 下开发桌面应用,还是很爽的。<br /><br />这是从 Dict.CN 的 WebAPI 获取字典数据,可惜 API 返回的数据还是不够丰富。用脚本语言开发 GUI 果然是效率颇高,还可以用 Glade 做好界面,然后用 Python 把界面和处理部分连上,这样就得到了界面和实现的分离。<br /><br />目前这个程序开源了,地址在:<a href="http://code.google.com/p/nirvana-dict/">http://code.google.com/p/nirvana-dict/</a><br /><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_K2sMdKnGjQk/Rlar7WBRUjI/AAAAAAAAAAM/r1Pw2t6mw0c/s1600-h/mainapp.png"><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" /></a><br />图:程序主界面<br /><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_K2sMdKnGjQk/RlasLGBRUkI/AAAAAAAAAAU/2idzk87OLGU/s1600-h/tasktray.png"><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" /></a><br />图:任务栏图标Nicholas @ Nirvana Studiohttp://www.blogger.com/profile/12298331861298443536noreply@blogger.com0tag:blogger.com,1999:blog-8670715980967808484.post-51305892945374928082007-05-23T23:46:00.000+08:002007-05-24T00:42:40.624+08:00一份在中国生活的画报指南<h1>一份在中国生活的画报指南</h1> <table callpadding="5" border="0" cellspacing="5" width="600"><tbody><tr> <td><img src="http://www.sinosplice.com/china/pictguide/bio_vis_resp3.gif" alt="" height="155" width="141"></td> <td width="100%"><p>首先,我要提醒你中国可能会是你身体机能紊乱。特别是你第一次到那里的时候。受影响最显著的系统包括了呼吸系统和消化系统。我说的是有关严重的痢疾以及肮脏的空气。</p></td> </tr> <tr> <td><img src="http://www.sinosplice.com/china/pictguide/vis_chem_choke2.gif" alt="" height="155" width="141"></td> <td width="100%"><p>在大街上有非常讨厌的气味。腐烂的组织味,尿味,大便味,臭豆腐味......但不用担心,很快你就会和你的中国朋友们玩起"这是什么气味?"的游戏来。</p></td> </tr> <tr> <td><img src="http://www.sinosplice.com/china/pictguide/vis_chem_fish2.gif" alt="" height="155" width="141"></td> <td width="100%"><p>又是关于食物的话题......你会有一些困难。朋友们,这不是"Panda Express"(US的中式快餐服务)。不方便的地方例如米饭中有小石子,满是极其微小鱼刺的鱼肉,含有很多小碎骨渣的肉。这些仅仅是普通食物,还算不上好(可能像鸡爪?),否则对你的肠道表面将是一种灾难。但是勇敢的冒险吧!你很快就会学会什么不该吃。(痢疾虽然痛苦但确实最有效的老师。)</p></td> </tr> <tr> <td><img src="http://www.sinosplice.com/china/pictguide/vis_chem_affected2.gif" alt="" height="155" width="141"></td> <td><p>某些时候污染是很糟糕的。它甚至可以让你的眼睛连续几天流眼泪,特别是当你来自一个具有真正干净空气的地方。灰尘几乎到处都是。中国人从不坐在地上或者没有被设计用来让人坐的地方,因为那些地方都很脏,你会变脏!</p></td> </tr> <tr> <td><img src="http://www.sinosplice.com/china/pictguide/bio_vis_wash2.gif" alt="" height="155" width="141"></td> <td width="100%"><p>所以你会发现你一开始经常洗啊洗。没问题,但很快你会发现 - 脏点其实也<span style="font-style: italic;">很有意思</span>!这会让你有更多的“中国故事”可以说给家里人听。</p></td> </tr> <tr> <td><img src="http://www.sinosplice.com/china/pictguide/vis_chem_area2.gif" alt="" height="155" width="141"></td> <td width="100%"><p>所以环境保护在中国并没有确切被“实施”。你会发现这起初很困扰人,并且为此忧心重重。不用担心,很快你就会像我们其他人一样对这些习以为常。</p></td> </tr> <tr> <td><img src="http://www.sinosplice.com/china/pictguide/vis_chem_bldg2.gif" alt="" height="155" width="141"></td> <td width="100%"><p>如果你来中国,我希望你别长太高。这有时候很麻烦......</p></td> </tr> <tr> <td><img src="http://www.sinosplice.com/china/pictguide/vis_chem_medic2.gif" alt="" height="155" width="141"></td> <td width="100%"><p>如果你的健康情况很好那将对你很有帮助。当然,中国有“现代”医疗设施,但是那些标准远赶不上你在西方的期望值。解决方案?不要生病,不要受伤!</p></td> </tr> <tr> <td><img src="http://www.sinosplice.com/china/pictguide/expl_vis_elevator2.gif" alt="" height="155" width="141"></td> <td width="100%"><p>不要太依赖电梯。在只有7层或者不到7层的学校和宿舍里面是没有电梯的。根据中国的建筑标准,电梯在高于7层的建筑中才能安装。嘿,很酷吧。电梯是给资本主义胆小鬼的。</p></td> </tr> <tr> <td><img src="http://www.sinosplice.com/china/pictguide/expl_vis_table2.gif" alt="" height="155" width="141"></td> <td width="100%"><p>你可能对中国使用计算机的数量印象深刻。网吧到处都是。你的好印象不会太久,因为中国的建筑标准之差,建筑在完工之后几年内就开始裂缝了。</p></td> </tr> <tr> <td><img src="http://www.sinosplice.com/china/pictguide/bio_vis_towns3.gif" alt="" height="155" width="141"></td> <td width="100%"><p>奇怪的是即便整个中国的官方语言是普通话,但是有数不清的无法理解的方言存在。特别是在南方,每个村都有独特的方言。</p></td> </tr> <tr> <td><img src="http://www.sinosplice.com/china/pictguide/bio_vis_media2.gif" alt="" height="155" width="141"></td> <td width="100%"><p>好消息是中国的东西实在是便宜!当然,他们的质量肯定达不到你曾经使用过的标准。但是当东西很便宜的时候,你可以在它坏的时候重新购买一个!很棒吧!</p></td> </tr> <tr> <td><img src="http://www.sinosplice.com/china/pictguide/chinasurprises.gif" alt="" height="155" width="141"></td> <td height="155" width="100%"><p>还有很多惊喜在中国等待着你的到来,所以,加油吧!在你适应这里不便的生活之后,你就不会感到烦恼了 —— 更好的是,你会接受他们并且笑着说“这就是中国!”<em></em></p></td></tr></tbody></table><br />原文出处:http://www.sinosplice.com/china/pictguide/<br />作者的网站:http://www.sinosplice.com/<br />这位叫做 John 的学生已经在中国生活了 6.8 年了,是学习语言学而来,真是厉害!Nicholas @ Nirvana Studiohttp://www.blogger.com/profile/12298331861298443536noreply@blogger.com1tag:blogger.com,1999:blog-8670715980967808484.post-90589726428883346232007-04-26T17:22:00.000+08:002007-04-26T17:27:07.315+08:00更新 Ubuntu 7.04 字体配置每次总是要更新 fonts.conf 来使用 VeraSansYuanTi,这次针对 Ubuntu 7.04 手工更新了一个,参考这里吧。<br /><br /><a href="http://www.nirvanastudio.org/news/ubuntu-yuanti.html">http://www.nirvanastudio.org/news/ubuntu-yuanti.html</a>Nicholas @ Nirvana Studiohttp://www.blogger.com/profile/12298331861298443536noreply@blogger.com0tag:blogger.com,1999:blog-8670715980967808484.post-52698779521226714162007-04-26T09:35:00.000+08:002007-04-26T09:45:43.668+08:00更新到了 Ubuntu 7.04 Feisty Fawn前天看到 Update Manager 上显示 7.04 已经可以直接升级了,于是没能忍住就升了。在升级最后20分钟的时候突然退出了,重启过后系统彻底挂掉。<br /><br />昨天刻了张盘把系统重新做了一遍,总算是安上 Ubuntu 7.04 了,大概用了一下,发现速度比以前快了些,但是桌面系统的反应速度依然要比 Windows 慢不少,没办法,毕竟不是内核级别的嘛。<br /><br />GNOME 的版本升级到了 2.18.1,比较新了,Firefox 依然是 2.0,Thunderbird 没能升到 2.0,因为还比较新,估计再过些日子可以通过 Update Manager 升级。GAIM 也升级了,2.0 Beta 6,界面精致了不少。Python 默认上了 2.5,不过又被我替回来了,我还没做好迎接 2.5 的准备。<br /><br />其他的还没有特别直观的感受,先用段时间看看吧。Nicholas @ Nirvana Studiohttp://www.blogger.com/profile/12298331861298443536noreply@blogger.com1tag:blogger.com,1999:blog-8670715980967808484.post-16185765926929393162007-04-23T16:59:00.000+08:002007-04-23T17:09:07.970+08:00服务器上线了周末去了亦庄机房,总算折腾了一下午把服务器按上了。<br /><br />网通亦庄机房果然环境优雅,跟一小公园似的,那么大的飞碟形状的大楼里面空荡荡的,对面整齐的草坪稍微修修就可以当高尔夫球场了,用房东同学和朱同学的话说就是网通傻有钱的。<br /><br />机器上架后,房东同学突然提起重装系统,无奈,装吧,最郁闷的就是那个公司的销售,着实无奈,估计连杀人的意思都有了。几个人在机房蹲了2个多小时,总算,我的一阵连续配置,(好几步自己都不知道点的什么),点F2开装,愣装,管他呢。<br /><br />幸好有红宝书和房、朱同学,总算系统上去了,虽然说很多地方我们还没有搞懂,而且连 man 的数据都没有。。。。。。<br /><br />不管怎么说,总算上线了!Nicholas @ Nirvana Studiohttp://www.blogger.com/profile/12298331861298443536noreply@blogger.com0tag:blogger.com,1999:blog-8670715980967808484.post-46159978579686978302007-04-21T00:39:00.000+08:002007-04-21T00:54:49.997+08:00LISP 学习笔记(1)在徐x的知道下开始尝试看看LISP,来到了有名的LISP学习站点:http://mitpress.mit.edu/sicp/,MIT出的东西还是非常经典的。<br /><br />下了个 DrScheme,可视化的Scheme学习、调试工具,带有交互式的界面,非常棒,很容易就上手了。<br /><br />LISP 的语法要比大多数编程语言要简单的多了,都是靠括号来表示代码段,看起来比较古怪,但是读起来还是比较容易接受的。看了第一章,介绍了牛顿求平方根的算法,真是长见识了,于是立即打开 Python,按照相同的逻辑写了一个,很有意思。<br /><br />;; Scheme Code<br />(define (sqrt-iter guess x)<br /> (if (good-enough? guess x)<br /> guess<br /> (sqrt-iter (improve guess x)<br /> x)))<br /><br />(define (improve guess x)<br /> (average guess (/ x guess)))<br /><br />(define (average x y)<br /> (/ (+ x y) 2))<br /><br />(define (square x) (* x x))<br /><br />(define (good-enough? guess x)<br /> (< (abs (- (square guess) x)) 0.001))<br /><br />(define (sqrtx x)<br /> (sqrt-iter 1.0 x))<br /><br /># Python Code<br />def sqrt(x, guess=1.0):<br /> if abs(guess ** 2 - x) < 0.001:<br /> return guess<br /> else:<br /> q = x / guess<br /> guess = ((x / guess) + guess) / 2<br /> return sqrt(x, guess)<br /><br />毕竟 LISP 是一门函数式编程语言,所以写法上还是定义了一堆小函数,再加上递归把值给求了出来。Nicholas @ Nirvana Studiohttp://www.blogger.com/profile/12298331861298443536noreply@blogger.com0tag:blogger.com,1999:blog-8670715980967808484.post-33410492912960756652007-04-16T16:22:00.000+08:002007-04-16T16:27:01.712+08:00死去活来的 Blogger今天又看到自己的 Blogger 活过来了,真不知道其中又发生了多少事情。毕竟是国外的博客站点,应该没有考虑到所谓的“中国国情”,所以被无情的 GFW 常常关照。因为经常无法访问,最长的时候曾今有大半年之久,多次想过要换 Blog,但现在想想都坚持这么长时间了,索性继续下去,就 Blogger 不换了!<br /><br />;-DNicholas @ Nirvana Studiohttp://www.blogger.com/profile/12298331861298443536noreply@blogger.com5tag:blogger.com,1999:blog-8670715980967808484.post-79561608353509413382007-03-20T14:37:00.000+08:002007-03-20T14:53:23.061+08:00解决 Opera 下不能输入中文问题现在用 Ubuntu 6.10 发现了不少问题,以前 6.06 没有的问题也出现了,虽然解决了,但是也做个记录。<br /><br />这次是 Opera 不能输入中文的问题,经验丰富的<a href="http://fangdong.name">房东雨</a>同学说需要装一个 scim-bridge,于是我 sudo apt-get install scim-bridge,其实早就装了,但是 Opera 依然无法输入中文。<br /><br />查了一些资料,发现需要修改一个环境变量,是 QT_IM_MODULE=XIM,Opera 用的是 QT 的库而非 GTK。这个环境变量可以在 scim 的配置里面修改,位置在 /etc/X11/xinit/xinput.d/scim,看看就知道了。修改完后记得重启X,然后打开 Opera 就正常了。Nicholas @ Nirvana Studiohttp://www.blogger.com/profile/12298331861298443536noreply@blogger.com0tag:blogger.com,1999:blog-8670715980967808484.post-41682373494381201242007-03-19T10:34:00.000+08:002007-03-19T10:44:33.702+08:00牛博网牛博是老罗离开新东方之后办的一个博客站点,到现在已经大半年了,发展之快的确出乎人意料。虽然是博客站点,但是老罗还会挑选一些其他站点的文章引用过来,基本上在首页上的内容都还是不错的,个人认为要比Sina的小编素质高的多。<br /><br />牛播的基本论调嘛,听过老罗语录的人都会觉得很熟悉,相信这会成为一个新的主流。无论如何,都值得看一看。<br /><br />http://www.bullog.cnNicholas @ Nirvana Studiohttp://www.blogger.com/profile/12298331861298443536noreply@blogger.com0tag:blogger.com,1999:blog-8670715980967808484.post-58386971130410423082007-03-12T15:51:00.000+08:002007-03-12T15:53:58.437+08:00[转贴] 经典-4000元人民币月薪的人过的日子<span style="font-size:85%;"> </span><span style="font-size:85%;">我在苏州一家公司里当普通职员,4000元是我扣税扣保险后的全部工资奖金,全年大约5万年收入。</span> <p><span style="font-size:85%;"> 作为一个本科学历,几年前从上海复旦大学毕业后,我这个工龄的办公室职员来说,这个待遇很普通,也很普遍,工资高的人也有很多,但基本上是管理和高级技术人员,工资低的也有很多,大多是刚参加工作或学历不高的。我这个收入算是中间层的。</span></p> <p><span style="font-size:85%;"> 像我们这样在苏州谋生活的单身汉,饭一般是不做的,因为自己做饭跟吃快餐花费差不多,早餐我买一个面包和一瓶牛 奶,这需要3块钱,中午吃一荤一素,晚上吃两个素的盒饭,加上早餐钱全天15元差不多了,这样每月饭钱大约450,加上偶而跟同事朋友下馆子吃饭喝酒花的 钱,一年花在吃上的钱基本是6千元。</span></p> <p><span style="font-size:85%;"> 我在园区租了一套40平米的公寓住,高层带电梯那种,1200元的月租并不算贵,加上管理费和水电煤气及日常用品每月共1600元左右,一年下来要2万。</span></p> <p><span style="font-size:85%;"> 吃饭和住房是生活花费的大头,固定的开销还有交通和通讯费,交通费并不贵,每天公车来回,一个月也就1百多,固定电话和手机费各100元,这些全年加起来4千差不多了。</span></p> <p><span style="font-size:85%;"> 因为在写字楼上班,衣服是要求穿的正式些的,夏天常见的装束是衬衫领带配西裤皮鞋,上周末我到市区人民商场里逛了逛,发现一套便宜的夏装配下来要1500 (衬衫300,领带200,西裤400,内裤80,袜子20,皮鞋400,皮带100,都是本地品牌,进口品牌西裤就要1000一条),冬天加穿西装和羊毛衫一套3000。我每两年换4套夏装,3年换2套冬装,加上一些平时穿的休闲服装,一年总共6千元服装花费。</span></p> <p><span style="font-size:85%;"> 除去这些,每年还会有7千左右的其他开销,这包括平时买书、学习、上网的费用2千,每年回家过年的来回路费1 千,以及过年孝敬父母各2千。这些就是我正常生活的开销,就生活质量来说并不过分,稍微奢侈的消费一点都没有(如、打的、泡酒吧、唱KTV、旅游等),全 部加起来每年4万5,因此我可以余下5千元。但是要保证一年都不感冒发烧,不然上两回医院这点胜利果实就不保了。</span></p> <p><span style="font-size:85%;"> 我以5万的年薪,每年可以存款5千,很正常的活着,但工作几年后,我发现问题来了,原因是我突然发现自己快30 了,女朋友还没一个,父母开始催我赶紧结婚。是啊,男人三十而立,事业还没立起来可以慢慢来,家总还是要成的吧。于是我怀揣着6年的积蓄3万块,准备找对 象结婚。</span></p> <p><span style="font-size:85%;"> 在苏州的办工室女孩大多都很朴实,这可能是务实风气的影响,所谓女白领出入打的,衣服非世界名牌不穿,吃饭要去 法国餐厅,男朋友非洋人不谈的风气基本没有,要有也是个别人。但这并不等于她要倒贴你,虽然不要你养活,但也不能因为跟你结了婚还要倒贴2千块给你,曾经 某位网友说过,幸福稳定的婚姻,其经济基础是丈夫收入为妻子的1.8倍,靠,也不晓得他咋算出来的,但想想也是符合一定现状的。因此我要找一个跟我一年薪 5万的MM是不利于稳定的,其实即使我愿意人家也不会嫁给我,就算年纪快30了,长得对不起观众也不嫁我。而年薪3万以下的MM们,长相不错的要把相貌折 合成10万~100万年薪计算,所以更不会嫁我了,所以门当户对的对象是年薪3万,长得基本对得起大家的女孩。</span></p> <p><span style="font-size:85%;"> 经朋友介绍,我认识了女友小琼,经过一年的恋爱,我发现小琼真是个体贴的女孩,她从来不要求我买贵重的礼物给 她,下馆子也是去中式小馆子,出门不打的,衣服不买名牌,偶然看看电影,情人节送卡片就行了。她说两个人过日子,只要大家真心相爱就好,并不需要那么多的 虚荣。天啊,真是一个伟大的女孩,在这个物欲横流的社会,居然还有这么纯朴善良的女孩,我太幸福了。因为感情太好,忍不住上了床,又因为好的安全套要3、 4块钱一个,一个月套钱就要好几十,所以为省钱买了1块钱2个的次品安全套,在花掉1万元拍拖款后并且避孕失败后,我决定跟她结婚。于是我们准备买房,在 苏州安个家。现在园区内的房子均价已经过6000了,哪怕是不起眼的二手楼,大多也开出4、5千的价格,我们看种一套80平米的房子,这并不算奢侈,首期 和简单装修一共要30万。女友年薪才3万,跟同事合租的宿舍,当然不会有存款。所以除去我现有的2万元,我还要凑28万就可以付首期了,如果我每年存5 千,48年后我就可以按揭买套自己的房子住,但我们不可能48年后才结婚啊,所以我决定跟双方父母借。说是借,其实就是讨,因为借了也不可能还得起。我们 都是独生子女,双方父母都是疼子女的人,而且都还没在退休前被下岗,一辈子存了十几万,如果我们把这钱都要过来,应该可以凑够首期和装修钱。父母养老还有 一点退休金,只能让他们省着过了,平时让他们多锻炼身体,只要下半辈子不生病,应该可以过下去。</span></p> <p><span style="font-size:85%;"> 想好了买房的首期,我们开始考虑结婚的花费,客是要请的,婚纱照是要拍的,蜜月是要度的,可以从简但不能不搞, 不然就不叫结婚了,叫同居。于是我们决定用2万元请客,3千元拍婚纱,2千元到江苏省内旅游渡蜜月,够从简的了吧?这样需要2万5,我每年存5千,5年后 就可以摆酒办婚礼了。但是我们能等到5年后才办婚礼吗,这样不行吧,那时候孩子都4岁半了,他还要跟幼儿园老师请假说,老师今天我要参加我亲爹**婚礼。 所以我们决定跟同事先借3万,2万5结婚,5千块留着生小孩,这比钱分6年还清,我们可以把我现在每年孝敬父母的4千元钱和她孝敬父母的1千元钱拿来还 债,父母就不孝敬了!</span></p> <p> <span style="font-size:85%;">买房、结婚的钱我们想好了来源,就开始考虑已经怀上的孩子和以后的全家人的生活费用。因为房子贷款了50万,每 个月按揭3千多,加上物业管理费、水电、管道煤气、电话费等等杂费一年就是5万 5,一家三口伙食费及跟同事应酬的钱一年2万,交通费全家一年4千,服装费3人一年1万(不去商场买),小孩上幼儿园每年1万5,其他费用如回家看父母的 路费,买书上网的费用,日常生活的其他费用等等一年6千。其余所有需要花钱的娱乐一律不搞,够省的了吧,全部加起来每年将近10万。</span></p> <p><span style="font-size:85%;"> 也就是说,如果我买房结婚生小孩后,还是正常的过日子,我每年5万年薪,小琼3万年薪,每生活一年要负债2万 元,如果算上一家人看病、父母养老和预留小孩读大学的钱,一年负债5万元以上。如果不买房而租房住,每年可以节省2万,不养小孩可以节省2万5,不养父母 又可以节省5千,再加上一辈子不生病,这样我们两口人就可以维持现在的生活水平了。但这可能吗?小琼嫁给我,没自己的房子住,不能生养小孩,不能负担父 母,还不让生病,她还嫁给我干球?</span></p> <p><span style="font-size:85%;"> 于是我把仅有的2万元存款全部给了她,对她说,你去医院把孩子拿掉,我们分手吧,你以后找对象一定要找一个月薪1万以上的啊,我们是没有这个缘分了。</span></p> <p><span style="font-size:85%;"> 与小琼分手后,我消沉了很久,我并不需要过奢侈的生活,只是住自己的房子,养一个孩子,给父母养老,这很过分吗?数个月无法从痛苦和迷茫中缓解过来,直到有一天在天涯上看到另一个苏州网友的帖子"在苏州300元过有钱人的生活"后才恍然大悟,原来是自己不懂得生活。</span></p> <p><span style="font-size:85%;"> 于是我把现在租的公寓退了,找了另外7个志同道合的人,在公司附近的农民村(苏州原居民的村子习惯叫农民村,里 面的出租屋叫农民房,条件如何在苏州住过的人体会比较深)中租了房600元,共8个人睡,4张上下铺,水电杂费分摊,总共100元每月。因为住得近,走路 上班不用交通费,每2个周末坐公车出一趟门,一月10块够了。</span></p> <p><span style="font-size:85%;"> 早餐也不吃面包牛奶了,改吃2个5毛钱的包子喝白开水,另外农民村里面非常多小饭店,其中有一种就是像食堂一样 摆几大盆菜在门口给你选,一份菜1块或2块钱,饭和汤1块钱任吃。中饭和晚饭我们8个人每人凑2块钱,要几个菜,然后花4块钱买4个饭盒的饭,饭压实装 满,够8个人吃。虽然那些菜用的油味道有点怪,但吃不死就行了,关键是每天只要5块钱伙食费,每月共150元。衣服也找到好地方买,火车站钱万里桥小商品 市场某个角落里有6 元衬衫,8元西裤,领带5块,内裤袜子各3块,皮鞋15一双,西装20元一套。但就是质量太那个,洗过水就有点歪。衣袖对不直。这样每月服装费40元差不 多了,还经常可以穿新的。</span></p> <p><span style="font-size:85%;"> 娱乐方面也有招,村里有不少路边书摊,10元一本,很多人会去买,我到书摊上看书,但不买,看个把小时回家,明 天接着看,个把星期就能看完一本。发工资的时候,就去网吧上网,2块钱1小时,上网看帖子。当然也有比较刺激的娱乐活动,农民房建得很密,经常是你家洗手 间直接对着他家客厅,天黑的时候,把自己房里灯一关,如果对面租房的是女的你就发(发达的缩写,好运的意思)了。所以精神生活就开销是每月20元上网费。</span></p> <p><span style="font-size:85%;"> 通讯的钱更好省,固定电话不装,用公司的,手机用动感地带10元包月,来电显示也不开通,因为没用,我不接也不打电话,只发短信。</span></p> <p><span style="font-size:85%;"> 医疗方面主要靠平时锻炼,不生病就不用花钱,万一生病了就扛着,反正年轻扛得住。</span></p> <p><span style="font-size:85%;"> 其他费用如卫生纸啊,肥皂啊什么的还是要用的,没女友安全套也不用了,自己动手就可以了。这样每月杂费只要花个20块钱。</span></p> <p><span style="font-size:85%;"> 如此一计算,100房钱+10元交通+150伙食+40服装+20娱乐+10通讯+20其他=350元,一年才 用4200。本人一个月的工资就差不多够一年生活了,真TM爽啊,太幸福了。难怪GDP年年百分之十几的增长工资水平却往下跌,原来是工作一个月可以养活 自己一年,剩下的十一个月没有生活压力就很难积极工作了。</span></p> <p><span style="font-size:85%;"> 所以说,要老婆干嘛?要小孩干嘛?要爹妈干嘛?只要转变观念,像我现在这样,不养父母,不讨老婆,不生小孩,不供楼,不坐车,不生病,不娱乐,不穿商场里卖的衣服,不吃正规快餐店里的盒饭就可以找到幸福生活的真谛!</span></p>Nicholas @ Nirvana Studiohttp://www.blogger.com/profile/12298331861298443536noreply@blogger.com1tag:blogger.com,1999:blog-8670715980967808484.post-47069169637540160072007-03-09T13:25:00.000+08:002007-03-09T13:27:44.759+08:00蟑螂为什么又叫小强?◆连陨石连击(大灭绝)都不能歼灭 ...............................强 <br /><br />◆蟑螂有3700多种...杂食?不...只要是有机物几乎都吃 ............强 <br /><br />◆蟑螂可在真空下(非绝对真空,如宇宙)可以存活至少10分钟 ........ 强 <br /><br />◆蟑螂可以活在由40kW提供来源(rotating anode source)的X-ray下. 人类则以秒计 ......................强 <br /><br />(P.S.蟑螂会死在由同步加速器提供10keV的X-ray下,"就是这个光"强度是上者的1000 倍) <br /><br />◆可以在12莫耳的HCL和18莫耳(有多浓@_@?)的NaOH活上30秒 ........强 <br /><br />◆水中至少可以活上10分钟.....................................强 <br /><br />◆在100度的炉子内可以活很久 .................................强 <br /><br />◆要用传统兵器打死蟑螂...也就是拖鞋...要29.4N ................强 <br /><br />◆蟑螂的头断了仍然可以活上好几天...直到饿死 ..................强<br /><br />转自:http://zhidao.baidu.com/question/287186.htmlNicholas @ Nirvana Studiohttp://www.blogger.com/profile/12298331861298443536noreply@blogger.com0tag:blogger.com,1999:blog-8670715980967808484.post-52608205278355323922007-03-01T17:55:00.000+08:002007-03-01T18:01:37.839+08:00创建本地 DNS 缓存提高浏览器访问速度之前用 bind9 做过 DNS Cache Server,但是不知为何每次重启系统之后缓存数据就都丢了,无奈之下找到了 dnsmasq 这个工具,真是非常不错。<br /><br />确保没有安装 bind9,使用下面方式安装 dnsmasq:<br /><br />sudo apt-get install dnsmasq<br />sudo vi /etc/dnsmasq.conf<br /><br />增加一条配置信息 listen-address=127.0.0.1,如果已经存在此信息,请取消注释。<br /><br />sudo vi /etc/dhcp3/dhclient.conf<br />把 prepend domain-name-servers 127.0.0.1; 的注释去掉,这样能够保证 127.0.0.1 这个地址会永远出现在 /etc/resolv.conf 中 DNS 服务器的第一个。<br /><br />重启一下吧,或者手工修改 resolv.conf 并且启动 /etc/init.d/dnsmasq restart 让配置生效。<br /><br />最后可以用 dig sina.com.cn 测试一下你的 DNS,做好 DNS 缓存可以让浏览速度提升不少。Nicholas @ Nirvana Studiohttp://www.blogger.com/profile/12298331861298443536noreply@blogger.com0tag:blogger.com,1999:blog-8670715980967808484.post-84872009076075306482007-02-12T16:38:00.000+08:002007-02-12T10:48:34.429+08:00Django 学习笔记 - RequestContextContext 常被翻译为“上下文”,可以在很多程序设计中见到他的身影。<br /><br />不仅仅是 Django Template,几乎所有 Template Engine 的设计都是传递一个 Context 给 Template 进行渲染。这个 Context 就够成了模板所需的变量表。<br /><br />Django Template 的特点就是简单,默认情况下调用 render_to_response 函数传递的第二个参数是一个简单 map 对象,会被包装成 django.template.Context 传递给模板使用。<br /><br />其实很多场合我们需要默认在 Context 里面加入一些常用的东西,譬如把 request 对象传入 Context,把权限模型放入 Context 以便调用。为了避免每次硬编码,Django 提供了一个 Context 的子类,django.template.RequestContext。<br /><br />在 settings 里面有一个名为 TEMPLATE_CONTEXT_PROCESSORS 的设置于 RequestContext 密切相关。默认的配置为:<br /><br /><span style="font-size:85%;">("django.core.context_processors.auth",<br />"django.core.context_processors.debug",<br />"django.core.context_processors.i18n")</span><br /><br />这些 Processors 都会被 RequestContext 顺序调用,往当前 Context 中放入一些预定义变量。譬如 auth 就会放置 user 这个变量,就是当前登录的用户对象。<br /><br />RequestContext 作为 render_to_response 的第三个参数传递,必须将 request 作为参数传递给它,如下:<br /><span style="font-size:85%;"><br />def some_view(request):<br /> # ...<br /> return render_to_response('my_template.html',<br /> my_data_dictionary,<br /> context_instance=RequestContext(request))<br /></span><br />更多的信息请参考 Django 官方文档:<br /><a href="http://www.djangoproject.com/documentation/settings/#template-context-processors">http://www.djangoproject.com/documentation/settings/#template-context-processors</a>Nicholas @ Nirvana Studiohttp://www.blogger.com/profile/12298331861298443536noreply@blogger.com0tag:blogger.com,1999:blog-8670715980967808484.post-4500041343558263172007-02-09T11:20:00.000+08:002007-02-09T11:19:43.150+08:00Django 学习笔记 -MiddlewareDjango 的确可以做类似 Spring framework 里面 Interceptor 的操作,这在 Web 开发中相当不错。不过在 Django 里面这个不叫做 Interceptor 或者 Filter,他叫做 Middleware。<br /><br />Middleware,多么庞大的概念,Java 开发着对这个此一定不陌生......,不过在 Django 的世界里,他就是 Interceptor,很简单。<br /><br />Django 提供了很多默认的 Middleware 来作一些例如 URL 处理,Session 控制,和一些更基础的工作。Middleware 同时也构成了 Django 一个独特的插件机制。<br /><br />Middleware 并不复杂,他主要就是可以让你在 HTTP 请求过来之<br />前和之后作一些处理。要实现 Middleware 并不需要继承任何类,脚本语言嘛,我们有 Duck Typing。<br /><br />Middleware 里面有以下4个函数可用:<br /><ol><li>process_request(self, request)</li><li>process_view(self, request, view_func, view_args, view_kwargs)</li><li>process_response(self, request, response)</li><li>process_exception(self, request, exception)</li></ol>看看函数名想必就知道做什么的了吧,写好 Middleware 之后随便放到哪里,只要在 settings.py 里面写上路径可以让 Python 找到就行了。<br /><br />Middleware 的一些不足:<br /><ul><li>全局应用,不能够针对某种 url pattern 应用自己的 middleware,不过可以自行扩展</li><li>没有类似 Java Servlet 中 Filter Chain 的管理,完全是顺序应用 middleware,所以顺序很重要,因为有依赖。<br /></li></ul><br />Middleware 官方文档:<br />http://www.djangoproject.com/documentation/middleware/Nicholas @ Nirvana Studiohttp://www.blogger.com/profile/12298331861298443536noreply@blogger.com0tag:blogger.com,1999:blog-8670715980967808484.post-35574391006843891482007-01-30T16:54:00.000+08:002007-01-30T17:11:52.546+08:00重返 Blogger这一个多月过得真是不容易,遭遇天灾,光缆断了,几乎没法写 Blogger 了,总算,现在应该恢复了 70% 了吧,好事情。<br /><br />用 Django 做了一些东西,顺便学习了一下 Django,很有意思的一个框架。以前没有正经用 Python 做过东西,现在做下来感触还是很多的。先说说 Python 吧,个人观点。<br /><br />随着 RoR 的兴起,动态语言的地位一下子上来了,越来越多的人学习脚本语言,不过似乎有一个问题。Python 很容易上手,的确不错,Python 依靠缩进来提高代码的可读性。不过也有一个似乎是脚本语言共有的问题,就算依靠缩进来提高代码的可读性,新手与老手写出来的代码也都可能是完全不同。很多 Java 的同行去尝试 RoR 了,很不错,很多新人也去玩,但是同样的东西写出来的代码质量可以相差很多。前些日子和 Martin 一起写过一些代码,pair 了一把,发现自己的水平比起来太差了,毕竟在 Python 上我算是个新手吧。<br /><br />玩了玩 Django 和 TurboGears 两个 Python Web 框架,最后还是选择了 Django,有人说用 Django 的都是懒人,我承认我还是喜欢懒一点。TurboGears 整合了一群框架,可以自由替换前端和后端,没发觉有多少好玩的地方。我大致看了一遍 Django 的代码,觉得玩 Django 更有意思一点,扩展 Django 没多少难度,下阶段闲一点的时候我要整合一个新的模板引擎替换 Django Template。<br /><br />可能最近一段时间都会用 Python 来做东西,就趁这个机会再细细研究一下这个语言本身了。Nicholas @ Nirvana Studiohttp://www.blogger.com/profile/12298331861298443536noreply@blogger.com3tag:blogger.com,1999:blog-8670715980967808484.post-38212859424446680182007-01-01T00:38:00.000+08:002007-01-01T00:54:20.798+08:00Ubuntu 下 resolv.conf 被替换的问题用 Ubuntu 一段时间了,自从晚上使用无线网络之后就发现一个很恶心的问题,因为通过DHCP获取IP,所以经常重写我的resolv.conf,由于我自己配有bind9用作本地DNS缓存,所以经常要修改resolv.conf为我本地设置。Google 了一番,总算找到了解决方法,修改/etc/dhcp3/dhclient.conf,使用下面的语句为每次生产的resolv.conf准备默认的几台DNS地址:<br /><br />prepend domain-name-servers 127.0.0.1;Nicholas @ Nirvana Studiohttp://www.blogger.com/profile/12298331861298443536noreply@blogger.com1tag:blogger.com,1999:blog-8670715980967808484.post-12131768776763522402006-12-26T10:03:00.000+08:002006-12-26T10:29:29.108+08:00Django 学习笔记 - Apache2 + FastCGI昨天开始学习Django站点的生产服务器(Production Server),尝试了一下lighttpd和Apache2,最后决定采用Apache2来搭建整个环境(其实lighttpd更为方便一些)。<br /><br />虽然Apache2 + mod_python就可以跑Django站点服务,但是听说FastCGI有更优异的性能。<br /><blockquote> 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).</blockquote>需要让Apache2支持FastCGI,就必须下载mod_fastcgi这个Apache模块。可以从http://www.fastcgi.com/站点下载,不过非Windows用户需要自行编译这个模块,其实也挺方便的。下面是我在 Ubuntu 下安装的例子:<br /><br /><span style="color: rgb(255, 0, 0);">apt-get install apache2-dev</span> # 会安装Apache2开发相关的库<br /><span style="color: rgb(255, 0, 0);">cd $mod_fastcgi_dir</span><br /><span style="color: rgb(255, 0, 0);">apxs2 -o mod_fastcgi.so -c *.c</span> # 编译<br /><span style="color: rgb(255, 0, 0);">sudo apxs2 -i -a -n fastcgi mod_fastcgi.so</span> # 安装到Apache2/modules里面去,同时会到apache配置里面加上一条加载语句<br /><br />mod_fastcgi.so就这样完成了,下面需要配置你的Django站点。首先去下载 <a href="http://www.saddi.com/software/flup/">flup</a>,然后写一个mysite.fcgi,这个在Django的站点上有介绍,里面需要指定Django应用的绝对路径。<br /><pre class="literal-block">#!/bin/bash<br /><br /># Replace these three settings.<br />PROJDIR="<span style="color: rgb(255, 0, 0);">/home/user/myproject</span>"<br />PIDFILE="$PROJDIR/mysite.pid"<br />SOCKET="$PROJDIR/mysite.sock"<br /><br />cd $PROJDIR<br />if [ -f $PIDFILE ]; then<br />kill `cat -- $PIDFILE`<br />rm -f -- $PIDFILE<br />fi<br /><br />exec /usr/bin/env - \<br />PYTHONPATH="../python:.." \<br />./manage.py runfcgi socket=$SOCKET pidfile=$PIDFILE</pre><blockquote></blockquote>这个文件搁在你的Django应用的根目录里面,改成可执行属性。然后你每次只需要执行这个文件就可以将Django以FastCGI方式启动出来了,启动后你是不能够直接访问的,因为不是走的Web方式。<br /><br />下面我们看一下Apache相关的配置:<br /><pre class="literal-block"># Connect to FastCGI via a socket / named pipe.<br />FastCGIExternalServer <span style="color: rgb(255, 0, 0);">/home/user/public_html/</span>mysite.fcgi -socket <span style="color: rgb(255, 0, 0);">/home/user/</span>mysite.sock<br /><br /><VirtualHost 12.34.56.78><br />ServerName example.com<br />DocumentRoot <span style="color: rgb(255, 0, 0);">/home/user/public_html</span><br /><strike>Alias /media /home/user/python/django/contrib/admin/media</strike><br />RewriteEngine On<br />RewriteRule ^/(media.*)$ <span style="color: rgb(255, 0, 0);">/home/user/public_html/</span><span style="color: rgb(255, 0, 0);">$1</span> [QSA,L]<br />RewriteCond %{REQUEST_FILENAME} !-f<br />RewriteRule ^/(.*)$ /mysite.fcgi/$1 [QSA,L]<br /></virtualhost><br /></pre>$1处我遇到了一个奇怪的问题,因为用的是 Ubuntu,没在其他平台试过,/$1会指向硬盘的/media物理路径,很奇怪,所以需要修改这个路径为Django的站点目录,即将DocumentRoot的地址再写一遍。<br /><br />这样一来,整个Apache2+FastCGI就完成了,的确比较费力气。Nicholas @ Nirvana Studiohttp://www.blogger.com/profile/12298331861298443536noreply@blogger.com0tag:blogger.com,1999:blog-8670715980967808484.post-35588509583475285332006-12-21T16:09:00.000+08:002006-12-21T16:39:11.630+08:00Django 学习笔记 - i18n 支持最近再用 Django 做东西,顺便写点笔记做下记录。<br /><br />今天折腾这个 Django 的 i18n 支持着实费了点功夫,主要是一开始没理解 Python 做 i18n 的原理导致。废话不多说了,使用 Django 的 i18n 支持还是相当的方便的。Django 的官方文档上讲的很详细了,但是篇幅过长,我也是硬着头皮看了几遍才搞明白,下面我就简单介绍一下最快捷的方法。<br /><br />首先,从配置入手,settings.py 里面有一个 LANGUAGE_CODE属性,这里设置了网站默认的语言。由于settings.py里面的属性支持重写,所以从官方文档上可以得知,默认情况下已经启用i18n支持了,我们需要加入一些middleware来支持动态切换语言。<br /><pre class="literal-block">MIDDLEWARE_CLASSES = (<br /> 'django.contrib.sessions.middleware.SessionMiddleware',<br /> '<span style="color: rgb(255, 0, 0);">django.middleware.locale.LocaleMiddleware</span>',<br /> 'django.middleware.common.CommonMiddleware',<br />)</pre>注意顺序,LocaleMiddleware必须在SessionMiddleware下面,因为需要从Session里面获取一个语言类型,这些Django都有现成的了,很方便。<br /><br />在urls.py里面配置一个i18n的辅助应用<br /><pre class="literal-block">(r'^i18n/', include('django.conf.urls.i18n')),<br /></pre>有了这个就可以自由的切换语言了,使用/i18n/setlang/?language=en这样的形式。<br /><br />配置完成之后在项目目录底下建立一个locale目录,locale下子目录的样式有固定格式,如:<br />locale/<language><language>/LC_MESSAGES/<br />如果是中文,对应的目录就是<br />locale/zh_CN/LC_MESSAGES/<br />如果是英文,则应该是<br />locale/en/LC_MESSAGES/<br />以此类推。<br /><br />为了在django里面使用i18n,po文件名必须为djang.po,编译过后必须为django.mo,那么翻译的内容就固定在po文件里了。一个典型的po文件类似一下样式:<br /><br /><span style="font-size:85%;"># SOME DESCRIPTIVE TITLE.<br /># Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER<br /># This file is distributed under the same license as the PACKAGE package.<br /># FIRST AUTHOR <email@address>, YEAR.<br />#<br />#, fuzzy<br />msgid ""<br />msgstr ""<br />"Project-Id-Version: PACKAGE VERSION\n"<br />"Report-Msgid-Bugs-To: \n"<br />"POT-Creation-Date: 2006-12-21 14:00+0800\n"<br />"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"<br />"Last-Translator: FULL NAME <email@address>\n"<br />"Language-Team: LANGUAGE <ll@li.org>\n"<br />"MIME-Version: 1.0\n"<br />"Content-Type: text/plain; charset=UTF-8\n"<br />"Content-Transfer-Encoding: 8bit\n"<br /><br />msgid "Home"<br />msgstr "Home"<br /><br />msgid "News"<br />msgstr "News"<br /></ll@li.org></email@address></email@address></span><br />格式相对比较简单,也是键值对的形式。如果是多行的话,需要使用msgstr ""的形式,首行不写东西,在后续的几行写文本,翻译出来的结果会由程序自动把文字组合到一起。<br /><br />编写完的po文件需要编辑成二进制的mo文件才可以被django使用,django使用了gettext来实现翻译,所以mo格式也是gettext要求的。<br /><br />在linux下使用msgfmt -o django.mo django.po即可完成转换过程,相当方便,windows下需要下载poEdit这个软件。<br /><br />翻译工作都准备就绪了,接下来就是体现到模板上去了,首先加载i18n,在模板文件的头部加入{% load i18n %},下来对于需要i18n支持的字段使用{% trans 'Key' %},这里的Key就是msgid,很简单吧。<br /><br />这里仅仅介绍了Django i18n的一个快速上手配置,更详细的内容请参考<br />http://www.djangoproject.com/documentation/i18n/<br /></language>Nicholas @ Nirvana Studiohttp://www.blogger.com/profile/12298331861298443536noreply@blogger.com130tag:blogger.com,1999:blog-8670715980967808484.post-36372444531519830982006-12-20T09:13:00.000+08:002006-12-20T09:20:50.285+08:00回到 Ubuntu 的世界总算下决心把笔记本上的 FreeBSD 删了,我的确没这个耐心去打各种各样的补丁来支持我的硬件了。Ubuntu 对桌面的支持已经非常强大了,安装很顺利,我的所有硬件都认出来了,包括无线网卡和声卡,这是一件很愉快的事情。Linux 有着强大的用户群和开发群,这点和 FreeBSD 的应用哲学还有点不同,我们房东雨同学说 FreeBSD 是“爱用不用”,呵呵,桌面环境是有点难用了。<br /><br />看到众多老大们在玩 Beryl,的确够玄,于是立即将机器的 Ubuntu Dapper 升级到了 Ubuntu Edgy,可以不用重新安装就升级,输入命令 gksudo "update-manager -c -d",会显示一个升级选项,要下载645M数据,升级过程大概2小时左右,还不错。<br /><br />升完级就装 Beryl 吧,就可以玩到很酷的 3D 桌面了,一点都不逊于 Vista 哦。Nicholas @ Nirvana Studiohttp://www.blogger.com/profile/12298331861298443536noreply@blogger.com0tag:blogger.com,1999:blog-8670715980967808484.post-33622705946069673732006-10-31T10:51:00.000+08:002006-10-31T10:57:05.983+08:00Nirvana Studio 有了自己的 Logo<a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/blogger2/3556/1058437009395484/1600/NirvanaStudio_logo_02.png"><img style="cursor: pointer;" src="http://photos1.blogger.com/blogger2/3556/1058437009395484/400/NirvanaStudio_logo_02.png" alt="" border="0" /></a><br />Nirvana Studio 总算有了自己的 Logo,非常感谢 Tin 同学!Nicholas @ Nirvana Studiohttp://www.blogger.com/profile/12298331861298443536noreply@blogger.com0tag:blogger.com,1999:blog-8670715980967808484.post-10414655096652955752006-10-28T01:31:00.000+08:002006-10-28T01:37:39.755+08:00与 James Gosling 的合影<a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://image2.sina.com.cn/IT/it/2006-09-29/U853P2T1D1166960F1516DT20060929174230.jpg"><img style="cursor: pointer; width: 400px;" src="http://image2.sina.com.cn/IT/it/2006-09-29/U853P2T1D1166960F1516DT20060929174230.jpg" alt="" border="0" /></a><br /><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://album.sina.com.cn/pic/4ac91b3102000ca6"><img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 400px;" src="http://album.sina.com.cn/pic/4ac91b3102000ca6" alt="" border="0" /></a><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br />比较遗憾的就是和 James Gosling 单独合影的照片一直都没有拿到!Nicholas @ Nirvana Studiohttp://www.blogger.com/profile/12298331861298443536noreply@blogger.com0tag:blogger.com,1999:blog-8670715980967808484.post-35729603194297218712006-10-26T09:36:00.000+08:002006-10-27T22:50:45.315+08:00常州发展史4500万年前,人类祖先脊椎动物“中华曙猿”生活于溧阳上黄一带,比北非的“人类祖先”早800——1000万年。<br /><br />6000余年前,原始居民聚居于戚墅堰圩墩村一带。<br /><br />周灵王二十五年(公元前547年),吴王馀祭封季札于延陵,此为常州文字记载第一名称。<br /><br />西汉高祖五年(公元前202年)改称毗陵。<br /><br />三国时吴大帝嘉禾三后(公元234年)实行屯田,辖毗陵、武进(今丹徒)、云阳(今丹阳)3县农事。<br /><br />西晋武帝太康二年(公元281年),废屯田典农校尉,改置毗陵郡,辖丹徒、曲阿、武进、延陵、毗陵、暨阳、无锡7县。自此至清代,常州均为郡、州、路、府所在地。<br /><br />晋惠帝永兴元年(公元304年),因避东海王世子毗名讳,改称晋陵郡。<br /><br />晋大兴元年(公元318年)侨置兰陵郡。<br /><br />隋文帝开皇九年(公元589年),废晋陵郡,置常州,辖晋陵、无锡、义兴、江阴4县。<br /><br />唐会昌四年(公元844年),升常州为望,列全国十望之一,辖5县同上(含武进县)。<br /><br />昭宗景福元年(公元892年),建吴国,常州属吴,史称“三吴重镇”。<br /><br />元世祖至元十四年(公元1277年),改置常州路,辖晋陵、武进2县和宜兴、无锡2州。<br /><br />元惠宗至正十七年(公元1357年),改常州路为长春府,辖武进、无锡、宜兴、江阴4县。<br /><br />明永乐七年(公元1409年),改长春府为常州府,辖县增靖江,计5县。<br /><br />清雍正四年(公元1726年),常州府辖武进、阳湖、无锡、金匮、宜兴、荆溪、江阴、靖江8县,史称“八邑名都”。<br /><br />1912年辛亥革命后废常州府,阳湖县并入武进县,城区一度称武进市,沿称常州,属江苏省。<br /><br />1949年4月23日常州解放后,城乡分别设常州市和武进县,隶属于苏南行政区常州专区。<br /><br />1953年,常州市升为省辖市。<br /><br />1958年,镇江专区迁来常州,改称常州专区,辖常州、镇江2市和武进、金坛、溧阳、丹阳、扬中、句容、宜兴、溧水、高淳9县,隶属江苏省。<br /><br />1983年1月,国务院批准江苏省实行市管县体制,3月起辖武进、金坛、溧阳3县。<br /><br />2002年4月,国务院批准常州市建特大城市,撤县级武进市,设武进区,郊区更名为新北区;常州市辖金坛、溧阳二市和武进、新北、天宁、钟楼、戚墅堰五区。Nicholas @ Nirvana Studiohttp://www.blogger.com/profile/12298331861298443536noreply@blogger.com0tag:blogger.com,1999:blog-8670715980967808484.post-75188323985865043792006-10-25T15:45:00.000+08:002006-10-25T16:02:05.831+08:00尝试写一个类似 RoR 的快速开发框架(4)这几天又继续完善这个框架,URL的分发采用FilterDispacther,处理Script使用RhinoServlet。框架使用了Phobos的类库,因为RhinoScriptEngine一类的东西Phobos都写得很不错,那来直接用就可以,没必要自己重新发明轮子了。<br /><br />Phobos里面ScriptEnginePool被我扩展了,主要是用于在启动每个ScriptEngine的时候默认加载一个启动脚本,这个脚本只会在ScriptEngine初始化的时候执行一次,然后进入ENGINE_SCOPE里面。之后就可以使用这里面定义的一些公共函数了。<br /><br />URL之后的Scripts处理就基本学习RoR的Convention了,layout和helpers的处理流程也基本好了,接下来就是要开始写一些helpers,重点可以转移到JavaScript编程上了。Nicholas @ Nirvana Studiohttp://www.blogger.com/profile/12298331861298443536noreply@blogger.com4