Feb 17
从一个main方法启动内嵌的Jetty很简单。Jetty的文档上有详细的例子。
http://docs.codehaus.org/display/JETTY/Embedding+Jetty

现在的一个项目需要用到JNDI.把datasource和上传文件的目录保存到了jndi中这样统一了不同os和开发者间的差异。只要在大家配置同样的jndi name就不用考虑打包的问题。这是另外一种解决办法。

首先你需要再添加两个jar包。jetty-plus和jetty-naming包。少了jetty-naming报的不是no class found exception.所以一定不要忘记。直接看代码吧。其实也很简单。

[more..]

Feb 16
一个项目里总会有很多配置文件。而且一般都会有多套环境。开发的、测试的、正式的。而在这些不同的环境这些配置的值都会不一样。比如mail的配置、服务的url配置这些都是很常见的。所以在打包的时候就要根据environment来选不同的值或者配置文件。

比较常用的办法就是为不同的环境建立不同的配置文件目录。在打包的时候用对应的文件目录下的配置文件。

|-- resources
|   |-- dev
|   |-- product
|   |-- qa
|   `-- qa53

以前用ant的时候打包的时候处理就比较方便。打包前copy一下对应目录下的配置文件覆盖target下的那些文件再打包就可以了。在刚开始用 maven的时候就想要怎么解决,一直没有找到ant的这种方式的可行的办法。其实主要是按ant这种处理方法去思考了。只去想没有有cp这种 target。其实在maven里用profile就可以解决了。对于不同的environment定义不同的profile就ok了,目录结构还是沿用 原来的就可以。

[more..]

Jan 08
前几天一个同事在服务器上务操作,生成了一个以"-"开始的文件.问我怎么删除.很容易想到的方法是 加引号 rm "-xxx",不行.再来加个转意符 rm \-xxx 也不行.

[more..]

Dec 28
刚才在#gentoo-cn 的irc里有个Guest10086的人问为啥一个目录需要(+x)execute权限,可能很多人都会觉得奇怪.为什么需要.记得以前也有过同样的疑问.今天google了一把找到了原因.

The chdir() system call requires execute permission on a directory.  Of course a directory isn't really a program that you can run, even if it has execute permission.  The execute bit is reused rather than waste space with additional permission bits. Besides controlling a user's ability to cd into some directory, the execute permission is required on a directory to use the stat() system call on files within that directory.  The stat() system called is used to access the information in a file's inode, and must be done before you can open or delete (via the unlink() system call) that file.  Because of its role in file access the execute bit on a directory is sometimes called search permission.  For example, to read a file foo/bar, you must have read permission

[more..]

Dec 17
在xfce4中可以方便的自定义自己的快捷键。最方便的一种方式就是通过xfce4的keyboard preferences来设置。添加一个自己的配置然后就可以修改添加自己的快捷键了。设置的时候也很简单,选择一个命令,然后再设置键值,只要按下相应的快捷键xfce4会自动捕捉到键值,非常的方便。
xfce4 keyboard preferences
但是你要修改一些系统定义的快捷键就不能在这里设置了。

[more..]

Dec 09
如果你按照这里的命令来建立自己的maven2 mirror的话将会把官方的所有包同步下来。
http://maven.apache.org/guides/mini/guide-mirror-settings.html

rsync -v -t -l -r mirrors.ibiblio.org::maven2 /your/local/path
rsync -v -t -l -r rsync://rsync.cica.es/maven2 /your/local/path

前段时间我在公司一台机器上同步完了,现在应该是接近50G了。这样下去80G的硬盘除去安装系统的"/"又快用完了。在一年前大概是20G多一点。在同 步的时候你会发现很多*.zip,*.tar.gz,*.bz2的包。而且有这种包出现的时候一般都超过10G。特别是在/org/apache下的很多 包里出现。不知道是不是maven本来是他们家的。所以各种包都先放到repository里去。其实我们只是需 要*.jar,*-sources.jar,*-javadoc.jar 就足够了。

[more..]

Dec 01
在使用subversion的过程中碰到过很多次的
Repository moved permanently to 'http://svn.jdkcn.com/labs/'; please relocate
刚开始的时候是把checkout下来的代码先删除了.重新checkout就好了.后来发现只要switch到checkout时候的url也正常了. 在网上也搜索过这个错误.不过别人都是checkout的时候出错的.我的都是在svn update的时候出现的.所以一直没有解决.

今天终于打到问题的原因了.原来是在subversion 的FAQ中的问题.

[more..]

Nov 19
       记得以前有装过一次64位的ubuntu.有很多软件不能装。而且64位的mplayer也不好播放real。要自己安装解码器。所以就没有再装过64位 的linux.后来看到gentoo区里很多人用64位的。所以后来就在本本上装了64位的gentoo。那个时候还是装的32位的mplayer- bin版本。后来发现直接装mplayer加上real的use就可以正常的播放real视频了。不过最近real被unmask了。所以你现在装的64 位gentoo通过添加real到/etc/portage/package.use里。就不能启用了。

[more..]

Nov 01
    内核2.6.27发布也有一段时间了。对于新本本来说还是决定升级一下。升级之后大部都正常,alsa,wireless。不过原来2.6.26的时候 Fn+Home,End调节屏幕亮度的时候是正常的。升级之后不能用了。检查了一下ACPI里的选项都选上了。thinkpad_acpi也选上了。
   
    其他的Fn+up,down控制sonata的也是正常的。不过对比了一下2.6.26的acpi里的配置少了一个Video。难道2.6.27内核里没有了。后来vi了一下.config看里面切有这一项的啊。

   后来想了想肯定是acpi的video依赖其他选项没有满足。make menuconfig 的时搜索了一下ACPI_VIDEO.找到了它依赖的一些选项

[more..]

Sep 12
公司发存新程序由专人负责的。我需要讲war包上传到一个windws共享目录。由于现在换成Gentoo + xfce4环境了。Thunar又不支持 smb://协议。所以只有自己手动mount了。由于之前已经装过samba了。所以就直接mount一把。

gentoo ~ # mount -t smbfs -o username=aaa,password=aaa //10.200.106.252/updatepack release
ERROR: smbfs filesystem not supported by the kernel
Please refer to the smbmnt(8) manual page
smbmnt failed: 255

发现内核不支持smbfs.就重新编译了一下内核。

当看到SMB file system的时候看到OBSOLETE了,看来不建议使用了。建议使用CIFS,所以就把CIFS选上了。看起来是 SMBFS的继承者。

编译替换内核重启,再mount一把。郁闷的是还提示不行。但是选择CIFS的时候自己想当然的以为CIFS肯定支持SMBFS的。没想到就不是这么回 事。如果要mount -t smbfs就必须要选择 SMB file system support 才行。当时就只好用vbox里的windows去访问共享目录了。不过不知道为什么出奇的慢。100M的局域网拷贝十几M的包要20分钟(Orz)。

[more..]