2006年05月10日

idea4.5在windows2003上安装时被windows的安全程序禁止了,idea5.0没有这样的问题。解决的办法是将idea4.5的安装包的文件扩展名改成rar,也就是压缩文件的格式,然后解压缩,在解压缩后的文件夹下找到windows文件夹中的install就可以安装了。

“以前的某个程序安装已在安装计算机上创建挂起的文件操作。运行安装程序之前必须重新启动计算机。”
  接着按照提示重启计算机,再安装,仍然出现同样的提示。再网上查找相关资料,得知是安装程序在先前的安装过程中在系统注册表留下某些信息,导致不能安装。于是经过多次试,发现删除掉如下键值信息即可安装:
  在运行窗口输入regedit,打开注册表编辑器,在HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\Session Manager中找到PendingFileRenameOperations,删除该键值,关闭注册表编辑器。重新安装SQL Server 2000,哈哈,久违的安装界面终于浮出水面了。
  这个键值是安装程序暂挂项目,只要找到对应的应用程序清除掉就行了。

2006年05月08日

<HTML>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>Chromeless Window</title>
<SCRIPT LANGUAGE="JScript">
/*
 This following code are designed and writen by Windy_sk <windy_sk@126.com>
 You can use it freely, but u must held all the copyright items!
 2003-12-23 modified
 Special Thanks For andot
*/

var CW_width = 400;
var CW_height = 300;
var CW_top = 100;
var CW_left = 100;
var CW_url = "/";
var New_CW = window.createPopup();
var CW_Body = New_CW.document.body;
var content = "";
var CSStext = "margin:1px;color:black; border:2px outset;border-style:expression(onmouseout=onmouseup=function(){this.style.borderStyle=’outset’}, onmousedown=function(){if(event.button!=2)this.style.borderStyle=’inset’});background-color:buttonface;width:16px;height:14px;font-size:12px;line-height:11px;cursor:Default;";

function insert_content(){
 var temp = "";
 CW_Body.style.overflow  = "hidden";
 CW_Body.style.backgroundColor = "white";
 CW_Body.style.border  = "solid black 1px";
 temp += "<table width=100% height=100% cellpadding=0 cellspacing=0 border=0>";
 temp += "<tr style=’;font-size:12px;background:#0099CC;height:20;cursor:default’ ondblclick=\"Max.innerText=Max.innerText==’1′?’2′:’1′;parent.if_max=!parent.if_max;parent.show_CW();\" onmouseup=’parent.drag_up(event)’ onmousemove=’parent.drag_move(event)’ onmousedown=’parent.drag_down(event)’ onselectstart=’return false’ oncontextmenu=’return false’>";
 temp += "<td style=’color:#ffffff;padding-left:5px’>Chromeless Window For IE6 SP1</td>";
 temp += "<td style=’color:#ffffff;padding-right:5px;’ align=right>";
 temp += "<span id=Help  onclick=\"alert(‘Chromeless Window For IE6 SP1  -  Ver 1.0\\n\\nCode By Windy_sk\\n\\nSpecial Thanks For andot’)\" style=\""+CSStext+"font-family:System;padding-right:2px;\">?</span>";
 temp += "<span id=Min   onclick=’parent.New_CW.hide();parent.blur()’ style=\""+CSStext+"font-family:Webdings;\" title=’Minimum’>0</span>";
 temp += "<span id=Max   onclick=\"this.innerText=this.innerText==’1′?’2′:’1′;parent.if_max=!parent.if_max;parent.show_CW();\" style=\""+CSStext+"font-family:Webdings;\" title=’Maximum’>1</span>";
 temp += "<span id=Close onclick=’parent.opener=null;parent.close()’ style=\""+CSStext+"font-family:System;padding-right:2px;\" title=’Close’>x</span>";
 temp += "</td></tr><tr><td colspan=2>";
 temp += "<div>";
 temp += "这里是网页内容<br>这里是网页内容<br>…";
 temp += "</div>";
 temp += "</td></tr></table>";
 CW_Body.innerHTML = temp;
}

insert_content();

var if_max = true;
function show_CW(){
 window.moveTo(10000, 10000);
 if(if_max){
  New_CW.show(CW_top, CW_left, CW_width, CW_height);
  if(typeof(New_CW.document.all.include)!="undefined"){
   New_CW.document.all.include.style.width = CW_width;
   New_CW.document.all.Max.innerText = "1";
  }
  
 }else{
  New_CW.show(0, 0, screen.width, screen.height);
  New_CW.document.all.include.style.width = screen.width;
 }
}

window.onfocus  = show_CW;
window.onresize = show_CW;

// Move Window
var drag_x,drag_y,draging=false

function drag_move(e){
 if (draging){
  New_CW.show(e.screenX-drag_x, e.screenY-drag_y, CW_width, CW_height);
  return false;
 }
}

function drag_down(e){
 if(e.button==2)return;
 if(New_CW.document.body.offsetWidth==screen.width && New_CW.document.body.offsetHeight==screen.height)return;
 drag_x=e.clientX;
 drag_y=e.clientY;
 draging=true;
 e.srcElement.setCapture();
}

function drag_up(e){
 draging=false;
 e.srcElement.releaseCapture();
 if(New_CW.document.body.offsetWidth==screen.width && New_CW.document.body.offsetHeight==screen.height) return;
 CW_top  = e.screenX-drag_x;
 CW_left = e.screenY-drag_y;
}
</SCRIPT>
</HTML>

转载地址:无边框窗口(Chromeless Window):http://www.51windows.net/data/files/file_766.asp

2006年05月03日

     最近的项目在用ibatis进行数据库操作,由于这方面的资料相对不多,为了让初学者容易上手,我写了一个比较简单的ibatis配置,没有用接口,工厂和DAO进行操作,目的就是希望让大家更容易理解。IDE 用idea5.0,数据库是用SQLserver2000,SQL脚本如下:

if exists (select * from dbo.sysobjects where id = object_id(N’[dbo].[userInfo]‘) and OBJECTPROPERTY(id, N’IsUserTable’) = 1)
drop table [dbo].[userInfo]
GO

CREATE TABLE [dbo].[userInfo] (
[id] [int] IDENTITY (1, 1) NOT NULL ,
[userName] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL
) ON [PRIMARY]
GO

文件的目录结构如下(在idea5.0中):



每个文件的源代码如下:
UserInfo.java


package module;

public class UserInfo {
private int id;
private String userName;

public int getId() {
return id;
}

public void setId(int id) {
this.id = id;
}

public String getUserName() {
return userName;
}

public void setUserName(String userName) {
this.userName = userName;
}
}

UserInfo.xml

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE sqlMap
PUBLIC "-//iBATIS.com//DTD SQL Map 2.0//EN"
"http://www.ibatis.com/dtd/sql-map-2.dtd">
<!–这里只写了一个select,其他写法请参考有关书籍–>
<sqlMap namespace="userInfo">
<!–定义映射文件的别名,比如此XML文件中就用u代替了module.UserInfo,这样就不用在每个地方写出class的全名–>
<typeAlias alias="u" type="module.UserInfo"/>

<select id="getUser" resultClass="u" parameterClass="u">
select * from userInfo where id=#id#
</select>

</sqlMap>

SqlMapClientInit.java

package init;

import com.ibatis.sqlmap.client.SqlMapClient;
import com.ibatis.sqlmap.client.SqlMapClientBuilder;
import com.ibatis.common.resources.Resources;

import java.io.Reader;
//初始化SqlMapClient;

public class SqlMapClientInit {
private static SqlMapClient sqlMapClient = null;

static {
try {
String resource = "conf/sqlmapconfig.xml";

Reader reader = null;
reader = Resources.getResourceAsReader(resource);

if (sqlMapClient == null) {
sqlMapClient = SqlMapClientBuilder.buildSqlMapClient(reader);
}
} catch (Exception e) {
e.printStackTrace();
}
}

public static SqlMapClient getSqlMapClient() {
return sqlMapClient;
}
}

 

db.properties

#用来设置数据库的连接参数;根据用户的具体环境设置;
driverClassName=com.microsoft.jdbc.sqlserver.SQLServerDriver
url=jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=Test;SelectMethod=cursor
username=sa
password=1111

sqlmapconfig.xml

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE sqlMapConfig
PUBLIC "-//iBATIS.com//DTD SQL Map Config 2.0//EN" "http://www.ibatis.com/dtd/sql-map-config-2.dtd">
<!–这是ibatis的主要配置文件–>
<sqlMapConfig>
<!–引用数据库的配置文件–>
<properties resource="conf/db.properties" />
<!–有关这个配置文件每个参数的意义,请参考具体ibatis的资料,一般按照他的默认设置就行了–>
<!–useStatementNamespaces=“true”:用来设置是否使用statement的命名空间
比如在Test的main方法中调用UserInfo.xml的getUser使用了命名空间加方法名的方式
newUser=(UserInfo)sqlMapClient.queryForObject("userInfo.getUser",user);
如果useStatementNamespaces=“false”则直接写成getUser 调用就行了;
–>
<settings
cacheModelsEnabled="true"
enhancementEnabled="true"
lazyLoadingEnabled="true"
maxRequests="32"
maxSessions="10"
maxTransactions="5"
useStatementNamespaces="true"
/>

<transactionManager type="JDBC" >
<dataSource type="SIMPLE">
<property name="JDBC.Driver" value="${driverClassName}"/>
<property name="JDBC.ConnectionURL" value="${url}"/>
<property name="JDBC.Username" value="${username}"/>
<property name="JDBC.Password" value="${password}"/>
<property name="JDBC.DefaultAutoCommit" value="true" />
<property name="Pool.MaximumActiveConnections" value="10"/>
<property name="Pool.MaximumIdleConnections" value="5"/>
<property name="Pool.MaximumCheckoutTime" value="120000"/>
<property name="Pool.TimeToWait" value="500"/>
<property name="Pool.PingQuery" value="select 1 from author"/>
<property name="Pool.PingEnabled" value="false"/>
<property name="Pool.PingConnectionsOlderThan" value="1"/>
<property name="Pool.PingConnectionsNotUsedFor" value="1"/>
</dataSource>
</transactionManager>
<!–指定映射文件的位置–>
<sqlMap resource="module/maps/UserInfo.xml" />
</sqlMapConfig>

Test.java

import module.UserInfo;
import init.SqlMapClientInit;
import com.ibatis.sqlmap.client.SqlMapClient;

public class Test {
public static void main(String args[]) throws Exception {


UserInfo user=new UserInfo();
UserInfo newUser=null;

user.setId(1);
SqlMapClient sqlMapClient=null;
sqlMapClient=SqlMapClientInit.getSqlMapClient();
if(sqlMapClient!=null){
newUser=(UserInfo)sqlMapClient.queryForObject("userInfo.getUser",user);
}

if(newUser!=null){
System.out.println("newUser.getUserName() = " + newUser.getUserName());
}

}
}

这样一个基本的ibatis的环境就建立了。运行Test.java,可以从数据库中查到id号等于1的一条记录;其他ibatis的具体操作请参考相关书籍;


2006年04月27日

                                                         javaScript 窗口对象的操作

         窗口用window表示,但在有多个窗口时还有别名,比如: "opener" 表示打开当前窗口的窗口;
"parent":表示上层框架(母)的窗口; "self": 表示当前活动的窗口; "top":表示最上方的窗口.

self.close(); 表示关闭当前窗口;
opener.document.forms[0].password.value="/";设置打开当前窗口的窗口表单中的password的值为空;

窗口对象的属性:
closed:判断窗口是否已关闭,返回布尔值;
crypto:用来访问浏览器加密特性的对象;
defaultStatus:状态栏的默认信息;
document:包含当前文件的信息,也用以显示HTML文件,此属性的值是document对象;
frames:对应到窗口中的框架;
history:包含该窗口最近查阅过的网页;

window.history.go(-1):历史返回;
window.history.back():历史返回;
window.history.go(1):历史向前;

innerHeight/innerWidth:代表窗口内容区的垂直/水平大小(象素表示);
length:窗口中框架的个数;
location:包含当前URL的信息;
location.reload();重新加载页面,刷新;
location.href="www.xxx.com";
locationbar;代表浏览器的地址栏;
menubar:代表浏览器的菜单栏;
name:窗口的名称;
opener:代表利用open方法打开当前窗口的窗口;
outerHeight/outWidth:代表窗口边界的水平尺寸大小(象素);
parent:代表包含当前窗口或框架的框架组(Frameset);
personalbar:代表浏览器的个人工具栏;
screenX/screenY:代表窗口左/上边界的x/y坐标;
scrollbars:代表浏览器的滚动条;
status:代表状态工具栏的临时性信息;
statusbar:代表浏览器的状态栏;
toolbar:代表浏览器的工具栏;
top:代表最上方的窗口;

窗口对象的方法:
alert():传送警告信息;
alert经常用来调试页面脚本;
back():回到历史记录中的上一组网页;相当于浏览器的"后退"按钮;
close():关闭窗口;
confirm(信息字符串):显示确认信息窗口;返回布尔值;
比如:在删除确认时可以这么用:

if(confirm("您确认要删除吗?")){
   delete();
}

focus():将焦点移到此窗口;
forward():加载历史记录的下一个网址,相当于浏览器的"前进"按钮;
home():进入主页;
moveBy(水平点数,垂直点数):将窗口往X/Y轴移动.
moveTo(水平点数,垂直点数):将窗口移动到(x,y)坐标;
open("RUL","窗口名称","[窗口规格]");打开新窗口;
 Window.open("URL","窗口名字","窗口属性"]
      window属性参数是由一个字符串列表项它由逗号分隔,它指明了有关新创建窗口的属性。见下表所示。

      参 数              设定值            含 义

      toolbar             yes/no             建立或不建立标准工具条
      location         yes/no             建立或不建立位置输入字段
      directions         yes/no             建立或不建立标准目录按钮
      status             yes/no             建立或不建立状态条
      menubar             yes/no             建立或不建立菜单条
      scrollbar        yes/no             建立或不建立滚动条
      revisable         yes/no             能否改变窗口大小
      width             yes/no             确定窗口的宽度
      Height             yes/no             确定窗口的高度。

resizeBy(水平点数,垂直点数):调整窗口大小(往右/往下);
resizeTo(宽度,高度):调整窗口大小;
setResizable(true/false):是否允许调整窗口大小;
setTimeout(表达式,毫秒):设置一个定时程序;

                                          javaScript 事件在IE和Netscape中的区别
由于IE和Netscape对事件对象的支持是有区别的,因此在处理时要判断一下

<script language="javascript">
  function getEvent(evnt){
      eventWin=open("","",’width=200,height=100′);
           with(eventWin.document){
//IE浏览器;
                if(document.all){
                      write("事件类型:"+event.type);
                      write("鼠标的x坐标:"+event.screenX);
//网景浏览器;
                }else{
                      write("事件类型:"+evnt.type);
                       write("鼠标的x坐标:"+evnt.screenX);
               }
           }

  }
  document.onmousedown=getEvent;
</script>

document.all 可以用来判断浏览器的类型,如果为真就是IE,反之是Netscape浏览器;

                                                                        想你,是一种美丽的心情
   想你的夜晚,我不点灯,我已习惯在无边无际的黑夜中想你,想你的面容,想我们最初的“邂逅”,想我们一路走来的点点滴滴……
  总是在不经意间把你想起,无论是清晨还是黄昏,总是在若远若近间把你想起,无论是忙碌还是休闲,其实想你又何尝不是一种美丽的心情?“你是一树一树的花开,是燕子在梁间呢喃,是爱、是暖、是希望,你是 人间的四月天”那是一道最美丽的风景,也是我内心深处最美的心情。 
    于是不由自主的牵挂你、身不由己的想念你、无以复加的思念你,佛说:“前世的五百次回眸,换来今生的插肩而过”。如果真是那样,我愿这前缘今世的百转千回的生命中,能留有我一丝想你、念你、爱你的空间,能在春华秋实的岁月里品尝爱的甘甜和醇美,能在风花雪月的浪漫中演绎爱的纯洁和唯美。
即便我们天各一方,但那份想你的心,会常伴在你的左右!
   许多许多的时候,就这样痴痴的想你,许多许多的时候就这样傻傻的念你,我知道其实那也是一种美丽,想你,就是一种美丽的心情!

IntelliJ IDEA使用技巧一览表(转)