星期日, 二月 27, 2005

一个很好Reverse Engine网站

http://protools.reverse-engineering.net/decompilers.htm

星期五, 二月 25, 2005

CRM (Custom Relationship Management) 理论再现江湖.

前几天找到了一个开源的CRM.www.opencrx.com非常不错.
让Micros去搞,做为一个主力产品.

BTW:昨天在Jboss 3.2.3+Oracle 9i +openCrx 1.4成功安装了.但没有运行下.

今天看一下.非常不错的东西.

XMLHttpRequest 和encodeURIComponent及encodeURL.

通过XMLHhttpRequest向Web传送参数.用encodeURL来编码需要传送的字符串.如:script=....,但是如果包含&&符号的话,则传递到服务器期端就会在&符号处被断开.
必须使用下列方法来编码包含&&特殊符号的串.
window.encodeURIComponent

BTW:如何构造XMLHttpRequest的Post方式传递参数到服务器.

objHTTP.Open('POST',"OtherPage.asp",false);
objHTTP.setRequestHeader('Content-Type','application/x-www-form-urlencoded');//关键句.

objHTTP.send("id=1&user="+txtUser.value+"&password="+txtPassword.value);

strResult=objHTTP.responseText

星期四, 二月 24, 2005

XSLT如何输入一个换行?

一般来说,下列语句可以工作:

<xsl:text> </xsl:text>
是换行的ASCII

星期一, 二月 21, 2005

如何在GroovyShell中嵌套执行脚本?

问题:在Groovy Script中,还有部分脚本来自其他媒体,比如数据库中.
需要把数据库中的代码和当前脚本一起混合执行.

解决:在当前Groovy Script中,用evaluate(String Script)来执行.
就可以了.
比如下列代码:
payitem=null;
CURRENT_CATAGORY.find(){if(it.payitemcode==Payitemcode)payitem=it}
evaluate(payitem.businessrule);

一段可以完全执行演示的代码:
import java.util.*;

mine=new ArrayList();
mine.add("123");
mine.add("3454");
script="evaluate(\"println('1sfdas')\n\");";
//keep variable self
evaluate(script);
打印出来

MySQL 如何改变一个Database的名字?

Mysql 目前还没有直接可以修改database的命令,比如Oracle的alter database .
不过Mysql的database目录对应着mysql安装目录下的data目录下的一个目录的名字.
所以最简单的方法,就是
1.shutdown Mysql Server
2.修改data目录下database对应的目录的名字就可以了.

还有常用的方法.
1.mysqldump -B database>database.sql 出要修改名字的database
2.drop database dataasename
3.修改database.sql中的建立database的命令.
4.source database.sql

星期五, 二月 18, 2005

关于规则表达(Regular Expression)RE的站点

RE 汇总站点:
http://www.wellho.net/regex/index.html
比较好的C++ RE:
http://www.boost.org/libs/regex/doc/syntax.html

星期四, 二月 17, 2005

Tomcat 5.0.28 with J2sdk 1.4.2_x毛病太多.

典型的问题(无解):
在Server.xml中定义<Context path="/jsr223samples" docBase="C:/jsr223/samples" debug="0" reloadable="true" crossContext="true"/>
访问目录下的任何一个jsp的时候出现:

package javax.servlet does not exist

这个问题是Tomcat 5.x ClassLoader算法的问题.把jsp打包在web moduler .war文件里发布没有问题.

PS:有人说要同j2sdk 5.0同Tomcat 5.x一起使用可以解决这个问题.没有试验过.

星期三, 二月 16, 2005

Java 平台里程碑的事件.JSR223草案发布

Scripting for the Java Platform
试用了一下,基本ScriptEngine同BSF类似(resemble).
不过让人惊奇的时,现在Web Tier不只有JSP可以使用了.
我们完全可以用javascript,groovy,php来直接解析和调用Servlet的API了.
这太Cool了.
换句话说,javasript可以同时在server端和Client使用同一套语法来做了.
只要符合Javascripting Engin的接口规范,其他任何语言都可以使用Java的类库了.
不知道,swing是否可以直接调用.理论上没什么问题.

方法:
1.修改配置文件.
conf/server.xml

<Context path="/jsr223samples" docBase="C:/jsr223/samples" debug="0" reloadable="true" crossContext="true">
<Logger className="org.apache.catalina.logger.FileLogger" prefix="localhost_jsr223" suffix=".txt"/>
</Context>


conf/web.xml

<servlet>
<servlet-name>JSR223Script</servlet-name>
<servlet-class>com.sun.script.http.ScriptServlet</servlet-class>
<init-param>
<param-name>script-blocks</param-name>
<param-value>js,groovy</param-value>
</init-param>
</servlet>


<servlet-mapping>
<servlet-name>JSR223Script</servlet-name>
<url-pattern>*.js</url-pattern>
</servlet-mapping>

<servlet-mapping>
<servlet-name>JSR223Script</servlet-name>
<url-pattern>*.php</url-pattern>
</servlet-mapping>

<servlet-mapping>
<servlet-name>JSR223Script</servlet-name>
<url-pattern>*.groovy</url-pattern>
</servlet-mapping>


这样设置后,就可以直接调用对应的.js,php,.groovy的脚本文件在服务器端直接执行并输出结果了.

2.在Java代码中调用对应的引擎

//Initiate ScriptEngineManager
ScriptEngineManager manager = new ScriptEngineManager();

//Return Groovy engine by name
ScriptEngine jsengine = manager.getEngineByName("groovy");
//或者改为js或php

//Execute the HelloWorld script
jsengine.eval(new FileReader("./HelloWorld.groovy"));

星期三, 二月 02, 2005

如何得到Java 对象的大小Size.

Object ob = new Object();

ByteArrayOutputStream out = new ByteArrayOutputStream();
ObjectOutputStream objOut = new ObjectOutputStream(out);
objOut.writeObject(ob);

System.out.println("Size = " + out.toByteArray().length);

星期二, 二月 01, 2005

如何格式化BigDecimal小数部分--小数点后面为两位数并且四舍五入.

/**
* 格式化数据,返回标准的Money表示结果
* @param value BigDeciam
*/
public static BigDecimal formatBigDecimal(BigDecimal value)
{
BigDecimal a=new BigDecimal("1");//必须用这个方法,才能精确得到准确的值
return value.divide(a,2,java.math.BigDecimal.ROUND_HALF_UP);
}