2009-04-17

Tomcat JNDI 资源无法创建的问题

  按 tomcat docs 中 Tomcat Standard Resource Factories 的说明,新建了一个 ServerSettings 类,配置内容如下:
<resource name="bean/ServerSettings" auth="Container" type="com.lingsmm.framework.config.ServerSettingsBean" factory="org.apache.naming.factory.BeanFactory" uploadfilesavepath="/usr/local/nan/uploadFiles" uploadfiletemppath="/usr/local/nan/temp"/>

将文件打成 war 文件包进行发布,启动服务时,提示无法创建实例,似乎是类工厂无法取到,具体不是很确定。

改用直接使用绝对路径,指向应用所在目录,启动服务时,打开 /manager/ 看到有两个 / (应用的 path = "/"),状态都是未启动的。

将系统默认的 "/" 应用删除,重新启动服务,这回可以取得 JNDI 资源对象了。

虽然解决问题了,但问题的原因却无法找到,感觉很是郁闷,大致看了下 tomcat 6.0.18 的源代码,对于那个 lookup 对应的 binding ,里面的对象是如何生成的,看得有点糊涂,没有深究。不知道有人遇上没,给个解析就好了。

2009-02-09

EXCEL VBA Array Define & compile error

EXCEL VBA, EXCEL 2003 EN

VBA1:
dim a(), b() as string

call func a

// compile error:
Type mismatch: array or user-defined type expected


VBA2:
dim a() as string
dim b() as string

call func a

// compile success

2009-01-31

【翻译】如何使用 X RESOURCES


翻译的出发点,一是正好在找相关资料,一是,学习英文吧。
本人虽然是PG,但没上过大学,英语也是很差,翻译非常费时,边查单词边造句,太累了。不过感觉对学习英语没有太大帮助吧。

疑点;
1. Athena 不知道具体是什么,可能是某种软件/硬件平台吧
2. geometry?几何?不知如何翻译。

来源:http://web.mit.edu/answers/xwindows/xwindows_resources.html

译稿:
如何使用 X RESOURCES



● X-RESOURCES 文件是什么?

用户可以定制程序的外观,使用了 X 资源文件中的条目的 X 接口的程序。在 Athena 上,这个文件叫 .Xresources,为了能够工作,这个文件需要放在用户目录的最上层。定制内容举例来说,包括改变应用程序的 geometry 和尺寸大小,或者程序所用的颜色。



● 使用 X RESOURCES 我需要知道什么?

要使用你的 .Xresource 为某个程序定制资源,你首先要知道你想要定制的资源,以及这个程序的实例或类。

对于使用 X Toolkit intrinsics 编写的程序,其标准资源,请查阅 X 手册;对于程序的特定资源,请查阅该程序的手册。比如:要查找程序 "xterm" 的资源,你可以输入:

man xterm

通常,一个 X 程序,它默认的实例就是它的名字,它的类,就是它的名字并且首字母大写,除非它的首字母是 "X",这种情况下,其前两个字母大写。比如:程序 "xterm" 的实例是 "xterm",类是 "XTerm",程序 "mwm","mwm" 作为实例,"Mwm" 作为类。

相对于使用传统方式的程序,不幸的事情是,许多 X 程序是非传统的。如果是这种情况,只要启动有疑问的 X 程序,在 unix 提示符下输入 "xprop",再然后点击这个程序。比如,在一个 "xterm" 窗口使用 xprop 会得到:

WM_CLASS(STRING) = "xterm", "XTerm"



● 我应当如何使用 X RESOURCES?

在 .Xresources 文件中,条目有多种差异,但,是类似的,格式化的。说明所有的条目太费事。如果你需要比这里所说的更详细的信息,请查阅 X 手册。

通常,这些条目的形式如下:
class*resource: value
instance*resource: value
class.resource: value
instance.resource: value

资源设置的第一个元素可以是 "class(类)" 或者 "instance(实例)"。类包含了通过特定程序启动的所有,实例是一个给定特定名称的进程。

比如,XTerm 是一个类,所有你启动的 xterm,无论如何,他们都由这个类而来(这个类启动的所有资源都将被应用)。然而,你也可以像这样来启动 xterm:

xterm -name xterm-big

这个处理将会产生一个 XTerm 类,但是实例却是 xterm-big。
因此,你可以像这样来创建资源:

XTerm*reverseVideo: on
xterm*VT100.geometry: 80x24
xterm-big*VT100.geometry: 80x48
xterm-small*VT100.geometry: 80x10

这样,所有你启动的 xterm 的 reverse video 被设置为 on,但是使用 "-name xterm-big" 选项启动的,拥有一个 geometry,使用 "-name xterm-small" 选项启动的,拥有另一个,而没有指定名称的则默认名称为 xterm,也拥有一个不同的 geometry。(VT100 指明 geometry 用在主文本窗口,而不是菜单或子窗口。)

资源名称(如上面例子中的 'geometry')是 X 程序的特定外观属性。拼写资源名称是要小心。只有特定的拼写才正确。比如:'reverseVideo' 和 'ReverseVideo' 作为 xterm 资源而正确地起作用,而不是其它拼写。

其它例子:

oneko*tora:true

matlab*reverseVideo: false ! matlab windows in "reverse video"

emacs*Font: 8x13 ! 字体 8x13, 80 列
emacs*geometry: 80x48+0+0 ! 宽的, 48 行高

XTerm*scrollBar: on ! 带滚动条
XTerm*saveLines: 250 ! 保存 250 行回溯

XTerm*VT100.geometry:80x48+0+0 ! 仅主窗口 80x48

在这些例子中,"*" (宽松绑定) 和 "." (严格绑定) 之间的区别是,*会让资源应用到顶级窗口之内的所有子窗口(像菜单之类),点则只应用到程序的顶级窗口。



● 其它信息

-感叹号(!)用来在 .Xresources 文件中注释一行
-实例的优先级比类高。如果你为一个程序使用不同的值同时指定了类和实例,实例的资源将被使用,如:
xterm*Background: blue

将被使用,代替:

XTerm*Background: green

-要重新读入 .Xresources 文件,并且抛弃老的资源,你可以输入:

xrdb ~/.Xresources

-要重新读入 .Xresources 文件,并保持原来的资源,输入:

xrdb -merge ~/.Xresources

这将合并资源到你当前正在使用的资源中。

-对于 Athena 程序,X 接口程序的默认资源被放在目录 /usr/athena/lib/X11/app-defaults.

-事实上,你并不需要通过程序的类或实例名称来作定制。比如,如果你想为所有 X 驱动的程序指定相同设置,只要加入:

*resource: value

到你的 .Xresources 文件中。

-避免在 .Xresources 文件的头部和尾部出现空格。

-输入 "attach dotfiles",查找 /mit/dotfiles/Xresources 目录,你可以找到 Xresource 文件的示例。

-你可以改变许多使用 -name 选项启动的 X 程序的实例。比如,你如果输入 "xterm -name XT1" 来启动一个 xterm 窗口,那么你可以在你的 .Xresources 文件中使用 "XT1" 来定制资源,就像这样:

XT1*Background: yellow

Xorg 日文键盘,打不出下划线

修改配置文件: /etc/X11/xorg.conf

修改前:
Section "InputDevice"
Identifier "Keyboard0"
Driver "keyboard"
Option "CoreKeyboard"
Option "XkbRules" "xorg"
Option "XkbModel" "pc105"
Option "XkbLayout" "jp106"
Option "XkbVariant" ""
EndSection

修改后:
Section "InputDevice"
Identifier "Keyboard0"
Driver "keyboard"
Option "CoreKeyboard"
Option "XkbRules" "xorg"
Option "XkbModel" "jp106"
Option "XkbLayout" "jp"
Option "XkbVariant" ""
EndSection

2009-01-30

Archlinux 安装笔记

安装环境:
vista + virtualbox 2.1.2(audio: ICH AC97)

1.基本系统安装
加载启动光盘:archlinux-2008.10-archboot.iso,手工分区
/boot : 32M
swap: 512M
/: 剩余空间
使用 jp106 keymap, ext3 filesystem

参考 /cdrom/arch/archdoc.txt

2.从硬盘启动,更新软件包
编辑 /etc/pacman.conf,添加非官方源 http://mirror.lupaworld.com/archlinux/ 速度较快,adsl,大概 150K - 200K 左右。
参考:http://wiki.archlinux.org/index.php/Mirrors

#pacman -Syu

3.创建普通用户
#adduser

4.安装sudo
#pacman -S sudo
#visudo
(添加sudo用户列表)
参考:http://wiki.archlinux.org/index.php/Sudo

5.安装 Xorg
#pacman -S xorg
参考:http://wiki.archlinux.org/index.php/Xorg
#pacman -S hwd
#hwd -u
#hwd -xa

6.安装vbox-addition
在虚拟机菜单中,选择 Devices - Install Guest Additions
#mount /dev/cdrom
#cp /media/VBoxLinuxAdditions-x86.run ~/
#pacman -S gcc make
#~/VBoxLinuxAdditions-x86.run
#nano /etc/X11/xorg.conf
找到 ps/2 mouse,将 Driver 修改为 vboxmouse

7.安装 openbox
参考:http://wiki.archlinux.org/index.php/Openbox
1) #pacman -S openbox
2) 再按照安装提示,复制配置文件到 ~/.config/openbox
3) 编辑 .xinitrc ,添加 exec openbox-session
4) 可编辑 ./config/openbox/autostart.sh 添加自启动项,别忘了在每个命令后加 &

8.安装 fbpanel
#pacman -S fbpanel
添加到 ~/.config/openbox/autostart.sh

9.安装 yaourt
#pacman -U http://repo.archlinux.fr/i686/yaourt-0.9.2.4-1.pkg.tar.gz

10.安装 ibus 输入法
1) 安装 pkg-config,ibus 的 configure 需要它
下载: http://pkgconfig.freedesktop.org/releases/?C=M;O=D
#tar zxvf pkg*.tar.gz
#cd pkg-config...
#./configure --prefix /usr
#make
#make install
2) 安装 ibus-pinyin ibus-table ibus-anthy
3) 将 ibus 添加到 ~/.config/openbox/autostart.sh
4) 设置环境变量,修改文件 ~/.bashrc,添加:
export XMODIFIERS=@im=ibus
export GTK_IM_MODULE=ibus
export QT_IM_MODULE=ibus
5) 重新登录

11.安装 firefox
1) #pacman -S firefox
2) 安装扩展 user agent switcher,添加 Firefox 3.0.5,设置内容,参考默认值,将 GranParadiso 修改为 Firefox,appName: Firefox/3.0.5
3) 安装 google toolbar
4) 安装 Torbutton

12.安装 flashplugin
#pacman -S flashplugin

13.安装 tor
参考:http://wiki.archlinux.org/index.php/Tor
别忘了 forward-socks4a / localhost:9050 . 最后的这个"."

14.安装文本编辑器 leafpad
#pacman -S leafpad

15.安装文件管理器 xfe
#pacman -S xfe

16.设置ALSA
参考:http://wiki.archlinux.org/index.php/ALSA
别忘了确认,最后加载 snd-pcsp。方法是在 /etc/modprobe.conf 中添加:
options snd-pcsp index=2

2008-10-28

在 Postgresql 中使用正则表达式替换

例:
select
regexp_replace('wz-001', '^\\D+-|^\\d{2}-|\\D', '', 'g'),
regexp_replace('01-3001', '^\\D+-|^\\d{2}-|\\D', '', 'g'),
regexp_replace('08001-A', '^\\D+-|^\\d{2}-|\\D', '', 'g'),
regexp_replace('8372A', '^\\D+-|^\\d{2}-|\\D', '', 'g'),
regexp_replace('83j3s9', '^\\D+-|^\\d{2}-|\\D', '', 'g');

结果:
001, 3001, 08001, 8372, 8339

补空例:
select
lpad('329', 10, '0'),
lpad('93', 10, '0');

结果:
0000000329, 0000000093

2008-10-22

Eclipse 的代码折叠





在使用 webwork 的过程中,为了接收表单参数,而需要在 action 中写一堆的 setter, getter,这些代码与业务逻辑代码混在一起,看着有些令人生厌。Java 不能像 C# 支持一个类可以拆分成多个文件,如果使用 modelDriven,创建实际并不存在的中间对象,似乎有些别扭;或者再创建一个基类,但也不太理想。除此之外,或许将代码折叠,眼不见为净倒是不错的选择。
"Coffee-Bytes Code Folding Plugin",就是这样一个 eclipse 插件,但按官方的安装方法, eclipse 更新程序取不到其提供的网站内容,无法安装。可以到 csdn 的资源上找找,有朋友提供了下载。
安装完成后,在设置中,更改默认的 folding 选项,选择此插件,重新打开 java 文件,应该可以看到 if 等也可以折叠了。
如果想要类似于 C# 中的 #region 效果,则需要打开 User defined regions 选项。
By mostone.Jiang