vi/vim 快捷键盘对照图(含中英文)

对于经常要辗转于 Linux/Unix 终端的用户,时常要使用 vi 来编辑文本。Emacs 虽说功能强,但学习起来更为陡峭,而况有些系统默认时没有 Emacs。 对于 vi 未有多份心者,也许使用它四五年时间,不过 i、o、dd、:wq、方向键移动光标尔耳,y、p 拷贝粘贴都极少用。

总是想,既然常常用一个软件,那就尽量用好它,为工作多提升效率,不必多耗费时间,只每时多份心而已。故网上找来 vi/vim 的快捷键盘对照图,有中英文对照,可打印出来,贴于你座位的隔板上,以助记忆习知。

若是对 vi/vim 有了好感,也想在 windows 一试 vi/vim  的身手,你可以用 cygwin 里的 vi。而且 vi/vim 也像 Emacs  一样,有了 for windows 版的 vi/vim,并且一来就是俩: 阅读全文 >>

DWR 的 Converter 实现原理简单分析及应用

我们在应用 DWR 调用远程方法时涉及到 JS 与 JAVA 之间参数和返回值的数据转换,例如:

JS 的 123 与 Java 的 int  或 Integer、long 间的转换
JS 的 "2009-06-23" 与 Java 的 java.util.Date 之间的转换
JS 的 "[1,2,3]" 与 Java 的 int[] 间的转换
JS 的 "{id:123, name: 'Unmi'}" 与 Java 的 Class Person{int id; String name} 间的转换

或者更复杂的嵌套类型( "{id:123, name: 'Unmi', blogs:['http://unmi.blogjava.net','http://blog.csdn.net/kypfos']}" ) 与 Java 类型间的转换,等等。那么这一切是怎么进行的呢?其实我们见识过很多组件的类型映射,如 Java 的 PropertyEditor、Hibernate(UserType)、iBatis(TypeHandler) 的类型映射,Struts1/2 中 Form/Model 用的 Converter 等。 阅读全文 >>

请教一下 Servlet 中如何设定下载文件保存用的字符集

在前面一篇日志:理解和灵活应用 Struts2 的文件下载功能 还留下一个问题,在 Servlet 中支持文件下载功能时,客户保存下载文件所用的字符集总是 ANSI(ISO8859-1),如何能设定客户保存文件用的字符集呢?像 BlogJava 的备份数据功能下载后就是用的 UTF-8 字符集的。自己作了一些尝试,总是无济于事,看如下代码是 Servlet 的 doGet() 方法:

阅读全文 >>

使用 DWR 我是这样做简单分页的[自己记录一下]

DWR 本身未提供分页的功能,所以这部分要自己来实现。如果把后台的所有记录都拉到页面用 JS 分页,那是很不现实的。因此,虽说是 DWR 分页,但还得服务端来支持,由服务端的远程方法只返回当前页所显示的记录,DWR 自己要明确当前是第几页,是否有上一页、下一页。

还是用代码来说明吧,分解为三部分代码:

1. 暴露给 DWR 调用的 Java 的远程方法
2. JS 的 DWR 调用
3. 显示分页导航栏

DWR 要调用的 Java 方法: 阅读全文 >>

理解和灵活应用 Struts2 的文件下载功能

文件下载给我们最直接的概念就是,给个文件链接点击就下载。似乎太简单,然而 Struts2 却把它作为一个独立的学问来对待,理由有四:

1. 文件名为中文时,直接点击下载,链接可能会走样(某些浏览器,URL 编码的问题),致使无法下载。
2. 不总是从下载实际的文件,文件内容有时候是动态生成的,如数据库中的内容。
3. 对于知名的文件类型不让浏览器直接打开,而是出现下载对话框保存文件。例如,要下载的文件是 .txt 的,可能直接就在浏览器中显示其内容。
4. 需要授权才能下载文件时

当然对于以上若干问题,Servlet/JSP 都能通过正确的 URL 编码,响应头设置、权限代码控制解决,只是 Struts2 让我们处理起来更方便了,内部原理自然是一样的。 阅读全文 >>

DWR 调用远程方法的错误和异常处理

记得以前通常我们在调用 DWR 的远程方法是这样写

第一个至倒数第二个参数为客户端传向服务端的数据,最后一个参数直接就是一个回调函数。因为服务端根据 Java 对象生成的 js 代码就是:

Remote.method = function(p0, callback) {
    dwr.engine._execute(Remote._path, 'Remote', 'method', p0, callback);
}

阅读全文 >>

DWR 的 DWRUtil.addRows() 函数的使用

使用 DWR 一个常用的操作就是取到的数据往表格里填充,这就是 DWR 的 DWRUtil.addRows() 操作了,本篇就是以例子详细说明这个函数的用法。而另一个移除所有表格行的操作 DWRUtil.removeAllRows() 使用简单就不多说明了。

开始的时候我们还是要对这个函数的原型加以说明,虽然有些俗套,但还是必要的:

DWRUtil.addRows(id, array, cellfuncs, [options]);

描述:
向指定id的table元素添加行。它使用数组中的每一个元素(对象)在table中创建一行。然后用 cellfuncs 数组中的对应的函数创建一个列。单元格是依次用 cellfunc 根据没有数组中的元素创建出来的。

DWR1.1开始,addRows()也可以用对象(遍历对象的属性创建行)做为数据。如果你用一个对象代替一个数组来创建单元格,这个对象会被传递给cell函数。 阅读全文 >>

通过 Squid 访问出现“确保报表服务器server.property设置了'proxyServer'参数”的解决

内部网通过 Squid 代理访问国税的 税收调查网上直报(http://218.18.101.150:8001/i/main.jsp) -- i@Report通用 WEB网络报表平台 时页面只出现:

XXX.XXX.XXX.xx透过反向代理访问服务器。请确保报表服务器server.property设置了'proxyServer'参数

不走代理就没事,在网上通过上面的关键字没找到相应的解决办法,还查英文的报错信息:

please esure property "proxyServer" in server.property was not empty

找到一份答案:http://bbs2.chinaunix.net/archiver/tid-1391943.html

原因是访问该网站时要求 Squid 对 请求 Header 部作些处理,上面链接中给了多种方法,有些不一定对你可行。最后我是在 squid.conf 文件后面加上以下两行: 阅读全文 >>

Perl 使用 Log::Log4perl 输出日志的用法

用 Java 的很少有人对 log4j 感觉陌生,这是 Apache  上的项目。同时 Apache 上也有针对其他语言的 Log 组件,如 log4cxx、log4net、log4php。

所用 Perl 时也会想想:Perl 该用什么日志模块呢? log4perl?google 一下果然后,只不过它不是由 Apache 出品。
该项目原来在 http://log4perl.sourceforge.net/,现已移到 http://mschilli.github.com/log4perl/

下载地址:http://search.cpan.org/~mschilli/Log-Log4perl/ (要编译的)
使用文档:1. Tutorial(Retire your debugger, log smartly with Log::Log4perl)
             2. Manual
             3. Frequently Asked Questions

当然,你也可以用 CPAN 和 PPM(如果安装的是 ActivePerl) 来安装 Log::Log4perl 模块。 阅读全文 >>

五线谱速读方法和钢琴视奏思维方法

大家在练习新的钢琴曲时一定会经常遇到这样的问题:

1 错音不断
2 双手的配合不协调,对位有问题
3 无法连贯的弹奏下来,总是断断续续,结结巴巴
4 视奏一个新曲子很困难,弹奏几遍都无法顺下来

这些都是因为对于钢琴五线谱的读法不正确而造成的!

下面我来给大家介绍一种新而巧的方法, 使您可以做到对五线谱的速读和100%的准确

钢琴的五线谱速读方法包括四个原则 和三个要求 阅读全文 >>