修改mvn.bat文件,在文件前面添加。
set MAVEN_OPTS=-Xmx512m
2011年4月18日星期一
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
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即可,QLExpress是Quick 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权限码。
代码截图如附件图:
这里的场景代码很简单,就是把表达式里的name如isService绑定到对象的方法isService上。
在以前如果我们实现这样的需求,一般把expression写成groovy语法脚本,再在java里调用执行。
如果有其他类似表达式的需要,可以试试QLExpress,能减少不少麻烦,代码里有大量的测试用例参考。
2011年3月25日星期五
eclipse与scim热键冲突修改导致不能编辑
sudo vi /etc/X11/xinit/xinput.d/scim
修改:
GTK_IM_MODULE=xim
QT_IM_MODULE=xim
为:
GTK_IM_MODULE=scim
QT_IM_MODULE=scim
篱笆网 http://liba.co/
2010年11月16日星期二
python通过gmail发送邮件,很简单
# -*- coding: utf-8 -*-
from email.mime.text import MIMEText
import smtplib
def send ():
server = smtplib.SMTP('smtp.gmail.com' )
server.docmd("EHLO server" )
server.starttls()
server.login('xxx@gmail.com', 'xxx')
msg = MIMEText('<html><body>hello world</body></html>', 'html')
# msg = MIMEText(html, 'html')
# msg['Content-Type' ]='text/plain; charset="utf-8"'
msg['Subject' ] = 'from python'
msg['From' ] = 'xxx@gmail.com'
msg['To' ] = 'xxx@163.com'
server.sendmail('xxx@gmail.com', 'xxx@163.com', msg.as_string())
server.close()
if __name__=="__main__" :
send()
from email.mime.text import MIMEText
import smtplib
def send ():
server = smtplib.SMTP('smtp.gmail.com' )
server.docmd("EHLO server" )
server.starttls()
server.login('xxx@gmail.com', 'xxx')
msg = MIMEText('<html><body>hello world</body></html>', 'html')
# msg = MIMEText(html, 'html')
# msg['Content-Type' ]='text/plain; charset="utf-8"'
msg['Subject' ] = 'from python'
msg['From' ] = 'xxx@gmail.com'
msg['To' ] = 'xxx@163.com'
server.sendmail('xxx@gmail.com', 'xxx@163.com', msg.as_string())
server.close()
if __name__=="__main__" :
send()
python时间转换
>>> v = [2010,11,12,0,0,0,0,0,0]
>>> time.mktime(v)
1289491200.0
>>> rtime = time.strptime('20101112', '%Y%m%d')
>>> time.mktime(rtime)
1289491200.0
>>> dt = datetime.datetime.fromtimestamp(1289491200.0)
>>> time.mktime(dt.timetuple())
1289491200.0
>>> dt
datetime.datetime(2010, 11, 12, 0, 0)
>>> time.mktime(v)
1289491200.0
>>> rtime = time.strptime('20101112', '%Y%m%d')
>>> time.mktime(rtime)
1289491200.0
>>> dt = datetime.datetime.fromtimestamp(1289491200.0)
>>> time.mktime(dt.timetuple())
1289491200.0
>>> dt
datetime.datetime(2010, 11, 12, 0, 0)
2010年11月9日星期二
借助Samba利用开发机资源
在一个遗忘的社区内,拿了出来
===请自行飘过===
1. samba安装的目录:
# whereis samba
samba: /etc/samba /usr/share/samba /usr/share/man/man7/samba.7.gz
2. 到samba下
#cd /etc/samba
#vi smb.conf
[homes]
comment = Home Directories
browseable = yes
writable = yes
把browseable改为yes。
3. 增加smb用户和os的用户映射,前面的os用户,后面是smb用户(可以使多个,空格分隔)
#vi smbusers
os_user1 = os_user1
os_user2 = os_user2
4. 给smb用户赋值密码
#smbpasswd -a os_user1
按提示输入密码即可。设置的用户须在smbusers里已经配置的。
5. 启停
#service smb start|stop|restart|status 或
#/etc/rc.d/init.d/smb start|stop|restart|status
6. 在win下创建映射
TODO: 待插入图片1
输入win下的驱动器,samba服务器的IP和samba的用户。
TODO: 待插入图片1
一切OK!
这样就很容易在OS之间文件操作,还有个大的好处,就是在开发机(装有samba服务)上编译,运行应用服务器,在自己的机器上运行eclipse进行开发,可以远程debug。
===请自行飘过===
1. samba安装的目录:
# whereis samba
samba: /etc/samba /usr/share/samba /usr/share/man/man7/samba.7.gz
2. 到samba下
#cd /etc/samba
#vi smb.conf
[homes]
comment = Home Directories
browseable = yes
writable = yes
把browseable改为yes。
3. 增加smb用户和os的用户映射,前面的os用户,后面是smb用户(可以使多个,空格分隔)
#vi smbusers
os_user1 = os_user1
os_user2 = os_user2
4. 给smb用户赋值密码
#smbpasswd -a os_user1
按提示输入密码即可。设置的用户须在smbusers里已经配置的。
5. 启停
#service smb start|stop|restart|status 或
#/etc/rc.d/init.d/smb start|stop|restart|status
6. 在win下创建映射
TODO: 待插入图片1
输入win下的驱动器,samba服务器的IP和samba的用户。
TODO: 待插入图片1
一切OK!
这样就很容易在OS之间文件操作,还有个大的好处,就是在开发机(装有samba服务)上编译,运行应用服务器,在自己的机器上运行eclipse进行开发,可以远程debug。
订阅:
博文 (Atom)