Thinking in Patterns: Preface

Thinking in Patterns with Java V0.9: Preface: TIPatterns.htm#_Toc41169678

 1, The sections name of today's learning:

   Section: Preface

                              

 2, What is it talk about in this section?  

    This section is short, but it isn't no important. It tells us:

    1), this book come from Bruce sir and his friend's many years' experience.

    2), Bruce sir and his friend has a really good paterner relationship, they are really friend with same interesting.

    3), Bruce is focusing on Python now, but this book isn't stop writing.

 3, My comments and feeling for the content?                            

    Although this book written at 2003, and only version 0.9 now. I still want learn it, because I have read Thinking in Java, another book of his.

    I found I like his writing fashion, and all in the book reflect Bruce's wisdom, track the path he give us, I can learn Java with good interesting and well understanding. I haven't to do some more choice in learning books. Because I know I can get many from this book. Bruce has much experience in C++, JAVA, Python, OOP. So I think his Thinking in Patterns is must a good one, in the other words, must not a bad one.

    Bruce and his friend has a good friendship, this make them work happy together. They have good enviriment for their reseach.

 

 4, My questions about the program itself:

   no.                             

 5, My questions about the english language:      

   Too many, like below:

   Strange words:

   given the seminar, urge, pondering, appreciation, superb

   Strange sentence:

   I find this prospect to be much more exciting than the idea of struggling through another language tutorial.

准备用英文版的Thinking in Patterns学习设计模式

今天,正式把这本电子书的快捷方式放在桌面上,另外,下载安装了firefox的划词翻译插件:DictCN 2.2,用来翻译生词。

现在,网上已经有了这本电子书的中文版,但我还是想看英文版,因为想一举两得,既学了设计模式,又学了英语。我会把学习过程中碰到的包括语言在内的问题记下来。

现在,单位的事情不多,可以用这个时间认真学习一下设计模式。不过,单位的机器已经失盗,自己的那台老古董装的是文本模式的redhat linux 9.0,有空的时候在上面看看文章和网页还行,可就是碰到生词没有办法划词翻译。有点不爽。但是也只有将就了。

路还是要走的,不能因为怕走错路就一直呆在原地不动。学设计模式,开始吧。

如何安装Firefox扩展文件?(转帖)

如何安装Firefox扩展文件? (转自:http://www.firefox-china.com/edu/2006/26.html

文档来源:firefox-火狐浏览器 文档作者: 火狐 发布时间:2006-06-24

扩展文件通常是xpi文件格式(以.xpi结尾).有三种安装方法:

1,直接拖拽到Firefox浏览器的窗口里或扩展窗口里

2,点击  '菜单"--"工具"--''扩展'',把.xpi文件拖进弹出窗口里,稍后就可以看到Firefox会询问你是否要安装这个插件,点击是,并重启Firefox浏览器

3,鼠标右键点xpi文件,选打开方式,在打开方式里选firefox,设置关联。以后只要双击xpi文件就自动安装了

Eclipse使用技巧(转)

转自:(http://www.javaresearch.org/article/57437.htm

用了eclipse有一段时间了,就是没有系统的学习过。下面这篇转帖不错,看了下觉得有收藏价值就贴在这里了。

正文

××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××

Eclipse使用技巧

jiqimiao1982 转贴   更新:2006-11-04 12:45:09  版本: 1.0  

热键篇:

Template:Alt + .

修改处:Window->Preference->Workbench->Keys->Command->Edit->Content Assist。

个人习惯:Shift+SPACE(空白)。

简易说明:编辑程序代码时,打sysout +Template启动键,就

会自动出现:System.out.println(); 。

设定Template的格式:窗口->喜好设定->Java->编辑器->模板。

程序代码自动排版:Ctrl+Shift+F

修改处:窗口->喜好设定->工作台->按键->程序代码->格式。

个人习惯:Alt+Z。

自动排版设定:窗口->喜好设定->Java->程序代码格式制作程序。

样式页面->将插入tab(而非空格键)以内缩,该选项取消勾选

,下面空格数目填4,这样在自动编排时会以空格4作缩排。

快速执行程序:Ctrl + F11

个人习惯:ALT+X

修改处:窗口->喜好设定->工作台->按键->执行->启动前一次的启动作业。

简易说明:第一次执行时,它会询问您执行模式,

设置好后,以后只要按这个热键,它就会快速执行。

<ALT+Z(排版完)、ATL+X(执行)>..我觉得很顺手^___^

自动汇入所需要的类别:Ctrl+Shift+O

简易说明:

假设我们没有Import任何类别时,当我们在程序里打入:

BufferedReader buf =

new BufferedReader(new InputStreamReader(System.in));

此时Eclipse会警示说没有汇入类别,这时我们只要按下Ctrl+Shift+O

,它就会自动帮我们Import类别。

查看使用类别的原始码:Ctrl+鼠标左键点击

简易说明:可以看到您所使用类别的原始码。

将选取的文字批注起来:Ctrl+/

简易说明:Debug时很方便。

修改处:窗口->喜好设定->工作台->按键->程序代码->批注

将选取的文字取消批注:Ctrl+简易说明:同上。

修改处:窗口->喜好设定->工作台->按键->程序代码->取消批注

视景切换:Ctrl+F8

个人习惯:Alt+S。

修改处:窗口->喜好设定->工作台->按键->窗口->下一个视景。

简易说明:可以方便我们快速切换编辑、除错等视景。

3.0里Ctrl+Alt+H可以看到调用当前member的方法,而且可以一层一层上去.

Ctrl+O可以快速切到其他方法.

密技篇:

一套Eclipse可同时切换,英文、繁体、简体显示:

1.首先要先安装完中文化包。

2.在桌面的快捷方式后面加上参数即可,

英文-> -nl "zh_US"

繁体-> -nl "zh_TW"

简体-> -nl "zh_CN"。

(其它语系以此类推)

像我2.1.2中文化后,我在我桌面的Eclipse快捷方式加入参数-n1 "zh_US"。

"C:\Program Files\eclipse\eclipse.exe" -n "zh_US"

接口就会变回英文语系噜。

利用Eclipse,在Word编辑文书时可不必将程序代码重新编排:

将Eclipse程序编辑区的程序代码整个复制下来(Ctrl+C),直接贴(Ctrl+V)到

Word或WordPad上,您将会发现在Word里的程序代码格式,跟Eclipse

所设定的完全一样,包括字型、缩排、关键词颜色。我曾试过JBuilder

、GEL、NetBeans...使用复制贴上时,只有缩排格式一样,字型、颜

色等都不会改变。

外挂篇:

外挂安装:将外挂包下载回来后,将其解压缩后,您会发现features、

plugins这2个数据夹,将里面的东西都复制或移动到Eclipse的features

、plugins数据夹内后,重新启动Eclipse即可。

让Eclipse可以像JBuilderX一样使用拖拉方式建构GUI的外挂:

1.Jigloo SWT/Swing GUI Builder :

http://cloudgarden.com/jigloo/index.html

下载此版本:Jigloo plugin for Eclipse (using Java 1.4 or 1.5)

安装后即可由档案->新建->其它->GUI Form选取要建构的GUI类型。

2.Eclipse Visual Editor Project:

http://www.eclipse.org/vep/

点选下方Download Page,再点选Latest Release 0.5.0进入下载。

除了VE-runtime-0.5.0.zip要下载外,以下这2个也要:

EMF build 1.1.1: (build page) (download zip)

GEF Build 2.1.2: (build page) (download zip)

我只测试过Eclipse 2.1.2版本,使用上是OK的!

3.0版本以上的使用者,请下载:

Eclipse build I20040324:

1.0.0 Stream Integration Build I20040325 Thu, 25 Mar 2004 -- 12:09 (-0500)

1.0.0 Stream Nightly Build N20040323a Tue, 23 Mar 2004 -- 13:53 (-0500)

注意:3.0以上版本,仅build I20040324可正常使用。

安装成功后,即可由新建->Java->AWT与Swing里选择

所要建构的GUI类型开始进行设计。VE必须配合着对应

版本,才能正常使用,否则即使安装成功,使用上仍会

有问题。

使用Eclipse来开发JSP程序:

外挂名称:lomboz(下载页面)

http://forge.objectweb.org/project/showfiles.php?group_id=97

请选择适合自己版本的lomboz下载,lomboz.212.p1.zip表示2.1.2版,

lomboz.3m7.zip表示M7版本....以此类推。

lomboz安装以及设置教学:

Eclipse开发JSP-教学文件

Java转exe篇:

实现方式:Eclipse搭配JSmooth(免费)。

1.先由Eclipse制作包含Manifest的JAR。

制作教学

2.使用JSmooth将做好的JAR包装成EXE。

JSmooth下载页面:

http://jsmooth.sourceforge.net/index.php

3.制作完成的exe文件,可在有装置JRE的Windows上执行。

Eclipse-Java编辑器最佳设定:

编辑器字型设定:工作台->字型->Java编辑器文字字型。

(建议设定Courier New -regular 10)

编辑器相关设定:窗口->喜好设定->Java->编辑器

外观:显示行号、强调对称显示的方括号、强调显示现行行、

显示打印边距,将其勾选,Tab宽度设4,打印编距字段设80。

程序代码协助:采预设即可。

语法:可设定关键词、字符串等等的显示颜色。

附注:采预设即可。

输入:全部字段都勾选。

浮动说明:采预设即可。

导览:采预设即可。

使自动排版排出来的效果,最符合Java设计惯例的设定:

自动排版设定:窗口->喜好设定->Java->程序代码制作格式。

换行:全部不勾选。

分行:行长度上限设:80。

样式:只将强制转型后插入空白勾选。

内缩空格数目:设为4。

Eclipse的教学文件:

扩充Eclipse的Java 开发工具(中文)

使用Eclipse开发J2EE 应用程序(中文)

使用Eclipse平台进行除错(中文)

用Eclipse进行XML 开发(中文)

开发Eclipse外挂程序(中文)

国际化您的Eclipse外挂程序(英文)

将Swing编辑器加入Eclipse(英文)

如何测试你的Eclipse plug-in符合国际市场需求(英文)

Eclipse的相关网站:

http://eclipse-plugins.2y.net/eclipse/index.jsp

http://www.eclipseplugincentral.com/

Eclipse相关教学[简体]

                                                             转帖完毕

restart english diary writing

The spare in the past month, I was doing some changing on website: relocate our website, rewrite the homepage, do the 301 redirection, cut the old struts dynic navigation system, and rewrite the navigation system of website, etc..

So, I almost forgot writing english diary, even learning english in any way.

Engish is a very useful tool, this can't be changed, must learn it persistly.

How to learn it?

1, Learning some thing about program which written in english, like Eric's Thinking in Pattern. I have ever known a famous game programer named "Feng Yun" haven said:"If you want to learn a program techniqe, a best way is to read a relative book written in english." He says: In this way, you must study every part of the book. I think he is right.

2, See some english film and TV program, I have mete a method at http://seawan.nyist.net/kle/index.php;

3, Restarting reading yahoo news at my mobile phone through GPRS.

There are many ways to do a thing, but for me, maybe the simplest way is the best way for me. The persistent is the most important thing, not only for learning english.

世界上什么最大?

您先不要看我后面的回答,自己先想一下,看是不是“英雄所见略同”:)

我的答案是“心”最大,不是有句古话叫“人心不足蛇吞象”吗?当然这是一句贬义的。也许有的朋友会说宇宙最大。宇宙还不是“心”想出来的。

为什么“心”最大呢?“心”还可以把一点小事变成大事,一个平凡的人变得伟大。不是说:“千里送鹅毛,礼轻仁义重”吗?鹅毛虽小,但是它承载的情义是太深了。还有,如果有同样两个人施舍10块钱,一个人自己温饱不足,一个人家财万贯,您说他们谁更伟大呢?

为什么会想到这个,是因为今天早上女儿的一件小事触动了我。今天早上,我在外面买了点馒头当早餐。吃着吃着,女儿忽然拿起一个馒头说:这个馒头给婆婆爷爷吃。家里有人不以为然,而我则坚决支持女儿,让她把馒头给婆婆爷爷送去。一颗幼小的心灵萌发的孝敬长辈的心,虽然只是一个馒头,难道不值得我们呵护和鼓励吗?

所以,我说“心”是最大的。引申到人与人相处,只要彼此的心意是好的,没有什么能够打破人们之间良好的相处。

在eclipse中javabean中的boolean型变量不要用"is"开头

在eclipse中(2.* 和 3.*)都试过,如果选定属性用eclipse的自动生成getter和setter 的方法,则在boolean类型中不能以is开头。如下面的

boolean b 和 boolean isB 自动产生的getter和setter都为:


public boolean isB() {

return b;

}

public void setB(boolean b) {

this.b = b;

}

下面试了在eclipse中多种类型的数据的自动生成getter和setter方法,方法是用鼠标选定要生成getter和setter的属性,再选择菜单中的:Source->Generate Getters and Setters...:


public class T {

private int isI;

private String isS;

private boolean b;

// private boolean isB;

private Boolean isBool;

public boolean isB() {

return b;

}

public void setB(boolean b) {

this.b = b;

}

public Boolean getIsBool() {

return isBool;

}

public void setIsBool(Boolean isBool) {

this.isBool = isBool;

}

public int getIsI() {

return isI;

}

public void setIsI(int isI) {

this.isI = isI;

}

public String getIsS() {

return isS;

}

public void setIsS(String isS) {

this.isS = isS;

}

}

搭建环境

一、安装Ruby

http://rubyinstaller.rubyforge.org/上下载最新的Ruby one-click Installer for windows。

所有选项都选择。一顿经典的next之后,我们就安装了Ruby。

二、使用Rubygems安装Rails

因为刚才经典的next,我们已经成功的安装了Rubygems,利用它可以安装Rails。

gem包含很多子命令和相应的选项,感兴趣的可以在dos窗口下输入gem -h来查看帮助。

好了,让我们用一条语句来安装Rails。

首先确保你的计算机连接到了internet。

在dos窗口下输入:gem install rails --remote

等待吧。。。

有yes or no的地方按“y”

三、数据库的选择

要说Rails对数据库的连接,用mysql吧,这可是官方推荐的。至于mysql安装与配置,再次不赘诉了。

现在,我们已经搭建了开发Rails应用的环境,马上就要开始Rails应用的编写了。呵呵

Ruby简介

Ruby 是由日本人松本行弘发明的一种面向对象的脚本语言。虽然很多语言都宣称自己是面向对象的,但是每种语言的解释都不一样,大多是以它们自己特有的方式来解释什么是面向对象,而实际情况中,这些面向对象语言又都采用了很多非面向对象的做法。以 Java 为例:如果你想对一个数字取绝对值,你会怎么做呢? java 的做法是

int c = Math.abs(-166);

也就是将一个数值传递给 Math 类的一个静态函数 abs 处理。为什么这么做?因为在 java 中, 数值是基本类型不是类。

而在 Ruby 中,任何事物都是类, 也就是说,数字 –166 就是对象,取绝对值这样的操作应该属于数字本身,所以”Ruby 方式”的做法就是:

c = -166.abs

这种做法是不是更直观一点。

接着我们来介绍一下 ruby 语言的一些简单特点。

如何定义函数

def hello(name)

result = "hello, " + name

return result

end

这就是一个最简单的函数定义。Ruby 以 def 开始一个函数定义,后跟着 函数名, 然后是 参数,但是参数不必非要放在括号中, 你可以这样定义 def hello name ,之所以要用括号是为了更清晰。在 ruby 中你可以用多种方式来完成同一件事情,这也是 ruby 的设计思想。

Hello 函数很简单, 将参数和 “hello, “字符串组合在一起,赋值给临时变量 result ,然后再返回 result。 你会注意到 result 变量并没有申明,因为在 ruby 中无需申明,变量在赋值中自动使用。 另外 ruby 中不需要使用 ; 来结束每个语言,只要保持每条语句在单独一行就可以。 Ruby 也不包含 {} 来定义块结构, if , when 函数都以一个 end 关键字来结束。缩进不是语法(python 程序员要失望了)。第一次使用ruby 我也有点不习惯,因为我认为python 语言的缩进语法可以使得阅读程序代码更容易一些。但是学习了一段时间后,我发现缩进语法并不是那么重要,Ruby 本身带来的帮助远比这个更重要。而且代码的易读性也不是由缩进来改善的.此外上面的代码还可以更简化。

def hello (name)

" hello, #{name}"

end

在 ruby 中,函数的最后一条语句如果是表达式,那么它就作为返回值。在上面的代码中,用到了另外一个概念,就是表达式插入,字符串可以用单引号和双引号来括起来。但是两者还是有一点区别。区别在于处理时间上的不同。如果使用单引号,那么处理的时间很短。如果使用双引号,那么你可以插入变量,表达式,还有就是转意字符的替换,最常见的是 \n,\t 等。 以上面的代码为例 字符串中插入了变量 name ,字符串中插入变量以 # 开始,变量放在{}中。 但是特殊变量可以不用 {}. 那么什么是特殊变量呢。这个也是 ruby 特别的地方。在 Ruby 中,全局变量以 $开头,静态变量,也就是类变量以 @@ 开头,实例变量以 @ 开头。如果在字符串中引用 实例变量,你可以这么写。

def hello

" hello, #@name"

end

关于变量和基本结构我们就简单介绍这些,下面我们要介绍一个重要的Ruby 概念。就是 interator (迭代器)。 这个概念遍布在很多 ruby 代码中,也是最常见的 ruby way 。正是因为 interator ,在 ruby 程序中,你很少会看到循环的使用。 举个最简单的例子,如何打印从 1 到 6 的结果。

在 java 等语言中,我们的实现方法是:

for(int i = 1; i<6;i++) {

System.out.println(i);

}

而在 ruby 中,一切皆为对象,数字本身就是对象(我们在前面已经介绍过了),数字本身有它自己的迭代器 times 。那么让我们看看它的实现。

6.times {|i| p i }

是不是很简单。

迭代器的概念很有趣,它是如何在 ruby 中实现的呢。每个函数可以不光带有参数,还可以在参数后面带一个代码块。代码块在ruby 中是以 {} 和 do end 来包围起来的。通常如果是单行使用 {} ,如果是多行这使用do end 。这并非强制,只是习惯性用法。

代码块和参数并不相同,它和函数的执行可以说是并行的,确切的说是接替进行。如果在函数内部如何在运行过程中碰到了 yield ,它就会将函数执行过程交给函数附带的代码块来执行,代码快执行完了,执行流程转到函数内部继续运行。似乎很难理解,以下面这段代码来理解可以会容易一些。

def callBlock

yield

yield

end

callBlock { puts "In the block" }

输出:

In the block

In the block

CallBlock 函数中只有两个 yield 语句,它在执行过程中将执行权交给 函数附带的 block 运行,block 输出字符串 "In the block" ,这样最终结果就是输出两行 "In the block" 。 在函数内部使用 yield 还可以带任意多参数。比如

yield a, b, c

这三个参数对应代码块中的三个参数 {|x,y,z| p x y z }