星期一 2007年04月02日
换家了
自己搞的个服务器,放在家里,反正2M的宽带放者也是浪费。
并且可以做些自己做的事情,暂时放了trac,blog(frog),
目标应该是做些java,python,linux,web这些范畴的玩玩的东西,还没有很确定的目标
不过有一个小目标是类似http://book.hackbase.com/26/12757.htm
的做一个web framework的helloWorld程序,暂时还不敢说大家提要求要我做什么,先自己做自己会的一些。
做了个动态域名,大家有空去转转
http://huaco.3322.org
现在还没有啥东西了。
在这里呆了这么久,虽然去年下半年以后就没有更新,但是还是非常感谢matrix给的这个blog
chris fajaven 的帮助。
说不定有一天我的服务器down了,我又会回来的,
希望这一天不要来的太快,哈哈。
Posted at 10:49上午 四月 02, 2007 by zhenggc in blog |
星期二 2006年09月26日
python的web framework简单介绍
这段时间,自己想做点东西玩玩,没选java,选了python,在python这个庞大繁杂的社区中,找framework真是非常痛苦。介绍几个比较好的方法。
首先要知道framework的名称
介绍下我看过的几个纯粹的web framework
而随着ror的流行,更加综合型的也出来几个比较不错的,有点象spring的整合其他框架做的事情,也提供各个层面的多种选择
再加上传统的,大型的,
果然是五花八门,让人选择的头昏眼花。而我头昏眼花了这么久,好歹也给大家提供一些意见,就象java中选spring,除了它的ioc之外,我觉得一个很大的因素就是他的整合能力,呵呵,随便什么垃圾,写个Template,写个Helper,写个FactoryBean,基本搞定。虽然python还没有如此类似的框架,但是python语言的一些特性,让这个方面的事情也是比较方便的,而上面提到的pylons,和TurboGears都有这个方面的一些便利。当然也可以自己选择。
而一下,再给大家列一些orm和template
orm
template
其中上面标红的是个人比较喜欢的。另外基本的web framework都带有自己的简单的http server,感觉不错,起码开发调试的时候都比较方便。不象java,容器来,容器去的。
---
本文章使用开源内容管理kicoy发布
Posted at 11:10上午 九月 26, 2006 by zhenggc in root |
星期三 2006年09月20日
几个不错的css framework
废话不说,马上开始:
当然其他的有很多,这几个只是我接触到的,欢迎大家添加哦。
Posted at 03:25下午 九月 20, 2006 by zhenggc in Java | 评论[1]
星期五 2006年08月25日
好久没有动静了
从换工作开始,就没有动静了,近3个月的苦干,马上可以轻松一点了,但是这个接近荒芜的blog,我都不知道还可以写些什么,呵呵,就做为kicoy的测试吧。
---
本文章使用开源内容管理kicoy发布
Posted at 01:23下午 八月 25, 2006 by zhenggc in life |
星期四 2006年06月08日
几个基于prototype的js lib
prototype作为一个js的重要扩展基础lib,发展在它上面的应用也越来越多,下面几个是比较出名的应用
顺便记录下一些常用的ajax lib,也包括了和java紧密联系的一些,顺序按照个人爱好,
Posted at 01:09下午 六月 08, 2006 by zhenggc in Java | 评论[0]
星期六 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
Posted at 03:58下午 四月 29, 2006 by zhenggc in Java | 评论[0]
星期二 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
Posted at 04:37下午 四月 25, 2006 by zhenggc in Java | 评论[1]
星期三 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
Posted at 03:53下午 四月 19, 2006 by zhenggc in Java | 评论[4]
星期三 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处理都可以很好的完成
Posted at 11:43下午 四月 12, 2006 by zhenggc in Java | 评论[0]
星期五 2006年04月07日
终于把blog样式搞好了
原来在ie和ff下完全两个样子,以前自己瞎搞,总是没有掌握css的要领,这次借用Mollio http://www.mollio.org的template,一放上去马上ok,充分享受开源的好处。
Posted at 02:14下午 四月 07, 2006 by zhenggc in Java | 评论[3]
星期二 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
Posted at 12:14下午 四月 04, 2006 by zhenggc in Java | 评论[0]
springside的jetty配置方案
貌视springside已经不用这么简便的方案,在doc中好像也不存在,只能留着自用了,
Author: @_@
纯Eclipse with Jetty Launcher 快速开发的情形.
jetty 可以在这里下载, jetty launcher 在这里。
安装eclipse的插件应该不用我来教育吧,安装完以后看一下插件目录下的doc文件,你就全部都明白了。解压jett压缩文件到你自己的某个目录。
从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项目。
Posted at 09:08上午 四月 04, 2006 by zhenggc in Java | 评论[0]
星期二 2006年03月28日
在线javascript调试工具
http://slayeroffice.com/?c=/content/tools/js_tree.html
收藏那个工具到书签,随时可以用哦,不过好像对框架页面没有效果,或者说,只能在顶层,不可以到子页面,但是还是很爽的说
Posted at 12:30下午 三月 28, 2006 by zhenggc in Java | 评论[0]
星期四 2006年03月23日
在ubuntu下配置subversion和trac
基本上都比较简单,大致的文档看看也就ok了,就是在mod_python的时候,不会自动生成mod_python.conf,apache的配置文件,需要自己写一下,在/etc/apache2/mods-availavle/下,可以根据trac的配置说明,然后要在/etc/apache2/mods-enabled下建立一个link,验证文件可以都用svn的那个,可以保证用户的统一。感觉不错,先用用。
Posted at 11:41下午 三月 23, 2006 by zhenggc in Java | 评论[3]
星期五 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必须
(如果你熟悉Spring MVC,上面的就等价于SimpleFormController的流程)
3、创建你的工作流定义,这里展示如何在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。
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。
<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
<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)
<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
Posted at 11:02上午 三月 17, 2006 by zhenggc in Java | 评论[0]