2009年3月29日星期日
2009年3月24日星期二
回忆
我常常感慨这是一个有意遗忘的年代,有些事情是不能被言说的。没有记载,没有反思。等时间久了,当时的人都老了,我们再也无从知晓当时都发生过什么,以及如何影响到现在。"当时的月亮曾经代表谁的心情?结果都一样。"结果真的一样吗?我们从来都是作为一条延续的时间上的一点而存在。现在呢,我对过去所知甚少。在这条时间的河里,我看到的是干涸。我继承了什么,我传承着什么。我没有答案。
过一周多一点就是清明。已经多年没有给奶奶上坟,估计今年也不会。她应该是宁波人,在那边有子女。后来到三门,和爷爷有了我爸。(我不知道爷爷是宁波人还是三门人)在我爸五岁或七岁的时候,爷爷去世。后来奶奶再婚,有了我小姑姑。在我五六岁的时候,奶奶去世。待我很好,可我太小,都不记得。奶奶一生结过两次或者三次婚,有过至少四个孩子。关于奶奶,我知道的就只有这些。
2009年3月16日星期一
2009年3月15日星期日
如何在blooger中使用代码着色
上网查找了相关资料之后,找到一个开源的,叫SyntaxHighter,使用JavaScript编写的,对我们使用blogger的来说,那是最好不过了,原因嘛,如下.
- blogger支持用户使用自己的JavaSript(这一点,国内的博客,我感觉应该支持的不多)
- 作为没有独立空间,独立域名的我们小小用户,我们没有地方存放那些Javascript和CSS文件,细心的SyntaxHighter都已经帮我们提供了,他们提供一个网上版本,host version。我使用的是里边的current版本。
具体的用法嘛,也很简单。网站上有很简洁的说明。
总的来说是分成这么几步
- 在你的html的head之间添加如需要用到的js和css文件
- 在head中用js调用SyntaxHighter.all()
- 在具体的地方插入你需要高亮着色的代码,一般放在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
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 newChumobject.
*
*/
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原来的规则配置就行了。
