2007-09
12

关于BS结构(浏览器-服务器结构)、HTTP基本原理等基础知识相信大家比我清楚, 我就不废话了。不知道的同学去google一下。

什么是Servlet和JSP

用Java开发Web应用程序时用到的技术主要有两种,即Servlet和JSP。 Servlet是在服务器端执行的Java程序,一个被称为Servlet容器的程序(其实就是服务器) 负责执行Java程序。而JSP(Java Server Page)则是一个页面, 由JSP容器负责执行。

阅读全文 »
2007-09
12

由于项目需要,最近不得不开始学习JSP和Struts了。 三年前曾经学过JSP,而且还做过一个小程序,不过现在早已经扔到九霄云外去了。 为了不落后于时代,决定开始从今天学习JSP!

虽然我很喜欢用vim,但开发Java程序首选环境是eclipse,咱也不能太无知了啊。 所以安装eclipse是第一件事儿。另外Web服务器Tomcat也是必不可少的。 下面是各个软件的下载链接。

eclipse我没有使用最新版本的3.3,而是用了稍老些的3.2.2。这个旧版本的还真不好找, 你如果是从eclipse的主页上进入下载页的话, 应当选择右侧的Browse downloads中的By Project,然后选择Eclipse Platform, 才能到达上述的下载页面。

至于JDK,大家应该都知道怎么装我就省略了。

阅读全文 »
2007-07
06

某个功能被编译到so文件中,那么如何通过php来调用它? 一个方法是写一个php模块(php extension),在php中调用该模块内的函数, 再通过该模块来调用so中的函数。下面做一个简单的例子,使用的操作系统是Fedora Core 6。

阅读全文 »
2007-05
14

我们知道VMware的硬盘镜像会随着空间利用的增加而自动增长, 但使用的空间变少时,硬盘镜像文件却不会随之减小。 幸好VMware提供了shrink工具可以将镜像瘦身到最小。 这时需要注意的一些事项总结如下:

  • 分区:不要使用RedHat Enterprise Linux的默认分区方式,默认的LVM分区无法瘦身。
  • Snapshot:分发之前不要做snapshot,有snapshot的系统无法瘦身。
  • 安装软件:如果你不用图形界面,就不要安装英文之外的语言包,它会给你安装许多输入法的东西,而这些东西都是要依赖于图形界面的。 不要安装开发包,那会一股脑地装进许多根本用不到的开发包。

基本的步骤如下:

  1. 建立虚拟机。
  2. 安装Linux,注意用手动分区,别选LVM,别装图形界面别装X,别装开发工具,别装英文之外的语言。
  3. 装好Linux之后用rpm手动安装需要的软件包。
  4. 配置你的开发环境。
  5. 用rpm删掉用不着的软件包,像蓝牙红外线glib图形库等。一般可将Linux瘦身到1G左右。
  6. 安装VMwareTools。这个工具需要 xorg-x11-libs 软件包,别忘了装。
  7. 在别的Linux机器上开个X-server,然后启动虚拟机上的VMwareTools,用shrink工具给镜像瘦身。

2007-02
11

关于Trac的介绍请参见前一篇文章

这里我们要构建一个基于Trac的项目管理系统。代码管理使用subversion,项目管理使用Trac。所需要的软件包如下:

很遗憾subversion现在仍然不支持最新的Apache 2.2系列,因此我们只能使用Apache 2.0系列。 而pyPgSQL 2.5.1版和ClearSilver 0.9.4不支持Python 2.5,因此只能用 Python 2.4。

另外,虽然Trac支持SQLite,但SQLite支持的SQL语法有限,实际应用中会有诸多不便, 因此我们选择了PostgreSQL作为后台数据库。

阅读全文 »
2007-02
10

今天介绍一下Trac,一个基于Web的bug管理系统。

Trac拥有强大的bug管理功能,并集成了Wiki用于 文档管理。它还支持代码管理工具Subversion,这样可以在 bug管理和Wiki中方便地参考程序源代码。

bug管理

在Trac中,项目中出现的问题称为ticket。像bug、功能改进、 TODO等都可以写成一个ticket。

  • 可设置ticket的优先级别。
  • 可以设置ticket的里程碑,表明这个ticket应在何时完成,并能够通过条形图方式显示里程碑的完成度。
  • 可以自定义条件生成bug报告,并可以通过SQL语句自定义报告的格式。

Subversion集成

通过Subversion集成,开发者可在Trac中以Web方式浏览代码库中各个版本的代码 和代码的修改历史,并可方便地比较各个版本间的差别。

Wiki

支持常用的Wiki语法。同时增加了许多bug管理的专用标记, 可以方便地创建到ticket、代码行甚至修改历史的链接。

Trac使用Python写成,后台使用SQLite或PostgreSQL数据库, 因此构筑一个完整的Trac系统需要安装以下软件:

  • Apache
  • Python
  • Subversion
  • PostgreSQL(可选)

下回继续介绍Trac的安装方法。


2007-02
05

如何统计代码的修改规模?如果肯花钱,则能买到统计代码修改规模的专业工具。这里介绍一种利用subversion和grep组合的方法简单统计代码修改规模。下面假设程序代码中的注释有两种格式,一种以 // 开头,另一种是Javadoc格式,即

/**
 * This is a function.
 * @param {String} v str
 */

为清晰起见,下面的统计命令分成了几行来写。

svn diff -r4:320                    # 获取rev4和rev320之间的差异
    | sed -e 's/\r//g'              # 删除行尾的换行符^M。Windows下必须
    | grep "^+[^+]"                 # 取得修改部分
    | grep -Ev "^+[[:space:]]*(\/\*)|(\*)|(\/\/)"     # 删除注释
    | grep -v "^+[[:space:]]*$"     # 删除空行
    | wc -l                         # 统计行数

2006-09
10

这篇文章的思想来自于Michael Feathers的Offensive Coding。标题直译过来是“攻击性编程”,但是为了避免与攻击性代码混淆。

这篇文章说,与其被动地做参数检查,不如一开始就避免传递错误参数。我们在书写一个函数时习惯于下意识地检查参数的合法性,不合法则返回null呀-1等表示错误的值。这种“防御”式的代码通常会导致不必要的代码复杂度。换个角度思考,如果能通过某种方法确保使用者不会使用错误的参数进行调用,就可以省却函数内部的参数检查。当然不是说参数检查有什么不对,而是要避免不必要的检查。

阅读全文 »
2006-08
13

前一讲中我们制作了一个能够随机更换背景的Flash。本章我们将制作一个稍有些用处的Flash - 时钟。 为了降低美工难度,我们仅做一个黑底白字的电子钟。

阅读全文 »
2006-08
11

适用于日本的手机。

现在绝大部分的手机都支持Flash功能,对于我们这些喜欢自定义手机的人自然会想到自制Flash做手机桌面和菜单等。那么我们就来研究一下Flash的制作方法。

阅读全文 »