2009年3月31日星期二

瘦西湖某树

Posted by Picasa

2009年3月29日星期日

烟花三月下杨州

今天在杨州,因为那句"烟花三月下杨州"。我们去了瘦西湖,大明寺,明天去个园。连起来就是"瘦大个"。瘦西湖里风景不错,来过一些文人,留下一些别字。后人为这些别字又编了些故事。有二十四桥:二十四桥明月夜,玉人何处教吹萧(across 24 bridges in the moonlight ,where to find the beauties to do the blow job .)。还有杨剧,导游说的,我们都在湖边看了一会儿杨剧(杨州当地戏,类似越剧,不是dick )。
睡觉了,明天继续。

2009年3月24日星期二

回忆

前几天看网上一个活动"讲过去那些事"。其中几篇征文中,都回忆了t们爷爷或奶奶的一些简单生平。大多数人都蒙受过或多或少的屈辱,因为他她们成份不好,不是地主就是类似资本家了。难得有些人生活还算平静,在那样的年代,真是难得。
我常常感慨这是一个有意遗忘的年代,有些事情是不能被言说的。没有记载,没有反思。等时间久了,当时的人都老了,我们再也无从知晓当时都发生过什么,以及如何影响到现在。"当时的月亮曾经代表谁的心情?结果都一样。"结果真的一样吗?我们从来都是作为一条延续的时间上的一点而存在。现在呢,我对过去所知甚少。在这条时间的河里,我看到的是干涸。我继承了什么,我传承着什么。我没有答案。
过一周多一点就是清明。已经多年没有给奶奶上坟,估计今年也不会。她应该是宁波人,在那边有子女。后来到三门,和爷爷有了我爸。(我不知道爷爷是宁波人还是三门人)在我爸五岁或七岁的时候,爷爷去世。后来奶奶再婚,有了我小姑姑。在我五六岁的时候,奶奶去世。待我很好,可我太小,都不记得。奶奶一生结过两次或者三次婚,有过至少四个孩子。关于奶奶,我知道的就只有这些。

2009年3月16日星期一

前天和昨天

本来应该在前天和昨天写的,不过刚好周末,没有写。
前天是3.14,就是圆周率的前几位,据说是世界警察日。其实我想记住的,前天是2008年同一天某事件的一周年的日子。西躲东的历史和他们的生活,我们所知不多,不知道站在什么立场去感慨评论。但是这么多人一下子死了,生命总是珍贵的。
昨天是3.15,一如既往的晚会吧,可是可是,几年前,我们就决定不买电视机的,所以看不到那华丽的晚会了,也不知道政府今年宣传的主题。但是,但是由于消费者权益这几个字,想到的,总是那些如三鹿奶粉之类的不好事件。

2009年3月15日星期日

如何在blooger中使用代码着色

作为一个追求的程序员,在博客中添加点程序代码是常有的事情。但是如何使我们的代码在浏览器中用html显示的时候仍然同在IDE中那样看起来有高亮,有特定语言的关键字显示呢,这个就是一个代码语言高亮或代码着色的事情了。

上网查找了相关资料之后,找到一个开源的,叫SyntaxHighter,使用JavaScript编写的,对我们使用blogger的来说,那是最好不过了,原因嘛,如下.
  • blogger支持用户使用自己的JavaSript(这一点,国内的博客,我感觉应该支持的不多)
  • 作为没有独立空间,独立域名的我们小小用户,我们没有地方存放那些Javascript和CSS文件,细心的SyntaxHighter都已经帮我们提供了,他们提供一个网上版本,host version。我使用的是里边的current版本。


具体的用法嘛,也很简单。网站上有很简洁的说明。

总的来说是分成这么几步
  1. 在你的html的head之间添加如需要用到的js和css文件
  2. 在head中用js调用SyntaxHighter.all()
  3. 在具体的地方插入你需要高亮着色的代码,一般放在pre节点之间


<html>
<head>
<link type="text/css" rel="stylesheet" href="/styles/shCore.css" />
<link type="text/css" rel="stylesheet" href="/styles/shThemeDefault.css" />
<script type="text/javascript" src="/scripts/shCore.js"></script>
<script type="text/javascript" src="/scripts/shBrushJScript.js"></script>
<script type="text/javascript" src="/scripts/shBrushBash.js"></script>
<script type="text/javascript" src="/scripts/shBrushCpp.js"></script>
<script type="text/javascript">
SyntaxHighlighter.all();
</script>
</head>

...

这里js和css的地址使用网上提供的那个地址代替,或者你自己网上存放js和css的地址代替。

加入js和css文件之后,我们要做的就是,在需要代码着色的地方添加我们自己的代码,像这样子:


<pre class="brush: js">
alert("Hello world");
</pre>

这里的class有各种语言可以选择,想java,cpp,python,html等都支持。


到这里,所有和SyntaxHighter相关的都已经报告完毕了,接下来要说的,所如何添加到blogger中,打开blogger的布局视图,修改html,在head之间加入上面的代码.(head允许我们自己写些js函数)
另外在js中添加一句话来表明我们是在blogger中使用。


SyntaxHighter.config.bloggerMode=true;

好了,大功告成。

2009年3月14日星期六

代码着色,test

python代码:


def info(object, spacing=10, collapse=1):
"""Print methods and doc strings.

Takes module, class, list, dictionary, or string."""
methodList = [method for method in dir(object) if callable(getattr(object, method))]
processFunc = collapse and (lambda s: " ".join(s.split())) or (lambda s: s)
print "\n".join(["%s %s" %
(method.ljust(spacing),
processFunc(str(getattr(object, method).__doc__)))
for method in methodList])

if __name__ == "__main__":
print info.__doc__
info([])

java代码:


/*
* Copyright (C) 2009 TopCoder Inc., All Rights Reserved.
*/
package com.chumbonus.model;

import java.util.List;


/**
*


* This is an entity class that represents the chum information.
*


*


* Thread Safety: This class is mutable and not thread safe.
*


*
* @author TCSDESIGNER, TCSDEVELOPER
* @version 1.0
*/
public class Chum extends AttributedObject {
/**
*


* Represents serial version UID.
*


*/
private static final long serialVersionUID = -3942260210581221144L;

/**
*


* Represents the list of referred jobs.
*


*


* It is initially null. It can be any value including null or empty. It can contain null element. It has
* corresponding getter and setter methods.
*


*/
private List<Job> referredJobs;

/**
*


* Represents the base user profile id of the chum.
*


*


* It is initially 0 and it can be any value. It has corresponding getter and setter methods.
*


*/
private long baseUserProfileId;

/**
*


* Creates a new Chum object.
*


*/
public Chum() {
}

/**
*


* Returns the list of referred jobs of the chum.
*


*
* @return the list of referred jobs.
*/
public List<Job> getReferredJobs() {
return referredJobs;
}

/**
*


* Updates the list of referred jobs of the chum with the specified value.
*


*
* @param referredJobs a list value to set as the list of referred jobs.
*/
public void setReferredJobs(List<Job> referredJobs) {
this.referredJobs = referredJobs;
}

/**
*


* Returns the base user profile id of the chum.
*


*
* @return the base user profile id of chum.
*/
public long getBaseUserProfileId() {
return baseUserProfileId;
}

/**
*


* Updates the base user profile id of chum with the specified value.
*


*
* @param baseUserProfileId a value to set as the base user profile id.
*/
public void setBaseUserProfileId(long baseUserProfileId) {
this.baseUserProfileId = baseUserProfileId;
}
}

2009年3月12日星期四

Strust2相关

Strust2

Strust2是基于Webwork和XWork等框架上发展的一个web开发框架。

在strust2中一个主要的框架是基于Action的框架,它把用户的页面请求的动作,分成逻辑处理和表现处理,即MVC。这个框架把用户请求的URL映射到Action上,然后在Action,通过访问Http会话,请求以及表单等数据,调用业务逻辑,最后把响应映射到以POJO形式存在的模型(Model)上,完成某个功能,最后Action返回的结果通过配置文件转到一个jsp页面,完成展示工作。

因为之前已经看过spring,其实这两个框架有相似的地方,比如说拦截器等。

在关于Strust2的学习中,主要参考的资料是:starting strust2(《深入浅出Strust2》,InfoQ整理的)。

同样在学习Strust2的时候也通过编写一些例子,让学习印象更深刻一些。这些例子包括strust的常用Tag,i18n国际化,转换器,拦截器等。

另外还看了如何将spring和strust2整合在一起,让spring负责各种Action bean的实例化和依赖注入。

spring和strust2整合

整合spring和strust2的时候,首先在web.xml中,添加一个Listener



<listener>
<listener-class>
org.springframework.web.context.ContextLoaderListener
</listener-class>
</listener>

然后修改Struts.properties文件,通知Struts2运行时使用Spring来创建对象(如Action等)



struts.objectFactory = spring

在struts.xml中,原来的action中的class属性都是写到具体的类名,配置spring之后,需要写的是类在spring中配置的id,而不再是类全名。

另外Spring的applicationContext.xml等都不需要改变,按照spring原来的规则配置就行了。

2009年3月1日星期日

关于睡眠

这是约翰在医院度过的第一个晚上。他几乎没有睡着,他想这一定和床有关。 可能是陌生床的缘故。急救中心的临时床位四十元一个晚上,设施很好,卫生,还有护士。一个月也才一千二,谁说医院都是烧钱的地方,约翰不禁怀疑起来。