2011年4月18日星期一

maven out memory

修改mvn.bat文件,在文件前面添加。
set MAVEN_OPTS=-Xmx512m

2011年4月4日星期一

在debain上架设vpn

1.安装pptpd
apt-get -y update
apt-get -y install pptpd

2.编辑 /etc/pptpd.conf
#设置服务器 IP 地址与客服端 DHCP 分配地址范围
localip 192.168.0.1
remoteip 192.168.0.2-245

3.编辑 /etc/ppp/pptpd-options
#为客户端提供DNS
ms-dns 8.8.8.8
ms-dns 8.8.4.4

4.编辑 /etc/ppp/chap-secrets
#添加用户名、服务名、密码以及IP地址(服务名需要与pptpd-options文件中指定名称一致)
username servername password *
5.编辑 /etc/sysctl.conf
#开启IPV4转发
去掉net.ipv4.ip_forward=1前的注释,然后运行"sysctl -p"使修改生效;

7.设置IP伪装
iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -o eth0 -j MASQUERADE
#设置MTU大小,解决部分网站无法访问的情况(MTU=MSS+20+20)
iptables -A FORWARD -p tcp --syn -s 192.168.0.0/24 -j TCPMSS --set-mss 1356

8.大功告成,启动服务
/etc/init.d/pptpd start

2011年4月2日星期六

你想知道a love b=?吗 --- QLExpress


在项目中时常需要涉及对表达式的处理,如:

  • "3.14 * 2.5 + 103/(24 + 13)" 的值
  • "aVar && (bVar || (cVar && dVar))" 的结果

甚至:

  • "1==2?50 +50:100+100"
  • "if 1==1 then return 100 else return 10;"
  • "a love b"
  • " for ... "

若实现以上要求QLExpress即可,QLExpressQuick Laconic Express 高效简洁脚本,淘宝玄难的一个开源的表达式项目,纯java实现。

我们不用再借助groovy也能实现复杂,带有简单逻辑的处理代码,可自定义操作符。

项目地址:http://code.taobao.org/project/view/294/

wiki非常详细,再有其他叙述就是多余(包括技术和使用)http://code.taobao.org/trac/QLExpress/wiki/ZhWikiStart

给出一个在项目中实际使用的例子。

需要判断一个用户是否具有某种符合的权限,如用户是否开通某中服务、是否打上某个标记、

是否附上某个权限code,这些权限还要进行与、或、非等逻辑运算、优先级控制如括号,如:


isService(userid) && ( hasTag("LP") || hasCode(256) ) #开通某个指定的服务, 并且具有"LP"标记或有256权限码。


代码截图如附件图:

这里的场景代码很简单,就是把表达式里的nameisService绑定到对象的方法isService上。

在以前如果我们实现这样的需求,一般把expression写成groovy语法脚本,再在java里调用执行。


如果有其他类似表达式的需要,可以试试QLExpress,能减少不少麻烦,代码里有大量的测试用例参考