02月
29日

HTML中的转义字符

类归于: 做东西 Hbomb 写于 13:32

  HTML中<, >,&等有特殊含义,(前两个字符用于链接签,&用于转义),不能直接使用。使用这三个字符时,应使用它们的转义序列,如下所示:
& 或 & & 和
< 或 < < 小于号
> 或 > > 大于号
” ” 双引号
  空格
© © 版权符
&reg ® 注册符

  前者为字符转义序列,后者为数字转义序列。数字转为字符对应的ASCII码值。
  需要说明的是:
  a. 转义序列各字符间不能有空格;
  b. 转义序列必须以”;”结束;
  c. 单独的&不被认为是转义开始;
d.区分大小写。
  另一个需要转义的字符是引号,它的转义序列为”" “或”"”
  HTML使用的字符集是ISO &859 Larin-1字符集,该字符集中有许多标准键盘上无法输入的字符。对这些特殊字符只能使用转义序列。

XML转义字符

  不合法的XML字符必须被替换为相应的实体。
  如果在XML文档中使用类似”<” 的字符, 那么解析器将会出现错误,因为解析器会认为这是一个新元素的开始。所以不应该像下面那样书写代码:
if salary < 1000 then
  为了避免出现这种情况,必须将字符”<” 转换成实体,像下面这样:
if salary < 1000 then
  下面是五个在XML文档中预定义好的实体:
< < 小于号
> > 大于号
& & 和
‘ ‘ 单引号
” ” 双引号
  实体必须以符号”&”开头,以符号”;”结尾。
  注意: 只有”<” 字符和”&”字符对于XML来说是严格禁止使用的。剩下的都是合法的,为了减少出错,使用实体是一个好习惯。

02月
28日

什么是Adobe AIR?[转]

类归于: 做东西 Hbomb 写于 09:00


Adobe Integrated Runtime (AIR) 是一个跨操作系统的运行时,利用现有的Web开发技术(Flash,Flex,HTML,JavaScript,Ajax)来构建富Internet应用程序并部署为桌面应用程序。

AIR 支持现有的Web技术如Flash,Flex,HTML,JavaScript和AJAX,可以用你最熟练的技术来开发您所见过的最具用户体验的RIA程序,例如,一个AIR程序可以使用如下一种或多种组合技术构建:

Flash / Flex / ActionScript
HTML / JavaScript / CSS / Ajax
PDF 可嵌入任何应用程序中
作为结果,AIR 应用程序可以是:

基于Flash 或 Flex:应用程序根内容(理解为容器)为Flash/Flex (SWF)
基于Flash 或 Flex 的HTML 或 PDF。应用程序的根内容为基于Flash/Flex (SWF) 的HTML
基于HTML,应用程序根内容为HTML, JS, CSS
基于HTML的Flash/Flex或PDF,应用程序根内容为基于HTML 的Flash/Flex (SWF) 或 PDF
用户使用AIR 应用程序的方式和传统桌面程序是一样的,当运行时环境安装好后,AIR 程序就可以其他桌面程序一样运行了。

02月
23日

第三次电信重组大局初定 [转]

类归于: 做东西 Hbomb 写于 13:38

喧闹经年,中国第三次电信重组看来真的是要定下来了。“上周五(2月15日)重组方案确实得到通过了。”2月20日,一位长期跟踪电信重组事件的业内知情者对《华夏时报》记者证实了上述传言,不过该人士同时表示,“相关人事问题还没定下来”。根据知情人士的说法,现有的6家电信运营商将合并为3家,将形成新的中国移动、中国联通(网通)、中国电信三大全国性全业务运营商。业内分析者倾向认为,这其中中国联通与网通的整合将是最大的难点。
现有6家运营商将变身3家
新联通整合难度最大

只待人事安排
  2月21日,《华夏时报》记者得到知情者透露的最新消息称,当天国务院相关部门本来要开会讨论电信业高管的人事问题,不过最终没有成行,而且由于人事变动的复杂性可能这几天也还定不下来。
  在最近盛传的电信重组中,目前得到确认的消息是,重组方案已经在国务院常务会议上得到通过,并有望在两会召开前后宣布。而此次被通过的方案业内大部分观点认为是:中国移动合并铁通,合并后由中国移动主导;中国联通合并中国网通,合并后由联通主导;中国电信收购联通CDMA网络,卫通公司卫星业务并入一家国有航天产业集团,地面业务整合至中国电信,人员随着业务走。重组合并后形成中国移动、中国联通(网通)、中国电信三大全国性全业务运营商。
  在人事安排上之前有消息称:信息产业部副部长奚国华到中国移动当一把手;中国网通总经理张春江去中国电信;中国电信总经理王晓初去信产部;中国移动通信公司总经理王建宙因今年到60岁而退休。
  《华夏时报》记者随后电话采访了中国移动、中国联通、中国网通等几家主要电信运营商,这些相关部门的负责人回答相若,普遍表示还没有得到重组的相关消息。
  “这次看来不会是空穴来风。”电信业内资深人士项立刚对《华夏时报》记者讲述了他对此次电信重组传闻的感想。
  2月18日,瑞士信贷发布报告称,其刚刚协助TD-SCDMA联盟在欧洲举办了TD路演,在此次会上TD联盟秘书长杨骅证实,国务院正在召开常务会议讨论电信重组事宜。
  而从中国电信内部透露出的消息称,中国电信集团移动办近期动作频繁,开始正式大力推行其“C计划”,内部已经着手对中国联通CDMA网络的运作进行人员招聘培训等相关工作,同时中国电信和联通内部最近有过很多次沟通,大致的方向已经确定。
新联通整合难度最大
  针对日渐明晰的各大电信运营商重组组合单元之整合前景,业内述评不一。
  “中国联通与中国网通的整合难度最大!”项立刚分析认为,中国移动合并铁通,可以使铁通保持独立运作,只要在资金上给予支持,因此整合难度不大,中国电信合并卫通中,由于两者实力悬殊,在电信的主导下,难度也不会太大。
  他具体分析认为,中国联通与中国网通合并,是要实现全业务,两家现在一个主要是移动运营,一个主要是固网运营,合并后要完全独立运营的可能性很小。中国联通和中国网通合并,需要面临一次重大的人事调整和文化的融合,尤其是北方地区,中国网通各省运营商实力都是非常强大,两家合并,要产生出领导人,要配合好工作,要在收入、待遇上达到一致,这是一项巨大的工程,没有个两三年都未必能理顺,这些情况一定会对中国联通的发展产生负面效应。
  北京邮电大学教授曾剑秋也认为,联通和网通将激烈地争夺新联通总公司和北方十省各级分公司的主导权,完全融合至少需要4-5年时间。
  事实上在此之前的电信重组传闻版本中,中国联通一直是重组的焦点与难点。
  众所周知,中国联通目前拥有两张网络,G(GSM)网与C(CDMA)网,当初让联通运营这两张网是为了补充联通的实力,没想到却让联通处于尴尬状态,最直观的表现是其G网与C网相争,即业内称之为“双网互搏”。
  而此前的数次重组传闻,联通C网出售给中国电信的价格问题以及其未来的发展也是重组的不争难点,而这次重组方案被顺利认可,普遍认为是联通解决了C网价格以及自己未来重组中的地位问题。按目前所称的方案,中国联通G网与中国网通合并,由联通主导,成立“新联通”,中国网通的称号在奥运后将会“消失”。
  “两个弱者合并起来有什么意思!还不知道将来会出现什么变化,当年吉通、小网通,以及北方电信合并起来的大网通,还不是一样没做好。”有网通内部人员接受《华夏时报》记者采访时同样表达了自己对这种重组方案的忧虑。
观察
  重组只是起点
  电信重组似乎大局已定,但是在红头文件下发之前,各种消息依然层出不穷。
  此前分析人士普遍预计,中国电信行业的最终重组方案将在通常为期约10天的两会结束之后公布。2月21日有媒体称,该项重组计划可能在3月份举行的两会之前予以公布。同日,投资银行美林发布报告,预估重组时间表为:3月底前发放全业务牌照,在4-7月间则会公布各营运商母公司的架构变动及人事变动。
  与此同时,也有消息人士表示,尽管种种征兆显示电信重组已经加速,但由于运营商规模巨大,本次调整又涉及到四大上市公司及领导调整,原传闻版本还存在变数,“主要是人事方案难以确定”。
  “以政府主导的重组只是起点,而不是终点。”信息产业部一位多次参加重组方案论证的业内资深人士接受《华夏时报》记者采访时称,“所有的方案皆有其合理性,区别只是大家有不同的标准。”
  “通过此次重组主要解决分业竞争问题,使大家都有全业务经营权。”该人士称,“中国移动一家独大不是长远的事情。”
  “重组是‘外科手术’,之后还需要‘调理血脉’(非对称管制),虽然这见效慢,但还是要做。”他认为,现在评价此方案是否合理还为时过早,“一般合并过渡期为6个月,一年后评价手术是否成功”。

02月
21日

实施DbUtils [转载]

类归于: 做东西 Hbomb 写于 14:09

JDBC码是Java译码的一个部分,它给已写的编码带来了数量惊人的重复。另外,JDBC码几乎会经常性的带来一些低级错误。写出好的JDBC编码并不难,但是很痛苦。
DbUtils组件是一个精密而简单的组件,它并不做什么复杂的事而仅仅只是使很多的JDBC任务对开发者来说变得稍容易一点。尽管这时候很多持久框架和包都可以用来使数据持久变得更容易,然而JDBC仍然是大多数Java和Java2企业版(J2EE)开发者赖以生存的工具。因此,任何能让使用JDBC工作更容易的东西都是好消息。
DbUtils可以免费下载,它不依赖于任何其它的通用组件而只是依赖下面这些:

  • Java Development Kit (JDK) 1.2 (or later)
  • JDBC 2.0 (or later)

DbUtils文档并不是最好的,但是足以使你的工作正常进行。在下一节,你会看到DbUtils中最有用的类以及一些关于它们的用法的例子。你应该能够很容易地使用这些编码和例子,然后能够马上在你自己的项目中开始使用DbUtils。我将会集中精力于两个类(org.apache.commons.dbutils.DbUtils  和org.apache.commons.dbutils.QueryRunner)和一个接口(org.apache.commons.dbutils.ResultSethandler).在我给你们一些关于它们的用法的例子之前,让我们深入DbUtils里面来仔细看看它给我们提供了些什么。

DbUtils

DbUtils是一个为做一些诸如关闭连接、装载JDBC驱动程序之类的常规工作提供有用方法的类,它里面所有的方法都是静态的。

这个类里的重要方法有:

  • close:DbUtils类提供了三个重载的关闭方法。这些方法检查所提供的参数是不是NULL,如果不是的话,它们就关闭连接、声明和结果集(ResultSet)。
  • CloseQuietly: CloseQuietly这一方法不仅能在连接、声明或者结果集(ResultSet)为NULL情况下避免关闭,还能隐藏一些在程序中抛出的SQLEeception。如果你不想捕捉这些异常的话,这对你是非常有用的。在重载CloseQuietly方法时,特别有用的一个方法是closeQuietly(Connection conn,Statement stmt,ResultSet rs),这是因为在大多数情况下,连接、声明和结果集(ResultSet)是你要用的三样东西,而且在最后的块你必须关闭它们。使用这一方法,你最后的块就可以只需要调用这一方法即可。
  • CommitAndCloseQuietly(Connection conn):这一方法用来提交连接,然后关闭连接,并且在关闭连接时不向上抛出在关闭时发生的一些SQL异常。
  • LoadDriver(String driveClassName): 这一方法装载并注册JDBC驱动程序,如果成功就返回TRUE。使用这种方法,你不需要去捕捉这个异常ClassNotFoundException。使用loadDrive方法,编码就变得更容易理解,你也就得到了一个很好的Boolean返回值,这个返回值会告诉你驱动类是不是已经加载成功了。
ResultSetHandler

Click here to find out more!

正如它的名字所提示的,这一接口执行处理一个jaca.sql.ResultSet,将数据转变并处理为任何一种形式,这样有益于其应用而且使用起来更容易。这一组件提供了ArrayHandler, ArrayListHandler, BeanHandler, BeanListHandler, MapHandler, MapListHandler, and ScalarHandler等执行程序。 

ResultSetHandler接口提供了一个单独的方法:Object handle (java.sql.ResultSet .rs)。因此任何ResultSetHandler 的执行需要一个结果集(ResultSet)作为参数传入,然后才能处理这个结果集,再返回一个对象。因为返回类型是java.lang.Object,所以除了不能返回一个原始的Java类型之外,其它的返回类型并没有什么限制。如果你发现这七个执行程序中没有任何一个提供了你想要的服务,你可以自己写执行程序并使用它。

QreryRunner

这个类使执行SQL查询简单化了,它与ResultSetHandler串联在一起有效地履行着一些平常的任务,它能够大大减少你所要写的编码。QueryRunner类提供了两个构造器:其中一个是一个空构造器,另一个则拿一个 javax.sql.DataSource 来作为参数。因此,在你不用为一个方法提供一个数据库连接来作为参数的情况下,提供给构造器的数据源(DataSource) 被用来获得一个新的连接并将继续进行下去。

这一类中的重要方法包括以下这些:

  • query(Connection conn, String sql, Object[] params, ResultSetHandler rsh):这一方法执行一个选择查询,在这个查询中,对象阵列的值被用来作为查询的置换参数。这一方法内在地处理PreparedStatement 和ResultSet  的创建和关闭。ResultSetHandler对把从 ResultSet得来的数据转变成一个更容易的或是应用程序特定的格式来使用。
  • query(String sql, Object[] params, ResultSetHandler rsh):这几乎与第一种方法一样;唯一的不同在于它不将数据库连接提供给方法,并且它是从提供给构造器的数据源(DataSource) 或使用的setDAtaSource 方法中重新获得的。
  • query(Connection conn, String sql, ResultSetHandler rsh):这执行一个不要参数的选择查询。
  • update(Connection conn, String sql, Object[] params):这一方法被用来执行一个插入、更新或删除操作。对象阵列为声明保存着置换参数。

现在让我们来看一个例子,在这里你可以从一个数据库中获得一些数据。比如说,我正在使用MySQL 数据库.你还需要下载MYSQL JDBC驱动程序。我正在使用的MySQL数据库在本地主机,端口号为3306上运行。这个数据库地名字叫做test。你将要用到的Student表的结构如下:
Columns    Type
——-    —-
StudId     int
Name      varchar
在列表A中,你将会从Student表中得到一些信息,而且你可以按照你自己的额外需要修改这些信息。尽管你在使用JDBC,但要注意你几乎没写JDBC编码。(你可能要改变在例子中所规定的用户名和密码,这是以你的具体的数据库配置为基础的。)

这个编码遵从以下步骤:

Click here to find out more!

1.加载JDBC驱动程序类,并用DriverManager来得到一个数据库连接。
2.例示 QueryRunner 类。
3.使用连接、SQL查询、参数和ResultSetHandler来作为输入的查询方法。你使用一个类org.apache.commons.dbutils.handlers.MapListHandler,一个类 MapListHandler来获得一个结果集(ResultSet)并返回一个jaca.util.Map的实例java.util.List。因此结果集(ResultSet) 的每一行都变成了一个java.util.Map,所有这些java.util.Map的实例绑在一起放在一个java.util.List 中。

4. 反复得到列表(List)的值就是通过在列表(List)中获得每一个Map的值。

5.用QueryRunner 来执行一个没有参数的方法。在这里你要用BeanListHandler ,它是一个非常有用的ResultSetHandler ,因为你可以把ResultSet 转变成一个指定的Bean的列表中。这时你可以指定一个Bean类到Bean StudentBean中,如同在列表B中所显示的那样。

6. 你通过反复从列表(List)中得到多个bean,然后就可从每一个StudentBean实例中获取值。

注释:在列表B中,StudentBean 类中的StudId 必须是int,这是因为表Student的StudId列的类型是int。坚持这个类型的匹配是我们需要遵从的唯一规则。 

因为在这种情况下,StudentBean 类的属性和表Student 的字段是完好的对映着的,只要将StuentBean 类作为一个参数就是一个技巧。字段值用和字段名一样的名字插入到类的属性中。然而,如果你想要更多地控制bean的创建,则类BeanListHandler提供了第二个构造器:BeanListHandler(java.lang.Class type, RowProcessor convert). 接口Rowprocessor的执行把结果集(ResultSet)的各行转化成一个对象组。在 StudentBean这一案例中,RowProcessor中的BasicRowProcessor 的执行被利用上了,它能够执行这项任务。然而,你可以写一个新的执行并把它提供给BeanListHandler的构造器。 

当然,执行这一编码的输出取决于你从表Student中获得哪些数据。对我来说,我得到了以下这些输出:
***Using MapListHandler***
  Id >>1
  Name >>One
  Id >>2
  Name >>Two
***Using BeanListHandler***
  Id >>1
  Name >>One
  Id >>2
  Name >>Two
  Id >>3
  Name >>Three
除了到目前为止你已经看了的类以外,另外一些你需要研究的类是:

  • org.apache.commons.dbutils.QueryLoader:QueryLoader是一个从一个文件加载查询到一个Map的简单的类。然后,当需要的时候,你从 Map 中选择一些查询。在没有专门去接触代码的情况下,一个文件中的Having查询也可以改变得尽可能的简单。
  • org.apache.commons.dbutils.wrappers.SqlNullCheckedResultSet:这个类对使用一个系统方法来解决NULL值问题是很有用的。用一个 SqINullCheckedResultSet 的实例来限制一个常规的结果集(ResultSet) ,然后详细地说明在遇NULL值的情况下应该做些什么。
  • org.apache.commons.dbutils.wrappers.StringTrimmedResultSet:用类StringTrimmedResultSet 来约束一个结果集,这样一来,你就可以修整所有getString()和getObject()方法返回的字符串。

DbUtils 组件很好也很小巧,很值得在所有用到JDBC的项目中去使用。

 

import java.util.*;
import java.util.logging.*;
import java.sql.*;
import org.apache.commons.dbutils.*;
import org.apache.commons.dbutils.handlers.*;public class TestDBUnits {
public static void main(String[]args) throws Exception {
  TestDBUnits test = new TestDBUnits();
  for(int i = 0 ; i < 1 ; i++) {  
   test.testQuery1();
   test.testQuery2();
   test.testUpdate();
  }
}
public void testQuery1(){
  try {
   QueryRunner qr = new QueryRunner() ;
   ResultSetHandler rsh = new ArrayListHandler();  
   String strsql = “select * from test1″;  
   ArrayList result = (ArrayList)qr.query(getConnection() ,strsql ,rsh);
   //System.out.print(”");
  } catch(Exception ex) {
   ex.printStackTrace(System.out);
  }
}
public void testQuery2(){
  try {
   QueryRunner qr = new QueryRunner() ;
   ResultSetHandler rsh = new MapListHandler();  
   String strsql = “select * from test1″;  
   ArrayList result = (ArrayList)qr.query(getConnection() ,strsql ,rsh);
   for(int i = 0 ; i < result.size() ; i++) {
    Map map = (Map)result.get(i);
    //System.out.println(map);   
   }
   //System.out.print(”");
  } catch(Exception ex) {
   ex.printStackTrace(System.out);
  }
}
public void testUpdate(){
  try {
   QueryRunner qr = new QueryRunner() ;
   ResultSetHandler rsh = new ArrayListHandler();
   String strsql = “insert test1(page ,writable ,content)values(’ttt’,'ttt’,'faskldfjklasdjklfjasdklj’)”;
   qr.update(getConnection() ,strsql);
   //System.out.print(”");
  } catch(Exception ex) {
   ex.printStackTrace(System.out);
  }
}
private  Connection getConnection() throws InstantiationException,
   IllegalAccessException, ClassNotFoundException, SQLException {
  String strDriver = “org.gjt.mm.mysql.Driver”;
  String strUrl = “jdbc:mysql://localhost:3306/test”;
  String strUser = “root”;
  String strPass = “”;
  Class.forName(strDriver).newInstance(); 
  return DriverManager.getConnection(strUrl, strUser, strPass);
}
}
02月
03日

roller4.0 安装小记,总结了I18N的安装要点(转载 自http://lokvin.javaeye.com)

类归于: 做东西 Hbomb 写于 07:39

roller4.0 安装小记
roller4.0 安装总体感觉很方便。有安装向导页面,自动建立数据库表。
但也有一点小问题,install-guide 上没有写得太详细,也可能我看得不够仔细,呵呵
。一个是没有说配置连接池配置文件,另一个是中文有点问题。

总结如下:
安装环境
JDK 1.5.05
tomcat-5.5.17
mysql-5.0.27
apache-roller-4.0

安装使用的是 msyql 数据库,现建立数据库和用户

mysql> create database rollerdb default charset utf8  collate utf8_general_ci;  
 
文档install-guide 上 create database rollerdb ; 建立的数据库默认是 lat1 字符  
编码,中文会有问题所以使用 utf8 编码  
 
给用户授权  
 
mysql> grant all on rollerdb.* to scott@’%’ identified by ‘tiger’;  
mysql> grant all on rollerdb.* to scott@localhost identified by ‘tiger’; 

mysql> create database rollerdb default charset utf8  collate utf8_general_ci;

文档install-guide 上 create database rollerdb ; 建立的数据库默认是 lat1 字符
编码,中文会有问题所以使用 utf8 编码

给用户授权

mysql> grant all on rollerdb.* to scott@’%’ identified by ‘tiger’;
mysql> grant all on rollerdb.* to scott@localhost identified by ‘tiger’;

 

为了使用java mail 发送邮件,tomcat 的 common/lib 文件夹中放入 activation.jar,
javamail.jar
困了,先睡了回头再写…
各位新年快乐!

在 conf/server.xml 文件中的connector加入 URIEncoding=”UTF-8”, 为了I18N
例如:
<Connector port=”8080″
maxThreads=”150″ minSpareThreads=”25″ maxSpareThreads=”75″
enableLookups=”false” redirectPort=”8443″ debug=”0″
acceptCount=”100″ connectionTimeout=”20000″
disableUploadTimeout=”true”
URIEncoding=”UTF-8″ />

将roller 发行包的 roller 文件夹copy 到tomcat 的 webapps 下。

关于JDBC 驱动 install-guiade 上说
For MySQL 4.1.x 使用 the J/Connector 3.0.X JDBC
For MySQL 5.X use the J/Connector 3.1.X JDBC drivers

拷贝到 tomcat/common/lib 下

建立一个 roller-custom.properties 文件内容如下:
installation.type=auto
database.configurationType=jdbc
database.jdbc.driverClass=com.mysql.jdbc.Driver
database.jdbc.connectionURL=jdbc:mysql://localhost:3306/rollerdb?autoReconnect=true&useUnicode=true&characterEncoding=utf-8&mysqlEncoding=utf8
database.jdbc.username=scott
database.jdbc.password=tiger
mail.configurationType=properties
mail.hostname=smtp-server.example.com
mail.username=scott
mail.password=tiger

roller-custom.properties 放到 tomcat/common/classes 下

(这里有一个问题我不大明白,在roller-custom.properties
文件里指定了数据库连接,但是还需要制定一个数据库的连接池
给roller 才能正常工作,而且注意 database.jdbc.connectionURL=jdbc:mysql://localhost:3306/
rollerdb?autoReconnect=true&useUnicode
=true&characterEncoding=utf-8&mysqlEncoding=utf8
属性,如果按install-guide 的 database.jdbc.connectionURL=jdbc:mysql://localhost:3306/
rollerdb 中文是会乱码的)

在\tomcat-5.5.17\conf\Catalina\localhost放入一个 roller.xml
文件,内容如下:
Java代码
<Context path=”/roller” 
docBase=”roller” debug=”0″>  
<Resource name=”jdbc/rollerdb” auth=”Container” 
type=”javax.sql.DataSource” 
driverClassName=”com.mysql.jdbc.Driver” 
url=”jdbc:mysql://localhost:3306/rollerdb?autoReconnect=true&useUnicode=true&characterEncoding=utf-8&mysqlEncoding=utf8″ 
username=”root” 
password=”mysql” 
maxActive=”20″ 
maxIdle=”3″ 
removeAbandoned=”true” 
maxWait=”3000″ />  
<!– If you want e-mail features, un-comment the section below –>  
<!–  
<Resource name=”mail/Session” auth=”Container” 
type=”javax.mail.Session” 
mail.smtp.host=”mailhost.example.com” />  
–>  
</Context> 

<Context path=”/roller”
docBase=”roller” debug=”0″>
<Resource name=”jdbc/rollerdb” auth=”Container”
type=”javax.sql.DataSource”
driverClassName=”com.mysql.jdbc.Driver”
url=”jdbc:mysql://localhost:3306/rollerdb?autoReconnect=true&useUnicode=true&characterEncoding=utf-8&mysqlEncoding=utf8″
username=”root”
password=”mysql”
maxActive=”20″
maxIdle=”3″
removeAbandoned=”true”
maxWait=”3000″ />
<!– If you want e-mail features, un-comment the section below –>
<!–
<Resource name=”mail/Session” auth=”Container”
type=”javax.mail.Session”
mail.smtp.host=”mailhost.example.com” />
–>
</Context>
其实就是指定了一个 jdbc/rollerdb 的 jndi datasource,
如果没有的话,会发现每次见了用户,登陆时就登陆不了。提示
密码或用户错,但是用户确实在数据库表中了,我觉得
roller-custom.properties
和roller.xml 中的数据源配置都用到了,有点奇怪。
回头看看源码可能就知道是怎么回事了。

启动tomcat ,就可以正常安装roller 了

02月
02日

Spket Eclipse Plugin & IDE(Ext在Spket上的安装方法)www.extjs.com

类归于: 做东西 Hbomb 写于 08:38

很cool!
Spket Eclipse Plugin & IDE

The Spket IDE has by far the most superior code assist for Ext 2.0. It uses the Ext .jsb project file and embedded script doc to build code assist that includes options inherited from base classes and full documentation.

It doesn’t have much for editing other types of files though (e.g. CSS), so my preference is to install it as an Eclipse plugin in Aptana. To install the plugin in Aptana:

  • Download and install Aptana Studio (includes Eclipse).
  • Start Aptana and navigate the application menu to: Help → Software Updates → Find and Install… → Search for new features to install → New remote site…
  • Name: “Spket”, Url: “http://www.spket.com/update/
  • Restart Aptana
  • Watch this Spket IDE Tutorial to see how to easily add Ext code assist (you can point it at the latest /src/ext.jsb to keep code assist up to date with the latest Ext version). The steps are basically:
    • Window → Preferences → Spket → JavaScript Profiles → New
    • Enter “ExtJS” and click OK
    • Select “ExtJS” and click “Add Library”, then choose “ExtJS” from the dropdown
    • Select “ExtJS” and click “Add File”, then choose the “ext.jsb” file in your “./ext-2.x/source” directory
    • Set the new ExtJS profile as the default by selecting it an clicking the “Default” button on the right-hand side of the “JavaScript Profiles” dialog.
    • Restart Aptana
    • Create a new JS file and type: Ext. and you should get the Ext Code completion options.

Since you will have installed it as a plugin in Aptana, chances are Aptana will still be your default JS editor. So to try Spket, you need to right click on a file and select Open with -> Spket JavaScript Editor.

Spket in Aptana with full documentation and code assist
02月
02日

spket 1.6.6 破解 (暴力)

类归于: 做东西 Hbomb 写于 08:21
spket 1.6.6 不错的js编辑的eclipse插件
没有注册的版本,用的不爽。
居然没有混淆,反编译了下,修改里面的一个Class文件,就ok了。
com.spket.ui_1.6.6.jar –》\com\spket\ui\internal\License.class
把这个解压到com.spket.ui_1.6.6.jar\com\spket\ui\internal