tag:blogger.com,1999:blog-388223922008-08-20T13:58:05.514+10:00螺旋进化『原作体』Liang Zhao@Bloggerhttp://www.blogger.com/profile/01431844262421179754noreply@blogger.comBlogger267125tag:blogger.com,1999:blog-38822392.post-3031412292360263662008-08-20T00:25:00.001+10:002008-08-20T00:25:38.142+10:00Wicket 下实现 Checkin 和 Checkout 日期的连动<p>Shrimpy 的推荐果然不虚, Wicket 确实是一个实现 Presentation Layer 的好框架。靠着 Wicket,整个 HTML 的静态代码和 Java 的动态代码可以完全分割开来。静态代码用 HTML 文件保存,动态代码使用 Java 格式, Wicket 自身便做将 HTML 和 Java 在后台绑定的工作——整个思路有点像 ASP.net,一个 C# 文件对应一个页面——关键是, Wicket 还能实现 AJAX 功能。相当地帅。</p><p>用着顺手,便在最近的项目中向老板推荐了 Wicket。于是,一个带薪尝试 Wicket 的机会便产生了……</p><p>不过,作为一个新的框架,相关资料实在是太少了……整个项目过程,一半靠 <a href="http://www.wicket-library.com/wicket-examples/">Wicket Example</a>,一半靠 Google。</p><p>这个 Checkin 和 Checkout 日期连动的代码,就是靠着瞎蒙鼓捣出来的。很多网站的搜索都需要实现当前日期,起始日期和结束日期的连动,以保证当前日期>起始日期>结束日期。放出代码来供大家参考,如果有其他好思路,也请不吝赐教。</p><p>HTML 部分代码</p><blockquote><pre><div><!-- Code highlighting produced by Actipro CodeHighlighter (freeware) http://www.CodeHighlighter.com/ --><span style="color: #0000FF;">&lt;?</span><span style="color: #FF00FF;">xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;</span><span style="color: #0000FF;">?&gt;</span><span style="color: #000000;"> </span><span style="color: #0000FF;">&lt;</span><span style="color: #800000;">html </span><span style="color: #FF0000;">xmlns</span><span style="color: #0000FF;">=&quot;http://www.w3.org/1999/xhtml&quot;</span><span style="color: #FF0000;"> xmlns:wicket</span><span style="color: #0000FF;">=&quot;http://wicket.sourceforge.net/&quot;</span><span style="color: #0000FF;">&gt;</span><span style="color: #000000;"> </span><span style="color: #0000FF;">&lt;</span><span style="color: #800000;">head</span><span style="color: #0000FF;">&gt;</span><span style="color: #000000;"> </span><span style="color: #0000FF;">&lt;</span><span style="color: #800000;">title</span><span style="color: #0000FF;">&gt;</span><span style="color: #000000;">Related Date Pickers</span><span style="color: #0000FF;">&lt;/</span><span style="color: #800000;">title</span><span style="color: #0000FF;">&gt;</span><span style="color: #000000;"> </span><span style="color: #0000FF;">&lt;/</span><span style="color: #800000;">head</span><span style="color: #0000FF;">&gt;</span><span style="color: #000000;"> </span><span style="color: #0000FF;">&lt;</span><span style="color: #800000;">body</span><span style="color: #0000FF;">&gt;</span><span style="color: #000000;"> </span><span style="color: #0000FF;">&lt;</span><span style="color: #800000;">center</span><span style="color: #0000FF;">&gt;&lt;</span><span style="color: #800000;">h1</span><span style="color: #0000FF;">&gt;&lt;</span><span style="color: #800000;">span </span><span style="color: #FF0000;">wicket:id</span><span style="color: #0000FF;">=&quot;message&quot;</span><span style="color: #0000FF;">&gt;</span><span style="color: #000000;">message will be here</span><span style="color: #0000FF;">&lt;/</span><span style="color: #800000;">span</span><span style="color: #0000FF;">&gt;&lt;/</span><span style="color: #800000;">h1</span><span style="color: #0000FF;">&gt;&lt;/</span><span style="color: #800000;">center</span><span style="color: #0000FF;">&gt;</span><span style="color: #000000;"> </span><span style="color: #0000FF;">&lt;</span><span style="color: #800000;">br</span><span style="color: #0000FF;">/&gt;&lt;</span><span style="color: #800000;">br</span><span style="color: #0000FF;">/&gt;</span><span style="color: #000000;"> </span><span style="color: #0000FF;">&lt;</span><span style="color: #800000;">form </span><span style="color: #FF0000;">wicket:id</span><span style="color: #0000FF;">=&quot;dateForm&quot;</span><span style="color: #0000FF;">&gt;</span><span style="color: #000000;"> </span><span style="color: #0000FF;">&lt;</span><span style="color: #800000;">table </span><span style="color: #FF0000;">align</span><span style="color: #0000FF;">=&quot;center&quot;</span><span style="color: #FF0000;"> id</span><span style="color: #0000FF;">=&quot;dateForm&quot;</span><span style="color: #0000FF;">&gt;</span><span style="color: #000000;"> </span><span style="color: #0000FF;">&lt;</span><span style="color: #800000;">tr</span><span style="color: #0000FF;">&gt;&lt;</span><span style="color: #800000;">td</span><span style="color: #0000FF;">&gt;&lt;</span><span style="color: #800000;">input </span><span style="color: #FF0000;">type</span><span style="color: #0000FF;">=&quot;text&quot;</span><span style="color: #FF0000;"> readonly</span><span style="color: #0000FF;">=&quot;readonly&quot;</span><span style="color: #FF0000;"> wicket:id</span><span style="color: #0000FF;">=&quot;checkInDate&quot;</span><span style="color: #FF0000;"> </span><span style="color: #0000FF;">/&gt;&lt;/</span><span style="color: #800000;">td</span><span style="color: #0000FF;">&gt;&lt;/</span><span style="color: #800000;">tr</span><span style="color: #0000FF;">&gt;</span><span style="color: #000000;"> </span><span style="color: #0000FF;">&lt;</span><span style="color: #800000;">tr</span><span style="color: #0000FF;">&gt;&lt;</span><span style="color: #800000;">td</span><span style="color: #0000FF;">&gt;&lt;</span><span style="color: #800000;">input </span><span style="color: #FF0000;">type</span><span style="color: #0000FF;">=&quot;text&quot;</span><span style="color: #FF0000;"> readonly</span><span style="color: #0000FF;">=&quot;readonly&quot;</span><span style="color: #FF0000;"> wicket:id</span><span style="color: #0000FF;">=&quot;checkOutDate&quot;</span><span style="color: #FF0000;"> </span><span style="color: #0000FF;">/&gt;&lt;/</span><span style="color: #800000;">td</span><span style="color: #0000FF;">&gt;&lt;/</span><span style="color: #800000;">tr</span><span style="color: #0000FF;">&gt;</span><span style="color: #000000;"> </span><span style="color: #0000FF;">&lt;</span><span style="color: #800000;">tr</span><span style="color: #0000FF;">&gt;&lt;/</span><span style="color: #800000;">tr</span><span style="color: #0000FF;">&gt;</span><span style="color: #000000;"> </span><span style="color: #0000FF;">&lt;</span><span style="color: #800000;">tr</span><span style="color: #0000FF;">&gt;&lt;</span><span style="color: #800000;">td </span><span style="color: #FF0000;">align</span><span style="color: #0000FF;">=&quot;center&quot;</span><span style="color: #0000FF;">&gt;&lt;</span><span style="color: #800000;">input </span><span style="color: #FF0000;">type</span><span style="color: #0000FF;">=&quot;submit&quot;</span><span style="color: #FF0000;"> value</span><span style="color: #0000FF;">=&quot;Submit&quot;</span><span style="color: #FF0000;"> </span><span style="color: #0000FF;">/&gt;&lt;/</span><span style="color: #800000;">td</span><span style="color: #0000FF;">&gt;&lt;/</span><span style="color: #800000;">tr</span><span style="color: #0000FF;">&gt;</span><span style="color: #000000;"> </span><span style="color: #0000FF;">&lt;/</span><span style="color: #800000;">table</span><span style="color: #0000FF;">&gt;</span><span style="color: #000000;"> </span><span style="color: #0000FF;">&lt;/</span><span style="color: #800000;">form</span><span style="color: #0000FF;">&gt;</span><span style="color: #000000;"> </span><span style="color: #0000FF;">&lt;</span><span style="color: #800000;">div </span><span style="color: #FF0000;">align</span><span style="color: #0000FF;">=&quot;center&quot;</span><span style="color: #FF0000;"> id</span><span style="color: #0000FF;">=&quot;feedbackPanel&quot;</span><span style="color: #0000FF;">&gt;</span><span style="color: #000000;"> </span><span style="color: #0000FF;">&lt;</span><span style="color: #800000;">span </span><span style="color: #FF0000;">wicket:id</span><span style="color: #0000FF;">=&quot;feedback&quot;</span><span style="color: #0000FF;">/&gt;</span><span style="color: #000000;"> </span><span style="color: #0000FF;">&lt;/</span><span style="color: #800000;">div</span><span style="color: #0000FF;">&gt;</span><span style="color: #000000;"> </span><span style="color: #0000FF;">&lt;/</span><span style="color: #800000;">body</span><span style="color: #0000FF;">&gt;</span><span style="color: #000000;"> </span><span style="color: #0000FF;">&lt;/</span><span style="color: #800000;">html</span><span style="color: #0000FF;">&gt;</span></div></pre></blockquote><p>Java 部分代码</p><blockquote><pre><div><!-- Code highlighting produced by Actipro CodeHighlighter (freeware) http://www.CodeHighlighter.com/ --><span style="color: #0000FF;">package</span><span style="color: #000000;"> info.liangz.RelatedDatePickers; </span><span style="color: #0000FF;">import</span><span style="color: #000000;"> java.text.SimpleDateFormat; </span><span style="color: #0000FF;">import</span><span style="color: #000000;"> java.util.Calendar; </span><span style="color: #0000FF;">import</span><span style="color: #000000;"> java.util.Date; </span><span style="color: #0000FF;">import</span><span style="color: #000000;"> java.util.Map; </span><span style="color: #0000FF;">import</span><span style="color: #000000;"> org.apache.wicket.PageParameters; </span><span style="color: #0000FF;">import</span><span style="color: #000000;"> org.apache.wicket.ajax.AjaxRequestTarget; </span><span style="color: #0000FF;">import</span><span style="color: #000000;"> org.apache.wicket.ajax.form.AjaxFormComponentUpdatingBehavior; </span><span style="color: #0000FF;">import</span><span style="color: #000000;"> org.apache.wicket.datetime.StyleDateConverter; </span><span style="color: #0000FF;">import</span><span style="color: #000000;"> org.apache.wicket.datetime.markup.html.form.DateTextField; </span><span style="color: #0000FF;">import</span><span style="color: #000000;"> org.apache.wicket.extensions.yui.calendar.DatePicker; </span><span style="color: #0000FF;">import</span><span style="color: #000000;"> org.apache.wicket.markup.html.basic.Label; </span><span style="color: #0000FF;">import</span><span style="color: #000000;"> org.apache.wicket.markup.html.WebPage; </span><span style="color: #0000FF;">import</span><span style="color: #000000;"> org.apache.wicket.markup.html.form.Form; </span><span style="color: #0000FF;">import</span><span style="color: #000000;"> org.apache.wicket.markup.html.panel.FeedbackPanel; </span><span style="color: #0000FF;">import</span><span style="color: #000000;"> org.apache.wicket.model.PropertyModel; </span><span style="color: #008000;">/**</span><span style="color: #008000;"> * Homepage </span><span style="color: #008000;">*/</span><span style="color: #000000;"> </span><span style="color: #0000FF;">public</span><span style="color: #000000;"> </span><span style="color: #0000FF;">class</span><span style="color: #000000;"> RelatedDatePickers </span><span style="color: #0000FF;">extends</span><span style="color: #000000;"> WebPage { </span><span style="color: #0000FF;">private</span><span style="color: #000000;"> </span><span style="color: #0000FF;">static</span><span style="color: #000000;"> </span><span style="color: #0000FF;">final</span><span style="color: #000000;"> </span><span style="color: #0000FF;">long</span><span style="color: #000000;"> serialVersionUID </span><span style="color: #000000;">=</span><span style="color: #000000;"> </span><span style="color: #000000;">1L</span><span style="color: #000000;">; </span><span style="color: #0000FF;">private</span><span style="color: #000000;"> Date selectedCheckInDate, selectedCheckOutDate; </span><span style="color: #0000FF;">private</span><span style="color: #000000;"> </span><span style="color: #0000FF;">static</span><span style="color: #000000;"> </span><span style="color: #0000FF;">final</span><span style="color: #000000;"> SimpleDateFormat format </span><span style="color: #000000;">=</span><span style="color: #000000;"> </span><span style="color: #0000FF;">new</span><span style="color: #000000;"> SimpleDateFormat(</span><span style="color: #000000;">&quot;</span><span style="color: #000000;">MM/dd/yyyy</span><span style="color: #000000;">&quot;</span><span style="color: #000000;">); </span><span style="color: #008000;">/**</span><span style="color: #008000;"> * Constructor that is invoked when page is invoked without a session. * * </span><span style="color: #808080;">@param</span><span style="color: #008000;"> parameters * Page parameters </span><span style="color: #008000;">*/</span><span style="color: #000000;"> </span><span style="color: #0000FF;">public</span><span style="color: #000000;"> RelatedDatePickers(</span><span style="color: #0000FF;">final</span><span style="color: #000000;"> PageParameters parameters) { </span><span style="color: #0000FF;">final</span><span style="color: #000000;"> DateTextField checkInDate </span><span style="color: #000000;">=</span><span style="color: #000000;"> </span><span style="color: #0000FF;">new</span><span style="color: #000000;"> DateTextField(</span><span style="color: #000000;">&quot;</span><span style="color: #000000;">checkInDate</span><span style="color: #000000;">&quot;</span><span style="color: #000000;">, </span><span style="color: #0000FF;">new</span><span style="color: #000000;"> PropertyModel</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">Date</span><span style="color: #000000;">&gt;</span><span style="color: #000000;">( </span><span style="color: #0000FF;">this</span><span style="color: #000000;">, </span><span style="color: #000000;">&quot;</span><span style="color: #000000;">selectedCheckInDate</span><span style="color: #000000;">&quot;</span><span style="color: #000000;">), </span><span style="color: #0000FF;">new</span><span style="color: #000000;"> StyleDateConverter(</span><span style="color: #000000;">&quot;</span><span style="color: #000000;">S-</span><span style="color: #000000;">&quot;</span><span style="color: #000000;">, </span><span style="color: #0000FF;">true</span><span style="color: #000000;">)); </span><span style="color: #0000FF;">final</span><span style="color: #000000;"> DateTextField checkOutDate </span><span style="color: #000000;">=</span><span style="color: #000000;"> </span><span style="color: #0000FF;">new</span><span style="color: #000000;"> DateTextField(</span><span style="color: #000000;">&quot;</span><span style="color: #000000;">checkOutDate</span><span style="color: #000000;">&quot;</span><span style="color: #000000;">, </span><span style="color: #0000FF;">new</span><span style="color: #000000;"> PropertyModel</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">Date</span><span style="color: #000000;">&gt;</span><span style="color: #000000;">( </span><span style="color: #0000FF;">this</span><span style="color: #000000;">, </span><span style="color: #000000;">&quot;</span><span style="color: #000000;">selectedCheckOutDate</span><span style="color: #000000;">&quot;</span><span style="color: #000000;">), </span><span style="color: #0000FF;">new</span><span style="color: #000000;"> StyleDateConverter(</span><span style="color: #000000;">&quot;</span><span style="color: #000000;">S-</span><span style="color: #000000;">&quot;</span><span style="color: #000000;">, </span><span style="color: #0000FF;">true</span><span style="color: #000000;">)); add(</span><span style="color: #0000FF;">new</span><span style="color: #000000;"> Label(</span><span style="color: #000000;">&quot;</span><span style="color: #000000;">message</span><span style="color: #000000;">&quot;</span><span style="color: #000000;">, </span><span style="color: #000000;">&quot;</span><span style="color: #000000;">Related Date Pickers</span><span style="color: #000000;">&quot;</span><span style="color: #000000;">)); Form</span><span style="color: #000000;">&lt;?&gt;</span><span style="color: #000000;"> form </span><span style="color: #000000;">=</span><span style="color: #000000;"> </span><span style="color: #0000FF;">new</span><span style="color: #000000;"> Form(</span><span style="color: #000000;">&quot;</span><span style="color: #000000;">dateForm</span><span style="color: #000000;">&quot;</span><span style="color: #000000;">) { @Override </span><span style="color: #0000FF;">protected</span><span style="color: #000000;"> </span><span style="color: #0000FF;">void</span><span style="color: #000000;"> onSubmit() { info(</span><span style="color: #000000;">&quot;</span><span style="color: #000000;">Checkin Date is: </span><span style="color: #000000;">&quot;</span><span style="color: #000000;"> </span><span style="color: #000000;">+</span><span style="color: #000000;"> selectedCheckInDate </span><span style="color: #000000;">+</span><span style="color: #000000;"> </span><span style="color: #000000;">&quot;</span><span style="color: #000000;"> &amp; Checkout Date is: </span><span style="color: #000000;">&quot;</span><span style="color: #000000;"> </span><span style="color: #000000;">+</span><span style="color: #000000;"> selectedCheckOutDate); } }; add(form); form.add(checkInDate); checkInDate.setRequired(</span><span style="color: #0000FF;">true</span><span style="color: #000000;">); checkInDate.add(</span><span style="color: #0000FF;">new</span><span style="color: #000000;"> DatePicker() { @Override </span><span style="color: #0000FF;">protected</span><span style="color: #000000;"> </span><span style="color: #0000FF;">void</span><span style="color: #000000;"> configure(Map widgetProperties) { Date date; </span><span style="color: #0000FF;">if</span><span style="color: #000000;"> (selectedCheckInDate </span><span style="color: #000000;">!=</span><span style="color: #000000;"> </span><span style="color: #0000FF;">null</span><span style="color: #000000;">) { date </span><span style="color: #000000;">=</span><span style="color: #000000;"> selectedCheckInDate; } </span><span style="color: #0000FF;">else</span><span style="color: #000000;"> { date </span><span style="color: #000000;">=</span><span style="color: #000000;"> </span><span style="color: #0000FF;">new</span><span style="color: #000000;"> Date(); } </span><span style="color: #008000;">//</span><span style="color: #008000;"> set minimal date</span><span style="color: #008000;"> </span><span style="color: #000000;"> widgetProperties.put(</span><span style="color: #000000;">&quot;</span><span style="color: #000000;">mindate</span><span style="color: #000000;">&quot;</span><span style="color: #000000;">, format.format(date)); </span><span style="color: #0000FF;">super</span><span style="color: #000000;">.configure(widgetProperties); } }); checkInDate.add(</span><span style="color: #0000FF;">new</span><span style="color: #000000;"> AjaxFormComponentUpdatingBehavior(</span><span style="color: #000000;">&quot;</span><span style="color: #000000;">onchange</span><span style="color: #000000;">&quot;</span><span style="color: #000000;">) { @Override </span><span style="color: #0000FF;">protected</span><span style="color: #000000;"> </span><span style="color: #0000FF;">void</span><span style="color: #000000;"> onUpdate(AjaxRequestTarget target) { target.addComponent(checkOutDate); } }); form.add(checkOutDate); checkOutDate.setRequired(</span><span style="color: #0000FF;">true</span><span style="color: #000000;">); checkOutDate.add(</span><span style="color: #0000FF;">new</span><span style="color: #000000;"> DatePicker() { @Override </span><span style="color: #0000FF;">protected</span><span style="color: #000000;"> </span><span style="color: #0000FF;">void</span><span style="color: #000000;"> configure(Map widgetProperties) { Date date; </span><span style="color: #0000FF;">if</span><span style="color: #000000;"> (selectedCheckInDate </span><span style="color: #000000;">!=</span><span style="color: #000000;"> </span><span style="color: #0000FF;">null</span><span style="color: #000000;">) { Calendar cal </span><span style="color: #000000;">=</span><span style="color: #000000;"> Calendar.getInstance(); cal.setTime(selectedCheckInDate); cal.add(Calendar.DATE, </span><span style="color: #000000;">1</span><span style="color: #000000;">); date </span><span style="color: #000000;">=</span><span style="color: #000000;"> cal.getTime(); } </span><span style="color: #0000FF;">else</span><span style="color: #000000;"> { date </span><span style="color: #000000;">=</span><span style="color: #000000;"> </span><span style="color: #0000FF;">new</span><span style="color: #000000;"> Date(); } </span><span style="color: #008000;">//</span><span style="color: #008000;"> set minimal date</span><span style="color: #008000;"> </span><span style="color: #000000;"> widgetProperties.put(</span><span style="color: #000000;">&quot;</span><span style="color: #000000;">mindate</span><span style="color: #000000;">&quot;</span><span style="color: #000000;">, format.format(date)); </span><span style="color: #0000FF;">super</span><span style="color: #000000;">.configure(widgetProperties); } }); checkOutDate.setOutputMarkupId(</span><span style="color: #0000FF;">true</span><span style="color: #000000;">); add(</span><span style="color: #0000FF;">new</span><span style="color: #000000;"> FeedbackPanel(</span><span style="color: #000000;">&quot;</span><span style="color: #000000;">feedback</span><span style="color: #000000;">&quot;</span><span style="color: #000000;">)); } } </span></div></pre></blockquote><p>以及一张效果图</p><p class="separator" style="clear: both; text-align: center;"><a href="http://2.bp.blogspot.com/_SF8en_GdErQ/SKrXhF3R0II/AAAAAAAAHds/MZUQIfLrpdI/s1600-h/Related+Date+Pickers.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://2.bp.blogspot.com/_SF8en_GdErQ/SKrXhF3R0II/AAAAAAAAHds/nKvxuQCh-dY/s320-R/Related+Date+Pickers.png" /></a></p>Liang Zhao@Bloggerhttp://www.blogger.com/profile/01431844262421179754noreply@blogger.comtag:blogger.com,1999:blog-38822392.post-34342586555693302772008-08-18T23:24:00.001+10:002008-08-18T23:44:42.830+10:00Nerd,宅<p>从一个网站看到了 <a href="http://www.nerdtests.com/ft_nq.php">How NERDY are You?</a> 的测试。玩玩地测试了一下,结果分数高得吓人——考试都没得过这么高的分数啊。</p><p>评价是:Supreme Nerd. Apply for a professorship at MIT now!!!. </p><p align="center"><a href="http://www.nerdtests.com/ft_nq.php"><br /> <img src="http://www.nerdtests.com/images/badge/56c56a4c878a9a75.gif" alt="I am nerdier than 94% of all people. Are you a nerd? Click here to find out!"></a></p><p>至尊 Nerd 啊……为啥不是武林至尊呢。</p><p>另外,一直好奇 Nerd 的含义,感觉和日文的 宅 有相近的含义。</p>Liang Zhao@Bloggerhttp://www.blogger.com/profile/01431844262421179754noreply@blogger.comtag:blogger.com,1999:blog-38822392.post-90199360958979997832008-08-18T22:43:00.005+10:002008-08-18T22:54:51.987+10:00开坛,烧蛋<p><a href="../07/blog-post_30.html">20 天的日子终于熬到了</a>。今天起早,开坛煮蛋。但是味道似乎还不够咸,功夫不到家~应该还要再加大把大把的盐。</p><p>据说,制作咸蛋的时候。如果盐放得不够多,就会变成臭蛋。这么算来,还算是成功了一半吧——至少鸡蛋没有变臭。</p>Liang Zhao@Bloggerhttp://www.blogger.com/profile/01431844262421179754noreply@blogger.comtag:blogger.com,1999:blog-38822392.post-49825521317605774962008-08-18T13:40:00.003+10:002008-08-18T23:01:02.670+10:00又删博客<p>不知不觉,距离上次删除 <a href="http://alpha0roc.spaces.live.com">Spaces Live</a> 又一年了。博客旁边的 Archives 又长长了,13 行。</p><p>有碍美观,年度性地再删一次。</p><p>所有以前的博客,都去 <a href="http://alpha0roc.blogspot.com">Blogger 地址</a>找吧。</p>Liang Zhao@Bloggerhttp://www.blogger.com/profile/01431844262421179754noreply@blogger.comtag:blogger.com,1999:blog-38822392.post-57995664814824828692008-08-17T00:04:00.001+10:002008-08-17T00:26:24.369+10:00九月,作业伴美剧齐飞<p>开学到现在,作业开始排山倒海一般地涌来了。估计到了九月,还会倍感压力。</p><p>总算到了九月,各种美剧也开始回归。生活并不孤单呢……下月关注列表。</p><ul><li>9月1日,Prison Break,第四季,两小时首播集</li> <li>9月3日,Bones,识骨寻踪,第四季两小时首播</li> <li>9月8日,Terminator: The Sarah Connor Chronicles,终结者外传,第二季</li> <li>9月18日,Smallville,超人前传,第八季</li> <li>9月22日,Heroes,英雄,第三季两小时首播</li> <li>9月22日,Boston Legal,波士顿法律,第五季</li> <li>9月24日,Knight Rider,霹雳游侠,第五季(第四季是1986年播出的)</li> <li>9月24日,Criminal Minds,犯罪心理,第四季</li> </ul><p>这年头,美剧也喜欢搞两小时特别篇……整得跟日本动画片似的……</p>Liang Zhao@Bloggerhttp://www.blogger.com/profile/01431844262421179754noreply@blogger.comtag:blogger.com,1999:blog-38822392.post-56357085907198632072008-08-14T02:10:00.002+10:002008-08-14T02:25:10.432+10:00来自奥运现场的明信片<p>前些日子还在羡慕 <a href="http://fanfou.com/bigapple">Bigapple</a> 能收到一张奥运现场寄出的明信片。</p><blockquote>哪个孙童鞋在北京奥运开幕现场给偶寄了明信片啊,支会一声吧,实在想不出来。</blockquote><p>结果,没过几天,自己国内家中也收到一张类似明信片。接着,也是遭遇同样的窘境……换个姓氏,直接引用。</p><blockquote><b>哪个陈童鞋在北京奥运开幕现场给偶寄了明信片啊,支会一声吧,实在想不出来。</b></blockquote>Liang Zhao@Bloggerhttp://www.blogger.com/profile/01431844262421179754noreply@blogger.comtag:blogger.com,1999:blog-38822392.post-45402137896236635902008-08-10T18:53:00.000+10:002008-08-10T19:55:35.708+10:00Screenlets 与 iGoogle Gadgets<p><a href = "http://www.screenlets.org">Screenlets</a> 是 Linux 下的桌面 Widget 管理软件。通过 Screenlets,可以加在许多好玩的桌面小工具。此软件可以简单地通过添加以下源后,安装 screenlets 得到。</p><blockquote>deb http://ppa.launchpad.net/gilir/ubuntu hardy main<br />deb-src http://ppa.launchpad.net/gilir/ubuntu hardy main</blockquote><p>不过,Screenlets 的 Widget 可不仅仅只限于安装包中所提供的那些,它还能神奇地将 iGoogle 上的各种网页 gadget 转换成桌面 Widget。</p><p>以 Google 官方的 <a href = "http://www.google.com/ig/directory?hl=en&root=/ig&igtab=Main&dpos=top&url=www.google.com/ig/modules/china/olympics.xml">Beijing 2008 Summer Games Gadget</a> 为例,罗列一下转换过程。</p><ol type=1><li>打开<a href = "http://www.google.com/ig/directory?hl=en&root=/ig&igtab=Main&dpos=top&url=www.google.com/ig/modules/china/olympics.xml">该 Gadget 介绍页面</a></li><li>点选页面右边的 “Embed this gadget »”,又称“嵌入该小工具 »”</li><li>对此 Gadget 进行一些自定义设定,并且点击“Get the Code”或“获得代码”,获得一串 JavaScript 代码</li><li>运行 Screenlets Manager,并点选左边的 Install 按钮</li><li>选择 Convert Web Widget,点击 OK</li><li>将复制得到的 JavaScript 代码粘贴到 Widget converter 界面的 Step 2 框中</li><li>按照 Step 3 的要求,为你的 Widget 取一个名字,名字似乎只能支持英文和数字,中文名会导致程序无法运行</li><li>选择 OK 后,提示转换成功,新 Widget 被添加,双击即可运行</li></ol><p>放张桌面上所有 Widgets 的截图。左边是常用程序,左下是正在运行程序图标,中间是转换后的 Google Gadget,右边则是系统状态。</p><p class="separator" style="text-align: center; clear: both;"><a href="http://4.bp.blogspot.com/_SF8en_GdErQ/SJ66QhyFQXI/AAAAAAAAHco/eBAfORPo_RM/s1600-h/Screenlets+Widgets.png" imageanchor="1" style="border: 0pt none ; background-color: transparent; margin-left: 1em; margin-right: 1em;"><img src="http://4.bp.blogspot.com/_SF8en_GdErQ/SJ66QhyFQXI/AAAAAAAAHco/er4WrNYcTlc/s320-R/Screenlets+Widgets.png" style="border: 0pt none ;" /></a></p>Liang Zhao@Bloggerhttp://www.blogger.com/profile/01431844262421179754noreply@blogger.comtag:blogger.com,1999:blog-38822392.post-57923925605536343062008-08-08T02:03:00.001+10:002008-08-08T02:24:36.686+10:00歪解人之生也柔弱<p>《道德经》说:</p><blockquote>人之生也柔弱,其死也坚强。<br /> 草木之生也柔脆,其死也枯槁。<br /> 故坚强者死之徒,柔弱者生之徒。<br /> 是以兵强则灭,木强则折,强大居下,柔弱居上。</blockquote><p>翻译成白话文,大概讲得就是——英雄难过美人关?</p>Liang Zhao@Bloggerhttp://www.blogger.com/profile/01431844262421179754noreply@blogger.comtag:blogger.com,1999:blog-38822392.post-27139855211893507042008-08-07T22:08:00.001+10:002008-08-07T22:08:19.481+10:00还有 24 小时<p>还有 24 小时,“天津三问”的最后一问,终于得以解答了。</p>Liang Zhao@Bloggerhttp://www.blogger.com/profile/01431844262421179754noreply@blogger.comtag:blogger.com,1999:blog-38822392.post-81044027558300870112008-08-07T20:07:00.001+10:002008-08-07T20:29:17.726+10:00关于 Galaxium 的 Adium Theme 的中文支持<p>Adium Theme 的显示效果非常不错,但是可惜的是对于中文的支持却很不够。中文的聊天记录在上面显示出来却都变成了一个个的方框。其实出现这个问题的最主要原因是程序所调用的 WebKit-Gtk 对于中文显示的支持不够。如果换成 Mozilla 的 Gecko 库的话,效果就完全不一样了。</p><p>要让 Galaxium 支持 Gecko 需要从源代码开始,重新编译整个软件。</p><p>首先需要获取最新版的 SVN 版本,并进入代码目录</p><blockquote>svn checkout http://galaxium.googlecode.com/svn/trunk/ galaxium-read-only<br /> cd galaxium-read-only</blockquote><p>产生编译配置文件时启用 Gecko 支持,然后编译,安装软件</p><blockquote>./autogen.sh --prefix=/Galaxium 的指定安装目录 --enable-gecko<br /> make<br /> make install</blockquote><p>编译整个软件,需要预先安装一系列的 dev 包。现在已经说不清楚需要安装那些包了,具体可以按照配置时的出错信息来操作。只记得 libgstreamer0.10-dev, libgstreamer-plugins-base0.10-dev 和 libgecko2.0-cil 都是肯定需要安装的。</p>Liang Zhao@Bloggerhttp://www.blogger.com/profile/01431844262421179754noreply@blogger.comtag:blogger.com,1999:blog-38822392.post-44830603344447393182008-08-07T02:08:00.000+10:002008-08-07T03:02:46.492+10:00神似 Mac OS<p>买不起 Mac,但这不能阻止我们在 Linux 下使用一些软件,实现一些 Mac 特有的功能。</p><p>很大众化的软件有 Compiz(动态特效支持), CompizConfig Setting Manager(动态特效配置工具)和 Avant Window Navigator(3D Dock 工具栏)。这些都很有名气了,不需要再多做介绍。</p><p>其他小众化一点的,还有:</p><ul><li><p><a href="http://www.screenlets.org/">Screenlets</a></p><p>如果配合 Compiz 上的 Widget 插件使用,便可以实现 Dashboard 功能——把所有的 Screenlets Widget 放置在虚拟的 Dashboard 层上,通过 F9 按钮显示和隐藏。即使没有 Compiz, Screenlets 仍然能够把 Widget 显示在桌面上,此时它就像一个 Widget 的管理软件。</p></li> <li><p><a href="http://getsongbird.com/">Songbird</a></p><p>一个类似 iTunes 的歌曲管理软件,不仅神似,而且还形似。神似上,它能够如 iTunes 那样直接连接 iPod,并对歌曲进行导入和导出。形似上,只要给 Songbird 安装上 MediaFlow 和 Album Art Manager 插件——在 0.7 版中只需安装 MediaFlow 插件——并选择 View 中的 MediaFlow,便可以实现其主页上那种专辑图片动态翻选的效果。</p></li> <li><p><a href="http://galaxium.googlecode.com/">Galaxium</a></p><p>又到了 Galaxium。在 Galaxium 的 Preferences 中有一个 Messages Theme,如果选择为 Adium,便可以实现 Mac OS 中如 iChat 的聊天风格显示。不过问题是,现在稳定版中的 Adium Theme,尚无法很好支持中文显示。而 SVN 开发版,虽然能够在 Adium 中显示中文,但却会因为启用 Adium Theme 特效而常常无故退出。</p></li> </ul>Liang Zhao@Bloggerhttp://www.blogger.com/profile/01431844262421179754noreply@blogger.comtag:blogger.com,1999:blog-38822392.post-39782739224793760572008-08-06T02:10:00.001+10:002008-08-06T02:48:49.000+10:00Galaxium 和 Pidgin<p>Pidgin 的优势想必无须多说了。开放性的多协议支持,优秀的多用户管理机制,以及方便的聊天记录管理。一切都很美好,以前还一直都认为,只有一个 Pidgin 就可以应付 QQ,MSN,Gtalk,Yahoo 以及 Fetion 的上所有联系……</p><p>无奈,不知是 Pidgin 本身的框架设计问题,还是开发者懒惰了。最近几个月的更新,除了名字从 Gaim 改为 Pidgin,以及修正各类小 Bug 之外,似乎完全没有大的作为。</p><p>于是,MSN 的依然不能接收离线消息,在线消息的发送和接收也偶尔丢失。QQ 群组在一段时间后总是会自动断线。其他的如视频、语音就更加是奢望了。</p><p>幸好最近又有 Galaxium 进入视线,与 Pidgin 一样地支持多协议。虽然到现在为止,最新的 SVN 维护版本只支持了 MSN,Gtalk,IRC——不如 Pidgin 多;而且多用户的管理似乎也比 Pidgin 复杂。但光就MSN 那部分的表现:支持闪屏,离线消息,能与 Live Messenger 同步的个人信息描述和头像。就证明其所采用的框架可谓是相当地不错了。看了看<a href="http://code.google.com/p/galaxium/">官方主页</a>,将来似乎还可支持音频和视频聊天……口水了。</p><p>是时候从 Pidgin 开始迁移出来了……Ubuntu Hardy 上的安装方法,在 /etc/apt/sources.list 源列表上添加以下两行:</p><blockquote>deb http://ppa.launchpad.net/galaxium/ubuntu hardy main<br /> deb-src http://ppa.launchpad.net/galaxium/ubuntu hardy main </blockquote>Liang Zhao@Bloggerhttp://www.blogger.com/profile/01431844262421179754noreply@blogger.comtag:blogger.com,1999:blog-38822392.post-2500467805826186432008-08-04T23:28:00.001+10:002008-08-04T23:28:33.457+10:00Illusion<p class="separator" style="text-align: center; clear: both;"><a href="http://bp0.blogger.com/_SF8en_GdErQ/SJcCoUPOEDI/AAAAAAAAHW0/jmpbX0C8HFo/s1600-h/checkershadow_double_med.jpg" imageanchor="1" style="border: 0pt none ; background-color: transparent; margin-left: 1em; margin-right: 1em;"><img src="http://bp0.blogger.com/_SF8en_GdErQ/SJcCoUPOEDI/AAAAAAAAHW0/scAq5gGv7g0/s320-R/checkershadow_double_med.jpg" style="border: 0pt none ;" /></a></p><p>眼睛都看花了,还是觉得左图上 A 和 B 两块的颜色是不一样的……</p><p>但是老师确实有说这两块的颜色的确相同(以右图为佐证)。而且刚刚用色彩提取器验证过, A 和 B 两块的色彩 RGB 值都为 #787878。爆了……</p><p>这里是<a href="http://web.mit.edu/persci/gaz">理论佐证</a>,先存档,下次有机会再看。</p>Liang Zhao@Bloggerhttp://www.blogger.com/profile/01431844262421179754noreply@blogger.comtag:blogger.com,1999:blog-38822392.post-19185168530177670372008-08-04T13:58:00.001+10:002008-08-04T14:03:46.761+10:00奥运疲劳<p>从国内到国外,难得全球媒体的意见如此统一,一起不遗余力、前赴后继、甚嚣尘上、损人不利己地爆炒同一个话题。</p><p>于是,奥运会还没开幕,几个月的媒体轰炸都让我觉得比通宵看奥运会比赛还疲劳。</p><p>不过,不管怎样,奥运会开幕式还是不能错过的,期待 8 月 8 号。现在的关键是找个大点的电视机吧。</p>Liang Zhao@Bloggerhttp://www.blogger.com/profile/01431844262421179754noreply@blogger.comtag:blogger.com,1999:blog-38822392.post-2106642418315058922008-07-31T21:18:00.003+10:002008-07-31T21:24:14.909+10:00香港红十字会还是很守信的<p>上次<a href="http://blog.liangz.info/2008/05/blog-post_13.html">在捐款的时候</a>,勾选了需要发票(?收据?)……</p><p>于是,过了一个半月后,两张发票(?收据?)都寄来了。</p><p>晒发票……</p><p style="text-align: center; clear: both;"><a href="http://bp2.blogger.com/_SF8en_GdErQ/SJGevxHkuMI/AAAAAAAAHWI/Bx_aLyQlPwo/s1600-h/IMG_7790.JPG" imageanchor="1" style="border: 0pt none ; background-color: transparent; margin-left: 1em; margin-right: 1em;"><img src="http://bp2.blogger.com/_SF8en_GdErQ/SJGevxHkuMI/AAAAAAAAHWI/Yaz8HHQkr50/s320-R/IMG_7790.JPG" style="border: 0pt none ;" /></a></p>Liang Zhao@Bloggerhttp://www.blogger.com/profile/01431844262421179754noreply@blogger.comtag:blogger.com,1999:blog-38822392.post-73616475637915400812008-07-30T01:36:00.002+10:002008-07-30T01:48:56.343+10:00用有限的资源创造无限的可能<p>用有限的资源创造无限的可能,这才是高手啊。</p><p><a href="http://www.cs.cmu.edu/~johnny/projects/wii/">Johnny Lee</a> 用 wii 实现的手指跟踪、多点交互白板以及类似虚拟现实眼镜的应用实在是太神奇了。</p><p>具体的演示可以看此视频。</p><p><embed src="http://player.youku.com/player.php/sid/XMjU0MTUyNDQ=/v.swf" quality="high" height="355" width="425" align="middle" allowScriptAccess="sameDomain" type="application/x-shockwave-flash"></embed></p>Liang Zhao@Bloggerhttp://www.blogger.com/profile/01431844262421179754noreply@blogger.comtag:blogger.com,1999:blog-38822392.post-21099449035479236762008-07-30T01:26:00.001+10:002008-07-30T01:30:18.622+10:00咸蛋<p>用盐水浸了 10 个鸡蛋做咸蛋,如果一切顺利的话, 20 天后应该就能用自制咸蛋做早饭了。</p>Liang Zhao@Bloggerhttp://www.blogger.com/profile/01431844262421179754noreply@blogger.comtag:blogger.com,1999:blog-38822392.post-37451989092174129962008-07-19T01:15:00.002+10:002008-07-22T18:15:22.376+10:00就算是上海地铁的英文也是不牢靠的<p>上海地铁八号线,黄兴路站,被交通卡充值机前的中英文给“雷”到了。</p><blockquote><li>中文:加值机</li><li>英文:add value machine</li></blockquote><p>大致是如此吧,后悔当初没有拍照了。</p>Liang Zhao@Bloggerhttp://www.blogger.com/profile/01431844262421179754noreply@blogger.comtag:blogger.com,1999:blog-38822392.post-7519407155641951542008-07-14T02:53:00.001+10:002008-07-14T03:24:37.379+10:00烦躁,浮躁<p>没来由地心情烦躁……很难静下心来。虽然在新华书店为自己买了几本书读——也算是为自己找点事情做做——但还是很浮躁。</p> <p>《Kung Fu Panda》最后, Master Shifu 那种进入 feel peace(不知该如何解释,入定?) 的心态,于我等社会浮沉之辈而言,想来也是可望而不可及。不过,初级程度的 feel peace 的经历,倒也曾有过一次。</p> <p>Wollongong 的 Nan Tien Temple 就有这种引出 peace 的能力。在 Nan Tien Temple,伴随着舒缓的音乐,品尝一顿精美的素斋的过程,也是一个让人的身心能够完全放松的过程。餐毕,爬上后山的小山坡,望着脚下一片碧绿和远处的一抹斜阳,完全是陶渊明《饮酒》诗中的意境……</p> <blockquote>结庐在人境,而无车马喧。<br />问君何能尔?心远地自偏。<br />采菊东篱下,悠悠见南山。<br />山气日夕佳,飞鸟相与还。<br />此中有真意,欲辩已忘言。</blockquote>Liang Zhao@Bloggerhttp://www.blogger.com/profile/01431844262421179754noreply@blogger.comtag:blogger.com,1999:blog-38822392.post-32410438774374960302008-07-09T13:16:00.001+10:002008-07-09T13:46:49.314+10:00这个肯定是巧合……<p>cnBeta.com 的<a href="http://www.cnbeta.com/articles/59736.htm">寻找中国第一位网民:首封电邮网络上走6天</a>中,有关于中国历史上第一封电子邮件的发送过程的详细描述:</p> <blockquote><br /> <p>该写点什么呢?措恩坐在电脑前,回望两位中国人。</p> <p>李澄炯问王运丰:“国内正在改革开放,我们应该传达中国人要走出去,向世界问好,你觉得如何?”</p> <p>王运丰接连点头赞许,并俯身向措恩说了一句话。</p> <p>"Across the Great Wall we can reach every corner in the world"。措恩分别用英语、德语输入。</p> <p>“飞跃长城,走向世界!”李澄炯脱口翻译道。</p> <p>随后,措恩将邮件发送给包括自己在内的10位科学家。</p> </blockquote> <p>注意首封电邮的内容:</p> <blockquote><br /> <p>Across <font color="#ff0000">the Great Wall</font> we can reach every corner in the world</p> </blockquote> <p>无力了……这个该说是先见之明呢?还是巧合……</p>Liang Zhao@Bloggerhttp://www.blogger.com/profile/01431844262421179754noreply@blogger.comtag:blogger.com,1999:blog-38822392.post-66906447678307400712008-07-07T18:01:00.003+10:002008-07-07T18:03:38.387+10:00仙剑奇侠传壹至肆代人物关系图<p>算是看到了最复杂的关系图了——仙剑奇侠传壹至肆代人物关系图。</p><p>仙剑各代,虽然时间上很难完整统一成一个整体,但单单是考究人物关系的话,似乎各代之间都多少有些关联。图出自<a href="http://www.palunion.net/bbs/thread-130906-1-1.html">中国仙剑联盟</a>。</p><p style="text-align: center; clear: both;"><a href="http://bp0.blogger.com/_SF8en_GdErQ/SHHL87wKNVI/AAAAAAAAHO4/rAPAi2KNJRU/s1600-h/%E4%BB%99%E5%89%91%E5%A5%87%E4%BE%A0%E4%BC%A0%E4%B8%80%E4%BB%A3%E8%87%B3%E5%9B%9B%E4%BB%A3%E4%BA%BA%E7%89%A9%E5%85%B3%E7%B3%BB%E5%9B%BE1.1A%E5%9B%BE%E6%96%87%E7%89%88.JPG" imageanchor="1" style="border: 0pt none ; background-color: transparent; margin-left: 1em; margin-right: 1em;"><img src="http://bp0.blogger.com/_SF8en_GdErQ/SHHL87wKNVI/AAAAAAAAHO4/-stDnHoHe8A/s320-R/%E4%BB%99%E5%89%91%E5%A5%87%E4%BE%A0%E4%BC%A0%E4%B8%80%E4%BB%A3%E8%87%B3%E5%9B%9B%E4%BB%A3%E4%BA%BA%E7%89%A9%E5%85%B3%E7%B3%BB%E5%9B%BE1.1A%E5%9B%BE%E6%96%87%E7%89%88.JPG" style="border: 0pt none ;" /></a></p>Liang Zhao@Bloggerhttp://www.blogger.com/profile/01431844262421179754noreply@blogger.comtag:blogger.com,1999:blog-38822392.post-63119160425424771352008-07-06T23:08:00.001+10:002008-07-06T23:37:54.658+10:00NGO 走向前台了?<p>上海火车站的每个候车室似乎都有一台电视机,平日播放的无外乎各种商业的、公益的广告。</p> <p>有趣的是,前些日子在车站等车,倒是一连看到 WWF 的多个广告。趁着汶川大地震, NGO 也开始走到前台,走入人们的视线了呢?</p>Liang Zhao@Bloggerhttp://www.blogger.com/profile/01431844262421179754noreply@blogger.comtag:blogger.com,1999:blog-38822392.post-69074439397708904542008-07-02T00:04:00.000+10:002008-07-05T01:17:18.635+10:00S = (S + S) / 2<p>在 Sydney 到 Shanghai 的飞行地图上,穿插了 Singapore 作为中继站。于是,本该半天就完成的飞行旅程,也就延长为了两天。花了一天时间,粗略地游览新加坡,在脑海中得出了一个泛泛的式子, Singapore = (Sydney + Shanghai) / 2。</p> <p>刚下飞机,就被机场海关里面荷枪实弹的警察给吓住了——用“五步一岗,十步一哨”来形容都不为过。新加坡被誉为犯罪率超低的国家,似乎根本不必在机场配备如此张扬的警备力量?想来想去,得出的结论——莫非是给所有来新加坡的人一个下马威?出了机场,到处郁郁葱葱的花木,干净整洁的公路,使得我对新加坡的印象逐渐转好,的确不负花园国家之名呢。</p> <p>在新加坡的市中心转悠,感觉新加坡的建筑并没有太多自己的特色,这或许和这个国家的历史有关吧。清一色的高层、广场和办公楼,几乎是上海都能看到的那些类型。城市内,另外惹眼的便是那些路标。每块路牌上都能看到中文、英文和马来文的标注。就连地铁内的站名标注,亦是如此。再仔细看看那些中文,竟然都是简体中文,而非平日在国外常见的繁体(碎碎念一下,繁体就是繁体,看到有人把繁体中文说成正体中文就觉得烦。正体中文……弄得自己有多么地正宗似的)——真是倍感亲切。如果遮住那些英文和马来文标识,然后再让我走在这些路上,我或许真会以为自己身处上海或者国内某城市吧。</p> <p>坐在饭店,听着新加坡人说话,也能感觉到一种中西合壁的特色。说话时,上一句是中文,下一句就直接跳转为英文;或者紧接前句的英文,来上一句中文。而在中文中不停穿插英文单词对于他们而言也是信手拈来。于是,这样的场景也常常会出现:我和两个表兄妹在点菜时用英文向店员发问,同时,彼此之间却用中文交流。店员听到后,便直接开始用中文回答我们的问题。弄得用英文发问的我们觉得自己颇为做作。</p> <p>新加坡的物价在某种程度上似乎很便宜,特别是交通方面……和悉尼比起来,交通费简直是便宜地没谱。地铁、公交的收费都是2新元左右,即使是打的,起步价也是2-3新元。而水果方面,一杯现榨果汁约收大约3-4新元,似乎比上海某些地方还便宜吧。本还想去麦当劳去看看 BigMac 的价格,以对比三地的物价。无奈表弟(在麦当劳打工,深受麦当劳“毒害”的人)极力反对而作罢。</p> <p>说到新加坡的景点,总是要谈到圣淘沙。无奈我们这些被悉尼、黄金海岸、大堡礁的沙滩所宠坏的人们,并没有对圣淘沙产生非常特别的印象。看来,要看沙滩还是要去澳大利亚呢。不过圣淘沙海域的水深倒是让我记忆犹新,从海滩望出去,没多远就停泊着好几艘货运巨轮。这似乎是从未看到过的景象呢……</p>Liang Zhao@Bloggerhttp://www.blogger.com/profile/01431844262421179754noreply@blogger.comtag:blogger.com,1999:blog-38822392.post-72309432367980186982008-06-18T11:16:00.000+10:002008-06-18T11:36:01.447+10:00Break the glass break the exam<p>Heroes 里说:Save the Cheerleader Save the World。</p><p>UNSW 却说:Break the glass break the exam。</p><p>昨晚备考睡过了头,在 8 点钟被匆忙叫醒。刚在担心 8 点 45 分的 Computer Networks and Applications 考试还没复习完——结果还没出门,就从 Shrimpy 那里听到了考试延迟的消息。怀着将信将疑的心态,和一群人赶往考场,门口贴了这么一张告示:</p><p><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp1.blogger.com/_SF8en_GdErQ/SFhlFwT04jI/AAAAAAAAHMc/I79LsrkAt5I/s1600-h/Image004.jpg"><img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="http://bp1.blogger.com/_SF8en_GdErQ/SFhlFwT04jI/AAAAAAAAHMc/I79LsrkAt5I/s320/Image004.jpg" border="0" alt="Break the glass break the exam"id="BLOGGER_PHOTO_ID_5213027718223159858" /></a></p><p>总之,就是说我们的考场成为了犯罪现场,被禁止入内。具体是何种事故,便不一而足。有人打听说是玻璃被打碎了;授课老师说是火警响了……</p><p>无论如何,多了些时间可以继续复习了。</p>Liang Zhao@Bloggerhttp://www.blogger.com/profile/01431844262421179754noreply@blogger.comtag:blogger.com,1999:blog-38822392.post-80221998829456829532008-06-17T01:44:00.001+10:002008-06-17T01:44:19.377+10:00事有凑巧<p>这个其实是 5 月 20 日拍下的一张照片,于现在算来已算是旧闻了。只是由于当时学业、考试接踵而至,才到今天放上来。</p><p><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp0.blogger.com/_SF8en_GdErQ/SFaF1paa0-I/AAAAAAAAHMQ/aTgkKD8cmdM/s1600-h/20052008(001).jpg"><img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="http://bp0.blogger.com/_SF8en_GdErQ/SFaF1paa0-I/AAAAAAAAHMQ/aTgkKD8cmdM/s320/20052008(001).jpg" border="0" alt="20 日的《星岛日报》"id="BLOGGER_PHOTO_ID_5212500775424152546" /></a></p><p>5 月 20 日,全国哀悼日的第二天,记得那天,全国很多报纸、网站都将版面转为黑白版,以示哀悼。同样,在澳洲的中文报纸《星岛日报》,也以黑色报头和黑白版面出现。只是,当天正好又是台湾地区领导人就职日。</p><p>于是,黑白版面穿插一个红色喜报——事有凑巧啊……不知悉尼发行最大的《澳洲新报》的状况如何,下次去图书馆调阅过往期刊,研究一下。</p>Liang Zhao@Bloggerhttp://www.blogger.com/profile/01431844262421179754noreply@blogger.com