囝泺的博客[www.bluenuo.cn]

网盘[disk.bluenuo.cn]
随笔 - 6, 文章 - 1, 评论 - 11, 引用 - 0
数据加载中……

2007年10月13日

通用离开页面前检查form内容是否发生改变

     摘要: 文/囝泺 www.bluenuo.cn 使用方法: 1.在需要的页面引入javascript核心代码(下面有,复制粘贴即可) 2.在body的onload事件中加入saveElementsOnLoad(myform);方法,其中myform是所验证的form对象 3.在body的onbeforeunload事件中加入return checkFormOnUnload(myform);其中my...  阅读全文

posted @ 2009-02-07 16:05 囝泺 阅读(1821) | 评论 (0)编辑 收藏

Linux下安装使用Subversion

    这几天把工作环境从windows下面转到linux了,因为用的java语言开发,项目移植还是蛮容易的,但不准备再用CVS来做版本控制系统了,决定换功能较强大的SVN,于是了解了下linux下安装Subversion的方法,现总结如下

文/囝泺 www.bluenuo.cn 


编译安装相关软件(我们采用源码编译安装)
a.httpd
下载地址:http://httpd.apache.org
下载
httpd-*.tar.gz (*为版本号,这里使用的是2.8.8)
安装
#tar -zxvf httpd-2.8.8.tar.gz
#cd httpd-2.8.8
#./configure --enable-dav --enable-so --enable-maintainer-mode
#make
#make install
b.
Berkeley DB
下载地址:http://www.oracle.com/technology/products/berkeley-db/index.html
下载
Berkeley DB 4.7.25.tar.gz
安装
#tar -zxvf db-4.4.20.NC.tar.gz
#cd db-4.4.20.NC/build_unix/
#../dist/configure --prefix=/usr/local/bdb
#make
#make install

c.Subversion
下载地址:http://subversion.tigris.org
下载
subversion-*.tar.gz subversion-deps-*.tar.gz包下下来,后一个包里是一些依赖程序,把2个包放在同一个目录下,解压缩,解压的文件会自动放到同一个文件夹下。
安装
#tar -zxvf subversion-1.2.3.tar.gz
#cd subversion-1.2.3
#./configure --with-berkeley-db=/usr/local/bdb --with-apxs=/usr/local/apache2/bin/apxs
#make
#make install

安装成功后你可以使用 #svnadmin --version检查是否安装成功
安装成功会出现
svnadmin,版本 1.4.6 (r28521)
   编译于 May  6 2008,19:55:08
…………
配置
配置Subversion
# mkdir /home/*/svn(*代表用户目录)
# cd /usr/local/subversion/bin
# ./svnadmin create /home/*/svn/test
这样我们就在svn下面建立了一个test仓库
修改httpd配置文件
# vi /usr/local/apache2/conf/httpd.conf
在最下面添加如下内容

LoadModule dav_svn_module modules/mod_dav_svn.so
LoadModule authz_svn_module modules/mod_authz_svn.so
<Location /svn>
DAV svn
SVNParentPath /home/*/svn/ //svn父目录
AuthzSVNAccessFile /home/*/svn/authz.conf //权限配置文件
AuthType Basic //连接类型设置
AuthName "Subversion.zoneyump" //连接框提示
AuthUserFile /home/*/svn/authfile //用户配置文件
Require valid-user //采用何种认证
</Location>
//其中authfile是通过"htpasswd [–c] /home/*/svn/authfile username password"来创建的
//"Require valid-user"告诉apache在authfile中所有的用户都可以访问。如果没有它,
//则只能第一个用户可以访问新建库
修改好后保存,重启apache
# ./usr/local/apache2/bin/apachectl restart

权限管理

1)增加用户
# ./usr/local/apache2/bin/htpasswd [-c] /home/*/svn/authfile wooin
//第一次设置用户时使用-c表示新建一个用户文件。回车后输入用户密码,完成对用户的增加
# ./usr/local/apache2/bin/htpasswd authfile 用户名(加入新的用户)
2)权限分配

# vi /home/svnroot/repository/authz.conf
   [test:/] //这表示,仓库test的根目录下的访问权限
   wooin = rw //test仓库wooin用户具有读和写权限
   bao = r //test仓库bao用户具有读权限
   [test2:/] //test2仓库根目录下的访问权限
   wooin = r //wooin用户在test2仓库根目录下只有读权限
   bao = //bao用户在 test2仓库根目录下无任何权限
   [/] //这个表示在所有仓库的根目录下
   * = r //这个表示对所有的用户都具有读权限
   #[groups] //这个表示群组设置
   #svn1-developers = wooin, bao //这个表示某群组里的成员
   #svn2-developers = wooin
   #[svn1:/]
   #@svn1-developers = rw //如果在前面加上@符号,则表示这是个群组权限设置

将这个设置完成后。重启Apache,就可以通过
http://localhost/svn/test
这个URL来访问仓库了

至于在eclipse使用svn就需要自己安装svn插件了

这里介紹Eclipse的SVN Plugin,叫做Subclipse,官方网站的下载地址在http://subclipse.tigris.org/,也提供了update site http://subclipse.tigris.org/update
Eclipse 的使用者可以通过Eclipse的插件自动下载和更新功能来安装这个插件,在Eclipse的菜单中选择Help->Software Updates->Find and Install-> Search for new features to install ->New Remote Site。URL中就输入http://subclipse.tigris.org/update,Eclipse就会自已安装上了.

安装完成后,在Eclipse的plugins中就会多了5个包,命名为org.tigris.subversion.*的都应该是了。打开 Eclipse,window->show view窗口中多了一个SVN文件夹,到此就证明svn插件成功的安装上了。具体的使用方法,在Eclipse的Help中有详细的帮助 Subclipse - Subversion Eclipse Plugin,教你一步一步的使用SVN的客户端了。如果你对subversion想进行深入的了解,那么看看help中的Version Control with Subversion一定有所收获,通过本人的观察,这份文档和sbuversion安装文件中提供的官方文档一样,这里看起来就更舒服些了。

注:本文是总结前辈资料的成果


囝泺,武汉科技学院
您可以通过其博客了解更多信息和文章:http://www.bluenuo.cn

posted @ 2008-05-09 11:41 囝泺 阅读(5206) | 评论 (0)编辑 收藏

easyJWeb+Eclipse快速入门

        由于学习需要,需要接触网站开发方面的技术,从VB、C、C++、java……也学了不少的语言,以前做网站都用jsp、servlet、javabean,没怎么用过MVC框架,自己也接触了一些STRUTS、HIBERNATE相关的技术,最近有幸认识到国人自己的开源项目easyJWeb(下面简称ejf),很是兴奋,花了半个小时研究了下ejf的使用,单是配置是非常简单的,下面总结一下第一次接触ejf的经验,也希望更多的人加入到国人自己的开源项目中来。
        ejf的官方网站是http://www.easyjf.com,如果需要深入了解可以直接去官网查看,本文只是一个入门教程。

文/囝泺 www.bluenuo.cn


获得ejf
        首先,我们去http://www.easyjf.com/news/download.html下载一个名为easyjweb-1.0-m3.zip(目前是这个版本),下载到EasyJWeb后,我们解压这个压缩文件,会得到类似图1所示的目录结构:

                                        图1
然后找个空目录,这里我们在e:\java路径下建立ejf目录,然后把ejf的lib目录下的easyjweb-core-1.0-m3.jar以及required目录下的全部jar拷贝到刚建立的文件夹下。

 

 用eclipse+MyEclipse建立新的web工程
        
新建web工程,然后右键点击新建的工程目录,点击propertitex,选择java build path设置环境变量,把刚建立的目录下的所有jar导入path,如果2

                                                            图2
修改web.xml
为了让web应用能使用EasyJWeb框架,需要在web.xml文件中添加一个servlet,并把所有扩展名为.ejf的请求映射给该servlet来处理。EasyJWeb的Servlet定义如下:

<servlet>
      
<servlet-name>easyjf</servlet-name>
      
<servlet-class>com.easyjf.web.ActionServlet</servlet-class>
      
<load-on-startup>1</load-on-startup>
  
</servlet>
  
<servlet-mapping>
      
<servlet-name>easyjf</servlet-name>
      
<url-pattern>*.ejf</url-pattern>
  
</servlet-mapping>
为了让Java Web应用能更好的处理中文字符,还需要在web.xml中添加一个字符编辑过滤器,配置如下:
  <filter>
      
<filter-name>CharsetFilter</filter-name>
      
<filter-class>com.easyjf.web.CharsetFilter</filter-class>
      
<init-param>
          
<param-name>encoding</param-name>
          
<param-value>UTF-8</param-value>
      
</init-param>
      
<init-param>
          
<param-name>ignore</param-name>
          
<param-value>true</param-value>
      
</init-param>
  
</filter>
  
<filter-mapping>
      
<filter-name>CharsetFilter</filter-name>
      
<servlet-name>easyjf</servlet-name>
  
</filter-mapping>

 另外,为了让EasyJWeb能自动找到你的应用中的所有Action,你需要在web.xml中添加一个名为defaultActionPackages的应用上下文件参数来告诉EasyJWeb扫描哪些包。配置如下:
<context-param>
   
<param-name>defaultActionPackages</param-name>
   
<param-value>ejf</param-value>
  
</context-param>
最后,得到一个完整的web.xml文件,如下
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" 
    xmlns
="http://java.sun.com/xml/ns/javaee" 
    xmlns:xsi
="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation
="http://java.sun.com/xml/ns/javaee 
    http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
>
    
<context-param>
   
<param-name>defaultActionPackages</param-name>
   
<param-value>ejf</param-value>
  
</context-param>
  
<welcome-file-list>
    
<welcome-file>index.jsp</welcome-file>
  
</welcome-file-list>
  
<servlet>
      
<servlet-name>easyjf</servlet-name>
      
<servlet-class>com.easyjf.web.ActionServlet</servlet-class>
      
<load-on-startup>1</load-on-startup>
  
</servlet>
  
<servlet-mapping>
      
<servlet-name>easyjf</servlet-name>
      
<url-pattern>*.ejf</url-pattern>
  
</servlet-mapping>
  
<filter>
      
<filter-name>CharsetFilter</filter-name>
      
<filter-class>com.easyjf.web.CharsetFilter</filter-class>
      
<init-param>
          
<param-name>encoding</param-name>
          
<param-value>UTF-8</param-value>
      
</init-param>
      
<init-param>
          
<param-name>ignore</param-name>
          
<param-value>true</param-value>
      
</init-param>
  
</filter>
  
<filter-mapping>
      
<filter-name>CharsetFilter</filter-name>
      
<servlet-name>easyjf</servlet-name>
  
</filter-mapping>
</web-app>
修改好后,我们把web工程放到web服务器上,这里用的是tomcat,在浏览器敲入http://localhost:8080/chytool/helloerror.ejf,因为没有这个页面,ejf将显示默认友情提示,如图3

                                            图3
第一个web页面
        下面我们建立第一个web页面,跟学习其他语言一样,我们用ejf版的helloworld作为入门,首先,我们在eclipse工程目录下建立ejf.hello.mvc包,然后新建class HelloAction.java,在ejf里面我们将这个类叫做action,源代码如下
package ejf.hello.mvc;
import java.util.Date;
import com.easyjf.web.WebForm;
import com.easyjf.web.core.AbstractPageCmdAction;
public class HelloAction extends AbstractPageCmdAction {
    
public void index(WebForm form) {
        form.addResult(
"msg""您好,这是EasyJWeb的第一个程序!");
        form.addResult(
"date"new Date());
        form.addResult(
"address""http://www.bluenuo.cn");
    }

}
接下来我们在web目录下的WEB-INF下建立如下目录架构WEB-INF\hello\view
然后建立index.html文件,文件内容如下
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  
<head>
    
<title>EasyJWeb示例程序</title>
    
    
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
    
<meta http-equiv="description" content="this is my page">
    
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
    
    
<!--<link rel="stylesheet" type="text/css" href="./styles.css">-->

  
</head>
  
  
<body>
    
<div><h4>EasyJWeb版本的HelloWorld程序</h4></div>
    
<div>
    来自EasyJWeb的问候:
<font color="#0000FF">${msg}</font><br>
    现在时间:
<font color="#0000FF">${date}</font><br>
    我的主页是:
<href="${address}">${address}</a>
    
</div>
  
</body>
</html>

整个目录结构如图4所示

        图4
然后导入web服务器目录,在浏览器敲入地址http://localhost:8080/chytool/hello.ejf
效果如图5所示

                                                图5
怎么样?easyJWeb就是这么简单,使用过struts的一定感受得到ejf是多么的容易上手
希望笔者的介绍已经把你领进ejf的大门,至于更深层的开发跟应用,还需要我们自己探讨

posted @ 2008-01-29 19:26 囝泺 阅读(3217) | 评论 (6)编辑 收藏

学swt的一个实践

        学了一段实践SWT/JFace,也学会了不少东西,java课程设计就用swt做了个类似QQ的聊天软件,分服务端与客户端,也花了2个多星期时间,现在把安装软件帖出来,下载地址在最下面,用的学校的服务器,如果失效了请联系我,需要源代码的可以发我mail:chybox@yahoo.cn,下面稍微介绍一下这个小软件。

文/囝泺 www.bluenuo.cn


        软件分服务端与客户端,所有通信信息都统一发送到服务端,由服务端通信协议负责分发到相应的客户端,协议我做得比较简单,通过一个MyMessage类来实例化一次具体的通信信息,其类结构如下

import java.io.Serializable;
import java.util.Date;


public class MyMessage implements Serializable{
    
public int src;//发送者的id号,其中id号注册后获得,唯一标识一个用户
    
public int des;//目的id号
    
public int cas;//协议号
    
public Usr usr;//用户信息,可以为null
    
public String message;//发送的消息
    
public Date date;//发送时间
    
public MyMessage(){
        src
=0;
        des
=0;
        cas
=0;
        usr
=null;
        message
=null;
    }

}


协议信息比较简单,不过处理这个聊天的事务已经足够了。

客户端也有个完全一样的类,只是协议的具体内容不太一样,同时,客户端和服务端还用了不少的范型结构,如LinkedList<>,HashMap<>等
下面帖几张软件的截图

                   图一:客户端登陆界面

  图2:客户端好友面板

                 图片3:客户端消息对话框

    图片4:服务端主界面

                          图片5:服务端数据库管理界面
以上是整个软件大体上的界面,需要了解更多可以通过下面的链接下载,安装包自带jre,使用的时候需要把客户端的host.ini文件里的ip改成localhost或者改成你自己的ip,服务端必须先通过管理工具开启用户注册,否则无法注册。
服务端下载地址:http://edu.bluenuo.cn/myfiles/chyqq_ser_windows_2008beta.exe
客户端下载地址:http://edu.bluenuo.cn/myfiles/chyqq_windows_2008beta.exe

需要源代码可以通过我的mail联系我chybox@yahoo.cn


 

posted @ 2008-01-25 12:40 囝泺 阅读(503) | 评论 (5)编辑 收藏

主窗口居中显示

文/囝泺 www.bluenuo.cn

 

shell = new Shell();
shell.setSize(
500375);
    Monitor primary = shell.getMonitor();//获得屏幕
    Rectangle bounds 
= primary.getBounds ();//获得屏幕尺寸
    Rectangle rect 
= shell.getBounds ();//获得窗口尺寸
    
int x = bounds.x + (bounds.width - rect.width) / 2;//计算x坐标
    
int y = bounds.y + (bounds.height - rect.height) / 2;//计算y坐标
    
if (x < 0)//判断坐标是否在屏幕之外
        x 
= 0;
        
if (y < 0)
            y 
= 0;
        shell.setLocation (x, y);//设置窗口坐标
    shell.open();

posted @ 2007-12-16 15:35 囝泺 阅读(354) | 评论 (0)编辑 收藏

GRUB唤醒沉睡的SUSE

用linux也一段时间了,前前后后装了不少版本的linux,也看了不少linux的书,但在各种发行版中,还是对suse情有独钟,因为它的友好的界面还有广泛的硬件支持,特别是suse附带了功能齐全的软件,就连播放器的解码也做得非常周到,基本上能播放大多数格式的电影跟音乐了。但由于几个月前重装windows系统,把引导破坏了,suse就一直沉睡在硬盘中,今天,借用grub,又把沉睡的suse唤醒,在使用grub的时候也遇到了不少麻烦,下面做个总结,好让下次少走点弯路。
文/囝泺 www.bluenuo.cn



首先把GRUB下下来,为方便下次使用我把grub支持多文件系统的版本放在我的网盘http://disk.bluenuo.cn的linux目录下,下载后提取grldr文件到C:\,现在只需要把系统的启动菜单中加上C:\GRLDR=My Grub一行,下次启动的时候就可以通过My Linux Suse10这个菜单进入grub,但现在只能使用命令来使用GRUB,接下来我们为GRUB加入菜单。
在C:\下建立boot文件夹,然后进入刚建立的boot文件夹建立grub文件夹,最后,在grub目录下建立menu.lst文件,至于menu.lst里面写什么你可以查阅相关资料,笔者是通过光盘引导了以前的linux系统,仿照/boot/grub下面的menu.lst写的,原linux下的menu.lst如下

# Modified by YaST2. Last modification on 日  4月  1 06:48:42 UTC 2007
color white/blue black/light-gray
default 1
timeout 8
gfxmenu (hd1,7)/boot/message

###Don't change this comment - YaST2 identifier: Original name: linux###
title SUSE Linux Enterprise Desktop 10
    root (hd1,7)
    kernel /boot/vmlinuz root=/dev/sda8 vga=0x314    resume=/dev/sda7  splash=silent showopts
    initrd /boot/initrd

###Don't change this comment - YaST2 identifier: Original name: windows###
title Windows
    chainloader (hd0,0)+1

###Don't change this comment - YaST2 identifier: Original name: failsafe###
title Failsafe -- SUSE Linux Enterprise Desktop 10
    root (hd1,7)
    kernel /boot/vmlinuz root=/dev/sda8 vga=normal showopts ide=nodma apm=off acpi=off noresume nosmp noapic maxcpus=0 edd=off 3
    initrd /boot/initrd


由于现在我只需要引导suse10,所以我把启动设置跟最后一条复制到我的menu.lst里面就可以了
# Modified by YaST2. Last modification on 日  4月  1 06:48:42 UTC 2007
color white
/blue black/light-gray
default 1
timeout 
8
###Don't change this comment - YaST2 identifier: Original name: linux###
title SUSE Linux Enterprise Desktop 10
    root (hd1,7)
    kernel /boot/vmlinuz root=/dev/sda8 vga=0x314    resume=/dev/sda7  splash=silent showopts
    initrd /boot/initrd
其中红色标记的因个人系统而定
现在grub已经能唤醒沉睡的suse了,至于grub更详细的使用,可以在网上搜索grub使用的文章,这里不在细述

囝泺,武汉科技学院
您可以通过其博客了解更多信息和文章:http://www.bluenuo.cn

posted @ 2007-10-16 16:41 囝泺 阅读(395) | 评论 (0)编辑 收藏

软件的可靠性

这几天老师叫我看了一本有关软件可靠性的书,书名是《软件可靠性、安全性与质量保证》,因为要写一个项目申请,而且时间仓促,也是大概的浏览了下,下面把我的一些心得体会写出来。

文/囝泺 www.bluenuo.cn

软件的可靠性指产品在规定的时间内和规定的条件下,完成规定工作任务的能力。在一个投入使用的软将项目中,可靠性表现在软件是否能稳定的运行、能否处理用户的错误输入、能否抵抗得住非法用户的入侵……

作为用户,更关心的是一个完成的软件的可靠性,然而,作为开发人员我们必须在整个软件生命周期里在兼顾用户的各种需求时,全面满足软件的可靠性要求,软件的可靠设计应该和软件的常规设计密切结合,贯穿在常规设计过程的始终。而且,软件可靠性设计是可行的,在整个设计过程中软件的可靠性是可以预计的,我们有很多成熟的软件可靠性预计模型可供选用,如JELINSKI-MORANDA模型、集合递减模型……

虽然软件可靠性设计看起来比较繁杂,但其全部内容可归纳为四个类型:避错设计、查错设计、改错设计、容错设计,这四个类型并不是独立存在的,而是相辅相成,后者弥补了前者的遗漏与不足,同时我们必须遵循可靠性设计中的两个原则:一是控制程序的复杂程度;二是与用户保持紧密联系。这样,才能使我们的软件在兼顾用户的各种需求时来全面满足软件的可靠性要求。

囝泺,武汉科技学院
您可以通过其博客了解更多信息和文章:http://www.bluenuo.cn

posted @ 2007-10-13 11:16 囝泺 阅读(692) | 评论 (0)编辑 收藏