驱赶浮躁

Main | Next page »

http://blog.matrix.org.cn/zhenggc/date/20060920 星期三 2006年09月20日

几个不错的css framework

废话不说,马上开始:



  1. Mollio,http://www.mollio.org/出品,我看的时候有6中基本布局,提倡标准。

  2. YUI,开发不断,现在已经在其中添加了css布局的一个lib

  3. style,老家伙了,内容很多,不仅仅是布局,据说什么网站只要放上这个就会漂亮许多,呵呵。

当然其他的有很多,这几个只是我接触到的,欢迎大家添加哦。

http://blog.matrix.org.cn/zhenggc/date/20060608 星期四 2006年06月08日

几个基于prototype的js lib

prototype作为一个js的重要扩展基础lib,发展在它上面的应用也越来越多,下面几个是比较出名的应用



  1. script.aculo.us主要在ui方面发展
  2. Rico主要在ajax方面发展
  3. http://blogus.xilinus.com/pages/javawin在ui的window方面发展,用div做出各种弹出窗口,很漂亮

顺便记录下一些常用的ajax lib,也包括了和java紧密联系的一些,顺序按照个人爱好,



  1. prototype 包括script.aculo.us
  2. dwr
  3. dojo toolkit
  4. yui
  5. 更多可以看这里
  6. 还有这里

http://blog.matrix.org.cn/zhenggc/date/20060429 星期六 2006年04月29日

你是否厌倦了spring+ibatis中dao的实现层

曾几何时,domain model模式大势泛滥,dao到处可见,而spring做为一个比较大的dao的统一者,对jdbc,hibernate,ibatis,jdo......都做了个统一,而封装的同时,使dao实现层越来越薄,我们这里说ibatis,他的实现基本也就是处理一下statment的name,传递必要的参数,那么薄到这种程度的时候,可以用代码生成,或者统一处理掉,以前我就做过一个代码生成的小程序,不过今天,给打击推荐的是http://dao-zero.sourceforge.net/,完全省略了dao实现层,用类似以下的代码处理


<bean id="accountDao" class="daozero.ibatis.Dao">
     <property name="sqlMapClient" ref="sqlMapClient"/>
    <property name="targetType" value="
AccountDao" /> <!-- interface -->
</bean>


不过我也是刚看到这个,但是应该没有问题。


@_@/matrix.blog

http://blog.matrix.org.cn/zhenggc/date/20060425 星期二 2006年04月25日

又一个漂亮的Js dom builder

TrimPath 复杂的让我眼花,不管是本身代码,还是处理的代码,但是有着freemarker式的控制语句,大型应用不可或缺,看看springside的例子,除了缺乏美感之外,我是没有办法挑剔它了。


http://script.aculo.us/的builder,在springside中也有一个小应用,对比起最原始的dom builder来说,也是非常精美的,但是拖着prototype和scriptaculous这两个大家伙,真的可以让很多应用望而却步,怎么说我们在ajax的应用上是需要减少数据传输,一来先上两个大家伙,谁受的了啊


http://www.vivabit.com/bollocks/2006/04/06/introducing-dom-builder今天又看到这个精美的dom builder,以1k的瘦小身材,精美的编程分格,引起我万分喜欢


var html = DomBuilder.apply();
var form = html.FORM(
  html.DIV(
    html.INPUT({type : 'text', name : 'email'}),
    html.INPUT({type : 'text', name : 'password'}),
    html.INPUT({type : 'submit'}),
  )
);
document.body.appendChild(form);


powered by @_@/matrix.blog

http://blog.matrix.org.cn/zhenggc/date/20060419 星期三 2006年04月19日

dwr2中推模式的基本实现原理

最近在springside中需要用到dwr2的推模式,稍稍看了下,


dwr2中,出现了“推模式”,其实在web应用中是没有办法实现真正的推模式的,那么在dwr中又是如何实现的呢,大家如果有兴趣可以通过我下面说的,和dwr2中的ajax chat相结合,理解其中的实现。


1、是客户端链接到服务器,这个时候如果要使用推模式的话,就好申明推模式,用于区分一般的ajax应用。在dwr中使用以下代码实现,调用startPoll,注册成功。


function startPoll() {
  DWREngine.setPolling(true);
}


2、这样就会在链接服务器的时候产生一个异步长链接,并且在服务端,根据这个页面id,sessionid,sessionscriptid(dwr生成的)注册这个这个长链接。


3、这个时候客户端可以自由异步发送其他信息。


3、发现有客户端有信息发送过来,往所有的长链接发送js。这个js可以和客户端js结合,主要是传输数据,调用方法。


4、客户端接收到发送过来的js,运行。


5、经过特定时间(长链接的定时),链接断开,重新建立一个长链接。


由此循环。


powered by @_@/matrix.blog


 

http://blog.matrix.org.cn/zhenggc/date/20060412 星期三 2006年04月12日

SpringSide Linux配置指南

在linux下,springside配置稍微有点变化,下面简单介绍一下注意点
目标ide依然是eclipse,从svn下载代码后,install plugin的时候,虽然我写了install.sh在svn上,但是由于linux的权限问题,如果想从console来处理的话,要把bin下的install_plugin.sh添加可执行权限,而各个plugin下的,暂时随便,大家可以用

sh install.sh

如果处理了权限可以直接

./install.sh

处理,
这个步骤也可以直接通过ant来处理,
但是在build.xml的那个upgrade这个target的时候,用到了exec
执行各个plugin下sh文件,这个时候要把所有的sh都加上执行权限,这个时候无论console执行install.sh,或者ant upgrade,或者用eclipse处理都可以很好的完成


http://blog.matrix.org.cn/zhenggc/date/20060407 星期五 2006年04月07日

终于把blog样式搞好了

原来在ie和ff下完全两个样子,以前自己瞎搞,总是没有掌握css的要领,这次借用Mollio http://www.mollio.org的template,一放上去马上ok,充分享受开源的好处。

http://blog.matrix.org.cn/zhenggc/date/20060404 星期二 2006年04月04日

bat中交互操作

请求输入,根据输入处理,主要是因为2k以及xp中已经不用choice,所以有此处理方式,
http://www.computerhope.com/sethlp.htm
这里有更多的解释

@ECHO off
cls
:start
ECHO.
ECHO 1. Print Hello
ECHO 2. Print Bye
ECHO 3. Print Test
set choice=
set /p choice=Type the number to print text.
if not '%choice%'=='' set choice=%choice:~0,1%
if '%choice%'=='1' goto hello
if '%choice%'=='2' goto bye
if '%choice%'=='3' goto test
ECHO "%choice%" is not valid please try again
ECHO.
goto start
:hello
ECHO HELLO
goto end
:bye
ECHO BYE
goto end
:test
ECHO TEST
goto end
:end
pause

springside的jetty配置方案

貌视springside已经不用这么简便的方案,在doc中好像也不存在,只能留着自用了,


 


Eclipse With Jetty Launcher 


    Author: @_@


    纯Eclipse with Jetty Launcher 快速开发的情形.



1. 下载jetty和eclipse插件jetty launcher


        jetty 可以在这里下载, jetty launcher 在这里。


2. 安装jettylauncher


        安装eclipse的插件应该不用我来教育吧,安装完以后看一下插件目录下的doc文件,你就全部都明白了。解压jett压缩文件到你自己的某个目录。


3.建立jettylauncher的springside工程


        从cvs下载springside的代码,成为eclipse的java工程,工程的bin路径选为webapp/WEB-INF/classes文件夹。在选中该工程的时候,从run菜单下选择run...菜单,出现运行配置窗口,双击运行配置窗口左边的jetty web,自动添加工程名称的一个run项目,如下图


 


它使用的jdk默认为工程的jdk,有些jetty没有默认带jsp的编译程序,这个时候,你的jdk配置的地方把jdk的tools.jar包入。


点击以前配置说明中说的hsqldb启动,然后点击上图的run可以运行jetty为servlet容器的springside项目。


 

http://blog.matrix.org.cn/zhenggc/date/20060328 星期二 2006年03月28日

在线javascript调试工具

http://slayeroffice.com/?c=/content/tools/js_tree.html
收藏那个工具到书签,随时可以用哦,不过好像对框架页面没有效果,或者说,只能在顶层,不可以到子页面,但是还是很爽的说

http://blog.matrix.org.cn/zhenggc/date/20060323 星期四 2006年03月23日

在ubuntu下配置subversion和trac

基本上都比较简单,大致的文档看看也就ok了,就是在mod_python的时候,不会自动生成mod_python.conf,apache的配置文件,需要自己写一下,在/etc/apache2/mods-availavle/下,可以根据trac的配置说明,然后要在/etc/apache2/mods-enabled下建立一个link,验证文件可以都用svn的那个,可以保证用户的统一。感觉不错,先用用。

http://blog.matrix.org.cn/zhenggc/date/20060317 星期五 2006年03月17日

Spring Web Flow Quick Start 翻译

Quick Start

Added by Keith Donald, last edited by Keith Donald on Mar 15, 2006  (view change)

原文地址http://opensource2.atlassian.com/confluence/spring/display/WEBFLOW/Quick+Start

这个Quick Start是帮住你快速开始使用Spring Web Flow 1.0

这个文档假定你已经下载了一份Spring Web Flow 1.0 EA 和 the Spring Framework,以及你有基本的了解Spring,HTML和JSP/JSTL。另外的,熟悉有限状态机和UML状态图。

下面使用一个简单的例子一步步示范实现你的第一个FLOW

1、确保spring-webflow-1.0.jar 和 spring-binding-1.0.jar 在你的Classpath下,当然你也需要Spring FrameWork1.2.7或者以后版本的核心包,当然可以为了方便而使用all-in-one的spring.jar在你的ClassPath下。

2、设计你的第一个FLOW,为了这个Quick Start,假定一个简单的流程,明确这个Flow必须

  • 开始,显示一个form view在浏览器上
  • 提交时候(“submit”事件),绑定输入数据到backing form object以及验证正确性。如果有错误发生 ,返回到form view,如果所有都合适,执行一个submit action。

      (如果你熟悉Spring MVC,上面的就等价于SimpleFormController的流程)

3、创建你的工作流定义,这里展示如何在xml中定义流程

myFlow.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE flow PUBLIC "-//SPRING//DTD WEBFLOW 1.0//EN"
       "http://www.springframework.org/dtd/spring-webflow-1.0.dtd">

<flow start-state="displayForm">

    <view-state id="displayForm" view="form">
        <entry-actions>
            <action bean="formAction" method="setupForm"/>
        </entry-actions>
        <transition on="submit" to="processSubmit">
            <action bean="formAction" method="bindAndValidate"/>
        </transition>
    </view-state>

    <action-state id="processSubmit">
        <action bean="formAction" method="processSubmit"/>
        <transition on="success" to="finish"/>
    </action-state>

    <end-state id="finish" view="success"/>

</flow>

4、创建你的第一个flow action,这里展示在上面提及的包含form setup,bing和validate已经submitlogic的formAction。

MyFormAction.java
public class MyFormAction extends FormAction {
    public MyFormAction() {
        setFormObjectClass(FormObject.class);
    }

    private static class FormObject implements Serializable {
        private String data;

        public void String getData() {
            return data;
        }

        public void setData(String data) {
            this.data = data;
        }
    }

    /**
     * A "submit" hook: an action execute method, called after
     * binding and validation.
     */
    public Event processSubmit(RequestContext context) throws Exception {
        FormObject formObject = (FormObject)getFormObject(context);
        // do submit logic
        return success();
    }

}

5、使用Spring Application Context配置你的第一个webflow ,在这里你选择使用XmlFlowRegistryFactoryBean,去创建一个注册来包含从上面的xml资源创建流程,已经配置你的formaction。

dispatcher-servlet.xml
<bean id="flowRegistry" class="org.springframework.webflow.registry.XmlFlowRegistryFactoryBean">
   <property name="flowLocations" value="/WEB-INF/flows/myflow.xml"/>
</bean>

<bean id="formAction" class="example.MyFormAction"/>

6、使用你喜欢的web framework完成webflow,如果你使用spring mvc,定义一个FlowController

dispatcher-servlet.xml
<bean name="/myApp.htm" class="org.springframework.webflow.executor.mvc.FlowController">
    <property name="flowLocator" ref="flowRegistry"/>
</bean>

上面定义/myApp.html这个URL和上面定义的flowController的对应关系。一个Controller就可以管理执行所有的在一个webapp中定义flow,flow执行的时候是一个叫做_flowId的参数来开始一个新的flow

7、创建那些参与这个flow的views (aka pages)  

form.jsp
<html>
<head>
   <title>My Form</title>
</head>
<body>
<p>
   <table>
   <form action="myApp.htm">
       <tr>
           <td>Field:</td>
           <td><input type="text" name="data" size="25"/></td>
       </tr>
       <tr>
           <td colspan="2" align="right">
               <input name="_eventId_submit" type="submit">
               <input type="hidden" name="_flowExecutionKey" value="${flowExecutionKey}">
           </td>
       </tr>
   </form>
   </table>
</p>
</body>
</html>

注意:flows是有状态的,所以,一个页面参与一个flow必须提交一个 _flowExecutionKey 参数给服务器来区别那个流程是客户端参与的,另外,一个流程必须提交一个叫_eventId的参数给服务器表示那个event发生当客户端某个事件发生的时候,比如“submit”是submit按钮被按下的时候发生的事件。

8、最后,访问这个流程,在这个案例中,我们可以简单的使用/myApp.htm?_flowId=myFlow 这个url来访问。当我们访问这个,在服务端将创建一个新的“myflow”FlowExecution,并且转换到他的start-state,然后,以下的一些处理将可能发生

   1、view form被展示

   2、用户点击提交按钮,一个有'submit'信号的事件发生,完成客户端操作

   3、服务端接收到“submit”事件,执行MyFlowAction中bingAndValidate方法,然后返回一个结果(比如:success,或者error)

   4、这个操作的结果触发另一个转变,比如回到“displayForm”在错误发生的时候,或者在成功的时候提交表单

   5、processSubmit状态触发在MyFlowAction中的processSubmit方法,然后返回结果

   6、如果这个submit成功结束,这个流程结束,显示最后的成功view

正如你所见,一个flow完全的在上面定义。Action实现全部执行命令已经逻辑在请求发生的时候,返回一个合理的结果给flow展示。

终于完成了这个Quick Start,一个简单的介绍Spring Web Flow系统,一个好的地方去学习更多的关于Spring Web Flow是reference文档和支持论坛。另外的一个方法是多看看例子,就在分发包的spring-webflow-samples文件夹,可以查看readme.txt,那里介绍如何编译和配置这些例子程序

终于完成了我自己的第一个翻译的文章,呵呵,大家不要见笑,我知道有很多都是我乱写的地方,只是想给自己看完后留个纪念,当然存在一些我理解错误的地方,请大家参照原文凑合者看

powered by @_@/blog.matrix

http://blog.matrix.org.cn/zhenggc/date/20060314 星期二 2006年03月14日

ibatis的动态sql

虽然ibatis的动态mapping的功能很强大,但是很多时候动态mapping也很麻烦,比如我有很多编码表,想写一个mapping就搞定(在和wuyu等人聊天的时候的一个问题),这个时候就可以用到动态sql。


基本功能如下,如果参数多,可以建立parmeterMap,map中的参数可以用于动态sql。


 <select id="listCode" resultClass="Code">
  select code,content from $value$
 </select>


这样就解决问题了,更多关注可以看ibatis中动态sql的源码,其实和动态mapping比较,一个preparestatement,一个是用replace先替换。并且两者可以同时存在。


powered by @_@/blog.matrix

http://blog.matrix.org.cn/zhenggc/date/20060302 星期四 2006年03月02日

ubuntu510下Eclipse安装

linux的难用性真不是盖的,连个eclipse都要折腾我半天,主要是由于web浏览器的原因,Eclipse需要是用linux的一些lib库,主
要是mozilla的firefox的一些东西,查了一些资料,需要设置一个MOZILLA_FIVE_HOME的环境变量,然而在ubuntu中,
firefox和mozilla是分开目录的,所以设置的时候要设置firefox的目录一般在/usr/lib/mozilla-firefox,而现
在很多资料都是介绍在/usr/lib/mozilla,还有一个就是用到了libstdc++.so.5的这个lib,而ubuntu已经用
libstdc++.so.6了,可以通过apt-get安装一个,

sudo apt-get install libstdc++5

这个libstdc安装在/usr/lib下,需要在mozilla-firefox中建立一个link

个人环境eclipse3.1+jdk1.50,安装成功。

prototype资源列表

早就有人帮我们收集好了


http://www.prototypedoc.com/


Valid HTML! Valid CSS!

This is a personal weblog, I do not speak for my employer.